@sreedev/my3dui 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layouts/container.tsx","../src/lib/utils.ts","../src/components/layouts/grid.tsx","../src/components/layouts/stack.tsx","../src/components/layouts/section.tsx","../src/components/layouts/page-layout.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/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/select.tsx","../src/components/ui/table.tsx","../src/components/ui/pagination.tsx","../src/components/ui/progress.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/toast.tsx","../src/components/ui/popover.tsx","../src/components/ui/sheet.tsx","../src/components/ui/dialog.tsx","../src/components/ui/breadcrumb.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":["import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n}\r\n\r\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\r\n ({ className, size = \"lg\", ...props }, ref) => {\r\n const sizeStyles = {\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\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"w-full mx-auto px-4 md:px-6 lg:px-8\",\r\n sizeStyles[size],\r\n className\r\n )}\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","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\r\n cols?: number | { sm?: number; md?: number; lg?: number; xl?: number };\r\n gap?: number | string;\r\n}\r\n\r\nexport const Grid = React.forwardRef<HTMLDivElement, GridProps>(\r\n ({ className, cols = 1, gap = 4, style, ...props }, ref) => {\r\n\r\n // Helper to generate grid-template-columns style if simple number is passed\r\n const gridStyle = typeof cols === 'number'\r\n ? { gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))` }\r\n : {};\r\n\r\n const responsiveClasses = typeof cols === 'object' ? Object.entries(cols).map(([breakpoint, val]) => {\r\n return `${breakpoint}:grid-cols-${val}`;\r\n }).join(' ') : '';\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"grid\",\r\n typeof cols === 'number' ? \"\" : responsiveClasses, // using Tailwind's predefined grid-cols- if possible, but simplest is style override for arbitrary\r\n className\r\n )}\r\n style={{\r\n gap: typeof gap === 'number' ? `${gap * 0.25}rem` : gap,\r\n ...gridStyle,\r\n ...style\r\n }}\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\n\r\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n direction?: \"row\" | \"col\";\r\n gap?: number | string;\r\n align?: \"start\" | \"center\" | \"end\" | \"stretch\";\r\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\r\n wrap?: boolean;\r\n}\r\n\r\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\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 style,\r\n ...props\r\n }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n direction === \"col\" ? \"flex-col\" : \"flex-row\",\r\n wrap && \"flex-wrap\",\r\n {\r\n \"items-start\": align === \"start\",\r\n \"items-center\": align === \"center\",\r\n \"items-end\": align === \"end\",\r\n \"items-stretch\": align === \"stretch\",\r\n \"justify-start\": justify === \"start\",\r\n \"justify-center\": justify === \"center\",\r\n \"justify-end\": justify === \"end\",\r\n \"justify-between\": justify === \"between\",\r\n \"justify-around\": justify === \"around\",\r\n \"justify-evenly\": justify === \"evenly\",\r\n },\r\n className\r\n )}\r\n style={{\r\n gap: typeof gap === 'number' ? `${gap * 0.25}rem` : gap,\r\n ...style\r\n }}\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 { Container } from \"./container\";\r\n\r\nexport interface SectionProps extends React.HTMLAttributes<HTMLDivElement> {\r\n fullWidth?: boolean;\r\n background?: \"default\" | \"muted\" | \"brand\" | \"glass\";\r\n containerSize?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n noPadding?: boolean;\r\n}\r\n\r\nexport const Section = React.forwardRef<HTMLDivElement, SectionProps>(\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 ...props\r\n }, ref) => {\r\n\r\n const backgrounds = {\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 };\r\n\r\n return (\r\n <section\r\n ref={ref}\r\n className={cn(\r\n \"relative w-full\",\r\n !noPadding && \"py-12 md:py-24 lg:py-32\",\r\n backgrounds[background],\r\n className\r\n )}\r\n {...props}\r\n >\r\n {fullWidth ? (\r\n children\r\n ) : (\r\n <Container size={containerSize}>\r\n {children}\r\n </Container>\r\n )}\r\n </section>\r\n );\r\n }\r\n);\r\nSection.displayName = \"Section\";\r\n","import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\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}\r\n\r\nexport const PageLayout = React.forwardRef<HTMLDivElement, PageLayoutProps>(\r\n ({ className, header, footer, sidebar, sidebarPosition = \"left\", children, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn(\"min-h-screen flex flex-col\", className)} {...props}>\r\n {header && (\r\n <header className=\"sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\r\n {header}\r\n </header>\r\n )}\r\n\r\n <div className=\"flex-1 flex\">\r\n {sidebar && sidebarPosition === \"left\" && (\r\n <aside className=\"w-64 border-r bg-muted/40 p-4\">\r\n {sidebar}\r\n </aside>\r\n )}\r\n\r\n <main className=\"flex-1\">\r\n {children}\r\n </main>\r\n\r\n {sidebar && sidebarPosition === \"right\" && (\r\n <aside className=\"w-64 border-l bg-muted/40 p-4\">\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\">\r\n {footer}\r\n </footer>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nPageLayout.displayName = \"PageLayout\";\r\n","import React from \"react\";\r\nimport { motion, HTMLMotionProps } 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\nexport interface Button3DProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"accent\" | \"destructive\" | \"outline\" | \"ghost\" | \"glass\";\r\n size?: \"sm\" | \"md\" | \"lg\" | \"icon\" | \"default\";\r\n asChild?: boolean;\r\n loading?: boolean;\r\n shadowColor?: string;\r\n}\r\n\r\n// Helper function for pagination compatibility\r\nexport const buttonVariants = cva(\r\n \"relative inline-flex items-center justify-center whitespace-nowrap rounded-lg font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 select-none\",\r\n {\r\n variants: {\r\n variant: {\r\n primary: \"bg-slate-900 text-slate-50 hover:bg-slate-800 border-b-4 border-slate-950 active:border-b-0 active:translate-y-1 dark:bg-slate-50 dark:text-slate-900 dark:hover:bg-slate-200 dark:border-slate-300\",\r\n secondary: \"bg-slate-100 text-slate-900 hover:bg-slate-200 border-b-4 border-slate-300 active:border-b-0 active:translate-y-1 dark:bg-slate-800 dark:text-slate-50 dark:hover:bg-slate-700 dark:border-slate-950\",\r\n accent: \"bg-cyan-500 text-white hover:bg-cyan-400 border-b-4 border-cyan-700 active:border-b-0 active:translate-y-1\",\r\n destructive: \"bg-red-500 text-white hover:bg-red-600 border-b-4 border-red-800 active:border-b-0 active:translate-y-1\",\r\n outline: \"bg-transparent border-2 border-slate-200 hover:bg-slate-100/50 text-slate-900 border-b-4 border-slate-300 active:border-b-2 active:translate-y-[2px] dark:border-slate-700 dark:text-slate-100 dark:hover:bg-slate-800\",\r\n ghost: \"hover:bg-slate-100 hover:text-slate-900 dark:hover:bg-slate-800 dark:hover:text-slate-50\",\r\n glass: \"bg-white/10 backdrop-blur-md border border-white/20 text-white hover:bg-white/20 shadow-lg active:scale-95\",\r\n },\r\n size: {\r\n default: \"h-10 px-4 py-2\",\r\n sm: \"h-8 px-3 text-xs\",\r\n md: \"h-10 px-4 py-2 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n icon: \"h-10 w-10 p-0\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"primary\",\r\n size: \"default\",\r\n },\r\n }\r\n);\r\n\r\nconst Button3D = React.forwardRef<HTMLButtonElement, Button3DProps>(\r\n ({\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n asChild = false,\r\n loading = false,\r\n shadowColor,\r\n style,\r\n children,\r\n ...props\r\n }, ref) => {\r\n // Base styles essential for structure\r\n const baseStyles = \"relative inline-flex items-center justify-center whitespace-nowrap rounded-lg font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 select-none active:scale-[0.98]\";\r\n\r\n // Variant mapping\r\n const variantStyles = {\r\n primary: `\r\n bg-slate-900 text-slate-50 \r\n hover:bg-slate-800 \r\n border-b-4 border-slate-950 \r\n active:border-b-0 active:translate-y-1\r\n dark:bg-slate-50 dark:text-slate-900 \r\n dark:hover:bg-slate-200 \r\n dark:border-slate-300 dark:border-b-4\r\n `,\r\n secondary: `\r\n bg-slate-100 text-slate-900 \r\n hover:bg-slate-200 \r\n border-b-4 border-slate-300\r\n active:border-b-0 active:translate-y-1\r\n dark:bg-slate-800 dark:text-slate-50 \r\n dark:hover:bg-slate-700\r\n dark:border-slate-950\r\n `,\r\n accent: `\r\n bg-cyan-500 text-white \r\n hover:bg-cyan-400 \r\n border-b-4 border-cyan-700\r\n active:border-b-0 active:translate-y-1\r\n `,\r\n destructive: `\r\n bg-red-500 text-white \r\n hover:bg-red-600 \r\n border-b-4 border-red-800\r\n active:border-b-0 active:translate-y-1\r\n `,\r\n outline: `\r\n bg-transparent border-2 border-slate-200 \r\n hover:bg-slate-100/50 text-slate-900 \r\n border-b-4 border-slate-300\r\n active:border-b-2 active:translate-y-[2px]\r\n dark:border-slate-700 dark:text-slate-100\r\n dark:border-b-4 dark:hover:bg-slate-800\r\n `,\r\n ghost: `\r\n hover:bg-slate-100 \r\n hover:text-slate-900 \r\n dark:hover:bg-slate-800 \r\n dark:hover:text-slate-50\r\n border-none shadow-none translate-y-0\r\n `,\r\n glass: `\r\n bg-white/10 backdrop-blur-md \r\n border border-white/20 \r\n text-white \r\n hover:bg-white/20 \r\n shadow-lg\r\n active:scale-95\r\n `\r\n };\r\n\r\n const sizeStyles = {\r\n default: \"h-10 px-4 py-2 text-sm\",\r\n sm: \"h-8 px-3 text-xs\",\r\n md: \"h-10 px-4 py-2 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n icon: \"h-10 w-10 p-0\"\r\n };\r\n\r\n // We handle the motion props manually if not using 'asChild'\r\n const motionProps = {\r\n whileTap: { scale: 0.97 },\r\n transition: { type: \"spring\", stiffness: 400, damping: 15 }\r\n };\r\n\r\n const buttonContent = (\r\n <>\r\n {loading && (\r\n <svg className=\"animate-spin -ml-1 mr-2 h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"></path>\r\n </svg>\r\n )}\r\n {children}\r\n </>\r\n );\r\n\r\n const buttonClassName = cn(\r\n baseStyles,\r\n variantStyles[variant],\r\n sizeStyles[size],\r\n className\r\n );\r\n\r\n const buttonStyle = {\r\n ...style,\r\n ...(shadowColor ? { borderColor: shadowColor } : {})\r\n };\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref}\r\n className={buttonClassName}\r\n style={buttonStyle}\r\n {...props}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n // Filter out props that conflict with motion props\r\n const {\r\n onDrag,\r\n onDragStart,\r\n onDragEnd,\r\n onAnimationStart,\r\n onAnimationEnd,\r\n onAnimationIteration,\r\n ...safeProps\r\n } = props;\r\n\r\n return (\r\n <motion.button\r\n ref={ref}\r\n className={buttonClassName}\r\n style={buttonStyle}\r\n disabled={props.disabled || loading}\r\n {...safeProps}\r\n {...motionProps}\r\n >\r\n {buttonContent}\r\n </motion.button>\r\n );\r\n }\r\n);\r\nButton3D.displayName = \"Button3D\";\r\n\r\nexport { Button3D };\r\n","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 } 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 onCheckedChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n variant?: \"glass\" | \"neon\" | \"pill\";\r\n label?: string;\r\n}\r\n\r\nexport function Toggle3D({\r\n checked: controlledChecked,\r\n defaultChecked = false,\r\n onCheckedChange,\r\n disabled = false,\r\n variant = \"pill\",\r\n label,\r\n}: Toggle3DProps) {\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\r\n\r\n const isControlled = controlledChecked !== undefined;\r\n const isChecked = isControlled ? controlledChecked : internalChecked;\r\n\r\n const handleToggle = () => {\r\n if (disabled) return;\r\n const newChecked = !isChecked;\r\n if (!isControlled) setInternalChecked(newChecked);\r\n onCheckedChange?.(newChecked);\r\n };\r\n\r\n const getVariantStyles = () => {\r\n switch (variant) {\r\n case \"neon\":\r\n return isChecked\r\n ? \"bg-slate-900 border border-cyan-500/50 shadow-[0_0_15px_rgba(6,182,212,0.4)]\"\r\n : \"bg-slate-900 border border-slate-700\";\r\n case \"glass\":\r\n return \"bg-white/20 backdrop-blur-md border border-white/30 shadow-inner\";\r\n case \"pill\":\r\n default:\r\n return isChecked\r\n ? \"bg-primary shadow-inner\"\r\n : \"bg-slate-200 dark:bg-slate-700 shadow-inner\";\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"flex items-center gap-3\">\r\n <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative h-8 w-14 rounded-full transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n getVariantStyles()\r\n )}\r\n role=\"switch\"\r\n aria-checked={isChecked}\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 z-10\",\r\n variant === \"neon\" && isChecked ? \"bg-cyan-400 shadow-[0_0_10px_#22d3ee]\" : \"bg-white\"\r\n )}\r\n animate={{\r\n x: isChecked ? 24 : 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 {variant !== \"neon\" && (\r\n <div\r\n className={cn(\r\n \"absolute inset-0 rounded-full border-b-[3px] border-black/5 pointer-events-none\",\r\n isChecked ? \"border-black/10\" : \"border-black/5\"\r\n )}\r\n />\r\n )}\r\n </button>\r\n {label && <span className=\"text-sm font-medium\">{label}</span>}\r\n </div>\r\n );\r\n}\r\n","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","import React from \"react\";\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface Menu3DProps {\r\n children: React.ReactNode;\r\n trigger: React.ReactNode;\r\n align?: \"start\" | \"center\" | \"end\";\r\n}\r\n\r\nconst Menu3DContext = React.createContext({});\r\n\r\nexport function Menu3D({ children, trigger, align = \"end\" }: Menu3DProps) {\r\n return (\r\n <DropdownMenuPrimitive.Root>\r\n <DropdownMenuPrimitive.Trigger asChild>\r\n {trigger}\r\n </DropdownMenuPrimitive.Trigger>\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n align={align}\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 \"bg-white/90 dark:bg-slate-900/90 backdrop-blur-xl border-white/20 shadow-xl\"\r\n )}\r\n >\r\n {children}\r\n </DropdownMenuPrimitive.Content>\r\n </DropdownMenuPrimitive.Portal>\r\n </DropdownMenuPrimitive.Root>\r\n );\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-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground 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\nMenu3DItem.displayName = DropdownMenuPrimitive.Item.displayName\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-2 py-1.5 text-sm font-semibold\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nMenu3DLabel.displayName = DropdownMenuPrimitive.Label.displayName\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(\"-mx-1 my-1 h-px bg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nMenu3DSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\r\n","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 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\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst badgeVariants = cva(\r\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\r\n secondary: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\r\n destructive: \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\r\n outline: \"text-foreground\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n },\r\n);\r\n\r\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\r\n\r\nfunction Badge({ className, variant, ...props }: BadgeProps) {\r\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\r\n}\r\n\r\nexport { Badge, badgeVariants };\r\n","import * as React from \"react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\r\n ({ className, type, ...props }, ref) => {\r\n return (\r\n <input\r\n type={type}\r\n className={cn(\r\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base 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 md:text-sm\",\r\n className,\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nInput.displayName = \"Input\";\r\n\r\nexport { Input };\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 { 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 = \"icon\", ...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, ...props }: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink aria-label=\"Go to previous page\" size=\"default\" 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, ...props }: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink aria-label=\"Go to next page\" size=\"default\" 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 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\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 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":"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","names":["React","jsx","React","React","jsx","React","React","jsx","React","React","jsx","React","React","jsx","jsxs","React","motion","jsx","jsxs","motion","useState","motion","jsx","jsxs","useState","motion","React","motion","jsx","React","motion","React","useState","motion","jsx","jsxs","React","useState","motion","useState","motion","jsx","jsxs","useState","motion","useState","motion","AnimatePresence","jsx","jsxs","useState","motion","AnimatePresence","useState","motion","jsx","jsxs","useState","motion","motion","AnimatePresence","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","motion","jsx","jsxs","motion","jsx","useRef","jsx","jsxs","jsx","jsxs","useState","Text","jsx","jsxs","Line","Text","Vector3","jsx","jsxs","React","TooltipPrimitive","jsx","jsx","React","jsx","jsxs","React","cva","jsx","cva","cva","jsx","cva","React","jsx","React","ChevronDown","jsx","jsxs","jsxs","jsx","ChevronDown","React","jsx","React","jsx","jsxs","React","jsx","jsx","React","cva","X","jsx","jsx","cva","X","React","jsx","jsx","cva","X","React","jsx","jsxs","jsx","cva","jsxs","X","React","DialogPrimitive","X","jsx","jsxs","jsx","jsxs","X","React","Slot","ChevronRight","MoreHorizontal","jsx","jsxs","Slot","ChevronRight","MoreHorizontal","useRef","useState","useFrame","Text","jsx","jsxs","useMemo","Line","Vector3","jsx","jsxs","React","useMemo","useState","useFrame","Text","jsx","jsxs","useRef","useState","Instances","Instance","Vector3","useFrame","jsx","jsxs","useMemo","Line","Text","Vector3","jsx","jsxs","jsx","jsxs","useRef","useFrame","useTexture","jsx","jsxs","jsx","useRef","useFrame","Suspense","useRef","useFrame","jsx","jsxs","Suspense","jsx","jsxs","useRef","useState","useFrame","THREE","jsx","jsxs","useRef","useMemo","useFrame","jsx","jsxs","useEffect","useRef","useFrame","__publicField","Color","Color","UniformsUtils","ShaderMaterial","Vector3","AdditiveBlending","UnrealBloomPass","__publicField","__publicField","__publicField","Vector2","WebGLRenderTarget","__publicField","Color","Vector2","jsx","jsxs","useRef","useEffect","useFrame","jsx","jsxs","jsx","jsx","React","THREE","jsx","jsxs","React","useMemo","extend","useFrame","THREE","jsx","useMemo","shaderMaterial","extend","useFrame","THREE","jsx","jsxs"]}