@sreedev/my3dui 0.2.2 → 0.2.4

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,"sources":["../src/index.ts","../src/components/theme/ThemeProvider.tsx","../src/components/layouts/container.tsx","../src/lib/utils.ts","../src/lib/tokens.ts","../src/components/layouts/grid.tsx","../src/components/layouts/stack.tsx","../src/components/layouts/section.tsx","../src/components/layouts/page-layout.tsx","../src/components/layouts/stage.tsx","../src/components/layouts/viewport.tsx","../src/components/layouts/container3d.tsx","../src/components/layouts/grid3d.tsx","../src/components/layouts/camera-controller.tsx","../src/components/layouts/scene3d.tsx","../src/components/ui/button3d.tsx","../src/components/ui/card3d.tsx","../src/components/ui/accordion3d.tsx","../src/components/ui/badge3d.tsx","../src/components/ui/input3d.tsx","../src/components/ui/slider3d.tsx","../src/components/ui/tabs3d.tsx","../src/components/ui/toggle3d.tsx","../src/components/ui/modal3d.tsx","../src/components/ui/menu3d.tsx","../src/components/ui/tooltip3d.tsx","../src/components/ui/progress3d.tsx","../src/components/ui/resizable.tsx","../src/components/ui/select3d.tsx","../src/components/ui/spinner3d.tsx","../src/components/ui/stepper3d.tsx","../src/components/ui/navbar3d.tsx","../src/components/ui/timeline3d.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/slider.tsx","../src/components/ui/toggle.tsx","../src/components/ui/badge.tsx","../src/components/ui/input.tsx","../src/components/ui/progress.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/toast.tsx","../src/hooks/use-toast.ts","../src/components/ui/toaster.tsx","../src/components/ui/sonner.tsx","../src/components/ui/popover.tsx","../src/components/ui/sheet.tsx","../src/components/ui/dialog.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/label.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/switch.tsx","../src/components/ui/textarea.tsx","../src/components/ui/separator.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/alert.tsx","../src/components/ui/avatar.tsx","../src/components/ui/card.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/command.tsx","../src/components/ui/form.tsx","../src/components/ui/pagination.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/drawer.tsx","../src/components/ui/menubar.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/select.tsx","../src/components/ui/table.tsx","../src/components/ui/chart.tsx","../src/components/ui/calendar.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/carousel.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/barchart3d.tsx","../src/components/ui/linechart3d.tsx","../src/components/ui/piechart3d.tsx","../src/components/ui/scatterplot3d.tsx","../src/components/ui/graph3d.tsx","../src/components/ui/map3d.tsx","../src/components/ui/gallery3d.tsx","../src/components/ui/imageplane.tsx","../src/components/ui/modelviewer.tsx","../src/components/ui/videoplane.tsx","../src/components/ui/audiovisualizer.tsx","../src/components/ui/particles.tsx","../src/components/ui/bloom.tsx","../node_modules/src/postprocessing/Pass.ts","../node_modules/src/postprocessing/ShaderPass.ts","../node_modules/src/shaders/CopyShader.ts","../node_modules/src/shaders/LuminosityHighPassShader.ts","../node_modules/src/postprocessing/UnrealBloomPass.js","../node_modules/src/postprocessing/MaskPass.ts","../node_modules/src/postprocessing/EffectComposer.ts","../node_modules/src/postprocessing/RenderPass.ts","../src/components/ui/reflection.tsx","../src/components/ui/fog.tsx","../src/components/ui/shadowsystem.tsx","../src/components/ui/gloweffect.tsx","../src/components/ui/waveeffect.tsx","../src/components/ui/noisefield.tsx"],"sourcesContent":["/* ======================================\r\n Theme\r\n====================================== */\r\n\r\nexport {\r\n ThemeProvider,\r\n useTheme,\r\n useThemeOptional,\r\n type ThemeName,\r\n} from \"./components/theme/ThemeProvider\";\r\n\r\n/* ======================================\r\n Layout\r\n====================================== */\r\n\r\nexport { Container } from \"./components/layouts/container\";\r\nexport { Grid } from \"./components/layouts/grid\";\r\nexport { Stack } from \"./components/layouts/stack\";\r\nexport { Section } from \"./components/layouts/section\";\r\nexport { PageLayout } from \"./components/layouts/page-layout\";\r\nexport { Stage } from \"./components/layouts/stage\";\r\nexport { Viewport } from \"./components/layouts/viewport\";\r\nexport { Container3D } from \"./components/layouts/container3d\";\r\nexport { Grid3D } from \"./components/layouts/grid3d\";\r\nexport { CameraController } from \"./components/layouts/camera-controller\";\r\nexport { Scene3D } from \"./components/layouts/scene3d\";\r\n\r\n\r\n/* ======================================\r\n UI (3D-Inspired)\r\n====================================== */\r\n\r\nexport { Button3D } from \"./components/ui/button3d\";\r\nexport { Card3D } from \"./components/ui/card3d\";\r\nexport { Accordion3D } from \"./components/ui/accordion3d\";\r\nexport { Badge3D } from \"./components/ui/badge3d\";\r\nexport { Input3D } from \"./components/ui/input3d\";\r\nexport { Slider3D } from \"./components/ui/slider3d\";\r\nexport { Tabs3D } from \"./components/ui/tabs3d\";\r\nexport { Toggle3D } from \"./components/ui/toggle3d\";\r\nexport { Modal3D } from \"./components/ui/modal3d\";\r\nexport {\r\n Menu3D,\r\n Menu3DItem,\r\n Menu3DLabel,\r\n Menu3DSeparator,\r\n} from \"./components/ui/menu3d\";export { Tooltip3D } from \"./components/ui/tooltip3d\";\r\nexport { Progress3D } from \"./components/ui/progress3d\";\r\n\r\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle } from \"./components/ui/resizable\";\r\n\r\n// TODO: Refactor these to remove Three.js dependencies\r\nexport { Select3D } from \"./components/ui/select3d\";\r\nexport { Spinner3D } from \"./components/ui/spinner3d\";\r\nexport { Stepper3D } from \"./components/ui/stepper3d\";\r\nexport { NavBar3D } from \"./components/ui/navbar3d\";\r\nexport { Timeline3D } from \"./components/ui/timeline3d\";\r\n\r\n\r\n/* ======================================\r\n Standard UI (shadcn/ui)\r\n====================================== */\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from \"./components/ui/tooltip\";\r\nexport { Slider } from \"./components/ui/slider\";\r\nexport { Toggle, toggleVariants } from \"./components/ui/toggle\";\r\nexport { Badge, badgeVariants } from \"./components/ui/badge\";\r\nexport { Input, inputVariants } from \"./components/ui/input\";\r\nexport { Progress } from \"./components/ui/progress\";\r\nexport { Skeleton } from \"./components/ui/skeleton\";\r\nexport {\r\n Toast,\r\n ToastClose,\r\n ToastDescription,\r\n ToastProvider,\r\n ToastTitle,\r\n ToastViewport,\r\n ToastAction,\r\n type ToastActionElement,\r\n type ToastProps,\r\n} from \"./components/ui/toast\";\r\nexport { Toaster } from \"./components/ui/toaster\";\r\nexport { Toaster as SonnerToaster, toast as sonnerToast } from \"./components/ui/sonner\";\r\nexport { Popover, PopoverTrigger, PopoverContent } from \"./components/ui/popover\";\r\nexport { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger } from \"./components/ui/sheet\";\r\nexport { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription } from \"./components/ui/dialog\";\r\nexport { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis } from \"./components/ui/breadcrumb\";\r\nexport { Label } from \"./components/ui/label\";\r\nexport { Checkbox } from \"./components/ui/checkbox\";\r\nexport { Switch } from \"./components/ui/switch\";\r\nexport { Textarea } from \"./components/ui/textarea\";\r\nexport { Separator } from \"./components/ui/separator\";\r\nexport { ScrollArea, ScrollBar } from \"./components/ui/scroll-area\";\r\nexport { RadioGroup, RadioGroupItem } from \"./components/ui/radio-group\";\r\nexport { ToggleGroup, ToggleGroupItem } from \"./components/ui/toggle-group\";\r\nexport { Alert, AlertTitle, AlertDescription } from \"./components/ui/alert\";\r\nexport { Avatar, AvatarImage, AvatarFallback } from \"./components/ui/avatar\";\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent, cardVariants } from \"./components/ui/card\";\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent } from \"./components/ui/collapsible\";\r\nexport { AspectRatio } from \"./components/ui/aspect-ratio\";\r\nexport { HoverCard, HoverCardTrigger, HoverCardContent } from \"./components/ui/hover-card\";\r\nexport {\r\n AlertDialog,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogTrigger,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n} from \"./components/ui/alert-dialog\";\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandShortcut,\r\n CommandSeparator,\r\n} from \"./components/ui/command\";\r\nexport { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField } from \"./components/ui/form\";\r\nexport { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from \"./components/ui/pagination\";\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n} from \"./components/ui/dropdown-menu\";\r\nexport {\r\n ContextMenu,\r\n ContextMenuTrigger,\r\n ContextMenuContent,\r\n ContextMenuItem,\r\n ContextMenuCheckboxItem,\r\n ContextMenuRadioItem,\r\n ContextMenuLabel,\r\n ContextMenuSeparator,\r\n ContextMenuShortcut,\r\n ContextMenuGroup,\r\n ContextMenuPortal,\r\n ContextMenuSub,\r\n ContextMenuSubContent,\r\n ContextMenuSubTrigger,\r\n ContextMenuRadioGroup,\r\n} from \"./components/ui/context-menu\";\r\nexport {\r\n Drawer,\r\n DrawerPortal,\r\n DrawerOverlay,\r\n DrawerTrigger,\r\n DrawerClose,\r\n DrawerContent,\r\n DrawerHeader,\r\n DrawerFooter,\r\n DrawerTitle,\r\n DrawerDescription,\r\n} from \"./components/ui/drawer\";\r\nexport {\r\n Menubar,\r\n MenubarMenu,\r\n MenubarTrigger,\r\n MenubarContent,\r\n MenubarItem,\r\n MenubarSeparator,\r\n MenubarLabel,\r\n MenubarCheckboxItem,\r\n MenubarRadioGroup,\r\n MenubarRadioItem,\r\n MenubarPortal,\r\n MenubarSubContent,\r\n MenubarSubTrigger,\r\n MenubarGroup,\r\n MenubarSub,\r\n} from \"./components/ui/menubar\";\r\nexport {\r\n navigationMenuTriggerStyle,\r\n NavigationMenu,\r\n NavigationMenuList,\r\n NavigationMenuItem,\r\n NavigationMenuContent,\r\n NavigationMenuTrigger,\r\n NavigationMenuLink,\r\n NavigationMenuIndicator,\r\n NavigationMenuViewport,\r\n} from \"./components/ui/navigation-menu\";\r\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton } from \"./components/ui/select\";\r\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption } from \"./components/ui/table\";\r\nexport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, ChartStyle } from \"./components/ui/chart\";\r\nexport type { ChartConfig } from \"./components/ui/chart\";\r\nexport { Calendar } from \"./components/ui/calendar\";\r\nexport type { CalendarProps } from \"./components/ui/calendar\";\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInput,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n} from \"./components/ui/sidebar\";\r\nexport { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext } from \"./components/ui/carousel\";\r\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from \"./components/ui/input-otp\";\r\n\r\n\r\n/* ======================================\r\n Data (TODO: Refactor)\r\n====================================== */\r\n\r\nexport { BarChart3D } from \"./components/ui/barchart3d\";\r\nexport { LineChart3D } from \"./components/ui/linechart3d\";\r\nexport { PieChart3D } from \"./components/ui/piechart3d\";\r\nexport { ScatterPlot3D } from \"./components/ui/scatterplot3d\";\r\nexport { Graph3D } from \"./components/ui/graph3d\";\r\nexport { Map3D } from \"./components/ui/map3d\";\r\n\r\n\r\n/* ======================================\r\n Media (TODO: Refactor)\r\n====================================== */\r\n\r\nexport { Gallery3D } from \"./components/ui/gallery3d\";\r\nexport { ModelViewer } from \"./components/ui/modelviewer\";\r\nexport { VideoPlane } from \"./components/ui/videoplane\";\r\nexport { ImagePlane } from \"./components/ui/imageplane\";\r\nexport { AudioVisualizer } from \"./components/ui/audiovisualizer\";\r\n\r\n\r\n/* ======================================\r\n Effects (TODO: Refactor)\r\n====================================== */\r\n\r\nexport { Particles } from \"./components/ui/particles\";\r\nexport { Bloom } from \"./components/ui/bloom\";\r\nexport { Reflection } from \"./components/ui/reflection\";\r\nexport { Fog } from \"./components/ui/fog\";\r\nexport { ShadowSystem } from \"./components/ui/shadowsystem\";\r\nexport { GlowEffect } from \"./components/ui/gloweffect\";\r\nexport { WaveEffect } from \"./components/ui/waveeffect\";\r\nexport { NoiseField } from \"./components/ui/noisefield\";\r\n","import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\r\n\r\nexport type ThemeName = \"light\" | \"dark\" | \"neon\" | \"glass\" | \"corporate\" | \"vibrant\";\r\n\r\nconst THEME_CLASSES: ThemeName[] = [\"light\", \"dark\", \"neon\", \"glass\", \"corporate\", \"vibrant\"];\r\nconst STORAGE_KEY = \"my3dui-theme\";\r\n\r\ninterface ThemeContextValue {\r\n theme: ThemeName;\r\n setTheme: (theme: ThemeName) => void;\r\n}\r\n\r\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\r\n\r\nexport interface ThemeProviderProps {\r\n children: React.ReactNode;\r\n /** Initial theme. Defaults to \"light\" or stored value. */\r\n defaultTheme?: ThemeName;\r\n /** Persist theme in localStorage under this key. Set to false to disable. */\r\n storageKey?: string | false;\r\n}\r\n\r\n/**\r\n * Applies theme class to document.documentElement and provides theme state.\r\n * Import My3DUI styles so token variables are available:\r\n * import '@sreedev/my3dui/styles.css'\r\n */\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = \"light\",\r\n storageKey = STORAGE_KEY,\r\n}: ThemeProviderProps) {\r\n const [theme, setThemeState] = useState<ThemeName>(() => {\r\n if (typeof window === \"undefined\") return defaultTheme;\r\n try {\r\n const stored = storageKey && localStorage.getItem(storageKey);\r\n if (stored && THEME_CLASSES.includes(stored as ThemeName)) return stored as ThemeName;\r\n } catch {\r\n /* ignore */\r\n }\r\n return defaultTheme;\r\n });\r\n\r\n const setTheme = useCallback(\r\n (next: ThemeName) => {\r\n setThemeState(next);\r\n if (typeof document === \"undefined\") return;\r\n const root = document.documentElement;\r\n THEME_CLASSES.forEach((c) => root.classList.remove(c));\r\n root.classList.add(next);\r\n try {\r\n if (storageKey) localStorage.setItem(storageKey, next);\r\n } catch {\r\n /* ignore */\r\n }\r\n },\r\n [storageKey]\r\n );\r\n\r\n useEffect(() => {\r\n const root = document.documentElement;\r\n THEME_CLASSES.forEach((c) => root.classList.remove(c));\r\n root.classList.add(theme);\r\n }, [theme]);\r\n\r\n const value = useMemo<ThemeContextValue>(() => ({ theme, setTheme }), [theme, setTheme]);\r\n\r\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\r\n}\r\n\r\nexport function useTheme(): ThemeContextValue {\r\n const ctx = useContext(ThemeContext);\r\n if (!ctx) {\r\n throw new Error(\"useTheme must be used within ThemeProvider\");\r\n }\r\n return ctx;\r\n}\r\n\r\nexport function useThemeOptional(): ThemeContextValue | null {\r\n return useContext(ThemeContext);\r\n}\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { containerSizes, getSpacing } from \"../../lib/tokens\";\r\n\r\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Max-width preset. Use \"full\" for fluid width. */\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n /** Horizontal padding: number = spacing scale (4 = 1rem), or CSS value */\r\n padding?: number | string;\r\n /** When true, max-width is 100% (same as size=\"full\") */\r\n fluid?: boolean;\r\n}\r\n\r\nconst sizeToMaxWidth: Record<NonNullable<ContainerProps[\"size\"]>, string> = {\r\n sm: \"max-w-3xl\",\r\n md: \"max-w-5xl\",\r\n lg: \"max-w-7xl\",\r\n xl: \"max-w-[1400px]\",\r\n full: \"max-w-full\",\r\n};\r\n\r\nconst defaultPadding = \"1rem\"; // 4 on scale\r\nconst responsivePadding = \"px-4 sm:px-6 lg:px-8\";\r\n\r\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\r\n (\r\n {\r\n className,\r\n size = \"lg\",\r\n padding,\r\n fluid = false,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const effectiveSize = fluid ? \"full\" : size;\r\n const paddingStyle =\r\n padding !== undefined\r\n ? {\r\n paddingLeft: typeof padding === \"number\" ? getSpacing(padding) : padding,\r\n paddingRight: typeof padding === \"number\" ? getSpacing(padding) : padding,\r\n }\r\n : undefined;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"w-full mx-auto\",\r\n padding === undefined && responsivePadding,\r\n sizeToMaxWidth[effectiveSize],\r\n className\r\n )}\r\n style={paddingStyle ? { ...paddingStyle, ...style } : style}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nContainer.displayName = \"Container\";\r\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","/**\r\n * My3DUI Design Tokens\r\n * Use these for consistent spacing, radius, and theming across all components.\r\n * CSS variables (--my3dui-*) can be overridden by consumers for full theming.\r\n */\r\n\r\n/** Spacing scale: 1 unit = 0.25rem (4px). Use for gap, padding, margin. */\r\nexport const spacing = {\r\n 0: \"0\",\r\n 1: \"0.25rem\", // 4px\r\n 2: \"0.5rem\", // 8px\r\n 3: \"0.75rem\", // 12px\r\n 4: \"1rem\", // 16px\r\n 5: \"1.25rem\",\r\n 6: \"1.5rem\",\r\n 8: \"2rem\",\r\n 10: \"2.5rem\",\r\n 12: \"3rem\",\r\n 16: \"4rem\",\r\n 20: \"5rem\",\r\n 24: \"6rem\",\r\n} as const;\r\n\r\n/** Convert spacing scale number to CSS value (e.g. 4 -> \"1rem\") */\r\nexport function getSpacing(n: number): string {\r\n return spacing[n as keyof typeof spacing] ?? `${n * 0.25}rem`;\r\n}\r\n\r\n/** Border radius scale */\r\nexport const radius = {\r\n none: \"0\",\r\n sm: \"0.125rem\", // 2px\r\n md: \"0.375rem\", // 6px\r\n lg: \"0.5rem\", // 8px\r\n xl: \"0.75rem\", // 12px\r\n \"2xl\": \"1rem\",\r\n \"3xl\": \"1.5rem\",\r\n full: \"9999px\",\r\n} as const;\r\n\r\n/** Z-index scale for overlays, modals, toasts */\r\nexport const zIndex = {\r\n base: 0,\r\n dropdown: 50,\r\n sticky: 100,\r\n overlay: 200,\r\n modal: 300,\r\n popover: 400,\r\n toast: 500,\r\n tooltip: 600,\r\n max: 9999,\r\n} as const;\r\n\r\n/** Animation durations (ms) */\r\nexport const duration = {\r\n fast: 150,\r\n normal: 200,\r\n slow: 300,\r\n} as const;\r\n\r\n/** Breakpoint keys for responsive props (align with Tailwind defaults) */\r\nexport const breakpoints = [\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const;\r\nexport type Breakpoint = (typeof breakpoints)[number];\r\n\r\n/** Container max-width presets (maps to Tailwind max-w-*) */\r\nexport const containerSizes = {\r\n sm: \"48rem\", // max-w-3xl\r\n md: \"64rem\", // max-w-5xl\r\n lg: \"80rem\", // max-w-7xl\r\n xl: \"87.5rem\", // 1400px\r\n full: \"100%\",\r\n} as const;\r\n\r\n/** CSS variable names for theming (consumers can set these) */\r\nexport const cssVars = {\r\n color: {\r\n primary: \"var(--primary)\",\r\n primaryForeground: \"var(--primary-foreground)\",\r\n secondary: \"var(--secondary)\",\r\n secondaryForeground: \"var(--secondary-foreground)\",\r\n accent: \"var(--accent)\",\r\n accentForeground: \"var(--accent-foreground)\",\r\n destructive: \"var(--destructive)\",\r\n destructiveForeground: \"var(--destructive-foreground)\",\r\n muted: \"var(--muted)\",\r\n mutedForeground: \"var(--muted-foreground)\",\r\n background: \"var(--background)\",\r\n foreground: \"var(--foreground)\",\r\n border: \"var(--border)\",\r\n ring: \"var(--ring)\",\r\n },\r\n radius: \"var(--radius)\",\r\n spacing: \"var(--spacing)\",\r\n} as const;\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { getSpacing } from \"../../lib/tokens\";\r\nimport type { Breakpoint } from \"../../lib/tokens\";\r\n\r\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * Number of columns, or responsive map: { sm?: 1, md?: 2, lg?: 3, ... }.\r\n * Values 1–12 use Tailwind; larger values use inline gridTemplateColumns.\r\n */\r\n cols?: number | { [K in Breakpoint]?: number };\r\n /** Gap: number = spacing scale, or CSS value */\r\n gap?: number | string;\r\n /** Minimum column width for auto-fit (e.g. \"minmax(200px, 1fr)\") */\r\n minColWidth?: string;\r\n}\r\n\r\n/** Explicit Tailwind grid-cols classes so they are not purged (1–12) */\r\nconst gridColsClasses: Record<number, string> = {\r\n 1: \"grid-cols-1\",\r\n 2: \"grid-cols-2\",\r\n 3: \"grid-cols-3\",\r\n 4: \"grid-cols-4\",\r\n 5: \"grid-cols-5\",\r\n 6: \"grid-cols-6\",\r\n 7: \"grid-cols-7\",\r\n 8: \"grid-cols-8\",\r\n 9: \"grid-cols-9\",\r\n 10: \"grid-cols-10\",\r\n 11: \"grid-cols-11\",\r\n 12: \"grid-cols-12\",\r\n};\r\n\r\n/** Responsive grid-cols: breakpoint -> 1-12 -> class name */\r\nconst responsiveGridCols: Record<Breakpoint, Record<number, string>> = {\r\n sm: { 1: \"sm:grid-cols-1\", 2: \"sm:grid-cols-2\", 3: \"sm:grid-cols-3\", 4: \"sm:grid-cols-4\", 5: \"sm:grid-cols-5\", 6: \"sm:grid-cols-6\", 7: \"sm:grid-cols-7\", 8: \"sm:grid-cols-8\", 9: \"sm:grid-cols-9\", 10: \"sm:grid-cols-10\", 11: \"sm:grid-cols-11\", 12: \"sm:grid-cols-12\" },\r\n md: { 1: \"md:grid-cols-1\", 2: \"md:grid-cols-2\", 3: \"md:grid-cols-3\", 4: \"md:grid-cols-4\", 5: \"md:grid-cols-5\", 6: \"md:grid-cols-6\", 7: \"md:grid-cols-7\", 8: \"md:grid-cols-8\", 9: \"md:grid-cols-9\", 10: \"md:grid-cols-10\", 11: \"md:grid-cols-11\", 12: \"md:grid-cols-12\" },\r\n lg: { 1: \"lg:grid-cols-1\", 2: \"lg:grid-cols-2\", 3: \"lg:grid-cols-3\", 4: \"lg:grid-cols-4\", 5: \"lg:grid-cols-5\", 6: \"lg:grid-cols-6\", 7: \"lg:grid-cols-7\", 8: \"lg:grid-cols-8\", 9: \"lg:grid-cols-9\", 10: \"lg:grid-cols-10\", 11: \"lg:grid-cols-11\", 12: \"lg:grid-cols-12\" },\r\n xl: { 1: \"xl:grid-cols-1\", 2: \"xl:grid-cols-2\", 3: \"xl:grid-cols-3\", 4: \"xl:grid-cols-4\", 5: \"xl:grid-cols-5\", 6: \"xl:grid-cols-6\", 7: \"xl:grid-cols-7\", 8: \"xl:grid-cols-8\", 9: \"xl:grid-cols-9\", 10: \"xl:grid-cols-10\", 11: \"xl:grid-cols-11\", 12: \"xl:grid-cols-12\" },\r\n \"2xl\": { 1: \"2xl:grid-cols-1\", 2: \"2xl:grid-cols-2\", 3: \"2xl:grid-cols-3\", 4: \"2xl:grid-cols-4\", 5: \"2xl:grid-cols-5\", 6: \"2xl:grid-cols-6\", 7: \"2xl:grid-cols-7\", 8: \"2xl:grid-cols-8\", 9: \"2xl:grid-cols-9\", 10: \"2xl:grid-cols-10\", 11: \"2xl:grid-cols-11\", 12: \"2xl:grid-cols-12\" },\r\n};\r\n\r\nexport const Grid = React.forwardRef<HTMLDivElement, GridProps>(\r\n ({ className, cols = 1, gap = 4, minColWidth, style, ...props }, ref) => {\r\n const gapValue = typeof gap === \"number\" ? getSpacing(gap) : gap;\r\n\r\n if (typeof cols === \"number\") {\r\n const gridTemplateColumns =\r\n cols > 12 || minColWidth\r\n ? { gridTemplateColumns: minColWidth ?? `repeat(${cols}, minmax(0, 1fr))` }\r\n : {};\r\n const gridClass = cols >= 1 && cols <= 12 ? gridColsClasses[cols] : \"\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"grid\", gridClass, className)}\r\n style={{ gap: gapValue, ...gridTemplateColumns, ...style }}\r\n {...props}\r\n />\r\n );\r\n }\r\n\r\n const responsiveClasses = ([\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const)\r\n .filter((bp) => cols[bp] != null)\r\n .map((bp) => {\r\n const val = cols[bp]!;\r\n if (val >= 1 && val <= 12) return responsiveGridCols[bp][val];\r\n return null;\r\n })\r\n .filter(Boolean);\r\n\r\n const responsiveStyle: React.CSSProperties = {};\r\n ([\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const).forEach((bp) => {\r\n const val = cols[bp];\r\n if (val != null && val > 12) {\r\n responsiveStyle.gridTemplateColumns = `repeat(${val}, minmax(0, 1fr))`;\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"grid\", responsiveClasses, className)}\r\n style={{ gap: gapValue, ...responsiveStyle, ...style }}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nGrid.displayName = \"Grid\";\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { getSpacing } from \"../../lib/tokens\";\r\n\r\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Flex direction */\r\n direction?: \"row\" | \"col\" | \"row-reverse\" | \"col-reverse\";\r\n /** Gap: number = spacing scale (4 = 1rem), or CSS value */\r\n gap?: number | string;\r\n align?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\r\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\r\n wrap?: boolean;\r\n /** Inline flex (fit content) vs block flex (full width) */\r\n inline?: boolean;\r\n}\r\n\r\nconst alignMap = {\r\n start: \"items-start\",\r\n center: \"items-center\",\r\n end: \"items-end\",\r\n stretch: \"items-stretch\",\r\n baseline: \"items-baseline\",\r\n} as const;\r\n\r\nconst justifyMap = {\r\n start: \"justify-start\",\r\n center: \"justify-center\",\r\n end: \"justify-end\",\r\n between: \"justify-between\",\r\n around: \"justify-around\",\r\n evenly: \"justify-evenly\",\r\n} as const;\r\n\r\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\r\n (\r\n {\r\n className,\r\n direction = \"col\",\r\n gap = 4,\r\n align = \"stretch\",\r\n justify = \"start\",\r\n wrap = false,\r\n inline = false,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const directionClass =\r\n direction === \"col\"\r\n ? \"flex-col\"\r\n : direction === \"row\"\r\n ? \"flex-row\"\r\n : direction === \"col-reverse\"\r\n ? \"flex-col-reverse\"\r\n : \"flex-row-reverse\";\r\n\r\n const gapValue = typeof gap === \"number\" ? getSpacing(gap) : gap;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n directionClass,\r\n wrap && \"flex-wrap\",\r\n inline && \"inline-flex\",\r\n alignMap[align],\r\n justifyMap[justify],\r\n className\r\n )}\r\n style={{ gap: gapValue, ...style }}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nStack.displayName = \"Stack\";\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { getSpacing } from \"../../lib/tokens\";\r\nimport { Container } from \"./container\";\r\n\r\nexport interface SectionProps extends React.HTMLAttributes<HTMLElement> {\r\n /** Render without inner Container (full-bleed content) */\r\n fullWidth?: boolean;\r\n /** Background variant for theming */\r\n background?: \"default\" | \"muted\" | \"brand\" | \"glass\";\r\n /** Container size when not fullWidth */\r\n containerSize?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n /** Remove vertical padding */\r\n noPadding?: boolean;\r\n /** Vertical padding: number = spacing scale (e.g. 12 = 3rem), or CSS value. Default responsive: py-12 md:py-24 lg:py-32 */\r\n paddingY?: number | string;\r\n /** Semantic element */\r\n as?: \"section\" | \"div\" | \"article\";\r\n}\r\n\r\nconst backgroundClasses = {\r\n default: \"bg-background text-foreground\",\r\n muted: \"bg-muted text-muted-foreground\",\r\n brand: \"bg-primary text-primary-foreground\",\r\n glass: \"bg-background/80 backdrop-blur-sm border-y border-border/50\",\r\n} as const;\r\n\r\nexport const Section = React.forwardRef<HTMLElement, SectionProps>(\r\n (\r\n {\r\n className,\r\n children,\r\n fullWidth = false,\r\n background = \"default\",\r\n containerSize = \"lg\",\r\n noPadding = false,\r\n paddingY,\r\n as: Component = \"section\",\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const paddingStyle =\r\n noPadding || paddingY === undefined\r\n ? undefined\r\n : {\r\n paddingTop: typeof paddingY === \"number\" ? getSpacing(paddingY) : paddingY,\r\n paddingBottom: typeof paddingY === \"number\" ? getSpacing(paddingY) : paddingY,\r\n };\r\n\r\n const content = fullWidth ? (\r\n children\r\n ) : (\r\n <Container size={containerSize}>{children}</Container>\r\n );\r\n\r\n return (\r\n <Component\r\n ref={ref as unknown as React.Ref<HTMLDivElement>}\r\n className={cn(\r\n \"relative w-full\",\r\n !noPadding && paddingY === undefined && \"py-12 md:py-24 lg:py-32\",\r\n backgroundClasses[background],\r\n className\r\n )}\r\n style={paddingStyle ? { ...paddingStyle, ...style } : style}\r\n {...props}\r\n >\r\n {content}\r\n </Component>\r\n );\r\n }\r\n);\r\nSection.displayName = \"Section\";\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { zIndex } from \"../../lib/tokens\";\r\n\r\nexport interface PageLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\r\n header?: React.ReactNode;\r\n footer?: React.ReactNode;\r\n sidebar?: React.ReactNode;\r\n sidebarPosition?: \"left\" | \"right\";\r\n /** Sidebar width: CSS value or number (spacing scale). Default 16rem (w-64) */\r\n sidebarWidth?: string | number;\r\n /** Main content area min height */\r\n minHeight?: \"screen\" | \"full\" | \"auto\";\r\n}\r\n\r\nfunction getSidebarWidth(w: string | number | undefined): string {\r\n if (w === undefined) return \"16rem\";\r\n if (typeof w === \"number\") return `${w * 0.25}rem`;\r\n return w;\r\n}\r\n\r\nexport const PageLayout = React.forwardRef<HTMLDivElement, PageLayoutProps>(\r\n (\r\n {\r\n className,\r\n header,\r\n footer,\r\n sidebar,\r\n sidebarPosition = \"left\",\r\n sidebarWidth,\r\n minHeight = \"screen\",\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const width = getSidebarWidth(sidebarWidth);\r\n const minHeightClass =\r\n minHeight === \"screen\"\r\n ? \"min-h-screen\"\r\n : minHeight === \"full\"\r\n ? \"min-h-full\"\r\n : \"\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col\", minHeightClass, className)}\r\n {...props}\r\n >\r\n {header && (\r\n <header\r\n className=\"sticky top-0 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\"\r\n style={{ zIndex: zIndex.sticky }}\r\n >\r\n {header}\r\n </header>\r\n )}\r\n\r\n <div className=\"flex-1 flex min-h-0\">\r\n {sidebar && sidebarPosition === \"left\" && (\r\n <aside\r\n className=\"shrink-0 border-r bg-muted/40 p-4\"\r\n style={{ width }}\r\n >\r\n {sidebar}\r\n </aside>\r\n )}\r\n\r\n <main className=\"flex-1 min-w-0\">{children}</main>\r\n\r\n {sidebar && sidebarPosition === \"right\" && (\r\n <aside\r\n className=\"shrink-0 border-l bg-muted/40 p-4\"\r\n style={{ width }}\r\n >\r\n {sidebar}\r\n </aside>\r\n )}\r\n </div>\r\n\r\n {footer && (\r\n <footer className=\"border-t bg-muted/40 shrink-0\">{footer}</footer>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nPageLayout.displayName = \"PageLayout\";\r\n","import { ReactNode, useMemo } from \"react\";\r\nimport { Environment } from \"@react-three/drei\";\r\n\r\n/* ---------------------------------------------\r\n Types\r\n--------------------------------------------- */\r\n\r\nexport type StagePreset =\r\n | \"rembrandt\"\r\n | \"portrait\"\r\n | \"upfront\"\r\n | \"soft\";\r\n\r\nexport interface StageProps {\r\n children: ReactNode;\r\n\r\n preset?: StagePreset;\r\n\r\n intensity?: number;\r\n\r\n environment?: string;\r\n\r\n shadows?: boolean;\r\n}\r\n\r\n/* ---------------------------------------------\r\n Light Presets\r\n--------------------------------------------- */\r\n\r\nfunction getPresetLights(preset: StagePreset) {\r\n switch (preset) {\r\n case \"portrait\":\r\n return [\r\n { pos: [2, 3, 4], intensity: 1 },\r\n { pos: [-2, 2, 3], intensity: 0.5 },\r\n ];\r\n\r\n case \"upfront\":\r\n return [\r\n { pos: [0, 4, 4], intensity: 1.2 },\r\n { pos: [0, -2, -4], intensity: 0.4 },\r\n ];\r\n\r\n case \"soft\":\r\n return [\r\n { pos: [3, 3, 3], intensity: 0.6 },\r\n { pos: [-3, 2, 1], intensity: 0.4 },\r\n ];\r\n\r\n case \"rembrandt\":\r\n default:\r\n return [\r\n { pos: [4, 4, 4], intensity: 1 },\r\n { pos: [-4, 2, 1], intensity: 0.5 },\r\n ];\r\n }\r\n}\r\n\r\n/* ---------------------------------------------\r\n Stage Component\r\n--------------------------------------------- */\r\n\r\nexport function Stage({\r\n children,\r\n\r\n preset = \"rembrandt\",\r\n\r\n intensity = 0.5,\r\n\r\n environment = \"city\",\r\n\r\n shadows = true,\r\n}: StageProps) {\r\n\r\n /* Memoize lights (performance) */\r\n const lights = useMemo(\r\n () => getPresetLights(preset),\r\n [preset],\r\n );\r\n return (\r\n <group>\r\n\r\n {/* Ambient Base */}\r\n <ambientLight intensity={intensity * 0.5} />\r\n\r\n {/* Directional Lights */}\r\n {lights.map((light, i) => (\r\n <directionalLight\r\n key={i}\r\n position={light.pos as [number, number, number]}\r\n intensity={light.intensity * intensity}\r\n castShadow={shadows}\r\n shadow-mapSize-width={2048}\r\n shadow-mapSize-height={2048}\r\n />\r\n ))}\r\n\r\n {/* HDRI Environment */}\r\n {environment && (\r\n <Environment preset={environment as any} />\r\n )}\r\n\r\n {/* Scene Content */}\r\n <group>{children}</group>\r\n\r\n </group>\r\n );\r\n}\r\n","import React, { ReactNode, Suspense } from \"react\";\r\nimport { Canvas } from \"@react-three/fiber\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface ViewportProps {\r\n children: ReactNode;\r\n className?: string;\r\n aspect?: number;\r\n fallback?: ReactNode;\r\n dpr?: [number, number];\r\n}\r\n\r\nexport function Viewport({\r\n children,\r\n className,\r\n aspect = 16 / 9,\r\n fallback = null,\r\n dpr = [1, 2],\r\n}: ViewportProps) {\r\n return (\r\n <div\r\n className={cn(\"relative w-full overflow-hidden rounded-xl bg-muted/20\", className)}\r\n style={{ aspectRatio: aspect }}\r\n >\r\n <Suspense fallback={fallback}>\r\n <Canvas\r\n dpr={dpr}\r\n camera={{ position: [0, 0, 5], fov: 50 }}\r\n shadows\r\n className=\"h-full w-full touch-none\"\r\n gl={{\r\n antialias: true,\r\n alpha: true,\r\n powerPreference: \"high-performance\",\r\n }}\r\n >\r\n {children}\r\n </Canvas>\r\n </Suspense>\r\n </div>\r\n );\r\n}\r\n","import React, { ReactNode, Children, useRef, useMemo } from \"react\";\r\nimport { Group } from \"three\";\r\n\r\nexport interface Container3DProps {\r\n children: ReactNode;\r\n direction?: \"row\" | \"column\" | \"grid\";\r\n gap?: number;\r\n align?: \"start\" | \"center\" | \"end\";\r\n}\r\n\r\nexport function Container3D({\r\n children,\r\n direction = \"row\",\r\n gap = 1,\r\n align = \"center\",\r\n}: Container3DProps) {\r\n const groupRef = useRef<Group>(null);\r\n\r\n // Convert children to array\r\n const childArray = Children.toArray(children);\r\n const count = childArray.length;\r\n\r\n // Calculate layout positions\r\n const positions = useMemo(() => {\r\n const pos: [number, number, number][] = [];\r\n\r\n // Grid dimensions\r\n const cols = Math.ceil(Math.sqrt(count));\r\n\r\n // Total dimensions for centering\r\n let totalWidth = 0;\r\n let totalHeight = 0;\r\n\r\n if (direction === \"row\") {\r\n totalWidth = (count - 1) * gap;\r\n } else if (direction === \"column\") {\r\n totalHeight = (count - 1) * gap;\r\n } else if (direction === \"grid\") {\r\n totalWidth = (cols - 1) * gap;\r\n totalHeight = (Math.ceil(count / cols) - 1) * gap;\r\n }\r\n\r\n // Offset to start position based on alignment\r\n const startX = align === \"center\" ? -totalWidth / 2 : align === \"end\" ? -totalWidth : 0;\r\n const startY = align === \"center\" ? totalHeight / 2 : align === \"end\" ? totalHeight : 0; // Note: Y usually goes up in 3D\r\n\r\n for (let i = 0; i < count; i++) {\r\n let x = 0;\r\n let y = 0;\r\n let z = 0;\r\n\r\n if (direction === \"row\") {\r\n x = startX + i * gap;\r\n } else if (direction === \"column\") {\r\n y = startY - i * gap; // Downwards for list logic usually, but 3D is variable. Assuming top-down similar to DOM\r\n } else if (direction === \"grid\") {\r\n const col = i % cols;\r\n const row = Math.floor(i / cols);\r\n x = startX + col * gap;\r\n y = startY - row * gap;\r\n }\r\n\r\n pos.push([x, y, z]);\r\n }\r\n return pos;\r\n }, [count, direction, gap, align]);\r\n\r\n return (\r\n <group ref={groupRef}>\r\n {childArray.map((child, index) => (\r\n <group key={index} position={positions[index]}>\r\n {child}\r\n </group>\r\n ))}\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { Grid } from \"@react-three/drei\";\r\n\r\nexport interface Grid3DProps {\r\n cellSize?: number;\r\n cellColor?: string;\r\n fadeDistance?: number;\r\n infiniteGrid?: boolean;\r\n}\r\n\r\nexport function Grid3D({\r\n cellSize = 1,\r\n cellColor = \"#6f6f6f\",\r\n fadeDistance = 50,\r\n infiniteGrid = true,\r\n}: Grid3DProps) {\r\n // Config for Grid from drei\r\n const config = useMemo(() => ({\r\n cellSize: cellSize,\r\n cellThickness: 0.5,\r\n cellColor: cellColor,\r\n sectionSize: cellSize * 10,\r\n sectionThickness: 1,\r\n sectionColor: cellColor,\r\n fadeDistance: fadeDistance,\r\n fadeStrength: 1,\r\n followCamera: infiniteGrid,\r\n infiniteGrid: infiniteGrid,\r\n }), [cellSize, cellColor, fadeDistance, infiniteGrid]);\r\n\r\n return (\r\n <Grid\r\n position={[0, -0.01, 0]}\r\n args={[10.5, 10.5]}\r\n {...config}\r\n />\r\n );\r\n}\r\n","import React, { useRef } from \"react\";\r\nimport {\r\n OrbitControls,\r\n FlyControls,\r\n FirstPersonControls\r\n} from \"@react-three/drei\";\r\n\r\nexport interface CameraControllerProps {\r\n mode?: \"orbit\" | \"fly\" | \"first-person\";\r\n damping?: number;\r\n minDistance?: number;\r\n maxDistance?: number;\r\n autoRotate?: boolean;\r\n}\r\n\r\nexport function CameraController({\r\n mode = \"orbit\",\r\n damping = 0.05,\r\n minDistance = 1,\r\n maxDistance = 100,\r\n autoRotate = false,\r\n}: CameraControllerProps) {\r\n const controlsRef = useRef(null);\r\n\r\n switch (mode) {\r\n case \"fly\":\r\n return (\r\n <FlyControls\r\n ref={controlsRef}\r\n movementSpeed={10}\r\n dragToLook\r\n />\r\n );\r\n case \"first-person\":\r\n return (\r\n <FirstPersonControls\r\n ref={controlsRef}\r\n lookSpeed={0.1}\r\n movementSpeed={10}\r\n />\r\n );\r\n case \"orbit\":\r\n default:\r\n return (\r\n <OrbitControls\r\n ref={controlsRef}\r\n enableDamping\r\n dampingFactor={damping}\r\n minDistance={minDistance}\r\n maxDistance={maxDistance}\r\n autoRotate={autoRotate}\r\n makeDefault\r\n />\r\n );\r\n }\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { Color } from \"three\";\r\n\r\nexport interface Scene3DProps {\r\n children: ReactNode;\r\n className?: string;\r\n background?: string;\r\n fog?: boolean;\r\n}\r\n\r\nexport function Scene3D({\r\n children,\r\n className, // className is unused in R3F scene structure usually, but kept for API consistency\r\n background = \"transparent\",\r\n fog = false,\r\n}: Scene3DProps) {\r\n return (\r\n <group>\r\n {background && background !== \"transparent\" && (\r\n <color attach=\"background\" args={[background]} />\r\n )}\r\n {fog && <fog attach=\"fog\" args={[\"#000\", 5, 30]} />}\r\n\r\n {/* Default Camera and Lights if needed, but Scene3D is described as minimal. \r\n The registry says \"provides basic lighting and a camera without opinionated presets\".\r\n */}\r\n <ambientLight intensity={0.5} />\r\n <pointLight position={[10, 10, 10]} intensity={1} castShadow />\r\n\r\n {children}\r\n </group>\r\n );\r\n}\r\n","\r\nimport * as React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\n/* =====================================================\r\n Variants\r\n===================================================== */\r\n\r\nexport const buttonVariants = cva(\r\n [\r\n \"relative inline-flex items-center justify-center gap-2\",\r\n \"whitespace-nowrap font-medium select-none transition-all\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n ].join(\" \"),\r\n {\r\n variants: {\r\n variant: {\r\n /* Token-based; works across light, dark, neon, glass, corporate, vibrant */\r\n primary:\r\n \"bg-primary text-primary-foreground border-b-4 border-primary/80 \" +\r\n \"hover:bg-primary/90 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n secondary:\r\n \"bg-secondary text-secondary-foreground border-b-4 border-border \" +\r\n \"hover:bg-secondary/80 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n accent:\r\n \"bg-accent text-accent-foreground border-b-4 border-accent/80 \" +\r\n \"hover:bg-accent/90 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n destructive:\r\n \"bg-destructive text-destructive-foreground border-b-4 border-destructive/80 \" +\r\n \"hover:bg-destructive/90 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-destructive\",\r\n\r\n outline:\r\n \"border-2 border-border bg-transparent text-foreground \" +\r\n \"hover:bg-muted/70 active:border-b-0 active:translate-y-0 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n ghost:\r\n \"bg-transparent text-foreground \" +\r\n \"hover:bg-muted/80 active:border-b-0 active:translate-y-0 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n soft:\r\n \"bg-primary/20 text-foreground border border-border \" +\r\n \"hover:bg-primary/30 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n glass:\r\n \"bg-background/15 backdrop-blur-xl border border-border \" +\r\n \"text-foreground shadow-soft \" +\r\n \"hover:bg-background/25 \" +\r\n \"focus-visible:ring-ring/50\",\r\n\r\n gradient:\r\n \"bg-gradient-to-r from-primary via-accent to-destructive text-primary-foreground \" +\r\n \"border-0 shadow-soft hover:brightness-110 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n neon:\r\n \"bg-background text-accent border border-accent shadow-glow \" +\r\n \"hover:shadow-glow hover:brightness-110 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n link:\r\n \"bg-transparent text-primary p-0 h-auto \" +\r\n \"underline-offset-4 hover:underline \" +\r\n \"focus-visible:ring-ring\",\r\n },\r\n\r\n /* ===============================\r\n Size\r\n =============================== */\r\n\r\n size: {\r\n sm: \"h-8 px-3 text-xs\",\r\n md: \"h-10 px-4 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n xl: \"h-14 px-10 text-lg\",\r\n icon: \"h-10 w-10 p-0\",\r\n },\r\n\r\n /* ===============================\r\n Radius\r\n =============================== */\r\n\r\n rounded: {\r\n sm: \"rounded-md\",\r\n md: \"rounded-lg\",\r\n lg: \"rounded-xl\",\r\n full: \"rounded-full\",\r\n },\r\n },\r\n\r\n defaultVariants: {\r\n variant: \"primary\",\r\n size: \"md\",\r\n rounded: \"lg\",\r\n },\r\n }\r\n);\r\n\r\n/* =====================================================\r\n Props\r\n===================================================== */\r\n\r\nexport interface Button3DProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n asChild?: boolean;\r\n loading?: boolean;\r\n\r\n /* Custom Colors */\r\n bgColor?: string;\r\n textColor?: string;\r\n borderColor?: string;\r\n\r\n /* Effects */\r\n glow?: boolean;\r\n}\r\n\r\n/* =====================================================\r\n Component\r\n===================================================== */\r\n\r\nconst Button3D = React.forwardRef<\r\n HTMLButtonElement,\r\n Button3DProps\r\n>(\r\n (\r\n {\r\n className,\r\n variant,\r\n size,\r\n rounded,\r\n\r\n asChild = false,\r\n loading = false,\r\n\r\n bgColor,\r\n textColor,\r\n borderColor,\r\n glow = false,\r\n\r\n style,\r\n children,\r\n disabled,\r\n\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n /* --------------------------------------------\r\n Dynamic Styles\r\n --------------------------------------------- */\r\n\r\n const customStyles: React.CSSProperties = {\r\n ...style,\r\n\r\n ...(bgColor && { backgroundColor: bgColor }),\r\n ...(textColor && { color: textColor }),\r\n ...(borderColor && { borderColor }),\r\n };\r\n\r\n const glowStyle = glow\r\n ? { boxShadow: \"var(--shadow-glow, 0 0 25px rgb(var(--color-primary) / 0.4))\" }\r\n : {};\r\n\r\n /* --------------------------------------------\r\n Content\r\n --------------------------------------------- */\r\n\r\n const content = (\r\n <>\r\n {loading && (\r\n <svg\r\n className=\"h-4 w-4 animate-spin\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n className=\"opacity-25\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n className=\"opacity-75\"\r\n d=\"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z\"\r\n />\r\n </svg>\r\n )}\r\n\r\n <span>{children}</span>\r\n </>\r\n );\r\n\r\n /* --------------------------------------------\r\n Classes\r\n --------------------------------------------- */\r\n\r\n const classes = cn(\r\n buttonVariants({ variant, size, rounded }),\r\n \"active:scale-[0.97]\",\r\n className\r\n );\r\n\r\n /* --------------------------------------------\r\n Slot Mode\r\n --------------------------------------------- */\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref}\r\n className={classes}\r\n style={{\r\n ...customStyles,\r\n ...glowStyle,\r\n }}\r\n {...props}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n /* --------------------------------------------\r\n Motion Safe Props\r\n --------------------------------------------- */\r\n\r\n const {\r\n onDrag,\r\n onDragStart,\r\n onDragEnd,\r\n onAnimationStart,\r\n onAnimationEnd,\r\n ...safeProps\r\n } = props;\r\n\r\n /* --------------------------------------------\r\n Button\r\n --------------------------------------------- */\r\n\r\n return (\r\n <motion.button\r\n ref={ref}\r\n className={classes}\r\n style={{\r\n ...customStyles,\r\n ...glowStyle,\r\n }}\r\n disabled={disabled || loading}\r\n whileTap={{ scale: 0.96 }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 400,\r\n damping: 20,\r\n }}\r\n {...safeProps}\r\n >\r\n {content}\r\n </motion.button>\r\n );\r\n }\r\n);\r\n\r\nButton3D.displayName = \"Button3D\";\r\n\r\nexport { Button3D };","import React, { useRef, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Card3DProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children?: React.ReactNode;\r\n depth?: \"sm\" | \"md\" | \"lg\";\r\n variant?: \"glass\" | \"solid\" | \"neon\" | \"outline\";\r\n disableTilt?: boolean;\r\n}\r\n\r\nexport function Card3D({\r\n children,\r\n className,\r\n depth = \"md\",\r\n variant = \"glass\",\r\n disableTilt = false,\r\n ...props\r\n}: Card3DProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n // Motion values for tilt effect\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n\r\n // Smooth spring animation for tilt\r\n const mouseX = useSpring(x, { stiffness: 150, damping: 15 });\r\n const mouseY = useSpring(y, { stiffness: 150, damping: 15 });\r\n\r\n const rotateX = useTransform(mouseY, [-0.5, 0.5], [\"7deg\", \"-7deg\"]);\r\n const rotateY = useTransform(mouseX, [-0.5, 0.5], [\"-7deg\", \"7deg\"]);\r\n\r\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (disableTilt || !ref.current) return;\r\n\r\n const rect = ref.current.getBoundingClientRect();\r\n const width = rect.width;\r\n const height = rect.height;\r\n\r\n const mouseXPos = e.clientX - rect.left;\r\n const mouseYPos = e.clientY - rect.top;\r\n\r\n const xPct = mouseXPos / width - 0.5;\r\n const yPct = mouseYPos / height - 0.5;\r\n\r\n x.set(xPct);\r\n y.set(yPct);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n if (disableTilt) return;\r\n x.set(0);\r\n y.set(0);\r\n };\r\n\r\n const getVariantStyles = () => {\r\n switch (variant) {\r\n case \"neon\":\r\n return \"bg-black/90 border-cyan-500/50 shadow-[0_0_30px_rgba(6,182,212,0.2)] text-cyan-50\";\r\n case \"solid\":\r\n return \"bg-white dark:bg-slate-900 border-slate-200 dark:border-slate-800 shadow-xl text-slate-900 dark:text-slate-100\";\r\n case \"outline\":\r\n return \"bg-transparent border-2 border-slate-200 dark:border-slate-700 text-slate-900 dark:text-slate-100\";\r\n case \"glass\":\r\n default:\r\n return \"bg-white/40 dark:bg-slate-900/60 backdrop-blur-xl border-white/40 dark:border-white/10 shadow-lg shadow-black/5 dark:shadow-black/20 text-slate-800 dark:text-white\";\r\n }\r\n };\r\n\r\n const getDepthValue = () => {\r\n switch (depth) {\r\n case \"sm\": return 20;\r\n case \"lg\": return 80;\r\n case \"md\": default: return 40;\r\n }\r\n };\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n style={{\r\n perspective: 1200,\r\n transformStyle: \"preserve-3d\",\r\n }}\r\n className={cn(\"relative group cursor-pointer\", className)}\r\n {...props as any}\r\n >\r\n <motion.div\r\n style={{\r\n rotateX: disableTilt ? 0 : rotateX,\r\n rotateY: disableTilt ? 0 : rotateY,\r\n transformStyle: \"preserve-3d\",\r\n }}\r\n className={cn(\r\n \"relative h-full w-full rounded-xl border p-6 transition-colors duration-300\",\r\n getVariantStyles()\r\n )}\r\n >\r\n {/* Depth Layer */}\r\n <div\r\n className=\"absolute inset-0 rounded-xl bg-black/10 dark:bg-black/40 blur-xl transition-all duration-300 -z-20\"\r\n style={{\r\n transform: `translateZ(-${getDepthValue()}px) scale(0.95)`,\r\n opacity: 0.6\r\n }}\r\n />\r\n\r\n {/* Content Layer with slight Z push */}\r\n <div style={{ transform: \"translateZ(20px)\" }}>\r\n {children}\r\n </div>\r\n\r\n {/* Dynamic Highlight/Sheen */}\r\n <div\r\n className=\"absolute inset-0 rounded-xl pointer-events-none bg-gradient-to-tr from-white/0 via-white/10 to-white/0 opacity-0 group-hover:opacity-100 transition-opacity duration-500 will-change-transform\"\r\n style={{ mixBlendMode: \"overlay\" }}\r\n />\r\n </motion.div>\r\n </motion.div>\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { ChevronDown, Box, Layers, Zap } from \"lucide-react\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\n// --- Types ---\r\n\r\nexport interface AccordionItem {\r\n title: string;\r\n content: React.ReactNode;\r\n value?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport interface Accordion3DProps {\r\n items: AccordionItem[];\r\n className?: string;\r\n variant?: \"glass\" | \"solid\" | \"neon\" | \"minimal\";\r\n defaultOpenIndex?: number | null;\r\n allowMultiple?: boolean;\r\n}\r\n\r\n/**\r\n * Accordion3D\r\n * \r\n * A 3D-inspired accordion component that uses CSS transforms and shadows\r\n * to create depth without WebGL.\r\n */\r\nexport const Accordion3D: React.FC<Accordion3DProps> = ({\r\n items,\r\n className,\r\n variant = \"glass\",\r\n defaultOpenIndex = null,\r\n allowMultiple = false,\r\n}) => {\r\n const [openIndexes, setOpenIndexes] = useState<number[]>(\r\n defaultOpenIndex !== null ? [defaultOpenIndex] : []\r\n );\r\n\r\n const toggleItem = (index: number) => {\r\n if (allowMultiple) {\r\n setOpenIndexes((prev) =>\r\n prev.includes(index)\r\n ? prev.filter((i) => i !== index)\r\n : [...prev, index]\r\n );\r\n } else {\r\n setOpenIndexes((prev) =>\r\n prev.includes(index) ? [] : [index]\r\n );\r\n }\r\n };\r\n\r\n const getVariantStyles = () => {\r\n switch (variant) {\r\n case \"neon\":\r\n return \"bg-slate-900/90 border-cyan-500/50 shadow-[0_0_15px_rgba(6,182,212,0.15)] hover:shadow-[0_0_25px_rgba(6,182,212,0.3)] text-cyan-50\";\r\n case \"solid\":\r\n return \"bg-white dark:bg-slate-800 border-slate-200 dark:border-slate-700 shadow-xl text-slate-900 dark:text-slate-100\";\r\n case \"minimal\":\r\n return \"bg-white/80 dark:bg-black/50 border-transparent shadow-sm backdrop-blur-md text-slate-800 dark:text-slate-200 hover:bg-white/95 dark:hover:bg-slate-900/80\";\r\n case \"glass\":\r\n default:\r\n return \"bg-white/40 dark:bg-slate-900/60 backdrop-blur-xl border-white/40 dark:border-white/10 shadow-lg shadow-black/5 dark:shadow-black/20 text-slate-800 dark:text-white\";\r\n }\r\n };\r\n\r\n const getDepthLayerStyles = () => {\r\n switch (variant) {\r\n case \"neon\": return \"bg-cyan-900/40\";\r\n case \"minimal\": return \"hidden\";\r\n case \"solid\": return \"bg-slate-200 dark:bg-slate-900\";\r\n case \"glass\": default: return \"bg-slate-900/10 dark:bg-black/40\";\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex flex-col gap-4 w-full max-w-2xl mx-auto\", className)}>\r\n {items.map((item, index) => {\r\n const isOpen = openIndexes.includes(index);\r\n\r\n return (\r\n <motion.div\r\n key={index}\r\n initial={false}\r\n animate={isOpen ? \"open\" : \"closed\"}\r\n className=\"relative group perspective-[1000px] z-0\"\r\n >\r\n {/* 3D Depth Layer (The physical 'thickness' behind the card) */}\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0 rounded-xl translate-y-2 translate-x-0 -z-10 transition-colors duration-300\",\r\n getDepthLayerStyles()\r\n )}\r\n variants={{\r\n open: {\r\n translateY: 4,\r\n scale: 0.99\r\n },\r\n closed: {\r\n translateY: 8,\r\n scale: 0.96\r\n }\r\n }}\r\n transition={{ duration: 0.2 }}\r\n />\r\n\r\n {/* Main Interactive Card Surface */}\r\n <motion.div\r\n className={cn(\r\n \"relative overflow-hidden rounded-xl border transition-all duration-300 will-change-transform z-10\",\r\n getVariantStyles()\r\n )}\r\n whileHover={{\r\n y: -2,\r\n scale: 1.005,\r\n transition: { type: \"spring\", stiffness: 400, damping: 25 },\r\n }}\r\n whileTap={{ scale: 0.995, y: 0 }}\r\n variants={{\r\n open: { y: 0 },\r\n closed: { y: 0 }\r\n }}\r\n >\r\n {/* Header / Trigger */}\r\n <button\r\n onClick={() => toggleItem(index)}\r\n className=\"w-full flex items-center justify-between p-5 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 rounded-xl\"\r\n aria-expanded={isOpen}\r\n >\r\n <div className=\"flex items-center gap-4\">\r\n {/* Icon Container with subtle 3D pop */}\r\n {item.icon && (\r\n <div\r\n className={cn(\r\n \"flex items-center justify-center w-10 h-10 rounded-lg bg-gradient-to-br transition-all duration-500 shadow-inner\",\r\n variant === \"neon\" ? \"from-cyan-500/20 to-blue-600/20 text-cyan-400\" :\r\n variant === \"solid\" ? \"from-slate-100 to-slate-200 dark:from-slate-800 dark:to-slate-900 text-slate-600 dark:text-slate-300\" :\r\n \"from-white/50 to-white/10 dark:from-white/10 dark:to-white/5 text-slate-700 dark:text-slate-200\"\r\n )}\r\n >\r\n <span className={cn(\"transition-transform duration-300\", isOpen ? \"scale-110\" : \"scale-100\")}>\r\n {item.icon}\r\n </span>\r\n </div>\r\n )}\r\n\r\n <div className=\"flex flex-col\">\r\n <span className={cn(\r\n \"text-lg font-semibold tracking-tight transition-colors\",\r\n isOpen ? \"opacity-100\" : \"opacity-80 group-hover:opacity-100\"\r\n )}>\r\n {item.title}\r\n </span>\r\n {isOpen && item.value && (\r\n <span className=\"text-xs opacity-60 font-mono\">{item.value}</span>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Chevron Area */}\r\n <div className=\"flex items-center gap-3\">\r\n {/* Status Indicator (Glow Dot) */}\r\n <div className={cn(\r\n \"w-2 h-2 rounded-full transition-all duration-500\",\r\n isOpen\r\n ? (variant === \"neon\" ? \"bg-cyan-400 shadow-[0_0_10px_#22d3ee]\" : \"bg-emerald-500 shadow-[0_0_8px_rgba(16,185,129,0.4)]\")\r\n : \"bg-slate-400/30\"\r\n )} />\r\n\r\n <motion.div\r\n variants={{\r\n open: { rotate: 180 },\r\n closed: { rotate: 0 }\r\n }}\r\n transition={{ type: \"spring\", stiffness: 200, damping: 20 }}\r\n className={cn(\r\n \"p-1 rounded-full\",\r\n variant === \"neon\" ? \"text-cyan-400\" : \"text-slate-500 dark:text-slate-400\"\r\n )}\r\n >\r\n <ChevronDown className=\"w-5 h-5\" />\r\n </motion.div>\r\n </div>\r\n </button>\r\n\r\n {/* Collapsible Content */}\r\n <AnimatePresence initial={false}>\r\n {isOpen && (\r\n <motion.div\r\n key=\"content\"\r\n initial=\"collapsed\"\r\n animate=\"open\"\r\n exit=\"collapsed\"\r\n variants={{\r\n open: { opacity: 1, height: \"auto\" },\r\n collapsed: { opacity: 0, height: 0 },\r\n }}\r\n transition={{\r\n duration: 0.4,\r\n ease: [0.04, 0.62, 0.23, 0.98],\r\n }}\r\n >\r\n <div className=\"px-5 pb-6 pt-0\">\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ delay: 0.1, duration: 0.3 }}\r\n className=\"relative\"\r\n >\r\n {/* Seamless Divider */}\r\n <div className=\"h-px w-full bg-gradient-to-r from-transparent via-current to-transparent opacity-10 mb-5\" />\r\n\r\n <div className=\"text-base sm:text-[15px] opacity-80 leading-relaxed font-normal pl-14\">\r\n {item.content}\r\n </div>\r\n </motion.div>\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Glassmorphism Shine Effect on Hover */}\r\n <div\r\n className=\"absolute inset-0 pointer-events-none bg-gradient-to-tr from-white/0 via-white/5 to-white/0 opacity-0 group-hover:opacity-100 transition-opacity duration-700\"\r\n style={{ mixBlendMode: 'overlay' }}\r\n />\r\n </motion.div>\r\n </motion.div>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { HTMLMotionProps } from \"framer-motion\";\r\n\r\nexport interface Badge3DProps extends HTMLMotionProps<\"div\"> {\r\n variant?: \"default\" | \"secondary\" | \"success\" | \"warning\" | \"danger\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n pulse?: boolean;\r\n}\r\n\r\nexport const Badge3D = React.forwardRef<HTMLDivElement, Badge3DProps>(\r\n ({ className, variant = \"default\", size = \"md\", pulse = false, children, ...props }, ref) => {\r\n const variants = {\r\n default: \"bg-primary text-primary-foreground border-b-2 border-primary/80 shadow-sm\",\r\n secondary: \"bg-secondary text-secondary-foreground border-b-2 border-secondary/80 shadow-sm\",\r\n success: \"bg-emerald-500 text-white border-b-2 border-emerald-700 shadow-sm\",\r\n warning: \"bg-amber-500 text-white border-b-2 border-amber-700 shadow-sm\",\r\n danger: \"bg-red-500 text-white border-b-2 border-red-700 shadow-sm\",\r\n outline: \"border-2 border-border bg-background text-foreground border-b-4 shadow-sm\",\r\n };\r\n\r\n const sizes = {\r\n sm: \"px-2 py-0.5 text-xs\",\r\n md: \"px-2.5 py-1 text-sm\",\r\n lg: \"px-3 py-1.5 text-base\",\r\n };\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n whileHover={{ y: -1, scale: 1.05 }}\r\n whileTap={{ y: 0, scale: 0.98 }}\r\n className={cn(\r\n \"inline-flex items-center rounded-md font-medium transition-all active:translate-y-[2px] active:border-b-0\",\r\n variants[variant],\r\n sizes[size],\r\n pulse && \"animate-pulse\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n }\r\n);\r\nBadge3D.displayName = \"Badge3D\";\r\n","import React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Input3DProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n error?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const Input3D = React.forwardRef<HTMLInputElement, Input3DProps>(\r\n ({ className, label, error, icon, type = \"text\", ...props }, ref) => {\r\n const [isFocused, setIsFocused] = useState(false);\r\n\r\n return (\r\n <div className=\"w-full space-y-2\">\r\n {label && (\r\n <label className=\"text-sm font-medium text-foreground\">\r\n {label}\r\n </label>\r\n )}\r\n <motion.div\r\n animate={{\r\n y: isFocused ? -2 : 0,\r\n }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 20 }}\r\n className=\"relative\"\r\n >\r\n {icon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\r\n {icon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n type={type}\r\n onFocus={() => setIsFocused(true)}\r\n onBlur={() => setIsFocused(false)}\r\n className={cn(\r\n \"flex h-11 w-full rounded-lg border-2 border-input bg-background px-3 py-2 text-sm ring-offset-background transition-all\",\r\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\r\n \"placeholder:text-muted-foreground\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:border-primary\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50\",\r\n \"border-b-4 border-b-slate-300 dark:border-b-slate-700\",\r\n \"focus:border-b-primary\",\r\n error && \"border-red-500 focus-visible:ring-red-500\",\r\n icon && \"pl-10\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </motion.div>\r\n {error && (\r\n <p className=\"text-sm text-red-500\">{error}</p>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nInput3D.displayName = \"Input3D\";\r\n","import React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Slider3DProps {\r\n value?: number;\r\n defaultValue?: number;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n onChange?: (value: number) => void;\r\n label?: string;\r\n showValue?: boolean;\r\n className?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function Slider3D({\r\n value: controlledValue,\r\n defaultValue = 50,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n onChange,\r\n label,\r\n showValue = true,\r\n className,\r\n disabled = false,\r\n}: Slider3DProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : internalValue;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = parseFloat(e.target.value);\r\n if (!isControlled) setInternalValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n const percentage = ((value - min) / (max - min)) * 100;\r\n\r\n return (\r\n <div className={cn(\"w-full space-y-2\", className)}>\r\n {(label || showValue) && (\r\n <div className=\"flex items-center justify-between\">\r\n {label && <label className=\"text-sm font-medium\">{label}</label>}\r\n {showValue && (\r\n <span className=\"text-sm font-mono text-muted-foreground\">\r\n {value}\r\n </span>\r\n )}\r\n </div>\r\n )}\r\n <div className=\"relative\">\r\n {/* Track Background */}\r\n <div className=\"h-3 w-full rounded-full bg-slate-200 dark:bg-slate-800 border-b-2 border-slate-300 dark:border-slate-900 shadow-inner\" />\r\n\r\n {/* Active Track */}\r\n <motion.div\r\n className=\"absolute top-0 left-0 h-3 rounded-full bg-primary border-b-2 border-primary/80\"\r\n style={{ width: `${percentage}%` }}\r\n initial={false}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n\r\n {/* Thumb */}\r\n <input\r\n type=\"range\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={value}\r\n onChange={handleChange}\r\n disabled={disabled}\r\n className=\"absolute top-0 left-0 w-full h-3 opacity-0 cursor-pointer disabled:cursor-not-allowed\"\r\n />\r\n\r\n <motion.div\r\n className={cn(\r\n \"absolute top-1/2 -translate-y-1/2 w-6 h-6 rounded-full bg-white border-2 border-primary shadow-lg pointer-events-none\",\r\n disabled && \"opacity-50\"\r\n )}\r\n style={{ left: `calc(${percentage}% - 12px)` }}\r\n whileHover={{ scale: 1.2 }}\r\n whileTap={{ scale: 0.9 }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Tab {\r\n label: string;\r\n value: string;\r\n content: React.ReactNode;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport interface Tabs3DProps {\r\n tabs: Tab[];\r\n defaultValue?: string;\r\n value?: string;\r\n onValueChange?: (value: string) => void;\r\n className?: string;\r\n variant?: \"default\" | \"pills\" | \"underline\";\r\n}\r\n\r\nexport function Tabs3D({\r\n tabs,\r\n defaultValue,\r\n value: controlledValue,\r\n onValueChange,\r\n className,\r\n variant = \"default\",\r\n}: Tabs3DProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue || tabs[0]?.value);\r\n const isControlled = controlledValue !== undefined;\r\n const activeValue = isControlled ? controlledValue : internalValue;\r\n\r\n const handleTabChange = (value: string) => {\r\n if (!isControlled) setInternalValue(value);\r\n onValueChange?.(value);\r\n };\r\n\r\n const activeTab = tabs.find((tab) => tab.value === activeValue);\r\n const activeIndex = tabs.findIndex((tab) => tab.value === activeValue);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n {/* Tab List */}\r\n <div\r\n className={cn(\r\n \"flex gap-1 mb-4\",\r\n variant === \"default\" && \"bg-muted p-1 rounded-lg\",\r\n variant === \"pills\" && \"gap-2\",\r\n variant === \"underline\" && \"border-b border-border\"\r\n )}\r\n >\r\n {tabs.map((tab, index) => {\r\n const isActive = tab.value === activeValue;\r\n return (\r\n <button\r\n key={tab.value}\r\n onClick={() => handleTabChange(tab.value)}\r\n className={cn(\r\n \"relative px-4 py-2 text-sm font-medium transition-all rounded-md\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n variant === \"default\" && [\r\n isActive\r\n ? \"bg-background text-foreground shadow-sm border-b-2 border-primary\"\r\n : \"text-muted-foreground hover:text-foreground\",\r\n ],\r\n variant === \"pills\" && [\r\n isActive\r\n ? \"bg-primary text-primary-foreground border-b-2 border-primary/80\"\r\n : \"bg-muted text-muted-foreground hover:bg-muted/80\",\r\n ],\r\n variant === \"underline\" && [\r\n \"rounded-none border-b-2\",\r\n isActive\r\n ? \"border-primary text-foreground\"\r\n : \"border-transparent text-muted-foreground hover:text-foreground\",\r\n ]\r\n )}\r\n >\r\n <span className=\"flex items-center gap-2\">\r\n {tab.icon}\r\n {tab.label}\r\n </span>\r\n {isActive && variant === \"default\" && (\r\n <motion.div\r\n layoutId=\"activeTab\"\r\n className=\"absolute inset-0 bg-background rounded-md -z-10 shadow-sm\"\r\n transition={{ type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n )}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n\r\n {/* Tab Content */}\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div\r\n key={activeValue}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {activeTab?.content}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n","import React, { useState, forwardRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Toggle3DProps {\r\n checked?: boolean;\r\n defaultChecked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n variant?: \"glass\" | \"neon\" | \"pill\";\r\n label?: string;\r\n}\r\n\r\nexport const Toggle3D = forwardRef<HTMLButtonElement, Toggle3DProps>(\r\n (\r\n {\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n onChange,\r\n disabled = false,\r\n variant = \"pill\",\r\n label,\r\n },\r\n ref\r\n ) => {\r\n const [internalChecked, setInternalChecked] =\r\n useState(defaultChecked);\r\n\r\n const isControlled = controlledChecked !== undefined;\r\n const isChecked = isControlled\r\n ? controlledChecked\r\n : internalChecked;\r\n\r\n const handleToggle = () => {\r\n if (disabled) return;\r\n\r\n const newChecked = !isChecked;\r\n\r\n if (!isControlled) {\r\n setInternalChecked(newChecked);\r\n }\r\n\r\n onChange?.(newChecked);\r\n };\r\n\r\n const getVariantStyles = () => {\r\n switch (variant) {\r\n case \"neon\":\r\n return isChecked\r\n ? \"bg-black border border-cyan-400 shadow-[0_0_15px_rgba(34,211,238,0.4)]\"\r\n : \"bg-black border border-slate-700\";\r\n\r\n case \"glass\":\r\n return \"bg-white/20 backdrop-blur-md border border-white/30\";\r\n\r\n case \"pill\":\r\n default:\r\n return isChecked\r\n ? \"bg-primary\"\r\n : \"bg-muted\";\r\n }\r\n };\r\n\r\n const toggleWidth = 56;\r\n const knobSize = 24;\r\n const padding = 4;\r\n const travel = toggleWidth - knobSize - padding * 2;\r\n\r\n return (\r\n <div className=\"flex items-center gap-3\">\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={isChecked}\r\n aria-disabled={disabled}\r\n disabled={disabled}\r\n onClick={handleToggle}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleToggle();\r\n }\r\n }}\r\n className={cn(\r\n \"relative h-8 w-14 rounded-full transition-colors\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n getVariantStyles()\r\n )}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute top-1 left-1 h-6 w-6 rounded-full shadow-md\",\r\n variant === \"neon\" && isChecked\r\n ? \"bg-cyan-400 shadow-[0_0_10px_#22d3ee]\"\r\n : \"bg-white\"\r\n )}\r\n animate={{\r\n x: isChecked ? travel : 0,\r\n scale: disabled ? 0.9 : 1,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 30,\r\n }}\r\n />\r\n </button>\r\n\r\n {label && (\r\n <span className=\"text-sm font-medium\">\r\n {label}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nToggle3D.displayName = \"Toggle3D\";","import React from \"react\";\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\r\nimport { X } from \"lucide-react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\n\r\nexport interface Modal3DProps {\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n children: React.ReactNode;\r\n trigger?: React.ReactNode;\r\n title?: string;\r\n description?: string;\r\n className?: string;\r\n}\r\n\r\nexport function Modal3D({\r\n open,\r\n onOpenChange,\r\n children,\r\n trigger,\r\n title,\r\n description,\r\n className,\r\n}: Modal3DProps) {\r\n return (\r\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\r\n {trigger && <DialogPrimitive.Trigger asChild>{trigger}</DialogPrimitive.Trigger>}\r\n <AnimatePresence>\r\n {open ? (\r\n <DialogPrimitive.Portal forceMount>\r\n <DialogPrimitive.Overlay asChild>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className=\"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\"\r\n />\r\n </DialogPrimitive.Overlay>\r\n <DialogPrimitive.Content asChild>\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 10 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 10 }}\r\n transition={{ type: \"spring\", duration: 0.3 }}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 sm:rounded-lg\",\r\n \"bg-white/80 dark:bg-slate-900/80 backdrop-blur-xl border-white/20 shadow-2xl\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex flex-col space-y-1.5 text-center sm:text-left\">\r\n {title && (\r\n <DialogPrimitive.Title className=\"text-lg font-semibold leading-none tracking-tight\">\r\n {title}\r\n </DialogPrimitive.Title>\r\n )}\r\n {description && (\r\n <DialogPrimitive.Description className=\"text-sm text-muted-foreground\">\r\n {description}\r\n </DialogPrimitive.Description>\r\n )}\r\n </div>\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </motion.div>\r\n </DialogPrimitive.Content>\r\n </DialogPrimitive.Portal>\r\n ) : null}\r\n </AnimatePresence>\r\n </DialogPrimitive.Root>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\n/* =====================================================\r\n Types\r\n===================================================== */\r\n\r\nexport interface MenuItem {\r\n label: string;\r\n icon?: React.ReactNode;\r\n danger?: boolean;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\ntype Menu3DProps =\r\n | {\r\n trigger: React.ReactNode;\r\n items: MenuItem[];\r\n children?: never;\r\n align?: \"start\" | \"center\" | \"end\";\r\n }\r\n | {\r\n trigger: React.ReactNode;\r\n children: React.ReactNode;\r\n items?: never;\r\n align?: \"start\" | \"center\" | \"end\";\r\n };\r\n\r\n/* =====================================================\r\n Root Menu\r\n===================================================== */\r\n\r\nexport function Menu3D({\r\n trigger,\r\n align = \"end\",\r\n items,\r\n children,\r\n}: Menu3DProps) {\r\n /* Dev Warning */\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (items && children) {\r\n console.warn(\r\n \"Menu3D: Use either `items` or `children`, not both.\"\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <DropdownMenuPrimitive.Root>\r\n\r\n {/* Trigger */}\r\n <DropdownMenuPrimitive.Trigger asChild>\r\n {trigger}\r\n </DropdownMenuPrimitive.Trigger>\r\n\r\n {/* Portal */}\r\n <DropdownMenuPrimitive.Portal>\r\n\r\n <DropdownMenuPrimitive.Content\r\n align={align}\r\n sideOffset={6}\r\n className={cn(\r\n \"z-50 min-w-[180px] overflow-hidden rounded-xl border p-1\",\r\n \"bg-white/90 dark:bg-slate-900/90 backdrop-blur-xl\",\r\n \"border-white/20 shadow-xl\",\r\n \"animate-in fade-in zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2\",\r\n \"data-[side=top]:slide-in-from-bottom-2\",\r\n \"data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2\"\r\n )}\r\n >\r\n\r\n {/* Config Mode */}\r\n {items?.length\r\n ? items.map((item, i) => (\r\n <DropdownMenuPrimitive.Item\r\n key={i}\r\n disabled={item.disabled}\r\n onSelect={item.onClick}\r\n className={cn(\r\n \"relative flex items-center gap-2\",\r\n \"cursor-pointer select-none rounded-md px-3 py-2 text-sm\",\r\n \"outline-none transition-colors\",\r\n \"focus:bg-accent focus:text-accent-foreground\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n item.danger && \"text-red-500\"\r\n )}\r\n >\r\n {item.icon && (\r\n <span className=\"text-muted-foreground\">\r\n {item.icon}\r\n </span>\r\n )}\r\n\r\n <span>{item.label}</span>\r\n\r\n </DropdownMenuPrimitive.Item>\r\n ))\r\n\r\n /* Slot Mode */\r\n : children}\r\n\r\n </DropdownMenuPrimitive.Content>\r\n\r\n </DropdownMenuPrimitive.Portal>\r\n\r\n </DropdownMenuPrimitive.Root>\r\n );\r\n}\r\n\r\n/* =====================================================\r\n Slot Components\r\n===================================================== */\r\n\r\nexport const Menu3DItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-pointer select-none items-center\",\r\n \"rounded-md px-3 py-2 text-sm outline-none transition-colors\",\r\n \"focus:bg-accent focus:text-accent-foreground\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nMenu3DItem.displayName =\r\n DropdownMenuPrimitive.Item.displayName;\r\n\r\n\r\n/* --------------------------------------------------- */\r\n\r\nexport const Menu3DLabel = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-3 py-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nMenu3DLabel.displayName =\r\n DropdownMenuPrimitive.Label.displayName;\r\n\r\n\r\n/* --------------------------------------------------- */\r\n\r\nexport const Menu3DSeparator = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator\r\n ref={ref}\r\n className={cn(\r\n \"-mx-1 my-1 h-px bg-border\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nMenu3DSeparator.displayName =\r\n DropdownMenuPrimitive.Separator.displayName;","import React from \"react\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Tooltip3DProps {\r\n content: React.ReactNode;\r\n children: React.ReactNode;\r\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n align?: \"start\" | \"center\" | \"end\";\r\n delayDuration?: number;\r\n}\r\n\r\nexport function Tooltip3D({\r\n content,\r\n children,\r\n side = \"top\",\r\n align = \"center\",\r\n delayDuration = 200,\r\n}: Tooltip3DProps) {\r\n return (\r\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\r\n <TooltipPrimitive.Root>\r\n <TooltipPrimitive.Trigger asChild>\r\n {children}\r\n </TooltipPrimitive.Trigger>\r\n <TooltipPrimitive.Content\r\n side={side}\r\n align={align}\r\n className={cn(\r\n \"z-50 overflow-hidden rounded-md 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\",\r\n \"bg-slate-900 text-white dark:bg-slate-100 dark:text-slate-900 border-none shadow-[0_10px_38px_-10px_rgba(22,23,24,0.35),0_10px_20px_-15px_rgba(22,23,24,0.2)]\"\r\n )}\r\n >\r\n {content}\r\n <TooltipPrimitive.Arrow className=\"fill-slate-900 dark:fill-slate-100\" />\r\n </TooltipPrimitive.Content>\r\n </TooltipPrimitive.Root>\r\n </TooltipPrimitive.Provider>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Progress3DProps {\r\n value: number;\r\n max?: number;\r\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n showLabel?: boolean;\r\n label?: string;\r\n className?: string;\r\n animated?: boolean;\r\n}\r\n\r\nexport function Progress3D({\r\n value,\r\n max = 100,\r\n variant = \"default\",\r\n size = \"md\",\r\n showLabel = false,\r\n label,\r\n className,\r\n animated = true,\r\n}: Progress3DProps) {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n const variants = {\r\n default: \"bg-primary border-primary/80\",\r\n success: \"bg-emerald-500 border-emerald-700\",\r\n warning: \"bg-amber-500 border-amber-700\",\r\n danger: \"bg-red-500 border-red-700\",\r\n };\r\n\r\n const sizes = {\r\n sm: \"h-2\",\r\n md: \"h-3\",\r\n lg: \"h-4\",\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full space-y-2\", className)}>\r\n {(label || showLabel) && (\r\n <div className=\"flex items-center justify-between text-sm\">\r\n {label && <span className=\"font-medium\">{label}</span>}\r\n {showLabel && (\r\n <span className=\"text-muted-foreground font-mono\">\r\n {Math.round(percentage)}%\r\n </span>\r\n )}\r\n </div>\r\n )}\r\n <div\r\n className={cn(\r\n \"w-full rounded-full bg-slate-200 dark:bg-slate-800 overflow-hidden shadow-inner border-b-2 border-slate-300 dark:border-slate-900\",\r\n sizes[size]\r\n )}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"h-full rounded-full border-b-2 shadow-sm\",\r\n variants[variant],\r\n animated && \"transition-all\"\r\n )}\r\n initial={{ width: 0 }}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{\r\n duration: animated ? 0.5 : 0,\r\n ease: \"easeOut\",\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { GripVertical } from \"lucide-react\";\r\nimport * as ResizablePrimitive from \"react-resizable-panels\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst ResizablePanelGroup = ({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\r\n <ResizablePrimitive.PanelGroup\r\n className={cn(\"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\", className)}\r\n {...props}\r\n />\r\n);\r\n\r\nconst ResizablePanel = ResizablePrimitive.Panel;\r\n\r\nconst ResizableHandle = ({\r\n withHandle,\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\r\n withHandle?: boolean;\r\n}) => (\r\n <ResizablePrimitive.PanelResizeHandle\r\n className={cn(\r\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {withHandle && (\r\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\r\n <GripVertical className=\"h-2.5 w-2.5\" />\r\n </div>\r\n )}\r\n </ResizablePrimitive.PanelResizeHandle>\r\n);\r\n\r\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\r\n","import React, { useState } from \"react\";\r\nimport { Html } from \"@react-three/drei\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Select3DOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface Select3DProps {\r\n options: Select3DOption[];\r\n value?: string;\r\n onChange?: (val: string) => void;\r\n width?: number;\r\n}\r\n\r\nexport function Select3D({\r\n options,\r\n value,\r\n onChange,\r\n width = 200,\r\n}: Select3DProps) {\r\n return (\r\n <Html transform>\r\n <select\r\n className={cn(\r\n \"px-3 py-2 bg-background/80 backdrop-blur border rounded text-foreground outline-none focus:ring-2 focus:ring-primary\",\r\n )}\r\n style={{ width }}\r\n value={value}\r\n onChange={(e) => onChange?.(e.target.value)}\r\n >\r\n {options.map(opt => (\r\n <option key={opt.value} value={opt.value}>\r\n {opt.label}\r\n </option>\r\n ))}\r\n </select>\r\n </Html>\r\n );\r\n}\r\n","import React, { useRef } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\n\r\nexport interface Spinner3DProps {\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n color?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function Spinner3D({\r\n size = \"md\",\r\n color = \"#22d3ee\",\r\n speed = 1,\r\n}: Spinner3DProps) {\r\n const ref = useRef<any>(null);\r\n\r\n const scale = size === \"sm\" ? 0.5 : size === \"lg\" ? 1.5 : 1;\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current) {\r\n ref.current.rotation.z -= delta * speed * 3;\r\n ref.current.rotation.x -= delta * speed * 1;\r\n }\r\n });\r\n\r\n return (\r\n <group ref={ref} scale={[scale, scale, scale]}>\r\n {/* Ring 1 */}\r\n <mesh rotation={[Math.PI / 4, 0, 0]}>\r\n <torusGeometry args={[0.5, 0.05, 16, 32]} />\r\n <meshStandardMaterial color={color} emissive={color} />\r\n </mesh>\r\n {/* Ring 2 */}\r\n <mesh rotation={[-Math.PI / 4, 0, 0]}>\r\n <torusGeometry args={[0.4, 0.05, 16, 32]} />\r\n <meshStandardMaterial color={color} />\r\n </mesh>\r\n </group>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Text, Line } from \"@react-three/drei\";\r\nimport { Vector3 } from \"three\";\r\n\r\nexport interface Stepper3DProps {\r\n steps: string[];\r\n activeStep?: number;\r\n gap?: number;\r\n}\r\n\r\nexport function Stepper3D({\r\n steps,\r\n activeStep = 0,\r\n gap = 2,\r\n}: Stepper3DProps) {\r\n\r\n const points = steps.map((_, i) => new Vector3((i - (steps.length - 1) / 2) * gap, 0, 0));\r\n\r\n return (\r\n <group>\r\n {/* Connecting Line */}\r\n <Line\r\n points={points}\r\n color=\"#333\"\r\n lineWidth={2}\r\n />\r\n\r\n {/* Active Line Progress */}\r\n {activeStep > 0 && (\r\n <Line\r\n points={points.slice(0, activeStep + 1)}\r\n color=\"#22d3ee\"\r\n lineWidth={4}\r\n />\r\n )}\r\n\r\n {/* Steps */}\r\n {steps.map((label, i) => (\r\n <group key={i} position={points[i]}>\r\n <mesh>\r\n <sphereGeometry args={[0.3, 32, 32]} />\r\n <meshStandardMaterial color={i <= activeStep ? \"#22d3ee\" : \"#333\"} />\r\n </mesh>\r\n <Text\r\n position={[0, -0.6, 0]}\r\n fontSize={0.2}\r\n color={i <= activeStep ? \"white\" : \"#666\"}\r\n anchorX=\"center\"\r\n anchorY=\"top\"\r\n >\r\n {label}\r\n </Text>\r\n </group>\r\n ))}\r\n </group>\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { Text } from \"@react-three/drei\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport { Color } from \"three\";\r\n\r\nexport interface NavBarItem {\r\n label: string;\r\n href: string;\r\n}\r\n\r\nexport interface NavBar3DProps {\r\n items: NavBarItem[];\r\n activeHref?: string;\r\n}\r\n\r\nexport function NavBar3D({ items, activeHref = \"/\" }: NavBar3DProps) {\r\n // Simple floating bar\r\n return (\r\n <group position={[0, -2, 0]}>\r\n {/* Background Bar */}\r\n <mesh position={[0, 0, -0.1]}>\r\n <boxGeometry args={[items.length * 2, 1, 0.2]} />\r\n <meshStandardMaterial color=\"#1a1a1a\" transparent opacity={0.8} />\r\n </mesh>\r\n\r\n {/* Items */}\r\n {items.map((item, i) => {\r\n const x = (i - (items.length - 1) / 2) * 2;\r\n const isActive = activeHref === item.href;\r\n\r\n return (\r\n <NavBarItemMesh key={i} item={item} x={x} isActive={isActive} />\r\n );\r\n })}\r\n </group>\r\n );\r\n}\r\n\r\nfunction NavBarItemMesh({ item, x, isActive }: { item: NavBarItem; x: number; isActive: boolean }) {\r\n const [hovered, setHover] = useState(false);\r\n\r\n return (\r\n <group position={[x, 0, 0]}>\r\n <mesh\r\n onPointerOver={() => setHover(true)}\r\n onPointerOut={() => setHover(false)}\r\n onClick={() => window.location.href = item.href} // Rudimentary nav\r\n >\r\n <planeGeometry args={[1.8, 0.8]} />\r\n <meshStandardMaterial color={isActive ? \"#22d3ee\" : hovered ? \"#333\" : \"transparent\"} transparent opacity={isActive ? 0.3 : hovered ? 0.5 : 0} />\r\n </mesh>\r\n <Text\r\n fontSize={0.2}\r\n color={isActive || hovered ? \"white\" : \"#888\"}\r\n anchorX=\"center\"\r\n anchorY=\"middle\"\r\n >\r\n {item.label}\r\n </Text>\r\n </group>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Line, Text } from \"@react-three/drei\";\r\nimport { Vector3 } from \"three\";\r\n\r\nexport interface TimelineEvent {\r\n date: string;\r\n title: string;\r\n description?: string;\r\n}\r\n\r\nexport interface Timeline3DProps {\r\n events: TimelineEvent[];\r\n orientation?: \"horizontal\" | \"vertical\";\r\n gap?: number;\r\n}\r\n\r\nexport function Timeline3D({\r\n events,\r\n orientation = \"horizontal\",\r\n gap = 3,\r\n}: Timeline3DProps) {\r\n\r\n const points = events.map((_, i) => {\r\n return orientation === \"horizontal\"\r\n ? new Vector3((i - (events.length - 1) / 2) * gap, 0, 0)\r\n : new Vector3(0, (i - (events.length - 1) / 2) * -gap, 0);\r\n });\r\n\r\n return (\r\n <group>\r\n <Line points={points} color=\"#555\" lineWidth={1} />\r\n\r\n {events.map((ev, i) => (\r\n <group key={i} position={points[i]}>\r\n <mesh>\r\n <sphereGeometry args={[0.2, 16, 16]} />\r\n <meshStandardMaterial color=\"#22d3ee\" />\r\n </mesh>\r\n <group position={[0, 0.5, 0]}>\r\n <Text\r\n fontSize={0.3}\r\n color=\"white\"\r\n anchorY=\"bottom\"\r\n >\r\n {ev.date}\r\n </Text>\r\n <Text\r\n position={[0, -0.3, 0]} // If above sphere, maybe title is above date?\r\n // Let's put date top, title bottom of sphere if horizontal?\r\n // For now stacking them above.\r\n fontSize={0.25}\r\n color=\"#ccc\"\r\n anchorY=\"top\"\r\n >\r\n {ev.title}\r\n </Text>\r\n </group>\r\n </group>\r\n ))}\r\n </group>\r\n );\r\n}\r\n","import * as React from \"react\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider;\r\n\r\nconst Tooltip = TooltipPrimitive.Root;\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger;\r\n\r\nconst TooltipContent = React.forwardRef<\r\n React.ElementRef<typeof TooltipPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <TooltipPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 overflow-hidden rounded-md 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\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\r\n","import * as React from \"react\";\r\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Slider = React.forwardRef<\r\n React.ElementRef<typeof SliderPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SliderPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative flex w-full touch-none select-none items-center\", className)}\r\n {...props}\r\n >\r\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\r\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\r\n </SliderPrimitive.Track>\r\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\r\n </SliderPrimitive.Root>\r\n));\r\nSlider.displayName = SliderPrimitive.Root.displayName;\r\n\r\nexport { Slider };\r\n","import * as React from \"react\";\r\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst toggleVariants = cva(\r\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-transparent\",\r\n outline: \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\r\n },\r\n size: {\r\n default: \"h-10 px-3\",\r\n sm: \"h-9 px-2.5\",\r\n lg: \"h-11 px-5\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst Toggle = React.forwardRef<\r\n React.ElementRef<typeof TogglePrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, ...props }, ref) => (\r\n <TogglePrimitive.Root ref={ref} className={cn(toggleVariants({ variant, size, className }))} {...props} />\r\n));\r\n\r\nToggle.displayName = TogglePrimitive.Root.displayName;\r\n\r\nexport { Toggle, toggleVariants };\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst badgeVariants = cva(\r\n \"inline-flex items-center font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border\",\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\r\n secondary:\r\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n destructive:\r\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\r\n accent:\r\n \"border-transparent bg-accent text-accent-foreground hover:bg-accent/80\",\r\n outline: \"text-foreground border-border bg-transparent\",\r\n success:\r\n \"border-transparent bg-success text-success-foreground hover:bg-success/90\",\r\n warning:\r\n \"border-transparent bg-warning text-warning-foreground hover:bg-warning/90\",\r\n info:\r\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/90\",\r\n },\r\n size: {\r\n xs: \"rounded px-1.5 py-0 text-[10px]\",\r\n sm: \"rounded-md px-2 py-0.5 text-xs\",\r\n md: \"rounded-md px-2.5 py-0.5 text-xs\",\r\n lg: \"rounded-lg px-3 py-1 text-sm\",\r\n },\r\n shape: {\r\n \"rounded-sm\": \"rounded-sm\",\r\n \"rounded-md\": \"rounded-md\",\r\n \"rounded-lg\": \"rounded-lg\",\r\n \"rounded-full\": \"rounded-full\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"md\",\r\n shape: \"rounded-full\",\r\n },\r\n }\r\n);\r\n\r\nexport interface BadgeProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof badgeVariants> {}\r\n\r\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\r\n ({ className, variant, size, shape, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(badgeVariants({ variant, size, shape }), className)}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nBadge.displayName = \"Badge\";\r\n\r\nexport { Badge, badgeVariants };\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst inputVariants = cva(\r\n \"flex w-full rounded-md border border-input bg-background ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-colors\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-8 px-2.5 text-sm\",\r\n md: \"h-10 px-3 py-2 text-base md:text-sm\",\r\n lg: \"h-12 px-4 py-3 text-base\",\r\n },\r\n error: {\r\n true: \"border-destructive focus-visible:ring-destructive/20\",\r\n false: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n error: false,\r\n },\r\n }\r\n);\r\n\r\nexport interface InputProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\r\n VariantProps<typeof inputVariants> {\r\n /** When true, shows error state (red border, destructive ring) */\r\n error?: boolean;\r\n /** Size variant. For native input character width use htmlSize or style. */\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, type, size = \"md\", error, ...props }, ref) => {\r\n return (\r\n <input\r\n type={type}\r\n className={cn(inputVariants({ size, error }), className)}\r\n ref={ref}\r\n aria-invalid={error ?? undefined}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nInput.displayName = \"Input\";\r\n\r\nexport { Input, inputVariants };\r\n","import * as React from \"react\";\r\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Progress = React.forwardRef<\r\n React.ElementRef<typeof ProgressPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\r\n>(({ className, value, ...props }, ref) => (\r\n <ProgressPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative h-4 w-full overflow-hidden rounded-full bg-secondary\", className)}\r\n {...props}\r\n >\r\n <ProgressPrimitive.Indicator\r\n className=\"h-full w-full flex-1 bg-primary transition-all\"\r\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\r\n />\r\n </ProgressPrimitive.Root>\r\n));\r\nProgress.displayName = ProgressPrimitive.Root.displayName;\r\n\r\nexport { Progress };\r\n","import { cn } from \"../../lib/utils\";\r\n\r\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n return <div className={cn(\"animate-pulse rounded-md bg-muted\", className)} {...props} />;\r\n}\r\n\r\nexport { Skeleton };\r\n","import * as React from \"react\";\r\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { X } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst ToastProvider = ToastPrimitives.Provider;\r\n\r\nconst ToastViewport = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Viewport>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Viewport\r\n ref={ref}\r\n className={cn(\r\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]\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\r\n\r\nconst toastVariants = cva(\r\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md 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\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border bg-background text-foreground\",\r\n destructive: \"destructive group border-destructive bg-destructive text-destructive-foreground\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst Toast = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> & VariantProps<typeof toastVariants>\r\n>(({ className, variant, ...props }, ref) => {\r\n return <ToastPrimitives.Root ref={ref} className={cn(toastVariants({ variant }), className)} {...props} />;\r\n});\r\nToast.displayName = ToastPrimitives.Root.displayName;\r\n\r\nconst ToastAction = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Action>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Action\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md 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\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nToastAction.displayName = ToastPrimitives.Action.displayName;\r\n\r\nconst ToastClose = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Close>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Close\r\n ref={ref}\r\n className={cn(\r\n \"absolute right-2 top-2 rounded-md 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\",\r\n className,\r\n )}\r\n toast-close=\"\"\r\n {...props}\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </ToastPrimitives.Close>\r\n));\r\nToastClose.displayName = ToastPrimitives.Close.displayName;\r\n\r\nconst ToastTitle = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Title>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Title ref={ref} className={cn(\"text-sm font-semibold\", className)} {...props} />\r\n));\r\nToastTitle.displayName = ToastPrimitives.Title.displayName;\r\n\r\nconst ToastDescription = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Description>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Description ref={ref} className={cn(\"text-sm opacity-90\", className)} {...props} />\r\n));\r\nToastDescription.displayName = ToastPrimitives.Description.displayName;\r\n\r\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\r\n\r\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\r\n\r\nexport {\r\n type ToastProps,\r\n type ToastActionElement,\r\n ToastProvider,\r\n ToastViewport,\r\n Toast,\r\n ToastTitle,\r\n ToastDescription,\r\n ToastClose,\r\n ToastAction,\r\n};\r\n","import * as React from \"react\";\r\n\r\nimport type { ToastActionElement, ToastProps } from \"../components/ui/toast\";\r\n\r\nconst TOAST_LIMIT = 1;\r\nconst TOAST_REMOVE_DELAY = 1000000;\r\n\r\ntype ToasterToast = ToastProps & {\r\n id: string;\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n action?: ToastActionElement;\r\n};\r\n\r\nconst actionTypes = {\r\n ADD_TOAST: \"ADD_TOAST\",\r\n UPDATE_TOAST: \"UPDATE_TOAST\",\r\n DISMISS_TOAST: \"DISMISS_TOAST\",\r\n REMOVE_TOAST: \"REMOVE_TOAST\",\r\n} as const;\r\n\r\nlet count = 0;\r\n\r\nfunction genId() {\r\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\r\n return count.toString();\r\n}\r\n\r\ntype ActionType = typeof actionTypes;\r\n\r\ntype Action =\r\n | {\r\n type: ActionType[\"ADD_TOAST\"];\r\n toast: ToasterToast;\r\n }\r\n | {\r\n type: ActionType[\"UPDATE_TOAST\"];\r\n toast: Partial<ToasterToast>;\r\n }\r\n | {\r\n type: ActionType[\"DISMISS_TOAST\"];\r\n toastId?: ToasterToast[\"id\"];\r\n }\r\n | {\r\n type: ActionType[\"REMOVE_TOAST\"];\r\n toastId?: ToasterToast[\"id\"];\r\n };\r\n\r\ninterface State {\r\n toasts: ToasterToast[];\r\n}\r\n\r\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\nconst addToRemoveQueue = (toastId: string) => {\r\n if (toastTimeouts.has(toastId)) {\r\n return;\r\n }\r\n\r\n const timeout = setTimeout(() => {\r\n toastTimeouts.delete(toastId);\r\n dispatch({\r\n type: \"REMOVE_TOAST\",\r\n toastId: toastId,\r\n });\r\n }, TOAST_REMOVE_DELAY);\r\n\r\n toastTimeouts.set(toastId, timeout);\r\n};\r\n\r\nexport const reducer = (state: State, action: Action): State => {\r\n switch (action.type) {\r\n case \"ADD_TOAST\":\r\n return {\r\n ...state,\r\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\r\n };\r\n\r\n case \"UPDATE_TOAST\":\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) => (t.id === action.toast.id ? { ...t, ...action.toast } : t)),\r\n };\r\n\r\n case \"DISMISS_TOAST\": {\r\n const { toastId } = action;\r\n\r\n // ! Side effects ! - This could be extracted into a dismissToast() action,\r\n // but I'll keep it here for simplicity\r\n if (toastId) {\r\n addToRemoveQueue(toastId);\r\n } else {\r\n state.toasts.forEach((toast) => {\r\n addToRemoveQueue(toast.id);\r\n });\r\n }\r\n\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === toastId || toastId === undefined\r\n ? {\r\n ...t,\r\n open: false,\r\n }\r\n : t,\r\n ),\r\n };\r\n }\r\n case \"REMOVE_TOAST\":\r\n if (action.toastId === undefined) {\r\n return {\r\n ...state,\r\n toasts: [],\r\n };\r\n }\r\n return {\r\n ...state,\r\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\r\n };\r\n }\r\n};\r\n\r\nconst listeners: Array<(state: State) => void> = [];\r\n\r\nlet memoryState: State = { toasts: [] };\r\n\r\nfunction dispatch(action: Action) {\r\n memoryState = reducer(memoryState, action);\r\n listeners.forEach((listener) => {\r\n listener(memoryState);\r\n });\r\n}\r\n\r\ntype Toast = Omit<ToasterToast, \"id\">;\r\n\r\nfunction toast({ ...props }: Toast) {\r\n const id = genId();\r\n\r\n const update = (props: ToasterToast) =>\r\n dispatch({\r\n type: \"UPDATE_TOAST\",\r\n toast: { ...props, id },\r\n });\r\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\r\n\r\n dispatch({\r\n type: \"ADD_TOAST\",\r\n toast: {\r\n ...props,\r\n id,\r\n open: true,\r\n onOpenChange: (open) => {\r\n if (!open) dismiss();\r\n },\r\n },\r\n });\r\n\r\n return {\r\n id: id,\r\n dismiss,\r\n update,\r\n };\r\n}\r\n\r\nfunction useToast() {\r\n const [state, setState] = React.useState<State>(memoryState);\r\n\r\n React.useEffect(() => {\r\n listeners.push(setState);\r\n return () => {\r\n const index = listeners.indexOf(setState);\r\n if (index > -1) {\r\n listeners.splice(index, 1);\r\n }\r\n };\r\n }, [state]);\r\n\r\n return {\r\n ...state,\r\n toast,\r\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\r\n };\r\n}\r\n\r\nexport { useToast, toast };\r\n","import { useToast } from \"../../hooks/use-toast\";\r\nimport { Toast, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport } from \"./toast\";\r\n\r\nexport function Toaster() {\r\n const { toasts } = useToast();\r\n\r\n return (\r\n <ToastProvider>\r\n {toasts.map(function ({ id, title, description, action, ...props }) {\r\n return (\r\n <Toast key={id} {...props}>\r\n <div className=\"grid gap-1\">\r\n {title && <ToastTitle>{title}</ToastTitle>}\r\n {description && <ToastDescription>{description}</ToastDescription>}\r\n </div>\r\n {action}\r\n <ToastClose />\r\n </Toast>\r\n );\r\n })}\r\n <ToastViewport />\r\n </ToastProvider>\r\n );\r\n}\r\n","import { useTheme } from \"next-themes\";\r\nimport { Toaster as Sonner, toast } from \"sonner\";\r\nimport React from \"react\";\r\n\r\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\r\n\r\nconst Toaster = ({ ...props }: ToasterProps) => {\r\n const { theme = \"system\" } = useTheme();\r\n\r\n return (\r\n <Sonner\r\n theme={theme as ToasterProps[\"theme\"]}\r\n className=\"toaster group\"\r\n toastOptions={{\r\n classNames: {\r\n toast:\r\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\r\n description: \"group-[.toast]:text-muted-foreground\",\r\n actionButton: \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\r\n cancelButton: \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\r\n },\r\n }}\r\n {...props}\r\n />\r\n );\r\n};\r\n\r\nexport { Toaster, toast };\r\n","import * as React from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Popover = PopoverPrimitive.Root;\r\n\r\nconst PopoverTrigger = PopoverPrimitive.Trigger;\r\n\r\nconst PopoverContent = React.forwardRef<\r\n React.ElementRef<typeof PopoverPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </PopoverPrimitive.Portal>\r\n));\r\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\r\n\r\nexport { Popover, PopoverTrigger, PopoverContent };\r\n","import * as SheetPrimitive from \"@radix-ui/react-dialog\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { X } from \"lucide-react\";\r\nimport * as React from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Sheet = SheetPrimitive.Root;\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger;\r\n\r\nconst SheetClose = SheetPrimitive.Close;\r\n\r\nconst SheetPortal = SheetPrimitive.Portal;\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n));\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\r\n\r\nconst sheetVariants = cva(\r\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\r\n {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\r\n bottom:\r\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\r\n right:\r\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n },\r\n);\r\n\r\ninterface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\r\n VariantProps<typeof sheetVariants> {}\r\n\r\nconst SheetContent = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Content>, SheetContentProps>(\r\n ({ side = \"right\", className, children, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <SheetPrimitive.Content ref={ref} className={cn(sheetVariants({ side }), className)} {...props}>\r\n {children}\r\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-secondary hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n </SheetPrimitive.Content>\r\n </SheetPortal>\r\n ),\r\n);\r\nSheetContent.displayName = SheetPrimitive.Content.displayName;\r\n\r\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />\r\n);\r\nSheetHeader.displayName = \"SheetHeader\";\r\n\r\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\r\n);\r\nSheetFooter.displayName = \"SheetFooter\";\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold text-foreground\", className)} {...props} />\r\n));\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n));\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\r\n\r\nexport {\r\n Sheet,\r\n SheetClose,\r\n SheetContent,\r\n SheetDescription,\r\n SheetFooter,\r\n SheetHeader,\r\n SheetOverlay,\r\n SheetPortal,\r\n SheetTitle,\r\n SheetTrigger,\r\n};\r\n","import * as React from \"react\";\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\r\nimport { X } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Dialog = DialogPrimitive.Root;\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger;\r\n\r\nconst DialogPortal = DialogPrimitive.Portal;\r\n\r\nconst DialogClose = DialogPrimitive.Close;\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n));\r\nDialogContent.displayName = DialogPrimitive.Content.displayName;\r\n\r\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)} {...props} />\r\n);\r\nDialogHeader.displayName = \"DialogHeader\";\r\n\r\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\r\n);\r\nDialogFooter.displayName = \"DialogFooter\";\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\r\n {...props}\r\n />\r\n));\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n));\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n};\r\n","import * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Breadcrumb = React.forwardRef<\r\n HTMLElement,\r\n React.ComponentPropsWithoutRef<\"nav\"> & {\r\n separator?: React.ReactNode;\r\n }\r\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />);\r\nBreadcrumb.displayName = \"Breadcrumb\";\r\n\r\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<\"ol\">>(\r\n ({ className, ...props }, ref) => (\r\n <ol\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n ),\r\n);\r\nBreadcrumbList.displayName = \"BreadcrumbList\";\r\n\r\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<\"li\">>(\r\n ({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"inline-flex items-center gap-1.5\", className)} {...props} />\r\n ),\r\n);\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\r\n\r\nconst BreadcrumbLink = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentPropsWithoutRef<\"a\"> & {\r\n asChild?: boolean;\r\n }\r\n>(({ asChild, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return <Comp ref={ref} className={cn(\"transition-colors hover:text-foreground\", className)} {...props} />;\r\n});\r\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\r\n\r\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<\"span\">>(\r\n ({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n role=\"link\"\r\n aria-disabled=\"true\"\r\n aria-current=\"page\"\r\n className={cn(\"font-normal text-foreground\", className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\r\n\r\nconst BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<\"li\">) => (\r\n <li role=\"presentation\" aria-hidden=\"true\" className={cn(\"[&>svg]:size-3.5\", className)} {...props}>\r\n {children ?? <ChevronRight />}\r\n </li>\r\n);\r\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\r\n\r\nconst BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<\"span\">) => (\r\n <span\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More</span>\r\n </span>\r\n);\r\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\";\r\n\r\nexport {\r\n Breadcrumb,\r\n BreadcrumbList,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n BreadcrumbEllipsis,\r\n};\r\n","import * as React from \"react\";\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst labelVariants = cva(\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\");\r\n\r\nconst Label = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\r\n>(({ className, ...props }, ref) => (\r\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\r\n));\r\nLabel.displayName = LabelPrimitive.Root.displayName;\r\n\r\nexport { Label };\r\n","import * as React from \"react\";\r\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\r\nimport { Check } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Checkbox = React.forwardRef<\r\n React.ElementRef<typeof CheckboxPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <CheckboxPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <CheckboxPrimitive.Indicator className={cn(\"flex items-center justify-center text-current\")}>\r\n <Check className=\"h-4 w-4\" />\r\n </CheckboxPrimitive.Indicator>\r\n </CheckboxPrimitive.Root>\r\n));\r\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\r\n\r\nexport { Checkbox };\r\n","import * as React from \"react\";\r\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Switch = React.forwardRef<\r\n React.ElementRef<typeof SwitchPrimitives.Root>,\r\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SwitchPrimitives.Root\r\n className={cn(\r\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n ref={ref}\r\n >\r\n <SwitchPrimitives.Thumb\r\n className={cn(\r\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\r\n )}\r\n />\r\n </SwitchPrimitives.Root>\r\n));\r\nSwitch.displayName = SwitchPrimitives.Root.displayName;\r\n\r\nexport { Switch };\r\n","import * as React from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\r\n\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, ...props }, ref) => {\r\n return (\r\n <textarea\r\n className={cn(\r\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n );\r\n});\r\nTextarea.displayName = \"Textarea\";\r\n\r\nexport { Textarea };\r\n","import * as React from \"react\";\r\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative={decorative}\r\n orientation={orientation}\r\n className={cn(\"shrink-0 bg-border\", orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\", className)}\r\n {...props}\r\n />\r\n));\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\r\n\r\nexport { Separator };\r\n","import * as React from \"react\";\r\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst ScrollArea = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <ScrollAreaPrimitive.Root ref={ref} className={cn(\"relative overflow-hidden\", className)} {...props}>\r\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">{children}</ScrollAreaPrimitive.Viewport>\r\n <ScrollBar />\r\n <ScrollAreaPrimitive.Corner />\r\n </ScrollAreaPrimitive.Root>\r\n));\r\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\r\n\r\nconst ScrollBar = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.ScrollAreaScrollbar\r\n ref={ref}\r\n orientation={orientation}\r\n className={cn(\r\n \"flex touch-none select-none transition-colors\",\r\n orientation === \"vertical\" && \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\r\n orientation === \"horizontal\" && \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\r\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n));\r\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\r\n\r\nexport { ScrollArea, ScrollBar };\r\n","import * as React from \"react\";\r\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\r\nimport { Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst RadioGroup = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\r\n>(({ className, ...props }, ref) => {\r\n return <RadioGroupPrimitive.Root className={cn(\"grid gap-2\", className)} {...props} ref={ref} />;\r\n});\r\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\r\n\r\nconst RadioGroupItem = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\r\n>(({ className, ...props }, ref) => {\r\n return (\r\n <RadioGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\r\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\r\n </RadioGroupPrimitive.Indicator>\r\n </RadioGroupPrimitive.Item>\r\n );\r\n});\r\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\r\n\r\nexport { RadioGroup, RadioGroupItem };\r\n","import * as React from \"react\";\r\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\r\nimport { type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { toggleVariants } from \"./toggle\";\r\n\r\nconst ToggleGroupContext = React.createContext<VariantProps<typeof toggleVariants>>({\r\n size: \"default\",\r\n variant: \"default\",\r\n});\r\n\r\nconst ToggleGroup = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, children, ...props }, ref) => (\r\n <ToggleGroupPrimitive.Root ref={ref} className={cn(\"flex items-center justify-center gap-1\", className)} {...props}>\r\n <ToggleGroupContext.Provider value={{ variant, size }}>{children}</ToggleGroupContext.Provider>\r\n </ToggleGroupPrimitive.Root>\r\n));\r\n\r\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\r\n\r\nconst ToggleGroupItem = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>\r\n>(({ className, children, variant, size, ...props }, ref) => {\r\n const context = React.useContext(ToggleGroupContext);\r\n\r\n return (\r\n <ToggleGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n toggleVariants({\r\n variant: context.variant || variant,\r\n size: context.size || size,\r\n }),\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </ToggleGroupPrimitive.Item>\r\n );\r\n});\r\n\r\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\r\n\r\nexport { ToggleGroup, ToggleGroupItem };\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst alertVariants = cva(\r\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-background text-foreground\",\r\n destructive: \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst Alert = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\r\n>(({ className, variant, ...props }, ref) => (\r\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props} />\r\n));\r\nAlert.displayName = \"Alert\";\r\n\r\nconst AlertTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(\r\n ({ className, ...props }, ref) => (\r\n <h5 ref={ref} className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)} {...props} />\r\n ),\r\n);\r\nAlertTitle.displayName = \"AlertTitle\";\r\n\r\nconst AlertDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"text-sm [&_p]:leading-relaxed\", className)} {...props} />\r\n ),\r\n);\r\nAlertDescription.displayName = \"AlertDescription\";\r\n\r\nexport { Alert, AlertTitle, AlertDescription };\r\n","import * as React from \"react\";\r\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Avatar = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\", className)}\r\n {...props}\r\n />\r\n));\r\nAvatar.displayName = AvatarPrimitive.Root.displayName;\r\n\r\nconst AvatarImage = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Image>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Image ref={ref} className={cn(\"aspect-square h-full w-full\", className)} {...props} />\r\n));\r\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\r\n\r\nconst AvatarFallback = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Fallback\r\n ref={ref}\r\n className={cn(\"flex h-full w-full items-center justify-center rounded-full bg-muted\", className)}\r\n {...props}\r\n />\r\n));\r\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\r\n\r\nexport { Avatar, AvatarImage, AvatarFallback };\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst cardVariants = cva(\r\n \"rounded-lg border bg-card text-card-foreground transition-shadow\",\r\n {\r\n variants: {\r\n elevation: {\r\n flat: \"shadow-none\",\r\n low: \"shadow-sm\",\r\n medium: \"shadow-md\",\r\n high: \"shadow-lg\",\r\n glow: \"shadow-lg shadow-primary/10\",\r\n },\r\n },\r\n defaultVariants: {\r\n elevation: \"low\",\r\n },\r\n }\r\n);\r\n\r\nexport interface CardProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof cardVariants> {}\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ className, elevation, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(cardVariants({ elevation }), className)}\r\n {...props}\r\n />\r\n )\r\n);\r\nCard.displayName = \"Card\";\r\n\r\nconst CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n));\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\nconst CardTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n className={cn(\r\n \"text-2xl font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\nCardTitle.displayName = \"CardTitle\";\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n));\r\nCardDescription.displayName = \"CardDescription\";\r\n\r\nconst CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\r\n));\r\nCardContent.displayName = \"CardContent\";\r\n\r\nconst CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n));\r\nCardFooter.displayName = \"CardFooter\";\r\n\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent, cardVariants };\r\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root;\r\n\r\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\r\n\r\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\r\n\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\r\n","import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\r\n\r\nconst AspectRatio = AspectRatioPrimitive.Root;\r\n\r\nexport { AspectRatio };\r\n","import * as React from \"react\";\r\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst HoverCard = HoverCardPrimitive.Root;\r\n\r\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\r\n\r\nconst HoverCardContent = React.forwardRef<\r\n React.ElementRef<typeof HoverCardPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <HoverCardPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\r\n\r\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\r\n","import * as React from \"react\";\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { buttonVariants } from \"./button3d\";\r\nconst AlertDialog = AlertDialogPrimitive.Root;\r\n\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\r\n\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n));\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </AlertDialogPortal>\r\n));\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\r\n\r\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />\r\n);\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\r\n\r\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\r\n);\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold\", className)} {...props} />\r\n));\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n));\r\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\r\n\r\nconst AlertDialogAction = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />\r\n));\r\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\r\n\r\nconst AlertDialogCancel = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Cancel\r\n ref={ref}\r\n className={cn(buttonVariants({ variant: \"outline\" }), \"mt-2 sm:mt-0\", className)}\r\n {...props}\r\n />\r\n));\r\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogTrigger,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n};\r\n","import * as React from \"react\";\r\nimport { type DialogProps } from \"@radix-ui/react-dialog\";\r\nimport { Command as CommandPrimitive } from \"cmdk\";\r\nimport { Search } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Dialog, DialogContent } from \"./dialog\";\r\n\r\nconst Command = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nCommand.displayName = CommandPrimitive.displayName;\r\n\r\ninterface CommandDialogProps extends DialogProps {}\r\n\r\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\r\n return (\r\n <Dialog {...props}>\r\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\r\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\r\n {children}\r\n </Command>\r\n </DialogContent>\r\n </Dialog>\r\n );\r\n};\r\n\r\nconst CommandInput = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Input>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\r\n>(({ className, ...props }, ref) => (\r\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\r\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\r\n <CommandPrimitive.Input\r\n ref={ref}\r\n className={cn(\r\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n));\r\n\r\nCommandInput.displayName = CommandPrimitive.Input.displayName;\r\n\r\nconst CommandList = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.List\r\n ref={ref}\r\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\r\n {...props}\r\n />\r\n));\r\n\r\nCommandList.displayName = CommandPrimitive.List.displayName;\r\n\r\nconst CommandEmpty = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Empty>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\r\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />);\r\n\r\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\r\n\r\nconst CommandGroup = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Group>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Group\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\r\n\r\nconst CommandSeparator = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Separator ref={ref} className={cn(\"-mx-1 h-px bg-border\", className)} {...props} />\r\n));\r\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\r\n\r\nconst CommandItem = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nCommandItem.displayName = CommandPrimitive.Item.displayName;\r\n\r\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return <span className={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)} {...props} />;\r\n};\r\nCommandShortcut.displayName = \"CommandShortcut\";\r\n\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandShortcut,\r\n CommandSeparator,\r\n};\r\n","import * as React from \"react\";\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { Controller, ControllerProps, FieldPath, FieldValues, FormProvider, useFormContext } from \"react-hook-form\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Label } from \"./label\";\r\n\r\nconst Form = FormProvider;\r\n\r\ntype FormFieldContextValue<\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n> = {\r\n name: TName;\r\n};\r\n\r\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);\r\n\r\nconst FormField = <\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n>({\r\n ...props\r\n}: ControllerProps<TFieldValues, TName>) => {\r\n return (\r\n <FormFieldContext.Provider value={{ name: props.name }}>\r\n <Controller {...props} />\r\n </FormFieldContext.Provider>\r\n );\r\n};\r\n\r\nconst useFormField = () => {\r\n const fieldContext = React.useContext(FormFieldContext);\r\n const itemContext = React.useContext(FormItemContext);\r\n const { getFieldState, formState } = useFormContext();\r\n\r\n const fieldState = getFieldState(fieldContext.name, formState);\r\n\r\n if (!fieldContext) {\r\n throw new Error(\"useFormField should be used within <FormField>\");\r\n }\r\n\r\n const { id } = itemContext;\r\n\r\n return {\r\n id,\r\n name: fieldContext.name,\r\n formItemId: `${id}-form-item`,\r\n formDescriptionId: `${id}-form-item-description`,\r\n formMessageId: `${id}-form-item-message`,\r\n ...fieldState,\r\n };\r\n};\r\n\r\ntype FormItemContextValue = {\r\n id: string;\r\n};\r\n\r\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\r\n\r\nconst FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => {\r\n const id = React.useId();\r\n\r\n return (\r\n <FormItemContext.Provider value={{ id }}>\r\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\r\n </FormItemContext.Provider>\r\n );\r\n },\r\n);\r\nFormItem.displayName = \"FormItem\";\r\n\r\nconst FormLabel = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\r\n>(({ className, ...props }, ref) => {\r\n const { error, formItemId } = useFormField();\r\n\r\n return <Label ref={ref} className={cn(error && \"text-destructive\", className)} htmlFor={formItemId} {...props} />;\r\n});\r\nFormLabel.displayName = \"FormLabel\";\r\n\r\nconst FormControl = React.forwardRef<React.ElementRef<typeof Slot>, React.ComponentPropsWithoutRef<typeof Slot>>(\r\n ({ ...props }, ref) => {\r\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\r\n\r\n return (\r\n <Slot\r\n ref={ref}\r\n id={formItemId}\r\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\r\n aria-invalid={!!error}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nFormControl.displayName = \"FormControl\";\r\n\r\nconst FormDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, ...props }, ref) => {\r\n const { formDescriptionId } = useFormField();\r\n\r\n return <p ref={ref} id={formDescriptionId} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />;\r\n },\r\n);\r\nFormDescription.displayName = \"FormDescription\";\r\n\r\nconst FormMessage = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n const { error, formMessageId } = useFormField();\r\n const body = error ? String(error?.message) : children;\r\n\r\n if (!body) {\r\n return null;\r\n }\r\n\r\n return (\r\n <p ref={ref} id={formMessageId} className={cn(\"text-sm font-medium text-destructive\", className)} {...props}>\r\n {body}\r\n </p>\r\n );\r\n },\r\n);\r\nFormMessage.displayName = \"FormMessage\";\r\n\r\nexport { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };\r\n","import * as React from \"react\";\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Button3DProps, buttonVariants } from \"./button3d\";\r\n\r\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n className={cn(\"mx-auto flex w-full justify-center\", className)}\r\n {...props}\r\n />\r\n);\r\nPagination.displayName = \"Pagination\";\r\n\r\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\r\n ({ className, ...props }, ref) => (\r\n <ul ref={ref} className={cn(\"flex flex-row items-center gap-1\", className)} {...props} />\r\n ),\r\n);\r\nPaginationContent.displayName = \"PaginationContent\";\r\n\r\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n));\r\nPaginationItem.displayName = \"PaginationItem\";\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & Pick<Button3DProps, \"size\"> &\r\n React.ComponentProps<\"a\">;\r\n\r\nconst PaginationLink = ({ className, isActive, size = \"md\", ...props }: PaginationLinkProps) => (\r\n <a\r\n aria-current={isActive ? \"page\" : undefined}\r\n className={cn(\r\n buttonVariants({\r\n variant: isActive ? \"outline\" : \"ghost\",\r\n size,\r\n }),\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nPaginationLink.displayName = \"PaginationLink\";\r\n\r\nconst PaginationPrevious = ({ className, size, ...props }: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink aria-label=\"Go to previous page\" size={size ?? \"md\"} className={cn(\"gap-1 pl-2.5\", className)} {...props}>\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n <span>Previous</span>\r\n </PaginationLink>\r\n);\r\nPaginationPrevious.displayName = \"PaginationPrevious\";\r\n\r\nconst PaginationNext = ({ className, size, ...props }: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink aria-label=\"Go to next page\" size={size ?? \"md\"} className={cn(\"gap-1 pr-2.5\", className)} {...props}>\r\n <span>Next</span>\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </PaginationLink>\r\n);\r\nPaginationNext.displayName = \"PaginationNext\";\r\n\r\nconst PaginationEllipsis = ({ className, ...props }: React.ComponentProps<\"span\">) => (\r\n <span aria-hidden className={cn(\"flex h-9 w-9 items-center justify-center\", className)} {...props}>\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n);\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationEllipsis,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationNext,\r\n PaginationPrevious,\r\n};\r\n","import * as React from \"react\";\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst DropdownMenu = DropdownMenuPrimitive.Root;\r\n\r\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\r\n\r\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\r\n\r\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\r\n\r\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\r\n\r\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\r\n\r\nconst DropdownMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent focus:bg-accent\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n));\r\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\r\n\r\nconst DropdownMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\r\n\r\nconst DropdownMenuContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n));\r\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\r\n\r\nconst DropdownMenuItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\r\n\r\nconst DropdownMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n));\r\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\r\n\r\nconst DropdownMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n));\r\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\r\n\r\nconst DropdownMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", inset && \"pl-8\", className)}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\r\n\r\nconst DropdownMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\r\n));\r\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\r\n\r\nconst DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return <span className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)} {...props} />;\r\n};\r\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n};\r\n","import * as React from \"react\";\r\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst ContextMenu = ContextMenuPrimitive.Root;\r\n\r\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\r\n\r\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\r\n\r\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\r\n\r\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\r\n\r\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\r\n\r\nconst ContextMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent data-[state=open]:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </ContextMenuPrimitive.SubTrigger>\r\n));\r\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\r\n\r\nconst ContextMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\r\n\r\nconst ContextMenuContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Portal>\r\n <ContextMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </ContextMenuPrimitive.Portal>\r\n));\r\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\r\n\r\nconst ContextMenuItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\r\n\r\nconst ContextMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <ContextMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.CheckboxItem>\r\n));\r\nContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;\r\n\r\nconst ContextMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.RadioItem>\r\n));\r\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\r\n\r\nconst ContextMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\"px-2 py-1.5 text-sm font-semibold text-foreground\", inset && \"pl-8\", className)}\r\n {...props}\r\n />\r\n));\r\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\r\n\r\nconst ContextMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-border\", className)} {...props} />\r\n));\r\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\r\n\r\nconst ContextMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return <span className={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)} {...props} />;\r\n};\r\nContextMenuShortcut.displayName = \"ContextMenuShortcut\";\r\n\r\nexport {\r\n ContextMenu,\r\n ContextMenuTrigger,\r\n ContextMenuContent,\r\n ContextMenuItem,\r\n ContextMenuCheckboxItem,\r\n ContextMenuRadioItem,\r\n ContextMenuLabel,\r\n ContextMenuSeparator,\r\n ContextMenuShortcut,\r\n ContextMenuGroup,\r\n ContextMenuPortal,\r\n ContextMenuSub,\r\n ContextMenuSubContent,\r\n ContextMenuSubTrigger,\r\n ContextMenuRadioGroup,\r\n};\r\n","import * as React from \"react\";\r\nimport { Drawer as DrawerPrimitive } from \"vaul\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Drawer = ({ shouldScaleBackground = true, ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\r\n <DrawerPrimitive.Root shouldScaleBackground={shouldScaleBackground} {...props} />\r\n);\r\nDrawer.displayName = \"Drawer\";\r\n\r\nconst DrawerTrigger = DrawerPrimitive.Trigger;\r\n\r\nconst DrawerPortal = DrawerPrimitive.Portal;\r\n\r\nconst DrawerClose = DrawerPrimitive.Close;\r\n\r\nconst DrawerOverlay = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Overlay ref={ref} className={cn(\"fixed inset-0 z-50 bg-black/80\", className)} {...props} />\r\n));\r\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\r\n\r\nconst DrawerContent = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DrawerPortal>\r\n <DrawerOverlay />\r\n <DrawerPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\r\n {children}\r\n </DrawerPrimitive.Content>\r\n </DrawerPortal>\r\n));\r\nDrawerContent.displayName = \"DrawerContent\";\r\n\r\nconst DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)} {...props} />\r\n);\r\nDrawerHeader.displayName = \"DrawerHeader\";\r\n\r\nconst DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)} {...props} />\r\n);\r\nDrawerFooter.displayName = \"DrawerFooter\";\r\n\r\nconst DrawerTitle = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\r\n {...props}\r\n />\r\n));\r\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\r\n\r\nconst DrawerDescription = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n));\r\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\r\n\r\nexport {\r\n Drawer,\r\n DrawerPortal,\r\n DrawerOverlay,\r\n DrawerTrigger,\r\n DrawerClose,\r\n DrawerContent,\r\n DrawerHeader,\r\n DrawerFooter,\r\n DrawerTitle,\r\n DrawerDescription,\r\n};\r\n","import * as React from \"react\";\r\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst MenubarMenu = MenubarPrimitive.Menu;\r\n\r\nconst MenubarGroup = MenubarPrimitive.Group;\r\n\r\nconst MenubarPortal = MenubarPrimitive.Portal;\r\n\r\nconst MenubarSub = MenubarPrimitive.Sub;\r\n\r\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup;\r\n\r\nconst Menubar = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Root\r\n ref={ref}\r\n className={cn(\"flex h-10 items-center space-x-1 rounded-md border bg-background p-1\", className)}\r\n {...props}\r\n />\r\n));\r\nMenubar.displayName = MenubarPrimitive.Root.displayName;\r\n\r\nconst MenubarTrigger = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none data-[state=open]:bg-accent data-[state=open]:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;\r\n\r\nconst MenubarSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <MenubarPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent data-[state=open]:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </MenubarPrimitive.SubTrigger>\r\n));\r\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;\r\n\r\nconst MenubarSubContent = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;\r\n\r\nconst MenubarContent = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\r\n>(({ className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props }, ref) => (\r\n <MenubarPrimitive.Portal>\r\n <MenubarPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n alignOffset={alignOffset}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </MenubarPrimitive.Portal>\r\n));\r\nMenubarContent.displayName = MenubarPrimitive.Content.displayName;\r\n\r\nconst MenubarItem = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <MenubarPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nMenubarItem.displayName = MenubarPrimitive.Item.displayName;\r\n\r\nconst MenubarCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <MenubarPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <MenubarPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </MenubarPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </MenubarPrimitive.CheckboxItem>\r\n));\r\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;\r\n\r\nconst MenubarRadioItem = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <MenubarPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <MenubarPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </MenubarPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </MenubarPrimitive.RadioItem>\r\n));\r\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;\r\n\r\nconst MenubarLabel = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <MenubarPrimitive.Label\r\n ref={ref}\r\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", inset && \"pl-8\", className)}\r\n {...props}\r\n />\r\n));\r\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName;\r\n\r\nconst MenubarSeparator = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\r\n));\r\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;\r\n\r\nconst MenubarShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return <span className={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)} {...props} />;\r\n};\r\nMenubarShortcut.displayname = \"MenubarShortcut\";\r\n\r\nexport {\r\n Menubar,\r\n MenubarMenu,\r\n MenubarTrigger,\r\n MenubarContent,\r\n MenubarItem,\r\n MenubarSeparator,\r\n MenubarLabel,\r\n MenubarCheckboxItem,\r\n MenubarRadioGroup,\r\n MenubarRadioItem,\r\n MenubarPortal,\r\n MenubarSubContent,\r\n MenubarSubTrigger,\r\n MenubarGroup,\r\n MenubarSub,\r\n MenubarShortcut,\r\n};\r\n","import * as React from \"react\";\r\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\r\nimport { cva } from \"class-variance-authority\";\r\nimport { ChevronDown } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst NavigationMenu = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n {children}\r\n <NavigationMenuViewport />\r\n </NavigationMenuPrimitive.Root>\r\n));\r\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;\r\n\r\nconst NavigationMenuList = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.List\r\n ref={ref}\r\n className={cn(\"group flex flex-1 list-none items-center justify-center space-x-1\", className)}\r\n {...props}\r\n />\r\n));\r\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;\r\n\r\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\r\n\r\nconst navigationMenuTriggerStyle = cva(\r\n \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\",\r\n);\r\n\r\nconst NavigationMenuTrigger = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Trigger\r\n ref={ref}\r\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\r\n {...props}\r\n >\r\n {children}{\" \"}\r\n <ChevronDown\r\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\r\n aria-hidden=\"true\"\r\n />\r\n </NavigationMenuPrimitive.Trigger>\r\n));\r\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;\r\n\r\nconst NavigationMenuContent = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;\r\n\r\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\r\n\r\nconst NavigationMenuViewport = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\r\n <NavigationMenuPrimitive.Viewport\r\n className={cn(\r\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\r\n className,\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n </div>\r\n));\r\nNavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;\r\n\r\nconst NavigationMenuIndicator = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Indicator\r\n ref={ref}\r\n className={cn(\r\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\r\n </NavigationMenuPrimitive.Indicator>\r\n));\r\nNavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;\r\n\r\nexport {\r\n navigationMenuTriggerStyle,\r\n NavigationMenu,\r\n NavigationMenuList,\r\n NavigationMenuItem,\r\n NavigationMenuContent,\r\n NavigationMenuTrigger,\r\n NavigationMenuLink,\r\n NavigationMenuIndicator,\r\n NavigationMenuViewport,\r\n};\r\n","import * as React from \"react\";\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Select = SelectPrimitive.Root;\r\n\r\nconst SelectGroup = SelectPrimitive.Group;\r\n\r\nconst SelectValue = SelectPrimitive.Value;\r\n\r\nconst SelectTrigger = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n));\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\r\n\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\r\n {...props}\r\n >\r\n <ChevronUp className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n));\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\r\n\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\r\n {...props}\r\n >\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n));\r\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\r\n\r\nconst SelectContent = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = \"popper\", ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n position === \"popper\" &&\r\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\r\n className,\r\n )}\r\n position={position}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport\r\n className={cn(\r\n \"p-1\",\r\n position === \"popper\" &&\r\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\r\n )}\r\n >\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n));\r\nSelectContent.displayName = SelectPrimitive.Content.displayName;\r\n\r\nconst SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label ref={ref} className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)} {...props} />\r\n));\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\r\n\r\nconst SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n));\r\nSelectItem.displayName = SelectPrimitive.Item.displayName;\r\n\r\nconst SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\r\n));\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectLabel,\r\n SelectItem,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n};\r\n","import * as React from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div className=\"relative w-full overflow-auto\">\r\n <table ref={ref} className={cn(\"w-full caption-bottom text-sm\", className)} {...props} />\r\n </div>\r\n ),\r\n);\r\nTable.displayName = \"Table\";\r\n\r\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />,\r\n);\r\nTableHeader.displayName = \"TableHeader\";\r\n\r\nconst TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\r\n ),\r\n);\r\nTableBody.displayName = \"TableBody\";\r\n\r\nconst TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tfoot ref={ref} className={cn(\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\", className)} {...props} />\r\n ),\r\n);\r\nTableFooter.displayName = \"TableFooter\";\r\n\r\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\"border-b transition-colors data-[state=selected]:bg-muted hover:bg-muted/50\", className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\nTableRow.displayName = \"TableRow\";\r\n\r\nconst TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <th\r\n ref={ref}\r\n className={cn(\r\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n ),\r\n);\r\nTableHead.displayName = \"TableHead\";\r\n\r\nconst TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <td ref={ref} className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)} {...props} />\r\n ),\r\n);\r\nTableCell.displayName = \"TableCell\";\r\n\r\nconst TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <caption ref={ref} className={cn(\"mt-4 text-sm text-muted-foreground\", className)} {...props} />\r\n ),\r\n);\r\nTableCaption.displayName = \"TableCaption\";\r\n\r\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\r\n","import * as React from \"react\";\r\nimport * as RechartsPrimitive from \"recharts\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\n// Format: { THEME_NAME: CSS_SELECTOR }\r\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\r\n\r\nexport type ChartConfig = {\r\n [k in string]: {\r\n label?: React.ReactNode;\r\n icon?: React.ComponentType;\r\n } & ({ color?: string; theme?: never } | { color?: never; theme: Record<keyof typeof THEMES, string> });\r\n};\r\n\r\ntype ChartContextProps = {\r\n config: ChartConfig;\r\n};\r\n\r\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\r\n\r\nfunction useChart() {\r\n const context = React.useContext(ChartContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useChart must be used within a <ChartContainer />\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst ChartContainer = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n config: ChartConfig;\r\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>[\"children\"];\r\n }\r\n>(({ id, className, children, config, ...props }, ref) => {\r\n const uniqueId = React.useId();\r\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\r\n\r\n return (\r\n <ChartContext.Provider value={{ config }}>\r\n <div\r\n data-chart={chartId}\r\n ref={ref}\r\n className={cn(\r\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <ChartStyle id={chartId} config={config} />\r\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\r\n </div>\r\n </ChartContext.Provider>\r\n );\r\n});\r\nChartContainer.displayName = \"Chart\";\r\n\r\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\r\n const colorConfig = Object.entries(config).filter(([_, config]) => config.theme || config.color);\r\n\r\n if (!colorConfig.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <style\r\n dangerouslySetInnerHTML={{\r\n __html: Object.entries(THEMES)\r\n .map(\r\n ([theme, prefix]) => `\r\n${prefix} [data-chart=${id}] {\r\n${colorConfig\r\n .map(([key, itemConfig]) => {\r\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || itemConfig.color;\r\n return color ? ` --color-${key}: ${color};` : null;\r\n })\r\n .join(\"\\n\")}\r\n}\r\n`,\r\n )\r\n .join(\"\\n\"),\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst ChartTooltip = RechartsPrimitive.Tooltip;\r\n\r\nconst ChartTooltipContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\r\n React.ComponentProps<\"div\"> & {\r\n hideLabel?: boolean;\r\n hideIndicator?: boolean;\r\n indicator?: \"line\" | \"dot\" | \"dashed\";\r\n nameKey?: string;\r\n labelKey?: string;\r\n }\r\n>(\r\n (\r\n {\r\n active,\r\n payload,\r\n className,\r\n indicator = \"dot\",\r\n hideLabel = false,\r\n hideIndicator = false,\r\n label,\r\n labelFormatter,\r\n labelClassName,\r\n formatter,\r\n color,\r\n nameKey,\r\n labelKey,\r\n },\r\n ref,\r\n ) => {\r\n const { config } = useChart();\r\n\r\n const tooltipLabel = React.useMemo(() => {\r\n if (hideLabel || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const [item] = payload;\r\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const value =\r\n !labelKey && typeof label === \"string\"\r\n ? config[label as keyof typeof config]?.label || label\r\n : itemConfig?.label;\r\n\r\n if (labelFormatter) {\r\n return <div className={cn(\"font-medium\", labelClassName)}>{labelFormatter(value, payload)}</div>;\r\n }\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\r\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\r\n\r\n if (!active || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\r\n className,\r\n )}\r\n >\r\n {!nestLabel ? tooltipLabel : null}\r\n <div className=\"grid gap-1.5\">\r\n {payload.map((item, index) => {\r\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const indicatorColor = color || item.payload.fill || item.color;\r\n\r\n return (\r\n <div\r\n key={item.dataKey}\r\n className={cn(\r\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\r\n indicator === \"dot\" && \"items-center\",\r\n )}\r\n >\r\n {formatter && item?.value !== undefined && item.name ? (\r\n formatter(item.value, item.name, item, index, item.payload)\r\n ) : (\r\n <>\r\n {itemConfig?.icon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n !hideIndicator && (\r\n <div\r\n className={cn(\"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\", {\r\n \"h-2.5 w-2.5\": indicator === \"dot\",\r\n \"w-1\": indicator === \"line\",\r\n \"w-0 border-[1.5px] border-dashed bg-transparent\": indicator === \"dashed\",\r\n \"my-0.5\": nestLabel && indicator === \"dashed\",\r\n })}\r\n style={\r\n {\r\n \"--color-bg\": indicatorColor,\r\n \"--color-border\": indicatorColor,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )\r\n )}\r\n <div\r\n className={cn(\r\n \"flex flex-1 justify-between leading-none\",\r\n nestLabel ? \"items-end\" : \"items-center\",\r\n )}\r\n >\r\n <div className=\"grid gap-1.5\">\r\n {nestLabel ? tooltipLabel : null}\r\n <span className=\"text-muted-foreground\">{itemConfig?.label || item.name}</span>\r\n </div>\r\n {item.value && (\r\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\r\n {item.value.toLocaleString()}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n },\r\n);\r\nChartTooltipContent.displayName = \"ChartTooltip\";\r\n\r\nconst ChartLegend = RechartsPrimitive.Legend;\r\n\r\nconst ChartLegendContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> &\r\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\r\n hideIcon?: boolean;\r\n nameKey?: string;\r\n }\r\n>(({ className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey }, ref) => {\r\n const { config } = useChart();\r\n\r\n if (!payload?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center justify-center gap-4\", verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\", className)}\r\n >\r\n {payload.map((item) => {\r\n const key = `${nameKey || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n\r\n return (\r\n <div\r\n key={item.value}\r\n className={cn(\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\")}\r\n >\r\n {itemConfig?.icon && !hideIcon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n <div\r\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\r\n style={{\r\n backgroundColor: item.color,\r\n }}\r\n />\r\n )}\r\n {itemConfig?.label}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n});\r\nChartLegendContent.displayName = \"ChartLegend\";\r\n\r\n// Helper to extract item config from a payload.\r\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\r\n if (typeof payload !== \"object\" || payload === null) {\r\n return undefined;\r\n }\r\n\r\n const payloadPayload =\r\n \"payload\" in payload && typeof payload.payload === \"object\" && payload.payload !== null\r\n ? payload.payload\r\n : undefined;\r\n\r\n let configLabelKey: string = key;\r\n\r\n if (key in payload && typeof payload[key as keyof typeof payload] === \"string\") {\r\n configLabelKey = payload[key as keyof typeof payload] as string;\r\n } else if (\r\n payloadPayload &&\r\n key in payloadPayload &&\r\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\r\n ) {\r\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\r\n }\r\n\r\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config];\r\n}\r\n\r\nexport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, ChartStyle };\r\n","import * as React from \"react\";\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\r\nimport { DayPicker } from \"react-day-picker\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { buttonVariants } from \"./button3d\";\r\n\r\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\r\n\r\nfunction Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\r\n return (\r\n <DayPicker\r\n showOutsideDays={showOutsideDays}\r\n className={cn(\"p-3\", className)}\r\n classNames={{\r\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\r\n month: \"space-y-4\",\r\n caption: \"flex justify-center pt-1 relative items-center\",\r\n caption_label: \"text-sm font-medium\",\r\n nav: \"space-x-1 flex items-center\",\r\n nav_button: cn(\r\n buttonVariants({ variant: \"outline\" }),\r\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\r\n ),\r\n nav_button_previous: \"absolute left-1\",\r\n nav_button_next: \"absolute right-1\",\r\n table: \"w-full border-collapse space-y-1\",\r\n head_row: \"flex\",\r\n head_cell: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\r\n row: \"flex w-full mt-2\",\r\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\r\n day: cn(buttonVariants({ variant: \"ghost\" }), \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"),\r\n day_range_end: \"day-range-end\",\r\n day_selected:\r\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\r\n day_today: \"bg-accent text-accent-foreground\",\r\n day_outside:\r\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\r\n day_disabled: \"text-muted-foreground opacity-50\",\r\n day_range_middle: \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\r\n day_hidden: \"invisible\",\r\n ...classNames,\r\n }}\r\n components={{\r\n IconLeft: ({ ..._props }) => <ChevronLeft className=\"h-4 w-4\" />,\r\n IconRight: ({ ..._props }) => <ChevronRight className=\"h-4 w-4\" />,\r\n }}\r\n {...props}\r\n />\r\n );\r\n}\r\nCalendar.displayName = \"Calendar\";\r\n\r\nexport { Calendar };\r\n","import * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { VariantProps, cva } from \"class-variance-authority\";\r\nimport { PanelLeft } from \"lucide-react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Button3D } from \"./button3d\";\r\nimport { Input } from \"./input\";\r\nimport { Separator } from \"./separator\";\r\nimport { Sheet, SheetContent } from \"./sheet\";\r\n\r\nconst MOBILE_BREAKPOINT = 768;\r\n\r\nfunction useIsMobile(): boolean {\r\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);\r\n\r\n React.useEffect(() => {\r\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\r\n const onChange = () => {\r\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\r\n };\r\n mql.addEventListener(\"change\", onChange);\r\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\r\n return () => mql.removeEventListener(\"change\", onChange);\r\n }, []);\r\n\r\n return !!isMobile;\r\n}\r\nimport { Skeleton } from \"./skeleton\";\r\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\";\r\n\r\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\";\r\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\n\r\ntype SidebarContext = {\r\n state: \"expanded\" | \"collapsed\";\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n openMobile: boolean;\r\n setOpenMobile: (open: boolean) => void;\r\n isMobile: boolean;\r\n toggleSidebar: () => void;\r\n};\r\n\r\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\r\n\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst SidebarProvider = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n }\r\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\r\n const isMobile = useIsMobile();\r\n const [openMobile, setOpenMobile] = React.useState(false);\r\n\r\n // This is the internal state of the sidebar.\r\n // We use openProp and setOpenProp for control from outside the component.\r\n const [_open, _setOpen] = React.useState(defaultOpen);\r\n const open = openProp ?? _open;\r\n const setOpen = React.useCallback(\r\n (value: boolean | ((value: boolean) => boolean)) => {\r\n const openState = typeof value === \"function\" ? value(open) : value;\r\n if (setOpenProp) {\r\n setOpenProp(openState);\r\n } else {\r\n _setOpen(openState);\r\n }\r\n\r\n // This sets the cookie to keep the sidebar state.\r\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\r\n },\r\n [setOpenProp, open],\r\n );\r\n\r\n // Helper to toggle the sidebar.\r\n const toggleSidebar = React.useCallback(() => {\r\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\r\n }, [isMobile, setOpen, setOpenMobile]);\r\n\r\n // Adds a keyboard shortcut to toggle the sidebar.\r\n React.useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\r\n event.preventDefault();\r\n toggleSidebar();\r\n }\r\n };\r\n\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [toggleSidebar]);\r\n\r\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n // This makes it easier to style the sidebar with Tailwind classes.\r\n const state = open ? \"expanded\" : \"collapsed\";\r\n\r\n const contextValue = React.useMemo<SidebarContext>(\r\n () => ({\r\n state,\r\n open,\r\n setOpen,\r\n isMobile,\r\n openMobile,\r\n setOpenMobile,\r\n toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH,\r\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\", className)}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n});\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\n\r\nconst Sidebar = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n }\r\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, ...props }, ref) => {\r\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n className={cn(\"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\", className)}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n if (isMobile) {\r\n return (\r\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\r\n <SheetContent\r\n data-sidebar=\"sidebar\"\r\n data-mobile=\"true\"\r\n className=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\r\n } as React.CSSProperties\r\n }\r\n side={side}\r\n >\r\n <div className=\"flex h-full w-full flex-col\">{children}</div>\r\n </SheetContent>\r\n </Sheet>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"group peer hidden text-sidebar-foreground md:block\"\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}\r\n >\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n className={cn(\r\n \"relative h-svh w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\",\r\n \"group-data-[collapsible=offcanvas]:w-0\",\r\n \"group-data-[side=right]:rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\r\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\",\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex\",\r\n side === \"left\"\r\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\r\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\r\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <div\r\n data-sidebar=\"sidebar\"\r\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n});\r\nSidebar.displayName = \"Sidebar\";\r\n\r\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button3D>, React.ComponentProps<typeof Button3D>>(\r\n ({ className, onClick, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n\r\n return (\r\n <Button3D\r\n ref={ref}\r\n data-sidebar=\"trigger\"\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className={cn(\"h-7 w-7\", className)}\r\n onClick={(event) => {\r\n onClick?.(event);\r\n toggleSidebar();\r\n }}\r\n {...props}\r\n >\r\n <PanelLeft />\r\n <span className=\"sr-only\">Toggle Sidebar</span>\r\n </Button3D>\r\n );\r\n },\r\n);\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\n\r\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(\r\n ({ className, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n data-sidebar=\"rail\"\r\n aria-label=\"Toggle Sidebar\"\r\n tabIndex={-1}\r\n onClick={toggleSidebar}\r\n title=\"Toggle Sidebar\"\r\n className={cn(\r\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 hover:after:bg-sidebar-border sm:flex\",\r\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\r\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\r\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\r\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\r\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarRail.displayName = \"SidebarRail\";\r\n\r\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\r\n return (\r\n <main\r\n ref={ref}\r\n className={cn(\r\n \"relative flex min-h-svh flex-1 flex-col bg-background\",\r\n \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInset.displayName = \"SidebarInset\";\r\n\r\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof Input>, React.ComponentProps<typeof Input>>(\r\n ({ className, ...props }, ref) => {\r\n return (\r\n <Input\r\n ref={ref}\r\n data-sidebar=\"input\"\r\n className={cn(\r\n \"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarInput.displayName = \"SidebarInput\";\r\n\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"header\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\n\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"footer\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\n\r\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\r\n ({ className, ...props }, ref) => {\r\n return (\r\n <Separator\r\n ref={ref}\r\n data-sidebar=\"separator\"\r\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarSeparator.displayName = \"SidebarSeparator\";\r\n\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"content\"\r\n className={cn(\r\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarContent.displayName = \"SidebarContent\";\r\n\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"group\"\r\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\n\r\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-label\"\r\n className={cn(\r\n \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\n\r\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-action\"\r\n className={cn(\r\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\r\n\r\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} data-sidebar=\"group-content\" className={cn(\"w-full text-sm\", className)} {...props} />\r\n ),\r\n);\r\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\r\n\r\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul ref={ref} data-sidebar=\"menu\" className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)} {...props} />\r\n));\r\nSidebarMenu.displayName = \"SidebarMenu\";\r\n\r\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\r\n <li ref={ref} data-sidebar=\"menu-item\" className={cn(\"group/menu-item relative\", className)} {...props} />\r\n));\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\n\r\nconst sidebarMenuButtonVariants = cva(\r\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\r\n outline:\r\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\r\n },\r\n size: {\r\n default: \"h-8 text-sm\",\r\n sm: \"h-7 text-xs\",\r\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst SidebarMenuButton = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n isActive?: boolean;\r\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n } & VariantProps<typeof sidebarMenuButtonVariants>\r\n>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n const { isMobile, state } = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\r\n {...props}\r\n />\r\n );\r\n\r\n if (!tooltip) {\r\n return button;\r\n }\r\n\r\n if (typeof tooltip === \"string\") {\r\n tooltip = {\r\n children: tooltip,\r\n };\r\n }\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\r\n </Tooltip>\r\n );\r\n});\r\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\r\n\r\nconst SidebarMenuAction = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n }\r\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-action\"\r\n className={cn(\r\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n showOnHover &&\r\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\r\n\r\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-badge\"\r\n className={cn(\r\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\r\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n ),\r\n);\r\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\r\n\r\nconst SidebarMenuSkeleton = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n }\r\n>(({ className, showIcon = false, ...props }, ref) => {\r\n // Random width between 50 to 90%.\r\n const width = React.useMemo(() => {\r\n return `${Math.floor(Math.random() * 40) + 50}%`;\r\n }, []);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-skeleton\"\r\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\r\n {...props}\r\n >\r\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\r\n <Skeleton\r\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\r\n data-sidebar=\"menu-skeleton-text\"\r\n style={\r\n {\r\n \"--skeleton-width\": width,\r\n } as React.CSSProperties\r\n }\r\n />\r\n </div>\r\n );\r\n});\r\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\r\n\r\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\r\n ({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar=\"menu-sub\"\r\n className={cn(\r\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n ),\r\n);\r\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\r\n\r\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ ...props }, ref) => (\r\n <li ref={ref} {...props} />\r\n));\r\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\r\n\r\nconst SidebarMenuSubButton = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n }\r\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-sub-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\r\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\r\n size === \"sm\" && \"text-xs\",\r\n size === \"md\" && \"text-sm\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\r\n\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInput,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n};\r\n","import * as React from \"react\";\r\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\";\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Button3D } from \"./button3d\";\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1];\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\r\ntype CarouselOptions = UseCarouselParameters[0];\r\ntype CarouselPlugin = UseCarouselParameters[1];\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions;\r\n plugins?: CarouselPlugin;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n setApi?: (api: CarouselApi) => void;\r\n};\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\r\n api: ReturnType<typeof useEmblaCarousel>[1];\r\n scrollPrev: () => void;\r\n scrollNext: () => void;\r\n canScrollPrev: boolean;\r\n canScrollNext: boolean;\r\n} & CarouselProps;\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst Carousel = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & CarouselProps>(\r\n ({ orientation = \"horizontal\", opts, setApi, plugins, className, children, ...props }, ref) => {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins,\r\n );\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\r\n const [canScrollNext, setCanScrollNext] = React.useState(false);\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) {\r\n return;\r\n }\r\n\r\n setCanScrollPrev(api.canScrollPrev());\r\n setCanScrollNext(api.canScrollNext());\r\n }, []);\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev();\r\n }, [api]);\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext();\r\n }, [api]);\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault();\r\n scrollPrev();\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault();\r\n scrollNext();\r\n }\r\n },\r\n [scrollPrev, scrollNext],\r\n );\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) {\r\n return;\r\n }\r\n\r\n setApi(api);\r\n }, [api, setApi]);\r\n\r\n React.useEffect(() => {\r\n if (!api) {\r\n return;\r\n }\r\n\r\n onSelect(api);\r\n api.on(\"reInit\", onSelect);\r\n api.on(\"select\", onSelect);\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect);\r\n };\r\n }, [api, onSelect]);\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api: api,\r\n opts,\r\n orientation: orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n onKeyDownCapture={handleKeyDown}\r\n className={cn(\"relative\", className)}\r\n role=\"region\"\r\n aria-roledescription=\"carousel\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n );\r\n },\r\n);\r\nCarousel.displayName = \"Carousel\";\r\n\r\nconst CarouselContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => {\r\n const { carouselRef, orientation } = useCarousel();\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\">\r\n <div\r\n ref={ref}\r\n className={cn(\"flex\", orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\", className)}\r\n {...props}\r\n />\r\n </div>\r\n );\r\n },\r\n);\r\nCarouselContent.displayName = \"CarouselContent\";\r\n\r\nconst CarouselItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => {\r\n const { orientation } = useCarousel();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n aria-roledescription=\"slide\"\r\n className={cn(\"min-w-0 shrink-0 grow-0 basis-full\", orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\", className)}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nCarouselItem.displayName = \"CarouselItem\";\r\n\r\nconst CarouselPrevious = React.forwardRef<HTMLButtonElement, React.ComponentProps<typeof Button3D>>(\r\n ({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\r\n\r\n return (\r\n <Button3D\r\n ref={ref}\r\n variant={variant as any}\r\n size={size as any}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-left-12 top-1/2 -translate-y-1/2\"\r\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n {...props}\r\n >\r\n <ArrowLeft className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </Button3D>\r\n );\r\n },\r\n);\r\nCarouselPrevious.displayName = \"CarouselPrevious\";\r\n\r\nconst CarouselNext = React.forwardRef<HTMLButtonElement, React.ComponentProps<typeof Button3D>>(\r\n ({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel();\r\n\r\n return (\r\n <Button3D\r\n ref={ref}\r\n variant={variant as any}\r\n size={size as any}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-right-12 top-1/2 -translate-y-1/2\"\r\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n {...props}\r\n >\r\n <ArrowRight className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Next slide</span>\r\n </Button3D>\r\n );\r\n },\r\n);\r\nCarouselNext.displayName = \"CarouselNext\";\r\n\r\nexport { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext };\r\n","import * as React from \"react\";\r\nimport { OTPInput, OTPInputContext } from \"input-otp\";\r\nimport { Dot } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst InputOTP = React.forwardRef<React.ElementRef<typeof OTPInput>, React.ComponentPropsWithoutRef<typeof OTPInput>>(\r\n ({ className, containerClassName, ...props }, ref) => (\r\n <OTPInput\r\n ref={ref}\r\n containerClassName={cn(\"flex items-center gap-2 has-[:disabled]:opacity-50\", containerClassName)}\r\n className={cn(\"disabled:cursor-not-allowed\", className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\nInputOTP.displayName = \"InputOTP\";\r\n\r\nconst InputOTPGroup = React.forwardRef<React.ElementRef<\"div\">, React.ComponentPropsWithoutRef<\"div\">>(\r\n ({ className, ...props }, ref) => <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />,\r\n);\r\nInputOTPGroup.displayName = \"InputOTPGroup\";\r\n\r\nconst InputOTPSlot = React.forwardRef<\r\n React.ElementRef<\"div\">,\r\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\r\n>(({ index, className, ...props }, ref) => {\r\n const inputOTPContext = React.useContext(OTPInputContext) as any;\r\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots?.[index] || {};\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\",\r\n isActive && \"z-10 ring-2 ring-ring ring-offset-background\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {char}\r\n {hasFakeCaret && (\r\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\r\n <div className=\"animate-caret-blink h-4 w-px bg-foreground duration-1000\" />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n});\r\nInputOTPSlot.displayName = \"InputOTPSlot\";\r\n\r\nconst InputOTPSeparator = React.forwardRef<React.ElementRef<\"div\">, React.ComponentPropsWithoutRef<\"div\">>(\r\n ({ ...props }, ref) => (\r\n <div ref={ref} role=\"separator\" {...props}>\r\n <Dot />\r\n </div>\r\n ),\r\n);\r\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\r\n\r\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\r\n","import React, { useMemo, useRef, useState } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport { Text, Instances, Instance } from \"@react-three/drei\";\r\nimport { Color, Vector3 } from \"three\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface BarData {\r\n label: string;\r\n value: number;\r\n color?: string;\r\n}\r\n\r\nexport interface BarChart3DProps {\r\n data: BarData[];\r\n orientation?: \"vertical\" | \"horizontal\";\r\n barSize?: number;\r\n gap?: number;\r\n animated?: boolean;\r\n className?: string; // For container if wrapped, but R3F components don't use className\r\n}\r\n\r\nexport function BarChart3D({\r\n data,\r\n orientation = \"vertical\",\r\n barSize = 0.5,\r\n gap = 0.2,\r\n animated = true,\r\n}: BarChart3DProps) {\r\n const maxValue = useMemo(() => Math.max(...data.map((d) => d.value)), [data]);\r\n\r\n return (\r\n <group>\r\n {/* Base Plane Grid */}\r\n <gridHelper args={[data.length * (barSize + gap) + 2, 10]} position={[0, 0, 0]} />\r\n\r\n <Instances range={data.length}>\r\n <boxGeometry args={[barSize, 1, barSize]} />\r\n <meshStandardMaterial roughness={0.3} metalness={0.6} />\r\n\r\n {data.map((item, index) => {\r\n const height = item.value / maxValue * 5; // Normalize to max height 5\r\n const x = (index - data.length / 2) * (barSize + gap);\r\n\r\n return (\r\n <group key={index} position={[x, 0, 0]}>\r\n <BarInstance\r\n height={height}\r\n color={item.color || \"#8884d8\"}\r\n animated={animated}\r\n />\r\n {/* Label */}\r\n <Text\r\n position={[0, -0.5, 0]}\r\n fontSize={0.2}\r\n color=\"black\"\r\n anchorX=\"center\"\r\n anchorY=\"top\"\r\n >\r\n {item.label}\r\n </Text>\r\n </group>\r\n );\r\n })}\r\n </Instances>\r\n </group>\r\n );\r\n}\r\n\r\nfunction BarInstance({ height, color, animated }: { height: number; color: string; animated: boolean }) {\r\n const ref = useRef<any>(null);\r\n const [hovered, setHover] = useState(false);\r\n\r\n // Pivot adjustment: Scale is applied from center, so we shift position Y\r\n // Ideally we use a geometry shifted up, but with Instance we can just position it at height/2\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current) {\r\n // Animate growth\r\n const targetHeight = height;\r\n const targetY = height / 2;\r\n\r\n if (animated) {\r\n ref.current.scale.y += (targetHeight - ref.current.scale.y) * delta * 5;\r\n ref.current.position.y += (targetY - ref.current.position.y) * delta * 5;\r\n } else {\r\n ref.current.scale.y = targetHeight;\r\n ref.current.position.y = targetY;\r\n }\r\n\r\n // Hover effect\r\n if (hovered) {\r\n // ref.current.color.lerp(new Color(\"white\"), 0.1); // Instance coloring requires manipulating the color attribute\r\n }\r\n }\r\n });\r\n\r\n return (\r\n <Instance\r\n ref={ref}\r\n color={hovered ? \"orange\" : color}\r\n onPointerOver={() => setHover(true)}\r\n onPointerOut={() => setHover(false)}\r\n />\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { Line } from \"@react-three/drei\";\r\nimport { Vector3, CatmullRomCurve3 } from \"three\";\r\n\r\nexport interface LineChartData {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface LineChart3DProps {\r\n data: LineChartData[];\r\n smooth?: boolean; // Use spline interpolation\r\n color?: string;\r\n lineWidth?: number;\r\n showPoints?: boolean;\r\n}\r\n\r\nexport function LineChart3D({\r\n data,\r\n smooth = true,\r\n color = \"#22d3ee\",\r\n lineWidth = 3,\r\n showPoints = true,\r\n}: LineChart3DProps) {\r\n\r\n const points = useMemo(() => {\r\n // Normalize data? Assuming raw coords for now or normalized 0-10 range\r\n // If x is index, just map to space\r\n if (data.length === 0) return [];\r\n\r\n // Normalize logic could go here if needed. \r\n // For now assuming data fits in 10x5 space.\r\n const maxX = Math.max(...data.map(d => d.x));\r\n const maxY = Math.max(...data.map(d => d.y));\r\n\r\n return data.map(d => new Vector3(\r\n (d.x / (maxX || 1)) * 10 - 5, // Center X\r\n (d.y / (maxY || 1)) * 5, // Y up\r\n 0\r\n ));\r\n }, [data]);\r\n\r\n const curve = useMemo(() => {\r\n if (points.length < 2 || !smooth) return null;\r\n return new CatmullRomCurve3(points);\r\n }, [points, smooth]);\r\n\r\n return (\r\n <group>\r\n {/* Line */}\r\n {smooth && curve ? (\r\n // Render curve\r\n <mesh>\r\n <tubeGeometry args={[curve, 64, 0.05, 8, false]} />\r\n <meshStandardMaterial color={color} emissive={color} emissiveIntensity={0.5} />\r\n </mesh>\r\n ) : (\r\n <Line\r\n points={points}\r\n color={color}\r\n lineWidth={lineWidth}\r\n segments\r\n />\r\n )}\r\n\r\n {/* Points */}\r\n {showPoints && points.map((p, i) => (\r\n <mesh key={i} position={p}>\r\n <sphereGeometry args={[0.1, 16, 16]} />\r\n <meshStandardMaterial color=\"white\" />\r\n </mesh>\r\n ))}\r\n\r\n {/* Optional: Area Fill (complex to do generic, skipping for MVP) */}\r\n\r\n {/* Grid */}\r\n <gridHelper args={[12, 12]} rotation={[Math.PI / 2, 0, 0]} position={[0, 2.5, -0.1]} />\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo, useState } from \"react\";\r\nimport { Shape } from \"three\";\r\n// React Spring removed (not in dependencies)\r\nimport { useFrame } from \"@react-three/fiber\";\r\n// I should use useFrame for manual animation or pure CSS/HTML for overlays?\r\n// But 3D pie explosion needs 3D transform.\r\n// I'll use manual lerp in useFrame for \"explode\" effect.\r\n\r\n\r\nimport { Text } from \"@react-three/drei\";\r\n\r\nexport interface PieData {\r\n label: string;\r\n value: number;\r\n color?: string;\r\n}\r\n\r\nexport interface PieChart3DProps {\r\n data: PieData[];\r\n radius?: number;\r\n depth?: number;\r\n explode?: boolean;\r\n donut?: boolean;\r\n}\r\n\r\nexport function PieChart3D({\r\n data,\r\n radius = 5,\r\n depth = 1,\r\n explode = true,\r\n donut = false,\r\n}: PieChart3DProps) {\r\n const total = useMemo(() => data.reduce((acc, cur) => acc + cur.value, 0), [data]);\r\n\r\n let startAngle = 0;\r\n\r\n return (\r\n <group rotation={[-Math.PI / 2, 0, 0]}> {/* Rotate to face camera if top-down, or adjust scene */}\r\n {data.map((item, index) => {\r\n const percent = item.value / total;\r\n const angle = percent * Math.PI * 2;\r\n const endAngle = startAngle + angle;\r\n\r\n const props = {\r\n startAngle,\r\n endAngle,\r\n radius,\r\n color: item.color || `hsl(${(index / data.length) * 360}, 70%, 50%)`,\r\n depth,\r\n explode,\r\n innerRadius: donut ? radius * 0.5 : 0,\r\n };\r\n\r\n startAngle = endAngle;\r\n\r\n return <PieSegment key={index} {...props} label={item.label} />;\r\n })}\r\n </group>\r\n );\r\n}\r\n\r\nfunction PieSegment({ startAngle, endAngle, radius, color, depth, explode, innerRadius, label }: any) {\r\n const shape = useMemo(() => {\r\n const s = new Shape();\r\n if (innerRadius > 0) {\r\n // Donut shape - complex to do with simple MoveTo/Arc?\r\n // Easier: Arc outer, then Arc inner (hole).\r\n // Actually THREE.Shape supports holes.\r\n s.moveTo(Math.cos(startAngle) * radius, Math.sin(startAngle) * radius);\r\n s.absarc(0, 0, radius, startAngle, endAngle, false);\r\n // Hole\r\n const hole = new Shape();\r\n hole.absarc(0, 0, innerRadius, startAngle, endAngle, false);\r\n s.holes.push(hole);\r\n } else {\r\n s.moveTo(0, 0);\r\n s.arc(0, 0, radius, startAngle, endAngle, false);\r\n s.lineTo(0, 0);\r\n }\r\n return s;\r\n }, [startAngle, endAngle, radius, innerRadius]);\r\n\r\n const [hovered, setHover] = useState(false);\r\n const ref = React.useRef<any>(null);\r\n\r\n // Direction to explode\r\n const midAngle = (startAngle + endAngle) / 2;\r\n const explodeDir = [Math.cos(midAngle), Math.sin(midAngle), 0];\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current && explode) {\r\n const targetDist = hovered ? 0.5 : 0;\r\n ref.current.position.x += (explodeDir[0] * targetDist - ref.current.position.x) * delta * 5;\r\n ref.current.position.y += (explodeDir[1] * targetDist - ref.current.position.y) * delta * 5;\r\n }\r\n });\r\n\r\n return (\r\n <group ref={ref}>\r\n <mesh\r\n onPointerOver={() => setHover(true)}\r\n onPointerOut={() => setHover(false)}\r\n >\r\n <extrudeGeometry args={[shape, { depth: depth, bevelEnabled: false }]} />\r\n <meshStandardMaterial color={hovered ? \"white\" : color} />\r\n </mesh>\r\n {/* Label at center of segment */}\r\n {hovered && (\r\n <Text\r\n position={[explodeDir[0] * radius * 0.8, explodeDir[1] * radius * 0.8, depth + 0.1]}\r\n fontSize={0.5}\r\n color=\"black\"\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo, useRef, useState } from \"react\";\r\nimport { Instances, Instance } from \"@react-three/drei\";\r\nimport { Color, Vector3 } from \"three\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\n\r\nexport interface ScatterPoint {\r\n x: number;\r\n y: number;\r\n z: number;\r\n size?: number;\r\n color?: string;\r\n label?: string; // Optional label\r\n}\r\n\r\nexport interface ScatterPlot3DProps {\r\n data: ScatterPoint[];\r\n pointSize?: number;\r\n colorScale?: string[]; // e.g. [\"#22d3ee\", \"#a78bfa\"]\r\n}\r\n\r\nexport function ScatterPlot3D({\r\n data,\r\n pointSize = 0.1,\r\n colorScale = [\"#22d3ee\", \"#a78bfa\"],\r\n}: ScatterPlot3DProps) {\r\n\r\n return (\r\n <group>\r\n <Instances range={data.length}>\r\n <sphereGeometry args={[1, 16, 16]} />\r\n <meshStandardMaterial />\r\n\r\n {data.map((point, i) => (\r\n <ScatterPointInstance\r\n key={i}\r\n position={[point.x, point.y, point.z]}\r\n scale={point.size || pointSize}\r\n color={point.color || colorScale[i % colorScale.length]}\r\n />\r\n ))}\r\n </Instances>\r\n\r\n {/* Axes */}\r\n <axesHelper args={[10]} />\r\n <gridHelper args={[20, 20]} position={[0, -5, 0]} />\r\n </group>\r\n );\r\n}\r\n\r\nfunction ScatterPointInstance({ position, scale, color }: { position: [number, number, number], scale: number, color: string }) {\r\n const ref = useRef<any>(null);\r\n const [hovered, setHover] = useState(false);\r\n\r\n useFrame((state) => {\r\n if (ref.current) {\r\n const s = hovered ? scale * 1.5 : scale;\r\n // Correct lerp using Vector3\r\n const target = new Vector3(s, s, s);\r\n ref.current.scale.lerp(target, 0.1);\r\n }\r\n });\r\n\r\n return (\r\n <Instance\r\n ref={ref}\r\n position={position}\r\n scale={scale}\r\n color={hovered ? \"white\" : color}\r\n onPointerOver={() => setHover(true)}\r\n onPointerOut={() => setHover(false)}\r\n />\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { Line, Text } from \"@react-three/drei\";\r\nimport { Vector3 } from \"three\";\r\n\r\nexport interface GraphNode {\r\n id: string;\r\n label?: string;\r\n x?: number;\r\n y?: number;\r\n z?: number;\r\n color?: string;\r\n}\r\n\r\nexport interface GraphEdge {\r\n source: string;\r\n target: string;\r\n}\r\n\r\nexport interface Graph3DProps {\r\n nodes: GraphNode[];\r\n edges: GraphEdge[];\r\n physics?: boolean; // Stub property for API compatibility\r\n}\r\n\r\nexport function Graph3D({ nodes, edges, physics = false }: Graph3DProps) {\r\n // Naive layout if no coords provided: Random or Grid\r\n const positionedNodes = useMemo(() => {\r\n return nodes.map((node, i) => ({\r\n ...node,\r\n vec: new Vector3(\r\n node.x ?? (Math.random() - 0.5) * 10,\r\n node.y ?? (Math.random() - 0.5) * 10,\r\n node.z ?? (Math.random() - 0.5) * 10\r\n )\r\n }));\r\n }, [nodes]);\r\n\r\n // Map for quick lookup\r\n const nodeMap = useMemo(() => {\r\n const map = new Map<string, Vector3>();\r\n positionedNodes.forEach(n => map.set(n.id, n.vec));\r\n return map;\r\n }, [positionedNodes]);\r\n\r\n return (\r\n <group>\r\n {/* Edges */}\r\n {edges.map((edge, i) => {\r\n const start = nodeMap.get(edge.source);\r\n const end = nodeMap.get(edge.target);\r\n if (!start || !end) return null;\r\n\r\n return (\r\n <Line\r\n key={i}\r\n points={[start, end]}\r\n color=\"#444\"\r\n lineWidth={1}\r\n transparent\r\n opacity={0.5}\r\n />\r\n );\r\n })}\r\n\r\n {/* Nodes */}\r\n {positionedNodes.map((node, i) => (\r\n <group key={i} position={node.vec}>\r\n <mesh>\r\n <sphereGeometry args={[0.2, 16, 16]} />\r\n <meshStandardMaterial color={node.color || \"#22d3ee\"} />\r\n </mesh>\r\n {node.label && (\r\n <Text\r\n position={[0, 0.3, 0]}\r\n fontSize={0.2}\r\n color=\"white\"\r\n >\r\n {node.label}\r\n </Text>\r\n )}\r\n </group>\r\n ))}\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { useTexture } from \"@react-three/drei\";\r\nimport { Color, Vector3 } from \"three\";\r\n\r\nexport interface MapMarker {\r\n lat: number;\r\n lng: number;\r\n label?: string;\r\n color?: string;\r\n}\r\n\r\nexport interface Map3DProps {\r\n markers?: MapMarker[];\r\n radius?: number;\r\n textureSrc?: string; // URL for earth map\r\n}\r\n\r\nexport function Map3D({\r\n markers = [],\r\n radius = 5,\r\n textureSrc = \"https://raw.githubusercontent.com/mrdoob/three.js/master/examples/textures/planets/earth_atmos_2048.jpg\",\r\n}: Map3DProps) {\r\n // Texture\r\n // We use a generic default or passed one\r\n // Note: useTexture might suspend.\r\n // We'll wrap in Suspense at usage site or here?\r\n // R3F components usually suspend.\r\n\r\n const texture = useTexture(textureSrc);\r\n\r\n return (\r\n <group>\r\n <mesh>\r\n <sphereGeometry args={[radius, 64, 64]} />\r\n <meshStandardMaterial map={texture} metalness={0.1} roughness={0.7} />\r\n </mesh>\r\n\r\n {markers.map((marker, i) => {\r\n // Convert Lat/Lng to Vector3\r\n const phi = (90 - marker.lat) * (Math.PI / 180);\r\n const theta = (marker.lng + 180) * (Math.PI / 180);\r\n\r\n const x = -(radius * Math.sin(phi) * Math.cos(theta));\r\n const z = (radius * Math.sin(phi) * Math.sin(theta));\r\n const y = (radius * Math.cos(phi));\r\n\r\n return (\r\n <mesh key={i} position={[x, y, z]}>\r\n <sphereGeometry args={[0.1, 16, 16]} />\r\n <meshBasicMaterial color={marker.color || \"red\"} />\r\n </mesh>\r\n );\r\n })}\r\n </group>\r\n );\r\n}\r\n","import React, { useRef, useState, useMemo } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport { ImagePlane } from \"./imageplane\";\r\nimport { Group } from \"three\";\r\n\r\nexport interface GalleryImage {\r\n src: string;\r\n alt: string;\r\n}\r\n\r\nexport interface Gallery3DProps {\r\n images: GalleryImage[];\r\n layout?: \"carousel\" | \"grid\" | \"wall\";\r\n radius?: number; // For carousel\r\n gap?: number;\r\n}\r\n\r\nexport function Gallery3D({\r\n images,\r\n layout = \"carousel\",\r\n radius = 5,\r\n gap = 1.5,\r\n}: Gallery3DProps) {\r\n\r\n const ref = useRef<Group>(null);\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current && layout === \"carousel\") {\r\n // Slowly rotate whole carousel? Or allow user interaction?\r\n // Basic auto-rotate for wow factor\r\n ref.current.rotation.y += delta * 0.1;\r\n }\r\n });\r\n\r\n return (\r\n <group ref={ref}>\r\n {images.map((img, i) => {\r\n let position: [number, number, number] = [0, 0, 0];\r\n let rotation: [number, number, number] = [0, 0, 0];\r\n\r\n if (layout === \"carousel\") {\r\n const angle = (i / images.length) * Math.PI * 2;\r\n position = [\r\n Math.cos(angle) * radius,\r\n 0,\r\n Math.sin(angle) * radius\r\n ];\r\n rotation = [0, -angle + Math.PI / 2, 0]; // Face center? No, face outwards usually. -angle + PI/2 makes it tangent?\r\n // To face center (inwards): -angle - PI/2\r\n // To face outwards: -angle + PI/2\r\n // Let's face *inwards* for a surrounding view, or *outwards* for a pillar view.\r\n // Usually carousel assumes camera at center or outside?\r\n // Registry: \"Carousel... lightbox... smooth transitions\".\r\n // Assuming camera is outside looking at it spinning.\r\n rotation = [0, -angle, 0]; // Face outwards\r\n } else if (layout === \"grid\") {\r\n const cols = 3;\r\n const x = (i % cols) * (3 + gap) - ((cols * 3) / 2);\r\n const y = -Math.floor(i / cols) * (2 + gap);\r\n position = [x, y, 0];\r\n }\r\n\r\n return (\r\n <group key={i} position={position} rotation={rotation}>\r\n <ImagePlane src={img.src} width={3} opacity={0.9} />\r\n {/* Could add frame or title */}\r\n </group>\r\n );\r\n })}\r\n </group>\r\n );\r\n}\r\n","import React, { Suspense } from \"react\";\r\nimport { useTexture } from \"@react-three/drei\";\r\nimport { DoubleSide } from \"three\";\r\n\r\nexport interface ImagePlaneProps {\r\n src: string;\r\n width?: number;\r\n height?: number;\r\n opacity?: number;\r\n transparent?: boolean;\r\n parallax?: boolean; // Placeholder for parallax logic if needed later\r\n}\r\n\r\nexport function ImagePlane({\r\n src,\r\n width = 3,\r\n height, // if undefined, will infer\r\n opacity = 1,\r\n transparent = true,\r\n parallax = false,\r\n}: ImagePlaneProps) {\r\n return (\r\n <Suspense fallback={<mesh><planeGeometry args={[width, width]} /><meshBasicMaterial wireframe color=\"gray\" /></mesh>}>\r\n <ImageMesh\r\n src={src}\r\n width={width}\r\n height={height}\r\n opacity={opacity}\r\n transparent={transparent}\r\n parallax={parallax}\r\n />\r\n </Suspense>\r\n );\r\n}\r\n\r\nfunction ImageMesh({ src, width = 1, height, opacity, transparent }: Omit<ImagePlaneProps, 'src' | 'width'> & { width: number; src: string }) {\r\n const texture = useTexture(src);\r\n\r\n // Aspect ratio\r\n const aspect = texture.image ? texture.image.width / texture.image.height : 1;\r\n const h = height || width / aspect;\r\n\r\n return (\r\n <mesh>\r\n <planeGeometry args={[width, h]} />\r\n <meshBasicMaterial\r\n map={texture}\r\n transparent={transparent}\r\n opacity={opacity}\r\n side={DoubleSide}\r\n toneMapped={false}\r\n />\r\n </mesh>\r\n );\r\n}\r\n","import React, { Suspense, useRef } from \"react\";\r\nimport { useGLTF, Environment, OrbitControls } from \"@react-three/drei\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\n\r\nexport interface ModelViewerProps {\r\n src: string;\r\n autoRotate?: boolean;\r\n scale?: number;\r\n environment?: string; // HDRI preset\r\n position?: [number, number, number];\r\n}\r\n\r\nexport function ModelViewer({\r\n src,\r\n autoRotate = true,\r\n scale = 1,\r\n environment = \"studio\",\r\n position = [0, 0, 0],\r\n}: ModelViewerProps) {\r\n return (\r\n <group position={position}>\r\n <Suspense fallback={null}>\r\n <Model src={src} scale={scale} autoRotate={autoRotate} />\r\n <Environment preset={environment as any} />\r\n </Suspense>\r\n </group>\r\n );\r\n}\r\n\r\nfunction Model({ src, scale, autoRotate }: { src: string; scale: number; autoRotate: boolean }) {\r\n const { scene } = useGLTF(src);\r\n const ref = useRef<any>(null);\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current && autoRotate) {\r\n ref.current.rotation.y += delta * 0.5;\r\n }\r\n });\r\n\r\n return <primitive object={scene} scale={scale} ref={ref} />;\r\n}\r\n","import React, { Suspense } from \"react\";\r\nimport { useVideoTexture } from \"@react-three/drei\";\r\nimport * as THREE from \"three\";\r\n\r\nexport interface VideoPlaneProps {\r\n src: string;\r\n width?: number;\r\n height?: number;\r\n autoPlay?: boolean;\r\n loop?: boolean;\r\n muted?: boolean;\r\n opacity?: number;\r\n side?: \"front\" | \"back\" | \"double\";\r\n}\r\n\r\nexport function VideoPlane({\r\n src,\r\n width = 4,\r\n height,\r\n autoPlay = true,\r\n loop = true,\r\n muted = true,\r\n opacity = 1,\r\n side = \"double\",\r\n}: VideoPlaneProps) {\r\n return (\r\n <Suspense\r\n fallback={\r\n <mesh>\r\n <planeGeometry args={[width, width * 0.56]} />\r\n <meshBasicMaterial color=\"gray\" wireframe />\r\n </mesh>\r\n }\r\n >\r\n <VideoPlaneContent\r\n src={src}\r\n width={width}\r\n height={height}\r\n autoPlay={autoPlay}\r\n loop={loop}\r\n muted={muted}\r\n opacity={opacity}\r\n side={side}\r\n />\r\n </Suspense>\r\n );\r\n}\r\n\r\nfunction VideoPlaneContent({\r\n src,\r\n width = 4,\r\n height,\r\n autoPlay = true,\r\n loop = true,\r\n muted = true,\r\n opacity = 1,\r\n side = \"double\",\r\n}: VideoPlaneProps) {\r\n const texture = useVideoTexture(src, {\r\n unsuspend: \"canplay\",\r\n muted,\r\n loop,\r\n start: autoPlay,\r\n crossOrigin: \"anonymous\",\r\n });\r\n\r\n const video = texture.image as HTMLVideoElement | null;\r\n\r\n // Safe aspect ratio calculation\r\n const aspect =\r\n video && video.videoWidth > 0 && video.videoHeight > 0\r\n ? video.videoWidth / video.videoHeight\r\n : 16 / 9;\r\n\r\n const planeHeight = height ?? width / aspect;\r\n\r\n // Convert string side to THREE constant\r\n const materialSide =\r\n side === \"double\"\r\n ? THREE.DoubleSide\r\n : side === \"back\"\r\n ? THREE.BackSide\r\n : THREE.FrontSide;\r\n\r\n return (\r\n <mesh>\r\n <planeGeometry args={[width, planeHeight]} />\r\n\r\n <meshBasicMaterial\r\n map={texture}\r\n toneMapped={false}\r\n transparent={opacity < 1}\r\n opacity={opacity}\r\n side={materialSide}\r\n />\r\n </mesh>\r\n );\r\n}","import React, { useRef, useEffect, useState } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport * as THREE from \"three\";\r\n\r\nexport interface AudioVisualizerProps {\r\n audioSrc: string; // URL to audio file\r\n fftSize?: number;\r\n barColor?: string;\r\n width?: number;\r\n}\r\n\r\nexport function AudioVisualizer({\r\n audioSrc,\r\n fftSize = 64,\r\n barColor = \"#22d3ee\",\r\n width = 10,\r\n}: AudioVisualizerProps) {\r\n const analyserRef = useRef<THREE.AudioAnalyser | null>(null);\r\n const meshRef = useRef<THREE.InstancedMesh>(null);\r\n const [ready, setReady] = useState(false);\r\n\r\n useEffect(() => {\r\n // We need user interaction to start audio usually.\r\n // For this component, we won't auto-play if blocked, but we set up the loader.\r\n const listener = new THREE.AudioListener();\r\n const sound = new THREE.Audio(listener);\r\n const audioLoader = new THREE.AudioLoader();\r\n\r\n audioLoader.load(audioSrc, function (buffer) {\r\n sound.setBuffer(buffer);\r\n sound.setLoop(true);\r\n sound.setVolume(0.5);\r\n\r\n const analyser = new THREE.AudioAnalyser(sound, fftSize);\r\n analyserRef.current = analyser;\r\n setReady(true);\r\n\r\n // Attempt play - might be blocked until user gesture elsewhere\r\n sound.play();\r\n });\r\n\r\n return () => {\r\n if (sound.isPlaying) sound.stop();\r\n };\r\n }, [audioSrc, fftSize]);\r\n\r\n useFrame(() => {\r\n if (analyserRef.current && meshRef.current && ready) {\r\n const data = analyserRef.current.getFrequencyData();\r\n // visualizer logic\r\n // Map data to instances scale\r\n const count = data.length;\r\n const step = width / count;\r\n\r\n const tempObj = new THREE.Object3D();\r\n\r\n for (let i = 0; i < count; i++) {\r\n const value = data[i] / 256.0;\r\n const h = value * 5;\r\n const x = (i - count / 2) * step;\r\n\r\n tempObj.position.set(x, h / 2, 0);\r\n tempObj.scale.set(step * 0.8, h || 0.1, step * 0.8);\r\n tempObj.updateMatrix();\r\n meshRef.current.setMatrixAt(i, tempObj.matrix);\r\n }\r\n meshRef.current.instanceMatrix.needsUpdate = true;\r\n }\r\n });\r\n\r\n return (\r\n <instancedMesh ref={meshRef} args={[undefined, undefined, fftSize / 2] as any}>\r\n <boxGeometry args={[1, 1, 1]} />\r\n <meshStandardMaterial color={barColor} />\r\n </instancedMesh>\r\n );\r\n}\r\n","import React, { useRef, useMemo } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport { AdditiveBlending, BufferAttribute } from \"three\";\r\n\r\nexport interface ParticlesProps {\r\n count?: number;\r\n size?: number;\r\n color?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function Particles({\r\n count = 1000,\r\n size = 0.03,\r\n color = \"#a78bfa\",\r\n speed = 0.1,\r\n}: ParticlesProps) {\r\n const points = useRef<any>(null);\r\n\r\n const particlesPosition = useMemo(() => {\r\n const positions = new Float32Array(count * 3);\r\n for (let i = 0; i < count; i++) {\r\n // Random usage\r\n positions[i * 3] = (Math.random() - 0.5) * 10;\r\n positions[i * 3 + 1] = (Math.random() - 0.5) * 10;\r\n positions[i * 3 + 2] = (Math.random() - 0.5) * 10;\r\n }\r\n return positions;\r\n }, [count]);\r\n\r\n useFrame((state, delta) => {\r\n if (points.current) {\r\n // Simple rotation or movement\r\n points.current.rotation.y += delta * speed;\r\n // Maybe wave movement?\r\n }\r\n });\r\n\r\n return (\r\n <points ref={points}>\r\n <bufferGeometry>\r\n <bufferAttribute\r\n attach=\"attributes-position\"\r\n count={particlesPosition.length / 3}\r\n array={particlesPosition}\r\n itemSize={3}\r\n />\r\n </bufferGeometry>\r\n <pointsMaterial\r\n size={size}\r\n color={color}\r\n transparent\r\n depthWrite={false}\r\n blending={AdditiveBlending}\r\n sizeAttenuation\r\n />\r\n </points>\r\n );\r\n}\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport { useThree, useFrame, extend, ReactThreeFiber, Object3DNode } from \"@react-three/fiber\";\r\nimport { EffectComposer, RenderPass, UnrealBloomPass } from \"three-stdlib\";\r\nimport { Vector2 } from \"three\";\r\n\r\nextend({ EffectComposer, RenderPass, UnrealBloomPass });\r\n\r\n// Global types moved to src/three-elements.d.ts\r\n\r\nexport interface BloomProps {\r\n intensity?: number;\r\n radius?: number;\r\n threshold?: number;\r\n}\r\n\r\nexport function Bloom({ intensity = 1.0, radius = 0.4, threshold = 0 }: BloomProps) {\r\n const { gl, scene, camera, size } = useThree();\r\n const composer = useRef<EffectComposer>(null);\r\n\r\n useEffect(() => {\r\n if (composer.current) {\r\n composer.current.setSize(size.width, size.height);\r\n }\r\n }, [size]);\r\n\r\n useFrame(() => {\r\n if (composer.current) {\r\n composer.current.render();\r\n }\r\n }, 1);\r\n\r\n return (\r\n <effectComposer ref={composer} args={[gl]}>\r\n <renderPass attach=\"passes\" args={[scene, camera]} />\r\n <unrealBloomPass attach=\"passes\" args={[new Vector2(size.width, size.height), intensity, radius, threshold]} />\r\n </effectComposer>\r\n );\r\n}\r\n","import { OrthographicCamera, PlaneGeometry, Mesh, Material, WebGLRenderer, WebGLRenderTarget } from 'three'\n\nclass Pass {\n // if set to true, the pass is processed by the composer\n public enabled = true\n\n // if set to true, the pass indicates to swap read and write buffer after rendering\n public needsSwap = true\n\n // if set to true, the pass clears its buffer before rendering\n public clear = false\n\n // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n public renderToScreen = false\n\n public setSize(width: number, height: number): void {}\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget,\n deltaTime: number,\n maskActive?: unknown,\n ): void {\n console.error('THREE.Pass: .render() must be implemented in derived pass.')\n }\n\n public dispose() {}\n}\n\n// Helper for passes that need to fill the viewport with a single quad.\nclass FullScreenQuad<TMaterial extends Material = Material> {\n public camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n public geometry = new PlaneGeometry(2, 2)\n private mesh: Mesh<PlaneGeometry, TMaterial>\n\n constructor(material: TMaterial) {\n this.mesh = new Mesh(this.geometry, material)\n }\n\n public get material(): TMaterial {\n return this.mesh.material\n }\n\n public set material(value: TMaterial) {\n this.mesh.material = value\n }\n\n public dispose(): void {\n this.mesh.geometry.dispose()\n }\n\n public render(renderer: WebGLRenderer): void {\n renderer.render(this.mesh, this.camera)\n }\n}\n\nexport { Pass, FullScreenQuad }\n","import { ShaderMaterial, UniformsUtils, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { Defines, IShader, Uniforms } from '../shaders/types'\n\nclass ShaderPass extends Pass {\n public textureID: string\n public uniforms: Uniforms\n public material: ShaderMaterial\n public fsQuad: FullScreenQuad\n\n constructor(shader: ShaderMaterial | IShader<Uniforms, Defines | undefined>, textureID = 'tDiffuse') {\n super()\n\n this.textureID = textureID\n\n if (shader instanceof ShaderMaterial) {\n this.uniforms = shader.uniforms\n\n this.material = shader\n } else {\n this.uniforms = UniformsUtils.clone(shader.uniforms)\n\n this.material = new ShaderMaterial({\n defines: Object.assign({}, shader.defines),\n uniforms: this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n })\n }\n\n this.fsQuad = new FullScreenQuad(this.material)\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n if (this.uniforms[this.textureID]) {\n this.uniforms[this.textureID].value = readBuffer.texture\n }\n\n this.fsQuad.material = this.material\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(writeBuffer)\n // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil)\n this.fsQuad.render(renderer)\n }\n }\n\n public dispose() {\n this.fsQuad.dispose()\n this.material.dispose()\n }\n}\n\nexport { ShaderPass }\n","/**\n * Full-screen textured quad shader\n */\n\nimport type { IUniform, Texture } from 'three'\nimport type { IShader } from './types'\n\nexport type CopyShaderUniforms = {\n opacity: IUniform<number>\n tDiffuse: IUniform<Texture | null>\n}\n\nexport interface ICopyShader extends IShader<CopyShaderUniforms> {}\n\nexport const CopyShader: ICopyShader = {\n uniforms: {\n tDiffuse: { value: null },\n opacity: { value: 1.0 },\n },\n\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n\n \tvUv = uv;\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n uniform float opacity;\n\n uniform sampler2D tDiffuse;\n\n varying vec2 vUv;\n\n void main() {\n\n \tvec4 texel = texture2D( tDiffuse, vUv );\n \tgl_FragColor = opacity * texel;\n\n }\n `,\n}\n","import { Color } from 'three'\n\n/**\n * Luminosity\n * http://en.wikipedia.org/wiki/Luminosity\n */\n\nexport const LuminosityHighPassShader = {\n shaderID: 'luminosityHighPass',\n\n uniforms: {\n tDiffuse: { value: null },\n luminosityThreshold: { value: 1.0 },\n smoothWidth: { value: 1.0 },\n defaultColor: { value: /* @__PURE__ */ new Color(0x000000) },\n defaultOpacity: { value: 0.0 },\n },\n\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n\n \tvUv = uv;\n\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n uniform sampler2D tDiffuse;\n uniform vec3 defaultColor;\n uniform float defaultOpacity;\n uniform float luminosityThreshold;\n uniform float smoothWidth;\n\n varying vec2 vUv;\n\n void main() {\n\n \tvec4 texel = texture2D( tDiffuse, vUv );\n\n \tvec3 luma = vec3( 0.299, 0.587, 0.114 );\n\n \tfloat v = dot( texel.xyz, luma );\n\n \tvec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );\n\n \tfloat alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );\n\n \tgl_FragColor = mix( outputColor, texel, alpha );\n\n }\n `,\n}\n","import {\n AdditiveBlending,\n Color,\n HalfFloatType,\n MeshBasicMaterial,\n ShaderMaterial,\n UniformsUtils,\n Vector2,\n Vector3,\n WebGLRenderTarget,\n} from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader'\n\n/**\n * UnrealBloomPass is inspired by the bloom pass of Unreal Engine. It creates a\n * mip map chain of bloom textures and blurs them with different radii. Because\n * of the weighted combination of mips, and because larger blurs are done on\n * higher mips, this effect provides good quality and performance.\n *\n * Reference:\n * - https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/\n */\nconst UnrealBloomPass = /* @__PURE__ */ (() => {\n class UnrealBloomPass extends Pass {\n static BlurDirectionX = new Vector2(1.0, 0.0)\n static BlurDirectionY = new Vector2(0.0, 1.0)\n\n constructor(resolution, strength, radius, threshold) {\n super()\n\n this.strength = strength !== undefined ? strength : 1\n this.radius = radius\n this.threshold = threshold\n this.resolution = resolution !== undefined ? new Vector2(resolution.x, resolution.y) : new Vector2(256, 256)\n\n // create color only once here, reuse it later inside the render function\n this.clearColor = new Color(0, 0, 0)\n\n // render targets\n this.renderTargetsHorizontal = []\n this.renderTargetsVertical = []\n this.nMips = 5\n let resx = Math.round(this.resolution.x / 2)\n let resy = Math.round(this.resolution.y / 2)\n\n this.renderTargetBright = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n this.renderTargetBright.texture.name = 'UnrealBloomPass.bright'\n this.renderTargetBright.texture.generateMipmaps = false\n\n for (let i = 0; i < this.nMips; i++) {\n const renderTargetHorizonal = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n\n renderTargetHorizonal.texture.name = 'UnrealBloomPass.h' + i\n renderTargetHorizonal.texture.generateMipmaps = false\n\n this.renderTargetsHorizontal.push(renderTargetHorizonal)\n\n const renderTargetVertical = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n\n renderTargetVertical.texture.name = 'UnrealBloomPass.v' + i\n renderTargetVertical.texture.generateMipmaps = false\n\n this.renderTargetsVertical.push(renderTargetVertical)\n\n resx = Math.round(resx / 2)\n\n resy = Math.round(resy / 2)\n }\n\n // luminosity high pass material\n\n const highPassShader = LuminosityHighPassShader\n this.highPassUniforms = UniformsUtils.clone(highPassShader.uniforms)\n\n this.highPassUniforms['luminosityThreshold'].value = threshold\n this.highPassUniforms['smoothWidth'].value = 0.01\n\n this.materialHighPassFilter = new ShaderMaterial({\n uniforms: this.highPassUniforms,\n vertexShader: highPassShader.vertexShader,\n fragmentShader: highPassShader.fragmentShader,\n defines: {},\n })\n\n // Gaussian Blur Materials\n this.separableBlurMaterials = []\n const kernelSizeArray = [3, 5, 7, 9, 11]\n resx = Math.round(this.resolution.x / 2)\n resy = Math.round(this.resolution.y / 2)\n\n for (let i = 0; i < this.nMips; i++) {\n this.separableBlurMaterials.push(this.getSeperableBlurMaterial(kernelSizeArray[i]))\n\n this.separableBlurMaterials[i].uniforms['texSize'].value = new Vector2(resx, resy)\n\n resx = Math.round(resx / 2)\n\n resy = Math.round(resy / 2)\n }\n\n // Composite material\n this.compositeMaterial = this.getCompositeMaterial(this.nMips)\n this.compositeMaterial.uniforms['blurTexture1'].value = this.renderTargetsVertical[0].texture\n this.compositeMaterial.uniforms['blurTexture2'].value = this.renderTargetsVertical[1].texture\n this.compositeMaterial.uniforms['blurTexture3'].value = this.renderTargetsVertical[2].texture\n this.compositeMaterial.uniforms['blurTexture4'].value = this.renderTargetsVertical[3].texture\n this.compositeMaterial.uniforms['blurTexture5'].value = this.renderTargetsVertical[4].texture\n this.compositeMaterial.uniforms['bloomStrength'].value = strength\n this.compositeMaterial.uniforms['bloomRadius'].value = 0.1\n this.compositeMaterial.needsUpdate = true\n\n const bloomFactors = [1.0, 0.8, 0.6, 0.4, 0.2]\n this.compositeMaterial.uniforms['bloomFactors'].value = bloomFactors\n this.bloomTintColors = [\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n ]\n this.compositeMaterial.uniforms['bloomTintColors'].value = this.bloomTintColors\n\n // copy material\n\n const copyShader = CopyShader\n\n this.copyUniforms = UniformsUtils.clone(copyShader.uniforms)\n this.copyUniforms['opacity'].value = 1.0\n\n this.materialCopy = new ShaderMaterial({\n uniforms: this.copyUniforms,\n vertexShader: copyShader.vertexShader,\n fragmentShader: copyShader.fragmentShader,\n blending: AdditiveBlending,\n depthTest: false,\n depthWrite: false,\n transparent: true,\n })\n\n this.enabled = true\n this.needsSwap = false\n\n this._oldClearColor = new Color()\n this.oldClearAlpha = 1\n\n this.basic = new MeshBasicMaterial()\n\n this.fsQuad = new FullScreenQuad(null)\n }\n\n dispose() {\n for (let i = 0; i < this.renderTargetsHorizontal.length; i++) {\n this.renderTargetsHorizontal[i].dispose()\n }\n\n for (let i = 0; i < this.renderTargetsVertical.length; i++) {\n this.renderTargetsVertical[i].dispose()\n }\n\n this.renderTargetBright.dispose()\n\n //\n\n for (let i = 0; i < this.separableBlurMaterials.length; i++) {\n this.separableBlurMaterials[i].dispose()\n }\n\n this.compositeMaterial.dispose()\n this.materialCopy.dispose()\n this.basic.dispose()\n\n //\n\n this.fsQuad.dispose()\n }\n\n setSize(width, height) {\n let resx = Math.round(width / 2)\n let resy = Math.round(height / 2)\n\n this.renderTargetBright.setSize(resx, resy)\n\n for (let i = 0; i < this.nMips; i++) {\n this.renderTargetsHorizontal[i].setSize(resx, resy)\n this.renderTargetsVertical[i].setSize(resx, resy)\n\n this.separableBlurMaterials[i].uniforms['texSize'].value = new Vector2(resx, resy)\n\n resx = Math.round(resx / 2)\n resy = Math.round(resy / 2)\n }\n }\n\n render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) {\n renderer.getClearColor(this._oldClearColor)\n this.oldClearAlpha = renderer.getClearAlpha()\n const oldAutoClear = renderer.autoClear\n renderer.autoClear = false\n\n renderer.setClearColor(this.clearColor, 0)\n\n if (maskActive) renderer.state.buffers.stencil.setTest(false)\n\n // Render input to screen\n\n if (this.renderToScreen) {\n this.fsQuad.material = this.basic\n this.basic.map = readBuffer.texture\n\n renderer.setRenderTarget(null)\n renderer.clear()\n this.fsQuad.render(renderer)\n }\n\n // 1. Extract Bright Areas\n\n this.highPassUniforms['tDiffuse'].value = readBuffer.texture\n this.highPassUniforms['luminosityThreshold'].value = this.threshold\n this.fsQuad.material = this.materialHighPassFilter\n\n renderer.setRenderTarget(this.renderTargetBright)\n renderer.clear()\n this.fsQuad.render(renderer)\n\n // 2. Blur All the mips progressively\n\n let inputRenderTarget = this.renderTargetBright\n\n for (let i = 0; i < this.nMips; i++) {\n this.fsQuad.material = this.separableBlurMaterials[i]\n\n this.separableBlurMaterials[i].uniforms['colorTexture'].value = inputRenderTarget.texture\n this.separableBlurMaterials[i].uniforms['direction'].value = UnrealBloomPass.BlurDirectionX\n renderer.setRenderTarget(this.renderTargetsHorizontal[i])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n this.separableBlurMaterials[i].uniforms['colorTexture'].value = this.renderTargetsHorizontal[i].texture\n this.separableBlurMaterials[i].uniforms['direction'].value = UnrealBloomPass.BlurDirectionY\n renderer.setRenderTarget(this.renderTargetsVertical[i])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n inputRenderTarget = this.renderTargetsVertical[i]\n }\n\n // Composite All the mips\n\n this.fsQuad.material = this.compositeMaterial\n this.compositeMaterial.uniforms['bloomStrength'].value = this.strength\n this.compositeMaterial.uniforms['bloomRadius'].value = this.radius\n this.compositeMaterial.uniforms['bloomTintColors'].value = this.bloomTintColors\n\n renderer.setRenderTarget(this.renderTargetsHorizontal[0])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n // Blend it additively over the input texture\n\n this.fsQuad.material = this.materialCopy\n this.copyUniforms['tDiffuse'].value = this.renderTargetsHorizontal[0].texture\n\n if (maskActive) renderer.state.buffers.stencil.setTest(true)\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(readBuffer)\n this.fsQuad.render(renderer)\n }\n\n // Restore renderer settings\n\n renderer.setClearColor(this._oldClearColor, this.oldClearAlpha)\n renderer.autoClear = oldAutoClear\n }\n\n getSeperableBlurMaterial(kernelRadius) {\n return new ShaderMaterial({\n defines: {\n KERNEL_RADIUS: kernelRadius,\n SIGMA: kernelRadius,\n },\n\n uniforms: {\n colorTexture: { value: null },\n texSize: { value: new Vector2(0.5, 0.5) },\n direction: { value: new Vector2(0.5, 0.5) },\n },\n\n vertexShader: `varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n fragmentShader: `#include <common>\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat fSigma = float(SIGMA);\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}`,\n })\n }\n\n getCompositeMaterial(nMips) {\n return new ShaderMaterial({\n defines: {\n NUM_MIPS: nMips,\n },\n\n uniforms: {\n blurTexture1: { value: null },\n blurTexture2: { value: null },\n blurTexture3: { value: null },\n blurTexture4: { value: null },\n blurTexture5: { value: null },\n bloomStrength: { value: 1.0 },\n bloomFactors: { value: null },\n bloomTintColors: { value: null },\n bloomRadius: { value: 0.0 },\n },\n\n vertexShader: `varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n fragmentShader: `varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}`,\n })\n }\n }\n\n return UnrealBloomPass\n})()\n\nexport { UnrealBloomPass }\n","import { Camera, Scene, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { Pass } from './Pass'\n\nclass MaskPass extends Pass {\n public scene: Scene\n public camera: Camera\n public inverse: boolean\n\n constructor(scene: Scene, camera: Camera) {\n super()\n\n this.scene = scene\n this.camera = camera\n\n this.clear = true\n this.needsSwap = false\n\n this.inverse = false\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n const context = renderer.getContext()\n const state = renderer.state\n\n // don't update color or depth\n\n state.buffers.color.setMask(false)\n state.buffers.depth.setMask(false)\n\n // lock buffers\n\n state.buffers.color.setLocked(true)\n state.buffers.depth.setLocked(true)\n\n // set up stencil\n\n let writeValue, clearValue\n\n if (this.inverse) {\n writeValue = 0\n clearValue = 1\n } else {\n writeValue = 1\n clearValue = 0\n }\n\n state.buffers.stencil.setTest(true)\n state.buffers.stencil.setOp(context.REPLACE, context.REPLACE, context.REPLACE)\n state.buffers.stencil.setFunc(context.ALWAYS, writeValue, 0xffffffff)\n state.buffers.stencil.setClear(clearValue)\n state.buffers.stencil.setLocked(true)\n\n // draw into the stencil buffer\n\n renderer.setRenderTarget(readBuffer)\n if (this.clear) renderer.clear()\n renderer.render(this.scene, this.camera)\n\n renderer.setRenderTarget(writeBuffer)\n if (this.clear) renderer.clear()\n renderer.render(this.scene, this.camera)\n\n // unlock color and depth buffer for subsequent rendering\n\n state.buffers.color.setLocked(false)\n state.buffers.depth.setLocked(false)\n\n // only render where stencil is set to 1\n\n state.buffers.stencil.setLocked(false)\n state.buffers.stencil.setFunc(context.EQUAL, 1, 0xffffffff) // draw if == 1\n state.buffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP)\n state.buffers.stencil.setLocked(true)\n }\n}\n\nclass ClearMaskPass extends Pass {\n constructor() {\n super()\n this.needsSwap = false\n }\n\n public render(renderer: WebGLRenderer /*, writeBuffer, readBuffer, deltaTime, maskActive */): void {\n renderer.state.buffers.stencil.setLocked(false)\n renderer.state.buffers.stencil.setTest(false)\n }\n}\n\nexport { MaskPass, ClearMaskPass }\n","import { Clock, LinearFilter, RGBAFormat, NoBlending, Vector2, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { ShaderPass } from './ShaderPass'\nimport { MaskPass, ClearMaskPass } from './MaskPass'\nimport { Pass } from './Pass'\n\nclass EffectComposer<TRenderTarget extends WebGLRenderTarget = WebGLRenderTarget> {\n public renderer: WebGLRenderer\n private _pixelRatio: number\n private _width: number\n private _height: number\n public renderTarget1: WebGLRenderTarget\n public renderTarget2: WebGLRenderTarget\n public writeBuffer: WebGLRenderTarget\n public readBuffer: WebGLRenderTarget\n public renderToScreen: boolean\n public passes: Pass[] = []\n public copyPass: Pass\n public clock: Clock\n\n constructor(renderer: WebGLRenderer, renderTarget?: TRenderTarget) {\n this.renderer = renderer\n\n if (renderTarget === undefined) {\n const parameters = {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n format: RGBAFormat,\n }\n\n const size = renderer.getSize(new Vector2())\n this._pixelRatio = renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = new WebGLRenderTarget(\n this._width * this._pixelRatio,\n this._height * this._pixelRatio,\n parameters,\n ) as TRenderTarget\n renderTarget.texture.name = 'EffectComposer.rt1'\n } else {\n this._pixelRatio = 1\n this._width = renderTarget.width\n this._height = renderTarget.height\n }\n\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n this.renderTarget2.texture.name = 'EffectComposer.rt2'\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n\n this.renderToScreen = true\n\n // dependencies\n\n if (CopyShader === undefined) {\n console.error('THREE.EffectComposer relies on CopyShader')\n }\n\n if (ShaderPass === undefined) {\n console.error('THREE.EffectComposer relies on ShaderPass')\n }\n\n this.copyPass = new ShaderPass(CopyShader)\n // @ts-ignore\n this.copyPass.material.blending = NoBlending\n\n this.clock = new Clock()\n }\n\n public swapBuffers(): void {\n const tmp = this.readBuffer\n this.readBuffer = this.writeBuffer\n this.writeBuffer = tmp\n }\n\n public addPass(pass: Pass): void {\n this.passes.push(pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public insertPass(pass: Pass, index: number): void {\n this.passes.splice(index, 0, pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public removePass(pass: Pass): void {\n const index = this.passes.indexOf(pass)\n\n if (index !== -1) {\n this.passes.splice(index, 1)\n }\n }\n\n public isLastEnabledPass(passIndex: number): boolean {\n for (let i = passIndex + 1; i < this.passes.length; i++) {\n if (this.passes[i].enabled) {\n return false\n }\n }\n\n return true\n }\n\n public render(deltaTime?: number): void {\n // deltaTime value is in seconds\n\n if (deltaTime === undefined) {\n deltaTime = this.clock.getDelta()\n }\n\n const currentRenderTarget = this.renderer.getRenderTarget()\n\n let maskActive = false\n\n const il = this.passes.length\n\n for (let i = 0; i < il; i++) {\n const pass = this.passes[i]\n\n if (pass.enabled === false) continue\n\n pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i)\n pass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive)\n\n if (pass.needsSwap) {\n if (maskActive) {\n const context = this.renderer.getContext()\n const stencil = this.renderer.state.buffers.stencil\n\n //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n stencil.setFunc(context.NOTEQUAL, 1, 0xffffffff)\n\n this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime)\n\n //context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n stencil.setFunc(context.EQUAL, 1, 0xffffffff)\n }\n\n this.swapBuffers()\n }\n\n if (MaskPass !== undefined) {\n if (pass instanceof MaskPass) {\n maskActive = true\n } else if (pass instanceof ClearMaskPass) {\n maskActive = false\n }\n }\n }\n\n this.renderer.setRenderTarget(currentRenderTarget)\n }\n\n public reset(renderTarget: WebGLRenderTarget): void {\n if (renderTarget === undefined) {\n const size = this.renderer.getSize(new Vector2())\n this._pixelRatio = this.renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = this.renderTarget1.clone()\n renderTarget.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n }\n\n public setSize(width: number, height: number): void {\n this._width = width\n this._height = height\n\n const effectiveWidth = this._width * this._pixelRatio\n const effectiveHeight = this._height * this._pixelRatio\n\n this.renderTarget1.setSize(effectiveWidth, effectiveHeight)\n this.renderTarget2.setSize(effectiveWidth, effectiveHeight)\n\n for (let i = 0; i < this.passes.length; i++) {\n this.passes[i].setSize(effectiveWidth, effectiveHeight)\n }\n }\n\n public setPixelRatio(pixelRatio: number): void {\n this._pixelRatio = pixelRatio\n\n this.setSize(this._width, this._height)\n }\n\n public dispose() {\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n\n this.copyPass.dispose()\n }\n}\n\nexport { EffectComposer }\n","import { Camera, Color, Material, Scene, WebGLRenderTarget, WebGLRenderer } from 'three'\nimport { Pass } from './Pass'\n\nclass RenderPass extends Pass {\n public scene: Scene\n public camera: Camera\n public overrideMaterial: Material | undefined\n public clearColor: Color | undefined\n public clearAlpha: number\n public clearDepth = false\n private _oldClearColor = new Color()\n\n constructor(scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: Color, clearAlpha = 0) {\n super()\n\n this.scene = scene\n this.camera = camera\n\n this.overrideMaterial = overrideMaterial\n\n this.clearColor = clearColor\n this.clearAlpha = clearAlpha\n\n this.clear = true\n this.needsSwap = false\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n let oldAutoClear = renderer.autoClear\n renderer.autoClear = false\n\n let oldClearAlpha\n let oldOverrideMaterial: Material | null = null\n\n if (this.overrideMaterial !== undefined) {\n oldOverrideMaterial = this.scene.overrideMaterial\n\n this.scene.overrideMaterial = this.overrideMaterial\n }\n\n if (this.clearColor) {\n renderer.getClearColor(this._oldClearColor)\n oldClearAlpha = renderer.getClearAlpha()\n\n renderer.setClearColor(this.clearColor, this.clearAlpha)\n }\n\n if (this.clearDepth) {\n renderer.clearDepth()\n }\n\n renderer.setRenderTarget(this.renderToScreen ? null : readBuffer)\n\n // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil)\n renderer.render(this.scene, this.camera)\n\n if (this.clearColor) {\n renderer.setClearColor(this._oldClearColor, oldClearAlpha)\n }\n\n if (this.overrideMaterial !== undefined) {\n this.scene.overrideMaterial = oldOverrideMaterial\n }\n\n renderer.autoClear = oldAutoClear\n }\n}\n\nexport { RenderPass }\n","import React from \"react\";\r\nimport { MeshReflectorMaterial } from \"@react-three/drei\";\r\n\r\nexport interface ReflectionProps {\r\n blur?: [number, number];\r\n opacity?: number;\r\n resolution?: number;\r\n color?: string;\r\n}\r\n\r\nexport function Reflection({\r\n blur = [300, 100],\r\n opacity = 0.5,\r\n resolution = 512,\r\n color = \"#101010\",\r\n}: ReflectionProps) {\r\n return (\r\n <mesh rotation={[-Math.PI / 2, 0, 0]} position={[0, -0.01, 0]}>\r\n <planeGeometry args={[50, 50]} />\r\n <MeshReflectorMaterial\r\n blur={blur}\r\n resolution={resolution}\r\n mixBlur={1}\r\n mixStrength={opacity * 10} // Empirically, mixStrength needs to be higher to see reflection clearly sometimes\r\n roughness={1}\r\n depthScale={1.2}\r\n minDepthThreshold={0.4}\r\n maxDepthThreshold={1.4}\r\n color={color}\r\n metalness={0.5}\r\n mirror={1} // 1 = perfect mirror\r\n />\r\n </mesh>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport interface FogProps {\r\n color?: string;\r\n near?: number;\r\n far?: number;\r\n density?: number; // For exp2 fog if preferred, but Registry implies linear by default props (near/far)\r\n type?: \"linear\" | \"exponential\";\r\n}\r\n\r\nexport function Fog({\r\n color = \"#000\",\r\n near = 5,\r\n far = 30,\r\n type = \"linear\",\r\n density = 0.02,\r\n}: FogProps) {\r\n if (type === \"exponential\") {\r\n return <fogExp2 attach=\"fog\" args={[color, density]} />;\r\n }\r\n return <fog attach=\"fog\" args={[color, near, far]} />;\r\n}\r\n","import React from \"react\";\r\nimport { SoftShadows } from \"@react-three/drei\";\r\n\r\nexport interface ShadowSystemProps {\r\n type?: \"basic\" | \"soft\" | \"contact\"; // Contact shadows not implemented in basic wrapper, using SoftShadows for 'soft'\r\n bias?: number;\r\n mapSize?: number; // Not used by SoftShadows but relevant if we were configuring lights directly\r\n}\r\n\r\nexport function ShadowSystem({ type = \"soft\", bias = -0.0001, mapSize = 1024 }: ShadowSystemProps) {\r\n if (type === \"soft\") {\r\n return <SoftShadows />;\r\n }\r\n\r\n // For basic or contact, we might need other logic.\r\n // Three.js shadows are enabled on Canvas (<Canvas shadows>).\r\n // This component mainly configures SoftShadows.\r\n // ContactShadows is a separate component in Drei.\r\n\r\n if (type === \"contact\") {\r\n // We should probably import ContactShadows from Drei if we want to support it\r\n // But for now, returning null or SoftShadows as fallback\r\n return null;\r\n }\r\n\r\n return null; // Basic is default\r\n}\r\n","import React, { Children, cloneElement, ReactElement } from \"react\";\r\nimport * as THREE from \"three\";\r\n\r\nexport interface GlowEffectProps {\r\n children: ReactElement; // Expect a single child mesh\r\n color?: string;\r\n intensity?: number;\r\n scale?: number;\r\n}\r\n\r\nexport function GlowEffect({\r\n children,\r\n color = \"#22d3ee\",\r\n intensity = 1,\r\n scale = 1.2,\r\n}: GlowEffectProps) {\r\n\r\n // Create a glow copy\r\n // Needs geometry from child. \r\n // Since we can't easily extract geometry from ReactNode, we rely on the child being a mesh where we can attach a second material?\r\n // Or render a second copy of the child with a different material?\r\n // If child is <mesh><boxGeometry /></mesh>, rendering it again works.\r\n\r\n const glowMaterial = React.useMemo(() => {\r\n return new THREE.MeshBasicMaterial({\r\n color: color,\r\n transparent: true,\r\n opacity: 0.3 * intensity,\r\n blending: THREE.AdditiveBlending,\r\n side: THREE.BackSide, // Outline effect often uses BackSide with scaled mesh\r\n });\r\n }, [color, intensity]);\r\n\r\n return (\r\n <group>\r\n {/* Original Object */}\r\n {children}\r\n\r\n {/* Glow Shell */}\r\n <group scale={[scale, scale, scale]}>\r\n {/* We assume children is a mesh or contains geometry we want to glow. \r\n Direct cloning of React Element might not clone the geometry if it's instanced inside.\r\n But for <mesh><boxGeometry/></mesh> it creates a new mesh with new geometry instance (or same args).\r\n However, we need to OVERRIDE the material.\r\n */}\r\n {Children.map(children, (child) => {\r\n if (React.isValidElement(child)) {\r\n return cloneElement(child as ReactElement<any>, {\r\n material: glowMaterial,\r\n });\r\n }\r\n return child;\r\n })}\r\n </group>\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { shaderMaterial } from \"@react-three/drei\";\r\nimport { extend, useFrame } from \"@react-three/fiber\";\r\nimport * as THREE from \"three\";\r\n\r\nconst WaveMaterial = shaderMaterial(\r\n { time: 0, color: new THREE.Color(0.2, 0.5, 1.0) },\r\n // vertex shader\r\n `\r\n varying vec2 vUv;\r\n uniform float time;\r\n void main() {\r\n vUv = uv;\r\n vec3 pos = position;\r\n pos.y += sin(pos.x * 2.0 + time) * 0.2;\r\n gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\r\n }\r\n `,\r\n // fragment shader\r\n `\r\n uniform vec3 color;\r\n varying vec2 vUv;\r\n void main() {\r\n gl_FragColor = vec4(color, 1.0);\r\n }\r\n `\r\n);\r\n\r\nextend({ WaveMaterial });\r\n\r\ndeclare global {\r\n namespace JSX {\r\n interface IntrinsicElements {\r\n waveMaterial: any;\r\n }\r\n }\r\n}\r\n\r\nexport interface WaveEffectProps {\r\n children?: React.ReactNode;\r\n amplitude?: number;\r\n frequency?: number;\r\n speed?: number;\r\n}\r\n\r\nexport function WaveEffect({ children, amplitude = 0.3, frequency = 2, speed = 1 }: WaveEffectProps) {\r\n const group = React.useRef<THREE.Group>(null);\r\n const material = useMemo(() => new WaveMaterial(), []);\r\n\r\n useFrame((state, delta) => {\r\n if (material) {\r\n (material as any).time += delta * speed;\r\n }\r\n });\r\n\r\n React.useEffect(() => {\r\n if (group.current) {\r\n group.current.traverse((obj) => {\r\n if ((obj as THREE.Mesh).isMesh) {\r\n (obj as THREE.Mesh).material = material;\r\n }\r\n });\r\n }\r\n }, [children, material]);\r\n\r\n return (\r\n <group ref={group}>\r\n {children}\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { shaderMaterial } from \"@react-three/drei\";\r\nimport { extend, useFrame } from \"@react-three/fiber\";\r\nimport * as THREE from \"three\";\r\n\r\nconst NoiseMaterial = shaderMaterial(\r\n { time: 0, scale: 1.0, color: new THREE.Color(0.2, 0.5, 1.0) },\r\n // Vertex\r\n `\r\n varying vec2 vUv;\r\n void main() {\r\n vUv = uv;\r\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n }\r\n `,\r\n // Fragment (Simple noise-like pattern via sine waves)\r\n `\r\n uniform float time;\r\n uniform float scale;\r\n uniform vec3 color;\r\n varying vec2 vUv;\r\n\r\n // Pseudo-random\r\n float rand(vec2 co){\r\n return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);\r\n }\r\n\r\n void main() {\r\n float noise = rand(vUv * scale + time * 0.1);\r\n gl_FragColor = vec4(color * noise, 1.0);\r\n }\r\n `\r\n);\r\n\r\nextend({ NoiseMaterial });\r\n\r\ndeclare global {\r\n namespace JSX {\r\n interface IntrinsicElements {\r\n noiseMaterial: any;\r\n }\r\n }\r\n}\r\n\r\nexport interface NoiseFieldProps {\r\n scale?: number;\r\n speed?: number;\r\n mode?: \"displacement\" | \"color\";\r\n}\r\n\r\nexport function NoiseField({ scale = 1, speed = 0.5, mode = \"color\" }: NoiseFieldProps) {\r\n const material = useMemo(() => new NoiseMaterial(), []);\r\n\r\n useFrame((state, delta) => {\r\n if (material) {\r\n (material as any).time += delta * speed;\r\n (material as any).scale = scale;\r\n }\r\n });\r\n\r\n return (\r\n <mesh rotation={[-Math.PI / 2, 0, 0]}>\r\n <planeGeometry args={[10, 10, 64, 64]} />\r\n {/* Attach custom material */}\r\n <primitive object={material} attach=\"material\" />\r\n </mesh>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAAA;AAAA,EAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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","names":["CollapsibleContent","CollapsibleTrigger","Label","Separator","Toaster","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","count","import_react","import_drei","import_jsx_runtime","import_react","import_drei","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","React","import_react","import_framer_motion","import_jsx_runtime","React","import_react","import_framer_motion","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","import_lucide_react","import_framer_motion","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_framer_motion","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_drei","import_jsx_runtime","import_react","import_fiber","import_jsx_runtime","import_drei","import_jsx_runtime","import_react","import_drei","import_jsx_runtime","import_drei","import_three","import_jsx_runtime","React","TooltipPrimitive","import_jsx_runtime","React","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","React","import_class_variance_authority","import_lucide_react","import_jsx_runtime","React","toast","props","import_jsx_runtime","import_jsx_runtime","Toaster","Sonner","React","import_jsx_runtime","import_class_variance_authority","import_lucide_react","React","import_jsx_runtime","React","DialogPrimitive","import_lucide_react","import_jsx_runtime","React","import_react_slot","import_lucide_react","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","Label","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","Separator","React","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","React","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","CollapsibleTrigger","CollapsibleContent","React","import_jsx_runtime","React","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","CommandPrimitive","React","import_react_slot","import_jsx_runtime","Label","React","import_lucide_react","import_jsx_runtime","React","DropdownMenuPrimitive","import_lucide_react","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","DrawerPrimitive","React","import_lucide_react","import_jsx_runtime","React","import_class_variance_authority","import_lucide_react","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","config","import_lucide_react","import_jsx_runtime","React","import_react_slot","import_class_variance_authority","import_lucide_react","import_jsx_runtime","open","Separator","React","import_lucide_react","import_jsx_runtime","useEmblaCarousel","api","React","import_lucide_react","import_jsx_runtime","import_react","import_fiber","import_drei","import_jsx_runtime","import_react","import_drei","import_three","import_jsx_runtime","import_react","import_three","import_fiber","import_drei","import_jsx_runtime","React","import_react","import_drei","import_three","import_fiber","import_jsx_runtime","import_react","import_drei","import_three","import_jsx_runtime","import_drei","import_jsx_runtime","import_react","import_fiber","import_react","import_drei","import_three","import_jsx_runtime","import_jsx_runtime","import_react","import_drei","import_fiber","import_jsx_runtime","import_react","import_drei","import_jsx_runtime","import_react","import_fiber","THREE","import_jsx_runtime","count","import_react","import_fiber","import_three","import_jsx_runtime","count","import_react","import_fiber","__publicField","UnrealBloomPass","__publicField","__publicField","__publicField","__publicField","import_three","import_jsx_runtime","import_drei","import_jsx_runtime","import_jsx_runtime","import_drei","import_jsx_runtime","import_react","THREE","import_jsx_runtime","React","import_react","import_drei","import_fiber","THREE","import_jsx_runtime","React","import_react","import_drei","import_fiber","THREE","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/theme/ThemeProvider.tsx","../src/components/layouts/container.tsx","../src/lib/utils.ts","../src/lib/tokens.ts","../src/components/layouts/grid.tsx","../src/components/layouts/stack.tsx","../src/components/layouts/section.tsx","../src/components/layouts/page-layout.tsx","../src/components/layouts/stage.tsx","../src/components/layouts/viewport.tsx","../src/components/layouts/container3d.tsx","../src/components/layouts/grid3d.tsx","../src/components/layouts/camera-controller.tsx","../src/components/layouts/scene3d.tsx","../src/components/ui/button3d.tsx","../src/components/ui/card3d.tsx","../src/components/ui/accordion3d.tsx","../src/components/ui/badge3d.tsx","../src/components/ui/input3d.tsx","../src/components/ui/slider3d.tsx","../src/components/ui/tabs3d.tsx","../src/components/ui/toggle3d.tsx","../src/components/ui/modal3d.tsx","../src/components/ui/menu3d.tsx","../src/components/ui/tooltip3d.tsx","../src/components/ui/progress3d.tsx","../src/components/ui/resizable.tsx","../src/components/ui/select3d.tsx","../src/components/ui/spinner3d.tsx","../src/components/ui/stepper3d.tsx","../src/components/ui/navbar3d.tsx","../src/components/ui/timeline3d.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/slider.tsx","../src/components/ui/toggle.tsx","../src/components/ui/badge.tsx","../src/components/ui/input.tsx","../src/components/ui/progress.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/toast.tsx","../src/hooks/use-toast.ts","../src/components/ui/toaster.tsx","../src/components/ui/sonner.tsx","../src/components/ui/popover.tsx","../src/components/ui/sheet.tsx","../src/components/ui/dialog.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/label.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/switch.tsx","../src/components/ui/textarea.tsx","../src/components/ui/separator.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/alert.tsx","../src/components/ui/avatar.tsx","../src/components/ui/card.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/command.tsx","../src/components/ui/form.tsx","../src/components/ui/pagination.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/drawer.tsx","../src/components/ui/menubar.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/select.tsx","../src/components/ui/table.tsx","../src/components/ui/chart.tsx","../src/components/ui/calendar.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/carousel.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/barchart3d.tsx","../src/components/ui/linechart3d.tsx","../src/components/ui/piechart3d.tsx","../src/components/ui/scatterplot3d.tsx","../src/components/ui/graph3d.tsx","../src/components/ui/map3d.tsx","../src/components/ui/gallery3d.tsx","../src/components/ui/imageplane.tsx","../src/components/ui/modelviewer.tsx","../src/components/ui/videoplane.tsx","../src/components/ui/audiovisualizer.tsx","../src/components/ui/particles.tsx","../src/components/ui/bloom.tsx","../node_modules/src/postprocessing/Pass.ts","../node_modules/src/postprocessing/ShaderPass.ts","../node_modules/src/shaders/CopyShader.ts","../node_modules/src/shaders/LuminosityHighPassShader.ts","../node_modules/src/postprocessing/UnrealBloomPass.js","../node_modules/src/postprocessing/MaskPass.ts","../node_modules/src/postprocessing/EffectComposer.ts","../node_modules/src/postprocessing/RenderPass.ts","../src/components/ui/reflection.tsx","../src/components/ui/fog.tsx","../src/components/ui/shadowsystem.tsx","../src/components/ui/gloweffect.tsx","../src/components/ui/waveeffect.tsx","../src/components/ui/noisefield.tsx"],"sourcesContent":["/* ======================================\r\n Theme\r\n====================================== */\r\nimport \"./styles/tailwind.css\";\r\n\r\nexport {\r\n ThemeProvider,\r\n useTheme,\r\n useThemeOptional,\r\n type ThemeName,\r\n} from \"./components/theme/ThemeProvider\";\r\n\r\n/* ======================================\r\n Layout\r\n====================================== */\r\n\r\nexport { Container } from \"./components/layouts/container\";\r\nexport { Grid } from \"./components/layouts/grid\";\r\nexport { Stack } from \"./components/layouts/stack\";\r\nexport { Section } from \"./components/layouts/section\";\r\nexport { PageLayout } from \"./components/layouts/page-layout\";\r\nexport { Stage } from \"./components/layouts/stage\";\r\nexport { Viewport } from \"./components/layouts/viewport\";\r\nexport { Container3D } from \"./components/layouts/container3d\";\r\nexport { Grid3D } from \"./components/layouts/grid3d\";\r\nexport { CameraController } from \"./components/layouts/camera-controller\";\r\nexport { Scene3D } from \"./components/layouts/scene3d\";\r\n\r\n\r\n/* ======================================\r\n UI (3D-Inspired)\r\n====================================== */\r\n\r\nexport { Button3D } from \"./components/ui/button3d\";\r\nexport { Card3D } from \"./components/ui/card3d\";\r\nexport { Accordion3D } from \"./components/ui/accordion3d\";\r\nexport { Badge3D } from \"./components/ui/badge3d\";\r\nexport { Input3D } from \"./components/ui/input3d\";\r\nexport { Slider3D } from \"./components/ui/slider3d\";\r\nexport { Tabs3D } from \"./components/ui/tabs3d\";\r\nexport { Toggle3D } from \"./components/ui/toggle3d\";\r\nexport { Modal3D } from \"./components/ui/modal3d\";\r\nexport {\r\n Menu3D,\r\n Menu3DItem,\r\n Menu3DLabel,\r\n Menu3DSeparator,\r\n} from \"./components/ui/menu3d\";export { Tooltip3D } from \"./components/ui/tooltip3d\";\r\nexport { Progress3D } from \"./components/ui/progress3d\";\r\n\r\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle } from \"./components/ui/resizable\";\r\n\r\n// TODO: Refactor these to remove Three.js dependencies\r\nexport { Select3D } from \"./components/ui/select3d\";\r\nexport { Spinner3D } from \"./components/ui/spinner3d\";\r\nexport { Stepper3D } from \"./components/ui/stepper3d\";\r\nexport { NavBar3D } from \"./components/ui/navbar3d\";\r\nexport { Timeline3D } from \"./components/ui/timeline3d\";\r\n\r\n\r\n/* ======================================\r\n Standard UI (shadcn/ui)\r\n====================================== */\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from \"./components/ui/tooltip\";\r\nexport { Slider } from \"./components/ui/slider\";\r\nexport { Toggle, toggleVariants } from \"./components/ui/toggle\";\r\nexport { Badge, badgeVariants } from \"./components/ui/badge\";\r\nexport { Input, inputVariants } from \"./components/ui/input\";\r\nexport { Progress } from \"./components/ui/progress\";\r\nexport { Skeleton } from \"./components/ui/skeleton\";\r\nexport {\r\n Toast,\r\n ToastClose,\r\n ToastDescription,\r\n ToastProvider,\r\n ToastTitle,\r\n ToastViewport,\r\n ToastAction,\r\n type ToastActionElement,\r\n type ToastProps,\r\n} from \"./components/ui/toast\";\r\nexport { Toaster } from \"./components/ui/toaster\";\r\nexport { Toaster as SonnerToaster, toast as sonnerToast } from \"./components/ui/sonner\";\r\nexport { Popover, PopoverTrigger, PopoverContent } from \"./components/ui/popover\";\r\nexport { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger } from \"./components/ui/sheet\";\r\nexport { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription } from \"./components/ui/dialog\";\r\nexport { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis } from \"./components/ui/breadcrumb\";\r\nexport { Label } from \"./components/ui/label\";\r\nexport { Checkbox } from \"./components/ui/checkbox\";\r\nexport { Switch } from \"./components/ui/switch\";\r\nexport { Textarea } from \"./components/ui/textarea\";\r\nexport { Separator } from \"./components/ui/separator\";\r\nexport { ScrollArea, ScrollBar } from \"./components/ui/scroll-area\";\r\nexport { RadioGroup, RadioGroupItem } from \"./components/ui/radio-group\";\r\nexport { ToggleGroup, ToggleGroupItem } from \"./components/ui/toggle-group\";\r\nexport { Alert, AlertTitle, AlertDescription } from \"./components/ui/alert\";\r\nexport { Avatar, AvatarImage, AvatarFallback } from \"./components/ui/avatar\";\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent, cardVariants } from \"./components/ui/card\";\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent } from \"./components/ui/collapsible\";\r\nexport { AspectRatio } from \"./components/ui/aspect-ratio\";\r\nexport { HoverCard, HoverCardTrigger, HoverCardContent } from \"./components/ui/hover-card\";\r\nexport {\r\n AlertDialog,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogTrigger,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n} from \"./components/ui/alert-dialog\";\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandShortcut,\r\n CommandSeparator,\r\n} from \"./components/ui/command\";\r\nexport { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField } from \"./components/ui/form\";\r\nexport { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from \"./components/ui/pagination\";\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n} from \"./components/ui/dropdown-menu\";\r\nexport {\r\n ContextMenu,\r\n ContextMenuTrigger,\r\n ContextMenuContent,\r\n ContextMenuItem,\r\n ContextMenuCheckboxItem,\r\n ContextMenuRadioItem,\r\n ContextMenuLabel,\r\n ContextMenuSeparator,\r\n ContextMenuShortcut,\r\n ContextMenuGroup,\r\n ContextMenuPortal,\r\n ContextMenuSub,\r\n ContextMenuSubContent,\r\n ContextMenuSubTrigger,\r\n ContextMenuRadioGroup,\r\n} from \"./components/ui/context-menu\";\r\nexport {\r\n Drawer,\r\n DrawerPortal,\r\n DrawerOverlay,\r\n DrawerTrigger,\r\n DrawerClose,\r\n DrawerContent,\r\n DrawerHeader,\r\n DrawerFooter,\r\n DrawerTitle,\r\n DrawerDescription,\r\n} from \"./components/ui/drawer\";\r\nexport {\r\n Menubar,\r\n MenubarMenu,\r\n MenubarTrigger,\r\n MenubarContent,\r\n MenubarItem,\r\n MenubarSeparator,\r\n MenubarLabel,\r\n MenubarCheckboxItem,\r\n MenubarRadioGroup,\r\n MenubarRadioItem,\r\n MenubarPortal,\r\n MenubarSubContent,\r\n MenubarSubTrigger,\r\n MenubarGroup,\r\n MenubarSub,\r\n} from \"./components/ui/menubar\";\r\nexport {\r\n navigationMenuTriggerStyle,\r\n NavigationMenu,\r\n NavigationMenuList,\r\n NavigationMenuItem,\r\n NavigationMenuContent,\r\n NavigationMenuTrigger,\r\n NavigationMenuLink,\r\n NavigationMenuIndicator,\r\n NavigationMenuViewport,\r\n} from \"./components/ui/navigation-menu\";\r\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton } from \"./components/ui/select\";\r\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption } from \"./components/ui/table\";\r\nexport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, ChartStyle } from \"./components/ui/chart\";\r\nexport type { ChartConfig } from \"./components/ui/chart\";\r\nexport { Calendar } from \"./components/ui/calendar\";\r\nexport type { CalendarProps } from \"./components/ui/calendar\";\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInput,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n} from \"./components/ui/sidebar\";\r\nexport { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext } from \"./components/ui/carousel\";\r\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from \"./components/ui/input-otp\";\r\n\r\n\r\n/* ======================================\r\n Data (TODO: Refactor)\r\n====================================== */\r\n\r\nexport { BarChart3D } from \"./components/ui/barchart3d\";\r\nexport { LineChart3D } from \"./components/ui/linechart3d\";\r\nexport { PieChart3D } from \"./components/ui/piechart3d\";\r\nexport { ScatterPlot3D } from \"./components/ui/scatterplot3d\";\r\nexport { Graph3D } from \"./components/ui/graph3d\";\r\nexport { Map3D } from \"./components/ui/map3d\";\r\n\r\n\r\n/* ======================================\r\n Media (TODO: Refactor)\r\n====================================== */\r\n\r\nexport { Gallery3D } from \"./components/ui/gallery3d\";\r\nexport { ModelViewer } from \"./components/ui/modelviewer\";\r\nexport { VideoPlane } from \"./components/ui/videoplane\";\r\nexport { ImagePlane } from \"./components/ui/imageplane\";\r\nexport { AudioVisualizer } from \"./components/ui/audiovisualizer\";\r\n\r\n\r\n/* ======================================\r\n Effects (TODO: Refactor)\r\n====================================== */\r\n\r\nexport { Particles } from \"./components/ui/particles\";\r\nexport { Bloom } from \"./components/ui/bloom\";\r\nexport { Reflection } from \"./components/ui/reflection\";\r\nexport { Fog } from \"./components/ui/fog\";\r\nexport { ShadowSystem } from \"./components/ui/shadowsystem\";\r\nexport { GlowEffect } from \"./components/ui/gloweffect\";\r\nexport { WaveEffect } from \"./components/ui/waveeffect\";\r\nexport { NoiseField } from \"./components/ui/noisefield\";\r\n","import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from \"react\";\r\n\r\nexport type ThemeName = \"light\" | \"dark\" | \"neon\" | \"glass\" | \"corporate\" | \"vibrant\";\r\n\r\nconst THEME_CLASSES: ThemeName[] = [\"light\", \"dark\", \"neon\", \"glass\", \"corporate\", \"vibrant\"];\r\nconst STORAGE_KEY = \"my3dui-theme\";\r\n\r\ninterface ThemeContextValue {\r\n theme: ThemeName;\r\n setTheme: (theme: ThemeName) => void;\r\n}\r\n\r\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\r\n\r\nexport interface ThemeProviderProps {\r\n children: React.ReactNode;\r\n /** Initial theme. Defaults to \"light\" or stored value. */\r\n defaultTheme?: ThemeName;\r\n /** Persist theme in localStorage under this key. Set to false to disable. */\r\n storageKey?: string | false;\r\n}\r\n\r\n/**\r\n * Applies theme class to document.documentElement and provides theme state.\r\n * Import My3DUI styles so token variables are available:\r\n * import '@sreedev/my3dui/styles.css'\r\n */\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = \"light\",\r\n storageKey = STORAGE_KEY,\r\n}: ThemeProviderProps) {\r\n const [theme, setThemeState] = useState<ThemeName>(() => {\r\n if (typeof window === \"undefined\") return defaultTheme;\r\n try {\r\n const stored = storageKey && localStorage.getItem(storageKey);\r\n if (stored && THEME_CLASSES.includes(stored as ThemeName)) return stored as ThemeName;\r\n } catch {\r\n /* ignore */\r\n }\r\n return defaultTheme;\r\n });\r\n\r\n const setTheme = useCallback(\r\n (next: ThemeName) => {\r\n setThemeState(next);\r\n if (typeof document === \"undefined\") return;\r\n const root = document.documentElement;\r\n THEME_CLASSES.forEach((c) => root.classList.remove(c));\r\n root.classList.add(next);\r\n try {\r\n if (storageKey) localStorage.setItem(storageKey, next);\r\n } catch {\r\n /* ignore */\r\n }\r\n },\r\n [storageKey]\r\n );\r\n\r\n useEffect(() => {\r\n const root = document.documentElement;\r\n THEME_CLASSES.forEach((c) => root.classList.remove(c));\r\n root.classList.add(theme);\r\n }, [theme]);\r\n\r\n const value = useMemo<ThemeContextValue>(() => ({ theme, setTheme }), [theme, setTheme]);\r\n\r\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\r\n}\r\n\r\nexport function useTheme(): ThemeContextValue {\r\n const ctx = useContext(ThemeContext);\r\n if (!ctx) {\r\n throw new Error(\"useTheme must be used within ThemeProvider\");\r\n }\r\n return ctx;\r\n}\r\n\r\nexport function useThemeOptional(): ThemeContextValue | null {\r\n return useContext(ThemeContext);\r\n}\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { containerSizes, getSpacing } from \"../../lib/tokens\";\r\n\r\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Max-width preset. Use \"full\" for fluid width. */\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n /** Horizontal padding: number = spacing scale (4 = 1rem), or CSS value */\r\n padding?: number | string;\r\n /** When true, max-width is 100% (same as size=\"full\") */\r\n fluid?: boolean;\r\n}\r\n\r\nconst sizeToMaxWidth: Record<NonNullable<ContainerProps[\"size\"]>, string> = {\r\n sm: \"max-w-3xl\",\r\n md: \"max-w-5xl\",\r\n lg: \"max-w-7xl\",\r\n xl: \"max-w-[1400px]\",\r\n full: \"max-w-full\",\r\n};\r\n\r\nconst defaultPadding = \"1rem\"; // 4 on scale\r\nconst responsivePadding = \"px-4 sm:px-6 lg:px-8\";\r\n\r\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\r\n (\r\n {\r\n className,\r\n size = \"lg\",\r\n padding,\r\n fluid = false,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const effectiveSize = fluid ? \"full\" : size;\r\n const paddingStyle =\r\n padding !== undefined\r\n ? {\r\n paddingLeft: typeof padding === \"number\" ? getSpacing(padding) : padding,\r\n paddingRight: typeof padding === \"number\" ? getSpacing(padding) : padding,\r\n }\r\n : undefined;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"w-full mx-auto\",\r\n padding === undefined && responsivePadding,\r\n sizeToMaxWidth[effectiveSize],\r\n className\r\n )}\r\n style={paddingStyle ? { ...paddingStyle, ...style } : style}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nContainer.displayName = \"Container\";\r\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","/**\r\n * My3DUI Design Tokens\r\n * Use these for consistent spacing, radius, and theming across all components.\r\n * CSS variables (--my3dui-*) can be overridden by consumers for full theming.\r\n */\r\n\r\n/** Spacing scale: 1 unit = 0.25rem (4px). Use for gap, padding, margin. */\r\nexport const spacing = {\r\n 0: \"0\",\r\n 1: \"0.25rem\", // 4px\r\n 2: \"0.5rem\", // 8px\r\n 3: \"0.75rem\", // 12px\r\n 4: \"1rem\", // 16px\r\n 5: \"1.25rem\",\r\n 6: \"1.5rem\",\r\n 8: \"2rem\",\r\n 10: \"2.5rem\",\r\n 12: \"3rem\",\r\n 16: \"4rem\",\r\n 20: \"5rem\",\r\n 24: \"6rem\",\r\n} as const;\r\n\r\n/** Convert spacing scale number to CSS value (e.g. 4 -> \"1rem\") */\r\nexport function getSpacing(n: number): string {\r\n return spacing[n as keyof typeof spacing] ?? `${n * 0.25}rem`;\r\n}\r\n\r\n/** Border radius scale */\r\nexport const radius = {\r\n none: \"0\",\r\n sm: \"0.125rem\", // 2px\r\n md: \"0.375rem\", // 6px\r\n lg: \"0.5rem\", // 8px\r\n xl: \"0.75rem\", // 12px\r\n \"2xl\": \"1rem\",\r\n \"3xl\": \"1.5rem\",\r\n full: \"9999px\",\r\n} as const;\r\n\r\n/** Z-index scale for overlays, modals, toasts */\r\nexport const zIndex = {\r\n base: 0,\r\n dropdown: 50,\r\n sticky: 100,\r\n overlay: 200,\r\n modal: 300,\r\n popover: 400,\r\n toast: 500,\r\n tooltip: 600,\r\n max: 9999,\r\n} as const;\r\n\r\n/** Animation durations (ms) */\r\nexport const duration = {\r\n fast: 150,\r\n normal: 200,\r\n slow: 300,\r\n} as const;\r\n\r\n/** Breakpoint keys for responsive props (align with Tailwind defaults) */\r\nexport const breakpoints = [\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const;\r\nexport type Breakpoint = (typeof breakpoints)[number];\r\n\r\n/** Container max-width presets (maps to Tailwind max-w-*) */\r\nexport const containerSizes = {\r\n sm: \"48rem\", // max-w-3xl\r\n md: \"64rem\", // max-w-5xl\r\n lg: \"80rem\", // max-w-7xl\r\n xl: \"87.5rem\", // 1400px\r\n full: \"100%\",\r\n} as const;\r\n\r\n/** CSS variable names for theming (consumers can set these) */\r\nexport const cssVars = {\r\n color: {\r\n primary: \"var(--primary)\",\r\n primaryForeground: \"var(--primary-foreground)\",\r\n secondary: \"var(--secondary)\",\r\n secondaryForeground: \"var(--secondary-foreground)\",\r\n accent: \"var(--accent)\",\r\n accentForeground: \"var(--accent-foreground)\",\r\n destructive: \"var(--destructive)\",\r\n destructiveForeground: \"var(--destructive-foreground)\",\r\n muted: \"var(--muted)\",\r\n mutedForeground: \"var(--muted-foreground)\",\r\n background: \"var(--background)\",\r\n foreground: \"var(--foreground)\",\r\n border: \"var(--border)\",\r\n ring: \"var(--ring)\",\r\n },\r\n radius: \"var(--radius)\",\r\n spacing: \"var(--spacing)\",\r\n} as const;\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { getSpacing } from \"../../lib/tokens\";\r\nimport type { Breakpoint } from \"../../lib/tokens\";\r\n\r\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * Number of columns, or responsive map: { sm?: 1, md?: 2, lg?: 3, ... }.\r\n * Values 1–12 use Tailwind; larger values use inline gridTemplateColumns.\r\n */\r\n cols?: number | { [K in Breakpoint]?: number };\r\n /** Gap: number = spacing scale, or CSS value */\r\n gap?: number | string;\r\n /** Minimum column width for auto-fit (e.g. \"minmax(200px, 1fr)\") */\r\n minColWidth?: string;\r\n}\r\n\r\n/** Explicit Tailwind grid-cols classes so they are not purged (1–12) */\r\nconst gridColsClasses: Record<number, string> = {\r\n 1: \"grid-cols-1\",\r\n 2: \"grid-cols-2\",\r\n 3: \"grid-cols-3\",\r\n 4: \"grid-cols-4\",\r\n 5: \"grid-cols-5\",\r\n 6: \"grid-cols-6\",\r\n 7: \"grid-cols-7\",\r\n 8: \"grid-cols-8\",\r\n 9: \"grid-cols-9\",\r\n 10: \"grid-cols-10\",\r\n 11: \"grid-cols-11\",\r\n 12: \"grid-cols-12\",\r\n};\r\n\r\n/** Responsive grid-cols: breakpoint -> 1-12 -> class name */\r\nconst responsiveGridCols: Record<Breakpoint, Record<number, string>> = {\r\n sm: { 1: \"sm:grid-cols-1\", 2: \"sm:grid-cols-2\", 3: \"sm:grid-cols-3\", 4: \"sm:grid-cols-4\", 5: \"sm:grid-cols-5\", 6: \"sm:grid-cols-6\", 7: \"sm:grid-cols-7\", 8: \"sm:grid-cols-8\", 9: \"sm:grid-cols-9\", 10: \"sm:grid-cols-10\", 11: \"sm:grid-cols-11\", 12: \"sm:grid-cols-12\" },\r\n md: { 1: \"md:grid-cols-1\", 2: \"md:grid-cols-2\", 3: \"md:grid-cols-3\", 4: \"md:grid-cols-4\", 5: \"md:grid-cols-5\", 6: \"md:grid-cols-6\", 7: \"md:grid-cols-7\", 8: \"md:grid-cols-8\", 9: \"md:grid-cols-9\", 10: \"md:grid-cols-10\", 11: \"md:grid-cols-11\", 12: \"md:grid-cols-12\" },\r\n lg: { 1: \"lg:grid-cols-1\", 2: \"lg:grid-cols-2\", 3: \"lg:grid-cols-3\", 4: \"lg:grid-cols-4\", 5: \"lg:grid-cols-5\", 6: \"lg:grid-cols-6\", 7: \"lg:grid-cols-7\", 8: \"lg:grid-cols-8\", 9: \"lg:grid-cols-9\", 10: \"lg:grid-cols-10\", 11: \"lg:grid-cols-11\", 12: \"lg:grid-cols-12\" },\r\n xl: { 1: \"xl:grid-cols-1\", 2: \"xl:grid-cols-2\", 3: \"xl:grid-cols-3\", 4: \"xl:grid-cols-4\", 5: \"xl:grid-cols-5\", 6: \"xl:grid-cols-6\", 7: \"xl:grid-cols-7\", 8: \"xl:grid-cols-8\", 9: \"xl:grid-cols-9\", 10: \"xl:grid-cols-10\", 11: \"xl:grid-cols-11\", 12: \"xl:grid-cols-12\" },\r\n \"2xl\": { 1: \"2xl:grid-cols-1\", 2: \"2xl:grid-cols-2\", 3: \"2xl:grid-cols-3\", 4: \"2xl:grid-cols-4\", 5: \"2xl:grid-cols-5\", 6: \"2xl:grid-cols-6\", 7: \"2xl:grid-cols-7\", 8: \"2xl:grid-cols-8\", 9: \"2xl:grid-cols-9\", 10: \"2xl:grid-cols-10\", 11: \"2xl:grid-cols-11\", 12: \"2xl:grid-cols-12\" },\r\n};\r\n\r\nexport const Grid = React.forwardRef<HTMLDivElement, GridProps>(\r\n ({ className, cols = 1, gap = 4, minColWidth, style, ...props }, ref) => {\r\n const gapValue = typeof gap === \"number\" ? getSpacing(gap) : gap;\r\n\r\n if (typeof cols === \"number\") {\r\n const gridTemplateColumns =\r\n cols > 12 || minColWidth\r\n ? { gridTemplateColumns: minColWidth ?? `repeat(${cols}, minmax(0, 1fr))` }\r\n : {};\r\n const gridClass = cols >= 1 && cols <= 12 ? gridColsClasses[cols] : \"\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"grid\", gridClass, className)}\r\n style={{ gap: gapValue, ...gridTemplateColumns, ...style }}\r\n {...props}\r\n />\r\n );\r\n }\r\n\r\n const responsiveClasses = ([\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const)\r\n .filter((bp) => cols[bp] != null)\r\n .map((bp) => {\r\n const val = cols[bp]!;\r\n if (val >= 1 && val <= 12) return responsiveGridCols[bp][val];\r\n return null;\r\n })\r\n .filter(Boolean);\r\n\r\n const responsiveStyle: React.CSSProperties = {};\r\n ([\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"] as const).forEach((bp) => {\r\n const val = cols[bp];\r\n if (val != null && val > 12) {\r\n responsiveStyle.gridTemplateColumns = `repeat(${val}, minmax(0, 1fr))`;\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"grid\", responsiveClasses, className)}\r\n style={{ gap: gapValue, ...responsiveStyle, ...style }}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nGrid.displayName = \"Grid\";\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { getSpacing } from \"../../lib/tokens\";\r\n\r\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /** Flex direction */\r\n direction?: \"row\" | \"col\" | \"row-reverse\" | \"col-reverse\";\r\n /** Gap: number = spacing scale (4 = 1rem), or CSS value */\r\n gap?: number | string;\r\n align?: \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\r\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\r\n wrap?: boolean;\r\n /** Inline flex (fit content) vs block flex (full width) */\r\n inline?: boolean;\r\n}\r\n\r\nconst alignMap = {\r\n start: \"items-start\",\r\n center: \"items-center\",\r\n end: \"items-end\",\r\n stretch: \"items-stretch\",\r\n baseline: \"items-baseline\",\r\n} as const;\r\n\r\nconst justifyMap = {\r\n start: \"justify-start\",\r\n center: \"justify-center\",\r\n end: \"justify-end\",\r\n between: \"justify-between\",\r\n around: \"justify-around\",\r\n evenly: \"justify-evenly\",\r\n} as const;\r\n\r\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\r\n (\r\n {\r\n className,\r\n direction = \"col\",\r\n gap = 4,\r\n align = \"stretch\",\r\n justify = \"start\",\r\n wrap = false,\r\n inline = false,\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const directionClass =\r\n direction === \"col\"\r\n ? \"flex-col\"\r\n : direction === \"row\"\r\n ? \"flex-row\"\r\n : direction === \"col-reverse\"\r\n ? \"flex-col-reverse\"\r\n : \"flex-row-reverse\";\r\n\r\n const gapValue = typeof gap === \"number\" ? getSpacing(gap) : gap;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n directionClass,\r\n wrap && \"flex-wrap\",\r\n inline && \"inline-flex\",\r\n alignMap[align],\r\n justifyMap[justify],\r\n className\r\n )}\r\n style={{ gap: gapValue, ...style }}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nStack.displayName = \"Stack\";\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { getSpacing } from \"../../lib/tokens\";\r\nimport { Container } from \"./container\";\r\n\r\nexport interface SectionProps extends React.HTMLAttributes<HTMLElement> {\r\n /** Render without inner Container (full-bleed content) */\r\n fullWidth?: boolean;\r\n /** Background variant for theming */\r\n background?: \"default\" | \"muted\" | \"brand\" | \"glass\";\r\n /** Container size when not fullWidth */\r\n containerSize?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n /** Remove vertical padding */\r\n noPadding?: boolean;\r\n /** Vertical padding: number = spacing scale (e.g. 12 = 3rem), or CSS value. Default responsive: py-12 md:py-24 lg:py-32 */\r\n paddingY?: number | string;\r\n /** Semantic element */\r\n as?: \"section\" | \"div\" | \"article\";\r\n}\r\n\r\nconst backgroundClasses = {\r\n default: \"bg-background text-foreground\",\r\n muted: \"bg-muted text-muted-foreground\",\r\n brand: \"bg-primary text-primary-foreground\",\r\n glass: \"bg-background/80 backdrop-blur-sm border-y border-border/50\",\r\n} as const;\r\n\r\nexport const Section = React.forwardRef<HTMLElement, SectionProps>(\r\n (\r\n {\r\n className,\r\n children,\r\n fullWidth = false,\r\n background = \"default\",\r\n containerSize = \"lg\",\r\n noPadding = false,\r\n paddingY,\r\n as: Component = \"section\",\r\n style,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const paddingStyle =\r\n noPadding || paddingY === undefined\r\n ? undefined\r\n : {\r\n paddingTop: typeof paddingY === \"number\" ? getSpacing(paddingY) : paddingY,\r\n paddingBottom: typeof paddingY === \"number\" ? getSpacing(paddingY) : paddingY,\r\n };\r\n\r\n const content = fullWidth ? (\r\n children\r\n ) : (\r\n <Container size={containerSize}>{children}</Container>\r\n );\r\n\r\n return (\r\n <Component\r\n ref={ref as unknown as React.Ref<HTMLDivElement>}\r\n className={cn(\r\n \"relative w-full\",\r\n !noPadding && paddingY === undefined && \"py-12 md:py-24 lg:py-32\",\r\n backgroundClasses[background],\r\n className\r\n )}\r\n style={paddingStyle ? { ...paddingStyle, ...style } : style}\r\n {...props}\r\n >\r\n {content}\r\n </Component>\r\n );\r\n }\r\n);\r\nSection.displayName = \"Section\";\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { zIndex } from \"../../lib/tokens\";\r\n\r\nexport interface PageLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\r\n header?: React.ReactNode;\r\n footer?: React.ReactNode;\r\n sidebar?: React.ReactNode;\r\n sidebarPosition?: \"left\" | \"right\";\r\n /** Sidebar width: CSS value or number (spacing scale). Default 16rem (w-64) */\r\n sidebarWidth?: string | number;\r\n /** Main content area min height */\r\n minHeight?: \"screen\" | \"full\" | \"auto\";\r\n}\r\n\r\nfunction getSidebarWidth(w: string | number | undefined): string {\r\n if (w === undefined) return \"16rem\";\r\n if (typeof w === \"number\") return `${w * 0.25}rem`;\r\n return w;\r\n}\r\n\r\nexport const PageLayout = React.forwardRef<HTMLDivElement, PageLayoutProps>(\r\n (\r\n {\r\n className,\r\n header,\r\n footer,\r\n sidebar,\r\n sidebarPosition = \"left\",\r\n sidebarWidth,\r\n minHeight = \"screen\",\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const width = getSidebarWidth(sidebarWidth);\r\n const minHeightClass =\r\n minHeight === \"screen\"\r\n ? \"min-h-screen\"\r\n : minHeight === \"full\"\r\n ? \"min-h-full\"\r\n : \"\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col\", minHeightClass, className)}\r\n {...props}\r\n >\r\n {header && (\r\n <header\r\n className=\"sticky top-0 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\"\r\n style={{ zIndex: zIndex.sticky }}\r\n >\r\n {header}\r\n </header>\r\n )}\r\n\r\n <div className=\"flex-1 flex min-h-0\">\r\n {sidebar && sidebarPosition === \"left\" && (\r\n <aside\r\n className=\"shrink-0 border-r bg-muted/40 p-4\"\r\n style={{ width }}\r\n >\r\n {sidebar}\r\n </aside>\r\n )}\r\n\r\n <main className=\"flex-1 min-w-0\">{children}</main>\r\n\r\n {sidebar && sidebarPosition === \"right\" && (\r\n <aside\r\n className=\"shrink-0 border-l bg-muted/40 p-4\"\r\n style={{ width }}\r\n >\r\n {sidebar}\r\n </aside>\r\n )}\r\n </div>\r\n\r\n {footer && (\r\n <footer className=\"border-t bg-muted/40 shrink-0\">{footer}</footer>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nPageLayout.displayName = \"PageLayout\";\r\n","import { ReactNode, useMemo } from \"react\";\r\nimport { Environment } from \"@react-three/drei\";\r\n\r\n/* ---------------------------------------------\r\n Types\r\n--------------------------------------------- */\r\n\r\nexport type StagePreset =\r\n | \"rembrandt\"\r\n | \"portrait\"\r\n | \"upfront\"\r\n | \"soft\";\r\n\r\nexport interface StageProps {\r\n children: ReactNode;\r\n\r\n preset?: StagePreset;\r\n\r\n intensity?: number;\r\n\r\n environment?: string;\r\n\r\n shadows?: boolean;\r\n}\r\n\r\n/* ---------------------------------------------\r\n Light Presets\r\n--------------------------------------------- */\r\n\r\nfunction getPresetLights(preset: StagePreset) {\r\n switch (preset) {\r\n case \"portrait\":\r\n return [\r\n { pos: [2, 3, 4], intensity: 1 },\r\n { pos: [-2, 2, 3], intensity: 0.5 },\r\n ];\r\n\r\n case \"upfront\":\r\n return [\r\n { pos: [0, 4, 4], intensity: 1.2 },\r\n { pos: [0, -2, -4], intensity: 0.4 },\r\n ];\r\n\r\n case \"soft\":\r\n return [\r\n { pos: [3, 3, 3], intensity: 0.6 },\r\n { pos: [-3, 2, 1], intensity: 0.4 },\r\n ];\r\n\r\n case \"rembrandt\":\r\n default:\r\n return [\r\n { pos: [4, 4, 4], intensity: 1 },\r\n { pos: [-4, 2, 1], intensity: 0.5 },\r\n ];\r\n }\r\n}\r\n\r\n/* ---------------------------------------------\r\n Stage Component\r\n--------------------------------------------- */\r\n\r\nexport function Stage({\r\n children,\r\n\r\n preset = \"rembrandt\",\r\n\r\n intensity = 0.5,\r\n\r\n environment = \"city\",\r\n\r\n shadows = true,\r\n}: StageProps) {\r\n\r\n /* Memoize lights (performance) */\r\n const lights = useMemo(\r\n () => getPresetLights(preset),\r\n [preset],\r\n );\r\n return (\r\n <group>\r\n\r\n {/* Ambient Base */}\r\n <ambientLight intensity={intensity * 0.5} />\r\n\r\n {/* Directional Lights */}\r\n {lights.map((light, i) => (\r\n <directionalLight\r\n key={i}\r\n position={light.pos as [number, number, number]}\r\n intensity={light.intensity * intensity}\r\n castShadow={shadows}\r\n shadow-mapSize-width={2048}\r\n shadow-mapSize-height={2048}\r\n />\r\n ))}\r\n\r\n {/* HDRI Environment */}\r\n {environment && (\r\n <Environment preset={environment as any} />\r\n )}\r\n\r\n {/* Scene Content */}\r\n <group>{children}</group>\r\n\r\n </group>\r\n );\r\n}\r\n","import React, { ReactNode, Suspense } from \"react\";\r\nimport { Canvas } from \"@react-three/fiber\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface ViewportProps {\r\n children: ReactNode;\r\n className?: string;\r\n aspect?: number;\r\n fallback?: ReactNode;\r\n dpr?: [number, number];\r\n}\r\n\r\nexport function Viewport({\r\n children,\r\n className,\r\n aspect = 16 / 9,\r\n fallback = null,\r\n dpr = [1, 2],\r\n}: ViewportProps) {\r\n return (\r\n <div\r\n className={cn(\"relative w-full overflow-hidden rounded-xl bg-muted/20\", className)}\r\n style={{ aspectRatio: aspect }}\r\n >\r\n <Suspense fallback={fallback}>\r\n <Canvas\r\n dpr={dpr}\r\n camera={{ position: [0, 0, 5], fov: 50 }}\r\n shadows\r\n className=\"h-full w-full touch-none\"\r\n gl={{\r\n antialias: true,\r\n alpha: true,\r\n powerPreference: \"high-performance\",\r\n }}\r\n >\r\n {children}\r\n </Canvas>\r\n </Suspense>\r\n </div>\r\n );\r\n}\r\n","import React, { ReactNode, Children, useRef, useMemo } from \"react\";\r\nimport { Group } from \"three\";\r\n\r\nexport interface Container3DProps {\r\n children: ReactNode;\r\n direction?: \"row\" | \"column\" | \"grid\";\r\n gap?: number;\r\n align?: \"start\" | \"center\" | \"end\";\r\n}\r\n\r\nexport function Container3D({\r\n children,\r\n direction = \"row\",\r\n gap = 1,\r\n align = \"center\",\r\n}: Container3DProps) {\r\n const groupRef = useRef<Group>(null);\r\n\r\n // Convert children to array\r\n const childArray = Children.toArray(children);\r\n const count = childArray.length;\r\n\r\n // Calculate layout positions\r\n const positions = useMemo(() => {\r\n const pos: [number, number, number][] = [];\r\n\r\n // Grid dimensions\r\n const cols = Math.ceil(Math.sqrt(count));\r\n\r\n // Total dimensions for centering\r\n let totalWidth = 0;\r\n let totalHeight = 0;\r\n\r\n if (direction === \"row\") {\r\n totalWidth = (count - 1) * gap;\r\n } else if (direction === \"column\") {\r\n totalHeight = (count - 1) * gap;\r\n } else if (direction === \"grid\") {\r\n totalWidth = (cols - 1) * gap;\r\n totalHeight = (Math.ceil(count / cols) - 1) * gap;\r\n }\r\n\r\n // Offset to start position based on alignment\r\n const startX = align === \"center\" ? -totalWidth / 2 : align === \"end\" ? -totalWidth : 0;\r\n const startY = align === \"center\" ? totalHeight / 2 : align === \"end\" ? totalHeight : 0; // Note: Y usually goes up in 3D\r\n\r\n for (let i = 0; i < count; i++) {\r\n let x = 0;\r\n let y = 0;\r\n let z = 0;\r\n\r\n if (direction === \"row\") {\r\n x = startX + i * gap;\r\n } else if (direction === \"column\") {\r\n y = startY - i * gap; // Downwards for list logic usually, but 3D is variable. Assuming top-down similar to DOM\r\n } else if (direction === \"grid\") {\r\n const col = i % cols;\r\n const row = Math.floor(i / cols);\r\n x = startX + col * gap;\r\n y = startY - row * gap;\r\n }\r\n\r\n pos.push([x, y, z]);\r\n }\r\n return pos;\r\n }, [count, direction, gap, align]);\r\n\r\n return (\r\n <group ref={groupRef}>\r\n {childArray.map((child, index) => (\r\n <group key={index} position={positions[index]}>\r\n {child}\r\n </group>\r\n ))}\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { Grid } from \"@react-three/drei\";\r\n\r\nexport interface Grid3DProps {\r\n cellSize?: number;\r\n cellColor?: string;\r\n fadeDistance?: number;\r\n infiniteGrid?: boolean;\r\n}\r\n\r\nexport function Grid3D({\r\n cellSize = 1,\r\n cellColor = \"#6f6f6f\",\r\n fadeDistance = 50,\r\n infiniteGrid = true,\r\n}: Grid3DProps) {\r\n // Config for Grid from drei\r\n const config = useMemo(() => ({\r\n cellSize: cellSize,\r\n cellThickness: 0.5,\r\n cellColor: cellColor,\r\n sectionSize: cellSize * 10,\r\n sectionThickness: 1,\r\n sectionColor: cellColor,\r\n fadeDistance: fadeDistance,\r\n fadeStrength: 1,\r\n followCamera: infiniteGrid,\r\n infiniteGrid: infiniteGrid,\r\n }), [cellSize, cellColor, fadeDistance, infiniteGrid]);\r\n\r\n return (\r\n <Grid\r\n position={[0, -0.01, 0]}\r\n args={[10.5, 10.5]}\r\n {...config}\r\n />\r\n );\r\n}\r\n","import React, { useRef } from \"react\";\r\nimport {\r\n OrbitControls,\r\n FlyControls,\r\n FirstPersonControls\r\n} from \"@react-three/drei\";\r\n\r\nexport interface CameraControllerProps {\r\n mode?: \"orbit\" | \"fly\" | \"first-person\";\r\n damping?: number;\r\n minDistance?: number;\r\n maxDistance?: number;\r\n autoRotate?: boolean;\r\n}\r\n\r\nexport function CameraController({\r\n mode = \"orbit\",\r\n damping = 0.05,\r\n minDistance = 1,\r\n maxDistance = 100,\r\n autoRotate = false,\r\n}: CameraControllerProps) {\r\n const controlsRef = useRef(null);\r\n\r\n switch (mode) {\r\n case \"fly\":\r\n return (\r\n <FlyControls\r\n ref={controlsRef}\r\n movementSpeed={10}\r\n dragToLook\r\n />\r\n );\r\n case \"first-person\":\r\n return (\r\n <FirstPersonControls\r\n ref={controlsRef}\r\n lookSpeed={0.1}\r\n movementSpeed={10}\r\n />\r\n );\r\n case \"orbit\":\r\n default:\r\n return (\r\n <OrbitControls\r\n ref={controlsRef}\r\n enableDamping\r\n dampingFactor={damping}\r\n minDistance={minDistance}\r\n maxDistance={maxDistance}\r\n autoRotate={autoRotate}\r\n makeDefault\r\n />\r\n );\r\n }\r\n}\r\n","import React, { ReactNode } from \"react\";\r\nimport { Color } from \"three\";\r\n\r\nexport interface Scene3DProps {\r\n children: ReactNode;\r\n className?: string;\r\n background?: string;\r\n fog?: boolean;\r\n}\r\n\r\nexport function Scene3D({\r\n children,\r\n className, // className is unused in R3F scene structure usually, but kept for API consistency\r\n background = \"transparent\",\r\n fog = false,\r\n}: Scene3DProps) {\r\n return (\r\n <group>\r\n {background && background !== \"transparent\" && (\r\n <color attach=\"background\" args={[background]} />\r\n )}\r\n {fog && <fog attach=\"fog\" args={[\"#000\", 5, 30]} />}\r\n\r\n {/* Default Camera and Lights if needed, but Scene3D is described as minimal. \r\n The registry says \"provides basic lighting and a camera without opinionated presets\".\r\n */}\r\n <ambientLight intensity={0.5} />\r\n <pointLight position={[10, 10, 10]} intensity={1} castShadow />\r\n\r\n {children}\r\n </group>\r\n );\r\n}\r\n","\r\nimport * as React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\n/* =====================================================\r\n Variants\r\n===================================================== */\r\n\r\nexport const buttonVariants = cva(\r\n [\r\n \"relative inline-flex items-center justify-center gap-2\",\r\n \"whitespace-nowrap font-medium select-none transition-all\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n ].join(\" \"),\r\n {\r\n variants: {\r\n variant: {\r\n /* Token-based; works across light, dark, neon, glass, corporate, vibrant */\r\n primary:\r\n \"bg-primary text-primary-foreground border-b-4 border-primary/80 \" +\r\n \"hover:bg-primary/90 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n secondary:\r\n \"bg-secondary text-secondary-foreground border-b-4 border-border \" +\r\n \"hover:bg-secondary/80 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n accent:\r\n \"bg-accent text-accent-foreground border-b-4 border-accent/80 \" +\r\n \"hover:bg-accent/90 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n destructive:\r\n \"bg-destructive text-destructive-foreground border-b-4 border-destructive/80 \" +\r\n \"hover:bg-destructive/90 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-destructive\",\r\n\r\n outline:\r\n \"border-2 border-border bg-transparent text-foreground \" +\r\n \"hover:bg-muted/70 active:border-b-0 active:translate-y-0 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n ghost:\r\n \"bg-transparent text-foreground \" +\r\n \"hover:bg-muted/80 active:border-b-0 active:translate-y-0 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n soft:\r\n \"bg-primary/20 text-foreground border border-border \" +\r\n \"hover:bg-primary/30 active:border-b-0 active:translate-y-1 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n glass:\r\n \"bg-background/15 backdrop-blur-xl border border-border \" +\r\n \"text-foreground shadow-soft \" +\r\n \"hover:bg-background/25 \" +\r\n \"focus-visible:ring-ring/50\",\r\n\r\n gradient:\r\n \"bg-gradient-to-r from-primary via-accent to-destructive text-primary-foreground \" +\r\n \"border-0 shadow-soft hover:brightness-110 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n neon:\r\n \"bg-background text-accent border border-accent shadow-glow \" +\r\n \"hover:shadow-glow hover:brightness-110 \" +\r\n \"focus-visible:ring-ring\",\r\n\r\n link:\r\n \"bg-transparent text-primary p-0 h-auto \" +\r\n \"underline-offset-4 hover:underline \" +\r\n \"focus-visible:ring-ring\",\r\n },\r\n\r\n /* ===============================\r\n Size\r\n =============================== */\r\n\r\n size: {\r\n sm: \"h-8 px-3 text-xs\",\r\n md: \"h-10 px-4 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n xl: \"h-14 px-10 text-lg\",\r\n icon: \"h-10 w-10 p-0\",\r\n },\r\n\r\n /* ===============================\r\n Radius\r\n =============================== */\r\n\r\n rounded: {\r\n sm: \"rounded-md\",\r\n md: \"rounded-lg\",\r\n lg: \"rounded-xl\",\r\n full: \"rounded-full\",\r\n },\r\n },\r\n\r\n defaultVariants: {\r\n variant: \"primary\",\r\n size: \"md\",\r\n rounded: \"lg\",\r\n },\r\n }\r\n);\r\n\r\n/* =====================================================\r\n Props\r\n===================================================== */\r\n\r\nexport interface Button3DProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n asChild?: boolean;\r\n loading?: boolean;\r\n\r\n /* Custom Colors */\r\n bgColor?: string;\r\n textColor?: string;\r\n borderColor?: string;\r\n\r\n /* Effects */\r\n glow?: boolean;\r\n}\r\n\r\n/* =====================================================\r\n Component\r\n===================================================== */\r\n\r\nconst Button3D = React.forwardRef<\r\n HTMLButtonElement,\r\n Button3DProps\r\n>(\r\n (\r\n {\r\n className,\r\n variant,\r\n size,\r\n rounded,\r\n\r\n asChild = false,\r\n loading = false,\r\n\r\n bgColor,\r\n textColor,\r\n borderColor,\r\n glow = false,\r\n\r\n style,\r\n children,\r\n disabled,\r\n\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n /* --------------------------------------------\r\n Dynamic Styles\r\n --------------------------------------------- */\r\n\r\n const customStyles: React.CSSProperties = {\r\n ...style,\r\n\r\n ...(bgColor && { backgroundColor: bgColor }),\r\n ...(textColor && { color: textColor }),\r\n ...(borderColor && { borderColor }),\r\n };\r\n\r\n const glowStyle = glow\r\n ? { boxShadow: \"var(--shadow-glow, 0 0 25px rgb(var(--color-primary) / 0.4))\" }\r\n : {};\r\n\r\n /* --------------------------------------------\r\n Content\r\n --------------------------------------------- */\r\n\r\n const content = (\r\n <>\r\n {loading && (\r\n <svg\r\n className=\"h-4 w-4 animate-spin\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n className=\"opacity-25\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n className=\"opacity-75\"\r\n d=\"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z\"\r\n />\r\n </svg>\r\n )}\r\n\r\n <span>{children}</span>\r\n </>\r\n );\r\n\r\n /* --------------------------------------------\r\n Classes\r\n --------------------------------------------- */\r\n\r\n const classes = cn(\r\n buttonVariants({ variant, size, rounded }),\r\n \"active:scale-[0.97]\",\r\n className\r\n );\r\n\r\n /* --------------------------------------------\r\n Slot Mode\r\n --------------------------------------------- */\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref}\r\n className={classes}\r\n style={{\r\n ...customStyles,\r\n ...glowStyle,\r\n }}\r\n {...props}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n /* --------------------------------------------\r\n Motion Safe Props\r\n --------------------------------------------- */\r\n\r\n const {\r\n onDrag,\r\n onDragStart,\r\n onDragEnd,\r\n onAnimationStart,\r\n onAnimationEnd,\r\n ...safeProps\r\n } = props;\r\n\r\n /* --------------------------------------------\r\n Button\r\n --------------------------------------------- */\r\n\r\n return (\r\n <motion.button\r\n ref={ref}\r\n className={classes}\r\n style={{\r\n ...customStyles,\r\n ...glowStyle,\r\n }}\r\n disabled={disabled || loading}\r\n whileTap={{ scale: 0.96 }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 400,\r\n damping: 20,\r\n }}\r\n {...safeProps}\r\n >\r\n {content}\r\n </motion.button>\r\n );\r\n }\r\n);\r\n\r\nButton3D.displayName = \"Button3D\";\r\n\r\nexport { Button3D };","import React, { useRef, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Card3DProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children?: React.ReactNode;\r\n depth?: \"sm\" | \"md\" | \"lg\";\r\n variant?: \"glass\" | \"solid\" | \"neon\" | \"outline\";\r\n disableTilt?: boolean;\r\n}\r\n\r\nexport function Card3D({\r\n children,\r\n className,\r\n depth = \"md\",\r\n variant = \"glass\",\r\n disableTilt = false,\r\n ...props\r\n}: Card3DProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n // Motion values for tilt effect\r\n const x = useMotionValue(0);\r\n const y = useMotionValue(0);\r\n\r\n // Smooth spring animation for tilt\r\n const mouseX = useSpring(x, { stiffness: 150, damping: 15 });\r\n const mouseY = useSpring(y, { stiffness: 150, damping: 15 });\r\n\r\n const rotateX = useTransform(mouseY, [-0.5, 0.5], [\"7deg\", \"-7deg\"]);\r\n const rotateY = useTransform(mouseX, [-0.5, 0.5], [\"-7deg\", \"7deg\"]);\r\n\r\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (disableTilt || !ref.current) return;\r\n\r\n const rect = ref.current.getBoundingClientRect();\r\n const width = rect.width;\r\n const height = rect.height;\r\n\r\n const mouseXPos = e.clientX - rect.left;\r\n const mouseYPos = e.clientY - rect.top;\r\n\r\n const xPct = mouseXPos / width - 0.5;\r\n const yPct = mouseYPos / height - 0.5;\r\n\r\n x.set(xPct);\r\n y.set(yPct);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n if (disableTilt) return;\r\n x.set(0);\r\n y.set(0);\r\n };\r\n\r\n const getVariantStyles = () => {\r\n switch (variant) {\r\n case \"neon\":\r\n return \"bg-black/90 border-cyan-500/50 shadow-[0_0_30px_rgba(6,182,212,0.2)] text-cyan-50\";\r\n case \"solid\":\r\n return \"bg-white dark:bg-slate-900 border-slate-200 dark:border-slate-800 shadow-xl text-slate-900 dark:text-slate-100\";\r\n case \"outline\":\r\n return \"bg-transparent border-2 border-slate-200 dark:border-slate-700 text-slate-900 dark:text-slate-100\";\r\n case \"glass\":\r\n default:\r\n return \"bg-white/40 dark:bg-slate-900/60 backdrop-blur-xl border-white/40 dark:border-white/10 shadow-lg shadow-black/5 dark:shadow-black/20 text-slate-800 dark:text-white\";\r\n }\r\n };\r\n\r\n const getDepthValue = () => {\r\n switch (depth) {\r\n case \"sm\": return 20;\r\n case \"lg\": return 80;\r\n case \"md\": default: return 40;\r\n }\r\n };\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n onMouseMove={handleMouseMove}\r\n onMouseLeave={handleMouseLeave}\r\n style={{\r\n perspective: 1200,\r\n transformStyle: \"preserve-3d\",\r\n }}\r\n className={cn(\"relative group cursor-pointer\", className)}\r\n {...props as any}\r\n >\r\n <motion.div\r\n style={{\r\n rotateX: disableTilt ? 0 : rotateX,\r\n rotateY: disableTilt ? 0 : rotateY,\r\n transformStyle: \"preserve-3d\",\r\n }}\r\n className={cn(\r\n \"relative h-full w-full rounded-xl border p-6 transition-colors duration-300\",\r\n getVariantStyles()\r\n )}\r\n >\r\n {/* Depth Layer */}\r\n <div\r\n className=\"absolute inset-0 rounded-xl bg-black/10 dark:bg-black/40 blur-xl transition-all duration-300 -z-20\"\r\n style={{\r\n transform: `translateZ(-${getDepthValue()}px) scale(0.95)`,\r\n opacity: 0.6\r\n }}\r\n />\r\n\r\n {/* Content Layer with slight Z push */}\r\n <div style={{ transform: \"translateZ(20px)\" }}>\r\n {children}\r\n </div>\r\n\r\n {/* Dynamic Highlight/Sheen */}\r\n <div\r\n className=\"absolute inset-0 rounded-xl pointer-events-none bg-gradient-to-tr from-white/0 via-white/10 to-white/0 opacity-0 group-hover:opacity-100 transition-opacity duration-500 will-change-transform\"\r\n style={{ mixBlendMode: \"overlay\" }}\r\n />\r\n </motion.div>\r\n </motion.div>\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { ChevronDown, Box, Layers, Zap } from \"lucide-react\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\n// --- Types ---\r\n\r\nexport interface AccordionItem {\r\n title: string;\r\n content: React.ReactNode;\r\n value?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport interface Accordion3DProps {\r\n items: AccordionItem[];\r\n className?: string;\r\n variant?: \"glass\" | \"solid\" | \"neon\" | \"minimal\";\r\n defaultOpenIndex?: number | null;\r\n allowMultiple?: boolean;\r\n}\r\n\r\n/**\r\n * Accordion3D\r\n * \r\n * A 3D-inspired accordion component that uses CSS transforms and shadows\r\n * to create depth without WebGL.\r\n */\r\nexport const Accordion3D: React.FC<Accordion3DProps> = ({\r\n items,\r\n className,\r\n variant = \"glass\",\r\n defaultOpenIndex = null,\r\n allowMultiple = false,\r\n}) => {\r\n const [openIndexes, setOpenIndexes] = useState<number[]>(\r\n defaultOpenIndex !== null ? [defaultOpenIndex] : []\r\n );\r\n\r\n const toggleItem = (index: number) => {\r\n if (allowMultiple) {\r\n setOpenIndexes((prev) =>\r\n prev.includes(index)\r\n ? prev.filter((i) => i !== index)\r\n : [...prev, index]\r\n );\r\n } else {\r\n setOpenIndexes((prev) =>\r\n prev.includes(index) ? [] : [index]\r\n );\r\n }\r\n };\r\n\r\n const getVariantStyles = () => {\r\n switch (variant) {\r\n case \"neon\":\r\n return \"bg-slate-900/90 border-cyan-500/50 shadow-[0_0_15px_rgba(6,182,212,0.15)] hover:shadow-[0_0_25px_rgba(6,182,212,0.3)] text-cyan-50\";\r\n case \"solid\":\r\n return \"bg-white dark:bg-slate-800 border-slate-200 dark:border-slate-700 shadow-xl text-slate-900 dark:text-slate-100\";\r\n case \"minimal\":\r\n return \"bg-white/80 dark:bg-black/50 border-transparent shadow-sm backdrop-blur-md text-slate-800 dark:text-slate-200 hover:bg-white/95 dark:hover:bg-slate-900/80\";\r\n case \"glass\":\r\n default:\r\n return \"bg-white/40 dark:bg-slate-900/60 backdrop-blur-xl border-white/40 dark:border-white/10 shadow-lg shadow-black/5 dark:shadow-black/20 text-slate-800 dark:text-white\";\r\n }\r\n };\r\n\r\n const getDepthLayerStyles = () => {\r\n switch (variant) {\r\n case \"neon\": return \"bg-cyan-900/40\";\r\n case \"minimal\": return \"hidden\";\r\n case \"solid\": return \"bg-slate-200 dark:bg-slate-900\";\r\n case \"glass\": default: return \"bg-slate-900/10 dark:bg-black/40\";\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex flex-col gap-4 w-full max-w-2xl mx-auto\", className)}>\r\n {items.map((item, index) => {\r\n const isOpen = openIndexes.includes(index);\r\n\r\n return (\r\n <motion.div\r\n key={index}\r\n initial={false}\r\n animate={isOpen ? \"open\" : \"closed\"}\r\n className=\"relative group perspective-[1000px] z-0\"\r\n >\r\n {/* 3D Depth Layer (The physical 'thickness' behind the card) */}\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0 rounded-xl translate-y-2 translate-x-0 -z-10 transition-colors duration-300\",\r\n getDepthLayerStyles()\r\n )}\r\n variants={{\r\n open: {\r\n translateY: 4,\r\n scale: 0.99\r\n },\r\n closed: {\r\n translateY: 8,\r\n scale: 0.96\r\n }\r\n }}\r\n transition={{ duration: 0.2 }}\r\n />\r\n\r\n {/* Main Interactive Card Surface */}\r\n <motion.div\r\n className={cn(\r\n \"relative overflow-hidden rounded-xl border transition-all duration-300 will-change-transform z-10\",\r\n getVariantStyles()\r\n )}\r\n whileHover={{\r\n y: -2,\r\n scale: 1.005,\r\n transition: { type: \"spring\", stiffness: 400, damping: 25 },\r\n }}\r\n whileTap={{ scale: 0.995, y: 0 }}\r\n variants={{\r\n open: { y: 0 },\r\n closed: { y: 0 }\r\n }}\r\n >\r\n {/* Header / Trigger */}\r\n <button\r\n onClick={() => toggleItem(index)}\r\n className=\"w-full flex items-center justify-between p-5 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 rounded-xl\"\r\n aria-expanded={isOpen}\r\n >\r\n <div className=\"flex items-center gap-4\">\r\n {/* Icon Container with subtle 3D pop */}\r\n {item.icon && (\r\n <div\r\n className={cn(\r\n \"flex items-center justify-center w-10 h-10 rounded-lg bg-gradient-to-br transition-all duration-500 shadow-inner\",\r\n variant === \"neon\" ? \"from-cyan-500/20 to-blue-600/20 text-cyan-400\" :\r\n variant === \"solid\" ? \"from-slate-100 to-slate-200 dark:from-slate-800 dark:to-slate-900 text-slate-600 dark:text-slate-300\" :\r\n \"from-white/50 to-white/10 dark:from-white/10 dark:to-white/5 text-slate-700 dark:text-slate-200\"\r\n )}\r\n >\r\n <span className={cn(\"transition-transform duration-300\", isOpen ? \"scale-110\" : \"scale-100\")}>\r\n {item.icon}\r\n </span>\r\n </div>\r\n )}\r\n\r\n <div className=\"flex flex-col\">\r\n <span className={cn(\r\n \"text-lg font-semibold tracking-tight transition-colors\",\r\n isOpen ? \"opacity-100\" : \"opacity-80 group-hover:opacity-100\"\r\n )}>\r\n {item.title}\r\n </span>\r\n {isOpen && item.value && (\r\n <span className=\"text-xs opacity-60 font-mono\">{item.value}</span>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Chevron Area */}\r\n <div className=\"flex items-center gap-3\">\r\n {/* Status Indicator (Glow Dot) */}\r\n <div className={cn(\r\n \"w-2 h-2 rounded-full transition-all duration-500\",\r\n isOpen\r\n ? (variant === \"neon\" ? \"bg-cyan-400 shadow-[0_0_10px_#22d3ee]\" : \"bg-emerald-500 shadow-[0_0_8px_rgba(16,185,129,0.4)]\")\r\n : \"bg-slate-400/30\"\r\n )} />\r\n\r\n <motion.div\r\n variants={{\r\n open: { rotate: 180 },\r\n closed: { rotate: 0 }\r\n }}\r\n transition={{ type: \"spring\", stiffness: 200, damping: 20 }}\r\n className={cn(\r\n \"p-1 rounded-full\",\r\n variant === \"neon\" ? \"text-cyan-400\" : \"text-slate-500 dark:text-slate-400\"\r\n )}\r\n >\r\n <ChevronDown className=\"w-5 h-5\" />\r\n </motion.div>\r\n </div>\r\n </button>\r\n\r\n {/* Collapsible Content */}\r\n <AnimatePresence initial={false}>\r\n {isOpen && (\r\n <motion.div\r\n key=\"content\"\r\n initial=\"collapsed\"\r\n animate=\"open\"\r\n exit=\"collapsed\"\r\n variants={{\r\n open: { opacity: 1, height: \"auto\" },\r\n collapsed: { opacity: 0, height: 0 },\r\n }}\r\n transition={{\r\n duration: 0.4,\r\n ease: [0.04, 0.62, 0.23, 0.98],\r\n }}\r\n >\r\n <div className=\"px-5 pb-6 pt-0\">\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ delay: 0.1, duration: 0.3 }}\r\n className=\"relative\"\r\n >\r\n {/* Seamless Divider */}\r\n <div className=\"h-px w-full bg-gradient-to-r from-transparent via-current to-transparent opacity-10 mb-5\" />\r\n\r\n <div className=\"text-base sm:text-[15px] opacity-80 leading-relaxed font-normal pl-14\">\r\n {item.content}\r\n </div>\r\n </motion.div>\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Glassmorphism Shine Effect on Hover */}\r\n <div\r\n className=\"absolute inset-0 pointer-events-none bg-gradient-to-tr from-white/0 via-white/5 to-white/0 opacity-0 group-hover:opacity-100 transition-opacity duration-700\"\r\n style={{ mixBlendMode: 'overlay' }}\r\n />\r\n </motion.div>\r\n </motion.div>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { HTMLMotionProps } from \"framer-motion\";\r\n\r\nexport interface Badge3DProps extends HTMLMotionProps<\"div\"> {\r\n variant?: \"default\" | \"secondary\" | \"success\" | \"warning\" | \"danger\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n pulse?: boolean;\r\n}\r\n\r\nexport const Badge3D = React.forwardRef<HTMLDivElement, Badge3DProps>(\r\n ({ className, variant = \"default\", size = \"md\", pulse = false, children, ...props }, ref) => {\r\n const variants = {\r\n default: \"bg-primary text-primary-foreground border-b-2 border-primary/80 shadow-sm\",\r\n secondary: \"bg-secondary text-secondary-foreground border-b-2 border-secondary/80 shadow-sm\",\r\n success: \"bg-emerald-500 text-white border-b-2 border-emerald-700 shadow-sm\",\r\n warning: \"bg-amber-500 text-white border-b-2 border-amber-700 shadow-sm\",\r\n danger: \"bg-red-500 text-white border-b-2 border-red-700 shadow-sm\",\r\n outline: \"border-2 border-border bg-background text-foreground border-b-4 shadow-sm\",\r\n };\r\n\r\n const sizes = {\r\n sm: \"px-2 py-0.5 text-xs\",\r\n md: \"px-2.5 py-1 text-sm\",\r\n lg: \"px-3 py-1.5 text-base\",\r\n };\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n whileHover={{ y: -1, scale: 1.05 }}\r\n whileTap={{ y: 0, scale: 0.98 }}\r\n className={cn(\r\n \"inline-flex items-center rounded-md font-medium transition-all active:translate-y-[2px] active:border-b-0\",\r\n variants[variant],\r\n sizes[size],\r\n pulse && \"animate-pulse\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n }\r\n);\r\nBadge3D.displayName = \"Badge3D\";\r\n","import React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Input3DProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n error?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const Input3D = React.forwardRef<HTMLInputElement, Input3DProps>(\r\n ({ className, label, error, icon, type = \"text\", ...props }, ref) => {\r\n const [isFocused, setIsFocused] = useState(false);\r\n\r\n return (\r\n <div className=\"w-full space-y-2\">\r\n {label && (\r\n <label className=\"text-sm font-medium text-foreground\">\r\n {label}\r\n </label>\r\n )}\r\n <motion.div\r\n animate={{\r\n y: isFocused ? -2 : 0,\r\n }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 20 }}\r\n className=\"relative\"\r\n >\r\n {icon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\r\n {icon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n type={type}\r\n onFocus={() => setIsFocused(true)}\r\n onBlur={() => setIsFocused(false)}\r\n className={cn(\r\n \"flex h-11 w-full rounded-lg border-2 border-input bg-background px-3 py-2 text-sm ring-offset-background transition-all\",\r\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\r\n \"placeholder:text-muted-foreground\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:border-primary\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50\",\r\n \"border-b-4 border-b-slate-300 dark:border-b-slate-700\",\r\n \"focus:border-b-primary\",\r\n error && \"border-red-500 focus-visible:ring-red-500\",\r\n icon && \"pl-10\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </motion.div>\r\n {error && (\r\n <p className=\"text-sm text-red-500\">{error}</p>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nInput3D.displayName = \"Input3D\";\r\n","import React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Slider3DProps {\r\n value?: number;\r\n defaultValue?: number;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n onChange?: (value: number) => void;\r\n label?: string;\r\n showValue?: boolean;\r\n className?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function Slider3D({\r\n value: controlledValue,\r\n defaultValue = 50,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n onChange,\r\n label,\r\n showValue = true,\r\n className,\r\n disabled = false,\r\n}: Slider3DProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : internalValue;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = parseFloat(e.target.value);\r\n if (!isControlled) setInternalValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n const percentage = ((value - min) / (max - min)) * 100;\r\n\r\n return (\r\n <div className={cn(\"w-full space-y-2\", className)}>\r\n {(label || showValue) && (\r\n <div className=\"flex items-center justify-between\">\r\n {label && <label className=\"text-sm font-medium\">{label}</label>}\r\n {showValue && (\r\n <span className=\"text-sm font-mono text-muted-foreground\">\r\n {value}\r\n </span>\r\n )}\r\n </div>\r\n )}\r\n <div className=\"relative\">\r\n {/* Track Background */}\r\n <div className=\"h-3 w-full rounded-full bg-slate-200 dark:bg-slate-800 border-b-2 border-slate-300 dark:border-slate-900 shadow-inner\" />\r\n\r\n {/* Active Track */}\r\n <motion.div\r\n className=\"absolute top-0 left-0 h-3 rounded-full bg-primary border-b-2 border-primary/80\"\r\n style={{ width: `${percentage}%` }}\r\n initial={false}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{ type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n\r\n {/* Thumb */}\r\n <input\r\n type=\"range\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={value}\r\n onChange={handleChange}\r\n disabled={disabled}\r\n className=\"absolute top-0 left-0 w-full h-3 opacity-0 cursor-pointer disabled:cursor-not-allowed\"\r\n />\r\n\r\n <motion.div\r\n className={cn(\r\n \"absolute top-1/2 -translate-y-1/2 w-6 h-6 rounded-full bg-white border-2 border-primary shadow-lg pointer-events-none\",\r\n disabled && \"opacity-50\"\r\n )}\r\n style={{ left: `calc(${percentage}% - 12px)` }}\r\n whileHover={{ scale: 1.2 }}\r\n whileTap={{ scale: 0.9 }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Tab {\r\n label: string;\r\n value: string;\r\n content: React.ReactNode;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport interface Tabs3DProps {\r\n tabs: Tab[];\r\n defaultValue?: string;\r\n value?: string;\r\n onValueChange?: (value: string) => void;\r\n className?: string;\r\n variant?: \"default\" | \"pills\" | \"underline\";\r\n}\r\n\r\nexport function Tabs3D({\r\n tabs,\r\n defaultValue,\r\n value: controlledValue,\r\n onValueChange,\r\n className,\r\n variant = \"default\",\r\n}: Tabs3DProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue || tabs[0]?.value);\r\n const isControlled = controlledValue !== undefined;\r\n const activeValue = isControlled ? controlledValue : internalValue;\r\n\r\n const handleTabChange = (value: string) => {\r\n if (!isControlled) setInternalValue(value);\r\n onValueChange?.(value);\r\n };\r\n\r\n const activeTab = tabs.find((tab) => tab.value === activeValue);\r\n const activeIndex = tabs.findIndex((tab) => tab.value === activeValue);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n {/* Tab List */}\r\n <div\r\n className={cn(\r\n \"flex gap-1 mb-4\",\r\n variant === \"default\" && \"bg-muted p-1 rounded-lg\",\r\n variant === \"pills\" && \"gap-2\",\r\n variant === \"underline\" && \"border-b border-border\"\r\n )}\r\n >\r\n {tabs.map((tab, index) => {\r\n const isActive = tab.value === activeValue;\r\n return (\r\n <button\r\n key={tab.value}\r\n onClick={() => handleTabChange(tab.value)}\r\n className={cn(\r\n \"relative px-4 py-2 text-sm font-medium transition-all rounded-md\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n variant === \"default\" && [\r\n isActive\r\n ? \"bg-background text-foreground shadow-sm border-b-2 border-primary\"\r\n : \"text-muted-foreground hover:text-foreground\",\r\n ],\r\n variant === \"pills\" && [\r\n isActive\r\n ? \"bg-primary text-primary-foreground border-b-2 border-primary/80\"\r\n : \"bg-muted text-muted-foreground hover:bg-muted/80\",\r\n ],\r\n variant === \"underline\" && [\r\n \"rounded-none border-b-2\",\r\n isActive\r\n ? \"border-primary text-foreground\"\r\n : \"border-transparent text-muted-foreground hover:text-foreground\",\r\n ]\r\n )}\r\n >\r\n <span className=\"flex items-center gap-2\">\r\n {tab.icon}\r\n {tab.label}\r\n </span>\r\n {isActive && variant === \"default\" && (\r\n <motion.div\r\n layoutId=\"activeTab\"\r\n className=\"absolute inset-0 bg-background rounded-md -z-10 shadow-sm\"\r\n transition={{ type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n )}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n\r\n {/* Tab Content */}\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div\r\n key={activeValue}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {activeTab?.content}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n","import React, { useState, forwardRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Toggle3DProps {\r\n checked?: boolean;\r\n defaultChecked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n variant?: \"glass\" | \"neon\" | \"pill\";\r\n label?: string;\r\n}\r\n\r\nexport const Toggle3D = forwardRef<HTMLButtonElement, Toggle3DProps>(\r\n (\r\n {\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n onChange,\r\n disabled = false,\r\n variant = \"pill\",\r\n label,\r\n },\r\n ref\r\n ) => {\r\n const [internalChecked, setInternalChecked] =\r\n useState(defaultChecked);\r\n\r\n const isControlled = controlledChecked !== undefined;\r\n const isChecked = isControlled\r\n ? controlledChecked\r\n : internalChecked;\r\n\r\n const handleToggle = () => {\r\n if (disabled) return;\r\n\r\n const newChecked = !isChecked;\r\n\r\n if (!isControlled) {\r\n setInternalChecked(newChecked);\r\n }\r\n\r\n onChange?.(newChecked);\r\n };\r\n\r\n const getVariantStyles = () => {\r\n switch (variant) {\r\n case \"neon\":\r\n return isChecked\r\n ? \"bg-black border border-cyan-400 shadow-[0_0_15px_rgba(34,211,238,0.4)]\"\r\n : \"bg-black border border-slate-700\";\r\n\r\n case \"glass\":\r\n return \"bg-white/20 backdrop-blur-md border border-white/30\";\r\n\r\n case \"pill\":\r\n default:\r\n return isChecked\r\n ? \"bg-primary\"\r\n : \"bg-muted\";\r\n }\r\n };\r\n\r\n const toggleWidth = 56;\r\n const knobSize = 24;\r\n const padding = 4;\r\n const travel = toggleWidth - knobSize - padding * 2;\r\n\r\n return (\r\n <div className=\"flex items-center gap-3\">\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={isChecked}\r\n aria-disabled={disabled}\r\n disabled={disabled}\r\n onClick={handleToggle}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleToggle();\r\n }\r\n }}\r\n className={cn(\r\n \"relative h-8 w-14 rounded-full transition-colors\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n getVariantStyles()\r\n )}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute top-1 left-1 h-6 w-6 rounded-full shadow-md\",\r\n variant === \"neon\" && isChecked\r\n ? \"bg-cyan-400 shadow-[0_0_10px_#22d3ee]\"\r\n : \"bg-white\"\r\n )}\r\n animate={{\r\n x: isChecked ? travel : 0,\r\n scale: disabled ? 0.9 : 1,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 30,\r\n }}\r\n />\r\n </button>\r\n\r\n {label && (\r\n <span className=\"text-sm font-medium\">\r\n {label}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nToggle3D.displayName = \"Toggle3D\";","import React from \"react\";\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\r\nimport { X } from \"lucide-react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\n\r\nexport interface Modal3DProps {\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n children: React.ReactNode;\r\n trigger?: React.ReactNode;\r\n title?: string;\r\n description?: string;\r\n className?: string;\r\n}\r\n\r\nexport function Modal3D({\r\n open,\r\n onOpenChange,\r\n children,\r\n trigger,\r\n title,\r\n description,\r\n className,\r\n}: Modal3DProps) {\r\n return (\r\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\r\n {trigger && <DialogPrimitive.Trigger asChild>{trigger}</DialogPrimitive.Trigger>}\r\n <AnimatePresence>\r\n {open ? (\r\n <DialogPrimitive.Portal forceMount>\r\n <DialogPrimitive.Overlay asChild>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className=\"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\"\r\n />\r\n </DialogPrimitive.Overlay>\r\n <DialogPrimitive.Content asChild>\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 10 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 10 }}\r\n transition={{ type: \"spring\", duration: 0.3 }}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 sm:rounded-lg\",\r\n \"bg-white/80 dark:bg-slate-900/80 backdrop-blur-xl border-white/20 shadow-2xl\",\r\n className\r\n )}\r\n >\r\n <div className=\"flex flex-col space-y-1.5 text-center sm:text-left\">\r\n {title && (\r\n <DialogPrimitive.Title className=\"text-lg font-semibold leading-none tracking-tight\">\r\n {title}\r\n </DialogPrimitive.Title>\r\n )}\r\n {description && (\r\n <DialogPrimitive.Description className=\"text-sm text-muted-foreground\">\r\n {description}\r\n </DialogPrimitive.Description>\r\n )}\r\n </div>\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </motion.div>\r\n </DialogPrimitive.Content>\r\n </DialogPrimitive.Portal>\r\n ) : null}\r\n </AnimatePresence>\r\n </DialogPrimitive.Root>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\n/* =====================================================\r\n Types\r\n===================================================== */\r\n\r\nexport interface MenuItem {\r\n label: string;\r\n icon?: React.ReactNode;\r\n danger?: boolean;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\ntype Menu3DProps =\r\n | {\r\n trigger: React.ReactNode;\r\n items: MenuItem[];\r\n children?: never;\r\n align?: \"start\" | \"center\" | \"end\";\r\n }\r\n | {\r\n trigger: React.ReactNode;\r\n children: React.ReactNode;\r\n items?: never;\r\n align?: \"start\" | \"center\" | \"end\";\r\n };\r\n\r\n/* =====================================================\r\n Root Menu\r\n===================================================== */\r\n\r\nexport function Menu3D({\r\n trigger,\r\n align = \"end\",\r\n items,\r\n children,\r\n}: Menu3DProps) {\r\n /* Dev Warning */\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (items && children) {\r\n console.warn(\r\n \"Menu3D: Use either `items` or `children`, not both.\"\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <DropdownMenuPrimitive.Root>\r\n\r\n {/* Trigger */}\r\n <DropdownMenuPrimitive.Trigger asChild>\r\n {trigger}\r\n </DropdownMenuPrimitive.Trigger>\r\n\r\n {/* Portal */}\r\n <DropdownMenuPrimitive.Portal>\r\n\r\n <DropdownMenuPrimitive.Content\r\n align={align}\r\n sideOffset={6}\r\n className={cn(\r\n \"z-50 min-w-[180px] overflow-hidden rounded-xl border p-1\",\r\n \"bg-white/90 dark:bg-slate-900/90 backdrop-blur-xl\",\r\n \"border-white/20 shadow-xl\",\r\n \"animate-in fade-in zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2\",\r\n \"data-[side=top]:slide-in-from-bottom-2\",\r\n \"data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2\"\r\n )}\r\n >\r\n\r\n {/* Config Mode */}\r\n {items?.length\r\n ? items.map((item, i) => (\r\n <DropdownMenuPrimitive.Item\r\n key={i}\r\n disabled={item.disabled}\r\n onSelect={item.onClick}\r\n className={cn(\r\n \"relative flex items-center gap-2\",\r\n \"cursor-pointer select-none rounded-md px-3 py-2 text-sm\",\r\n \"outline-none transition-colors\",\r\n \"focus:bg-accent focus:text-accent-foreground\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n item.danger && \"text-red-500\"\r\n )}\r\n >\r\n {item.icon && (\r\n <span className=\"text-muted-foreground\">\r\n {item.icon}\r\n </span>\r\n )}\r\n\r\n <span>{item.label}</span>\r\n\r\n </DropdownMenuPrimitive.Item>\r\n ))\r\n\r\n /* Slot Mode */\r\n : children}\r\n\r\n </DropdownMenuPrimitive.Content>\r\n\r\n </DropdownMenuPrimitive.Portal>\r\n\r\n </DropdownMenuPrimitive.Root>\r\n );\r\n}\r\n\r\n/* =====================================================\r\n Slot Components\r\n===================================================== */\r\n\r\nexport const Menu3DItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-pointer select-none items-center\",\r\n \"rounded-md px-3 py-2 text-sm outline-none transition-colors\",\r\n \"focus:bg-accent focus:text-accent-foreground\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nMenu3DItem.displayName =\r\n DropdownMenuPrimitive.Item.displayName;\r\n\r\n\r\n/* --------------------------------------------------- */\r\n\r\nexport const Menu3DLabel = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-3 py-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nMenu3DLabel.displayName =\r\n DropdownMenuPrimitive.Label.displayName;\r\n\r\n\r\n/* --------------------------------------------------- */\r\n\r\nexport const Menu3DSeparator = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator\r\n ref={ref}\r\n className={cn(\r\n \"-mx-1 my-1 h-px bg-border\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nMenu3DSeparator.displayName =\r\n DropdownMenuPrimitive.Separator.displayName;","import React from \"react\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Tooltip3DProps {\r\n content: React.ReactNode;\r\n children: React.ReactNode;\r\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n align?: \"start\" | \"center\" | \"end\";\r\n delayDuration?: number;\r\n}\r\n\r\nexport function Tooltip3D({\r\n content,\r\n children,\r\n side = \"top\",\r\n align = \"center\",\r\n delayDuration = 200,\r\n}: Tooltip3DProps) {\r\n return (\r\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\r\n <TooltipPrimitive.Root>\r\n <TooltipPrimitive.Trigger asChild>\r\n {children}\r\n </TooltipPrimitive.Trigger>\r\n <TooltipPrimitive.Content\r\n side={side}\r\n align={align}\r\n className={cn(\r\n \"z-50 overflow-hidden rounded-md 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\",\r\n \"bg-slate-900 text-white dark:bg-slate-100 dark:text-slate-900 border-none shadow-[0_10px_38px_-10px_rgba(22,23,24,0.35),0_10px_20px_-15px_rgba(22,23,24,0.2)]\"\r\n )}\r\n >\r\n {content}\r\n <TooltipPrimitive.Arrow className=\"fill-slate-900 dark:fill-slate-100\" />\r\n </TooltipPrimitive.Content>\r\n </TooltipPrimitive.Root>\r\n </TooltipPrimitive.Provider>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Progress3DProps {\r\n value: number;\r\n max?: number;\r\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n showLabel?: boolean;\r\n label?: string;\r\n className?: string;\r\n animated?: boolean;\r\n}\r\n\r\nexport function Progress3D({\r\n value,\r\n max = 100,\r\n variant = \"default\",\r\n size = \"md\",\r\n showLabel = false,\r\n label,\r\n className,\r\n animated = true,\r\n}: Progress3DProps) {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n const variants = {\r\n default: \"bg-primary border-primary/80\",\r\n success: \"bg-emerald-500 border-emerald-700\",\r\n warning: \"bg-amber-500 border-amber-700\",\r\n danger: \"bg-red-500 border-red-700\",\r\n };\r\n\r\n const sizes = {\r\n sm: \"h-2\",\r\n md: \"h-3\",\r\n lg: \"h-4\",\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full space-y-2\", className)}>\r\n {(label || showLabel) && (\r\n <div className=\"flex items-center justify-between text-sm\">\r\n {label && <span className=\"font-medium\">{label}</span>}\r\n {showLabel && (\r\n <span className=\"text-muted-foreground font-mono\">\r\n {Math.round(percentage)}%\r\n </span>\r\n )}\r\n </div>\r\n )}\r\n <div\r\n className={cn(\r\n \"w-full rounded-full bg-slate-200 dark:bg-slate-800 overflow-hidden shadow-inner border-b-2 border-slate-300 dark:border-slate-900\",\r\n sizes[size]\r\n )}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"h-full rounded-full border-b-2 shadow-sm\",\r\n variants[variant],\r\n animated && \"transition-all\"\r\n )}\r\n initial={{ width: 0 }}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{\r\n duration: animated ? 0.5 : 0,\r\n ease: \"easeOut\",\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { GripVertical } from \"lucide-react\";\r\nimport * as ResizablePrimitive from \"react-resizable-panels\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst ResizablePanelGroup = ({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\r\n <ResizablePrimitive.PanelGroup\r\n className={cn(\"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\", className)}\r\n {...props}\r\n />\r\n);\r\n\r\nconst ResizablePanel = ResizablePrimitive.Panel;\r\n\r\nconst ResizableHandle = ({\r\n withHandle,\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\r\n withHandle?: boolean;\r\n}) => (\r\n <ResizablePrimitive.PanelResizeHandle\r\n className={cn(\r\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {withHandle && (\r\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\r\n <GripVertical className=\"h-2.5 w-2.5\" />\r\n </div>\r\n )}\r\n </ResizablePrimitive.PanelResizeHandle>\r\n);\r\n\r\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\r\n","import React, { useState } from \"react\";\r\nimport { Html } from \"@react-three/drei\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Select3DOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface Select3DProps {\r\n options: Select3DOption[];\r\n value?: string;\r\n onChange?: (val: string) => void;\r\n width?: number;\r\n}\r\n\r\nexport function Select3D({\r\n options,\r\n value,\r\n onChange,\r\n width = 200,\r\n}: Select3DProps) {\r\n return (\r\n <Html transform>\r\n <select\r\n className={cn(\r\n \"px-3 py-2 bg-background/80 backdrop-blur border rounded text-foreground outline-none focus:ring-2 focus:ring-primary\",\r\n )}\r\n style={{ width }}\r\n value={value}\r\n onChange={(e) => onChange?.(e.target.value)}\r\n >\r\n {options.map(opt => (\r\n <option key={opt.value} value={opt.value}>\r\n {opt.label}\r\n </option>\r\n ))}\r\n </select>\r\n </Html>\r\n );\r\n}\r\n","import React, { useRef } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\n\r\nexport interface Spinner3DProps {\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n color?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function Spinner3D({\r\n size = \"md\",\r\n color = \"#22d3ee\",\r\n speed = 1,\r\n}: Spinner3DProps) {\r\n const ref = useRef<any>(null);\r\n\r\n const scale = size === \"sm\" ? 0.5 : size === \"lg\" ? 1.5 : 1;\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current) {\r\n ref.current.rotation.z -= delta * speed * 3;\r\n ref.current.rotation.x -= delta * speed * 1;\r\n }\r\n });\r\n\r\n return (\r\n <group ref={ref} scale={[scale, scale, scale]}>\r\n {/* Ring 1 */}\r\n <mesh rotation={[Math.PI / 4, 0, 0]}>\r\n <torusGeometry args={[0.5, 0.05, 16, 32]} />\r\n <meshStandardMaterial color={color} emissive={color} />\r\n </mesh>\r\n {/* Ring 2 */}\r\n <mesh rotation={[-Math.PI / 4, 0, 0]}>\r\n <torusGeometry args={[0.4, 0.05, 16, 32]} />\r\n <meshStandardMaterial color={color} />\r\n </mesh>\r\n </group>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Text, Line } from \"@react-three/drei\";\r\nimport { Vector3 } from \"three\";\r\n\r\nexport interface Stepper3DProps {\r\n steps: string[];\r\n activeStep?: number;\r\n gap?: number;\r\n}\r\n\r\nexport function Stepper3D({\r\n steps,\r\n activeStep = 0,\r\n gap = 2,\r\n}: Stepper3DProps) {\r\n\r\n const points = steps.map((_, i) => new Vector3((i - (steps.length - 1) / 2) * gap, 0, 0));\r\n\r\n return (\r\n <group>\r\n {/* Connecting Line */}\r\n <Line\r\n points={points}\r\n color=\"#333\"\r\n lineWidth={2}\r\n />\r\n\r\n {/* Active Line Progress */}\r\n {activeStep > 0 && (\r\n <Line\r\n points={points.slice(0, activeStep + 1)}\r\n color=\"#22d3ee\"\r\n lineWidth={4}\r\n />\r\n )}\r\n\r\n {/* Steps */}\r\n {steps.map((label, i) => (\r\n <group key={i} position={points[i]}>\r\n <mesh>\r\n <sphereGeometry args={[0.3, 32, 32]} />\r\n <meshStandardMaterial color={i <= activeStep ? \"#22d3ee\" : \"#333\"} />\r\n </mesh>\r\n <Text\r\n position={[0, -0.6, 0]}\r\n fontSize={0.2}\r\n color={i <= activeStep ? \"white\" : \"#666\"}\r\n anchorX=\"center\"\r\n anchorY=\"top\"\r\n >\r\n {label}\r\n </Text>\r\n </group>\r\n ))}\r\n </group>\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { Text } from \"@react-three/drei\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport { Color } from \"three\";\r\n\r\nexport interface NavBarItem {\r\n label: string;\r\n href: string;\r\n}\r\n\r\nexport interface NavBar3DProps {\r\n items: NavBarItem[];\r\n activeHref?: string;\r\n}\r\n\r\nexport function NavBar3D({ items, activeHref = \"/\" }: NavBar3DProps) {\r\n // Simple floating bar\r\n return (\r\n <group position={[0, -2, 0]}>\r\n {/* Background Bar */}\r\n <mesh position={[0, 0, -0.1]}>\r\n <boxGeometry args={[items.length * 2, 1, 0.2]} />\r\n <meshStandardMaterial color=\"#1a1a1a\" transparent opacity={0.8} />\r\n </mesh>\r\n\r\n {/* Items */}\r\n {items.map((item, i) => {\r\n const x = (i - (items.length - 1) / 2) * 2;\r\n const isActive = activeHref === item.href;\r\n\r\n return (\r\n <NavBarItemMesh key={i} item={item} x={x} isActive={isActive} />\r\n );\r\n })}\r\n </group>\r\n );\r\n}\r\n\r\nfunction NavBarItemMesh({ item, x, isActive }: { item: NavBarItem; x: number; isActive: boolean }) {\r\n const [hovered, setHover] = useState(false);\r\n\r\n return (\r\n <group position={[x, 0, 0]}>\r\n <mesh\r\n onPointerOver={() => setHover(true)}\r\n onPointerOut={() => setHover(false)}\r\n onClick={() => window.location.href = item.href} // Rudimentary nav\r\n >\r\n <planeGeometry args={[1.8, 0.8]} />\r\n <meshStandardMaterial color={isActive ? \"#22d3ee\" : hovered ? \"#333\" : \"transparent\"} transparent opacity={isActive ? 0.3 : hovered ? 0.5 : 0} />\r\n </mesh>\r\n <Text\r\n fontSize={0.2}\r\n color={isActive || hovered ? \"white\" : \"#888\"}\r\n anchorX=\"center\"\r\n anchorY=\"middle\"\r\n >\r\n {item.label}\r\n </Text>\r\n </group>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Line, Text } from \"@react-three/drei\";\r\nimport { Vector3 } from \"three\";\r\n\r\nexport interface TimelineEvent {\r\n date: string;\r\n title: string;\r\n description?: string;\r\n}\r\n\r\nexport interface Timeline3DProps {\r\n events: TimelineEvent[];\r\n orientation?: \"horizontal\" | \"vertical\";\r\n gap?: number;\r\n}\r\n\r\nexport function Timeline3D({\r\n events,\r\n orientation = \"horizontal\",\r\n gap = 3,\r\n}: Timeline3DProps) {\r\n\r\n const points = events.map((_, i) => {\r\n return orientation === \"horizontal\"\r\n ? new Vector3((i - (events.length - 1) / 2) * gap, 0, 0)\r\n : new Vector3(0, (i - (events.length - 1) / 2) * -gap, 0);\r\n });\r\n\r\n return (\r\n <group>\r\n <Line points={points} color=\"#555\" lineWidth={1} />\r\n\r\n {events.map((ev, i) => (\r\n <group key={i} position={points[i]}>\r\n <mesh>\r\n <sphereGeometry args={[0.2, 16, 16]} />\r\n <meshStandardMaterial color=\"#22d3ee\" />\r\n </mesh>\r\n <group position={[0, 0.5, 0]}>\r\n <Text\r\n fontSize={0.3}\r\n color=\"white\"\r\n anchorY=\"bottom\"\r\n >\r\n {ev.date}\r\n </Text>\r\n <Text\r\n position={[0, -0.3, 0]} // If above sphere, maybe title is above date?\r\n // Let's put date top, title bottom of sphere if horizontal?\r\n // For now stacking them above.\r\n fontSize={0.25}\r\n color=\"#ccc\"\r\n anchorY=\"top\"\r\n >\r\n {ev.title}\r\n </Text>\r\n </group>\r\n </group>\r\n ))}\r\n </group>\r\n );\r\n}\r\n","import * as React from \"react\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider;\r\n\r\nconst Tooltip = TooltipPrimitive.Root;\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger;\r\n\r\nconst TooltipContent = React.forwardRef<\r\n React.ElementRef<typeof TooltipPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <TooltipPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 overflow-hidden rounded-md 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\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\r\n","import * as React from \"react\";\r\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Slider = React.forwardRef<\r\n React.ElementRef<typeof SliderPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SliderPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative flex w-full touch-none select-none items-center\", className)}\r\n {...props}\r\n >\r\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\r\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\r\n </SliderPrimitive.Track>\r\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\r\n </SliderPrimitive.Root>\r\n));\r\nSlider.displayName = SliderPrimitive.Root.displayName;\r\n\r\nexport { Slider };\r\n","import * as React from \"react\";\r\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst toggleVariants = cva(\r\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-transparent\",\r\n outline: \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\r\n },\r\n size: {\r\n default: \"h-10 px-3\",\r\n sm: \"h-9 px-2.5\",\r\n lg: \"h-11 px-5\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst Toggle = React.forwardRef<\r\n React.ElementRef<typeof TogglePrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, ...props }, ref) => (\r\n <TogglePrimitive.Root ref={ref} className={cn(toggleVariants({ variant, size, className }))} {...props} />\r\n));\r\n\r\nToggle.displayName = TogglePrimitive.Root.displayName;\r\n\r\nexport { Toggle, toggleVariants };\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst badgeVariants = cva(\r\n \"inline-flex items-center font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border\",\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\r\n secondary:\r\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n destructive:\r\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\r\n accent:\r\n \"border-transparent bg-accent text-accent-foreground hover:bg-accent/80\",\r\n outline: \"text-foreground border-border bg-transparent\",\r\n success:\r\n \"border-transparent bg-success text-success-foreground hover:bg-success/90\",\r\n warning:\r\n \"border-transparent bg-warning text-warning-foreground hover:bg-warning/90\",\r\n info:\r\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/90\",\r\n },\r\n size: {\r\n xs: \"rounded px-1.5 py-0 text-[10px]\",\r\n sm: \"rounded-md px-2 py-0.5 text-xs\",\r\n md: \"rounded-md px-2.5 py-0.5 text-xs\",\r\n lg: \"rounded-lg px-3 py-1 text-sm\",\r\n },\r\n shape: {\r\n \"rounded-sm\": \"rounded-sm\",\r\n \"rounded-md\": \"rounded-md\",\r\n \"rounded-lg\": \"rounded-lg\",\r\n \"rounded-full\": \"rounded-full\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"md\",\r\n shape: \"rounded-full\",\r\n },\r\n }\r\n);\r\n\r\nexport interface BadgeProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof badgeVariants> {}\r\n\r\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\r\n ({ className, variant, size, shape, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(badgeVariants({ variant, size, shape }), className)}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nBadge.displayName = \"Badge\";\r\n\r\nexport { Badge, badgeVariants };\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst inputVariants = cva(\r\n \"flex w-full rounded-md border border-input bg-background ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-colors\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-8 px-2.5 text-sm\",\r\n md: \"h-10 px-3 py-2 text-base md:text-sm\",\r\n lg: \"h-12 px-4 py-3 text-base\",\r\n },\r\n error: {\r\n true: \"border-destructive focus-visible:ring-destructive/20\",\r\n false: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n error: false,\r\n },\r\n }\r\n);\r\n\r\nexport interface InputProps\r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\r\n VariantProps<typeof inputVariants> {\r\n /** When true, shows error state (red border, destructive ring) */\r\n error?: boolean;\r\n /** Size variant. For native input character width use htmlSize or style. */\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, type, size = \"md\", error, ...props }, ref) => {\r\n return (\r\n <input\r\n type={type}\r\n className={cn(inputVariants({ size, error }), className)}\r\n ref={ref}\r\n aria-invalid={error ?? undefined}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nInput.displayName = \"Input\";\r\n\r\nexport { Input, inputVariants };\r\n","import * as React from \"react\";\r\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Progress = React.forwardRef<\r\n React.ElementRef<typeof ProgressPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\r\n>(({ className, value, ...props }, ref) => (\r\n <ProgressPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative h-4 w-full overflow-hidden rounded-full bg-secondary\", className)}\r\n {...props}\r\n >\r\n <ProgressPrimitive.Indicator\r\n className=\"h-full w-full flex-1 bg-primary transition-all\"\r\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\r\n />\r\n </ProgressPrimitive.Root>\r\n));\r\nProgress.displayName = ProgressPrimitive.Root.displayName;\r\n\r\nexport { Progress };\r\n","import { cn } from \"../../lib/utils\";\r\n\r\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n return <div className={cn(\"animate-pulse rounded-md bg-muted\", className)} {...props} />;\r\n}\r\n\r\nexport { Skeleton };\r\n","import * as React from \"react\";\r\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { X } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst ToastProvider = ToastPrimitives.Provider;\r\n\r\nconst ToastViewport = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Viewport>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Viewport\r\n ref={ref}\r\n className={cn(\r\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]\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\r\n\r\nconst toastVariants = cva(\r\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md 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\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border bg-background text-foreground\",\r\n destructive: \"destructive group border-destructive bg-destructive text-destructive-foreground\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst Toast = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> & VariantProps<typeof toastVariants>\r\n>(({ className, variant, ...props }, ref) => {\r\n return <ToastPrimitives.Root ref={ref} className={cn(toastVariants({ variant }), className)} {...props} />;\r\n});\r\nToast.displayName = ToastPrimitives.Root.displayName;\r\n\r\nconst ToastAction = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Action>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Action\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md 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\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nToastAction.displayName = ToastPrimitives.Action.displayName;\r\n\r\nconst ToastClose = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Close>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Close\r\n ref={ref}\r\n className={cn(\r\n \"absolute right-2 top-2 rounded-md 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\",\r\n className,\r\n )}\r\n toast-close=\"\"\r\n {...props}\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </ToastPrimitives.Close>\r\n));\r\nToastClose.displayName = ToastPrimitives.Close.displayName;\r\n\r\nconst ToastTitle = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Title>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Title ref={ref} className={cn(\"text-sm font-semibold\", className)} {...props} />\r\n));\r\nToastTitle.displayName = ToastPrimitives.Title.displayName;\r\n\r\nconst ToastDescription = React.forwardRef<\r\n React.ElementRef<typeof ToastPrimitives.Description>,\r\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\r\n>(({ className, ...props }, ref) => (\r\n <ToastPrimitives.Description ref={ref} className={cn(\"text-sm opacity-90\", className)} {...props} />\r\n));\r\nToastDescription.displayName = ToastPrimitives.Description.displayName;\r\n\r\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\r\n\r\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\r\n\r\nexport {\r\n type ToastProps,\r\n type ToastActionElement,\r\n ToastProvider,\r\n ToastViewport,\r\n Toast,\r\n ToastTitle,\r\n ToastDescription,\r\n ToastClose,\r\n ToastAction,\r\n};\r\n","import * as React from \"react\";\r\n\r\nimport type { ToastActionElement, ToastProps } from \"../components/ui/toast\";\r\n\r\nconst TOAST_LIMIT = 1;\r\nconst TOAST_REMOVE_DELAY = 1000000;\r\n\r\ntype ToasterToast = ToastProps & {\r\n id: string;\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n action?: ToastActionElement;\r\n};\r\n\r\nconst actionTypes = {\r\n ADD_TOAST: \"ADD_TOAST\",\r\n UPDATE_TOAST: \"UPDATE_TOAST\",\r\n DISMISS_TOAST: \"DISMISS_TOAST\",\r\n REMOVE_TOAST: \"REMOVE_TOAST\",\r\n} as const;\r\n\r\nlet count = 0;\r\n\r\nfunction genId() {\r\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\r\n return count.toString();\r\n}\r\n\r\ntype ActionType = typeof actionTypes;\r\n\r\ntype Action =\r\n | {\r\n type: ActionType[\"ADD_TOAST\"];\r\n toast: ToasterToast;\r\n }\r\n | {\r\n type: ActionType[\"UPDATE_TOAST\"];\r\n toast: Partial<ToasterToast>;\r\n }\r\n | {\r\n type: ActionType[\"DISMISS_TOAST\"];\r\n toastId?: ToasterToast[\"id\"];\r\n }\r\n | {\r\n type: ActionType[\"REMOVE_TOAST\"];\r\n toastId?: ToasterToast[\"id\"];\r\n };\r\n\r\ninterface State {\r\n toasts: ToasterToast[];\r\n}\r\n\r\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\nconst addToRemoveQueue = (toastId: string) => {\r\n if (toastTimeouts.has(toastId)) {\r\n return;\r\n }\r\n\r\n const timeout = setTimeout(() => {\r\n toastTimeouts.delete(toastId);\r\n dispatch({\r\n type: \"REMOVE_TOAST\",\r\n toastId: toastId,\r\n });\r\n }, TOAST_REMOVE_DELAY);\r\n\r\n toastTimeouts.set(toastId, timeout);\r\n};\r\n\r\nexport const reducer = (state: State, action: Action): State => {\r\n switch (action.type) {\r\n case \"ADD_TOAST\":\r\n return {\r\n ...state,\r\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\r\n };\r\n\r\n case \"UPDATE_TOAST\":\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) => (t.id === action.toast.id ? { ...t, ...action.toast } : t)),\r\n };\r\n\r\n case \"DISMISS_TOAST\": {\r\n const { toastId } = action;\r\n\r\n // ! Side effects ! - This could be extracted into a dismissToast() action,\r\n // but I'll keep it here for simplicity\r\n if (toastId) {\r\n addToRemoveQueue(toastId);\r\n } else {\r\n state.toasts.forEach((toast) => {\r\n addToRemoveQueue(toast.id);\r\n });\r\n }\r\n\r\n return {\r\n ...state,\r\n toasts: state.toasts.map((t) =>\r\n t.id === toastId || toastId === undefined\r\n ? {\r\n ...t,\r\n open: false,\r\n }\r\n : t,\r\n ),\r\n };\r\n }\r\n case \"REMOVE_TOAST\":\r\n if (action.toastId === undefined) {\r\n return {\r\n ...state,\r\n toasts: [],\r\n };\r\n }\r\n return {\r\n ...state,\r\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\r\n };\r\n }\r\n};\r\n\r\nconst listeners: Array<(state: State) => void> = [];\r\n\r\nlet memoryState: State = { toasts: [] };\r\n\r\nfunction dispatch(action: Action) {\r\n memoryState = reducer(memoryState, action);\r\n listeners.forEach((listener) => {\r\n listener(memoryState);\r\n });\r\n}\r\n\r\ntype Toast = Omit<ToasterToast, \"id\">;\r\n\r\nfunction toast({ ...props }: Toast) {\r\n const id = genId();\r\n\r\n const update = (props: ToasterToast) =>\r\n dispatch({\r\n type: \"UPDATE_TOAST\",\r\n toast: { ...props, id },\r\n });\r\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\r\n\r\n dispatch({\r\n type: \"ADD_TOAST\",\r\n toast: {\r\n ...props,\r\n id,\r\n open: true,\r\n onOpenChange: (open) => {\r\n if (!open) dismiss();\r\n },\r\n },\r\n });\r\n\r\n return {\r\n id: id,\r\n dismiss,\r\n update,\r\n };\r\n}\r\n\r\nfunction useToast() {\r\n const [state, setState] = React.useState<State>(memoryState);\r\n\r\n React.useEffect(() => {\r\n listeners.push(setState);\r\n return () => {\r\n const index = listeners.indexOf(setState);\r\n if (index > -1) {\r\n listeners.splice(index, 1);\r\n }\r\n };\r\n }, [state]);\r\n\r\n return {\r\n ...state,\r\n toast,\r\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\r\n };\r\n}\r\n\r\nexport { useToast, toast };\r\n","import { useToast } from \"../../hooks/use-toast\";\r\nimport { Toast, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport } from \"./toast\";\r\n\r\nexport function Toaster() {\r\n const { toasts } = useToast();\r\n\r\n return (\r\n <ToastProvider>\r\n {toasts.map(function ({ id, title, description, action, ...props }) {\r\n return (\r\n <Toast key={id} {...props}>\r\n <div className=\"grid gap-1\">\r\n {title && <ToastTitle>{title}</ToastTitle>}\r\n {description && <ToastDescription>{description}</ToastDescription>}\r\n </div>\r\n {action}\r\n <ToastClose />\r\n </Toast>\r\n );\r\n })}\r\n <ToastViewport />\r\n </ToastProvider>\r\n );\r\n}\r\n","import { useTheme } from \"next-themes\";\r\nimport { Toaster as Sonner, toast } from \"sonner\";\r\nimport React from \"react\";\r\n\r\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\r\n\r\nconst Toaster = ({ ...props }: ToasterProps) => {\r\n const { theme = \"system\" } = useTheme();\r\n\r\n return (\r\n <Sonner\r\n theme={theme as ToasterProps[\"theme\"]}\r\n className=\"toaster group\"\r\n toastOptions={{\r\n classNames: {\r\n toast:\r\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\r\n description: \"group-[.toast]:text-muted-foreground\",\r\n actionButton: \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\r\n cancelButton: \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\r\n },\r\n }}\r\n {...props}\r\n />\r\n );\r\n};\r\n\r\nexport { Toaster, toast };\r\n","import * as React from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Popover = PopoverPrimitive.Root;\r\n\r\nconst PopoverTrigger = PopoverPrimitive.Trigger;\r\n\r\nconst PopoverContent = React.forwardRef<\r\n React.ElementRef<typeof PopoverPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <PopoverPrimitive.Portal>\r\n <PopoverPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </PopoverPrimitive.Portal>\r\n));\r\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\r\n\r\nexport { Popover, PopoverTrigger, PopoverContent };\r\n","import * as SheetPrimitive from \"@radix-ui/react-dialog\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { X } from \"lucide-react\";\r\nimport * as React from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Sheet = SheetPrimitive.Root;\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger;\r\n\r\nconst SheetClose = SheetPrimitive.Close;\r\n\r\nconst SheetPortal = SheetPrimitive.Portal;\r\n\r\nconst SheetOverlay = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n));\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\r\n\r\nconst sheetVariants = cva(\r\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\r\n {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\r\n bottom:\r\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\r\n right:\r\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n },\r\n);\r\n\r\ninterface SheetContentProps\r\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\r\n VariantProps<typeof sheetVariants> {}\r\n\r\nconst SheetContent = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Content>, SheetContentProps>(\r\n ({ side = \"right\", className, children, ...props }, ref) => (\r\n <SheetPortal>\r\n <SheetOverlay />\r\n <SheetPrimitive.Content ref={ref} className={cn(sheetVariants({ side }), className)} {...props}>\r\n {children}\r\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-secondary hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n </SheetPrimitive.Content>\r\n </SheetPortal>\r\n ),\r\n);\r\nSheetContent.displayName = SheetPrimitive.Content.displayName;\r\n\r\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />\r\n);\r\nSheetHeader.displayName = \"SheetHeader\";\r\n\r\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\r\n);\r\nSheetFooter.displayName = \"SheetFooter\";\r\n\r\nconst SheetTitle = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold text-foreground\", className)} {...props} />\r\n));\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\r\n\r\nconst SheetDescription = React.forwardRef<\r\n React.ElementRef<typeof SheetPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n));\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\r\n\r\nexport {\r\n Sheet,\r\n SheetClose,\r\n SheetContent,\r\n SheetDescription,\r\n SheetFooter,\r\n SheetHeader,\r\n SheetOverlay,\r\n SheetPortal,\r\n SheetTitle,\r\n SheetTrigger,\r\n};\r\n","import * as React from \"react\";\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\r\nimport { X } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Dialog = DialogPrimitive.Root;\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger;\r\n\r\nconst DialogPortal = DialogPrimitive.Portal;\r\n\r\nconst DialogClose = DialogPrimitive.Close;\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n));\r\nDialogContent.displayName = DialogPrimitive.Content.displayName;\r\n\r\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)} {...props} />\r\n);\r\nDialogHeader.displayName = \"DialogHeader\";\r\n\r\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\r\n);\r\nDialogFooter.displayName = \"DialogFooter\";\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\r\n {...props}\r\n />\r\n));\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n));\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n};\r\n","import * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Breadcrumb = React.forwardRef<\r\n HTMLElement,\r\n React.ComponentPropsWithoutRef<\"nav\"> & {\r\n separator?: React.ReactNode;\r\n }\r\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />);\r\nBreadcrumb.displayName = \"Breadcrumb\";\r\n\r\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<\"ol\">>(\r\n ({ className, ...props }, ref) => (\r\n <ol\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n ),\r\n);\r\nBreadcrumbList.displayName = \"BreadcrumbList\";\r\n\r\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<\"li\">>(\r\n ({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"inline-flex items-center gap-1.5\", className)} {...props} />\r\n ),\r\n);\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\r\n\r\nconst BreadcrumbLink = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentPropsWithoutRef<\"a\"> & {\r\n asChild?: boolean;\r\n }\r\n>(({ asChild, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return <Comp ref={ref} className={cn(\"transition-colors hover:text-foreground\", className)} {...props} />;\r\n});\r\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\r\n\r\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<\"span\">>(\r\n ({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n role=\"link\"\r\n aria-disabled=\"true\"\r\n aria-current=\"page\"\r\n className={cn(\"font-normal text-foreground\", className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\r\n\r\nconst BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<\"li\">) => (\r\n <li role=\"presentation\" aria-hidden=\"true\" className={cn(\"[&>svg]:size-3.5\", className)} {...props}>\r\n {children ?? <ChevronRight />}\r\n </li>\r\n);\r\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\r\n\r\nconst BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<\"span\">) => (\r\n <span\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More</span>\r\n </span>\r\n);\r\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\";\r\n\r\nexport {\r\n Breadcrumb,\r\n BreadcrumbList,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n BreadcrumbEllipsis,\r\n};\r\n","import * as React from \"react\";\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst labelVariants = cva(\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\");\r\n\r\nconst Label = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\r\n>(({ className, ...props }, ref) => (\r\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\r\n));\r\nLabel.displayName = LabelPrimitive.Root.displayName;\r\n\r\nexport { Label };\r\n","import * as React from \"react\";\r\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\r\nimport { Check } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Checkbox = React.forwardRef<\r\n React.ElementRef<typeof CheckboxPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <CheckboxPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <CheckboxPrimitive.Indicator className={cn(\"flex items-center justify-center text-current\")}>\r\n <Check className=\"h-4 w-4\" />\r\n </CheckboxPrimitive.Indicator>\r\n </CheckboxPrimitive.Root>\r\n));\r\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\r\n\r\nexport { Checkbox };\r\n","import * as React from \"react\";\r\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Switch = React.forwardRef<\r\n React.ElementRef<typeof SwitchPrimitives.Root>,\r\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\r\n>(({ className, ...props }, ref) => (\r\n <SwitchPrimitives.Root\r\n className={cn(\r\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n ref={ref}\r\n >\r\n <SwitchPrimitives.Thumb\r\n className={cn(\r\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\r\n )}\r\n />\r\n </SwitchPrimitives.Root>\r\n));\r\nSwitch.displayName = SwitchPrimitives.Root.displayName;\r\n\r\nexport { Switch };\r\n","import * as React from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\r\n\r\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, ...props }, ref) => {\r\n return (\r\n <textarea\r\n className={cn(\r\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n );\r\n});\r\nTextarea.displayName = \"Textarea\";\r\n\r\nexport { Textarea };\r\n","import * as React from \"react\";\r\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative={decorative}\r\n orientation={orientation}\r\n className={cn(\"shrink-0 bg-border\", orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\", className)}\r\n {...props}\r\n />\r\n));\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\r\n\r\nexport { Separator };\r\n","import * as React from \"react\";\r\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst ScrollArea = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <ScrollAreaPrimitive.Root ref={ref} className={cn(\"relative overflow-hidden\", className)} {...props}>\r\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">{children}</ScrollAreaPrimitive.Viewport>\r\n <ScrollBar />\r\n <ScrollAreaPrimitive.Corner />\r\n </ScrollAreaPrimitive.Root>\r\n));\r\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\r\n\r\nconst ScrollBar = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.ScrollAreaScrollbar\r\n ref={ref}\r\n orientation={orientation}\r\n className={cn(\r\n \"flex touch-none select-none transition-colors\",\r\n orientation === \"vertical\" && \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\r\n orientation === \"horizontal\" && \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\r\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n));\r\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\r\n\r\nexport { ScrollArea, ScrollBar };\r\n","import * as React from \"react\";\r\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\r\nimport { Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst RadioGroup = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\r\n>(({ className, ...props }, ref) => {\r\n return <RadioGroupPrimitive.Root className={cn(\"grid gap-2\", className)} {...props} ref={ref} />;\r\n});\r\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\r\n\r\nconst RadioGroupItem = React.forwardRef<\r\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\r\n>(({ className, ...props }, ref) => {\r\n return (\r\n <RadioGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\r\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\r\n </RadioGroupPrimitive.Indicator>\r\n </RadioGroupPrimitive.Item>\r\n );\r\n});\r\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\r\n\r\nexport { RadioGroup, RadioGroupItem };\r\n","import * as React from \"react\";\r\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\r\nimport { type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { toggleVariants } from \"./toggle\";\r\n\r\nconst ToggleGroupContext = React.createContext<VariantProps<typeof toggleVariants>>({\r\n size: \"default\",\r\n variant: \"default\",\r\n});\r\n\r\nconst ToggleGroup = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, children, ...props }, ref) => (\r\n <ToggleGroupPrimitive.Root ref={ref} className={cn(\"flex items-center justify-center gap-1\", className)} {...props}>\r\n <ToggleGroupContext.Provider value={{ variant, size }}>{children}</ToggleGroupContext.Provider>\r\n </ToggleGroupPrimitive.Root>\r\n));\r\n\r\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\r\n\r\nconst ToggleGroupItem = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>\r\n>(({ className, children, variant, size, ...props }, ref) => {\r\n const context = React.useContext(ToggleGroupContext);\r\n\r\n return (\r\n <ToggleGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n toggleVariants({\r\n variant: context.variant || variant,\r\n size: context.size || size,\r\n }),\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </ToggleGroupPrimitive.Item>\r\n );\r\n});\r\n\r\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\r\n\r\nexport { ToggleGroup, ToggleGroupItem };\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst alertVariants = cva(\r\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-background text-foreground\",\r\n destructive: \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst Alert = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\r\n>(({ className, variant, ...props }, ref) => (\r\n <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props} />\r\n));\r\nAlert.displayName = \"Alert\";\r\n\r\nconst AlertTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(\r\n ({ className, ...props }, ref) => (\r\n <h5 ref={ref} className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)} {...props} />\r\n ),\r\n);\r\nAlertTitle.displayName = \"AlertTitle\";\r\n\r\nconst AlertDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"text-sm [&_p]:leading-relaxed\", className)} {...props} />\r\n ),\r\n);\r\nAlertDescription.displayName = \"AlertDescription\";\r\n\r\nexport { Alert, AlertTitle, AlertDescription };\r\n","import * as React from \"react\";\r\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Avatar = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\", className)}\r\n {...props}\r\n />\r\n));\r\nAvatar.displayName = AvatarPrimitive.Root.displayName;\r\n\r\nconst AvatarImage = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Image>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Image ref={ref} className={cn(\"aspect-square h-full w-full\", className)} {...props} />\r\n));\r\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\r\n\r\nconst AvatarFallback = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Fallback\r\n ref={ref}\r\n className={cn(\"flex h-full w-full items-center justify-center rounded-full bg-muted\", className)}\r\n {...props}\r\n />\r\n));\r\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\r\n\r\nexport { Avatar, AvatarImage, AvatarFallback };\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst cardVariants = cva(\r\n \"rounded-lg border bg-card text-card-foreground transition-shadow\",\r\n {\r\n variants: {\r\n elevation: {\r\n flat: \"shadow-none\",\r\n low: \"shadow-sm\",\r\n medium: \"shadow-md\",\r\n high: \"shadow-lg\",\r\n glow: \"shadow-lg shadow-primary/10\",\r\n },\r\n },\r\n defaultVariants: {\r\n elevation: \"low\",\r\n },\r\n }\r\n);\r\n\r\nexport interface CardProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof cardVariants> {}\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ className, elevation, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(cardVariants({ elevation }), className)}\r\n {...props}\r\n />\r\n )\r\n);\r\nCard.displayName = \"Card\";\r\n\r\nconst CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n));\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\nconst CardTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n className={cn(\r\n \"text-2xl font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\nCardTitle.displayName = \"CardTitle\";\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n));\r\nCardDescription.displayName = \"CardDescription\";\r\n\r\nconst CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\r\n));\r\nCardContent.displayName = \"CardContent\";\r\n\r\nconst CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n));\r\nCardFooter.displayName = \"CardFooter\";\r\n\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent, cardVariants };\r\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root;\r\n\r\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\r\n\r\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\r\n\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\r\n","import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\r\n\r\nconst AspectRatio = AspectRatioPrimitive.Root;\r\n\r\nexport { AspectRatio };\r\n","import * as React from \"react\";\r\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst HoverCard = HoverCardPrimitive.Root;\r\n\r\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\r\n\r\nconst HoverCardContent = React.forwardRef<\r\n React.ElementRef<typeof HoverCardPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <HoverCardPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\r\n\r\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\r\n","import * as React from \"react\";\r\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { buttonVariants } from \"./button3d\";\r\nconst AlertDialog = AlertDialogPrimitive.Root;\r\n\r\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\r\n\r\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\r\n\r\nconst AlertDialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Overlay\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className,\r\n )}\r\n {...props}\r\n ref={ref}\r\n />\r\n));\r\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\r\n\r\nconst AlertDialogContent = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPortal>\r\n <AlertDialogOverlay />\r\n <AlertDialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </AlertDialogPortal>\r\n));\r\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\r\n\r\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />\r\n);\r\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\r\n\r\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\r\n);\r\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\r\n\r\nconst AlertDialogTitle = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold\", className)} {...props} />\r\n));\r\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\r\n\r\nconst AlertDialogDescription = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n));\r\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\r\n\r\nconst AlertDialogAction = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />\r\n));\r\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\r\n\r\nconst AlertDialogCancel = React.forwardRef<\r\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\r\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\r\n>(({ className, ...props }, ref) => (\r\n <AlertDialogPrimitive.Cancel\r\n ref={ref}\r\n className={cn(buttonVariants({ variant: \"outline\" }), \"mt-2 sm:mt-0\", className)}\r\n {...props}\r\n />\r\n));\r\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogPortal,\r\n AlertDialogOverlay,\r\n AlertDialogTrigger,\r\n AlertDialogContent,\r\n AlertDialogHeader,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n};\r\n","import * as React from \"react\";\r\nimport { type DialogProps } from \"@radix-ui/react-dialog\";\r\nimport { Command as CommandPrimitive } from \"cmdk\";\r\nimport { Search } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Dialog, DialogContent } from \"./dialog\";\r\n\r\nconst Command = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nCommand.displayName = CommandPrimitive.displayName;\r\n\r\ninterface CommandDialogProps extends DialogProps {}\r\n\r\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\r\n return (\r\n <Dialog {...props}>\r\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\r\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\r\n {children}\r\n </Command>\r\n </DialogContent>\r\n </Dialog>\r\n );\r\n};\r\n\r\nconst CommandInput = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Input>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\r\n>(({ className, ...props }, ref) => (\r\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\r\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\r\n <CommandPrimitive.Input\r\n ref={ref}\r\n className={cn(\r\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n));\r\n\r\nCommandInput.displayName = CommandPrimitive.Input.displayName;\r\n\r\nconst CommandList = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.List\r\n ref={ref}\r\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\r\n {...props}\r\n />\r\n));\r\n\r\nCommandList.displayName = CommandPrimitive.List.displayName;\r\n\r\nconst CommandEmpty = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Empty>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\r\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />);\r\n\r\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\r\n\r\nconst CommandGroup = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Group>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Group\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\r\n\r\nconst CommandSeparator = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Separator ref={ref} className={cn(\"-mx-1 h-px bg-border\", className)} {...props} />\r\n));\r\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\r\n\r\nconst CommandItem = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\n\r\nCommandItem.displayName = CommandPrimitive.Item.displayName;\r\n\r\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return <span className={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)} {...props} />;\r\n};\r\nCommandShortcut.displayName = \"CommandShortcut\";\r\n\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandShortcut,\r\n CommandSeparator,\r\n};\r\n","import * as React from \"react\";\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { Controller, ControllerProps, FieldPath, FieldValues, FormProvider, useFormContext } from \"react-hook-form\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Label } from \"./label\";\r\n\r\nconst Form = FormProvider;\r\n\r\ntype FormFieldContextValue<\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n> = {\r\n name: TName;\r\n};\r\n\r\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);\r\n\r\nconst FormField = <\r\n TFieldValues extends FieldValues = FieldValues,\r\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\r\n>({\r\n ...props\r\n}: ControllerProps<TFieldValues, TName>) => {\r\n return (\r\n <FormFieldContext.Provider value={{ name: props.name }}>\r\n <Controller {...props} />\r\n </FormFieldContext.Provider>\r\n );\r\n};\r\n\r\nconst useFormField = () => {\r\n const fieldContext = React.useContext(FormFieldContext);\r\n const itemContext = React.useContext(FormItemContext);\r\n const { getFieldState, formState } = useFormContext();\r\n\r\n const fieldState = getFieldState(fieldContext.name, formState);\r\n\r\n if (!fieldContext) {\r\n throw new Error(\"useFormField should be used within <FormField>\");\r\n }\r\n\r\n const { id } = itemContext;\r\n\r\n return {\r\n id,\r\n name: fieldContext.name,\r\n formItemId: `${id}-form-item`,\r\n formDescriptionId: `${id}-form-item-description`,\r\n formMessageId: `${id}-form-item-message`,\r\n ...fieldState,\r\n };\r\n};\r\n\r\ntype FormItemContextValue = {\r\n id: string;\r\n};\r\n\r\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\r\n\r\nconst FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => {\r\n const id = React.useId();\r\n\r\n return (\r\n <FormItemContext.Provider value={{ id }}>\r\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\r\n </FormItemContext.Provider>\r\n );\r\n },\r\n);\r\nFormItem.displayName = \"FormItem\";\r\n\r\nconst FormLabel = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\r\n>(({ className, ...props }, ref) => {\r\n const { error, formItemId } = useFormField();\r\n\r\n return <Label ref={ref} className={cn(error && \"text-destructive\", className)} htmlFor={formItemId} {...props} />;\r\n});\r\nFormLabel.displayName = \"FormLabel\";\r\n\r\nconst FormControl = React.forwardRef<React.ElementRef<typeof Slot>, React.ComponentPropsWithoutRef<typeof Slot>>(\r\n ({ ...props }, ref) => {\r\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\r\n\r\n return (\r\n <Slot\r\n ref={ref}\r\n id={formItemId}\r\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\r\n aria-invalid={!!error}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nFormControl.displayName = \"FormControl\";\r\n\r\nconst FormDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, ...props }, ref) => {\r\n const { formDescriptionId } = useFormField();\r\n\r\n return <p ref={ref} id={formDescriptionId} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />;\r\n },\r\n);\r\nFormDescription.displayName = \"FormDescription\";\r\n\r\nconst FormMessage = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n const { error, formMessageId } = useFormField();\r\n const body = error ? String(error?.message) : children;\r\n\r\n if (!body) {\r\n return null;\r\n }\r\n\r\n return (\r\n <p ref={ref} id={formMessageId} className={cn(\"text-sm font-medium text-destructive\", className)} {...props}>\r\n {body}\r\n </p>\r\n );\r\n },\r\n);\r\nFormMessage.displayName = \"FormMessage\";\r\n\r\nexport { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };\r\n","import * as React from \"react\";\r\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Button3DProps, buttonVariants } from \"./button3d\";\r\n\r\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n className={cn(\"mx-auto flex w-full justify-center\", className)}\r\n {...props}\r\n />\r\n);\r\nPagination.displayName = \"Pagination\";\r\n\r\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\r\n ({ className, ...props }, ref) => (\r\n <ul ref={ref} className={cn(\"flex flex-row items-center gap-1\", className)} {...props} />\r\n ),\r\n);\r\nPaginationContent.displayName = \"PaginationContent\";\r\n\r\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n));\r\nPaginationItem.displayName = \"PaginationItem\";\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean;\r\n} & Pick<Button3DProps, \"size\"> &\r\n React.ComponentProps<\"a\">;\r\n\r\nconst PaginationLink = ({ className, isActive, size = \"md\", ...props }: PaginationLinkProps) => (\r\n <a\r\n aria-current={isActive ? \"page\" : undefined}\r\n className={cn(\r\n buttonVariants({\r\n variant: isActive ? \"outline\" : \"ghost\",\r\n size,\r\n }),\r\n className,\r\n )}\r\n {...props}\r\n />\r\n);\r\nPaginationLink.displayName = \"PaginationLink\";\r\n\r\nconst PaginationPrevious = ({ className, size, ...props }: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink aria-label=\"Go to previous page\" size={size ?? \"md\"} className={cn(\"gap-1 pl-2.5\", className)} {...props}>\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n <span>Previous</span>\r\n </PaginationLink>\r\n);\r\nPaginationPrevious.displayName = \"PaginationPrevious\";\r\n\r\nconst PaginationNext = ({ className, size, ...props }: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink aria-label=\"Go to next page\" size={size ?? \"md\"} className={cn(\"gap-1 pr-2.5\", className)} {...props}>\r\n <span>Next</span>\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </PaginationLink>\r\n);\r\nPaginationNext.displayName = \"PaginationNext\";\r\n\r\nconst PaginationEllipsis = ({ className, ...props }: React.ComponentProps<\"span\">) => (\r\n <span aria-hidden className={cn(\"flex h-9 w-9 items-center justify-center\", className)} {...props}>\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n);\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationEllipsis,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationNext,\r\n PaginationPrevious,\r\n};\r\n","import * as React from \"react\";\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst DropdownMenu = DropdownMenuPrimitive.Root;\r\n\r\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\r\n\r\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\r\n\r\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\r\n\r\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\r\n\r\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\r\n\r\nconst DropdownMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent focus:bg-accent\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n));\r\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\r\n\r\nconst DropdownMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\r\n\r\nconst DropdownMenuContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\r\n>(({ className, sideOffset = 4, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n));\r\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\r\n\r\nconst DropdownMenuItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\r\n\r\nconst DropdownMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n));\r\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\r\n\r\nconst DropdownMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n));\r\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\r\n\r\nconst DropdownMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", inset && \"pl-8\", className)}\r\n {...props}\r\n />\r\n));\r\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\r\n\r\nconst DropdownMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\r\n));\r\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\r\n\r\nconst DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return <span className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)} {...props} />;\r\n};\r\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n};\r\n","import * as React from \"react\";\r\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst ContextMenu = ContextMenuPrimitive.Root;\r\n\r\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\r\n\r\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\r\n\r\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\r\n\r\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\r\n\r\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\r\n\r\nconst ContextMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent data-[state=open]:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </ContextMenuPrimitive.SubTrigger>\r\n));\r\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\r\n\r\nconst ContextMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\r\n\r\nconst ContextMenuContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Portal>\r\n <ContextMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </ContextMenuPrimitive.Portal>\r\n));\r\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\r\n\r\nconst ContextMenuItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\r\n\r\nconst ContextMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <ContextMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.CheckboxItem>\r\n));\r\nContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;\r\n\r\nconst ContextMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.RadioItem>\r\n));\r\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\r\n\r\nconst ContextMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\"px-2 py-1.5 text-sm font-semibold text-foreground\", inset && \"pl-8\", className)}\r\n {...props}\r\n />\r\n));\r\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\r\n\r\nconst ContextMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-border\", className)} {...props} />\r\n));\r\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\r\n\r\nconst ContextMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return <span className={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)} {...props} />;\r\n};\r\nContextMenuShortcut.displayName = \"ContextMenuShortcut\";\r\n\r\nexport {\r\n ContextMenu,\r\n ContextMenuTrigger,\r\n ContextMenuContent,\r\n ContextMenuItem,\r\n ContextMenuCheckboxItem,\r\n ContextMenuRadioItem,\r\n ContextMenuLabel,\r\n ContextMenuSeparator,\r\n ContextMenuShortcut,\r\n ContextMenuGroup,\r\n ContextMenuPortal,\r\n ContextMenuSub,\r\n ContextMenuSubContent,\r\n ContextMenuSubTrigger,\r\n ContextMenuRadioGroup,\r\n};\r\n","import * as React from \"react\";\r\nimport { Drawer as DrawerPrimitive } from \"vaul\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Drawer = ({ shouldScaleBackground = true, ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\r\n <DrawerPrimitive.Root shouldScaleBackground={shouldScaleBackground} {...props} />\r\n);\r\nDrawer.displayName = \"Drawer\";\r\n\r\nconst DrawerTrigger = DrawerPrimitive.Trigger;\r\n\r\nconst DrawerPortal = DrawerPrimitive.Portal;\r\n\r\nconst DrawerClose = DrawerPrimitive.Close;\r\n\r\nconst DrawerOverlay = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Overlay ref={ref} className={cn(\"fixed inset-0 z-50 bg-black/80\", className)} {...props} />\r\n));\r\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\r\n\r\nconst DrawerContent = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DrawerPortal>\r\n <DrawerOverlay />\r\n <DrawerPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\r\n {children}\r\n </DrawerPrimitive.Content>\r\n </DrawerPortal>\r\n));\r\nDrawerContent.displayName = \"DrawerContent\";\r\n\r\nconst DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)} {...props} />\r\n);\r\nDrawerHeader.displayName = \"DrawerHeader\";\r\n\r\nconst DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)} {...props} />\r\n);\r\nDrawerFooter.displayName = \"DrawerFooter\";\r\n\r\nconst DrawerTitle = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Title\r\n ref={ref}\r\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\r\n {...props}\r\n />\r\n));\r\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\r\n\r\nconst DrawerDescription = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n));\r\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\r\n\r\nexport {\r\n Drawer,\r\n DrawerPortal,\r\n DrawerOverlay,\r\n DrawerTrigger,\r\n DrawerClose,\r\n DrawerContent,\r\n DrawerHeader,\r\n DrawerFooter,\r\n DrawerTitle,\r\n DrawerDescription,\r\n};\r\n","import * as React from \"react\";\r\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst MenubarMenu = MenubarPrimitive.Menu;\r\n\r\nconst MenubarGroup = MenubarPrimitive.Group;\r\n\r\nconst MenubarPortal = MenubarPrimitive.Portal;\r\n\r\nconst MenubarSub = MenubarPrimitive.Sub;\r\n\r\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup;\r\n\r\nconst Menubar = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Root\r\n ref={ref}\r\n className={cn(\"flex h-10 items-center space-x-1 rounded-md border bg-background p-1\", className)}\r\n {...props}\r\n />\r\n));\r\nMenubar.displayName = MenubarPrimitive.Root.displayName;\r\n\r\nconst MenubarTrigger = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none data-[state=open]:bg-accent data-[state=open]:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;\r\n\r\nconst MenubarSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <MenubarPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent data-[state=open]:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto h-4 w-4\" />\r\n </MenubarPrimitive.SubTrigger>\r\n));\r\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;\r\n\r\nconst MenubarSubContent = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;\r\n\r\nconst MenubarContent = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\r\n>(({ className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props }, ref) => (\r\n <MenubarPrimitive.Portal>\r\n <MenubarPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n alignOffset={alignOffset}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </MenubarPrimitive.Portal>\r\n));\r\nMenubarContent.displayName = MenubarPrimitive.Content.displayName;\r\n\r\nconst MenubarItem = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <MenubarPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nMenubarItem.displayName = MenubarPrimitive.Item.displayName;\r\n\r\nconst MenubarCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <MenubarPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <MenubarPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </MenubarPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </MenubarPrimitive.CheckboxItem>\r\n));\r\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;\r\n\r\nconst MenubarRadioItem = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <MenubarPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <MenubarPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </MenubarPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </MenubarPrimitive.RadioItem>\r\n));\r\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;\r\n\r\nconst MenubarLabel = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\r\n inset?: boolean;\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <MenubarPrimitive.Label\r\n ref={ref}\r\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", inset && \"pl-8\", className)}\r\n {...props}\r\n />\r\n));\r\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName;\r\n\r\nconst MenubarSeparator = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\r\n));\r\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;\r\n\r\nconst MenubarShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return <span className={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)} {...props} />;\r\n};\r\nMenubarShortcut.displayname = \"MenubarShortcut\";\r\n\r\nexport {\r\n Menubar,\r\n MenubarMenu,\r\n MenubarTrigger,\r\n MenubarContent,\r\n MenubarItem,\r\n MenubarSeparator,\r\n MenubarLabel,\r\n MenubarCheckboxItem,\r\n MenubarRadioGroup,\r\n MenubarRadioItem,\r\n MenubarPortal,\r\n MenubarSubContent,\r\n MenubarSubTrigger,\r\n MenubarGroup,\r\n MenubarSub,\r\n MenubarShortcut,\r\n};\r\n","import * as React from \"react\";\r\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\r\nimport { cva } from \"class-variance-authority\";\r\nimport { ChevronDown } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst NavigationMenu = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n {children}\r\n <NavigationMenuViewport />\r\n </NavigationMenuPrimitive.Root>\r\n));\r\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;\r\n\r\nconst NavigationMenuList = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.List\r\n ref={ref}\r\n className={cn(\"group flex flex-1 list-none items-center justify-center space-x-1\", className)}\r\n {...props}\r\n />\r\n));\r\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;\r\n\r\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\r\n\r\nconst navigationMenuTriggerStyle = cva(\r\n \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\",\r\n);\r\n\r\nconst NavigationMenuTrigger = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Trigger\r\n ref={ref}\r\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\r\n {...props}\r\n >\r\n {children}{\" \"}\r\n <ChevronDown\r\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\r\n aria-hidden=\"true\"\r\n />\r\n </NavigationMenuPrimitive.Trigger>\r\n));\r\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;\r\n\r\nconst NavigationMenuContent = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;\r\n\r\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\r\n\r\nconst NavigationMenuViewport = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\r\n <NavigationMenuPrimitive.Viewport\r\n className={cn(\r\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\r\n className,\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n </div>\r\n));\r\nNavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;\r\n\r\nconst NavigationMenuIndicator = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Indicator\r\n ref={ref}\r\n className={cn(\r\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\r\n </NavigationMenuPrimitive.Indicator>\r\n));\r\nNavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;\r\n\r\nexport {\r\n navigationMenuTriggerStyle,\r\n NavigationMenu,\r\n NavigationMenuList,\r\n NavigationMenuItem,\r\n NavigationMenuContent,\r\n NavigationMenuTrigger,\r\n NavigationMenuLink,\r\n NavigationMenuIndicator,\r\n NavigationMenuViewport,\r\n};\r\n","import * as React from \"react\";\r\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\r\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Select = SelectPrimitive.Root;\r\n\r\nconst SelectGroup = SelectPrimitive.Group;\r\n\r\nconst SelectValue = SelectPrimitive.Value;\r\n\r\nconst SelectTrigger = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon asChild>\r\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\r\n </SelectPrimitive.Icon>\r\n </SelectPrimitive.Trigger>\r\n));\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\r\n\r\nconst SelectScrollUpButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollUpButton\r\n ref={ref}\r\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\r\n {...props}\r\n >\r\n <ChevronUp className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollUpButton>\r\n));\r\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\r\n\r\nconst SelectScrollDownButton = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.ScrollDownButton\r\n ref={ref}\r\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\r\n {...props}\r\n >\r\n <ChevronDown className=\"h-4 w-4\" />\r\n </SelectPrimitive.ScrollDownButton>\r\n));\r\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\r\n\r\nconst SelectContent = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\r\n>(({ className, children, position = \"popper\", ...props }, ref) => (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n position === \"popper\" &&\r\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\r\n className,\r\n )}\r\n position={position}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.Viewport\r\n className={cn(\r\n \"p-1\",\r\n position === \"popper\" &&\r\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\r\n )}\r\n >\r\n {children}\r\n </SelectPrimitive.Viewport>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Content>\r\n </SelectPrimitive.Portal>\r\n));\r\nSelectContent.displayName = SelectPrimitive.Content.displayName;\r\n\r\nconst SelectLabel = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Label ref={ref} className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)} {...props} />\r\n));\r\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\r\n\r\nconst SelectItem = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\r\n>(({ className, children, ...props }, ref) => (\r\n <SelectPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n </SelectPrimitive.Item>\r\n));\r\nSelectItem.displayName = SelectPrimitive.Item.displayName;\r\n\r\nconst SelectSeparator = React.forwardRef<\r\n React.ElementRef<typeof SelectPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <SelectPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\r\n));\r\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\r\n\r\nexport {\r\n Select,\r\n SelectGroup,\r\n SelectValue,\r\n SelectTrigger,\r\n SelectContent,\r\n SelectLabel,\r\n SelectItem,\r\n SelectSeparator,\r\n SelectScrollUpButton,\r\n SelectScrollDownButton,\r\n};\r\n","import * as React from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\r\n ({ className, ...props }, ref) => (\r\n <div className=\"relative w-full overflow-auto\">\r\n <table ref={ref} className={cn(\"w-full caption-bottom text-sm\", className)} {...props} />\r\n </div>\r\n ),\r\n);\r\nTable.displayName = \"Table\";\r\n\r\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />,\r\n);\r\nTableHeader.displayName = \"TableHeader\";\r\n\r\nconst TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\r\n ),\r\n);\r\nTableBody.displayName = \"TableBody\";\r\n\r\nconst TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tfoot ref={ref} className={cn(\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\", className)} {...props} />\r\n ),\r\n);\r\nTableFooter.displayName = \"TableFooter\";\r\n\r\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\"border-b transition-colors data-[state=selected]:bg-muted hover:bg-muted/50\", className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\nTableRow.displayName = \"TableRow\";\r\n\r\nconst TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <th\r\n ref={ref}\r\n className={cn(\r\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n ),\r\n);\r\nTableHead.displayName = \"TableHead\";\r\n\r\nconst TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <td ref={ref} className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)} {...props} />\r\n ),\r\n);\r\nTableCell.displayName = \"TableCell\";\r\n\r\nconst TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <caption ref={ref} className={cn(\"mt-4 text-sm text-muted-foreground\", className)} {...props} />\r\n ),\r\n);\r\nTableCaption.displayName = \"TableCaption\";\r\n\r\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\r\n","import * as React from \"react\";\r\nimport * as RechartsPrimitive from \"recharts\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\n// Format: { THEME_NAME: CSS_SELECTOR }\r\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\r\n\r\nexport type ChartConfig = {\r\n [k in string]: {\r\n label?: React.ReactNode;\r\n icon?: React.ComponentType;\r\n } & ({ color?: string; theme?: never } | { color?: never; theme: Record<keyof typeof THEMES, string> });\r\n};\r\n\r\ntype ChartContextProps = {\r\n config: ChartConfig;\r\n};\r\n\r\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\r\n\r\nfunction useChart() {\r\n const context = React.useContext(ChartContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useChart must be used within a <ChartContainer />\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst ChartContainer = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n config: ChartConfig;\r\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>[\"children\"];\r\n }\r\n>(({ id, className, children, config, ...props }, ref) => {\r\n const uniqueId = React.useId();\r\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\r\n\r\n return (\r\n <ChartContext.Provider value={{ config }}>\r\n <div\r\n data-chart={chartId}\r\n ref={ref}\r\n className={cn(\r\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <ChartStyle id={chartId} config={config} />\r\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\r\n </div>\r\n </ChartContext.Provider>\r\n );\r\n});\r\nChartContainer.displayName = \"Chart\";\r\n\r\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\r\n const colorConfig = Object.entries(config).filter(([_, config]) => config.theme || config.color);\r\n\r\n if (!colorConfig.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <style\r\n dangerouslySetInnerHTML={{\r\n __html: Object.entries(THEMES)\r\n .map(\r\n ([theme, prefix]) => `\r\n${prefix} [data-chart=${id}] {\r\n${colorConfig\r\n .map(([key, itemConfig]) => {\r\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || itemConfig.color;\r\n return color ? ` --color-${key}: ${color};` : null;\r\n })\r\n .join(\"\\n\")}\r\n}\r\n`,\r\n )\r\n .join(\"\\n\"),\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst ChartTooltip = RechartsPrimitive.Tooltip;\r\n\r\nconst ChartTooltipContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\r\n React.ComponentProps<\"div\"> & {\r\n hideLabel?: boolean;\r\n hideIndicator?: boolean;\r\n indicator?: \"line\" | \"dot\" | \"dashed\";\r\n nameKey?: string;\r\n labelKey?: string;\r\n }\r\n>(\r\n (\r\n {\r\n active,\r\n payload,\r\n className,\r\n indicator = \"dot\",\r\n hideLabel = false,\r\n hideIndicator = false,\r\n label,\r\n labelFormatter,\r\n labelClassName,\r\n formatter,\r\n color,\r\n nameKey,\r\n labelKey,\r\n },\r\n ref,\r\n ) => {\r\n const { config } = useChart();\r\n\r\n const tooltipLabel = React.useMemo(() => {\r\n if (hideLabel || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const [item] = payload;\r\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const value =\r\n !labelKey && typeof label === \"string\"\r\n ? config[label as keyof typeof config]?.label || label\r\n : itemConfig?.label;\r\n\r\n if (labelFormatter) {\r\n return <div className={cn(\"font-medium\", labelClassName)}>{labelFormatter(value, payload)}</div>;\r\n }\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\r\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\r\n\r\n if (!active || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\r\n className,\r\n )}\r\n >\r\n {!nestLabel ? tooltipLabel : null}\r\n <div className=\"grid gap-1.5\">\r\n {payload.map((item, index) => {\r\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const indicatorColor = color || item.payload.fill || item.color;\r\n\r\n return (\r\n <div\r\n key={item.dataKey}\r\n className={cn(\r\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\r\n indicator === \"dot\" && \"items-center\",\r\n )}\r\n >\r\n {formatter && item?.value !== undefined && item.name ? (\r\n formatter(item.value, item.name, item, index, item.payload)\r\n ) : (\r\n <>\r\n {itemConfig?.icon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n !hideIndicator && (\r\n <div\r\n className={cn(\"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\", {\r\n \"h-2.5 w-2.5\": indicator === \"dot\",\r\n \"w-1\": indicator === \"line\",\r\n \"w-0 border-[1.5px] border-dashed bg-transparent\": indicator === \"dashed\",\r\n \"my-0.5\": nestLabel && indicator === \"dashed\",\r\n })}\r\n style={\r\n {\r\n \"--color-bg\": indicatorColor,\r\n \"--color-border\": indicatorColor,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )\r\n )}\r\n <div\r\n className={cn(\r\n \"flex flex-1 justify-between leading-none\",\r\n nestLabel ? \"items-end\" : \"items-center\",\r\n )}\r\n >\r\n <div className=\"grid gap-1.5\">\r\n {nestLabel ? tooltipLabel : null}\r\n <span className=\"text-muted-foreground\">{itemConfig?.label || item.name}</span>\r\n </div>\r\n {item.value && (\r\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\r\n {item.value.toLocaleString()}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n },\r\n);\r\nChartTooltipContent.displayName = \"ChartTooltip\";\r\n\r\nconst ChartLegend = RechartsPrimitive.Legend;\r\n\r\nconst ChartLegendContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> &\r\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\r\n hideIcon?: boolean;\r\n nameKey?: string;\r\n }\r\n>(({ className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey }, ref) => {\r\n const { config } = useChart();\r\n\r\n if (!payload?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center justify-center gap-4\", verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\", className)}\r\n >\r\n {payload.map((item) => {\r\n const key = `${nameKey || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n\r\n return (\r\n <div\r\n key={item.value}\r\n className={cn(\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\")}\r\n >\r\n {itemConfig?.icon && !hideIcon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n <div\r\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\r\n style={{\r\n backgroundColor: item.color,\r\n }}\r\n />\r\n )}\r\n {itemConfig?.label}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n});\r\nChartLegendContent.displayName = \"ChartLegend\";\r\n\r\n// Helper to extract item config from a payload.\r\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\r\n if (typeof payload !== \"object\" || payload === null) {\r\n return undefined;\r\n }\r\n\r\n const payloadPayload =\r\n \"payload\" in payload && typeof payload.payload === \"object\" && payload.payload !== null\r\n ? payload.payload\r\n : undefined;\r\n\r\n let configLabelKey: string = key;\r\n\r\n if (key in payload && typeof payload[key as keyof typeof payload] === \"string\") {\r\n configLabelKey = payload[key as keyof typeof payload] as string;\r\n } else if (\r\n payloadPayload &&\r\n key in payloadPayload &&\r\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\r\n ) {\r\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\r\n }\r\n\r\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config];\r\n}\r\n\r\nexport { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, ChartStyle };\r\n","import * as React from \"react\";\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\r\nimport { DayPicker } from \"react-day-picker\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { buttonVariants } from \"./button3d\";\r\n\r\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\r\n\r\nfunction Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\r\n return (\r\n <DayPicker\r\n showOutsideDays={showOutsideDays}\r\n className={cn(\"p-3\", className)}\r\n classNames={{\r\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\r\n month: \"space-y-4\",\r\n caption: \"flex justify-center pt-1 relative items-center\",\r\n caption_label: \"text-sm font-medium\",\r\n nav: \"space-x-1 flex items-center\",\r\n nav_button: cn(\r\n buttonVariants({ variant: \"outline\" }),\r\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\r\n ),\r\n nav_button_previous: \"absolute left-1\",\r\n nav_button_next: \"absolute right-1\",\r\n table: \"w-full border-collapse space-y-1\",\r\n head_row: \"flex\",\r\n head_cell: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\r\n row: \"flex w-full mt-2\",\r\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\r\n day: cn(buttonVariants({ variant: \"ghost\" }), \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"),\r\n day_range_end: \"day-range-end\",\r\n day_selected:\r\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\r\n day_today: \"bg-accent text-accent-foreground\",\r\n day_outside:\r\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\r\n day_disabled: \"text-muted-foreground opacity-50\",\r\n day_range_middle: \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\r\n day_hidden: \"invisible\",\r\n ...classNames,\r\n }}\r\n components={{\r\n IconLeft: ({ ..._props }) => <ChevronLeft className=\"h-4 w-4\" />,\r\n IconRight: ({ ..._props }) => <ChevronRight className=\"h-4 w-4\" />,\r\n }}\r\n {...props}\r\n />\r\n );\r\n}\r\nCalendar.displayName = \"Calendar\";\r\n\r\nexport { Calendar };\r\n","import * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { VariantProps, cva } from \"class-variance-authority\";\r\nimport { PanelLeft } from \"lucide-react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Button3D } from \"./button3d\";\r\nimport { Input } from \"./input\";\r\nimport { Separator } from \"./separator\";\r\nimport { Sheet, SheetContent } from \"./sheet\";\r\n\r\nconst MOBILE_BREAKPOINT = 768;\r\n\r\nfunction useIsMobile(): boolean {\r\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);\r\n\r\n React.useEffect(() => {\r\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\r\n const onChange = () => {\r\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\r\n };\r\n mql.addEventListener(\"change\", onChange);\r\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\r\n return () => mql.removeEventListener(\"change\", onChange);\r\n }, []);\r\n\r\n return !!isMobile;\r\n}\r\nimport { Skeleton } from \"./skeleton\";\r\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"./tooltip\";\r\n\r\nconst SIDEBAR_COOKIE_NAME = \"sidebar:state\";\r\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\n\r\ntype SidebarContext = {\r\n state: \"expanded\" | \"collapsed\";\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n openMobile: boolean;\r\n setOpenMobile: (open: boolean) => void;\r\n isMobile: boolean;\r\n toggleSidebar: () => void;\r\n};\r\n\r\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\r\n\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst SidebarProvider = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n }\r\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\r\n const isMobile = useIsMobile();\r\n const [openMobile, setOpenMobile] = React.useState(false);\r\n\r\n // This is the internal state of the sidebar.\r\n // We use openProp and setOpenProp for control from outside the component.\r\n const [_open, _setOpen] = React.useState(defaultOpen);\r\n const open = openProp ?? _open;\r\n const setOpen = React.useCallback(\r\n (value: boolean | ((value: boolean) => boolean)) => {\r\n const openState = typeof value === \"function\" ? value(open) : value;\r\n if (setOpenProp) {\r\n setOpenProp(openState);\r\n } else {\r\n _setOpen(openState);\r\n }\r\n\r\n // This sets the cookie to keep the sidebar state.\r\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\r\n },\r\n [setOpenProp, open],\r\n );\r\n\r\n // Helper to toggle the sidebar.\r\n const toggleSidebar = React.useCallback(() => {\r\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\r\n }, [isMobile, setOpen, setOpenMobile]);\r\n\r\n // Adds a keyboard shortcut to toggle the sidebar.\r\n React.useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\r\n event.preventDefault();\r\n toggleSidebar();\r\n }\r\n };\r\n\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [toggleSidebar]);\r\n\r\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n // This makes it easier to style the sidebar with Tailwind classes.\r\n const state = open ? \"expanded\" : \"collapsed\";\r\n\r\n const contextValue = React.useMemo<SidebarContext>(\r\n () => ({\r\n state,\r\n open,\r\n setOpen,\r\n isMobile,\r\n openMobile,\r\n setOpenMobile,\r\n toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH,\r\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar\", className)}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n});\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\n\r\nconst Sidebar = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n }\r\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, ...props }, ref) => {\r\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n className={cn(\"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\", className)}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n if (isMobile) {\r\n return (\r\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\r\n <SheetContent\r\n data-sidebar=\"sidebar\"\r\n data-mobile=\"true\"\r\n className=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\r\n } as React.CSSProperties\r\n }\r\n side={side}\r\n >\r\n <div className=\"flex h-full w-full flex-col\">{children}</div>\r\n </SheetContent>\r\n </Sheet>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className=\"group peer hidden text-sidebar-foreground md:block\"\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}\r\n >\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n className={cn(\r\n \"relative h-svh w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\",\r\n \"group-data-[collapsible=offcanvas]:w-0\",\r\n \"group-data-[side=right]:rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\r\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\",\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex\",\r\n side === \"left\"\r\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\r\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\r\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <div\r\n data-sidebar=\"sidebar\"\r\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n});\r\nSidebar.displayName = \"Sidebar\";\r\n\r\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button3D>, React.ComponentProps<typeof Button3D>>(\r\n ({ className, onClick, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n\r\n return (\r\n <Button3D\r\n ref={ref}\r\n data-sidebar=\"trigger\"\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className={cn(\"h-7 w-7\", className)}\r\n onClick={(event) => {\r\n onClick?.(event);\r\n toggleSidebar();\r\n }}\r\n {...props}\r\n >\r\n <PanelLeft />\r\n <span className=\"sr-only\">Toggle Sidebar</span>\r\n </Button3D>\r\n );\r\n },\r\n);\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\n\r\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(\r\n ({ className, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n data-sidebar=\"rail\"\r\n aria-label=\"Toggle Sidebar\"\r\n tabIndex={-1}\r\n onClick={toggleSidebar}\r\n title=\"Toggle Sidebar\"\r\n className={cn(\r\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 hover:after:bg-sidebar-border sm:flex\",\r\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\r\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\r\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\r\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\r\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarRail.displayName = \"SidebarRail\";\r\n\r\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\r\n return (\r\n <main\r\n ref={ref}\r\n className={cn(\r\n \"relative flex min-h-svh flex-1 flex-col bg-background\",\r\n \"peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInset.displayName = \"SidebarInset\";\r\n\r\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof Input>, React.ComponentProps<typeof Input>>(\r\n ({ className, ...props }, ref) => {\r\n return (\r\n <Input\r\n ref={ref}\r\n data-sidebar=\"input\"\r\n className={cn(\r\n \"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarInput.displayName = \"SidebarInput\";\r\n\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"header\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\n\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"footer\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\n\r\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\r\n ({ className, ...props }, ref) => {\r\n return (\r\n <Separator\r\n ref={ref}\r\n data-sidebar=\"separator\"\r\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarSeparator.displayName = \"SidebarSeparator\";\r\n\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"content\"\r\n className={cn(\r\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarContent.displayName = \"SidebarContent\";\r\n\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"group\"\r\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\n\r\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-label\"\r\n className={cn(\r\n \"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\n\r\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-action\"\r\n className={cn(\r\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\r\n\r\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\r\n ({ className, ...props }, ref) => (\r\n <div ref={ref} data-sidebar=\"group-content\" className={cn(\"w-full text-sm\", className)} {...props} />\r\n ),\r\n);\r\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\r\n\r\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul ref={ref} data-sidebar=\"menu\" className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)} {...props} />\r\n));\r\nSidebarMenu.displayName = \"SidebarMenu\";\r\n\r\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\r\n <li ref={ref} data-sidebar=\"menu-item\" className={cn(\"group/menu-item relative\", className)} {...props} />\r\n));\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\n\r\nconst sidebarMenuButtonVariants = cva(\r\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\r\n outline:\r\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\r\n },\r\n size: {\r\n default: \"h-8 text-sm\",\r\n sm: \"h-7 text-xs\",\r\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst SidebarMenuButton = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n isActive?: boolean;\r\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n } & VariantProps<typeof sidebarMenuButtonVariants>\r\n>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n const { isMobile, state } = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\r\n {...props}\r\n />\r\n );\r\n\r\n if (!tooltip) {\r\n return button;\r\n }\r\n\r\n if (typeof tooltip === \"string\") {\r\n tooltip = {\r\n children: tooltip,\r\n };\r\n }\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\r\n </Tooltip>\r\n );\r\n});\r\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\r\n\r\nconst SidebarMenuAction = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n }\r\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-action\"\r\n className={cn(\r\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n showOnHover &&\r\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\r\n\r\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\r\n ({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-badge\"\r\n className={cn(\r\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\r\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n ),\r\n);\r\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\r\n\r\nconst SidebarMenuSkeleton = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n }\r\n>(({ className, showIcon = false, ...props }, ref) => {\r\n // Random width between 50 to 90%.\r\n const width = React.useMemo(() => {\r\n return `${Math.floor(Math.random() * 40) + 50}%`;\r\n }, []);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-skeleton\"\r\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\r\n {...props}\r\n >\r\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\r\n <Skeleton\r\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\r\n data-sidebar=\"menu-skeleton-text\"\r\n style={\r\n {\r\n \"--skeleton-width\": width,\r\n } as React.CSSProperties\r\n }\r\n />\r\n </div>\r\n );\r\n});\r\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\r\n\r\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\r\n ({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar=\"menu-sub\"\r\n className={cn(\r\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n ),\r\n);\r\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\r\n\r\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ ...props }, ref) => (\r\n <li ref={ref} {...props} />\r\n));\r\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\r\n\r\nconst SidebarMenuSubButton = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n }\r\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-sub-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\r\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\r\n size === \"sm\" && \"text-xs\",\r\n size === \"md\" && \"text-sm\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\r\n\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInput,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n};\r\n","import * as React from \"react\";\r\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\";\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Button3D } from \"./button3d\";\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1];\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\r\ntype CarouselOptions = UseCarouselParameters[0];\r\ntype CarouselPlugin = UseCarouselParameters[1];\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions;\r\n plugins?: CarouselPlugin;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n setApi?: (api: CarouselApi) => void;\r\n};\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\r\n api: ReturnType<typeof useEmblaCarousel>[1];\r\n scrollPrev: () => void;\r\n scrollNext: () => void;\r\n canScrollPrev: boolean;\r\n canScrollNext: boolean;\r\n} & CarouselProps;\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst Carousel = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement> & CarouselProps>(\r\n ({ orientation = \"horizontal\", opts, setApi, plugins, className, children, ...props }, ref) => {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins,\r\n );\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\r\n const [canScrollNext, setCanScrollNext] = React.useState(false);\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) {\r\n return;\r\n }\r\n\r\n setCanScrollPrev(api.canScrollPrev());\r\n setCanScrollNext(api.canScrollNext());\r\n }, []);\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev();\r\n }, [api]);\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext();\r\n }, [api]);\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault();\r\n scrollPrev();\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault();\r\n scrollNext();\r\n }\r\n },\r\n [scrollPrev, scrollNext],\r\n );\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) {\r\n return;\r\n }\r\n\r\n setApi(api);\r\n }, [api, setApi]);\r\n\r\n React.useEffect(() => {\r\n if (!api) {\r\n return;\r\n }\r\n\r\n onSelect(api);\r\n api.on(\"reInit\", onSelect);\r\n api.on(\"select\", onSelect);\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect);\r\n };\r\n }, [api, onSelect]);\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api: api,\r\n opts,\r\n orientation: orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n onKeyDownCapture={handleKeyDown}\r\n className={cn(\"relative\", className)}\r\n role=\"region\"\r\n aria-roledescription=\"carousel\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n );\r\n },\r\n);\r\nCarousel.displayName = \"Carousel\";\r\n\r\nconst CarouselContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => {\r\n const { carouselRef, orientation } = useCarousel();\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\">\r\n <div\r\n ref={ref}\r\n className={cn(\"flex\", orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\", className)}\r\n {...props}\r\n />\r\n </div>\r\n );\r\n },\r\n);\r\nCarouselContent.displayName = \"CarouselContent\";\r\n\r\nconst CarouselItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => {\r\n const { orientation } = useCarousel();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n aria-roledescription=\"slide\"\r\n className={cn(\"min-w-0 shrink-0 grow-0 basis-full\", orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\", className)}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nCarouselItem.displayName = \"CarouselItem\";\r\n\r\nconst CarouselPrevious = React.forwardRef<HTMLButtonElement, React.ComponentProps<typeof Button3D>>(\r\n ({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\r\n\r\n return (\r\n <Button3D\r\n ref={ref}\r\n variant={variant as any}\r\n size={size as any}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-left-12 top-1/2 -translate-y-1/2\"\r\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n {...props}\r\n >\r\n <ArrowLeft className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </Button3D>\r\n );\r\n },\r\n);\r\nCarouselPrevious.displayName = \"CarouselPrevious\";\r\n\r\nconst CarouselNext = React.forwardRef<HTMLButtonElement, React.ComponentProps<typeof Button3D>>(\r\n ({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel();\r\n\r\n return (\r\n <Button3D\r\n ref={ref}\r\n variant={variant as any}\r\n size={size as any}\r\n className={cn(\r\n \"absolute h-8 w-8 rounded-full\",\r\n orientation === \"horizontal\"\r\n ? \"-right-12 top-1/2 -translate-y-1/2\"\r\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n {...props}\r\n >\r\n <ArrowRight className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Next slide</span>\r\n </Button3D>\r\n );\r\n },\r\n);\r\nCarouselNext.displayName = \"CarouselNext\";\r\n\r\nexport { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext };\r\n","import * as React from \"react\";\r\nimport { OTPInput, OTPInputContext } from \"input-otp\";\r\nimport { Dot } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst InputOTP = React.forwardRef<React.ElementRef<typeof OTPInput>, React.ComponentPropsWithoutRef<typeof OTPInput>>(\r\n ({ className, containerClassName, ...props }, ref) => (\r\n <OTPInput\r\n ref={ref}\r\n containerClassName={cn(\"flex items-center gap-2 has-[:disabled]:opacity-50\", containerClassName)}\r\n className={cn(\"disabled:cursor-not-allowed\", className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\nInputOTP.displayName = \"InputOTP\";\r\n\r\nconst InputOTPGroup = React.forwardRef<React.ElementRef<\"div\">, React.ComponentPropsWithoutRef<\"div\">>(\r\n ({ className, ...props }, ref) => <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />,\r\n);\r\nInputOTPGroup.displayName = \"InputOTPGroup\";\r\n\r\nconst InputOTPSlot = React.forwardRef<\r\n React.ElementRef<\"div\">,\r\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\r\n>(({ index, className, ...props }, ref) => {\r\n const inputOTPContext = React.useContext(OTPInputContext) as any;\r\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots?.[index] || {};\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\",\r\n isActive && \"z-10 ring-2 ring-ring ring-offset-background\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {char}\r\n {hasFakeCaret && (\r\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\r\n <div className=\"animate-caret-blink h-4 w-px bg-foreground duration-1000\" />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n});\r\nInputOTPSlot.displayName = \"InputOTPSlot\";\r\n\r\nconst InputOTPSeparator = React.forwardRef<React.ElementRef<\"div\">, React.ComponentPropsWithoutRef<\"div\">>(\r\n ({ ...props }, ref) => (\r\n <div ref={ref} role=\"separator\" {...props}>\r\n <Dot />\r\n </div>\r\n ),\r\n);\r\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\r\n\r\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\r\n","import React, { useMemo, useRef, useState } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport { Text, Instances, Instance } from \"@react-three/drei\";\r\nimport { Color, Vector3 } from \"three\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface BarData {\r\n label: string;\r\n value: number;\r\n color?: string;\r\n}\r\n\r\nexport interface BarChart3DProps {\r\n data: BarData[];\r\n orientation?: \"vertical\" | \"horizontal\";\r\n barSize?: number;\r\n gap?: number;\r\n animated?: boolean;\r\n className?: string; // For container if wrapped, but R3F components don't use className\r\n}\r\n\r\nexport function BarChart3D({\r\n data,\r\n orientation = \"vertical\",\r\n barSize = 0.5,\r\n gap = 0.2,\r\n animated = true,\r\n}: BarChart3DProps) {\r\n const maxValue = useMemo(() => Math.max(...data.map((d) => d.value)), [data]);\r\n\r\n return (\r\n <group>\r\n {/* Base Plane Grid */}\r\n <gridHelper args={[data.length * (barSize + gap) + 2, 10]} position={[0, 0, 0]} />\r\n\r\n <Instances range={data.length}>\r\n <boxGeometry args={[barSize, 1, barSize]} />\r\n <meshStandardMaterial roughness={0.3} metalness={0.6} />\r\n\r\n {data.map((item, index) => {\r\n const height = item.value / maxValue * 5; // Normalize to max height 5\r\n const x = (index - data.length / 2) * (barSize + gap);\r\n\r\n return (\r\n <group key={index} position={[x, 0, 0]}>\r\n <BarInstance\r\n height={height}\r\n color={item.color || \"#8884d8\"}\r\n animated={animated}\r\n />\r\n {/* Label */}\r\n <Text\r\n position={[0, -0.5, 0]}\r\n fontSize={0.2}\r\n color=\"black\"\r\n anchorX=\"center\"\r\n anchorY=\"top\"\r\n >\r\n {item.label}\r\n </Text>\r\n </group>\r\n );\r\n })}\r\n </Instances>\r\n </group>\r\n );\r\n}\r\n\r\nfunction BarInstance({ height, color, animated }: { height: number; color: string; animated: boolean }) {\r\n const ref = useRef<any>(null);\r\n const [hovered, setHover] = useState(false);\r\n\r\n // Pivot adjustment: Scale is applied from center, so we shift position Y\r\n // Ideally we use a geometry shifted up, but with Instance we can just position it at height/2\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current) {\r\n // Animate growth\r\n const targetHeight = height;\r\n const targetY = height / 2;\r\n\r\n if (animated) {\r\n ref.current.scale.y += (targetHeight - ref.current.scale.y) * delta * 5;\r\n ref.current.position.y += (targetY - ref.current.position.y) * delta * 5;\r\n } else {\r\n ref.current.scale.y = targetHeight;\r\n ref.current.position.y = targetY;\r\n }\r\n\r\n // Hover effect\r\n if (hovered) {\r\n // ref.current.color.lerp(new Color(\"white\"), 0.1); // Instance coloring requires manipulating the color attribute\r\n }\r\n }\r\n });\r\n\r\n return (\r\n <Instance\r\n ref={ref}\r\n color={hovered ? \"orange\" : color}\r\n onPointerOver={() => setHover(true)}\r\n onPointerOut={() => setHover(false)}\r\n />\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { Line } from \"@react-three/drei\";\r\nimport { Vector3, CatmullRomCurve3 } from \"three\";\r\n\r\nexport interface LineChartData {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface LineChart3DProps {\r\n data: LineChartData[];\r\n smooth?: boolean; // Use spline interpolation\r\n color?: string;\r\n lineWidth?: number;\r\n showPoints?: boolean;\r\n}\r\n\r\nexport function LineChart3D({\r\n data,\r\n smooth = true,\r\n color = \"#22d3ee\",\r\n lineWidth = 3,\r\n showPoints = true,\r\n}: LineChart3DProps) {\r\n\r\n const points = useMemo(() => {\r\n // Normalize data? Assuming raw coords for now or normalized 0-10 range\r\n // If x is index, just map to space\r\n if (data.length === 0) return [];\r\n\r\n // Normalize logic could go here if needed. \r\n // For now assuming data fits in 10x5 space.\r\n const maxX = Math.max(...data.map(d => d.x));\r\n const maxY = Math.max(...data.map(d => d.y));\r\n\r\n return data.map(d => new Vector3(\r\n (d.x / (maxX || 1)) * 10 - 5, // Center X\r\n (d.y / (maxY || 1)) * 5, // Y up\r\n 0\r\n ));\r\n }, [data]);\r\n\r\n const curve = useMemo(() => {\r\n if (points.length < 2 || !smooth) return null;\r\n return new CatmullRomCurve3(points);\r\n }, [points, smooth]);\r\n\r\n return (\r\n <group>\r\n {/* Line */}\r\n {smooth && curve ? (\r\n // Render curve\r\n <mesh>\r\n <tubeGeometry args={[curve, 64, 0.05, 8, false]} />\r\n <meshStandardMaterial color={color} emissive={color} emissiveIntensity={0.5} />\r\n </mesh>\r\n ) : (\r\n <Line\r\n points={points}\r\n color={color}\r\n lineWidth={lineWidth}\r\n segments\r\n />\r\n )}\r\n\r\n {/* Points */}\r\n {showPoints && points.map((p, i) => (\r\n <mesh key={i} position={p}>\r\n <sphereGeometry args={[0.1, 16, 16]} />\r\n <meshStandardMaterial color=\"white\" />\r\n </mesh>\r\n ))}\r\n\r\n {/* Optional: Area Fill (complex to do generic, skipping for MVP) */}\r\n\r\n {/* Grid */}\r\n <gridHelper args={[12, 12]} rotation={[Math.PI / 2, 0, 0]} position={[0, 2.5, -0.1]} />\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo, useState } from \"react\";\r\nimport { Shape } from \"three\";\r\n// React Spring removed (not in dependencies)\r\nimport { useFrame } from \"@react-three/fiber\";\r\n// I should use useFrame for manual animation or pure CSS/HTML for overlays?\r\n// But 3D pie explosion needs 3D transform.\r\n// I'll use manual lerp in useFrame for \"explode\" effect.\r\n\r\n\r\nimport { Text } from \"@react-three/drei\";\r\n\r\nexport interface PieData {\r\n label: string;\r\n value: number;\r\n color?: string;\r\n}\r\n\r\nexport interface PieChart3DProps {\r\n data: PieData[];\r\n radius?: number;\r\n depth?: number;\r\n explode?: boolean;\r\n donut?: boolean;\r\n}\r\n\r\nexport function PieChart3D({\r\n data,\r\n radius = 5,\r\n depth = 1,\r\n explode = true,\r\n donut = false,\r\n}: PieChart3DProps) {\r\n const total = useMemo(() => data.reduce((acc, cur) => acc + cur.value, 0), [data]);\r\n\r\n let startAngle = 0;\r\n\r\n return (\r\n <group rotation={[-Math.PI / 2, 0, 0]}> {/* Rotate to face camera if top-down, or adjust scene */}\r\n {data.map((item, index) => {\r\n const percent = item.value / total;\r\n const angle = percent * Math.PI * 2;\r\n const endAngle = startAngle + angle;\r\n\r\n const props = {\r\n startAngle,\r\n endAngle,\r\n radius,\r\n color: item.color || `hsl(${(index / data.length) * 360}, 70%, 50%)`,\r\n depth,\r\n explode,\r\n innerRadius: donut ? radius * 0.5 : 0,\r\n };\r\n\r\n startAngle = endAngle;\r\n\r\n return <PieSegment key={index} {...props} label={item.label} />;\r\n })}\r\n </group>\r\n );\r\n}\r\n\r\nfunction PieSegment({ startAngle, endAngle, radius, color, depth, explode, innerRadius, label }: any) {\r\n const shape = useMemo(() => {\r\n const s = new Shape();\r\n if (innerRadius > 0) {\r\n // Donut shape - complex to do with simple MoveTo/Arc?\r\n // Easier: Arc outer, then Arc inner (hole).\r\n // Actually THREE.Shape supports holes.\r\n s.moveTo(Math.cos(startAngle) * radius, Math.sin(startAngle) * radius);\r\n s.absarc(0, 0, radius, startAngle, endAngle, false);\r\n // Hole\r\n const hole = new Shape();\r\n hole.absarc(0, 0, innerRadius, startAngle, endAngle, false);\r\n s.holes.push(hole);\r\n } else {\r\n s.moveTo(0, 0);\r\n s.arc(0, 0, radius, startAngle, endAngle, false);\r\n s.lineTo(0, 0);\r\n }\r\n return s;\r\n }, [startAngle, endAngle, radius, innerRadius]);\r\n\r\n const [hovered, setHover] = useState(false);\r\n const ref = React.useRef<any>(null);\r\n\r\n // Direction to explode\r\n const midAngle = (startAngle + endAngle) / 2;\r\n const explodeDir = [Math.cos(midAngle), Math.sin(midAngle), 0];\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current && explode) {\r\n const targetDist = hovered ? 0.5 : 0;\r\n ref.current.position.x += (explodeDir[0] * targetDist - ref.current.position.x) * delta * 5;\r\n ref.current.position.y += (explodeDir[1] * targetDist - ref.current.position.y) * delta * 5;\r\n }\r\n });\r\n\r\n return (\r\n <group ref={ref}>\r\n <mesh\r\n onPointerOver={() => setHover(true)}\r\n onPointerOut={() => setHover(false)}\r\n >\r\n <extrudeGeometry args={[shape, { depth: depth, bevelEnabled: false }]} />\r\n <meshStandardMaterial color={hovered ? \"white\" : color} />\r\n </mesh>\r\n {/* Label at center of segment */}\r\n {hovered && (\r\n <Text\r\n position={[explodeDir[0] * radius * 0.8, explodeDir[1] * radius * 0.8, depth + 0.1]}\r\n fontSize={0.5}\r\n color=\"black\"\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo, useRef, useState } from \"react\";\r\nimport { Instances, Instance } from \"@react-three/drei\";\r\nimport { Color, Vector3 } from \"three\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\n\r\nexport interface ScatterPoint {\r\n x: number;\r\n y: number;\r\n z: number;\r\n size?: number;\r\n color?: string;\r\n label?: string; // Optional label\r\n}\r\n\r\nexport interface ScatterPlot3DProps {\r\n data: ScatterPoint[];\r\n pointSize?: number;\r\n colorScale?: string[]; // e.g. [\"#22d3ee\", \"#a78bfa\"]\r\n}\r\n\r\nexport function ScatterPlot3D({\r\n data,\r\n pointSize = 0.1,\r\n colorScale = [\"#22d3ee\", \"#a78bfa\"],\r\n}: ScatterPlot3DProps) {\r\n\r\n return (\r\n <group>\r\n <Instances range={data.length}>\r\n <sphereGeometry args={[1, 16, 16]} />\r\n <meshStandardMaterial />\r\n\r\n {data.map((point, i) => (\r\n <ScatterPointInstance\r\n key={i}\r\n position={[point.x, point.y, point.z]}\r\n scale={point.size || pointSize}\r\n color={point.color || colorScale[i % colorScale.length]}\r\n />\r\n ))}\r\n </Instances>\r\n\r\n {/* Axes */}\r\n <axesHelper args={[10]} />\r\n <gridHelper args={[20, 20]} position={[0, -5, 0]} />\r\n </group>\r\n );\r\n}\r\n\r\nfunction ScatterPointInstance({ position, scale, color }: { position: [number, number, number], scale: number, color: string }) {\r\n const ref = useRef<any>(null);\r\n const [hovered, setHover] = useState(false);\r\n\r\n useFrame((state) => {\r\n if (ref.current) {\r\n const s = hovered ? scale * 1.5 : scale;\r\n // Correct lerp using Vector3\r\n const target = new Vector3(s, s, s);\r\n ref.current.scale.lerp(target, 0.1);\r\n }\r\n });\r\n\r\n return (\r\n <Instance\r\n ref={ref}\r\n position={position}\r\n scale={scale}\r\n color={hovered ? \"white\" : color}\r\n onPointerOver={() => setHover(true)}\r\n onPointerOut={() => setHover(false)}\r\n />\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { Line, Text } from \"@react-three/drei\";\r\nimport { Vector3 } from \"three\";\r\n\r\nexport interface GraphNode {\r\n id: string;\r\n label?: string;\r\n x?: number;\r\n y?: number;\r\n z?: number;\r\n color?: string;\r\n}\r\n\r\nexport interface GraphEdge {\r\n source: string;\r\n target: string;\r\n}\r\n\r\nexport interface Graph3DProps {\r\n nodes: GraphNode[];\r\n edges: GraphEdge[];\r\n physics?: boolean; // Stub property for API compatibility\r\n}\r\n\r\nexport function Graph3D({ nodes, edges, physics = false }: Graph3DProps) {\r\n // Naive layout if no coords provided: Random or Grid\r\n const positionedNodes = useMemo(() => {\r\n return nodes.map((node, i) => ({\r\n ...node,\r\n vec: new Vector3(\r\n node.x ?? (Math.random() - 0.5) * 10,\r\n node.y ?? (Math.random() - 0.5) * 10,\r\n node.z ?? (Math.random() - 0.5) * 10\r\n )\r\n }));\r\n }, [nodes]);\r\n\r\n // Map for quick lookup\r\n const nodeMap = useMemo(() => {\r\n const map = new Map<string, Vector3>();\r\n positionedNodes.forEach(n => map.set(n.id, n.vec));\r\n return map;\r\n }, [positionedNodes]);\r\n\r\n return (\r\n <group>\r\n {/* Edges */}\r\n {edges.map((edge, i) => {\r\n const start = nodeMap.get(edge.source);\r\n const end = nodeMap.get(edge.target);\r\n if (!start || !end) return null;\r\n\r\n return (\r\n <Line\r\n key={i}\r\n points={[start, end]}\r\n color=\"#444\"\r\n lineWidth={1}\r\n transparent\r\n opacity={0.5}\r\n />\r\n );\r\n })}\r\n\r\n {/* Nodes */}\r\n {positionedNodes.map((node, i) => (\r\n <group key={i} position={node.vec}>\r\n <mesh>\r\n <sphereGeometry args={[0.2, 16, 16]} />\r\n <meshStandardMaterial color={node.color || \"#22d3ee\"} />\r\n </mesh>\r\n {node.label && (\r\n <Text\r\n position={[0, 0.3, 0]}\r\n fontSize={0.2}\r\n color=\"white\"\r\n >\r\n {node.label}\r\n </Text>\r\n )}\r\n </group>\r\n ))}\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { useTexture } from \"@react-three/drei\";\r\nimport { Color, Vector3 } from \"three\";\r\n\r\nexport interface MapMarker {\r\n lat: number;\r\n lng: number;\r\n label?: string;\r\n color?: string;\r\n}\r\n\r\nexport interface Map3DProps {\r\n markers?: MapMarker[];\r\n radius?: number;\r\n textureSrc?: string; // URL for earth map\r\n}\r\n\r\nexport function Map3D({\r\n markers = [],\r\n radius = 5,\r\n textureSrc = \"https://raw.githubusercontent.com/mrdoob/three.js/master/examples/textures/planets/earth_atmos_2048.jpg\",\r\n}: Map3DProps) {\r\n // Texture\r\n // We use a generic default or passed one\r\n // Note: useTexture might suspend.\r\n // We'll wrap in Suspense at usage site or here?\r\n // R3F components usually suspend.\r\n\r\n const texture = useTexture(textureSrc);\r\n\r\n return (\r\n <group>\r\n <mesh>\r\n <sphereGeometry args={[radius, 64, 64]} />\r\n <meshStandardMaterial map={texture} metalness={0.1} roughness={0.7} />\r\n </mesh>\r\n\r\n {markers.map((marker, i) => {\r\n // Convert Lat/Lng to Vector3\r\n const phi = (90 - marker.lat) * (Math.PI / 180);\r\n const theta = (marker.lng + 180) * (Math.PI / 180);\r\n\r\n const x = -(radius * Math.sin(phi) * Math.cos(theta));\r\n const z = (radius * Math.sin(phi) * Math.sin(theta));\r\n const y = (radius * Math.cos(phi));\r\n\r\n return (\r\n <mesh key={i} position={[x, y, z]}>\r\n <sphereGeometry args={[0.1, 16, 16]} />\r\n <meshBasicMaterial color={marker.color || \"red\"} />\r\n </mesh>\r\n );\r\n })}\r\n </group>\r\n );\r\n}\r\n","import React, { useRef, useState, useMemo } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport { ImagePlane } from \"./imageplane\";\r\nimport { Group } from \"three\";\r\n\r\nexport interface GalleryImage {\r\n src: string;\r\n alt: string;\r\n}\r\n\r\nexport interface Gallery3DProps {\r\n images: GalleryImage[];\r\n layout?: \"carousel\" | \"grid\" | \"wall\";\r\n radius?: number; // For carousel\r\n gap?: number;\r\n}\r\n\r\nexport function Gallery3D({\r\n images,\r\n layout = \"carousel\",\r\n radius = 5,\r\n gap = 1.5,\r\n}: Gallery3DProps) {\r\n\r\n const ref = useRef<Group>(null);\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current && layout === \"carousel\") {\r\n // Slowly rotate whole carousel? Or allow user interaction?\r\n // Basic auto-rotate for wow factor\r\n ref.current.rotation.y += delta * 0.1;\r\n }\r\n });\r\n\r\n return (\r\n <group ref={ref}>\r\n {images.map((img, i) => {\r\n let position: [number, number, number] = [0, 0, 0];\r\n let rotation: [number, number, number] = [0, 0, 0];\r\n\r\n if (layout === \"carousel\") {\r\n const angle = (i / images.length) * Math.PI * 2;\r\n position = [\r\n Math.cos(angle) * radius,\r\n 0,\r\n Math.sin(angle) * radius\r\n ];\r\n rotation = [0, -angle + Math.PI / 2, 0]; // Face center? No, face outwards usually. -angle + PI/2 makes it tangent?\r\n // To face center (inwards): -angle - PI/2\r\n // To face outwards: -angle + PI/2\r\n // Let's face *inwards* for a surrounding view, or *outwards* for a pillar view.\r\n // Usually carousel assumes camera at center or outside?\r\n // Registry: \"Carousel... lightbox... smooth transitions\".\r\n // Assuming camera is outside looking at it spinning.\r\n rotation = [0, -angle, 0]; // Face outwards\r\n } else if (layout === \"grid\") {\r\n const cols = 3;\r\n const x = (i % cols) * (3 + gap) - ((cols * 3) / 2);\r\n const y = -Math.floor(i / cols) * (2 + gap);\r\n position = [x, y, 0];\r\n }\r\n\r\n return (\r\n <group key={i} position={position} rotation={rotation}>\r\n <ImagePlane src={img.src} width={3} opacity={0.9} />\r\n {/* Could add frame or title */}\r\n </group>\r\n );\r\n })}\r\n </group>\r\n );\r\n}\r\n","import React, { Suspense } from \"react\";\r\nimport { useTexture } from \"@react-three/drei\";\r\nimport { DoubleSide } from \"three\";\r\n\r\nexport interface ImagePlaneProps {\r\n src: string;\r\n width?: number;\r\n height?: number;\r\n opacity?: number;\r\n transparent?: boolean;\r\n parallax?: boolean; // Placeholder for parallax logic if needed later\r\n}\r\n\r\nexport function ImagePlane({\r\n src,\r\n width = 3,\r\n height, // if undefined, will infer\r\n opacity = 1,\r\n transparent = true,\r\n parallax = false,\r\n}: ImagePlaneProps) {\r\n return (\r\n <Suspense fallback={<mesh><planeGeometry args={[width, width]} /><meshBasicMaterial wireframe color=\"gray\" /></mesh>}>\r\n <ImageMesh\r\n src={src}\r\n width={width}\r\n height={height}\r\n opacity={opacity}\r\n transparent={transparent}\r\n parallax={parallax}\r\n />\r\n </Suspense>\r\n );\r\n}\r\n\r\nfunction ImageMesh({ src, width = 1, height, opacity, transparent }: Omit<ImagePlaneProps, 'src' | 'width'> & { width: number; src: string }) {\r\n const texture = useTexture(src);\r\n\r\n // Aspect ratio\r\n const aspect = texture.image ? texture.image.width / texture.image.height : 1;\r\n const h = height || width / aspect;\r\n\r\n return (\r\n <mesh>\r\n <planeGeometry args={[width, h]} />\r\n <meshBasicMaterial\r\n map={texture}\r\n transparent={transparent}\r\n opacity={opacity}\r\n side={DoubleSide}\r\n toneMapped={false}\r\n />\r\n </mesh>\r\n );\r\n}\r\n","import React, { Suspense, useRef } from \"react\";\r\nimport { useGLTF, Environment, OrbitControls } from \"@react-three/drei\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\n\r\nexport interface ModelViewerProps {\r\n src: string;\r\n autoRotate?: boolean;\r\n scale?: number;\r\n environment?: string; // HDRI preset\r\n position?: [number, number, number];\r\n}\r\n\r\nexport function ModelViewer({\r\n src,\r\n autoRotate = true,\r\n scale = 1,\r\n environment = \"studio\",\r\n position = [0, 0, 0],\r\n}: ModelViewerProps) {\r\n return (\r\n <group position={position}>\r\n <Suspense fallback={null}>\r\n <Model src={src} scale={scale} autoRotate={autoRotate} />\r\n <Environment preset={environment as any} />\r\n </Suspense>\r\n </group>\r\n );\r\n}\r\n\r\nfunction Model({ src, scale, autoRotate }: { src: string; scale: number; autoRotate: boolean }) {\r\n const { scene } = useGLTF(src);\r\n const ref = useRef<any>(null);\r\n\r\n useFrame((state, delta) => {\r\n if (ref.current && autoRotate) {\r\n ref.current.rotation.y += delta * 0.5;\r\n }\r\n });\r\n\r\n return <primitive object={scene} scale={scale} ref={ref} />;\r\n}\r\n","import React, { Suspense } from \"react\";\r\nimport { useVideoTexture } from \"@react-three/drei\";\r\nimport * as THREE from \"three\";\r\n\r\nexport interface VideoPlaneProps {\r\n src: string;\r\n width?: number;\r\n height?: number;\r\n autoPlay?: boolean;\r\n loop?: boolean;\r\n muted?: boolean;\r\n opacity?: number;\r\n side?: \"front\" | \"back\" | \"double\";\r\n}\r\n\r\nexport function VideoPlane({\r\n src,\r\n width = 4,\r\n height,\r\n autoPlay = true,\r\n loop = true,\r\n muted = true,\r\n opacity = 1,\r\n side = \"double\",\r\n}: VideoPlaneProps) {\r\n return (\r\n <Suspense\r\n fallback={\r\n <mesh>\r\n <planeGeometry args={[width, width * 0.56]} />\r\n <meshBasicMaterial color=\"gray\" wireframe />\r\n </mesh>\r\n }\r\n >\r\n <VideoPlaneContent\r\n src={src}\r\n width={width}\r\n height={height}\r\n autoPlay={autoPlay}\r\n loop={loop}\r\n muted={muted}\r\n opacity={opacity}\r\n side={side}\r\n />\r\n </Suspense>\r\n );\r\n}\r\n\r\nfunction VideoPlaneContent({\r\n src,\r\n width = 4,\r\n height,\r\n autoPlay = true,\r\n loop = true,\r\n muted = true,\r\n opacity = 1,\r\n side = \"double\",\r\n}: VideoPlaneProps) {\r\n const texture = useVideoTexture(src, {\r\n unsuspend: \"canplay\",\r\n muted,\r\n loop,\r\n start: autoPlay,\r\n crossOrigin: \"anonymous\",\r\n });\r\n\r\n const video = texture.image as HTMLVideoElement | null;\r\n\r\n // Safe aspect ratio calculation\r\n const aspect =\r\n video && video.videoWidth > 0 && video.videoHeight > 0\r\n ? video.videoWidth / video.videoHeight\r\n : 16 / 9;\r\n\r\n const planeHeight = height ?? width / aspect;\r\n\r\n // Convert string side to THREE constant\r\n const materialSide =\r\n side === \"double\"\r\n ? THREE.DoubleSide\r\n : side === \"back\"\r\n ? THREE.BackSide\r\n : THREE.FrontSide;\r\n\r\n return (\r\n <mesh>\r\n <planeGeometry args={[width, planeHeight]} />\r\n\r\n <meshBasicMaterial\r\n map={texture}\r\n toneMapped={false}\r\n transparent={opacity < 1}\r\n opacity={opacity}\r\n side={materialSide}\r\n />\r\n </mesh>\r\n );\r\n}","import React, { useRef, useEffect, useState } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport * as THREE from \"three\";\r\n\r\nexport interface AudioVisualizerProps {\r\n audioSrc: string; // URL to audio file\r\n fftSize?: number;\r\n barColor?: string;\r\n width?: number;\r\n}\r\n\r\nexport function AudioVisualizer({\r\n audioSrc,\r\n fftSize = 64,\r\n barColor = \"#22d3ee\",\r\n width = 10,\r\n}: AudioVisualizerProps) {\r\n const analyserRef = useRef<THREE.AudioAnalyser | null>(null);\r\n const meshRef = useRef<THREE.InstancedMesh>(null);\r\n const [ready, setReady] = useState(false);\r\n\r\n useEffect(() => {\r\n // We need user interaction to start audio usually.\r\n // For this component, we won't auto-play if blocked, but we set up the loader.\r\n const listener = new THREE.AudioListener();\r\n const sound = new THREE.Audio(listener);\r\n const audioLoader = new THREE.AudioLoader();\r\n\r\n audioLoader.load(audioSrc, function (buffer) {\r\n sound.setBuffer(buffer);\r\n sound.setLoop(true);\r\n sound.setVolume(0.5);\r\n\r\n const analyser = new THREE.AudioAnalyser(sound, fftSize);\r\n analyserRef.current = analyser;\r\n setReady(true);\r\n\r\n // Attempt play - might be blocked until user gesture elsewhere\r\n sound.play();\r\n });\r\n\r\n return () => {\r\n if (sound.isPlaying) sound.stop();\r\n };\r\n }, [audioSrc, fftSize]);\r\n\r\n useFrame(() => {\r\n if (analyserRef.current && meshRef.current && ready) {\r\n const data = analyserRef.current.getFrequencyData();\r\n // visualizer logic\r\n // Map data to instances scale\r\n const count = data.length;\r\n const step = width / count;\r\n\r\n const tempObj = new THREE.Object3D();\r\n\r\n for (let i = 0; i < count; i++) {\r\n const value = data[i] / 256.0;\r\n const h = value * 5;\r\n const x = (i - count / 2) * step;\r\n\r\n tempObj.position.set(x, h / 2, 0);\r\n tempObj.scale.set(step * 0.8, h || 0.1, step * 0.8);\r\n tempObj.updateMatrix();\r\n meshRef.current.setMatrixAt(i, tempObj.matrix);\r\n }\r\n meshRef.current.instanceMatrix.needsUpdate = true;\r\n }\r\n });\r\n\r\n return (\r\n <instancedMesh ref={meshRef} args={[undefined, undefined, fftSize / 2] as any}>\r\n <boxGeometry args={[1, 1, 1]} />\r\n <meshStandardMaterial color={barColor} />\r\n </instancedMesh>\r\n );\r\n}\r\n","import React, { useRef, useMemo } from \"react\";\r\nimport { useFrame } from \"@react-three/fiber\";\r\nimport { AdditiveBlending, BufferAttribute } from \"three\";\r\n\r\nexport interface ParticlesProps {\r\n count?: number;\r\n size?: number;\r\n color?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function Particles({\r\n count = 1000,\r\n size = 0.03,\r\n color = \"#a78bfa\",\r\n speed = 0.1,\r\n}: ParticlesProps) {\r\n const points = useRef<any>(null);\r\n\r\n const particlesPosition = useMemo(() => {\r\n const positions = new Float32Array(count * 3);\r\n for (let i = 0; i < count; i++) {\r\n // Random usage\r\n positions[i * 3] = (Math.random() - 0.5) * 10;\r\n positions[i * 3 + 1] = (Math.random() - 0.5) * 10;\r\n positions[i * 3 + 2] = (Math.random() - 0.5) * 10;\r\n }\r\n return positions;\r\n }, [count]);\r\n\r\n useFrame((state, delta) => {\r\n if (points.current) {\r\n // Simple rotation or movement\r\n points.current.rotation.y += delta * speed;\r\n // Maybe wave movement?\r\n }\r\n });\r\n\r\n return (\r\n <points ref={points}>\r\n <bufferGeometry>\r\n <bufferAttribute\r\n attach=\"attributes-position\"\r\n count={particlesPosition.length / 3}\r\n array={particlesPosition}\r\n itemSize={3}\r\n />\r\n </bufferGeometry>\r\n <pointsMaterial\r\n size={size}\r\n color={color}\r\n transparent\r\n depthWrite={false}\r\n blending={AdditiveBlending}\r\n sizeAttenuation\r\n />\r\n </points>\r\n );\r\n}\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport { useThree, useFrame, extend, ReactThreeFiber, Object3DNode } from \"@react-three/fiber\";\r\nimport { EffectComposer, RenderPass, UnrealBloomPass } from \"three-stdlib\";\r\nimport { Vector2 } from \"three\";\r\n\r\nextend({ EffectComposer, RenderPass, UnrealBloomPass });\r\n\r\n// Global types moved to src/three-elements.d.ts\r\n\r\nexport interface BloomProps {\r\n intensity?: number;\r\n radius?: number;\r\n threshold?: number;\r\n}\r\n\r\nexport function Bloom({ intensity = 1.0, radius = 0.4, threshold = 0 }: BloomProps) {\r\n const { gl, scene, camera, size } = useThree();\r\n const composer = useRef<EffectComposer>(null);\r\n\r\n useEffect(() => {\r\n if (composer.current) {\r\n composer.current.setSize(size.width, size.height);\r\n }\r\n }, [size]);\r\n\r\n useFrame(() => {\r\n if (composer.current) {\r\n composer.current.render();\r\n }\r\n }, 1);\r\n\r\n return (\r\n <effectComposer ref={composer} args={[gl]}>\r\n <renderPass attach=\"passes\" args={[scene, camera]} />\r\n <unrealBloomPass attach=\"passes\" args={[new Vector2(size.width, size.height), intensity, radius, threshold]} />\r\n </effectComposer>\r\n );\r\n}\r\n","import { OrthographicCamera, PlaneGeometry, Mesh, Material, WebGLRenderer, WebGLRenderTarget } from 'three'\n\nclass Pass {\n // if set to true, the pass is processed by the composer\n public enabled = true\n\n // if set to true, the pass indicates to swap read and write buffer after rendering\n public needsSwap = true\n\n // if set to true, the pass clears its buffer before rendering\n public clear = false\n\n // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.\n public renderToScreen = false\n\n public setSize(width: number, height: number): void {}\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget,\n deltaTime: number,\n maskActive?: unknown,\n ): void {\n console.error('THREE.Pass: .render() must be implemented in derived pass.')\n }\n\n public dispose() {}\n}\n\n// Helper for passes that need to fill the viewport with a single quad.\nclass FullScreenQuad<TMaterial extends Material = Material> {\n public camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n public geometry = new PlaneGeometry(2, 2)\n private mesh: Mesh<PlaneGeometry, TMaterial>\n\n constructor(material: TMaterial) {\n this.mesh = new Mesh(this.geometry, material)\n }\n\n public get material(): TMaterial {\n return this.mesh.material\n }\n\n public set material(value: TMaterial) {\n this.mesh.material = value\n }\n\n public dispose(): void {\n this.mesh.geometry.dispose()\n }\n\n public render(renderer: WebGLRenderer): void {\n renderer.render(this.mesh, this.camera)\n }\n}\n\nexport { Pass, FullScreenQuad }\n","import { ShaderMaterial, UniformsUtils, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { Defines, IShader, Uniforms } from '../shaders/types'\n\nclass ShaderPass extends Pass {\n public textureID: string\n public uniforms: Uniforms\n public material: ShaderMaterial\n public fsQuad: FullScreenQuad\n\n constructor(shader: ShaderMaterial | IShader<Uniforms, Defines | undefined>, textureID = 'tDiffuse') {\n super()\n\n this.textureID = textureID\n\n if (shader instanceof ShaderMaterial) {\n this.uniforms = shader.uniforms\n\n this.material = shader\n } else {\n this.uniforms = UniformsUtils.clone(shader.uniforms)\n\n this.material = new ShaderMaterial({\n defines: Object.assign({}, shader.defines),\n uniforms: this.uniforms,\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader,\n })\n }\n\n this.fsQuad = new FullScreenQuad(this.material)\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n if (this.uniforms[this.textureID]) {\n this.uniforms[this.textureID].value = readBuffer.texture\n }\n\n this.fsQuad.material = this.material\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(writeBuffer)\n // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil)\n this.fsQuad.render(renderer)\n }\n }\n\n public dispose() {\n this.fsQuad.dispose()\n this.material.dispose()\n }\n}\n\nexport { ShaderPass }\n","/**\n * Full-screen textured quad shader\n */\n\nimport type { IUniform, Texture } from 'three'\nimport type { IShader } from './types'\n\nexport type CopyShaderUniforms = {\n opacity: IUniform<number>\n tDiffuse: IUniform<Texture | null>\n}\n\nexport interface ICopyShader extends IShader<CopyShaderUniforms> {}\n\nexport const CopyShader: ICopyShader = {\n uniforms: {\n tDiffuse: { value: null },\n opacity: { value: 1.0 },\n },\n\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n\n \tvUv = uv;\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n uniform float opacity;\n\n uniform sampler2D tDiffuse;\n\n varying vec2 vUv;\n\n void main() {\n\n \tvec4 texel = texture2D( tDiffuse, vUv );\n \tgl_FragColor = opacity * texel;\n\n }\n `,\n}\n","import { Color } from 'three'\n\n/**\n * Luminosity\n * http://en.wikipedia.org/wiki/Luminosity\n */\n\nexport const LuminosityHighPassShader = {\n shaderID: 'luminosityHighPass',\n\n uniforms: {\n tDiffuse: { value: null },\n luminosityThreshold: { value: 1.0 },\n smoothWidth: { value: 1.0 },\n defaultColor: { value: /* @__PURE__ */ new Color(0x000000) },\n defaultOpacity: { value: 0.0 },\n },\n\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n\n \tvUv = uv;\n\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n uniform sampler2D tDiffuse;\n uniform vec3 defaultColor;\n uniform float defaultOpacity;\n uniform float luminosityThreshold;\n uniform float smoothWidth;\n\n varying vec2 vUv;\n\n void main() {\n\n \tvec4 texel = texture2D( tDiffuse, vUv );\n\n \tvec3 luma = vec3( 0.299, 0.587, 0.114 );\n\n \tfloat v = dot( texel.xyz, luma );\n\n \tvec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );\n\n \tfloat alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );\n\n \tgl_FragColor = mix( outputColor, texel, alpha );\n\n }\n `,\n}\n","import {\n AdditiveBlending,\n Color,\n HalfFloatType,\n MeshBasicMaterial,\n ShaderMaterial,\n UniformsUtils,\n Vector2,\n Vector3,\n WebGLRenderTarget,\n} from 'three'\nimport { Pass, FullScreenQuad } from './Pass'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader'\n\n/**\n * UnrealBloomPass is inspired by the bloom pass of Unreal Engine. It creates a\n * mip map chain of bloom textures and blurs them with different radii. Because\n * of the weighted combination of mips, and because larger blurs are done on\n * higher mips, this effect provides good quality and performance.\n *\n * Reference:\n * - https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/\n */\nconst UnrealBloomPass = /* @__PURE__ */ (() => {\n class UnrealBloomPass extends Pass {\n static BlurDirectionX = new Vector2(1.0, 0.0)\n static BlurDirectionY = new Vector2(0.0, 1.0)\n\n constructor(resolution, strength, radius, threshold) {\n super()\n\n this.strength = strength !== undefined ? strength : 1\n this.radius = radius\n this.threshold = threshold\n this.resolution = resolution !== undefined ? new Vector2(resolution.x, resolution.y) : new Vector2(256, 256)\n\n // create color only once here, reuse it later inside the render function\n this.clearColor = new Color(0, 0, 0)\n\n // render targets\n this.renderTargetsHorizontal = []\n this.renderTargetsVertical = []\n this.nMips = 5\n let resx = Math.round(this.resolution.x / 2)\n let resy = Math.round(this.resolution.y / 2)\n\n this.renderTargetBright = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n this.renderTargetBright.texture.name = 'UnrealBloomPass.bright'\n this.renderTargetBright.texture.generateMipmaps = false\n\n for (let i = 0; i < this.nMips; i++) {\n const renderTargetHorizonal = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n\n renderTargetHorizonal.texture.name = 'UnrealBloomPass.h' + i\n renderTargetHorizonal.texture.generateMipmaps = false\n\n this.renderTargetsHorizontal.push(renderTargetHorizonal)\n\n const renderTargetVertical = new WebGLRenderTarget(resx, resy, { type: HalfFloatType })\n\n renderTargetVertical.texture.name = 'UnrealBloomPass.v' + i\n renderTargetVertical.texture.generateMipmaps = false\n\n this.renderTargetsVertical.push(renderTargetVertical)\n\n resx = Math.round(resx / 2)\n\n resy = Math.round(resy / 2)\n }\n\n // luminosity high pass material\n\n const highPassShader = LuminosityHighPassShader\n this.highPassUniforms = UniformsUtils.clone(highPassShader.uniforms)\n\n this.highPassUniforms['luminosityThreshold'].value = threshold\n this.highPassUniforms['smoothWidth'].value = 0.01\n\n this.materialHighPassFilter = new ShaderMaterial({\n uniforms: this.highPassUniforms,\n vertexShader: highPassShader.vertexShader,\n fragmentShader: highPassShader.fragmentShader,\n defines: {},\n })\n\n // Gaussian Blur Materials\n this.separableBlurMaterials = []\n const kernelSizeArray = [3, 5, 7, 9, 11]\n resx = Math.round(this.resolution.x / 2)\n resy = Math.round(this.resolution.y / 2)\n\n for (let i = 0; i < this.nMips; i++) {\n this.separableBlurMaterials.push(this.getSeperableBlurMaterial(kernelSizeArray[i]))\n\n this.separableBlurMaterials[i].uniforms['texSize'].value = new Vector2(resx, resy)\n\n resx = Math.round(resx / 2)\n\n resy = Math.round(resy / 2)\n }\n\n // Composite material\n this.compositeMaterial = this.getCompositeMaterial(this.nMips)\n this.compositeMaterial.uniforms['blurTexture1'].value = this.renderTargetsVertical[0].texture\n this.compositeMaterial.uniforms['blurTexture2'].value = this.renderTargetsVertical[1].texture\n this.compositeMaterial.uniforms['blurTexture3'].value = this.renderTargetsVertical[2].texture\n this.compositeMaterial.uniforms['blurTexture4'].value = this.renderTargetsVertical[3].texture\n this.compositeMaterial.uniforms['blurTexture5'].value = this.renderTargetsVertical[4].texture\n this.compositeMaterial.uniforms['bloomStrength'].value = strength\n this.compositeMaterial.uniforms['bloomRadius'].value = 0.1\n this.compositeMaterial.needsUpdate = true\n\n const bloomFactors = [1.0, 0.8, 0.6, 0.4, 0.2]\n this.compositeMaterial.uniforms['bloomFactors'].value = bloomFactors\n this.bloomTintColors = [\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n new Vector3(1, 1, 1),\n ]\n this.compositeMaterial.uniforms['bloomTintColors'].value = this.bloomTintColors\n\n // copy material\n\n const copyShader = CopyShader\n\n this.copyUniforms = UniformsUtils.clone(copyShader.uniforms)\n this.copyUniforms['opacity'].value = 1.0\n\n this.materialCopy = new ShaderMaterial({\n uniforms: this.copyUniforms,\n vertexShader: copyShader.vertexShader,\n fragmentShader: copyShader.fragmentShader,\n blending: AdditiveBlending,\n depthTest: false,\n depthWrite: false,\n transparent: true,\n })\n\n this.enabled = true\n this.needsSwap = false\n\n this._oldClearColor = new Color()\n this.oldClearAlpha = 1\n\n this.basic = new MeshBasicMaterial()\n\n this.fsQuad = new FullScreenQuad(null)\n }\n\n dispose() {\n for (let i = 0; i < this.renderTargetsHorizontal.length; i++) {\n this.renderTargetsHorizontal[i].dispose()\n }\n\n for (let i = 0; i < this.renderTargetsVertical.length; i++) {\n this.renderTargetsVertical[i].dispose()\n }\n\n this.renderTargetBright.dispose()\n\n //\n\n for (let i = 0; i < this.separableBlurMaterials.length; i++) {\n this.separableBlurMaterials[i].dispose()\n }\n\n this.compositeMaterial.dispose()\n this.materialCopy.dispose()\n this.basic.dispose()\n\n //\n\n this.fsQuad.dispose()\n }\n\n setSize(width, height) {\n let resx = Math.round(width / 2)\n let resy = Math.round(height / 2)\n\n this.renderTargetBright.setSize(resx, resy)\n\n for (let i = 0; i < this.nMips; i++) {\n this.renderTargetsHorizontal[i].setSize(resx, resy)\n this.renderTargetsVertical[i].setSize(resx, resy)\n\n this.separableBlurMaterials[i].uniforms['texSize'].value = new Vector2(resx, resy)\n\n resx = Math.round(resx / 2)\n resy = Math.round(resy / 2)\n }\n }\n\n render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) {\n renderer.getClearColor(this._oldClearColor)\n this.oldClearAlpha = renderer.getClearAlpha()\n const oldAutoClear = renderer.autoClear\n renderer.autoClear = false\n\n renderer.setClearColor(this.clearColor, 0)\n\n if (maskActive) renderer.state.buffers.stencil.setTest(false)\n\n // Render input to screen\n\n if (this.renderToScreen) {\n this.fsQuad.material = this.basic\n this.basic.map = readBuffer.texture\n\n renderer.setRenderTarget(null)\n renderer.clear()\n this.fsQuad.render(renderer)\n }\n\n // 1. Extract Bright Areas\n\n this.highPassUniforms['tDiffuse'].value = readBuffer.texture\n this.highPassUniforms['luminosityThreshold'].value = this.threshold\n this.fsQuad.material = this.materialHighPassFilter\n\n renderer.setRenderTarget(this.renderTargetBright)\n renderer.clear()\n this.fsQuad.render(renderer)\n\n // 2. Blur All the mips progressively\n\n let inputRenderTarget = this.renderTargetBright\n\n for (let i = 0; i < this.nMips; i++) {\n this.fsQuad.material = this.separableBlurMaterials[i]\n\n this.separableBlurMaterials[i].uniforms['colorTexture'].value = inputRenderTarget.texture\n this.separableBlurMaterials[i].uniforms['direction'].value = UnrealBloomPass.BlurDirectionX\n renderer.setRenderTarget(this.renderTargetsHorizontal[i])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n this.separableBlurMaterials[i].uniforms['colorTexture'].value = this.renderTargetsHorizontal[i].texture\n this.separableBlurMaterials[i].uniforms['direction'].value = UnrealBloomPass.BlurDirectionY\n renderer.setRenderTarget(this.renderTargetsVertical[i])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n inputRenderTarget = this.renderTargetsVertical[i]\n }\n\n // Composite All the mips\n\n this.fsQuad.material = this.compositeMaterial\n this.compositeMaterial.uniforms['bloomStrength'].value = this.strength\n this.compositeMaterial.uniforms['bloomRadius'].value = this.radius\n this.compositeMaterial.uniforms['bloomTintColors'].value = this.bloomTintColors\n\n renderer.setRenderTarget(this.renderTargetsHorizontal[0])\n renderer.clear()\n this.fsQuad.render(renderer)\n\n // Blend it additively over the input texture\n\n this.fsQuad.material = this.materialCopy\n this.copyUniforms['tDiffuse'].value = this.renderTargetsHorizontal[0].texture\n\n if (maskActive) renderer.state.buffers.stencil.setTest(true)\n\n if (this.renderToScreen) {\n renderer.setRenderTarget(null)\n this.fsQuad.render(renderer)\n } else {\n renderer.setRenderTarget(readBuffer)\n this.fsQuad.render(renderer)\n }\n\n // Restore renderer settings\n\n renderer.setClearColor(this._oldClearColor, this.oldClearAlpha)\n renderer.autoClear = oldAutoClear\n }\n\n getSeperableBlurMaterial(kernelRadius) {\n return new ShaderMaterial({\n defines: {\n KERNEL_RADIUS: kernelRadius,\n SIGMA: kernelRadius,\n },\n\n uniforms: {\n colorTexture: { value: null },\n texSize: { value: new Vector2(0.5, 0.5) },\n direction: { value: new Vector2(0.5, 0.5) },\n },\n\n vertexShader: `varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n fragmentShader: `#include <common>\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat fSigma = float(SIGMA);\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}`,\n })\n }\n\n getCompositeMaterial(nMips) {\n return new ShaderMaterial({\n defines: {\n NUM_MIPS: nMips,\n },\n\n uniforms: {\n blurTexture1: { value: null },\n blurTexture2: { value: null },\n blurTexture3: { value: null },\n blurTexture4: { value: null },\n blurTexture5: { value: null },\n bloomStrength: { value: 1.0 },\n bloomFactors: { value: null },\n bloomTintColors: { value: null },\n bloomRadius: { value: 0.0 },\n },\n\n vertexShader: `varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n fragmentShader: `varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}`,\n })\n }\n }\n\n return UnrealBloomPass\n})()\n\nexport { UnrealBloomPass }\n","import { Camera, Scene, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { Pass } from './Pass'\n\nclass MaskPass extends Pass {\n public scene: Scene\n public camera: Camera\n public inverse: boolean\n\n constructor(scene: Scene, camera: Camera) {\n super()\n\n this.scene = scene\n this.camera = camera\n\n this.clear = true\n this.needsSwap = false\n\n this.inverse = false\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n const context = renderer.getContext()\n const state = renderer.state\n\n // don't update color or depth\n\n state.buffers.color.setMask(false)\n state.buffers.depth.setMask(false)\n\n // lock buffers\n\n state.buffers.color.setLocked(true)\n state.buffers.depth.setLocked(true)\n\n // set up stencil\n\n let writeValue, clearValue\n\n if (this.inverse) {\n writeValue = 0\n clearValue = 1\n } else {\n writeValue = 1\n clearValue = 0\n }\n\n state.buffers.stencil.setTest(true)\n state.buffers.stencil.setOp(context.REPLACE, context.REPLACE, context.REPLACE)\n state.buffers.stencil.setFunc(context.ALWAYS, writeValue, 0xffffffff)\n state.buffers.stencil.setClear(clearValue)\n state.buffers.stencil.setLocked(true)\n\n // draw into the stencil buffer\n\n renderer.setRenderTarget(readBuffer)\n if (this.clear) renderer.clear()\n renderer.render(this.scene, this.camera)\n\n renderer.setRenderTarget(writeBuffer)\n if (this.clear) renderer.clear()\n renderer.render(this.scene, this.camera)\n\n // unlock color and depth buffer for subsequent rendering\n\n state.buffers.color.setLocked(false)\n state.buffers.depth.setLocked(false)\n\n // only render where stencil is set to 1\n\n state.buffers.stencil.setLocked(false)\n state.buffers.stencil.setFunc(context.EQUAL, 1, 0xffffffff) // draw if == 1\n state.buffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP)\n state.buffers.stencil.setLocked(true)\n }\n}\n\nclass ClearMaskPass extends Pass {\n constructor() {\n super()\n this.needsSwap = false\n }\n\n public render(renderer: WebGLRenderer /*, writeBuffer, readBuffer, deltaTime, maskActive */): void {\n renderer.state.buffers.stencil.setLocked(false)\n renderer.state.buffers.stencil.setTest(false)\n }\n}\n\nexport { MaskPass, ClearMaskPass }\n","import { Clock, LinearFilter, RGBAFormat, NoBlending, Vector2, WebGLRenderer, WebGLRenderTarget } from 'three'\nimport { CopyShader } from '../shaders/CopyShader'\nimport { ShaderPass } from './ShaderPass'\nimport { MaskPass, ClearMaskPass } from './MaskPass'\nimport { Pass } from './Pass'\n\nclass EffectComposer<TRenderTarget extends WebGLRenderTarget = WebGLRenderTarget> {\n public renderer: WebGLRenderer\n private _pixelRatio: number\n private _width: number\n private _height: number\n public renderTarget1: WebGLRenderTarget\n public renderTarget2: WebGLRenderTarget\n public writeBuffer: WebGLRenderTarget\n public readBuffer: WebGLRenderTarget\n public renderToScreen: boolean\n public passes: Pass[] = []\n public copyPass: Pass\n public clock: Clock\n\n constructor(renderer: WebGLRenderer, renderTarget?: TRenderTarget) {\n this.renderer = renderer\n\n if (renderTarget === undefined) {\n const parameters = {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n format: RGBAFormat,\n }\n\n const size = renderer.getSize(new Vector2())\n this._pixelRatio = renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = new WebGLRenderTarget(\n this._width * this._pixelRatio,\n this._height * this._pixelRatio,\n parameters,\n ) as TRenderTarget\n renderTarget.texture.name = 'EffectComposer.rt1'\n } else {\n this._pixelRatio = 1\n this._width = renderTarget.width\n this._height = renderTarget.height\n }\n\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n this.renderTarget2.texture.name = 'EffectComposer.rt2'\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n\n this.renderToScreen = true\n\n // dependencies\n\n if (CopyShader === undefined) {\n console.error('THREE.EffectComposer relies on CopyShader')\n }\n\n if (ShaderPass === undefined) {\n console.error('THREE.EffectComposer relies on ShaderPass')\n }\n\n this.copyPass = new ShaderPass(CopyShader)\n // @ts-ignore\n this.copyPass.material.blending = NoBlending\n\n this.clock = new Clock()\n }\n\n public swapBuffers(): void {\n const tmp = this.readBuffer\n this.readBuffer = this.writeBuffer\n this.writeBuffer = tmp\n }\n\n public addPass(pass: Pass): void {\n this.passes.push(pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public insertPass(pass: Pass, index: number): void {\n this.passes.splice(index, 0, pass)\n pass.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n public removePass(pass: Pass): void {\n const index = this.passes.indexOf(pass)\n\n if (index !== -1) {\n this.passes.splice(index, 1)\n }\n }\n\n public isLastEnabledPass(passIndex: number): boolean {\n for (let i = passIndex + 1; i < this.passes.length; i++) {\n if (this.passes[i].enabled) {\n return false\n }\n }\n\n return true\n }\n\n public render(deltaTime?: number): void {\n // deltaTime value is in seconds\n\n if (deltaTime === undefined) {\n deltaTime = this.clock.getDelta()\n }\n\n const currentRenderTarget = this.renderer.getRenderTarget()\n\n let maskActive = false\n\n const il = this.passes.length\n\n for (let i = 0; i < il; i++) {\n const pass = this.passes[i]\n\n if (pass.enabled === false) continue\n\n pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i)\n pass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive)\n\n if (pass.needsSwap) {\n if (maskActive) {\n const context = this.renderer.getContext()\n const stencil = this.renderer.state.buffers.stencil\n\n //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n stencil.setFunc(context.NOTEQUAL, 1, 0xffffffff)\n\n this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, deltaTime)\n\n //context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n stencil.setFunc(context.EQUAL, 1, 0xffffffff)\n }\n\n this.swapBuffers()\n }\n\n if (MaskPass !== undefined) {\n if (pass instanceof MaskPass) {\n maskActive = true\n } else if (pass instanceof ClearMaskPass) {\n maskActive = false\n }\n }\n }\n\n this.renderer.setRenderTarget(currentRenderTarget)\n }\n\n public reset(renderTarget: WebGLRenderTarget): void {\n if (renderTarget === undefined) {\n const size = this.renderer.getSize(new Vector2())\n this._pixelRatio = this.renderer.getPixelRatio()\n this._width = size.width\n this._height = size.height\n\n renderTarget = this.renderTarget1.clone()\n renderTarget.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)\n }\n\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n this.renderTarget1 = renderTarget\n this.renderTarget2 = renderTarget.clone()\n\n this.writeBuffer = this.renderTarget1\n this.readBuffer = this.renderTarget2\n }\n\n public setSize(width: number, height: number): void {\n this._width = width\n this._height = height\n\n const effectiveWidth = this._width * this._pixelRatio\n const effectiveHeight = this._height * this._pixelRatio\n\n this.renderTarget1.setSize(effectiveWidth, effectiveHeight)\n this.renderTarget2.setSize(effectiveWidth, effectiveHeight)\n\n for (let i = 0; i < this.passes.length; i++) {\n this.passes[i].setSize(effectiveWidth, effectiveHeight)\n }\n }\n\n public setPixelRatio(pixelRatio: number): void {\n this._pixelRatio = pixelRatio\n\n this.setSize(this._width, this._height)\n }\n\n public dispose() {\n this.renderTarget1.dispose()\n this.renderTarget2.dispose()\n\n this.copyPass.dispose()\n }\n}\n\nexport { EffectComposer }\n","import { Camera, Color, Material, Scene, WebGLRenderTarget, WebGLRenderer } from 'three'\nimport { Pass } from './Pass'\n\nclass RenderPass extends Pass {\n public scene: Scene\n public camera: Camera\n public overrideMaterial: Material | undefined\n public clearColor: Color | undefined\n public clearAlpha: number\n public clearDepth = false\n private _oldClearColor = new Color()\n\n constructor(scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: Color, clearAlpha = 0) {\n super()\n\n this.scene = scene\n this.camera = camera\n\n this.overrideMaterial = overrideMaterial\n\n this.clearColor = clearColor\n this.clearAlpha = clearAlpha\n\n this.clear = true\n this.needsSwap = false\n }\n\n public render(\n renderer: WebGLRenderer,\n writeBuffer: WebGLRenderTarget,\n readBuffer: WebGLRenderTarget /*, deltaTime, maskActive */,\n ): void {\n let oldAutoClear = renderer.autoClear\n renderer.autoClear = false\n\n let oldClearAlpha\n let oldOverrideMaterial: Material | null = null\n\n if (this.overrideMaterial !== undefined) {\n oldOverrideMaterial = this.scene.overrideMaterial\n\n this.scene.overrideMaterial = this.overrideMaterial\n }\n\n if (this.clearColor) {\n renderer.getClearColor(this._oldClearColor)\n oldClearAlpha = renderer.getClearAlpha()\n\n renderer.setClearColor(this.clearColor, this.clearAlpha)\n }\n\n if (this.clearDepth) {\n renderer.clearDepth()\n }\n\n renderer.setRenderTarget(this.renderToScreen ? null : readBuffer)\n\n // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil)\n renderer.render(this.scene, this.camera)\n\n if (this.clearColor) {\n renderer.setClearColor(this._oldClearColor, oldClearAlpha)\n }\n\n if (this.overrideMaterial !== undefined) {\n this.scene.overrideMaterial = oldOverrideMaterial\n }\n\n renderer.autoClear = oldAutoClear\n }\n}\n\nexport { RenderPass }\n","import React from \"react\";\r\nimport { MeshReflectorMaterial } from \"@react-three/drei\";\r\n\r\nexport interface ReflectionProps {\r\n blur?: [number, number];\r\n opacity?: number;\r\n resolution?: number;\r\n color?: string;\r\n}\r\n\r\nexport function Reflection({\r\n blur = [300, 100],\r\n opacity = 0.5,\r\n resolution = 512,\r\n color = \"#101010\",\r\n}: ReflectionProps) {\r\n return (\r\n <mesh rotation={[-Math.PI / 2, 0, 0]} position={[0, -0.01, 0]}>\r\n <planeGeometry args={[50, 50]} />\r\n <MeshReflectorMaterial\r\n blur={blur}\r\n resolution={resolution}\r\n mixBlur={1}\r\n mixStrength={opacity * 10} // Empirically, mixStrength needs to be higher to see reflection clearly sometimes\r\n roughness={1}\r\n depthScale={1.2}\r\n minDepthThreshold={0.4}\r\n maxDepthThreshold={1.4}\r\n color={color}\r\n metalness={0.5}\r\n mirror={1} // 1 = perfect mirror\r\n />\r\n </mesh>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nexport interface FogProps {\r\n color?: string;\r\n near?: number;\r\n far?: number;\r\n density?: number; // For exp2 fog if preferred, but Registry implies linear by default props (near/far)\r\n type?: \"linear\" | \"exponential\";\r\n}\r\n\r\nexport function Fog({\r\n color = \"#000\",\r\n near = 5,\r\n far = 30,\r\n type = \"linear\",\r\n density = 0.02,\r\n}: FogProps) {\r\n if (type === \"exponential\") {\r\n return <fogExp2 attach=\"fog\" args={[color, density]} />;\r\n }\r\n return <fog attach=\"fog\" args={[color, near, far]} />;\r\n}\r\n","import React from \"react\";\r\nimport { SoftShadows } from \"@react-three/drei\";\r\n\r\nexport interface ShadowSystemProps {\r\n type?: \"basic\" | \"soft\" | \"contact\"; // Contact shadows not implemented in basic wrapper, using SoftShadows for 'soft'\r\n bias?: number;\r\n mapSize?: number; // Not used by SoftShadows but relevant if we were configuring lights directly\r\n}\r\n\r\nexport function ShadowSystem({ type = \"soft\", bias = -0.0001, mapSize = 1024 }: ShadowSystemProps) {\r\n if (type === \"soft\") {\r\n return <SoftShadows />;\r\n }\r\n\r\n // For basic or contact, we might need other logic.\r\n // Three.js shadows are enabled on Canvas (<Canvas shadows>).\r\n // This component mainly configures SoftShadows.\r\n // ContactShadows is a separate component in Drei.\r\n\r\n if (type === \"contact\") {\r\n // We should probably import ContactShadows from Drei if we want to support it\r\n // But for now, returning null or SoftShadows as fallback\r\n return null;\r\n }\r\n\r\n return null; // Basic is default\r\n}\r\n","import React, { Children, cloneElement, ReactElement } from \"react\";\r\nimport * as THREE from \"three\";\r\n\r\nexport interface GlowEffectProps {\r\n children: ReactElement; // Expect a single child mesh\r\n color?: string;\r\n intensity?: number;\r\n scale?: number;\r\n}\r\n\r\nexport function GlowEffect({\r\n children,\r\n color = \"#22d3ee\",\r\n intensity = 1,\r\n scale = 1.2,\r\n}: GlowEffectProps) {\r\n\r\n // Create a glow copy\r\n // Needs geometry from child. \r\n // Since we can't easily extract geometry from ReactNode, we rely on the child being a mesh where we can attach a second material?\r\n // Or render a second copy of the child with a different material?\r\n // If child is <mesh><boxGeometry /></mesh>, rendering it again works.\r\n\r\n const glowMaterial = React.useMemo(() => {\r\n return new THREE.MeshBasicMaterial({\r\n color: color,\r\n transparent: true,\r\n opacity: 0.3 * intensity,\r\n blending: THREE.AdditiveBlending,\r\n side: THREE.BackSide, // Outline effect often uses BackSide with scaled mesh\r\n });\r\n }, [color, intensity]);\r\n\r\n return (\r\n <group>\r\n {/* Original Object */}\r\n {children}\r\n\r\n {/* Glow Shell */}\r\n <group scale={[scale, scale, scale]}>\r\n {/* We assume children is a mesh or contains geometry we want to glow. \r\n Direct cloning of React Element might not clone the geometry if it's instanced inside.\r\n But for <mesh><boxGeometry/></mesh> it creates a new mesh with new geometry instance (or same args).\r\n However, we need to OVERRIDE the material.\r\n */}\r\n {Children.map(children, (child) => {\r\n if (React.isValidElement(child)) {\r\n return cloneElement(child as ReactElement<any>, {\r\n material: glowMaterial,\r\n });\r\n }\r\n return child;\r\n })}\r\n </group>\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { shaderMaterial } from \"@react-three/drei\";\r\nimport { extend, useFrame } from \"@react-three/fiber\";\r\nimport * as THREE from \"three\";\r\n\r\nconst WaveMaterial = shaderMaterial(\r\n { time: 0, color: new THREE.Color(0.2, 0.5, 1.0) },\r\n // vertex shader\r\n `\r\n varying vec2 vUv;\r\n uniform float time;\r\n void main() {\r\n vUv = uv;\r\n vec3 pos = position;\r\n pos.y += sin(pos.x * 2.0 + time) * 0.2;\r\n gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\r\n }\r\n `,\r\n // fragment shader\r\n `\r\n uniform vec3 color;\r\n varying vec2 vUv;\r\n void main() {\r\n gl_FragColor = vec4(color, 1.0);\r\n }\r\n `\r\n);\r\n\r\nextend({ WaveMaterial });\r\n\r\ndeclare global {\r\n namespace JSX {\r\n interface IntrinsicElements {\r\n waveMaterial: any;\r\n }\r\n }\r\n}\r\n\r\nexport interface WaveEffectProps {\r\n children?: React.ReactNode;\r\n amplitude?: number;\r\n frequency?: number;\r\n speed?: number;\r\n}\r\n\r\nexport function WaveEffect({ children, amplitude = 0.3, frequency = 2, speed = 1 }: WaveEffectProps) {\r\n const group = React.useRef<THREE.Group>(null);\r\n const material = useMemo(() => new WaveMaterial(), []);\r\n\r\n useFrame((state, delta) => {\r\n if (material) {\r\n (material as any).time += delta * speed;\r\n }\r\n });\r\n\r\n React.useEffect(() => {\r\n if (group.current) {\r\n group.current.traverse((obj) => {\r\n if ((obj as THREE.Mesh).isMesh) {\r\n (obj as THREE.Mesh).material = material;\r\n }\r\n });\r\n }\r\n }, [children, material]);\r\n\r\n return (\r\n <group ref={group}>\r\n {children}\r\n </group>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { shaderMaterial } from \"@react-three/drei\";\r\nimport { extend, useFrame } from \"@react-three/fiber\";\r\nimport * as THREE from \"three\";\r\n\r\nconst NoiseMaterial = shaderMaterial(\r\n { time: 0, scale: 1.0, color: new THREE.Color(0.2, 0.5, 1.0) },\r\n // Vertex\r\n `\r\n varying vec2 vUv;\r\n void main() {\r\n vUv = uv;\r\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n }\r\n `,\r\n // Fragment (Simple noise-like pattern via sine waves)\r\n `\r\n uniform float time;\r\n uniform float scale;\r\n uniform vec3 color;\r\n varying vec2 vUv;\r\n\r\n // Pseudo-random\r\n float rand(vec2 co){\r\n return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);\r\n }\r\n\r\n void main() {\r\n float noise = rand(vUv * scale + time * 0.1);\r\n gl_FragColor = vec4(color * noise, 1.0);\r\n }\r\n `\r\n);\r\n\r\nextend({ NoiseMaterial });\r\n\r\ndeclare global {\r\n namespace JSX {\r\n interface IntrinsicElements {\r\n noiseMaterial: any;\r\n }\r\n }\r\n}\r\n\r\nexport interface NoiseFieldProps {\r\n scale?: number;\r\n speed?: number;\r\n mode?: \"displacement\" | \"color\";\r\n}\r\n\r\nexport function NoiseField({ scale = 1, speed = 0.5, mode = \"color\" }: NoiseFieldProps) {\r\n const material = useMemo(() => new NoiseMaterial(), []);\r\n\r\n useFrame((state, delta) => {\r\n if (material) {\r\n (material as any).time += delta * speed;\r\n (material as any).scale = scale;\r\n }\r\n });\r\n\r\n return (\r\n <mesh rotation={[-Math.PI / 2, 0, 0]}>\r\n <planeGeometry args={[10, 10, 64, 64]} />\r\n {/* Attach custom material */}\r\n <primitive object={material} attach=\"material\" />\r\n </mesh>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAAA;AAAA,EAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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","names":["CollapsibleContent","CollapsibleTrigger","Label","Separator","Toaster","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","React","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","count","import_react","import_drei","import_jsx_runtime","import_react","import_drei","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","React","import_react","import_framer_motion","import_jsx_runtime","React","import_react","import_framer_motion","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","import_lucide_react","import_framer_motion","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_framer_motion","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_drei","import_jsx_runtime","import_react","import_fiber","import_jsx_runtime","import_drei","import_jsx_runtime","import_react","import_drei","import_jsx_runtime","import_drei","import_three","import_jsx_runtime","React","TooltipPrimitive","import_jsx_runtime","React","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","React","import_class_variance_authority","import_lucide_react","import_jsx_runtime","React","toast","props","import_jsx_runtime","import_jsx_runtime","Toaster","Sonner","React","import_jsx_runtime","import_class_variance_authority","import_lucide_react","React","import_jsx_runtime","React","DialogPrimitive","import_lucide_react","import_jsx_runtime","React","import_react_slot","import_lucide_react","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","Label","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","Separator","React","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","React","import_jsx_runtime","React","import_class_variance_authority","import_jsx_runtime","CollapsibleTrigger","CollapsibleContent","React","import_jsx_runtime","React","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","CommandPrimitive","React","import_react_slot","import_jsx_runtime","Label","React","import_lucide_react","import_jsx_runtime","React","DropdownMenuPrimitive","import_lucide_react","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","DrawerPrimitive","React","import_lucide_react","import_jsx_runtime","React","import_class_variance_authority","import_lucide_react","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","config","import_lucide_react","import_jsx_runtime","React","import_react_slot","import_class_variance_authority","import_lucide_react","import_jsx_runtime","open","Separator","React","import_lucide_react","import_jsx_runtime","useEmblaCarousel","api","React","import_lucide_react","import_jsx_runtime","import_react","import_fiber","import_drei","import_jsx_runtime","import_react","import_drei","import_three","import_jsx_runtime","import_react","import_three","import_fiber","import_drei","import_jsx_runtime","React","import_react","import_drei","import_three","import_fiber","import_jsx_runtime","import_react","import_drei","import_three","import_jsx_runtime","import_drei","import_jsx_runtime","import_react","import_fiber","import_react","import_drei","import_three","import_jsx_runtime","import_jsx_runtime","import_react","import_drei","import_fiber","import_jsx_runtime","import_react","import_drei","import_jsx_runtime","import_react","import_fiber","THREE","import_jsx_runtime","count","import_react","import_fiber","import_three","import_jsx_runtime","count","import_react","import_fiber","__publicField","UnrealBloomPass","__publicField","__publicField","__publicField","__publicField","import_three","import_jsx_runtime","import_drei","import_jsx_runtime","import_jsx_runtime","import_drei","import_jsx_runtime","import_react","THREE","import_jsx_runtime","React","import_react","import_drei","import_fiber","THREE","import_jsx_runtime","React","import_react","import_drei","import_fiber","THREE","import_jsx_runtime"]}