@pixonui/react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +96 -0
- package/dist/index.d.mts +1483 -0
- package/dist/index.d.ts +1483 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +70 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/cn.ts","../src/components/button/PrimaryButton.tsx","../src/utils/Slot.tsx","../src/components/button/Button.tsx","../src/components/button/GlowButton.tsx","../src/components/card/MetricCard.tsx","../src/components/typography/Text.tsx","../src/components/typography/Heading.tsx","../src/components/typography/TextGradient.tsx","../src/components/typography/ShinyText.tsx","../src/hooks/useInView.ts","../src/components/feedback/Reveal.tsx","../src/components/typography/HeroText.tsx","../src/components/typography/LetterPullup.tsx","../src/components/form/Label.tsx","../src/components/form/TextInput.tsx","../src/components/form/Checkbox.tsx","../src/components/form/Switch.tsx","../src/components/form/Select.tsx","../src/hooks/useFloating.ts","../src/components/overlay/Popover.tsx","../src/components/form/Combobox.tsx","../src/components/form/Slider.tsx","../src/components/data-display/Calendar.tsx","../src/components/form/DatePicker.tsx","../src/components/data-display/ScrollArea.tsx","../src/components/form/DateTimePicker.tsx","../src/components/form/Textarea.tsx","../src/components/form/RadioGroup.tsx","../src/components/form/Form.tsx","../src/components/feedback/Toast.tsx","../src/components/feedback/ToastProvider.tsx","../src/components/feedback/Alert.tsx","../src/components/feedback/Progress.tsx","../src/components/data-display/Avatar.tsx","../src/components/data-display/Accordion.tsx","../src/components/navigation/Tabs.tsx","../src/components/navigation/Sidebar.tsx","../src/primitives/Surface.tsx","../src/components/navigation/Navbar.tsx","../src/components/overlay/DropdownMenu.tsx","../src/components/navigation/UserMenu.tsx","../src/components/navigation/Breadcrumb.tsx","../src/components/navigation/Pagination.tsx","../src/components/overlay/Modal.tsx","../src/components/overlay/Dialog.tsx","../src/components/overlay/Drawer.tsx","../src/components/overlay/Tooltip.tsx","../src/components/overlay/Command.tsx","../src/hooks/useToast.ts","../src/hooks/useTimer.ts","../src/hooks/useIntersection.ts","../src/hooks/useForm.ts","../src/hooks/useResponsive.ts","../src/hooks/useScroll.ts","../src/primitives/ScrollProgress.tsx","../src/primitives/Badge.tsx","../src/primitives/Divider.tsx","../src/primitives/Kbd.tsx","../src/components/feedback/EmptyState.tsx","../src/components/feedback/Skeleton.tsx","../src/components/data-display/Table.tsx","../src/components/data-display/DataTable.tsx","../src/components/data-display/kanban/useKanbanTasks.ts","../src/components/data-display/kanban/useKanbanDragAndDrop.ts","../src/components/data-display/kanban/useKanbanBoardScroll.ts","../src/components/data-display/kanban/KanbanCard.tsx","../src/components/data-display/kanban/KanbanColumnContent.tsx","../src/components/data-display/Kanban.tsx","../src/components/form/FileDropzone.tsx","../src/components/data-display/KanbanTaskModal.tsx","../src/components/data-display/KanbanFilterBar.tsx","../src/components/data-display/KanbanCalendarView.tsx","../src/components/card/Card.tsx","../src/components/data-display/Image.tsx","../src/components/layout/Container.tsx","../src/components/layout/Stack.tsx","../src/components/layout/Grid.tsx","../src/components/layout/Background.tsx","../src/theme/ThemeProvider.tsx","../src/theme/ThemeToggle.tsx","../src/components/data-display/chart/Chart.tsx","../src/components/data-display/chart/BarChart.tsx","../src/components/data-display/chart/AreaChart.tsx","../src/components/data-display/chart/LineChart.tsx","../src/components/data-display/chart/PieChart.tsx","../src/components/data-display/chart/RadarChart.tsx","../src/components/data-display/chart/Sparkline.tsx","../src/components/data-display/chart/YAxis.tsx","../src/components/data-display/UserPreview.tsx","../src/components/data-display/Timeline.tsx","../src/components/data-display/Tree.tsx","../src/components/data-display/Terminal.tsx","../src/components/data-display/Marquee.tsx","../src/components/data-display/StatusDot.tsx","../src/components/form/OTPInput.tsx","../src/components/form/NumberInput.tsx","../src/components/form/ToggleGroup.tsx","../src/components/feedback/Rating.tsx","../src/components/navigation/Stepper.tsx","../src/components/layout/Spotlight.tsx","../src/components/ai/AIPromptInput.tsx","../src/components/ai/AIResponse.tsx","../src/components/chat/ChatLayout.tsx","../src/components/chat/ChatSidebar.tsx","../src/components/chat/ChatHeader.tsx","../src/components/feedback/Motion.tsx","../src/components/chat/MessageBubble.tsx","../src/components/chat/MessageList.tsx","../src/components/chat/ChatInput.tsx","../src/components/data-display/Separator.tsx","../src/components/chat/ChatProfile.tsx","../src/components/feedback/MotionGroup.tsx","../src/components/feedback/TextMotion.tsx","../src/components/feedback/Parallax.tsx","../src/components/feedback/Magnetic.tsx","../src/components/feedback/NumberTicker.tsx","../src/components/data-display/Collapse.tsx","../src/components/feedback/PageLoader.tsx","../src/components/feedback/PageTransition.tsx"],"names":["cn","inputs","twMerge","clsx","PrimaryButton","React","children","className","leftIcon","rightIcon","props","ref","jsxs","jsx","Slot","pt","forwardedRef","child","node","buttonVariants","cva","Button","variant","size","shape","shadow","asChild","isLoading","disabled","GlowButton","localRef","useRef","handleMove","e","el","rect","x","y","TokenBadge","accent","map","AccentGlow","SparkWave","color","MetricCard","icon","value","subtext","showWave","onClick","setCenter","r","waveColors","waveColor","Text","Component","weight","code","Heading","TextGradient","from","to","via","direction","animate","ShinyText","shimmerColor","duration","baseColor","useInView","options","isInView","setIsInView","useState","hasAnimated","setHasAnimated","enabled","useEffect","element","observer","entry","Reveal","delay","boxColor","directionClasses","HeroText","title","highlight","subtitle","gradient","glow","content","LetterPullup","text","letters","letter","Label","required","inputVariants","TextInput","containerClassName","label","errorMsg","id","inputId","hasError","Checkbox","error","checked","defaultChecked","onChange","isChecked","setIsChecked","handleClick","newValue","Switch","Select","name","defaultValue","placeholder","isOpen","setIsOpen","internalValue","setInternalValue","activeIndex","setActiveIndex","containerRef","isControlled","currentValue","selectedOption","opt","index","handleClickOutside","event","handleSelect","optionValue","handleKeyDown","prev","option","useFloating","triggerRef","contentRef","side","align","sideOffset","alignOffset","position","setPosition","isPositioned","setIsPositioned","updatePosition","useCallback","triggerRect","contentRect","top","left","padding","viewportWidth","viewportHeight","useLayoutEffect","resizeObserver","PopoverContext","createContext","Popover","open","onOpenChange","internalOpen","setInternalOpen","newOpen","PopoverTrigger","context","useContext","PopoverContent","handleOutsideClick","getTransformOrigin","createPortal","ComboboxContext","Combobox","controlledValue","onValueChange","filter","search","usePopover","searchTerm","setSearchTerm","items","setItems","handleValueChange","registerItem","next","visibleItems","useMemo","_","item","hasVisibleItems","ComboboxTrigger","ComboboxContent","ComboboxInput","ComboboxList","ComboboxEmpty","ComboboxItem","textValue","isVisible","isSelected","itemIndex","isActive","Slider","min","max","step","trackRef","percentage","clientX","width","steps","handleMouseDown","handleMouseMove","handleMouseUp","handleTouchStart","startTouch","handleTouchMove","moveTouch","handleTouchEnd","DAYS","MONTHS","Calendar","minDate","maxDate","currentDate","setCurrentDate","viewDate","setViewDate","getDaysInMonth","year","month","getFirstDayOfMonth","handlePrevMonth","handleNextMonth","handleDateClick","day","newDate","isToday","today","renderDays","daysInMonth","firstDay","days","i","selected","ChevronLeft","ChevronRight","DatePicker","date","setDate","formatDate","d","CalendarIcon","ScrollArea","orientation","scrollbarSize","DateTimePicker","hours","setHours","minutes","setMinutes","handleDateSelect","updatedDate","handleTimeChange","type","val","num","newHours","newMinutes","baseDate","formatDateTime","Clock","Textarea","generatedId","RadioGroupContext","RadioGroup","RadioGroupItem","isDisabled","FormItemContext","FormItem","FormLabel","FormControl","rest","FormDescription","FormMessage","Icons","Toast","description","onDismiss","timer","ToastContext","ToastProvider","toasts","setToasts","dismiss","toast","updateToast","t","promise","loadingOptions","data","successOptions","err","errorOptions","Alert","Icon","Progress","isIndeterminate","hasStripe","indicatorClassName","variants","sizeClasses","Avatar","src","alt","fallback","imageError","setImageError","AccordionContext","Accordion","itemValue","arrayValue","v","AccordionItemContext","AccordionItem","AccordionTrigger","ChevronDown","AccordionContent","TabsContext","Tabs","TabsList","TabsTrigger","TabsContent","Sidebar","SidebarHeader","SidebarContent","SidebarFooter","SidebarItem","active","badge","SidebarGroup","surfaceVariants","Surface","maxWidthClasses","Navbar","logo","links","actions","maxWidth","isScrolled","setIsScrolled","isMobileMenuOpen","setIsMobileMenuOpen","handleScroll","link","X","Menu","DropdownMenuContext","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","currentIndex","nextIndex","DropdownMenuItem","DropdownMenuLabel","DropdownMenuSeparator","UserMenu","avatarSrc","avatarFallback","Settings","User","LogOut","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis","Pagination","PaginationContent","PaginationItem","PaginationLink","PaginationPrevious","PaginationNext","PaginationEllipsis","Modal","onClose","dialogRef","dialog","handleCancel","ModalHeader","ModalFooter","ModalTitle","ModalDescription","Dialog","DialogHeader","DialogFooter","DialogTitle","DialogDescription","Drawer","setIsVisible","shouldRender","setShouldRender","overlayRef","handleEscape","handleBackdropClick","positionClasses","translateClasses","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription","Tooltip","timeoutRef","floatingPosition","showTooltip","hideTooltip","animationClasses","Command","CommandDialog","CommandInput","Search","CommandList","CommandEmpty","CommandGroup","heading","CommandItem","CommandShortcut","useToast","useTimer","initialSeconds","seconds","setSeconds","setIsActive","intervalRef","start","pause","reset","totalSeconds","secs","useIntersection","elementRef","threshold","root","rootMargin","freezeOnceVisible","setEntry","frozen","updateEntry","observerParams","useForm","initialValues","onSubmit","values","setValues","errors","setErrors","isSubmitting","setIsSubmitting","handleChange","handleSubmit","form","newErrors","input","register","breakpoints","useMediaQuery","query","matches","setMatches","media","listener","useBreakpoint","breakpoint","useContainerQuery","setSize","entries","useScroll","height","ScrollProgress","scrollProgressY","badgeVariants","Badge","Divider","Kbd","EmptyState","action","Info","Skeleton","Table","wrapperClassName","rounded","maxHeight","TableHeader","TableBody","TableRow","hoverable","optimized","TableHead","TableCell","DataTable","columns","searchPlaceholder","searchKeys","onRowClick","setSearch","sortConfig","setSortConfig","processedData","filtered","key","a","aValue","bValue","handleSort","col","ArrowUp","ArrowDown","ArrowUpDown","idx","useKanbanTasks","tasks","groupBy","pageSize","visibleCounts","setVisibleCounts","sortedTasks","b","field","comparison","priorityOrder","aPrio","bPrio","tasksByGroupAndColumn","groups","task","groupValue","group","defaultGroup","handleLoadMore","columnId","useKanbanDragAndDrop","selectedTaskIds","onTaskMove","onColumnMove","onTaskDrop","onTaskDragStart","onTaskDragEnd","draggedTaskId","setDraggedTaskId","draggedColumnId","setDraggedColumnId","dragOverColumnId","setDragOverColumnId","dragOverTaskId","setDragOverTaskId","dropPosition","setDropPosition","touchTimeout","lastTouchPos","handleDragStart","handleDragEnd","taskId","midpoint","toColumnId","toTaskId","fromColumnId","touch","target","columnEl","taskEl","useKanbanBoardScroll","isDraggingBoard","setIsDraggingBoard","startX","setStartX","scrollLeft","setScrollLeft","boardRef","walk","KanbanCard","activeTimerTaskId","selectable","cardClassName","onTaskClick","onTaskSelectionChange","onTaskRemove","onTaskTimerToggle","renderCard","Fragment","getPriorityColor","priority","newSelection","Lock","Trash2","GripVertical","tag","Pause","Play","MessageSquare","Paperclip","KanbanColumnContent","column","columnMap","groupName","visibleCount","quickAddColumnId","quickAddValue","handleDragOver","handleDrop","handleSetQuickAdd","handleQuickAdd","setQuickAddValue","setQuickAddColumnId","onTaskFullAdd","columnTasks","visibleTasks","hasMore","Plus","LayoutGrid","Kanban","onTaskAdd","onColumnAction","columnClassName","accentColor","showTaskCount","showDividers","columnHeight","handleBoardMouseDown","handleBoardMouseMove","handleBoardMouseUp","handleTaskClickInternal","colIndex","c","taskIndex","currentGroupName","nextTask","prevTask","isOverLimit","AlertTriangle","MoreHorizontal","SortAsc","CalendarDays","Archive","dropzoneVariants","FileDropzone","onDrop","maxFiles","maxSize","isDragActive","setIsDragActive","files","setFiles","setError","inputRef","handleDragLeave","validateFiles","fileList","f","droppedFiles","selectedFiles","removeFile","newFiles","Upload","file","FileIcon","KanbanTaskModal","onSave","setTitle","setDescription","setPriority","tags","setTags","tagInput","setTagInput","handleSave","addTag","removeTag","tagToRemove","KanbanFilterBar","onSearchChange","onFilterChange","priorityOptions","tagOptions","assigneeOptions","activeFilters","setActiveFilters","toggleFilter","category","current","newFilters","clearFilters","activeCount","FilterPopover","onSelect","Filter","Check","KanbanCalendarView","onAddTask","firstDayOfMonth","totalDays","startDay","prevMonth","nextMonth","monthNames","getTasksForDate","taskDate","currentYear","dateTasks","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Image","onLoad","onError","setIsLoading","setHasError","handleLoad","handleError","Container","Stack","gap","justify","wrap","style","Grid","cols","sm","md","lg","xl","Background","noise","patternColor","mask","followMouse","bgColor","getBackgroundStyle","baseStyle","effectiveColor","maskStyle","initialState","ThemeProviderContext","ThemeProvider","defaultTheme","storageKey","theme","setTheme","mediaQuery","applySystemTheme","useTheme","ThemeToggle","Sun","Moon","ChartContext","useChart","normalize","ChartContainer","hoveredIndex","setHoveredIndex","containerWidth","setContainerWidth","maxValue","ChartGrid","lines","chartHeight","ChartXAxis","itemWidth","point","ChartTooltip","renderTooltip","ChartSkeleton","BarChart","showValues","animationDelay","onValueClick","chartWidth","barWidth","colors","barHeight","isHovered","AreaChart","points","linePath","p","areaPath","LineChart","curve","strokeWidth","strokeColor","p0","p1","cp1x","cp1y","cp2x","cp2y","PieChart","innerRadius","padAngle","showLabels","radius","centerX","centerY","total","acc","cur","currentAngle","slices","angle","startAngle","endAngle","getCoordinatesForPercent","percent","slice","effectiveStartAngle","effectiveEndAngle","startY","endX","endY","largeArcFlag","rInner","innerStartX","innerStartY","innerEndX","innerEndY","pathData","midAngle","labelRadius","labelX","labelY","RadarChart","keys","userMaxValue","center","k","angleSlice","colorMap","strokeMap","level","levelRadius","kIndex","colorName","fill","stroke","Sparkline","range","fillPath","ChartYAxis","ticks","format","userPreviewVariants","UserPreview","user","onFollow","onMessage","stat","timelineItemVariants","TimelineItem","status","isLast","Timeline","TreeNodeItem","depth","hasChildren","handleToggle","FolderOpen","Folder","File","Tree","Terminal","TerminalLine","prefix","Marquee","pauseOnHover","speed","speeds","statusDotVariants","StatusDot","otpInputVariants","OTPInput","length","onComplete","localValue","setLocalValue","inputsRef","newVal","newLocalValue","stringValue","handlePaste","pastedData","char","digit","numberInputVariants","NumberInput","handleDecrement","handleIncrement","Minus","toggleGroupVariants","toggleItemVariants","ToggleGroup","fullWidth","Rating","readOnly","hoverValue","setHoverValue","sizes","isFilled","Star","Stepper","currentStep","onStepClick","isCompleted","isCurrent","isClickable","Spotlight","divRef","aiPromptInputVariants","AIPromptInput","isGenerating","onAttach","onFilesSelected","onStop","onMic","maxLength","footer","attachments","onRemoveAttachment","accept","multiple","textareaRef","fileInputRef","adjustHeight","handleInput","handleAttachClick","handleFileChange","att","Mic","Square","Sparkles","aiResponseVariants","AIResponse","onCopy","onRegenerate","onFeedback","onShare","onEdit","timestamp","sources","model","usage","source","ExternalLink","Copy","Share","Edit","RefreshCw","ThumbsUp","ThumbsDown","ChatLayout","ChatSidebar","conversations","activeId","onNewChat","chat","ChatHeader","onBack","onInfo","ArrowLeft","Phone","Video","MoreVertical","motionVariants","Motion","preset","viewport","visible","once","shouldShow","initialClasses","visibleClasses","MessageBubble","message","isOwn","showAvatar","showStatus","onReply","onReact","onDelete","Reply","Smile","CheckCheck","emoji","users","MessageList","messages","currentUserId","onLoadMore","isLoadingMore","bottomRef","shouldAutoScroll","setShouldAutoScroll","isAtBottom","groupedMessages","msgs","msg","prevMsg","nextMsg","isLastInGroup","ChatInput","onSend","setContent","isUploading","setIsUploading","mentionSearch","setMentionSearch","mentionIndex","setMentionIndex","filteredUsers","u","mentionMatch","insertMention","textBefore","textAfter","handleSend","AtSign","Send","separatorVariants","Separator","decorative","ChatProfile","Bell","Ban","MotionGroup","stagger","TextMotion","Parallax","windowHeight","translate","Magnetic","strength","clientY","distanceX","distanceY","handleMouseLeave","NumberTicker","decimalPlaces","displayValue","setDisplayValue","startTimeRef","progress","timeout","Collapse","controlledOpen","defaultOpen","triggerClassName","contentClassName","uncontrolledOpen","setUncontrolledOpen","newState","PageLoader","fullscreen","baseStyles","Loader2","PageTransition","useViewTransition","currentPreset"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClassValue, clsx } from 'clsx';\r\nimport { twMerge } from 'tailwind-merge';\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface PrimaryButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n}\r\n\r\nexport const PrimaryButton = React.forwardRef<HTMLButtonElement, PrimaryButtonProps>(\r\n ({ children, className, leftIcon, rightIcon, ...props }, ref) => {\r\n return (\r\n <button\r\n ref={ref}\r\n type={props.type ?? 'button'}\r\n className={cn(\r\n 'group relative inline-flex items-center justify-center gap-2 rounded-2xl px-5 py-3',\r\n 'bg-gradient-to-r from-blue-600 via-purple-600 to-blue-600',\r\n 'text-white font-semibold tracking-tight',\r\n 'shadow-[0_12px_40px_rgba(99,102,241,.45)]',\r\n 'transition-all duration-300',\r\n 'hover:scale-[1.03] hover:shadow-[0_18px_60px_rgba(99,102,241,.6)]',\r\n 'active:scale-[0.98]',\r\n 'disabled:opacity-50 disabled:cursor-not-allowed',\r\n 'focus:outline-none focus:ring-2 focus:ring-purple-400/40',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"pointer-events-none absolute inset-0 rounded-2xl bg-gradient-to-r from-white/18 via-white/5 to-white/18 opacity-0 blur-lg transition-opacity duration-300 group-hover:opacity-100\" />\r\n <span className=\"relative inline-flex items-center gap-2\">\r\n {leftIcon}\r\n {children}\r\n {rightIcon}\r\n </span>\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nPrimaryButton.displayName = 'PrimaryButton';","import * as React from 'react';\r\nimport { cn } from './cn';\r\n\r\ninterface SlotProps extends React.HTMLAttributes<HTMLElement> {\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const Slot = React.forwardRef<HTMLElement, SlotProps>(\r\n ({ children, ...props }, forwardedRef) => {\r\n if (!React.isValidElement(children)) {\r\n return null;\r\n }\r\n\r\n const child = children as React.ReactElement & { ref?: React.Ref<HTMLElement> };\r\n\r\n return React.cloneElement(child, {\r\n ...props,\r\n ...child.props,\r\n ref: (node: HTMLElement | null) => {\r\n // Handle forwardedRef\r\n if (typeof forwardedRef === 'function') {\r\n forwardedRef(node);\r\n } else if (forwardedRef) {\r\n (forwardedRef as React.MutableRefObject<HTMLElement | null>).current = node;\r\n }\r\n\r\n // Handle children's own ref\r\n const { ref } = child;\r\n if (typeof ref === 'function') {\r\n ref(node);\r\n } else if (ref && 'current' in ref) {\r\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\r\n }\r\n },\r\n className: cn(props.className, child.props.className),\r\n });\r\n }\r\n);\r\n\r\nSlot.displayName = 'Slot';\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { Slot } from '../../utils/Slot';\r\nimport { cn } from '../../utils/cn';\r\n\r\nconst buttonVariants = cva(\r\n \"group relative inline-flex items-center justify-center font-semibold tracking-tight transition-all duration-300 focus:outline-none focus:ring-2 focus:ring-purple-400/40 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:scale-100 disabled:active:scale-100 hover:scale-[1.02] active:scale-[0.98]\",\r\n {\r\n variants: {\r\n variant: {\r\n primary: \"bg-gradient-to-r from-blue-600 via-purple-600 to-blue-600 text-white border-transparent\",\r\n secondary: \"bg-zinc-100 text-zinc-900 border border-zinc-200 hover:bg-zinc-200 dark:bg-white/[0.05] dark:text-white dark:border-white/10 dark:hover:bg-white/[0.10] dark:hover:border-white/20\",\r\n outline: \"bg-transparent text-zinc-900 border border-zinc-300 hover:bg-zinc-100 dark:text-white dark:border-white/20 dark:hover:bg-white/[0.05] dark:hover:border-white/30\",\r\n ghost: \"bg-transparent text-zinc-600 hover:text-zinc-900 hover:bg-zinc-100 dark:text-white/80 dark:hover:text-white dark:hover:bg-white/[0.05] border-transparent\",\r\n danger: \"bg-rose-500/10 text-rose-600 border border-rose-500/20 hover:bg-rose-500/20 hover:border-rose-500/30 hover:text-rose-700 dark:text-rose-400 dark:hover:text-rose-300\",\r\n success: \"bg-emerald-500/10 text-emerald-600 border border-emerald-500/20 hover:bg-emerald-500/20 hover:border-emerald-500/30 hover:text-emerald-700 dark:text-emerald-400 dark:hover:text-emerald-300\",\r\n alert: \"bg-amber-500/10 text-amber-600 border border-amber-500/20 hover:bg-amber-500/20 hover:border-amber-500/30 hover:text-amber-700 dark:text-amber-400 dark:hover:text-amber-300\",\r\n },\r\n size: {\r\n sm: \"h-9 px-3 text-xs gap-1.5\",\r\n md: \"h-11 px-5 text-sm gap-2\",\r\n lg: \"h-14 px-8 text-base gap-3\",\r\n icon: \"h-10 w-10 p-0 flex items-center justify-center\",\r\n },\r\n shape: {\r\n default: \"rounded-2xl\",\r\n pill: \"rounded-full\",\r\n square: \"rounded-lg\",\r\n },\r\n shadow: {\r\n true: \"\",\r\n false: \"\",\r\n },\r\n },\r\n compoundVariants: [\r\n {\r\n variant: \"primary\",\r\n shadow: true,\r\n class: \"shadow-[0_12px_40px_rgba(99,102,241,.45)] hover:shadow-[0_18px_60px_rgba(99,102,241,.6)]\",\r\n },\r\n {\r\n variant: \"secondary\",\r\n shadow: true,\r\n class: \"shadow-sm\",\r\n }\r\n ],\r\n defaultVariants: {\r\n variant: \"primary\",\r\n size: \"md\",\r\n shape: \"default\",\r\n shadow: true,\r\n },\r\n }\r\n);\r\n\r\nexport interface ButtonProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof buttonVariants> {\r\n /** Whether the button should be rendered as a child component using Slot */\r\n asChild?: boolean;\r\n /** Icon to display on the left side of the button text */\r\n leftIcon?: React.ReactNode;\r\n /** Icon to display on the right side of the button text */\r\n rightIcon?: React.ReactNode;\r\n /** Whether the button is in a loading state, showing a spinner and disabling interaction */\r\n isLoading?: boolean;\r\n}\r\n\r\n/**\r\n * A versatile button component with multiple variants, sizes, and states.\r\n * Supports glassmorphism, gradients, and icons.\r\n */\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ \r\n className, \r\n variant, \r\n size, \r\n shape,\r\n shadow,\r\n asChild = false,\r\n leftIcon, \r\n rightIcon, \r\n isLoading,\r\n children,\r\n disabled,\r\n ...props \r\n }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n \r\n return (\r\n <Comp\r\n ref={ref}\r\n disabled={disabled || isLoading}\r\n className={cn(buttonVariants({ variant, size, shape, shadow, className }))}\r\n {...props}\r\n >\r\n {variant === 'primary' && !asChild && (\r\n <span className=\"pointer-events-none absolute inset-0 rounded-[inherit] bg-gradient-to-r from-white/18 via-white/5 to-white/18 opacity-0 blur-lg transition-opacity duration-300 group-hover:opacity-100\" />\r\n )}\r\n \r\n <span className=\"relative inline-flex items-center justify-center\">\r\n {isLoading && (\r\n <svg className=\"animate-spin -ml-1 mr-2 h-4 w-4 text-current\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\r\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\r\n </svg>\r\n )}\r\n {!isLoading && leftIcon && <span className={cn(\"mr-2\", size === 'sm' && \"mr-1.5\")}>{leftIcon}</span>}\r\n {children}\r\n {!isLoading && rightIcon && <span className={cn(\"ml-2\", size === 'sm' && \"ml-1.5\")}>{rightIcon}</span>}\r\n </span>\r\n </Comp>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = 'Button';\r\n","import React, { useRef } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface GlowButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n}\r\n\r\nexport const GlowButton = React.forwardRef<HTMLButtonElement, GlowButtonProps>(\r\n ({ children, className, leftIcon, rightIcon, ...props }, ref) => {\r\n const localRef = useRef<HTMLButtonElement>(null);\r\n\r\n const handleMove = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n const el = localRef.current;\r\n if (!el) return;\r\n const rect = el.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n el.style.setProperty('--mouse-x', `${x}px`);\r\n el.style.setProperty('--mouse-y', `${y}px`);\r\n };\r\n\r\n // Merge refs\r\n React.useImperativeHandle(ref, () => localRef.current as HTMLButtonElement);\r\n\r\n return (\r\n <button\r\n ref={localRef}\r\n onMouseMove={handleMove}\r\n type={props.type ?? 'button'}\r\n className={cn(\r\n 'group relative inline-flex items-center justify-center gap-2 rounded-2xl px-6 py-3',\r\n 'bg-zinc-100 border border-zinc-200 text-zinc-900',\r\n 'dark:bg-white/[0.03] dark:border-white/10 dark:text-white',\r\n 'font-semibold tracking-tight overflow-hidden',\r\n 'transition-all duration-300',\r\n 'hover:bg-zinc-200 dark:hover:bg-white/[0.05] hover:scale-[1.02]',\r\n 'active:scale-[0.98]',\r\n 'focus:outline-none focus:ring-2 focus:ring-purple-400/40',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {/* Mouse follow glow */}\r\n <div \r\n className=\"pointer-events-none absolute -inset-px opacity-0 transition-opacity duration-300 group-hover:opacity-100\"\r\n style={{\r\n background: 'radial-gradient(600px circle at var(--mouse-x) var(--mouse-y), rgba(255,255,255,0.4), transparent 40%)'\r\n }}\r\n />\r\n \r\n {/* Border glow */}\r\n <div \r\n className=\"pointer-events-none absolute -inset-px rounded-2xl opacity-0 transition-opacity duration-300 group-hover:opacity-100\"\r\n style={{\r\n background: 'radial-gradient(300px circle at var(--mouse-x) var(--mouse-y), rgba(255,255,255,0.6), transparent 40%)',\r\n maskImage: 'linear-gradient(#fff, #fff), linear-gradient(#fff, #fff)',\r\n maskClip: 'content-box, border-box',\r\n maskComposite: 'exclude',\r\n WebkitMaskComposite: 'xor',\r\n padding: '1px'\r\n }}\r\n />\r\n\r\n <span className=\"relative inline-flex items-center gap-2 z-10\">\r\n {leftIcon}\r\n {children}\r\n {rightIcon}\r\n </span>\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nGlowButton.displayName = 'GlowButton';\r\n","import React, { useRef } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\n// Internal components for MetricCard\r\nfunction TokenBadge({\r\n accent = 'teal',\r\n children,\r\n}: {\r\n accent?: 'teal' | 'amber' | 'violet' | 'blue' | 'rose' | 'emerald' | 'indigo';\r\n children: React.ReactNode;\r\n}) {\r\n const map: Record<string, string> = {\r\n teal: 'bg-teal-500/90',\r\n amber: 'bg-amber-400/95',\r\n violet: 'bg-violet-500/90',\r\n blue: 'bg-blue-500/90',\r\n rose: 'bg-rose-500/90',\r\n emerald: 'bg-emerald-500/90',\r\n indigo: 'bg-indigo-500/90',\r\n };\r\n\r\n return (\r\n <div className={cn('flex h-11 w-11 items-center justify-center rounded-2xl', map[accent] ?? map.teal)}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nfunction AccentGlow({ accent = 'teal' }: { accent?: 'teal' | 'amber' | 'violet' | 'blue' | 'rose' | 'emerald' | 'indigo' }) {\r\n const map: Record<string, string> = {\r\n teal: 'from-teal-400/25 via-teal-400/10 to-transparent',\r\n amber: 'from-amber-300/25 via-amber-300/10 to-transparent',\r\n violet: 'from-violet-400/25 via-violet-400/10 to-transparent',\r\n blue: 'from-blue-400/25 via-blue-400/10 to-transparent',\r\n rose: 'from-rose-400/25 via-rose-400/10 to-transparent',\r\n emerald: 'from-emerald-400/25 via-emerald-400/10 to-transparent',\r\n indigo: 'from-indigo-400/25 via-indigo-400/10 to-transparent',\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'pointer-events-none absolute -right-12 top-1/2 h-40 w-48 -translate-y-1/2 rotate-12',\r\n 'bg-gradient-to-l blur-2xl',\r\n map[accent] ?? map.teal\r\n )}\r\n />\r\n );\r\n}\r\n\r\nfunction SparkWave({ color = 'currentColor' }: { color?: string }) {\r\n return (\r\n <svg\r\n viewBox=\"0 0 120 40\"\r\n className=\"h-6 w-16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M2 22c10 0 10-10 20-10s10 10 20 10 10-10 20-10 10 10 20 10 10-10 20-10\"\r\n stroke={color}\r\n strokeWidth=\"4\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n opacity=\"0.95\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nexport interface MetricCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n accent?: 'teal' | 'amber' | 'violet' | 'blue' | 'rose' | 'emerald' | 'indigo';\r\n icon: React.ReactNode;\r\n value: React.ReactNode;\r\n subtext?: React.ReactNode;\r\n showWave?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport const MetricCard = React.forwardRef<HTMLDivElement, MetricCardProps>(\r\n ({ accent = 'teal', icon, value, subtext, showWave = false, onClick, className, ...props }, ref) => {\r\n const localRef = useRef<HTMLDivElement | null>(null);\r\n\r\n const setCenter = () => {\r\n const el = localRef.current;\r\n if (!el) return;\r\n const r = el.getBoundingClientRect();\r\n el.style.setProperty('--x', `${Math.round(r.width / 2)}px`);\r\n el.style.setProperty('--y', `${Math.round(r.height / 2)}px`);\r\n };\r\n\r\n const handleMove = (e: React.MouseEvent) => {\r\n const el = localRef.current;\r\n if (!el) return;\r\n const r = el.getBoundingClientRect();\r\n el.style.setProperty('--x', `${e.clientX - r.left}px`);\r\n el.style.setProperty('--y', `${e.clientY - r.top}px`);\r\n };\r\n\r\n const waveColors: Record<string, string> = {\r\n teal: 'rgba(45,212,191,.95)',\r\n amber: 'rgba(251,191,36,.95)',\r\n violet: 'rgba(167,139,250,.95)',\r\n blue: 'rgba(96,165,250,.95)',\r\n rose: 'rgba(251,113,133,.95)',\r\n emerald: 'rgba(52,211,153,.95)',\r\n indigo: 'rgba(129,140,248,.95)',\r\n };\r\n\r\n const waveColor = waveColors[accent] ?? waveColors.teal;\r\n\r\n return (\r\n <div\r\n ref={(node) => {\r\n localRef.current = node;\r\n if (typeof ref === 'function') ref(node);\r\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\r\n }}\r\n onMouseEnter={setCenter}\r\n onMouseMove={handleMove}\r\n onClick={onClick}\r\n className={cn(\r\n 'group relative overflow-hidden rounded-2xl',\r\n 'bg-white border border-gray-200 shadow-sm',\r\n 'dark:bg-transparent dark:bg-gradient-to-b dark:from-white/[0.06] dark:to-white/[0.03]',\r\n 'dark:border-white/[0.10]',\r\n 'dark:shadow-[0_18px_55px_rgba(0,0,0,.55)]',\r\n 'transition-transform duration-300 hover:scale-[1.015]',\r\n onClick && 'cursor-pointer',\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div\r\n className=\"pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100\"\r\n style={{\r\n background:\r\n 'radial-gradient(180px at var(--x, 50%) var(--y, 50%), rgba(255,255,255,.16), transparent 60%)',\r\n }}\r\n />\r\n <div className=\"pointer-events-none absolute inset-0 bg-[radial-gradient(220px_140px_at_18%_18%,rgba(255,255,255,.08),transparent_60%)]\" />\r\n <AccentGlow accent={accent} />\r\n\r\n <div className=\"relative p-5\">\r\n <div className=\"flex items-start justify-between gap-4\">\r\n <TokenBadge accent={accent}>{icon}</TokenBadge>\r\n </div>\r\n\r\n <div className=\"mt-4 flex items-end justify-between gap-4\">\r\n <div className=\"min-w-0\">\r\n <div className=\"truncate text-2xl font-semibold tracking-tight text-gray-900 dark:text-white\">{value}</div>\r\n {subtext ? <div className=\"mt-1 text-sm text-gray-500 dark:text-white/45\">{subtext}</div> : null}\r\n </div>\r\n {showWave ? <SparkWave color={waveColor} /> : null}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nMetricCard.displayName = 'MetricCard';","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface TextProps extends React.HTMLAttributes<HTMLElement> {\r\n as?: 'p' | 'span' | 'div' | 'label' | 'code';\r\n variant?: 'default' | 'muted' | 'subtle' | 'lead' | 'error' | 'success' | 'warning' | 'info';\r\n size?: 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl';\r\n weight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\r\n code?: boolean;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\r\n ({ \r\n as: Component = 'p', \r\n variant = 'default', \r\n size = 'base', \r\n weight = 'normal',\r\n code = false,\r\n className, \r\n children, \r\n ...props \r\n }, ref) => {\r\n return (\r\n <Component\r\n ref={ref as React.Ref<any>}\r\n className={cn(\r\n 'leading-relaxed transition-colors duration-200',\r\n code && 'font-mono bg-zinc-100 dark:bg-white/[0.03] px-1.5 py-0.5 rounded text-[0.9em]',\r\n {\r\n // Variants\r\n 'text-zinc-900 dark:text-white': variant === 'default',\r\n 'text-zinc-500 dark:text-zinc-400': variant === 'muted',\r\n 'text-zinc-400 dark:text-zinc-500': variant === 'subtle',\r\n 'text-lg md:text-xl text-zinc-600 dark:text-zinc-300 font-light': variant === 'lead',\r\n 'text-rose-600 dark:text-rose-400': variant === 'error',\r\n 'text-emerald-600 dark:text-emerald-400': variant === 'success',\r\n 'text-amber-600 dark:text-amber-400': variant === 'warning',\r\n 'text-sky-600 dark:text-sky-400': variant === 'info',\r\n \r\n // Sizes\r\n 'text-xs': size === 'xs',\r\n 'text-sm': size === 'sm',\r\n 'text-base': size === 'base',\r\n 'text-lg': size === 'lg',\r\n 'text-xl': size === 'xl',\r\n 'text-2xl': size === '2xl',\r\n\r\n // Weights\r\n 'font-light': weight === 'light',\r\n 'font-normal': weight === 'normal',\r\n 'font-medium': weight === 'medium',\r\n 'font-semibold': weight === 'semibold',\r\n 'font-bold': weight === 'bold',\r\n },\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nText.displayName = 'Text';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\r\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\r\n weight?: 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold' | 'black';\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\r\n ({ as: Component = 'h2', weight = 'bold', className, children, ...props }, ref) => {\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cn(\r\n 'tracking-tight text-zinc-900 dark:text-white transition-colors duration-200',\r\n {\r\n 'text-4xl md:text-5xl lg:text-6xl': Component === 'h1',\r\n 'text-3xl md:text-4xl': Component === 'h2',\r\n 'text-2xl md:text-3xl': Component === 'h3',\r\n 'text-xl md:text-2xl': Component === 'h4',\r\n 'text-lg md:text-xl': Component === 'h5',\r\n 'text-base md:text-lg': Component === 'h6',\r\n },\r\n {\r\n 'font-normal': weight === 'normal',\r\n 'font-medium': weight === 'medium',\r\n 'font-semibold': weight === 'semibold',\r\n 'font-bold': weight === 'bold',\r\n 'font-extrabold': weight === 'extrabold',\r\n 'font-black': weight === 'black',\r\n },\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n );\r\n }\r\n);\r\n\r\nHeading.displayName = 'Heading';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface TextGradientProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n /**\r\n * Starting color (Tailwind class)\r\n * @default 'from-blue-500'\r\n */\r\n from?: string;\r\n /**\r\n * Ending color (Tailwind class)\r\n * @default 'to-purple-500'\r\n */\r\n to?: string;\r\n /**\r\n * Middle color (Tailwind class)\r\n */\r\n via?: string;\r\n /**\r\n * Gradient direction\r\n * @default 'r'\r\n */\r\n direction?: 'r' | 'l' | 't' | 'b' | 'tr' | 'tl' | 'br' | 'bl';\r\n /**\r\n * Enable animated gradient shift\r\n * @default false\r\n */\r\n animate?: boolean;\r\n}\r\n\r\nexport const TextGradient = React.forwardRef<HTMLSpanElement, TextGradientProps>(\r\n ({ \r\n from = 'from-blue-500', \r\n to = 'to-purple-500', \r\n via, \r\n direction = 'r', \r\n animate = false, \r\n className, \r\n children, \r\n ...props \r\n }, ref) => {\r\n return (\r\n <span\r\n ref={ref}\r\n className={cn(\r\n 'bg-clip-text text-transparent bg-gradient-to-' + direction,\r\n from,\r\n to,\r\n via,\r\n animate && 'animate-gradient bg-[length:200%_auto]',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </span>\r\n );\r\n }\r\n);\r\n\r\nTextGradient.displayName = 'TextGradient';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface ShinyTextProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n /**\r\n * The color of the shimmer effect\r\n * @default 'rgba(255,255,255,0.3)'\r\n */\r\n shimmerColor?: string;\r\n /**\r\n * Duration of the animation\r\n * @default '2s'\r\n */\r\n duration?: string;\r\n /**\r\n * Base text color\r\n * @default 'currentColor'\r\n */\r\n baseColor?: string;\r\n}\r\n\r\nexport const ShinyText = React.forwardRef<HTMLSpanElement, ShinyTextProps>(\r\n ({ \r\n shimmerColor = 'rgba(255,255,255,0.3)', \r\n duration = '2s', \r\n baseColor = 'currentColor',\r\n className, \r\n children, \r\n ...props \r\n }, ref) => {\r\n return (\r\n <span\r\n ref={ref}\r\n className={cn(\r\n 'inline-block bg-clip-text text-transparent animate-shimmer will-change-[background-position]',\r\n className\r\n )}\r\n style={{\r\n backgroundImage: `linear-gradient(90deg, ${baseColor} 0%, ${baseColor} 40%, ${shimmerColor} 50%, ${baseColor} 60%, ${baseColor} 100%)`,\r\n backgroundSize: '200% 100%',\r\n animationDuration: duration,\r\n animationIterationCount: 'infinite',\r\n animationTimingFunction: 'linear',\r\n }}\r\n {...props}\r\n >\r\n {children}\r\n </span>\r\n );\r\n }\r\n);\r\n\r\nShinyText.displayName = 'ShinyText';\r\n","import { useEffect, useState, useRef } from 'react';\r\n\r\nexport interface UseInViewOptions {\r\n threshold?: number | number[];\r\n rootMargin?: string;\r\n root?: Element | null;\r\n enabled?: boolean;\r\n}\r\n\r\nexport function useInView(options: UseInViewOptions = { threshold: 0.1, rootMargin: '0px', enabled: true }) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [isInView, setIsInView] = useState(false);\r\n const [hasAnimated, setHasAnimated] = useState(false);\r\n const { enabled = true } = options;\r\n\r\n useEffect(() => {\r\n if (!enabled) return;\r\n \r\n const element = ref.current;\r\n if (!element) return;\r\n\r\n const observer = new IntersectionObserver(([entry]) => {\r\n if (entry && entry.isIntersecting) {\r\n setIsInView(true);\r\n setHasAnimated(true);\r\n } else {\r\n setIsInView(false);\r\n }\r\n }, options);\r\n\r\n observer.observe(element);\r\n\r\n return () => {\r\n observer.disconnect();\r\n };\r\n }, [options.threshold, options.rootMargin, options.root, enabled]);\r\n\r\n return { ref, isInView, hasAnimated };\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { useInView } from '../../hooks/useInView';\r\n\r\nexport interface RevealProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n direction?: 'up' | 'down' | 'left' | 'right';\r\n duration?: number;\r\n delay?: number;\r\n boxColor?: string;\r\n}\r\n\r\nexport function Reveal({\r\n children,\r\n direction = 'up',\r\n duration = 0.5,\r\n delay = 0,\r\n boxColor = 'bg-blue-500',\r\n className,\r\n ...props\r\n}: RevealProps) {\r\n const { ref, hasAnimated } = useInView({ threshold: 0.2 });\r\n\r\n const directionClasses = {\r\n up: 'translate-y-full',\r\n down: '-translate-y-full',\r\n left: 'translate-x-full',\r\n right: '-translate-x-full',\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"relative overflow-hidden inline-block\", className)}\r\n {...props}\r\n >\r\n <div\r\n className={cn(\r\n \"transition-all ease-out\",\r\n hasAnimated ? \"translate-x-0 translate-y-0 opacity-100\" : cn(\"opacity-0\", directionClasses[direction])\r\n )}\r\n style={{ \r\n transitionDuration: `${duration}s`,\r\n transitionDelay: `${delay}s`\r\n }}\r\n >\r\n {children}\r\n </div>\r\n \r\n {/* Reveal Box Overlay */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 z-10 transition-transform ease-in-out\",\r\n boxColor,\r\n hasAnimated ? (direction === 'left' || direction === 'right' ? 'scale-x-0' : 'scale-y-0') : 'scale-100'\r\n )}\r\n style={{ \r\n transitionDuration: `${duration}s`,\r\n transitionDelay: `${delay}s`,\r\n transformOrigin: direction === 'up' ? 'top' : direction === 'down' ? 'bottom' : direction === 'left' ? 'left' : 'right'\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Reveal } from '../feedback/Reveal';\r\n\r\nexport interface HeroTextProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * The main title text\r\n */\r\n title: string;\r\n /**\r\n * Text to be highlighted with a gradient\r\n */\r\n highlight?: string;\r\n /**\r\n * Subtitle text below the main title\r\n */\r\n subtitle?: string;\r\n /**\r\n * Tailwind gradient classes for the highlight\r\n * @default 'from-blue-400 via-indigo-500 to-purple-600'\r\n */\r\n gradient?: string;\r\n /**\r\n * Enable entrance animation\r\n * @default true\r\n */\r\n animate?: boolean;\r\n /**\r\n * Add a subtle glow effect behind the highlighted text\r\n * @default true\r\n */\r\n glow?: boolean;\r\n}\r\n\r\nexport const HeroText = ({\r\n title,\r\n highlight,\r\n subtitle,\r\n gradient = 'from-blue-400 via-indigo-500 to-purple-600',\r\n animate = true,\r\n glow = true,\r\n className,\r\n ...props\r\n}: HeroTextProps) => {\r\n const content = (\r\n <div className={cn(\"flex flex-col items-center text-center space-y-6\", className)} {...props}>\r\n <h1 className=\"text-5xl md:text-7xl font-bold tracking-tight text-white leading-tight\">\r\n {title}{' '}\r\n {highlight && (\r\n <span className=\"relative inline-block\">\r\n <span className={cn(\"bg-clip-text text-transparent bg-gradient-to-r\", gradient)}>\r\n {highlight}\r\n </span>\r\n {glow && (\r\n <span className={cn(\r\n \"absolute inset-0 blur-3xl opacity-40 -z-10 bg-gradient-to-r\",\r\n gradient\r\n )} aria-hidden=\"true\">\r\n {highlight}\r\n </span>\r\n )}\r\n </span>\r\n )}\r\n </h1>\r\n {subtitle && (\r\n <p className=\"text-lg md:text-xl text-white/50 max-w-2xl mx-auto leading-relaxed\">\r\n {subtitle}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n\r\n if (animate) {\r\n return (\r\n <Reveal direction=\"up\" duration={1}>\r\n {content}\r\n </Reveal>\r\n );\r\n }\r\n\r\n return content;\r\n};\r\n\r\nHeroText.displayName = 'HeroText';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface LetterPullupProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * The text to animate\r\n */\r\n text: string;\r\n /**\r\n * Delay between each letter animation in seconds\r\n * @default 0.05\r\n */\r\n delay?: number;\r\n}\r\n\r\nexport const LetterPullup = ({ text, delay = 0.05, className, ...props }: LetterPullupProps) => {\r\n const letters = text.split('');\r\n \r\n return (\r\n <div className={cn('flex flex-wrap justify-center overflow-hidden py-2', className)} {...props}>\r\n {letters.map((letter, i) => (\r\n <span\r\n key={i}\r\n className=\"inline-block animate-pullup opacity-0\"\r\n style={{ \r\n animation: `pullup 0.6s cubic-bezier(0.2, 0.8, 0.2, 1) forwards`,\r\n animationDelay: `${i * delay}s`,\r\n whiteSpace: letter === ' ' ? 'pre' : 'normal'\r\n }}\r\n >\r\n {letter}\r\n </span>\r\n ))}\r\n <style>{`\r\n @keyframes pullup {\r\n from { \r\n opacity: 0; \r\n transform: translateY(100%); \r\n }\r\n to { \r\n opacity: 1; \r\n transform: translateY(0); \r\n }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n};\r\n\r\nLetterPullup.displayName = 'LetterPullup';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\r\n required?: boolean;\r\n}\r\n\r\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\r\n ({ className, children, required, ...props }, ref) => {\r\n return (\r\n <label\r\n ref={ref}\r\n className={cn(\r\n 'text-sm font-medium leading-none text-gray-700 dark:text-white/80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {required && <span className=\"ml-1 text-rose-500\">*</span>}\r\n </label>\r\n );\r\n }\r\n);\r\n\r\nLabel.displayName = 'Label';\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\nimport { Label } from './Label';\r\n\r\nconst inputVariants = cva(\r\n \"w-full rounded-2xl bg-gray-50 dark:bg-white/[0.04] px-4 py-3 border border-gray-200 dark:border-white/[0.10] text-gray-900 dark:text-white placeholder:text-gray-400 dark:placeholder:text-white/30 focus:outline-none focus:ring-2 focus:ring-purple-400/30 disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200\",\r\n {\r\n variants: {\r\n hasError: {\r\n true: \"border-rose-400/25 focus:ring-rose-300/25\",\r\n false: \"\",\r\n },\r\n hasLeftIcon: {\r\n true: \"pl-10\",\r\n false: \"\",\r\n },\r\n hasRightIcon: {\r\n true: \"pr-10\",\r\n false: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n hasError: false,\r\n hasLeftIcon: false,\r\n hasRightIcon: false,\r\n },\r\n }\r\n);\r\n\r\nexport interface TextInputProps \r\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\r\n Omit<VariantProps<typeof inputVariants>, 'hasError'> {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Error message displayed below the input. If provided, the input will show an error state. */\r\n error?: string;\r\n /** Icon to display on the left side inside the input */\r\n leftIcon?: React.ReactNode;\r\n /** Icon to display on the right side inside the input */\r\n rightIcon?: React.ReactNode;\r\n /** Additional CSS classes for the container div */\r\n containerClassName?: string;\r\n}\r\n\r\n/**\r\n * A styled text input component with support for labels, error messages, and icons.\r\n * Follows the library's glassmorphic design system.\r\n */\r\nexport const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>(\r\n ({ className, containerClassName, label, error: errorMsg, leftIcon, rightIcon, id, ...props }, ref) => {\r\n const inputId = id || React.useId();\r\n const hasError = !!errorMsg;\r\n\r\n return (\r\n <div className={cn('flex flex-col gap-1.5', containerClassName)}>\r\n {label && <Label htmlFor={inputId} required={props.required}>{label}</Label>}\r\n \r\n <div className=\"relative flex items-center\">\r\n {leftIcon && (\r\n <div className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 dark:text-white/35\">\r\n {leftIcon}\r\n </div>\r\n )}\r\n \r\n <input\r\n ref={ref}\r\n id={inputId}\r\n className={cn(inputVariants({ \r\n hasError: hasError, \r\n hasLeftIcon: !!leftIcon, \r\n hasRightIcon: !!rightIcon, \r\n className \r\n }))}\r\n {...props}\r\n />\r\n\r\n {rightIcon && (\r\n <div className=\"absolute right-2 top-1/2 -translate-y-1/2\">\r\n {rightIcon}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {errorMsg && (\r\n <p className=\"text-xs text-rose-400 animate-in slide-in-from-top-1 fade-in duration-200\">\r\n {errorMsg}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextInput.displayName = 'TextInput';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Label } from './Label';\r\n\r\nexport interface CheckboxProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\r\n label?: string;\r\n error?: string;\r\n checked?: boolean;\r\n defaultChecked?: boolean;\r\n onChange?: (event: { target: { checked: boolean } }) => void;\r\n}\r\n\r\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\r\n ({ className, label, error, id, disabled, checked, defaultChecked, onChange, ...props }, ref) => {\r\n const inputId = id || React.useId();\r\n const [isChecked, setIsChecked] = React.useState(defaultChecked || checked || false);\r\n\r\n React.useEffect(() => {\r\n if (checked !== undefined) {\r\n setIsChecked(checked);\r\n }\r\n }, [checked]);\r\n\r\n const handleClick = () => {\r\n if (disabled) return;\r\n const newValue = !isChecked;\r\n setIsChecked(newValue);\r\n if (onChange) {\r\n onChange({ target: { checked: newValue } } as any);\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex flex-col gap-1.5\", className)}>\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n id={inputId}\r\n role=\"checkbox\"\r\n aria-checked={isChecked}\r\n aria-label={label}\r\n onClick={handleClick}\r\n disabled={disabled}\r\n className={cn(\r\n 'flex items-center gap-3 rounded-2xl border border-gray-200 dark:border-white/10 bg-gray-50 dark:bg-white/[0.03] px-4 py-3',\r\n 'hover:bg-gray-100 dark:hover:bg-white/[0.04] transition-colors',\r\n disabled && 'opacity-50 cursor-not-allowed'\r\n )}\r\n {...props}\r\n >\r\n <span\r\n aria-hidden=\"true\"\r\n className={cn(\r\n 'grid h-6 w-6 place-items-center rounded-lg border',\r\n isChecked \r\n ? 'border-emerald-400/30 bg-emerald-400/15' \r\n : 'border-gray-300 dark:border-white/10 bg-white dark:bg-white/[0.02]'\r\n )}\r\n >\r\n {isChecked ? (\r\n <svg className=\"h-4 w-4 text-emerald-200\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={3}>\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\" />\r\n </svg>\r\n ) : null}\r\n </span>\r\n {label && (\r\n <span className=\"text-sm text-gray-700 dark:text-white/70\">{label}</span>\r\n )}\r\n </button>\r\n {error && (\r\n <p className=\"text-xs text-rose-500 mt-1 ml-1\">{error}</p>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nCheckbox.displayName = 'Checkbox';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Label } from './Label';\r\n\r\nexport interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'type'> {\r\n label?: string;\r\n error?: string;\r\n checked?: boolean;\r\n defaultChecked?: boolean;\r\n onChange?: (event: { target: { checked: boolean } }) => void;\r\n}\r\n\r\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\r\n ({ className, label, error, id, disabled, checked, defaultChecked, onChange, ...props }, ref) => {\r\n const inputId = id || React.useId();\r\n const [isChecked, setIsChecked] = React.useState(defaultChecked || checked || false);\r\n\r\n React.useEffect(() => {\r\n if (checked !== undefined) {\r\n setIsChecked(checked);\r\n }\r\n }, [checked]);\r\n\r\n const handleClick = () => {\r\n if (disabled) return;\r\n const newValue = !isChecked;\r\n setIsChecked(newValue);\r\n if (onChange) {\r\n onChange({ target: { checked: newValue } } as any);\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex flex-col gap-1.5\", className)}>\r\n <div className=\"flex items-center gap-2\">\r\n <button\r\n type=\"button\"\r\n id={inputId}\r\n role=\"switch\"\r\n aria-checked={isChecked}\r\n onClick={handleClick}\r\n disabled={disabled}\r\n className={cn(\r\n 'peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-black disabled:cursor-not-allowed disabled:opacity-50',\r\n isChecked ? 'bg-emerald-500' : 'bg-gray-200 dark:bg-white/[0.06]'\r\n )}\r\n {...props}\r\n >\r\n <span\r\n className={cn(\r\n 'pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform',\r\n isChecked ? 'translate-x-5' : 'translate-x-0'\r\n )}\r\n />\r\n </button>\r\n {label && (\r\n <Label \r\n htmlFor={inputId} \r\n className=\"cursor-pointer select-none text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\r\n onClick={handleClick}\r\n >\r\n {label}\r\n </Label>\r\n )}\r\n </div>\r\n {error && (\r\n <p className=\"text-xs text-rose-500 mt-1 ml-1\">{error}</p>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSwitch.displayName = 'Switch';\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Label } from './Label';\r\n\r\nexport interface SelectOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface SelectProps {\r\n label?: string;\r\n name?: string;\r\n options: SelectOption[];\r\n value?: string;\r\n defaultValue?: string;\r\n onChange?: (value: string) => void;\r\n placeholder?: string;\r\n error?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\r\n ({ label, name, options, value, defaultValue, onChange, placeholder = 'Select an option', error, disabled, className }, ref) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n const [activeIndex, setActiveIndex] = useState(-1);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const id = React.useId();\r\n\r\n const isControlled = value !== undefined;\r\n const currentValue = isControlled ? value : internalValue;\r\n const selectedOption = options.find((opt) => opt.value === currentValue);\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n const index = options.findIndex(opt => opt.value === currentValue);\r\n setActiveIndex(index !== -1 ? index : 0);\r\n } else {\r\n setActiveIndex(-1);\r\n }\r\n }, [isOpen, currentValue, options]);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => document.removeEventListener('mousedown', handleClickOutside);\r\n }, []);\r\n\r\n const handleSelect = (optionValue: string) => {\r\n if (disabled) return;\r\n if (!isControlled) {\r\n setInternalValue(optionValue);\r\n }\r\n onChange?.(optionValue);\r\n setIsOpen(false);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (disabled) return;\r\n \r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n if (isOpen && activeIndex !== -1) {\r\n handleSelect(options[activeIndex]!.value);\r\n } else {\r\n setIsOpen(true);\r\n }\r\n } else if (e.key === 'Escape') {\r\n setIsOpen(false);\r\n } else if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n if (!isOpen) {\r\n setIsOpen(true);\r\n } else {\r\n setActiveIndex((prev) => (prev + 1) % options.length);\r\n }\r\n } else if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n if (!isOpen) {\r\n setIsOpen(true);\r\n } else {\r\n setActiveIndex((prev) => (prev - 1 + options.length) % options.length);\r\n }\r\n } else if (e.key === 'Home') {\r\n e.preventDefault();\r\n if (isOpen) setActiveIndex(0);\r\n } else if (e.key === 'End') {\r\n e.preventDefault();\r\n if (isOpen) setActiveIndex(options.length - 1);\r\n }\r\n };\r\n\r\n return (\r\n <div \r\n ref={containerRef} \r\n className={cn(\"flex flex-col gap-1.5 relative\", className)}\r\n >\r\n {label && (\r\n <Label \r\n htmlFor={id}\r\n className={cn(disabled && \"opacity-50 cursor-not-allowed\")}\r\n >\r\n {label}\r\n </Label>\r\n )}\r\n\r\n <div\r\n ref={ref}\r\n id={id}\r\n role=\"combobox\"\r\n aria-expanded={isOpen}\r\n aria-haspopup=\"listbox\"\r\n aria-controls={`${id}-listbox`}\r\n aria-disabled={disabled}\r\n tabIndex={disabled ? -1 : 0}\r\n onClick={() => !disabled && setIsOpen(!isOpen)}\r\n onKeyDown={handleKeyDown}\r\n className={cn(\r\n 'w-full appearance-none rounded-2xl bg-gray-50 dark:bg-white/[0.04] px-4 py-3',\r\n 'border border-gray-200 dark:border-white/[0.10]',\r\n 'text-gray-900 dark:text-white flex items-center',\r\n 'focus:outline-none focus:ring-2 focus:ring-purple-400/30',\r\n 'hover:bg-gray-100 dark:hover:bg-white/[0.05] cursor-pointer',\r\n disabled && 'cursor-not-allowed opacity-50 hover:bg-gray-50 dark:hover:bg-white/[0.04]',\r\n isOpen && 'border-gray-300 dark:border-white/20 ring-2 ring-purple-400/20',\r\n error && 'border-rose-400/25 focus:ring-rose-300/25'\r\n )}\r\n >\r\n <span className={cn(\"block truncate\", !selectedOption && \"text-gray-400 dark:text-white/20\")}>\r\n {selectedOption ? selectedOption.label : placeholder}\r\n </span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className={cn(\r\n \"absolute right-4 top-1/2 -translate-y-1/2 text-gray-400 dark:text-white/40 transition-transform duration-200\",\r\n isOpen && \"rotate-180\"\r\n )}\r\n >\r\n <path d=\"m6 9 6 6 6-6\"/>\r\n </svg>\r\n </div>\r\n\r\n {isOpen && (\r\n <div className=\"absolute top-full left-0 z-50 mt-1 w-full overflow-hidden rounded-2xl border border-gray-200 dark:border-white/10 bg-white dark:bg-[#0A0A0A] p-1 shadow-xl animate-in fade-in zoom-in-95 duration-100\">\r\n <ul\r\n id={`${id}-listbox`}\r\n role=\"listbox\"\r\n aria-activedescendant={activeIndex !== -1 ? `${id}-option-${activeIndex}` : undefined}\r\n className=\"max-h-60 overflow-auto p-1 flex flex-col gap-2\"\r\n >\r\n {options.map((option, index) => (\r\n <li\r\n key={option.value}\r\n id={`${id}-option-${index}`}\r\n role=\"option\"\r\n aria-selected={currentValue === option.value}\r\n onClick={() => handleSelect(option.value)}\r\n onMouseEnter={() => setActiveIndex(index)}\r\n className={cn(\r\n 'w-full rounded-2xl px-3 py-2 text-left text-sm transition-colors cursor-pointer',\r\n 'hover:bg-gray-100 dark:hover:bg-white/[0.06] hover:text-gray-900 dark:hover:text-white',\r\n (currentValue === option.value || activeIndex === index)\r\n ? 'bg-gray-100 dark:bg-white/[0.06] text-gray-900 dark:text-white/90' \r\n : 'text-gray-700 dark:text-white/80'\r\n )}\r\n >\r\n <div className=\"flex items-center justify-between gap-3\">\r\n <span className=\"flex-1 truncate\">{option.label}</span>\r\n {currentValue === option.value && (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className=\"text-gray-900 dark:text-white\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n )}\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {error && (\r\n <p className=\"text-xs text-rose-400 animate-in slide-in-from-top-1 fade-in duration-200\">\r\n {error}\r\n </p>\r\n )}\r\n <input type=\"hidden\" name={name} value={currentValue || ''} />\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSelect.displayName = 'Select';\r\n","import type { RefObject } from 'react';\r\nimport { useState, useLayoutEffect, useCallback } from 'react';\r\n\r\nexport type Side = 'top' | 'bottom' | 'left' | 'right';\r\nexport type Align = 'start' | 'center' | 'end';\r\n\r\ninterface UseFloatingOptions {\r\n side?: Side;\r\n align?: Align;\r\n sideOffset?: number;\r\n alignOffset?: number;\r\n isOpen?: boolean;\r\n}\r\n\r\ninterface Position {\r\n top: number;\r\n left: number;\r\n}\r\n\r\nexport function useFloating(\r\n triggerRef: RefObject<HTMLElement>,\r\n contentRef: RefObject<HTMLElement>,\r\n options: UseFloatingOptions = {}\r\n) {\r\n const {\r\n side = 'bottom',\r\n align = 'center',\r\n sideOffset = 4,\r\n alignOffset = 0,\r\n isOpen = false,\r\n } = options;\r\n\r\n const [position, setPosition] = useState<Position>({ top: 0, left: 0 });\r\n const [isPositioned, setIsPositioned] = useState(false);\r\n\r\n const updatePosition = useCallback(() => {\r\n if (!triggerRef.current || !contentRef.current || !isOpen) return;\r\n\r\n const triggerRect = triggerRef.current.getBoundingClientRect();\r\n const contentRect = contentRef.current.getBoundingClientRect();\r\n \r\n let top = 0;\r\n let left = 0;\r\n\r\n // Calculate base position based on side\r\n switch (side) {\r\n case 'top':\r\n top = triggerRect.top - contentRect.height - sideOffset;\r\n break;\r\n case 'bottom':\r\n top = triggerRect.bottom + sideOffset;\r\n break;\r\n case 'left':\r\n left = triggerRect.left - contentRect.width - sideOffset;\r\n break;\r\n case 'right':\r\n left = triggerRect.right + sideOffset;\r\n break;\r\n }\r\n\r\n // Calculate alignment\r\n if (side === 'top' || side === 'bottom') {\r\n switch (align) {\r\n case 'start':\r\n left = triggerRect.left + alignOffset;\r\n break;\r\n case 'center':\r\n left = triggerRect.left + (triggerRect.width / 2) - (contentRect.width / 2) + alignOffset;\r\n break;\r\n case 'end':\r\n left = triggerRect.right - contentRect.width + alignOffset;\r\n break;\r\n }\r\n } else {\r\n switch (align) {\r\n case 'start':\r\n top = triggerRect.top + alignOffset;\r\n break;\r\n case 'center':\r\n top = triggerRect.top + (triggerRect.height / 2) - (contentRect.height / 2) + alignOffset;\r\n break;\r\n case 'end':\r\n top = triggerRect.bottom - contentRect.height + alignOffset;\r\n break;\r\n }\r\n }\r\n\r\n // Boundary checks (simple viewport containment)\r\n const padding = 8;\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n\r\n if (left < padding) left = padding;\r\n if (left + contentRect.width > viewportWidth - padding) {\r\n left = viewportWidth - contentRect.width - padding;\r\n }\r\n if (top < padding) top = padding;\r\n if (top + contentRect.height > viewportHeight - padding) {\r\n top = viewportHeight - contentRect.height - padding;\r\n }\r\n\r\n setPosition({ top, left });\r\n setIsPositioned(true);\r\n }, [triggerRef, contentRef, side, align, sideOffset, alignOffset, isOpen]);\r\n\r\n useLayoutEffect(() => {\r\n if (!isOpen) {\r\n if (isPositioned) setIsPositioned(false);\r\n return;\r\n }\r\n\r\n updatePosition();\r\n\r\n // Use ResizeObserver for more robust updates\r\n const resizeObserver = new ResizeObserver(() => updatePosition());\r\n if (triggerRef.current) resizeObserver.observe(triggerRef.current);\r\n if (contentRef.current) resizeObserver.observe(contentRef.current);\r\n\r\n window.addEventListener('resize', updatePosition);\r\n window.addEventListener('scroll', updatePosition, true);\r\n\r\n return () => {\r\n resizeObserver.disconnect();\r\n window.removeEventListener('resize', updatePosition);\r\n window.removeEventListener('scroll', updatePosition, true);\r\n };\r\n }, [isOpen, updatePosition, triggerRef, contentRef]);\r\n\r\n return {\r\n position,\r\n isPositioned,\r\n updatePosition,\r\n };\r\n}\r\n","import React, { createContext, useContext, useState, useRef, useEffect, useLayoutEffect } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { cn } from '../../utils/cn';\r\nimport { useFloating } from '../../hooks/useFloating';\r\n\r\ninterface PopoverContextValue {\r\n isOpen: boolean;\r\n setIsOpen: (isOpen: boolean) => void;\r\n triggerRef: React.RefObject<HTMLElement>;\r\n}\r\n\r\nconst PopoverContext = createContext<PopoverContextValue | undefined>(undefined);\r\n\r\nexport interface PopoverProps {\r\n children: React.ReactNode;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n}\r\n\r\nexport function Popover({ children, open, onOpenChange }: PopoverProps) {\r\n const [internalOpen, setInternalOpen] = useState(false);\r\n const triggerRef = useRef<HTMLElement>(null);\r\n\r\n const isControlled = open !== undefined;\r\n const isOpen = isControlled ? open : internalOpen;\r\n const setIsOpen = (newOpen: boolean) => {\r\n if (!isControlled) {\r\n setInternalOpen(newOpen);\r\n }\r\n onOpenChange?.(newOpen);\r\n };\r\n\r\n return (\r\n <PopoverContext.Provider value={{ isOpen, setIsOpen, triggerRef }}>\r\n <div className=\"relative inline-block\">\r\n {children}\r\n </div>\r\n </PopoverContext.Provider>\r\n );\r\n}\r\n\r\nexport interface PopoverTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function PopoverTrigger({ className, children, ...props }: PopoverTriggerProps) {\r\n const context = useContext(PopoverContext);\r\n if (!context) throw new Error('PopoverTrigger must be used within Popover');\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n context.setIsOpen(!context.isOpen);\r\n props.onClick?.(e as any);\r\n };\r\n\r\n return (\r\n <button\r\n ref={context.triggerRef as any}\r\n type=\"button\"\r\n aria-haspopup=\"dialog\"\r\n aria-expanded={context.isOpen ? \"true\" : \"false\"}\r\n onClick={handleClick}\r\n className={cn(\"inline-flex items-center justify-center\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n}\r\n\r\nexport interface PopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n align?: 'start' | 'end' | 'center';\r\n sideOffset?: number;\r\n}\r\n\r\nexport function PopoverContent({ className, children, align = 'center', sideOffset = 4, ...props }: PopoverContentProps) {\r\n const context = useContext(PopoverContext);\r\n if (!context) throw new Error('PopoverContent must be used within Popover');\r\n\r\n const contentRef = useRef<HTMLDivElement>(null);\r\n const { position, isPositioned } = useFloating(context.triggerRef, contentRef, {\r\n side: 'bottom',\r\n align,\r\n sideOffset,\r\n isOpen: context.isOpen,\r\n });\r\n\r\n useEffect(() => {\r\n if (context.isOpen) {\r\n const handleOutsideClick = (e: MouseEvent) => {\r\n if (\r\n contentRef.current &&\r\n !contentRef.current.contains(e.target as Node) &&\r\n context.triggerRef.current &&\r\n !context.triggerRef.current.contains(e.target as Node)\r\n ) {\r\n context.setIsOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener('mousedown', handleOutsideClick);\r\n return () => {\r\n document.removeEventListener('mousedown', handleOutsideClick);\r\n };\r\n }\r\n }, [context.isOpen, context.setIsOpen, context.triggerRef]);\r\n\r\n if (!context.isOpen) return null;\r\n\r\n const getTransformOrigin = () => {\r\n // Popover currently only supports top/bottom in its logic, but let's make it robust\r\n const side = position.top > (context.triggerRef.current?.getBoundingClientRect().top || 0) ? 'bottom' : 'top';\r\n \r\n if (side === 'bottom') {\r\n if (align === 'start') return 'top left';\r\n if (align === 'end') return 'top right';\r\n return 'top center';\r\n }\r\n if (side === 'top') {\r\n if (align === 'start') return 'bottom left';\r\n if (align === 'end') return 'bottom right';\r\n return 'bottom center';\r\n }\r\n return 'center center';\r\n };\r\n\r\n return createPortal(\r\n <div\r\n ref={contentRef}\r\n style={{ \r\n top: position.top, \r\n left: position.left,\r\n transformOrigin: getTransformOrigin(),\r\n }}\r\n className={cn(\r\n \"fixed z-50 min-w-[12rem] rounded-2xl border border-gray-200 dark:border-white/10 bg-white/80 dark:bg-white/[0.03] backdrop-blur-xl p-4 shadow-xl outline-none duration-200\",\r\n isPositioned ? \"animate-in fade-in zoom-in-95 opacity-100\" : \"opacity-0\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>,\r\n document.body\r\n );\r\n}\r\n","import React, { createContext, useContext, useState, useMemo, useEffect } from 'react';\r\nimport { Popover, PopoverContent, PopoverTrigger } from '../overlay/Popover';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface ComboboxContextValue {\r\n value: string;\r\n onValueChange: (value: string) => void;\r\n searchTerm: string;\r\n setSearchTerm: (term: string) => void;\r\n isOpen: boolean;\r\n setIsOpen: (isOpen: boolean) => void;\r\n registerItem: (id: string, text: string, value: string) => () => void;\r\n isItemVisible: (id: string, text: string) => boolean;\r\n hasVisibleItems: boolean;\r\n activeIndex: number;\r\n setActiveIndex: React.Dispatch<React.SetStateAction<number>>;\r\n visibleItems: { id: string, value: string }[];\r\n}\r\n\r\nconst ComboboxContext = createContext<ComboboxContextValue | undefined>(undefined);\r\n\r\nexport interface ComboboxProps {\r\n children: React.ReactNode;\r\n value?: string;\r\n defaultValue?: string;\r\n onValueChange?: (value: string) => void;\r\n filter?: (value: string, search: string) => boolean;\r\n usePopover?: boolean;\r\n}\r\n\r\nexport function Combobox({ \r\n children, \r\n value: controlledValue, \r\n defaultValue = '', \r\n onValueChange,\r\n filter = (text, search) => text.toLowerCase().includes(search.toLowerCase()),\r\n usePopover = true\r\n}: ComboboxProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n const [searchTerm, setSearchTerm] = useState('');\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [items, setItems] = useState<Map<string, { text: string, value: string }>>(new Map());\r\n const [activeIndex, setActiveIndex] = useState(-1);\r\n\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : internalValue;\r\n\r\n const handleValueChange = (newValue: string) => {\r\n if (!isControlled) setInternalValue(newValue);\r\n onValueChange?.(newValue);\r\n setIsOpen(false);\r\n setSearchTerm('');\r\n };\r\n\r\n const registerItem = React.useCallback((id: string, text: string, value: string) => {\r\n setItems(prev => {\r\n const next = new Map(prev);\r\n next.set(id, { text, value });\r\n return next;\r\n });\r\n return () => {\r\n setItems(prev => {\r\n const next = new Map(prev);\r\n next.delete(id);\r\n return next;\r\n });\r\n };\r\n }, []);\r\n\r\n const visibleItems = useMemo(() => {\r\n return Array.from(items.entries())\r\n .filter(([_, item]) => filter(item.text, searchTerm))\r\n .map(([id, item]) => ({ id, value: item.value }));\r\n }, [items, searchTerm, filter]);\r\n\r\n const hasVisibleItems = visibleItems.length > 0;\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n setActiveIndex(0);\r\n } else {\r\n setActiveIndex(-1);\r\n }\r\n }, [isOpen]);\r\n\r\n return (\r\n <ComboboxContext.Provider value={{ \r\n value, \r\n onValueChange: handleValueChange, \r\n searchTerm, \r\n setSearchTerm, \r\n isOpen, \r\n setIsOpen,\r\n registerItem,\r\n isItemVisible: (id, text) => filter(text, searchTerm),\r\n hasVisibleItems,\r\n activeIndex,\r\n setActiveIndex,\r\n visibleItems\r\n }}>\r\n {usePopover ? (\r\n <Popover open={isOpen} onOpenChange={setIsOpen}>\r\n {children}\r\n </Popover>\r\n ) : (\r\n children\r\n )}\r\n </ComboboxContext.Provider>\r\n );\r\n}\r\n\r\nexport function ComboboxTrigger({ className, children, ...props }: React.ButtonHTMLAttributes<HTMLButtonElement>) {\r\n const context = useContext(ComboboxContext);\r\n return (\r\n <PopoverTrigger\r\n role=\"combobox\"\r\n aria-expanded={context?.isOpen}\r\n aria-haspopup=\"listbox\"\r\n className={cn(\r\n \"flex h-10 w-full items-center justify-between rounded-2xl border border-gray-200 bg-gray-50 px-3 py-2 text-sm text-gray-900 placeholder:text-gray-500 focus:border-purple-500 focus:outline-none focus:ring-2 focus:ring-purple-500/20 disabled:cursor-not-allowed disabled:opacity-50 dark:border-white/10 dark:bg-white/[0.03] dark:text-white dark:placeholder:text-white/40 dark:focus:border-white/20 dark:focus:ring-white/10\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className=\"ml-2 opacity-50\"\r\n >\r\n <path d=\"m6 9 6 6 6-6\"/>\r\n </svg>\r\n </PopoverTrigger>\r\n );\r\n}\r\n\r\nexport function ComboboxContent({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <PopoverContent className={cn(\"p-0 w-[200px]\", className)} align=\"start\" {...props}>\r\n {children}\r\n </PopoverContent>\r\n );\r\n}\r\n\r\nexport function ComboboxInput({ className, placeholder = \"Search...\", ...props }: React.InputHTMLAttributes<HTMLInputElement>) {\r\n const context = useContext(ComboboxContext);\r\n if (!context) throw new Error('ComboboxInput must be used within Combobox');\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n context.setActiveIndex((prev) => (prev + 1) % context.visibleItems.length);\r\n } else if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n context.setActiveIndex((prev) => (prev - 1 + context.visibleItems.length) % context.visibleItems.length);\r\n } else if (e.key === 'Enter') {\r\n e.preventDefault();\r\n if (context.activeIndex !== -1 && context.visibleItems[context.activeIndex]) {\r\n context.onValueChange(context.visibleItems[context.activeIndex]!.value);\r\n }\r\n } else if (e.key === 'Escape') {\r\n context.setIsOpen(false);\r\n }\r\n props.onKeyDown?.(e);\r\n };\r\n\r\n return (\r\n <div className=\"flex items-center border-b border-gray-200 dark:border-white/10 px-3\">\r\n <svg\r\n className=\"mr-2 h-4 w-4 shrink-0 opacity-50\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\r\n <path d=\"m21 21-4.3-4.3\" />\r\n </svg>\r\n <input\r\n className={cn(\r\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm text-gray-900 dark:text-white outline-none placeholder:text-gray-400 dark:placeholder:text-white/40 disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n placeholder={placeholder}\r\n value={context.searchTerm}\r\n onChange={(e) => context.setSearchTerm(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={context.activeIndex !== -1 ? context.visibleItems[context.activeIndex]?.id : undefined}\r\n {...props}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport function ComboboxList({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div \r\n role=\"listbox\"\r\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden p-1\", className)} \r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function ComboboxEmpty({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n const context = useContext(ComboboxContext);\r\n if (!context) throw new Error('ComboboxEmpty must be used within Combobox');\r\n\r\n if (context.hasVisibleItems) return null;\r\n\r\n return (\r\n <div className={cn(\"py-6 text-center text-sm text-gray-500 dark:text-white/40\", className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface ComboboxItemProps extends React.HTMLAttributes<HTMLDivElement> {\r\n value: string;\r\n children: React.ReactNode;\r\n textValue?: string;\r\n}\r\n\r\nexport function ComboboxItem({ className, value, children, textValue, ...props }: ComboboxItemProps) {\r\n const context = useContext(ComboboxContext);\r\n if (!context) throw new Error('ComboboxItem must be used within Combobox');\r\n\r\n const id = React.useId();\r\n const text = textValue || (typeof children === 'string' ? children : value);\r\n const isVisible = context.isItemVisible(id, text);\r\n const isSelected = context.value === value;\r\n \r\n const itemIndex = context.visibleItems.findIndex(item => item.id === id);\r\n const isActive = context.activeIndex === itemIndex;\r\n\r\n useEffect(() => {\r\n return context.registerItem(id, text, value);\r\n }, [id, text, value, context.registerItem]);\r\n\r\n if (!isVisible) return null;\r\n\r\n return (\r\n <div\r\n id={id}\r\n role=\"option\"\r\n aria-selected={isSelected}\r\n onClick={() => context.onValueChange(value)}\r\n onMouseEnter={() => context.setActiveIndex(itemIndex)}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-2xl px-3 py-2 text-sm outline-none transition-colors\",\r\n \"text-gray-700 dark:text-white/80\",\r\n \"aria-selected:bg-gray-100 aria-selected:text-gray-900 dark:aria-selected:bg-white/[0.06] dark:aria-selected:text-white\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n \"hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-white/[0.06] dark:hover:text-white\",\r\n (isSelected || isActive) && \"bg-gray-100 text-gray-900 dark:bg-white/[0.06] dark:text-white\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <svg\r\n className={cn(\r\n \"mr-2 h-4 w-4\",\r\n isSelected ? \"opacity-100\" : \"opacity-0\"\r\n )}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n value?: number;\r\n defaultValue?: number;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n onChange?: (value: number) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(\r\n ({ className, value: controlledValue, defaultValue = 0, min = 0, max = 100, step = 1, onChange, disabled, ...props }, ref) => {\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? controlledValue : internalValue;\r\n const trackRef = useRef<HTMLDivElement>(null);\r\n\r\n const percentage = ((value - min) / (max - min)) * 100;\r\n\r\n const handleMove = useCallback((clientX: number) => {\r\n if (disabled || !trackRef.current) return;\r\n\r\n const rect = trackRef.current.getBoundingClientRect();\r\n const width = rect.width;\r\n const left = rect.left;\r\n \r\n let newValue = ((clientX - left) / width) * (max - min) + min;\r\n \r\n // Clamp\r\n newValue = Math.min(Math.max(newValue, min), max);\r\n \r\n // Step\r\n const steps = Math.round((newValue - min) / step);\r\n newValue = min + steps * step;\r\n\r\n // Precision fix\r\n newValue = Number(newValue.toFixed(10)); // Avoid floating point errors\r\n\r\n if (!isControlled) {\r\n setInternalValue(newValue);\r\n }\r\n onChange?.(newValue);\r\n }, [disabled, isControlled, max, min, onChange, step]);\r\n\r\n const handleMouseDown = (e: React.MouseEvent) => {\r\n if (disabled) return;\r\n handleMove(e.clientX);\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n handleMove(e.clientX);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener('mousemove', handleMouseMove);\r\n document.removeEventListener('mouseup', handleMouseUp);\r\n };\r\n\r\n document.addEventListener('mousemove', handleMouseMove);\r\n document.addEventListener('mouseup', handleMouseUp);\r\n };\r\n\r\n const handleTouchStart = (e: React.TouchEvent) => {\r\n if (disabled) return;\r\n const startTouch = e.touches[0];\r\n if (startTouch) {\r\n handleMove(startTouch.clientX);\r\n }\r\n\r\n const handleTouchMove = (e: TouchEvent) => {\r\n const moveTouch = e.touches[0];\r\n if (moveTouch) {\r\n handleMove(moveTouch.clientX);\r\n }\r\n };\r\n\r\n const handleTouchEnd = () => {\r\n document.removeEventListener('touchmove', handleTouchMove);\r\n document.removeEventListener('touchend', handleTouchEnd);\r\n };\r\n\r\n document.addEventListener('touchmove', handleTouchMove, { passive: false });\r\n document.addEventListener('touchend', handleTouchEnd);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (disabled) return;\r\n\r\n let newValue = value;\r\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\r\n newValue = Math.min(value + step, max);\r\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\r\n newValue = Math.max(value - step, min);\r\n } else if (e.key === 'Home') {\r\n newValue = min;\r\n } else if (e.key === 'End') {\r\n newValue = max;\r\n } else {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n if (newValue !== value) {\r\n if (!isControlled) {\r\n setInternalValue(newValue);\r\n }\r\n onChange?.(newValue);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"slider\"\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={value}\r\n aria-disabled={disabled}\r\n tabIndex={disabled ? -1 : 0}\r\n onKeyDown={handleKeyDown}\r\n className={cn(\r\n \"relative flex w-full touch-none select-none items-center py-4 group\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n className\r\n )}\r\n onMouseDown={handleMouseDown}\r\n onTouchStart={handleTouchStart}\r\n {...props}\r\n >\r\n <div\r\n ref={trackRef}\r\n className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-gray-200 dark:bg-white/[0.06] backdrop-blur-sm border border-gray-200 dark:border-white/5\"\r\n >\r\n <div\r\n className=\"absolute h-full bg-gray-900 dark:bg-white transition-none dark:shadow-[0_0_10px_rgba(255,255,255,0.5)]\"\r\n style={{ width: `${percentage}%` }}\r\n />\r\n </div>\r\n <div\r\n className=\"absolute h-5 w-5 rounded-full border-2 border-gray-900 dark:border-white bg-white dark:bg-black shadow-md dark:shadow-[0_0_15px_rgba(255,255,255,0.5)] transition-transform hover:scale-110 focus:scale-110\"\r\n style={{ left: `calc(${percentage}% - 10px)` }}\r\n />\r\n </div>\r\n );\r\n }\r\n);\r\n","import React, { useState } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\r\n\r\nexport interface CalendarProps {\r\n className?: string;\r\n value?: Date;\r\n onChange?: (date: Date) => void;\r\n minDate?: Date;\r\n maxDate?: Date;\r\n}\r\n\r\nconst DAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\r\nconst MONTHS = [\r\n 'January', 'February', 'March', 'April', 'May', 'June',\r\n 'July', 'August', 'September', 'October', 'November', 'December'\r\n];\r\n\r\nexport function Calendar({ className, value, onChange, minDate, maxDate }: CalendarProps) {\r\n const [currentDate, setCurrentDate] = useState(value || new Date());\r\n const [viewDate, setViewDate] = useState(value || new Date());\r\n\r\n const getDaysInMonth = (year: number, month: number) => {\r\n return new Date(year, month + 1, 0).getDate();\r\n };\r\n\r\n const getFirstDayOfMonth = (year: number, month: number) => {\r\n return new Date(year, month, 1).getDay();\r\n };\r\n\r\n const handlePrevMonth = () => {\r\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() - 1, 1));\r\n };\r\n\r\n const handleNextMonth = () => {\r\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + 1, 1));\r\n };\r\n\r\n const handleDateClick = (day: number) => {\r\n const newDate = new Date(viewDate.getFullYear(), viewDate.getMonth(), day);\r\n if (onChange) {\r\n onChange(newDate);\r\n }\r\n setCurrentDate(newDate);\r\n };\r\n\r\n const isSelected = (day: number) => {\r\n return value && \r\n value.getDate() === day &&\r\n value.getMonth() === viewDate.getMonth() &&\r\n value.getFullYear() === viewDate.getFullYear();\r\n };\r\n\r\n const isToday = (day: number) => {\r\n const today = new Date();\r\n return today.getDate() === day &&\r\n today.getMonth() === viewDate.getMonth() &&\r\n today.getFullYear() === viewDate.getFullYear();\r\n };\r\n\r\n const renderDays = () => {\r\n const daysInMonth = getDaysInMonth(viewDate.getFullYear(), viewDate.getMonth());\r\n const firstDay = getFirstDayOfMonth(viewDate.getFullYear(), viewDate.getMonth());\r\n const days = [];\r\n\r\n // Empty cells for previous month\r\n for (let i = 0; i < firstDay; i++) {\r\n days.push(<div key={`empty-${i}`} className=\"h-9 w-9\" />);\r\n }\r\n\r\n // Days of current month\r\n for (let day = 1; day <= daysInMonth; day++) {\r\n const selected = isSelected(day);\r\n const today = isToday(day);\r\n \r\n days.push(\r\n <button\r\n key={day}\r\n onClick={() => handleDateClick(day)}\r\n type=\"button\"\r\n className={cn(\r\n \"h-9 w-9 rounded-2xl text-sm font-medium transition-all duration-200\",\r\n \"hover:bg-gray-100 dark:hover:bg-white/[0.06] focus:outline-none focus:ring-2 focus:ring-gray-400 dark:focus:ring-white/20\",\r\n selected && \"bg-gray-900 text-white dark:bg-white dark:text-black shadow-md dark:shadow-[0_0_15px_rgba(255,255,255,0.3)] hover:bg-gray-800 dark:hover:bg-white/90\",\r\n !selected && today && \"bg-gray-100 dark:bg-white/[0.03] text-gray-900 dark:text-white border border-gray-200 dark:border-white/10\",\r\n !selected && !today && \"text-gray-700 dark:text-white/70 hover:text-gray-900 dark:hover:text-white\"\r\n )}\r\n >\r\n {day}\r\n </button>\r\n );\r\n }\r\n\r\n return days;\r\n };\r\n\r\n return (\r\n <div className={cn(\"p-4 bg-white dark:bg-black/40 backdrop-blur-xl border border-gray-200 dark:border-white/10 rounded-2xl w-fit\", className)}>\r\n <div className=\"flex items-center justify-between mb-4 px-1\">\r\n <div className=\"font-semibold text-gray-900 dark:text-white\">\r\n {MONTHS[viewDate.getMonth()]} <span className=\"text-gray-500 dark:text-white/50\">{viewDate.getFullYear()}</span>\r\n </div>\r\n <div className=\"flex gap-1\">\r\n <button\r\n onClick={handlePrevMonth}\r\n type=\"button\"\r\n className=\"p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-white/[0.06] text-gray-600 dark:text-white/70 hover:text-gray-900 dark:hover:text-white transition-colors\"\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </button>\r\n <button\r\n onClick={handleNextMonth}\r\n type=\"button\"\r\n className=\"p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-white/[0.06] text-gray-600 dark:text-white/70 hover:text-gray-900 dark:hover:text-white transition-colors\"\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div className=\"grid grid-cols-7 gap-1 mb-2 text-center\">\r\n {DAYS.map(day => (\r\n <div key={day} className=\"h-9 w-9 flex items-center justify-center text-xs font-medium text-gray-400 dark:text-white/40\">\r\n {day}\r\n </div>\r\n ))}\r\n </div>\r\n \r\n <div className=\"grid grid-cols-7 gap-1\">\r\n {renderDays()}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useState } from 'react';\r\nimport { Popover, PopoverContent, PopoverTrigger } from '../overlay/Popover';\r\nimport { Calendar } from '../data-display/Calendar';\r\nimport { cn } from '../../utils/cn';\r\nimport { Calendar as CalendarIcon } from 'lucide-react';\r\n\r\nexport interface DatePickerProps {\r\n value?: Date;\r\n onChange?: (date: Date) => void;\r\n placeholder?: string;\r\n className?: string;\r\n}\r\n\r\nexport function DatePicker({ value, onChange, placeholder = \"Pick a date\", className }: DatePickerProps) {\r\n const [date, setDate] = useState<Date | undefined>(value);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleSelect = (newDate: Date) => {\r\n setDate(newDate);\r\n onChange?.(newDate);\r\n setIsOpen(false);\r\n };\r\n\r\n const formatDate = (d: Date) => {\r\n return d.toLocaleDateString('en-US', {\r\n month: 'long',\r\n day: 'numeric',\r\n year: 'numeric',\r\n });\r\n };\r\n\r\n const handleMouseMove = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n e.currentTarget.style.setProperty('--x', `${x}px`);\r\n e.currentTarget.style.setProperty('--y', `${y}px`);\r\n };\r\n\r\n return (\r\n <Popover open={isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n onMouseMove={handleMouseMove}\r\n className={cn(\r\n \"group relative flex h-11 w-full items-center justify-between rounded-2xl border border-gray-200 dark:border-white/10 bg-gray-50 dark:bg-white/[0.03] px-4 py-2 text-sm text-gray-900 dark:text-white transition-all duration-200 overflow-hidden\",\r\n \"hover:bg-gray-100 dark:hover:bg-white/[0.06] focus:outline-none focus:ring-2 focus:ring-gray-400 dark:focus:ring-white/15\",\r\n !date && \"text-gray-400 dark:text-white/40\",\r\n className\r\n )}\r\n >\r\n <div className=\"absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-500 pointer-events-none\"\r\n style={{\r\n background: `radial-gradient(600px circle at var(--x) var(--y), rgba(255,255,255,0.06), transparent 40%)`\r\n }}\r\n />\r\n <span className=\"relative z-10\">{date ? formatDate(date) : placeholder}</span>\r\n <CalendarIcon className=\"relative z-10 h-4 w-4 text-white/40\" />\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0 border-none bg-transparent shadow-none\" align=\"start\">\r\n <Calendar\r\n value={date}\r\n onChange={handleSelect}\r\n className=\"shadow-2xl shadow-black/50\"\r\n />\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {\r\n orientation?: 'vertical' | 'horizontal' | 'both';\r\n scrollbarSize?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\r\n ({ className, children, orientation = 'vertical', scrollbarSize = 'sm', ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n 'overflow-auto',\r\n // Scrollbar base styles\r\n '[&::-webkit-scrollbar]:bg-transparent',\r\n '[&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-thumb]:bg-white/[0.06]',\r\n '[&::-webkit-scrollbar-thumb]:rounded-full',\r\n 'hover:[&::-webkit-scrollbar-thumb]:bg-gray-400 dark:hover:[&::-webkit-scrollbar-thumb]:bg-white/20',\r\n '[&::-webkit-scrollbar-track]:bg-transparent',\r\n \r\n // Firefox support\r\n '[scrollbar-width:thin] [scrollbar-color:rgba(0,0,0,0.2)_transparent] dark:[scrollbar-color:rgba(255,255,255,0.1)_transparent]',\r\n \r\n // Orientation specific\r\n orientation === 'vertical' && 'overflow-y-auto overflow-x-hidden',\r\n orientation === 'horizontal' && 'overflow-x-auto overflow-y-hidden',\r\n orientation === 'both' && 'overflow-auto',\r\n\r\n // Size specific\r\n scrollbarSize === 'sm' && '[&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar]:h-1.5',\r\n scrollbarSize === 'md' && '[&::-webkit-scrollbar]:w-2.5 [&::-webkit-scrollbar]:h-2.5',\r\n scrollbarSize === 'lg' && '[&::-webkit-scrollbar]:w-4 [&::-webkit-scrollbar]:h-4',\r\n \r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nScrollArea.displayName = 'ScrollArea';\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Popover, PopoverContent, PopoverTrigger } from '../overlay/Popover';\r\nimport { Calendar } from '../data-display/Calendar';\r\nimport { ScrollArea } from '../data-display/ScrollArea';\r\nimport { cn } from '../../utils/cn';\r\nimport { Calendar as CalendarIcon, Clock } from 'lucide-react';\r\n\r\nexport interface DateTimePickerProps {\r\n value?: Date;\r\n onChange?: (date: Date) => void;\r\n placeholder?: string;\r\n className?: string;\r\n}\r\n\r\nexport function DateTimePicker({ value, onChange, placeholder = \"Pick date & time\", className }: DateTimePickerProps) {\r\n const [date, setDate] = useState<Date | undefined>(value);\r\n const [isOpen, setIsOpen] = useState(false);\r\n \r\n // Time state\r\n const [hours, setHours] = useState(value ? value.getHours() : 12);\r\n const [minutes, setMinutes] = useState(value ? value.getMinutes() : 0);\r\n\r\n useEffect(() => {\r\n if (value) {\r\n setDate(value);\r\n setHours(value.getHours());\r\n setMinutes(value.getMinutes());\r\n }\r\n }, [value]);\r\n\r\n const handleDateSelect = (newDate: Date) => {\r\n const updatedDate = new Date(newDate);\r\n updatedDate.setHours(hours);\r\n updatedDate.setMinutes(minutes);\r\n setDate(updatedDate);\r\n onChange?.(updatedDate);\r\n };\r\n\r\n const handleTimeChange = (type: 'hours' | 'minutes', val: string) => {\r\n let num = parseInt(val, 10);\r\n if (isNaN(num)) return;\r\n\r\n let newHours = hours;\r\n let newMinutes = minutes;\r\n\r\n if (type === 'hours') {\r\n num = Math.max(0, Math.min(23, num));\r\n setHours(num);\r\n newHours = num;\r\n } else {\r\n num = Math.max(0, Math.min(59, num));\r\n setMinutes(num);\r\n newMinutes = num;\r\n }\r\n\r\n const baseDate = date || new Date();\r\n const updatedDate = new Date(baseDate);\r\n updatedDate.setHours(newHours);\r\n updatedDate.setMinutes(newMinutes);\r\n setDate(updatedDate);\r\n onChange?.(updatedDate);\r\n };\r\n\r\n const formatDateTime = (d: Date) => {\r\n return d.toLocaleDateString('en-US', {\r\n month: 'short',\r\n day: 'numeric',\r\n year: 'numeric',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n });\r\n };\r\n\r\n const handleMouseMove = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n const rect = e.currentTarget.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n e.currentTarget.style.setProperty('--x', `${x}px`);\r\n e.currentTarget.style.setProperty('--y', `${y}px`);\r\n };\r\n\r\n return (\r\n <Popover open={isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n onMouseMove={handleMouseMove}\r\n className={cn(\r\n \"group relative flex h-11 w-full items-center justify-between rounded-2xl border border-gray-200 dark:border-white/10 bg-gray-50 dark:bg-white/[0.03] px-4 py-2 text-sm text-gray-900 dark:text-white transition-all duration-200 overflow-hidden\",\r\n \"hover:bg-gray-100 dark:hover:bg-white/[0.06] focus:outline-none focus:ring-2 focus:ring-gray-400 dark:focus:ring-white/15\",\r\n !date && \"text-gray-400 dark:text-white/40\",\r\n className\r\n )}\r\n >\r\n <div className=\"absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-500 pointer-events-none\"\r\n style={{\r\n background: `radial-gradient(600px circle at var(--x) var(--y), rgba(0,0,0,0.06), transparent 40%)`\r\n }}\r\n />\r\n <span className=\"relative z-10\">{date ? formatDateTime(date) : placeholder}</span>\r\n <div className=\"flex items-center gap-2 text-gray-400 dark:text-white/40\">\r\n <CalendarIcon className=\"h-4 w-4\" />\r\n <Clock className=\"h-4 w-4\" />\r\n </div>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0 border-none bg-transparent shadow-none\" align=\"start\">\r\n <div className=\"flex flex-col rounded-2xl border border-gray-200 dark:border-white/10 bg-white dark:bg-black/40 backdrop-blur-xl shadow-2xl dark:shadow-black/50\">\r\n <div className=\"flex\">\r\n <div className=\"p-4 border-r border-gray-200 dark:border-white/10\">\r\n <Calendar\r\n value={date}\r\n onChange={handleDateSelect}\r\n className=\"border-0 p-0 bg-transparent backdrop-blur-none shadow-none rounded-none\"\r\n />\r\n </div>\r\n \r\n <div className=\"flex flex-col p-4 w-[160px] h-[340px]\">\r\n <div className=\"mb-3 text-sm font-medium text-gray-700 dark:text-white/70\">Time</div>\r\n <div className=\"flex flex-1 gap-2 min-h-0 overflow-hidden\">\r\n <ScrollArea className=\"flex-1 flex flex-col gap-1\" scrollbarSize=\"sm\">\r\n <div className=\"text-xs text-gray-400 dark:text-white/40 text-center mb-1 sticky top-0 bg-white dark:bg-[#0A0A0A] py-1 z-10\">Hr</div>\r\n <div className=\"flex flex-col gap-1\">\r\n {Array.from({ length: 24 }).map((_, i) => (\r\n <button\r\n key={i}\r\n onClick={() => handleTimeChange('hours', i.toString())}\r\n className={cn(\r\n \"w-full rounded-lg px-1 py-1.5 text-sm transition-colors text-center shrink-0\",\r\n hours === i \r\n ? \"bg-emerald-500 dark:bg-emerald-600/80 text-white font-medium\" \r\n : \"text-gray-700 dark:text-white/70 hover:bg-gray-100 dark:hover:bg-white/[0.06] hover:text-gray-900 dark:hover:text-white\"\r\n )}\r\n >\r\n {i.toString().padStart(2, '0')}\r\n </button>\r\n ))}\r\n </div>\r\n </ScrollArea>\r\n <div className=\"w-[1px] bg-gray-200 dark:bg-white/[0.06]\" />\r\n <ScrollArea className=\"flex-1 flex flex-col gap-1\" scrollbarSize=\"sm\">\r\n <div className=\"text-xs text-gray-400 dark:text-white/40 text-center mb-1 sticky top-0 bg-white dark:bg-[#0A0A0A] py-1 z-10\">Min</div>\r\n <div className=\"flex flex-col gap-1\">\r\n {Array.from({ length: 60 }).map((_, i) => (\r\n <button\r\n key={i}\r\n onClick={() => handleTimeChange('minutes', i.toString())}\r\n className={cn(\r\n \"w-full rounded-lg px-1 py-1.5 text-sm transition-colors text-center shrink-0\",\r\n minutes === i \r\n ? \"bg-emerald-500 dark:bg-emerald-600/80 text-white font-medium\" \r\n : \"text-gray-700 dark:text-white/70 hover:bg-gray-100 dark:hover:bg-white/[0.06] hover:text-gray-900 dark:hover:text-white\"\r\n )}\r\n >\r\n {i.toString().padStart(2, '0')}\r\n </button>\r\n ))}\r\n </div>\r\n </ScrollArea>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Label } from './Label';\r\n\r\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n label?: string;\r\n error?: string;\r\n}\r\n\r\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n ({ className, label, error, id, disabled, ...props }, ref) => {\r\n const generatedId = React.useId();\r\n const inputId = id || generatedId;\r\n\r\n return (\r\n <div className=\"flex flex-col gap-1.5\">\r\n {label && (\r\n <Label \r\n htmlFor={inputId}\r\n className={cn(disabled && \"opacity-50 cursor-not-allowed\")}\r\n >\r\n {label}\r\n </Label>\r\n )}\r\n \r\n <textarea\r\n ref={ref}\r\n id={inputId}\r\n disabled={disabled}\r\n className={cn(\r\n 'w-full rounded-2xl bg-gray-50 dark:bg-white/[0.04] px-4 py-3',\r\n 'border border-gray-200 dark:border-white/[0.10]',\r\n 'text-gray-900 dark:text-white placeholder:text-gray-400 dark:placeholder:text-white/30',\r\n 'focus:outline-none focus:ring-2 focus:ring-purple-400/30',\r\n 'resize-none',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n error && 'border-rose-400/25 focus:ring-rose-300/25',\r\n className\r\n )}\r\n {...props}\r\n />\r\n\r\n {error && (\r\n <p className=\"text-xs text-rose-400 animate-in slide-in-from-top-1 fade-in duration-200\">\r\n {error}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = 'Textarea';\r\n","import React, { createContext, useContext } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Label } from './Label';\r\n\r\ninterface RadioGroupContextValue {\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n name?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nconst RadioGroupContext = createContext<RadioGroupContextValue>({});\r\n\r\nexport interface RadioGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n name?: string;\r\n disabled?: boolean;\r\n label?: string;\r\n}\r\n\r\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\r\n ({ className, value, onChange, name, disabled, label, children, ...props }, ref) => {\r\n const id = React.useId();\r\n \r\n return (\r\n <div ref={ref} className={cn(\"flex flex-col gap-2\", className)} {...props}>\r\n {label && (\r\n <Label className={cn(disabled && \"opacity-50 cursor-not-allowed\")}>\r\n {label}\r\n </Label>\r\n )}\r\n <div className=\"flex flex-col gap-2\" role=\"radiogroup\">\r\n <RadioGroupContext.Provider value={{ value, onChange, name: name || id, disabled }}>\r\n {children}\r\n </RadioGroupContext.Provider>\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nRadioGroup.displayName = 'RadioGroup';\r\n\r\nexport interface RadioGroupItemProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n value: string;\r\n label?: string;\r\n}\r\n\r\nexport const RadioGroupItem = React.forwardRef<HTMLInputElement, RadioGroupItemProps>(\r\n ({ className, value, label, disabled, ...props }, ref) => {\r\n const context = useContext(RadioGroupContext);\r\n const isChecked = context.value === value;\r\n const isDisabled = context.disabled || disabled;\r\n const id = React.useId();\r\n\r\n return (\r\n <label\r\n htmlFor={id}\r\n className={cn(\r\n \"flex items-center gap-3 cursor-pointer group\",\r\n isDisabled && \"cursor-not-allowed opacity-50\",\r\n className\r\n )}\r\n >\r\n <div className=\"relative flex items-center justify-center\">\r\n <input\r\n ref={ref}\r\n id={id}\r\n type=\"radio\"\r\n name={context.name}\r\n value={value}\r\n checked={isChecked}\r\n disabled={isDisabled}\r\n onChange={(e) => {\r\n if (e.target.checked) {\r\n context.onChange?.(value);\r\n }\r\n }}\r\n className=\"peer sr-only\"\r\n {...props}\r\n />\r\n <div\r\n className={cn(\r\n \"h-5 w-5 rounded-full border border-gray-300 dark:border-white/20 bg-gray-50 dark:bg-white/[0.03] transition-all duration-200\",\r\n \"peer-focus-visible:ring-2 peer-focus-visible:ring-gray-400 dark:peer-focus-visible:ring-white/20 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-white dark:peer-focus-visible:ring-offset-[#0A0A0A]\",\r\n \"group-hover:bg-gray-100 dark:group-hover:bg-white/[0.05]\",\r\n isChecked && \"border-gray-900 bg-gray-900 dark:border-white dark:bg-white\"\r\n )}\r\n >\r\n {isChecked && (\r\n <div className=\"absolute inset-0 flex items-center justify-center\">\r\n <div className=\"h-2 w-2 rounded-full bg-white dark:bg-black\" />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {label && (\r\n <span className=\"text-sm text-gray-900 dark:text-white/90 select-none font-medium\">\r\n {label}\r\n </span>\r\n )}\r\n </label>\r\n );\r\n }\r\n);\r\n\r\nRadioGroupItem.displayName = 'RadioGroupItem';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Label } from './Label';\r\n\r\ntype FormItemContextValue = {\r\n id: string;\r\n};\r\n\r\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\r\n\r\nexport const FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ className, ...props }, ref) => {\r\n const id = React.useId();\r\n return (\r\n <FormItemContext.Provider value={{ id }}>\r\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\r\n </FormItemContext.Provider>\r\n );\r\n }\r\n);\r\nFormItem.displayName = \"FormItem\";\r\n\r\nexport const FormLabel = React.forwardRef<React.ElementRef<typeof Label>, React.ComponentPropsWithoutRef<typeof Label>>(\r\n ({ className, ...props }, ref) => {\r\n const { id } = React.useContext(FormItemContext);\r\n return (\r\n <Label\r\n ref={ref}\r\n className={cn(\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\", className)}\r\n htmlFor={id}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nFormLabel.displayName = \"FormLabel\";\r\n\r\nexport const FormControl = React.forwardRef<React.ElementRef<\"div\">, React.HTMLAttributes<HTMLDivElement>>(\r\n ({ ...props }, ref) => {\r\n const { id } = React.useContext(FormItemContext);\r\n const { children, ...rest } = props;\r\n \r\n if (React.isValidElement(children)) {\r\n return React.cloneElement(children as React.ReactElement, {\r\n id,\r\n \"aria-describedby\": `${id}-description ${id}-message`,\r\n ...rest,\r\n ...(children.props as any)\r\n });\r\n }\r\n return <div ref={ref} {...props} />;\r\n }\r\n);\r\nFormControl.displayName = \"FormControl\";\r\n\r\nexport const FormDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, ...props }, ref) => {\r\n const { id } = React.useContext(FormItemContext);\r\n return (\r\n <p\r\n ref={ref}\r\n id={`${id}-description`}\r\n className={cn(\"text-xs text-white/50\", className)}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nFormDescription.displayName = \"FormDescription\";\r\n\r\nexport const FormMessage = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, children, ...props }, ref) => {\r\n const { id } = React.useContext(FormItemContext);\r\n \r\n if (!children) {\r\n return null;\r\n }\r\n\r\n return (\r\n <p\r\n ref={ref}\r\n id={`${id}-message`}\r\n className={cn(\"text-xs font-medium text-rose-500\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </p>\r\n );\r\n }\r\n);\r\nFormMessage.displayName = \"FormMessage\";\r\n","import React, { useEffect } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport type ToastVariant = 'default' | 'success' | 'error' | 'warning' | 'info' | 'loading';\r\n\r\nexport interface ToastProps {\r\n id: string;\r\n title?: string;\r\n description?: React.ReactNode;\r\n variant?: ToastVariant;\r\n duration?: number;\r\n onDismiss: (id: string) => void;\r\n}\r\n\r\nconst Icons = {\r\n loading: (\r\n <svg className=\"animate-spin text-blue-500\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\r\n </svg>\r\n ),\r\n success: (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-emerald-400\">\r\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\r\n <polyline points=\"22 4 12 14.01 9 11.01\" />\r\n </svg>\r\n ),\r\n error: (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-rose-400\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\r\n </svg>\r\n ),\r\n warning: (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-amber-400\">\r\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\r\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n ),\r\n info: (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-blue-400\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\r\n </svg>\r\n ),\r\n};\r\n\r\nexport const Toast = ({\r\n id,\r\n title,\r\n description,\r\n variant = 'default',\r\n duration = 5000,\r\n onDismiss,\r\n}: ToastProps) => {\r\n useEffect(() => {\r\n if (duration === Infinity) return;\r\n\r\n const timer = setTimeout(() => {\r\n onDismiss(id);\r\n }, duration);\r\n\r\n return () => clearTimeout(timer);\r\n }, [duration, id, onDismiss]);\r\n\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={cn(\r\n \"pointer-events-auto relative flex w-full max-w-sm items-start gap-4 overflow-hidden rounded-2xl border p-4 shadow-lg transition-all\",\r\n \"animate-in slide-in-from-right-full fade-in duration-300\",\r\n \"bg-white dark:bg-[#0A0A0A]/90 backdrop-blur-md border-gray-200 dark:border-white/10\",\r\n variant === 'error' && \"border-rose-200 dark:border-rose-500/30 bg-rose-50 dark:bg-rose-500/10\",\r\n variant === 'success' && \"border-emerald-200 dark:border-emerald-500/20 bg-emerald-50 dark:bg-emerald-950/10\",\r\n variant === 'warning' && \"border-amber-200 dark:border-amber-500/20 bg-amber-50 dark:bg-amber-950/10\",\r\n variant === 'info' && \"border-blue-200 dark:border-blue-500/20 bg-blue-50 dark:bg-blue-950/10\",\r\n variant === 'loading' && \"border-blue-200 dark:border-blue-500/20 bg-blue-50 dark:bg-blue-950/10\"\r\n )}\r\n >\r\n {variant !== 'default' && Icons[variant] && (\r\n <div className=\"shrink-0 pt-0.5\">\r\n {Icons[variant]}\r\n </div>\r\n )}\r\n \r\n <div className=\"flex-1 gap-1\">\r\n {title && <div className=\"text-sm font-semibold text-gray-900 dark:text-white\">{title}</div>}\r\n {description && <div className=\"text-sm text-gray-600 dark:text-white/80\">{description}</div>}\r\n </div>\r\n\r\n <button\r\n onClick={() => onDismiss(id)}\r\n className=\"shrink-0 rounded-md p-1 text-gray-400 dark:text-white/50 opacity-0 transition-opacity hover:text-gray-900 dark:hover:text-white group-hover:opacity-100 focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-400 dark:focus:ring-white/20\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n </div>\r\n );\r\n};\r\n","import React, { createContext, useState, useCallback, useContext } from 'react';\r\nimport type { ToastProps} from './Toast';\r\nimport { Toast, ToastVariant } from './Toast';\r\n\r\nexport type ToastOptions = Omit<ToastProps, 'id' | 'onDismiss'>;\r\n\r\nexport interface ToastContextType {\r\n toast: (options: ToastOptions) => string;\r\n dismiss: (id: string) => void;\r\n promise: <T>(\r\n promise: Promise<T>,\r\n options: {\r\n loading: string | ToastOptions;\r\n success: string | ((data: T) => ToastOptions);\r\n error: string | ((error: any) => ToastOptions);\r\n }\r\n ) => Promise<T>;\r\n}\r\n\r\nexport const ToastContext = createContext<ToastContextType | undefined>(undefined);\r\n\r\nexport function ToastProvider({ children }: { children: React.ReactNode }) {\r\n const [toasts, setToasts] = useState<ToastProps[]>([]);\r\n\r\n const dismiss = useCallback((id: string) => {\r\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\r\n }, []);\r\n\r\n const toast = useCallback((options: ToastOptions) => {\r\n const id = Math.random().toString(36).substring(2, 9);\r\n setToasts((prev) => [...prev, { ...options, id, onDismiss: dismiss }]);\r\n return id;\r\n }, [dismiss]);\r\n\r\n const updateToast = useCallback((id: string, options: Partial<ToastOptions>) => {\r\n setToasts((prev) =>\r\n prev.map((t) => (t.id === id ? { ...t, ...options } : t))\r\n );\r\n }, []);\r\n\r\n const promise = useCallback(\r\n async <T,>(\r\n promise: Promise<T>,\r\n options: {\r\n loading: string | ToastOptions;\r\n success: string | ((data: T) => ToastOptions);\r\n error: string | ((error: any) => ToastOptions);\r\n }\r\n ) => {\r\n const loadingOptions = typeof options.loading === 'string' \r\n ? { title: options.loading, variant: 'loading' as const } \r\n : { variant: 'loading' as const, ...options.loading };\r\n \r\n const id = toast({ ...loadingOptions, duration: Infinity });\r\n\r\n try {\r\n const data = await promise;\r\n const successOptions = typeof options.success === 'function'\r\n ? options.success(data)\r\n : typeof options.success === 'string'\r\n ? { title: options.success, variant: 'success' as const }\r\n : options.success;\r\n\r\n updateToast(id, { ...successOptions, duration: 5000 });\r\n return data;\r\n } catch (err) {\r\n const errorOptions = typeof options.error === 'function'\r\n ? options.error(err)\r\n : typeof options.error === 'string'\r\n ? { title: options.error, variant: 'error' as const }\r\n : options.error;\r\n\r\n updateToast(id, { ...errorOptions, duration: 5000 });\r\n throw err;\r\n }\r\n },\r\n [toast, updateToast]\r\n );\r\n\r\n return (\r\n <ToastContext.Provider value={{ toast, dismiss, promise }}>\r\n {children}\r\n <div className=\"fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse gap-2 p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\">\r\n {toasts.map((toast) => (\r\n <Toast key={toast.id} {...toast} />\r\n ))}\r\n </div>\r\n </ToastContext.Provider>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport type AlertVariant = 'default' | 'success' | 'error' | 'warning' | 'info';\r\n\r\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: AlertVariant;\r\n icon?: React.ReactNode;\r\n title?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst Icons = {\r\n success: (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-emerald-400\">\r\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\r\n <polyline points=\"22 4 12 14.01 9 11.01\" />\r\n </svg>\r\n ),\r\n error: (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-rose-400\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\r\n </svg>\r\n ),\r\n warning: (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-amber-400\">\r\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\r\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n ),\r\n info: (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-blue-400\">\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\r\n </svg>\r\n ),\r\n};\r\n\r\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\r\n ({ className, variant = 'default', icon, title, children, ...props }, ref) => {\r\n const Icon = icon || (variant !== 'default' ? Icons[variant] : null);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={cn(\r\n \"relative w-full rounded-2xl border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-gray-900 dark:[&>svg]:text-white\",\r\n \"bg-white dark:bg-[#0A0A0A]/50 backdrop-blur-md border-gray-200 dark:border-white/10 text-gray-900 dark:text-white\",\r\n variant === 'error' && \"border-rose-200 dark:border-rose-500/20 bg-rose-50 dark:bg-rose-950/10 text-rose-900 dark:text-rose-50 [&>svg]:text-rose-600 dark:[&>svg]:text-rose-400\",\r\n variant === 'success' && \"border-emerald-200 dark:border-emerald-500/20 bg-emerald-50 dark:bg-emerald-950/10 text-emerald-900 dark:text-emerald-50 [&>svg]:text-emerald-600 dark:[&>svg]:text-emerald-400\",\r\n variant === 'warning' && \"border-amber-200 dark:border-amber-500/20 bg-amber-50 dark:bg-amber-950/10 text-amber-900 dark:text-amber-50 [&>svg]:text-amber-600 dark:[&>svg]:text-amber-400\",\r\n variant === 'info' && \"border-blue-200 dark:border-blue-500/20 bg-blue-50 dark:bg-blue-950/10 text-blue-900 dark:text-blue-50 [&>svg]:text-blue-600 dark:[&>svg]:text-blue-400\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {Icon}\r\n <div className=\"flex flex-col gap-1\">\r\n {title && (\r\n <h5 className=\"mb-1 font-medium leading-none tracking-tight\">\r\n {title}\r\n </h5>\r\n )}\r\n {children && (\r\n <div className=\"text-sm opacity-90 [&_p]:leading-relaxed\">\r\n {children}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nAlert.displayName = 'Alert';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport type ProgressVariant = 'default' | 'success' | 'warning' | 'danger' | 'gradient';\r\nexport type ProgressSize = 'sm' | 'md' | 'lg';\r\n\r\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\r\n value?: number;\r\n max?: number;\r\n variant?: ProgressVariant;\r\n size?: ProgressSize;\r\n isIndeterminate?: boolean;\r\n hasStripe?: boolean;\r\n indicatorClassName?: string;\r\n}\r\n\r\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\r\n ({ \r\n className, \r\n value = 0, \r\n max = 100, \r\n variant = 'default',\r\n size = 'md',\r\n isIndeterminate = false,\r\n hasStripe = false,\r\n indicatorClassName, \r\n ...props \r\n }, ref) => {\r\n const percentage = isIndeterminate ? 0 : Math.min(Math.max((value || 0) / max, 0), 1) * 100;\r\n\r\n const variants = {\r\n default: 'bg-gray-900 dark:bg-white dark:shadow-[0_0_10px_rgba(255,255,255,0.5)]',\r\n success: 'bg-emerald-500 shadow-sm dark:shadow-[0_0_10px_rgba(16,185,129,0.5)]',\r\n warning: 'bg-amber-500 shadow-sm dark:shadow-[0_0_10px_rgba(245,158,11,0.5)]',\r\n danger: 'bg-rose-500 shadow-sm dark:shadow-[0_0_10px_rgba(244,63,94,0.5)]',\r\n gradient: 'bg-gradient-to-r from-blue-600 via-purple-600 to-blue-600 shadow-sm dark:shadow-[0_0_15px_rgba(99,102,241,0.5)]'\r\n };\r\n\r\n const sizes = {\r\n sm: 'h-1',\r\n md: 'h-2',\r\n lg: 'h-4'\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"progressbar\"\r\n aria-valuemin={0}\r\n aria-valuemax={max}\r\n aria-valuenow={isIndeterminate ? undefined : value}\r\n className={cn(\r\n \"relative w-full overflow-hidden rounded-full bg-gray-200 dark:bg-white/[0.03] border border-gray-200 dark:border-white/5 backdrop-blur-sm\",\r\n sizes[size],\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div\r\n className={cn(\r\n \"h-full w-full flex-1 transition-all duration-500 ease-in-out relative overflow-hidden\",\r\n variants[variant],\r\n isIndeterminate && \"absolute inset-0 w-full origin-left animate-indeterminate-progress\",\r\n indicatorClassName\r\n )}\r\n style={{ \r\n transform: isIndeterminate ? undefined : `translateX(-${100 - percentage}%)` \r\n }}\r\n >\r\n {hasStripe && !isIndeterminate && (\r\n <div className=\"absolute inset-0 w-full h-full animate-progress-stripe\" \r\n style={{\r\n backgroundImage: 'linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)',\r\n backgroundSize: '1rem 1rem'\r\n }} \r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nProgress.displayName = \"Progress\";\r\n","import React, { useState, useEffect } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\r\n src?: string;\r\n alt?: string;\r\n fallback?: React.ReactNode;\r\n size?: 'sm' | 'md' | 'lg' | 'xl';\r\n}\r\n\r\nconst sizeClasses = {\r\n sm: 'h-8 w-8 text-xs',\r\n md: 'h-10 w-10 text-sm',\r\n lg: 'h-14 w-14 text-base',\r\n xl: 'h-20 w-20 text-xl',\r\n};\r\n\r\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\r\n ({ className, src, alt, fallback, size = 'md', ...props }, ref) => {\r\n const [imageError, setImageError] = useState(false);\r\n\r\n useEffect(() => {\r\n setImageError(false);\r\n }, [src]);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"relative flex shrink-0 overflow-hidden rounded-full bg-gray-200 dark:bg-white/[0.06]\",\r\n sizeClasses[size],\r\n className\r\n )}\r\n {...props}\r\n >\r\n {src && !imageError ? (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className=\"aspect-square h-full w-full object-cover\"\r\n onError={() => setImageError(true)}\r\n />\r\n ) : (\r\n <div className=\"flex h-full w-full items-center justify-center bg-gray-100 dark:bg-white/5 text-gray-600 dark:text-white/70 font-medium\">\r\n {fallback || (alt ? alt.charAt(0).toUpperCase() : '?')}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nAvatar.displayName = 'Avatar';\r\n","import React, { createContext, useContext, useState } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { ChevronDown } from 'lucide-react';\r\n\r\ninterface AccordionContextValue {\r\n value: string | string[];\r\n onValueChange: (value: string) => void;\r\n type: 'single' | 'multiple';\r\n}\r\n\r\nconst AccordionContext = createContext<AccordionContextValue | undefined>(undefined);\r\n\r\nexport interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {\r\n type?: 'single' | 'multiple';\r\n defaultValue?: string | string[];\r\n value?: string | string[];\r\n onValueChange?: (value: string | string[]) => void;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function Accordion({\r\n type = 'single',\r\n defaultValue,\r\n value,\r\n onValueChange,\r\n className,\r\n children,\r\n ...props\r\n}: AccordionProps) {\r\n const [internalValue, setInternalValue] = useState<string | string[]>(\r\n defaultValue || (type === 'multiple' ? [] : '')\r\n );\r\n\r\n const currentValue = value !== undefined ? value : internalValue;\r\n\r\n const handleValueChange = (itemValue: string) => {\r\n let newValue: string | string[];\r\n\r\n if (type === 'multiple') {\r\n const arrayValue = Array.isArray(currentValue) ? currentValue : [];\r\n if (arrayValue.includes(itemValue)) {\r\n newValue = arrayValue.filter((v) => v !== itemValue);\r\n } else {\r\n newValue = [...arrayValue, itemValue];\r\n }\r\n } else {\r\n newValue = currentValue === itemValue ? '' : itemValue;\r\n }\r\n\r\n if (value === undefined) {\r\n setInternalValue(newValue);\r\n }\r\n \r\n onValueChange?.(newValue as any);\r\n };\r\n\r\n return (\r\n <AccordionContext.Provider\r\n value={{ value: currentValue, onValueChange: handleValueChange, type }}\r\n >\r\n <div className={cn(\"space-y-2\", className)} {...props}>\r\n {children}\r\n </div>\r\n </AccordionContext.Provider>\r\n );\r\n}\r\n\r\n// Helper context for Item\r\nconst AccordionItemContext = createContext<{ value: string; isOpen: boolean }>({ value: '', isOpen: false });\r\n\r\nexport interface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {\r\n value: string;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function AccordionItem({ className, value, children, ...props }: AccordionItemProps) {\r\n const context = useContext(AccordionContext);\r\n const isOpen = Array.isArray(context?.value)\r\n ? context?.value.includes(value)\r\n : context?.value === value;\r\n\r\n return (\r\n <AccordionItemContext.Provider value={{ value, isOpen: !!isOpen }}>\r\n <div\r\n className={cn(\r\n \"overflow-hidden rounded-2xl border border-gray-200 dark:border-white/5 bg-gray-50 dark:bg-white/[0.03] transition-all duration-200\",\r\n isOpen && \"bg-white dark:bg-white/[0.04] border-gray-300 dark:border-white/10\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </AccordionItemContext.Provider>\r\n );\r\n}\r\n\r\nexport interface AccordionTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function AccordionTrigger({ className, children, ...props }: AccordionTriggerProps) {\r\n const context = useContext(AccordionContext);\r\n const { value, isOpen } = useContext(AccordionItemContext);\r\n \r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={() => context?.onValueChange(value)}\r\n aria-expanded={isOpen}\r\n aria-controls={`accordion-content-${value}`}\r\n id={`accordion-trigger-${value}`}\r\n className={cn(\r\n \"flex w-full items-center justify-between px-4 py-3 text-sm font-medium text-gray-900 dark:text-white transition-all hover:text-gray-700 dark:hover:text-white/90 focus:outline-none\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronDown\r\n className={cn(\r\n \"h-4 w-4 shrink-0 text-gray-400 dark:text-white/50 transition-transform duration-200\",\r\n isOpen && \"rotate-180 text-gray-900 dark:text-white\"\r\n )}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport interface AccordionContentProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function AccordionContent({ className, children, ...props }: AccordionContentProps) {\r\n const { isOpen, value } = useContext(AccordionItemContext);\r\n\r\n if (!isOpen) return null;\r\n\r\n return (\r\n <div\r\n id={`accordion-content-${value}`}\r\n role=\"region\"\r\n aria-labelledby={`accordion-trigger-${value}`}\r\n className={cn(\r\n \"px-4 pb-3 pt-0 text-sm text-gray-600 dark:text-white/70 animate-in slide-in-from-top-1 fade-in duration-200\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import React, { createContext, useContext, useState } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface TabsContextValue {\r\n value: string;\r\n onValueChange: (value: string) => void;\r\n}\r\n\r\nconst TabsContext = createContext<TabsContextValue | undefined>(undefined);\r\n\r\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\r\n defaultValue: string;\r\n value?: string;\r\n onValueChange?: (value: string) => void;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function Tabs({\r\n defaultValue,\r\n value,\r\n onValueChange,\r\n className,\r\n children,\r\n ...props\r\n}: TabsProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n\r\n const handleValueChange = (newValue: string) => {\r\n if (value === undefined) {\r\n setInternalValue(newValue);\r\n }\r\n onValueChange?.(newValue);\r\n };\r\n\r\n const currentValue = value !== undefined ? value : internalValue;\r\n\r\n return (\r\n <TabsContext.Provider value={{ value: currentValue, onValueChange: handleValueChange }}>\r\n <div className={cn(\"w-full\", className)} {...props}>\r\n {children}\r\n </div>\r\n </TabsContext.Provider>\r\n );\r\n}\r\n\r\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function TabsList({ className, children, ...props }: TabsListProps) {\r\n return (\r\n <div\r\n role=\"tablist\"\r\n className={cn(\r\n \"inline-flex h-10 items-center justify-center rounded-2xl bg-gray-100 p-1 text-gray-500 dark:bg-white/[0.03] dark:text-white/60\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n value: string;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function TabsTrigger({ className, value, children, ...props }: TabsTriggerProps) {\r\n const context = useContext(TabsContext);\r\n if (!context) throw new Error('TabsTrigger must be used within Tabs');\r\n\r\n const isActive = context.value === value;\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={isActive}\r\n aria-controls={`tabs-content-${value}`}\r\n id={`tabs-trigger-${value}`}\r\n onClick={() => context.onValueChange(value)}\r\n className={cn(\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-2xl px-3 py-1.5 text-sm font-medium ring-offset-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-400 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-zinc-950 dark:focus-visible:ring-white/20\",\r\n isActive\r\n ? \"bg-white text-gray-900 shadow-sm dark:bg-white/[0.06] dark:text-white dark:backdrop-blur-sm\"\r\n : \"hover:bg-gray-200 hover:text-gray-900 dark:hover:bg-white/[0.03] dark:hover:text-white\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n}\r\n\r\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\r\n value: string;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function TabsContent({ className, value, children, ...props }: TabsContentProps) {\r\n const context = useContext(TabsContext);\r\n if (!context) throw new Error('TabsContent must be used within Tabs');\r\n\r\n if (context.value !== value) return null;\r\n\r\n return (\r\n <div\r\n role=\"tabpanel\"\r\n id={`tabs-content-${value}`}\r\n aria-labelledby={`tabs-trigger-${value}`}\r\n tabIndex={0}\r\n className={cn(\r\n \"mt-2 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/20 focus-visible:ring-offset-2\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface SidebarProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <aside\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-64 flex-col border-r backdrop-blur-xl transition-colors duration-200\",\r\n \"border-gray-200 bg-white/50\",\r\n \"dark:border-white/10 dark:bg-black/20\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </aside>\r\n );\r\n }\r\n);\r\n\r\nexport interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport const SidebarHeader = React.forwardRef<HTMLDivElement, SidebarHeaderProps>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex h-16 items-center px-6 border-b border-gray-200 dark:border-white/5\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nexport interface SidebarContentProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport const SidebarContent = React.forwardRef<HTMLDivElement, SidebarContentProps>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex-1 overflow-y-auto py-4 px-3 space-y-1\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nexport interface SidebarFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\r\n\r\nexport const SidebarFooter = React.forwardRef<HTMLDivElement, SidebarFooterProps>(\r\n ({ className, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"p-4 border-t border-gray-200 dark:border-white/5\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nexport interface SidebarItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n active?: boolean;\r\n icon?: React.ReactNode;\r\n badge?: React.ReactNode;\r\n}\r\n\r\nexport const SidebarItem = React.forwardRef<HTMLButtonElement, SidebarItemProps>(\r\n ({ className, children, active, icon, badge, ...props }, ref) => {\r\n return (\r\n <button\r\n ref={ref}\r\n className={cn(\r\n \"flex w-full items-center gap-3 rounded-2xl px-3 py-2 text-sm font-medium transition-colors\",\r\n \"hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-white/[0.03] dark:hover:text-white\",\r\n active \r\n ? \"bg-gray-200 text-gray-900 dark:bg-white/[0.06] dark:text-white\" \r\n : \"text-gray-600 dark:text-white/60\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {icon && <span className={cn(\"flex h-4 w-4 items-center justify-center\", active ? \"text-gray-900 dark:text-white\" : \"text-gray-500 dark:text-white/60\")}>{icon}</span>}\r\n <span className=\"flex-1 text-left\">{children}</span>\r\n {badge && (\r\n <span className=\"flex h-5 min-w-5 items-center justify-center rounded-full bg-gray-200 dark:bg-white/[0.06] px-1.5 text-[10px] font-bold text-gray-900 dark:text-white\">\r\n {badge}\r\n </span>\r\n )}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nexport interface SidebarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\r\n label?: string;\r\n}\r\n\r\nexport const SidebarGroup = React.forwardRef<HTMLDivElement, SidebarGroupProps>(\r\n ({ className, children, label, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn(\"mb-6\", className)} {...props}>\r\n {label && (\r\n <div className=\"mb-2 px-3 text-xs font-semibold uppercase tracking-wider text-gray-500 dark:text-white/40\">\r\n {label}\r\n </div>\r\n )}\r\n <div className=\"space-y-1\">{children}</div>\r\n </div>\r\n );\r\n }\r\n);\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { Slot } from '../utils/Slot';\r\nimport { cn } from '../utils/cn';\r\n\r\nconst surfaceVariants = cva(\r\n \"rounded-2xl backdrop-blur-xl transition-all duration-300 bg-white/70 border border-zinc-200 shadow-sm text-zinc-900 dark:bg-white/[0.03] dark:border-white/10 dark:shadow-[0_18px_55px_rgba(0,0,0,.45)] dark:text-white\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"\",\r\n ghost: \"bg-transparent border-transparent shadow-none\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport interface SurfaceProps \r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof surfaceVariants> {\r\n asChild?: boolean;\r\n}\r\n\r\nexport const Surface = React.forwardRef<HTMLDivElement, SurfaceProps>(\r\n ({ className, variant, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n return (\r\n <Comp\r\n ref={ref}\r\n className={cn(surfaceVariants({ variant, className }))}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\n\r\nSurface.displayName = 'Surface';","import React, { useState, useEffect } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Surface } from '../../primitives/Surface';\r\nimport { Button } from '../button/Button';\r\nimport { Menu, X } from 'lucide-react';\r\n\r\ninterface NavbarProps {\r\n logo?: React.ReactNode;\r\n links?: { label: string; href: string }[];\r\n actions?: React.ReactNode;\r\n className?: string;\r\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\r\n}\r\n\r\nconst maxWidthClasses = {\r\n sm: 'max-w-screen-sm',\r\n md: 'max-w-screen-md',\r\n lg: 'max-w-screen-lg',\r\n xl: 'max-w-screen-xl',\r\n '2xl': 'max-w-screen-2xl',\r\n full: 'max-w-full',\r\n};\r\n\r\nexport function Navbar({\r\n logo,\r\n links = [],\r\n actions,\r\n className,\r\n maxWidth = 'xl',\r\n}: NavbarProps) {\r\n const [isScrolled, setIsScrolled] = useState(false);\r\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);\r\n\r\n useEffect(() => {\r\n const handleScroll = () => {\r\n setIsScrolled(window.scrollY > 20);\r\n };\r\n window.addEventListener('scroll', handleScroll);\r\n return () => window.removeEventListener('scroll', handleScroll);\r\n }, []);\r\n\r\n return (\r\n <nav\r\n className={cn(\r\n 'fixed top-0 left-0 right-0 z-50 transition-all duration-300 px-4 py-4',\r\n isScrolled ? 'py-3' : 'py-6',\r\n className\r\n )}\r\n >\r\n <div className={cn('mx-auto transition-all duration-300', maxWidthClasses[maxWidth])}>\r\n <Surface\r\n className={cn(\r\n 'flex items-center justify-between px-6 py-3 transition-all duration-300',\r\n isScrolled \r\n ? 'rounded-2xl border-white/10 bg-white/70 dark:bg-zinc-900/70 backdrop-blur-xl shadow-lg' \r\n : 'rounded-2xl border-transparent bg-transparent dark:bg-transparent backdrop-blur-none shadow-none'\r\n )}\r\n >\r\n {/* Logo */}\r\n <div className=\"flex items-center gap-2\">\r\n {logo || <span className=\"text-xl font-bold tracking-tighter\">PIXON</span>}\r\n </div>\r\n\r\n {/* Desktop Links */}\r\n <div className=\"hidden md:flex items-center gap-8\">\r\n {links.map((link) => (\r\n <a\r\n key={link.label}\r\n href={link.href}\r\n className=\"text-sm font-medium text-zinc-600 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-white transition-colors\"\r\n >\r\n {link.label}\r\n </a>\r\n ))}\r\n </div>\r\n\r\n {/* Actions & Mobile Toggle */}\r\n <div className=\"flex items-center gap-4\">\r\n <div className=\"hidden md:flex items-center gap-2\">\r\n {actions}\r\n </div>\r\n \r\n <button\r\n className=\"md:hidden p-2 text-zinc-600 dark:text-zinc-400 hover:bg-zinc-100 dark:hover:bg-white/[0.03] rounded-2xl transition-colors\"\r\n onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}\r\n >\r\n {isMobileMenuOpen ? <X size={20} /> : <Menu size={20} />}\r\n </button>\r\n </div>\r\n </Surface>\r\n\r\n {/* Mobile Menu */}\r\n <div\r\n className={cn(\r\n 'md:hidden absolute top-full left-4 right-4 mt-2 transition-all duration-300 origin-top',\r\n isMobileMenuOpen \r\n ? 'opacity-100 scale-100 translate-y-0' \r\n : 'opacity-0 scale-95 -translate-y-4 pointer-events-none'\r\n )}\r\n >\r\n <Surface className=\"p-4 flex flex-col gap-4 shadow-2xl border-white/10 bg-white/90 dark:bg-zinc-900/90 backdrop-blur-2xl\">\r\n {links.map((link) => (\r\n <a\r\n key={link.label}\r\n href={link.href}\r\n className=\"text-base font-medium px-4 py-2 rounded-2xl hover:bg-zinc-100 dark:hover:bg-white/[0.03] text-zinc-600 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-white transition-all\"\r\n onClick={() => setIsMobileMenuOpen(false)}\r\n >\r\n {link.label}\r\n </a>\r\n ))}\r\n <div className=\"pt-4 border-t border-zinc-200 dark:border-white/10 flex flex-col gap-2\">\r\n {actions}\r\n </div>\r\n </Surface>\r\n </div>\r\n </div>\r\n </nav>\r\n );\r\n}\r\n","import React, { createContext, useContext, useState, useRef, useEffect, useLayoutEffect } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { cn } from '../../utils/cn';import { useFloating } from '../../hooks/useFloating';\r\ninterface DropdownMenuContextValue {\r\n isOpen: boolean;\r\n setIsOpen: (isOpen: boolean) => void;\r\n triggerRef: React.RefObject<HTMLElement>;\r\n}\r\n\r\nconst DropdownMenuContext = createContext<DropdownMenuContextValue | undefined>(undefined);\r\n\r\nexport interface DropdownMenuProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function DropdownMenu({ children }: DropdownMenuProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const triggerRef = useRef<HTMLElement>(null);\r\n\r\n return (\r\n <DropdownMenuContext.Provider value={{ isOpen, setIsOpen, triggerRef }}>\r\n <div className=\"relative inline-block text-left\">\r\n {children}\r\n </div>\r\n </DropdownMenuContext.Provider>\r\n );\r\n}\r\n\r\nexport interface DropdownMenuTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function DropdownMenuTrigger({ className, children, ...props }: DropdownMenuTriggerProps) {\r\n const context = useContext(DropdownMenuContext);\r\n if (!context) throw new Error('DropdownMenuTrigger must be used within DropdownMenu');\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n context.setIsOpen(!context.isOpen);\r\n props.onClick?.(e as any);\r\n };\r\n\r\n return (\r\n <button\r\n ref={context.triggerRef as any}\r\n type=\"button\"\r\n aria-haspopup=\"menu\"\r\n aria-expanded={context.isOpen ? \"true\" : \"false\"}\r\n onClick={handleClick}\r\n className={cn(\"inline-flex items-center justify-center\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n}\r\n\r\nexport interface DropdownMenuContentProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n align?: 'start' | 'end' | 'center';\r\n side?: 'top' | 'bottom' | 'left' | 'right';\r\n}\r\n\r\nexport function DropdownMenuContent({ className, children, align = 'start', side = 'bottom', ...props }: DropdownMenuContentProps) {\r\n const context = useContext(DropdownMenuContext);\r\n if (!context) throw new Error('DropdownMenuContent must be used within DropdownMenu');\r\n\r\n const contentRef = useRef<HTMLDivElement>(null);\r\n const { position, isPositioned } = useFloating(context.triggerRef, contentRef, {\r\n side,\r\n align,\r\n isOpen: context.isOpen,\r\n });\r\n\r\n useEffect(() => {\r\n if (context.isOpen) {\r\n const handleOutsideClick = (e: MouseEvent) => {\r\n if (\r\n contentRef.current &&\r\n !contentRef.current.contains(e.target as Node) &&\r\n context.triggerRef.current &&\r\n !context.triggerRef.current.contains(e.target as Node)\r\n ) {\r\n context.setIsOpen(false);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n context.setIsOpen(false);\r\n context.triggerRef.current?.focus();\r\n }\r\n \r\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n const items = contentRef.current?.querySelectorAll('[role=\"menuitem\"]') as NodeListOf<HTMLElement>;\r\n if (!items.length) return;\r\n \r\n const currentIndex = Array.from(items).indexOf(document.activeElement as HTMLElement);\r\n let nextIndex = 0;\r\n \r\n if (e.key === 'ArrowDown') {\r\n nextIndex = (currentIndex + 1) % items.length;\r\n } else {\r\n nextIndex = (currentIndex - 1 + items.length) % items.length;\r\n }\r\n \r\n items[nextIndex]?.focus();\r\n }\r\n };\r\n\r\n document.addEventListener('mousedown', handleOutsideClick);\r\n document.addEventListener('keydown', handleKeyDown);\r\n return () => {\r\n document.removeEventListener('mousedown', handleOutsideClick);\r\n document.removeEventListener('keydown', handleKeyDown);\r\n };\r\n }\r\n }, [context.isOpen, context.setIsOpen, context.triggerRef]);\r\n\r\n if (!context.isOpen) return null;\r\n\r\n const getTransformOrigin = () => {\r\n if (side === 'bottom') {\r\n if (align === 'start') return 'top left';\r\n if (align === 'end') return 'top right';\r\n return 'top center';\r\n }\r\n if (side === 'top') {\r\n if (align === 'start') return 'bottom left';\r\n if (align === 'end') return 'bottom right';\r\n return 'bottom center';\r\n }\r\n if (side === 'left') {\r\n if (align === 'start') return 'top right';\r\n if (align === 'end') return 'bottom right';\r\n return 'center right';\r\n }\r\n if (side === 'right') {\r\n if (align === 'start') return 'top left';\r\n if (align === 'end') return 'bottom left';\r\n return 'center left';\r\n }\r\n return 'center center';\r\n };\r\n\r\n return createPortal(\r\n <div\r\n ref={contentRef}\r\n role=\"menu\"\r\n aria-orientation=\"vertical\"\r\n style={{ \r\n top: position.top, \r\n left: position.left,\r\n transformOrigin: getTransformOrigin(),\r\n }}\r\n className={cn(\r\n \"fixed z-50 min-w-[8rem] overflow-hidden rounded-2xl border border-gray-200 dark:border-white/10 bg-white/80 dark:bg-white/[0.03] backdrop-blur-xl p-1 shadow-md duration-100\",\r\n isPositioned ? \"animate-in fade-in zoom-in-95 opacity-100\" : \"opacity-0\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>,\r\n document.body\r\n );\r\n}\r\n\r\nexport interface DropdownMenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function DropdownMenuItem({ className, children, ...props }: DropdownMenuItemProps) {\r\n const context = useContext(DropdownMenuContext);\r\n \r\n const handleClick = (e: React.MouseEvent) => {\r\n context?.setIsOpen(false);\r\n props.onClick?.(e as any);\r\n };\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"menuitem\"\r\n onClick={handleClick}\r\n className={cn(\r\n \"relative flex w-full cursor-pointer select-none items-center rounded-2xl px-3 py-2 text-sm outline-none transition-colors\",\r\n \"text-gray-700 dark:text-white/80\",\r\n \"hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-white/[0.06] dark:hover:text-white\",\r\n \"focus:bg-gray-100 focus:text-gray-900 dark:focus:bg-white/[0.06] dark:focus:text-white\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n}\r\n\r\nexport function DropdownMenuLabel({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div className={cn(\"px-2 py-1.5 text-sm font-semibold text-gray-900 dark:text-white\", className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function DropdownMenuSeparator({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div className={cn(\"-mx-1 my-1 h-px bg-gray-200 dark:bg-white/[0.03]\", className)} {...props} />\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Settings, LogOut, User } from 'lucide-react';\r\nimport { Avatar } from '../data-display/Avatar';\r\nimport { \r\n DropdownMenu, \r\n DropdownMenuTrigger, \r\n DropdownMenuContent, \r\n DropdownMenuItem, \r\n DropdownMenuSeparator,\r\n DropdownMenuLabel\r\n} from '../overlay/DropdownMenu';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface UserMenuProps {\r\n name: string;\r\n description?: string;\r\n avatarSrc?: string;\r\n avatarFallback?: string;\r\n className?: string;\r\n side?: 'top' | 'bottom' | 'left' | 'right';\r\n align?: 'start' | 'end' | 'center';\r\n}\r\n\r\nexport function UserMenu({ \r\n name, \r\n description, \r\n avatarSrc, \r\n avatarFallback,\r\n className,\r\n side = 'top',\r\n align = 'start'\r\n}: UserMenuProps) {\r\n return (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger className={cn(\"w-full outline-none\", className)}>\r\n <div className=\"group flex w-full items-center gap-3 rounded-2xl border border-gray-200 dark:border-white/5 bg-white dark:bg-white/[0.03] p-3 transition-colors hover:bg-gray-50 dark:hover:bg-white/[0.06]\">\r\n <Avatar src={avatarSrc} fallback={avatarFallback || name.charAt(0)} size=\"sm\" />\r\n <div className=\"flex flex-1 flex-col items-start text-left\">\r\n <span className=\"text-xs font-medium text-gray-900 dark:text-white\">{name}</span>\r\n {description && <span className=\"text-[10px] text-gray-500 dark:text-white/50\">{description}</span>}\r\n </div>\r\n <Settings className=\"h-4 w-4 text-gray-400 dark:text-white/50 transition-colors group-hover:text-gray-900 dark:group-hover:text-white\" />\r\n </div>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent className=\"w-56\" align={align} side={side}>\r\n <DropdownMenuLabel>My Account</DropdownMenuLabel>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuItem>\r\n <User className=\"mr-2 h-4 w-4\" />\r\n <span>Profile</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem>\r\n <Settings className=\"mr-2 h-4 w-4\" />\r\n <span>Settings</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuItem className=\"text-rose-400 focus:text-rose-400\">\r\n <LogOut className=\"mr-2 h-4 w-4\" />\r\n <span>Log out</span>\r\n </DropdownMenuItem>\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nconst Breadcrumb = React.forwardRef<\r\n HTMLElement,\r\n React.ComponentPropsWithoutRef<\"nav\"> & {\r\n separator?: React.ReactNode\r\n }\r\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\r\nBreadcrumb.displayName = \"Breadcrumb\"\r\n\r\nconst BreadcrumbList = React.forwardRef<\r\n HTMLOListElement,\r\n React.ComponentPropsWithoutRef<\"ol\">\r\n>(({ className, ...props }, ref) => (\r\n <ol\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-gray-500 dark:text-white/50 sm:gap-2.5\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbList.displayName = \"BreadcrumbList\"\r\n\r\nconst BreadcrumbItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentPropsWithoutRef<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li\r\n ref={ref}\r\n className={cn(\"inline-flex items-center gap-1.5\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\r\n\r\nconst BreadcrumbLink = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentPropsWithoutRef<\"a\"> & {\r\n asChild?: boolean\r\n }\r\n>(({ className, ...props }, ref) => {\r\n return (\r\n <a\r\n ref={ref}\r\n className={cn(\"transition-colors hover:text-gray-900 dark:hover:text-white\", className)}\r\n {...props}\r\n />\r\n )\r\n})\r\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\r\n\r\nconst BreadcrumbPage = React.forwardRef<\r\n HTMLSpanElement,\r\n React.ComponentPropsWithoutRef<\"span\">\r\n>(({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n role=\"link\"\r\n aria-disabled=\"true\"\r\n aria-current=\"page\"\r\n className={cn(\"font-normal text-gray-900 dark:text-white\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\r\n\r\nconst BreadcrumbSeparator = ({\r\n children,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"li\">) => (\r\n <li\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"[&>svg]:size-3.5\", className)}\r\n {...props}\r\n >\r\n {children ?? (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className=\"h-4 w-4\"\r\n >\r\n <path d=\"m9 18 6-6-6-6\" />\r\n </svg>\r\n )}\r\n </li>\r\n)\r\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\r\n\r\nconst BreadcrumbEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className=\"h-4 w-4\"\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\r\n </svg>\r\n <span className=\"sr-only\">More</span>\r\n </span>\r\n)\r\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\r\n\r\nexport {\r\n Breadcrumb,\r\n BreadcrumbList,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n BreadcrumbEllipsis,\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { PrimaryButton } from '../button/PrimaryButton';\r\n\r\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\r\n <nav\r\n role=\"navigation\"\r\n aria-label=\"pagination\"\r\n className={cn(\"mx-auto flex w-full justify-center\", className)}\r\n {...props}\r\n />\r\n)\r\nPagination.displayName = \"Pagination\"\r\n\r\nconst PaginationContent = React.forwardRef<\r\n HTMLUListElement,\r\n React.ComponentProps<\"ul\">\r\n>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n className={cn(\"flex flex-row items-center gap-1\", className)}\r\n {...props}\r\n />\r\n))\r\nPaginationContent.displayName = \"PaginationContent\"\r\n\r\nconst PaginationItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentProps<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li ref={ref} className={cn(\"\", className)} {...props} />\r\n))\r\nPaginationItem.displayName = \"PaginationItem\"\r\n\r\ntype PaginationLinkProps = {\r\n isActive?: boolean\r\n} & React.ComponentProps<\"a\">\r\n\r\nconst PaginationLink = ({\r\n className,\r\n isActive,\r\n ...props\r\n}: PaginationLinkProps) => (\r\n <a\r\n aria-current={isActive ? \"page\" : undefined}\r\n className={cn(\r\n \"inline-flex h-9 w-9 items-center justify-center rounded-2xl text-sm font-medium transition-colors\",\r\n \"hover:bg-gray-100 dark:hover:bg-white/[0.03] hover:text-gray-900 dark:hover:text-white\",\r\n isActive ? \"bg-gray-100 text-gray-900 dark:bg-white/[0.06] dark:text-white\" : \"text-gray-500 dark:text-white/60\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nPaginationLink.displayName = \"PaginationLink\"\r\n\r\nconst PaginationPrevious = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to previous page\"\r\n className={cn(\"w-auto gap-1 px-2.5\", className)}\r\n {...props}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className=\"h-4 w-4\"\r\n >\r\n <path d=\"m15 18-6-6 6-6\" />\r\n </svg>\r\n <span>Previous</span>\r\n </PaginationLink>\r\n)\r\nPaginationPrevious.displayName = \"PaginationPrevious\"\r\n\r\nconst PaginationNext = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof PaginationLink>) => (\r\n <PaginationLink\r\n aria-label=\"Go to next page\"\r\n className={cn(\"w-auto gap-1 px-2.5\", className)}\r\n {...props}\r\n >\r\n <span>Next</span>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className=\"h-4 w-4\"\r\n >\r\n <path d=\"m9 18 6-6-6-6\" />\r\n </svg>\r\n </PaginationLink>\r\n)\r\nPaginationNext.displayName = \"PaginationNext\"\r\n\r\nconst PaginationEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n aria-hidden\r\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\r\n {...props}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className=\"h-4 w-4\"\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\r\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\r\n </svg>\r\n <span className=\"sr-only\">More pages</span>\r\n </span>\r\n)\r\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\r\n\r\nexport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationEllipsis,\r\n PaginationItem,\r\n PaginationLink,\r\n PaginationNext,\r\n PaginationPrevious,\r\n}\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { cn } from '../../utils/cn';\r\nimport { Heading } from '../typography/Heading';\r\nimport { Text } from '../typography/Text';\r\n\r\nexport interface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function Modal({ isOpen, onClose, children, className }: ModalProps) {\r\n const dialogRef = useRef<HTMLDialogElement>(null);\r\n\r\n useEffect(() => {\r\n const dialog = dialogRef.current;\r\n if (!dialog) return;\r\n\r\n if (isOpen) {\r\n if (!dialog.open) {\r\n dialog.showModal();\r\n document.body.style.overflow = 'hidden';\r\n }\r\n } else {\r\n if (dialog.open) {\r\n dialog.close();\r\n document.body.style.overflow = 'unset';\r\n }\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n const dialog = dialogRef.current;\r\n if (!dialog) return;\r\n\r\n const handleCancel = (e: Event) => {\r\n e.preventDefault();\r\n onClose();\r\n };\r\n\r\n dialog.addEventListener('cancel', handleCancel);\r\n return () => dialog.removeEventListener('cancel', handleCancel);\r\n }, [onClose]);\r\n\r\n const handleBackdropClick = (e: React.MouseEvent) => {\r\n if (e.target === dialogRef.current) {\r\n onClose();\r\n }\r\n };\r\n\r\n return createPortal(\r\n <dialog\r\n ref={dialogRef}\r\n onClick={handleBackdropClick}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-transparent p-0 backdrop:bg-black/60 backdrop:backdrop-blur-sm open:flex open:items-center open:justify-center\",\r\n \"animate-in fade-in duration-200\",\r\n className\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-full max-w-lg scale-100 gap-4 border border-gray-200 dark:border-white/10 bg-white dark:bg-[#0A0A0A]/90 p-6 shadow-2xl backdrop-blur-xl transition-all sm:rounded-2xl\",\r\n \"animate-in fade-in zoom-in-95 duration-200 slide-in-from-bottom-2\"\r\n )}\r\n >\r\n {children}\r\n <button\r\n onClick={onClose}\r\n 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-gray-400 dark:focus:ring-white/20 disabled:pointer-events-none\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-gray-900 dark:text-white\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n <span className=\"sr-only\">Close</span>\r\n </button>\r\n </div>\r\n </dialog>,\r\n document.body\r\n );\r\n}\r\n\r\nexport function ModalHeader({ className, children }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left mb-4\", className)}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function ModalFooter({ className, children }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 mt-6\", className)}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function ModalTitle({ className, children }: React.HTMLAttributes<HTMLHeadingElement>) {\r\n return (\r\n <Heading as=\"h2\" className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}>\r\n {children}\r\n </Heading>\r\n );\r\n}\r\n\r\nexport function ModalDescription({ className, children }: React.HTMLAttributes<HTMLParagraphElement>) {\r\n return (\r\n <Text variant=\"muted\" className={cn(\"text-sm\", className)}>\r\n {children}\r\n </Text>\r\n );\r\n}\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { cn } from '../../utils/cn';\r\nimport { Heading } from '../typography/Heading';\r\n\r\nexport interface DialogProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function Dialog({ isOpen, onClose, children, className }: DialogProps) {\r\n const dialogRef = useRef<HTMLDialogElement>(null);\r\n\r\n useEffect(() => {\r\n const dialog = dialogRef.current;\r\n if (!dialog) return;\r\n\r\n if (isOpen) {\r\n if (!dialog.open) {\r\n dialog.showModal();\r\n }\r\n } else {\r\n if (dialog.open) {\r\n dialog.close();\r\n }\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n const dialog = dialogRef.current;\r\n if (!dialog) return;\r\n\r\n const handleCancel = (e: Event) => {\r\n e.preventDefault();\r\n onClose();\r\n };\r\n\r\n dialog.addEventListener('cancel', handleCancel);\r\n return () => dialog.removeEventListener('cancel', handleCancel);\r\n }, [onClose]);\r\n\r\n const handleBackdropClick = (e: React.MouseEvent) => {\r\n if (e.target === dialogRef.current) {\r\n onClose();\r\n }\r\n };\r\n\r\n return createPortal(\r\n <dialog\r\n ref={dialogRef}\r\n onClick={handleBackdropClick}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-transparent p-0 backdrop:bg-black/60 backdrop:backdrop-blur-sm\",\r\n \"open:animate-in open:fade-in open:duration-200\",\r\n className\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-full max-w-lg scale-100 gap-4 border border-gray-200 dark:border-white/10 bg-white dark:bg-[#0A0A0A]/90 p-6 shadow-2xl backdrop-blur-xl transition-all sm:rounded-2xl\",\r\n \"animate-in fade-in zoom-in-95 duration-200 slide-in-from-bottom-2\"\r\n )}\r\n >\r\n {children}\r\n <button\r\n onClick={onClose}\r\n 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-gray-400 dark:focus:ring-white/20 disabled:pointer-events-none\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-gray-900 dark:text-white\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n <span className=\"sr-only\">Close</span>\r\n </button>\r\n </div>\r\n </dialog>,\r\n document.body\r\n );\r\n}\r\n\r\nexport function DialogHeader({ className, children }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left mb-4\", className)}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function DialogFooter({ className, children }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 mt-6\", className)}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function DialogTitle({ className, children }: React.HTMLAttributes<HTMLHeadingElement>) {\r\n return (\r\n <Heading as=\"h2\" className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}>\r\n {children}\r\n </Heading>\r\n );\r\n}\r\n\r\nexport function DialogDescription({ className, children }: React.HTMLAttributes<HTMLParagraphElement>) {\r\n return (\r\n <p className={cn(\"text-sm text-gray-500 dark:text-gray-400\", className)}>\r\n {children}\r\n </p>\r\n );\r\n}\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { cn } from '../../utils/cn';\r\nimport { Heading } from '../typography/Heading';\r\nimport { Text } from '../typography/Text';\r\n\r\nexport interface DrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n position?: 'left' | 'right' | 'bottom';\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function Drawer({ \r\n isOpen, \r\n onClose, \r\n position = 'right', \r\n children, \r\n className \r\n}: DrawerProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const [shouldRender, setShouldRender] = useState(false);\r\n const overlayRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n setShouldRender(true);\r\n // Small delay to allow render before animating in\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n setIsVisible(true);\r\n });\r\n });\r\n document.body.style.overflow = 'hidden';\r\n } else {\r\n setIsVisible(false);\r\n const timer = setTimeout(() => {\r\n setShouldRender(false);\r\n document.body.style.overflow = 'unset';\r\n }, 300); // Match transition duration\r\n return () => clearTimeout(timer);\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') onClose();\r\n };\r\n\r\n if (isOpen) {\r\n document.addEventListener('keydown', handleEscape);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape);\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n const handleBackdropClick = (e: React.MouseEvent) => {\r\n if (e.target === overlayRef.current) {\r\n onClose();\r\n }\r\n };\r\n\r\n if (!shouldRender) return null;\r\n\r\n const positionClasses = {\r\n left: \"left-0 h-full w-3/4 max-w-sm border-r\",\r\n right: \"right-0 h-full w-3/4 max-w-sm border-l\",\r\n bottom: \"bottom-0 w-full h-auto max-h-[90vh] border-t rounded-t-2xl\",\r\n };\r\n\r\n const translateClasses = {\r\n left: isVisible ? \"translate-x-0\" : \"-translate-x-full\",\r\n right: isVisible ? \"translate-x-0\" : \"translate-x-full\",\r\n bottom: isVisible ? \"translate-y-0\" : \"translate-y-full\",\r\n };\r\n\r\n return createPortal(\r\n <div\r\n ref={overlayRef}\r\n onClick={handleBackdropClick}\r\n className={cn(\r\n \"fixed inset-0 z-50 flex bg-black/60 backdrop-blur-sm transition-opacity duration-300\",\r\n isVisible ? \"opacity-100\" : \"opacity-0\"\r\n )}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n >\r\n <div\r\n className={cn(\r\n \"absolute bg-white dark:bg-[#0A0A0A] border-gray-200 dark:border-white/10 p-6 shadow-2xl transition-transform duration-300 ease-in-out\",\r\n positionClasses[position],\r\n translateClasses[position],\r\n className\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </div>,\r\n document.body\r\n );\r\n}\r\n\r\nexport function DrawerHeader({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left mb-6\", className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function DrawerFooter({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 mt-auto pt-6\", className)} {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function DrawerTitle({ className, children, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\r\n return (\r\n <Heading as=\"h2\" className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)} {...props}>\r\n {children}\r\n </Heading>\r\n );\r\n}\r\n\r\nexport function DrawerDescription({ className, children, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\r\n return (\r\n <Text variant=\"muted\" className={cn(\"text-sm\", className)} {...props}>\r\n {children}\r\n </Text>\r\n );\r\n}\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { cn } from '../../utils/cn';\r\nimport { useFloating } from '../../hooks/useFloating';\r\n\r\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\r\n\r\nexport interface TooltipProps {\r\n content: React.ReactNode;\r\n children: React.ReactNode;\r\n position?: TooltipPosition;\r\n delay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function Tooltip({ \r\n content, \r\n children, \r\n position = 'top', \r\n delay = 200,\r\n className \r\n}: TooltipProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const triggerRef = useRef<HTMLDivElement>(null);\r\n const contentRef = useRef<HTMLDivElement>(null);\r\n\r\n const { position: floatingPosition, isPositioned } = useFloating(triggerRef, contentRef, {\r\n side: position,\r\n align: 'center',\r\n sideOffset: 8,\r\n isOpen: isVisible,\r\n });\r\n\r\n const showTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\r\n };\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n setIsVisible(false);\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n };\r\n }, []);\r\n\r\n const animationClasses = {\r\n top: 'slide-in-from-bottom-2',\r\n bottom: 'slide-in-from-top-2',\r\n left: 'slide-in-from-right-2',\r\n right: 'slide-in-from-left-2',\r\n };\r\n\r\n return (\r\n <div \r\n ref={triggerRef}\r\n className=\"relative inline-flex\" \r\n onMouseEnter={showTooltip} \r\n onMouseLeave={hideTooltip}\r\n onFocus={showTooltip}\r\n onBlur={hideTooltip}\r\n >\r\n {children}\r\n {isVisible && createPortal(\r\n <div\r\n ref={contentRef}\r\n role=\"tooltip\"\r\n style={{\r\n top: floatingPosition.top,\r\n left: floatingPosition.left,\r\n }}\r\n className={cn(\r\n \"fixed z-[100] min-w-max max-w-xs rounded-2xl border border-gray-200 dark:border-white/10 bg-white dark:bg-[#0A0A0A]/90 px-3 py-1.5 text-xs text-gray-900 dark:text-white shadow-xl backdrop-blur-md\",\r\n \"duration-200\",\r\n isPositioned ? \"animate-in fade-in opacity-100\" : \"opacity-0\",\r\n animationClasses[position],\r\n className\r\n )}\r\n >\r\n {content}\r\n </div>,\r\n document.body\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { cn } from '../../utils/cn';\r\nimport type { ComboboxProps } from '../form/Combobox';\r\nimport { Combobox, ComboboxInput, ComboboxList, ComboboxItem, ComboboxEmpty } from '../form/Combobox';\r\nimport { Search } from 'lucide-react';\r\n\r\nexport interface CommandDialogProps extends ComboboxProps {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n}\r\n\r\nexport function Command({ children, ...props }: ComboboxProps) {\r\n return (\r\n <div className=\"flex h-full w-full flex-col overflow-hidden rounded-2xl bg-white dark:bg-black/90 text-gray-900 dark:text-white\">\r\n <Combobox usePopover={false} {...props}>\r\n {children}\r\n </Combobox>\r\n </div>\r\n );\r\n}\r\n\r\nexport function CommandDialog({ \r\n children, \r\n open, \r\n onOpenChange,\r\n ...props \r\n}: CommandDialogProps) {\r\n const overlayRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') onOpenChange(false);\r\n };\r\n\r\n if (open) {\r\n document.addEventListener('keydown', handleEscape);\r\n document.body.style.overflow = 'hidden';\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape);\r\n document.body.style.overflow = 'unset';\r\n };\r\n }, [open, onOpenChange]);\r\n\r\n const handleBackdropClick = (e: React.MouseEvent) => {\r\n if (e.target === overlayRef.current) {\r\n onOpenChange(false);\r\n }\r\n };\r\n\r\n if (!open) return null;\r\n\r\n return createPortal(\r\n <div\r\n ref={overlayRef}\r\n onClick={handleBackdropClick}\r\n className=\"fixed inset-0 z-50 flex items-start justify-center bg-black/60 backdrop-blur-sm animate-in fade-in duration-200 pt-[20vh]\"\r\n >\r\n <div className=\"relative w-full max-w-lg overflow-hidden rounded-2xl border border-gray-200 dark:border-white/10 bg-white dark:bg-black/90 shadow-2xl animate-in zoom-in-95 duration-200\">\r\n <Combobox usePopover={false} {...props}>\r\n {children}\r\n </Combobox>\r\n </div>\r\n </div>,\r\n document.body\r\n );\r\n}\r\n\r\nexport function CommandInput({ className, ...props }: React.InputHTMLAttributes<HTMLInputElement>) {\r\n return (\r\n <div className=\"flex items-center border-b border-gray-200 dark:border-white/10 px-3\" cmdk-input-wrapper=\"\">\r\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\r\n <ComboboxInput \r\n className={cn(\r\n \"flex h-12 w-full rounded-md bg-transparent py-3 text-sm text-gray-900 dark:text-white outline-none placeholder:text-gray-400 dark:placeholder:text-white/50 disabled:cursor-not-allowed disabled:opacity-50 border-none focus:ring-0 px-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport function CommandList({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <ComboboxList \r\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden p-2\", className)} \r\n {...props} \r\n />\r\n );\r\n}\r\n\r\nexport function CommandEmpty(props: React.HTMLAttributes<HTMLDivElement>) {\r\n return <ComboboxEmpty className=\"py-6 text-center text-sm\" {...props} />;\r\n}\r\n\r\nexport function CommandGroup({ \r\n children, \r\n heading, \r\n className, \r\n ...props \r\n}: React.HTMLAttributes<HTMLDivElement> & { heading?: React.ReactNode }) {\r\n return (\r\n <div className={cn(\"overflow-hidden p-1 text-gray-900 dark:text-white\", className)} {...props}>\r\n {heading && (\r\n <div className=\"px-2 py-1.5 text-xs font-medium text-gray-500 dark:text-white/50\">\r\n {heading}\r\n </div>\r\n )}\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CommandItem({ \r\n className, \r\n ...props \r\n}: React.ComponentProps<typeof ComboboxItem>) {\r\n return (\r\n <ComboboxItem \r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-2xl px-2 py-1.5 text-sm outline-none text-gray-900 dark:text-white aria-selected:bg-gray-100 dark:aria-selected:bg-white/[0.06] aria-selected:text-gray-900 dark:aria-selected:text-white data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )} \r\n {...props} \r\n />\r\n );\r\n}\r\n\r\nexport function CommandShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\r\n return (\r\n <span\r\n className={cn(\r\n \"ml-auto text-xs tracking-widest text-gray-400 dark:text-white/50\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n","import { useContext } from 'react';\r\nimport { ToastContext } from '../components/feedback/ToastProvider';\r\n\r\nexport function useToast() {\r\n const context = useContext(ToastContext);\r\n if (!context) {\r\n throw new Error('useToast must be used within a ToastProvider');\r\n }\r\n return context;\r\n}\r\n","import { useState, useEffect, useCallback, useRef } from 'react';\r\n\r\nexport function useTimer(initialSeconds: number = 0) {\r\n const [seconds, setSeconds] = useState(initialSeconds);\r\n const [isActive, setIsActive] = useState(false);\r\n const intervalRef = useRef<any>(null);\r\n\r\n const start = useCallback(() => {\r\n if (!isActive) {\r\n setIsActive(true);\r\n intervalRef.current = setInterval(() => {\r\n setSeconds((prev) => prev + 1);\r\n }, 1000);\r\n }\r\n }, [isActive]);\r\n\r\n const pause = useCallback(() => {\r\n if (isActive && intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n setIsActive(false);\r\n }\r\n }, [isActive]);\r\n\r\n const reset = useCallback(() => {\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n }\r\n setIsActive(false);\r\n setSeconds(0);\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n const formatTime = (totalSeconds: number) => {\r\n const hours = Math.floor(totalSeconds / 3600);\r\n const minutes = Math.floor((totalSeconds % 3600) / 60);\r\n const secs = totalSeconds % 60;\r\n return [hours, minutes, secs]\r\n .map((v) => (v < 10 ? '0' + v : v))\r\n .filter((v, i) => v !== '00' || i > 0)\r\n .join(':');\r\n };\r\n\r\n return {\r\n seconds,\r\n isActive,\r\n start,\r\n pause,\r\n reset,\r\n formattedTime: formatTime(seconds),\r\n };\r\n}\r\n","import type { RefObject } from 'react';\r\nimport { useState, useEffect, useRef } from 'react';\r\n\r\ninterface UseIntersectionOptions extends IntersectionObserverInit {\r\n freezeOnceVisible?: boolean;\r\n}\r\n\r\nexport function useIntersection(\r\n elementRef: RefObject<Element>,\r\n {\r\n threshold = 0,\r\n root = null,\r\n rootMargin = '0%',\r\n freezeOnceVisible = false,\r\n }: UseIntersectionOptions = {}\r\n): IntersectionObserverEntry | undefined {\r\n const [entry, setEntry] = useState<IntersectionObserverEntry>();\r\n\r\n const frozen = entry?.isIntersecting && freezeOnceVisible;\r\n\r\n const updateEntry = ([entry]: IntersectionObserverEntry[]): void => {\r\n setEntry(entry);\r\n };\r\n\r\n useEffect(() => {\r\n const node = elementRef?.current;\r\n const hasIOSupport = !!window.IntersectionObserver;\r\n\r\n if (!hasIOSupport || frozen || !node) return;\r\n\r\n const observerParams = { threshold, root, rootMargin };\r\n const observer = new IntersectionObserver(updateEntry, observerParams);\r\n\r\n observer.observe(node);\r\n\r\n return () => observer.disconnect();\r\n }, [elementRef, threshold, root, rootMargin, frozen]);\r\n\r\n return entry;\r\n}\r\n","import type { FormEvent } from 'react';\r\nimport { useState, useCallback } from 'react';\r\n\r\ninterface UseFormOptions<T> {\r\n initialValues: T;\r\n onSubmit: (values: T) => void | Promise<void>;\r\n}\r\n\r\nexport function useForm<T extends Record<string, unknown>>({\r\n initialValues,\r\n onSubmit,\r\n}: UseFormOptions<T>) {\r\n const [values, setValues] = useState<T>(initialValues);\r\n const [errors, setErrors] = useState<Partial<Record<keyof T, string>>>({});\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const handleChange = useCallback((\r\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>\r\n ) => {\r\n const { name, value, type } = e.target;\r\n const val = type === 'checkbox' ? (e.target as HTMLInputElement).checked : value;\r\n\r\n setValues((prev) => ({ ...prev, [name]: val }));\r\n \r\n // Clear error when user starts typing\r\n if (errors[name as keyof T]) {\r\n setErrors((prev) => ({ ...prev, [name]: '' }));\r\n }\r\n }, [errors]);\r\n\r\n const handleSubmit = useCallback(async (e: FormEvent<HTMLFormElement>) => {\r\n e.preventDefault();\r\n const form = e.currentTarget;\r\n \r\n if (!form.checkValidity()) {\r\n const newErrors: Partial<Record<keyof T, string>> = {};\r\n Array.from(form.elements).forEach((element) => {\r\n const input = element as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\r\n if (input.name && !input.validity.valid) {\r\n newErrors[input.name as keyof T] = input.validationMessage;\r\n }\r\n });\r\n setErrors(newErrors);\r\n return;\r\n }\r\n\r\n setIsSubmitting(true);\r\n try {\r\n await onSubmit(values);\r\n } finally {\r\n setIsSubmitting(false);\r\n }\r\n }, [values, onSubmit]);\r\n\r\n const register = useCallback((name: keyof T) => ({\r\n name: name as string,\r\n value: values[name] as string | number | readonly string[] | undefined,\r\n onChange: handleChange,\r\n error: errors[name],\r\n }), [values, errors, handleChange]);\r\n\r\n return {\r\n values,\r\n errors,\r\n isSubmitting,\r\n handleChange,\r\n handleSubmit,\r\n register,\r\n setValues,\r\n setErrors,\r\n };\r\n}\r\n","import type { RefObject } from 'react';\r\nimport { useState, useEffect, useLayoutEffect } from 'react';\r\n\r\nexport type Breakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl';\r\n\r\nconst breakpoints: Record<Breakpoint, number> = {\r\n sm: 640,\r\n md: 768,\r\n lg: 1024,\r\n xl: 1280,\r\n '2xl': 1536,\r\n};\r\n\r\nexport function useMediaQuery(query: string): boolean {\r\n const [matches, setMatches] = useState(false);\r\n\r\n useEffect(() => {\r\n const media = window.matchMedia(query);\r\n setMatches(media.matches);\r\n \r\n const listener = () => setMatches(media.matches);\r\n media.addEventListener('change', listener);\r\n return () => media.removeEventListener('change', listener);\r\n }, [query]);\r\n\r\n return matches;\r\n}\r\n\r\nexport function useBreakpoint(breakpoint: Breakpoint): boolean {\r\n return useMediaQuery(`(min-width: ${breakpoints[breakpoint]}px)`);\r\n}\r\n\r\ninterface ContainerSize {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport function useContainerQuery(ref: RefObject<HTMLElement>): ContainerSize {\r\n const [size, setSize] = useState<ContainerSize>({ width: 0, height: 0 });\r\n\r\n useLayoutEffect(() => {\r\n if (!ref.current) return;\r\n\r\n const observer = new ResizeObserver((entries) => {\r\n for (const entry of entries) {\r\n setSize({\r\n width: entry.contentRect.width,\r\n height: entry.contentRect.height,\r\n });\r\n }\r\n });\r\n\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, [ref]);\r\n\r\n return size;\r\n}\r\n","import { useState, useEffect, useCallback } from 'react';\r\n\r\nexport interface ScrollValues {\r\n scrollX: number;\r\n scrollY: number;\r\n scrollProgressX: number;\r\n scrollProgressY: number;\r\n}\r\n\r\nexport function useScroll(): ScrollValues {\r\n const [values, setValues] = useState<ScrollValues>({\r\n scrollX: 0,\r\n scrollY: 0,\r\n scrollProgressX: 0,\r\n scrollProgressY: 0,\r\n });\r\n\r\n const handleScroll = useCallback(() => {\r\n const x = window.scrollX;\r\n const y = window.scrollY;\r\n \r\n const width = document.documentElement.scrollWidth - document.documentElement.clientWidth;\r\n const height = document.documentElement.scrollHeight - document.documentElement.clientHeight;\r\n \r\n setValues({\r\n scrollX: x,\r\n scrollY: y,\r\n scrollProgressX: width > 0 ? x / width : 0,\r\n scrollProgressY: height > 0 ? y / height : 0,\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n window.addEventListener('scroll', handleScroll, { passive: true });\r\n \r\n return () => window.removeEventListener('scroll', handleScroll);\r\n }, [handleScroll]);\r\n\r\n return values;\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\nimport { useScroll } from '../hooks/useScroll';\r\n\r\nexport interface ScrollProgressProps extends React.HTMLAttributes<HTMLDivElement> {\r\n color?: string;\r\n height?: number | string;\r\n position?: 'top' | 'bottom';\r\n}\r\n\r\nexport function ScrollProgress({ \r\n className, \r\n color = 'bg-blue-500', \r\n height = 2, \r\n position = 'top',\r\n ...props \r\n}: ScrollProgressProps) {\r\n const { scrollProgressY } = useScroll();\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"fixed left-0 right-0 z-[100] w-full pointer-events-none\",\r\n position === 'top' ? 'top-0' : 'bottom-0',\r\n className\r\n )}\r\n style={{ height }}\r\n {...props}\r\n >\r\n <div\r\n className={cn(\"h-full transition-all duration-75 ease-out\", color)}\r\n style={{ \r\n width: `${scrollProgressY * 100}%`,\r\n boxShadow: scrollProgressY > 0 ? `0 0 10px ${color.replace('bg-', 'var(--')}` : 'none'\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../utils/cn';\r\n\r\nconst badgeVariants = cva(\r\n \"inline-flex items-center gap-1 rounded-full border px-2.5 py-1 text-xs font-medium whitespace-nowrap transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-gray-100 text-gray-700 border-gray-200 dark:bg-white/[0.06] dark:text-white/70 dark:border-white/10\",\r\n neutral: \"bg-gray-100 text-gray-700 border-gray-200 dark:bg-white/[0.06] dark:text-white/70 dark:border-white/10\",\r\n success: \"bg-emerald-100 text-emerald-700 border-emerald-200 dark:bg-emerald-400/15 dark:text-emerald-200 dark:border-emerald-400/20\",\r\n warning: \"bg-amber-100 text-amber-700 border-amber-200 dark:bg-amber-400/15 dark:text-amber-200 dark:border-amber-400/20\",\r\n danger: \"bg-rose-100 text-rose-700 border-rose-200 dark:bg-rose-400/15 dark:text-rose-200 dark:border-rose-400/20\",\r\n info: \"bg-sky-100 text-sky-700 border-sky-200 dark:bg-sky-400/15 dark:text-sky-200 dark:border-sky-400/20\",\r\n outline: \"bg-transparent text-white/60 border-white/10 hover:bg-white/[0.06]\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport interface BadgeProps \r\n extends React.HTMLAttributes<HTMLSpanElement>,\r\n VariantProps<typeof badgeVariants> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\r\n ({ className, variant, ...props }, ref) => {\r\n return (\r\n <span\r\n ref={ref}\r\n className={cn(badgeVariants({ variant }), className)}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\n\r\nBadge.displayName = 'Badge';\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\ninterface DividerProps extends React.HTMLAttributes<HTMLHRElement> {\r\n orientation?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport const Divider = React.forwardRef<HTMLHRElement, DividerProps>(\r\n ({ orientation = 'horizontal', className, ...props }, ref) => {\r\n return (\r\n <hr\r\n ref={ref}\r\n className={cn(\r\n 'border-0 bg-gray-200 dark:bg-white/10',\r\n {\r\n 'h-px w-full': orientation === 'horizontal',\r\n 'h-full w-px': orientation === 'vertical',\r\n },\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\n\r\nDivider.displayName = 'Divider';\r\n","import React from 'react';\r\nimport { cn } from '../utils/cn';\r\n\r\nexport interface KbdProps extends React.HTMLAttributes<HTMLElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const Kbd = React.forwardRef<HTMLElement, KbdProps>(\r\n ({ children, className, ...props }, ref) => {\r\n return (\r\n <kbd\r\n ref={ref}\r\n className={cn(\r\n 'rounded-lg border border-gray-200 dark:border-white/10 bg-gray-100 dark:bg-white/[0.03] px-2 py-1 text-[11px] font-semibold text-gray-500 dark:text-white/65',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </kbd>\r\n );\r\n }\r\n);\r\n\r\nKbd.displayName = 'Kbd';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Surface } from '../../primitives/Surface';\r\nimport { Info } from 'lucide-react';\r\n\r\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\r\n icon?: React.ReactNode;\r\n title: string;\r\n description?: string;\r\n action?: React.ReactNode;\r\n}\r\n\r\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\r\n ({ icon, title, description, action, className, ...props }, ref) => {\r\n return (\r\n <Surface\r\n ref={ref}\r\n className={cn('p-8 text-center', className)}\r\n {...props}\r\n >\r\n <div className=\"mx-auto w-full max-w-md space-y-3\">\r\n <div className=\"mx-auto grid h-12 w-12 place-items-center rounded-2xl border border-white/10 bg-white/[0.03] text-white/70\">\r\n {icon ?? <Info className=\"h-5 w-5\" />}\r\n </div>\r\n <div className=\"text-lg font-semibold text-white\">{title}</div>\r\n {description ? <div className=\"text-sm text-white/55\">{description}</div> : null}\r\n {action ? <div className=\"pt-2 flex justify-center\">{action}</div> : null}\r\n </div>\r\n </Surface>\r\n );\r\n }\r\n);\r\n\r\nEmptyState.displayName = 'EmptyState';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: 'default' | 'circle' | 'text';\r\n}\r\n\r\nexport function Skeleton({ className, variant = 'default', ...props }: SkeletonProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"animate-pulse bg-gray-200 dark:bg-white/[0.03]\",\r\n variant === 'circle' && \"rounded-full\",\r\n variant === 'default' && \"rounded-2xl\",\r\n variant === 'text' && \"rounded h-4 w-full\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { ScrollArea } from './ScrollArea';\r\n\r\ninterface TableContextValue {\r\n // Add context values if needed in the future\r\n}\r\n\r\nconst TableContext = React.createContext<TableContextValue | null>(null);\r\n\r\nexport interface TableProps extends React.HTMLAttributes<HTMLTableElement> {\r\n wrapperClassName?: string;\r\n rounded?: boolean;\r\n maxHeight?: string | number;\r\n}\r\n\r\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\r\n ({ className, wrapperClassName, rounded = false, maxHeight, ...props }, ref) => (\r\n <ScrollArea \r\n className={cn(\"w-full\", rounded && \"rounded-2xl border border-white/10\", wrapperClassName)}\r\n style={{ maxHeight }}\r\n orientation={maxHeight ? \"both\" : \"horizontal\"}\r\n scrollbarSize=\"sm\"\r\n >\r\n <table\r\n ref={ref}\r\n className={cn('w-full caption-bottom text-sm text-left', className)}\r\n {...props}\r\n />\r\n </ScrollArea>\r\n )\r\n);\r\nTable.displayName = 'Table';\r\n\r\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <thead ref={ref} className={cn('bg-white/[0.02] text-white/55', className)} {...props} />\r\n )\r\n);\r\nTableHeader.displayName = 'TableHeader';\r\n\r\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\r\n ({ className, ...props }, ref) => (\r\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\r\n )\r\n);\r\nTableBody.displayName = 'TableBody';\r\n\r\nexport interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\r\n hoverable?: boolean;\r\n optimized?: boolean;\r\n}\r\n\r\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\r\n ({ className, hoverable = true, optimized = false, ...props }, ref) => (\r\n <tr\r\n ref={ref}\r\n className={cn(\r\n 'border-t border-white/10 transition-colors data-[state=selected]:bg-white/[0.04]',\r\n hoverable && 'hover:bg-white/[0.02]',\r\n className\r\n )}\r\n style={optimized ? {\r\n contentVisibility: 'auto',\r\n containIntrinsicSize: '0 56px', // Estimated row height\r\n } : undefined}\r\n {...props}\r\n />\r\n )\r\n);\r\nTableRow.displayName = 'TableRow';\r\n\r\nexport const TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <th\r\n ref={ref}\r\n className={cn(\r\n 'h-10 px-5 py-3 text-left align-middle font-semibold text-white/55 [&:has([role=checkbox])]:pr-0 whitespace-nowrap',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n);\r\nTableHead.displayName = 'TableHead';\r\n\r\nexport const TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\r\n ({ className, ...props }, ref) => (\r\n <td\r\n ref={ref}\r\n className={cn('p-5 align-middle [&:has([role=checkbox])]:pr-0 text-white/85 whitespace-nowrap', className)}\r\n {...props}\r\n />\r\n )\r\n);\r\nTableCell.displayName = 'TableCell';\r\n","import React, { useState, useMemo } from 'react';\r\nimport { Search, ArrowUpDown, ArrowUp, ArrowDown } from 'lucide-react';\r\nimport { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from './Table';\r\nimport { TextInput } from '../form/TextInput';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface Column<T> {\r\n key: keyof T | string;\r\n header: string;\r\n sortable?: boolean;\r\n render?: (item: T) => React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface DataTableProps<T> {\r\n data: T[];\r\n columns: Column<T>[];\r\n searchPlaceholder?: string;\r\n searchKeys?: (keyof T)[];\r\n onRowClick?: (item: T) => void;\r\n className?: string;\r\n maxHeight?: number;\r\n rounded?: boolean;\r\n}\r\n\r\nexport function DataTable<T extends Record<string, unknown>>({\r\n data,\r\n columns,\r\n searchPlaceholder = \"Search...\",\r\n searchKeys,\r\n onRowClick,\r\n className,\r\n maxHeight,\r\n rounded = true\r\n}: DataTableProps<T>) {\r\n const [search, setSearch] = useState('');\r\n const [sortConfig, setSortConfig] = useState<{ key: keyof T | string; direction: 'asc' | 'desc' | null }>({\r\n key: '',\r\n direction: null\r\n });\r\n\r\n // Optimized search and sort logic with useMemo\r\n const processedData = useMemo(() => {\r\n let filtered = [...data];\r\n\r\n // Search\r\n if (search && searchKeys) {\r\n filtered = filtered.filter(item =>\r\n searchKeys.some(key => \r\n String(item[key] ?? '').toLowerCase().includes(search.toLowerCase())\r\n )\r\n );\r\n }\r\n\r\n // Sort\r\n if (sortConfig.key && sortConfig.direction) {\r\n filtered.sort((a, b) => {\r\n const aValue = a[sortConfig.key as keyof T];\r\n const bValue = b[sortConfig.key as keyof T];\r\n \r\n if (aValue === undefined || aValue === null || bValue === undefined || bValue === null) return 0;\r\n if (aValue < bValue) return sortConfig.direction === 'asc' ? -1 : 1;\r\n if (aValue > bValue) return sortConfig.direction === 'asc' ? 1 : -1;\r\n return 0;\r\n });\r\n }\r\n\r\n return filtered;\r\n }, [data, search, searchKeys, sortConfig]);\r\n\r\n const handleSort = (key: keyof T | string) => {\r\n setSortConfig(prev => ({\r\n key,\r\n direction: prev.key === key && prev.direction === 'asc' ? 'desc' : 'asc'\r\n }));\r\n };\r\n\r\n return (\r\n <div className={cn(\"space-y-4\", className)}>\r\n {searchKeys && (\r\n <div className=\"relative max-w-sm\">\r\n <TextInput\r\n placeholder={searchPlaceholder}\r\n value={search}\r\n onChange={(e) => setSearch(e.target.value)}\r\n leftIcon={<Search className=\"w-4 h-4 text-white/40\" />}\r\n />\r\n </div>\r\n )}\r\n\r\n <Table rounded={rounded} maxHeight={maxHeight}>\r\n <TableHeader>\r\n <TableRow>\r\n {columns.map((col) => (\r\n <TableHead \r\n key={String(col.key)} \r\n className={cn(col.sortable && \"cursor-pointer select-none hover:text-cyan-500 transition-colors\", col.className)}\r\n onClick={() => col.sortable && handleSort(col.key)}\r\n >\r\n <div className=\"flex items-center gap-2\">\r\n {col.header}\r\n {col.sortable && (\r\n <span className=\"text-white/30\">\r\n {sortConfig.key === col.key ? (\r\n sortConfig.direction === 'asc' ? <ArrowUp className=\"w-3 h-3 text-cyan-500\" /> : <ArrowDown className=\"w-3 h-3 text-cyan-500\" />\r\n ) : (\r\n <ArrowUpDown className=\"w-3 h-3\" />\r\n )}\r\n </span>\r\n )}\r\n </div>\r\n </TableHead>\r\n ))}\r\n </TableRow>\r\n </TableHeader>\r\n <TableBody>\r\n {processedData.map((item, idx) => (\r\n <TableRow \r\n key={idx} \r\n onClick={() => onRowClick?.(item)}\r\n className={cn(onRowClick && \"cursor-pointer hover:bg-white/[0.03] transition-colors group\")}\r\n >\r\n {columns.map((col) => (\r\n <TableCell key={String(col.key)} className={col.className}>\r\n {col.render ? col.render(item) : (item[col.key as keyof T] as React.ReactNode)}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n ))}\r\n {processedData.length === 0 && (\r\n <TableRow>\r\n <TableCell colSpan={columns.length} className=\"h-32 text-center text-white/40\">\r\n No results found for \"{search}\"\r\n </TableCell>\r\n </TableRow>\r\n )}\r\n </TableBody>\r\n </Table>\r\n </div>\r\n );\r\n}\r\n","import { useMemo, useState, useCallback } from 'react';\r\nimport type { KanbanTask, KanbanColumn, SortConfig } from './types';\r\n\r\ninterface UseKanbanTasksProps {\r\n tasks: KanbanTask[];\r\n columns: KanbanColumn[];\r\n groupBy?: keyof KanbanTask;\r\n pageSize: number;\r\n}\r\n\r\nexport function useKanbanTasks({ tasks, columns, groupBy, pageSize }: UseKanbanTasksProps) {\r\n const [sortConfig, setSortConfig] = useState<SortConfig | null>(null);\r\n const [visibleCounts, setVisibleCounts] = useState<Record<string, number>>({});\r\n\r\n const sortedTasks = useMemo(() => {\r\n if (!sortConfig) return tasks;\r\n\r\n return [...tasks].sort((a, b) => {\r\n const { field, direction } = sortConfig;\r\n let comparison = 0;\r\n\r\n if (field === 'title') {\r\n comparison = a.title.localeCompare(b.title);\r\n } else if (field === 'priority') {\r\n const priorityOrder = { urgent: 4, high: 3, medium: 2, low: 1, neutral: 0 };\r\n const aPrio = priorityOrder[a.priority as keyof typeof priorityOrder] || 0;\r\n const bPrio = priorityOrder[b.priority as keyof typeof priorityOrder] || 0;\r\n comparison = aPrio - bPrio;\r\n } else if (field === 'dueDate') {\r\n comparison = (a.dueDate || '').localeCompare(b.dueDate || '');\r\n }\r\n\r\n return direction === 'asc' ? comparison : -comparison;\r\n });\r\n }, [tasks, sortConfig]);\r\n\r\n const tasksByGroupAndColumn = useMemo(() => {\r\n const groups: Record<string, Record<string, KanbanTask[]>> = {};\r\n\r\n if (groupBy) {\r\n sortedTasks.forEach(task => {\r\n const groupValue = String(task[groupBy] || 'Other');\r\n if (!groups[groupValue]) groups[groupValue] = {};\r\n const group = groups[groupValue]!;\r\n if (!group[task.columnId]) group[task.columnId] = [];\r\n group[task.columnId]!.push(task);\r\n });\r\n } else {\r\n groups['default'] = {};\r\n const defaultGroup = groups['default']!;\r\n columns.forEach(col => {\r\n defaultGroup[col.id] = sortedTasks.filter(t => t.columnId === col.id);\r\n });\r\n }\r\n\r\n return groups;\r\n }, [sortedTasks, columns, groupBy]);\r\n\r\n const handleLoadMore = useCallback((columnId: string) => {\r\n setVisibleCounts(prev => ({\r\n ...prev,\r\n [columnId]: (prev[columnId] || pageSize) + pageSize\r\n }));\r\n }, [pageSize]);\r\n\r\n return {\r\n tasksByGroupAndColumn,\r\n sortConfig,\r\n setSortConfig,\r\n visibleCounts,\r\n handleLoadMore,\r\n sortedTasks\r\n };\r\n}\r\n","import { useState, useCallback, useRef } from 'react';\r\nimport type { KanbanTask, KanbanColumn, DropPosition } from './types';\r\n\r\ninterface UseKanbanDragAndDropProps {\r\n tasks: KanbanTask[];\r\n columns: KanbanColumn[];\r\n selectedTaskIds: string[];\r\n onTaskMove?: (taskId: string, toColumnId: string, toTaskId?: string, position?: 'top' | 'bottom') => void;\r\n onColumnMove?: (columnId: string, toColumnId: string, position?: 'left' | 'right') => void;\r\n onTaskDrop?: (taskId: string, fromColumnId: string, toColumnId: string, index: number) => void;\r\n onTaskDragStart?: (taskId: string) => void;\r\n onTaskDragEnd?: (taskId: string) => void;\r\n}\r\n\r\nexport function useKanbanDragAndDrop({\r\n tasks,\r\n columns,\r\n selectedTaskIds,\r\n onTaskMove,\r\n onColumnMove,\r\n onTaskDrop,\r\n onTaskDragStart,\r\n onTaskDragEnd\r\n}: UseKanbanDragAndDropProps) {\r\n const [draggedTaskId, setDraggedTaskId] = useState<string | null>(null);\r\n const [draggedColumnId, setDraggedColumnId] = useState<string | null>(null);\r\n const [dragOverColumnId, setDragOverColumnId] = useState<string | null>(null);\r\n const [dragOverTaskId, setDragOverTaskId] = useState<string | null>(null);\r\n const [dropPosition, setDropPosition] = useState<DropPosition | null>(null);\r\n \r\n const touchTimeout = useRef<any>(null);\r\n const lastTouchPos = useRef<{ x: number, y: number } | null>(null);\r\n\r\n const handleDragStart = (e: React.DragEvent, id: string, type: 'task' | 'column') => {\r\n if (type === 'task') {\r\n setDraggedTaskId(id);\r\n e.dataTransfer.setData('taskId', id);\r\n onTaskDragStart?.(id);\r\n } else {\r\n setDraggedColumnId(id);\r\n e.dataTransfer.setData('columnId', id);\r\n }\r\n e.dataTransfer.effectAllowed = 'move';\r\n };\r\n\r\n const handleDragEnd = useCallback(() => {\r\n if (draggedTaskId) {\r\n onTaskDragEnd?.(draggedTaskId);\r\n }\r\n setDraggedTaskId(null);\r\n setDraggedColumnId(null);\r\n setDragOverColumnId(null);\r\n setDragOverTaskId(null);\r\n setDropPosition(null);\r\n }, [draggedTaskId, onTaskDragEnd]);\r\n\r\n const handleDragOver = (e: React.DragEvent, columnId: string, taskId?: string) => {\r\n e.preventDefault();\r\n e.dataTransfer.dropEffect = 'move';\r\n \r\n if (draggedColumnId) {\r\n setDragOverColumnId(columnId);\r\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\r\n const midpoint = rect.left + rect.width / 2;\r\n setDropPosition(e.clientX < midpoint ? 'left' : 'right');\r\n } else {\r\n setDragOverColumnId(columnId);\r\n \r\n if (taskId) {\r\n setDragOverTaskId(taskId);\r\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\r\n const midpoint = rect.top + rect.height / 2;\r\n setDropPosition(e.clientY < midpoint ? 'top' : 'bottom');\r\n } else if (e.target === e.currentTarget) {\r\n setDragOverTaskId(null);\r\n setDropPosition(null);\r\n }\r\n }\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent, toColumnId: string, toTaskId?: string) => {\r\n e.preventDefault();\r\n const taskId = draggedTaskId || e.dataTransfer.getData('taskId');\r\n const columnId = draggedColumnId || e.dataTransfer.getData('columnId');\r\n\r\n if (columnId && onColumnMove) {\r\n onColumnMove(columnId, toColumnId, dropPosition === 'right' ? 'right' : 'left');\r\n } else if (taskId && onTaskMove) {\r\n const task = tasks.find(t => t.id === taskId);\r\n if (!task) return;\r\n\r\n const tasksToMove = selectedTaskIds.includes(taskId) \r\n ? selectedTaskIds \r\n : [taskId];\r\n\r\n tasksToMove.forEach((id) => {\r\n const currentTask = tasks.find(t => t.id === id);\r\n const fromColumnId = currentTask?.columnId || '';\r\n onTaskMove(id, toColumnId, toTaskId, dropPosition === 'bottom' ? 'bottom' : 'top');\r\n onTaskDrop?.(id, fromColumnId, toColumnId, 0);\r\n });\r\n }\r\n\r\n handleDragEnd();\r\n };\r\n\r\n const handleTouchStart = (e: React.TouchEvent, id: string, type: 'task' | 'column') => {\r\n const touch = e.touches[0];\r\n if (!touch) return;\r\n\r\n touchTimeout.current = setTimeout(() => {\r\n if (type === 'task') {\r\n setDraggedTaskId(id);\r\n onTaskDragStart?.(id);\r\n } else {\r\n setDraggedColumnId(id);\r\n }\r\n lastTouchPos.current = { x: touch.clientX, y: touch.clientY };\r\n }, 500);\r\n };\r\n\r\n const handleTouchMove = (e: React.TouchEvent) => {\r\n if (!draggedTaskId && !draggedColumnId) return;\r\n e.preventDefault();\r\n \r\n const touch = e.touches[0];\r\n if (!touch) return;\r\n\r\n const target = document.elementFromPoint(touch.clientX, touch.clientY);\r\n if (!target) return;\r\n\r\n const columnEl = target.closest('[data-column-id]');\r\n const taskEl = target.closest('[data-task-id]');\r\n\r\n if (columnEl) {\r\n const columnId = columnEl.getAttribute('data-column-id')!;\r\n setDragOverColumnId(columnId);\r\n \r\n if (draggedColumnId) {\r\n const rect = columnEl.getBoundingClientRect();\r\n const midpoint = rect.left + rect.width / 2;\r\n setDropPosition(touch.clientX < midpoint ? 'left' : 'right');\r\n } else if (taskEl) {\r\n const taskId = taskEl.getAttribute('data-task-id')!;\r\n setDragOverTaskId(taskId);\r\n const rect = taskEl.getBoundingClientRect();\r\n const midpoint = rect.top + rect.height / 2;\r\n setDropPosition(touch.clientY < midpoint ? 'top' : 'bottom');\r\n }\r\n }\r\n };\r\n\r\n const handleTouchEnd = (e: React.TouchEvent) => {\r\n clearTimeout(touchTimeout.current);\r\n if (draggedTaskId || draggedColumnId) {\r\n if (dragOverColumnId) {\r\n const taskId = draggedTaskId;\r\n const columnId = draggedColumnId;\r\n\r\n if (columnId && onColumnMove) {\r\n onColumnMove(columnId, dragOverColumnId, dropPosition === 'right' ? 'right' : 'left');\r\n } else if (taskId && onTaskMove) {\r\n onTaskMove(taskId, dragOverColumnId, dragOverTaskId || undefined, dropPosition === 'bottom' ? 'bottom' : 'top');\r\n }\r\n }\r\n handleDragEnd();\r\n }\r\n };\r\n\r\n return {\r\n draggedTaskId,\r\n draggedColumnId,\r\n dragOverColumnId,\r\n dragOverTaskId,\r\n dropPosition,\r\n handleDragStart,\r\n handleDragEnd,\r\n handleDragOver,\r\n handleDrop,\r\n handleTouchStart,\r\n handleTouchMove,\r\n handleTouchEnd,\r\n setDraggedTaskId\r\n };\r\n}\r\n","import { useState, useRef, useCallback } from 'react';\r\n\r\nexport function useKanbanBoardScroll() {\r\n const [isDraggingBoard, setIsDraggingBoard] = useState(false);\r\n const [startX, setStartX] = useState(0);\r\n const [scrollLeft, setScrollLeft] = useState(0);\r\n const boardRef = useRef<HTMLDivElement>(null);\r\n\r\n const handleBoardMouseDown = (e: React.MouseEvent) => {\r\n if ((e.target as HTMLElement).closest('button') || \r\n (e.target as HTMLElement).closest('[draggable=\"true\"]') ||\r\n (e.target as HTMLElement).closest('.no-drag')) return;\r\n \r\n setIsDraggingBoard(true);\r\n setStartX(e.pageX - (boardRef.current?.offsetLeft || 0));\r\n setScrollLeft(boardRef.current?.scrollLeft || 0);\r\n };\r\n\r\n const handleBoardMouseMove = (e: React.MouseEvent) => {\r\n if (!isDraggingBoard) return;\r\n e.preventDefault();\r\n const x = e.pageX - (boardRef.current?.offsetLeft || 0);\r\n const walk = (x - startX) * 2;\r\n if (boardRef.current) {\r\n boardRef.current.scrollLeft = scrollLeft - walk;\r\n }\r\n };\r\n\r\n const handleBoardMouseUp = () => {\r\n setIsDraggingBoard(false);\r\n };\r\n\r\n return {\r\n boardRef,\r\n isDraggingBoard,\r\n handleBoardMouseDown,\r\n handleBoardMouseMove,\r\n handleBoardMouseUp\r\n };\r\n}\r\n","import React from 'react';\r\nimport { Lock, Trash2, GripVertical, MessageSquare, Paperclip, Clock, Play, Pause } from 'lucide-react';\r\nimport { Surface } from '../../../primitives/Surface';\r\nimport { Badge } from '../../../primitives/Badge';\r\nimport { Text } from '../../typography/Text';\r\nimport { Checkbox } from '../../form/Checkbox';\r\nimport { cn } from '../../../utils/cn';\r\nimport type { KanbanTask } from './types';\r\n\r\ninterface KanbanCardProps {\r\n task: KanbanTask;\r\n columnId: string;\r\n selectedTaskIds: string[];\r\n activeTimerTaskId?: string | null;\r\n selectable?: boolean;\r\n cardClassName?: string;\r\n onTaskClick?: (e: React.MouseEvent, task: KanbanTask) => void;\r\n onTaskSelectionChange?: (selectedIds: string[]) => void;\r\n onTaskRemove?: (taskId: string) => void;\r\n onTaskTimerToggle?: (taskId: string) => void;\r\n renderCard?: (task: KanbanTask) => React.ReactNode;\r\n}\r\n\r\nexport const KanbanCard = React.memo(({\r\n task,\r\n columnId,\r\n selectedTaskIds,\r\n activeTimerTaskId,\r\n selectable,\r\n cardClassName,\r\n onTaskClick,\r\n onTaskSelectionChange,\r\n onTaskRemove,\r\n onTaskTimerToggle,\r\n renderCard\r\n}: KanbanCardProps) => {\r\n if (renderCard) return <>{renderCard(task)}</>;\r\n\r\n const getPriorityColor = (priority?: string) => {\r\n switch (priority) {\r\n case 'urgent': return 'danger';\r\n case 'high': return 'warning';\r\n case 'medium': return 'info';\r\n case 'low': return 'success';\r\n default: return 'neutral';\r\n }\r\n };\r\n\r\n const isSelected = selectedTaskIds.includes(task.id);\r\n\r\n return (\r\n <Surface \r\n onClick={(e) => onTaskClick?.(e, task)}\r\n className={cn(\r\n \"p-6 border border-white/10 bg-white/[0.03] hover:bg-white/[0.06] transition-all duration-200 rounded-2xl group\",\r\n task.blockedBy && task.blockedBy.length > 0 && \"border-red-500/30 bg-red-500/[0.02]\",\r\n isSelected && \"ring-2 ring-cyan-500/50 bg-cyan-500/[0.02]\",\r\n cardClassName\r\n )}\r\n >\r\n <div className=\"flex flex-col gap-3\">\r\n <div className=\"flex items-start justify-between gap-2\">\r\n <div className=\"flex items-center gap-2 min-w-0\">\r\n {selectable && (\r\n <Checkbox \r\n checked={isSelected}\r\n onChange={(e) => {\r\n const checked = e.target.checked;\r\n const newSelection = checked \r\n ? [...selectedTaskIds, task.id]\r\n : selectedTaskIds.filter(id => id !== task.id);\r\n onTaskSelectionChange?.(newSelection);\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n className=\"mr-1\"\r\n />\r\n )}\r\n {task.blockedBy && task.blockedBy.length > 0 && (\r\n <Lock className=\"h-3.5 w-3.5 text-red-500 flex-shrink-0\" />\r\n )}\r\n <Text className={cn(\r\n \"font-medium text-sm leading-tight group-hover:text-cyan-400 transition-colors truncate\",\r\n task.blockedBy && task.blockedBy.length > 0 && \"text-red-400/80\"\r\n )}>\r\n {task.title}\r\n </Text>\r\n </div>\r\n <div className=\"flex items-center gap-1\">\r\n {onTaskRemove && (\r\n <button\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onTaskRemove(task.id);\r\n }}\r\n className=\"p-1 rounded-md hover:bg-red-500/20 text-white/20 hover:text-red-400 transition-colors\"\r\n >\r\n <Trash2 className=\"h-3.5 w-3.5\" />\r\n </button>\r\n )}\r\n <GripVertical className=\"h-4 w-4 text-white/20 opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0\" />\r\n </div>\r\n </div>\r\n\r\n {task.description && (\r\n <Text className=\"text-xs text-white/50 line-clamp-2\">\r\n {task.description}\r\n </Text>\r\n )}\r\n\r\n {task.progress !== undefined && (\r\n <div className=\"space-y-1.5\">\r\n <div className=\"flex items-center justify-between text-[10px]\">\r\n <span className=\"text-white/30 uppercase font-bold tracking-wider\">Progress</span>\r\n <span className=\"text-white/50\">{task.progress}%</span>\r\n </div>\r\n <div className=\"h-1 w-full bg-white/[0.03] rounded-full overflow-hidden\">\r\n <div \r\n className=\"h-full bg-cyan-500 transition-all duration-500\" \r\n style={{ width: `${task.progress}%` }}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n\r\n <div className=\"flex flex-wrap gap-2 mt-1\">\r\n {task.priority && (\r\n <Badge variant={getPriorityColor(task.priority)} className=\"text-[10px] px-1.5 py-0 uppercase font-bold\">\r\n {task.priority}\r\n </Badge>\r\n )}\r\n {task.tags?.map(tag => (\r\n <Badge key={tag} variant=\"neutral\" className=\"text-[10px] px-1.5 py-0 bg-white/[0.03] border-white/5\">\r\n {tag}\r\n </Badge>\r\n ))}\r\n </div>\r\n\r\n <div className=\"flex items-center justify-between mt-2 pt-3 border-t border-white/5\">\r\n <div className=\"flex items-center gap-3 text-[10px] text-white/30\">\r\n {task.timeSpent !== undefined && (\r\n <div className={cn(\r\n \"flex items-center gap-1 px-1.5 py-0.5 rounded-md transition-colors\",\r\n activeTimerTaskId === task.id ? \"bg-cyan-500/20 text-cyan-400\" : \"bg-white/[0.03]\"\r\n )}>\r\n {activeTimerTaskId === task.id ? (\r\n <Pause \r\n className=\"h-2.5 w-2.5 cursor-pointer hover:scale-110 transition-transform\" \r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onTaskTimerToggle?.(task.id);\r\n }}\r\n />\r\n ) : (\r\n <Play \r\n className=\"h-2.5 w-2.5 cursor-pointer hover:scale-110 transition-transform\" \r\n onClick={(e) => {\r\n e.stopPropagation();\r\n onTaskTimerToggle?.(task.id);\r\n }}\r\n />\r\n )}\r\n <span className=\"font-mono\">\r\n {Math.floor(task.timeSpent / 3600)}h {Math.floor((task.timeSpent % 3600) / 60)}m\r\n </span>\r\n </div>\r\n )}\r\n {task.comments !== undefined && (\r\n <div className=\"flex items-center gap-1\">\r\n <MessageSquare className=\"h-3 w-3\" />\r\n {task.comments}\r\n </div>\r\n )}\r\n {task.attachments !== undefined && (\r\n <div className=\"flex items-center gap-1\">\r\n <Paperclip className=\"h-3 w-3\" />\r\n {task.attachments}\r\n </div>\r\n )}\r\n {task.dueDate && (\r\n <div className=\"flex items-center gap-1\">\r\n <Clock className=\"h-3 w-3\" />\r\n {task.dueDate}\r\n </div>\r\n )}\r\n </div>\r\n \r\n {task.assignee && (\r\n <div className=\"flex -space-x-2\">\r\n <div className=\"h-6 w-6 rounded-full border-2 border-[#0a0a0a] bg-white/[0.06] flex items-center justify-center text-[10px] font-bold overflow-hidden\">\r\n {task.assignee.avatar ? (\r\n <img src={task.assignee.avatar} alt={task.assignee.name} className=\"h-full w-full object-cover\" />\r\n ) : (\r\n task.assignee.name[0]\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </Surface>\r\n );\r\n});\r\n\r\nKanbanCard.displayName = 'KanbanCard';\r\n","import React from 'react';\r\nimport { Plus, LayoutGrid } from 'lucide-react';\r\nimport { Button } from '../../button/Button';\r\nimport { Text } from '../../typography/Text';\r\nimport { cn } from '../../../utils/cn';\r\nimport type { KanbanTask, KanbanColumn, DropPosition } from './types';\r\nimport { KanbanCard } from './KanbanCard';\r\n\r\ninterface KanbanColumnContentProps {\r\n column: KanbanColumn;\r\n columnMap: Record<string, KanbanTask[]>;\r\n groupName: string;\r\n visibleCount: number;\r\n pageSize: number;\r\n columnHeight?: number | string;\r\n draggedTaskId: string | null;\r\n draggedColumnId: string | null;\r\n dragOverTaskId: string | null;\r\n dragOverColumnId: string | null;\r\n dropPosition: DropPosition | null;\r\n quickAddColumnId: string | null;\r\n quickAddValue: string;\r\n selectedTaskIds: string[];\r\n activeTimerTaskId?: string | null;\r\n handleDragStart: (e: React.DragEvent, id: string, type: 'task' | 'column') => void;\r\n handleDragEnd: () => void;\r\n handleDragOver: (e: React.DragEvent, columnId: string, taskId?: string) => void;\r\n handleDrop: (e: React.DragEvent, toColumnId: string, toTaskId?: string) => void;\r\n handleTouchStart: (e: React.TouchEvent, id: string, type: 'task' | 'column') => void;\r\n handleTouchMove: (e: React.TouchEvent) => void;\r\n handleTouchEnd: (e: React.TouchEvent) => void;\r\n handleKeyDown: (e: React.KeyboardEvent, taskId: string, columnId: string) => void;\r\n handleLoadMore: (columnId: string) => void;\r\n handleSetQuickAdd: (columnId: string, groupName?: string) => void;\r\n handleQuickAdd: (columnId: string, groupName?: string) => void;\r\n setQuickAddValue: (value: string) => void;\r\n setQuickAddColumnId: (id: string | null) => void;\r\n onTaskClick: (e: React.MouseEvent, task: KanbanTask) => void;\r\n onTaskFullAdd?: (columnId: string) => void;\r\n onTaskRemove?: (taskId: string) => void;\r\n onTaskTimerToggle?: (taskId: string) => void;\r\n onTaskSelectionChange?: (selectedIds: string[]) => void;\r\n renderCard?: (task: KanbanTask) => React.ReactNode;\r\n selectable?: boolean;\r\n cardClassName?: string;\r\n}\r\n\r\nexport const KanbanColumnContent = ({\r\n column,\r\n columnMap,\r\n groupName,\r\n visibleCount,\r\n pageSize,\r\n draggedTaskId,\r\n draggedColumnId,\r\n dragOverTaskId,\r\n dragOverColumnId,\r\n dropPosition,\r\n quickAddColumnId,\r\n quickAddValue,\r\n selectedTaskIds,\r\n activeTimerTaskId,\r\n handleDragStart,\r\n handleDragEnd,\r\n handleDragOver,\r\n handleDrop,\r\n handleTouchStart,\r\n handleTouchMove,\r\n handleTouchEnd,\r\n handleKeyDown,\r\n handleLoadMore,\r\n handleSetQuickAdd,\r\n handleQuickAdd,\r\n setQuickAddValue,\r\n setQuickAddColumnId,\r\n onTaskClick,\r\n onTaskFullAdd,\r\n onTaskRemove,\r\n onTaskTimerToggle,\r\n onTaskSelectionChange,\r\n renderCard,\r\n selectable,\r\n cardClassName\r\n}: KanbanColumnContentProps) => {\r\n const columnTasks = columnMap[column.id] || [];\r\n const visibleTasks = columnTasks.slice(0, visibleCount);\r\n const hasMore = columnTasks.length > visibleCount;\r\n\r\n return (\r\n <div className=\"flex flex-col gap-4 h-full min-h-0\">\r\n {/* Quick Add Input */}\r\n {quickAddColumnId === `${groupName}-${column.id}` ? (\r\n <div className=\"p-4 bg-white/[0.03] border border-cyan-500/30 rounded-2xl animate-in fade-in slide-in-from-top-2 duration-200\">\r\n <input\r\n autoFocus\r\n className=\"w-full bg-transparent border-none outline-none text-sm text-white placeholder:text-white/20\"\r\n placeholder=\"Task title...\"\r\n value={quickAddValue}\r\n onChange={(e) => setQuickAddValue(e.target.value)}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter') handleQuickAdd(column.id, groupName);\r\n if (e.key === 'Escape') setQuickAddColumnId(null);\r\n }}\r\n onBlur={() => {\r\n if (!quickAddValue.trim()) setQuickAddColumnId(null);\r\n }}\r\n />\r\n <div className=\"flex items-center justify-between mt-3\">\r\n <Text className=\"text-[10px] text-white/30 uppercase font-bold\">Press Enter to save</Text>\r\n <div className=\"flex gap-1\">\r\n <Button \r\n variant=\"ghost\" \r\n size=\"sm\" \r\n className=\"h-7 px-2 text-[10px] hover:bg-white/[0.06]\"\r\n onClick={() => setQuickAddColumnId(null)}\r\n >\r\n Cancel\r\n </Button>\r\n <Button \r\n variant=\"primary\" \r\n size=\"sm\" \r\n className=\"h-7 px-3 text-[10px] bg-cyan-500 hover:bg-cyan-400 text-black font-bold\"\r\n onClick={() => handleQuickAdd(column.id, groupName)}\r\n >\r\n Add Task\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n ) : (\r\n <button \r\n onClick={() => handleSetQuickAdd(column.id, groupName)}\r\n className=\"group/add flex items-center justify-center gap-2 p-4 border border-dashed border-white/10 hover:border-cyan-500/30 hover:bg-cyan-500/[0.02] rounded-2xl transition-all duration-200\"\r\n >\r\n <Plus className=\"h-4 w-4 text-white/20 group-hover/add:text-cyan-400 transition-colors\" />\r\n <Text className=\"text-xs font-bold text-white/20 group-hover/add:text-cyan-400 uppercase tracking-widest transition-colors\">\r\n Add New Task\r\n </Text>\r\n </button>\r\n )}\r\n\r\n {/* Tasks List */}\r\n <div \r\n role=\"list\"\r\n aria-label={`Tasks in ${column.title}`}\r\n className=\"flex-1 overflow-y-auto pr-2 custom-scrollbar flex flex-col gap-4 min-h-0 pb-20\"\r\n >\r\n {visibleTasks.map((task) => (\r\n <React.Fragment key={task.id}>\r\n {/* Task Ghost Placeholder TOP */}\r\n {draggedTaskId && dragOverTaskId === task.id && dropPosition === 'top' && draggedTaskId !== task.id && (\r\n <div className=\"h-1 bg-cyan-500/50 rounded-full animate-pulse\" />\r\n )}\r\n\r\n <div\r\n draggable\r\n role=\"listitem\"\r\n aria-label={`Task: ${task.title}`}\r\n onDragStart={(e) => handleDragStart(e, task.id, 'task')}\r\n onDragEnd={handleDragEnd}\r\n onDragOver={(e) => handleDragOver(e, column.id, task.id)}\r\n onDrop={(e) => handleDrop(e, column.id, task.id)}\r\n onTouchStart={(e) => handleTouchStart(e, task.id, 'task')}\r\n onTouchMove={handleTouchMove}\r\n onTouchEnd={handleTouchEnd}\r\n onKeyDown={(e) => handleKeyDown(e, task.id, column.id)}\r\n tabIndex={0}\r\n data-task-id={task.id}\r\n className={cn(\r\n \"outline-none transition-all duration-200\",\r\n draggedTaskId === task.id ? \"opacity-20 scale-95\" : \"opacity-100 scale-100\",\r\n dragOverTaskId === task.id && draggedTaskId ? \"ring-2 ring-cyan-500/30 rounded-2xl\" : \"\"\r\n )}\r\n >\r\n <KanbanCard \r\n task={task}\r\n columnId={column.id}\r\n selectedTaskIds={selectedTaskIds}\r\n activeTimerTaskId={activeTimerTaskId}\r\n selectable={selectable}\r\n cardClassName={cardClassName}\r\n onTaskClick={onTaskClick}\r\n onTaskSelectionChange={onTaskSelectionChange}\r\n onTaskRemove={onTaskRemove}\r\n onTaskTimerToggle={onTaskTimerToggle}\r\n renderCard={renderCard}\r\n />\r\n </div>\r\n\r\n {/* Task Ghost Placeholder BOTTOM */}\r\n {draggedTaskId && dragOverTaskId === task.id && dropPosition === 'bottom' && draggedTaskId !== task.id && (\r\n <div className=\"h-1 bg-cyan-500/50 rounded-full animate-pulse\" />\r\n )}\r\n </React.Fragment>\r\n ))}\r\n\r\n {/* Load More Trigger */}\r\n {hasMore && (\r\n <button\r\n onClick={() => handleLoadMore(column.id)}\r\n className=\"flex items-center justify-center gap-2 p-4 text-white/30 hover:text-cyan-400 transition-colors\"\r\n >\r\n <Plus className=\"h-4 w-4\" />\r\n <span className=\"text-xs font-bold uppercase tracking-widest\">\r\n Load {columnTasks.length - visibleCount} more tasks\r\n </span>\r\n </button>\r\n )}\r\n\r\n {/* Empty State */}\r\n {columnTasks.length === 0 && !draggedTaskId && (\r\n <div className=\"flex flex-col items-center justify-center py-12 px-4 border border-dashed border-white/5 rounded-[2rem] opacity-20\">\r\n <LayoutGrid className=\"h-8 w-8 mb-3\" />\r\n <Text className=\"text-xs font-medium\">No tasks yet</Text>\r\n </div>\r\n )}\r\n\r\n {/* Drop Zone for empty column */}\r\n {columnTasks.length === 0 && draggedTaskId && (\r\n <div \r\n className=\"flex-1 min-h-[200px] border-2 border-dashed border-cyan-500/20 rounded-[2rem] bg-cyan-500/[0.02] flex items-center justify-center\"\r\n onDragOver={(e) => handleDragOver(e, column.id)}\r\n onDrop={(e) => handleDrop(e, column.id)}\r\n >\r\n <Text className=\"text-xs font-bold text-cyan-500/40 uppercase tracking-widest\">Drop here</Text>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useCallback } from 'react';\r\nimport { \r\n Plus, \r\n MoreHorizontal, \r\n Settings, \r\n SortAsc, \r\n ArrowUpDown, \r\n CalendarDays, \r\n Archive, \r\n Trash2,\r\n AlertTriangle\r\n} from 'lucide-react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Button } from '../button/Button';\r\nimport { Badge } from '../../primitives/Badge';\r\nimport { Heading } from '../typography/Heading';\r\nimport { Text } from '../typography/Text';\r\nimport { \r\n DropdownMenu, \r\n DropdownMenuTrigger, \r\n DropdownMenuContent, \r\n DropdownMenuItem \r\n} from '../overlay/DropdownMenu';\r\n\r\nimport type { KanbanProps, KanbanTask, KanbanColumn } from './kanban/types';\r\nexport type { KanbanProps, KanbanTask, KanbanColumn };\r\nimport { useKanbanTasks } from './kanban/useKanbanTasks';\r\nimport { useKanbanDragAndDrop } from './kanban/useKanbanDragAndDrop';\r\nimport { useKanbanBoardScroll } from './kanban/useKanbanBoardScroll';\r\nimport { KanbanColumnContent } from './kanban/KanbanColumnContent';\r\n\r\nexport function Kanban({\r\n columns,\r\n tasks,\r\n onTaskMove,\r\n onColumnMove,\r\n onTaskClick,\r\n onTaskAdd,\r\n onTaskFullAdd,\r\n onTaskRemove,\r\n onColumnAction,\r\n onTaskDrop,\r\n onTaskDragStart,\r\n onTaskDragEnd,\r\n onTaskSelectionChange,\r\n onTaskTimerToggle,\r\n renderCard,\r\n className,\r\n columnClassName,\r\n cardClassName,\r\n groupBy,\r\n accentColor = 'cyan',\r\n showTaskCount = true,\r\n showDividers = true,\r\n columnHeight = 'calc(100vh - 200px)',\r\n pageSize = 10,\r\n selectable = false,\r\n selectedTaskIds = [],\r\n activeTimerTaskId = null,\r\n}: KanbanProps) {\r\n const [quickAddColumnId, setQuickAddColumnId] = useState<string | null>(null);\r\n const [quickAddValue, setQuickAddValue] = useState('');\r\n\r\n const {\r\n tasksByGroupAndColumn,\r\n sortConfig,\r\n setSortConfig,\r\n visibleCounts,\r\n handleLoadMore\r\n } = useKanbanTasks({ tasks, columns, groupBy, pageSize });\r\n\r\n const {\r\n draggedTaskId,\r\n draggedColumnId,\r\n dragOverColumnId,\r\n dragOverTaskId,\r\n dropPosition,\r\n handleDragStart,\r\n handleDragEnd,\r\n handleDragOver,\r\n handleDrop,\r\n handleTouchStart,\r\n handleTouchMove,\r\n handleTouchEnd,\r\n setDraggedTaskId\r\n } = useKanbanDragAndDrop({\r\n tasks,\r\n columns,\r\n selectedTaskIds,\r\n onTaskMove,\r\n onColumnMove,\r\n onTaskDrop,\r\n onTaskDragStart,\r\n onTaskDragEnd\r\n });\r\n\r\n const {\r\n boardRef,\r\n isDraggingBoard,\r\n handleBoardMouseDown,\r\n handleBoardMouseMove,\r\n handleBoardMouseUp\r\n } = useKanbanBoardScroll();\r\n\r\n const handleSetQuickAdd = (columnId: string, groupName: string = 'default') => {\r\n setQuickAddColumnId(`${groupName}-${columnId}`);\r\n };\r\n\r\n const handleQuickAdd = (columnId: string, groupName: string = 'default') => {\r\n if (quickAddValue.trim() && onTaskAdd) {\r\n onTaskAdd(columnId, quickAddValue.trim());\r\n setQuickAddValue('');\r\n setQuickAddColumnId(null);\r\n }\r\n };\r\n\r\n const handleTaskClickInternal = useCallback((e: React.MouseEvent, task: KanbanTask) => {\r\n if (selectable && (e.ctrlKey || e.metaKey)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const isSelected = selectedTaskIds.includes(task.id);\r\n const newSelection = isSelected\r\n ? selectedTaskIds.filter(id => id !== task.id)\r\n : [...selectedTaskIds, task.id];\r\n onTaskSelectionChange?.(newSelection);\r\n } else {\r\n onTaskClick?.(task);\r\n }\r\n }, [selectable, selectedTaskIds, onTaskSelectionChange, onTaskClick]);\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent, taskId: string, columnId: string) => {\r\n if (e.key === ' ' || e.key === 'Enter') {\r\n e.preventDefault();\r\n if (draggedTaskId === taskId) {\r\n if (onTaskMove) {\r\n onTaskMove(draggedTaskId, columnId);\r\n }\r\n handleDragEnd();\r\n } else {\r\n setDraggedTaskId(taskId);\r\n }\r\n }\r\n\r\n if (draggedTaskId === taskId) {\r\n const colIndex = columns.findIndex(c => c.id === columnId);\r\n \r\n let taskIndex = -1;\r\n let currentGroupName = 'default';\r\n \r\n for (const [groupName, columnMap] of Object.entries(tasksByGroupAndColumn)) {\r\n const groupTasks = columnMap[columnId] || [];\r\n const idx = groupTasks.findIndex(t => t.id === taskId);\r\n if (idx !== -1) {\r\n taskIndex = idx;\r\n currentGroupName = groupName;\r\n break;\r\n }\r\n }\r\n\r\n const columnTasks = tasksByGroupAndColumn[currentGroupName]?.[columnId] || [];\r\n\r\n if (e.key === 'ArrowRight' && colIndex < columns.length - 1) {\r\n onTaskMove?.(taskId, columns[colIndex + 1]!.id);\r\n } else if (e.key === 'ArrowLeft' && colIndex > 0) {\r\n onTaskMove?.(taskId, columns[colIndex - 1]!.id);\r\n } else if (e.key === 'ArrowDown' && taskIndex < columnTasks.length - 1) {\r\n const nextTask = columnTasks[taskIndex + 1];\r\n if (nextTask) onTaskMove?.(taskId, columnId, nextTask.id, 'bottom');\r\n } else if (e.key === 'ArrowUp' && taskIndex > 0) {\r\n const prevTask = columnTasks[taskIndex - 1];\r\n if (prevTask) onTaskMove?.(taskId, columnId, prevTask.id, 'top');\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div \r\n ref={boardRef}\r\n role=\"list\"\r\n aria-label=\"Kanban Board\"\r\n onMouseDown={handleBoardMouseDown}\r\n onMouseMove={handleBoardMouseMove}\r\n onMouseUp={handleBoardMouseUp}\r\n onMouseLeave={handleBoardMouseUp}\r\n className={cn(\r\n \"flex flex-col overflow-x-auto overflow-y-hidden pb-4 select-none board-scroll-container snap-x snap-mandatory scroll-smooth\",\r\n isDraggingBoard ? \"cursor-grabbing\" : \"cursor-grab\",\r\n className\r\n )}\r\n style={{ height: typeof columnHeight === 'number' ? `${columnHeight}px` : columnHeight }}\r\n >\r\n {/* Column Headers (Sticky) */}\r\n <div className=\"flex sticky top-0 z-20 bg-[#0a0a0a]/80 backdrop-blur-md border-b border-white/10 w-fit\">\r\n {columns.map((column, idx) => {\r\n const columnTasks = tasks.filter(t => t.columnId === column.id);\r\n const isOverLimit = column.limit && columnTasks.length > column.limit;\r\n\r\n return (\r\n <div \r\n key={column.id}\r\n role=\"listitem\"\r\n aria-label={`Column: ${column.title}`}\r\n className={cn(\r\n \"flex-shrink-0 w-[480px] flex items-center justify-between px-8 py-6 group/header snap-start\",\r\n showDividers && idx > 0 && \"border-l border-white/10\"\r\n )}\r\n onDragOver={(e) => handleDragOver(e, column.id)}\r\n onDrop={(e) => handleDrop(e, column.id)}\r\n >\r\n <div \r\n draggable\r\n onDragStart={(e) => handleDragStart(e, column.id, 'column')}\r\n onDragEnd={handleDragEnd}\r\n onTouchStart={(e) => handleTouchStart(e, column.id, 'column')}\r\n onTouchMove={handleTouchMove}\r\n onTouchEnd={handleTouchEnd}\r\n className=\"flex items-center gap-3 cursor-grab active:cursor-grabbing flex-1 min-w-0\"\r\n >\r\n <div \r\n className=\"w-2.5 h-2.5 rounded-full shadow-[0_0_10px_rgba(0,0,0,0.5)]\" \r\n style={{ backgroundColor: column.color || `var(--${accentColor}-500)` }} \r\n />\r\n <Heading as=\"h4\" className=\"text-sm font-bold uppercase tracking-[0.1em] text-white/90 truncate\">\r\n {column.title}\r\n </Heading>\r\n {showTaskCount && (\r\n <Badge \r\n variant={isOverLimit ? \"danger\" : \"neutral\"} \r\n className={cn(\r\n \"ml-1 text-[10px] px-2 py-0.5 rounded-full font-bold\",\r\n !isOverLimit && \"bg-white/[0.06] border-white/5 text-white/60\"\r\n )}\r\n >\r\n {columnTasks.length}{column.limit ? ` / ${column.limit}` : ''}\r\n </Badge>\r\n )}\r\n {isOverLimit && (\r\n <AlertTriangle className=\"h-3.5 w-3.5 text-amber-500 animate-pulse\" />\r\n )}\r\n </div>\r\n <div className=\"flex items-center gap-1.5 opacity-0 group-hover/header:opacity-100 transition-all duration-200\">\r\n <Button \r\n variant=\"ghost\" \r\n size=\"sm\" \r\n className=\"h-8 w-8 p-0 hover:bg-white/[0.06] rounded-full text-white/40 hover:text-white\"\r\n onClick={() => handleSetQuickAdd(column.id)}\r\n >\r\n <Plus className=\"h-4.5 w-4.5\" />\r\n </Button>\r\n \r\n <DropdownMenu>\r\n <DropdownMenuTrigger className=\"h-8 w-8 p-0 hover:bg-white/[0.06] rounded-full flex items-center justify-center text-white/40 hover:text-white transition-colors\">\r\n <MoreHorizontal className=\"h-4.5 w-4.5\" />\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align=\"end\" className=\"w-56 bg-[#1a1a1a]/95 backdrop-blur-xl border border-white/10 p-1.5 shadow-2xl z-50 rounded-2xl\">\r\n <div className=\"px-2 py-1.5 mb-1\">\r\n <Text className=\"text-[10px] font-bold uppercase tracking-widest text-white/30\">Column Actions</Text>\r\n </div>\r\n \r\n <DropdownMenuItem \r\n onClick={() => onColumnAction?.(column.id, 'settings')}\r\n className=\"gap-2.5 text-xs text-white/70 hover:text-white hover:bg-white/[0.03] rounded-2xl py-2\"\r\n >\r\n <Settings className=\"h-4 w-4\" /> Column Settings\r\n </DropdownMenuItem>\r\n\r\n <div className=\"h-px bg-white/[0.03] my-1.5\" />\r\n \r\n <div className=\"px-2 py-1.5 mb-1\">\r\n <Text className=\"text-[10px] font-bold uppercase tracking-widest text-white/30\">Sort Tasks</Text>\r\n </div>\r\n\r\n <DropdownMenuItem \r\n onClick={() => setSortConfig({ field: 'title', direction: sortConfig?.field === 'title' && sortConfig.direction === 'asc' ? 'desc' : 'asc' })}\r\n className={cn(\r\n \"gap-2.5 text-xs hover:bg-white/[0.03] rounded-2xl py-2\",\r\n sortConfig?.field === 'title' ? \"text-cyan-400 bg-cyan-500/5\" : \"text-white/70 hover:text-white\"\r\n )}\r\n >\r\n <SortAsc className=\"h-4 w-4\" /> Sort by Title\r\n {sortConfig?.field === 'title' && (\r\n <span className=\"ml-auto text-[10px] uppercase font-bold opacity-50\">{sortConfig.direction}</span>\r\n )}\r\n </DropdownMenuItem>\r\n\r\n <DropdownMenuItem \r\n onClick={() => setSortConfig({ field: 'priority', direction: sortConfig?.field === 'priority' && sortConfig.direction === 'desc' ? 'asc' : 'desc' })}\r\n className={cn(\r\n \"gap-2.5 text-xs hover:bg-white/[0.03] rounded-2xl py-2\",\r\n sortConfig?.field === 'priority' ? \"text-cyan-400 bg-cyan-500/5\" : \"text-white/70 hover:text-white\"\r\n )}\r\n >\r\n <ArrowUpDown className=\"h-4 w-4\" /> Sort by Priority\r\n {sortConfig?.field === 'priority' && (\r\n <span className=\"ml-auto text-[10px] uppercase font-bold opacity-50\">{sortConfig.direction}</span>\r\n )}\r\n </DropdownMenuItem>\r\n\r\n <DropdownMenuItem \r\n onClick={() => setSortConfig({ field: 'dueDate', direction: sortConfig?.field === 'dueDate' && sortConfig.direction === 'asc' ? 'desc' : 'asc' })}\r\n className={cn(\r\n \"gap-2.5 text-xs hover:bg-white/[0.03] rounded-2xl py-2\",\r\n sortConfig?.field === 'dueDate' ? \"text-cyan-400 bg-cyan-500/5\" : \"text-white/70 hover:text-white\"\r\n )}\r\n >\r\n <CalendarDays className=\"h-4 w-4\" /> Sort by Date\r\n {sortConfig?.field === 'dueDate' && (\r\n <span className=\"ml-auto text-[10px] uppercase font-bold opacity-50\">{sortConfig.direction}</span>\r\n )}\r\n </DropdownMenuItem>\r\n\r\n <div className=\"h-px bg-white/[0.03] my-1.5\" />\r\n\r\n <DropdownMenuItem className=\"gap-2.5 text-xs text-white/70 hover:text-white hover:bg-white/[0.03] rounded-2xl py-2\">\r\n <Archive className=\"h-4 w-4\" /> Archive All Tasks\r\n </DropdownMenuItem>\r\n \r\n <DropdownMenuItem className=\"gap-2.5 text-xs text-red-400 hover:text-red-300 hover:bg-red-500/10 rounded-2xl py-2\">\r\n <Trash2 className=\"h-4 w-4\" /> Delete Column\r\n </DropdownMenuItem>\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n\r\n {/* Swimlanes / Groups */}\r\n <div className=\"flex-1 min-h-0 overflow-y-auto w-fit\">\r\n {Object.entries(tasksByGroupAndColumn).map(([groupName, columnMap]) => (\r\n <div key={groupName} className=\"flex flex-col h-full min-h-0\">\r\n {groupBy && (\r\n <div className=\"sticky top-0 z-10 flex items-center gap-3 px-6 py-2 bg-[#0a0a0a]/60 backdrop-blur-sm border-b border-white/5\">\r\n <Badge variant=\"neutral\" className=\"bg-white/[0.06] border-white/10 text-[10px] uppercase font-bold tracking-widest px-3\">\r\n {groupName}\r\n </Badge>\r\n <div className=\"h-px flex-1 bg-white/[0.03]\" />\r\n </div>\r\n )}\r\n \r\n <div className=\"flex min-w-max h-full min-h-0\">\r\n {columns.map((column, idx) => (\r\n <React.Fragment key={column.id}>\r\n {/* Column Ghost Placeholder LEFT */}\r\n {draggedColumnId && dragOverColumnId === column.id && dropPosition === 'left' && draggedColumnId !== column.id && (\r\n <div className=\"flex-shrink-0 w-1 bg-cyan-500/50 mx-2 rounded-full animate-pulse\" />\r\n )}\r\n\r\n <div \r\n key={column.id}\r\n data-column-id={column.id}\r\n className={cn(\r\n \"flex-shrink-0 w-[480px] flex flex-col gap-6 transition-all duration-300 p-4 rounded-[2rem] snap-start h-full min-h-0 overflow-hidden\",\r\n showDividers && idx > 0 && \"border-l border-white/10\",\r\n draggedColumnId === column.id ? \"opacity-20\" : \"opacity-100\",\r\n dragOverColumnId === column.id && draggedColumnId ? \"bg-cyan-500/5\" : \"\",\r\n column.limit && (columnMap[column.id] || []).length > column.limit && \"bg-red-500/[0.02] ring-1 ring-inset ring-red-500/20\",\r\n columnClassName\r\n )}\r\n onDragOver={(e) => handleDragOver(e, column.id)}\r\n onDrop={(e) => handleDrop(e, column.id)}\r\n >\r\n <KanbanColumnContent \r\n column={column}\r\n columnMap={columnMap}\r\n groupName={groupName}\r\n visibleCount={visibleCounts[column.id] || pageSize}\r\n pageSize={pageSize}\r\n draggedTaskId={draggedTaskId}\r\n draggedColumnId={draggedColumnId}\r\n dragOverTaskId={dragOverTaskId}\r\n dragOverColumnId={dragOverColumnId}\r\n dropPosition={dropPosition}\r\n quickAddColumnId={quickAddColumnId}\r\n quickAddValue={quickAddValue}\r\n selectedTaskIds={selectedTaskIds}\r\n activeTimerTaskId={activeTimerTaskId}\r\n handleDragStart={handleDragStart}\r\n handleDragEnd={handleDragEnd}\r\n handleDragOver={handleDragOver}\r\n handleDrop={handleDrop}\r\n handleTouchStart={handleTouchStart}\r\n handleTouchMove={handleTouchMove}\r\n handleTouchEnd={handleTouchEnd}\r\n handleKeyDown={handleKeyDown}\r\n handleLoadMore={handleLoadMore}\r\n handleSetQuickAdd={handleSetQuickAdd}\r\n handleQuickAdd={handleQuickAdd}\r\n setQuickAddValue={setQuickAddValue}\r\n setQuickAddColumnId={setQuickAddColumnId}\r\n onTaskClick={handleTaskClickInternal}\r\n onTaskFullAdd={onTaskFullAdd}\r\n onTaskRemove={onTaskRemove}\r\n onTaskTimerToggle={onTaskTimerToggle}\r\n onTaskSelectionChange={onTaskSelectionChange}\r\n renderCard={renderCard}\r\n selectable={selectable}\r\n cardClassName={cardClassName}\r\n />\r\n </div>\r\n\r\n {/* Column Ghost Placeholder RIGHT */}\r\n {draggedColumnId && dragOverColumnId === column.id && dropPosition === 'right' && draggedColumnId !== column.id && (\r\n <div className=\"flex-shrink-0 w-1 bg-cyan-500/50 mx-2 rounded-full animate-pulse\" />\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useState } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { Upload, X, File as FileIcon } from 'lucide-react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nconst dropzoneVariants = cva(\r\n \"relative flex flex-col items-center justify-center rounded-2xl border-2 border-dashed transition-all duration-200 text-center\",\r\n {\r\n variants: {\r\n isDragActive: {\r\n true: \"border-blue-500 bg-blue-50 dark:bg-blue-500/10\",\r\n false: \"border-gray-200 bg-gray-50 hover:bg-gray-100 dark:border-white/10 dark:bg-white/[0.02] dark:hover:bg-white/[0.05]\",\r\n },\r\n error: {\r\n true: \"border-rose-500 bg-rose-50 dark:bg-rose-500/10\",\r\n false: \"\",\r\n }\r\n },\r\n defaultVariants: {\r\n isDragActive: false,\r\n error: false,\r\n },\r\n }\r\n);\r\n\r\nexport interface FileDropzoneProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onDrop'> {\r\n onDrop?: (files: File[]) => void;\r\n accept?: Record<string, string[]>; // e.g. { 'image/*': ['.png', '.jpg'] }\r\n maxFiles?: number;\r\n maxSize?: number; // in bytes\r\n label?: string;\r\n description?: string;\r\n}\r\n\r\nexport const FileDropzone = React.forwardRef<HTMLDivElement, FileDropzoneProps>(\r\n ({ className, onDrop, maxFiles = 1, maxSize, label = \"Upload files\", description = \"Drag & drop or click to upload\", ...props }, ref) => {\r\n const [isDragActive, setIsDragActive] = useState(false);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [error, setError] = useState<string | null>(null);\r\n const inputRef = React.useRef<HTMLInputElement>(null);\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragActive(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragActive(false);\r\n };\r\n\r\n const validateFiles = (fileList: File[]) => {\r\n if (maxFiles && fileList.length > maxFiles) {\r\n setError(`Max ${maxFiles} files allowed`);\r\n return false;\r\n }\r\n if (maxSize) {\r\n const oversized = fileList.some(f => f.size > maxSize);\r\n if (oversized) {\r\n setError(`File too large (max ${maxSize / 1024 / 1024}MB)`);\r\n return false;\r\n }\r\n }\r\n setError(null);\r\n return true;\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragActive(false);\r\n \r\n const droppedFiles = Array.from(e.dataTransfer.files);\r\n if (validateFiles(droppedFiles)) {\r\n setFiles(droppedFiles);\r\n onDrop?.(droppedFiles);\r\n }\r\n };\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n if (e.target.files) {\r\n const selectedFiles = Array.from(e.target.files);\r\n if (validateFiles(selectedFiles)) {\r\n setFiles(selectedFiles);\r\n onDrop?.(selectedFiles);\r\n }\r\n }\r\n };\r\n\r\n const removeFile = (index: number, e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n const newFiles = files.filter((_, i) => i !== index);\r\n setFiles(newFiles);\r\n onDrop?.(newFiles);\r\n };\r\n\r\n return (\r\n <div className=\"w-full space-y-4\">\r\n <div\r\n ref={ref}\r\n className={cn(dropzoneVariants({ isDragActive, error: !!error, className }), \"p-8 cursor-pointer\")}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n onClick={() => inputRef.current?.click()}\r\n {...props}\r\n >\r\n <input \r\n ref={inputRef}\r\n type=\"file\" \r\n className=\"hidden\" \r\n multiple={maxFiles > 1} \r\n onChange={handleChange} \r\n />\r\n \r\n <div className=\"mb-4 rounded-full bg-gray-100 p-3 dark:bg-white/[0.06]\">\r\n <Upload className=\"h-6 w-6 text-gray-500 dark:text-white/70\" />\r\n </div>\r\n <div className=\"text-sm font-medium text-gray-900 dark:text-white\">\r\n {label}\r\n </div>\r\n <div className=\"mt-1 text-xs text-gray-500 dark:text-white/50\">\r\n {description}\r\n </div>\r\n {error && (\r\n <div className=\"mt-2 text-xs font-medium text-rose-500\">\r\n {error}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {files.length > 0 && (\r\n <div className=\"grid gap-2\">\r\n {files.map((file, i) => (\r\n <div key={i} className=\"flex items-center justify-between rounded-xl border border-gray-200 bg-white p-3 dark:border-white/10 dark:bg-white/[0.03]\">\r\n <div className=\"flex items-center gap-3\">\r\n <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-gray-100 dark:bg-white/[0.06]\">\r\n <FileIcon className=\"h-4 w-4 text-gray-500 dark:text-white/70\" />\r\n </div>\r\n <div className=\"flex flex-col\">\r\n <span className=\"text-sm font-medium text-gray-900 dark:text-white truncate max-w-[200px]\">{file.name}</span>\r\n <span className=\"text-xs text-gray-500 dark:text-white/50\">{(file.size / 1024).toFixed(1)} KB</span>\r\n </div>\r\n </div>\r\n <button \r\n onClick={(e) => removeFile(i, e)}\r\n className=\"rounded-full p-1 hover:bg-gray-100 dark:hover:bg-white/[0.06] text-gray-500 dark:text-white/50\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nFileDropzone.displayName = 'FileDropzone';\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Modal, ModalHeader, ModalTitle, ModalFooter } from '../overlay/Modal';\r\nimport { Button } from '../button/Button';\r\nimport { TextInput } from '../form/TextInput';\r\nimport { Textarea } from '../form/Textarea';\r\nimport { Select } from '../form/Select';\r\nimport { Label } from '../form/Label';\r\nimport { FileDropzone } from '../form/FileDropzone';\r\nimport type { KanbanTask } from './Kanban';\r\nimport { X, Paperclip, Tag, AlertCircle } from 'lucide-react';\r\n\r\nexport interface KanbanTaskModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n onSave: (task: Partial<KanbanTask>) => void;\r\n task?: KanbanTask;\r\n columnId?: string;\r\n}\r\n\r\nexport function KanbanTaskModal({ isOpen, onClose, onSave, task, columnId }: KanbanTaskModalProps) {\r\n const [title, setTitle] = useState('');\r\n const [description, setDescription] = useState('');\r\n const [priority, setPriority] = useState<'low' | 'medium' | 'high' | 'urgent'>('medium');\r\n const [tags, setTags] = useState<string[]>([]);\r\n const [tagInput, setTagInput] = useState('');\r\n\r\n useEffect(() => {\r\n if (task) {\r\n setTitle(task.title || '');\r\n setDescription(task.description || '');\r\n setPriority(task.priority || 'medium');\r\n setTags(task.tags || []);\r\n } else {\r\n setTitle('');\r\n setDescription('');\r\n setPriority('medium');\r\n setTags([]);\r\n }\r\n }, [task, isOpen]);\r\n\r\n const handleSave = () => {\r\n if (!title.trim()) return;\r\n onSave({\r\n ...task,\r\n title,\r\n description,\r\n priority,\r\n tags,\r\n columnId: task?.columnId || columnId\r\n });\r\n onClose();\r\n };\r\n\r\n const addTag = () => {\r\n if (tagInput.trim() && !tags.includes(tagInput.trim())) {\r\n setTags([...tags, tagInput.trim()]);\r\n setTagInput('');\r\n }\r\n };\r\n\r\n const removeTag = (tagToRemove: string) => {\r\n setTags(tags.filter(t => t !== tagToRemove));\r\n };\r\n\r\n return (\r\n <Modal isOpen={isOpen} onClose={onClose}>\r\n <ModalHeader>\r\n <ModalTitle>{task ? 'Edit Task' : 'Create New Task'}</ModalTitle>\r\n </ModalHeader>\r\n \r\n <div className=\"space-y-6 py-4\">\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"task-title\">Title</Label>\r\n <TextInput \r\n id=\"task-title\"\r\n placeholder=\"What needs to be done?\" \r\n value={title}\r\n onChange={(e) => setTitle(e.target.value)}\r\n autoFocus\r\n />\r\n </div>\r\n\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"task-desc\">Description</Label>\r\n <Textarea \r\n id=\"task-desc\"\r\n placeholder=\"Add more details...\" \r\n value={description}\r\n onChange={(e) => setDescription(e.target.value)}\r\n rows={4}\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-4\">\r\n <div className=\"space-y-2\">\r\n <Label>Priority</Label>\r\n <Select \r\n options={[\r\n { label: 'Low', value: 'low' },\r\n { label: 'Medium', value: 'medium' },\r\n { label: 'High', value: 'high' },\r\n { label: 'Urgent', value: 'urgent' },\r\n ]}\r\n value={priority}\r\n onChange={(val) => setPriority(val as any)}\r\n />\r\n </div>\r\n\r\n <div className=\"space-y-2\">\r\n <Label>Tags</Label>\r\n <div className=\"flex gap-2\">\r\n <TextInput \r\n placeholder=\"Add tag...\" \r\n value={tagInput}\r\n onChange={(e) => setTagInput(e.target.value)}\r\n onKeyDown={(e) => e.key === 'Enter' && (e.preventDefault(), addTag())}\r\n />\r\n <Button variant=\"outline\" onClick={addTag} type=\"button\">Add</Button>\r\n </div>\r\n <div className=\"flex flex-wrap gap-2 mt-2\">\r\n {tags.map(tag => (\r\n <span key={tag} className=\"flex items-center gap-1 px-2 py-1 rounded-2xl bg-white/[0.03] border border-white/10 text-xs text-white/70\">\r\n {tag}\r\n <X size={12} className=\"cursor-pointer hover:text-white\" onClick={() => removeTag(tag)} />\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"space-y-2\">\r\n <Label>Attachments</Label>\r\n <FileDropzone \r\n onDrop={(files: File[]) => console.log('Files selected:', files)}\r\n className=\"border-dashed border-white/10 bg-white/[0.02]\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <ModalFooter>\r\n <Button variant=\"ghost\" onClick={onClose}>Cancel</Button>\r\n <Button variant=\"primary\" onClick={handleSave} disabled={!title.trim()}>\r\n {task ? 'Save Changes' : 'Create Task'}\r\n </Button>\r\n </ModalFooter>\r\n </Modal>\r\n );\r\n}\r\n","import React, { useState } from 'react';\r\nimport { Search, Filter, X, ChevronDown, Check } from 'lucide-react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Surface } from '../../primitives/Surface';\r\nimport { Button } from '../button/Button';\r\nimport { Badge } from '../../primitives/Badge';\r\nimport { Popover, PopoverTrigger, PopoverContent } from '../overlay/Popover';\r\nimport { Command, CommandInput, CommandList, CommandItem, CommandGroup } from '../overlay/Command';\r\n\r\nexport interface FilterOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface KanbanFilterBarProps {\r\n onSearchChange?: (query: string) => void;\r\n onFilterChange?: (filters: Record<string, string[]>) => void;\r\n priorityOptions?: FilterOption[];\r\n tagOptions?: FilterOption[];\r\n assigneeOptions?: FilterOption[];\r\n className?: string;\r\n}\r\n\r\nexport function KanbanFilterBar({\r\n onSearchChange,\r\n onFilterChange,\r\n priorityOptions = [],\r\n tagOptions = [],\r\n assigneeOptions = [],\r\n className\r\n}: KanbanFilterBarProps) {\r\n const [search, setSearch] = useState('');\r\n const [activeFilters, setActiveFilters] = useState<Record<string, string[]>>({});\r\n\r\n const toggleFilter = (category: string, value: string) => {\r\n const current = activeFilters[category] || [];\r\n const next = current.includes(value)\r\n ? current.filter(v => v !== value)\r\n : [...current, value];\r\n \r\n const newFilters = { ...activeFilters, [category]: next };\r\n if (next.length === 0) delete newFilters[category];\r\n \r\n setActiveFilters(newFilters);\r\n onFilterChange?.(newFilters);\r\n };\r\n\r\n const clearFilters = () => {\r\n setActiveFilters({});\r\n onFilterChange?.({});\r\n };\r\n\r\n const activeCount = Object.values(activeFilters).flat().length;\r\n\r\n return (\r\n <Surface className={cn(\"p-2 flex flex-wrap items-center gap-3\", className)}>\r\n <div className=\"relative flex-1 min-w-[200px]\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-white/20\" />\r\n <input \r\n type=\"text\"\r\n placeholder=\"Search tasks...\"\r\n className=\"w-full pl-10 pr-4 py-2 text-sm rounded-2xl border border-white/10 bg-white/[0.03] focus:outline-none focus:ring-2 focus:ring-cyan-500/50 transition-all placeholder:text-white/20\"\r\n value={search}\r\n onChange={(e) => {\r\n setSearch(e.target.value);\r\n onSearchChange?.(e.target.value);\r\n }}\r\n />\r\n </div>\r\n\r\n <div className=\"flex items-center gap-2\">\r\n {/* Priority Filter */}\r\n <FilterPopover \r\n label=\"Priority\" \r\n options={priorityOptions} \r\n selected={activeFilters['priority'] || []}\r\n onSelect={(val) => toggleFilter('priority', val)}\r\n />\r\n\r\n {/* Tags Filter */}\r\n <FilterPopover \r\n label=\"Tags\" \r\n options={tagOptions} \r\n selected={activeFilters['tags'] || []}\r\n onSelect={(val) => toggleFilter('tags', val)}\r\n />\r\n\r\n {activeCount > 0 && (\r\n <Button \r\n variant=\"ghost\" \r\n size=\"sm\" \r\n onClick={clearFilters}\r\n className=\"h-9 px-3 text-xs text-white/40 hover:text-white gap-2\"\r\n >\r\n <X className=\"h-3.5 w-3.5\" /> Clear Filters\r\n <Badge variant=\"neutral\" className=\"bg-white/[0.06] border-white/10 ml-1\">\r\n {activeCount}\r\n </Badge>\r\n </Button>\r\n )}\r\n </div>\r\n </Surface>\r\n );\r\n}\r\n\r\nfunction FilterPopover({ label, options, selected, onSelect }: { \r\n label: string; \r\n options: FilterOption[]; \r\n selected: string[];\r\n onSelect: (val: string) => void;\r\n}) {\r\n return (\r\n <Popover>\r\n <PopoverTrigger \r\n className={cn(\r\n \"h-9 px-3 text-xs gap-2 border border-transparent hover:border-white/10 rounded-2xl transition-all\",\r\n selected.length > 0 ? \"bg-cyan-500/10 text-cyan-400 border-cyan-500/20\" : \"text-white/60\"\r\n )}\r\n >\r\n <Filter className=\"h-3.5 w-3.5\" />\r\n {label}\r\n {selected.length > 0 && (\r\n <Badge variant=\"info\" className=\"h-4 min-w-[16px] px-1 bg-cyan-500 text-black border-none\">\r\n {selected.length}\r\n </Badge>\r\n )}\r\n <ChevronDown className=\"h-3.5 w-3.5 opacity-40\" />\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-56 p-0 bg-[#1a1a1a] border-white/10 shadow-2xl\">\r\n <Command>\r\n <CommandInput placeholder={`Search ${label}...`} />\r\n <CommandList>\r\n <CommandGroup>\r\n {options.map(opt => (\r\n <CommandItem \r\n key={opt.value} \r\n value={opt.value}\r\n onSelect={() => onSelect(opt.value)}\r\n className=\"flex items-center justify-between\"\r\n >\r\n <span>{opt.label}</span>\r\n {selected.includes(opt.value) && <Check className=\"h-3.5 w-3.5 text-cyan-400\" />}\r\n </CommandItem>\r\n ))}\r\n </CommandGroup>\r\n </CommandList>\r\n </Command>\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n}\r\n","import React, { useState } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Surface } from '../../primitives/Surface';\r\nimport { Text } from '../typography/Text';\r\nimport { Button } from '../button/Button';\r\nimport { ChevronLeft, ChevronRight, Plus } from 'lucide-react';\r\nimport type { KanbanTask } from './Kanban';\r\n\r\ninterface KanbanCalendarViewProps {\r\n tasks: KanbanTask[];\r\n onTaskClick?: (task: KanbanTask) => void;\r\n onAddTask?: (date: Date) => void;\r\n className?: string;\r\n}\r\n\r\nexport function KanbanCalendarView({ \r\n tasks, \r\n onTaskClick, \r\n onAddTask,\r\n className \r\n}: KanbanCalendarViewProps) {\r\n const [currentDate, setCurrentDate] = useState(new Date());\r\n\r\n const daysInMonth = (year: number, month: number) => new Date(year, month + 1, 0).getDate();\r\n const firstDayOfMonth = (year: number, month: number) => new Date(year, month, 1).getDay();\r\n\r\n const year = currentDate.getFullYear();\r\n const month = currentDate.getMonth();\r\n const totalDays = daysInMonth(year, month);\r\n const startDay = firstDayOfMonth(year, month);\r\n\r\n const prevMonth = () => setCurrentDate(new Date(year, month - 1, 1));\r\n const nextMonth = () => setCurrentDate(new Date(year, month + 1, 1));\r\n\r\n const monthNames = [\r\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\r\n ];\r\n\r\n const days = [];\r\n // Add empty slots for previous month\r\n for (let i = 0; i < startDay; i++) {\r\n days.push(null);\r\n }\r\n // Add days of current month\r\n for (let i = 1; i <= totalDays; i++) {\r\n days.push(new Date(year, month, i));\r\n }\r\n\r\n const getTasksForDate = (date: Date) => {\r\n return tasks.filter(task => {\r\n if (!task.dueDate) return false;\r\n // Simple string matching for demo, in real app use proper date objects\r\n // Assuming dueDate is like \"Dec 24\" or ISO string\r\n const taskDate = new Date(task.dueDate);\r\n if (isNaN(taskDate.getTime())) {\r\n // Fallback for demo strings like \"Dec 24\"\r\n const currentYear = new Date().getFullYear();\r\n const d = new Date(`${task.dueDate} ${currentYear}`);\r\n return d.getDate() === date.getDate() && \r\n d.getMonth() === date.getMonth() && \r\n d.getFullYear() === date.getFullYear();\r\n }\r\n return taskDate.getDate() === date.getDate() && \r\n taskDate.getMonth() === date.getMonth() && \r\n taskDate.getFullYear() === date.getFullYear();\r\n });\r\n };\r\n\r\n return (\r\n <Surface className={cn(\"flex flex-col h-[700px] overflow-hidden\", className)}>\r\n {/* Calendar Header */}\r\n <div className=\"flex items-center justify-between p-4 border-b border-white/10\">\r\n <div className=\"flex flex-col\">\r\n <Text className=\"text-xl font-bold text-white\">{monthNames[month]} {year}</Text>\r\n <Text className=\"text-xs text-white/40 uppercase tracking-widest font-bold\">Monthly Schedule</Text>\r\n </div>\r\n <div className=\"flex items-center gap-2\">\r\n <Button variant=\"outline\" size=\"sm\" onClick={prevMonth}>\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </Button>\r\n <Button variant=\"outline\" size=\"sm\" onClick={() => setCurrentDate(new Date())}>\r\n Today\r\n </Button>\r\n <Button variant=\"outline\" size=\"sm\" onClick={nextMonth}>\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n\r\n {/* Weekdays Header */}\r\n <div className=\"grid grid-cols-7 border-b border-white/10 bg-white/[0.02]\">\r\n {['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].map(day => (\r\n <div key={day} className=\"py-2 text-center\">\r\n <Text className=\"text-xs font-bold text-white/40 uppercase tracking-wider\">{day}</Text>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Calendar Grid */}\r\n <div className=\"flex-1 grid grid-cols-7 auto-rows-fr overflow-y-auto\">\r\n {days.map((date, i) => {\r\n if (!date) return <div key={`empty-${i}`} className=\"border-r border-b border-white/5 bg-white/[0.01]\" />;\r\n \r\n const dateTasks = getTasksForDate(date);\r\n const isToday = new Date().toDateString() === date.toDateString();\r\n\r\n return (\r\n <div \r\n key={date.toISOString()} \r\n className={cn(\r\n \"group relative border-r border-b border-white/10 p-2 min-h-[100px] transition-colors hover:bg-white/[0.02]\",\r\n isToday && \"bg-cyan-500/[0.03]\"\r\n )}\r\n >\r\n <div className=\"flex items-center justify-between mb-2\">\r\n <span className={cn(\r\n \"text-sm font-medium w-7 h-7 flex items-center justify-center rounded-full transition-colors\",\r\n isToday ? \"bg-cyan-500 text-white\" : \"text-white/60 group-hover:text-white\"\r\n )}>\r\n {date.getDate()}\r\n </span>\r\n <button \r\n onClick={() => onAddTask?.(date)}\r\n className=\"opacity-0 group-hover:opacity-100 p-1 hover:bg-white/[0.06] rounded-md transition-all text-white/40 hover:text-white\"\r\n >\r\n <Plus className=\"h-3 w-3\" />\r\n </button>\r\n </div>\r\n\r\n <div className=\"space-y-1\">\r\n {dateTasks.map(task => (\r\n <div \r\n key={task.id}\r\n onClick={() => onTaskClick?.(task)}\r\n className={cn(\r\n \"px-2 py-1 text-[10px] rounded-md border cursor-pointer transition-all truncate\",\r\n task.priority === 'urgent' ? \"bg-red-500/10 border-red-500/20 text-red-400\" :\r\n task.priority === 'high' ? \"bg-orange-500/10 border-orange-500/20 text-orange-400\" :\r\n task.priority === 'medium' ? \"bg-cyan-500/10 border-cyan-500/20 text-cyan-400\" :\r\n \"bg-gray-500/10 border-gray-500/20 text-gray-400\"\r\n )}\r\n >\r\n {task.title}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </Surface>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Surface } from '../../primitives/Surface';\r\n\r\nexport const Card = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <Surface\r\n ref={ref}\r\n className={className}\r\n {...props}\r\n />\r\n));\r\nCard.displayName = \"Card\";\r\n\r\nexport const CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n));\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\nexport const CardTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n className={cn(\r\n \"text-2xl font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n));\r\nCardTitle.displayName = \"CardTitle\";\r\n\r\nexport const CardDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\"text-sm text-gray-500 dark:text-white/50\", className)}\r\n {...props}\r\n />\r\n));\r\nCardDescription.displayName = \"CardDescription\";\r\n\r\nexport const CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\r\n));\r\nCardContent.displayName = \"CardContent\";\r\n\r\nexport const CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n));\r\nCardFooter.displayName = \"CardFooter\";\r\n","import React, { useState } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Skeleton } from '../feedback/Skeleton';\r\n\r\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\r\n fallback?: React.ReactNode;\r\n containerClassName?: string;\r\n}\r\n\r\nexport const Image = React.forwardRef<HTMLImageElement, ImageProps>(\r\n ({ className, containerClassName, alt, src, fallback, onLoad, onError, ...props }, ref) => {\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [hasError, setHasError] = useState(false);\r\n\r\n const handleLoad = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\r\n setIsLoading(false);\r\n onLoad?.(e);\r\n };\r\n\r\n const handleError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\r\n setIsLoading(false);\r\n setHasError(true);\r\n onError?.(e);\r\n };\r\n\r\n if (hasError && fallback) {\r\n return <>{fallback}</>;\r\n }\r\n\r\n return (\r\n <div className={cn(\"relative overflow-hidden rounded-2xl bg-gray-100 dark:bg-white/[0.02] border border-gray-200 dark:border-white/10\", containerClassName)}>\r\n {isLoading && (\r\n <Skeleton className=\"absolute inset-0 h-full w-full\" />\r\n )}\r\n <img\r\n ref={ref}\r\n src={src}\r\n alt={alt}\r\n onLoad={handleLoad}\r\n onError={handleError}\r\n className={cn(\r\n \"h-full w-full object-cover transition-opacity duration-300\",\r\n isLoading ? \"opacity-0\" : \"opacity-100\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n );\r\n }\r\n);\r\nImage.displayName = \"Image\";\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\r\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\r\n}\r\n\r\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(\r\n ({ className, size = 'lg', ...props }, ref) => {\r\n const sizes = {\r\n sm: 'max-w-screen-sm',\r\n md: 'max-w-screen-md',\r\n lg: 'max-w-screen-lg',\r\n xl: 'max-w-screen-xl',\r\n full: 'max-w-full',\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn('mx-auto w-full px-4', sizes[size], className)}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nContainer.displayName = 'Container';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\r\n direction?: 'row' | 'col' | 'row-reverse' | 'col-reverse';\r\n gap?: number | string;\r\n align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';\r\n justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';\r\n wrap?: boolean;\r\n}\r\n\r\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(\r\n ({ className, direction = 'col', gap = 4, align, justify, wrap, style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n 'flex',\r\n {\r\n 'flex-row': direction === 'row',\r\n 'flex-col': direction === 'col',\r\n 'flex-row-reverse': direction === 'row-reverse',\r\n 'flex-col-reverse': direction === 'col-reverse',\r\n 'flex-wrap': wrap,\r\n 'items-start': align === 'start',\r\n 'items-end': align === 'end',\r\n 'items-center': align === 'center',\r\n 'items-baseline': align === 'baseline',\r\n 'items-stretch': align === 'stretch',\r\n 'justify-start': justify === 'start',\r\n 'justify-end': justify === 'end',\r\n 'justify-center': justify === 'center',\r\n 'justify-between': justify === 'between',\r\n 'justify-around': justify === 'around',\r\n 'justify-evenly': justify === 'evenly',\r\n },\r\n className\r\n )}\r\n style={{\r\n gap: typeof gap === 'number' ? `${gap * 0.25}rem` : gap,\r\n ...style\r\n }}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nStack.displayName = 'Stack';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\r\n cols?: number;\r\n sm?: number;\r\n md?: number;\r\n lg?: number;\r\n xl?: number;\r\n gap?: number | string;\r\n}\r\n\r\nexport const Grid = React.forwardRef<HTMLDivElement, GridProps>(\r\n ({ className, cols = 1, sm, md, lg, xl, gap = 4, style, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n 'grid',\r\n sm && `sm:grid-cols-${sm}`,\r\n md && `md:grid-cols-${md}`,\r\n lg && `lg:grid-cols-${lg}`,\r\n xl && `xl:grid-cols-${xl}`,\r\n className\r\n )}\r\n style={{\r\n gridTemplateColumns: cols ? `repeat(${cols}, minmax(0, 1fr))` : undefined,\r\n gap: typeof gap === 'number' ? `${gap * 0.25}rem` : gap,\r\n ...style\r\n }}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nGrid.displayName = 'Grid';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface BackgroundProps extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * The pattern variant to display\r\n * @default 'none'\r\n */\r\n variant?: 'dots' | 'grid' | 'mesh' | 'gradient' | 'beams' | 'none';\r\n /**\r\n * Add a subtle noise/grain texture\r\n * @default false\r\n */\r\n noise?: boolean;\r\n /**\r\n * The color of the pattern (CSS color or variable)\r\n * @default 'rgba(255,255,255,0.08)'\r\n */\r\n patternColor?: string;\r\n /**\r\n * The size of the pattern (spacing between dots/lines)\r\n * @default 24\r\n */\r\n size?: number;\r\n /**\r\n * Apply a radial mask to fade the edges\r\n * @default 'none'\r\n */\r\n mask?: 'fade' | 'none';\r\n /**\r\n * Enable subtle animations for mesh or gradient variants\r\n * @default false\r\n */\r\n animate?: boolean;\r\n /**\r\n * Make the background follow the mouse (requires relative parent)\r\n * @default false\r\n */\r\n followMouse?: boolean;\r\n /**\r\n * The background color of the container. \r\n * Can be a Tailwind class (e.g., 'bg-zinc-950') or a CSS color.\r\n */\r\n bgColor?: string;\r\n}\r\n\r\nexport const Background = React.forwardRef<HTMLDivElement, BackgroundProps>(\r\n ({ \r\n variant = 'none', \r\n noise = false,\r\n patternColor, \r\n size = 24, \r\n mask = 'none', \r\n animate = false,\r\n followMouse = false,\r\n bgColor,\r\n className, \r\n children,\r\n style,\r\n ...props \r\n }, ref) => {\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n\r\n React.useEffect(() => {\r\n if (!followMouse) return;\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n const el = containerRef.current;\r\n if (!el) return;\r\n const rect = el.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n el.style.setProperty('--mouse-x', `${x}px`);\r\n el.style.setProperty('--mouse-y', `${y}px`);\r\n };\r\n\r\n window.addEventListener('mousemove', handleMouseMove);\r\n return () => window.removeEventListener('mousemove', handleMouseMove);\r\n }, [followMouse]);\r\n \r\n const getBackgroundStyle = (): React.CSSProperties => {\r\n const baseStyle: React.CSSProperties = {};\r\n \r\n // Use CSS variables for ultra-performance (no React re-renders)\r\n const effectiveColor = patternColor || 'var(--pattern-color, rgba(255,255,255,0.08))';\r\n\r\n if (variant === 'dots') {\r\n return {\r\n ...baseStyle,\r\n backgroundImage: `radial-gradient(${effectiveColor} 1px, transparent 1px)`,\r\n backgroundSize: `${size}px ${size}px`,\r\n transform: followMouse ? 'translate3d(calc((var(--mouse-x, 0) - 24px) / 40), calc((var(--mouse-y, 0) - 24px) / 40), 0)' : undefined,\r\n };\r\n }\r\n if (variant === 'grid') {\r\n return {\r\n ...baseStyle,\r\n backgroundImage: `\r\n linear-gradient(to right, ${effectiveColor} 1px, transparent 1px),\r\n linear-gradient(to bottom, ${effectiveColor} 1px, transparent 1px)\r\n `,\r\n backgroundSize: `${size}px ${size}px`,\r\n transform: followMouse ? 'translate3d(calc((var(--mouse-x, 0) - 24px) / 40), calc((var(--mouse-y, 0) - 24px) / 40), 0)' : undefined,\r\n };\r\n }\r\n if (variant === 'gradient') {\r\n return {\r\n ...baseStyle,\r\n background: followMouse \r\n ? `radial-gradient(circle at var(--mouse-x, center) var(--mouse-y, center), ${effectiveColor}, transparent)`\r\n : `radial-gradient(circle at center, ${effectiveColor}, transparent)`,\r\n };\r\n }\r\n if (variant === 'beams') {\r\n return {\r\n ...baseStyle,\r\n background: `radial-gradient(60% 40% at 50% 0%, ${effectiveColor} 0%, transparent 100%)`,\r\n };\r\n }\r\n return baseStyle;\r\n };\r\n\r\n const maskStyle: React.CSSProperties = mask === 'fade' ? {\r\n maskImage: 'radial-gradient(ellipse at center, black, transparent 90%)',\r\n WebkitMaskImage: 'radial-gradient(ellipse at center, black, transparent 90%)',\r\n } : {};\r\n\r\n return (\r\n <div\r\n ref={(node) => {\r\n if (node) {\r\n (containerRef as React.MutableRefObject<HTMLDivElement>).current = node;\r\n }\r\n if (typeof ref === 'function') ref(node);\r\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\r\n }}\r\n className={cn(\r\n 'absolute inset-0 overflow-hidden pointer-events-none transition-transform duration-300 ease-out',\r\n 'z-0',\r\n '[--pattern-color:rgba(0,0,0,0.05)] dark:[--pattern-color:rgba(255,255,255,0.08)]',\r\n bgColor?.startsWith('bg-') ? bgColor : '',\r\n className\r\n )}\r\n style={{ \r\n ...getBackgroundStyle(), \r\n ...maskStyle, \r\n ...style,\r\n backgroundColor: bgColor && !bgColor.startsWith('bg-') ? bgColor : undefined \r\n }}\r\n {...props}\r\n >\r\n {noise && (\r\n <div \r\n className=\"absolute inset-0 opacity-[0.03] pointer-events-none brightness-100 contrast-150\" \r\n style={{ backgroundImage: `url(\"data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E\")` }} \r\n />\r\n )}\r\n\r\n {variant === 'beams' && (\r\n <div className=\"absolute inset-0 overflow-hidden\">\r\n <div className=\"absolute top-0 left-1/4 w-px h-full bg-gradient-to-b from-transparent via-white/10 to-transparent\" />\r\n <div className=\"absolute top-0 right-1/4 w-px h-full bg-gradient-to-b from-transparent via-white/10 to-transparent\" />\r\n </div>\r\n )}\r\n\r\n {variant === 'mesh' && (\r\n <div className={cn(\r\n \"absolute inset-0 opacity-30 blur-[100px]\",\r\n animate && \"animate-pulse\"\r\n )}>\r\n <div className=\"absolute top-[-10%] left-[-10%] w-[50%] h-[50%] rounded-full bg-blue-500/20\" />\r\n <div className=\"absolute bottom-[-10%] right-[-10%] w-[50%] h-[50%] rounded-full bg-purple-500/20\" />\r\n <div className=\"absolute top-[20%] right-[10%] w-[40%] h-[40%] rounded-full bg-indigo-500/10\" />\r\n </div>\r\n )}\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nBackground.displayName = 'Background';\r\n","import React, { createContext, useContext, useEffect, useState } from \"react\"\r\n\r\ntype Theme = \"dark\" | \"light\" | \"system\"\r\n\r\ntype ThemeProviderProps = {\r\n children: React.ReactNode\r\n defaultTheme?: Theme\r\n storageKey?: string\r\n}\r\n\r\ntype ThemeProviderState = {\r\n theme: Theme\r\n setTheme: (theme: Theme) => void\r\n}\r\n\r\nconst initialState: ThemeProviderState = {\r\n theme: \"system\",\r\n setTheme: () => null,\r\n}\r\n\r\nconst ThemeProviderContext = createContext<ThemeProviderState>(initialState)\r\n\r\nexport function ThemeProvider({\r\n children,\r\n defaultTheme = \"system\",\r\n storageKey = \"vite-ui-theme\",\r\n ...props\r\n}: ThemeProviderProps) {\r\n const [theme, setTheme] = useState<Theme>(\r\n () => (localStorage.getItem(storageKey) as Theme) || defaultTheme\r\n )\r\n\r\n useEffect(() => {\r\n const root = window.document.documentElement\r\n\r\n root.classList.remove(\"light\", \"dark\")\r\n\r\n if (theme === \"system\") {\r\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\")\r\n \r\n const applySystemTheme = () => {\r\n root.classList.remove(\"light\", \"dark\")\r\n root.classList.add(mediaQuery.matches ? \"dark\" : \"light\")\r\n }\r\n\r\n applySystemTheme()\r\n \r\n mediaQuery.addEventListener(\"change\", applySystemTheme)\r\n return () => mediaQuery.removeEventListener(\"change\", applySystemTheme)\r\n }\r\n\r\n root.classList.add(theme)\r\n }, [theme])\r\n\r\n const value = {\r\n theme,\r\n setTheme: (theme: Theme) => {\r\n localStorage.setItem(storageKey, theme)\r\n setTheme(theme)\r\n },\r\n }\r\n\r\n return (\r\n <ThemeProviderContext.Provider {...props} value={value}>\r\n {children}\r\n </ThemeProviderContext.Provider>\r\n )\r\n}\r\n\r\nexport const useTheme = () => {\r\n const context = useContext(ThemeProviderContext)\r\n\r\n if (context === undefined)\r\n throw new Error(\"useTheme must be used within a ThemeProvider\")\r\n\r\n return context\r\n}\r\n","import React from \"react\"\r\nimport { Moon, Sun } from \"lucide-react\"\r\nimport { useTheme } from \"./ThemeProvider\"\r\nimport { Button } from \"../components/button/Button\"\r\n\r\nexport function ThemeToggle() {\r\n const { setTheme, theme } = useTheme()\r\n\r\n return (\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={() => setTheme(theme === \"light\" ? \"dark\" : \"light\")}\r\n >\r\n <Sun className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\r\n <Moon className=\"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\r\n <span className=\"sr-only\">Toggle theme</span>\r\n </Button>\r\n )\r\n}\r\n","import React, { createContext, useContext, useState, useMemo } from 'react';\r\nimport { cn } from '../../../utils/cn';\r\n\r\n// --- Types ---\r\nexport type ChartDataPoint<T = Record<string, any>> = {\r\n label: string;\r\n value: number;\r\n} & T;\r\n\r\nexport interface ChartContextValue<T = any> {\r\n width: number;\r\n height: number;\r\n data: ChartDataPoint<T>[];\r\n maxValue: number;\r\n padding: { top: number; right: number; bottom: number; left: number };\r\n hoveredIndex: number | null;\r\n setHoveredIndex: (index: number | null) => void;\r\n}\r\n\r\n// --- Context ---\r\nconst ChartContext = createContext<ChartContextValue<any> | undefined>(undefined);\r\n\r\nexport function useChart<T = any>() {\r\n const context = useContext(ChartContext);\r\n if (!context) throw new Error('Chart components must be used within a ChartContainer');\r\n return context as ChartContextValue<T>;\r\n}\r\n\r\n// --- Utils ---\r\nexport function normalize(value: number, max: number, height: number) {\r\n if (max === 0) return 0;\r\n return (value / max) * height;\r\n}\r\n\r\n// --- Components ---\r\n\r\nexport interface ChartContainerProps<T = any> extends React.HTMLAttributes<HTMLDivElement> {\r\n data: ChartDataPoint<T>[];\r\n height?: number;\r\n padding?: { top: number; right: number; bottom: number; left: number };\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function ChartContainer<T = any>({\r\n data,\r\n height = 300,\r\n padding = { top: 20, right: 20, bottom: 40, left: 40 },\r\n className,\r\n children,\r\n ...props\r\n}: ChartContainerProps<T>) {\r\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\r\n const [containerWidth, setContainerWidth] = useState(0);\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n\r\n // Responsive width\r\n React.useEffect(() => {\r\n if (!containerRef.current) return;\r\n const observer = new ResizeObserver((entries) => {\r\n if (entries[0]) {\r\n setContainerWidth(entries[0].contentRect.width);\r\n }\r\n });\r\n observer.observe(containerRef.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const maxValue = useMemo(() => {\r\n return Math.max(...data.map((d) => d.value)) * 1.1; // Add 10% headroom\r\n }, [data]);\r\n\r\n return (\r\n <ChartContext.Provider\r\n value={{\r\n width: containerWidth,\r\n height,\r\n data,\r\n maxValue,\r\n padding,\r\n hoveredIndex,\r\n setHoveredIndex,\r\n }}\r\n >\r\n <div\r\n ref={containerRef}\r\n className={cn(\"relative w-full select-none\", className)}\r\n style={{ height }}\r\n {...props}\r\n >\r\n {containerWidth > 0 && (\r\n <svg\r\n width=\"100%\"\r\n height=\"100%\"\r\n viewBox={`0 0 ${containerWidth} ${height}`}\r\n className=\"overflow-visible\"\r\n >\r\n {children}\r\n </svg>\r\n )}\r\n </div>\r\n </ChartContext.Provider>\r\n );\r\n}\r\n\r\nexport function ChartGrid({ lines = 5 }: { lines?: number }) {\r\n const { width, height, padding } = useChart();\r\n const chartHeight = height - padding.top - padding.bottom;\r\n\r\n return (\r\n <g className=\"text-gray-200 dark:text-white/5\">\r\n {Array.from({ length: lines + 1 }).map((_, i) => {\r\n const y = padding.top + (chartHeight / lines) * i;\r\n return (\r\n <line\r\n key={i}\r\n x1={padding.left}\r\n y1={y}\r\n x2={width - padding.right}\r\n y2={y}\r\n stroke=\"currentColor\"\r\n strokeWidth={1}\r\n strokeDasharray=\"4 4\"\r\n />\r\n );\r\n })}\r\n </g>\r\n );\r\n}\r\n\r\nexport function ChartXAxis() {\r\n const { width, height, padding, data } = useChart();\r\n const chartWidth = width - padding.left - padding.right;\r\n const itemWidth = chartWidth / data.length;\r\n\r\n return (\r\n <g>\r\n {data.map((point, i) => {\r\n const x = padding.left + itemWidth * i + itemWidth / 2;\r\n const y = height - padding.bottom + 20;\r\n return (\r\n <text\r\n key={i}\r\n x={x}\r\n y={y}\r\n textAnchor=\"middle\"\r\n className=\"fill-gray-400 dark:fill-white/40 text-xs font-medium\"\r\n >\r\n {point.label}\r\n </text>\r\n );\r\n })}\r\n </g>\r\n );\r\n}\r\n\r\nexport function ChartTooltip({ \r\n renderTooltip \r\n}: { \r\n renderTooltip?: (data: ChartDataPoint) => React.ReactNode \r\n}) {\r\n const { hoveredIndex, data, width, padding } = useChart();\r\n \r\n if (hoveredIndex === null) return null;\r\n\r\n const chartWidth = width - padding.left - padding.right;\r\n const itemWidth = chartWidth / data.length;\r\n const x = padding.left + itemWidth * hoveredIndex + itemWidth / 2;\r\n const point = data[hoveredIndex];\r\n\r\n if (!point) return null;\r\n\r\n // Simple default tooltip if none provided\r\n const content = renderTooltip ? renderTooltip(point) : (\r\n <div className=\"rounded-xl border border-gray-200 dark:border-white/10 bg-white/90 dark:bg-black/80 px-3 py-2 text-xs shadow-xl backdrop-blur-md\">\r\n <div className=\"font-semibold text-gray-900 dark:text-white\">{point.label}</div>\r\n <div className=\"text-gray-500 dark:text-white/70\">Value: {point.value}</div>\r\n </div>\r\n );\r\n\r\n return (\r\n <foreignObject\r\n x={x - 75} // Center roughly (150px width assumed)\r\n y={0}\r\n width={150}\r\n height=\"100%\"\r\n className=\"pointer-events-none overflow-visible\"\r\n >\r\n <div className=\"flex h-full flex-col justify-center items-center\">\r\n <div className=\"animate-in fade-in zoom-in-95 duration-200\">\r\n {content}\r\n </div>\r\n </div>\r\n </foreignObject>\r\n );\r\n}\r\n\r\nexport function ChartSkeleton() {\r\n return (\r\n <div className=\"w-full h-full flex items-end justify-between gap-2 p-4 animate-pulse bg-gray-100 dark:bg-white/[0.02] rounded-2xl border border-gray-200 dark:border-white/5\">\r\n {[...Array(12)].map((_, i) => (\r\n <div \r\n key={i} \r\n className=\"w-full bg-gray-200 dark:bg-white/[0.03] rounded-t-lg\" \r\n style={{ height: `${Math.random() * 60 + 20}%` }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport type { ChartDataPoint } from './Chart';\r\nimport { useChart, normalize } from './Chart';\r\nimport { cn } from '../../../utils/cn';\r\n\r\nexport interface BarChartProps<T = any> {\r\n color?: 'cyan' | 'purple' | 'emerald' | 'amber' | 'rose';\r\n showValues?: boolean;\r\n animationDelay?: number;\r\n onValueClick?: (data: ChartDataPoint<T>) => void;\r\n}\r\n\r\nexport function BarChart<T = any>({ \r\n color = 'cyan', \r\n showValues = false, \r\n animationDelay = 0,\r\n onValueClick \r\n}: BarChartProps<T>) {\r\n const { width, height, padding, data, maxValue, setHoveredIndex, hoveredIndex } = useChart<T>();\r\n const chartWidth = width - padding.left - padding.right;\r\n const chartHeight = height - padding.top - padding.bottom;\r\n const itemWidth = chartWidth / data.length;\r\n const barWidth = itemWidth * 0.6; // 60% of slot width\r\n\r\n const colors = {\r\n cyan: 'from-cyan-500 to-blue-600',\r\n purple: 'from-purple-500 to-indigo-600',\r\n emerald: 'from-emerald-500 to-teal-600',\r\n amber: 'from-amber-400 to-orange-600',\r\n rose: 'from-rose-500 to-pink-600',\r\n };\r\n\r\n return (\r\n <g>\r\n {data.map((point, i) => {\r\n const barHeight = normalize(point.value, maxValue, chartHeight);\r\n const x = padding.left + itemWidth * i + (itemWidth - barWidth) / 2;\r\n const y = height - padding.bottom - barHeight;\r\n const isHovered = hoveredIndex === i;\r\n const delay = i * 0.1 + animationDelay; // Slower stagger for smoothness\r\n\r\n return (\r\n <g \r\n key={i} \r\n onMouseEnter={() => setHoveredIndex(i)}\r\n onMouseLeave={() => setHoveredIndex(null)}\r\n onClick={() => onValueClick?.(point)}\r\n className={cn(\"cursor-pointer\", onValueClick && \"cursor-pointer\")}\r\n >\r\n {/* Invisible hit area for easier hovering */}\r\n <rect\r\n x={padding.left + itemWidth * i}\r\n y={padding.top}\r\n width={itemWidth}\r\n height={chartHeight}\r\n fill=\"transparent\"\r\n />\r\n \r\n {/* The Bar */}\r\n <rect\r\n x={x}\r\n y={y}\r\n width={barWidth}\r\n height={barHeight}\r\n rx={4}\r\n className={cn(\r\n \"transition-all duration-300 ease-out\",\r\n isHovered ? \"brightness-125 filter\" : \"opacity-80\"\r\n )}\r\n style={{\r\n transformOrigin: `center ${height - padding.bottom}px`,\r\n animation: `grow-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) ${delay}s backwards`\r\n }}\r\n >\r\n {/* Gradient Definition would be better in defs, but inline style works for dynamic colors if needed. \r\n Here we use classes for gradients. */}\r\n </rect>\r\n \r\n {/* Gradient Overlay via Class */}\r\n <rect\r\n x={x}\r\n y={y}\r\n width={barWidth}\r\n height={barHeight}\r\n rx={4}\r\n className={cn(\"bg-gradient-to-b\", colors[color])}\r\n style={{\r\n pointerEvents: 'none',\r\n transformOrigin: `center ${height - padding.bottom}px`,\r\n animation: `grow-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) ${delay}s backwards`\r\n }}\r\n />\r\n\r\n {/* Value Label */}\r\n {showValues && (\r\n <text\r\n x={x + barWidth / 2}\r\n y={y - 8}\r\n textAnchor=\"middle\"\r\n fill=\"white\"\r\n fontSize={12}\r\n fontWeight={500}\r\n style={{ \r\n opacity: 0,\r\n animation: `fade-in-up 0.5s ease-out ${delay + 0.4}s forwards`,\r\n textShadow: '0 2px 4px rgba(0,0,0,0.5)'\r\n }}\r\n >\r\n {point.value}\r\n </text>\r\n )}\r\n </g>\r\n );\r\n })}\r\n <style>{`\r\n @keyframes grow-up {\r\n from { transform: scaleY(0); }\r\n to { transform: scaleY(1); }\r\n }\r\n @keyframes fade-in-up {\r\n from { opacity: 0; transform: translateY(10px); }\r\n to { opacity: 1; transform: translateY(0); }\r\n }\r\n `}</style>\r\n </g>\r\n );\r\n}\r\n","import React from 'react';\r\nimport type { ChartDataPoint } from './Chart';\r\nimport { useChart, normalize } from './Chart';\r\nimport { cn } from '../../../utils/cn';\r\n\r\nexport interface AreaChartProps<T = any> {\r\n color?: 'cyan' | 'purple' | 'emerald' | 'amber' | 'rose';\r\n showValues?: boolean;\r\n animationDelay?: number;\r\n onValueClick?: (data: ChartDataPoint<T>) => void;\r\n}\r\n\r\nexport function AreaChart<T = any>({ \r\n color = 'purple', \r\n showValues = false, \r\n animationDelay = 0,\r\n onValueClick \r\n}: AreaChartProps<T>) {\r\n const { width, height, padding, data, maxValue, setHoveredIndex, hoveredIndex } = useChart<T>();\r\n const chartWidth = width - padding.left - padding.right;\r\n const chartHeight = height - padding.top - padding.bottom;\r\n const itemWidth = chartWidth / (data.length - 1); // Points are on edges\r\n\r\n const colors = {\r\n cyan: { stroke: '#06b6d4', fill: 'rgba(6, 182, 212, 0.2)' },\r\n purple: { stroke: '#8b5cf6', fill: 'rgba(139, 92, 246, 0.2)' },\r\n emerald: { stroke: '#10b981', fill: 'rgba(16, 185, 129, 0.2)' },\r\n amber: { stroke: '#f59e0b', fill: 'rgba(245, 158, 11, 0.2)' },\r\n rose: { stroke: '#f43f5e', fill: 'rgba(244, 63, 94, 0.2)' },\r\n };\r\n\r\n const theme = colors[color];\r\n\r\n // Generate Path Data\r\n const points = data.map((point, i) => {\r\n const x = padding.left + itemWidth * i;\r\n const y = height - padding.bottom - normalize(point.value, maxValue, chartHeight);\r\n return { x, y, item: point };\r\n });\r\n\r\n // Simple Line Path\r\n const linePath = points.map((p, i) => (i === 0 ? `M ${p.x} ${p.y}` : `L ${p.x} ${p.y}`)).join(' ');\r\n\r\n // Area Path (closes the loop)\r\n const areaPath = `\r\n ${linePath}\r\n L ${width - padding.right} ${height - padding.bottom}\r\n L ${padding.left} ${height - padding.bottom}\r\n Z\r\n `;\r\n\r\n return (\r\n <g>\r\n {/* Area Fill */}\r\n <path\r\n d={areaPath}\r\n fill={theme.fill}\r\n style={{ \r\n opacity: 0,\r\n animation: `fade-in 1s ease-out ${animationDelay}s forwards` \r\n }}\r\n />\r\n\r\n {/* Stroke Line */}\r\n <path\r\n d={linePath}\r\n fill=\"none\"\r\n stroke={theme.stroke}\r\n strokeWidth={3}\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className=\"animate-draw-line\"\r\n style={{\r\n strokeDasharray: 2000,\r\n strokeDashoffset: 2000,\r\n animation: `draw-line 2s ease-out ${animationDelay}s forwards`\r\n }}\r\n />\r\n\r\n {/* Interactive Points */}\r\n {points.map((p, i) => (\r\n <g \r\n key={i} \r\n onMouseEnter={() => setHoveredIndex(i)}\r\n onMouseLeave={() => setHoveredIndex(null)}\r\n onClick={() => onValueClick?.(p.item)}\r\n className={cn(\"cursor-crosshair\", onValueClick && \"cursor-pointer\")}\r\n >\r\n {/* Invisible Hit Area */}\r\n <rect \r\n x={p.x - itemWidth / 2} \r\n y={padding.top} \r\n width={itemWidth} \r\n height={chartHeight} \r\n fill=\"transparent\" \r\n />\r\n \r\n {/* Active Point Indicator */}\r\n {(hoveredIndex === i || showValues) && (\r\n <>\r\n {hoveredIndex === i && (\r\n <line\r\n x1={p.x}\r\n y1={padding.top}\r\n x2={p.x}\r\n y2={height - padding.bottom}\r\n stroke=\"white\"\r\n strokeWidth={1}\r\n strokeDasharray=\"4 4\"\r\n className=\"opacity-50\"\r\n />\r\n )}\r\n <circle\r\n cx={p.x}\r\n cy={p.y}\r\n r={hoveredIndex === i ? 6 : 4}\r\n fill={theme.stroke}\r\n stroke=\"white\"\r\n strokeWidth={2}\r\n style={{\r\n transition: 'r 0.2s ease-out'\r\n }}\r\n />\r\n {showValues && (\r\n <text\r\n x={p.x}\r\n y={p.y - 12}\r\n textAnchor=\"middle\"\r\n fill=\"white\"\r\n fontSize={12}\r\n fontWeight={500}\r\n style={{ \r\n opacity: 0,\r\n animation: `fade-in-up 0.5s ease-out ${animationDelay + 1 + i * 0.1}s forwards`,\r\n textShadow: '0 2px 4px rgba(0,0,0,0.5)'\r\n }}\r\n >\r\n {data[i]?.value}\r\n </text>\r\n )}\r\n </>\r\n )}\r\n </g>\r\n ))}\r\n\r\n <style>{`\r\n @keyframes draw-line {\r\n to { stroke-dashoffset: 0; }\r\n }\r\n @keyframes fade-in {\r\n from { opacity: 0; }\r\n to { opacity: 1; }\r\n }\r\n @keyframes fade-in-up {\r\n from { opacity: 0; transform: translateY(10px); }\r\n to { opacity: 1; transform: translateY(0); }\r\n }\r\n `}</style>\r\n </g>\r\n );\r\n}\r\n","import React from 'react';\r\nimport type { ChartDataPoint } from './Chart';\r\nimport { useChart, normalize } from './Chart';\r\nimport { cn } from '../../../utils/cn';\r\n\r\nexport interface LineChartProps<T = any> {\r\n color?: 'cyan' | 'purple' | 'emerald' | 'amber' | 'rose';\r\n showValues?: boolean;\r\n animationDelay?: number;\r\n curve?: 'linear' | 'smooth' | 'step';\r\n strokeWidth?: number;\r\n align?: 'center' | 'edge';\r\n onValueClick?: (data: ChartDataPoint<T>) => void;\r\n}\r\n\r\nexport function LineChart<T = any>({ \r\n color = 'cyan', \r\n showValues = false, \r\n animationDelay = 0,\r\n curve = 'smooth',\r\n strokeWidth = 3,\r\n align = 'edge',\r\n onValueClick \r\n}: LineChartProps<T>) {\r\n const { width, height, padding, data, maxValue, setHoveredIndex, hoveredIndex } = useChart<T>();\r\n const chartWidth = width - padding.left - padding.right;\r\n const chartHeight = height - padding.top - padding.bottom;\r\n \r\n // Align 'center' matches BarChart (bands), 'edge' matches AreaChart (points)\r\n const itemWidth = align === 'center' \r\n ? chartWidth / data.length \r\n : chartWidth / (data.length - 1);\r\n\r\n const colors = {\r\n cyan: '#06b6d4',\r\n purple: '#8b5cf6',\r\n emerald: '#10b981',\r\n amber: '#f59e0b',\r\n rose: '#f43f5e',\r\n };\r\n\r\n const strokeColor = colors[color];\r\n\r\n // Generate Points\r\n const points = data.map((point, i) => {\r\n let x;\r\n if (align === 'center') {\r\n // Center of the band\r\n x = padding.left + itemWidth * i + itemWidth / 2;\r\n } else {\r\n // Edge\r\n x = padding.left + itemWidth * i;\r\n }\r\n \r\n const y = height - padding.bottom - normalize(point.value, maxValue, chartHeight);\r\n return { x, y, item: point };\r\n });\r\n\r\n // Generate Path Command\r\n let d = '';\r\n if (points.length > 0) {\r\n d = `M ${points[0]!.x} ${points[0]!.y}`;\r\n \r\n if (curve === 'smooth') {\r\n // Simple Catmull-Rom or Bezier approximation could go here, \r\n // but for now let's use a simple cubic bezier strategy or just straight lines if complex.\r\n // Actually, let's do a simple smoothing by using midpoints for control points if requested,\r\n // or just standard SVG commands.\r\n // For simplicity and robustness without a library like d3-shape, let's stick to linear or a basic smooth approximation.\r\n \r\n // Basic smooth strategy: Cubic Bezier between points\r\n for (let i = 0; i < points.length - 1; i++) {\r\n const p0 = points[i]!;\r\n const p1 = points[i + 1]!;\r\n const cp1x = p0.x + (p1.x - p0.x) / 2;\r\n const cp1y = p0.y;\r\n const cp2x = p0.x + (p1.x - p0.x) / 2;\r\n const cp2y = p1.y;\r\n d += ` C ${cp1x} ${cp1y}, ${cp2x} ${cp2y}, ${p1.x} ${p1.y}`;\r\n }\r\n } else if (curve === 'step') {\r\n for (let i = 0; i < points.length - 1; i++) {\r\n const p0 = points[i]!;\r\n const p1 = points[i + 1]!;\r\n d += ` L ${p1.x} ${p0.y} L ${p1.x} ${p1.y}`;\r\n }\r\n } else {\r\n // Linear\r\n for (let i = 1; i < points.length; i++) {\r\n d += ` L ${points[i]!.x} ${points[i]!.y}`;\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <g>\r\n {/* The Line */}\r\n <path\r\n d={d}\r\n fill=\"none\"\r\n stroke={strokeColor}\r\n strokeWidth={strokeWidth}\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n className=\"animate-draw-line\"\r\n style={{\r\n strokeDasharray: 3000,\r\n strokeDashoffset: 3000,\r\n animation: `draw-line 2.5s ease-out ${animationDelay}s forwards`\r\n }}\r\n />\r\n\r\n {/* Interactive Points */}\r\n {points.map((p, i) => (\r\n <g \r\n key={i} \r\n onMouseEnter={() => setHoveredIndex(i)}\r\n onMouseLeave={() => setHoveredIndex(null)}\r\n onClick={() => onValueClick?.(p.item)}\r\n className={cn(\"cursor-crosshair\", onValueClick && \"cursor-pointer\")}\r\n >\r\n {/* Invisible Hit Area */}\r\n <rect \r\n x={p.x - itemWidth / 2} \r\n y={padding.top} \r\n width={itemWidth} \r\n height={chartHeight} \r\n fill=\"transparent\" \r\n />\r\n \r\n {/* Active Point Indicator */}\r\n {(hoveredIndex === i || showValues) && (\r\n <>\r\n {hoveredIndex === i && (\r\n <line\r\n x1={p.x}\r\n y1={padding.top}\r\n x2={p.x}\r\n y2={height - padding.bottom}\r\n stroke=\"white\"\r\n strokeWidth={1}\r\n strokeDasharray=\"4 4\"\r\n className=\"opacity-50\"\r\n />\r\n )}\r\n <circle\r\n cx={p.x}\r\n cy={p.y}\r\n r={hoveredIndex === i ? 6 : 4}\r\n fill={strokeColor}\r\n stroke=\"white\"\r\n strokeWidth={2}\r\n style={{ transition: 'r 0.2s ease-out' }}\r\n />\r\n {showValues && (\r\n <text\r\n x={p.x}\r\n y={p.y - 12}\r\n textAnchor=\"middle\"\r\n fill=\"white\"\r\n fontSize={12}\r\n fontWeight={500}\r\n style={{ \r\n opacity: 0,\r\n animation: `fade-in-up 0.5s ease-out ${animationDelay + 1 + i * 0.1}s forwards`,\r\n textShadow: '0 2px 4px rgba(0,0,0,0.5)'\r\n }}\r\n >\r\n {data[i]?.value}\r\n </text>\r\n )}\r\n </>\r\n )}\r\n </g>\r\n ))}\r\n\r\n <style>{`\r\n @keyframes draw-line {\r\n to { stroke-dashoffset: 0; }\r\n }\r\n @keyframes fade-in-up {\r\n from { opacity: 0; transform: translateY(10px); }\r\n to { opacity: 1; transform: translateY(0); }\r\n }\r\n `}</style>\r\n </g>\r\n );\r\n}\r\n","import React, { useMemo } from 'react';\r\nimport type { ChartDataPoint } from './Chart';\r\nimport { useChart } from './Chart';\r\nimport { cn } from '../../../utils/cn';\r\n\r\nexport interface PieChartProps<T = any> {\r\n innerRadius?: number; // 0 for Pie, >0 for Donut (0-1 relative to radius, or absolute pixels?) Let's say 0-1 relative.\r\n padAngle?: number;\r\n showLabels?: boolean;\r\n colors?: string[];\r\n onValueClick?: (data: ChartDataPoint<T>) => void;\r\n}\r\n\r\nexport function PieChart<T = any>({ \r\n innerRadius = 0, \r\n padAngle = 0.02, \r\n showLabels = false,\r\n colors = ['#06b6d4', '#8b5cf6', '#10b981', '#f59e0b', '#f43f5e', '#3b82f6', '#ec4899'],\r\n onValueClick\r\n}: PieChartProps<T>) {\r\n const { width, height, data, setHoveredIndex, hoveredIndex } = useChart<T>();\r\n \r\n const radius = Math.min(width, height) / 2 * 0.8; // 80% of half-size to leave room for labels/hover\r\n const centerX = width / 2;\r\n const centerY = height / 2;\r\n \r\n const total = useMemo(() => data.reduce((acc, cur) => acc + cur.value, 0), [data]);\r\n \r\n let currentAngle = 0;\r\n \r\n const slices = data.map((point, i) => {\r\n const percentage = point.value / total;\r\n const angle = percentage * 2 * Math.PI;\r\n \r\n const startAngle = currentAngle;\r\n const endAngle = currentAngle + angle;\r\n \r\n currentAngle += angle;\r\n \r\n return {\r\n ...point,\r\n startAngle,\r\n endAngle,\r\n color: colors[i % colors.length],\r\n percentage\r\n };\r\n });\r\n\r\n // Helper to get coordinates\r\n const getCoordinatesForPercent = (percent: number, r: number) => {\r\n const x = centerX + r * Math.cos(percent);\r\n const y = centerY + r * Math.sin(percent);\r\n return [x, y];\r\n };\r\n\r\n return (\r\n <g>\r\n {slices.map((slice, i) => {\r\n // Calculate path\r\n // We need to handle the gap (padAngle) if multiple slices\r\n const effectiveStartAngle = slice.startAngle + (slices.length > 1 ? padAngle / 2 : 0);\r\n const effectiveEndAngle = slice.endAngle - (slices.length > 1 ? padAngle / 2 : 0);\r\n \r\n // If the slice is too small due to padding, just skip or render a line? \r\n // For simplicity, let's just clamp.\r\n if (effectiveEndAngle <= effectiveStartAngle) return null;\r\n\r\n const [startX, startY] = getCoordinatesForPercent(effectiveStartAngle, radius);\r\n const [endX, endY] = getCoordinatesForPercent(effectiveEndAngle, radius);\r\n \r\n const largeArcFlag = effectiveEndAngle - effectiveStartAngle > Math.PI ? 1 : 0;\r\n \r\n // Inner radius (for donut)\r\n const rInner = radius * innerRadius;\r\n const [innerStartX, innerStartY] = getCoordinatesForPercent(effectiveEndAngle, rInner);\r\n const [innerEndX, innerEndY] = getCoordinatesForPercent(effectiveStartAngle, rInner);\r\n\r\n const pathData = [\r\n `M ${startX} ${startY}`,\r\n `A ${radius} ${radius} 0 ${largeArcFlag} 1 ${endX} ${endY}`,\r\n innerRadius > 0 ? `L ${innerStartX} ${innerStartY}` : `L ${centerX} ${centerY}`,\r\n innerRadius > 0 ? `A ${rInner} ${rInner} 0 ${largeArcFlag} 0 ${innerEndX} ${innerEndY}` : '',\r\n 'Z'\r\n ].join(' ');\r\n\r\n const isHovered = hoveredIndex === i;\r\n \r\n // Label position (centroid)\r\n const midAngle = (slice.startAngle + slice.endAngle) / 2;\r\n const labelRadius = radius * (innerRadius > 0 ? (1 + innerRadius) / 2 : 0.7);\r\n const [labelX, labelY] = getCoordinatesForPercent(midAngle, labelRadius);\r\n\r\n return (\r\n <g \r\n key={i}\r\n onMouseEnter={() => setHoveredIndex(i)}\r\n onMouseLeave={() => setHoveredIndex(null)}\r\n className=\"cursor-pointer\"\r\n >\r\n <path\r\n d={pathData}\r\n fill={slice.color}\r\n className={cn(\r\n \"transition-all duration-300 ease-out\",\r\n isHovered ? \"opacity-100 brightness-110\" : \"opacity-90\"\r\n )}\r\n style={{\r\n transformOrigin: `${centerX}px ${centerY}px`,\r\n transform: isHovered ? 'scale(1.05)' : 'scale(1)',\r\n animation: `pie-enter 0.6s ease-out ${i * 0.05}s backwards`\r\n }}\r\n />\r\n \r\n {(showLabels || isHovered) && (\r\n <text\r\n x={labelX}\r\n y={labelY}\r\n textAnchor=\"middle\"\r\n dominantBaseline=\"middle\"\r\n fill=\"white\"\r\n fontSize={12}\r\n fontWeight={600}\r\n className=\"pointer-events-none\"\r\n style={{ textShadow: '0 1px 2px rgba(0,0,0,0.5)' }}\r\n >\r\n {Math.round(slice.percentage * 100)}%\r\n </text>\r\n )}\r\n </g>\r\n );\r\n })}\r\n <style>{`\r\n @keyframes pie-enter {\r\n from { opacity: 0; transform: scale(0.8) rotate(-10deg); }\r\n to { opacity: 0.9; transform: scale(1) rotate(0); }\r\n }\r\n `}</style>\r\n </g>\r\n );\r\n}\r\n","import React, { useMemo, useState } from 'react';\r\nimport { cn } from '../../../utils/cn';\r\n\r\nexport type RadarDataPoint<T = Record<string, any>> = {\r\n subject: string;\r\n} & T;\r\n\r\nexport interface RadarChartProps<T = any> extends React.HTMLAttributes<HTMLDivElement> {\r\n data: RadarDataPoint<T>[];\r\n keys: (keyof T)[]; // Keys to plot (e.g. ['A', 'B'])\r\n colors?: string[]; // Colors for each key\r\n maxValue?: number;\r\n height?: number;\r\n}\r\n\r\nexport function RadarChart<T = any>({\r\n data,\r\n keys,\r\n colors = ['cyan', 'purple', 'emerald'],\r\n maxValue: userMaxValue,\r\n height = 300,\r\n className,\r\n ...props\r\n}: RadarChartProps<T>) {\r\n const [containerWidth, setContainerWidth] = useState(0);\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n\r\n // Responsive width\r\n React.useEffect(() => {\r\n if (!containerRef.current) return;\r\n const observer = new ResizeObserver((entries) => {\r\n if (entries[0]) {\r\n setContainerWidth(entries[0].contentRect.width);\r\n }\r\n });\r\n observer.observe(containerRef.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const center = { x: containerWidth / 2, y: height / 2 };\r\n const radius = Math.min(containerWidth, height) / 2 - 40; // 40px padding\r\n\r\n const maxValue = useMemo(() => {\r\n if (userMaxValue) return userMaxValue;\r\n let max = 0;\r\n data.forEach(d => {\r\n keys.forEach(k => {\r\n const val = Number(d[k]) || 0;\r\n if (val > max) max = val;\r\n });\r\n });\r\n return max * 1.1 || 100;\r\n }, [data, keys, userMaxValue]);\r\n\r\n const angleSlice = (Math.PI * 2) / data.length;\r\n\r\n const colorMap: Record<string, string> = {\r\n cyan: 'rgba(6, 182, 212, 0.5)',\r\n purple: 'rgba(139, 92, 246, 0.5)',\r\n emerald: 'rgba(16, 185, 129, 0.5)',\r\n amber: 'rgba(245, 158, 11, 0.5)',\r\n rose: 'rgba(244, 63, 94, 0.5)',\r\n };\r\n \r\n const strokeMap: Record<string, string> = {\r\n cyan: '#06b6d4',\r\n purple: '#8b5cf6',\r\n emerald: '#10b981',\r\n amber: '#f59e0b',\r\n rose: '#f43f5e',\r\n };\r\n\r\n if (containerWidth === 0) return <div ref={containerRef} style={{ height }} />;\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"relative w-full select-none\", className)}\r\n style={{ height }}\r\n {...props}\r\n >\r\n <svg width=\"100%\" height=\"100%\" viewBox={`0 0 ${containerWidth} ${height}`} className=\"overflow-visible\">\r\n {/* Grid */}\r\n {[1, 2, 3, 4, 5].map((level) => {\r\n const levelRadius = (radius / 5) * level;\r\n const points = data.map((_, i) => {\r\n const angle = angleSlice * i - Math.PI / 2;\r\n return `${center.x + Math.cos(angle) * levelRadius},${center.y + Math.sin(angle) * levelRadius}`;\r\n }).join(' ');\r\n \r\n return (\r\n <polygon\r\n key={level}\r\n points={points}\r\n fill=\"none\"\r\n stroke=\"rgba(255,255,255,0.1)\"\r\n strokeWidth=\"1\"\r\n />\r\n );\r\n })}\r\n\r\n {/* Axes & Labels */}\r\n {data.map((d, i) => {\r\n const angle = angleSlice * i - Math.PI / 2;\r\n const x = center.x + Math.cos(angle) * radius;\r\n const y = center.y + Math.sin(angle) * radius;\r\n \r\n // Label position (slightly outside)\r\n const labelX = center.x + Math.cos(angle) * (radius + 20);\r\n const labelY = center.y + Math.sin(angle) * (radius + 20);\r\n\r\n return (\r\n <g key={i}>\r\n <line\r\n x1={center.x}\r\n y1={center.y}\r\n x2={x}\r\n y2={y}\r\n stroke=\"rgba(255,255,255,0.1)\"\r\n strokeWidth=\"1\"\r\n />\r\n <text\r\n x={labelX}\r\n y={labelY}\r\n textAnchor=\"middle\"\r\n dominantBaseline=\"middle\"\r\n fill=\"rgba(255,255,255,0.6)\"\r\n fontSize=\"12\"\r\n >\r\n {d.subject}\r\n </text>\r\n </g>\r\n );\r\n })}\r\n\r\n {/* Data Polygons */}\r\n {keys.map((key, kIndex) => {\r\n const points = data.map((d, i) => {\r\n const value = Number(d[key]) || 0;\r\n const r = (value / maxValue) * radius;\r\n const angle = angleSlice * i - Math.PI / 2;\r\n return `${center.x + Math.cos(angle) * r},${center.y + Math.sin(angle) * r}`;\r\n }).join(' ');\r\n\r\n const colorName = colors[kIndex % colors.length] || 'cyan';\r\n const fill = colorMap[colorName];\r\n const stroke = strokeMap[colorName];\r\n\r\n return (\r\n <polygon\r\n key={key as string}\r\n points={points}\r\n fill={fill}\r\n fillOpacity={0.3}\r\n stroke={stroke}\r\n strokeWidth={2}\r\n className=\"transition-all duration-500 ease-out hover:fill-opacity-50\"\r\n />\r\n );\r\n })}\r\n </svg>\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../../utils/cn';\r\n\r\nexport interface SparklineProps extends React.HTMLAttributes<HTMLDivElement> {\r\n data: number[];\r\n color?: 'cyan' | 'purple' | 'emerald' | 'amber' | 'rose' | 'white';\r\n height?: number;\r\n strokeWidth?: number;\r\n fill?: boolean;\r\n}\r\n\r\nexport function Sparkline({\r\n data,\r\n color = 'emerald',\r\n height = 40,\r\n strokeWidth = 2,\r\n fill = false,\r\n className,\r\n ...props\r\n}: SparklineProps) {\r\n const max = Math.max(...data);\r\n const min = Math.min(...data);\r\n const range = max - min || 1;\r\n\r\n const colors = {\r\n cyan: '#06b6d4',\r\n purple: '#8b5cf6',\r\n emerald: '#10b981',\r\n amber: '#f59e0b',\r\n rose: '#f43f5e',\r\n white: '#ffffff',\r\n };\r\n\r\n const strokeColor = colors[color];\r\n\r\n // Generate points\r\n // We assume width is 100% (viewBox 0 0 100 100) but we need aspect ratio.\r\n // To make it responsive without JS, we can use preserveAspectRatio=\"none\" on the SVG\r\n // and map x from 0 to 100.\r\n \r\n const points = data.map((val, i) => {\r\n const x = (i / (data.length - 1)) * 100;\r\n // Invert Y because SVG 0 is top\r\n // Normalize value between 0 and 100 (height of viewBox)\r\n // Add some padding (5%) so stroke doesn't clip\r\n const normalized = ((val - min) / range);\r\n const y = 95 - (normalized * 90); \r\n return { x, y };\r\n });\r\n\r\n let d = '';\r\n if (points.length > 0) {\r\n d = `M ${points[0]!.x} ${points[0]!.y}`;\r\n // Simple smoothing\r\n for (let i = 0; i < points.length - 1; i++) {\r\n const p0 = points[i]!;\r\n const p1 = points[i + 1]!;\r\n const cp1x = p0.x + (p1.x - p0.x) / 2;\r\n const cp1y = p0.y;\r\n const cp2x = p0.x + (p1.x - p0.x) / 2;\r\n const cp2y = p1.y;\r\n d += ` C ${cp1x} ${cp1y}, ${cp2x} ${cp2y}, ${p1.x} ${p1.y}`;\r\n }\r\n }\r\n\r\n const fillPath = fill \r\n ? `${d} L 100 100 L 0 100 Z` \r\n : undefined;\r\n\r\n return (\r\n <div \r\n className={cn(\"w-full overflow-hidden\", className)} \r\n style={{ height }} \r\n {...props}\r\n >\r\n <svg\r\n width=\"100%\"\r\n height=\"100%\"\r\n viewBox=\"0 0 100 100\"\r\n preserveAspectRatio=\"none\"\r\n className=\"overflow-visible\"\r\n >\r\n {fill && (\r\n <path\r\n d={fillPath}\r\n fill={strokeColor}\r\n fillOpacity={0.1}\r\n stroke=\"none\"\r\n />\r\n )}\r\n <path\r\n d={d}\r\n fill=\"none\"\r\n stroke={strokeColor}\r\n strokeWidth={strokeWidth}\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n vectorEffect=\"non-scaling-stroke\" // Keeps stroke width constant despite scaling\r\n />\r\n </svg>\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { useChart } from './Chart';\r\n\r\nexport interface YAxisProps {\r\n ticks?: number;\r\n format?: (value: number) => string;\r\n}\r\n\r\nexport function ChartYAxis({ ticks = 5, format = (v) => v.toString() }: YAxisProps) {\r\n const { height, padding, maxValue } = useChart();\r\n const chartHeight = height - padding.top - padding.bottom;\r\n\r\n return (\r\n <g>\r\n {Array.from({ length: ticks + 1 }).map((_, i) => {\r\n const value = (maxValue / ticks) * i;\r\n const y = height - padding.bottom - (chartHeight / ticks) * i;\r\n \r\n return (\r\n <text\r\n key={i}\r\n x={padding.left - 10}\r\n y={y}\r\n textAnchor=\"end\"\r\n dominantBaseline=\"middle\"\r\n className=\"fill-gray-400 dark:fill-white/40 text-xs font-medium\"\r\n >\r\n {format(Math.round(value))}\r\n </text>\r\n );\r\n })}\r\n </g>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\nimport { Avatar } from './Avatar';\r\nimport { Button } from '../button/Button';\r\n\r\nconst userPreviewVariants = cva(\r\n \"flex flex-col gap-4 rounded-2xl border p-4 transition-all duration-200\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-white border-gray-200 dark:bg-white/[0.03] dark:border-white/10\",\r\n glass: \"backdrop-blur-md bg-white/80 border-white/20 dark:bg-black/40 dark:border-white/10\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport interface UserPreviewProps \r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof userPreviewVariants> {\r\n user: {\r\n name: string;\r\n email?: string;\r\n avatarSrc?: string;\r\n role?: string;\r\n bio?: string;\r\n stats?: { label: string; value: string | number }[];\r\n };\r\n onFollow?: () => void;\r\n onMessage?: () => void;\r\n}\r\n\r\nexport const UserPreview = React.forwardRef<HTMLDivElement, UserPreviewProps>(\r\n ({ className, variant, user, onFollow, onMessage, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn(userPreviewVariants({ variant, className }))} {...props}>\r\n <div className=\"flex items-start justify-between\">\r\n <div className=\"flex gap-3\">\r\n <Avatar src={user.avatarSrc} alt={user.name} size=\"lg\" />\r\n <div>\r\n <h4 className=\"text-sm font-semibold text-gray-900 dark:text-white\">{user.name}</h4>\r\n {user.role && (\r\n <span className=\"text-xs text-gray-500 dark:text-white/50\">{user.role}</span>\r\n )}\r\n {user.email && (\r\n <div className=\"text-xs text-gray-400 dark:text-white/40 mt-0.5\">{user.email}</div>\r\n )}\r\n </div>\r\n </div>\r\n {onFollow && (\r\n <Button size=\"sm\" variant=\"outline\" onClick={onFollow}>Follow</Button>\r\n )}\r\n </div>\r\n \r\n {user.bio && (\r\n <p className=\"text-sm text-gray-600 dark:text-gray-300 line-clamp-2\">\r\n {user.bio}\r\n </p>\r\n )}\r\n\r\n {user.stats && (\r\n <div className=\"flex gap-4 border-t border-gray-100 pt-3 dark:border-white/5\">\r\n {user.stats.map((stat, i) => (\r\n <div key={i} className=\"flex flex-col\">\r\n <span className=\"text-xs font-medium text-gray-900 dark:text-white\">{stat.value}</span>\r\n <span className=\"text-[10px] text-gray-500 dark:text-white/40\">{stat.label}</span>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n \r\n {onMessage && (\r\n <Button className=\"w-full mt-2\" onClick={onMessage}>Message</Button>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nUserPreview.displayName = 'UserPreview';\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\n\r\nconst timelineItemVariants = cva(\r\n \"relative pl-8 pb-8 last:pb-0\",\r\n {\r\n variants: {\r\n status: {\r\n default: \"[&>div:first-child]:bg-gray-200 dark:[&>div:first-child]:bg-white/20\",\r\n active: \"[&>div:first-child]:bg-blue-500\",\r\n success: \"[&>div:first-child]:bg-emerald-500\",\r\n error: \"[&>div:first-child]:bg-rose-500\",\r\n }\r\n },\r\n defaultVariants: {\r\n status: \"default\"\r\n }\r\n }\r\n);\r\n\r\nexport interface TimelineItemProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof timelineItemVariants> {\r\n title: string;\r\n date?: string;\r\n description?: React.ReactNode;\r\n icon?: React.ReactNode;\r\n isLast?: boolean;\r\n}\r\n\r\nexport const TimelineItem = React.forwardRef<HTMLDivElement, TimelineItemProps>(\r\n ({ className, status, title, date, description, icon, isLast, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn(timelineItemVariants({ status, className }))} {...props}>\r\n {/* Line */}\r\n {!isLast && (\r\n <div className=\"absolute left-[11px] top-[24px] bottom-0 w-px bg-gray-200 dark:bg-white/[0.06]\" />\r\n )}\r\n \r\n {/* Dot / Icon */}\r\n <div className={cn(\r\n \"absolute left-0 top-1.5 flex h-6 w-6 items-center justify-center rounded-full border-2 border-white dark:border-black ring-1 ring-transparent transition-colors\",\r\n status === 'active' ? \"bg-blue-500 ring-blue-500/30\" : \r\n status === 'success' ? \"bg-emerald-500 ring-emerald-500/30\" :\r\n status === 'error' ? \"bg-rose-500 ring-rose-500/30\" :\r\n \"bg-gray-200 dark:bg-white/20\"\r\n )}>\r\n {icon && <span className=\"text-white text-[10px]\">{icon}</span>}\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm font-medium text-gray-900 dark:text-white\">{title}</span>\r\n {date && <span className=\"text-xs text-gray-500 dark:text-white/40\">{date}</span>}\r\n </div>\r\n {description && (\r\n <div className=\"text-sm text-gray-600 dark:text-gray-400\">\r\n {description}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\nTimelineItem.displayName = 'TimelineItem';\r\n\r\nexport const Timeline = ({ children, className }: { children: React.ReactNode, className?: string }) => {\r\n return <div className={cn(\"flex flex-col\", className)}>{children}</div>;\r\n};\r\n","import React, { useState } from 'react';\r\nimport { ChevronRight, ChevronDown, Folder, File, FolderOpen } from 'lucide-react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface TreeNode {\r\n id: string;\r\n label: string;\r\n icon?: React.ReactNode;\r\n children?: TreeNode[];\r\n}\r\n\r\nexport interface TreeProps {\r\n data: TreeNode[];\r\n className?: string;\r\n onSelect?: (node: TreeNode) => void;\r\n}\r\n\r\nconst TreeNodeItem = ({ node, depth = 0, onSelect }: { node: TreeNode; depth?: number; onSelect?: (node: TreeNode) => void }) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const hasChildren = node.children && node.children.length > 0;\r\n\r\n const handleToggle = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n if (hasChildren) {\r\n setIsOpen(!isOpen);\r\n }\r\n onSelect?.(node);\r\n };\r\n\r\n return (\r\n <div>\r\n <div\r\n className={cn(\r\n \"flex items-center gap-2 rounded-lg px-2 py-1.5 text-sm text-gray-700 transition-colors hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-white/[0.03] cursor-pointer\",\r\n )}\r\n style={{ paddingLeft: `${depth * 12 + 8}px` }}\r\n onClick={handleToggle}\r\n >\r\n {hasChildren ? (\r\n <span className=\"text-gray-400 dark:text-white/40\">\r\n {isOpen ? <ChevronDown className=\"h-4 w-4\" /> : <ChevronRight className=\"h-4 w-4\" />}\r\n </span>\r\n ) : (\r\n <span className=\"w-4\" /> \r\n )}\r\n \r\n {node.icon ? (\r\n <span className=\"text-gray-500 dark:text-white/50\">{node.icon}</span>\r\n ) : (\r\n <span className=\"text-blue-500 dark:text-blue-400\">\r\n {hasChildren ? (isOpen ? <FolderOpen className=\"h-4 w-4\" /> : <Folder className=\"h-4 w-4\" />) : <File className=\"h-4 w-4\" />}\r\n </span>\r\n )}\r\n \r\n <span className=\"truncate\">{node.label}</span>\r\n </div>\r\n \r\n {isOpen && hasChildren && (\r\n <div className=\"animate-in slide-in-from-top-1 fade-in duration-200\">\r\n {node.children!.map((child) => (\r\n <TreeNodeItem key={child.id} node={child} depth={depth + 1} onSelect={onSelect} />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const Tree = ({ data, className, onSelect }: TreeProps) => {\r\n return (\r\n <div className={cn(\"w-full select-none\", className)}>\r\n {data.map((node) => (\r\n <TreeNodeItem key={node.id} node={node} onSelect={onSelect} />\r\n ))}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface TerminalProps extends React.HTMLAttributes<HTMLDivElement> {\r\n title?: string;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const Terminal = React.forwardRef<HTMLDivElement, TerminalProps>(\r\n ({ className, title = \"Terminal\", children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden rounded-2xl border border-gray-200 bg-gray-950 shadow-xl dark:border-white/10\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"flex items-center justify-between border-b border-white/10 bg-white/[0.03] px-4 py-2\">\r\n <div className=\"flex items-center gap-1.5\">\r\n <div className=\"h-3 w-3 rounded-full bg-rose-500/80\" />\r\n <div className=\"h-3 w-3 rounded-full bg-amber-500/80\" />\r\n <div className=\"h-3 w-3 rounded-full bg-emerald-500/80\" />\r\n </div>\r\n <div className=\"text-xs font-medium text-white/50\">{title}</div>\r\n <div className=\"w-10\" /> {/* Spacer for centering */}\r\n </div>\r\n <div className=\"p-4 font-mono text-sm text-gray-300\">\r\n {children}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\nTerminal.displayName = \"Terminal\";\r\n\r\nexport const TerminalLine = ({ children, prefix = \"$\", className }: { children: React.ReactNode, prefix?: string, className?: string }) => (\r\n <div className={cn(\"flex gap-2\", className)}>\r\n <span className=\"select-none text-emerald-400\">{prefix}</span>\r\n <span>{children}</span>\r\n </div>\r\n);\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface MarqueeProps extends React.HTMLAttributes<HTMLDivElement> {\r\n pauseOnHover?: boolean;\r\n direction?: 'left' | 'right';\r\n speed?: 'slow' | 'normal' | 'fast';\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const Marquee = ({ \r\n className, \r\n pauseOnHover = false, \r\n direction = 'left', \r\n speed = 'normal',\r\n children, \r\n ...props \r\n}: MarqueeProps) => {\r\n \r\n const speeds = {\r\n slow: \"40s\",\r\n normal: \"20s\",\r\n fast: \"10s\",\r\n };\r\n\r\n return (\r\n <div \r\n className={cn(\"group flex overflow-hidden p-2 [--gap:1rem] [gap:var(--gap)]\", className)} \r\n {...props}\r\n >\r\n <div \r\n className={cn(\r\n \"flex shrink-0 justify-around [gap:var(--gap)] min-w-full\",\r\n direction === 'left' ? \"animate-marquee\" : \"animate-marquee-reverse\",\r\n pauseOnHover && \"group-hover:[animation-play-state:paused]\"\r\n )}\r\n style={{ animationDuration: speeds[speed] }}\r\n >\r\n {children}\r\n </div>\r\n <div \r\n aria-hidden=\"true\"\r\n className={cn(\r\n \"flex shrink-0 justify-around [gap:var(--gap)] min-w-full\",\r\n direction === 'left' ? \"animate-marquee\" : \"animate-marquee-reverse\",\r\n pauseOnHover && \"group-hover:[animation-play-state:paused]\"\r\n )}\r\n style={{ animationDuration: speeds[speed] }}\r\n >\r\n {children}\r\n </div>\r\n <style>{`\r\n @keyframes marquee {\r\n from { transform: translateX(0); }\r\n to { transform: translateX(calc(-100% - var(--gap))); }\r\n }\r\n @keyframes marquee-reverse {\r\n from { transform: translateX(calc(-100% - var(--gap))); }\r\n to { transform: translateX(0); }\r\n }\r\n .animate-marquee {\r\n animation: marquee linear infinite;\r\n }\r\n .animate-marquee-reverse {\r\n animation: marquee-reverse linear infinite;\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\n\r\nconst statusDotVariants = cva(\r\n \"inline-block rounded-full\",\r\n {\r\n variants: {\r\n variant: {\r\n success: \"bg-emerald-500\",\r\n warning: \"bg-amber-500\",\r\n error: \"bg-rose-500\",\r\n info: \"bg-blue-500\",\r\n neutral: \"bg-gray-400\",\r\n },\r\n size: {\r\n sm: \"h-2 w-2\",\r\n md: \"h-2.5 w-2.5\",\r\n lg: \"h-3 w-3\",\r\n },\r\n animate: {\r\n true: \"animate-pulse\",\r\n false: \"\",\r\n }\r\n },\r\n defaultVariants: {\r\n variant: \"neutral\",\r\n size: \"md\",\r\n animate: false,\r\n }\r\n }\r\n);\r\n\r\nexport interface StatusDotProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof statusDotVariants> {}\r\n\r\nexport const StatusDot = React.forwardRef<HTMLSpanElement, StatusDotProps>(\r\n ({ className, variant, size, animate, ...props }, ref) => {\r\n return (\r\n <span\r\n ref={ref}\r\n className={cn(statusDotVariants({ variant, size, animate, className }))}\r\n {...props}\r\n />\r\n );\r\n }\r\n);\r\nStatusDot.displayName = \"StatusDot\";\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\n\r\nconst otpInputVariants = cva(\r\n \"flex items-center gap-2\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"[&>input]:h-8 [&>input]:w-8 [&>input]:text-sm\",\r\n md: \"[&>input]:h-10 [&>input]:w-10 [&>input]:text-base\",\r\n lg: \"[&>input]:h-12 [&>input]:w-12 [&>input]:text-lg\",\r\n }\r\n },\r\n defaultVariants: {\r\n size: \"md\"\r\n }\r\n }\r\n);\r\n\r\nexport interface OTPInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>, VariantProps<typeof otpInputVariants> {\r\n length?: number;\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n onComplete?: (value: string) => void;\r\n disabled?: boolean;\r\n error?: boolean;\r\n}\r\n\r\nexport const OTPInput = React.forwardRef<HTMLDivElement, OTPInputProps>(\r\n ({ className, size, length = 6, value = \"\", onChange, onComplete, disabled, error, ...props }, ref) => {\r\n const [localValue, setLocalValue] = useState<string[]>(new Array(length).fill(\"\"));\r\n const inputsRef = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n const val = value.split(\"\").slice(0, length);\r\n const newVal = [...val, ...new Array(length - val.length).fill(\"\")];\r\n setLocalValue(newVal);\r\n }, [value, length]);\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>, index: number) => {\r\n const val = e.target.value;\r\n if (isNaN(Number(val))) return;\r\n\r\n const newLocalValue = [...localValue];\r\n // Take the last character if multiple (paste scenario handled separately usually, but simple here)\r\n newLocalValue[index] = val.substring(val.length - 1);\r\n \r\n setLocalValue(newLocalValue);\r\n const stringValue = newLocalValue.join(\"\");\r\n onChange?.(stringValue);\r\n\r\n if (val && index < length - 1) {\r\n inputsRef.current[index + 1]?.focus();\r\n }\r\n\r\n if (stringValue.length === length) {\r\n onComplete?.(stringValue);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>, index: number) => {\r\n if (e.key === \"Backspace\" && !localValue[index] && index > 0) {\r\n inputsRef.current[index - 1]?.focus();\r\n }\r\n };\r\n\r\n const handlePaste = (e: React.ClipboardEvent) => {\r\n e.preventDefault();\r\n const pastedData = e.clipboardData.getData(\"text/plain\").slice(0, length);\r\n if (!/^\\d+$/.test(pastedData)) return;\r\n\r\n const newLocalValue = [...localValue];\r\n pastedData.split(\"\").forEach((char, i) => {\r\n newLocalValue[i] = char;\r\n });\r\n setLocalValue(newLocalValue);\r\n const stringValue = newLocalValue.join(\"\");\r\n onChange?.(stringValue);\r\n if (stringValue.length === length) onComplete?.(stringValue);\r\n inputsRef.current[Math.min(pastedData.length, length - 1)]?.focus();\r\n };\r\n\r\n return (\r\n <div ref={ref} className={cn(otpInputVariants({ size, className }))} {...props}>\r\n {localValue.map((digit, index) => (\r\n <input\r\n key={index}\r\n ref={el => inputsRef.current[index] = el}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n value={digit}\r\n disabled={disabled}\r\n onChange={(e) => handleChange(e, index)}\r\n onKeyDown={(e) => handleKeyDown(e, index)}\r\n onPaste={handlePaste}\r\n className={cn(\r\n \"rounded-2xl border bg-gray-50 text-center font-semibold transition-all duration-200\",\r\n \"focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 focus:outline-none\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n \"dark:bg-white/[0.03] dark:text-white\",\r\n error \r\n ? \"border-rose-500 text-rose-500 focus:border-rose-500 focus:ring-rose-500/20\" \r\n : \"border-gray-200 dark:border-white/10\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n );\r\n }\r\n);\r\nOTPInput.displayName = \"OTPInput\";\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { Minus, Plus } from 'lucide-react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Button } from '../button/Button';\r\n\r\nconst numberInputVariants = cva(\r\n \"flex items-center rounded-2xl border bg-gray-50 dark:bg-white/[0.03] dark:border-white/10\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-8\",\r\n md: \"h-10\",\r\n lg: \"h-12\",\r\n },\r\n error: {\r\n true: \"border-rose-500\",\r\n false: \"border-gray-200\",\r\n }\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n error: false\r\n }\r\n }\r\n);\r\n\r\nexport interface NumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'onChange'>, VariantProps<typeof numberInputVariants> {\r\n value?: number;\r\n onChange?: (value: number) => void;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n}\r\n\r\nexport const NumberInput = React.forwardRef<HTMLInputElement, NumberInputProps>(\r\n ({ className, size, error, value = 0, onChange, min = -Infinity, max = Infinity, step = 1, disabled, ...props }, ref) => {\r\n \r\n const handleDecrement = () => {\r\n if (value - step >= min) {\r\n onChange?.(value - step);\r\n }\r\n };\r\n\r\n const handleIncrement = () => {\r\n if (value + step <= max) {\r\n onChange?.(value + step);\r\n }\r\n };\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const val = parseFloat(e.target.value);\r\n if (!isNaN(val)) {\r\n onChange?.(val);\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(numberInputVariants({ size, error, className }))}>\r\n <button\r\n type=\"button\"\r\n onClick={handleDecrement}\r\n disabled={disabled || value <= min}\r\n className=\"flex h-full items-center justify-center px-3 text-gray-500 hover:text-gray-900 disabled:opacity-50 dark:text-white/50 dark:hover:text-white\"\r\n >\r\n <Minus className=\"h-3.5 w-3.5\" />\r\n </button>\r\n \r\n <div className=\"h-full w-px bg-gray-200 dark:bg-white/[0.06]\" />\r\n \r\n <input\r\n ref={ref}\r\n type=\"number\"\r\n value={value}\r\n onChange={handleChange}\r\n disabled={disabled}\r\n className=\"h-full w-full min-w-[3rem] bg-transparent text-center text-sm font-medium text-gray-900 focus:outline-none dark:text-white\"\r\n {...props}\r\n />\r\n \r\n <div className=\"h-full w-px bg-gray-200 dark:bg-white/[0.06]\" />\r\n \r\n <button\r\n type=\"button\"\r\n onClick={handleIncrement}\r\n disabled={disabled || value >= max}\r\n className=\"flex h-full items-center justify-center px-3 text-gray-500 hover:text-gray-900 disabled:opacity-50 dark:text-white/50 dark:hover:text-white\"\r\n >\r\n <Plus className=\"h-3.5 w-3.5\" />\r\n </button>\r\n </div>\r\n );\r\n }\r\n);\r\nNumberInput.displayName = \"NumberInput\";\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\n\r\nconst toggleGroupVariants = cva(\r\n \"inline-flex items-center rounded-2xl border border-gray-200 bg-gray-50 p-1 dark:border-white/10 dark:bg-white/[0.03]\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"h-8\",\r\n md: \"h-10\",\r\n lg: \"h-12\",\r\n },\r\n fullWidth: {\r\n true: \"w-full flex\",\r\n false: \"\",\r\n }\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n fullWidth: false\r\n }\r\n }\r\n);\r\n\r\nconst toggleItemVariants = cva(\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-2xl px-3 py-1.5 text-sm font-medium ring-offset-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300\",\r\n {\r\n variants: {\r\n selected: {\r\n true: \"bg-white text-gray-950 shadow-sm dark:bg-gray-800 dark:text-gray-50\",\r\n false: \"text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-50\",\r\n },\r\n fullWidth: {\r\n true: \"flex-1\",\r\n false: \"\",\r\n }\r\n },\r\n defaultVariants: {\r\n selected: false,\r\n fullWidth: false\r\n }\r\n }\r\n);\r\n\r\nexport interface ToggleGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>, VariantProps<typeof toggleGroupVariants> {\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n options: { label: string; value: string; icon?: React.ReactNode }[];\r\n}\r\n\r\nexport const ToggleGroup = React.forwardRef<HTMLDivElement, ToggleGroupProps>(\r\n ({ className, size, fullWidth, value, onChange, options, ...props }, ref) => {\r\n return (\r\n <div ref={ref} className={cn(toggleGroupVariants({ size, fullWidth, className }))} {...props}>\r\n {options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n onClick={() => onChange?.(option.value)}\r\n className={cn(toggleItemVariants({ selected: value === option.value, fullWidth }))}\r\n >\r\n {option.icon && <span className=\"mr-2\">{option.icon}</span>}\r\n {option.label}\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n }\r\n);\r\nToggleGroup.displayName = \"ToggleGroup\";\r\n","import React, { useState } from 'react';\r\nimport { Star } from 'lucide-react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\r\n max?: number;\r\n value?: number;\r\n onChange?: (value: number) => void;\r\n readOnly?: boolean;\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nexport const Rating = React.forwardRef<HTMLDivElement, RatingProps>(\r\n ({ className, max = 5, value = 0, onChange, readOnly = false, size = 'md', ...props }, ref) => {\r\n const [hoverValue, setHoverValue] = useState<number | null>(null);\r\n\r\n const sizes = {\r\n sm: \"h-4 w-4\",\r\n md: \"h-5 w-5\",\r\n lg: \"h-6 w-6\",\r\n };\r\n\r\n return (\r\n <div ref={ref} className={cn(\"flex items-center gap-1\", className)} {...props}>\r\n {Array.from({ length: max }).map((_, i) => {\r\n const index = i + 1;\r\n const isFilled = (hoverValue !== null ? hoverValue : value) >= index;\r\n \r\n return (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n disabled={readOnly}\r\n onClick={() => onChange?.(index)}\r\n onMouseEnter={() => !readOnly && setHoverValue(index)}\r\n onMouseLeave={() => !readOnly && setHoverValue(null)}\r\n className={cn(\r\n \"transition-transform hover:scale-110 focus:outline-none\",\r\n readOnly && \"cursor-default hover:scale-100\"\r\n )}\r\n >\r\n <Star\r\n className={cn(\r\n sizes[size],\r\n \"transition-colors duration-200\",\r\n isFilled \r\n ? \"fill-amber-400 text-amber-400\" \r\n : \"fill-transparent text-gray-300 dark:text-white/20\"\r\n )}\r\n />\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n }\r\n);\r\nRating.displayName = \"Rating\";\r\n","import React from 'react';\r\nimport { Check } from 'lucide-react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface StepperProps {\r\n steps: { title: string; description?: string }[];\r\n currentStep: number;\r\n className?: string;\r\n onStepClick?: (step: number) => void;\r\n}\r\n\r\nexport const Stepper = ({ steps, currentStep, className, onStepClick }: StepperProps) => {\r\n return (\r\n <div className={cn(\"flex w-full flex-col gap-4 md:flex-row\", className)}>\r\n {steps.map((step, index) => {\r\n const isCompleted = currentStep > index;\r\n const isCurrent = currentStep === index;\r\n const isClickable = !!onStepClick;\r\n\r\n return (\r\n <div \r\n key={index} \r\n className={cn(\r\n \"flex flex-1 flex-col gap-2 md:flex-row md:items-center md:gap-4\",\r\n isClickable && \"cursor-pointer\"\r\n )}\r\n onClick={() => isClickable && onStepClick(index)}\r\n >\r\n <div className=\"flex items-center gap-4 md:flex-col md:gap-2\">\r\n <div className=\"flex items-center\">\r\n <div\r\n className={cn(\r\n \"flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors\",\r\n isCompleted\r\n ? \"border-blue-600 bg-blue-600 text-white dark:border-blue-500 dark:bg-blue-500\"\r\n : isCurrent\r\n ? \"border-blue-600 text-blue-600 dark:border-blue-500 dark:text-blue-500\"\r\n : \"border-gray-300 text-gray-500 dark:border-white/20 dark:text-white/40\"\r\n )}\r\n >\r\n {isCompleted ? <Check className=\"h-4 w-4\" /> : index + 1}\r\n </div>\r\n {/* Connector Line (Mobile: Right of circle, Desktop: Right of content) */}\r\n {index < steps.length - 1 && (\r\n <div \r\n className={cn(\r\n \"ml-4 h-px flex-1 bg-gray-200 md:hidden dark:bg-white/[0.03]\",\r\n isCompleted && \"bg-blue-600 dark:bg-blue-500\"\r\n )} \r\n />\r\n )}\r\n </div>\r\n \r\n <div className=\"flex flex-col\">\r\n <span className={cn(\r\n \"text-sm font-medium\",\r\n isCurrent || isCompleted ? \"text-gray-900 dark:text-white\" : \"text-gray-500 dark:text-white/50\"\r\n )}>\r\n {step.title}\r\n </span>\r\n {step.description && (\r\n <span className=\"text-xs text-gray-500 dark:text-white/40 hidden md:block\">\r\n {step.description}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Connector Line (Desktop) */}\r\n {index < steps.length - 1 && (\r\n <div \r\n className={cn(\r\n \"hidden h-px flex-1 bg-gray-200 md:block dark:bg-white/[0.03]\",\r\n isCompleted && \"bg-blue-600 dark:bg-blue-500\"\r\n )} \r\n />\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface SpotlightProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n size?: number;\r\n color?: string;\r\n}\r\n\r\nexport const Spotlight = ({ \r\n children, \r\n className, \r\n size = 300, \r\n color = \"rgba(255, 255, 255, 0.1)\",\r\n ...props \r\n}: SpotlightProps) => {\r\n const divRef = useRef<HTMLDivElement>(null);\r\n\r\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const el = divRef.current;\r\n if (!el) return;\r\n\r\n const rect = el.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n el.style.setProperty('--mouse-x', `${x}px`);\r\n el.style.setProperty('--mouse-y', `${y}px`);\r\n };\r\n\r\n const handleMouseEnter = () => {\r\n divRef.current?.style.setProperty('--opacity', '1');\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n divRef.current?.style.setProperty('--opacity', '0');\r\n };\r\n\r\n return (\r\n <div\r\n ref={divRef}\r\n onMouseMove={handleMouseMove}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n className={cn(\r\n \"relative overflow-hidden rounded-2xl border border-gray-200 bg-white dark:border-white/10 dark:bg-black\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div\r\n className=\"pointer-events-none absolute -inset-px transition-opacity duration-300\"\r\n style={{\r\n opacity: 'var(--opacity, 0)',\r\n background: `radial-gradient(${size}px circle at var(--mouse-x, center) var(--mouse-y, center), ${color}, transparent 80%)`,\r\n }}\r\n />\r\n <div className=\"relative h-full\">{children}</div>\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\nimport { Sparkles, Paperclip, ArrowUp, Square, Mic, X, File } from 'lucide-react';\r\nimport { Button } from '../button/Button';\r\n\r\nconst aiPromptInputVariants = cva(\r\n \"relative flex w-full flex-col rounded-2xl border transition-all duration-200 focus-within:ring-4\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-white border-gray-200 shadow-sm focus-within:border-purple-500/50 focus-within:ring-purple-500/10 dark:bg-white/[0.03] dark:border-white/10 dark:shadow-none\",\r\n ghost: \"bg-transparent border-transparent shadow-none focus-within:bg-white/50 dark:focus-within:bg-white/5\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport interface Attachment {\r\n id: string;\r\n name: string;\r\n type?: string;\r\n url?: string;\r\n}\r\n\r\nexport interface AIPromptInputProps \r\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'onSubmit'>,\r\n VariantProps<typeof aiPromptInputVariants> {\r\n /** Callback fired when the user submits the prompt (Enter or Click) */\r\n onSubmit?: (value: string) => void;\r\n /** Whether the AI is currently generating a response */\r\n isGenerating?: boolean;\r\n /** Callback fired when the attach button is clicked. If onFilesSelected is provided, this is ignored. */\r\n onAttach?: () => void;\r\n /** Callback fired when files are selected via the built-in file picker */\r\n onFilesSelected?: (files: FileList) => void;\r\n /** Callback fired when the stop button is clicked */\r\n onStop?: () => void;\r\n /** Callback fired when the microphone button is clicked */\r\n onMic?: () => void;\r\n /** Maximum number of characters allowed */\r\n maxLength?: number;\r\n /** Custom footer content to render below the input */\r\n footer?: React.ReactNode;\r\n /** List of attached files to display */\r\n attachments?: Attachment[];\r\n /** Callback fired when an attachment is removed */\r\n onRemoveAttachment?: (attachmentId: string) => void;\r\n /** Accepted file types for the built-in file picker */\r\n accept?: string;\r\n /** Whether to allow multiple files in the built-in file picker */\r\n multiple?: boolean;\r\n}\r\n\r\n/**\r\n * A specialized input component for AI prompts with support for attachments, \r\n * voice input, and generation control.\r\n */\r\nexport const AIPromptInput = React.forwardRef<HTMLTextAreaElement, AIPromptInputProps>(\r\n ({ \r\n className, \r\n variant,\r\n onSubmit, \r\n isGenerating, \r\n onAttach, \r\n onFilesSelected,\r\n onStop,\r\n onMic,\r\n maxLength,\r\n footer,\r\n attachments,\r\n onRemoveAttachment,\r\n accept,\r\n multiple,\r\n placeholder = \"Ask AI anything...\", \r\n value: controlledValue,\r\n onChange,\r\n ...props \r\n }, ref) => {\r\n const [internalValue, setInternalValue] = useState('');\r\n const isControlled = controlledValue !== undefined;\r\n const value = isControlled ? (controlledValue as string) : internalValue;\r\n \r\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\r\n const fileInputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n const adjustHeight = () => {\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = 'auto';\r\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n adjustHeight();\r\n }, [value]);\r\n\r\n const handleInput = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n const newValue = e.target.value;\r\n if (maxLength && newValue.length > maxLength) return;\r\n \r\n if (!isControlled) {\r\n setInternalValue(newValue);\r\n }\r\n onChange?.(e);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\r\n if (e.key === 'Enter' && !e.shiftKey) {\r\n e.preventDefault();\r\n if (value.trim() && !isGenerating) {\r\n onSubmit?.(value);\r\n if (!isControlled) setInternalValue('');\r\n }\r\n }\r\n props.onKeyDown?.(e);\r\n };\r\n\r\n const handleSubmit = () => {\r\n if (isGenerating && onStop) {\r\n onStop();\r\n } else if (value.trim()) {\r\n onSubmit?.(value);\r\n if (!isControlled) setInternalValue('');\r\n }\r\n };\r\n\r\n const handleAttachClick = () => {\r\n if (onFilesSelected && fileInputRef.current) {\r\n fileInputRef.current.click();\r\n } else {\r\n onAttach?.();\r\n }\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n if (e.target.files && e.target.files.length > 0) {\r\n onFilesSelected?.(e.target.files);\r\n }\r\n // Reset value to allow selecting the same file again\r\n if (fileInputRef.current) {\r\n fileInputRef.current.value = '';\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(aiPromptInputVariants({ variant, className }))}>\r\n {/* Hidden File Input */}\r\n <input\r\n type=\"file\"\r\n ref={fileInputRef}\r\n className=\"hidden\"\r\n onChange={handleFileChange}\r\n accept={accept}\r\n multiple={multiple}\r\n />\r\n\r\n {/* Attachments Area */}\r\n {attachments && attachments.length > 0 && (\r\n <div className=\"flex flex-wrap gap-2 px-4 pt-4\">\r\n {attachments.map((att) => (\r\n <div \r\n key={att.id} \r\n className=\"group relative flex items-center gap-2 rounded-xl border border-gray-200 bg-gray-50 px-3 py-1.5 text-sm transition-colors hover:bg-gray-100 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/[0.06]\"\r\n >\r\n <div className=\"flex h-5 w-5 items-center justify-center rounded-lg bg-white dark:bg-white/[0.06]\">\r\n <File className=\"h-3 w-3 text-purple-500\" />\r\n </div>\r\n <span className=\"max-w-[120px] truncate text-gray-700 dark:text-gray-300\">\r\n {att.name}\r\n </span>\r\n <button \r\n onClick={() => onRemoveAttachment?.(att.id)}\r\n className=\"ml-1 rounded-full p-0.5 text-gray-400 opacity-0 transition-all hover:bg-gray-200 hover:text-gray-600 group-hover:opacity-100 dark:hover:bg-white/[0.06] dark:hover:text-white\"\r\n type=\"button\"\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n <textarea\r\n ref={(node) => {\r\n textareaRef.current = node;\r\n if (typeof ref === 'function') ref(node);\r\n else if (ref) (ref as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\r\n }}\r\n value={value}\r\n onChange={handleInput}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n rows={1}\r\n className={cn(\r\n \"w-full resize-none bg-transparent px-4 py-4 text-base outline-none max-h-[200px]\",\r\n \"text-gray-900 placeholder:text-gray-400\",\r\n \"dark:text-white dark:placeholder:text-white/40\"\r\n )}\r\n disabled={isGenerating && !onStop}\r\n {...props}\r\n />\r\n \r\n <div className=\"flex items-center justify-between px-2 pb-2\">\r\n <div className=\"flex items-center gap-1\">\r\n <Button \r\n variant=\"ghost\" \r\n size=\"icon\" \r\n className=\"text-gray-400 hover:text-gray-600 dark:text-white/40 dark:hover:text-white\"\r\n onClick={handleAttachClick}\r\n type=\"button\"\r\n title=\"Attach file\"\r\n >\r\n <Paperclip className=\"h-5 w-5\" />\r\n </Button>\r\n \r\n {onMic && (\r\n <Button \r\n variant=\"ghost\" \r\n size=\"icon\" \r\n className=\"text-gray-400 hover:text-gray-600 dark:text-white/40 dark:hover:text-white\"\r\n onClick={onMic}\r\n type=\"button\"\r\n title=\"Use microphone\"\r\n >\r\n <Mic className=\"h-5 w-5\" />\r\n </Button>\r\n )}\r\n </div>\r\n\r\n <div className=\"flex items-center gap-3\">\r\n {maxLength && (\r\n <span className=\"text-xs text-gray-400 dark:text-white/30\">\r\n {value.length}/{maxLength}\r\n </span>\r\n )}\r\n\r\n <Button\r\n size=\"icon\"\r\n disabled={(!value.trim() && !isGenerating) || (isGenerating && !onStop)}\r\n onClick={handleSubmit}\r\n className={cn(\r\n \"h-8 w-8 rounded-full transition-all duration-200\",\r\n (value.trim() || isGenerating)\r\n ? \"bg-purple-600 text-white hover:bg-purple-500 shadow-lg shadow-purple-500/25\" \r\n : \"bg-gray-100 text-gray-400 dark:bg-white/[0.06] dark:text-white/20\"\r\n )}\r\n >\r\n {isGenerating ? (\r\n onStop ? (\r\n <Square className=\"h-3 w-3 fill-current\" />\r\n ) : (\r\n <Sparkles className=\"h-4 w-4 animate-pulse\" />\r\n )\r\n ) : (\r\n <ArrowUp className=\"h-4 w-4\" />\r\n )}\r\n </Button>\r\n </div>\r\n </div>\r\n \r\n {footer && (\r\n <div className=\"border-t border-gray-100 px-4 py-2 text-xs text-gray-400 dark:border-white/5 dark:text-white/30\">\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nAIPromptInput.displayName = 'AIPromptInput';\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\nimport { Copy, RefreshCw, ThumbsUp, ThumbsDown, Sparkles, Share, Edit, ExternalLink } from 'lucide-react';\r\nimport { Button } from '../button/Button';\r\n\r\nconst aiResponseVariants = cva(\r\n \"group relative overflow-hidden rounded-2xl border transition-all duration-200\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-gray-50 border-gray-200 dark:bg-white/[0.02] dark:border-white/10\",\r\n ghost: \"bg-transparent border-transparent\",\r\n outline: \"bg-transparent border-gray-200 dark:border-white/10\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n);\r\n\r\nexport interface AIResponseSource {\r\n title: string;\r\n url: string;\r\n}\r\n\r\nexport interface AIResponseProps \r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof aiResponseVariants> {\r\n /** The content of the response */\r\n children: React.ReactNode;\r\n /** Callback fired when the copy button is clicked */\r\n onCopy?: () => void;\r\n /** Callback fired when the regenerate button is clicked */\r\n onRegenerate?: () => void;\r\n /** Callback fired when feedback buttons are clicked */\r\n onFeedback?: (type: 'up' | 'down') => void;\r\n /** Callback fired when the share button is clicked */\r\n onShare?: () => void;\r\n /** Callback fired when the edit button is clicked */\r\n onEdit?: () => void;\r\n /** Timestamp string to display (e.g., \"Just now\", \"2 mins ago\") */\r\n timestamp?: string;\r\n /** List of sources/citations to display */\r\n sources?: AIResponseSource[];\r\n /** Name of the model used (e.g., \"GPT-4\") */\r\n model?: string;\r\n /** Usage information (e.g., \"245 tokens\") */\r\n usage?: string | number;\r\n}\r\n\r\n/**\r\n * A container component for displaying AI-generated responses with \r\n * built-in actions for copying, regenerating, and providing feedback.\r\n */\r\nexport const AIResponse = React.forwardRef<HTMLDivElement, AIResponseProps>(\r\n ({ \r\n className, \r\n variant,\r\n children, \r\n onCopy, \r\n onRegenerate, \r\n onFeedback, \r\n onShare, \r\n onEdit,\r\n timestamp,\r\n sources,\r\n model,\r\n usage,\r\n ...props \r\n }, ref) => {\r\n return (\r\n <div \r\n ref={ref}\r\n className={cn(aiResponseVariants({ variant, className }))}\r\n {...props}\r\n >\r\n {/* Header / Icon */}\r\n <div className=\"absolute left-4 top-4 flex items-center gap-3\">\r\n <div className=\"flex h-6 w-6 items-center justify-center rounded-full bg-gradient-to-br from-purple-500 to-blue-500 shadow-lg shadow-purple-500/20\">\r\n <Sparkles className=\"h-3.5 w-3.5 text-white\" />\r\n </div>\r\n {timestamp && (\r\n <span className=\"text-xs font-medium text-gray-400 dark:text-white/30\">\r\n {timestamp}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {/* Content */}\r\n <div className=\"pl-14 pr-4 py-4\">\r\n <div className=\"prose prose-sm dark:prose-invert max-w-none text-gray-700 dark:text-gray-300\">\r\n {children}\r\n </div>\r\n\r\n {/* Sources */}\r\n {sources && sources.length > 0 && (\r\n <div className=\"mt-4 flex flex-wrap gap-2\">\r\n {sources.map((source, index) => (\r\n <a\r\n key={index}\r\n href={source.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className={cn(\r\n \"flex items-center gap-1.5 rounded-full border px-3 py-1 text-xs transition-colors\",\r\n \"border-gray-200 bg-white text-gray-600 hover:bg-gray-50\",\r\n \"dark:border-white/10 dark:bg-white/[0.03] dark:text-white/60 dark:hover:bg-white/[0.06]\"\r\n )}\r\n >\r\n <span className=\"max-w-[150px] truncate\">{source.title}</span>\r\n <ExternalLink className=\"h-3 w-3 opacity-50\" />\r\n </a>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Actions Footer */}\r\n <div className=\"flex items-center justify-between border-t border-gray-200 bg-white/50 px-2 py-1.5 backdrop-blur dark:border-white/5 dark:bg-white/[0.02]\">\r\n \r\n {/* Meta Info (Model/Usage) */}\r\n <div className=\"flex items-center gap-3 px-2 text-[10px] font-medium text-gray-400 dark:text-white/20\">\r\n {model && <span>{model}</span>}\r\n {usage && <span>{usage}</span>}\r\n </div>\r\n\r\n {/* Action Buttons */}\r\n <div className=\"flex items-center gap-1\">\r\n <Button \r\n variant=\"ghost\" \r\n size=\"sm\" \r\n className=\"h-7 px-2 text-xs text-gray-500 hover:text-gray-900 dark:text-white/40 dark:hover:text-white\"\r\n onClick={onCopy}\r\n >\r\n <Copy className=\"mr-1.5 h-3.5 w-3.5\" />\r\n Copy\r\n </Button>\r\n\r\n {onShare && (\r\n <Button \r\n variant=\"ghost\" \r\n size=\"icon\" \r\n className=\"h-7 w-7 text-gray-500 hover:text-gray-900 dark:text-white/40 dark:hover:text-white\"\r\n onClick={onShare}\r\n title=\"Share\"\r\n >\r\n <Share className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n )}\r\n\r\n {onEdit && (\r\n <Button \r\n variant=\"ghost\" \r\n size=\"icon\" \r\n className=\"h-7 w-7 text-gray-500 hover:text-gray-900 dark:text-white/40 dark:hover:text-white\"\r\n onClick={onEdit}\r\n title=\"Edit\"\r\n >\r\n <Edit className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n )}\r\n \r\n <div className=\"mx-1 h-3 w-px bg-gray-200 dark:bg-white/10\" />\r\n \r\n <Button \r\n variant=\"ghost\" \r\n size=\"icon\" \r\n className=\"h-7 w-7 text-gray-500 hover:text-gray-900 dark:text-white/40 dark:hover:text-white\"\r\n onClick={onRegenerate}\r\n title=\"Regenerate\"\r\n >\r\n <RefreshCw className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n \r\n <Button \r\n variant=\"ghost\" \r\n size=\"icon\" \r\n className=\"h-7 w-7 text-gray-500 hover:text-gray-900 dark:text-white/40 dark:hover:text-white\"\r\n onClick={() => onFeedback?.('up')}\r\n title=\"Helpful\"\r\n >\r\n <ThumbsUp className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n \r\n <Button \r\n variant=\"ghost\" \r\n size=\"icon\" \r\n className=\"h-7 w-7 text-gray-500 hover:text-gray-900 dark:text-white/40 dark:hover:text-white\"\r\n onClick={() => onFeedback?.('down')}\r\n title=\"Not helpful\"\r\n >\r\n <ThumbsDown className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nAIResponse.displayName = 'AIResponse';\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface ChatLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function ChatLayout({ children, className, ...props }: ChatLayoutProps) {\r\n return (\r\n <div \r\n className={cn(\r\n \"flex h-[800px] w-full overflow-hidden rounded-3xl border border-gray-200 dark:border-white/10 bg-white dark:bg-black/40 backdrop-blur-xl shadow-2xl\",\r\n className\r\n )} \r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Search, Plus } from 'lucide-react';\r\nimport type { Conversation } from './types';\r\nimport { Avatar } from '../data-display/Avatar';\r\nimport { ScrollArea } from '../data-display/ScrollArea';\r\n\r\ninterface ChatSidebarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\r\n conversations: Conversation[];\r\n activeId?: string;\r\n onSelect?: (id: string) => void;\r\n onNewChat?: () => void;\r\n}\r\n\r\nexport function ChatSidebar({ \r\n conversations, \r\n activeId, \r\n onSelect, \r\n onNewChat,\r\n className,\r\n ...props \r\n}: ChatSidebarProps) {\r\n return (\r\n <div className={cn(\"flex w-80 flex-col border-r border-gray-200 dark:border-white/10 bg-gray-50/50 dark:bg-white/[0.02]\", className)} {...props}>\r\n <div className=\"p-4 space-y-4\">\r\n <div className=\"flex items-center justify-between\">\r\n <h2 className=\"text-xl font-bold text-gray-900 dark:text-white\">Messages</h2>\r\n <button \r\n onClick={onNewChat}\r\n className=\"p-2 rounded-full hover:bg-gray-200 dark:hover:bg-white/[0.06] text-gray-600 dark:text-white/60 transition-colors\"\r\n >\r\n <Plus className=\"h-5 w-5\" />\r\n </button>\r\n </div>\r\n \r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400\" />\r\n <input \r\n type=\"text\" \r\n placeholder=\"Search messages...\" \r\n className=\"w-full h-10 pl-9 pr-4 rounded-2xl bg-white dark:bg-white/[0.03] border border-gray-200 dark:border-white/10 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500/50 transition-all placeholder:text-gray-400\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <ScrollArea className=\"flex-1\">\r\n <div className=\"p-2 space-y-1\">\r\n {conversations.map((chat) => (\r\n <button\r\n key={chat.id}\r\n onClick={() => onSelect?.(chat.id)}\r\n className={cn(\r\n \"w-full flex items-center gap-3 p-3 rounded-2xl transition-all text-left group\",\r\n activeId === chat.id \r\n ? \"bg-blue-500/10 dark:bg-white/[0.06] shadow-[0_0_15px_rgba(59,130,246,0.1)] dark:shadow-[0_0_15px_rgba(255,255,255,0.05)]\" \r\n : \"hover:bg-gray-100 dark:hover:bg-white/[0.03]\"\r\n )}\r\n >\r\n <div className=\"relative\">\r\n <Avatar src={chat.user.avatar} alt={chat.user.name} fallback={chat.user.name[0]} />\r\n {chat.user.status === 'online' && (\r\n <span className=\"absolute bottom-0 right-0 h-3 w-3 rounded-full bg-green-500 border-2 border-white dark:border-black\" />\r\n )}\r\n </div>\r\n \r\n <div className=\"flex-1 min-w-0\">\r\n <div className=\"flex items-center justify-between mb-0.5\">\r\n <span className={cn(\r\n \"font-medium truncate\",\r\n activeId === chat.id ? \"text-blue-600 dark:text-white\" : \"text-gray-900 dark:text-white/90\"\r\n )}>\r\n {chat.user.name}\r\n </span>\r\n {chat.lastMessage && (\r\n <span className=\"text-xs text-gray-400 whitespace-nowrap ml-2\">\r\n {chat.lastMessage.timestamp.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}\r\n </span>\r\n )}\r\n </div>\r\n <div className=\"flex items-center justify-between\">\r\n <p className={cn(\r\n \"text-sm truncate pr-2\",\r\n activeId === chat.id ? \"text-blue-600/80 dark:text-white/70\" : \"text-gray-500 dark:text-white/50\",\r\n chat.isTyping && \"text-blue-500 italic\"\r\n )}>\r\n {chat.isTyping ? 'Typing...' : chat.lastMessage?.content}\r\n </p>\r\n {chat.unreadCount ? (\r\n <span className=\"flex h-5 min-w-[1.25rem] items-center justify-center rounded-full bg-blue-500 px-1.5 text-[10px] font-bold text-white\">\r\n {chat.unreadCount}\r\n </span>\r\n ) : null}\r\n </div>\r\n </div>\r\n </button>\r\n ))}\r\n </div>\r\n </ScrollArea>\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport type { User } from './types';\r\nimport { Avatar } from '../data-display/Avatar';\r\nimport { Phone, Video, MoreVertical, ArrowLeft } from 'lucide-react';\r\n\r\ninterface ChatHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n user: User;\r\n onBack?: () => void;\r\n onInfo?: () => void;\r\n}\r\n\r\nexport function ChatHeader({ user, onBack, onInfo, className, ...props }: ChatHeaderProps) {\r\n return (\r\n <div \r\n className={cn(\r\n \"flex h-16 items-center justify-between border-b border-gray-200 dark:border-white/10 bg-white/80 dark:bg-black/40 backdrop-blur px-4 sticky top-0 z-10\",\r\n className\r\n )} \r\n {...props}\r\n >\r\n <div className=\"flex items-center gap-3\">\r\n {onBack && (\r\n <button onClick={onBack} className=\"md:hidden p-2 -ml-2 rounded-full hover:bg-gray-100 dark:hover:bg-white/[0.06]\">\r\n <ArrowLeft className=\"h-5 w-5 text-gray-600 dark:text-white/70\" />\r\n </button>\r\n )}\r\n \r\n <div className=\"relative cursor-pointer\" onClick={onInfo}>\r\n <Avatar src={user.avatar} alt={user.name} fallback={user.name[0]} />\r\n {user.status === 'online' && (\r\n <span className=\"absolute bottom-0 right-0 h-3 w-3 rounded-full bg-green-500 border-2 border-white dark:border-black\" />\r\n )}\r\n </div>\r\n \r\n <div className=\"cursor-pointer\" onClick={onInfo}>\r\n <h3 className=\"font-semibold text-gray-900 dark:text-white leading-none mb-1\">{user.name}</h3>\r\n <p className=\"text-xs text-gray-500 dark:text-white/50\">\r\n {user.status === 'online' ? 'Online' : `Last seen ${user.lastSeen?.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}`}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-1\">\r\n <button className=\"p-2 rounded-full hover:bg-gray-100 dark:hover:bg-white/[0.06] text-gray-600 dark:text-white/60 transition-colors\">\r\n <Phone className=\"h-5 w-5\" />\r\n </button>\r\n <button className=\"p-2 rounded-full hover:bg-gray-100 dark:hover:bg-white/[0.06] text-gray-600 dark:text-white/60 transition-colors\">\r\n <Video className=\"h-5 w-5\" />\r\n </button>\r\n <button \r\n onClick={onInfo}\r\n className=\"p-2 rounded-full hover:bg-gray-100 dark:hover:bg-white/[0.06] text-gray-600 dark:text-white/60 transition-colors\"\r\n >\r\n <MoreVertical className=\"h-5 w-5\" />\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { Slot } from '../../utils/Slot';\r\nimport { cn } from '../../utils/cn';\r\nimport { useInView } from '../../hooks/useInView';\r\n\r\nconst motionVariants = cva(\r\n 'transition-all duration-700 ease-out', \r\n {\r\n variants: {\r\n preset: {\r\n 'fade': 'opacity-0 translate-y-4',\r\n 'spring': 'opacity-0 scale-95 translate-y-4',\r\n 'slide-right': 'opacity-0 -translate-x-8',\r\n 'slide-left': 'opacity-0 translate-x-8',\r\n 'blur': 'opacity-0 blur-sm scale-105',\r\n '3d-flip': 'opacity-0 rotate-x-90',\r\n },\r\n visibleState: {\r\n 'fade': 'opacity-100 translate-y-0',\r\n 'spring': 'opacity-100 scale-100 translate-y-0 animate-enter-spring',\r\n 'slide-right': 'opacity-100 translate-x-0',\r\n 'slide-left': 'opacity-100 translate-x-0',\r\n 'blur': 'opacity-100 blur-0 scale-100',\r\n '3d-flip': 'opacity-100 rotate-x-0',\r\n }\r\n },\r\n defaultVariants: {\r\n preset: 'spring',\r\n },\r\n }\r\n);\r\n\r\nexport interface MotionProps extends React.HTMLAttributes<HTMLDivElement>, Omit<VariantProps<typeof motionVariants>, 'visibleState'> {\r\n asChild?: boolean;\r\n viewport?: boolean; // If true, animates only when entering the viewport\r\n visible?: boolean; // Manual control override\r\n delay?: number; // Delay in ms\r\n once?: boolean; // If true, animates only once\r\n}\r\n\r\nexport function Motion({ \r\n className, \r\n preset = 'spring', \r\n viewport = true, \r\n visible,\r\n delay = 0,\r\n once = true,\r\n asChild = false,\r\n children, \r\n style,\r\n ...props \r\n}: MotionProps) {\r\n const { ref, isInView, hasAnimated } = useInView({ threshold: 0.1, enabled: viewport && visible === undefined });\r\n \r\n // Determine if we should show the final state\r\n const internalShow = viewport ? (once ? hasAnimated : isInView) : true;\r\n const shouldShow = visible !== undefined ? visible : internalShow;\r\n\r\n // We manually construct the class string to ensure the correct preset is applied in the visible state\r\n // This is a bit of a hack because CVA doesn't support \"conditional variants\" based on external state easily\r\n // without defining a new variant like \"state: visible\".\r\n // But here we want to map 'preset' to 'visible' styles when shouldShow is true.\r\n \r\n // Let's simplify:\r\n // If shouldShow is true, we want the styles from `visible: [preset]`.\r\n // If shouldShow is false, we want the styles from `preset: [preset]`.\r\n \r\n // However, CVA `visible` variant keys match `preset` keys.\r\n // So we can just pass `visible: shouldShow ? preset : null`? No, that would remove the base styles.\r\n \r\n // Correct approach with the current CVA definition:\r\n // The `preset` variant defines the INITIAL state (hidden).\r\n // The `visible` variant defines the FINAL state (shown).\r\n // We need to apply `preset` ALWAYS (as base), and then override with `visible` when shown?\r\n // No, `preset` has opacity-0. If we keep it, we need `visible` to have opacity-100 and override it.\r\n // Tailwind classes override based on order in CSS, but here they are utility classes.\r\n // `opacity-100` usually overrides `opacity-0` if generated later, but `cn` merges them.\r\n \r\n // Let's try to be cleaner:\r\n // We will use the `preset` prop to get the initial state classes.\r\n // And we will manually append the visible classes if `shouldShow` is true.\r\n \r\n const initialClasses = motionVariants({ preset });\r\n const visibleClasses = shouldShow ? motionVariants({ visibleState: preset as any }) : '';\r\n \r\n // If visibleClasses is applied, we want it to win over initialClasses.\r\n // `cn` (tailwind-merge) handles this conflict resolution perfectly.\r\n \r\n const Comp = asChild ? Slot : 'div';\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n className={cn(\r\n initialClasses,\r\n visibleClasses,\r\n className\r\n )}\r\n style={{ \r\n transitionDelay: `${delay}ms`,\r\n willChange: 'transform, opacity',\r\n ...style \r\n }}\r\n {...props}\r\n >\r\n {children}\r\n </Comp>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport type { Message } from './types';\r\nimport { Check, CheckCheck, MoreHorizontal, Reply, Trash2, Copy, Smile } from 'lucide-react';\r\nimport { Motion } from '../feedback/Motion';\r\nimport { \r\n DropdownMenu, \r\n DropdownMenuTrigger, \r\n DropdownMenuContent, \r\n DropdownMenuItem \r\n} from '../overlay/DropdownMenu';\r\nimport { Image } from '../data-display/Image';\r\n\r\ninterface MessageBubbleProps {\r\n message: Message;\r\n isOwn: boolean;\r\n showAvatar?: boolean;\r\n showStatus?: boolean;\r\n className?: string;\r\n onReply?: (message: Message) => void;\r\n onReact?: (message: Message, emoji: string) => void;\r\n onDelete?: (message: Message) => void;\r\n}\r\n\r\nexport function MessageBubble({ \r\n message, \r\n isOwn, \r\n showAvatar, \r\n showStatus = true, \r\n className,\r\n onReply,\r\n onReact,\r\n onDelete\r\n}: MessageBubbleProps) {\r\n return (\r\n <Motion \r\n preset=\"spring\"\r\n className={cn(\r\n \"flex w-full gap-2 mb-1 group relative\",\r\n isOwn ? \"justify-end\" : \"justify-start\",\r\n className\r\n )}\r\n >\r\n {/* Actions Menu (Hover) */}\r\n <div className={cn(\r\n \"absolute top-2 opacity-0 group-hover:opacity-100 transition-opacity z-10\",\r\n isOwn ? \"left-0 -translate-x-full pr-2\" : \"right-0 translate-x-full pl-2\"\r\n )}>\r\n <DropdownMenu>\r\n <DropdownMenuTrigger className=\"p-1 rounded-full hover:bg-gray-100 dark:hover:bg-white/[0.06] text-gray-400\">\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align={isOwn ? \"end\" : \"start\"}>\r\n <DropdownMenuItem onClick={() => onReply?.(message)}>\r\n <Reply className=\"h-4 w-4 mr-2\" /> Reply\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => navigator.clipboard.writeText(message.content)}>\r\n <Copy className=\"h-4 w-4 mr-2\" /> Copy\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => onReact?.(message, '👍')}>\r\n <Smile className=\"h-4 w-4 mr-2\" /> React\r\n </DropdownMenuItem>\r\n {isOwn && (\r\n <DropdownMenuItem onClick={() => onDelete?.(message)} className=\"text-red-500\">\r\n <Trash2 className=\"h-4 w-4 mr-2\" /> Delete\r\n </DropdownMenuItem>\r\n )}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n </div>\r\n\r\n <div className={cn(\r\n \"relative max-w-[70%] px-4 py-2 rounded-2xl shadow-sm transition-all\",\r\n isOwn \r\n ? \"bg-blue-600 text-white rounded-tr-sm\" \r\n : \"bg-white dark:bg-white/[0.06] text-gray-900 dark:text-white rounded-tl-sm border border-gray-200 dark:border-transparent\"\r\n )}>\r\n {/* Reply Context */}\r\n {message.replyToId && (\r\n <div className={cn(\r\n \"mb-2 rounded px-2 py-1 text-xs border-l-2 opacity-80\",\r\n isOwn ? \"bg-white/[0.06] border-white/50\" : \"bg-gray-100 dark:bg-black/20 border-blue-500\"\r\n )}>\r\n Replying to message...\r\n </div>\r\n )}\r\n\r\n {/* Attachments */}\r\n {message.attachments && message.attachments.length > 0 && (\r\n <div className=\"mb-2 space-y-2\">\r\n {message.attachments.map(att => (\r\n att.type === 'image' ? (\r\n <Image \r\n key={att.id} \r\n src={att.url} \r\n alt=\"Attachment\" \r\n className=\"rounded-2xl max-h-60 object-cover w-full\"\r\n />\r\n ) : (\r\n <div key={att.id} className=\"flex items-center gap-2 p-2 rounded bg-black/5 dark:bg-white/[0.06]\">\r\n <div className=\"h-8 w-8 bg-gray-200 dark:bg-white/20 rounded flex items-center justify-center text-xs font-bold\">\r\n FILE\r\n </div>\r\n <div className=\"text-xs truncate flex-1\">{att.name || 'File'}</div>\r\n </div>\r\n )\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Content */}\r\n <div className=\"text-sm whitespace-pre-wrap break-words leading-relaxed\">\r\n {message.content}\r\n </div>\r\n\r\n {/* Metadata */}\r\n <div className={cn(\r\n \"flex items-center justify-end gap-1 mt-1 select-none\",\r\n isOwn ? \"text-blue-100\" : \"text-gray-400 dark:text-white/40\"\r\n )}>\r\n <span className=\"text-[10px]\">\r\n {message.timestamp.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}\r\n </span>\r\n {isOwn && showStatus && (\r\n <span className=\"flex items-center\">\r\n {message.status === 'read' ? (\r\n <CheckCheck className=\"h-3 w-3 text-blue-200\" />\r\n ) : message.status === 'delivered' ? (\r\n <CheckCheck className=\"h-3 w-3 text-blue-200/50\" />\r\n ) : (\r\n <Check className=\"h-3 w-3 text-blue-200/50\" />\r\n )}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {/* Reactions */}\r\n {message.reactions && Object.keys(message.reactions).length > 0 && (\r\n <div className=\"absolute -bottom-2 right-4 flex gap-1\">\r\n {Object.entries(message.reactions).map(([emoji, users]) => (\r\n <div key={emoji} className=\"bg-white dark:bg-gray-800 shadow-sm border border-gray-100 dark:border-white/10 rounded-full px-1.5 py-0.5 text-[10px] flex items-center gap-1\">\r\n <span>{emoji}</span>\r\n <span className=\"text-gray-500\">{users.length}</span>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </Motion>\r\n );\r\n}\r\n","import React, { useRef, useEffect, useState, useMemo } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport type { Message } from './types';\r\nimport { MessageBubble } from './MessageBubble';\r\nimport { ScrollArea } from '../data-display/ScrollArea';\r\nimport { MessageSquare } from 'lucide-react';\r\n\r\ninterface MessageListProps extends React.HTMLAttributes<HTMLDivElement> {\r\n messages: Message[];\r\n currentUserId: string;\r\n onReply?: (message: Message) => void;\r\n onReact?: (message: Message, emoji: string) => void;\r\n onDelete?: (message: Message) => void;\r\n onLoadMore?: () => void;\r\n hasMore?: boolean;\r\n isLoadingMore?: boolean;\r\n}\r\n\r\nexport function MessageList({ \r\n messages, \r\n currentUserId, \r\n className, \r\n onReply,\r\n onReact,\r\n onDelete,\r\n onLoadMore,\r\n hasMore,\r\n isLoadingMore,\r\n ...props \r\n}: MessageListProps) {\r\n const bottomRef = useRef<HTMLDivElement>(null);\r\n const [shouldAutoScroll, setShouldAutoScroll] = useState(true);\r\n\r\n useEffect(() => {\r\n if (shouldAutoScroll) {\r\n bottomRef.current?.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n }, [messages, shouldAutoScroll]);\r\n\r\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\r\n const target = e.currentTarget;\r\n const isAtBottom = Math.abs(target.scrollHeight - target.clientHeight - target.scrollTop) < 50;\r\n setShouldAutoScroll(isAtBottom);\r\n\r\n if (target.scrollTop === 0 && hasMore && !isLoadingMore && onLoadMore) {\r\n onLoadMore();\r\n }\r\n };\r\n\r\n // Group messages by date\r\n const groupedMessages = useMemo(() => {\r\n return messages.reduce((groups, message) => {\r\n const date = message.timestamp.toLocaleDateString();\r\n if (!groups[date]) {\r\n groups[date] = [];\r\n }\r\n groups[date].push(message);\r\n return groups;\r\n }, {} as Record<string, Message[]>);\r\n }, [messages]);\r\n\r\n if (messages.length === 0 && !isLoadingMore) {\r\n return (\r\n <div className={cn(\"flex-1 flex items-center justify-center p-8 text-center text-gray-500 dark:text-white/40\", className)} {...props}>\r\n <div className=\"max-w-sm space-y-4\">\r\n <div className=\"w-24 h-24 bg-blue-500/10 dark:bg-white/[0.03] rounded-full flex items-center justify-center mx-auto mb-6 animate-pulse\">\r\n <MessageSquare className=\"h-12 w-12 text-blue-500\" />\r\n </div>\r\n <h3 className=\"text-xl font-medium text-gray-900 dark:text-white\">No messages yet</h3>\r\n <p>Start the conversation by sending a message below.</p>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <ScrollArea \r\n className={cn(\"flex-1 p-4\", className)} \r\n onScroll={handleScroll}\r\n role=\"log\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions\"\r\n {...props}\r\n >\r\n <div className=\"space-y-6 pb-4\">\r\n {hasMore && (\r\n <div className=\"flex justify-center py-4\">\r\n {isLoadingMore ? (\r\n <div className=\"flex items-center gap-2 text-xs text-white/40\">\r\n <div className=\"w-4 h-4 border-2 border-cyan-500/30 border-t-cyan-500 rounded-full animate-spin\" />\r\n Loading older messages...\r\n </div>\r\n ) : (\r\n <button \r\n onClick={onLoadMore}\r\n className=\"text-xs text-cyan-500/60 hover:text-cyan-500 transition-colors\"\r\n >\r\n Load older messages\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {Object.entries(groupedMessages).map(([date, msgs]) => (\r\n <div key={date} className=\"space-y-4\">\r\n <div className=\"flex justify-center sticky top-0 z-10 py-2\">\r\n <span className=\"px-3 py-1 rounded-full bg-gray-100/80 dark:bg-white/[0.03] text-[10px] uppercase tracking-wider font-bold text-gray-500 dark:text-white/40 backdrop-blur-md border border-white/5 shadow-sm\">\r\n {date}\r\n </span>\r\n </div>\r\n \r\n <div className=\"space-y-1\">\r\n {msgs.map((msg, index) => {\r\n const isOwn = msg.senderId === currentUserId;\r\n const prevMsg = msgs[index - 1];\r\n const nextMsg = msgs[index + 1];\r\n \r\n // Logic to group bubbles visually\r\n const isFirstInGroup = !prevMsg || prevMsg.senderId !== msg.senderId;\r\n const isLastInGroup = !nextMsg || nextMsg.senderId !== msg.senderId;\r\n\r\n return (\r\n <MessageBubble \r\n key={msg.id} \r\n message={msg} \r\n isOwn={isOwn}\r\n className={cn(\r\n !isLastInGroup && \"mb-0.5\"\r\n )}\r\n onReply={onReply}\r\n onReact={onReact}\r\n onDelete={onDelete}\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ))}\r\n <div ref={bottomRef} className=\"h-px\" />\r\n </div>\r\n </ScrollArea>\r\n );\r\n}\r\n","import React, { useState, useRef, useEffect, useMemo } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { Send, Paperclip, Smile, Mic, Image as ImageIcon, AtSign } from 'lucide-react';\r\nimport { Button } from '../button/Button';\r\nimport type { User } from './types';\r\nimport { Surface } from '../../primitives/Surface';\r\nimport { Avatar } from '../data-display/Avatar';\r\n\r\ninterface ChatInputProps extends React.HTMLAttributes<HTMLDivElement> {\r\n onSend?: (content: string) => void;\r\n onAttach?: () => void;\r\n placeholder?: string;\r\n users?: User[];\r\n}\r\n\r\nexport function ChatInput({ \r\n onSend, \r\n onAttach, \r\n placeholder = \"Type a message...\", \r\n users = [],\r\n className, \r\n ...props \r\n}: ChatInputProps) {\r\n const [content, setContent] = useState(\"\");\r\n const [isUploading, setIsUploading] = useState(false);\r\n const [mentionSearch, setMentionSearch] = useState<string | null>(null);\r\n const [mentionIndex, setMentionIndex] = useState(0);\r\n const textareaRef = useRef<HTMLTextAreaElement>(null);\r\n\r\n const filteredUsers = useMemo(() => {\r\n if (mentionSearch === null) return [];\r\n return users.filter(u => \r\n u.name.toLowerCase().includes(mentionSearch.toLowerCase())\r\n ).slice(0, 5);\r\n }, [users, mentionSearch]);\r\n\r\n const handleInput = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n const value = e.target.value;\r\n setContent(value);\r\n \r\n // Mention logic\r\n const lastChar = value[e.target.selectionStart - 1];\r\n const textBeforeCursor = value.slice(0, e.target.selectionStart);\r\n const mentionMatch = textBeforeCursor.match(/@(\\w*)$/);\r\n\r\n if (mentionMatch) {\r\n setMentionSearch(mentionMatch[1] || \"\");\r\n setMentionIndex(0);\r\n } else {\r\n setMentionSearch(null);\r\n }\r\n\r\n // Auto-resize\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = 'auto';\r\n textareaRef.current.style.height = `${Math.min(textareaRef.current.scrollHeight, 120)}px`;\r\n }\r\n };\r\n\r\n const insertMention = (user: User) => {\r\n if (!textareaRef.current) return;\r\n const start = textareaRef.current.selectionStart;\r\n const textBefore = content.slice(0, start).replace(/@\\w*$/, `@${user.name} `);\r\n const textAfter = content.slice(start);\r\n setContent(textBefore + textAfter);\r\n setMentionSearch(null);\r\n textareaRef.current.focus();\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (mentionSearch !== null && filteredUsers.length > 0) {\r\n if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n setMentionIndex(prev => (prev + 1) % filteredUsers.length);\r\n } else if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n setMentionIndex(prev => (prev - 1 + filteredUsers.length) % filteredUsers.length);\r\n } else if (e.key === 'Enter' || e.key === 'Tab') {\r\n e.preventDefault();\r\n insertMention(filteredUsers[mentionIndex]!);\r\n } else if (e.key === 'Escape') {\r\n setMentionSearch(null);\r\n }\r\n return;\r\n }\r\n\r\n if (e.key === 'Enter' && !e.shiftKey) {\r\n e.preventDefault();\r\n handleSend();\r\n }\r\n };\r\n\r\n const handleSend = () => {\r\n if (!content.trim()) return;\r\n onSend?.(content);\r\n setContent(\"\");\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = 'auto';\r\n }\r\n };\r\n\r\n const handleAttachClick = () => {\r\n setIsUploading(true);\r\n // Simulate upload\r\n setTimeout(() => {\r\n setIsUploading(false);\r\n onAttach?.();\r\n }, 1000);\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative p-4 border-t border-white/10 bg-white/[0.02]\", className)} {...props}>\r\n {/* Mentions Popover */}\r\n {mentionSearch !== null && filteredUsers.length > 0 && (\r\n <Surface className=\"absolute bottom-full left-4 mb-2 w-64 overflow-hidden shadow-2xl animate-in fade-in slide-in-from-bottom-2\">\r\n <div className=\"p-2 border-b border-white/10 bg-white/[0.02]\">\r\n <span className=\"text-[10px] font-bold uppercase tracking-wider text-white/40 px-2\">\r\n Mention User\r\n </span>\r\n </div>\r\n <div className=\"max-h-48 overflow-y-auto p-1\">\r\n {filteredUsers.map((user: User, idx: number) => (\r\n <button\r\n key={user.id}\r\n onClick={() => insertMention(user)}\r\n className={cn(\r\n \"w-full flex items-center gap-3 px-3 py-2 rounded-2xl transition-colors text-left\",\r\n idx === mentionIndex ? \"bg-white/[0.06]\" : \"hover:bg-white/[0.03]\"\r\n )}\r\n >\r\n <Avatar src={user.avatar} alt={user.name} size=\"sm\" />\r\n <div className=\"flex-1 min-w-0\">\r\n <div className=\"text-sm font-medium text-white truncate\">{user.name}</div>\r\n <div className=\"text-xs text-white/40 truncate\">@{user.name.toLowerCase().replace(/\\s/g, '')}</div>\r\n </div>\r\n {idx === mentionIndex && (\r\n <div className=\"text-[10px] bg-white/[0.06] px-1.5 py-0.5 rounded text-white/60\">Enter</div>\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n </Surface>\r\n )}\r\n\r\n <div className=\"flex items-end gap-2 max-w-4xl mx-auto\">\r\n <div className=\"flex gap-1 mb-1\">\r\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9 rounded-2xl text-white/40 hover:text-white\" onClick={handleAttachClick} disabled={isUploading}>\r\n <Paperclip className={cn(\"w-5 h-5\", isUploading && \"animate-pulse text-blue-500\")} />\r\n </Button>\r\n </div>\r\n \r\n <div className=\"flex-1 relative group\">\r\n <textarea\r\n ref={textareaRef}\r\n value={content}\r\n onChange={handleInput}\r\n onKeyDown={handleKeyDown}\r\n placeholder={isUploading ? \"Uploading...\" : placeholder}\r\n rows={1}\r\n className=\"w-full bg-white/[0.03] border border-white/10 rounded-2xl px-4 py-2.5 text-sm text-white placeholder:text-white/20 focus:outline-none focus:ring-2 focus:ring-white/10 resize-none transition-all min-h-[44px]\"\r\n />\r\n <div className=\"absolute right-3 bottom-2.5 flex items-center gap-2 opacity-0 group-focus-within:opacity-100 transition-opacity\">\r\n <button className=\"text-white/20 hover:text-white/60 transition-colors\">\r\n <Smile className=\"w-4 h-4\" />\r\n </button>\r\n <button className=\"text-white/20 hover:text-white/60 transition-colors\">\r\n <AtSign className=\"w-4 h-4\" />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex gap-2 mb-1\">\r\n {content.trim() ? (\r\n <Button \r\n onClick={handleSend}\r\n className=\"h-9 w-9 rounded-2xl bg-white text-black hover:bg-white/90 p-0\"\r\n >\r\n <Send className=\"w-4 h-4\" />\r\n </Button>\r\n ) : (\r\n <Button variant=\"ghost\" size=\"icon\" className=\"h-9 w-9 rounded-2xl text-white/40 hover:text-white\">\r\n <Mic className=\"w-5 h-5\" />\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\n\r\nconst separatorVariants = cva(\r\n \"shrink-0 bg-gray-200 dark:bg-white/[0.03]\",\r\n {\r\n variants: {\r\n orientation: {\r\n horizontal: \"h-[1px] w-full\",\r\n vertical: \"h-full w-[1px]\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"horizontal\",\r\n },\r\n }\r\n);\r\n\r\nexport interface SeparatorProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n VariantProps<typeof separatorVariants> {\r\n orientation?: \"horizontal\" | \"vertical\";\r\n decorative?: boolean;\r\n}\r\n\r\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\r\n (\r\n { className, orientation = \"horizontal\", decorative = true, ...props },\r\n ref\r\n ) => (\r\n <div\r\n ref={ref}\r\n role={decorative ? \"none\" : \"separator\"}\r\n aria-orientation={decorative ? undefined : orientation}\r\n className={cn(separatorVariants({ orientation, className }))}\r\n {...props}\r\n />\r\n )\r\n);\r\nSeparator.displayName = \"Separator\";\r\n","import React from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport type { User } from './types';\r\nimport { Avatar } from '../data-display/Avatar';\r\nimport { Bell, Ban, Trash2, Image, FileText, Link as LinkIcon, X } from 'lucide-react';\r\nimport { ScrollArea } from '../data-display/ScrollArea';\r\nimport { Separator } from '../data-display/Separator';\r\nimport { Switch } from '../form/Switch';\r\n\r\ninterface ChatProfileProps extends React.HTMLAttributes<HTMLDivElement> {\r\n user: User;\r\n onClose?: () => void;\r\n}\r\n\r\nexport function ChatProfile({ user, onClose, className, ...props }: ChatProfileProps) {\r\n return (\r\n <div className={cn(\"w-80 border-l border-gray-200 dark:border-white/10 bg-white dark:bg-black/20 flex flex-col\", className)} {...props}>\r\n <div className=\"h-16 flex items-center px-4 border-b border-gray-200 dark:border-white/10\">\r\n <button onClick={onClose} className=\"p-2 -ml-2 rounded-full hover:bg-gray-100 dark:hover:bg-white/[0.06]\">\r\n <X className=\"h-5 w-5 text-gray-500\" />\r\n </button>\r\n <span className=\"ml-2 font-semibold text-gray-900 dark:text-white\">Contact Info</span>\r\n </div>\r\n\r\n <ScrollArea className=\"flex-1\">\r\n <div className=\"p-6 flex flex-col items-center text-center\">\r\n <Avatar src={user.avatar} alt={user.name} fallback={user.name[0]} className=\"h-24 w-24 mb-4 text-2xl\" />\r\n <h2 className=\"text-xl font-bold text-gray-900 dark:text-white\">{user.name}</h2>\r\n <p className=\"text-sm text-gray-500 dark:text-white/50 mt-1\">{user.phone || '+1 (555) 000-0000'}</p>\r\n \r\n <div className=\"mt-6 w-full\">\r\n <p className=\"text-sm text-gray-500 dark:text-white/50 mb-1 text-left\">About</p>\r\n <p className=\"text-sm text-gray-900 dark:text-white text-left\">{user.bio || \"Hey there! I am using Pixon Chat.\"}</p>\r\n </div>\r\n </div>\r\n\r\n <Separator />\r\n\r\n <div className=\"p-4 space-y-4\">\r\n <h3 className=\"text-xs font-semibold text-gray-500 dark:text-white/40 uppercase tracking-wider\">Media & Docs</h3>\r\n <div className=\"grid grid-cols-3 gap-2\">\r\n {[1, 2, 3, 4, 5, 6].map((i) => (\r\n <div key={i} className=\"aspect-square rounded-2xl bg-gray-100 dark:bg-white/[0.03] overflow-hidden relative group cursor-pointer\">\r\n <div className=\"absolute inset-0 flex items-center justify-center text-gray-400\">\r\n <Image className=\"h-6 w-6\" />\r\n </div>\r\n <div className=\"absolute inset-0 bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity\" />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <Separator />\r\n\r\n <div className=\"p-4 space-y-4\">\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center gap-3 text-gray-700 dark:text-white/80\">\r\n <Bell className=\"h-5 w-5\" />\r\n <span className=\"text-sm font-medium\">Mute Notifications</span>\r\n </div>\r\n <Switch />\r\n </div>\r\n </div>\r\n\r\n <Separator />\r\n\r\n <div className=\"p-4 space-y-2\">\r\n <button className=\"w-full flex items-center gap-3 p-3 rounded-2xl hover:bg-red-50 dark:hover:bg-red-500/10 text-red-600 dark:text-red-400 transition-colors text-sm font-medium\">\r\n <Ban className=\"h-5 w-5\" />\r\n Block {user.name}\r\n </button>\r\n <button className=\"w-full flex items-center gap-3 p-3 rounded-2xl hover:bg-red-50 dark:hover:bg-red-500/10 text-red-600 dark:text-red-400 transition-colors text-sm font-medium\">\r\n <Trash2 className=\"h-5 w-5\" />\r\n Delete Chat\r\n </button>\r\n </div>\r\n </ScrollArea>\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { useInView } from '../../hooks/useInView';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface MotionGroupProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n stagger?: number; // Delay between items in ms\r\n delay?: number; // Initial delay in ms\r\n}\r\n\r\nexport function MotionGroup({ \r\n children, \r\n stagger = 100, \r\n delay = 0, \r\n className, \r\n ...props \r\n}: MotionGroupProps) {\r\n const { ref, hasAnimated } = useInView({ threshold: 0.1 });\r\n\r\n return (\r\n <div ref={ref} className={cn('relative', className)} {...props}>\r\n {React.Children.map(children, (child, index) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child as React.ReactElement<any>, {\r\n // Force child to wait for group\r\n visible: hasAnimated,\r\n // Disable child's internal observer to save resources\r\n viewport: false,\r\n // Calculate stagger delay\r\n delay: delay + (index * stagger),\r\n });\r\n }\r\n return child;\r\n })}\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { useInView } from '../../hooks/useInView';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface TextMotionProps extends React.HTMLAttributes<HTMLDivElement> {\r\n text: string;\r\n type?: 'char' | 'word';\r\n stagger?: number;\r\n delay?: number;\r\n}\r\n\r\nexport function TextMotion({ \r\n text, \r\n type = 'char', \r\n stagger = 30, \r\n delay = 0,\r\n className,\r\n ...props \r\n}: TextMotionProps) {\r\n const { ref, hasAnimated } = useInView({ threshold: 0.2 });\r\n \r\n const items = type === 'char' ? text.split('') : text.split(' ');\r\n\r\n return (\r\n <div \r\n ref={ref} \r\n className={cn('flex flex-wrap', className)} \r\n aria-label={text}\r\n {...props}\r\n >\r\n {items.map((item, i) => (\r\n <span\r\n key={i}\r\n className={cn(\r\n 'inline-block whitespace-pre transition-all duration-500 ease-out will-change-transform',\r\n hasAnimated \r\n ? 'opacity-100 translate-y-0 blur-0' \r\n : 'opacity-0 translate-y-4 blur-sm'\r\n )}\r\n style={{ \r\n transitionDelay: `${delay + (i * stagger)}ms` \r\n }}\r\n >\r\n {item}{type === 'word' && i !== items.length - 1 ? ' ' : ''}\r\n </span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface ParallaxProps extends React.HTMLAttributes<HTMLDivElement> {\r\n speed?: number; // -1 to 1. Positive = moves slower (depth), Negative = moves faster.\r\n direction?: 'vertical' | 'horizontal';\r\n}\r\n\r\nexport function Parallax({ \r\n children, \r\n speed = 0.1, \r\n direction = 'vertical',\r\n className,\r\n ...props \r\n}: ParallaxProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const element = ref.current;\r\n if (!element) return;\r\n\r\n const handleScroll = () => {\r\n const rect = element.getBoundingClientRect();\r\n const windowHeight = window.innerHeight;\r\n \r\n // Optimization: Only animate if roughly in view\r\n if (rect.top > windowHeight || rect.bottom < 0) return;\r\n\r\n // Calculate distance from center of viewport\r\n // 0 = center, -val = above center, +val = below center\r\n const centerOffset = (windowHeight / 2) - (rect.top + rect.height / 2);\r\n \r\n const translate = centerOffset * speed;\r\n\r\n if (direction === 'vertical') {\r\n element.style.transform = `translate3d(0, ${translate}px, 0)`;\r\n } else {\r\n element.style.transform = `translate3d(${translate}px, 0, 0)`;\r\n }\r\n };\r\n\r\n window.addEventListener('scroll', handleScroll, { passive: true });\r\n handleScroll(); // Initial calculation\r\n\r\n return () => window.removeEventListener('scroll', handleScroll);\r\n }, [speed, direction]);\r\n\r\n return (\r\n <div \r\n ref={ref} \r\n className={cn('will-change-transform', className)} \r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import React, { useRef, useState, useEffect } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface MagneticProps {\r\n children: React.ReactElement;\r\n strength?: number;\r\n className?: string;\r\n}\r\n\r\nexport function Magnetic({ children, strength = 0.5, className }: MagneticProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n const el = ref.current;\r\n if (!el) return;\r\n \r\n const { clientX, clientY } = e;\r\n const { left, top, width, height } = el.getBoundingClientRect();\r\n \r\n const centerX = left + width / 2;\r\n const centerY = top + height / 2;\r\n \r\n const distanceX = clientX - centerX;\r\n const distanceY = clientY - centerY;\r\n \r\n // Only apply if mouse is relatively close\r\n const threshold = Math.max(width, height) * 1.5;\r\n if (Math.abs(distanceX) < threshold && Math.abs(distanceY) < threshold) {\r\n el.style.setProperty('--mag-x', `${distanceX * strength}px`);\r\n el.style.setProperty('--mag-y', `${distanceY * strength}px`);\r\n } else {\r\n el.style.setProperty('--mag-x', '0px');\r\n el.style.setProperty('--mag-y', '0px');\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n const el = ref.current;\r\n if (el) {\r\n el.style.setProperty('--mag-x', '0px');\r\n el.style.setProperty('--mag-y', '0px');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener('mousemove', handleMouseMove);\r\n return () => window.removeEventListener('mousemove', handleMouseMove);\r\n }, [strength]);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"inline-block transition-transform duration-300 ease-out will-change-transform\", className)}\r\n onMouseLeave={handleMouseLeave}\r\n style={{\r\n transform: `translate3d(var(--mag-x, 0px), var(--mag-y, 0px), 0)`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { useInView } from '../../hooks/useInView';\r\n\r\nexport interface NumberTickerProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n value: number;\r\n duration?: number;\r\n delay?: number;\r\n decimalPlaces?: number;\r\n}\r\n\r\nexport function NumberTicker({\r\n value,\r\n duration = 2000,\r\n delay = 0,\r\n decimalPlaces = 0,\r\n className,\r\n ...props\r\n}: NumberTickerProps) {\r\n const [displayValue, setDisplayValue] = useState(0);\r\n const { ref, hasAnimated } = useInView({ threshold: 0.1 });\r\n const startTimeRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n if (!hasAnimated) return;\r\n\r\n const animate = (timestamp: number) => {\r\n if (!startTimeRef.current) startTimeRef.current = timestamp;\r\n const progress = Math.min((timestamp - startTimeRef.current - delay) / duration, 1);\r\n \r\n if (progress >= 0) {\r\n const current = progress * value;\r\n setDisplayValue(current);\r\n }\r\n\r\n if (progress < 1) {\r\n requestAnimationFrame(animate);\r\n }\r\n };\r\n\r\n const timeout = setTimeout(() => {\r\n requestAnimationFrame(animate);\r\n }, delay);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [hasAnimated, value, duration, delay]);\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n className={cn(\"tabular-nums tracking-tighter\", className)}\r\n {...props}\r\n >\r\n {displayValue.toFixed(decimalPlaces)}\r\n </span>\r\n );\r\n}\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { cn } from '../../utils/cn';\r\nimport { ChevronDown } from 'lucide-react';\r\n\r\nexport interface CollapseProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\r\n title?: React.ReactNode;\r\n open?: boolean;\r\n defaultOpen?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n disabled?: boolean;\r\n children: React.ReactNode;\r\n triggerClassName?: string;\r\n contentClassName?: string;\r\n}\r\n\r\nexport function Collapse({\r\n title,\r\n open: controlledOpen,\r\n defaultOpen = false,\r\n onOpenChange,\r\n disabled = false,\r\n children,\r\n className,\r\n triggerClassName,\r\n contentClassName,\r\n ...props\r\n}: CollapseProps) {\r\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\r\n\r\n const handleToggle = () => {\r\n if (disabled) return;\r\n const newState = !isOpen;\r\n if (!isControlled) {\r\n setUncontrolledOpen(newState);\r\n }\r\n onOpenChange?.(newState);\r\n };\r\n\r\n return (\r\n <div \r\n className={cn(\r\n 'w-full overflow-hidden rounded-2xl border border-gray-200 bg-white dark:border-white/10 dark:bg-white/[0.02]',\r\n className\r\n )} \r\n {...props}\r\n >\r\n {title && (\r\n <button\r\n type=\"button\"\r\n onClick={handleToggle}\r\n disabled={disabled}\r\n className={cn(\r\n 'flex w-full items-center justify-between px-4 py-3 text-sm font-medium transition-colors hover:bg-gray-50 dark:hover:bg-white/[0.02]',\r\n disabled && 'cursor-not-allowed opacity-50',\r\n triggerClassName\r\n )}\r\n >\r\n {title}\r\n <ChevronDown\r\n className={cn(\r\n 'h-4 w-4 shrink-0 text-gray-500 transition-transform duration-200 dark:text-gray-400',\r\n isOpen && 'rotate-180'\r\n )}\r\n />\r\n </button>\r\n )}\r\n \r\n <div\r\n className={cn(\r\n 'grid transition-all duration-300 ease-in-out',\r\n isOpen ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\r\n )}\r\n >\r\n <div className=\"overflow-hidden\">\r\n <div className={cn('px-4 pb-4 pt-0', title && 'pt-1', contentClassName)}>\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Loader2 } from 'lucide-react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface PageLoaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n variant?: 'spinner' | 'bar' | 'dots' | 'logo' | 'glass';\r\n text?: string;\r\n fullscreen?: boolean;\r\n}\r\n\r\nexport function PageLoader({\r\n variant = 'spinner',\r\n text,\r\n fullscreen = true,\r\n className,\r\n ...props\r\n}: PageLoaderProps) {\r\n const baseStyles = fullscreen\r\n ? 'fixed inset-0 z-50 flex items-center justify-center bg-white/80 dark:bg-black/80 backdrop-blur-sm'\r\n : 'flex items-center justify-center p-8 w-full h-full min-h-[200px]';\r\n\r\n if (variant === 'bar') {\r\n return (\r\n <div className={cn('fixed top-0 left-0 right-0 z-50 h-1 bg-transparent', className)} {...props}>\r\n <div className=\"h-full bg-blue-500 animate-indeterminate-progress origin-left\" />\r\n </div>\r\n );\r\n }\r\n\r\n if (variant === 'dots') {\r\n return (\r\n <div className={cn(baseStyles, className)} {...props}>\r\n <div className=\"flex space-x-2\">\r\n <div className=\"h-3 w-3 rounded-full bg-blue-500 animate-bounce [animation-delay:-0.3s]\" />\r\n <div className=\"h-3 w-3 rounded-full bg-blue-500 animate-bounce [animation-delay:-0.15s]\" />\r\n <div className=\"h-3 w-3 rounded-full bg-blue-500 animate-bounce\" />\r\n </div>\r\n {text && <span className=\"ml-4 text-sm font-medium text-gray-500 dark:text-white/70\">{text}</span>}\r\n </div>\r\n );\r\n }\r\n\r\n if (variant === 'logo') {\r\n return (\r\n <div className={cn(baseStyles, className)} {...props}>\r\n <div className=\"flex flex-col items-center gap-4\">\r\n <div className=\"relative flex h-16 w-16 items-center justify-center rounded-full bg-white dark:bg-white/[0.06] shadow-lg ring-1 ring-black/5\">\r\n <div className=\"absolute inset-0 rounded-full animate-ping bg-blue-500/20\" />\r\n <div className=\"h-8 w-8 rounded bg-blue-500\" />\r\n </div>\r\n {text && <span className=\"text-sm font-medium text-gray-500 dark:text-white/70 animate-pulse\">{text}</span>}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n if (variant === 'glass') {\r\n return (\r\n <div className={cn(baseStyles, 'bg-white/30 dark:bg-black/30 backdrop-blur-md', className)} {...props}>\r\n <div className=\"flex flex-col items-center gap-3\">\r\n <Loader2 className=\"h-8 w-8 animate-spin text-white\" />\r\n {text && <span className=\"text-sm font-medium text-white tracking-wider\">{text}</span>}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Default: spinner\r\n return (\r\n <div className={cn(baseStyles, className)} {...props}>\r\n <div className=\"flex flex-col items-center gap-3\">\r\n <Loader2 className=\"h-8 w-8 animate-spin text-blue-500\" />\r\n {text && <span className=\"text-sm font-medium text-gray-500 dark:text-white/70\">{text}</span>}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface PageTransitionProps extends React.HTMLAttributes<HTMLDivElement> {\r\n preset?: 'fade' | 'slide-up' | 'scale' | 'blur' | 'none';\r\n duration?: number;\r\n useViewTransition?: boolean;\r\n}\r\n\r\nexport function PageTransition({\r\n preset = 'fade',\r\n duration = 300,\r\n useViewTransition = false,\r\n className,\r\n children,\r\n ...props\r\n}: PageTransitionProps) {\r\n const [isVisible, setIsVisible] = useState(false);\r\n\r\n useEffect(() => {\r\n if (useViewTransition && (document as any).startViewTransition) {\r\n (document as any).startViewTransition(() => {\r\n setIsVisible(true);\r\n });\r\n } else {\r\n const timer = requestAnimationFrame(() => {\r\n setIsVisible(true);\r\n });\r\n return () => cancelAnimationFrame(timer);\r\n }\r\n }, [useViewTransition]);\r\n\r\n const presets = {\r\n fade: {\r\n initial: 'opacity-0',\r\n animate: 'opacity-100',\r\n },\r\n 'slide-up': {\r\n initial: 'opacity-0 translate-y-8',\r\n animate: 'opacity-100 translate-y-0',\r\n },\r\n scale: {\r\n initial: 'opacity-0 scale-95',\r\n animate: 'opacity-100 scale-100',\r\n },\r\n blur: {\r\n initial: 'opacity-0 blur-sm',\r\n animate: 'opacity-100 blur-0',\r\n },\r\n none: {\r\n initial: '',\r\n animate: '',\r\n }\r\n };\r\n\r\n const currentPreset = presets[preset];\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'transition-all ease-out',\r\n isVisible ? currentPreset.animate : currentPreset.initial,\r\n className\r\n )}\r\n style={{ \r\n transitionDuration: `${duration}ms`,\r\n viewTransitionName: useViewTransition ? 'page-content' : undefined\r\n } as any}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n"]}
|