@braintwopoint0/playback-commons 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/button.tsx","../../src/utils/cn.ts","../../src/ui/card.tsx","../../src/ui/badge.tsx","../../src/ui/label.tsx","../../src/ui/input.tsx","../../src/ui/dialog.tsx","../../src/ui/select.tsx","../../src/ui/animated-tooltip.tsx","../../src/ui/card-hover-effect.tsx","../../src/ui/flip-words.tsx","../../src/ui/hero-highlight.tsx","../../src/ui/popover.tsx","../../src/ui/calendar.tsx","../../src/ui/date-picker.tsx","../../src/ui/time-picker.tsx","../../src/ui/datetime-picker.tsx","../../src/ui/chart.tsx","../../src/ui/skeleton.tsx","../../src/ui/separator.tsx","../../src/ui/tabs.tsx","../../src/ui/checkbox.tsx","../../src/ui/switch.tsx","../../src/ui/collapsible.tsx","../../src/ui/sheet.tsx","../../src/ui/textarea.tsx","../../src/ui/tooltip.tsx","../../src/ui/avatar.tsx","../../src/ui/page-shell.tsx","../../src/ui/stats-grid.tsx","../../src/ui/section-card.tsx","../../src/ui/empty-state.tsx","../../src/ui/search-bar.tsx","../../src/ui/data-row.tsx","../../src/ui/motion-presets.ts","../../src/ui/fade-in.tsx","../../src/ui/luma-spin.tsx","../../src/ui/footer.tsx","../../src/ui/footer-credits-bar.tsx","../../src/ui/newsletter-form.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium cursor-pointer 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',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n outline:\n 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n playback:\n 'relative group/btn bg-gradient-to-br from-[var(--night)] to-[var(--night)] bg-[var(--night)] border border-neutral-400/[0.5] text-white shadow-[0px_1px_0px_0px_var(--zinc-800)_inset,0px_-1px_0px_0px_var(--zinc-800)_inset]',\n },\n size: {\n default: 'h-10 px-4 py-2',\n sm: 'h-9 rounded-md px-3',\n lg: 'h-11 rounded-md px-8',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nfunction BottomGradient() {\n return (\n <>\n <span className=\"group-hover/btn:opacity-100 block transition duration-500 opacity-0 absolute h-px w-full -bottom-px inset-x-0 bg-gradient-to-r from-transparent via-[var(--timberwolf)] to-transparent\" />\n <span className=\"group-hover/btn:opacity-100 blur-sm block transition duration-500 opacity-0 absolute h-px w-1/2 mx-auto -bottom-px inset-x-10 bg-gradient-to-r from-transparent via-[var(--timberwolf)] to-transparent\" />\n </>\n )\n}\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, children, ...props }, ref) => {\n if (asChild) {\n return (\n <Slot\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </Slot>\n )\n }\n return (\n <button\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n {variant === 'playback' && <BottomGradient />}\n </button>\n )\n }\n)\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-lg border bg-card text-card-foreground shadow-sm',\n className\n )}\n {...props}\n />\n))\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-6', className)}\n {...props}\n />\n))\nCardHeader.displayName = 'CardHeader'\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n 'text-2xl font-semibold leading-none tracking-tight',\n className\n )}\n {...props}\n />\n))\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n))\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center p-6 pt-0', className)}\n {...props}\n />\n))\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst badgeVariants = cva(\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',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport * as LabelPrimitive from '@radix-ui/react-label'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { useMotionTemplate, useMotionValue, motion } from 'motion/react'\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n const radius = 100\n const [visible, setVisible] = React.useState(false)\n\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n\n function handleMouseMove({ currentTarget, clientX, clientY }: any) {\n let { left, top } = currentTarget.getBoundingClientRect()\n\n mouseX.set(clientX - left)\n mouseY.set(clientY - top)\n }\n return (\n <motion.div\n style={{\n background: useMotionTemplate`\n radial-gradient(\n ${visible ? radius + 'px' : '0px'} circle at ${mouseX}px ${mouseY}px,\n var(--timberwolf),\n transparent 80%\n )\n `,\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n className=\"p-[2px] rounded-lg transition duration-300 group/input\"\n >\n <input\n type={type}\n className={cn(\n `flex h-10 w-full border-none bg-zinc-800 text-white shadow-input rounded-lg px-3 py-2 text-sm file:border-0 file:bg-transparent\n file:text-sm file:font-medium placeholder:text-neutral-500\n focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600\n disabled:cursor-not-allowed disabled:opacity-50\n shadow-[0px_0px_1px_1px_var(--neutral-700)]\n group-hover/input:shadow-none transition duration-400\n `,\n className\n )}\n ref={ref}\n {...props}\n />\n </motion.div>\n )\n }\n)\nInput.displayName = 'Input'\n\nexport { Input }\n","'use client'\n\nimport * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cn } from '../utils/cn'\nimport { Cross2Icon } from '@radix-ui/react-icons'\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-zinc-800 bg-zinc-950 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',\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-zinc-950 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-zinc-300 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-zinc-800 data-[state=open]:text-zinc-400\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n 'text-lg font-semibold leading-none tracking-tight',\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-zinc-400', className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { cn } from '../utils/cn'\nimport { useMotionTemplate, useMotionValue, motion } from 'motion/react'\n\nconst Select = SelectPrimitive.Root\nconst SelectGroup = SelectPrimitive.Group\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => {\n const radius = 100\n const [visible, setVisible] = React.useState(false)\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n\n function handleMouseMove({ currentTarget, clientX, clientY }: any) {\n let { left, top } = currentTarget.getBoundingClientRect()\n mouseX.set(clientX - left)\n mouseY.set(clientY - top)\n }\n\n return (\n <motion.div\n style={{\n background: useMotionTemplate`\n radial-gradient(\n ${visible ? radius + 'px' : '0px'} circle at ${mouseX}px ${mouseY}px,\n var(--timberwolf),\n transparent 80%\n )\n `,\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n className=\"p-[2px] rounded-lg transition duration-300 group/input\"\n >\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between whitespace-nowrap rounded-md bg-zinc-800 text-white px-3 py-2 text-sm border-none shadow-[0px_0px_1px_1px_var(--neutral-700)] group-hover/input:shadow-none transition duration-400 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <svg\n className=\"h-4 w-4 opacity-50\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n </motion.div>\n )\n})\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-neutral-700 bg-zinc-800 text-white 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',\n position === 'popper' &&\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',\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-white/10 focus:text-white data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-neutral-700', className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-sm font-semibold', className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","'use client'\n\nimport React, { useState } from 'react'\nimport {\n motion,\n useTransform,\n AnimatePresence,\n useMotionValue,\n useSpring,\n} from 'motion/react'\n\nexport const AnimatedTooltip = ({\n items,\n}: {\n items: {\n id: number\n name: string\n designation: string\n image: string\n }[]\n}) => {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n const springConfig = { stiffness: 100, damping: 5 }\n const x = useMotionValue(0)\n const rotate = useSpring(\n useTransform(x, [-100, 100], [-45, 45]),\n springConfig\n )\n const translateX = useSpring(\n useTransform(x, [-100, 100], [-50, 50]),\n springConfig\n )\n const handleMouseMove = (event: any) => {\n const halfWidth = event.target.offsetWidth / 2\n x.set(event.nativeEvent.offsetX - halfWidth)\n }\n\n return (\n <>\n {items.map((item, idx) => (\n <div\n className=\"-mr-4 relative group\"\n key={item.name}\n onMouseEnter={() => setHoveredIndex(item.id)}\n onMouseLeave={() => setHoveredIndex(null)}\n >\n {hoveredIndex === item.id && (\n <motion.div\n initial={{ opacity: 0, y: 20, scale: 0.6 }}\n animate={{\n opacity: 1,\n y: 0,\n scale: 1,\n transition: {\n type: 'spring',\n stiffness: 260,\n damping: 10,\n },\n }}\n exit={{ opacity: 0, y: 20, scale: 0.6 }}\n style={{\n translateX: translateX,\n rotate: rotate,\n whiteSpace: 'nowrap',\n }}\n className=\"absolute -top-16 -left-1/2 translate-x-1/2 flex text-xs flex-col items-center justify-center rounded-md bg-black z-50 shadow-xl px-4 py-2\"\n >\n <div className=\"absolute inset-x-10 z-30 w-[20%] -bottom-px bg-gradient-to-r from-transparent via-emerald-500 to-transparent h-px \" />\n <div className=\"absolute left-10 w-[40%] z-30 -bottom-px bg-gradient-to-r from-transparent via-sky-500 to-transparent h-px \" />\n <div className=\"font-bold text-white relative z-30 text-base\">\n {item.name}\n </div>\n <div className=\"text-white text-xs\">{item.designation}</div>\n </motion.div>\n )}\n <img\n onMouseMove={handleMouseMove}\n height={100}\n width={100}\n src={item.image}\n alt={item.name}\n className=\"object-cover !m-0 !p-0 object-top rounded-full h-16 w-16 border-2 group-hover:scale-105 group-hover:z-30 border-[var(--ash-grey)] relative transition duration-500\"\n />\n </div>\n ))}\n </>\n )\n}\n","'use client'\n\nimport { cn } from '../utils/cn'\nimport { AnimatePresence, motion } from 'motion/react'\nimport Link from 'next/link'\nimport { useState } from 'react'\n\nexport const HoverEffect = ({\n items,\n className,\n}: {\n items: {\n title: string\n description: string\n link: string\n logoUrl: string\n }[]\n className?: string\n}) => {\n let [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n\n return (\n <div\n className={cn(\n 'flex flex-wrap justify-center items-center pb-10',\n className\n )}\n >\n {items.map((item, idx) => (\n <Link\n href={item?.link}\n key={item?.link}\n className=\"relative group block p-2 h-72 w-80\"\n onMouseEnter={() => setHoveredIndex(idx)}\n onMouseLeave={() => setHoveredIndex(null)}\n >\n <AnimatePresence>\n {hoveredIndex === idx && (\n <motion.span\n className=\"absolute inset-0 h-full w-full bg-neutral-400/[0.5] block rounded-3xl\"\n layoutId=\"hoverBackground\"\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n transition: { duration: 0.15 },\n }}\n exit={{\n opacity: 0,\n transition: { duration: 0.15, delay: 0.2 },\n }}\n />\n )}\n </AnimatePresence>\n <HoverCard logoUrl={item.logoUrl}>\n <HoverCardTitle>{item.title}</HoverCardTitle>\n <HoverCardDescription>{item.description}</HoverCardDescription>\n </HoverCard>\n </Link>\n ))}\n </div>\n )\n}\n\nexport const HoverCard = ({\n className,\n children,\n logoUrl,\n}: {\n className?: string\n children: React.ReactNode\n logoUrl: string\n}) => {\n return (\n <div\n className={cn(\n 'rounded-2xl h-full w-full p-4 overflow-hidden bg-black border border-white/[0.2] group-hover:border-[var(--timberwolf)] relative z-20',\n className\n )}\n >\n <div\n className=\"absolute bottom-[-3rem] left-[-5rem] h-56 w-56 opacity-50\"\n style={{\n backgroundImage: `url(${logoUrl})`,\n backgroundPosition: 'bottom left',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n maskImage: 'linear-gradient(to bottom left, transparent, black)',\n }}\n />\n <div className=\"relative z-50\">\n <div className=\"p-4\">{children}</div>\n </div>\n </div>\n )\n}\nexport const HoverCardTitle = ({\n className,\n children,\n}: {\n className?: string\n children: React.ReactNode\n}) => {\n return (\n <h4 className={cn('text-zinc-100 font-bold tracking-wide mt-4', className)}>\n {children}\n </h4>\n )\n}\nexport const HoverCardDescription = ({\n className,\n children,\n}: {\n className?: string\n children: React.ReactNode\n}) => {\n return (\n <p\n className={cn(\n 'mt-8 text-zinc-400 tracking-wide leading-relaxed text-sm',\n className\n )}\n >\n {children}\n </p>\n )\n}\n","'use client'\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { AnimatePresence, motion, LayoutGroup } from 'motion/react'\nimport { cn } from '../utils/cn'\n\nexport const FlipWords = ({\n words,\n duration = 3000,\n className,\n}: {\n words: string[]\n duration?: number\n className?: string\n}) => {\n const [currentWord, setCurrentWord] = useState(words[0])\n const [isAnimating, setIsAnimating] = useState<boolean>(false)\n\n const startAnimation = useCallback(() => {\n const word = words[words.indexOf(currentWord) + 1] || words[0]\n setCurrentWord(word)\n setIsAnimating(true)\n }, [currentWord, words])\n\n useEffect(() => {\n if (!isAnimating)\n setTimeout(() => {\n startAnimation()\n }, duration)\n }, [isAnimating, duration, startAnimation])\n\n return (\n <AnimatePresence\n onExitComplete={() => {\n setIsAnimating(false)\n }}\n >\n <motion.div\n initial={{\n opacity: 0,\n y: 10,\n }}\n animate={{\n opacity: 1,\n y: 0,\n }}\n transition={{\n type: 'spring',\n stiffness: 100,\n damping: 10,\n }}\n exit={{\n opacity: 0,\n y: -40,\n x: 40,\n filter: 'blur(8px)',\n scale: 2,\n position: 'absolute',\n }}\n className={cn(\n 'z-10 inline-block relative text-left text-neutral-100 px-2',\n className\n )}\n key={currentWord}\n >\n {currentWord.split(' ').map((word, wordIndex) => (\n <motion.span\n key={word + wordIndex}\n initial={{ opacity: 0, y: 10, filter: 'blur(8px)' }}\n animate={{ opacity: 1, y: 0, filter: 'blur(0px)' }}\n transition={{\n delay: wordIndex * 0.3,\n duration: 0.3,\n }}\n className=\"inline-block whitespace-nowrap\"\n >\n {word.split('').map((letter, letterIndex) => (\n <motion.span\n key={word + letterIndex}\n initial={{ opacity: 0, y: 10, filter: 'blur(8px)' }}\n animate={{ opacity: 1, y: 0, filter: 'blur(0px)' }}\n transition={{\n delay: wordIndex * 0.3 + letterIndex * 0.05,\n duration: 0.2,\n }}\n className=\"inline-block\"\n >\n {letter}\n </motion.span>\n ))}\n <span className=\"inline-block\">&nbsp;</span>\n </motion.span>\n ))}\n </motion.div>\n </AnimatePresence>\n )\n}\n","'use client'\n\nimport { cn } from '../utils/cn'\nimport {\n useMotionValue,\n motion,\n useMotionTemplate,\n animate,\n} from 'motion/react'\nimport React, { useEffect, useState } from 'react'\n\nexport const HeroHighlight = ({\n children,\n className,\n containerClassName,\n}: {\n children: React.ReactNode\n className?: string\n containerClassName?: string\n}) => {\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n const [isHoverable, setIsHoverable] = useState(false)\n\n useEffect(() => {\n const mediaQuery = window.matchMedia('(pointer: fine)')\n setIsHoverable(mediaQuery.matches)\n\n const handleChange = (e: MediaQueryListEvent) => {\n setIsHoverable(e.matches)\n }\n\n mediaQuery.addEventListener('change', handleChange)\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange)\n }\n }, [])\n\n useEffect(() => {\n if (!isHoverable) {\n const updatePosition = () => {\n const randomX = Math.random() * window.innerWidth\n const randomY = Math.random() * window.innerHeight\n animate(mouseX, randomX, { duration: 2 })\n animate(mouseY, randomY, { duration: 2 })\n }\n\n const interval = setInterval(updatePosition, 2000)\n updatePosition()\n\n return () => clearInterval(interval)\n }\n }, [isHoverable, mouseX, mouseY])\n\n const handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!isHoverable || !event.currentTarget) return\n const { left, top } = event.currentTarget.getBoundingClientRect()\n mouseX.set(event.clientX - left)\n mouseY.set(event.clientY - top)\n }\n\n return (\n <div\n className={cn(\n 'relative h-[40rem] flex items-center bg-[var(--night)] justify-center w-full group',\n containerClassName\n )}\n onMouseMove={handleMouseMove}\n >\n <div className=\"absolute inset-0 bg-dot-thick-neutral-800 pointer-events-none\" />\n <motion.div\n className=\"pointer-events-none bg-dot-thick-gray-100 absolute inset-0 opacity-0 transition duration-300 group-hover:opacity-100\"\n style={{\n WebkitMaskImage: useMotionTemplate`\n radial-gradient(\n 200px circle at ${mouseX}px ${mouseY}px,\n black 0%,\n transparent 100%\n )\n `,\n maskImage: useMotionTemplate`\n radial-gradient(\n 200px circle at ${mouseX}px ${mouseY}px,\n black 0%,\n transparent 100%\n )\n `,\n }}\n />\n\n <div className={cn('relative z-20', className)}>{children}</div>\n </div>\n )\n}\n\nexport const Highlight = ({\n children,\n className,\n}: {\n children: React.ReactNode\n className?: string\n}) => {\n return (\n <motion.span\n initial={{\n backgroundSize: '0% 100%',\n }}\n animate={{\n backgroundSize: '100% 100%',\n }}\n transition={{\n duration: 2,\n ease: 'linear',\n delay: 0.5,\n }}\n style={{\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'left center',\n display: 'inline',\n }}\n className={cn(\n `relative inline-block pb-1 px-1 rounded-lg bg-gradient-to-r from-[var(--ash-grey)] to-[var(--timberwolf)]`,\n className\n )}\n >\n {children}\n </motion.span>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\n\nimport { cn } from '../utils/cn'\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-72 rounded-md border border-zinc-800 bg-zinc-950 p-4 text-zinc-50 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 origin-[--radix-popover-content-transform-origin]',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","'use client'\n\nimport * as React from 'react'\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from 'lucide-react'\nimport { DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker'\n\nimport { cn } from '../utils/cn'\nimport { Button, buttonVariants } from './button'\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant']\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-zinc-950 group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn(\n 'relative flex flex-col gap-4 md:flex-row',\n defaultClassNames.months\n ),\n month: cn('flex w-full flex-col gap-4', defaultClassNames.month),\n nav: cn(\n 'absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1',\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_next\n ),\n month_caption: cn(\n 'flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]',\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n 'flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium',\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n 'has-focus:border-zinc-300 border-zinc-800 shadow-xs has-focus:ring-zinc-300/50 has-focus:ring-[3px] relative rounded-md border',\n defaultClassNames.dropdown_root\n ),\n dropdown: cn('absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : '[&>svg]:text-zinc-400 flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5',\n defaultClassNames.caption_label\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'text-zinc-400 flex-1 select-none rounded-md text-[0.8rem] font-normal',\n defaultClassNames.weekday\n ),\n week: cn('mt-2 flex w-full', defaultClassNames.week),\n week_number_header: cn(\n 'w-[--cell-size] select-none',\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n 'text-zinc-400 select-none text-[0.8rem]',\n defaultClassNames.week_number\n ),\n day: cn(\n 'group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md',\n defaultClassNames.day\n ),\n range_start: cn(\n 'bg-zinc-800 rounded-l-md',\n defaultClassNames.range_start\n ),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('bg-zinc-800 rounded-r-md', defaultClassNames.range_end),\n today: cn(\n 'bg-zinc-800 text-zinc-50 rounded-md data-[selected=true]:rounded-none',\n defaultClassNames.today\n ),\n outside: cn(\n 'text-zinc-400 aria-selected:text-zinc-400',\n defaultClassNames.outside\n ),\n disabled: cn('text-zinc-400 opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <ChevronLeftIcon className={cn('size-4', className)} {...props} />\n )\n }\n\n if (orientation === 'right') {\n return (\n <ChevronRightIcon\n className={cn('size-4', className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn('size-4', className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-[--cell-size] items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-zinc-50 data-[selected-single=true]:text-zinc-900 data-[range-middle=true]:bg-zinc-800 data-[range-middle=true]:text-zinc-50 data-[range-start=true]:bg-zinc-50 data-[range-start=true]:text-zinc-900 data-[range-end=true]:bg-zinc-50 data-[range-end=true]:text-zinc-900 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","'use client'\n\nimport * as React from 'react'\nimport { CalendarIcon } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from './popover'\n\ninterface DatePickerProps {\n value: string\n onChange: (value: string) => void\n min?: string\n max?: string\n className?: string\n id?: string\n placeholder?: string\n}\n\nexport function DatePicker({\n value,\n onChange,\n min,\n max,\n className,\n id,\n placeholder = 'Pick a date',\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n\n // Convert string value to Date object (ensure consistent timezone handling)\n const selectedDate = value ? new Date(value + 'T00:00:00') : undefined\n\n // Convert min string to Date object (ensure consistent timezone handling)\n const minDate = min ? new Date(min + 'T00:00:00') : undefined\n\n // Convert max string to Date object (ensure consistent timezone handling)\n const maxDate = max ? new Date(max + 'T00:00:00') : undefined\n\n const formatDate = (date: Date) => {\n return date.toLocaleDateString('en-GB', {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n })\n }\n\n const handleDateSelect = (date: Date | undefined) => {\n if (date) {\n // Convert Date back to YYYY-MM-DD string format\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n onChange(`${year}-${month}-${day}`)\n setOpen(false)\n }\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n className={cn(\n 'w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm',\n 'focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600',\n 'shadow-[0px_0px_1px_1px_var(--neutral-700)]',\n 'hover:shadow-none transition duration-400',\n !selectedDate && 'text-neutral-400',\n className\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {selectedDate ? formatDate(selectedDate) : <span>{placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n disabled={(date) => {\n // Compare dates by normalizing to start of day\n const dateAtMidnight = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n )\n\n // Check min date\n if (minDate) {\n const minDateAtMidnight = new Date(\n minDate.getFullYear(),\n minDate.getMonth(),\n minDate.getDate()\n )\n if (dateAtMidnight < minDateAtMidnight) return true\n }\n\n // Check max date\n if (maxDate) {\n const maxDateAtMidnight = new Date(\n maxDate.getFullYear(),\n maxDate.getMonth(),\n maxDate.getDate()\n )\n if (dateAtMidnight > maxDateAtMidnight) return true\n }\n\n return false\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Button } from './button'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from './popover'\nimport { cn } from '../utils/cn'\nimport { ClockIcon } from 'lucide-react'\n\ninterface TimePickerProps {\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n min?: string\n max?: string\n}\n\nexport function TimePicker({\n value,\n onChange,\n placeholder = 'Select time',\n className,\n disabled = false,\n min,\n max,\n}: TimePickerProps) {\n const [open, setOpen] = React.useState(false)\n const [hours, setHours] = React.useState(\n value ? parseInt(value.split(':')[0]) : 9\n )\n const [minutes, setMinutes] = React.useState(\n value ? parseInt(value.split(':')[1]) : 0\n )\n\n const formatTime = (h: number, m: number) => {\n return `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}`\n }\n\n const handleTimeSelect = (h: number, m: number) => {\n const timeString = formatTime(h, m)\n setHours(h)\n setMinutes(m)\n onChange?.(timeString)\n setOpen(false)\n }\n\n const generateTimeOptions = () => {\n const options = []\n for (let h = 6; h <= 23; h++) {\n for (let m = 0; m < 60; m += 15) {\n const timeString = formatTime(h, m)\n\n // Check against min/max constraints\n if (min && timeString < min) continue\n if (max && timeString > max) continue\n\n options.push({ hours: h, minutes: m, display: timeString })\n }\n }\n return options\n }\n\n const timeOptions = generateTimeOptions()\n const displayValue = value || ''\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n 'w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm',\n 'focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600',\n 'shadow-[0px_0px_1px_1px_var(--neutral-700)]',\n 'hover:shadow-none transition duration-400',\n !value && 'text-neutral-400',\n className\n )}\n disabled={disabled}\n >\n <ClockIcon className=\"mr-2 h-4 w-4\" />\n {displayValue || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"max-h-60 overflow-y-auto\">\n <div className=\"grid grid-cols-1 gap-1 p-2\">\n {timeOptions.map(({ hours: h, minutes: m, display }) => (\n <Button\n key={display}\n variant={value === display ? 'default' : 'ghost'}\n className=\"justify-start text-left h-8 text-sm\"\n onClick={() => handleTimeSelect(h, m)}\n >\n {display}\n </Button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { CalendarIcon } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from './popover'\n\ninterface DateTimePickerProps {\n value: string // YYYY-MM-DDTHH:mm\n onChange: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n required?: boolean\n}\n\nexport function DateTimePicker({\n value,\n onChange,\n placeholder = 'Pick date & time',\n className,\n disabled = false,\n required = false,\n}: DateTimePickerProps) {\n const [open, setOpen] = React.useState(false)\n const hourRef = React.useRef<HTMLDivElement>(null)\n const minuteRef = React.useRef<HTMLDivElement>(null)\n\n // Parse value into date and time parts\n const datePart = value ? value.split('T')[0] : ''\n const timePart = value ? value.split('T')[1] || '' : ''\n const selectedHour = timePart ? parseInt(timePart.split(':')[0]) : -1\n const selectedMinute = timePart ? parseInt(timePart.split(':')[1]) : -1\n const selectedDate = datePart ? new Date(datePart + 'T00:00:00') : undefined\n\n const formatDisplay = (val: string) => {\n if (!val) return ''\n const [d, t] = val.split('T')\n if (!d) return ''\n const date = new Date(d + 'T00:00:00')\n const dateStr = date.toLocaleDateString('en-GB', {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n })\n if (!t) return dateStr\n return `${dateStr}, ${t}`\n }\n\n const buildValue = (date: string, hour: number, minute: number) => {\n const h = hour.toString().padStart(2, '0')\n const m = minute.toString().padStart(2, '0')\n return `${date}T${h}:${m}`\n }\n\n const handleDateSelect = (date: Date | undefined) => {\n if (!date) return\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const newDate = `${year}-${month}-${day}`\n\n // Keep existing time, default to 12:00 if none set\n const h = selectedHour >= 0 ? selectedHour : 12\n const m = selectedMinute >= 0 ? selectedMinute : 0\n onChange(buildValue(newDate, h, m))\n }\n\n const handleHourSelect = (h: number) => {\n if (!datePart) {\n // Auto-pick today if no date selected\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n const m = selectedMinute >= 0 ? selectedMinute : 0\n onChange(buildValue(`${year}-${month}-${day}`, h, m))\n } else {\n const m = selectedMinute >= 0 ? selectedMinute : 0\n onChange(buildValue(datePart, h, m))\n }\n }\n\n const handleMinuteSelect = (m: number) => {\n if (!datePart) {\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n const h = selectedHour >= 0 ? selectedHour : 12\n onChange(buildValue(`${year}-${month}-${day}`, h, m))\n } else {\n const h = selectedHour >= 0 ? selectedHour : 12\n onChange(buildValue(datePart, h, m))\n }\n }\n\n // Scroll to selected hour/minute when popover opens\n React.useEffect(() => {\n if (open) {\n setTimeout(() => {\n if (hourRef.current && selectedHour >= 0) {\n const el = hourRef.current.querySelector(`[data-hour=\"${selectedHour}\"]`)\n el?.scrollIntoView({ block: 'center' })\n }\n if (minuteRef.current && selectedMinute >= 0) {\n const el = minuteRef.current.querySelector(`[data-minute=\"${selectedMinute}\"]`)\n el?.scrollIntoView({ block: 'center' })\n }\n }, 50)\n }\n }, [open, selectedHour, selectedMinute])\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n 'w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm',\n 'focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600',\n 'shadow-[0px_0px_1px_1px_var(--neutral-700)]',\n 'hover:shadow-none transition duration-400',\n !value && 'text-neutral-400',\n className\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4 shrink-0\" />\n {value ? formatDisplay(value) : <span>{placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {/* Calendar */}\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n initialFocus\n />\n\n {/* Time selectors */}\n <div className=\"flex border-l border-zinc-800\">\n {/* Hours */}\n <div\n ref={hourRef}\n className=\"h-[280px] w-16 overflow-y-auto p-1\"\n >\n <div className=\"px-1 py-1.5 text-center text-xs text-zinc-400 font-medium\">\n Hr\n </div>\n {Array.from({ length: 24 }, (_, i) => (\n <button\n key={i}\n data-hour={i}\n type=\"button\"\n onClick={() => handleHourSelect(i)}\n className={cn(\n 'w-full rounded-md px-2 py-1.5 text-sm text-center cursor-pointer transition-colors',\n selectedHour === i\n ? 'bg-zinc-50 text-zinc-900 font-medium'\n : 'text-zinc-300 hover:bg-zinc-800'\n )}\n >\n {i.toString().padStart(2, '0')}\n </button>\n ))}\n </div>\n\n {/* Minutes */}\n <div\n ref={minuteRef}\n className=\"h-[280px] w-16 overflow-y-auto border-l border-zinc-800 p-1\"\n >\n <div className=\"px-1 py-1.5 text-center text-xs text-zinc-400 font-medium\">\n Min\n </div>\n {Array.from({ length: 12 }, (_, i) => i * 5).map((m) => (\n <button\n key={m}\n data-minute={m}\n type=\"button\"\n onClick={() => handleMinuteSelect(m)}\n className={cn(\n 'w-full rounded-md px-2 py-1.5 text-sm text-center cursor-pointer transition-colors',\n selectedMinute === m\n ? 'bg-zinc-50 text-zinc-900 font-medium'\n : 'text-zinc-300 hover:bg-zinc-800'\n )}\n >\n {m.toString().padStart(2, '0')}\n </button>\n ))}\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-[var(--ash-grey)]/20 bg-[#1a1f1c] px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px]\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n backgroundColor: indicatorColor,\n borderColor: indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-[var(--ash-grey)]\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-[var(--timberwolf)] font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 text-[var(--ash-grey)]\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","import { cn } from '../utils/cn'\n\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-muted', className)} {...props} />\n}\n\nexport { Skeleton }\n","'use client'\n\nimport * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { cn } from '../utils/cn'\n\nconst Separator = React.forwardRef<\n React.ComponentRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n {...props}\n />\n))\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","'use client'\n\nimport * as React from 'react'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cn } from '../utils/cn'\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground',\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","'use client'\n\nimport * as React from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { cn } from '../utils/cn'\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center text-current')}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-3.5 w-3.5\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","'use client'\n\nimport * as React from 'react'\nimport * as SwitchPrimitives from '@radix-ui/react-switch'\nimport { cn } from '../utils/cn'\n\nconst Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","'use client'\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible'\n\nconst Collapsible = CollapsiblePrimitive.Root\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","'use client'\n\nimport * as React from 'react'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst Sheet = SheetPrimitive.Root\nconst SheetTrigger = SheetPrimitive.Trigger\nconst SheetClose = SheetPrimitive.Close\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\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',\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n 'fixed z-50 gap-4 bg-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',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = 'right', className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.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-secondary\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n)\nSheetHeader.displayName = 'SheetHeader'\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n)\nSheetFooter.displayName = 'SheetFooter'\n\nconst SheetTitle = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cn } from '../utils/cn'\n\nconst TooltipProvider = TooltipPrimitive.Provider\nconst Tooltip = TooltipPrimitive.Root\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden 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',\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","'use client'\n\nimport * as React from 'react'\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\nimport { cn } from '../utils/cn'\n\nconst Avatar = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn('aspect-square h-full w-full', className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n 'flex h-full w-full items-center justify-center rounded-full bg-muted',\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface PageShellProps extends React.HTMLAttributes<HTMLDivElement> {\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\n}\n\nconst maxWidthClasses = {\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n '2xl': 'max-w-screen-2xl',\n full: 'max-w-full',\n}\n\nfunction PageShell({ maxWidth = 'xl', className, children, ...props }: PageShellProps) {\n return (\n <div\n className={cn(\n 'min-h-screen bg-[var(--night)] text-[var(--timberwolf)]',\n className\n )}\n {...props}\n >\n <div className={cn('mx-auto w-full px-4 py-6 sm:px-6 lg:px-8', maxWidthClasses[maxWidth])}>\n {children}\n </div>\n </div>\n )\n}\n\nexport { PageShell }\nexport type { PageShellProps }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface StatItem {\n label: string\n value: string | number\n color?: 'default' | 'green' | 'yellow' | 'red' | 'blue'\n alert?: boolean\n}\n\ninterface StatsGridProps extends React.HTMLAttributes<HTMLDivElement> {\n stats: StatItem[]\n columns?: 2 | 3 | 4 | 6\n}\n\nconst colorClasses: Record<string, string> = {\n default: 'text-[var(--timberwolf)]',\n green: 'text-emerald-400',\n yellow: 'text-amber-400',\n red: 'text-red-400',\n blue: 'text-sky-400',\n}\n\nconst columnClasses = {\n 2: 'grid-cols-2',\n 3: 'grid-cols-2 sm:grid-cols-3',\n 4: 'grid-cols-2 sm:grid-cols-4',\n 6: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6',\n}\n\nfunction StatsGrid({ stats, columns = 4, className, ...props }: StatsGridProps) {\n return (\n <div className={cn('grid gap-3', columnClasses[columns], className)} {...props}>\n {stats.map((stat) => (\n <div\n key={stat.label}\n className={cn(\n 'rounded-lg border border-[var(--border)] bg-card p-4',\n stat.alert && 'border-red-500/50'\n )}\n >\n <p className=\"text-xs text-muted-foreground\">{stat.label}</p>\n <p\n className={cn(\n 'mt-1 text-2xl font-semibold',\n colorClasses[stat.color || 'default']\n )}\n >\n {stat.value}\n </p>\n </div>\n ))}\n </div>\n )\n}\n\nexport { StatsGrid }\nexport type { StatsGridProps, StatItem }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface SectionCardProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode\n title: string\n count?: number\n defaultOpen?: boolean\n collapsible?: boolean\n}\n\nfunction SectionCard({\n icon,\n title,\n count,\n defaultOpen = true,\n collapsible = true,\n className,\n children,\n ...props\n}: SectionCardProps) {\n const [open, setOpen] = React.useState(defaultOpen)\n\n return (\n <div\n className={cn('rounded-lg border border-[var(--border)] bg-card', className)}\n {...props}\n >\n <button\n type=\"button\"\n onClick={() => collapsible && setOpen(!open)}\n className={cn(\n 'flex w-full items-center gap-3 p-4 text-left',\n collapsible && 'cursor-pointer hover:bg-muted/50'\n )}\n >\n {icon && <span className=\"text-muted-foreground\">{icon}</span>}\n <span className=\"flex-1 text-sm font-medium text-[var(--timberwolf)]\">{title}</span>\n {count !== undefined && (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground\">\n {count}\n </span>\n )}\n {collapsible && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\n 'text-muted-foreground transition-transform duration-200',\n open && 'rotate-180'\n )}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n )}\n </button>\n {open && <div className=\"border-t border-[var(--border)] p-4\">{children}</div>}\n </div>\n )\n}\n\nexport { SectionCard }\nexport type { SectionCardProps }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode\n title: string\n description?: string\n action?: React.ReactNode\n}\n\nfunction EmptyState({ icon, title, description, action, className, ...props }: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center justify-center py-12 text-center', className)}\n {...props}\n >\n {icon && <div className=\"mb-4 text-muted-foreground\">{icon}</div>}\n <h3 className=\"text-lg font-medium text-[var(--timberwolf)]\">{title}</h3>\n {description && (\n <p className=\"mt-1 max-w-sm text-sm text-muted-foreground\">{description}</p>\n )}\n {action && <div className=\"mt-4\">{action}</div>}\n </div>\n )\n}\n\nexport { EmptyState }\nexport type { EmptyStateProps }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface SearchBarProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n value: string\n onChange: (value: string) => void\n onClear?: () => void\n}\n\nfunction SearchBar({ value, onChange, onClear, className, placeholder = 'Search...', ...props }: SearchBarProps) {\n return (\n <div className={cn('relative', className)}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n <input\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n className=\"h-10 w-full rounded-md border border-input bg-background pl-9 pr-9 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n {...props}\n />\n {value && (\n <button\n type=\"button\"\n onClick={() => {\n onChange('')\n onClear?.()\n }}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n )}\n </div>\n )\n}\n\nexport { SearchBar }\nexport type { SearchBarProps }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface DataRowProps extends React.HTMLAttributes<HTMLDivElement> {\n status?: 'green' | 'yellow' | 'red' | 'gray'\n primary: string\n secondary?: string\n trailing?: React.ReactNode\n}\n\nconst statusColors: Record<string, string> = {\n green: 'bg-emerald-400',\n yellow: 'bg-amber-400',\n red: 'bg-red-400',\n gray: 'bg-zinc-500',\n}\n\nfunction DataRow({ status, primary, secondary, trailing, className, ...props }: DataRowProps) {\n return (\n <div\n className={cn(\n 'flex items-center gap-3 rounded-md px-3 py-2.5 hover:bg-muted/50 transition-colors',\n className\n )}\n {...props}\n >\n {status && (\n <span className={cn('h-2 w-2 shrink-0 rounded-full', statusColors[status])} />\n )}\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm text-[var(--timberwolf)]\">{primary}</p>\n {secondary && (\n <p className=\"truncate text-xs text-muted-foreground\">{secondary}</p>\n )}\n </div>\n {trailing && <div className=\"shrink-0\">{trailing}</div>}\n </div>\n )\n}\n\nexport { DataRow }\nexport type { DataRowProps }\n","// Plain motion preset objects for use with framer-motion / motion\n// Usage: <motion.div {...fadeInUp} />\n\nexport const fadeInUp = {\n initial: { opacity: 0, y: 20 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.4, ease: [0.25, 0.46, 0.45, 0.94] },\n}\n\nexport const fadeInDown = {\n initial: { opacity: 0, y: -20 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.4, ease: [0.25, 0.46, 0.45, 0.94] },\n}\n\nexport const staggerContainer = {\n initial: {},\n animate: { transition: { staggerChildren: 0.06 } },\n}\n\nexport const staggerItem = {\n initial: { opacity: 0, y: 12 },\n animate: { opacity: 1, y: 0, transition: { duration: 0.3 } },\n}\n\nexport const pageTransition = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.25 },\n}\n\nexport const hoverScale = {\n whileHover: { scale: 1.02 },\n whileTap: { scale: 0.98 },\n transition: { type: 'spring', stiffness: 400, damping: 25 },\n}\n\nexport const hoverLift = {\n whileHover: { y: -2 },\n transition: { type: 'spring', stiffness: 400, damping: 25 },\n}\n\nexport const springBounce = {\n type: 'spring' as const,\n stiffness: 300,\n damping: 20,\n}\n\nexport const easeSmooth = [0.25, 0.46, 0.45, 0.94] as const\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface FadeInProps extends React.HTMLAttributes<HTMLDivElement> {\n delay?: number\n direction?: 'up' | 'left'\n}\n\nfunction FadeIn({ children, className, delay = 0, direction = 'up', ...props }: FadeInProps) {\n const ref = React.useRef<HTMLDivElement>(null)\n const [visible, setVisible] = React.useState(false)\n\n React.useEffect(() => {\n const el = ref.current\n if (!el) return\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisible(true)\n observer.disconnect()\n }\n },\n { threshold: 0.1 }\n )\n observer.observe(el)\n return () => observer.disconnect()\n }, [])\n\n return (\n <div\n ref={ref}\n className={cn(\n 'transition-all duration-500 ease-out',\n visible\n ? 'opacity-100 translate-y-0 translate-x-0'\n : direction === 'left'\n ? 'opacity-0 -translate-x-5'\n : 'opacity-0 translate-y-6',\n className\n )}\n style={delay ? { transitionDelay: `${delay}ms` } : undefined}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { FadeIn }\nexport type { FadeInProps }\n","export function LumaSpin() {\n return (\n <>\n <style\n dangerouslySetInnerHTML={{\n __html: `\n @keyframes pb-loader {\n 0% { inset: 0 35px 35px 0; }\n 12.5% { inset: 0 35px 0 0; }\n 25% { inset: 35px 35px 0 0; }\n 37.5% { inset: 35px 0 0 0; }\n 50% { inset: 35px 0 0 35px; }\n 62.5% { inset: 0 0 0 35px; }\n 75% { inset: 0 0 35px 35px; }\n 87.5% { inset: 0 0 35px 0; }\n 100% { inset: 0 35px 35px 0; }\n }\n `,\n }}\n />\n <div style={{ position: 'relative', width: 65, aspectRatio: '1' }}>\n <span\n style={{\n position: 'absolute',\n inset: '0 35px 35px 0',\n borderRadius: 50,\n border: '3px solid #B8B9A2',\n animation: 'pb-loader 2.5s infinite',\n }}\n />\n <span\n style={{\n position: 'absolute',\n inset: '0 35px 35px 0',\n borderRadius: 50,\n border: '3px solid #B8B9A2',\n animation: 'pb-loader 2.5s -1.25s infinite',\n }}\n />\n </div>\n </>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport Image from 'next/image'\nimport Link from 'next/link'\nimport { cn } from '../utils/cn'\n\nexport type FooterLinkDef = {\n label: string\n href: string\n external?: boolean\n}\n\nexport type FooterColumnDef = {\n title: string\n links: FooterLinkDef[]\n}\n\nexport type FooterSocialDef = {\n label: string\n href: string\n src: string\n}\n\nexport type FooterProps = {\n columns?: FooterColumnDef[]\n socials?: FooterSocialDef[]\n newsletter?: boolean\n tagline?: string\n showTagline?: boolean\n logoSrc?: string\n logoAlt?: string\n siteName?: string\n creditHref?: string\n creditLabel?: string\n newsletterAction?: (email: string) => void | Promise<void>\n className?: string\n}\n\nconst DEFAULT_SOCIALS: FooterSocialDef[] = [\n {\n label: 'Instagram',\n href: 'https://www.instagram.com/playback_global',\n src: '/assets/instagram.png',\n },\n {\n label: 'YouTube',\n href: 'https://youtube.com/@playback_global',\n src: '/assets/youtube.png',\n },\n {\n label: 'TikTok',\n href: 'https://www.tiktok.com/@playback_global',\n src: '/assets/tiktok.png',\n },\n {\n label: 'LinkedIn',\n href: 'https://www.linkedin.com/company/playbacksports/',\n src: '/assets/linkedin.png',\n },\n]\n\nfunction NewsletterForm({\n onSubmit,\n}: {\n onSubmit?: (email: string) => void | Promise<void>\n}) {\n const [email, setEmail] = React.useState('')\n const [state, setState] = React.useState<'idle' | 'sent' | 'error'>('idle')\n\n const handle = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const ok = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email.trim())\n if (!ok) {\n setState('error')\n return\n }\n try {\n if (onSubmit) await onSubmit(email.trim())\n setState('sent')\n setEmail('')\n } catch {\n setState('error')\n }\n }\n\n return (\n <form\n onSubmit={handle}\n noValidate\n aria-label=\"Subscribe to updates\"\n className=\"w-full max-w-md\"\n >\n <label\n htmlFor=\"footer-newsletter\"\n className=\"block text-[12px] uppercase tracking-[0.14em] text-[rgba(214,213,201,0.44)] mb-3\"\n >\n Stay in the loop\n </label>\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <input\n id=\"footer-newsletter\"\n type=\"email\"\n inputMode=\"email\"\n autoComplete=\"email\"\n required\n value={email}\n onChange={(e) => {\n setEmail(e.target.value)\n if (state !== 'idle') setState('idle')\n }}\n placeholder=\"you@club.com\"\n aria-invalid={state === 'error'}\n aria-describedby=\"footer-newsletter-feedback\"\n className={cn(\n 'flex-1 h-11 rounded-full bg-[var(--surface-1,#0f1512)] border px-4 text-[14px] text-[var(--timberwolf)] placeholder:text-[rgba(214,213,201,0.44)]',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]',\n state === 'error'\n ? 'border-[rgba(237,106,106,0.5)]'\n : 'border-[rgba(214,213,201,0.08)]'\n )}\n />\n <button\n type=\"submit\"\n className=\"inline-flex items-center justify-center h-11 px-5 rounded-full bg-[var(--timberwolf)] text-[var(--night)] text-[14px] font-medium hover:bg-[var(--ash-grey)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]\"\n >\n Subscribe\n </button>\n </div>\n <p\n id=\"footer-newsletter-feedback\"\n className={cn(\n 'mt-2 text-[13px] min-h-[1.25rem]',\n state === 'sent' && 'text-[var(--timberwolf)]',\n state === 'error' && 'text-[rgb(237,106,106)]',\n state === 'idle' && 'text-[rgba(214,213,201,0.44)]'\n )}\n role={state === 'error' ? 'alert' : undefined}\n >\n {state === 'sent' && 'Thanks \\u2014 we\\u2019ll be in touch.'}\n {state === 'error' && 'Please enter a valid email address.'}\n {state === 'idle' && 'Monthly notes on product, network, and matches.'}\n </p>\n </form>\n )\n}\n\nfunction FooterLinkItem({ link }: { link: FooterLinkDef }) {\n const classes =\n 'text-[14px] text-[rgba(214,213,201,0.64)] hover:text-[var(--timberwolf)] transition-colors rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--surface-0,#0a100d)]'\n\n if (link.external) {\n return (\n <a\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={classes}\n >\n {link.label}\n </a>\n )\n }\n\n return (\n <Link href={link.href} className={classes}>\n {link.label}\n </Link>\n )\n}\n\nexport function Footer({\n columns,\n socials = DEFAULT_SOCIALS,\n newsletter = false,\n tagline = 'You PLAY. We BACK.',\n showTagline = true,\n logoSrc = '/branding/PLAYBACK-Text.png',\n logoAlt = 'PLAYBACK',\n siteName = 'PLAYBACK',\n creditHref = 'https://www.braintwopoint0.com',\n creditLabel = 'Built by BRAIN2.0',\n newsletterAction,\n className,\n}: FooterProps = {}) {\n const hasColumns = columns && columns.length > 0\n\n return (\n <footer\n id=\"footer\"\n className={cn(\n 'mt-24 border-t border-[rgba(214,213,201,0.08)] bg-[var(--surface-0,#0a100d)]',\n className\n )}\n aria-labelledby=\"footer-heading\"\n >\n <h2 id=\"footer-heading\" className=\"sr-only\">\n {siteName} site footer\n </h2>\n <div className=\"mx-auto max-w-[1400px] px-6 sm:px-10\">\n <div\n className={cn(\n 'grid grid-cols-1 gap-12 py-16',\n newsletter\n ? 'lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] lg:items-end'\n : ''\n )}\n >\n <div className=\"flex flex-col gap-8\">\n <Link\n href=\"/\"\n className=\"inline-flex items-center gap-3 rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]\"\n aria-label={`${siteName} home`}\n >\n <Image\n src={logoSrc}\n alt={logoAlt}\n width={200}\n height={40}\n className=\"h-7 w-auto\"\n />\n </Link>\n {showTagline && tagline ? (\n <p className=\"font-semibold text-[clamp(28px,3.6vw,44px)] leading-[1.05] tracking-[-0.035em] text-[var(--timberwolf)] max-w-[18ch]\">\n {tagline}\n </p>\n ) : null}\n </div>\n {newsletter ? (\n <div className=\"lg:justify-self-end w-full lg:max-w-md\">\n <NewsletterForm onSubmit={newsletterAction} />\n </div>\n ) : null}\n </div>\n\n {hasColumns ? (\n <div className=\"border-t border-[rgba(214,213,201,0.08)] py-14\">\n <div className=\"grid grid-cols-2 gap-x-6 gap-y-10 md:grid-cols-4\">\n {columns!.map((col) => (\n <nav key={col.title} aria-label={col.title}>\n <p className=\"text-[12px] uppercase tracking-[0.14em] text-[rgba(214,213,201,0.44)] mb-4\">\n {col.title}\n </p>\n <ul className=\"flex flex-col gap-3\">\n {col.links.map((link) => (\n <li key={`${col.title}-${link.label}`}>\n <FooterLinkItem link={link} />\n </li>\n ))}\n </ul>\n </nav>\n ))}\n </div>\n </div>\n ) : null}\n\n <div className=\"border-t border-[rgba(214,213,201,0.08)] py-6 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <ul className=\"flex items-center gap-2\">\n {socials.map(({ label, href, src }) => (\n <li key={label}>\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={`${siteName} on ${label}`}\n className=\"inline-flex items-center justify-center h-9 w-9 rounded-full hover:bg-[var(--surface-1,#0f1512)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]\"\n >\n <Image\n src={src}\n alt=\"\"\n width={20}\n height={20}\n className=\"h-[18px] w-[18px] object-contain opacity-80 hover:opacity-100 transition-opacity\"\n />\n </a>\n </li>\n ))}\n </ul>\n <p className=\"text-[13px] text-[rgba(214,213,201,0.44)] order-last sm:order-none\">\n &copy; {new Date().getFullYear()} {siteName}. All rights reserved.\n </p>\n <a\n href={creditHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-[13px] text-[rgba(214,213,201,0.44)] hover:text-[var(--timberwolf)] transition-colors rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]\"\n >\n {creditLabel}\n </a>\n </div>\n </div>\n </footer>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport Image from 'next/image'\nimport { cn } from '../utils/cn'\n\nexport type FooterSocialLink = {\n label: string\n href: string\n src: string\n}\n\nexport type FooterCreditsBarProps = {\n /**\n * Social links to render on the left. Defaults to the PLAYBACK brand socials.\n * Note: `src` paths are resolved by the consuming app's Next.js static file\n * server, so the assets must exist in the app's /public directory.\n */\n socials?: FooterSocialLink[]\n /**\n * Company name used in the copyright line. Defaults to \"PLAYBACK\".\n */\n companyName?: string\n /**\n * Credit link href. Defaults to BRAIN2.0's homepage.\n */\n creditHref?: string\n /**\n * Show the \"Built by BRAIN2.0\" credit next to the socials. Defaults to true.\n * The credit uses the Averta Semibold + Thin split-weight wordmark for\n * \"BRAIN2.0\". Those @font-face declarations must be loaded by the consuming\n * app's globals.css (AvertaStd-Semibold.ttf + AvertaStd-Thin.ttf).\n */\n showCredit?: boolean\n /**\n * Starting year for the copyright range. Defaults to current year.\n */\n copyrightYear?: number\n /**\n * Additional classes on the outer container.\n */\n className?: string\n}\n\nconst DEFAULT_SOCIALS: FooterSocialLink[] = [\n {\n label: 'Instagram',\n href: 'https://www.instagram.com/playback_global',\n src: '/assets/instagram.png',\n },\n {\n label: 'YouTube',\n href: 'https://youtube.com/@playback_global',\n src: '/assets/youtube.png',\n },\n {\n label: 'TikTok',\n href: 'https://www.tiktok.com/@playback_global',\n src: '/assets/tiktok.png',\n },\n {\n label: 'LinkedIn',\n href: 'https://www.linkedin.com/company/playbacksports/',\n src: '/assets/linkedin.png',\n },\n]\n\n/**\n * Shared footer bottom-bar: social icons + BRAIN2.0 credit on the left,\n * copyright right-aligned on desktop and centered on mobile.\n *\n * Use inside an existing footer container. Provides its own top hairline.\n */\nexport function FooterCreditsBar({\n socials = DEFAULT_SOCIALS,\n companyName = 'PLAYBACK',\n creditHref = 'https://www.braintwopoint0.com',\n showCredit = true,\n copyrightYear,\n className,\n}: FooterCreditsBarProps = {}) {\n const year = copyrightYear ?? new Date().getFullYear()\n\n return (\n <div\n className={cn(\n 'border-t py-6 grid grid-cols-1 gap-4 sm:grid-cols-2 sm:items-center',\n 'border-[rgba(214,213,201,0.08)]',\n className\n )}\n >\n <div className=\"flex items-center gap-4 sm:justify-self-start\">\n <ul className=\"flex items-center gap-2\">\n {socials.map(({ label, href, src }) => (\n <li key={label}>\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={`${companyName} on ${label}`}\n className={cn(\n 'inline-flex items-center justify-center h-10 w-10 rounded-full',\n 'hover:bg-[var(--surface-1,#0f1512)] transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]'\n )}\n >\n <Image\n src={src}\n alt=\"\"\n width={24}\n height={24}\n className=\"h-[22px] w-[22px] object-contain opacity-80 hover:opacity-100 transition-opacity\"\n />\n </a>\n </li>\n ))}\n </ul>\n\n {showCredit ? (\n <>\n <span\n aria-hidden\n className=\"h-5 w-px bg-[rgba(214,213,201,0.16)] flex-shrink-0\"\n />\n <a\n href={creditHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"Built by BRAIN2.0\"\n className={cn(\n 'text-[13px] text-[rgba(214,213,201,0.44)] hover:text-[var(--timberwolf)] transition-colors rounded-sm',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]',\n 'whitespace-nowrap'\n )}\n >\n <span aria-hidden>\n Built by{' '}\n <span style={{ fontFamily: 'AvertaStd-Semibold' }}>\n BRAIN\n <span style={{ fontFamily: 'AvertaStd-Thin' }}>2.0</span>\n </span>\n </span>\n </a>\n </>\n ) : null}\n </div>\n\n <p className=\"text-[13px] text-[rgba(214,213,201,0.44)] text-center sm:text-right sm:justify-self-end\">\n &copy; {year} {companyName}. All rights reserved.\n </p>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport type NewsletterFormProps = {\n /**\n * Endpoint the form POSTs to. Default: /api/newsletter/subscribe.\n * Must accept `{ email, source, website }` and return 200/400/429/500.\n */\n endpoint?: string\n /**\n * Identifier for which surface the signup came from. Server uses this to route\n * into segmentation (e.g. 'footer', 'hero', 'clubs-form').\n */\n source?: string\n /**\n * Optional role hint (parent / player / club / coach / press). Server must allowlist.\n */\n role?: string\n /**\n * Placeholder for the email input.\n */\n placeholder?: string\n /**\n * Accessible label for the form.\n */\n ariaLabel?: string\n /**\n * Submit button label.\n */\n submitLabel?: string\n /**\n * Copy shown while the request is in flight.\n */\n sendingLabel?: string\n /**\n * Optional className on the outer <form>.\n */\n className?: string\n}\n\ntype FormState = 'idle' | 'sending' | 'sent' | 'error' | 'rate_limited'\n\nexport function NewsletterForm({\n endpoint = '/api/newsletter/subscribe',\n source = 'footer',\n role,\n placeholder = 'you@club.com',\n ariaLabel = 'Subscribe to updates',\n submitLabel = 'Subscribe',\n sendingLabel = 'Subscribing\\u2026',\n className,\n}: NewsletterFormProps) {\n const [email, setEmail] = React.useState('')\n const [website, setWebsite] = React.useState('') // honeypot\n const [state, setState] = React.useState<FormState>('idle')\n const inFlight = React.useRef(false)\n\n const onSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (inFlight.current) return\n const trimmed = email.trim()\n const ok = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmed)\n if (!ok) {\n setState('error')\n return\n }\n inFlight.current = true\n setState('sending')\n try {\n const res = await fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n email: trimmed,\n source,\n ...(role ? { role } : {}),\n website,\n }),\n })\n if (res.ok) {\n setState('sent')\n setEmail('')\n } else if (res.status === 429) {\n setState('rate_limited')\n } else {\n setState('error')\n }\n } catch {\n setState('error')\n } finally {\n inFlight.current = false\n }\n }\n\n const feedbackId = React.useId()\n const inputId = React.useId()\n\n return (\n <form\n onSubmit={onSubmit}\n noValidate\n aria-label={ariaLabel}\n className={cn('w-full max-w-md', className)}\n >\n <label htmlFor={inputId} className=\"sr-only\">\n Email address\n </label>\n\n {/* Honeypot — hidden from humans, attractive to bots. */}\n <div\n aria-hidden\n className=\"absolute left-[-10000px] top-auto h-px w-px overflow-hidden\"\n >\n <label htmlFor={`${inputId}-website`}>Website</label>\n <input\n type=\"text\"\n id={`${inputId}-website`}\n name=\"website\"\n tabIndex={-1}\n autoComplete=\"off\"\n value={website}\n onChange={(e) => setWebsite(e.target.value)}\n />\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <input\n id={inputId}\n type=\"email\"\n inputMode=\"email\"\n autoComplete=\"email\"\n required\n disabled={state === 'sending'}\n value={email}\n onChange={(e) => {\n setEmail(e.target.value)\n if (state === 'error' || state === 'rate_limited') setState('idle')\n }}\n placeholder={placeholder}\n aria-invalid={state === 'error'}\n aria-describedby={feedbackId}\n className={cn(\n 'w-full sm:flex-1 h-12 sm:h-11 rounded-full bg-[var(--surface-1,#0f1512)] border px-5 text-[16px] sm:text-[14px] text-[var(--timberwolf)] placeholder:text-[rgba(214,213,201,0.44)]',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]',\n 'disabled:opacity-60',\n state === 'error'\n ? 'border-[rgba(237,106,106,0.5)]'\n : 'border-[rgba(214,213,201,0.08)]'\n )}\n />\n <button\n type=\"submit\"\n disabled={state === 'sending'}\n className=\"inline-flex w-full sm:w-auto items-center justify-center h-12 sm:h-11 px-6 rounded-full bg-[var(--timberwolf)] text-[var(--night)] text-[15px] sm:text-[14px] font-medium hover:bg-[var(--ash-grey)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)] disabled:opacity-60 disabled:cursor-not-allowed\"\n >\n {state === 'sending' ? sendingLabel : submitLabel}\n </button>\n </div>\n\n <p\n id={feedbackId}\n aria-live=\"polite\"\n className={cn(\n 'mt-2 -ml-0.5 text-[13px] min-h-[1.25rem]',\n state === 'sent' && 'text-[var(--timberwolf)]',\n (state === 'error' || state === 'rate_limited') &&\n 'text-[rgb(237,106,106)]',\n (state === 'idle' || state === 'sending') &&\n 'text-[rgba(214,213,201,0.44)]'\n )}\n role={state === 'error' || state === 'rate_limited' ? 'alert' : undefined}\n >\n {state === 'sent' && 'Thanks \\u2014 we\\u2019ll be in touch.'}\n {state === 'error' && 'Please enter a valid email address.'}\n {state === 'rate_limited' &&\n 'Too many attempts. Try again in a minute.'}\n </p>\n </form>\n )\n}\n"],"mappings":"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","names":["React","jsx","cva","jsx","cva","React","cva","jsx","cva","React","jsx","React","jsx","jsxs","React","useMotionTemplate","useMotionValue","motion","jsx","jsxs","useState","motion","useMotionValue","Fragment","jsx","jsxs","AnimatePresence","motion","useState","jsx","jsxs","useState","AnimatePresence","motion","jsx","jsxs","useState","AnimatePresence","motion","useMotionValue","motion","useMotionTemplate","useEffect","useState","jsx","jsxs","React","jsx","React","jsx","className","props","React","jsx","jsxs","formatDate","React","jsx","jsxs","React","CalendarIcon","jsx","jsxs","CalendarIcon","React","Fragment","jsx","jsxs","config","jsx","React","jsx","Separator","React","jsx","React","jsx","React","jsx","CollapsibleTrigger","CollapsibleContent","React","cva","jsx","jsxs","cva","React","jsx","React","jsx","Tooltip","React","jsx","jsx","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","Fragment","jsx","jsxs","React","Image","Link","jsx","jsxs","Link","Image","Image","Fragment","jsx","jsxs","DEFAULT_SOCIALS","Image","React","jsx","jsxs","NewsletterForm"]}
1
+ {"version":3,"sources":["../../src/ui/button.tsx","../../src/utils/cn.ts","../../src/ui/card.tsx","../../src/ui/badge.tsx","../../src/ui/label.tsx","../../src/ui/input.tsx","../../src/ui/dialog.tsx","../../src/ui/select.tsx","../../src/ui/animated-tooltip.tsx","../../src/ui/card-hover-effect.tsx","../../src/ui/flip-words.tsx","../../src/ui/hero-highlight.tsx","../../src/ui/popover.tsx","../../src/ui/calendar.tsx","../../src/ui/date-picker.tsx","../../src/ui/time-picker.tsx","../../src/ui/datetime-picker.tsx","../../src/ui/chart.tsx","../../src/ui/skeleton.tsx","../../src/ui/separator.tsx","../../src/ui/tabs.tsx","../../src/ui/checkbox.tsx","../../src/ui/switch.tsx","../../src/ui/collapsible.tsx","../../src/ui/sheet.tsx","../../src/ui/textarea.tsx","../../src/ui/tooltip.tsx","../../src/ui/avatar.tsx","../../src/ui/page-shell.tsx","../../src/ui/stats-grid.tsx","../../src/ui/section-card.tsx","../../src/ui/empty-state.tsx","../../src/ui/search-bar.tsx","../../src/ui/data-row.tsx","../../src/ui/motion-presets.ts","../../src/ui/fade-in.tsx","../../src/ui/luma-spin.tsx","../../src/ui/footer.tsx","../../src/ui/footer-credits-bar.tsx","../../src/ui/newsletter-form.tsx","../../src/ui/site-footer.tsx","../../src/ui/sign-in-form.tsx","../../src/auth/context.tsx","../../src/supabase/client.ts","../../src/auth/shared.ts","../../src/ui/forgot-password-form.tsx","../../src/ui/reset-password-form.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium cursor-pointer 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',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n outline:\n 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n playback:\n 'relative group/btn bg-gradient-to-br from-[var(--night)] to-[var(--night)] bg-[var(--night)] border border-neutral-400/[0.5] text-white shadow-[0px_1px_0px_0px_var(--zinc-800)_inset,0px_-1px_0px_0px_var(--zinc-800)_inset]',\n },\n size: {\n default: 'h-10 px-4 py-2',\n sm: 'h-9 rounded-md px-3',\n lg: 'h-11 rounded-md px-8',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nfunction BottomGradient() {\n return (\n <>\n <span className=\"group-hover/btn:opacity-100 block transition duration-500 opacity-0 absolute h-px w-full -bottom-px inset-x-0 bg-gradient-to-r from-transparent via-[var(--timberwolf)] to-transparent\" />\n <span className=\"group-hover/btn:opacity-100 blur-sm block transition duration-500 opacity-0 absolute h-px w-1/2 mx-auto -bottom-px inset-x-10 bg-gradient-to-r from-transparent via-[var(--timberwolf)] to-transparent\" />\n </>\n )\n}\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, children, ...props }, ref) => {\n if (asChild) {\n return (\n <Slot\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </Slot>\n )\n }\n return (\n <button\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n {variant === 'playback' && <BottomGradient />}\n </button>\n )\n }\n)\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-lg border bg-card text-card-foreground shadow-sm',\n className\n )}\n {...props}\n />\n))\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-6', className)}\n {...props}\n />\n))\nCardHeader.displayName = 'CardHeader'\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n 'text-2xl font-semibold leading-none tracking-tight',\n className\n )}\n {...props}\n />\n))\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n))\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center p-6 pt-0', className)}\n {...props}\n />\n))\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst badgeVariants = cva(\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',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport * as LabelPrimitive from '@radix-ui/react-label'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { useMotionTemplate, useMotionValue, motion } from 'motion/react'\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n const radius = 100\n const [visible, setVisible] = React.useState(false)\n\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n\n function handleMouseMove({ currentTarget, clientX, clientY }: any) {\n let { left, top } = currentTarget.getBoundingClientRect()\n\n mouseX.set(clientX - left)\n mouseY.set(clientY - top)\n }\n return (\n <motion.div\n style={{\n background: useMotionTemplate`\n radial-gradient(\n ${visible ? radius + 'px' : '0px'} circle at ${mouseX}px ${mouseY}px,\n var(--timberwolf),\n transparent 80%\n )\n `,\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n className=\"p-[2px] rounded-lg transition duration-300 group/input\"\n >\n <input\n type={type}\n className={cn(\n `flex h-10 w-full border-none bg-zinc-800 text-white shadow-input rounded-lg px-3 py-2 text-sm file:border-0 file:bg-transparent\n file:text-sm file:font-medium placeholder:text-neutral-500\n focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600\n disabled:cursor-not-allowed disabled:opacity-50\n shadow-[0px_0px_1px_1px_var(--neutral-700)]\n group-hover/input:shadow-none transition duration-400\n `,\n className\n )}\n ref={ref}\n {...props}\n />\n </motion.div>\n )\n }\n)\nInput.displayName = 'Input'\n\nexport { Input }\n","'use client'\n\nimport * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cn } from '../utils/cn'\nimport { Cross2Icon } from '@radix-ui/react-icons'\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-zinc-800 bg-zinc-950 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',\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-zinc-950 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-zinc-300 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-zinc-800 data-[state=open]:text-zinc-400\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n 'text-lg font-semibold leading-none tracking-tight',\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-zinc-400', className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { cn } from '../utils/cn'\nimport { useMotionTemplate, useMotionValue, motion } from 'motion/react'\n\nconst Select = SelectPrimitive.Root\nconst SelectGroup = SelectPrimitive.Group\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => {\n const radius = 100\n const [visible, setVisible] = React.useState(false)\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n\n function handleMouseMove({ currentTarget, clientX, clientY }: any) {\n let { left, top } = currentTarget.getBoundingClientRect()\n mouseX.set(clientX - left)\n mouseY.set(clientY - top)\n }\n\n return (\n <motion.div\n style={{\n background: useMotionTemplate`\n radial-gradient(\n ${visible ? radius + 'px' : '0px'} circle at ${mouseX}px ${mouseY}px,\n var(--timberwolf),\n transparent 80%\n )\n `,\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n className=\"p-[2px] rounded-lg transition duration-300 group/input\"\n >\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-10 w-full items-center justify-between whitespace-nowrap rounded-md bg-zinc-800 text-white px-3 py-2 text-sm border-none shadow-[0px_0px_1px_1px_var(--neutral-700)] group-hover/input:shadow-none transition duration-400 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <svg\n className=\"h-4 w-4 opacity-50\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n </motion.div>\n )\n})\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m18 15-6-6-6 6\" />\n </svg>\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-neutral-700 bg-zinc-800 text-white 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',\n position === 'popper' &&\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',\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-white/10 focus:text-white data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-neutral-700', className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-sm font-semibold', className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","'use client'\n\nimport React, { useState } from 'react'\nimport {\n motion,\n useTransform,\n AnimatePresence,\n useMotionValue,\n useSpring,\n} from 'motion/react'\n\nexport const AnimatedTooltip = ({\n items,\n}: {\n items: {\n id: number\n name: string\n designation: string\n image: string\n }[]\n}) => {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n const springConfig = { stiffness: 100, damping: 5 }\n const x = useMotionValue(0)\n const rotate = useSpring(\n useTransform(x, [-100, 100], [-45, 45]),\n springConfig\n )\n const translateX = useSpring(\n useTransform(x, [-100, 100], [-50, 50]),\n springConfig\n )\n const handleMouseMove = (event: any) => {\n const halfWidth = event.target.offsetWidth / 2\n x.set(event.nativeEvent.offsetX - halfWidth)\n }\n\n return (\n <>\n {items.map((item, idx) => (\n <div\n className=\"-mr-4 relative group\"\n key={item.name}\n onMouseEnter={() => setHoveredIndex(item.id)}\n onMouseLeave={() => setHoveredIndex(null)}\n >\n {hoveredIndex === item.id && (\n <motion.div\n initial={{ opacity: 0, y: 20, scale: 0.6 }}\n animate={{\n opacity: 1,\n y: 0,\n scale: 1,\n transition: {\n type: 'spring',\n stiffness: 260,\n damping: 10,\n },\n }}\n exit={{ opacity: 0, y: 20, scale: 0.6 }}\n style={{\n translateX: translateX,\n rotate: rotate,\n whiteSpace: 'nowrap',\n }}\n className=\"absolute -top-16 -left-1/2 translate-x-1/2 flex text-xs flex-col items-center justify-center rounded-md bg-black z-50 shadow-xl px-4 py-2\"\n >\n <div className=\"absolute inset-x-10 z-30 w-[20%] -bottom-px bg-gradient-to-r from-transparent via-emerald-500 to-transparent h-px \" />\n <div className=\"absolute left-10 w-[40%] z-30 -bottom-px bg-gradient-to-r from-transparent via-sky-500 to-transparent h-px \" />\n <div className=\"font-bold text-white relative z-30 text-base\">\n {item.name}\n </div>\n <div className=\"text-white text-xs\">{item.designation}</div>\n </motion.div>\n )}\n <img\n onMouseMove={handleMouseMove}\n height={100}\n width={100}\n src={item.image}\n alt={item.name}\n className=\"object-cover !m-0 !p-0 object-top rounded-full h-16 w-16 border-2 group-hover:scale-105 group-hover:z-30 border-[var(--ash-grey)] relative transition duration-500\"\n />\n </div>\n ))}\n </>\n )\n}\n","'use client'\n\nimport { cn } from '../utils/cn'\nimport { AnimatePresence, motion } from 'motion/react'\nimport Link from 'next/link'\nimport { useState } from 'react'\n\nexport const HoverEffect = ({\n items,\n className,\n}: {\n items: {\n title: string\n description: string\n link: string\n logoUrl: string\n }[]\n className?: string\n}) => {\n let [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n\n return (\n <div\n className={cn(\n 'flex flex-wrap justify-center items-center pb-10',\n className\n )}\n >\n {items.map((item, idx) => (\n <Link\n href={item?.link}\n key={item?.link}\n className=\"relative group block p-2 h-72 w-80\"\n onMouseEnter={() => setHoveredIndex(idx)}\n onMouseLeave={() => setHoveredIndex(null)}\n >\n <AnimatePresence>\n {hoveredIndex === idx && (\n <motion.span\n className=\"absolute inset-0 h-full w-full bg-neutral-400/[0.5] block rounded-3xl\"\n layoutId=\"hoverBackground\"\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n transition: { duration: 0.15 },\n }}\n exit={{\n opacity: 0,\n transition: { duration: 0.15, delay: 0.2 },\n }}\n />\n )}\n </AnimatePresence>\n <HoverCard logoUrl={item.logoUrl}>\n <HoverCardTitle>{item.title}</HoverCardTitle>\n <HoverCardDescription>{item.description}</HoverCardDescription>\n </HoverCard>\n </Link>\n ))}\n </div>\n )\n}\n\nexport const HoverCard = ({\n className,\n children,\n logoUrl,\n}: {\n className?: string\n children: React.ReactNode\n logoUrl: string\n}) => {\n return (\n <div\n className={cn(\n 'rounded-2xl h-full w-full p-4 overflow-hidden bg-black border border-white/[0.2] group-hover:border-[var(--timberwolf)] relative z-20',\n className\n )}\n >\n <div\n className=\"absolute bottom-[-3rem] left-[-5rem] h-56 w-56 opacity-50\"\n style={{\n backgroundImage: `url(${logoUrl})`,\n backgroundPosition: 'bottom left',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n maskImage: 'linear-gradient(to bottom left, transparent, black)',\n }}\n />\n <div className=\"relative z-50\">\n <div className=\"p-4\">{children}</div>\n </div>\n </div>\n )\n}\nexport const HoverCardTitle = ({\n className,\n children,\n}: {\n className?: string\n children: React.ReactNode\n}) => {\n return (\n <h4 className={cn('text-zinc-100 font-bold tracking-wide mt-4', className)}>\n {children}\n </h4>\n )\n}\nexport const HoverCardDescription = ({\n className,\n children,\n}: {\n className?: string\n children: React.ReactNode\n}) => {\n return (\n <p\n className={cn(\n 'mt-8 text-zinc-400 tracking-wide leading-relaxed text-sm',\n className\n )}\n >\n {children}\n </p>\n )\n}\n","'use client'\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { AnimatePresence, motion, LayoutGroup } from 'motion/react'\nimport { cn } from '../utils/cn'\n\nexport const FlipWords = ({\n words,\n duration = 3000,\n className,\n}: {\n words: string[]\n duration?: number\n className?: string\n}) => {\n const [currentWord, setCurrentWord] = useState(words[0])\n const [isAnimating, setIsAnimating] = useState<boolean>(false)\n\n const startAnimation = useCallback(() => {\n const word = words[words.indexOf(currentWord) + 1] || words[0]\n setCurrentWord(word)\n setIsAnimating(true)\n }, [currentWord, words])\n\n useEffect(() => {\n if (!isAnimating)\n setTimeout(() => {\n startAnimation()\n }, duration)\n }, [isAnimating, duration, startAnimation])\n\n return (\n <AnimatePresence\n onExitComplete={() => {\n setIsAnimating(false)\n }}\n >\n <motion.div\n initial={{\n opacity: 0,\n y: 10,\n }}\n animate={{\n opacity: 1,\n y: 0,\n }}\n transition={{\n type: 'spring',\n stiffness: 100,\n damping: 10,\n }}\n exit={{\n opacity: 0,\n y: -40,\n x: 40,\n filter: 'blur(8px)',\n scale: 2,\n position: 'absolute',\n }}\n className={cn(\n 'z-10 inline-block relative text-left text-neutral-100 px-2',\n className\n )}\n key={currentWord}\n >\n {currentWord.split(' ').map((word, wordIndex) => (\n <motion.span\n key={word + wordIndex}\n initial={{ opacity: 0, y: 10, filter: 'blur(8px)' }}\n animate={{ opacity: 1, y: 0, filter: 'blur(0px)' }}\n transition={{\n delay: wordIndex * 0.3,\n duration: 0.3,\n }}\n className=\"inline-block whitespace-nowrap\"\n >\n {word.split('').map((letter, letterIndex) => (\n <motion.span\n key={word + letterIndex}\n initial={{ opacity: 0, y: 10, filter: 'blur(8px)' }}\n animate={{ opacity: 1, y: 0, filter: 'blur(0px)' }}\n transition={{\n delay: wordIndex * 0.3 + letterIndex * 0.05,\n duration: 0.2,\n }}\n className=\"inline-block\"\n >\n {letter}\n </motion.span>\n ))}\n <span className=\"inline-block\">&nbsp;</span>\n </motion.span>\n ))}\n </motion.div>\n </AnimatePresence>\n )\n}\n","'use client'\n\nimport { cn } from '../utils/cn'\nimport {\n useMotionValue,\n motion,\n useMotionTemplate,\n animate,\n} from 'motion/react'\nimport React, { useEffect, useState } from 'react'\n\nexport const HeroHighlight = ({\n children,\n className,\n containerClassName,\n}: {\n children: React.ReactNode\n className?: string\n containerClassName?: string\n}) => {\n let mouseX = useMotionValue(0)\n let mouseY = useMotionValue(0)\n const [isHoverable, setIsHoverable] = useState(false)\n\n useEffect(() => {\n const mediaQuery = window.matchMedia('(pointer: fine)')\n setIsHoverable(mediaQuery.matches)\n\n const handleChange = (e: MediaQueryListEvent) => {\n setIsHoverable(e.matches)\n }\n\n mediaQuery.addEventListener('change', handleChange)\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange)\n }\n }, [])\n\n useEffect(() => {\n if (!isHoverable) {\n const updatePosition = () => {\n const randomX = Math.random() * window.innerWidth\n const randomY = Math.random() * window.innerHeight\n animate(mouseX, randomX, { duration: 2 })\n animate(mouseY, randomY, { duration: 2 })\n }\n\n const interval = setInterval(updatePosition, 2000)\n updatePosition()\n\n return () => clearInterval(interval)\n }\n }, [isHoverable, mouseX, mouseY])\n\n const handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!isHoverable || !event.currentTarget) return\n const { left, top } = event.currentTarget.getBoundingClientRect()\n mouseX.set(event.clientX - left)\n mouseY.set(event.clientY - top)\n }\n\n return (\n <div\n className={cn(\n 'relative h-[40rem] flex items-center bg-[var(--night)] justify-center w-full group',\n containerClassName\n )}\n onMouseMove={handleMouseMove}\n >\n <div className=\"absolute inset-0 bg-dot-thick-neutral-800 pointer-events-none\" />\n <motion.div\n className=\"pointer-events-none bg-dot-thick-gray-100 absolute inset-0 opacity-0 transition duration-300 group-hover:opacity-100\"\n style={{\n WebkitMaskImage: useMotionTemplate`\n radial-gradient(\n 200px circle at ${mouseX}px ${mouseY}px,\n black 0%,\n transparent 100%\n )\n `,\n maskImage: useMotionTemplate`\n radial-gradient(\n 200px circle at ${mouseX}px ${mouseY}px,\n black 0%,\n transparent 100%\n )\n `,\n }}\n />\n\n <div className={cn('relative z-20', className)}>{children}</div>\n </div>\n )\n}\n\nexport const Highlight = ({\n children,\n className,\n}: {\n children: React.ReactNode\n className?: string\n}) => {\n return (\n <motion.span\n initial={{\n backgroundSize: '0% 100%',\n }}\n animate={{\n backgroundSize: '100% 100%',\n }}\n transition={{\n duration: 2,\n ease: 'linear',\n delay: 0.5,\n }}\n style={{\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'left center',\n display: 'inline',\n }}\n className={cn(\n `relative inline-block pb-1 px-1 rounded-lg bg-gradient-to-r from-[var(--ash-grey)] to-[var(--timberwolf)]`,\n className\n )}\n >\n {children}\n </motion.span>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\n\nimport { cn } from '../utils/cn'\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-72 rounded-md border border-zinc-800 bg-zinc-950 p-4 text-zinc-50 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 origin-[--radix-popover-content-transform-origin]',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","'use client'\n\nimport * as React from 'react'\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from 'lucide-react'\nimport { DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker'\n\nimport { cn } from '../utils/cn'\nimport { Button, buttonVariants } from './button'\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant']\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-zinc-950 group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn(\n 'relative flex flex-col gap-4 md:flex-row',\n defaultClassNames.months\n ),\n month: cn('flex w-full flex-col gap-4', defaultClassNames.month),\n nav: cn(\n 'absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1',\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50',\n defaultClassNames.button_next\n ),\n month_caption: cn(\n 'flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]',\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n 'flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium',\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n 'has-focus:border-zinc-300 border-zinc-800 shadow-xs has-focus:ring-zinc-300/50 has-focus:ring-[3px] relative rounded-md border',\n defaultClassNames.dropdown_root\n ),\n dropdown: cn('absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : '[&>svg]:text-zinc-400 flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5',\n defaultClassNames.caption_label\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'text-zinc-400 flex-1 select-none rounded-md text-[0.8rem] font-normal',\n defaultClassNames.weekday\n ),\n week: cn('mt-2 flex w-full', defaultClassNames.week),\n week_number_header: cn(\n 'w-[--cell-size] select-none',\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n 'text-zinc-400 select-none text-[0.8rem]',\n defaultClassNames.week_number\n ),\n day: cn(\n 'group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md',\n defaultClassNames.day\n ),\n range_start: cn(\n 'bg-zinc-800 rounded-l-md',\n defaultClassNames.range_start\n ),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('bg-zinc-800 rounded-r-md', defaultClassNames.range_end),\n today: cn(\n 'bg-zinc-800 text-zinc-50 rounded-md data-[selected=true]:rounded-none',\n defaultClassNames.today\n ),\n outside: cn(\n 'text-zinc-400 aria-selected:text-zinc-400',\n defaultClassNames.outside\n ),\n disabled: cn('text-zinc-400 opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <ChevronLeftIcon className={cn('size-4', className)} {...props} />\n )\n }\n\n if (orientation === 'right') {\n return (\n <ChevronRightIcon\n className={cn('size-4', className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn('size-4', className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-[--cell-size] items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-zinc-50 data-[selected-single=true]:text-zinc-900 data-[range-middle=true]:bg-zinc-800 data-[range-middle=true]:text-zinc-50 data-[range-start=true]:bg-zinc-50 data-[range-start=true]:text-zinc-900 data-[range-end=true]:bg-zinc-50 data-[range-end=true]:text-zinc-900 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","'use client'\n\nimport * as React from 'react'\nimport { CalendarIcon } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from './popover'\n\ninterface DatePickerProps {\n value: string\n onChange: (value: string) => void\n min?: string\n max?: string\n className?: string\n id?: string\n placeholder?: string\n}\n\nexport function DatePicker({\n value,\n onChange,\n min,\n max,\n className,\n id,\n placeholder = 'Pick a date',\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n\n // Convert string value to Date object (ensure consistent timezone handling)\n const selectedDate = value ? new Date(value + 'T00:00:00') : undefined\n\n // Convert min string to Date object (ensure consistent timezone handling)\n const minDate = min ? new Date(min + 'T00:00:00') : undefined\n\n // Convert max string to Date object (ensure consistent timezone handling)\n const maxDate = max ? new Date(max + 'T00:00:00') : undefined\n\n const formatDate = (date: Date) => {\n return date.toLocaleDateString('en-GB', {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n })\n }\n\n const handleDateSelect = (date: Date | undefined) => {\n if (date) {\n // Convert Date back to YYYY-MM-DD string format\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n onChange(`${year}-${month}-${day}`)\n setOpen(false)\n }\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n className={cn(\n 'w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm',\n 'focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600',\n 'shadow-[0px_0px_1px_1px_var(--neutral-700)]',\n 'hover:shadow-none transition duration-400',\n !selectedDate && 'text-neutral-400',\n className\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {selectedDate ? formatDate(selectedDate) : <span>{placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n disabled={(date) => {\n // Compare dates by normalizing to start of day\n const dateAtMidnight = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n )\n\n // Check min date\n if (minDate) {\n const minDateAtMidnight = new Date(\n minDate.getFullYear(),\n minDate.getMonth(),\n minDate.getDate()\n )\n if (dateAtMidnight < minDateAtMidnight) return true\n }\n\n // Check max date\n if (maxDate) {\n const maxDateAtMidnight = new Date(\n maxDate.getFullYear(),\n maxDate.getMonth(),\n maxDate.getDate()\n )\n if (dateAtMidnight > maxDateAtMidnight) return true\n }\n\n return false\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Button } from './button'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from './popover'\nimport { cn } from '../utils/cn'\nimport { ClockIcon } from 'lucide-react'\n\ninterface TimePickerProps {\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n min?: string\n max?: string\n}\n\nexport function TimePicker({\n value,\n onChange,\n placeholder = 'Select time',\n className,\n disabled = false,\n min,\n max,\n}: TimePickerProps) {\n const [open, setOpen] = React.useState(false)\n const [hours, setHours] = React.useState(\n value ? parseInt(value.split(':')[0]) : 9\n )\n const [minutes, setMinutes] = React.useState(\n value ? parseInt(value.split(':')[1]) : 0\n )\n\n const formatTime = (h: number, m: number) => {\n return `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}`\n }\n\n const handleTimeSelect = (h: number, m: number) => {\n const timeString = formatTime(h, m)\n setHours(h)\n setMinutes(m)\n onChange?.(timeString)\n setOpen(false)\n }\n\n const generateTimeOptions = () => {\n const options = []\n for (let h = 6; h <= 23; h++) {\n for (let m = 0; m < 60; m += 15) {\n const timeString = formatTime(h, m)\n\n // Check against min/max constraints\n if (min && timeString < min) continue\n if (max && timeString > max) continue\n\n options.push({ hours: h, minutes: m, display: timeString })\n }\n }\n return options\n }\n\n const timeOptions = generateTimeOptions()\n const displayValue = value || ''\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n 'w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm',\n 'focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600',\n 'shadow-[0px_0px_1px_1px_var(--neutral-700)]',\n 'hover:shadow-none transition duration-400',\n !value && 'text-neutral-400',\n className\n )}\n disabled={disabled}\n >\n <ClockIcon className=\"mr-2 h-4 w-4\" />\n {displayValue || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"max-h-60 overflow-y-auto\">\n <div className=\"grid grid-cols-1 gap-1 p-2\">\n {timeOptions.map(({ hours: h, minutes: m, display }) => (\n <Button\n key={display}\n variant={value === display ? 'default' : 'ghost'}\n className=\"justify-start text-left h-8 text-sm\"\n onClick={() => handleTimeSelect(h, m)}\n >\n {display}\n </Button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { CalendarIcon } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\nimport { Button } from './button'\nimport { Calendar } from './calendar'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from './popover'\n\ninterface DateTimePickerProps {\n value: string // YYYY-MM-DDTHH:mm\n onChange: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n required?: boolean\n}\n\nexport function DateTimePicker({\n value,\n onChange,\n placeholder = 'Pick date & time',\n className,\n disabled = false,\n required = false,\n}: DateTimePickerProps) {\n const [open, setOpen] = React.useState(false)\n const hourRef = React.useRef<HTMLDivElement>(null)\n const minuteRef = React.useRef<HTMLDivElement>(null)\n\n // Parse value into date and time parts\n const datePart = value ? value.split('T')[0] : ''\n const timePart = value ? value.split('T')[1] || '' : ''\n const selectedHour = timePart ? parseInt(timePart.split(':')[0]) : -1\n const selectedMinute = timePart ? parseInt(timePart.split(':')[1]) : -1\n const selectedDate = datePart ? new Date(datePart + 'T00:00:00') : undefined\n\n const formatDisplay = (val: string) => {\n if (!val) return ''\n const [d, t] = val.split('T')\n if (!d) return ''\n const date = new Date(d + 'T00:00:00')\n const dateStr = date.toLocaleDateString('en-GB', {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n })\n if (!t) return dateStr\n return `${dateStr}, ${t}`\n }\n\n const buildValue = (date: string, hour: number, minute: number) => {\n const h = hour.toString().padStart(2, '0')\n const m = minute.toString().padStart(2, '0')\n return `${date}T${h}:${m}`\n }\n\n const handleDateSelect = (date: Date | undefined) => {\n if (!date) return\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const newDate = `${year}-${month}-${day}`\n\n // Keep existing time, default to 12:00 if none set\n const h = selectedHour >= 0 ? selectedHour : 12\n const m = selectedMinute >= 0 ? selectedMinute : 0\n onChange(buildValue(newDate, h, m))\n }\n\n const handleHourSelect = (h: number) => {\n if (!datePart) {\n // Auto-pick today if no date selected\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n const m = selectedMinute >= 0 ? selectedMinute : 0\n onChange(buildValue(`${year}-${month}-${day}`, h, m))\n } else {\n const m = selectedMinute >= 0 ? selectedMinute : 0\n onChange(buildValue(datePart, h, m))\n }\n }\n\n const handleMinuteSelect = (m: number) => {\n if (!datePart) {\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n const h = selectedHour >= 0 ? selectedHour : 12\n onChange(buildValue(`${year}-${month}-${day}`, h, m))\n } else {\n const h = selectedHour >= 0 ? selectedHour : 12\n onChange(buildValue(datePart, h, m))\n }\n }\n\n // Scroll to selected hour/minute when popover opens\n React.useEffect(() => {\n if (open) {\n setTimeout(() => {\n if (hourRef.current && selectedHour >= 0) {\n const el = hourRef.current.querySelector(`[data-hour=\"${selectedHour}\"]`)\n el?.scrollIntoView({ block: 'center' })\n }\n if (minuteRef.current && selectedMinute >= 0) {\n const el = minuteRef.current.querySelector(`[data-minute=\"${selectedMinute}\"]`)\n el?.scrollIntoView({ block: 'center' })\n }\n }, 50)\n }\n }, [open, selectedHour, selectedMinute])\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n 'w-full justify-start text-left font-normal h-10 bg-zinc-800 border-none text-white shadow-input rounded-md px-3 py-2 text-sm',\n 'focus-visible:outline-none focus-visible:ring-[2px] focus-visible:ring-neutral-600',\n 'shadow-[0px_0px_1px_1px_var(--neutral-700)]',\n 'hover:shadow-none transition duration-400',\n !value && 'text-neutral-400',\n className\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4 shrink-0\" />\n {value ? formatDisplay(value) : <span>{placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {/* Calendar */}\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleDateSelect}\n initialFocus\n />\n\n {/* Time selectors */}\n <div className=\"flex border-l border-zinc-800\">\n {/* Hours */}\n <div\n ref={hourRef}\n className=\"h-[280px] w-16 overflow-y-auto p-1\"\n >\n <div className=\"px-1 py-1.5 text-center text-xs text-zinc-400 font-medium\">\n Hr\n </div>\n {Array.from({ length: 24 }, (_, i) => (\n <button\n key={i}\n data-hour={i}\n type=\"button\"\n onClick={() => handleHourSelect(i)}\n className={cn(\n 'w-full rounded-md px-2 py-1.5 text-sm text-center cursor-pointer transition-colors',\n selectedHour === i\n ? 'bg-zinc-50 text-zinc-900 font-medium'\n : 'text-zinc-300 hover:bg-zinc-800'\n )}\n >\n {i.toString().padStart(2, '0')}\n </button>\n ))}\n </div>\n\n {/* Minutes */}\n <div\n ref={minuteRef}\n className=\"h-[280px] w-16 overflow-y-auto border-l border-zinc-800 p-1\"\n >\n <div className=\"px-1 py-1.5 text-center text-xs text-zinc-400 font-medium\">\n Min\n </div>\n {Array.from({ length: 12 }, (_, i) => i * 5).map((m) => (\n <button\n key={m}\n data-minute={m}\n type=\"button\"\n onClick={() => handleMinuteSelect(m)}\n className={cn(\n 'w-full rounded-md px-2 py-1.5 text-sm text-center cursor-pointer transition-colors',\n selectedMinute === m\n ? 'bg-zinc-50 text-zinc-900 font-medium'\n : 'text-zinc-300 hover:bg-zinc-800'\n )}\n >\n {m.toString().padStart(2, '0')}\n </button>\n ))}\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../utils\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-[var(--ash-grey)]/20 bg-[#1a1f1c] px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px]\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n backgroundColor: indicatorColor,\n borderColor: indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-[var(--ash-grey)]\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-[var(--timberwolf)] font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 text-[var(--ash-grey)]\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","import { cn } from '../utils/cn'\n\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-muted', className)} {...props} />\n}\n\nexport { Skeleton }\n","'use client'\n\nimport * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { cn } from '../utils/cn'\n\nconst Separator = React.forwardRef<\n React.ComponentRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className\n )}\n {...props}\n />\n))\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","'use client'\n\nimport * as React from 'react'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cn } from '../utils/cn'\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground',\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","'use client'\n\nimport * as React from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { cn } from '../utils/cn'\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className={cn('flex items-center justify-center text-current')}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-3.5 w-3.5\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","'use client'\n\nimport * as React from 'react'\nimport * as SwitchPrimitives from '@radix-ui/react-switch'\nimport { cn } from '../utils/cn'\n\nconst Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","'use client'\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible'\n\nconst Collapsible = CollapsiblePrimitive.Root\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","'use client'\n\nimport * as React from 'react'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../utils/cn'\n\nconst Sheet = SheetPrimitive.Root\nconst SheetTrigger = SheetPrimitive.Trigger\nconst SheetClose = SheetPrimitive.Close\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\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',\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n 'fixed z-50 gap-4 bg-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',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = 'right', className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.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-secondary\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n)\nSheetHeader.displayName = 'SheetHeader'\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n)\nSheetFooter.displayName = 'SheetFooter'\n\nconst SheetTitle = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = 'Textarea'\n\nexport { Textarea }\n","'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cn } from '../utils/cn'\n\nconst TooltipProvider = TooltipPrimitive.Provider\nconst Tooltip = TooltipPrimitive.Root\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ComponentRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden 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',\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","'use client'\n\nimport * as React from 'react'\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\nimport { cn } from '../utils/cn'\n\nconst Avatar = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn('aspect-square h-full w-full', className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ComponentRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n 'flex h-full w-full items-center justify-center rounded-full bg-muted',\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface PageShellProps extends React.HTMLAttributes<HTMLDivElement> {\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'\n}\n\nconst maxWidthClasses = {\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n '2xl': 'max-w-screen-2xl',\n full: 'max-w-full',\n}\n\nfunction PageShell({ maxWidth = 'xl', className, children, ...props }: PageShellProps) {\n return (\n <div\n className={cn(\n 'min-h-screen bg-[var(--night)] text-[var(--timberwolf)]',\n className\n )}\n {...props}\n >\n <div className={cn('mx-auto w-full px-4 py-6 sm:px-6 lg:px-8', maxWidthClasses[maxWidth])}>\n {children}\n </div>\n </div>\n )\n}\n\nexport { PageShell }\nexport type { PageShellProps }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface StatItem {\n label: string\n value: string | number\n color?: 'default' | 'green' | 'yellow' | 'red' | 'blue'\n alert?: boolean\n}\n\ninterface StatsGridProps extends React.HTMLAttributes<HTMLDivElement> {\n stats: StatItem[]\n columns?: 2 | 3 | 4 | 6\n}\n\nconst colorClasses: Record<string, string> = {\n default: 'text-[var(--timberwolf)]',\n green: 'text-emerald-400',\n yellow: 'text-amber-400',\n red: 'text-red-400',\n blue: 'text-sky-400',\n}\n\nconst columnClasses = {\n 2: 'grid-cols-2',\n 3: 'grid-cols-2 sm:grid-cols-3',\n 4: 'grid-cols-2 sm:grid-cols-4',\n 6: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6',\n}\n\nfunction StatsGrid({ stats, columns = 4, className, ...props }: StatsGridProps) {\n return (\n <div className={cn('grid gap-3', columnClasses[columns], className)} {...props}>\n {stats.map((stat) => (\n <div\n key={stat.label}\n className={cn(\n 'rounded-lg border border-[var(--border)] bg-card p-4',\n stat.alert && 'border-red-500/50'\n )}\n >\n <p className=\"text-xs text-muted-foreground\">{stat.label}</p>\n <p\n className={cn(\n 'mt-1 text-2xl font-semibold',\n colorClasses[stat.color || 'default']\n )}\n >\n {stat.value}\n </p>\n </div>\n ))}\n </div>\n )\n}\n\nexport { StatsGrid }\nexport type { StatsGridProps, StatItem }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface SectionCardProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode\n title: string\n count?: number\n defaultOpen?: boolean\n collapsible?: boolean\n}\n\nfunction SectionCard({\n icon,\n title,\n count,\n defaultOpen = true,\n collapsible = true,\n className,\n children,\n ...props\n}: SectionCardProps) {\n const [open, setOpen] = React.useState(defaultOpen)\n\n return (\n <div\n className={cn('rounded-lg border border-[var(--border)] bg-card', className)}\n {...props}\n >\n <button\n type=\"button\"\n onClick={() => collapsible && setOpen(!open)}\n className={cn(\n 'flex w-full items-center gap-3 p-4 text-left',\n collapsible && 'cursor-pointer hover:bg-muted/50'\n )}\n >\n {icon && <span className=\"text-muted-foreground\">{icon}</span>}\n <span className=\"flex-1 text-sm font-medium text-[var(--timberwolf)]\">{title}</span>\n {count !== undefined && (\n <span className=\"rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground\">\n {count}\n </span>\n )}\n {collapsible && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\n 'text-muted-foreground transition-transform duration-200',\n open && 'rotate-180'\n )}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n )}\n </button>\n {open && <div className=\"border-t border-[var(--border)] p-4\">{children}</div>}\n </div>\n )\n}\n\nexport { SectionCard }\nexport type { SectionCardProps }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: React.ReactNode\n title: string\n description?: string\n action?: React.ReactNode\n}\n\nfunction EmptyState({ icon, title, description, action, className, ...props }: EmptyStateProps) {\n return (\n <div\n className={cn('flex flex-col items-center justify-center py-12 text-center', className)}\n {...props}\n >\n {icon && <div className=\"mb-4 text-muted-foreground\">{icon}</div>}\n <h3 className=\"text-lg font-medium text-[var(--timberwolf)]\">{title}</h3>\n {description && (\n <p className=\"mt-1 max-w-sm text-sm text-muted-foreground\">{description}</p>\n )}\n {action && <div className=\"mt-4\">{action}</div>}\n </div>\n )\n}\n\nexport { EmptyState }\nexport type { EmptyStateProps }\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface SearchBarProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n value: string\n onChange: (value: string) => void\n onClear?: () => void\n}\n\nfunction SearchBar({ value, onChange, onClear, className, placeholder = 'Search...', ...props }: SearchBarProps) {\n return (\n <div className={cn('relative', className)}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n <input\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n className=\"h-10 w-full rounded-md border border-input bg-background pl-9 pr-9 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n {...props}\n />\n {value && (\n <button\n type=\"button\"\n onClick={() => {\n onChange('')\n onClear?.()\n }}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n )}\n </div>\n )\n}\n\nexport { SearchBar }\nexport type { SearchBarProps }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface DataRowProps extends React.HTMLAttributes<HTMLDivElement> {\n status?: 'green' | 'yellow' | 'red' | 'gray'\n primary: string\n secondary?: string\n trailing?: React.ReactNode\n}\n\nconst statusColors: Record<string, string> = {\n green: 'bg-emerald-400',\n yellow: 'bg-amber-400',\n red: 'bg-red-400',\n gray: 'bg-zinc-500',\n}\n\nfunction DataRow({ status, primary, secondary, trailing, className, ...props }: DataRowProps) {\n return (\n <div\n className={cn(\n 'flex items-center gap-3 rounded-md px-3 py-2.5 hover:bg-muted/50 transition-colors',\n className\n )}\n {...props}\n >\n {status && (\n <span className={cn('h-2 w-2 shrink-0 rounded-full', statusColors[status])} />\n )}\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm text-[var(--timberwolf)]\">{primary}</p>\n {secondary && (\n <p className=\"truncate text-xs text-muted-foreground\">{secondary}</p>\n )}\n </div>\n {trailing && <div className=\"shrink-0\">{trailing}</div>}\n </div>\n )\n}\n\nexport { DataRow }\nexport type { DataRowProps }\n","// Plain motion preset objects for use with framer-motion / motion\n// Usage: <motion.div {...fadeInUp} />\n\nexport const fadeInUp = {\n initial: { opacity: 0, y: 20 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.4, ease: [0.25, 0.46, 0.45, 0.94] },\n}\n\nexport const fadeInDown = {\n initial: { opacity: 0, y: -20 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.4, ease: [0.25, 0.46, 0.45, 0.94] },\n}\n\nexport const staggerContainer = {\n initial: {},\n animate: { transition: { staggerChildren: 0.06 } },\n}\n\nexport const staggerItem = {\n initial: { opacity: 0, y: 12 },\n animate: { opacity: 1, y: 0, transition: { duration: 0.3 } },\n}\n\nexport const pageTransition = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.25 },\n}\n\nexport const hoverScale = {\n whileHover: { scale: 1.02 },\n whileTap: { scale: 0.98 },\n transition: { type: 'spring', stiffness: 400, damping: 25 },\n}\n\nexport const hoverLift = {\n whileHover: { y: -2 },\n transition: { type: 'spring', stiffness: 400, damping: 25 },\n}\n\nexport const springBounce = {\n type: 'spring' as const,\n stiffness: 300,\n damping: 20,\n}\n\nexport const easeSmooth = [0.25, 0.46, 0.45, 0.94] as const\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ninterface FadeInProps extends React.HTMLAttributes<HTMLDivElement> {\n delay?: number\n direction?: 'up' | 'left'\n}\n\nfunction FadeIn({ children, className, delay = 0, direction = 'up', ...props }: FadeInProps) {\n const ref = React.useRef<HTMLDivElement>(null)\n const [visible, setVisible] = React.useState(false)\n\n React.useEffect(() => {\n const el = ref.current\n if (!el) return\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisible(true)\n observer.disconnect()\n }\n },\n { threshold: 0.1 }\n )\n observer.observe(el)\n return () => observer.disconnect()\n }, [])\n\n return (\n <div\n ref={ref}\n className={cn(\n 'transition-all duration-500 ease-out',\n visible\n ? 'opacity-100 translate-y-0 translate-x-0'\n : direction === 'left'\n ? 'opacity-0 -translate-x-5'\n : 'opacity-0 translate-y-6',\n className\n )}\n style={delay ? { transitionDelay: `${delay}ms` } : undefined}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { FadeIn }\nexport type { FadeInProps }\n","export function LumaSpin() {\n return (\n <>\n <style\n dangerouslySetInnerHTML={{\n __html: `\n @keyframes pb-loader {\n 0% { inset: 0 35px 35px 0; }\n 12.5% { inset: 0 35px 0 0; }\n 25% { inset: 35px 35px 0 0; }\n 37.5% { inset: 35px 0 0 0; }\n 50% { inset: 35px 0 0 35px; }\n 62.5% { inset: 0 0 0 35px; }\n 75% { inset: 0 0 35px 35px; }\n 87.5% { inset: 0 0 35px 0; }\n 100% { inset: 0 35px 35px 0; }\n }\n `,\n }}\n />\n <div style={{ position: 'relative', width: 65, aspectRatio: '1' }}>\n <span\n style={{\n position: 'absolute',\n inset: '0 35px 35px 0',\n borderRadius: 50,\n border: '3px solid #B8B9A2',\n animation: 'pb-loader 2.5s infinite',\n }}\n />\n <span\n style={{\n position: 'absolute',\n inset: '0 35px 35px 0',\n borderRadius: 50,\n border: '3px solid #B8B9A2',\n animation: 'pb-loader 2.5s -1.25s infinite',\n }}\n />\n </div>\n </>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport Image from 'next/image'\nimport Link from 'next/link'\nimport { cn } from '../utils/cn'\n\nexport type FooterLinkDef = {\n label: string\n href: string\n external?: boolean\n}\n\nexport type FooterColumnDef = {\n title: string\n links: FooterLinkDef[]\n}\n\nexport type FooterSocialDef = {\n label: string\n href: string\n src: string\n}\n\nexport type FooterProps = {\n columns?: FooterColumnDef[]\n socials?: FooterSocialDef[]\n newsletter?: boolean\n tagline?: string\n showTagline?: boolean\n logoSrc?: string\n logoAlt?: string\n siteName?: string\n creditHref?: string\n creditLabel?: string\n newsletterAction?: (email: string) => void | Promise<void>\n className?: string\n}\n\nconst DEFAULT_SOCIALS: FooterSocialDef[] = [\n {\n label: 'Instagram',\n href: 'https://www.instagram.com/playback_global',\n src: '/assets/instagram.png',\n },\n {\n label: 'YouTube',\n href: 'https://youtube.com/@playback_global',\n src: '/assets/youtube.png',\n },\n {\n label: 'TikTok',\n href: 'https://www.tiktok.com/@playback_global',\n src: '/assets/tiktok.png',\n },\n {\n label: 'LinkedIn',\n href: 'https://www.linkedin.com/company/playbacksports/',\n src: '/assets/linkedin.png',\n },\n]\n\nfunction NewsletterForm({\n onSubmit,\n}: {\n onSubmit?: (email: string) => void | Promise<void>\n}) {\n const [email, setEmail] = React.useState('')\n const [state, setState] = React.useState<'idle' | 'sent' | 'error'>('idle')\n\n const handle = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const ok = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email.trim())\n if (!ok) {\n setState('error')\n return\n }\n try {\n if (onSubmit) await onSubmit(email.trim())\n setState('sent')\n setEmail('')\n } catch {\n setState('error')\n }\n }\n\n return (\n <form\n onSubmit={handle}\n noValidate\n aria-label=\"Subscribe to updates\"\n className=\"w-full max-w-md\"\n >\n <label\n htmlFor=\"footer-newsletter\"\n className=\"block text-[12px] uppercase tracking-[0.14em] text-[rgba(214,213,201,0.44)] mb-3\"\n >\n Stay in the loop\n </label>\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <input\n id=\"footer-newsletter\"\n type=\"email\"\n inputMode=\"email\"\n autoComplete=\"email\"\n required\n value={email}\n onChange={(e) => {\n setEmail(e.target.value)\n if (state !== 'idle') setState('idle')\n }}\n placeholder=\"you@club.com\"\n aria-invalid={state === 'error'}\n aria-describedby=\"footer-newsletter-feedback\"\n className={cn(\n 'flex-1 h-11 rounded-full bg-[var(--surface-1,#0f1512)] border px-4 text-[14px] text-[var(--timberwolf)] placeholder:text-[rgba(214,213,201,0.44)]',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]',\n state === 'error'\n ? 'border-[rgba(237,106,106,0.5)]'\n : 'border-[rgba(214,213,201,0.08)]'\n )}\n />\n <button\n type=\"submit\"\n className=\"inline-flex items-center justify-center h-11 px-5 rounded-full bg-[var(--timberwolf)] text-[var(--night)] text-[14px] font-medium hover:bg-[var(--ash-grey)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]\"\n >\n Subscribe\n </button>\n </div>\n <p\n id=\"footer-newsletter-feedback\"\n className={cn(\n 'mt-2 text-[13px] min-h-[1.25rem]',\n state === 'sent' && 'text-[var(--timberwolf)]',\n state === 'error' && 'text-[rgb(237,106,106)]',\n state === 'idle' && 'text-[rgba(214,213,201,0.44)]'\n )}\n role={state === 'error' ? 'alert' : undefined}\n >\n {state === 'sent' && 'Thanks \\u2014 we\\u2019ll be in touch.'}\n {state === 'error' && 'Please enter a valid email address.'}\n {state === 'idle' && 'Monthly notes on product, network, and matches.'}\n </p>\n </form>\n )\n}\n\nfunction FooterLinkItem({ link }: { link: FooterLinkDef }) {\n const classes =\n 'text-[14px] text-[rgba(214,213,201,0.64)] hover:text-[var(--timberwolf)] transition-colors rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--surface-0,#0a100d)]'\n\n if (link.external) {\n return (\n <a\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={classes}\n >\n {link.label}\n </a>\n )\n }\n\n return (\n <Link href={link.href} className={classes}>\n {link.label}\n </Link>\n )\n}\n\nexport function Footer({\n columns,\n socials = DEFAULT_SOCIALS,\n newsletter = false,\n tagline = 'You PLAY. We BACK.',\n showTagline = true,\n logoSrc = '/branding/PLAYBACK-Text.png',\n logoAlt = 'PLAYBACK',\n siteName = 'PLAYBACK',\n creditHref = 'https://www.braintwopoint0.com',\n creditLabel = 'Built by BRAIN2.0',\n newsletterAction,\n className,\n}: FooterProps = {}) {\n const hasColumns = columns && columns.length > 0\n\n return (\n <footer\n id=\"footer\"\n className={cn(\n 'mt-24 border-t border-[rgba(214,213,201,0.08)] bg-[var(--surface-0,#0a100d)]',\n className\n )}\n aria-labelledby=\"footer-heading\"\n >\n <h2 id=\"footer-heading\" className=\"sr-only\">\n {siteName} site footer\n </h2>\n <div className=\"mx-auto max-w-[1400px] px-6 sm:px-10\">\n <div\n className={cn(\n 'grid grid-cols-1 gap-12 py-16',\n newsletter\n ? 'lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] lg:items-end'\n : ''\n )}\n >\n <div className=\"flex flex-col gap-8\">\n <Link\n href=\"/\"\n className=\"inline-flex items-center gap-3 rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]\"\n aria-label={`${siteName} home`}\n >\n <Image\n src={logoSrc}\n alt={logoAlt}\n width={200}\n height={40}\n className=\"h-7 w-auto\"\n />\n </Link>\n {showTagline && tagline ? (\n <p className=\"font-semibold text-[clamp(28px,3.6vw,44px)] leading-[1.05] tracking-[-0.035em] text-[var(--timberwolf)] max-w-[18ch]\">\n {tagline}\n </p>\n ) : null}\n </div>\n {newsletter ? (\n <div className=\"lg:justify-self-end w-full lg:max-w-md\">\n <NewsletterForm onSubmit={newsletterAction} />\n </div>\n ) : null}\n </div>\n\n {hasColumns ? (\n <div className=\"border-t border-[rgba(214,213,201,0.08)] py-14\">\n <div className=\"grid grid-cols-2 gap-x-6 gap-y-10 md:grid-cols-4\">\n {columns!.map((col) => (\n <nav key={col.title} aria-label={col.title}>\n <p className=\"text-[12px] uppercase tracking-[0.14em] text-[rgba(214,213,201,0.44)] mb-4\">\n {col.title}\n </p>\n <ul className=\"flex flex-col gap-3\">\n {col.links.map((link) => (\n <li key={`${col.title}-${link.label}`}>\n <FooterLinkItem link={link} />\n </li>\n ))}\n </ul>\n </nav>\n ))}\n </div>\n </div>\n ) : null}\n\n <div className=\"border-t border-[rgba(214,213,201,0.08)] py-6 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <ul className=\"flex items-center gap-2\">\n {socials.map(({ label, href, src }) => (\n <li key={label}>\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={`${siteName} on ${label}`}\n className=\"inline-flex items-center justify-center h-9 w-9 rounded-full hover:bg-[var(--surface-1,#0f1512)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]\"\n >\n <Image\n src={src}\n alt=\"\"\n width={20}\n height={20}\n className=\"h-[18px] w-[18px] object-contain opacity-80 hover:opacity-100 transition-opacity\"\n />\n </a>\n </li>\n ))}\n </ul>\n <p className=\"text-[13px] text-[rgba(214,213,201,0.44)] order-last sm:order-none\">\n &copy; {new Date().getFullYear()} {siteName}. All rights reserved.\n </p>\n <a\n href={creditHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-[13px] text-[rgba(214,213,201,0.44)] hover:text-[var(--timberwolf)] transition-colors rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]\"\n >\n {creditLabel}\n </a>\n </div>\n </div>\n </footer>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport Image from 'next/image'\nimport { cn } from '../utils/cn'\n\nexport type FooterSocialLink = {\n label: string\n href: string\n src: string\n}\n\nexport type FooterCreditsBarProps = {\n /**\n * Social links to render on the left. Defaults to the PLAYBACK brand socials.\n * Note: `src` paths are resolved by the consuming app's Next.js static file\n * server, so the assets must exist in the app's /public directory.\n */\n socials?: FooterSocialLink[]\n /**\n * Company name used in the copyright line. Defaults to \"PLAYBACK\".\n */\n companyName?: string\n /**\n * Credit link href. Defaults to BRAIN2.0's homepage.\n */\n creditHref?: string\n /**\n * Show the \"Built by BRAIN2.0\" credit next to the socials. Defaults to true.\n * The credit uses the Averta Semibold + Thin split-weight wordmark for\n * \"BRAIN2.0\". Those @font-face declarations must be loaded by the consuming\n * app's globals.css (AvertaStd-Semibold.ttf + AvertaStd-Thin.ttf).\n */\n showCredit?: boolean\n /**\n * Starting year for the copyright range. Defaults to current year.\n */\n copyrightYear?: number\n /**\n * Additional classes on the outer container.\n */\n className?: string\n}\n\nconst DEFAULT_SOCIALS: FooterSocialLink[] = [\n {\n label: 'Instagram',\n href: 'https://www.instagram.com/playback_global',\n src: '/assets/instagram.png',\n },\n {\n label: 'YouTube',\n href: 'https://youtube.com/@playback_global',\n src: '/assets/youtube.png',\n },\n {\n label: 'TikTok',\n href: 'https://www.tiktok.com/@playback_global',\n src: '/assets/tiktok.png',\n },\n {\n label: 'LinkedIn',\n href: 'https://www.linkedin.com/company/playbacksports/',\n src: '/assets/linkedin.png',\n },\n]\n\n/**\n * Shared footer bottom-bar: social icons + BRAIN2.0 credit on the left,\n * copyright right-aligned on desktop and centered on mobile.\n *\n * Use inside an existing footer container. Provides its own top hairline.\n */\nexport function FooterCreditsBar({\n socials = DEFAULT_SOCIALS,\n companyName = 'PLAYBACK',\n creditHref = 'https://www.braintwopoint0.com',\n showCredit = true,\n copyrightYear,\n className,\n}: FooterCreditsBarProps = {}) {\n const year = copyrightYear ?? new Date().getFullYear()\n\n return (\n <div\n className={cn(\n 'border-t py-6 grid grid-cols-1 gap-4 sm:grid-cols-2 sm:items-center',\n 'border-[rgba(214,213,201,0.08)]',\n className\n )}\n >\n <div className=\"flex items-center gap-4 sm:justify-self-start\">\n <ul className=\"flex items-center gap-2\">\n {socials.map(({ label, href, src }) => (\n <li key={label}>\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={`${companyName} on ${label}`}\n className={cn(\n 'inline-flex items-center justify-center h-10 w-10 rounded-full',\n 'hover:bg-[var(--surface-1,#0f1512)] transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]'\n )}\n >\n <Image\n src={src}\n alt=\"\"\n width={24}\n height={24}\n className=\"h-[22px] w-[22px] object-contain opacity-80 hover:opacity-100 transition-opacity\"\n />\n </a>\n </li>\n ))}\n </ul>\n\n {showCredit ? (\n <>\n <span\n aria-hidden\n className=\"h-5 w-px bg-[rgba(214,213,201,0.16)] flex-shrink-0\"\n />\n <a\n href={creditHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"Built by BRAIN2.0\"\n className={cn(\n 'text-[13px] text-[rgba(214,213,201,0.44)] hover:text-[var(--timberwolf)] transition-colors rounded-sm',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]',\n 'whitespace-nowrap'\n )}\n >\n <span aria-hidden>\n Built by{' '}\n <span style={{ fontFamily: 'AvertaStd-Semibold' }}>\n BRAIN\n <span style={{ fontFamily: 'AvertaStd-Thin' }}>2.0</span>\n </span>\n </span>\n </a>\n </>\n ) : null}\n </div>\n\n <p className=\"text-[13px] text-[rgba(214,213,201,0.44)] text-center sm:text-right sm:justify-self-end\">\n &copy; {year} {companyName}. All rights reserved.\n </p>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport type NewsletterFormProps = {\n /**\n * Endpoint the form POSTs to. Default: /api/newsletter/subscribe.\n * Must accept `{ email, source, website }` and return 200/400/429/500.\n */\n endpoint?: string\n /**\n * Identifier for which surface the signup came from. Server uses this to route\n * into segmentation (e.g. 'footer', 'hero', 'clubs-form').\n */\n source?: string\n /**\n * Optional role hint (parent / player / club / coach / press). Server must allowlist.\n */\n role?: string\n /**\n * Placeholder for the email input.\n */\n placeholder?: string\n /**\n * Accessible label for the form.\n */\n ariaLabel?: string\n /**\n * Submit button label.\n */\n submitLabel?: string\n /**\n * Copy shown while the request is in flight.\n */\n sendingLabel?: string\n /**\n * Optional className on the outer <form>.\n */\n className?: string\n}\n\ntype FormState = 'idle' | 'sending' | 'sent' | 'error' | 'rate_limited'\n\nexport function NewsletterForm({\n endpoint = '/api/newsletter/subscribe',\n source = 'footer',\n role,\n placeholder = 'you@club.com',\n ariaLabel = 'Subscribe to updates',\n submitLabel = 'Subscribe',\n sendingLabel = 'Subscribing\\u2026',\n className,\n}: NewsletterFormProps) {\n const [email, setEmail] = React.useState('')\n const [website, setWebsite] = React.useState('') // honeypot\n const [state, setState] = React.useState<FormState>('idle')\n const inFlight = React.useRef(false)\n\n const onSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (inFlight.current) return\n const trimmed = email.trim()\n const ok = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmed)\n if (!ok) {\n setState('error')\n return\n }\n inFlight.current = true\n setState('sending')\n try {\n const res = await fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n email: trimmed,\n source,\n ...(role ? { role } : {}),\n website,\n }),\n })\n if (res.ok) {\n setState('sent')\n setEmail('')\n } else if (res.status === 429) {\n setState('rate_limited')\n } else {\n setState('error')\n }\n } catch {\n setState('error')\n } finally {\n inFlight.current = false\n }\n }\n\n const feedbackId = React.useId()\n const inputId = React.useId()\n\n return (\n <form\n onSubmit={onSubmit}\n noValidate\n aria-label={ariaLabel}\n className={cn('w-full max-w-md', className)}\n >\n <label htmlFor={inputId} className=\"sr-only\">\n Email address\n </label>\n\n {/* Honeypot — hidden from humans, attractive to bots. */}\n <div\n aria-hidden\n className=\"absolute left-[-10000px] top-auto h-px w-px overflow-hidden\"\n >\n <label htmlFor={`${inputId}-website`}>Website</label>\n <input\n type=\"text\"\n id={`${inputId}-website`}\n name=\"website\"\n tabIndex={-1}\n autoComplete=\"off\"\n value={website}\n onChange={(e) => setWebsite(e.target.value)}\n />\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <input\n id={inputId}\n type=\"email\"\n inputMode=\"email\"\n autoComplete=\"email\"\n required\n disabled={state === 'sending'}\n value={email}\n onChange={(e) => {\n setEmail(e.target.value)\n if (state === 'error' || state === 'rate_limited') setState('idle')\n }}\n placeholder={placeholder}\n aria-invalid={state === 'error'}\n aria-describedby={feedbackId}\n className={cn(\n 'w-full sm:flex-1 h-12 sm:h-11 rounded-full bg-[var(--surface-1,#0f1512)] border px-5 text-[16px] sm:text-[14px] text-[var(--timberwolf)] placeholder:text-[rgba(214,213,201,0.44)]',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]',\n 'disabled:opacity-60',\n state === 'error'\n ? 'border-[rgba(237,106,106,0.5)]'\n : 'border-[rgba(214,213,201,0.08)]'\n )}\n />\n <button\n type=\"submit\"\n disabled={state === 'sending'}\n className=\"inline-flex w-full sm:w-auto items-center justify-center h-12 sm:h-11 px-6 rounded-full bg-[var(--timberwolf)] text-[var(--night)] text-[15px] sm:text-[14px] font-medium hover:bg-[var(--ash-grey)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)] disabled:opacity-60 disabled:cursor-not-allowed\"\n >\n {state === 'sending' ? sendingLabel : submitLabel}\n </button>\n </div>\n\n <p\n id={feedbackId}\n aria-live=\"polite\"\n className={cn(\n 'mt-2 -ml-0.5 text-[13px] min-h-[1.25rem]',\n state === 'sent' && 'text-[var(--timberwolf)]',\n (state === 'error' || state === 'rate_limited') &&\n 'text-[rgb(237,106,106)]',\n (state === 'idle' || state === 'sending') &&\n 'text-[rgba(214,213,201,0.44)]'\n )}\n role={state === 'error' || state === 'rate_limited' ? 'alert' : undefined}\n >\n {state === 'sent' && 'Thanks \\u2014 we\\u2019ll be in touch.'}\n {state === 'error' && 'Please enter a valid email address.'}\n {state === 'rate_limited' &&\n 'Too many attempts. Try again in a minute.'}\n </p>\n </form>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport Link from 'next/link'\nimport { FooterCreditsBar } from './footer-credits-bar'\nimport { NewsletterForm } from './newsletter-form'\nimport type { FooterColumnDef, FooterLinkDef } from './footer'\n\nconst INK_MUTED = 'rgba(214,213,201,0.64)'\nconst INK_SUBTLE = 'rgba(214,213,201,0.44)'\nconst LINE = 'rgba(214,213,201,0.08)'\n\nexport type SiteFooterProps = {\n /** Per-app link column configuration. Required because the columns are the only thing that varies between apps. */\n columns: FooterColumnDef[]\n /** Used in the sr-only footer heading. Defaults to 'PLAYBACK'. */\n siteName?: string\n /** Newsletter POST endpoint. Defaults to the relative '/api/newsletter/subscribe' so each app can host its own. */\n newsletterEndpoint?: string\n /** Source tag included in the newsletter payload for analytics. Defaults to 'footer'. */\n newsletterSource?: string\n /** Top-left uppercase eyebrow. */\n newsletterLabel?: string\n /** Headline above the newsletter copy. */\n newsletterTitle?: string\n /** Sub-headline beneath the newsletter copy. */\n newsletterSubtitle?: string\n}\n\nfunction FooterLinkItem({ link }: { link: FooterLinkDef }) {\n const classes =\n 'text-[14px] text-[rgba(214,213,201,0.64)] hover:text-[var(--timberwolf)] transition-colors rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--timberwolf)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--night)]'\n\n if (link.external) {\n return (\n <a\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={classes}\n >\n {link.label}\n </a>\n )\n }\n\n return (\n <Link href={link.href} className={classes}>\n {link.label}\n </Link>\n )\n}\n\nexport function SiteFooter({\n columns,\n siteName = 'PLAYBACK',\n newsletterEndpoint = '/api/newsletter/subscribe',\n newsletterSource = 'footer',\n newsletterLabel = 'Newsletter',\n newsletterTitle = 'Updates from the Network.',\n newsletterSubtitle = 'Only when relevant. No spam.',\n}: SiteFooterProps) {\n return (\n <footer\n id=\"footer\"\n className=\"mt-24 border-t bg-[var(--night)]\"\n style={{ borderTopColor: LINE }}\n aria-labelledby=\"site-footer-heading\"\n >\n <h2 id=\"site-footer-heading\" className=\"sr-only\">\n {siteName} site footer\n </h2>\n <div className=\"mx-auto max-w-[1400px] px-6 sm:px-10\">\n <div className=\"flex flex-col gap-6 pt-16 pb-10 md:flex-row md:items-start md:justify-between md:gap-10 md:pt-20\">\n <div className=\"max-w-[36ch]\">\n <p\n className=\"text-[11px] uppercase tracking-[0.22em] font-semibold\"\n style={{ color: INK_SUBTLE }}\n >\n {newsletterLabel}\n </p>\n <p className=\"mt-3 text-[17px] md:text-[19px] leading-[1.35] tracking-[-0.01em] text-[var(--timberwolf)]\">\n {newsletterTitle}\n </p>\n <p\n className=\"mt-2 text-[13px] leading-[1.5]\"\n style={{ color: INK_MUTED }}\n >\n {newsletterSubtitle}\n </p>\n </div>\n <div className=\"w-full md:max-w-md md:pt-1\">\n <NewsletterForm\n endpoint={newsletterEndpoint}\n source={newsletterSource}\n />\n </div>\n </div>\n\n <div className=\"border-t py-14\" style={{ borderTopColor: LINE }}>\n <div className=\"grid grid-cols-2 gap-x-6 gap-y-10 md:grid-cols-4\">\n {columns.map((col) => (\n <nav key={col.title} aria-label={col.title}>\n <p\n className=\"text-[12px] uppercase tracking-[0.14em] mb-4\"\n style={{ color: INK_SUBTLE }}\n >\n {col.title}\n </p>\n <ul className=\"flex flex-col gap-3\">\n {col.links.map((link) => (\n <li key={`${col.title}-${link.label}`}>\n <FooterLinkItem link={link} />\n </li>\n ))}\n </ul>\n </nav>\n ))}\n </div>\n </div>\n\n <FooterCreditsBar />\n </div>\n </footer>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport Link from 'next/link'\nimport {\n AlertCircle,\n Eye,\n EyeOff,\n Loader2,\n Lock,\n Mail,\n} from 'lucide-react'\nimport { Button } from './button'\nimport { Input } from './input'\nimport { Label } from './label'\nimport { useAuth } from '../auth/context'\nimport { validateEmail, getAuthErrorMessage } from '../auth/shared'\n\nconst COOLDOWN_THRESHOLD = 3\nconst COOLDOWN_DURATION_MS = 30_000\n\nexport type SignInFormProps = {\n /**\n * Called with the submitted email after a successful sign-in. The parent\n * is responsible for the post-sign-in redirect, analytics, etc.\n */\n onSuccess?: (email: string) => void\n /** Where the \"Forgot your password?\" link should point. Hidden if omitted. */\n forgotPasswordHref?: string\n /** Where the \"Sign up\" footer link should point. Hidden if omitted. */\n signUpHref?: string\n /** Pre-populated error from the surrounding page (e.g. URL ?error= param). */\n initialError?: string\n emailPlaceholder?: string\n title?: string\n subtitle?: string\n}\n\nexport function SignInForm({\n onSuccess,\n forgotPasswordHref,\n signUpHref,\n initialError,\n emailPlaceholder = 'you@example.com',\n title = 'Welcome back',\n subtitle = 'Sign in to access your account',\n}: SignInFormProps) {\n const [email, setEmail] = React.useState('')\n const [password, setPassword] = React.useState('')\n const [showPassword, setShowPassword] = React.useState(false)\n const [error, setError] = React.useState(initialError ?? '')\n const [loading, setLoading] = React.useState(false)\n const [consecutiveErrors, setConsecutiveErrors] = React.useState(0)\n const [cooldownUntil, setCooldownUntil] = React.useState<number | null>(null)\n\n const { signIn } = useAuth()\n\n React.useEffect(() => {\n if (initialError) setError(initialError)\n }, [initialError])\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n setError('')\n\n if (cooldownUntil && Date.now() < cooldownUntil) {\n const secondsLeft = Math.ceil((cooldownUntil - Date.now()) / 1000)\n setError(`Too many attempts. Please wait ${secondsLeft} seconds.`)\n return\n }\n\n if (!email || !password) {\n setError('Please fill in all fields')\n return\n }\n\n if (!validateEmail(email)) {\n setError('Please enter a valid email address')\n return\n }\n\n setLoading(true)\n\n try {\n const { error: signInError } = await signIn(email, password)\n\n if (signInError) {\n setError(getAuthErrorMessage(signInError))\n const newCount = consecutiveErrors + 1\n setConsecutiveErrors(newCount)\n if (newCount >= COOLDOWN_THRESHOLD) {\n setCooldownUntil(Date.now() + COOLDOWN_DURATION_MS)\n setConsecutiveErrors(0)\n }\n } else {\n setConsecutiveErrors(0)\n setCooldownUntil(null)\n onSuccess?.(email)\n }\n } catch {\n setError('An unexpected error occurred. Please try again.')\n } finally {\n setLoading(false)\n }\n }\n\n return (\n <div className=\"bg-card border border-border rounded-xl p-8 space-y-6\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold text-[var(--timberwolf)] mb-2\">\n {title}\n </h1>\n <p className=\"text-sm text-muted-foreground\">{subtitle}</p>\n </div>\n\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {error && (\n <div\n id=\"signin-error\"\n role=\"alert\"\n aria-live=\"polite\"\n className=\"bg-red-900/20 border border-red-700/30 rounded-lg p-3\"\n >\n <div className=\"flex items-center gap-2 text-red-400 text-sm\">\n <AlertCircle className=\"h-4 w-4 flex-shrink-0\" />\n <span>{error}</span>\n </div>\n </div>\n )}\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"email\" className=\"text-[var(--timberwolf)]\">\n Email\n </Label>\n <div className=\"relative\">\n <Input\n id=\"email\"\n type=\"email\"\n placeholder={emailPlaceholder}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n className=\"h-11 pl-10\"\n disabled={loading}\n autoComplete=\"email\"\n aria-invalid={!!error}\n aria-describedby={error ? 'signin-error' : undefined}\n />\n <Mail className=\"h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\" />\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"password\" className=\"text-[var(--timberwolf)]\">\n Password\n </Label>\n <div className=\"relative\">\n <Input\n id=\"password\"\n type={showPassword ? 'text' : 'password'}\n placeholder=\"Enter your password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n className=\"h-11 pl-10 pr-10\"\n disabled={loading}\n autoComplete=\"current-password\"\n aria-invalid={!!error}\n aria-describedby={error ? 'signin-error' : undefined}\n />\n <Lock className=\"h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\" />\n <button\n type=\"button\"\n onClick={() => setShowPassword((prev) => !prev)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-[var(--timberwolf)]\"\n disabled={loading}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n aria-pressed={showPassword}\n >\n {showPassword ? (\n <EyeOff className=\"h-4 w-4\" />\n ) : (\n <Eye className=\"h-4 w-4\" />\n )}\n </button>\n </div>\n </div>\n\n {forgotPasswordHref ? (\n <div className=\"flex justify-end -mt-1\">\n <Link\n href={forgotPasswordHref}\n className=\"text-xs text-muted-foreground hover:text-[var(--timberwolf)] transition-colors\"\n >\n Forgot your password?\n </Link>\n </div>\n ) : null}\n\n <Button\n type=\"submit\"\n className=\"w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]\"\n disabled={loading}\n >\n {loading ? (\n <>\n <Loader2 className=\"h-4 w-4 mr-2 animate-spin\" />\n Signing in...\n </>\n ) : (\n 'Sign in'\n )}\n </Button>\n </form>\n\n {signUpHref ? (\n <div className=\"text-center text-sm\">\n <p className=\"text-muted-foreground\">\n Don&apos;t have an account?{' '}\n <Link\n href={signUpHref}\n className=\"text-[var(--timberwolf)] hover:underline\"\n >\n Sign up\n </Link>\n </p>\n </div>\n ) : null}\n </div>\n )\n}\n","'use client'\n\nimport {\n createContext,\n useContext,\n useEffect,\n useState,\n useMemo,\n useCallback,\n useRef,\n} from 'react'\nimport { User, Session, AuthError } from '@supabase/supabase-js'\nimport { useRouter } from 'next/navigation'\nimport { createClient } from '../supabase/client'\n\ninterface UserProfile {\n id: string\n user_id: string\n username: string\n email: string | null\n full_name: string | null\n bio: string | null\n avatar_url: string | null\n cover_image_url: string | null\n date_of_birth: string | null\n height_cm: number | null\n weight_kg: number | null\n nationality: string | null\n location: string | null\n phone: string | null\n website: string | null\n social_links: any\n is_public: boolean | null\n created_at: string | null\n updated_at: string | null\n}\n\ninterface ProfileState {\n data: UserProfile | null\n loading: boolean\n error: string | null\n lastFetched: number | null\n}\n\ninterface AuthContextType {\n user: User | null\n session: Session | null\n loading: boolean\n profile: ProfileState\n isOnboardingComplete: boolean\n signUp: (\n email: string,\n password: string,\n metadata?: Record<string, any>\n ) => Promise<{ data: any; error: AuthError | null }>\n signIn: (\n email: string,\n password: string\n ) => Promise<{ error: AuthError | null }>\n signOut: () => Promise<{ error: AuthError | null }>\n resetPassword: (email: string) => Promise<{ error: AuthError | null }>\n refreshProfile: (force?: boolean) => Promise<void>\n updateProfile: (updates: Partial<UserProfile>) => void\n}\n\nconst AuthContext = createContext<AuthContextType | undefined>(undefined)\n\nconst CACHE_TIMEOUT = 5 * 60 * 1000\n\nexport function AuthProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const [user, setUser] = useState<User | null>(null)\n const [session, setSession] = useState<Session | null>(null)\n const [loading, setLoading] = useState(true)\n const [profile, setProfile] = useState<ProfileState>({\n data: null,\n loading: false,\n error: null,\n lastFetched: null,\n })\n\n const router = useRouter()\n const routerRef = useRef(router)\n routerRef.current = router\n const supabase = useMemo(() => createClient(), [])\n const profileRef = useRef(profile)\n profileRef.current = profile\n\n const isOnboardingComplete = useMemo(() => {\n return !!profile.data\n }, [profile.data])\n\n const fetchProfile = useCallback(\n async (userId: string) => {\n try {\n const { data: profileData, error: profileError } = await supabase\n .from('profiles')\n .select('*')\n .eq('user_id', userId)\n .single()\n\n if (profileError) throw profileError\n\n return { data: profileData, error: null }\n } catch (error) {\n return {\n data: null,\n error:\n error instanceof Error ? error.message : 'Failed to fetch profile',\n }\n }\n },\n [supabase]\n )\n\n const refreshProfile = useCallback(\n async (force = false) => {\n if (!user) {\n setProfile({\n data: null,\n loading: false,\n error: null,\n lastFetched: null,\n })\n return\n }\n\n const now = Date.now()\n const current = profileRef.current\n const isCacheValid =\n current.lastFetched && now - current.lastFetched < CACHE_TIMEOUT\n\n if (!force && isCacheValid && current.data) {\n return\n }\n\n setProfile((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const result = await fetchProfile(user.id)\n setProfile({\n data: result.data,\n loading: false,\n error: result.error,\n lastFetched: now,\n })\n } catch (error) {\n setProfile((prev) => ({\n ...prev,\n loading: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }))\n }\n },\n [user, fetchProfile]\n )\n\n const updateProfile = useCallback((updates: Partial<UserProfile>) => {\n setProfile((prev) => ({\n ...prev,\n data: prev.data ? { ...prev.data, ...updates } : null,\n }))\n }, [])\n\n useEffect(() => {\n const initializeAuth = async () => {\n try {\n const {\n data: { session },\n error,\n } = await supabase.auth.getSession()\n\n if (error) {\n console.error('Error getting session:', error)\n } else {\n setSession(session)\n setUser(session?.user ?? null)\n\n if (session?.user) {\n setProfile({\n data: null,\n loading: false,\n error: null,\n lastFetched: null,\n })\n }\n }\n } catch (error) {\n console.error('Session initialization error:', error)\n } finally {\n setLoading(false)\n }\n }\n\n initializeAuth()\n }, [supabase.auth])\n\n useEffect(() => {\n if (!loading && user && !profile.data && !profile.loading) {\n const loadProfile = async () => {\n setProfile((prev) => ({ ...prev, loading: true, error: null }))\n try {\n const result = await fetchProfile(user.id)\n setProfile({\n data: result.data,\n loading: false,\n error: result.error,\n lastFetched: Date.now(),\n })\n } catch (error) {\n setProfile((prev) => ({\n ...prev,\n loading: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }))\n }\n }\n loadProfile()\n }\n }, [loading, user, profile.data, profile.loading, fetchProfile])\n\n useEffect(() => {\n let isInitialEvent = true\n let currentUserId: string | null = null\n\n const {\n data: { subscription },\n } = supabase.auth.onAuthStateChange(async (event, session) => {\n const newUserId = session?.user?.id ?? null\n\n // Only update user/session state if the user actually changed\n // This prevents new object references from causing cascading re-renders\n // on TOKEN_REFRESHED and INITIAL_SESSION events\n if (newUserId !== currentUserId) {\n currentUserId = newUserId\n setSession(session)\n setUser(session?.user ?? null)\n }\n setLoading(false)\n\n // Only reset profile on sign out — signing in triggers the profile\n // fetch useEffect naturally via the user state change\n if (event === 'SIGNED_OUT') {\n setProfile({\n data: null,\n loading: false,\n error: null,\n lastFetched: null,\n })\n }\n\n // Skip router actions on initial mount to avoid refresh loops\n if (isInitialEvent) {\n isInitialEvent = false\n return\n }\n\n if (event === 'SIGNED_OUT') {\n routerRef.current.push('/')\n routerRef.current.refresh()\n }\n })\n\n return () => subscription.unsubscribe()\n }, [supabase.auth])\n\n const signUp = useCallback(\n async (email: string, password: string, metadata?: Record<string, any>) => {\n setLoading(true)\n try {\n const { data, error } = await supabase.auth.signUp({\n email,\n password,\n options: {\n data: metadata,\n emailRedirectTo: `${window.location.origin}/auth/callback`,\n },\n })\n return { data, error }\n } finally {\n setLoading(false)\n }\n },\n [supabase.auth]\n )\n\n const signIn = useCallback(\n async (email: string, password: string) => {\n setLoading(true)\n try {\n const { error } = await supabase.auth.signInWithPassword({\n email,\n password,\n })\n return { error }\n } finally {\n setLoading(false)\n }\n },\n [supabase.auth]\n )\n\n const signOut = useCallback(async () => {\n setLoading(true)\n try {\n const { error } = await supabase.auth.signOut()\n return { error }\n } finally {\n setLoading(false)\n }\n }, [supabase.auth])\n\n const resetPassword = useCallback(\n async (email: string) => {\n const { error } = await supabase.auth.resetPasswordForEmail(email, {\n redirectTo: `${window.location.origin}/auth/reset-password`,\n })\n return { error }\n },\n [supabase.auth]\n )\n\n const value = useMemo(\n () => ({\n user,\n session,\n loading,\n profile,\n isOnboardingComplete,\n signUp,\n signIn,\n signOut,\n resetPassword,\n refreshProfile,\n updateProfile,\n }),\n [\n user,\n session,\n loading,\n profile,\n isOnboardingComplete,\n refreshProfile,\n updateProfile,\n signIn,\n signOut,\n resetPassword,\n signUp,\n ]\n )\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>\n}\n\nexport function useAuth() {\n const context = useContext(AuthContext)\n if (context === undefined) {\n throw new Error('useAuth must be used within an AuthProvider')\n }\n return context\n}\n\nexport function useProfile() {\n const { profile, refreshProfile, updateProfile } = useAuth()\n return { profile, refreshProfile, updateProfile }\n}\n\nexport function useOnboardingStatus() {\n const { isOnboardingComplete, profile } = useAuth()\n return {\n isComplete: isOnboardingComplete,\n loading: profile.loading,\n error: profile.error,\n }\n}\n","import { createBrowserClient } from '@supabase/ssr'\n\nexport function createClient() {\n const cookieDomain = process.env.NEXT_PUBLIC_COOKIE_DOMAIN\n\n return createBrowserClient(\n process.env.NEXT_PUBLIC_SUPABASE_URL!,\n process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,\n {\n ...(cookieDomain && {\n cookieOptions: { domain: cookieDomain },\n }),\n }\n )\n}\n","import { User } from '@supabase/supabase-js'\n\nexport function validateEmail(email: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return emailRegex.test(email)\n}\n\nexport function validatePassword(password: string): {\n isValid: boolean\n errors: string[]\n} {\n const errors: string[] = []\n\n if (password.length < 8) {\n errors.push('Password must be at least 8 characters long')\n }\n\n if (!/(?=.*[a-z])/.test(password)) {\n errors.push('Password must contain at least one lowercase letter')\n }\n\n if (!/(?=.*[A-Z])/.test(password)) {\n errors.push('Password must contain at least one uppercase letter')\n }\n\n if (!/(?=.*\\d)/.test(password)) {\n errors.push('Password must contain at least one number')\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n}\n\nexport function validateUsername(username: string): {\n isValid: boolean\n errors: string[]\n} {\n const errors: string[] = []\n\n if (username.length < 3) {\n errors.push('Username must be at least 3 characters long')\n }\n\n if (username.length > 30) {\n errors.push('Username cannot be longer than 30 characters')\n }\n\n if (!/^[a-zA-Z0-9_-]+$/.test(username)) {\n errors.push(\n 'Username can only contain letters, numbers, underscores, and hyphens'\n )\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n }\n}\n\nexport function hasRole(user: User | null, role: string): boolean {\n if (!user) return false\n return user.user_metadata?.role === role\n}\n\nexport function hasAnyRole(user: User | null, roles: string[]): boolean {\n if (!user) return false\n return roles.includes(user.user_metadata?.role)\n}\n\nexport function isPlayer(user: User | null): boolean {\n return hasRole(user, 'player')\n}\n\nexport function isCoach(user: User | null): boolean {\n return hasRole(user, 'coach')\n}\n\nexport function isScout(user: User | null): boolean {\n return hasRole(user, 'scout')\n}\n\nexport function isFan(user: User | null): boolean {\n return hasRole(user, 'fan')\n}\n\nexport function getAuthErrorMessage(error: any): string {\n if (!error) return 'An unknown error occurred'\n\n const message = error.message || error.error_description || error.toString()\n\n const errorMappings: Record<string, string> = {\n 'Invalid login credentials':\n 'Invalid email or password. Please check your credentials and try again.',\n 'Email not confirmed':\n 'Please check your email and click the confirmation link before signing in.',\n 'User already registered':\n 'An account with this email address already exists. Please sign in instead.',\n 'Password should be at least 6 characters':\n 'Password must be at least 6 characters long.',\n 'Signup requires a valid password': 'Please provide a valid password.',\n 'Invalid email': 'Please provide a valid email address.',\n 'Email rate limit exceeded':\n 'Too many emails sent. Please wait before requesting another.',\n 'duplicate key value violates unique constraint \"profiles_username_key\"':\n 'This username is already taken. Please choose a different username.',\n }\n\n return errorMappings[message] || message\n}\n","'use client'\n\nimport * as React from 'react'\nimport Link from 'next/link'\nimport {\n AlertCircle,\n ArrowLeft,\n CheckCircle,\n Loader2,\n Mail,\n} from 'lucide-react'\nimport { Button } from './button'\nimport { Input } from './input'\nimport { Label } from './label'\nimport { validateEmail, getAuthErrorMessage } from '../auth/shared'\nimport { createClient } from '../supabase/client'\n\nconst RESEND_COOLDOWN_MS = 30_000\nconst COOLDOWN_STORAGE_KEY = 'playback:pwreset-cooldown-until'\n\nexport type ForgotPasswordFormProps = {\n /**\n * Where Supabase should send the user after they click the email link.\n * Typically `${window.location.origin}/auth/confirm?next=/auth/reset-password`.\n */\n redirectTo: string\n /** Back-to-sign-in link target. Defaults to '/auth/login'. */\n loginHref?: string\n title?: string\n subtitle?: string\n}\n\nexport function ForgotPasswordForm({\n redirectTo,\n loginHref = '/auth/login',\n title = 'Forgot password?',\n subtitle = \"Enter your email and we'll send you a reset link.\",\n}: ForgotPasswordFormProps) {\n const [email, setEmail] = React.useState('')\n const [error, setError] = React.useState('')\n const [loading, setLoading] = React.useState(false)\n const [emailSent, setEmailSent] = React.useState(false)\n const [cooldownUntil, setCooldownUntilState] = React.useState<number | null>(\n null\n )\n const [now, setNow] = React.useState(() => Date.now())\n\n const [supabase] = React.useState(() => createClient())\n\n // Persist cooldown across page refresh within the same tab. Closes the\n // F5-bypass loophole; sessionStorage clears when the tab closes.\n const setCooldownUntil = (value: number | null) => {\n setCooldownUntilState(value)\n if (typeof window === 'undefined') return\n if (value === null) {\n window.sessionStorage.removeItem(COOLDOWN_STORAGE_KEY)\n } else {\n window.sessionStorage.setItem(COOLDOWN_STORAGE_KEY, String(value))\n }\n }\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return\n const stored = window.sessionStorage.getItem(COOLDOWN_STORAGE_KEY)\n if (!stored) return\n const parsed = Number(stored)\n if (!Number.isFinite(parsed) || parsed <= Date.now()) {\n window.sessionStorage.removeItem(COOLDOWN_STORAGE_KEY)\n return\n }\n setCooldownUntilState(parsed)\n }, [])\n\n React.useEffect(() => {\n if (!cooldownUntil) return\n const id = setInterval(() => setNow(Date.now()), 1000)\n return () => clearInterval(id)\n }, [cooldownUntil])\n\n const cooldownSecondsLeft =\n cooldownUntil && cooldownUntil > now\n ? Math.ceil((cooldownUntil - now) / 1000)\n : 0\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n setError('')\n\n if (cooldownSecondsLeft > 0) {\n setError(`Please wait ${cooldownSecondsLeft} seconds before resending.`)\n return\n }\n\n if (!email) {\n setError('Please enter your email address')\n return\n }\n\n if (!validateEmail(email)) {\n setError('Please enter a valid email address')\n return\n }\n\n setLoading(true)\n\n try {\n const { error: resetError } = await supabase.auth.resetPasswordForEmail(\n email,\n { redirectTo }\n )\n if (resetError) {\n setError(getAuthErrorMessage(resetError))\n } else {\n setEmailSent(true)\n setCooldownUntil(Date.now() + RESEND_COOLDOWN_MS)\n }\n } catch {\n setError('An unexpected error occurred. Please try again.')\n } finally {\n setLoading(false)\n }\n }\n\n if (emailSent) {\n return (\n <div className=\"bg-card border border-border rounded-xl p-8 space-y-6 text-center\">\n <div className=\"flex justify-center\">\n <div className=\"h-12 w-12 rounded-full bg-[var(--timberwolf)]/10 border border-[var(--timberwolf)]/20 flex items-center justify-center\">\n <CheckCircle className=\"h-6 w-6 text-[var(--timberwolf)]\" />\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <h1 className=\"text-2xl font-bold text-[var(--timberwolf)]\">\n Check your email\n </h1>\n <p className=\"text-sm text-muted-foreground\">\n We sent a reset link to{' '}\n <span className=\"text-[var(--timberwolf)] font-medium\">\n {email}\n </span>\n . If it&apos;s not in your inbox, check spam.\n </p>\n </div>\n\n <div className=\"space-y-3 pt-2\">\n <Button\n onClick={() => {\n setEmailSent(false)\n setEmail('')\n setError('')\n }}\n variant=\"outline\"\n className=\"w-full h-11\"\n disabled={cooldownSecondsLeft > 0}\n >\n {cooldownSecondsLeft > 0\n ? `Send another email in ${cooldownSecondsLeft}s`\n : 'Send another email'}\n </Button>\n\n <Link href={loginHref} className=\"block\">\n <Button className=\"w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]\">\n <ArrowLeft className=\"h-4 w-4 mr-2\" />\n Back to sign in\n </Button>\n </Link>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"bg-card border border-border rounded-xl p-8 space-y-6\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold text-[var(--timberwolf)] mb-2\">\n {title}\n </h1>\n <p className=\"text-sm text-muted-foreground\">{subtitle}</p>\n </div>\n\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {error && (\n <div\n id=\"forgot-error\"\n role=\"alert\"\n aria-live=\"polite\"\n className=\"bg-red-900/20 border border-red-700/30 rounded-lg p-3\"\n >\n <div className=\"flex items-center gap-2 text-red-400 text-sm\">\n <AlertCircle className=\"h-4 w-4 flex-shrink-0\" />\n <span>{error}</span>\n </div>\n </div>\n )}\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"email\" className=\"text-[var(--timberwolf)]\">\n Email\n </Label>\n <div className=\"relative\">\n <Input\n id=\"email\"\n type=\"email\"\n placeholder=\"you@example.com\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n className=\"h-11 pl-10\"\n disabled={loading}\n autoComplete=\"email\"\n autoFocus\n aria-invalid={!!error}\n aria-describedby={error ? 'forgot-error' : undefined}\n />\n <Mail className=\"h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\" />\n </div>\n </div>\n\n <Button\n type=\"submit\"\n className=\"w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]\"\n disabled={loading || cooldownSecondsLeft > 0}\n >\n {loading ? (\n <>\n <Loader2 className=\"h-4 w-4 mr-2 animate-spin\" />\n Sending email...\n </>\n ) : cooldownSecondsLeft > 0 ? (\n `Try again in ${cooldownSecondsLeft}s`\n ) : (\n 'Send reset link'\n )}\n </Button>\n </form>\n\n <div className=\"text-center text-sm\">\n <Link\n href={loginHref}\n className=\"inline-flex items-center gap-1.5 text-muted-foreground hover:text-[var(--timberwolf)] transition-colors\"\n >\n <ArrowLeft className=\"h-3.5 w-3.5\" />\n Back to sign in\n </Link>\n </div>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport Link from 'next/link'\nimport { useRouter } from 'next/navigation'\nimport {\n AlertCircle,\n CheckCircle,\n Eye,\n EyeOff,\n Loader2,\n Lock,\n} from 'lucide-react'\nimport { Button } from './button'\nimport { Input } from './input'\nimport { Label } from './label'\nimport { validatePassword, getAuthErrorMessage } from '../auth/shared'\nimport { createClient } from '../supabase/client'\n\nexport type ResetPasswordFormProps = {\n /** Where to send users after a successful reset (used for both back-link and success-redirect). Defaults to '/auth/login'. */\n loginHref?: string\n /** Pre-populated error from the surrounding page (e.g. URL ?error= param). */\n initialError?: string\n /** Milliseconds the success state lingers before auto-redirect. */\n redirectDelayMs?: number\n title?: string\n subtitle?: string\n}\n\nexport function ResetPasswordForm({\n loginHref = '/auth/login',\n initialError,\n redirectDelayMs = 3000,\n title = 'Reset password',\n subtitle = 'Enter a new password for your account.',\n}: ResetPasswordFormProps) {\n const [password, setPassword] = React.useState('')\n const [confirmPassword, setConfirmPassword] = React.useState('')\n const [showPassword, setShowPassword] = React.useState(false)\n const [showConfirmPassword, setShowConfirmPassword] = React.useState(false)\n const [error, setError] = React.useState(initialError ?? '')\n const [loading, setLoading] = React.useState(false)\n const [passwordReset, setPasswordReset] = React.useState(false)\n\n const router = useRouter()\n const [supabase] = React.useState(() => createClient())\n\n React.useEffect(() => {\n if (initialError) setError(initialError)\n }, [initialError])\n\n React.useEffect(() => {\n if (!passwordReset) return\n const id = setTimeout(() => {\n router.push(loginHref)\n }, redirectDelayMs)\n return () => clearTimeout(id)\n }, [passwordReset, router, loginHref, redirectDelayMs])\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n setError('')\n\n if (!password || !confirmPassword) {\n setError('Please fill in both fields')\n return\n }\n\n const { isValid, errors } = validatePassword(password)\n if (!isValid) {\n setError(errors[0])\n return\n }\n\n if (password !== confirmPassword) {\n setError('Passwords do not match')\n return\n }\n\n setLoading(true)\n\n try {\n const { error: updateError } = await supabase.auth.updateUser({\n password,\n })\n if (updateError) {\n setError(getAuthErrorMessage(updateError))\n } else {\n // Best-effort global sign-out. Password is already rotated server-side\n // so a sign-out failure must not mask success or strand the user.\n try {\n await supabase.auth.signOut({ scope: 'global' })\n } catch (signOutError) {\n console.warn(\n '[ResetPasswordForm] global sign-out failed after successful update',\n signOutError\n )\n }\n setPasswordReset(true)\n }\n } catch {\n setError('An unexpected error occurred. Please try again.')\n } finally {\n setLoading(false)\n }\n }\n\n if (passwordReset) {\n return (\n <div className=\"bg-card border border-border rounded-xl p-8 space-y-6 text-center\">\n <div className=\"flex justify-center\">\n <div className=\"h-12 w-12 rounded-full bg-[var(--timberwolf)]/10 border border-[var(--timberwolf)]/20 flex items-center justify-center\">\n <CheckCircle className=\"h-6 w-6 text-[var(--timberwolf)]\" />\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <h1 className=\"text-2xl font-bold text-[var(--timberwolf)]\">\n Password updated\n </h1>\n <p className=\"text-sm text-muted-foreground\">\n Redirecting you to sign in…\n </p>\n </div>\n\n <Link href={loginHref} className=\"block pt-2\">\n <Button className=\"w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]\">\n Continue to sign in\n </Button>\n </Link>\n </div>\n )\n }\n\n return (\n <div className=\"bg-card border border-border rounded-xl p-8 space-y-6\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-bold text-[var(--timberwolf)] mb-2\">\n {title}\n </h1>\n <p className=\"text-sm text-muted-foreground\">{subtitle}</p>\n </div>\n\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {error && (\n <div\n id=\"reset-error\"\n role=\"alert\"\n aria-live=\"polite\"\n className=\"bg-red-900/20 border border-red-700/30 rounded-lg p-3\"\n >\n <div className=\"flex items-center gap-2 text-red-400 text-sm\">\n <AlertCircle className=\"h-4 w-4 flex-shrink-0\" />\n <span>{error}</span>\n </div>\n </div>\n )}\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"password\" className=\"text-[var(--timberwolf)]\">\n New password\n </Label>\n <div className=\"relative\">\n <Input\n id=\"password\"\n type={showPassword ? 'text' : 'password'}\n placeholder=\"Enter a new password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n className=\"h-11 pl-10 pr-10\"\n disabled={loading}\n autoComplete=\"new-password\"\n autoFocus\n aria-invalid={!!error}\n aria-describedby={error ? 'reset-error' : undefined}\n />\n <Lock className=\"h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\" />\n <button\n type=\"button\"\n onClick={() => setShowPassword((prev) => !prev)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-[var(--timberwolf)]\"\n disabled={loading}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n aria-pressed={showPassword}\n >\n {showPassword ? (\n <EyeOff className=\"h-4 w-4\" />\n ) : (\n <Eye className=\"h-4 w-4\" />\n )}\n </button>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label\n htmlFor=\"confirmPassword\"\n className=\"text-[var(--timberwolf)]\"\n >\n Confirm new password\n </Label>\n <div className=\"relative\">\n <Input\n id=\"confirmPassword\"\n type={showConfirmPassword ? 'text' : 'password'}\n placeholder=\"Re-enter your new password\"\n value={confirmPassword}\n onChange={(e) => setConfirmPassword(e.target.value)}\n className=\"h-11 pl-10 pr-10\"\n disabled={loading}\n autoComplete=\"new-password\"\n aria-invalid={!!error}\n aria-describedby={error ? 'reset-error' : undefined}\n />\n <Lock className=\"h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\" />\n <button\n type=\"button\"\n onClick={() => setShowConfirmPassword((prev) => !prev)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-[var(--timberwolf)]\"\n disabled={loading}\n aria-label={\n showConfirmPassword ? 'Hide password' : 'Show password'\n }\n aria-pressed={showConfirmPassword}\n >\n {showConfirmPassword ? (\n <EyeOff className=\"h-4 w-4\" />\n ) : (\n <Eye className=\"h-4 w-4\" />\n )}\n </button>\n </div>\n </div>\n\n <p className=\"text-xs text-muted-foreground\">\n At least 8 characters with an uppercase letter, a lowercase letter,\n and a number.\n </p>\n\n <Button\n type=\"submit\"\n className=\"w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]\"\n disabled={loading}\n >\n {loading ? (\n <>\n <Loader2 className=\"h-4 w-4 mr-2 animate-spin\" />\n Updating password...\n </>\n ) : (\n 'Update password'\n )}\n </Button>\n </form>\n\n <div className=\"text-center text-sm\">\n <Link\n href={loginHref}\n className=\"text-muted-foreground hover:text-[var(--timberwolf)] transition-colors\"\n >\n Back to sign in\n </Link>\n </div>\n </div>\n )\n}\n"],"mappings":"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","names":["React","jsx","cva","jsx","cva","React","cva","jsx","cva","React","jsx","React","jsx","jsxs","React","useMotionTemplate","useMotionValue","motion","jsx","jsxs","useState","motion","useMotionValue","Fragment","jsx","jsxs","AnimatePresence","motion","useState","jsx","jsxs","useState","AnimatePresence","motion","jsx","jsxs","useState","AnimatePresence","motion","useMotionValue","motion","useMotionTemplate","useEffect","useState","jsx","jsxs","React","jsx","React","jsx","className","props","React","jsx","jsxs","formatDate","React","jsx","jsxs","React","CalendarIcon","jsx","jsxs","CalendarIcon","React","Fragment","jsx","jsxs","config","jsx","React","jsx","Separator","React","jsx","React","jsx","React","jsx","CollapsibleTrigger","CollapsibleContent","React","cva","jsx","jsxs","cva","React","jsx","React","jsx","Tooltip","React","jsx","jsx","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","Fragment","jsx","jsxs","React","Image","Link","jsx","jsxs","Link","Image","Image","Fragment","jsx","jsxs","DEFAULT_SOCIALS","Image","React","jsx","jsxs","NewsletterForm","Link","jsx","jsxs","FooterLinkItem","Link","NewsletterForm","React","Link","createContext","useContext","useEffect","useState","useMemo","useCallback","useRef","jsx","createContext","useContext","Fragment","jsx","jsxs","Link","React","Link","AlertCircle","Loader2","Mail","Fragment","jsx","jsxs","Link","AlertCircle","Mail","Loader2","React","Link","useRouter","AlertCircle","CheckCircle","Eye","EyeOff","Loader2","Lock","Fragment","jsx","jsxs","useRouter","CheckCircle","Link","AlertCircle","Lock","EyeOff","Eye","Loader2"]}