@yyc3/music-ui 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/dmusic/DMusicShowcase.d.ts +17 -0
  2. package/dist/dmusic/DMusicShowcase.d.ts.map +1 -0
  3. package/dist/dmusic/DMusicUI.d.ts +214 -0
  4. package/dist/dmusic/DMusicUI.d.ts.map +1 -0
  5. package/dist/dmusic/DPanel.d.ts +49 -0
  6. package/dist/dmusic/DPanel.d.ts.map +1 -0
  7. package/dist/dmusic/DataViz.d.ts +127 -0
  8. package/dist/dmusic/DataViz.d.ts.map +1 -0
  9. package/dist/dmusic/index.d.ts +12 -0
  10. package/dist/dmusic/index.d.ts.map +1 -0
  11. package/dist/figma/ImageWithFallback.d.ts +3 -0
  12. package/dist/figma/ImageWithFallback.d.ts.map +1 -0
  13. package/dist/index.d.ts +51 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +5945 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/ui/accordion.d.ts +8 -0
  18. package/dist/ui/accordion.d.ts.map +1 -0
  19. package/dist/ui/alert-dialog.d.ts +15 -0
  20. package/dist/ui/alert-dialog.d.ts.map +1 -0
  21. package/dist/ui/alert.d.ts +10 -0
  22. package/dist/ui/alert.d.ts.map +1 -0
  23. package/dist/ui/aspect-ratio.d.ts +4 -0
  24. package/dist/ui/aspect-ratio.d.ts.map +1 -0
  25. package/dist/ui/avatar.d.ts +7 -0
  26. package/dist/ui/avatar.d.ts.map +1 -0
  27. package/dist/ui/badge.d.ts +10 -0
  28. package/dist/ui/badge.d.ts.map +1 -0
  29. package/dist/ui/breadcrumb.d.ts +12 -0
  30. package/dist/ui/breadcrumb.d.ts.map +1 -0
  31. package/dist/ui/button.d.ts +11 -0
  32. package/dist/ui/button.d.ts.map +1 -0
  33. package/dist/ui/calendar.d.ts +5 -0
  34. package/dist/ui/calendar.d.ts.map +1 -0
  35. package/dist/ui/card.d.ts +10 -0
  36. package/dist/ui/card.d.ts.map +1 -0
  37. package/dist/ui/carousel.d.ts +20 -0
  38. package/dist/ui/carousel.d.ts.map +1 -0
  39. package/dist/ui/chart.d.ts +41 -0
  40. package/dist/ui/chart.d.ts.map +1 -0
  41. package/dist/ui/checkbox.d.ts +5 -0
  42. package/dist/ui/checkbox.d.ts.map +1 -0
  43. package/dist/ui/collapsible.d.ts +6 -0
  44. package/dist/ui/collapsible.d.ts.map +1 -0
  45. package/dist/ui/command.d.ts +17 -0
  46. package/dist/ui/command.d.ts.map +1 -0
  47. package/dist/ui/context-menu.d.ts +26 -0
  48. package/dist/ui/context-menu.d.ts.map +1 -0
  49. package/dist/ui/dialog.d.ts +14 -0
  50. package/dist/ui/dialog.d.ts.map +1 -0
  51. package/dist/ui/drawer.d.ts +14 -0
  52. package/dist/ui/drawer.d.ts.map +1 -0
  53. package/dist/ui/dropdown-menu.d.ts +26 -0
  54. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  55. package/dist/ui/form.d.ts +25 -0
  56. package/dist/ui/form.d.ts.map +1 -0
  57. package/dist/ui/hover-card.d.ts +7 -0
  58. package/dist/ui/hover-card.d.ts.map +1 -0
  59. package/dist/ui/input-otp.d.ts +12 -0
  60. package/dist/ui/input-otp.d.ts.map +1 -0
  61. package/dist/ui/input.d.ts +4 -0
  62. package/dist/ui/input.d.ts.map +1 -0
  63. package/dist/ui/label.d.ts +5 -0
  64. package/dist/ui/label.d.ts.map +1 -0
  65. package/dist/ui/menubar.d.ts +27 -0
  66. package/dist/ui/menubar.d.ts.map +1 -0
  67. package/dist/ui/navigation-menu.d.ts +15 -0
  68. package/dist/ui/navigation-menu.d.ts.map +1 -0
  69. package/dist/ui/pagination.d.ts +14 -0
  70. package/dist/ui/pagination.d.ts.map +1 -0
  71. package/dist/ui/popover.d.ts +8 -0
  72. package/dist/ui/popover.d.ts.map +1 -0
  73. package/dist/ui/progress.d.ts +5 -0
  74. package/dist/ui/progress.d.ts.map +1 -0
  75. package/dist/ui/radio-group.d.ts +6 -0
  76. package/dist/ui/radio-group.d.ts.map +1 -0
  77. package/dist/ui/resizable.d.ts +9 -0
  78. package/dist/ui/resizable.d.ts.map +1 -0
  79. package/dist/ui/scroll-area.d.ts +6 -0
  80. package/dist/ui/scroll-area.d.ts.map +1 -0
  81. package/dist/ui/select.d.ts +16 -0
  82. package/dist/ui/select.d.ts.map +1 -0
  83. package/dist/ui/separator.d.ts +5 -0
  84. package/dist/ui/separator.d.ts.map +1 -0
  85. package/dist/ui/sheet.d.ts +14 -0
  86. package/dist/ui/sheet.d.ts.map +1 -0
  87. package/dist/ui/sidebar.d.ts +70 -0
  88. package/dist/ui/sidebar.d.ts.map +1 -0
  89. package/dist/ui/skeleton.d.ts +3 -0
  90. package/dist/ui/skeleton.d.ts.map +1 -0
  91. package/dist/ui/slider.d.ts +5 -0
  92. package/dist/ui/slider.d.ts.map +1 -0
  93. package/dist/ui/sonner.d.ts +4 -0
  94. package/dist/ui/sonner.d.ts.map +1 -0
  95. package/dist/ui/switch.d.ts +5 -0
  96. package/dist/ui/switch.d.ts.map +1 -0
  97. package/dist/ui/table.d.ts +11 -0
  98. package/dist/ui/table.d.ts.map +1 -0
  99. package/dist/ui/tabs.d.ts +8 -0
  100. package/dist/ui/tabs.d.ts.map +1 -0
  101. package/dist/ui/textarea.d.ts +4 -0
  102. package/dist/ui/textarea.d.ts.map +1 -0
  103. package/dist/ui/toggle-group.d.ts +8 -0
  104. package/dist/ui/toggle-group.d.ts.map +1 -0
  105. package/dist/ui/toggle.d.ts +10 -0
  106. package/dist/ui/toggle.d.ts.map +1 -0
  107. package/dist/ui/tooltip.d.ts +8 -0
  108. package/dist/ui/tooltip.d.ts.map +1 -0
  109. package/dist/ui/use-mobile.d.ts +2 -0
  110. package/dist/ui/use-mobile.d.ts.map +1 -0
  111. package/dist/ui/utils.d.ts +3 -0
  112. package/dist/ui/utils.d.ts.map +1 -0
  113. package/package.json +77 -3
  114. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/ui/utils.ts","../src/ui/accordion.tsx","../src/ui/alert.tsx","../src/ui/button.tsx","../src/ui/alert-dialog.tsx","../src/ui/aspect-ratio.tsx","../src/ui/avatar.tsx","../src/ui/badge.tsx","../src/ui/breadcrumb.tsx","../src/ui/calendar.tsx","../src/ui/card.tsx","../src/ui/carousel.tsx","../src/ui/chart.tsx","../src/ui/checkbox.tsx","../src/ui/collapsible.tsx","../src/ui/dialog.tsx","../src/ui/command.tsx","../src/ui/context-menu.tsx","../src/ui/drawer.tsx","../src/ui/dropdown-menu.tsx","../src/ui/label.tsx","../src/ui/form.tsx","../src/ui/hover-card.tsx","../src/ui/input.tsx","../src/ui/input-otp.tsx","../src/ui/menubar.tsx","../src/ui/navigation-menu.tsx","../src/ui/pagination.tsx","../src/ui/popover.tsx","../src/ui/progress.tsx","../src/ui/radio-group.tsx","../src/ui/resizable.tsx","../src/ui/scroll-area.tsx","../src/ui/select.tsx","../src/ui/separator.tsx","../src/ui/sheet.tsx","../src/ui/use-mobile.ts","../src/ui/skeleton.tsx","../src/ui/tooltip.tsx","../src/ui/sidebar.tsx","../src/ui/slider.tsx","../src/ui/sonner.tsx","../src/ui/switch.tsx","../src/ui/table.tsx","../src/ui/tabs.tsx","../src/ui/textarea.tsx","../src/ui/toggle.tsx","../src/ui/toggle-group.tsx","../src/dmusic/DMusicUI.tsx","../src/dmusic/DPanel.tsx","../src/dmusic/DataViz.tsx","../src/dmusic/DMusicShowcase.tsx","../src/figma/ImageWithFallback.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9 rounded-md\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"./utils\";\nimport { buttonVariants } from \"./button\";\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","\"use client\";\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\nfunction AspectRatio({\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />;\n}\n\nexport { AspectRatio };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\n\nimport { cn } from \"./utils\";\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-10 shrink-0 overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\";\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { cn } from \"./utils\";\nimport { buttonVariants } from \"./button\";\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row gap-2\",\n month: \"flex flex-col gap-4\",\n caption: \"flex justify-center pt-1 relative items-center w-full\",\n caption_label: \"text-sm font-medium\",\n nav: \"flex items-center gap-1\",\n nav_button: cn(\n buttonVariants({ variant: \"outline\" }),\n \"size-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-x-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: cn(\n \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md\",\n props.mode === \"range\"\n ? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n : \"[&:has([aria-selected])]:rounded-md\",\n ),\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"size-8 p-0 font-normal aria-selected:opacity-100\",\n ),\n day_range_start:\n \"day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground\",\n day_range_end:\n \"day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground aria-selected:text-muted-foreground\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: ({ className, ...props }) => (\n <ChevronLeft className={cn(\"size-4\", className)} {...props} />\n ),\n IconRight: ({ className, ...props }) => (\n <ChevronRight className={cn(\"size-4\", className)} {...props} />\n ),\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <h4\n data-slot=\"card-title\"\n className={cn(\"leading-none\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <p\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 [&:last-child]:pb-6\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 pb-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"./utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n}) {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n }) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\",\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean;\n nameKey?: string;\n }) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n );\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n );\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\">\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\";\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"./utils\";\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content bg-background fixed z-50 flex h-auto flex-col\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n className,\n )}\n {...props}\n >\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"./utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"./utils\";\nimport { Label } from \"./label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"./utils\";\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string;\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm bg-input-background transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />;\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />;\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />;\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n );\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </MenubarPortal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n};\n","import * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className,\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\",\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n \"absolute top-full left-0 isolate z-50 flex justify-center\",\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n className,\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n","import * as React from \"react\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport { Button, buttonVariants } from \"./button\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pl-2.5\", className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pr-2.5\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"./utils\";\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\n\nimport { cn } from \"./utils\";\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { GripVerticalIcon } from \"lucide-react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"./utils\";\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"./utils\";\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"./utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator-root\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","import * as React from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n\n return !!isMobile;\n}\n","import { cn } from \"./utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"./utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { VariantProps, cva } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"./use-mobile\";\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Separator } from \"./separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\";\nimport { Skeleton } from \"./skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\n\nimport { cn } from \"./utils\";\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-4 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\",\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\",\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","\"use client\";\n\nimport { useTheme } from \"next-themes\";\nimport { Toaster as Sonner, ToasterProps } from \"sonner\";\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"./utils\";\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"./utils\";\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-xl p-[3px] flex\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-card dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-xl border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"resize-none border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-input-background px-3 py-2 text-base transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\nimport { toggleVariants } from \"./toggle\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n className,\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l\",\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","/**\n * D-Music §1.1 — Component Library\n *\n * Material Design 3.0 inspired, adapted for D-Music's deep-space aesthetic.\n * All components:\n * - Use CSS custom properties from §1.4 Theme System\n * - WCAG 2.1 AA compliant (aria-*, focus-visible, contrast ratios)\n * - Support keyboard navigation\n * - 60fps animations (GPU-accelerated transform/opacity)\n * - Responsive (mobile/tablet/desktop)\n *\n * Component Categories:\n * 1. DButton — Primary/Secondary/Ghost/Danger variants\n * 2. DInput — Text/Password/Search inputs\n * 3. DCard — Music/User/Achievement cards\n * 4. DProgress — Linear and ring progress indicators\n * 5. DFeedback — Loading/Success/Error/Warning states\n * 6. DBadge — Status/count badges\n * 7. DTooltip — Accessible tooltip wrapper\n * 8. DTag — Genre/mood/status tags\n */\n\nimport React from 'react';\nimport { clsx } from 'clsx';\nimport { motion } from 'motion/react';\nimport {\n Loader2, CheckCircle2, AlertCircle, AlertTriangle, Info,\n Search, Eye, EyeOff, X,\n} from 'lucide-react';\n\n// ============================================================\n// 1. DButton\n// ============================================================\n\ntype ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'accent';\ntype ButtonSize = 'sm' | 'md' | 'lg';\n\ninterface DButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n icon?: React.ReactNode;\n iconRight?: React.ReactNode;\n fullWidth?: boolean;\n}\n\nconst buttonVariants: Record<ButtonVariant, string> = {\n primary: 'bg-gradient-to-r from-[var(--dm-accent-from)] to-[var(--dm-accent-to)] text-white shadow-[var(--dm-shadow-sm)] hover:shadow-[var(--dm-shadow-md)] hover:brightness-110 active:brightness-95',\n secondary: 'bg-[var(--dm-hover-bg)] text-[var(--dm-text-primary)] border border-[var(--dm-border)] hover:bg-[var(--dm-active-bg)] hover:border-[var(--dm-border-strong)]',\n ghost: 'bg-transparent text-[var(--dm-text-secondary)] hover:bg-[var(--dm-hover-bg)] hover:text-[var(--dm-text-primary)]',\n danger: 'bg-[var(--dm-error)] text-white hover:brightness-110 active:brightness-95',\n accent: 'bg-[var(--dm-accent-from)]/15 text-[var(--dm-accent-from)] border border-[var(--dm-accent-from)]/30 hover:bg-[var(--dm-accent-from)]/25',\n};\n\nconst buttonSizes: Record<ButtonSize, string> = {\n sm: 'h-8 px-3 text-xs gap-1.5 rounded-lg',\n md: 'h-10 px-4 text-sm gap-2 rounded-xl',\n lg: 'h-12 px-6 text-base gap-2.5 rounded-xl',\n};\n\nexport const DButton: React.FC<DButtonProps> = ({\n variant = 'primary',\n size = 'md',\n loading = false,\n icon,\n iconRight,\n fullWidth = false,\n disabled,\n className,\n children,\n ...props\n}) => {\n return (\n <button\n disabled={disabled || loading}\n className={clsx(\n 'inline-flex items-center justify-center font-medium',\n 'transition-all duration-150 ease-out',\n 'dm-focus-ring select-none',\n 'disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none',\n buttonVariants[variant],\n buttonSizes[size],\n fullWidth && 'w-full',\n className\n )}\n {...props}\n >\n {loading ? (\n <Loader2 className=\"w-4 h-4 animate-spin\" aria-hidden=\"true\" />\n ) : icon ? (\n <span className=\"flex-shrink-0\" aria-hidden=\"true\">{icon}</span>\n ) : null}\n {children && <span>{children}</span>}\n {iconRight && !loading && (\n <span className=\"flex-shrink-0\" aria-hidden=\"true\">{iconRight}</span>\n )}\n </button>\n );\n};\n\n// ============================================================\n// 2. DInput\n// ============================================================\n\ntype InputVariant = 'default' | 'search' | 'password';\n\ninterface DInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n variant?: InputVariant;\n label?: string;\n error?: string;\n hint?: string;\n inputSize?: ButtonSize;\n leftIcon?: React.ReactNode;\n}\n\nexport const DInput: React.FC<DInputProps> = ({\n variant = 'default',\n label,\n error,\n hint,\n inputSize = 'md',\n leftIcon,\n className,\n id,\n type: propType,\n ...props\n}) => {\n const [showPassword, setShowPassword] = React.useState(false);\n const inputId = id || `dinput-${React.useId()}`;\n const isPassword = variant === 'password';\n const isSearch = variant === 'search';\n const actualType = isPassword ? (showPassword ? 'text' : 'password') : (propType || 'text');\n\n const heights: Record<ButtonSize, string> = { sm: 'h-8', md: 'h-10', lg: 'h-12' };\n const textSizes: Record<ButtonSize, string> = { sm: 'text-xs', md: 'text-sm', lg: 'text-base' };\n\n return (\n <div className={clsx('flex flex-col gap-1.5', className)}>\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-xs font-medium\"\n style={{ color: 'var(--dm-text-secondary)' }}\n >\n {label}\n </label>\n )}\n <div className=\"relative\">\n {(isSearch || leftIcon) && (\n <span\n className=\"absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none\"\n style={{ color: 'var(--dm-text-tertiary)' }}\n aria-hidden=\"true\"\n >\n {isSearch ? <Search className=\"w-4 h-4\" /> : leftIcon}\n </span>\n )}\n <input\n id={inputId}\n type={actualType}\n className={clsx(\n 'w-full rounded-xl border px-3 font-normal',\n 'transition-all duration-150 ease-out dm-focus-ring',\n 'placeholder:text-[var(--dm-text-disabled)]',\n heights[inputSize],\n textSizes[inputSize],\n (isSearch || leftIcon) && 'pl-9',\n isPassword && 'pr-9',\n error\n ? 'border-[var(--dm-error)] bg-[var(--dm-error)]/5'\n : 'border-[var(--dm-border)] bg-[var(--dm-bg-panel)]'\n )}\n style={{ color: 'var(--dm-text-primary)' }}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={error ? `${inputId}-error` : hint ? `${inputId}-hint` : undefined}\n {...props}\n />\n {isPassword && (\n <button\n type=\"button\"\n onClick={() => setShowPassword(p => !p)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 p-0.5 rounded dm-focus-ring\"\n style={{ color: 'var(--dm-text-tertiary)' }}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n tabIndex={-1}\n >\n {showPassword ? <EyeOff className=\"w-4 h-4\" /> : <Eye className=\"w-4 h-4\" />}\n </button>\n )}\n </div>\n {error && (\n <p id={`${inputId}-error`} className=\"text-xs flex items-center gap-1\" style={{ color: 'var(--dm-error)' }} role=\"alert\">\n <AlertCircle className=\"w-3 h-3 flex-shrink-0\" />\n {error}\n </p>\n )}\n {hint && !error && (\n <p id={`${inputId}-hint`} className=\"text-xs\" style={{ color: 'var(--dm-text-tertiary)' }}>\n {hint}\n </p>\n )}\n </div>\n );\n};\n\n// ============================================================\n// 3. DCard\n// ============================================================\n\ntype CardVariant = 'default' | 'music' | 'user' | 'achievement' | 'glass';\n\ninterface DCardProps {\n variant?: CardVariant;\n className?: string;\n children: React.ReactNode;\n onClick?: () => void;\n interactive?: boolean;\n glowColor?: string;\n padding?: 'sm' | 'md' | 'lg' | 'none';\n}\n\nconst cardPadding: Record<string, string> = {\n none: 'p-0',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n};\n\nexport const DCard: React.FC<DCardProps> = ({\n variant = 'default',\n className,\n children,\n onClick,\n interactive = false,\n glowColor,\n padding = 'md',\n}) => {\n const isInteractive = interactive || !!onClick;\n const Component = isInteractive ? motion.div : 'div';\n\n const baseStyles = clsx(\n 'rounded-2xl border overflow-hidden',\n cardPadding[padding],\n isInteractive && 'cursor-pointer dm-focus-ring',\n variant === 'glass' && 'backdrop-blur-xl',\n className\n );\n\n const style: React.CSSProperties = {\n background: variant === 'glass'\n ? 'var(--dm-bg-overlay)'\n : 'var(--dm-bg-elevated)',\n borderColor: 'var(--dm-border-subtle)',\n boxShadow: glowColor\n ? `0 0 20px ${glowColor}20, var(--dm-shadow-sm)`\n : 'var(--dm-shadow-sm)',\n };\n\n const motionProps = isInteractive\n ? {\n whileHover: { scale: 1.02, y: -2 },\n whileTap: { scale: 0.98 },\n transition: { type: 'spring' as const, damping: 20, stiffness: 300 },\n }\n : {};\n\n return (\n <Component\n className={baseStyles}\n style={style}\n onClick={onClick}\n role={isInteractive ? 'button' : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n onKeyDown={isInteractive ? (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick?.();\n }\n } : undefined}\n {...motionProps}\n >\n {children}\n </Component>\n );\n};\n\n/** Music card — specialized for track/album display */\ninterface DMusicCardProps {\n title: string;\n artist: string;\n coverUrl?: string;\n duration?: string;\n emotion?: string;\n isPlaying?: boolean;\n onClick?: () => void;\n className?: string;\n}\n\nexport const DMusicCard: React.FC<DMusicCardProps> = ({\n title, artist, coverUrl, duration, emotion, isPlaying, onClick, className,\n}) => {\n return (\n <DCard variant=\"default\" interactive onClick={onClick} padding=\"sm\" className={clsx('flex items-center gap-3', className)}>\n <div\n className=\"w-12 h-12 rounded-xl flex-shrink-0 bg-gradient-to-br from-[var(--dm-accent-from)]/30 to-[var(--dm-accent-to)]/30 flex items-center justify-center overflow-hidden relative\"\n >\n {coverUrl ? (\n <img src={coverUrl} alt={title} className=\"w-full h-full object-cover\" loading=\"lazy\" />\n ) : (\n <span className=\"text-lg\">🎵</span>\n )}\n {isPlaying && (\n <div className=\"absolute inset-0 bg-black/40 flex items-center justify-center\">\n <div className=\"flex gap-0.5 items-end h-4\" aria-label=\"Playing\">\n {[0, 1, 2].map(i => (\n <motion.div\n key={i}\n className=\"w-1 rounded-full\"\n style={{ background: 'var(--dm-accent-from)' }}\n animate={{ height: ['40%', '100%', '40%'] }}\n transition={{ duration: 0.8, repeat: Infinity, delay: i * 0.15 }}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\" style={{ color: 'var(--dm-text-primary)' }}>{title}</p>\n <p className=\"text-xs truncate\" style={{ color: 'var(--dm-text-tertiary)' }}>{artist}</p>\n </div>\n <div className=\"flex flex-col items-end gap-0.5 flex-shrink-0\">\n {duration && <span className=\"text-[10px] tabular-nums\" style={{ color: 'var(--dm-text-disabled)' }}>{duration}</span>}\n {emotion && (\n <DTag size=\"xs\" variant=\"emotion\">{emotion}</DTag>\n )}\n </div>\n </DCard>\n );\n};\n\n/** User card — for creator/profile display */\ninterface DUserCardProps {\n name: string;\n avatar?: string;\n subtitle?: string;\n badge?: string;\n onClick?: () => void;\n className?: string;\n}\n\nexport const DUserCard: React.FC<DUserCardProps> = ({\n name, avatar, subtitle, badge, onClick, className,\n}) => {\n return (\n <DCard variant=\"default\" interactive onClick={onClick} padding=\"sm\" className={clsx('flex items-center gap-3', className)}>\n <div\n className=\"w-10 h-10 rounded-full flex-shrink-0 bg-gradient-to-br from-[var(--dm-accent-from)] to-[var(--dm-accent-to)] flex items-center justify-center text-white text-sm font-bold overflow-hidden\"\n >\n {avatar ? (\n <img src={avatar} alt={name} className=\"w-full h-full object-cover\" loading=\"lazy\" />\n ) : (\n name.charAt(0).toUpperCase()\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <span className=\"text-sm font-medium truncate\" style={{ color: 'var(--dm-text-primary)' }}>{name}</span>\n {badge && <DBadge variant=\"accent\" size=\"sm\">{badge}</DBadge>}\n </div>\n {subtitle && <p className=\"text-xs truncate\" style={{ color: 'var(--dm-text-tertiary)' }}>{subtitle}</p>}\n </div>\n </DCard>\n );\n};\n\n/** Achievement card — with progress ring */\ninterface DAchievementCardProps {\n title: string;\n description?: string;\n icon: string;\n progress: number; // 0-100\n unlocked?: boolean;\n rarity?: 'common' | 'rare' | 'epic' | 'legendary';\n className?: string;\n}\n\nconst rarityColors = {\n common: { color: '#9CA3AF', label: '普通' },\n rare: { color: '#3B82F6', label: '稀有' },\n epic: { color: '#A855F7', label: '史诗' },\n legendary: { color: '#F59E0B', label: '传说' },\n};\n\nexport const DAchievementCard: React.FC<DAchievementCardProps> = ({\n title, description, icon, progress, unlocked, rarity = 'common', className,\n}) => {\n const rarityInfo = rarityColors[rarity];\n return (\n <DCard\n variant=\"default\"\n padding=\"md\"\n glowColor={unlocked ? rarityInfo.color : undefined}\n className={clsx('flex items-center gap-4', !unlocked && 'opacity-60', className)}\n >\n <div className=\"relative flex-shrink-0\">\n <AchievementRing progress={progress} size={52} color={rarityInfo.color} strokeWidth={3} />\n <span className=\"absolute inset-0 flex items-center justify-center text-xl\" role=\"img\" aria-label={title}>{icon}</span>\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\" style={{ color: 'var(--dm-text-primary)' }}>{title}</p>\n {description && <p className=\"text-xs truncate\" style={{ color: 'var(--dm-text-tertiary)' }}>{description}</p>}\n <div className=\"flex items-center gap-2 mt-1\">\n <DTag size=\"xs\" style={{ color: rarityInfo.color, borderColor: `${rarityInfo.color}40`, background: `${rarityInfo.color}15` }}>\n {rarityInfo.label}\n </DTag>\n <span className=\"text-[10px] tabular-nums\" style={{ color: 'var(--dm-text-disabled)' }}>{progress}%</span>\n </div>\n </div>\n </DCard>\n );\n};\n\n// ============================================================\n// 4. DProgress — Linear & Ring\n// ============================================================\n\ninterface DProgressProps {\n value: number; // 0-100\n size?: 'sm' | 'md' | 'lg';\n variant?: 'default' | 'gradient' | 'success' | 'warning' | 'error';\n showLabel?: boolean;\n className?: string;\n 'aria-label'?: string;\n}\n\nconst progressHeights: Record<string, string> = { sm: 'h-1', md: 'h-2', lg: 'h-3' };\n\nexport const DProgress: React.FC<DProgressProps> = ({\n value,\n size = 'md',\n variant = 'gradient',\n showLabel = false,\n className,\n ...props\n}) => {\n const clamped = Math.min(100, Math.max(0, value));\n\n const fillStyle: React.CSSProperties = variant === 'gradient'\n ? { background: `linear-gradient(to right, var(--dm-accent-from), var(--dm-accent-to))`, width: `${clamped}%` }\n : variant === 'success' ? { background: 'var(--dm-success)', width: `${clamped}%` }\n : variant === 'warning' ? { background: 'var(--dm-warning)', width: `${clamped}%` }\n : variant === 'error' ? { background: 'var(--dm-error)', width: `${clamped}%` }\n : { background: 'var(--dm-accent-from)', width: `${clamped}%` };\n\n return (\n <div className={clsx('flex items-center gap-2', className)}>\n <div\n className={clsx('flex-1 rounded-full overflow-hidden', progressHeights[size])}\n style={{ background: 'var(--dm-hover-bg)' }}\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={props['aria-label'] || `Progress: ${clamped}%`}\n >\n <div\n className={clsx('h-full rounded-full transition-[width] duration-500 ease-out')}\n style={fillStyle}\n />\n </div>\n {showLabel && (\n <span className=\"text-xs tabular-nums flex-shrink-0\" style={{ color: 'var(--dm-text-tertiary)' }}>\n {clamped}%\n </span>\n )}\n </div>\n );\n};\n\n/** SVG Achievement Ring — §1.3 */\ninterface AchievementRingProps {\n progress: number; // 0-100\n size?: number;\n strokeWidth?: number;\n color?: string;\n bgColor?: string;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const AchievementRing: React.FC<AchievementRingProps> = ({\n progress,\n size = 48,\n strokeWidth = 3,\n color,\n bgColor,\n children,\n className,\n}) => {\n const clamped = Math.min(100, Math.max(0, progress));\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (clamped / 100) * circumference;\n\n return (\n <div className={clsx('relative inline-flex items-center justify-center', className)} style={{ width: size, height: size }}>\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n className=\"transform -rotate-90\"\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n {/* Background ring */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke={bgColor || 'var(--dm-hover-bg)'}\n strokeWidth={strokeWidth}\n />\n {/* Progress ring */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke={color || 'var(--dm-accent-from)'}\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n className=\"transition-[stroke-dashoffset] duration-700 ease-out\"\n style={{ filter: `drop-shadow(0 0 4px ${color || 'var(--dm-accent-from)'}60)` }}\n />\n </svg>\n {children && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n {children}\n </div>\n )}\n </div>\n );\n};\n\n// ============================================================\n// 5. DFeedback — Loading/Success/Error/Warning/Info\n// ============================================================\n\ntype FeedbackType = 'loading' | 'success' | 'error' | 'warning' | 'info';\n\ninterface DFeedbackProps {\n type: FeedbackType;\n message: string;\n description?: string;\n className?: string;\n onDismiss?: () => void;\n}\n\nconst feedbackConfig: Record<FeedbackType, { Icon: React.FC<any>; colorVar: string }> = {\n loading: { Icon: Loader2, colorVar: '--dm-info' },\n success: { Icon: CheckCircle2, colorVar: '--dm-success' },\n error: { Icon: AlertCircle, colorVar: '--dm-error' },\n warning: { Icon: AlertTriangle, colorVar: '--dm-warning' },\n info: { Icon: Info, colorVar: '--dm-info' },\n};\n\nexport const DFeedback: React.FC<DFeedbackProps> = ({\n type, message, description, className, onDismiss,\n}) => {\n const { Icon, colorVar } = feedbackConfig[type];\n const colorValue = `var(${colorVar})`;\n return (\n <motion.div\n initial={{ opacity: 0, y: -8 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -8 }}\n className={clsx(\n 'flex items-start gap-3 p-3 rounded-xl border',\n className\n )}\n style={{\n background: `color-mix(in srgb, ${colorValue} 10%, transparent)`,\n borderColor: `color-mix(in srgb, ${colorValue} 30%, transparent)`,\n }}\n role={type === 'error' ? 'alert' : 'status'}\n aria-live={type === 'error' ? 'assertive' : 'polite'}\n >\n <Icon\n className={clsx('w-5 h-5 flex-shrink-0 mt-0.5', type === 'loading' && 'animate-spin')}\n style={{ color: colorValue }}\n aria-hidden=\"true\"\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium\" style={{ color: 'var(--dm-text-primary)' }}>{message}</p>\n {description && <p className=\"text-xs mt-0.5\" style={{ color: 'var(--dm-text-secondary)' }}>{description}</p>}\n </div>\n {onDismiss && (\n <button\n onClick={onDismiss}\n className=\"p-0.5 rounded dm-focus-ring flex-shrink-0\"\n style={{ color: 'var(--dm-text-tertiary)' }}\n aria-label=\"Dismiss\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n </motion.div>\n );\n};\n\n/** Inline loading spinner */\ninterface DSpinnerProps {\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n}\n\nexport const DSpinner: React.FC<DSpinnerProps> = ({ size = 'md', className }) => {\n const sizes = { sm: 'w-4 h-4', md: 'w-6 h-6', lg: 'w-8 h-8' };\n return (\n <Loader2\n className={clsx('animate-spin', sizes[size], className)}\n style={{ color: 'var(--dm-accent-from)' }}\n aria-label=\"Loading\"\n />\n );\n};\n\n// ============================================================\n// 6. DBadge\n// ============================================================\n\ntype BadgeVariant = 'default' | 'accent' | 'success' | 'warning' | 'error' | 'info';\n\ninterface DBadgeProps {\n variant?: BadgeVariant;\n size?: 'sm' | 'md';\n children: React.ReactNode;\n className?: string;\n dot?: boolean;\n}\n\nconst badgeVariants: Record<BadgeVariant, string> = {\n default: 'bg-[var(--dm-hover-bg)] text-[var(--dm-text-secondary)] border-[var(--dm-border-subtle)]',\n accent: 'bg-[var(--dm-accent-from)]/15 text-[var(--dm-accent-from)] border-[var(--dm-accent-from)]/30',\n success: 'bg-[var(--dm-success)]/15 text-[var(--dm-success)] border-[var(--dm-success)]/30',\n warning: 'bg-[var(--dm-warning)]/15 text-[var(--dm-warning)] border-[var(--dm-warning)]/30',\n error: 'bg-[var(--dm-error)]/15 text-[var(--dm-error)] border-[var(--dm-error)]/30',\n info: 'bg-[var(--dm-info)]/15 text-[var(--dm-info)] border-[var(--dm-info)]/30',\n};\n\nexport const DBadge: React.FC<DBadgeProps> = ({\n variant = 'default',\n size = 'sm',\n children,\n className,\n dot = false,\n}) => {\n return (\n <span\n className={clsx(\n 'inline-flex items-center gap-1 border rounded-full font-medium',\n size === 'sm' ? 'px-1.5 py-0.5 text-[10px]' : 'px-2 py-0.5 text-xs',\n badgeVariants[variant],\n className\n )}\n >\n {dot && (\n <span className=\"w-1.5 h-1.5 rounded-full bg-current\" aria-hidden=\"true\" />\n )}\n {children}\n </span>\n );\n};\n\n// ============================================================\n// 7. DTag — genre/mood/status tags\n// ============================================================\n\ninterface DTagProps {\n variant?: 'default' | 'emotion' | 'outline';\n size?: 'xs' | 'sm' | 'md';\n children: React.ReactNode;\n onRemove?: () => void;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const DTag: React.FC<DTagProps> = ({\n variant = 'default',\n size = 'sm',\n children,\n onRemove,\n className,\n style,\n}) => {\n const sizeClasses = {\n xs: 'px-1.5 py-0 text-[9px]',\n sm: 'px-2 py-0.5 text-[10px]',\n md: 'px-2.5 py-1 text-xs',\n };\n\n return (\n <span\n className={clsx(\n 'inline-flex items-center gap-1 rounded-full font-medium border',\n sizeClasses[size],\n variant === 'emotion'\n ? 'bg-[var(--dm-accent-from)]/10 text-[var(--dm-accent-from)] border-[var(--dm-accent-from)]/20'\n : variant === 'outline'\n ? 'bg-transparent text-[var(--dm-text-secondary)] border-[var(--dm-border)]'\n : 'bg-[var(--dm-hover-bg)] text-[var(--dm-text-secondary)] border-[var(--dm-border-subtle)]',\n className\n )}\n style={style}\n >\n {children}\n {onRemove && (\n <button\n onClick={onRemove}\n className=\"p-0 rounded-full hover:text-[var(--dm-text-primary)] dm-focus-ring\"\n aria-label={`Remove ${children}`}\n >\n <X className=\"w-3 h-3\" />\n </button>\n )}\n </span>\n );\n};\n\n// ============================================================\n// 8. DEmptyState — Placeholder for empty lists\n// ============================================================\n\ninterface DEmptyStateProps {\n icon?: string;\n title: string;\n description?: string;\n action?: React.ReactNode;\n className?: string;\n}\n\nexport const DEmptyState: React.FC<DEmptyStateProps> = ({\n icon = '🎵',\n title,\n description,\n action,\n className,\n}) => {\n return (\n <div className={clsx('flex flex-col items-center justify-center py-12 px-6 text-center', className)}>\n <span className=\"text-4xl mb-4\" role=\"img\" aria-hidden=\"true\">{icon}</span>\n <h3 className=\"text-base font-medium mb-1\" style={{ color: 'var(--dm-text-primary)' }}>{title}</h3>\n {description && (\n <p className=\"text-sm max-w-xs\" style={{ color: 'var(--dm-text-tertiary)' }}>{description}</p>\n )}\n {action && <div className=\"mt-4\">{action}</div>}\n </div>\n );\n};\n\n// ============================================================\n// 9. DList — Styled list container\n// ============================================================\n\ninterface DListProps {\n children: React.ReactNode;\n label?: string;\n className?: string;\n divided?: boolean;\n}\n\nexport const DList: React.FC<DListProps> = ({\n children,\n label,\n className,\n divided = true,\n}) => {\n return (\n <div className={clsx(className)} role=\"list\" aria-label={label}>\n <div className={clsx(divided && 'divide-y divide-[var(--dm-border-subtle)]')}>\n {children}\n </div>\n </div>\n );\n};\n\ninterface DListItemProps {\n children: React.ReactNode;\n onClick?: () => void;\n className?: string;\n active?: boolean;\n}\n\nexport const DListItem: React.FC<DListItemProps> = ({\n children,\n onClick,\n className,\n active = false,\n}) => {\n return (\n <div\n role=\"listitem\"\n onClick={onClick}\n onKeyDown={onClick ? (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick(); } } : undefined}\n tabIndex={onClick ? 0 : undefined}\n className={clsx(\n 'px-3 py-2.5',\n onClick && 'cursor-pointer hover:bg-[var(--dm-hover-bg)] dm-focus-ring transition-colors',\n active && 'bg-[var(--dm-active-bg)]',\n className\n )}\n >\n {children}\n </div>\n );\n};\n\n// ============================================================\n// 10. DModal — Dialog/Modal component (§1.1)\n// ============================================================\n\ninterface DModalProps {\n isOpen: boolean;\n onClose: () => void;\n title: string;\n description?: string;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n closeOnBackdrop?: boolean;\n}\n\nconst modalSizes: Record<string, string> = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n};\n\nexport const DModal: React.FC<DModalProps> = ({\n isOpen,\n onClose,\n title,\n description,\n children,\n footer,\n size = 'md',\n className,\n closeOnBackdrop = true,\n}) => {\n const modalRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!isOpen) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') { e.preventDefault(); onClose(); }\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [isOpen, onClose]);\n\n React.useEffect(() => {\n if (isOpen && modalRef.current) {\n const firstFocusable = modalRef.current.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n firstFocusable?.focus();\n }\n }, [isOpen]);\n\n if (!isOpen) return null;\n\n return (\n <>\n {/* Backdrop */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.2 }}\n className=\"fixed inset-0 z-[70] backdrop-blur-sm\"\n style={{ background: 'var(--dm-bg-overlay, rgba(0,0,0,0.5))' }}\n onClick={closeOnBackdrop ? onClose : undefined}\n aria-hidden=\"true\"\n />\n {/* Dialog */}\n <div className=\"fixed inset-0 z-[71] flex items-center justify-center p-4\">\n <motion.div\n ref={modalRef}\n initial={{ opacity: 0, scale: 0.95, y: 10 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: 10 }}\n transition={{ type: 'spring', damping: 25, stiffness: 350 }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n className={clsx(\n 'w-full rounded-2xl border shadow-2xl overflow-hidden',\n modalSizes[size],\n className\n )}\n style={{\n background: 'var(--dm-bg-panel)',\n borderColor: 'var(--dm-border-subtle)',\n backdropFilter: 'blur(20px)',\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div\n className=\"flex items-center justify-between px-5 py-4\"\n style={{ borderBottom: '1px solid var(--dm-border-subtle)' }}\n >\n <div className=\"min-w-0\">\n <h3 className=\"font-semibold text-sm\" style={{ color: 'var(--dm-text-primary)' }}>\n {title}\n </h3>\n {description && (\n <p className=\"text-xs mt-0.5\" style={{ color: 'var(--dm-text-tertiary)' }}>\n {description}\n </p>\n )}\n </div>\n <button\n onClick={onClose}\n className=\"p-1.5 rounded-lg transition-colors dm-focus-ring flex-shrink-0 hover:bg-[var(--dm-hover-bg)]\"\n style={{ color: 'var(--dm-text-tertiary)' }}\n aria-label=\"Close dialog\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n {/* Body */}\n <div className=\"px-5 py-4 overflow-y-auto max-h-[60vh]\">\n {children}\n </div>\n {/* Footer */}\n {footer && (\n <div\n className=\"px-5 py-3 flex justify-end gap-2\"\n style={{ borderTop: '1px solid var(--dm-border-subtle)' }}\n >\n {footer}\n </div>\n )}\n </motion.div>\n </div>\n </>\n );\n};\n\n// ============================================================\n// 11. DTabBar — Navigation tabs (§1.1)\n// ============================================================\n\ninterface DTabItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n badge?: number;\n disabled?: boolean;\n}\n\ninterface DTabBarProps {\n tabs: DTabItem[];\n activeTab: string;\n onTabChange: (id: string) => void;\n variant?: 'default' | 'pills' | 'underline';\n size?: 'sm' | 'md';\n className?: string;\n fullWidth?: boolean;\n}\n\nexport const DTabBar: React.FC<DTabBarProps> = ({\n tabs,\n activeTab,\n onTabChange,\n variant = 'default',\n size = 'md',\n className,\n fullWidth = false,\n}) => {\n return (\n <div\n role=\"tablist\"\n className={clsx(\n 'flex',\n variant === 'default' && 'gap-1 p-1 rounded-xl',\n variant === 'pills' && 'gap-2',\n variant === 'underline' && 'gap-0',\n fullWidth && 'w-full',\n className\n )}\n style={variant === 'default' ? { background: 'var(--dm-hover-bg)' } : undefined}\n >\n {tabs.map(tab => {\n const isActive = tab.id === activeTab;\n return (\n <button\n key={tab.id}\n role=\"tab\"\n aria-selected={isActive}\n aria-disabled={tab.disabled}\n onClick={() => !tab.disabled && onTabChange(tab.id)}\n className={clsx(\n 'relative inline-flex items-center justify-center gap-1.5 font-medium transition-all dm-focus-ring',\n fullWidth && 'flex-1',\n tab.disabled && 'opacity-40 cursor-not-allowed',\n size === 'sm' ? 'px-2.5 py-1 text-xs' : 'px-3.5 py-1.5 text-sm',\n variant === 'default' && clsx(\n 'rounded-lg',\n isActive\n ? 'bg-[var(--dm-bg-panel)] text-[var(--dm-text-primary)] shadow-sm'\n : 'text-[var(--dm-text-tertiary)] hover:text-[var(--dm-text-secondary)]'\n ),\n variant === 'pills' && clsx(\n 'rounded-full border',\n isActive\n ? 'bg-[var(--dm-accent-from)]/15 text-[var(--dm-accent-from)] border-[var(--dm-accent-from)]/30'\n : 'text-[var(--dm-text-tertiary)] border-transparent hover:text-[var(--dm-text-secondary)] hover:bg-[var(--dm-hover-bg)]'\n ),\n variant === 'underline' && clsx(\n 'pb-2',\n isActive\n ? 'text-[var(--dm-text-primary)]'\n : 'text-[var(--dm-text-tertiary)] hover:text-[var(--dm-text-secondary)]'\n )\n )}\n >\n {tab.icon && <span className=\"flex-shrink-0\" aria-hidden=\"true\">{tab.icon}</span>}\n <span>{tab.label}</span>\n {tab.badge !== undefined && tab.badge > 0 && (\n <span\n className=\"min-w-[16px] h-4 px-1 rounded-full text-[10px] font-bold flex items-center justify-center\"\n style={{\n background: isActive ? 'var(--dm-accent-from)' : 'var(--dm-hover-bg)',\n color: isActive ? '#fff' : 'var(--dm-text-tertiary)',\n }}\n >\n {tab.badge > 99 ? '99+' : tab.badge}\n </span>\n )}\n {/* Underline indicator */}\n {variant === 'underline' && isActive && (\n <motion.div\n layoutId=\"tab-underline\"\n className=\"absolute bottom-0 left-2 right-2 h-0.5 rounded-full\"\n style={{ background: 'var(--dm-accent-from)' }}\n transition={{ type: 'spring', damping: 25, stiffness: 300 }}\n />\n )}\n </button>\n );\n })}\n </div>\n );\n};\n\n// ============================================================\n// 12. DToast — Notification toast (§1.1 Feedback)\n// ============================================================\n\ntype ToastVariant = 'success' | 'error' | 'warning' | 'info';\n\ninterface DToastProps {\n variant: ToastVariant;\n message: string;\n description?: string;\n duration?: number;\n onDismiss: () => void;\n className?: string;\n}\n\nexport const DToast: React.FC<DToastProps> = ({\n variant,\n message,\n description,\n onDismiss,\n className,\n}) => {\n const { Icon, colorVar } = feedbackConfig[variant];\n const colorValue = `var(${colorVar})`;\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 50, scale: 0.9 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: 20, scale: 0.95 }}\n transition={{ type: 'spring', damping: 25, stiffness: 400 }}\n className={clsx(\n 'flex items-start gap-3 p-3 rounded-xl border shadow-lg max-w-sm pointer-events-auto',\n className\n )}\n style={{\n background: 'var(--dm-bg-elevated)',\n borderColor: `color-mix(in srgb, ${colorValue} 30%, transparent)`,\n boxShadow: 'var(--dm-shadow-lg)',\n }}\n role=\"alert\"\n aria-live=\"assertive\"\n >\n <Icon\n className=\"w-5 h-5 flex-shrink-0 mt-0.5\"\n style={{ color: colorValue }}\n aria-hidden=\"true\"\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium\" style={{ color: 'var(--dm-text-primary)' }}>{message}</p>\n {description && <p className=\"text-xs mt-0.5\" style={{ color: 'var(--dm-text-secondary)' }}>{description}</p>}\n </div>\n <button\n onClick={onDismiss}\n className=\"p-0.5 rounded dm-focus-ring flex-shrink-0\"\n style={{ color: 'var(--dm-text-tertiary)' }}\n aria-label=\"Dismiss\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </motion.div>\n );\n};\n\n// ============================================================\n// 13. DBreadcrumb — Navigation breadcrumb (§1.1)\n// ============================================================\n\ninterface DBreadcrumbItem {\n label: string;\n href?: string;\n onClick?: () => void;\n}\n\ninterface DBreadcrumbProps {\n items: DBreadcrumbItem[];\n separator?: React.ReactNode;\n className?: string;\n}\n\nexport const DBreadcrumb: React.FC<DBreadcrumbProps> = ({\n items,\n separator,\n className,\n}) => {\n const sep = separator || (\n <span className=\"text-[10px] mx-1\" style={{ color: 'var(--dm-text-disabled)' }} aria-hidden=\"true\">/</span>\n );\n\n return (\n <nav aria-label=\"Breadcrumb\" className={clsx('flex items-center flex-wrap', className)}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <React.Fragment key={index}>\n {isLast ? (\n <span\n className=\"text-xs font-medium\"\n style={{ color: 'var(--dm-text-primary)' }}\n aria-current=\"page\"\n >\n {item.label}\n </span>\n ) : (\n <>\n <button\n onClick={item.onClick}\n className=\"text-xs hover:underline dm-focus-ring transition-colors\"\n style={{ color: 'var(--dm-text-tertiary)' }}\n >\n {item.label}\n </button>\n {sep}\n </>\n )}\n </React.Fragment>\n );\n })}\n </nav>\n );\n};","/**\n * D-Music §1.2 — Unified Panel Component\n *\n * A standardized panel shell for all D-Music side panels/drawers/modals.\n *\n * Features:\n * - Unified visual style (glassmorphism, theme-aware)\n * - Clear information hierarchy (header → body → optional footer)\n * - Smooth spring animation (enter from right)\n * - Mobile: fullscreen panel / bottom drawer\n * - Desktop: side drawer (right) with backdrop\n * - Keyboard: Escape to close, focus trap\n * - WCAG 2.1 AA: role=\"dialog\", aria-modal, aria-label\n *\n * Panel Types Supported:\n * playlist, profile, community, analytics, ai-lyrics, leaderboard,\n * recommendations, creation-studio, mv-creator, space-time, star-power,\n * ip-matrix, achievements, discover-hub, copyright, shop, challenge,\n * fork-tree, mheart, smart-playlist, live-session, comments\n *\n * Usage:\n * <DPanel isOpen={show} onClose={close} title=\"播放列表\" icon={<Music />}>\n * <PlaylistContent />\n * </DPanel>\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport { motion, AnimatePresence } from 'motion/react';\nimport { X } from 'lucide-react';\nimport { clsx } from 'clsx';\n\nexport type PanelSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\ninterface DPanelProps {\n isOpen: boolean;\n onClose: () => void;\n title: string;\n subtitle?: string;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: PanelSize;\n /** Section label (e.g., \"§19.x\") shown in bottom hint */\n sectionLabel?: string;\n className?: string;\n /** If true, panel enters from bottom on mobile */\n mobileBottomSheet?: boolean;\n /** If true, no backdrop blur */\n noBackdrop?: boolean;\n /** Custom header-right actions */\n headerActions?: React.ReactNode;\n}\n\nconst panelSizes: Record<PanelSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n full: 'max-w-full',\n};\n\nexport const DPanel: React.FC<DPanelProps> = ({\n isOpen,\n onClose,\n title,\n subtitle,\n icon,\n children,\n footer,\n size = 'md',\n sectionLabel,\n className,\n mobileBottomSheet = false,\n noBackdrop = false,\n headerActions,\n}) => {\n const panelRef = useRef<HTMLDivElement>(null);\n\n // Keyboard: Escape to close\n useEffect(() => {\n if (!isOpen) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose();\n }\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [isOpen, onClose]);\n\n // Focus trap: focus panel on open\n useEffect(() => {\n if (isOpen && panelRef.current) {\n const firstFocusable = panelRef.current.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n firstFocusable?.focus();\n }\n }, [isOpen]);\n\n return (\n <AnimatePresence>\n {isOpen && (\n <>\n {/* Backdrop */}\n {!noBackdrop && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.2 }}\n className=\"fixed inset-0 z-[60] backdrop-blur-sm\"\n style={{ background: 'var(--dm-bg-overlay, rgba(0,0,0,0.4))' }}\n onClick={onClose}\n aria-hidden=\"true\"\n />\n )}\n\n {/* Panel */}\n <motion.div\n ref={panelRef}\n initial={mobileBottomSheet\n ? { y: '100%', opacity: 0 }\n : { x: '100%', opacity: 0 }\n }\n animate={mobileBottomSheet\n ? { y: 0, opacity: 1 }\n : { x: 0, opacity: 1 }\n }\n exit={mobileBottomSheet\n ? { y: '100%', opacity: 0 }\n : { x: '100%', opacity: 0 }\n }\n transition={{ type: 'spring', damping: 28, stiffness: 300 }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n className={clsx(\n 'fixed z-[61] flex flex-col shadow-2xl',\n // Responsive positioning\n mobileBottomSheet\n ? 'bottom-0 left-0 right-0 max-h-[85vh] rounded-t-2xl'\n : 'right-0 top-0 bottom-0 w-full',\n !mobileBottomSheet && panelSizes[size],\n className\n )}\n style={{\n background: 'var(--dm-bg-panel, #0D1235)',\n borderLeft: mobileBottomSheet ? 'none' : '1px solid var(--dm-border-subtle)',\n borderTop: mobileBottomSheet ? '1px solid var(--dm-border-subtle)' : 'none',\n backdropFilter: 'blur(20px)',\n WebkitBackdropFilter: 'blur(20px)',\n }}\n >\n {/* ── Header ── */}\n <div\n className=\"flex items-center justify-between px-5 py-4 flex-shrink-0\"\n style={{ borderBottom: '1px solid var(--dm-border-subtle)' }}\n >\n <div className=\"flex items-center gap-3 min-w-0\">\n {icon && (\n <div\n className=\"w-8 h-8 rounded-xl flex items-center justify-center flex-shrink-0\"\n style={{\n background: 'linear-gradient(135deg, var(--dm-accent-from, #8B5CF6)20, var(--dm-accent-to, #EC4899)20)',\n border: '1px solid var(--dm-border)',\n }}\n >\n <span style={{ color: 'var(--dm-accent-from)' }}>{icon}</span>\n </div>\n )}\n <div className=\"min-w-0\">\n <h3\n className=\"font-semibold text-sm truncate\"\n style={{ color: 'var(--dm-text-primary)' }}\n >\n {title}\n </h3>\n {subtitle && (\n <p\n className=\"text-xs truncate\"\n style={{ color: 'var(--dm-text-tertiary)' }}\n >\n {subtitle}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n {headerActions}\n <button\n onClick={onClose}\n className=\"p-1.5 rounded-lg transition-colors dm-focus-ring\"\n style={{\n color: 'var(--dm-text-tertiary)',\n background: 'transparent',\n }}\n onMouseEnter={e => {\n (e.target as HTMLElement).style.background = 'var(--dm-hover-bg)';\n (e.target as HTMLElement).style.color = 'var(--dm-text-primary)';\n }}\n onMouseLeave={e => {\n (e.target as HTMLElement).style.background = 'transparent';\n (e.target as HTMLElement).style.color = 'var(--dm-text-tertiary)';\n }}\n aria-label=\"Close panel\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n {/* ── Body ── */}\n <div className=\"flex-1 overflow-y-auto overflow-x-hidden no-scrollbar\">\n {children}\n </div>\n\n {/* ── Footer (optional) ── */}\n {footer && (\n <div\n className=\"flex-shrink-0 px-5 py-3\"\n style={{ borderTop: '1px solid var(--dm-border-subtle)' }}\n >\n {footer}\n </div>\n )}\n\n {/* ── Section hint ── */}\n {sectionLabel && (\n <div className=\"px-5 pb-2 flex-shrink-0\">\n <p className=\"text-[9px] text-center\" style={{ color: 'var(--dm-text-disabled)' }}>\n {sectionLabel}\n </p>\n </div>\n )}\n </motion.div>\n </>\n )}\n </AnimatePresence>\n );\n};\n","/**\n * D-Music §1.3 — Data Visualization Components\n *\n * Unified visualization library:\n * 1. StarPowerChart — Star Power growth curve (Recharts)\n * 2. EmotionPieChart — Emotion distribution pie chart\n * 3. PlayStatsChart — Play count bar chart with trend line\n * 4. AchievementGrid — Achievement progress ring grid\n * 5. SparklineChart — Inline mini sparkline for compact display\n * 6. DataExportButton — Export data as CSV/JSON\n *\n * Design Requirements:\n * - Real-time update capable\n * - 60fps (Recharts + SVG, no forced reflows)\n * - Clear data labels\n * - WCAG 2.1 AA accessible (aria-labels, screen-reader text)\n * - Unified color palette from design-tokens.ts\n *\n * Technology:\n * - Canvas API for AudioVisualizer (existing)\n * - Recharts for data charts\n * - SVG for progress rings (AchievementRing from DMusicUI)\n * - CSS animations for transitions\n */\n\nimport React, { useMemo } from 'react';\nimport {\n LineChart, Line, BarChart, Bar, PieChart, Pie, Cell,\n XAxis, YAxis, Tooltip, ResponsiveContainer, CartesianGrid,\n Area, AreaChart, Legend,\n} from 'recharts';\nimport { clsx } from 'clsx';\nimport { Download } from 'lucide-react';\nimport { DButton, AchievementRing } from './DMusicUI';\n\n// ============================================================\n// Unified Data Visualization Color Palette — §1.3\n// ============================================================\n\nexport const DATA_VIZ_PALETTE = {\n primary: [\n '#8B5CF6', // Violet\n '#EC4899', // Pink\n '#06B6D4', // Cyan\n '#F59E0B', // Amber\n '#22C55E', // Green\n '#3B82F6', // Blue\n '#EF4444', // Red\n '#A855F7', // Purple\n ],\n emotion: {\n happy: '#FFD700',\n sad: '#6495ED',\n energetic: '#FF4500',\n calm: '#00CED1',\n neutral: '#667EEA',\n love: '#FF6B9D',\n nostalgic: '#DEB887',\n hopeful: '#98FB98',\n angry: '#DC143C',\n romantic: '#FFB6C1',\n } as Record<string, string>,\n semantic: {\n success: '#22C55E',\n warning: '#F59E0B',\n error: '#EF4444',\n info: '#3B82F6',\n },\n} as const;\n\n// ============================================================\n// Custom Tooltip — Unified dark-glass style\n// ============================================================\n\nconst GlassTooltip: React.FC<any> = ({ active, payload, label, formatter }) => {\n if (!active || !payload?.length) return null;\n return (\n <div\n className=\"rounded-xl border px-3 py-2 text-xs backdrop-blur-xl\"\n style={{\n background: 'var(--dm-bg-overlay)',\n borderColor: 'var(--dm-border)',\n }}\n >\n {label && (\n <p className=\"font-medium mb-1\" style={{ color: 'var(--dm-text-secondary)' }}>\n {label}\n </p>\n )}\n {payload.map((entry: any, i: number) => (\n <p key={i} className=\"flex items-center gap-2\" style={{ color: entry.color }}>\n <span\n className=\"w-2 h-2 rounded-full flex-shrink-0\"\n style={{ background: entry.color }}\n />\n <span style={{ color: 'var(--dm-text-primary)' }}>\n {entry.name}: {formatter ? formatter(entry.value) : entry.value}\n </span>\n </p>\n ))}\n </div>\n );\n};\n\n// ============================================================\n// 1. StarPowerChart — Growth Curve (§1.3.7)\n// ============================================================\n\ninterface StarPowerChartProps {\n data: { date: string; value: number; earned?: number; spent?: number }[];\n height?: number;\n className?: string;\n lang?: 'zh' | 'en';\n}\n\nexport const StarPowerChart: React.FC<StarPowerChartProps> = ({\n data,\n height = 200,\n className,\n lang = 'zh',\n}) => {\n return (\n <div className={clsx('w-full', className)} role=\"img\" aria-label={lang === 'zh' ? '星力值增长曲线' : 'Star Power Growth Curve'}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <AreaChart data={data} margin={{ top: 5, right: 5, left: -20, bottom: 0 }}>\n <defs>\n <linearGradient id=\"spGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"#8B5CF6\" stopOpacity={0.4} />\n <stop offset=\"100%\" stopColor=\"#8B5CF6\" stopOpacity={0.05} />\n </linearGradient>\n </defs>\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"var(--dm-border-subtle)\" vertical={false} />\n <XAxis\n dataKey=\"date\"\n tick={{ fill: 'var(--dm-text-disabled)', fontSize: 10 }}\n axisLine={{ stroke: 'var(--dm-border-subtle)' }}\n tickLine={false}\n />\n <YAxis\n tick={{ fill: 'var(--dm-text-disabled)', fontSize: 10 }}\n axisLine={false}\n tickLine={false}\n />\n <Tooltip content={<GlassTooltip />} />\n <Area\n type=\"monotone\"\n dataKey=\"value\"\n stroke=\"#8B5CF6\"\n strokeWidth={2}\n fill=\"url(#spGradient)\"\n name={lang === 'zh' ? '星力值' : 'Star Power'}\n dot={false}\n activeDot={{ r: 4, fill: '#8B5CF6', stroke: '#fff', strokeWidth: 2 }}\n />\n {data[0]?.earned !== undefined && (\n <Line\n type=\"monotone\"\n dataKey=\"earned\"\n stroke=\"#22C55E\"\n strokeWidth={1.5}\n strokeDasharray=\"4 4\"\n dot={false}\n name={lang === 'zh' ? '获得' : 'Earned'}\n />\n )}\n </AreaChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\n// ============================================================\n// 2. EmotionPieChart — Emotion Distribution (§1.3.4)\n// ============================================================\n\ninterface EmotionPieChartProps {\n data: { emotion: string; count: number; pct?: number }[];\n size?: number;\n className?: string;\n lang?: 'zh' | 'en';\n}\n\nconst EMOTION_LABELS_ZH: Record<string, string> = {\n happy: '开心', sad: '忧伤', energetic: '活力', calm: '平静',\n neutral: '中性', love: '爱意', nostalgic: '怀旧', hopeful: '希望',\n angry: '愤怒', romantic: '浪漫',\n};\n\nexport const EmotionPieChart: React.FC<EmotionPieChartProps> = ({\n data,\n size = 180,\n className,\n lang = 'zh',\n}) => {\n const chartData = useMemo(() =>\n data.map(d => ({\n ...d,\n label: lang === 'zh' ? (EMOTION_LABELS_ZH[d.emotion] || d.emotion) : d.emotion,\n fill: DATA_VIZ_PALETTE.emotion[d.emotion] || '#667EEA',\n })),\n [data, lang]\n );\n\n return (\n <div className={clsx('flex items-center gap-4', className)} role=\"img\" aria-label={lang === 'zh' ? '情绪分布' : 'Emotion Distribution'}>\n <ResponsiveContainer width={size} height={size}>\n <PieChart>\n <Pie\n data={chartData}\n dataKey=\"count\"\n nameKey=\"label\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={size * 0.3}\n outerRadius={size * 0.44}\n paddingAngle={2}\n strokeWidth={0}\n >\n {chartData.map((entry, index) => (\n <Cell key={index} fill={entry.fill} />\n ))}\n </Pie>\n <Tooltip content={<GlassTooltip />} />\n </PieChart>\n </ResponsiveContainer>\n <div className=\"flex flex-col gap-1 min-w-0\">\n {chartData.slice(0, 5).map((d, i) => (\n <div key={i} className=\"flex items-center gap-2 text-xs\">\n <span className=\"w-2 h-2 rounded-full flex-shrink-0\" style={{ background: d.fill }} />\n <span className=\"truncate\" style={{ color: 'var(--dm-text-secondary)' }}>{d.label}</span>\n <span className=\"ml-auto tabular-nums\" style={{ color: 'var(--dm-text-disabled)' }}>\n {d.pct ?? d.count}%\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n};\n\n// ============================================================\n// 3. PlayStatsChart — Bar Chart with Trend (§1.3.4)\n// ============================================================\n\ninterface PlayStatsChartProps {\n data: { name: string; plays: number; likes?: number }[];\n height?: number;\n className?: string;\n lang?: 'zh' | 'en';\n}\n\nexport const PlayStatsChart: React.FC<PlayStatsChartProps> = ({\n data,\n height = 200,\n className,\n lang = 'zh',\n}) => {\n return (\n <div className={clsx('w-full', className)} role=\"img\" aria-label={lang === 'zh' ? '播放统计' : 'Play Statistics'}>\n <ResponsiveContainer width=\"100%\" height={height}>\n <BarChart data={data} margin={{ top: 5, right: 5, left: -20, bottom: 0 }}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"var(--dm-border-subtle)\" vertical={false} />\n <XAxis\n dataKey=\"name\"\n tick={{ fill: 'var(--dm-text-disabled)', fontSize: 10 }}\n axisLine={{ stroke: 'var(--dm-border-subtle)' }}\n tickLine={false}\n />\n <YAxis\n tick={{ fill: 'var(--dm-text-disabled)', fontSize: 10 }}\n axisLine={false}\n tickLine={false}\n />\n <Tooltip content={<GlassTooltip />} />\n <Legend\n wrapperStyle={{ fontSize: 11, color: 'var(--dm-text-tertiary)' }}\n />\n <Bar\n dataKey=\"plays\"\n name={lang === 'zh' ? '播放量' : 'Plays'}\n fill=\"#8B5CF6\"\n radius={[4, 4, 0, 0]}\n maxBarSize={32}\n />\n {data[0]?.likes !== undefined && (\n <Bar\n dataKey=\"likes\"\n name={lang === 'zh' ? '点赞' : 'Likes'}\n fill=\"#EC4899\"\n radius={[4, 4, 0, 0]}\n maxBarSize={32}\n />\n )}\n </BarChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\n// ============================================================\n// 4. AchievementGrid — Progress Ring Grid (§1.3.6)\n// ============================================================\n\ninterface AchievementGridItem {\n id: string;\n title: string;\n icon: string;\n progress: number;\n color?: string;\n}\n\ninterface AchievementGridProps {\n items: AchievementGridItem[];\n columns?: number;\n className?: string;\n}\n\nexport const AchievementGrid: React.FC<AchievementGridProps> = ({\n items,\n columns = 4,\n className,\n}) => {\n return (\n <div\n className={clsx('grid gap-4', className)}\n style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` }}\n role=\"list\"\n aria-label=\"Achievements\"\n >\n {items.map((item) => (\n <div key={item.id} className=\"flex flex-col items-center gap-1.5\" role=\"listitem\">\n <AchievementRing\n progress={item.progress}\n size={56}\n strokeWidth={3}\n color={item.color || 'var(--dm-accent-from)'}\n >\n <span className=\"text-lg\" role=\"img\" aria-label={item.title}>{item.icon}</span>\n </AchievementRing>\n <span className=\"text-[10px] text-center truncate w-full\" style={{ color: 'var(--dm-text-tertiary)' }}>\n {item.title}\n </span>\n <span className=\"text-[9px] tabular-nums\" style={{ color: 'var(--dm-text-disabled)' }}>\n {item.progress}%\n </span>\n </div>\n ))}\n </div>\n );\n};\n\n// ============================================================\n// 5. SparklineChart — Mini Inline Sparkline\n// ============================================================\n\ninterface SparklineChartProps {\n data: number[];\n width?: number;\n height?: number;\n color?: string;\n showDot?: boolean;\n className?: string;\n}\n\nexport const SparklineChart: React.FC<SparklineChartProps> = ({\n data,\n width = 80,\n height = 24,\n color = '#8B5CF6',\n showDot = true,\n className,\n}) => {\n const chartData = useMemo(() => data.map((v, i) => ({ i, v })), [data]);\n\n return (\n <div className={clsx('inline-flex', className)} role=\"img\" aria-label=\"Trend\">\n <ResponsiveContainer width={width} height={height}>\n <LineChart data={chartData} margin={{ top: 2, right: 4, bottom: 2, left: 4 }}>\n <Line\n type=\"monotone\"\n dataKey=\"v\"\n stroke={color}\n strokeWidth={1.5}\n dot={false}\n activeDot={showDot ? { r: 2, fill: color } : false}\n />\n </LineChart>\n </ResponsiveContainer>\n </div>\n );\n};\n\n// ============================================================\n// 6. DataExportButton — Export data as CSV/JSON (§1.3 requirement)\n// ============================================================\n\ninterface DataExportButtonProps {\n data: any[];\n filename?: string;\n format?: 'csv' | 'json';\n label?: string;\n className?: string;\n}\n\nexport const DataExportButton: React.FC<DataExportButtonProps> = ({\n data,\n filename = 'dmusic-data',\n format = 'csv',\n label,\n className,\n}) => {\n const handleExport = () => {\n let content: string;\n let mimeType: string;\n\n if (format === 'csv') {\n if (data.length === 0) return;\n const keys = Object.keys(data[0]);\n const rows = [keys.join(','), ...data.map(row => keys.map(k => JSON.stringify(row[k] ?? '')).join(','))];\n content = rows.join('\\n');\n mimeType = 'text/csv';\n } else {\n content = JSON.stringify(data, null, 2);\n mimeType = 'application/json';\n }\n\n const blob = new Blob([content], { type: mimeType });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `${filename}.${format}`;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n };\n\n return (\n <DButton\n variant=\"ghost\"\n size=\"sm\"\n icon={<Download className=\"w-3.5 h-3.5\" />}\n onClick={handleExport}\n className={className}\n aria-label={label || `Export as ${format.toUpperCase()}`}\n >\n {label || format.toUpperCase()}\n </DButton>\n );\n};\n\n// ============================================================\n// 7. StatCard — Key metric display with sparkline\n// ============================================================\n\ninterface StatCardProps {\n label: string;\n value: string | number;\n change?: number; // percentage change\n trend?: number[];\n icon?: React.ReactNode;\n className?: string;\n}\n\nexport const StatCard: React.FC<StatCardProps> = ({\n label, value, change, trend, icon, className,\n}) => {\n const isPositive = (change ?? 0) >= 0;\n return (\n <div\n className={clsx('rounded-xl border p-4 flex flex-col gap-2', className)}\n style={{\n background: 'var(--dm-bg-elevated)',\n borderColor: 'var(--dm-border-subtle)',\n }}\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs\" style={{ color: 'var(--dm-text-tertiary)' }}>{label}</span>\n {icon && <span style={{ color: 'var(--dm-text-disabled)' }}>{icon}</span>}\n </div>\n <div className=\"flex items-end justify-between\">\n <span className=\"text-2xl font-bold tabular-nums\" style={{ color: 'var(--dm-text-primary)' }}>{value}</span>\n <div className=\"flex flex-col items-end gap-1\">\n {change !== undefined && (\n <span\n className=\"text-xs font-medium tabular-nums\"\n style={{ color: isPositive ? 'var(--dm-success)' : 'var(--dm-error)' }}\n >\n {isPositive ? '+' : ''}{change}%\n </span>\n )}\n {trend && trend.length > 2 && (\n <SparklineChart\n data={trend}\n width={60}\n height={20}\n color={isPositive ? '#22C55E' : '#EF4444'}\n />\n )}\n </div>\n </div>\n </div>\n );\n};\n\n// ============================================================\n// 8. RankingList — Leaderboard/Ranking visualization (§1.3.5)\n// ============================================================\n\ninterface RankingItem {\n rank: number;\n name: string;\n score: number;\n avatar?: string;\n change?: 'up' | 'down' | 'same' | 'new';\n highlight?: boolean;\n}\n\ninterface RankingListProps {\n items: RankingItem[];\n maxItems?: number;\n valueLabel?: string;\n className?: string;\n lang?: 'zh' | 'en';\n onItemClick?: (item: RankingItem) => void;\n}\n\nconst RANK_MEDAL: Record<number, string> = { 1: '🥇', 2: '🥈', 3: '🥉' };\nconst RANK_COLORS: Record<number, string> = { 1: '#FFD700', 2: '#C0C0C0', 3: '#CD7F32' };\n\nexport const RankingList: React.FC<RankingListProps> = ({\n items,\n maxItems = 10,\n valueLabel,\n className,\n lang = 'zh',\n onItemClick,\n}) => {\n const displayed = items.slice(0, maxItems);\n const maxScore = Math.max(...displayed.map(d => d.score), 1);\n\n return (\n <div className={clsx('w-full', className)} role=\"list\" aria-label={lang === 'zh' ? '排行榜' : 'Rankings'}>\n {/* Header */}\n <div className=\"flex items-center justify-between px-2 py-1.5 mb-1\">\n <span className=\"text-[10px] font-medium\" style={{ color: 'var(--dm-text-disabled)' }}>\n {lang === 'zh' ? '排名' : 'Rank'}\n </span>\n <span className=\"text-[10px] font-medium\" style={{ color: 'var(--dm-text-disabled)' }}>\n {valueLabel || (lang === 'zh' ? '得分' : 'Score')}\n </span>\n </div>\n {displayed.map((item) => {\n const barWidth = (item.score / maxScore) * 100;\n const isTop3 = item.rank <= 3;\n return (\n <div\n key={item.rank}\n role=\"listitem\"\n onClick={() => onItemClick?.(item)}\n className={clsx(\n 'flex items-center gap-2 px-2 py-2 rounded-lg transition-colors relative overflow-hidden',\n onItemClick && 'cursor-pointer hover:bg-[var(--dm-hover-bg)]',\n item.highlight && 'ring-1 ring-[var(--dm-accent-from)]/30 bg-[var(--dm-accent-from)]/5'\n )}\n >\n {/* Rank indicator */}\n <div className=\"w-7 flex-shrink-0 text-center\">\n {isTop3 ? (\n <span className=\"text-sm\" role=\"img\" aria-label={`Rank ${item.rank}`}>\n {RANK_MEDAL[item.rank]}\n </span>\n ) : (\n <span className=\"text-xs tabular-nums font-medium\" style={{ color: 'var(--dm-text-tertiary)' }}>\n {item.rank}\n </span>\n )}\n </div>\n\n {/* Avatar */}\n <div\n className=\"w-7 h-7 rounded-full flex-shrink-0 flex items-center justify-center text-[10px] font-bold overflow-hidden\"\n style={{\n background: isTop3\n ? `linear-gradient(135deg, ${RANK_COLORS[item.rank]}40, ${RANK_COLORS[item.rank]}20)`\n : 'var(--dm-hover-bg)',\n color: isTop3 ? RANK_COLORS[item.rank] : 'var(--dm-text-tertiary)',\n }}\n >\n {item.avatar ? (\n <img src={item.avatar} alt={item.name} className=\"w-full h-full object-cover\" loading=\"lazy\" />\n ) : (\n item.name.charAt(0).toUpperCase()\n )}\n </div>\n\n {/* Name + bar */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <span\n className={clsx('text-xs truncate', isTop3 ? 'font-semibold' : 'font-medium')}\n style={{ color: isTop3 ? RANK_COLORS[item.rank] : 'var(--dm-text-primary)' }}\n >\n {item.name}\n </span>\n {item.change === 'up' && <span className=\"text-[9px] text-green-400\">▲</span>}\n {item.change === 'down' && <span className=\"text-[9px] text-red-400\">▼</span>}\n {item.change === 'new' && (\n <span className=\"text-[8px] px-1 py-0 rounded bg-[var(--dm-accent-from)]/20 text-[var(--dm-accent-from)]\">NEW</span>\n )}\n </div>\n {/* Score bar */}\n <div className=\"h-1 rounded-full mt-1 overflow-hidden\" style={{ background: 'var(--dm-hover-bg)' }}>\n <div\n className=\"h-full rounded-full transition-[width] duration-700 ease-out\"\n style={{\n width: `${barWidth}%`,\n background: isTop3\n ? `linear-gradient(to right, ${RANK_COLORS[item.rank]}, ${RANK_COLORS[item.rank]}80)`\n : 'linear-gradient(to right, var(--dm-accent-from), var(--dm-accent-to))',\n opacity: isTop3 ? 1 : 0.6,\n }}\n />\n </div>\n </div>\n\n {/* Score */}\n <span\n className=\"text-xs tabular-nums font-medium flex-shrink-0\"\n style={{ color: isTop3 ? RANK_COLORS[item.rank] : 'var(--dm-text-secondary)' }}\n >\n {item.score.toLocaleString()}\n </span>\n </div>\n );\n })}\n </div>\n );\n};","/**\n * D-Music §1.x — Component Showcase / Test Page\n *\n * Renders all D-Music design system components for visual verification.\n * Categories tested:\n * §1.1 — Buttons, Inputs, Cards, Progress, Feedback, Badges, Tags, Lists\n * §1.2 — Panel (DPanel)\n * §1.3 — Charts (StarPower, Emotion, PlayStats, Achievement, Sparkline, StatCard)\n * §1.4 — Theme integration (all components use CSS custom properties)\n */\n\nimport React, { useState } from 'react';\nimport { Music, Star, Trophy, Users, BarChart3, Download, Search, Heart, Zap } from 'lucide-react';\nimport {\n DButton, DInput, DCard, DMusicCard, DUserCard, DAchievementCard,\n DProgress, AchievementRing, DFeedback, DSpinner, DBadge, DTag,\n DEmptyState, DList, DListItem, DModal, DTabBar, DBreadcrumb,\n} from './DMusicUI';\nimport {\n StarPowerChart, EmotionPieChart, PlayStatsChart,\n AchievementGrid, SparklineChart, DataExportButton, StatCard,\n RankingList,\n} from './DataViz';\nimport { DPanel } from './DPanel';\n\n// ── Mock Data ──\nconst STAR_POWER_DATA = [\n { date: '1月', value: 120, earned: 80 },\n { date: '2月', value: 280, earned: 160 },\n { date: '3月', value: 450, earned: 170 },\n { date: '4月', value: 620, earned: 170 },\n { date: '5月', value: 890, earned: 270 },\n { date: '6月', value: 1200, earned: 310 },\n];\n\nconst EMOTION_DATA = [\n { emotion: 'happy', count: 35, pct: 35 },\n { emotion: 'calm', count: 25, pct: 25 },\n { emotion: 'energetic', count: 20, pct: 20 },\n { emotion: 'sad', count: 12, pct: 12 },\n { emotion: 'romantic', count: 8, pct: 8 },\n];\n\nconst PLAY_STATS = [\n { name: '周一', plays: 120, likes: 45 },\n { name: '周二', plays: 180, likes: 67 },\n { name: '周三', plays: 95, likes: 38 },\n { name: '周四', plays: 250, likes: 98 },\n { name: '周五', plays: 310, likes: 120 },\n { name: '周六', plays: 420, likes: 180 },\n { name: '周日', plays: 380, likes: 155 },\n];\n\nconst ACHIEVEMENTS = [\n { id: '1', title: '初次创作', icon: '🎵', progress: 100, color: '#22C55E' },\n { id: '2', title: '社区之星', icon: '⭐', progress: 75, color: '#F59E0B' },\n { id: '3', title: '改编大师', icon: '🎨', progress: 40, color: '#A855F7' },\n { id: '4', title: '灵感喷泉', icon: '💡', progress: 60, color: '#3B82F6' },\n { id: '5', title: '协作先锋', icon: '🤝', progress: 20, color: '#EC4899' },\n { id: '6', title: '挑战冠军', icon: '🏆', progress: 90, color: '#EF4444' },\n { id: '7', title: '每日打卡', icon: '📅', progress: 55, color: '#06B6D4' },\n { id: '8', title: '收藏达人', icon: '❤️', progress: 30, color: '#F43F5E' },\n];\n\ninterface ShowcaseProps {\n lang?: 'zh' | 'en';\n}\n\nexport const DMusicShowcase: React.FC<ShowcaseProps> = ({ lang = 'zh' }) => {\n const [showPanel, setShowPanel] = useState(false);\n const [inputVal, setInputVal] = useState('');\n const [feedbackDismissed, setFeedbackDismissed] = useState<Record<string, boolean>>({});\n const [showModal, setShowModal] = useState(false);\n const [activeTabDefault, setActiveTabDefault] = useState('tab1');\n const [activeTabPills, setActiveTabPills] = useState('tab1');\n const [activeTabUnderline, setActiveTabUnderline] = useState('tab1');\n\n const SectionTitle: React.FC<{ title: string; section: string }> = ({ title, section }) => (\n <div className=\"flex items-center gap-3 mb-4 mt-8 first:mt-0\">\n <h2 className=\"text-lg font-bold\" style={{ color: 'var(--dm-text-primary)' }}>{title}</h2>\n <DBadge variant=\"accent\">{section}</DBadge>\n </div>\n );\n\n return (\n <div className=\"p-6 space-y-6 max-w-4xl mx-auto\">\n <div className=\"text-center mb-8\">\n <h1\n className=\"text-2xl font-bold bg-clip-text text-transparent\"\n style={{ backgroundImage: 'linear-gradient(to right, var(--dm-accent-from), var(--dm-accent-to))' }}\n >\n D-Music 设计系统展示\n </h1>\n <p className=\"text-sm mt-1\" style={{ color: 'var(--dm-text-tertiary)' }}>\n §1.1 组件库 · §1.2 面板 · §1.3 可视化 · §1.4 主题\n </p>\n </div>\n\n {/* ════════════ §1.1 Buttons ════════════ */}\n <SectionTitle title=\"按钮组件\" section=\"§1.1\" />\n <DCard padding=\"md\">\n <div className=\"space-y-4\">\n <p className=\"text-xs font-medium\" style={{ color: 'var(--dm-text-secondary)' }}>变体 Variants</p>\n <div className=\"flex flex-wrap gap-3\">\n <DButton variant=\"primary\" icon={<Star className=\"w-4 h-4\" />}>主要按钮</DButton>\n <DButton variant=\"secondary\">次要按钮</DButton>\n <DButton variant=\"ghost\">幽灵按钮</DButton>\n <DButton variant=\"danger\">危险按钮</DButton>\n <DButton variant=\"accent\">强调按钮</DButton>\n </div>\n <p className=\"text-xs font-medium\" style={{ color: 'var(--dm-text-secondary)' }}>尺寸 Sizes</p>\n <div className=\"flex flex-wrap items-center gap-3\">\n <DButton size=\"sm\">小号 SM</DButton>\n <DButton size=\"md\">中号 MD</DButton>\n <DButton size=\"lg\">大号 LG</DButton>\n </div>\n <p className=\"text-xs font-medium\" style={{ color: 'var(--dm-text-secondary)' }}>状态 States</p>\n <div className=\"flex flex-wrap gap-3\">\n <DButton loading>加载中</DButton>\n <DButton disabled>禁用</DButton>\n <DButton icon={<Download className=\"w-4 h-4\" />} iconRight={<Zap className=\"w-3 h-3\" />}>双图标</DButton>\n <DButton fullWidth variant=\"secondary\">全宽按钮</DButton>\n </div>\n </div>\n </DCard>\n\n {/* ════════════ §1.1 Inputs ════════════ */}\n <SectionTitle title=\"输入框组件\" section=\"§1.1\" />\n <DCard padding=\"md\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <DInput label=\"用户名\" placeholder=\"请输入用户名\" hint=\"支持中英文和数字\" value={inputVal} onChange={e => setInputVal(e.target.value)} />\n <DInput variant=\"password\" label=\"密码\" placeholder=\"请输入密码\" />\n <DInput variant=\"search\" placeholder=\"搜索歌曲、艺术家...\" />\n <DInput label=\"邮箱\" placeholder=\"example@dmusic.com\" error=\"邮箱格式不正确\" />\n <DInput label=\"小号输入\" inputSize=\"sm\" placeholder=\"SM size\" />\n <DInput label=\"大号输入\" inputSize=\"lg\" placeholder=\"LG size\" leftIcon={<Music className=\"w-4 h-4\" />} />\n </div>\n </DCard>\n\n {/* ════════════ §1.1 Cards ════════════ */}\n <SectionTitle title=\"卡片组件\" section=\"§1.1\" />\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <DMusicCard title=\"星际漫游\" artist=\"D-Music Studio\" duration=\"3:42\" emotion=\"calm\" isPlaying />\n <DMusicCard title=\"深空回响\" artist=\"Echo Chamber\" duration=\"4:15\" emotion=\"energetic\" />\n <DUserCard name=\"创作者小星\" subtitle=\"金牌创作者 · 1.2k 粉丝\" badge=\"金牌\" />\n <DUserCard name=\"Echo\" subtitle=\"银牌创作者 · 820 M❤️\" badge=\"银牌\" />\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4\">\n <DAchievementCard title=\"灵感喷泉\" description=\"连续7天每日创作\" icon=\"💡\" progress={75} unlocked rarity=\"rare\" />\n <DAchievementCard title=\"改编大师\" description=\"衍生分支作品超5个\" icon=\"🎨\" progress={40} rarity=\"epic\" />\n </div>\n <DCard variant=\"glass\" padding=\"md\" className=\"mt-4\">\n <p className=\"text-sm\" style={{ color: 'var(--dm-text-primary)' }}>毛玻璃卡片 (Glass Variant)</p>\n <p className=\"text-xs mt-1\" style={{ color: 'var(--dm-text-tertiary)' }}>使用 backdrop-blur-xl 实现毛玻璃效果</p>\n </DCard>\n\n {/* ════════════ §1.1 Progress ════════════ */}\n <SectionTitle title=\"进度指示器\" section=\"§1.1\" />\n <DCard padding=\"md\">\n <div className=\"space-y-4\">\n <DProgress value={65} variant=\"gradient\" showLabel aria-label=\"整体进度\" />\n <DProgress value={80} variant=\"success\" showLabel size=\"lg\" />\n <DProgress value={45} variant=\"warning\" showLabel size=\"sm\" />\n <DProgress value={30} variant=\"error\" showLabel />\n <div className=\"flex gap-6 items-center mt-4\">\n <AchievementRing progress={85} size={64} strokeWidth={4} color=\"#8B5CF6\">\n <span className=\"text-xs font-bold\" style={{ color: 'var(--dm-text-primary)' }}>85%</span>\n </AchievementRing>\n <AchievementRing progress={60} size={56} strokeWidth={3} color=\"#22C55E\">\n <span className=\"text-lg\">⭐</span>\n </AchievementRing>\n <AchievementRing progress={100} size={48} strokeWidth={3} color=\"#F59E0B\">\n <span className=\"text-lg\">🏆</span>\n </AchievementRing>\n </div>\n </div>\n </DCard>\n\n {/* ════════════ §1.1 Feedback ════════════ */}\n <SectionTitle title=\"反馈组件\" section=\"§1.1\" />\n <div className=\"space-y-3\">\n {!feedbackDismissed['loading'] && <DFeedback type=\"loading\" message=\"正在加载音频数据...\" description=\"请稍候\" onDismiss={() => setFeedbackDismissed(p => ({ ...p, loading: true }))} />}\n {!feedbackDismissed['success'] && <DFeedback type=\"success\" message=\"作品发布成功!\" description=\"已自动同步至社区\" onDismiss={() => setFeedbackDismissed(p => ({ ...p, success: true }))} />}\n {!feedbackDismissed['error'] && <DFeedback type=\"error\" message=\"网络连接失败\" description=\"请检查网络设置后重试\" onDismiss={() => setFeedbackDismissed(p => ({ ...p, error: true }))} />}\n {!feedbackDismissed['warning'] && <DFeedback type=\"warning\" message=\"存储空间不足\" description=\"建议清理缓存或升级套餐\" onDismiss={() => setFeedbackDismissed(p => ({ ...p, warning: true }))} />}\n <DFeedback type=\"info\" message=\"新版本可用 v2.6.0\" description=\"包含 AI 作曲增强和性能优化\" />\n <div className=\"flex items-center gap-4 mt-2\">\n <DSpinner size=\"sm\" />\n <DSpinner size=\"md\" />\n <DSpinner size=\"lg\" />\n </div>\n </div>\n\n {/* ════════════ §1.1 Badges & Tags ════════════ */}\n <SectionTitle title=\"徽章与标签\" section=\"§1.1\" />\n <DCard padding=\"md\">\n <div className=\"space-y-4\">\n <p className=\"text-xs font-medium\" style={{ color: 'var(--dm-text-secondary)' }}>徽章 Badges</p>\n <div className=\"flex flex-wrap gap-2\">\n <DBadge>默认</DBadge>\n <DBadge variant=\"accent\">强调</DBadge>\n <DBadge variant=\"success\" dot>在线</DBadge>\n <DBadge variant=\"warning\">审核中</DBadge>\n <DBadge variant=\"error\">已下架</DBadge>\n <DBadge variant=\"info\">新</DBadge>\n <DBadge variant=\"accent\" size=\"md\">金牌创作者</DBadge>\n </div>\n <p className=\"text-xs font-medium\" style={{ color: 'var(--dm-text-secondary)' }}>标签 Tags</p>\n <div className=\"flex flex-wrap gap-2\">\n <DTag>电子</DTag>\n <DTag variant=\"emotion\">开心</DTag>\n <DTag variant=\"outline\">流行</DTag>\n <DTag size=\"xs\">摇滚</DTag>\n <DTag size=\"md\" onRemove={() => {}}>可删除标签</DTag>\n </div>\n </div>\n </DCard>\n\n {/* ════════════ §1.1 List ════════════ */}\n <SectionTitle title=\"列表组件\" section=\"§1.1\" />\n <DCard padding=\"none\">\n <DList label=\"播放列表\">\n <DListItem onClick={() => {}} active>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-sm\" style={{ color: 'var(--dm-text-primary)' }}>🎵 星际漫游 — D-Music Studio</span>\n <DBadge variant=\"accent\" size=\"sm\">播放中</DBadge>\n </div>\n </DListItem>\n <DListItem onClick={() => {}}>\n <span className=\"text-sm\" style={{ color: 'var(--dm-text-primary)' }}>🎵 深空回响 — Echo Chamber</span>\n </DListItem>\n <DListItem onClick={() => {}}>\n <span className=\"text-sm\" style={{ color: 'var(--dm-text-primary)' }}>🎵 极光之舞 — Aurora Beats</span>\n </DListItem>\n </DList>\n </DCard>\n\n {/* ════════════ §1.1 Empty State ════════════ */}\n <SectionTitle title=\"空状态\" section=\"§1.1\" />\n <DCard padding=\"none\">\n <DEmptyState\n icon=\"🎧\"\n title=\"暂无播放记录\"\n description=\"播放音乐后,您的收听统计将在这里显示\"\n action={<DButton size=\"sm\" icon={<Music className=\"w-3.5 h-3.5\" />}>探索音乐</DButton>}\n />\n </DCard>\n\n {/* ════════════ §1.1 Modal ════════════ */}\n <SectionTitle title=\"模态框组件\" section=\"§1.1\" />\n <DCard padding=\"md\">\n <DButton onClick={() => setShowModal(true)} icon={<Zap className=\"w-4 h-4\" />}>\n 打开模态框\n </DButton>\n </DCard>\n <DModal\n isOpen={showModal}\n onClose={() => setShowModal(false)}\n title=\"确认操作\"\n description=\"这是一个 DModal 模态框示例\"\n footer={\n <div className=\"flex gap-2\">\n <DButton variant=\"secondary\" size=\"sm\" onClick={() => setShowModal(false)}>取消</DButton>\n <DButton size=\"sm\" onClick={() => setShowModal(false)}>确认</DButton>\n </div>\n }\n >\n <div className=\"space-y-3\">\n <DFeedback type=\"warning\" message=\"此操作不可撤销\" description=\"请仔细确认后再继续\" />\n <DInput label=\"输入确认文字\" placeholder=\"请输入 CONFIRM\" />\n </div>\n </DModal>\n\n {/* ════════════ §1.1 TabBar ════════════ */}\n <SectionTitle title=\"标签导航\" section=\"§1.1\" />\n <DCard padding=\"md\">\n <div className=\"space-y-4\">\n <p className=\"text-xs font-medium\" style={{ color: 'var(--dm-text-secondary)' }}>默认样式 Default</p>\n <DTabBar\n tabs={[\n { id: 'tab1', label: '全部', icon: <Music className=\"w-3 h-3\" /> },\n { id: 'tab2', label: '推��', badge: 5 },\n { id: 'tab3', label: '收藏' },\n { id: 'tab4', label: '离线', disabled: true },\n ]}\n activeTab={activeTabDefault}\n onTabChange={setActiveTabDefault}\n />\n <p className=\"text-xs font-medium\" style={{ color: 'var(--dm-text-secondary)' }}>药丸样式 Pills</p>\n <DTabBar\n variant=\"pills\"\n tabs={[\n { id: 'tab1', label: '电子' },\n { id: 'tab2', label: '流行' },\n { id: 'tab3', label: '摇滚' },\n { id: 'tab4', label: '古典' },\n ]}\n activeTab={activeTabPills}\n onTabChange={setActiveTabPills}\n />\n <p className=\"text-xs font-medium\" style={{ color: 'var(--dm-text-secondary)' }}>下划线样式 Underline</p>\n <DTabBar\n variant=\"underline\"\n tabs={[\n { id: 'tab1', label: '歌曲' },\n { id: 'tab2', label: '歌词' },\n { id: 'tab3', label: '评论', badge: 12 },\n ]}\n activeTab={activeTabUnderline}\n onTabChange={setActiveTabUnderline}\n />\n </div>\n </DCard>\n\n {/* ════════════ §1.1 Breadcrumb ════════════ */}\n <SectionTitle title=\"��包屑导航\" section=\"§1.1\" />\n <DCard padding=\"md\">\n <DBreadcrumb\n items={[\n { label: '首页', onClick: () => {} },\n { label: '社区', onClick: () => {} },\n { label: '创作挑战赛', onClick: () => {} },\n { label: '第 3 期' },\n ]}\n />\n </DCard>\n\n {/* ════════════ §1.2 Panel ════════════ */}\n <SectionTitle title=\"面板组件\" section=\"§1.2\" />\n <DCard padding=\"md\">\n <p className=\"text-sm mb-3\" style={{ color: 'var(--dm-text-secondary)' }}>\n 统一面板壳:支持侧边抽屉/底部抽屉,含头部/内容/底部三段式布局\n </p>\n <DButton onClick={() => setShowPanel(true)} icon={<Users className=\"w-4 h-4\" />}>\n 打开示例面板\n </DButton>\n </DCard>\n\n <DPanel\n isOpen={showPanel}\n onClose={() => setShowPanel(false)}\n title=\"示例面板\"\n subtitle=\"§1.2 统一面板组件\"\n icon={<Users className=\"w-4 h-4\" />}\n sectionLabel=\"§1.2 · DPanel\"\n footer={\n <div className=\"flex gap-2\">\n <DButton variant=\"secondary\" size=\"sm\" fullWidth onClick={() => setShowPanel(false)}>取消</DButton>\n <DButton size=\"sm\" fullWidth onClick={() => setShowPanel(false)}>确认</DButton>\n </div>\n }\n >\n <div className=\"p-5 space-y-4\">\n <DFeedback type=\"info\" message=\"这是 DPanel 内的内容区域\" />\n <DMusicCard title=\"面板内音乐卡片\" artist=\"D-Music\" duration=\"3:42\" />\n <DProgress value={70} showLabel variant=\"gradient\" />\n <DInput label=\"面板内输入框\" placeholder=\"输入内容...\" />\n </div>\n </DPanel>\n\n {/* ════════════ §1.3 Star Power Chart ════════════ */}\n <SectionTitle title=\"星力值增长曲线\" section=\"§1.3\" />\n <DCard padding=\"md\">\n <div className=\"flex items-center justify-between mb-3\">\n <p className=\"text-sm font-medium\" style={{ color: 'var(--dm-text-primary)' }}>星力值趋势</p>\n <DataExportButton data={STAR_POWER_DATA} filename=\"starpower\" label=\"导出\" />\n </div>\n <StarPowerChart data={STAR_POWER_DATA} height={220} lang={lang} />\n </DCard>\n\n {/* ════════════ §1.3 Emotion Pie ════════════ */}\n <SectionTitle title=\"情绪分布图\" section=\"§1.3\" />\n <DCard padding=\"md\">\n <EmotionPieChart data={EMOTION_DATA} lang={lang} />\n </DCard>\n\n {/* ════════════ §1.3 Play Stats ════════════ */}\n <SectionTitle title=\"播放统计\" section=\"§1.3\" />\n <DCard padding=\"md\">\n <PlayStatsChart data={PLAY_STATS} height={220} lang={lang} />\n </DCard>\n\n {/* ════════════ §1.3 Achievement Grid ════════════ */}\n <SectionTitle title=\"成就进度环网格\" section=\"§1.3\" />\n <DCard padding=\"md\">\n <AchievementGrid items={ACHIEVEMENTS} columns={4} />\n </DCard>\n\n {/* ════════════ §1.3 Stat Cards ════════════ */}\n <SectionTitle title=\"数据统计卡片\" section=\"§1.3\" />\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-3\">\n <StatCard label=\"总播放量\" value=\"12.8K\" change={15} trend={[80, 90, 85, 110, 130, 120, 150]} icon={<BarChart3 className=\"w-4 h-4\" />} />\n <StatCard label=\"总收藏\" value=\"3,240\" change={8} trend={[40, 55, 50, 65, 70, 68, 80]} icon={<Heart className=\"w-4 h-4\" />} />\n <StatCard label=\"星力值\" value=\"1,200\" change={25} trend={[120, 280, 450, 620, 890, 1200]} icon={<Star className=\"w-4 h-4\" />} />\n <StatCard label=\"创作数\" value=\"47\" change={-3} trend={[12, 15, 10, 8, 6, 5]} icon={<Music className=\"w-4 h-4\" />} />\n </div>\n\n {/* ════════════ §1.3 Sparkline ════════════ */}\n <SectionTitle title=\"迷你趋势线\" section=\"§1.3\" />\n <DCard padding=\"md\">\n <div className=\"flex items-center gap-6\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs\" style={{ color: 'var(--dm-text-tertiary)' }}>上升趋势:</span>\n <SparklineChart data={[10, 20, 15, 30, 25, 40, 45]} color=\"#22C55E\" />\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs\" style={{ color: 'var(--dm-text-tertiary)' }}>下降趋势:</span>\n <SparklineChart data={[45, 40, 35, 30, 20, 15, 10]} color=\"#EF4444\" />\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs\" style={{ color: 'var(--dm-text-tertiary)' }}>波动趋势:</span>\n <SparklineChart data={[20, 35, 15, 40, 10, 30, 25]} color=\"#8B5CF6\" />\n </div>\n </div>\n </DCard>\n\n {/* ════════════ §1.3 Ranking List ════════════ */}\n <SectionTitle title=\"排行榜列表\" section=\"§1.3\" />\n <DCard padding=\"md\">\n <RankingList\n lang={lang}\n valueLabel={lang === 'zh' ? '星力值' : 'SP'}\n items={[\n { rank: 1, name: 'StarGazer_42', score: 12800, change: 'same' },\n { rank: 2, name: 'NebulaDrifter', score: 9650, change: 'up' },\n { rank: 3, name: 'CosmicVoyager', score: 8420, change: 'down' },\n { rank: 4, name: 'PixelDreamer', score: 7100, change: 'new' },\n { rank: 5, name: 'WaveRider', score: 5830, change: 'up', highlight: true },\n { rank: 6, name: 'EchoMaster', score: 4200, change: 'same' },\n ]}\n />\n </DCard>\n\n {/* Footer */}\n <div className=\"text-center py-8\">\n <p className=\"text-[10px]\" style={{ color: 'var(--dm-text-disabled)' }}>\n D-Music Design System · §1.1 组件库 · §1.2 面板 · §1.3 数据可视化 · §1.4 主题系统 · v1.0.0\n </p>\n </div>\n </div>\n );\n};","import React, { useState } from 'react'\n\nconst ERROR_IMG_SRC =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIzLjciPjxyZWN0IHg9IjE2IiB5PSIxNiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjU2IiByeD0iNiIvPjxwYXRoIGQ9Im0xNiA1OCAxNi0xOCAzMiAzMiIvPjxjaXJjbGUgY3g9IjUzIiBjeT0iMzUiIHI9IjciLz48L3N2Zz4KCg=='\n\nexport function ImageWithFallback(props: React.ImgHTMLAttributes<HTMLImageElement>) {\n const [didError, setDidError] = useState(false)\n\n const handleError = () => {\n setDidError(true)\n }\n\n const { src, alt, style, className, ...rest } = props\n\n return didError ? (\n <div\n className={`inline-block bg-gray-100 text-center align-middle ${className ?? ''}`}\n style={style}\n >\n <div className=\"flex items-center justify-center w-full h-full\">\n <img src={ERROR_IMG_SRC} alt=\"Error loading image\" {...rest} data-original-url={src} />\n </div>\n </div>\n ) : (\n <img src={src} alt={alt} className={className} style={style} {...rest} onError={handleError} />\n )\n}\n"],"names":["cn","inputs","twMerge","clsx","Accordion","props","AccordionPrimitive","AccordionItem","className","jsx","AccordionTrigger","children","jsxs","ChevronDownIcon","AccordionContent","alertVariants","cva","Alert","variant","AlertTitle","AlertDescription","buttonVariants","Button","size","asChild","Slot","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","AlertDialogCancel","AspectRatio","AspectRatioPrimitive","Avatar","AvatarPrimitive","AvatarImage","AvatarFallback","badgeVariants","Badge","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","ChevronRight","BreadcrumbEllipsis","MoreHorizontal","Calendar","classNames","showOutsideDays","DayPicker","ChevronLeft","Card","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","CarouselContext","React","useCarousel","context","Carousel","orientation","opts","setApi","plugins","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","CarouselContent","CarouselItem","CarouselPrevious","ArrowLeft","CarouselNext","ArrowRight","THEMES","ChartContext","useChart","ChartContainer","id","config","uniqueId","chartId","ChartStyle","RechartsPrimitive","colorConfig","theme","prefix","key","itemConfig","color","_a","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","item","getPayloadConfigFromPayload","value","nestLabel","index","indicatorColor","Fragment","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey","Checkbox","CheckboxPrimitive","CheckIcon","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","XIcon","DialogHeader","DialogFooter","DialogTitle","DialogDescription","Command","CommandPrimitive","CommandDialog","title","description","CommandInput","SearchIcon","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","ContextMenu","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","ContextMenuSubTrigger","inset","ChevronRightIcon","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","ContextMenuCheckboxItem","checked","ContextMenuRadioItem","CircleIcon","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut","Drawer","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","DrawerContent","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription","DropdownMenu","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","DropdownMenuContent","sideOffset","DropdownMenuGroup","DropdownMenuItem","DropdownMenuCheckboxItem","DropdownMenuRadioGroup","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","DropdownMenuSubContent","Label","LabelPrimitive","Form","FormProvider","FormFieldContext","FormField","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","FormItem","FormLabel","error","formItemId","FormControl","formDescriptionId","formMessageId","FormDescription","FormMessage","body","HoverCard","HoverCardPrimitive","HoverCardTrigger","HoverCardContent","align","Input","type","InputOTP","containerClassName","OTPInput","InputOTPGroup","InputOTPSlot","inputOTPContext","OTPInputContext","char","hasFakeCaret","isActive","InputOTPSeparator","MinusIcon","Menubar","MenubarPrimitive","MenubarMenu","MenubarGroup","MenubarPortal","MenubarRadioGroup","MenubarTrigger","MenubarContent","alignOffset","MenubarItem","MenubarCheckboxItem","MenubarRadioItem","MenubarLabel","MenubarSeparator","MenubarShortcut","MenubarSub","MenubarSubTrigger","MenubarSubContent","NavigationMenu","viewport","NavigationMenuPrimitive","NavigationMenuViewport","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","NavigationMenuIndicator","Pagination","PaginationContent","PaginationItem","PaginationLink","PaginationPrevious","ChevronLeftIcon","PaginationNext","PaginationEllipsis","MoreHorizontalIcon","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","PopoverAnchor","Progress","ProgressPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","ResizablePanelGroup","ResizablePrimitive","ResizablePanel","ResizableHandle","withHandle","GripVerticalIcon","ScrollArea","ScrollAreaPrimitive","ScrollBar","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectLabel","SelectItem","SelectSeparator","ChevronUpIcon","Separator","decorative","SeparatorPrimitive","Sheet","SheetPrimitive","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","SheetContent","side","SheetHeader","SheetFooter","SheetTitle","SheetDescription","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","mql","onChange","Skeleton","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","SidebarProvider","defaultOpen","openProp","setOpenProp","style","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","openState","toggleSidebar","state","contextValue","Sidebar","collapsible","SidebarTrigger","onClick","PanelLeftIcon","SidebarRail","SidebarInset","SidebarInput","SidebarHeader","SidebarFooter","SidebarSeparator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","tooltip","Comp","button","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","Slider","defaultValue","min","max","_values","SliderPrimitive","_","Toaster","useTheme","Sonner","Switch","SwitchPrimitive","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","Textarea","toggleVariants","Toggle","TogglePrimitive","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","buttonSizes","DButton","loading","icon","iconRight","fullWidth","disabled","Loader2","DInput","hint","inputSize","leftIcon","propType","showPassword","setShowPassword","inputId","isPassword","isSearch","actualType","heights","textSizes","Search","p","EyeOff","Eye","AlertCircle","cardPadding","DCard","interactive","glowColor","padding","isInteractive","Component","motion","baseStyles","e","DMusicCard","artist","coverUrl","duration","emotion","isPlaying","i","DTag","DUserCard","name","avatar","subtitle","badge","DBadge","rarityColors","DAchievementCard","progress","unlocked","rarity","rarityInfo","AchievementRing","progressHeights","DProgress","showLabel","clamped","fillStyle","strokeWidth","bgColor","radius","circumference","offset","feedbackConfig","CheckCircle2","AlertTriangle","Info","DFeedback","message","onDismiss","Icon","colorVar","colorValue","X","DSpinner","dot","onRemove","DEmptyState","action","DList","divided","DListItem","modalSizes","DModal","isOpen","onClose","footer","closeOnBackdrop","modalRef","handler","firstFocusable","DTabBar","tabs","activeTab","onTabChange","tab","DToast","DBreadcrumb","items","separator","sep","isLast","panelSizes","DPanel","sectionLabel","mobileBottomSheet","noBackdrop","headerActions","panelRef","useRef","useEffect","AnimatePresence","DATA_VIZ_PALETTE","GlassTooltip","entry","StarPowerChart","data","height","lang","ResponsiveContainer","AreaChart","CartesianGrid","XAxis","YAxis","Area","Line","EMOTION_LABELS_ZH","EmotionPieChart","chartData","useMemo","d","PieChart","Pie","Cell","PlayStatsChart","BarChart","Legend","Bar","AchievementGrid","columns","SparklineChart","showDot","v","LineChart","DataExportButton","filename","format","Download","content","mimeType","keys","row","k","blob","url","a","StatCard","change","trend","isPositive","RANK_MEDAL","RANK_COLORS","RankingList","maxItems","valueLabel","onItemClick","displayed","maxScore","barWidth","isTop3","STAR_POWER_DATA","EMOTION_DATA","PLAY_STATS","ACHIEVEMENTS","DMusicShowcase","showPanel","setShowPanel","useState","inputVal","setInputVal","feedbackDismissed","setFeedbackDismissed","showModal","setShowModal","activeTabDefault","setActiveTabDefault","activeTabPills","setActiveTabPills","activeTabUnderline","setActiveTabUnderline","SectionTitle","section","Star","Zap","Music","Users","BarChart3","Heart","ERROR_IMG_SRC","ImageWithFallback","didError","setDidError","handleError","src","alt","rest"],"mappings":"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"}