@zentauri-ui/zentauri-components 0.0.91 → 0.0.93

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 (168) hide show
  1. package/README.md +36 -4
  2. package/dist/chunk-BZSIXBA7.js +70 -0
  3. package/dist/chunk-BZSIXBA7.js.map +1 -0
  4. package/dist/chunk-E5UX537J.js +11 -0
  5. package/dist/chunk-E5UX537J.js.map +1 -0
  6. package/dist/chunk-MEWYFWBX.mjs +14 -0
  7. package/dist/chunk-MEWYFWBX.mjs.map +1 -0
  8. package/dist/chunk-VJHD7QZH.mjs +73 -0
  9. package/dist/chunk-VJHD7QZH.mjs.map +1 -0
  10. package/dist/ui/accordion.js +51 -57
  11. package/dist/ui/accordion.js.map +1 -1
  12. package/dist/ui/{accordion.cjs → accordion.mjs} +38 -67
  13. package/dist/ui/accordion.mjs.map +1 -0
  14. package/dist/ui/{alert.d.cts → alert.d.mts} +1 -1
  15. package/dist/ui/alert.d.ts +1 -1
  16. package/dist/ui/alert.js +40 -46
  17. package/dist/ui/alert.js.map +1 -1
  18. package/dist/ui/{alert.cjs → alert.mjs} +29 -66
  19. package/dist/ui/alert.mjs.map +1 -0
  20. package/dist/ui/{badge.d.cts → badge.d.mts} +1 -1
  21. package/dist/ui/badge.d.ts +1 -1
  22. package/dist/ui/badge.js +20 -26
  23. package/dist/ui/badge.js.map +1 -1
  24. package/dist/ui/{badge.cjs → badge.mjs} +17 -48
  25. package/dist/ui/badge.mjs.map +1 -0
  26. package/dist/ui/{buttons.d.cts → buttons.d.mts} +1 -1
  27. package/dist/ui/buttons.d.ts +1 -1
  28. package/dist/ui/buttons.js +18 -87
  29. package/dist/ui/buttons.js.map +1 -1
  30. package/dist/ui/buttons.mjs +109 -0
  31. package/dist/ui/buttons.mjs.map +1 -0
  32. package/dist/ui/{card.d.cts → card.d.mts} +1 -1
  33. package/dist/ui/card.d.ts +1 -1
  34. package/dist/ui/card.js +40 -46
  35. package/dist/ui/card.js.map +1 -1
  36. package/dist/ui/{card.cjs → card.mjs} +26 -65
  37. package/dist/ui/card.mjs.map +1 -0
  38. package/dist/ui/{divider.d.cts → divider.d.mts} +2 -2
  39. package/dist/ui/divider.d.ts +2 -2
  40. package/dist/ui/divider.js +30 -36
  41. package/dist/ui/divider.js.map +1 -1
  42. package/dist/ui/{divider.cjs → divider.mjs} +22 -55
  43. package/dist/ui/divider.mjs.map +1 -0
  44. package/dist/ui/{drawer.d.cts → drawer.d.mts} +3 -3
  45. package/dist/ui/drawer.d.ts +3 -3
  46. package/dist/ui/drawer.js +64 -70
  47. package/dist/ui/drawer.js.map +1 -1
  48. package/dist/ui/{drawer.cjs → drawer.mjs} +48 -77
  49. package/dist/ui/drawer.mjs.map +1 -0
  50. package/dist/ui/{dropdown.d.cts → dropdown.d.mts} +4 -4
  51. package/dist/ui/dropdown.d.ts +4 -4
  52. package/dist/ui/dropdown.js +43 -49
  53. package/dist/ui/dropdown.js.map +1 -1
  54. package/dist/ui/{dropdown.cjs → dropdown.mjs} +34 -62
  55. package/dist/ui/dropdown.mjs.map +1 -0
  56. package/dist/ui/{empty-state.d.cts → empty-state.d.mts} +1 -1
  57. package/dist/ui/empty-state.d.ts +1 -1
  58. package/dist/ui/empty-state.js +31 -37
  59. package/dist/ui/empty-state.js.map +1 -1
  60. package/dist/ui/empty-state.mjs +150 -0
  61. package/dist/ui/empty-state.mjs.map +1 -0
  62. package/dist/ui/{inputs.d.cts → inputs.d.mts} +2 -2
  63. package/dist/ui/inputs.d.ts +2 -2
  64. package/dist/ui/inputs.js +26 -32
  65. package/dist/ui/inputs.js.map +1 -1
  66. package/dist/ui/{inputs.cjs → inputs.mjs} +21 -51
  67. package/dist/ui/inputs.mjs.map +1 -0
  68. package/dist/ui/{modal.d.cts → modal.d.mts} +3 -3
  69. package/dist/ui/modal.d.ts +3 -3
  70. package/dist/ui/modal.js +69 -75
  71. package/dist/ui/modal.js.map +1 -1
  72. package/dist/ui/{modal.cjs → modal.mjs} +53 -79
  73. package/dist/ui/modal.mjs.map +1 -0
  74. package/dist/ui/{pagination.d.cts → pagination.d.mts} +3 -3
  75. package/dist/ui/pagination.d.ts +3 -3
  76. package/dist/ui/pagination.js +48 -117
  77. package/dist/ui/pagination.js.map +1 -1
  78. package/dist/ui/{pagination.cjs → pagination.mjs} +35 -131
  79. package/dist/ui/pagination.mjs.map +1 -0
  80. package/dist/ui/{progress.d.cts → progress.d.mts} +5 -5
  81. package/dist/ui/progress.d.ts +5 -5
  82. package/dist/ui/progress.js +37 -43
  83. package/dist/ui/progress.js.map +1 -1
  84. package/dist/ui/{progress.cjs → progress.mjs} +25 -60
  85. package/dist/ui/progress.mjs.map +1 -0
  86. package/dist/ui/{select.d.cts → select.d.mts} +4 -4
  87. package/dist/ui/select.d.ts +4 -4
  88. package/dist/ui/select.js +43 -49
  89. package/dist/ui/select.js.map +1 -1
  90. package/dist/ui/{select.cjs → select.mjs} +31 -68
  91. package/dist/ui/select.mjs.map +1 -0
  92. package/dist/ui/{skeleton.d.cts → skeleton.d.mts} +3 -3
  93. package/dist/ui/skeleton.d.ts +3 -3
  94. package/dist/ui/skeleton.js +45 -51
  95. package/dist/ui/skeleton.js.map +1 -1
  96. package/dist/ui/{skeleton.cjs → skeleton.mjs} +31 -67
  97. package/dist/ui/skeleton.mjs.map +1 -0
  98. package/dist/ui/{spinner.d.cts → spinner.d.mts} +3 -3
  99. package/dist/ui/spinner.d.ts +3 -3
  100. package/dist/ui/spinner.js +34 -40
  101. package/dist/ui/spinner.js.map +1 -1
  102. package/dist/ui/{spinner.cjs → spinner.mjs} +27 -57
  103. package/dist/ui/spinner.mjs.map +1 -0
  104. package/dist/ui/{table.d.cts → table.d.mts} +4 -4
  105. package/dist/ui/table.d.ts +4 -4
  106. package/dist/ui/table.js +43 -49
  107. package/dist/ui/table.js.map +1 -1
  108. package/dist/ui/{table.cjs → table.mjs} +26 -65
  109. package/dist/ui/table.mjs.map +1 -0
  110. package/dist/ui/{tabs.d.cts → tabs.d.mts} +1 -1
  111. package/dist/ui/tabs.d.ts +1 -1
  112. package/dist/ui/tabs.js +41 -47
  113. package/dist/ui/tabs.js.map +1 -1
  114. package/dist/ui/{tabs.cjs → tabs.mjs} +29 -59
  115. package/dist/ui/tabs.mjs.map +1 -0
  116. package/dist/ui/{toast.d.cts → toast.d.mts} +1 -1
  117. package/dist/ui/toast.d.ts +1 -1
  118. package/dist/ui/toast.js +57 -63
  119. package/dist/ui/toast.js.map +1 -1
  120. package/dist/ui/{toast.cjs → toast.mjs} +43 -74
  121. package/dist/ui/toast.mjs.map +1 -0
  122. package/dist/ui/{toggle.d.cts → toggle.d.mts} +1 -1
  123. package/dist/ui/toggle.d.ts +1 -1
  124. package/dist/ui/toggle.js +23 -29
  125. package/dist/ui/toggle.js.map +1 -1
  126. package/dist/ui/{toggle.cjs → toggle.mjs} +19 -50
  127. package/dist/ui/toggle.mjs.map +1 -0
  128. package/dist/ui/{tooltip.d.cts → tooltip.d.mts} +2 -2
  129. package/dist/ui/tooltip.d.ts +2 -2
  130. package/dist/ui/tooltip.js +29 -35
  131. package/dist/ui/tooltip.js.map +1 -1
  132. package/dist/ui/{tooltip.cjs → tooltip.mjs} +26 -58
  133. package/dist/ui/tooltip.mjs.map +1 -0
  134. package/dist/variants-Dd9pe-ov.d.mts +8 -0
  135. package/dist/variants-Dd9pe-ov.d.ts +8 -0
  136. package/package.json +10 -15
  137. package/dist/ui/accordion.cjs.map +0 -1
  138. package/dist/ui/alert.cjs.map +0 -1
  139. package/dist/ui/badge.cjs.map +0 -1
  140. package/dist/ui/buttons.cjs +0 -202
  141. package/dist/ui/buttons.cjs.map +0 -1
  142. package/dist/ui/card.cjs.map +0 -1
  143. package/dist/ui/divider.cjs.map +0 -1
  144. package/dist/ui/drawer.cjs.map +0 -1
  145. package/dist/ui/dropdown.cjs.map +0 -1
  146. package/dist/ui/empty-state.cjs +0 -186
  147. package/dist/ui/empty-state.cjs.map +0 -1
  148. package/dist/ui/index.cjs +0 -5764
  149. package/dist/ui/index.cjs.map +0 -1
  150. package/dist/ui/index.d.cts +0 -27
  151. package/dist/ui/index.d.ts +0 -27
  152. package/dist/ui/index.js +0 -5626
  153. package/dist/ui/index.js.map +0 -1
  154. package/dist/ui/inputs.cjs.map +0 -1
  155. package/dist/ui/modal.cjs.map +0 -1
  156. package/dist/ui/pagination.cjs.map +0 -1
  157. package/dist/ui/progress.cjs.map +0 -1
  158. package/dist/ui/select.cjs.map +0 -1
  159. package/dist/ui/skeleton.cjs.map +0 -1
  160. package/dist/ui/spinner.cjs.map +0 -1
  161. package/dist/ui/table.cjs.map +0 -1
  162. package/dist/ui/tabs.cjs.map +0 -1
  163. package/dist/ui/toast.cjs.map +0 -1
  164. package/dist/ui/toggle.cjs.map +0 -1
  165. package/dist/ui/tooltip.cjs.map +0 -1
  166. package/dist/variants-1Bx3BEeS.d.cts +0 -8
  167. package/dist/variants-1Bx3BEeS.d.ts +0 -8
  168. /package/dist/ui/{accordion.d.cts → accordion.d.mts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/ui/accordion/accordion.tsx","../../src/lib/utils.ts","../../src/ui/accordion/animations.ts","../../src/ui/accordion/variants.ts","../../src/ui/alert/alert.tsx","../../src/ui/alert/animations.ts","../../src/ui/alert/variants.ts","../../src/ui/badge/badge.tsx","../../src/ui/badge/animations.ts","../../src/ui/badge/variants.ts","../../src/ui/buttons/button.tsx","../../src/ui/buttons/animations.ts","../../src/ui/buttons/variants.ts","../../src/ui/card/card.tsx","../../src/ui/card/animations.ts","../../src/ui/card/variants.ts","../../src/ui/divider/divider.tsx","../../src/ui/divider/animations.ts","../../src/ui/divider/variants.ts","../../src/ui/drawer/drawer.tsx","../../src/ui/drawer/animations.ts","../../src/ui/drawer/variants.ts","../../src/ui/dropdown/dropdown.tsx","../../src/ui/dropdown/variants.ts","../../src/ui/empty-state/empty-state.tsx","../../src/ui/empty-state/animations.ts","../../src/ui/empty-state/variants.ts","../../src/ui/inputs/animations.ts","../../src/ui/inputs/input.tsx","../../src/ui/inputs/variants.ts","../../src/ui/modal/modal.tsx","../../src/ui/modal/animations.ts","../../src/ui/modal/variants.ts","../../src/ui/pagination/pagination.tsx","../../src/ui/pagination/pagination-logic.ts","../../src/ui/pagination/use-pagination.ts","../../src/ui/pagination/variants.ts","../../src/ui/progress/progress.tsx","../../src/ui/progress/animations.ts","../../src/ui/progress/variants.ts","../../src/ui/select/select.tsx","../../src/ui/select/variants.ts","../../src/ui/skeleton/skeleton.tsx","../../src/ui/skeleton/animations.ts","../../src/ui/skeleton/variants.ts","../../src/ui/spinner/spinner.tsx","../../src/ui/spinner/variants.ts","../../src/ui/spinner/animations.ts","../../src/ui/table/table.tsx","../../src/ui/table/animations.ts","../../src/ui/table/variants.ts","../../src/ui/tabs/tabs.tsx","../../src/ui/tabs/animations.ts","../../src/ui/tabs/variants.ts","../../src/ui/toast/toast.tsx","../../src/ui/toast/animations.ts","../../src/ui/toast/variants.ts","../../src/ui/toggle/toggle.tsx","../../src/ui/toggle/animations.ts","../../src/ui/toggle/variants.ts","../../src/ui/tooltip/tooltip.tsx","../../src/ui/tooltip/variants.ts","../../src/ui/tooltip/animation.ts"],"sourcesContent":["\"use client\";\nimport { motion } from \"framer-motion\";\nimport {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useState,\n} from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { accordionContentTransitionPresets } from \"./animations\";\nimport type {\n AccordionContentProps,\n AccordionItemProps,\n AccordionProps,\n AccordionTriggerProps,\n AccordionCtx,\n} from \"./types\";\nimport {\n accordionContentVariants,\n accordionItemVariants,\n accordionTriggerVariants,\n accordionVariants,\n} from \"./variants\";\n\n\nconst AccordionContext = createContext<AccordionCtx | null>(null);\n\nconst AccordionItemValueContext = createContext<string | null>(null);\n\nfunction useAccordionContext(component: string): AccordionCtx {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Accordion>`);\n }\n return ctx;\n}\n\nfunction useAccordionItemValue(component: string): string {\n const value = useContext(AccordionItemValueContext);\n if (!value) {\n throw new Error(`${component} must be used within <AccordionItem>`);\n }\n return value;\n}\n\nexport function Accordion({\n type = \"single\",\n value,\n values,\n defaultValue,\n defaultValues,\n onValueChange,\n onValuesChange,\n transition = \"default\",\n appearance = \"default\",\n size = \"md\",\n className,\n children,\n}: AccordionProps) {\n const isSingleControlled = value !== undefined;\n const isMultipleControlled = values !== undefined;\n const [singleUncontrolled, setSingleUncontrolled] = useState<string | undefined>(defaultValue);\n const [multipleUncontrolled, setMultipleUncontrolled] = useState<string[]>(defaultValues ?? []);\n\n const singleValue = isSingleControlled ? value : singleUncontrolled;\n const multipleValues = useMemo(() => isMultipleControlled ? values ?? [] : multipleUncontrolled, [isMultipleControlled, values, multipleUncontrolled]);\n\n const isOpen = useCallback(\n (itemValue: string) => {\n if (type === \"single\") {\n return singleValue === itemValue;\n }\n return multipleValues.includes(itemValue);\n },\n [multipleValues, singleValue, type],\n );\n\n const toggle = useCallback(\n (itemValue: string) => {\n if (type === \"single\") {\n const next = singleValue === itemValue ? undefined : itemValue;\n if (!isSingleControlled) {\n setSingleUncontrolled(next);\n }\n onValueChange?.(next);\n return;\n }\n const exists = multipleValues.includes(itemValue);\n const next = exists\n ? multipleValues.filter((entry) => entry !== itemValue)\n : [...multipleValues, itemValue];\n if (!isMultipleControlled) {\n setMultipleUncontrolled(next);\n }\n onValuesChange?.(next);\n },\n [\n isMultipleControlled,\n isSingleControlled,\n multipleValues,\n onValueChange,\n onValuesChange,\n singleValue,\n type,\n ],\n );\n\n const ctx = useMemo(\n () => ({\n type,\n transition: transition ?? \"default\",\n appearance: appearance ?? \"default\",\n size: size ?? \"md\",\n isOpen,\n toggle,\n }),\n [appearance, isOpen, size, toggle, transition, type],\n );\n\n return (\n <AccordionContext.Provider value={ctx}>\n <div data-slot=\"accordion\" className={cn(accordionVariants({ appearance, size }), className)}>\n {children}\n </div>\n </AccordionContext.Provider>\n );\n}\n\nAccordion.displayName = \"Accordion\";\n\nexport function AccordionItem({ className, value, children, ref, ...rest }: AccordionItemProps) {\n const { appearance } = useAccordionContext(\"AccordionItem\");\n return (\n <AccordionItemValueContext.Provider value={value}>\n <div\n ref={ref}\n data-slot=\"accordion-item\"\n data-value={value}\n className={cn(accordionItemVariants({ appearance }), className)}\n {...rest}\n >\n {children}\n </div>\n </AccordionItemValueContext.Provider>\n );\n}\n\nAccordionItem.displayName = \"AccordionItem\";\n\nexport function AccordionTrigger({ className, children, ref, ...rest }: AccordionTriggerProps) {\n const itemValue = useAccordionItemValue(\"AccordionTrigger\");\n const { isOpen, toggle, size } = useAccordionContext(\"AccordionTrigger\");\n const open = isOpen(itemValue);\n const panelId = `${itemValue}-panel`;\n const baseId = useId();\n\n return (\n <h3 className=\"m-0\">\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"accordion-trigger\"\n id={`${baseId}-trigger-${itemValue}`}\n aria-expanded={open}\n aria-controls={panelId}\n className={cn(accordionTriggerVariants({ size }), className)}\n onClick={() => toggle(itemValue)}\n {...rest}\n >\n {children}\n </button>\n </h3>\n );\n}\n\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\nexport function AccordionContent({ className, children, ref }: AccordionContentProps) {\n const itemValue = useAccordionItemValue(\"AccordionContent\");\n const { isOpen, transition: transitionVariant, size } = useAccordionContext(\"AccordionContent\");\n const open = isOpen(itemValue);\n const panelId = `${itemValue}-panel`;\n const transitionConfig = accordionContentTransitionPresets[transitionVariant];\n const motionless = transitionVariant === \"none\";\n\n return (\n open ? (\n <motion.div\n key={itemValue}\n ref={ref}\n id={panelId}\n role=\"region\"\n data-slot=\"accordion-content\"\n className={cn(accordionContentVariants({ size }), className)}\n initial={motionless ? false : { opacity: 0 }}\n animate={motionless ? undefined : { opacity: 1 }}\n exit={motionless ? undefined : { opacity: 0 }}\n transition={transitionConfig}\n >\n {children}\n </motion.div>\n ) : null\n );\n}\n\nAccordionContent.displayName = \"AccordionContent\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import type { Transition } from \"framer-motion\";\n\n/** Easing and duration presets for accordion panel open/close (opacity only). */\nexport type AccordionTransition = \"none\" | \"default\" | \"smooth\" | \"slow\";\n\nexport type AccordionTransitionPresets = Record<AccordionTransition, Transition>;\n\nexport const accordionContentTransitionPresets: AccordionTransitionPresets = {\n none: { duration: 0 },\n default: { duration: 0.2, ease: [0.4, 0, 0.2, 1] },\n smooth: { duration: 0.28, ease: [0.22, 1, 0.36, 1] },\n slow: { duration: 0.38, ease: [0.4, 0, 0.2, 1] },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const accordionVariants = cva(\"w-full\", {\n variants: {\n appearance: {\n default: \"divide-y divide-white/10 rounded-xl border border-white/10\",\n outline: \"divide-y divide-white/10 rounded-xl border border-white/15\",\n ghost: \"divide-y divide-white/5\",\n card: \"space-y-2\",\n separated: \"space-y-3\",\n sky: \"divide-y divide-sky-600 rounded-xl border border-sky-600\",\n rose: \"divide-y divide-rose-600 rounded-xl border border-rose-600\",\n purple: \"divide-y divide-purple-600 rounded-xl border border-purple-600\",\n pink: \"divide-y divide-pink-600 rounded-xl border border-pink-600\",\n orange: \"divide-y divide-orange-600 rounded-xl border border-orange-600\",\n yellow: \"divide-y divide-yellow-600 rounded-xl border border-yellow-600\",\n teal: \"divide-y divide-teal-600 rounded-xl border border-teal-600\",\n indigo: \"divide-y divide-indigo-600 rounded-xl border border-indigo-600\",\n emerald: \"divide-y divide-emerald-600 rounded-xl border border-emerald-600\",\n \"gradient-blue\": \"divide-y divide-gradient-to-r from-blue-600 to-purple-600 rounded-xl border border-gradient-to-r from-blue-600 to-purple-600\",\n \"gradient-green\": \"divide-y divide-gradient-to-r from-green-600 to-lime-600 rounded-xl border border-gradient-to-r from-green-600 to-lime-600\",\n \"gradient-red\": \"divide-y divide-gradient-to-r from-red-600 to-pink-600 rounded-xl border border-gradient-to-r from-red-600 to-pink-600\",\n \"gradient-yellow\": \"divide-y divide-gradient-to-r from-yellow-600 to-orange-600 rounded-xl border border-gradient-to-r from-yellow-600 to-orange-600\",\n \"gradient-purple\": \"divide-y divide-gradient-to-r from-purple-600 to-pink-600 rounded-xl border border-gradient-to-r from-purple-600 to-pink-600\",\n \"gradient-teal\": \"divide-y divide-gradient-to-r from-teal-600 to-cyan-600 rounded-xl border border-gradient-to-r from-teal-600 to-cyan-600\",\n \"gradient-indigo\": \"divide-y divide-gradient-to-r from-indigo-600 to-purple-600 rounded-xl border border-gradient-to-r from-indigo-600 to-purple-600\",\n \"gradient-pink\": \"divide-y divide-gradient-to-r from-pink-600 to-rose-600 rounded-xl border border-gradient-to-r from-pink-600 to-rose-600\",\n \"gradient-orange\": \"divide-y divide-gradient-to-r from-orange-600 to-red-600 rounded-xl border border-gradient-to-r from-orange-600 to-red-600\",\n },\n size: {\n sm: \"px-3 py-2 text-sm\",\n md: \"px-4 py-3 text-sm\",\n lg: \"px-5 py-4 text-base\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});\n\nexport const accordionItemVariants = cva(\"\", {\n variants: {\n appearance: {\n default: \"\",\n outline: \"\",\n ghost: \"\",\n card: \"rounded-xl border border-white/10 bg-white/[0.03] p-2\",\n separated: \"rounded-xl border border-white/10 bg-slate-950/40 p-2\",\n sky: \"rounded-xl border border-sky-600 bg-sky-600/[0.03] p-2\",\n rose: \"rounded-xl border border-rose-600 bg-rose-600/[0.03] p-2\",\n purple: \"rounded-xl border border-purple-600 bg-purple-600/[0.03] p-2\",\n pink: \"rounded-xl border border-pink-600 bg-pink-600/[0.03] p-2\",\n orange: \"rounded-xl border border-orange-600 bg-orange-600/[0.03] p-2\",\n yellow: \"rounded-xl border border-yellow-600 bg-yellow-600/[0.03] p-2\",\n teal: \"rounded-xl border border-teal-600 bg-teal-600/[0.03] p-2\",\n indigo: \"rounded-xl border border-indigo-600 bg-indigo-600/[0.03] p-2\",\n emerald: \"rounded-xl border border-emerald-600 bg-emerald-600/[0.03] p-2\",\n \"gradient-blue\": \"rounded-xl bg-linear-to-r from-blue-600 to-purple-600/[0.03] p-2 text-white\",\n \"gradient-green\": \"rounded-xl bg-linear-to-r from-green-600 to-lime-600/[0.03] p-2 text-white\",\n \"gradient-red\": \"rounded-xl bg-linear-to-r from-red-600 to-pink-600/[0.03] p-2 text-white\",\n \"gradient-yellow\": \"rounded-xl bg-linear-to-r from-yellow-600 to-orange-600/[0.03] p-2 text-white\",\n \"gradient-purple\": \"rounded-xl bg-linear-to-r from-purple-600 to-pink-600/[0.03] p-2 text-white\",\n \"gradient-teal\": \"rounded-xl bg-linear-to-r from-teal-600 to-cyan-600/[0.03] p-2 text-white\",\n \"gradient-indigo\": \"rounded-xl bg-linear-to-r from-indigo-600 to-purple-600/[0.03] p-2 text-white\",\n \"gradient-pink\": \"rounded-xl bg-linear-to-r from-pink-600 to-rose-600/[0.03] p-2 text-white\",\n \"gradient-orange\": \"rounded-xl bg-linear-to-r from-orange-600 to-red-600/[0.03] p-2 text-white\",\n },\n },\n defaultVariants: { appearance: \"default\" },\n});\n\nexport const accordionTriggerVariants = cva(\n \"flex w-full items-center justify-between gap-3 py-3 text-left font-medium text-slate-50 outline-none transition hover:text-white focus-visible:ring-2 focus-visible:ring-white/30\",\n {\n variants: {\n size: {\n sm: \"py-2 text-sm\",\n md: \"py-3 text-sm\",\n lg: \"py-4 text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport const accordionContentVariants = cva(\"pb-3 text-sm\", {\n variants: {\n size: {\n sm: \"pb-2 text-xs\",\n md: \"pb-3 text-sm\",\n lg: \"pb-4 text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { HiExclamationTriangle, HiInformationCircle, HiXMark } from \"react-icons/hi2\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { alertAnimationPresets } from \"./animations\";\nimport type { AlertProps, AlertSectionProps, AlertSize } from \"./types\";\nimport {\n alertDescriptionVariants,\n alertTitleVariants,\n alertVariants,\n} from \"./variants\";\n\nconst AlertSizeContext = createContext<AlertSize>(\"md\");\n\nfunction useAlertSize(): AlertSize {\n const ctx = useContext(AlertSizeContext);\n if (!ctx) {\n throw new Error(\"useAlertSize must be used within an Alert\");\n }\n return ctx;\n}\n\nexport function Alert(props: AlertProps) {\n const {\n className,\n triggerClassName,\n appearance,\n size = \"md\",\n animation = \"none\",\n closable = false,\n onClose,\n closeLabel = \"Dismiss alert\",\n children,\n ref,\n ...rest\n } = props;\n const motionProps = alertAnimationPresets[animation];\n const live = appearance === \"error\" ? \"assertive\" : \"polite\";\n\n const ctx = useMemo(() => size ?? \"md\", [size]);\n\n return (\n <AlertSizeContext.Provider value={ctx}>\n <motion.div\n ref={ref}\n data-slot=\"alert\"\n role=\"alert\"\n aria-live={live}\n className={cn(\n alertVariants({ appearance, size }),\n closable ? \"pr-12\" : \"\",\n className,\n )}\n initial={animation === \"none\" ? false : undefined}\n {...motionProps}\n {...rest}\n >\n {children}\n {closable ? (\n <button\n type=\"button\"\n data-slot=\"alert-close\"\n aria-label={closeLabel}\n onClick={onClose}\n className={cn(\n \"absolute right-3 top-3 inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n triggerClassName,\n )}\n >\n <HiXMark className=\"size-4\" aria-hidden />\n </button>\n ) : null}\n </motion.div>\n </AlertSizeContext.Provider>\n );\n}\n\nAlert.displayName = \"Alert\";\n\nexport function AlertIcon({ className, children }: AlertSectionProps) {\n return (\n <span data-slot=\"alert-icon\" className={cn(\"mt-0.5 shrink-0 text-current\", className)}>\n {children}\n </span>\n );\n}\n\nAlertIcon.displayName = \"AlertIcon\";\n\nexport function AlertTitle({ className, children }: AlertSectionProps) {\n const size = useAlertSize();\n return (\n <div data-slot=\"alert-title\" className={cn(alertTitleVariants({ size }), className)}>\n {children}\n </div>\n );\n}\n\nAlertTitle.displayName = \"AlertTitle\";\n\nexport function AlertDescription({ className, children }: AlertSectionProps) {\n const size = useAlertSize();\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(alertDescriptionVariants({ size }), className)}\n >\n {children}\n </div>\n );\n}\n\nAlertDescription.displayName = \"AlertDescription\";\n\nexport function AlertClose({\n className,\n children,\n \"aria-label\": ariaLabel = \"Dismiss alert\",\n onClick,\n}: AlertSectionProps & { onClick?: () => void; \"aria-label\"?: string }) {\n return (\n <button\n type=\"button\"\n data-slot=\"alert-close\"\n aria-label={ariaLabel}\n onClick={onClick}\n className={cn(\n \"inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n className,\n )}\n >\n {children ?? <HiXMark className=\"size-4\" aria-hidden />}\n </button>\n );\n}\n\nAlertClose.displayName = \"AlertClose\";\n\nexport function AlertDefaultIcon({ appearance }: { appearance?: AlertProps[\"appearance\"] }) {\n if (appearance === \"error\") {\n return <HiExclamationTriangle className=\"size-5\" aria-hidden />;\n }\n return <HiInformationCircle className=\"size-5\" aria-hidden />;\n}\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { AlertAnimation } from \"./types\";\n\ntype AlertPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\"\n>;\n\nexport type AlertAnimationPresets = Record<AlertAnimation, AlertPresetMotionProps>;\n\nexport const alertAnimationPresets: AlertAnimationPresets = {\n none: {},\n \"slide-down\": {\n initial: { y: -8, opacity: 0 },\n animate: { y: 0, opacity: 1 },\n transition: { type: \"spring\", stiffness: 420, damping: 30 },\n },\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.2 },\n },\n pop: {\n initial: { scale: 0.96, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { type: \"spring\", stiffness: 520, damping: 28 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const alertVariants = cva(\n \"relative flex w-full gap-3 border text-sm ring-offset-slate-950 transition-colors\",\n {\n variants: {\n appearance: {\n default: \"border-white/10 bg-white/5 text-slate-50\",\n success: \"border-emerald-500/40 bg-emerald-500/10 text-emerald-50\",\n warning: \"border-amber-500/40 bg-amber-500/10 text-amber-50\",\n error: \"border-rose-500/50 bg-rose-500/10 text-rose-50\",\n info: \"border-sky-500/40 bg-sky-500/10 text-sky-50\",\n ghost: \"border-transparent bg-transparent text-slate-200\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n size: {\n sm: \"rounded-lg p-3\",\n md: \"rounded-xl p-4\",\n lg: \"rounded-2xl p-5 text-base\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport const alertTitleVariants = cva(\"font-semibold leading-tight\", {\n variants: {\n size: {\n sm: \"text-xs md:text-sm\",\n md: \"text-xs md:text-sm\",\n lg: \"text-xs md:text-sm\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport const alertDescriptionVariants = cva(\"text-slate-300\", {\n variants: {\n size: {\n sm: \"text-xs md:text-sm\",\n md: \"text-xs md:text-sm\",\n lg: \"text-xs md:text-sm\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { HiXMark } from \"react-icons/hi2\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { badgeAnimationPresets } from \"./animations\";\nimport type { BadgeProps } from \"./types\";\nimport { badgeCloseButtonVariants, badgeVariants } from \"./variants\";\n\nexport function Badge(props: BadgeProps) {\n const {\n className,\n appearance,\n size,\n shape,\n animation = \"none\",\n closable = false,\n onClose,\n closeLabel = \"Remove\",\n children,\n ref,\n \"aria-label\": ariaLabel,\n ...rest\n } = props;\n const motionProps = badgeAnimationPresets[animation];\n const isDot = shape === \"dot\";\n const resolvedAriaLabel =\n ariaLabel ?? (isDot ? \"Status indicator\" : undefined);\n\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"badge\"\n aria-label={resolvedAriaLabel}\n className={cn(badgeVariants({ appearance, size, shape }), className)}\n initial={animation === \"none\" ? false : undefined}\n {...motionProps}\n {...rest}\n >\n {!isDot ? children : null}\n {closable ? (\n <button\n type=\"button\"\n data-slot=\"badge-close\"\n aria-label={closeLabel}\n onClick={onClose}\n className={badgeCloseButtonVariants({ size })}\n >\n <HiXMark className=\"size-3.5\" aria-hidden />\n </button>\n ) : null}\n </motion.span>\n );\n}\n\nBadge.displayName = \"Badge\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { BadgeAnimation } from \"./types\";\n\ntype BadgePresetMotionProps = Pick<\n HTMLMotionProps<\"span\">,\n \"style\" | \"transition\" | \"whileHover\" | \"whileTap\" | \"animate\" | \"initial\"\n>;\n\nexport type BadgeAnimationPresets = Record<\n BadgeAnimation,\n BadgePresetMotionProps\n>;\n\nexport const badgeAnimationPresets: BadgeAnimationPresets = {\n none: {},\n pop: {\n initial: { scale: 0.92, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { type: \"spring\", stiffness: 520, damping: 28 },\n },\n bounce: {\n whileHover: { y: -2, scale: 1.04 },\n whileTap: { scale: 0.96 },\n transition: { type: \"spring\", bounce: 0.45, stiffness: 420, damping: 18 },\n },\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.2 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\n/**\n * Tailwind class maps mirroring `buttons/variants.ts` appearance tokens.\n * Reused by primitives that should stay visually aligned with Button.\n */\nexport const buttonLikeSolidAppearances = {\n default:\n \"bg-slate-50 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.12)]\",\n secondary: \"bg-slate-800 text-slate-50\",\n destructive: \"bg-rose-600 text-white\",\n outline: \"border border-white/10 bg-white/5 text-slate-50\",\n ghost: \"bg-transparent text-slate-200\",\n glass: \"border border-white/15 bg-white/10 text-white backdrop-blur-md\",\n emerald: \"bg-emerald-600 text-white\",\n indigo: \"bg-indigo-600 text-white\",\n purple: \"bg-purple-600 text-white\",\n pink: \"bg-pink-600 text-white\",\n rose: \"bg-rose-600 text-white\",\n sky: \"bg-sky-600 text-white\",\n teal: \"bg-teal-600 text-white\",\n yellow: \"bg-yellow-600 text-white\",\n orange: \"bg-orange-600 text-white\",\n \"gradient-blue\":\n \"bg-gradient-to-r from-blue-600 to-purple-600 text-white\",\n \"gradient-green\":\n \"bg-gradient-to-r from-green-600 to-lime-600 text-white\",\n \"gradient-red\":\n \"bg-gradient-to-r from-red-600 to-pink-600 text-white\",\n \"gradient-yellow\":\n \"bg-gradient-to-r from-yellow-600 to-orange-600 text-white\",\n \"gradient-purple\":\n \"bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"gradient-teal\":\n \"bg-gradient-to-r from-teal-600 to-cyan-600 text-white\",\n \"gradient-indigo\":\n \"bg-gradient-to-r from-indigo-600 to-purple-600 text-white\",\n \"gradient-pink\":\n \"bg-gradient-to-r from-pink-600 to-rose-600 text-white\",\n \"gradient-orange\":\n \"bg-gradient-to-r from-orange-600 to-red-600 text-white\",\n} as const;\n\nexport type ButtonLikeSolidAppearance = keyof typeof buttonLikeSolidAppearances;\n\n\nconst badgeAppearances = {\n ...buttonLikeSolidAppearances,\n outline:\n \"border border-white/15 bg-transparent text-slate-200 shadow-none\",\n ghost: \"bg-transparent text-slate-300 shadow-none\",\n} as const;\n\nexport const badgeVariants = cva(\n [\n \"inline-flex max-w-full items-center justify-center gap-1 font-medium\",\n \"whitespace-nowrap ring-offset-slate-950 transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2\",\n \"select-none\",\n ],\n {\n variants: {\n appearance: badgeAppearances,\n size: {\n sm: \"h-6 min-h-6 px-2 text-[0.65rem] leading-none\",\n md: \"h-7 min-h-7 px-2.5 text-xs leading-none\",\n lg: \"h-8 min-h-8 px-3 text-sm leading-none\",\n },\n shape: {\n pill: \"rounded-full\",\n square: \"rounded-md\",\n dot: \"h-2.5 min-h-2.5 w-2.5 min-w-2.5 rounded-full p-0 px-0 text-[0]\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n shape: \"pill\",\n },\n },\n);\n\nexport const badgeCloseButtonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center rounded-md p-0.5 text-current opacity-70 transition hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/40\",\n {\n variants: {\n size: {\n sm: \"size-4\",\n md: \"size-5\",\n lg: \"size-6\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { ButtonProps } from \"./types\";\nimport { buttonAnimationPresets } from \"./animations\";\nimport { buttonVariants } from \"./variants\";\n\nexport const Button = (props: ButtonProps) => {\n if (props.as === \"link\") {\n const {\n className,\n appearance,\n size,\n children,\n ref,\n href,\n target,\n animation = \"none\",\n ...rest\n } = props;\n const motionProps = buttonAnimationPresets[animation];\n\n return (\n <motion.a\n ref={ref}\n href={href}\n target={target}\n rel={target === \"_blank\" ? \"noopener noreferrer\" : undefined}\n data-slot=\"button\"\n className={cn(buttonVariants({ appearance, size }), className)}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.a>\n );\n }\n\n const {\n className,\n appearance,\n size,\n type = \"button\",\n children,\n ref,\n animation = \"none\",\n ...rest\n } = props;\n const motionProps = buttonAnimationPresets[animation];\n\n return (\n <motion.button\n ref={ref}\n type={type}\n data-slot=\"button\"\n className={cn(buttonVariants({ appearance, size }), className)}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.button>\n );\n};\n\nButton.displayName = \"Button\";\n","import type { AnimationPresets } from \"./types\";\n\nexport const buttonAnimationPresets: AnimationPresets = {\n none: {},\n lift: {\n whileHover: { y: -2, scale: 1.02 },\n whileTap: { y: 0, scale: 0.98 },\n transition: { type: \"spring\", stiffness: 420, damping: 28 },\n },\n press: {\n whileTap: { scale: 0.96 },\n transition: { type: \"spring\", stiffness: 520, damping: 30 },\n },\n glow: {\n whileHover: {\n boxShadow:\n \"0 0 0 1px rgba(255,255,255,0.25), 0 18px 42px rgba(15,23,42,0.35)\",\n scale: 1.01,\n },\n whileTap: { scale: 0.98 },\n transition: { duration: 0.2, ease: \"easeOut\" },\n },\n tilt: {\n whileHover: { rotateX: 6, rotateY: -6, scale: 1.01 },\n whileTap: { scale: 0.98, rotateX: 0, rotateY: 0 },\n transition: { type: \"spring\", stiffness: 300, damping: 20 },\n style: { transformStyle: \"preserve-3d\" },\n },\n bounce: {\n whileHover: { y: -4, scale: 1.03 },\n whileTap: { y: 0, scale: 0.97 },\n transition: { type: \"spring\", bounce: 0.45, duration: 0.45 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl\",\n \"text-sm font-medium ring-offset-slate-950 transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"select-none\",\n ],\n {\n variants: {\n appearance: {\n default:\n \"bg-slate-50 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.12)] hover:bg-white\",\n secondary: \"bg-slate-800 text-slate-50 hover:bg-slate-700\",\n destructive: \"bg-rose-600 text-white hover:bg-rose-600\",\n outline:\n \"border border-white/10 bg-white/5 text-slate-50 hover:bg-white/10\",\n ghost: \"bg-transparent text-slate-200 hover:bg-white/5\",\n link: \"bg-transparent text-cyan-300 underline-offset-4 hover:underline\",\n glass:\n \"border border-white/15 bg-white/10 text-white backdrop-blur-md hover:bg-white/15\",\n emerald: \"bg-emerald-600 text-white hover:bg-emerald-600\",\n indigo: \"bg-indigo-600 text-white hover:bg-indigo-600\",\n purple: \"bg-purple-600 text-white hover:bg-purple-600\",\n pink: \"bg-pink-600 text-white hover:bg-pink-600\",\n rose: \"bg-rose-600 text-white hover:bg-rose-600\",\n sky: \"bg-sky-600 text-white hover:bg-sky-600\",\n teal: \"bg-teal-600 text-white hover:bg-teal-600\",\n yellow: \"bg-yellow-600 text-white hover:bg-yellow-600\",\n orange: \"bg-orange-600 text-white hover:bg-orange-600\",\n gray: \"bg-gray-600 text-white hover:bg-gray-600\",\n amber: \"bg-amber-600 text-white hover:bg-amber-600\",\n violet: \"bg-violet-600 text-white hover:bg-violet-600\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600 text-white hover:from-blue-600 hover:to-purple-600\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600 text-white hover:from-green-600 hover:to-lime-600\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600 text-white hover:from-red-600 hover:to-pink-600\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600 text-white hover:from-yellow-600 hover:to-orange-600\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600 text-white hover:from-purple-600 hover:to-pink-600\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600 text-white hover:from-teal-600 hover:to-cyan-600\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600 text-white hover:from-indigo-600 hover:to-purple-600\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600 text-white hover:from-pink-600 hover:to-rose-600\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600 text-white hover:from-orange-600 hover:to-red-600\",\n },\n size: {\n sm: \"h-7 md:h-9 px-3 text-xs\",\n md: \"h-9 md:h-11 px-4\",\n lg: \"h-10 md:h-12 px-5 text-base\",\n xl: \"h-12 md:h-14 px-6 text-lg\",\n \"2xl\": \"h-14 md:h-16 px-6 md:px-8 text-xl\",\n \"3xl\": \"h-16 md:h-18 px-8 md:px-10 text-2xl\",\n \"4xl\": \"h-18 md:h-20 px-10 md:px-12 text-2xl\",\n \"5xl\": \"h-20 md:h-22 px-12 md:px-14 text-2xl\",\n \"6xl\": \"h-22 md:h-24 px-14 md:px-16 text-2xl\",\n \"7xl\": \"h-24 md:h-26 px-16 md:px-18 text-2xl\",\n \"8xl\": \"h-26 md:h-28 px-20 text-2xl\",\n \"9xl\": \"h-24 md:h-30 px-18 md:px-22 text-2xl\",\n \"10xl\": \"h-26 md:h-32 px-20 md:px-24 text-2xl\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { cardAnimationPresets } from \"./animations\";\nimport type {\n CardDescriptionProps,\n CardProps,\n CardSectionProps,\n CardTitleProps,\n} from \"./types\";\nimport {\n cardDescriptionVariants,\n cardFooterVariants,\n cardHeaderVariants,\n cardTitleVariants,\n cardVariants,\n} from \"./variants\";\n\ntype CardSize = NonNullable<CardProps[\"size\"]>;\n\nconst CardSizeContext = createContext<CardSize>(\"md\");\n\nfunction useCardSize(): CardSize {\n return useContext(CardSizeContext);\n}\n\nexport function Card(props: CardProps) {\n const {\n className,\n appearance,\n size = \"md\",\n rounded,\n animation = \"none\",\n children,\n ref,\n ...rest\n } = props;\n const motionProps = cardAnimationPresets[animation];\n const ctx = useMemo(() => size ?? \"md\", [size]);\n\n return (\n <CardSizeContext.Provider value={ctx}>\n <motion.article\n ref={ref}\n data-slot=\"card\"\n className={cn(cardVariants({ appearance, size, rounded }), className)}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.article>\n </CardSizeContext.Provider>\n );\n}\n\nCard.displayName = \"Card\";\n\nexport function CardHeader({ className, children }: CardSectionProps) {\n const size = useCardSize();\n return (\n <header\n data-slot=\"card-header\"\n className={cn(cardHeaderVariants({ size }), className)}\n >\n {children}\n </header>\n );\n}\n\nCardHeader.displayName = \"CardHeader\";\n\nexport function CardBody({ className, children }: CardSectionProps) {\n return (\n <div data-slot=\"card-body\" className={cn(\"flex flex-1 flex-col gap-2\", className)}>\n {children}\n </div>\n );\n}\n\nCardBody.displayName = \"CardBody\";\n\nexport function CardFooter({ className, children }: CardSectionProps) {\n const size = useCardSize();\n return (\n <footer\n data-slot=\"card-footer\"\n className={cn(cardFooterVariants({ size }), className)}\n >\n {children}\n </footer>\n );\n}\n\nCardFooter.displayName = \"CardFooter\";\n\nexport function CardTitle({\n className,\n children,\n as = \"h3\",\n ref,\n ...rest\n}: CardTitleProps) {\n const size = useCardSize();\n const Tag = as;\n return (\n <Tag\n ref={ref as never}\n data-slot=\"card-title\"\n className={cn(cardTitleVariants({ size }), className)}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n\nCardTitle.displayName = \"CardTitle\";\n\nexport function CardDescription({\n className,\n children,\n as = \"p\",\n ref,\n ...rest\n}: CardDescriptionProps) {\n const size = useCardSize();\n const Tag = as;\n return (\n <Tag\n ref={ref as never}\n data-slot=\"card-description\"\n className={cn(cardDescriptionVariants({ size }), className)}\n {...rest}\n >\n {children}\n </Tag>\n );\n}\n\nCardDescription.displayName = \"CardDescription\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { CardAnimation } from \"./types\";\n\ntype CardPresetMotionProps = Pick<\n HTMLMotionProps<\"article\">,\n \"style\" | \"transition\" | \"whileHover\" | \"whileTap\"\n>;\n\nexport type CardAnimationPresets = Record<CardAnimation, CardPresetMotionProps>;\n\nexport const cardAnimationPresets: CardAnimationPresets = {\n none: {},\n lift: {\n whileHover: { y: -4, scale: 1.01 },\n whileTap: { y: 0, scale: 0.995 },\n transition: { type: \"spring\", stiffness: 380, damping: 26 },\n },\n glow: {\n whileHover: {\n boxShadow:\n \"0 0 0 1px rgba(255,255,255,0.18), 0 22px 48px rgba(15,23,42,0.45)\",\n },\n transition: { duration: 0.22, ease: \"easeOut\" },\n },\n tilt: {\n whileHover: { rotateX: 4, rotateY: -4, scale: 1.01 },\n whileTap: { rotateX: 0, rotateY: 0, scale: 0.99 },\n transition: { type: \"spring\", stiffness: 280, damping: 22 },\n style: { transformStyle: \"preserve-3d\" },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const cardVariants = cva(\n [\n \"relative flex w-full flex-col overflow-hidden text-slate-50\",\n \"ring-offset-slate-950 transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2\",\n ],\n {\n variants: {\n appearance: {\n default:\n \"border border-white/10 bg-white/5 shadow-[0_1px_2px_rgba(15,23,42,0.12)]\",\n glass:\n \"border border-white/15 bg-white/10 backdrop-blur-md shadow-[0_18px_48px_rgba(15,23,42,0.35)]\",\n outline: \"border border-white/15 bg-transparent\",\n ghost: \"border border-transparent bg-transparent\",\n elevated:\n \"border border-white/10 bg-slate-900/80 shadow-[0_24px_64px_rgba(15,23,42,0.45)]\",\n sky: \"border border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n size: {\n sm: \"gap-2 p-3 text-sm\",\n md: \"gap-3 p-4 text-sm\",\n lg: \"gap-4 p-6 text-base\",\n },\n rounded: {\n sm: \"rounded-lg\",\n md: \"rounded-xl\",\n lg: \"rounded-2xl\",\n full: \"rounded-3xl\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n rounded: \"md\",\n },\n },\n);\n\nexport const cardHeaderVariants = cva(\n \"flex flex-col gap-1 border-b border-white/10 pb-3\",\n {\n variants: {\n size: {\n sm: \"pb-2\",\n md: \"pb-3\",\n lg: \"pb-4\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport const cardFooterVariants = cva(\n \"flex flex-col gap-2 border-t border-white/10 pt-3\",\n {\n variants: {\n size: {\n sm: \"pt-2\",\n md: \"pt-3\",\n lg: \"pt-4\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport const cardTitleVariants = cva(\"font-semibold tracking-tight text-slate-50\", {\n variants: {\n size: {\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport const cardDescriptionVariants = cva(\"text-slate-400\", {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { dividerAnimationPresets } from \"./animations\";\nimport type { DividerProps } from \"./types\";\nimport {\n dividerLabelVariants,\n dividerLineVariants,\n dividerToneVariants,\n dividerVariants,\n} from \"./variants\";\n\nexport function Divider(props: DividerProps) {\n const {\n className,\n appearance,\n orientation,\n size,\n animation = \"none\",\n label,\n children,\n ref,\n ...rest\n } = props;\n const motionProps = dividerAnimationPresets[animation];\n const slot = label ?? children;\n\n if (!slot) {\n return (\n <motion.div\n ref={ref}\n data-slot=\"divider\"\n role=\"separator\"\n aria-orientation={orientation === \"vertical\" ? \"vertical\" : \"horizontal\"}\n className={cn(\n dividerToneVariants({ appearance }),\n orientation === \"horizontal\"\n ? \"flex w-full min-h-px flex-row items-stretch\"\n : \"flex h-full min-h-8 w-auto min-w-0 flex-col items-stretch self-stretch\",\n className,\n )}\n initial={animation === \"none\" ? false : undefined}\n {...motionProps}\n {...rest}\n >\n <span className={cn(dividerLineVariants({ orientation, size }))} aria-hidden />\n </motion.div>\n );\n }\n\n return (\n <motion.div\n ref={ref}\n data-slot=\"divider\"\n role=\"separator\"\n aria-orientation={orientation === \"vertical\" ? \"vertical\" : \"horizontal\"}\n className={cn(dividerVariants({ appearance, orientation, size }), className)}\n initial={animation === \"none\" ? false : undefined}\n {...motionProps}\n {...rest}\n >\n <span\n className={cn(dividerLineVariants({ orientation, size }))}\n aria-hidden\n />\n <span data-slot=\"divider-label\" className={dividerLabelVariants()}>\n {slot}\n </span>\n <span\n className={cn(dividerLineVariants({ orientation, size }))}\n aria-hidden\n />\n </motion.div>\n );\n}\n\nDivider.displayName = \"Divider\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { DividerAnimation } from \"./types\";\n\ntype DividerPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\" | \"whileHover\"\n>;\n\nexport type DividerAnimationPresets = Record<\n DividerAnimation,\n DividerPresetMotionProps\n>;\n\nexport const dividerAnimationPresets: DividerAnimationPresets = {\n none: {},\n expand: {\n initial: { scaleX: 0.6, opacity: 0.4 },\n animate: { scaleX: 1, opacity: 1 },\n transition: { duration: 0.35, ease: \"easeOut\" },\n },\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.25 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nconst APPEARANCES = {\n default: \"text-slate-200\",\n muted: \"text-slate-500\",\n primary: \"text-cyan-300\",\n destructive: \"text-rose-400\",\n ghost: \"text-slate-600\",\n sky: \"text-sky-400\",\n rose: \"text-rose-400\",\n purple: \"text-purple-400\",\n pink: \"text-pink-400\",\n orange: \"text-orange-400\",\n yellow: \"text-yellow-400\",\n teal: \"text-teal-400\",\n indigo: \"text-indigo-400\",\n emerald: \"text-emerald-400\",\n gray: \"text-gray-400\",\n amber: \"text-amber-400\",\n violet: \"text-violet-400\",\n \"gradient-blue\": \"text-blue-400\",\n \"gradient-green\": \"text-green-400\",\n \"gradient-red\": \"text-red-400\",\n \"gradient-yellow\": \"text-yellow-400\",\n \"gradient-purple\": \"text-purple-400\",\n \"gradient-teal\": \"text-teal-400\",\n \"gradient-indigo\": \"text-indigo-400\",\n \"gradient-pink\": \"text-pink-400\",\n \"gradient-orange\": \"text-orange-400\",\n};\n\nexport const dividerToneVariants = cva(\"\", {\n variants: {\n appearance: APPEARANCES,\n },\n defaultVariants: { appearance: \"default\" },\n});\n\nexport const dividerVariants = cva(\"flex w-full items-center gap-3\", {\n variants: {\n appearance: APPEARANCES,\n orientation: {\n horizontal: \"w-full flex-row\",\n vertical: \"h-full min-h-[2rem] w-auto flex-col self-stretch\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n { orientation: \"horizontal\", size: \"sm\", class: \"min-h-px\" },\n { orientation: \"horizontal\", size: \"md\", class: \"min-h-[2px]\" },\n { orientation: \"horizontal\", size: \"lg\", class: \"min-h-[3px]\" },\n { orientation: \"vertical\", size: \"sm\", class: \"min-w-px\" },\n { orientation: \"vertical\", size: \"md\", class: \"min-w-[2px]\" },\n { orientation: \"vertical\", size: \"lg\", class: \"min-w-[3px]\" },\n ],\n defaultVariants: {\n appearance: \"default\",\n orientation: \"horizontal\",\n size: \"md\",\n },\n});\n\nexport const dividerLineVariants = cva(\n \"shrink grow rounded-full bg-current opacity-80\",\n {\n variants: {\n orientation: {\n horizontal: \"h-px\",\n vertical: \"w-px flex-1\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n { orientation: \"horizontal\", size: \"sm\", class: \"h-px\" },\n { orientation: \"horizontal\", size: \"md\", class: \"h-0.5\" },\n { orientation: \"horizontal\", size: \"lg\", class: \"h-1\" },\n { orientation: \"vertical\", size: \"sm\", class: \"w-px\" },\n { orientation: \"vertical\", size: \"md\", class: \"w-0.5\" },\n { orientation: \"vertical\", size: \"lg\", class: \"w-1\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n size: \"md\",\n },\n },\n);\n\nexport const dividerLabelVariants = cva(\n \"shrink-0 text-xs font-medium uppercase tracking-wide text-current\",\n);\n","\"use client\";\n\nimport { AnimatePresence, motion, useReducedMotion } from \"framer-motion\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { drawerPanelPresets } from \"./animations\";\nimport type {\n DrawerContentProps,\n DrawerProps,\n DrawerSectionProps,\n DrawerTriggerProps,\n} from \"./types\";\nimport { drawerContentVariants, drawerOverlayVariants, drawerTriggerVariants } from \"./variants\";\n\ntype DrawerCtx = {\n open: boolean;\n setOpen: (next: boolean) => void;\n titleId: string;\n descriptionId: string;\n contentRef: React.RefObject<HTMLDivElement | null>;\n};\n\nconst DrawerContext = createContext<DrawerCtx | null>(null);\n\nfunction useDrawerContext(component: string): DrawerCtx {\n const ctx = useContext(DrawerContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Drawer>`);\n }\n return ctx;\n}\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex=\"-1\"])';\n\nfunction useBodyScrollLock(locked: boolean) {\n useEffect(() => {\n if (!locked) {\n return;\n }\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previousOverflow;\n };\n }, [locked]);\n}\n\nexport function Drawer({ open, defaultOpen = false, onOpenChange, children }: DrawerProps) {\n const isControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next);\n }\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n const baseId = useId();\n const titleId = `${baseId}-title`;\n const descriptionId = `${baseId}-description`;\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const ctx = useMemo(\n () => ({\n open: resolvedOpen,\n setOpen,\n titleId,\n descriptionId,\n contentRef,\n }),\n [descriptionId, resolvedOpen, setOpen, titleId],\n );\n\n return <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>;\n}\n\nDrawer.displayName = \"Drawer\";\n\nexport function DrawerTrigger({ className, children, appearance, onClick, ref, ...rest }: DrawerTriggerProps) {\n const { setOpen } = useDrawerContext(\"DrawerTrigger\");\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"drawer-trigger\"\n className={cn(drawerTriggerVariants({ appearance }), className)}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nDrawerTrigger.displayName = \"DrawerTrigger\";\n\nexport function DrawerContent({\n className,\n side = \"right\",\n size,\n appearance,\n animation = \"slide\",\n children,\n ref,\n id,\n style,\n}: DrawerContentProps) {\n const { open, setOpen, titleId, descriptionId, contentRef } = useDrawerContext(\"DrawerContent\");\n const resolvedSide = side ?? \"right\";\n const reduceMotion = useReducedMotion();\n const overlayMotion = drawerPanelPresets(resolvedSide)[reduceMotion ? \"fade\" : animation];\n const panelMotion = drawerPanelPresets(resolvedSide)[reduceMotion ? \"fade\" : animation];\n\n useBodyScrollLock(open);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, setOpen]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n const node = contentRef.current;\n if (!node) {\n return;\n }\n const focusables = Array.from(\n node.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((element) => element.offsetParent !== null || element === node);\n const target = focusables[0] ?? node;\n const previouslyFocused = document.activeElement as HTMLElement | null;\n target.focus();\n\n const handleFocusIn = (event: FocusEvent) => {\n if (!node.contains(event.target as Node)) {\n event.stopPropagation();\n target.focus();\n }\n };\n document.addEventListener(\"focusin\", handleFocusIn);\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn);\n previouslyFocused?.focus?.();\n };\n }, [contentRef, open]);\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n <AnimatePresence>\n {open ? (\n <div className=\"fixed inset-0 z-50\" data-slot=\"drawer-portal\">\n <motion.button\n type=\"button\"\n aria-hidden\n tabIndex={-1}\n data-slot=\"drawer-overlay\"\n className={drawerOverlayVariants()}\n onClick={() => setOpen(false)}\n initial={animation === \"none\" ? false : overlayMotion.initial}\n animate={animation === \"none\" ? undefined : overlayMotion.animate}\n exit={animation === \"none\" ? undefined : overlayMotion.exit}\n transition={overlayMotion.transition}\n />\n <motion.div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n data-slot=\"drawer-content\"\n tabIndex={-1}\n className={cn(\n drawerContentVariants({ side: resolvedSide, size, appearance }),\n className,\n )}\n initial={animation === \"none\" ? false : panelMotion.initial}\n animate={animation === \"none\" ? undefined : panelMotion.animate}\n exit={animation === \"none\" ? undefined : panelMotion.exit}\n transition={panelMotion.transition}\n id={id}\n style={style}\n >\n {children}\n </motion.div>\n </div>\n ) : null}\n </AnimatePresence>,\n portalTarget,\n );\n}\n\nDrawerContent.displayName = \"DrawerContent\";\n\nexport function DrawerHeader({ className, children }: DrawerSectionProps) {\n return (\n <header data-slot=\"drawer-header\" className={cn(\"mb-4 flex flex-col gap-2\", className)}>\n {children}\n </header>\n );\n}\n\nDrawerHeader.displayName = \"DrawerHeader\";\n\nexport function DrawerBody({ className, children }: DrawerSectionProps) {\n return (\n <div data-slot=\"drawer-body\" className={cn(\"flex-1 text-sm text-slate-300\", className)}>\n {children}\n </div>\n );\n}\n\nDrawerBody.displayName = \"DrawerBody\";\n\nexport function DrawerFooter({ className, children }: DrawerSectionProps) {\n return (\n <footer data-slot=\"drawer-footer\" className={cn(\"mt-6 flex justify-end gap-2\", className)}>\n {children}\n </footer>\n );\n}\n\nDrawerFooter.displayName = \"DrawerFooter\";\n\nexport function DrawerTitle({ className, children }: DrawerSectionProps) {\n const { titleId } = useDrawerContext(\"DrawerTitle\");\n return (\n <h2 id={titleId} data-slot=\"drawer-title\" className={cn(\"text-lg font-semibold\", className)}>\n {children}\n </h2>\n );\n}\n\nDrawerTitle.displayName = \"DrawerTitle\";\n\nexport function DrawerClose({ className, children, ...rest }: DrawerSectionProps) {\n const { setOpen } = useDrawerContext(\"DrawerClose\");\n return (\n <button\n type=\"button\"\n data-slot=\"drawer-close\"\n className={cn(\n \"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n className,\n )}\n aria-label=\"Close drawer\"\n onClick={() => setOpen(false)}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nDrawerClose.displayName = \"DrawerClose\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nexport type DrawerAnimation = \"none\" | \"fade\" | \"scale\" | \"slide\";\n\ntype DrawerPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"exit\" | \"transition\"\n>;\n\nexport type DrawerAnimationPresets = Record<DrawerAnimation, DrawerPresetMotionProps>;\n\nexport const drawerPanelPresets = (\n side: \"left\" | \"right\" | \"top\" | \"bottom\",\n): DrawerAnimationPresets => ({\n none: {},\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.2 },\n },\n scale: {\n initial: { opacity: 0, scale: 0.98 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.98 },\n transition: { type: \"spring\", stiffness: 420, damping: 32 },\n },\n slide: {\n initial:\n side === \"left\"\n ? { x: -24, opacity: 0 }\n : side === \"right\"\n ? { x: 24, opacity: 0 }\n : side === \"top\"\n ? { y: -24, opacity: 0 }\n : { y: 24, opacity: 0 },\n animate: { x: 0, y: 0, opacity: 1 },\n exit:\n side === \"left\"\n ? { x: -16, opacity: 0 }\n : side === \"right\"\n ? { x: 16, opacity: 0 }\n : side === \"top\"\n ? { y: -16, opacity: 0 }\n : { y: 16, opacity: 0 },\n transition: { type: \"spring\", stiffness: 380, damping: 30 },\n },\n});\n","import { cva } from \"class-variance-authority\";\n\nexport const drawerOverlayVariants = cva(\"fixed inset-0 z-50 bg-slate-950/70 backdrop-blur-sm\");\n\nexport const drawerTriggerVariants = cva(\n \"relative inline-flex shrink-0 cursor-pointer rounded-md border\",\n {\n variants: {\n appearance: {\n default: \"bg-slate-950\",\n glass: \"border-white/15 bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n },\n },\n);\n\nexport const drawerContentVariants = cva(\n \"fixed z-50 flex max-h-[min(92vh,900px)] flex-col border border-white/10 bg-slate-950 p-6 text-slate-50 shadow-[0_24px_80px_rgba(15,23,42,0.55)] focus:outline-none\",\n {\n variants: {\n side: {\n left: \"left-0 top-0 h-full w-[min(100%,420px)]\",\n right: \"right-0 top-0 h-full w-[min(100%,420px)]\",\n top: \"left-0 top-0 w-full max-h-[min(92vh,520px)]\",\n bottom: \"bottom-0 left-0 w-full max-h-[min(92vh,520px)]\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n xl: \"\",\n full: \"\",\n },\n appearance: {\n default: \"bg-slate-950\",\n glass: \"border-white/15 bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n },\n compoundVariants: [\n { side: \"left\", size: \"sm\", class: \"w-[min(100%,320px)]\" },\n { side: \"left\", size: \"md\", class: \"w-[min(100%,420px)]\" },\n { side: \"left\", size: \"lg\", class: \"w-[min(100%,520px)]\" },\n { side: \"left\", size: \"xl\", class: \"w-[min(100%,640px)]\" },\n { side: \"left\", size: \"full\", class: \"w-full max-w-none\" },\n { side: \"right\", size: \"sm\", class: \"w-[min(100%,320px)]\" },\n { side: \"right\", size: \"md\", class: \"w-[min(100%,420px)]\" },\n { side: \"right\", size: \"lg\", class: \"w-[min(100%,520px)]\" },\n { side: \"right\", size: \"xl\", class: \"w-[min(100%,640px)]\" },\n { side: \"right\", size: \"full\", class: \"w-full max-w-none\" },\n ],\n defaultVariants: {\n side: \"right\",\n size: \"md\",\n appearance: \"default\",\n },\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n useContext,\n useState,\n useRef,\n useEffect,\n} from \"react\";\nimport { FiCheck } from \"react-icons/fi\";\nimport { cn } from \"../../lib/utils\";\nimport type { DropdownContextType, DropdownProps, DropdownTriggerProps, DropdownContentProps, DropdownItemProps } from \"./types\";\nimport { triggerVariants, contentVariants, itemVariants } from \"./variants\";\n\n/* =========================\n Context\n========================= */\nconst DropdownContext = createContext<DropdownContextType | null>(null);\n\nconst useDropdown = () => {\n const ctx = useContext(DropdownContext);\n if (!ctx) throw new Error(\"Use inside Dropdown\");\n return ctx;\n};\n\n/* =========================\n Root\n========================= */\nexport const Dropdown = ({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n multiSelect = false,\n}: DropdownProps) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [selectedValues, setSelectedValues] = useState<string[]>([]);\n\n const open = controlledOpen ?? uncontrolledOpen;\n\n const setOpen = (val: boolean) => {\n if (controlledOpen !== undefined) {\n onOpenChange?.(val);\n } else {\n setUncontrolledOpen(val);\n }\n };\n\n const toggle = () => setOpen(!open);\n\n const toggleSelect = (value: string) => {\n if (!multiSelect) {\n setSelectedValues([value]);\n setOpen(false);\n return;\n }\n\n setSelectedValues((prev) =>\n prev.includes(value)\n ? prev.filter((v) => v !== value)\n : [...prev, value]\n );\n };\n\n return (\n <DropdownContext.Provider\n value={{\n open,\n setOpen,\n toggle,\n selectedValues,\n toggleSelect,\n multiSelect,\n }}\n >\n <div className=\"relative inline-block\">{children}</div>\n </DropdownContext.Provider>\n );\n};\n\n/* =========================\n Trigger\n========================= */\nexport const DropdownTrigger = ({\n children,\n className,\n variant,\n size,\n ...props\n}: DropdownTriggerProps) => {\n const { toggle } = useDropdown();\n\n return (\n <button\n onClick={toggle}\n className={cn(triggerVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </button>\n );\n};\n\n/* =========================\n Content\n========================= */\nexport const DropdownContent = ({\n children,\n className,\n placement = \"bottom\",\n spacing = \"default\",\n divider,\n ...props\n}: DropdownContentProps) => {\n const { open, setOpen } = useDropdown();\n const ref = useRef<HTMLDivElement>(null);\n\n // click outside\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [setOpen]);\n\n if (!open) return null;\n\n return (\n <div\n ref={ref}\n className={cn(contentVariants({ placement, spacing }), className, divider && \"divide-y divide-current\")}\n {...props}\n >\n {children}\n </div>\n );\n};\n\n/* =========================\n Item\n========================= */\nexport const DropdownItem = ({\n children,\n value,\n className,\n variant,\n onSelect,\n leftIcon,\n rightIcon,\n ...props\n}: DropdownItemProps) => {\n const { toggleSelect, selectedValues } = useDropdown();\n const isSelected = selectedValues.includes(value);\n\n const handleClick = () => {\n toggleSelect(value);\n onSelect?.();\n };\n\n return (\n <div\n tabIndex={0}\n onClick={handleClick}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleClick();\n }}\n className={cn(itemVariants({ variant }), className)}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n {leftIcon}\n {children}\n </div>\n\n <div className=\"flex items-center gap-2\">\n {isSelected && <FiCheck />}\n {rightIcon}\n </div>\n </div>\n );\n};","import { cva } from \"class-variance-authority\";\n\nexport const triggerVariants = cva(\n \"inline-flex items-center justify-between rounded-md font-medium transition focus:outline-none cursor-pointer\",\n {\n variants: {\n variant: {\n default: \"bg-gray-900 text-white\",\n outline: \"border border-gray-300\",\n ghost: \"bg-transparent\",\n white: \"bg-white text-gray-900\",\n black: \"bg-black text-white\",\n sky: \"border border-sky-600 text-sky-600\",\n rose: \"border border-rose-600 text-rose-600\",\n purple: \"border border-purple-600 text-purple-600\",\n pink: \"border border-pink-600 text-pink-600\",\n orange: \"border border-orange-600 text-orange-600\",\n yellow: \"border border-yellow-600 text-yellow-600\",\n teal: \"border border-teal-600 text-teal-600\",\n indigo: \"border border-indigo-600 text-indigo-600\",\n emerald: \"border border-emerald-600 text-emerald-600\",\n gray: \"border border-gray-600 text-gray-600\",\n amber: \"border border-amber-600 text-amber-600\",\n violet: \"border border-violet-600 text-violet-600\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600 text-gradient-to-r from-blue-600 to-purple-600\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600 text-gradient-to-r from-green-600 to-lime-600\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600 text-gradient-to-r from-red-600 to-pink-600\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600 text-gradient-to-r from-yellow-600 to-orange-600\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600 text-gradient-to-r from-purple-600 to-pink-600\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600 text-gradient-to-r from-teal-600 to-cyan-600\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600 text-gradient-to-r from-indigo-600 to-purple-600\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600 text-gradient-to-r from-pink-600 to-rose-600\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600 text-gradient-to-r from-orange-600 to-red-600\",\n },\n size: {\n sm: \"px-2 py-1 text-sm\",\n md: \"px-3 py-2 text-base\",\n lg: \"px-4 py-3 text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n);\n\nexport const contentVariants = cva(\n \"absolute min-w-[200px] rounded-md p-2 shadow-md z-50 border\",\n {\n variants: {\n placement: {\n top: \"bottom-full mb-2\",\n bottom: \"top-full mt-2\",\n left: \"right-full mr-2\",\n right: \"left-full ml-2\",\n },\n spacing:{\n none: \"space-y-0\",\n default: \"space-y-1\",\n sm: \"space-y-2\",\n md: \"space-y-3\",\n lg: \"space-y-4\",\n xl: \"space-y-5\",\n }\n },\n defaultVariants: {\n placement: \"bottom\",\n spacing: \"default\",\n },\n }\n);\n\nexport const itemVariants = cva(\n \"flex items-center justify-between px-3 py-2 text-sm cursor-pointer rounded-md transition-colors\",\n {\n variants: {\n variant: {\n default: \"hover:bg-gray-100 hover:text-gray-900 text-gray-100\",\n outline: \"hover:bg-gray-100 hover:text-gray-900 border border-white text-gray-100\",\n ghost: \"hover:bg-gray-100 hover:text-gray-900 bg-transparent text-gray-100\",\n white: \"hover:bg-gray-100 hover:text-gray-900 bg-white text-gray-900\",\n black: \"hover:bg-gray-100 hover:text-gray-900 bg-black text-white\",\n sky: \"hover:bg-sky-100 hover:text-sky-600 bg-sky-200 text-sky-800\",\n rose: \"hover:bg-rose-100 hover:text-rose-600 bg-rose-200 text-rose-800\",\n purple: \"hover:bg-purple-100 hover:text-purple-600 bg-purple-200 text-purple-800\",\n pink: \"hover:bg-pink-100 hover:text-pink-600 bg-pink-200 text-pink-800\",\n orange: \"hover:bg-orange-100 hover:text-orange-600 bg-orange-200 text-orange-800\",\n yellow: \"hover:bg-yellow-100 hover:text-yellow-600 bg-yellow-200 text-yellow-800\",\n teal: \"hover:bg-teal-100 hover:text-teal-600 bg-teal-200 text-teal-800\",\n indigo: \"hover:bg-indigo-100 hover:text-indigo-600 bg-indigo-200 text-indigo-800\",\n emerald: \"hover:bg-emerald-100 hover:text-emerald-600 bg-emerald-200 text-emerald-800\",\n gray: \"hover:bg-gray-100 hover:text-gray-900 bg-gray-200 text-gray-800\",\n amber: \"hover:bg-amber-100 hover:text-amber-600 bg-amber-200 text-amber-800\",\n violet: \"hover:bg-violet-100 hover:text-violet-600 bg-violet-200 text-violet-800\",\n \"gradient-blue\": \"hover:bg-gradient-to-r from-blue-600 to-purple-600 hover:text-blue-900 bg-gradient-to-r from-blue-200 to-purple-200 text-blue-800\",\n \"gradient-green\": \"hover:bg-gradient-to-r from-green-600 to-lime-600 hover:text-green-900 bg-gradient-to-r from-green-200 to-lime-200 text-green-800\",\n \"gradient-red\": \"hover:bg-gradient-to-r from-red-600 to-pink-600 hover:text-red-900 bg-gradient-to-r from-red-200 to-pink-200 text-red-800\",\n \"gradient-yellow\": \"hover:bg-gradient-to-r from-yellow-600 to-orange-600 hover:text-yellow-900 bg-gradient-to-r from-yellow-200 to-orange-200 text-yellow-800\",\n \"gradient-purple\": \"hover:bg-gradient-to-r from-purple-600 to-pink-600 hover:text-purple-900 bg-gradient-to-r from-purple-200 to-pink-200 text-purple-800\",\n \"gradient-teal\": \"hover:bg-gradient-to-r from-teal-600 to-cyan-600 hover:text-teal-900 bg-gradient-to-r from-teal-200 to-cyan-200 text-teal-800\",\n \"gradient-indigo\": \"hover:bg-gradient-to-r from-indigo-600 to-purple-600 hover:text-indigo-900 bg-gradient-to-r from-indigo-200 to-purple-200 text-indigo-800\",\n \"gradient-pink\": \"hover:bg-gradient-to-r from-pink-600 to-rose-600 hover:text-pink-900 bg-gradient-to-r from-pink-200 to-rose-200 text-pink-800\",\n \"gradient-orange\": \"hover:bg-gradient-to-r from-orange-600 to-red-600 hover:text-orange-900 bg-gradient-to-r from-orange-200 to-red-200 text-orange-800\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { emptyStateAnimationPresets } from \"./animations\";\nimport type { EmptyStateProps, EmptyStateSectionProps } from \"./types\";\nimport {\n emptyStateDescriptionVariants,\n emptyStateTitleVariants,\n emptyStateVariants,\n} from \"./variants\";\n\ntype EmptyStateSize = NonNullable<EmptyStateProps[\"size\"]>;\n\nconst EmptyStateSizeContext = createContext<EmptyStateSize>(\"md\");\n\nfunction useEmptyStateSize(): EmptyStateSize {\n return useContext(EmptyStateSizeContext);\n}\n\nexport function EmptyState(props: EmptyStateProps) {\n const {\n className,\n size = \"md\",\n appearance,\n align,\n animation = \"none\",\n children,\n ref,\n ...rest\n } = props;\n const motionProps = emptyStateAnimationPresets[animation];\n const ctx = useMemo(() => size ?? \"md\", [size]);\n\n return (\n <EmptyStateSizeContext.Provider value={ctx}>\n <motion.section\n ref={ref}\n data-slot=\"empty-state\"\n aria-live=\"polite\"\n className={cn(emptyStateVariants({ size, appearance, align }), className)}\n initial={animation === \"none\" ? false : undefined}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.section>\n </EmptyStateSizeContext.Provider>\n );\n}\n\nEmptyState.displayName = \"EmptyState\";\n\nexport function EmptyStateIcon({ className, children }: EmptyStateSectionProps) {\n return (\n <div data-slot=\"empty-state-icon\" className={cn(\"text-slate-300\", className)}>\n {children}\n </div>\n );\n}\n\nEmptyStateIcon.displayName = \"EmptyStateIcon\";\n\nexport function EmptyStateTitle({ className, children }: EmptyStateSectionProps) {\n const size = useEmptyStateSize();\n return (\n <h2 data-slot=\"empty-state-title\" className={cn(emptyStateTitleVariants({ size }), className)}>\n {children}\n </h2>\n );\n}\n\nEmptyStateTitle.displayName = \"EmptyStateTitle\";\n\nexport function EmptyStateDescription({\n className,\n children,\n}: EmptyStateSectionProps) {\n const size = useEmptyStateSize();\n return (\n <p\n data-slot=\"empty-state-description\"\n className={cn(emptyStateDescriptionVariants({ size }), className)}\n >\n {children}\n </p>\n );\n}\n\nEmptyStateDescription.displayName = \"EmptyStateDescription\";\n\nexport function EmptyStateAction({ className, children }: EmptyStateSectionProps) {\n return (\n <div data-slot=\"empty-state-action\" className={cn(\"mt-2\", className)}>\n {children}\n </div>\n );\n}\n\nEmptyStateAction.displayName = \"EmptyStateAction\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { EmptyStateAnimation } from \"./types\";\n\ntype EmptyStatePresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\" | \"whileHover\"\n>;\n\nexport type EmptyStateAnimationPresets = Record<\n EmptyStateAnimation,\n EmptyStatePresetMotionProps\n>;\n\nexport const emptyStateAnimationPresets: EmptyStateAnimationPresets = {\n none: {},\n float: {\n whileHover: { y: -4 },\n transition: { type: \"spring\", stiffness: 260, damping: 22 },\n },\n fade: {\n initial: { opacity: 0, y: 8 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.25, ease: \"easeOut\" },\n },\n \"slide-up\": {\n initial: { opacity: 0, y: 16 },\n animate: { opacity: 1, y: 0 },\n transition: { type: \"spring\", stiffness: 380, damping: 28 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const emptyStateVariants = cva(\"flex w-full flex-col items-center text-center\", {\n variants: {\n size: {\n sm: \"gap-2 p-4 text-sm\",\n md: \"gap-3 p-6 text-sm\",\n lg: \"gap-4 p-8 text-base\",\n },\n appearance: {\n default: \"text-slate-50\",\n ghost: \"text-slate-200\",\n card: \"rounded-2xl border border-white/10 bg-white/5 p-8 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.35)]\",\n },\n align: {\n start: \"items-start text-left\",\n center: \"items-center text-center\",\n end: \"items-end text-right\",\n },\n },\n defaultVariants: {\n size: \"md\",\n appearance: \"default\",\n align: \"center\",\n },\n});\n\nexport const emptyStateTitleVariants = cva(\"font-semibold tracking-tight\", {\n variants: {\n size: {\n sm: \"text-base\",\n md: \"text-lg\",\n lg: \"text-xl\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport const emptyStateDescriptionVariants = cva(\"max-w-md text-slate-400\", {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n","import type { InputAnimationPresets } from \"./types\";\n\nexport const inputAnimationPresets: InputAnimationPresets = {\n none: {},\n lift: {\n whileHover: { y: -1 },\n whileFocus: { y: -1 },\n transition: { type: \"spring\", stiffness: 480, damping: 32 },\n },\n press: {\n whileTap: { scale: 0.99 },\n transition: { type: \"spring\", stiffness: 520, damping: 30 },\n },\n glow: {\n whileFocus: {\n boxShadow:\n \"0 0 0 1px rgba(255,255,255,0.2), 0 12px 28px rgba(15,23,42,0.35)\",\n },\n whileHover: {\n boxShadow:\n \"0 0 0 1px rgba(255,255,255,0.12), 0 8px 20px rgba(15,23,42,0.25)\",\n },\n transition: { duration: 0.2, ease: \"easeOut\" },\n },\n tilt: {\n whileHover: { scale: 1.005 },\n whileFocus: { scale: 1.008 },\n whileTap: { scale: 0.995 },\n transition: { type: \"spring\", stiffness: 380, damping: 24 },\n },\n bounce: {\n whileFocus: { y: -2, scale: 1.01 },\n whileHover: { y: -1, scale: 1.005 },\n transition: { type: \"spring\", bounce: 0.35, duration: 0.4 },\n },\n};\n","\"use client\";\n\nimport { useId } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputAnimationPresets } from \"./animations\";\nimport type { InputProps } from \"./types\";\nimport { inputVariants } from \"./variants\";\n\nexport const Input = (props: InputProps) => {\n const generatedId = useId();\n\n if (props.as === \"textarea\") {\n const {\n className,\n appearance,\n size,\n animation = \"none\",\n ring = true,\n ref,\n \"aria-invalid\": ariaInvalidProp,\n errorMessage,\n id,\n as,\n ...rest\n } = props;\n\n const controlId = id ?? generatedId;\n const errorId = `${controlId}-error`;\n const motionProps = inputAnimationPresets[animation];\n const ariaInvalid =\n ariaInvalidProp !== undefined\n ? ariaInvalidProp\n : appearance === \"error\"\n ? true\n : undefined;\n\n return (\n <>\n <motion.textarea\n ref={ref}\n id={controlId}\n data-slot=\"input\"\n className={cn(\n inputVariants({ appearance, size, ring, as }),\n className,\n )}\n initial={false}\n aria-invalid={ariaInvalid}\n aria-describedby={\n errorMessage && appearance === \"error\" ? errorId : undefined\n }\n {...motionProps}\n {...rest}\n />\n {errorMessage && appearance === \"error\" && (\n <p\n id={errorId}\n className=\"text-sm text-rose-500 mt-2 pl-4 wrap-break-word\"\n >\n {errorMessage}\n </p>\n )}\n </>\n );\n }\n\n const {\n className,\n appearance,\n size,\n animation = \"none\",\n ring = true,\n ref,\n \"aria-invalid\": ariaInvalidProp,\n errorMessage,\n id,\n as,\n ...rest\n } = props;\n\n const controlId = id ?? generatedId;\n const errorId = `${controlId}-error`;\n const motionProps = inputAnimationPresets[animation];\n const ariaInvalid =\n ariaInvalidProp !== undefined\n ? ariaInvalidProp\n : appearance === \"error\"\n ? true\n : undefined;\n\n return (\n <>\n <motion.input\n ref={ref}\n id={controlId}\n data-slot=\"input\"\n className={cn(\n inputVariants({ appearance, size, ring, as: as ?? \"input\" }),\n className,\n )}\n initial={false}\n aria-invalid={ariaInvalid}\n aria-describedby={\n errorMessage && appearance === \"error\" ? errorId : undefined\n }\n {...motionProps}\n {...rest}\n />\n {errorMessage && appearance === \"error\" && (\n <p\n id={errorId}\n className=\"text-sm text-rose-500 mt-2 pl-4 wrap-break-word\"\n >\n {errorMessage}\n </p>\n )}\n </>\n );\n};\n\nInput.displayName = \"Input\";\n","import { cva } from \"class-variance-authority\";\n\nexport const inputVariants = cva(\n [\n \"w-full min-w-0 rounded-xl border bg-white/5 text-slate-50 shadow-[0_1px_2px_rgba(15,23,42,0.12)]\",\n \"ring-offset-slate-950 transition-colors\",\n \"placeholder:text-slate-500\",\n \"focus-visible:outline-none\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"read-only:cursor-default read-only:bg-white/[0.03]\",\n \"file:h-8\"\n ],\n {\n variants: {\n as: {\n input: \"\",\n textarea: \"h-auto! resize-y py-2 align-top\",\n file: [\n // Reset native padding so we control it fully\n \"p-0! cursor-pointer\",\n // File-selector button base styles\n \"file:cursor-pointer file:border-0 file:border-r file:border-white/10\",\n \"file:bg-white/10 file:text-slate-200 file:font-medium\",\n \"file:transition-colors file:duration-200\",\n \"hover:file:bg-white/15\",\n // Content area padding\n \"[&:not(:disabled)]:file:hover:text-white\",\n \"disabled:file:cursor-not-allowed\",\n ],\n checkbox: [\n \"shrink-0 cursor-pointer appearance-none relative\",\n \"min-h-0! shadow-none outline-none\",\n \"border-2 border-white/30 [&:not(:checked)]:bg-transparent\",\n \"transition-[color,box-shadow,border-color,background-color]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"read-only:cursor-default\",\n \"checked:after:absolute checked:after:content-[''] checked:after:size-3 checked:after:top-1/2 checked:after:left-1/2 checked:after:-translate-x-1/2 checked:after:-translate-y-1/2 checked:after:rounded-full checked:after:bg-current\"\n ],\n radio: [\n \"shrink-0 cursor-pointer appearance-none rounded-full\",\n \"min-h-0! shadow-none outline-none\",\n \"border-2 border-white/30 bg-transparent! read-only:bg-transparent!\",\n \"ring-2 ring-white/20 ring-offset-2 ring-offset-slate-950\",\n \"transition-[color,box-shadow,background-color,border-color,box-shadow]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"read-only:cursor-default\",\n ],\n },\n appearance: {\n default: \"border-white/10 focus-visible:border-white/20\",\n warning: \"border-yellow-500/80 text-yellow-50 placeholder:text-yellow-300/70 focus-visible:border-yellow-400 focus-visible:ring-yellow-400/80\",\n error:\n \"border-rose-500/80 text-rose-50 placeholder:text-rose-300/70 focus-visible:border-rose-400 focus-visible:ring-rose-400/80\",\n success:\n \"border-emerald-500/70 text-emerald-50 placeholder:text-emerald-300/70 focus-visible:border-emerald-400 focus-visible:ring-emerald-400/80\",\n info: \"border-blue-500/80 text-blue-50 placeholder:text-blue-300/70 focus-visible:border-blue-400 focus-visible:ring-blue-400/80\",\n violet: \"border-violet-500/80 text-violet-50 placeholder:text-violet-300/70 focus-visible:border-violet-400 focus-visible:ring-violet-400/80\",\n amber: \"border-amber-500/80 text-amber-50 placeholder:text-amber-300/70 focus-visible:border-amber-400 focus-visible:ring-amber-400/80\",\n pink: \"border-pink-500/80 text-pink-50 placeholder:text-pink-300/70 focus-visible:border-pink-400 focus-visible:ring-pink-400/80\",\n indigo: \"border-indigo-500/80 text-indigo-50 placeholder:text-indigo-300/70 focus-visible:border-indigo-400 focus-visible:ring-indigo-400/80\",\n orange: \"border-orange-500/80 text-orange-50 placeholder:text-orange-300/70 focus-visible:border-orange-400 focus-visible:ring-orange-400/80\",\n\n },\n size: {\n sm: \"h-8 px-3 text-xs\",\n md: \"h-9 md:h-11 px-4 text-sm\",\n lg: \"h-10 md:h-12 px-5 text-base\",\n },\n ring: {\n true: \"focus-visible:ring-2 focus-visible:ring-offset-2\",\n false: \"\",\n },\n },\n defaultVariants: {\n as: \"input\",\n appearance: \"default\",\n size: \"md\",\n ring: true,\n },\n compoundVariants: [\n // ── textarea size overrides ──────────────────────────────────────────\n {\n as: \"textarea\",\n size: \"sm\",\n class: \"min-h-[5rem]\",\n },\n {\n as: \"textarea\",\n size: \"md\",\n class: \"min-h-[6rem]\",\n },\n {\n as: \"textarea\",\n size: \"lg\",\n class: \"min-h-[7.5rem]\",\n },\n // ── file input: size – height & file-button padding ──────────────────\n {\n as: \"file\",\n size: \"sm\",\n class: \"h-8 text-xs pl-1 file:h-8 file:px-3 file:text-xs\",\n },\n {\n as: \"file\",\n size: \"md\",\n class: \"h-9 md:h-11 text-sm pl-1 file:h-9 md:file:h-11 file:px-4 file:text-sm\",\n },\n {\n as: \"file\",\n size: \"lg\",\n class: \"h-10 md:h-12 text-base pl-1 file:h-10 md:file:h-12 file:px-5 file:text-base\",\n },\n // ── file input: appearance – file-button accent colour ───────────────\n {\n as: \"file\",\n appearance: \"default\",\n class: \"file:text-slate-200\",\n },\n {\n as: \"file\",\n appearance: \"warning\",\n class: \"file:bg-yellow-500/20 file:text-yellow-200 file:border-yellow-500/40 hover:file:bg-yellow-500/30\",\n },\n {\n as: \"file\",\n appearance: \"error\",\n class: \"file:bg-rose-500/20 file:text-rose-200 file:border-rose-500/40 hover:file:bg-rose-500/30\",\n },\n {\n as: \"file\",\n appearance: \"success\",\n class: \"file:bg-emerald-500/20 file:text-emerald-200 file:border-emerald-500/40 hover:file:bg-emerald-500/30\",\n },\n {\n as: \"file\",\n appearance: \"info\",\n class: \"file:bg-blue-500/20 file:text-blue-200 file:border-blue-500/40 hover:file:bg-blue-500/30\",\n },\n {\n as: \"file\",\n appearance: \"violet\",\n class: \"file:bg-violet-500/20 file:text-violet-200 file:border-violet-500/40 hover:file:bg-violet-500/30\",\n },\n {\n as: \"file\",\n appearance: \"amber\",\n class: \"file:bg-amber-500/20 file:text-amber-200 file:border-amber-500/40 hover:file:bg-amber-500/30\",\n },\n {\n as: \"file\",\n appearance: \"pink\",\n class: \"file:bg-pink-500/20 file:text-pink-200 file:border-pink-500/40 hover:file:bg-pink-500/30\",\n },\n {\n as: \"file\",\n appearance: \"indigo\",\n class: \"file:bg-indigo-500/20 file:text-indigo-200 file:border-indigo-500/40 hover:file:bg-indigo-500/30\",\n },\n // ── checkbox / radio: size (overrides text-field height & padding) ───\n {\n as: \"checkbox\",\n size: \"sm\",\n class:\n \"h-4! w-4! min-h-0! rounded-[0.35rem]! px-0! py-0!\",\n },\n {\n as: \"checkbox\",\n size: \"md\",\n class:\n \"h-5! w-5! min-h-0! rounded-md! px-0! py-0!\",\n },\n {\n as: \"checkbox\",\n size: \"lg\",\n class:\n \"h-6! w-6! min-h-0! rounded-md! px-0! py-0!\",\n },\n {\n as: \"radio\",\n size: \"sm\",\n class: \"h-4! w-4! min-h-0! px-0! py-0!\",\n },\n {\n as: \"radio\",\n size: \"md\",\n class: \"h-5! w-5! min-h-0! px-0! py-0!\",\n },\n {\n as: \"radio\",\n size: \"lg\",\n class: \"h-6! w-6! min-h-0! px-0! py-0!\",\n },\n // ── checkbox: appearance (border + tick color; fill stays transparent) ─\n {\n as: \"checkbox\",\n appearance: \"default\",\n class:\n \"border-slate-400/70! checked:border-slate-200 checked:text-slate-200 hover:border-slate-300 focus-visible:border-slate-300 focus-visible:ring-slate-400/70\",\n },\n {\n as: \"checkbox\",\n appearance: \"warning\",\n class:\n \"border-yellow-500/70! checked:border-yellow-400 checked:text-yellow-300 hover:border-yellow-400 focus-visible:border-yellow-400 focus-visible:ring-yellow-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"error\",\n class:\n \"border-rose-500/70! checked:border-rose-400 checked:text-rose-300 hover:border-rose-400 focus-visible:border-rose-400 focus-visible:ring-rose-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"success\",\n class:\n \"border-emerald-500/70! checked:border-emerald-400 checked:text-emerald-300 hover:border-emerald-400 focus-visible:border-emerald-400 focus-visible:ring-emerald-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"info\",\n class:\n \"border-blue-500/70! checked:border-blue-400 checked:text-blue-300 hover:border-blue-400 focus-visible:border-blue-400 focus-visible:ring-blue-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"violet\",\n class:\n \"border-violet-500/70! checked:after:bg-violet-400 checked:border-violet-400 checked:text-violet-300 hover:border-violet-400 focus-visible:border-violet-400 focus-visible:ring-violet-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"amber\",\n class:\n \"border-amber-500/70! checked:border-amber-400! checked:text-amber-300 hover:border-amber-400! focus-visible:border-amber-400! focus-visible:ring-amber-400/80!\",\n },\n {\n as: \"checkbox\",\n appearance: \"pink\",\n class:\n \"border-pink-500/70! checked:border-pink-400 checked:text-pink-300 hover:border-pink-400 focus-visible:border-pink-400 focus-visible:ring-pink-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"indigo\",\n class:\n \"border-indigo-500/70! checked:border-indigo-400! checked:text-indigo-300 hover:border-indigo-400! focus-visible:border-indigo-400! focus-visible:ring-indigo-400/80!\",\n },\n // ── radio: appearance (transparent fill, inner dot, coloured offset ring) ─\n {\n as: \"radio\",\n appearance: \"default\",\n class:\n \"border-slate-400/70! checked:border-slate-200 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(226,232,240)]! hover:border-slate-300 focus-visible:border-slate-300 focus-visible:ring-slate-400/70 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-slate-300/90!\",\n },\n {\n as: \"radio\",\n appearance: \"warning\",\n class:\n \"border-yellow-500/70! checked:border-yellow-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(250,204,21)]! hover:border-yellow-400 focus-visible:border-yellow-400 focus-visible:ring-yellow-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-yellow-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"error\",\n class:\n \"border-rose-500/70! checked:border-rose-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(251,113,133)]! hover:border-rose-400 focus-visible:border-rose-400 focus-visible:ring-rose-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-rose-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"success\",\n class:\n \"border-emerald-500/70! checked:border-emerald-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(52,211,153)]! hover:border-emerald-400 focus-visible:border-emerald-400 focus-visible:ring-emerald-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-emerald-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"info\",\n class:\n \"border-blue-500/70! checked:border-blue-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(96,165,250)]! hover:border-blue-400 focus-visible:border-blue-400 focus-visible:ring-blue-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-blue-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"violet\",\n class:\n \"border-violet-500/70! checked:border-violet-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(167,139,250)]! hover:border-violet-400 focus-visible:border-violet-400 focus-visible:ring-violet-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-violet-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"amber\",\n class:\n \"border-amber-500/70! checked:border-amber-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(251,191,36)]! hover:border-amber-400 focus-visible:border-amber-400 focus-visible:ring-amber-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-amber-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"pink\",\n class:\n \"border-pink-500/70! checked:border-pink-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(244,114,182)]! hover:border-pink-400 focus-visible:border-pink-400 focus-visible:ring-pink-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-pink-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"indigo\",\n class:\n \"border-indigo-500/70! checked:border-indigo-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(129,140,248)]! hover:border-indigo-400 focus-visible:border-indigo-400 focus-visible:ring-indigo-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-indigo-400/90!\",\n },\n ],\n },\n);\n","\"use client\";\n\nimport {\n AnimatePresence,\n motion,\n useReducedMotion,\n} from \"framer-motion\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { modalOverlayAnimationPresets } from \"./animations\";\nimport type {\n ModalContentProps,\n ModalProps,\n ModalSectionProps,\n ModalTriggerProps,\n} from \"./types\";\nimport { modalContentVariants, modalOverlayVariants, modalTriggerVariants } from \"./variants\";\n\ntype ModalCtx = {\n open: boolean;\n setOpen: (next: boolean) => void;\n titleId: string;\n descriptionId: string;\n contentRef: React.RefObject<HTMLDivElement | null>;\n};\n\nconst ModalContext = createContext<ModalCtx | null>(null);\n\nfunction useModalContext(component: string): ModalCtx {\n const ctx = useContext(ModalContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Modal>`);\n }\n return ctx;\n}\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex=\"-1\"])';\n\nfunction useBodyScrollLock(locked: boolean) {\n useEffect(() => {\n if (!locked) {\n return;\n }\n const previousOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = previousOverflow;\n };\n }, [locked]);\n}\n\nexport function Modal({ open, defaultOpen = false, onOpenChange, children }: ModalProps) {\n const isControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const resolvedOpen = isControlled ? Boolean(open) : uncontrolledOpen;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next);\n }\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n const baseId = useId();\n const titleId = `${baseId}-title`;\n const descriptionId = `${baseId}-description`;\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const ctx = useMemo(\n () => ({\n open: resolvedOpen,\n setOpen,\n titleId,\n descriptionId,\n contentRef,\n }),\n [descriptionId, resolvedOpen, setOpen, titleId],\n );\n\n return <ModalContext.Provider value={ctx}>{children}</ModalContext.Provider>;\n}\n\nModal.displayName = \"Modal\";\n\nexport function ModalTrigger({ className, children, appearance, onClick, ref, ...rest }: ModalTriggerProps) {\n const { setOpen } = useModalContext(\"ModalTrigger\");\n return (\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"modal-trigger\"\n className={cn(modalTriggerVariants({ appearance }), className)}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nModalTrigger.displayName = \"ModalTrigger\";\n\nexport function ModalContent({\n className,\n size,\n position,\n appearance,\n animation = \"scale\",\n children,\n ref,\n id,\n style,\n}: ModalContentProps) {\n const { open, setOpen, titleId, descriptionId, contentRef } = useModalContext(\"ModalContent\");\n const reduceMotion = useReducedMotion();\n const overlayMotion = modalOverlayAnimationPresets[reduceMotion ? \"fade\" : animation];\n const panelMotion = modalOverlayAnimationPresets[reduceMotion ? \"fade\" : animation];\n\n useBodyScrollLock(open);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, setOpen]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n const node = contentRef.current;\n if (!node) {\n return;\n }\n const focusables = Array.from(\n node.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((element) => element.offsetParent !== null || element === node);\n const target = focusables[0] ?? node;\n const previouslyFocused = document.activeElement as HTMLElement | null;\n target.focus();\n\n const handleFocusIn = (event: FocusEvent) => {\n if (!node.contains(event.target as Node)) {\n event.stopPropagation();\n target.focus();\n }\n };\n document.addEventListener(\"focusin\", handleFocusIn);\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn);\n previouslyFocused?.focus?.();\n };\n }, [contentRef, open]);\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n <AnimatePresence>\n {open ? (\n <div className=\"fixed inset-0 z-50\" data-slot=\"modal-portal\">\n <motion.button\n type=\"button\"\n aria-hidden\n tabIndex={-1}\n data-slot=\"modal-overlay\"\n className={modalOverlayVariants()}\n onClick={() => setOpen(false)}\n initial={animation === \"none\" ? false : overlayMotion.initial}\n animate={animation === \"none\" ? undefined : overlayMotion.animate}\n exit={animation === \"none\" ? undefined : overlayMotion.exit}\n transition={overlayMotion.transition}\n />\n <motion.div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.RefObject<HTMLDivElement | null>).current = node;\n }\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n data-slot=\"modal-content\"\n tabIndex={-1}\n className={cn(modalContentVariants({ size, position, appearance }), className)}\n initial={animation === \"none\" ? false : panelMotion.initial}\n animate={animation === \"none\" ? undefined : panelMotion.animate}\n exit={animation === \"none\" ? undefined : panelMotion.exit}\n transition={panelMotion.transition}\n id={id}\n style={style}\n >\n {children}\n </motion.div>\n </div>\n ) : null}\n </AnimatePresence>,\n portalTarget,\n );\n}\n\nModalContent.displayName = \"ModalContent\";\n\nexport function ModalHeader({ className, children }: ModalSectionProps) {\n return (\n <header data-slot=\"modal-header\" className={cn(\"mb-4 flex flex-col gap-2\", className)}>\n {children}\n </header>\n );\n}\n\nModalHeader.displayName = \"ModalHeader\";\n\nexport function ModalBody({ className, children }: ModalSectionProps) {\n return (\n <div data-slot=\"modal-body\" className={cn(\"text-sm text-slate-300\", className)}>\n {children}\n </div>\n );\n}\n\nModalBody.displayName = \"ModalBody\";\n\nexport function ModalFooter({ className, children }: ModalSectionProps) {\n return (\n <footer data-slot=\"modal-footer\" className={cn(\"mt-6 flex justify-end gap-2\", className)}>\n {children}\n </footer>\n );\n}\n\nModalFooter.displayName = \"ModalFooter\";\n\nexport function ModalTitle({ className, children }: ModalSectionProps) {\n const { titleId } = useModalContext(\"ModalTitle\");\n return (\n <h2 id={titleId} data-slot=\"modal-title\" className={cn(\"text-lg font-semibold\", className)}>\n {children}\n </h2>\n );\n}\n\nModalTitle.displayName = \"ModalTitle\";\n\nexport function ModalDescription({ className, children }: ModalSectionProps) {\n const { descriptionId } = useModalContext(\"ModalDescription\");\n return (\n <p id={descriptionId} data-slot=\"modal-description\" className={cn(\"text-sm text-slate-400\", className)}>\n {children}\n </p>\n );\n}\n\nModalDescription.displayName = \"ModalDescription\";\n\nexport function ModalClose({ className, children, ...rest }: ModalSectionProps) {\n const { setOpen } = useModalContext(\"ModalClose\");\n return (\n <button\n type=\"button\"\n data-slot=\"modal-close\"\n className={cn(\n \"absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/30\",\n className,\n )}\n aria-label=\"Close dialog\"\n onClick={() => setOpen(false)}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nModalClose.displayName = \"ModalClose\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { ModalAnimation } from \"./types\";\n\ntype ModalPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"exit\" | \"transition\"\n>;\n\nexport type ModalAnimationPresets = Record<ModalAnimation, ModalPresetMotionProps>;\n\nexport const modalOverlayAnimationPresets: ModalAnimationPresets = {\n none: {},\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.2 },\n },\n scale: {\n initial: { opacity: 0, scale: 0.96 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.96 },\n transition: { type: \"spring\", stiffness: 420, damping: 32 },\n },\n \"slide-up\": {\n initial: { opacity: 0, y: 24 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 16 },\n transition: { type: \"spring\", stiffness: 380, damping: 30 },\n },\n \"slide-down\": {\n initial: { opacity: 0, y: -24 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -16 },\n transition: { type: \"spring\", stiffness: 380, damping: 30 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const modalOverlayVariants = cva(\n \"fixed inset-0 z-50 bg-slate-950/70 backdrop-blur-sm data-[state=open]:animate-in\",\n);\n\nexport const modalTriggerVariants = cva(\n \"relative inline-flex shrink-0 cursor-pointer rounded-md border\",\n {\n variants: {\n appearance: {\n default: \"bg-slate-950\",\n glass: \"border-white/15 bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n },\n },\n);\n\nexport const modalContentVariants = cva(\n \"fixed left-1/2 z-50 w-[calc(100%-2rem)] max-h-[min(90vh,720px)] translate-x-[-50%] overflow-y-auto border border-white/10 bg-slate-950 p-6 text-slate-50 shadow-[0_24px_80px_rgba(15,23,42,0.55)] focus:outline-none\",\n {\n variants: {\n size: {\n sm: \"max-w-md\",\n md: \"max-w-lg\",\n lg: \"max-w-2xl\",\n xl: \"max-w-4xl\",\n full: \"max-w-[calc(100%-2rem)]\",\n },\n position: {\n center: \"top-1/2 translate-y-[-50%]\",\n top: \"top-10 translate-y-0\",\n bottom: \"bottom-10 translate-y-0\",\n },\n appearance: {\n default: \"bg-slate-950\",\n glass: \"border-white/15 bg-slate-950/70 backdrop-blur-xl\",\n sky: \"border-sky-600 bg-sky-950/70 backdrop-blur-xl\",\n rose: \"border-rose-600 bg-rose-950/70 backdrop-blur-xl\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n },\n defaultVariants: {\n size: \"md\",\n position: \"center\",\n appearance: \"default\",\n },\n },\n);\n","\"use client\";\n\nimport { forwardRef, useCallback, useId, type KeyboardEvent } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { buttonVariants } from \"../buttons/variants\";\n\nimport { clampPage } from \"./pagination-logic\";\nimport type { PaginationProps } from \"./types\";\nimport { usePagination } from \"./use-pagination\";\nimport { paginationEllipsisVariants, paginationListVariants } from \"./variants\";\n\nconst defaultPrevLabel = \"Previous page\";\nconst defaultNextLabel = \"Next page\";\nconst defaultEllipsisLabel = \"More pages\";\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n function Pagination(\n {\n className,\n appearance = \"default\",\n size = \"md\",\n pageCount,\n page,\n defaultPage = 1,\n onPageChange,\n siblingCount = 1,\n boundaryCount = 1,\n showPrevNext = true,\n prevLabel = defaultPrevLabel,\n nextLabel = defaultNextLabel,\n ellipsisLabel = defaultEllipsisLabel,\n getPageHref,\n \"aria-label\": ariaLabel = \"Pagination\",\n ...rest\n },\n ref,\n ) {\n const id = useId();\n const listId = `${id}-list`;\n\n const {\n currentPage,\n items,\n setPage,\n goPrev,\n goNext,\n canGoPrev,\n canGoNext,\n } = usePagination({\n pageCount,\n page,\n defaultPage,\n siblingCount,\n boundaryCount,\n onPageChange,\n });\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (pageCount <= 0) {\n return;\n }\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n if (canGoNext) {\n setPage(currentPage + 1);\n }\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (canGoPrev) {\n setPage(currentPage - 1);\n }\n } else if (event.key === \"Home\") {\n event.preventDefault();\n setPage(1);\n } else if (event.key === \"End\") {\n event.preventDefault();\n setPage(pageCount);\n }\n },\n [canGoNext, canGoPrev, currentPage, pageCount, setPage],\n );\n\n if (pageCount <= 0) {\n return null;\n }\n\n const inactiveTriggerClass = cn(\n buttonVariants({ appearance: \"ghost\", size }),\n \"bg-white/[0.04] text-slate-200 hover:bg-white/10\",\n );\n\n const currentTriggerClass = buttonVariants({ appearance, size });\n\n const triggerFocusRing =\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\";\n\n const renderPageControl = (pageNumber: number) => {\n const isCurrent = pageNumber === currentPage;\n const href = getPageHref?.(pageNumber);\n const shared = cn(\n isCurrent ? currentTriggerClass : inactiveTriggerClass,\n \"min-w-[2.25ch] shrink-0\",\n triggerFocusRing,\n );\n\n if (href) {\n return (\n <a\n data-slot=\"pagination-trigger\"\n href={href}\n aria-label={`Page ${pageNumber}`}\n aria-current={isCurrent ? \"page\" : undefined}\n className={shared}\n >\n {pageNumber}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n data-slot=\"pagination-trigger\"\n aria-label={`Page ${pageNumber}`}\n aria-current={isCurrent ? \"page\" : undefined}\n className={shared}\n onClick={() => {\n if (!isCurrent) {\n setPage(pageNumber);\n }\n }}\n >\n {pageNumber}\n </button>\n );\n };\n\n const prevHref = getPageHref?.(clampPage(currentPage - 1, pageCount));\n const nextHref = getPageHref?.(clampPage(currentPage + 1, pageCount));\n\n const navTriggerClass = cn(\n buttonVariants({ appearance: \"outline\", size }),\n \"shrink-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n );\n\n return (\n <nav\n ref={ref}\n data-slot=\"pagination\"\n aria-label={ariaLabel}\n className={cn(\"w-full\", className)}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n <div className=\"flex flex-wrap items-center gap-2\">\n {showPrevNext ? (\n getPageHref && prevHref && canGoPrev ? (\n <a\n data-slot=\"pagination-prev\"\n aria-label={prevLabel}\n href={prevHref}\n className={navTriggerClass}\n >\n Prev\n </a>\n ) : (\n <button\n type=\"button\"\n data-slot=\"pagination-prev\"\n aria-label={prevLabel}\n disabled={!canGoPrev}\n className={navTriggerClass}\n onClick={goPrev}\n >\n Prev\n </button>\n )\n ) : null}\n\n <ul\n id={listId}\n data-slot=\"pagination-list\"\n className={paginationListVariants({ appearance, size })}\n >\n {items.map((item) => (\n <li\n key={item.type === \"page\" ? `page-${item.value}` : item.key}\n data-slot=\"pagination-item\"\n className=\"inline-flex items-center\"\n >\n {item.type === \"ellipsis\" ? (\n <span\n data-slot=\"pagination-ellipsis\"\n aria-hidden=\"true\"\n title={ellipsisLabel}\n className={paginationEllipsisVariants({ size })}\n >\n …\n </span>\n ) : (\n renderPageControl(item.value)\n )}\n </li>\n ))}\n </ul>\n\n {showPrevNext ? (\n getPageHref && nextHref && canGoNext ? (\n <a\n data-slot=\"pagination-next\"\n aria-label={nextLabel}\n href={nextHref}\n className={navTriggerClass}\n >\n Next\n </a>\n ) : (\n <button\n type=\"button\"\n data-slot=\"pagination-next\"\n aria-label={nextLabel}\n disabled={!canGoNext}\n className={navTriggerClass}\n onClick={goNext}\n >\n Next\n </button>\n )\n ) : null}\n </div>\n </nav>\n );\n },\n);\n\nPagination.displayName = \"Pagination\";\n","export type PaginationPageItem =\n | { type: \"page\"; value: number }\n | { type: \"ellipsis\"; key: string };\n\nexport type BuildPaginationItemsParams = {\n pageCount: number;\n currentPage: number;\n siblingCount: number;\n boundaryCount: number;\n};\n\n/**\n * Builds the ordered list of page numbers and ellipsis markers for a pagination control.\n *\n * Args:\n * pageCount: Total number of pages (must be >= 0).\n * currentPage: Active page index (1-based).\n * siblingCount: How many page buttons to show on each side of the current page.\n * boundaryCount: How many pages to pin at the start and end of the range.\n *\n * Returns:\n * A list of items suitable for rendering, e.g. [1, ellipsis, 4,5,6, ellipsis, 20].\n */\nexport function buildPaginationItems({\n pageCount,\n currentPage,\n siblingCount,\n boundaryCount,\n}: BuildPaginationItemsParams): PaginationPageItem[] {\n if (pageCount <= 0) {\n return [];\n }\n\n const safeBoundary = Math.max(1, boundaryCount);\n const safeSibling = Math.max(0, siblingCount);\n const current = clampPage(currentPage, pageCount);\n\n const totalNumbers =\n safeBoundary * 2 + safeSibling * 2 + 1;\n if (pageCount <= totalNumbers) {\n return range(1, pageCount).map((value) => ({ type: \"page\", value }));\n }\n\n const leftBoundaryEnd = safeBoundary;\n const rightBoundaryStart = pageCount - safeBoundary + 1;\n\n const siblingsStart = Math.max(current - safeSibling, leftBoundaryEnd + 1);\n const siblingsEnd = Math.min(current + safeSibling, rightBoundaryStart - 1);\n\n const pages = new Set<number>();\n for (let p = 1; p <= leftBoundaryEnd; p += 1) {\n pages.add(p);\n }\n for (let p = rightBoundaryStart; p <= pageCount; p += 1) {\n pages.add(p);\n }\n for (let p = siblingsStart; p <= siblingsEnd; p += 1) {\n pages.add(p);\n }\n\n const sorted = [...pages].sort((a, b) => a - b);\n const items: PaginationPageItem[] = [];\n\n for (let i = 0; i < sorted.length; i += 1) {\n const value = sorted[i];\n const prev = sorted[i - 1];\n if (i > 0 && prev !== undefined && value && value - prev > 1) {\n items.push({ type: \"ellipsis\", key: `gap-${prev}-${value}` });\n }\n items.push({ type: \"page\", value: value as number });\n }\n\n return items;\n}\n\nexport function clampPage(page: number, pageCount: number): number {\n if (pageCount <= 0) {\n return 1;\n }\n return Math.min(pageCount, Math.max(1, Math.floor(page)));\n}\n\nfunction range(from: number, to: number): number[] {\n const out: number[] = [];\n for (let i = from; i <= to; i += 1) {\n out.push(i);\n }\n return out;\n}\n","\"use client\";\n\nimport { useCallback, useMemo, useState } from \"react\";\n\nimport type { UsePaginationParams, UsePaginationResult } from \"./types\";\nimport { buildPaginationItems, clampPage } from \"./pagination-logic\";\n\nexport function usePagination({\n pageCount,\n page,\n defaultPage = 1,\n siblingCount = 1,\n boundaryCount = 1,\n onPageChange,\n}: UsePaginationParams): UsePaginationResult {\n const [internalPage, setInternalPage] = useState(() =>\n clampPage(defaultPage, pageCount),\n );\n\n const isControlled = page !== undefined;\n const currentPage = clampPage(\n isControlled ? page : internalPage,\n pageCount,\n );\n\n const setPage = useCallback(\n (next: number) => {\n const clamped = clampPage(next, pageCount);\n if (!isControlled) {\n setInternalPage(clamped);\n }\n onPageChange?.(clamped);\n },\n [isControlled, onPageChange, pageCount],\n );\n\n const items = useMemo(\n () =>\n buildPaginationItems({\n pageCount,\n currentPage,\n siblingCount,\n boundaryCount,\n }),\n [boundaryCount, currentPage, pageCount, siblingCount],\n );\n\n const canGoPrev = pageCount > 0 && currentPage > 1;\n const canGoNext = pageCount > 0 && currentPage < pageCount;\n\n const goPrev = useCallback(() => {\n if (canGoPrev) {\n setPage(currentPage - 1);\n }\n }, [canGoPrev, currentPage, setPage]);\n\n const goNext = useCallback(() => {\n if (canGoNext) {\n setPage(currentPage + 1);\n }\n }, [canGoNext, currentPage, setPage]);\n\n return {\n currentPage,\n pageCount,\n items,\n setPage,\n goPrev,\n goNext,\n canGoPrev,\n canGoNext,\n };\n}\n","import { cva } from \"class-variance-authority\";\n\n/**\n * Layout and chrome for the page list cluster. Appearance and size keys align with\n * `components/ui/buttons/variants.ts` for consistent design-system tokens.\n */\nexport const paginationListVariants = cva(\n \"inline-flex flex-wrap items-center rounded-xl border p-1 ring-offset-slate-950\",\n {\n variants: {\n appearance: {\n default: \"border-white/10 bg-white/[0.03]\",\n secondary: \"border-white/10 bg-slate-900/40\",\n destructive: \"border-rose-500/25 bg-rose-950/20\",\n outline: \"border-white/15 bg-transparent\",\n ghost: \"border-transparent bg-transparent\",\n link: \"border-transparent bg-transparent\",\n glass: \"border-white/15 bg-white/5 backdrop-blur-md\",\n emerald: \"border-emerald-500/25 bg-emerald-950/20\",\n indigo: \"border-indigo-500/25 bg-indigo-950/20\",\n purple: \"border-purple-500/25 bg-purple-950/20\",\n pink: \"border-pink-500/25 bg-pink-950/20\",\n rose: \"border-rose-500/25 bg-rose-950/20\",\n sky: \"border-sky-500/25 bg-sky-950/20\",\n teal: \"border-teal-500/25 bg-teal-950/20\",\n yellow: \"border-yellow-500/25 bg-yellow-950/20\",\n orange: \"border-orange-500/25 bg-orange-950/20\",\n gray: \"border-gray-500/25 bg-gray-950/20\",\n amber: \"border-amber-500/25 bg-amber-950/20\",\n violet: \"border-violet-500/25 bg-violet-950/20\",\n \"gradient-blue\": \"border-blue-500/30 bg-gradient-to-r from-blue-950/30 to-purple-950/30\",\n \"gradient-green\": \"border-lime-500/30 bg-gradient-to-r from-green-950/30 to-lime-950/30\",\n \"gradient-red\": \"border-pink-500/30 bg-gradient-to-r from-red-950/30 to-pink-950/30\",\n \"gradient-yellow\":\n \"border-orange-500/30 bg-gradient-to-r from-yellow-950/30 to-orange-950/30\",\n \"gradient-purple\":\n \"border-pink-500/30 bg-gradient-to-r from-purple-950/30 to-pink-950/30\",\n \"gradient-teal\": \"border-cyan-500/30 bg-gradient-to-r from-teal-950/30 to-cyan-950/30\",\n \"gradient-indigo\":\n \"border-purple-500/30 bg-gradient-to-r from-indigo-950/30 to-purple-950/30\",\n \"gradient-pink\": \"border-rose-500/30 bg-gradient-to-r from-pink-950/30 to-rose-950/30\",\n \"gradient-orange\": \"border-orange-500/30 bg-gradient-to-r from-orange-950/30 to-red-950/30\",\n },\n size: {\n sm: \"gap-0.5\",\n md: \"gap-1\",\n lg: \"gap-1\",\n xl: \"gap-1.5\",\n \"2xl\": \"gap-1.5\",\n \"3xl\": \"gap-2\",\n \"4xl\": \"gap-2\",\n \"5xl\": \"gap-2\",\n \"6xl\": \"gap-2\",\n \"7xl\": \"gap-2.5\",\n \"8xl\": \"gap-2.5\",\n \"9xl\": \"gap-2.5\",\n \"10xl\": \"gap-3\",\n icon: \"gap-1\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport const paginationEllipsisVariants = cva(\n \"inline-flex min-w-[2ch] select-none items-center justify-center px-1 font-medium text-slate-400\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n xl: \"text-base\",\n \"2xl\": \"text-lg\",\n \"3xl\": \"text-lg\",\n \"4xl\": \"text-xl\",\n \"5xl\": \"text-xl\",\n \"6xl\": \"text-xl\",\n \"7xl\": \"text-2xl\",\n \"8xl\": \"text-2xl\",\n \"9xl\": \"text-2xl\",\n \"10xl\": \"text-2xl\",\n icon: \"text-sm\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { progressAnimationPresets } from \"./animations\";\nimport type { ProgressProps, ProgressSectionProps } from \"./types\";\nimport {\n progressBarVariants,\n progressTrackVariants,\n progressVariants,\n} from \"./variants\";\n\ntype ProgressCtx = {\n value: number;\n min: number;\n max: number;\n size: NonNullable<ProgressProps[\"size\"]>;\n shape: NonNullable<ProgressProps[\"shape\"]>;\n striped: boolean;\n animated: boolean;\n appearance: NonNullable<ProgressProps[\"appearance\"]>;\n};\n\nconst ProgressContext = createContext<ProgressCtx | null>(null);\n\nfunction useProgressContext(component: string): ProgressCtx {\n const ctx = useContext(ProgressContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Progress>`);\n }\n return ctx;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nexport function Progress(props: ProgressProps) {\n const {\n className,\n appearance = \"default\",\n size = \"md\",\n shape = \"rounded\",\n striped = false,\n animated = false,\n animation = \"none\",\n value = 0,\n min = 0,\n max = 100,\n label,\n children,\n ref,\n ...rest\n } = props;\n const motionProps = progressAnimationPresets[animation];\n const clamped = clamp(value, min, max);\n const percent = max === min ? 0 : ((clamped - min) / (max - min)) * 100;\n\n const ctx = useMemo(\n () => ({\n value: clamped,\n min,\n max,\n size: size ?? \"md\",\n shape: shape ?? \"rounded\",\n striped: Boolean(striped),\n animated: Boolean(animated),\n appearance: appearance ?? \"default\",\n }),\n [animated, appearance, clamped, max, min, shape, size, striped],\n );\n\n return (\n <ProgressContext.Provider value={ctx}>\n <motion.div\n ref={ref}\n data-slot=\"progress\"\n role=\"progressbar\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={clamped}\n aria-label={label}\n className={cn(\n progressVariants({ appearance, size, shape, striped, animated }),\n className,\n )}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children ?? (\n <>\n <ProgressBar style={{ transform: `scaleX(${percent / 100})` }} />\n </>\n )}\n </motion.div>\n </ProgressContext.Provider>\n );\n}\n\nProgress.displayName = \"Progress\";\n\nexport function ProgressBar({\n className,\n style,\n ref,\n ...rest\n}: ProgressSectionProps & { style?: React.CSSProperties; ref?: React.Ref<HTMLDivElement> }) {\n const { size, shape, striped, animated } = useProgressContext(\"ProgressBar\");\n\n return (\n <div\n data-slot=\"progress-track\"\n className={cn(progressTrackVariants({ size, shape }), \"text-current\")}\n >\n <motion.div\n ref={ref}\n data-slot=\"progress-bar\"\n className={cn(progressBarVariants({ striped }), className)}\n style={{\n transformOrigin: \"left center\",\n ...style,\n }}\n animate={\n animated\n ? { x: [\"-30%\", \"0%\"], opacity: [0.85, 1] }\n : undefined\n }\n transition={\n animated\n ? { repeat: Infinity, duration: 1.1, ease: \"easeInOut\" }\n : undefined\n }\n {...rest}\n />\n </div>\n );\n}\n\nProgressBar.displayName = \"ProgressBar\";\n\nexport function ProgressLabel({ className, children }: ProgressSectionProps) {\n return (\n <div data-slot=\"progress-label\" className={cn(\"mb-2 font-medium text-slate-200\", className)}>\n {children}\n </div>\n );\n}\n\nProgressLabel.displayName = \"ProgressLabel\";\n\nexport function ProgressValue({ className, children }: ProgressSectionProps) {\n const { value, min, max } = useProgressContext(\"ProgressValue\");\n const range = max - min;\n const pct = range === 0 ? 0 : Math.round(((value - min) / range) * 100);\n const content = children ?? `${pct}%`;\n return (\n <div data-slot=\"progress-value\" className={cn(\"mt-2 text-right text-slate-400\", className)}>\n {content}\n </div>\n );\n}\n\nProgressValue.displayName = \"ProgressValue\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { ProgressAnimation } from \"./types\";\n\ntype ProgressPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"transition\" | \"animate\"\n>;\n\nexport type ProgressAnimationPresets = Record<\n ProgressAnimation,\n ProgressPresetMotionProps\n>;\n\nexport const progressAnimationPresets: ProgressAnimationPresets = {\n none: {},\n shimmer: {\n animate: { backgroundPosition: [\"0% 0%\", \"100% 0%\"] },\n transition: { repeat: Infinity, duration: 1.2, ease: \"linear\" },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const progressVariants = cva(\"w-full text-slate-50\", {\n variants: {\n appearance: {\n default: \"[--progress-fill:theme(colors.slate.50)]\",\n secondary: \"[--progress-fill:theme(colors.slate.300)]\",\n destructive: \"[--progress-fill:theme(colors.rose.400)]\",\n emerald: \"[--progress-fill:theme(colors.emerald.400)]\",\n indigo: \"[--progress-fill:theme(colors.indigo.400)]\",\n purple: \"[--progress-fill:theme(colors.purple.400)]\",\n pink: \"[--progress-fill:theme(colors.pink.400)]\",\n rose: \"[--progress-fill:theme(colors.rose.400)]\",\n sky: \"[--progress-fill:theme(colors.sky.400)]\",\n teal: \"[--progress-fill:theme(colors.teal.400)]\",\n yellow: \"[--progress-fill:theme(colors.yellow.400)]\",\n orange: \"[--progress-fill:theme(colors.orange.400)]\",\n outline: \"[--progress-fill:theme(colors.cyan.300)]\",\n ghost: \"[--progress-fill:theme(colors.slate.200)]\",\n glass: \"[--progress-fill:theme(colors.white)]\",\n \"gradient-blue\":\n \"[--progress-fill:linear-gradient(90deg,theme(colors.blue.500),theme(colors.purple.500))]\",\n \"gradient-green\":\n \"[--progress-fill:linear-gradient(90deg,theme(colors.green.500),theme(colors.lime.500))]\",\n \"gradient-red\":\n \"[--progress-fill:linear-gradient(90deg,theme(colors.red.500),theme(colors.pink.500))]\",\n \"gradient-yellow\":\n \"[--progress-fill:linear-gradient(90deg,theme(colors.yellow.500),theme(colors.orange.500))]\",\n \"gradient-purple\":\n \"[--progress-fill:linear-gradient(90deg,theme(colors.purple.500),theme(colors.pink.500))]\",\n \"gradient-teal\":\n \"[--progress-fill:linear-gradient(90deg,theme(colors.teal.500),theme(colors.cyan.500))]\",\n \"gradient-indigo\":\n \"[--progress-fill:linear-gradient(90deg,theme(colors.indigo.500),theme(colors.purple.500))]\",\n \"gradient-pink\":\n \"[--progress-fill:linear-gradient(90deg,theme(colors.pink.500),theme(colors.rose.500))]\",\n \"gradient-orange\":\n \"[--progress-fill:linear-gradient(90deg,theme(colors.orange.500),theme(colors.red.500))]\",\n },\n size: {\n xs: \"text-[0.65rem]\",\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n xl: \"text-lg\",\n },\n shape: {\n flat: \"rounded-none\",\n rounded: \"rounded-md\",\n pill: \"rounded-full\",\n },\n striped: {\n true: \"\",\n false: \"\",\n },\n animated: {\n true: \"\",\n false: \"\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n shape: \"rounded\",\n striped: false,\n animated: false,\n },\n});\n\nexport const progressTrackVariants = cva(\"relative w-full overflow-hidden bg-white/10\", {\n variants: {\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n md: \"h-2\",\n lg: \"h-3\",\n xl: \"h-4\",\n },\n shape: {\n flat: \"rounded-none\",\n rounded: \"rounded-md\",\n pill: \"rounded-full\",\n },\n },\n defaultVariants: {\n size: \"md\",\n shape: \"rounded\",\n },\n});\n\nexport const progressBarVariants = cva(\n \"h-full w-full origin-left rounded-[inherit]\",\n {\n variants: {\n striped: {\n true: \"bg-[repeating-linear-gradient(135deg,rgba(255,255,255,0.18)_0,rgba(255,255,255,0.18)_10px,transparent_10px,transparent_20px)]\",\n false: \"[background:var(--progress-fill)]\",\n },\n },\n defaultVariants: { striped: false },\n },\n);\n","\"use client\";\nimport { useState, useEffect, useCallback, useRef } from \"react\";\nimport {\n SelectProps,\n SelectOption,\n SelectTriggerProps,\n SelectContentProps,\n SelectItemProps,\n SelectValueProps,\n} from \"./types\";\nimport { createContext, useContext } from \"react\";\nimport { SelectContextType } from \"./types\";\nimport { cn } from \"../../lib/utils\";\nimport {\n selectContentVariants,\n selectItemVariants,\n selectTriggerVariants,\n} from \"./variants\";\n\nexport const SelectContext = createContext<SelectContextType | null>(null);\n\nexport const useSelect = () => {\n const ctx = useContext(SelectContext);\n if (!ctx) throw new Error(\"Select components must be used inside Select\");\n return ctx;\n};\n\nexport const Select = ({\n children,\n value,\n defaultValue = [],\n onChange,\n multiple = true,\n}: SelectProps) => {\n const [internal, setInternal] = useState<string[]>(defaultValue);\n const [open, setOpen] = useState(false);\n const [options, setOptions] = useState<SelectOption[]>([]);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const selected = value ?? internal;\n\n useEffect(() => {\n if (!open) return;\n\n const handlePointerDown = (event: PointerEvent) => {\n const root = rootRef.current;\n if (!root) return;\n const target = event.target;\n if (target instanceof Node && !root.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n return () => document.removeEventListener(\"pointerdown\", handlePointerDown);\n }, [open]);\n\n const setSelected = (vals: string[]) => {\n if (value !== undefined) {\n onChange?.(vals);\n } else {\n setInternal(vals);\n onChange?.(vals);\n }\n };\n\n const toggleValue = (val: string) => {\n if (multiple) {\n if (selected.includes(val)) {\n setSelected(selected.filter((v) => v !== val));\n } else {\n setSelected([...selected, val]);\n }\n } else {\n setSelected([val]);\n setOpen(false);\n }\n };\n\n const isSelected = (val: string) => selected.includes(val);\n\n const registerOption = useCallback((opt: SelectOption) => {\n setOptions((prev) => {\n if (prev.find((o) => o.value === opt.value)) return prev;\n return [...prev, opt];\n });\n }, []);\n\n return (\n <SelectContext.Provider\n value={{\n open,\n setOpen,\n selected,\n toggleValue,\n isSelected,\n registerOption,\n options,\n multiple,\n }}\n >\n <div ref={rootRef} className=\"relative w-full\">\n {children}\n </div>\n </SelectContext.Provider>\n );\n};\n\nexport const SelectTrigger = ({\n className,\n variant,\n size,\n ...props\n}: SelectTriggerProps) => {\n const { open, setOpen } = useSelect();\n\n return (\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className={cn(selectTriggerVariants({ variant, size }), className)}\n {...props}\n />\n );\n};\n\nexport const SelectValue = ({\n placeholder = \"Select...\",\n className,\n ...props\n}: SelectValueProps) => {\n const { selected, options } = useSelect();\n\n const selectedOptions = options.filter((o) => selected.includes(o.value));\n\n if (selectedOptions.length === 0) {\n return (\n <span className={cn(className)} {...props}>\n {placeholder}\n </span>\n );\n }\n\n return (\n <span className={cn(className)} {...props}>\n {selectedOptions.map((option, index) => (\n <span key={option.value}>\n {index > 0 ? \", \" : null}\n {option.label}\n </span>\n ))}\n </span>\n );\n};\n\nexport const SelectContent = ({\n children,\n className,\n appearance = \"default\",\n size = \"md\",\n spacing = \"default\",\n ...props\n}: SelectContentProps) => {\n const { open } = useSelect();\n\n if (!open) return null;\n\n return (\n <div\n className={cn(\n selectContentVariants({ appearance, size, spacing }),\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport const SelectItem = ({\n value,\n children,\n disabled,\n appearance = \"default\",\n className,\n ...props\n}: SelectItemProps) => {\n const { toggleValue, isSelected, registerOption } = useSelect();\n\n useEffect(() => {\n registerOption({ label: children, value, disabled });\n }, [children, disabled, registerOption, value]);\n\n const isActive = isSelected(value);\n\n return (\n <div\n role=\"option\"\n aria-selected={isActive}\n tabIndex={0}\n onClick={() => !disabled && toggleValue(value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") toggleValue(value);\n }}\n data-selected={isActive ? \"true\" : \"false\"}\n className={cn(\n selectItemVariants({\n disabled,\n appearance,\n }),\n \"flex justify-between\",\n className,\n )}\n {...props}\n >\n {children}\n {isActive && <span>✓</span>}\n </div>\n );\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const selectTriggerVariants = cva(\n \"flex items-center justify-between rounded-md border transition-all focus:outline-none\",\n {\n variants: {\n variant: {\n default: \"border-gray-300 bg-white text-gray-900\",\n outline: \"border-2 border-gray-500\",\n ghost: \"border-transparent\",\n sky: \"border-sky-600 text-sky-600\",\n rose: \"border-rose-600 text-rose-600\",\n purple: \"border-purple-600 text-purple-600\",\n pink: \"border-pink-600 text-pink-600\",\n orange: \"border-orange-600 text-orange-600\",\n yellow: \"border-yellow-600 text-yellow-600\",\n teal: \"border-teal-600 text-teal-600\",\n indigo: \"border-indigo-500 text-indigo-500\",\n emerald: \"border-emerald-600 text-emerald-600\",\n glass: \"border-white/15 bg-white/10 text-white backdrop-blur-md\",\n \"gradient-blue\": \"bg-linear-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl text-white\",\n \"gradient-green\": \"bg-linear-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl text-white\",\n \"gradient-red\": \"bg-linear-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl text-white\",\n \"gradient-yellow\": \"bg-linear-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl text-white\",\n \"gradient-purple\": \"bg-linear-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl text-white\",\n \"gradient-teal\": \"bg-linear-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl text-white\",\n \"gradient-indigo\": \"bg-linear-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl text-white\",\n \"gradient-pink\": \"bg-linear-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl text-white\",\n \"gradient-orange\": \"bg-linear-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl text-white\",\n },\n size: {\n sm: \"px-2 py-1 text-sm\",\n md: \"px-3 py-2\",\n lg: \"px-4 py-3 text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport const selectItemVariants = cva(\n \"cursor-pointer px-3 py-2 rounded-md\",\n {\n variants: {\n appearance: {\n default: \"bg-white text-gray-900 data-[selected=true]:bg-gray-200 data-[selected=true]:text-gray-900\",\n glass: \"bg-white/10 text-gray-100 data-[selected=true]:bg-white/10 data-[selected=true]:text-gray-100\",\n outline: \"border-2 border-gray-500 text-gray-900 data-[selected=true]:border-2 data-[selected=true]:border-gray-500 data-[selected=true]:bg-gray-200 data-[selected=true]:text-gray-900\",\n ghost: \"border-transparent text-gray-900 data-[selected=true]:border-transparent data-[selected=true]:bg-transparent data-[selected=true]:text-gray-900\",\n sky: \"border-sky-600 text-sky-800 data-[selected=true]:border-sky-600 data-[selected=true]:bg-sky-200 data-[selected=true]:text-sky-800\",\n rose: \"border-rose-600 text-rose-800 data-[selected=true]:border-rose-600 data-[selected=true]:bg-rose-200 data-[selected=true]:text-rose-800\",\n purple: \"border-purple-600 text-purple-800 data-[selected=true]:border-purple-600 data-[selected=true]:bg-purple-200 data-[selected=true]:text-purple-800\",\n pink: \"border-pink-600 text-pink-800 data-[selected=true]:border-pink-600 data-[selected=true]:bg-pink-200 data-[selected=true]:text-pink-800\",\n orange: \"border-orange-600 text-orange-800 data-[selected=true]:border-orange-600 data-[selected=true]:bg-orange-200 data-[selected=true]:text-orange-800\",\n yellow: \"border-yellow-600 text-yellow-800 data-[selected=true]:border-yellow-600 data-[selected=true]:bg-yellow-200 data-[selected=true]:text-yellow-800\",\n teal: \"border-teal-600 text-teal-800 data-[selected=true]:border-teal-600 data-[selected=true]:bg-teal-200 data-[selected=true]:text-teal-800\",\n indigo: \"border-indigo-600 text-indigo-800 data-[selected=true]:border-indigo-600 data-[selected=true]:bg-indigo-200 data-[selected=true]:text-indigo-800\",\n emerald: \"border-emerald-600 text-emerald-800 data-[selected=true]:border-emerald-600 data-[selected=true]:bg-emerald-200 data-[selected=true]:text-emerald-800\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl text-blue-50 data-[selected=true]:bg-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl data-[selected=true]:text-blue-100\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl text-green-50 data-[selected=true]:bg-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl data-[selected=true]:text-green-100\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl text-red-50 data-[selected=true]:bg-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl data-[selected=true]:text-red-100\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl text-yellow-50 data-[selected=true]:bg-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl data-[selected=true]:text-yellow-100\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl text-purple-50 data-[selected=true]:bg-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl data-[selected=true]:text-purple-100\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl text-teal-50 data-[selected=true]:bg-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl data-[selected=true]:text-teal-100\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl text-indigo-50 data-[selected=true]:bg-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl data-[selected=true]:text-indigo-100\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl text-pink-50 data-[selected=true]:bg-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl data-[selected=true]:text-pink-100\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl text-orange-50 data-[selected=true]:bg-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl data-[selected=true]:text-orange-100\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n },\n },\n);\n\nexport const selectContentVariants = cva(\n \"absolute z-10 mt-2 w-full rounded-md border bg-white shadow-md\",\n {\n variants: {\n appearance: {\n default: \"bg-white shadow-md\",\n glass: \"bg-white/10 backdrop-blur-md\",\n outline: \"border-2 border-gray-500\",\n ghost: \"border-transparent\",\n sky: \"border-sky-600\",\n rose: \"border-rose-600\",\n purple: \"border-purple-600\",\n pink: \"border-pink-600\",\n orange: \"border-orange-600\",\n yellow: \"border-yellow-600\",\n teal: \"border-teal-600\",\n indigo: \"border-indigo-600\",\n emerald: \"border-emerald-600\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n size: {\n sm: \"px-2 py-1 text-sm\",\n md: \"px-3 py-2\",\n lg: \"px-4 py-3 text-lg\",\n },\n spacing: {\n none: \"space-y-0\",\n default: \"space-y-1\",\n sm: \"space-y-2\",\n md: \"space-y-3\",\n lg: \"space-y-4\",\n xl: \"space-y-5\",\n }\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n spacing: \"default\",\n },\n },\n);\n","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { skeletonAnimationPresets } from \"./animations\";\nimport type {\n SkeletonAnimation,\n SkeletonAvatarProps,\n SkeletonButtonProps,\n SkeletonCardProps,\n SkeletonProps,\n SkeletonTextProps,\n} from \"./types\";\nimport { skeletonTextLineVariants, skeletonVariants } from \"./variants\";\n\nconst SkeletonAnimationContext = createContext<SkeletonAnimation | undefined>(\n undefined,\n);\n\nfunction useSkeletonAnimation(fallback: SkeletonAnimation): SkeletonAnimation {\n return useContext(SkeletonAnimationContext) ?? fallback;\n}\n\nexport function Skeleton(props: SkeletonProps) {\n const {\n className,\n appearance,\n size,\n rounded,\n animation = \"shimmer\",\n shimmerTone,\n busy,\n children,\n ref,\n ...rest\n } = props;\n const motionProps = skeletonAnimationPresets[animation];\n const ctx = useMemo(() => animation, [animation]);\n\n return (\n <SkeletonAnimationContext.Provider value={ctx}>\n <motion.div\n ref={ref}\n data-slot=\"skeleton\"\n aria-hidden\n aria-busy={busy ? true : undefined}\n className={cn(\n skeletonVariants({\n appearance,\n size,\n rounded,\n animation,\n shimmerTone,\n }),\n className,\n )}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.div>\n </SkeletonAnimationContext.Provider>\n );\n}\n\nSkeleton.displayName = \"Skeleton\";\n\nexport function SkeletonText(props: SkeletonTextProps) {\n const {\n lines = 3,\n className,\n appearance,\n size,\n rounded,\n animation = \"shimmer\",\n shimmerTone,\n busy,\n ref,\n } = props;\n const effectiveAnimation = useSkeletonAnimation(animation);\n const motionProps = skeletonAnimationPresets[effectiveAnimation];\n\n return (\n <div\n data-slot=\"skeleton-text\"\n className={cn(\"flex w-full flex-col gap-2\", className)}\n aria-hidden\n aria-busy={busy ? true : undefined}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <motion.div\n key={index}\n ref={index === 0 ? ref : undefined}\n className={cn(\n skeletonVariants({\n appearance,\n size,\n rounded,\n animation: effectiveAnimation,\n shimmerTone,\n }),\n skeletonTextLineVariants({ size }),\n index === lines - 1 ? \"w-3/5\" : \"w-full\",\n )}\n initial={false}\n {...motionProps}\n />\n ))}\n </div>\n );\n}\n\nSkeletonText.displayName = \"SkeletonText\";\n\nconst avatarSizeClass: Record<\n NonNullable<SkeletonAvatarProps[\"avatarSize\"]>,\n string\n> = {\n xs: \"size-6\",\n sm: \"size-8\",\n md: \"size-10\",\n lg: \"size-12\",\n xl: \"size-14\",\n \"2xl\": \"size-16\",\n};\n\nexport function SkeletonAvatar(props: SkeletonAvatarProps) {\n const {\n avatarSize = \"md\",\n className,\n appearance,\n size,\n rounded = \"full\",\n animation,\n shimmerTone,\n busy,\n ref,\n ...rest\n } = props;\n const effectiveAnimation = useSkeletonAnimation(animation ?? \"shimmer\");\n const motionProps = skeletonAnimationPresets[effectiveAnimation];\n\n return (\n <motion.div\n ref={ref}\n data-slot=\"skeleton-avatar\"\n aria-hidden\n aria-busy={busy ? true : undefined}\n className={cn(\n skeletonVariants({\n appearance,\n size,\n rounded,\n animation: effectiveAnimation,\n shimmerTone,\n }),\n avatarSizeClass[avatarSize],\n className,\n )}\n initial={false}\n {...motionProps}\n {...rest}\n />\n );\n}\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\nexport function SkeletonCard(props: SkeletonCardProps) {\n const {\n className,\n busy,\n animation = \"shimmer\",\n shimmerTone,\n appearance,\n size,\n rounded,\n ref,\n } = props;\n\n return (\n <div\n ref={ref as never}\n data-slot=\"skeleton-card\"\n className={cn(\"w-full max-w-sm\", className)}\n aria-busy={busy ? true : undefined}\n >\n <Skeleton\n rounded=\"lg\"\n animation={animation}\n shimmerTone={shimmerTone}\n appearance={appearance}\n size={size}\n busy={busy}\n className=\"flex flex-col gap-4 p-4\"\n >\n <div className=\"flex items-center gap-3\">\n <SkeletonAvatar\n appearance={appearance}\n size={size}\n animation={animation}\n shimmerTone={shimmerTone}\n rounded={rounded}\n />\n <div className=\"flex flex-1 flex-col gap-2\">\n <SkeletonText\n lines={2}\n appearance={appearance}\n size={size}\n animation={animation}\n shimmerTone={shimmerTone}\n />\n </div>\n </div>\n <SkeletonText\n lines={4}\n appearance={appearance}\n size={size}\n animation={animation}\n shimmerTone={shimmerTone}\n />\n </Skeleton>\n </div>\n );\n}\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\nconst buttonHeight: Record<NonNullable<SkeletonButtonProps[\"buttonSize\"]>, string> = {\n sm: \"h-8 w-24\",\n md: \"h-10 w-32\",\n lg: \"h-12 w-40\",\n};\n\nexport function SkeletonButton(props: SkeletonButtonProps) {\n const {\n buttonSize = \"md\",\n className,\n appearance,\n size,\n rounded = \"md\",\n animation,\n shimmerTone,\n busy,\n ref,\n ...rest\n } = props;\n const effectiveAnimation = useSkeletonAnimation(animation ?? \"shimmer\");\n const motionProps = skeletonAnimationPresets[effectiveAnimation];\n\n return (\n <motion.div\n ref={ref}\n data-slot=\"skeleton-button\"\n aria-hidden\n aria-busy={busy ? true : undefined}\n className={cn(\n skeletonVariants({\n appearance,\n size,\n rounded,\n animation: effectiveAnimation,\n shimmerTone,\n }),\n buttonHeight[buttonSize],\n className,\n )}\n initial={false}\n {...motionProps}\n {...rest}\n />\n );\n}\n\nSkeletonButton.displayName = \"SkeletonButton\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { SkeletonAnimation } from \"./types\";\n\ntype SkeletonPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\"\n>;\n\nexport type SkeletonAnimationPresets = Record<\n SkeletonAnimation,\n SkeletonPresetMotionProps\n>;\n\nexport const skeletonAnimationPresets: SkeletonAnimationPresets = {\n none: {},\n shimmer: {\n initial: { backgroundPosition: \"100% 0%\" },\n animate: { backgroundPosition: [\"100% 0%\", \"0% 0%\"] },\n transition: { repeat: Infinity, duration: 1.35, ease: \"linear\" },\n },\n pulse: {\n initial: { opacity: 1 },\n animate: { opacity: [1, 0.5, 1] },\n transition: { repeat: Infinity, duration: 1.35, ease: \"easeInOut\" },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nconst shimmerLayer =\n \"[background-size:220%_100%] [background-repeat:no-repeat] [background-position:100%_0%]\";\n\nexport const skeletonShimmerGradientClasses = {\n default: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(255,255,255,0.04),rgba(255,255,255,0.22),rgba(255,255,255,0.04))]`,\n subtle: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(255,255,255,0.03),rgba(255,255,255,0.14),rgba(255,255,255,0.03))]`,\n muted: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(255,255,255,0.02),rgba(255,255,255,0.1),rgba(255,255,255,0.02))]`,\n sky: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(56,189,248,0.1),rgba(56,189,248,0.42),rgba(56,189,248,0.1))]`,\n rose: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,113,133,0.1),rgba(251,113,133,0.42),rgba(251,113,133,0.1))]`,\n purple: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(192,132,252,0.1),rgba(192,132,252,0.42),rgba(192,132,252,0.1))]`,\n pink: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(244,114,182,0.1),rgba(244,114,182,0.42),rgba(244,114,182,0.1))]`,\n orange: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,146,60,0.1),rgba(251,146,60,0.42),rgba(251,146,60,0.1))]`,\n yellow: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(250,204,21,0.12),rgba(250,204,21,0.4),rgba(250,204,21,0.12))]`,\n teal: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(45,212,191,0.1),rgba(45,212,191,0.42),rgba(45,212,191,0.1))]`,\n indigo: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(129,140,248,0.1),rgba(129,140,248,0.42),rgba(129,140,248,0.1))]`,\n emerald: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(52,211,153,0.1),rgba(52,211,153,0.42),rgba(52,211,153,0.1))]`,\n gray: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(161,161,170,0.1),rgba(161,161,170,0.38),rgba(161,161,170,0.1))]`,\n amber: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,191,36,0.12),rgba(251,191,36,0.42),rgba(251,191,36,0.12))]`,\n violet: `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(167,139,250,0.1),rgba(167,139,250,0.42),rgba(167,139,250,0.1))]`,\n \"gradient-blue\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(100,149,237,0.1),rgba(100,149,237,0.42),rgba(100,149,237,0.1))]`,\n \"gradient-green\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(52,211,153,0.1),rgba(52,211,153,0.42),rgba(52,211,153,0.1))]`,\n \"gradient-red\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(239,68,68,0.1),rgba(239,68,68,0.42),rgba(239,68,68,0.1))]`,\n \"gradient-yellow\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(250,204,21,0.12),rgba(250,204,21,0.42),rgba(250,204,21,0.12))]`,\n \"gradient-purple\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(167,139,250,0.1),rgba(167,139,250,0.42),rgba(167,139,250,0.1))]`,\n \"gradient-teal\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(45,212,191,0.1),rgba(45,212,191,0.42),rgba(45,212,191,0.1))]`,\n \"gradient-indigo\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(129,140,248,0.1),rgba(129,140,248,0.42),rgba(129,140,248,0.1))]`,\n \"gradient-pink\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(244,114,182,0.1),rgba(244,114,182,0.42),rgba(244,114,182,0.1))]`,\n \"gradient-orange\": `${shimmerLayer} [background-image:linear-gradient(90deg,rgba(251,146,60,0.1),rgba(251,146,60,0.42),rgba(251,146,60,0.1))]`,\n} as const;\n\nexport type SkeletonShimmerTone = keyof typeof skeletonShimmerGradientClasses;\n\nexport const skeletonVariants = cva(\n \"relative overflow-hidden bg-white/10 text-transparent\",\n {\n variants: {\n appearance: {\n default: \"bg-white/10\",\n subtle: \"bg-white/[0.07]\",\n muted: \"bg-slate-800/80\",\n sky: \"bg-sky-500/10\",\n rose: \"bg-rose-500/10\",\n purple: \"bg-purple-500/10\",\n pink: \"bg-pink-500/10\",\n orange: \"bg-orange-500/10\",\n yellow: \"bg-yellow-500/10\",\n teal: \"bg-teal-500/10\",\n indigo: \"bg-indigo-500/10\",\n emerald: \"bg-emerald-500/10\",\n gray: \"bg-gray-500/10\",\n amber: \"bg-amber-500/10\",\n violet: \"bg-violet-500/10\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600\",\n },\n size: {\n sm: \"min-h-3\",\n md: \"min-h-4\",\n lg: \"min-h-6\",\n },\n rounded: {\n none: \"rounded-none\",\n sm: \"rounded-md\",\n md: \"rounded-lg\",\n lg: \"rounded-xl\",\n full: \"rounded-full\",\n },\n animation: {\n none: \"\",\n shimmer: \"\",\n pulse: \"\",\n },\n shimmerTone: {\n default: \"\",\n subtle: \"\",\n muted: \"\",\n sky: \"\",\n rose: \"\",\n purple: \"\",\n pink: \"\",\n orange: \"\",\n yellow: \"\",\n teal: \"\",\n indigo: \"\",\n emerald: \"\",\n gray: \"\",\n amber: \"\",\n violet: \"\",\n \"gradient-blue\": \"\",\n \"gradient-green\": \"\",\n \"gradient-red\": \"\",\n \"gradient-yellow\": \"\",\n \"gradient-purple\": \"\",\n \"gradient-teal\": \"\",\n \"gradient-indigo\": \"\",\n \"gradient-pink\": \"\",\n \"gradient-orange\": \"\",\n },\n },\n compoundVariants: [\n {\n animation: \"shimmer\",\n shimmerTone: \"default\",\n class: skeletonShimmerGradientClasses.default,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"muted\",\n class: skeletonShimmerGradientClasses.subtle,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"subtle\",\n class: skeletonShimmerGradientClasses.subtle,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"sky\",\n class: skeletonShimmerGradientClasses.sky,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"rose\",\n class: skeletonShimmerGradientClasses.rose,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"purple\",\n class: skeletonShimmerGradientClasses.purple,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"pink\",\n class: skeletonShimmerGradientClasses.pink,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"orange\",\n class: skeletonShimmerGradientClasses.orange,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"yellow\",\n class: skeletonShimmerGradientClasses.yellow,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"teal\",\n class: skeletonShimmerGradientClasses.teal,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"indigo\",\n class: skeletonShimmerGradientClasses.indigo,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"emerald\",\n class: skeletonShimmerGradientClasses.emerald,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gray\",\n class: skeletonShimmerGradientClasses.gray,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"amber\",\n class: skeletonShimmerGradientClasses.amber,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"violet\",\n class: skeletonShimmerGradientClasses.violet,\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-blue\",\n class: skeletonShimmerGradientClasses[\"gradient-blue\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-green\",\n class: skeletonShimmerGradientClasses[\"gradient-green\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-red\",\n class: skeletonShimmerGradientClasses[\"gradient-red\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-yellow\",\n class: skeletonShimmerGradientClasses[\"gradient-yellow\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-purple\",\n class: skeletonShimmerGradientClasses[\"gradient-purple\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-teal\",\n class: skeletonShimmerGradientClasses[\"gradient-teal\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-indigo\",\n class: skeletonShimmerGradientClasses[\"gradient-indigo\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-pink\",\n class: skeletonShimmerGradientClasses[\"gradient-pink\"],\n },\n {\n animation: \"shimmer\",\n shimmerTone: \"gradient-orange\",\n class: skeletonShimmerGradientClasses[\"gradient-orange\"],\n },\n {\n animation: \"pulse\",\n class: \"\",\n },\n ],\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n rounded: \"md\",\n animation: \"shimmer\",\n shimmerTone: \"default\",\n },\n },\n);\n\nexport const skeletonTextLineVariants = cva(\"block w-full\", {\n variants: {\n size: {\n sm: \"h-2.5\",\n md: \"h-3\",\n lg: \"h-4\",\n },\n },\n defaultVariants: { size: \"md\" },\n});\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { SpinnerProps } from \"./types\";\nimport { spinnerVariants } from \"./variants\";\n\nexport function Spinner(props: SpinnerProps) {\n const {\n className,\n appearance,\n size,\n variant = \"ring\",\n ref,\n \"aria-label\": ariaLabel = \"Loading\",\n ...rest\n } = props;\n const rootClass = cn(spinnerVariants({ appearance, size, variant }), className);\n\n if (variant === \"ring\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"relative\")}\n initial={false}\n {...rest}\n >\n <motion.span\n className=\"block size-full rounded-full border-2 border-current border-t-transparent\"\n animate={{ rotate: 360 }}\n transition={{ repeat: Infinity, ease: \"linear\", duration: 0.85 }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n if (variant === \"dots\") {\n const dotSize =\n size === \"xs\"\n ? \"size-1\"\n : size === \"sm\"\n ? \"size-1.5\"\n : size === \"md\"\n ? \"size-2\"\n : size === \"lg\"\n ? \"size-2.5\"\n : \"size-3\";\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n {[0, 1, 2].map((index) => (\n <motion.span\n key={index}\n className={cn(\"rounded-full bg-current\", dotSize)}\n animate={{ y: [0, -5, 0], opacity: [0.45, 1, 0.45] }}\n transition={{\n repeat: Infinity,\n duration: 0.55,\n ease: \"easeInOut\",\n delay: index * 0.12,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n }\n\n if (variant === \"pulse\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass)}\n initial={false}\n {...rest}\n >\n <motion.span\n className=\"block size-full rounded-full bg-current\"\n animate={{ scale: [0.75, 1, 0.75], opacity: [0.45, 1, 0.45] }}\n transition={{ repeat: Infinity, duration: 0.9, ease: \"easeInOut\" }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n const barWidth =\n size === \"xs\"\n ? \"w-0.5\"\n : size === \"sm\"\n ? \"w-0.5\"\n : size === \"md\"\n ? \"w-1\"\n : size === \"lg\"\n ? \"w-1.5\"\n : \"w-2\";\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n {[0, 1, 2, 3].map((index) => (\n <motion.span\n key={index}\n className={cn(\"h-full max-h-[70%] rounded-full bg-current\", barWidth)}\n animate={{ scaleY: [0.35, 1, 0.35] }}\n transition={{\n repeat: Infinity,\n duration: 0.65,\n ease: \"easeInOut\",\n delay: index * 0.1,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n}\n\nSpinner.displayName = \"Spinner\";\n","import { cva } from \"class-variance-authority\";\n\nconst spinnerAppearances = {\n default: \"text-slate-50\",\n secondary: \"text-slate-300\",\n destructive: \"text-rose-400\",\n ghost: \"text-slate-300\",\n emerald: \"text-emerald-400\",\n indigo: \"text-indigo-400\",\n purple: \"text-purple-400\",\n pink: \"text-pink-400\",\n rose: \"text-rose-400\",\n sky: \"text-sky-400\",\n teal: \"text-teal-400\",\n yellow: \"text-yellow-400\",\n orange: \"text-orange-400\",\n \"gradient-blue\": \"text-blue-400\",\n \"gradient-green\": \"text-green-400\",\n \"gradient-red\": \"text-red-400\",\n \"gradient-yellow\": \"text-yellow-400\",\n \"gradient-purple\": \"text-purple-400\",\n \"gradient-teal\": \"text-teal-400\",\n \"gradient-indigo\": \"text-indigo-400\",\n \"gradient-pink\": \"text-pink-400\",\n \"gradient-orange\": \"text-orange-400\",\n} as const;\n\nexport const spinnerVariants = cva(\"inline-flex items-center justify-center\", {\n variants: {\n appearance: spinnerAppearances,\n size: {\n xs: \"size-3\",\n sm: \"size-4\",\n md: \"size-6\",\n lg: \"size-8\",\n xl: \"size-10\",\n },\n variant: {\n ring: \"\",\n dots: \"\",\n pulse: \"\",\n bars: \"\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n variant: \"ring\",\n },\n});\n","/** Spinner variants use Framer `animate` on the root; presets reserved for future. */\nexport const spinnerAnimationPresets = {\n none: {},\n} as const;\n","\"use client\";\n\nimport { createContext, useContext, useMemo } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { tableAnimationPresets } from \"./animations\";\nimport type {\n TableCellProps,\n TableHeadCellProps,\n TableProps,\n TableSectionProps,\n} from \"./types\";\nimport { tableCellVariants, tableRowVariants, tableVariants } from \"./variants\";\n\ntype TableCtx = {\n appearance: NonNullable<TableProps[\"appearance\"]>;\n size: NonNullable<TableProps[\"size\"]>;\n stickyHeader: boolean;\n rowAnimation: NonNullable<TableProps[\"rowAnimation\"]>;\n textAlign: NonNullable<TableCellProps[\"textAlign\"]>;\n};\n\nconst TableContext = createContext<TableCtx | null>(null);\n\nfunction useTableContext(component: string): TableCtx {\n const ctx = useContext(TableContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Table>`);\n }\n return ctx;\n}\n\nexport function Table(props: TableProps) {\n const {\n className,\n appearance = \"default\",\n size = \"md\",\n textAlign = \"left\",\n stickyHeader = false,\n rowAnimation = \"none\",\n children,\n ref,\n ...rest\n } = props;\n const ctx = useMemo(\n () => ({\n appearance: appearance ?? \"default\",\n size: size ?? \"md\",\n stickyHeader: Boolean(stickyHeader),\n rowAnimation,\n textAlign,\n }),\n [appearance, rowAnimation, size, stickyHeader, textAlign],\n );\n\n return (\n <TableContext.Provider value={ctx}>\n <div data-slot=\"table-scroll\" className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n data-slot=\"table\"\n role=\"table\"\n className={cn(\n tableVariants({ appearance, size, stickyHeader }),\n \"w-full min-w-0 table\",\n className,\n )}\n {...rest}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n );\n}\n\nTable.displayName = \"Table\";\n\nexport function TableHeader({ className, children }: TableSectionProps) {\n const { stickyHeader } = useTableContext(\"TableHeader\");\n const stickyClass = stickyHeader ? \"sticky top-0 z-10 bg-slate-950/95 backdrop-blur\" : \"\";\n return (\n <thead data-slot=\"table-header\" className={cn(stickyClass, className)}>\n {children}\n </thead>\n );\n}\n\nTableHeader.displayName = \"TableHeader\";\n\nexport function TableBody({ className, children }: TableSectionProps) {\n return (\n <tbody data-slot=\"table-body\" className={cn(className)}>\n {children}\n </tbody>\n );\n}\n\nTableBody.displayName = \"TableBody\";\n\nexport function TableFooter({ className, children }: TableSectionProps) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t border-white/10 bg-white/3 font-medium\",\n className,\n )}\n >\n {children}\n </tfoot>\n );\n}\n\nTableFooter.displayName = \"TableFooter\";\n\nexport function TableRow({\n className,\n children,\n ref,\n ...rest\n}: TableSectionProps & { ref?: React.Ref<HTMLTableRowElement> }) {\n const { appearance, rowAnimation } = useTableContext(\"TableRow\");\n const motionProps = tableAnimationPresets[rowAnimation];\n\n return (\n <motion.tr\n ref={ref}\n data-slot=\"table-row\"\n className={cn(tableRowVariants({ appearance }), className)}\n initial={false}\n {...motionProps}\n {...rest}\n >\n {children}\n </motion.tr>\n );\n}\n\nTableRow.displayName = \"TableRow\";\n\nexport function TableHead({\n className,\n children,\n scope = \"col\",\n sortDirection,\n ref,\n ...rest\n}: TableHeadCellProps) {\n const { appearance, size, textAlign } = useTableContext(\"TableHead\");\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n scope={scope}\n aria-sort={sortDirection}\n className={cn(\n tableCellVariants({ appearance, size, textAlign }),\n className,\n )}\n {...rest}\n >\n {children}\n </th>\n );\n}\n\nTableHead.displayName = \"TableHead\";\n\nexport function TableCell({\n className,\n children,\n ref,\n ...rest\n}: TableCellProps) {\n const { appearance, size, textAlign } = useTableContext(\"TableCell\");\n return (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n className={cn(\n tableCellVariants({ appearance, size, textAlign }),\n className,\n )}\n {...rest}\n >\n {children}\n </td>\n );\n}\n\nTableCell.displayName = \"TableCell\";\n\nexport function TableCaption({ className, children }: TableSectionProps) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-3 text-left text-xs text-slate-500\", className)}\n >\n {children}\n </caption>\n );\n}\n\nTableCaption.displayName = \"TableCaption\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nimport type { TableAnimation } from \"./types\";\n\ntype TablePresetMotionProps = Pick<HTMLMotionProps<\"tr\">, \"whileHover\" | \"transition\">;\n\nexport type TableAnimationPresets = Record<TableAnimation, TablePresetMotionProps>;\n\nexport const tableAnimationPresets: TableAnimationPresets = {\n none: {},\n hover: {\n whileHover: { backgroundColor: \"rgba(255,255,255,0.05)\" },\n transition: { duration: 0.15 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const tableVariants = cva(\n \"w-full table-auto border-collapse caption-bottom text-sm text-slate-200 md:table-fixed\",\n {\n variants: {\n appearance: {\n default: \"\",\n striped: \"\",\n bordered: \"border border-white/10\",\n ghost: \"\",\n sky:'border border-sky-600',\n rose:'border border-rose-600',\n purple:'border border-purple-600',\n pink:'border border-pink-600',\n orange:'border border-orange-600',\n yellow:'border border-yellow-600',\n teal:'border border-teal-600',\n indigo:'border border-indigo-600',\n emerald:'border border-emerald-600',\n gray:'border border-gray-600',\n amber:'border border-amber-600',\n violet:'border border-violet-600',\n },\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n stickyHeader: {\n true: \"\",\n false: \"\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n stickyHeader: false,\n },\n },\n);\n\nexport const tableRowVariants = cva(\n \"border-b border-white/5 transition-colors data-[state=selected]:bg-white/[0.06]\",\n {\n variants: {\n appearance: {\n default: \"\",\n striped: \"odd:bg-white/[0.03]\",\n bordered: \"\",\n ghost: \"border-transparent hover:bg-white/[0.03]\",\n sky:'border-sky-600 hover:bg-sky-600',\n rose:'border-rose-600 hover:bg-rose-900',\n purple:'border-purple-600 hover:bg-purple-900',\n pink:'border-pink-600 hover:bg-pink-900',\n orange:'border-orange-600 hover:bg-orange-900',\n yellow:'border-yellow-600 hover:bg-yellow-900',\n teal:'border-teal-600 hover:bg-teal-900',\n indigo:'border-indigo-600 hover:bg-indigo-900',\n emerald:'border-emerald-600 hover:bg-emerald-900',\n gray:'border-gray-600 hover:bg-gray-900',\n amber:'border-amber-600 hover:bg-amber-900',\n violet:'border-violet-600 hover:bg-violet-900',\n },\n },\n defaultVariants: { appearance: \"default\" },\n },\n);\n\nexport const tableCellVariants = cva(\"min-w-0 border p-3 align-middle break-words\", {\n variants: {\n appearance: {\n default: \"border-white/10\",\n striped: \"border-white/10\",\n bordered: \"border-white/10\",\n ghost: \"border-white/10\",\n sky: \"border-sky-600\",\n rose: \"border-rose-600\",\n purple: \"border-purple-600\",\n pink: \"border-pink-600\",\n orange: \"border-orange-600\",\n yellow: \"border-yellow-600\",\n teal: \"border-teal-600\",\n indigo: \"border-indigo-600\",\n emerald: \"border-emerald-600\",\n gray: \"border-gray-600\",\n amber: \"border-amber-600\",\n violet: \"border-violet-600\",\n },\n size: {\n sm: \"p-2\",\n md: \"p-3\",\n lg: \"p-4\",\n },\n textAlign: {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n },\n },\n defaultVariants: { appearance: \"default\", size: \"md\" },\n});\n","\"use client\"\n\nimport { motion, useReducedMotion } from \"framer-motion\"\nimport {\n createContext,\n KeyboardEvent,\n useContext,\n useId,\n useState,\n} from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nimport { getTabsContentMotionProps } from \"./animations\"\nimport {\n TabsContentProps,\n TabsListProps,\n TabsProps,\n TabsTriggerProps,\n TabsValue,\n TabsContextType,\n} from \"./types\"\nimport { tabsListVariants, tabsTriggerVariants } from \"./variants\"\n\n\nexport const TabsContext = createContext<TabsContextType | null>(null)\n\nexport const useTabs = () => {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error(\"Tabs components must be used within Tabs\")\n return ctx\n}\n\nexport function Tabs({\n value,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n children,\n className,\n}: TabsProps) {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const idPrefix = useId()\n\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n const setValue = (val: string) => {\n if (!isControlled) setInternalValue(val)\n onValueChange?.(val)\n }\n\n const tabTriggerId = (tabValue: TabsValue) =>\n `${idPrefix}zentauri-tab-${tabValue}`\n const tabPanelId = (tabValue: TabsValue) =>\n `${idPrefix}zentauri-panel-${tabValue}`\n\n return (\n <TabsContext.Provider\n value={{\n value: currentValue,\n setValue,\n orientation,\n tabTriggerId,\n tabPanelId,\n }}\n >\n <div data-slot=\"tabs\" className={cn(\"w-full\", className)}>\n {children}\n </div>\n </TabsContext.Provider>\n )\n}\n\nexport function TabsList({\n children,\n className,\n ...props\n}: TabsListProps) {\n const { orientation, size } = useTabs()\n\n return (\n <div\n role=\"tablist\"\n aria-orientation={orientation}\n className={cn(tabsListVariants({ orientation, size }), className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function TabsTrigger({\n value,\n children,\n disabled,\n className,\n ...props\n}: TabsTriggerProps) {\n const { value: activeValue, setValue, tabTriggerId, tabPanelId, size, appearance, variant } = useTabs()\n\n const isActive = activeValue === value\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n const triggers = Array.from(\n document.querySelectorAll('[role=\"tab\"]'),\n ) as HTMLElement[]\n\n const index = triggers.findIndex((el) => el === e.currentTarget)\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault()\n triggers[index + 1]?.focus()\n }\n\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault()\n triggers[index - 1]?.focus()\n }\n\n if (e.key === \"Home\") {\n e.preventDefault()\n triggers[0]?.focus()\n }\n\n if (e.key === \"End\") {\n e.preventDefault()\n triggers[triggers.length - 1]?.focus()\n }\n }\n\n return (\n <button\n id={tabTriggerId(value)}\n type=\"button\"\n role=\"tab\"\n data-state={isActive ? \"active\" : \"inactive\"}\n aria-selected={isActive}\n aria-controls={tabPanelId(value)}\n disabled={disabled}\n onClick={() => setValue(value)}\n onKeyDown={handleKeyDown}\n className={cn(tabsTriggerVariants({ size, appearance, variant }), className, \"cursor-pointer\")}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport function TabsContent({\n value,\n children,\n className,\n animation = \"fade\",\n ...props\n}: TabsContentProps) {\n const { value: activeValue, orientation, tabTriggerId, tabPanelId } =\n useTabs()\n const prefersReducedMotion = useReducedMotion()\n\n if (activeValue !== value) return null\n\n const motionProps = getTabsContentMotionProps(\n animation,\n orientation,\n Boolean(prefersReducedMotion),\n )\n\n return (\n <motion.div\n id={tabPanelId(value)}\n role=\"tabpanel\"\n aria-labelledby={tabTriggerId(value)}\n {...props}\n {...motionProps}\n className={cn(\"mt-2\", className)}\n >\n {children}\n </motion.div>\n )\n}\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nexport type TabsAnimation = \"none\" | \"fade\" | \"slide\";\n\ntype TabsPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\"\n>;\n\nexport type TabsAnimationPresets = Record<TabsAnimation, TabsPresetMotionProps>;\n\ntype TabsOrientation = \"horizontal\" | \"vertical\";\n\nconst easeOutExpo: [number, number, number, number] = [0.16, 1, 0.3, 1];\n\nexport const tabsContentAnimationPresets: TabsAnimationPresets = {\n none: {},\n fade: {\n initial: { opacity: 0, y: 6 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.2, ease: easeOutExpo },\n },\n slide: {\n initial: { opacity: 0, y: 8 },\n animate: { opacity: 1, y: 0 },\n transition: {\n type: \"spring\",\n stiffness: 420,\n damping: 34,\n mass: 0.82,\n },\n },\n};\n\nexport function getTabsContentMotionProps(\n animation: TabsAnimation,\n orientation: TabsOrientation,\n reducedMotion: boolean,\n): TabsPresetMotionProps {\n if (reducedMotion || animation === \"none\") {\n return {};\n }\n if (animation === \"fade\") {\n return tabsContentAnimationPresets.fade;\n }\n if (animation === \"slide\") {\n const offset = 12;\n return {\n initial:\n orientation === \"horizontal\"\n ? { opacity: 0, x: offset, y: 0 }\n : { opacity: 0, x: 0, y: offset },\n animate: { opacity: 1, x: 0, y: 0 },\n transition: { duration: 0.22, ease: easeOutExpo },\n };\n }\n return {};\n}\n","import { cva } from \"class-variance-authority\"\n\nexport const tabsListVariants = cva(\n \"flex items-center gap-1\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n underline: \"border-b-2 border-transparent\",\n pills: \"rounded-md\",\n },\n size: {\n sm: \"text-sm p-1\",\n md: \"text-base p-1.5\",\n lg: \"text-lg p-2\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n },\n defaultVariants: {\n size: \"md\",\n orientation: \"horizontal\",\n },\n }\n)\n\nexport const tabsTriggerVariants = cva(\n \"px-3 py-1.5 rounded-md transition-all focus:outline-none focus:ring-2 focus:ring-ring\",\n {\n variants: {\n appearance: {\n default: \"bg-transparent\",\n sky: \"bg-sky-500/75\",\n rose: \"bg-rose-500/75\",\n purple: \"bg-purple-500/75\",\n pink: \"bg-pink-500/75\",\n orange: \"bg-orange-500/75\",\n yellow: \"bg-yellow-500/75\",\n teal: \"bg-teal-500/75\",\n indigo: \"bg-indigo-500/75\",\n emerald: \"bg-emerald-500/75\",\n gray: \"bg-gray-500/75\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600\",\n },\n variant: {\n default: \"data-[state=active]:bg-background\",\n underline:\n \"border-b-2 border-transparent data-[state=active]:border-primary rounded-none\",\n pills:\n \"data-[state=active]:bg-primary data-[state=active]:text-white\",\n },\n size: {\n sm: \"px-2 py-1\",\n md: \"px-3 py-1.5\",\n lg: \"px-4 py-2\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n variant: \"default\",\n size: \"md\",\n },\n }\n)","\"use client\";\n\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { toastAnimationPresets } from \"./animations\";\nimport type {\n ToastContextValue,\n ToastInput,\n ToastProps,\n ToastProviderProps,\n ToastSectionProps,\n ToastViewportProps,\n} from \"./types\";\nimport { toastRootVariants, toastViewportVariants } from \"./variants\";\n\ntype InternalToast = Required<Pick<ToastInput, \"id\">> &\n Omit<ToastInput, \"id\"> & {\n durationMs: number;\n animation: NonNullable<ToastInput[\"animation\"]>;\n };\n\ntype ToastStoreContextValue = {\n toasts: InternalToast[];\n push: (input: ToastInput) => string;\n dismiss: (id: string) => void;\n};\n\nconst ToastStoreContext = createContext<ToastStoreContextValue | null>(null);\n\nlet toastDispatcher: ToastStoreContextValue[\"push\"] | null = null;\n\nexport function toast(input: ToastInput) {\n if (!toastDispatcher) {\n return \"\";\n }\n return toastDispatcher(input);\n}\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"useToast must be used within <ToastProvider>\");\n }\n return { toast: ctx.push, dismiss: ctx.dismiss };\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toasts, setToasts] = useState<InternalToast[]>([]);\n const timers = useRef<Map<string, number>>(new Map());\n\n const dismiss = useCallback((id: string) => {\n const timerId = timers.current.get(id);\n if (timerId) {\n window.clearTimeout(timerId);\n timers.current.delete(id);\n }\n setToasts((prev) => prev.filter((toastItem) => toastItem.id !== id));\n }, []);\n\n const push = useCallback(\n (input: ToastInput) => {\n const id = input.id ?? `toast-${Math.random().toString(16).slice(2)}`;\n const durationMs = input.durationMs ?? 4500;\n const record: InternalToast = {\n ...input,\n id,\n durationMs,\n animation: input.animation ?? \"slide\",\n };\n setToasts((prev) => [...prev, record]);\n const timerId = window.setTimeout(() => dismiss(id), durationMs);\n timers.current.set(id, timerId);\n return id;\n },\n [dismiss],\n );\n\n const ctx = useMemo(\n () => ({\n toasts,\n push,\n dismiss,\n }),\n [dismiss, push, toasts],\n );\n\n useEffect(() => {\n toastDispatcher = push;\n return () => {\n toastDispatcher = null;\n };\n }, [push]);\n\n return <ToastStoreContext.Provider value={ctx}>{children}</ToastStoreContext.Provider>;\n}\n\nToastProvider.displayName = \"ToastProvider\";\n\nexport function ToastViewport({ position = \"bottom-right\", className }: ToastViewportProps) {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"ToastViewport must be used within <ToastProvider>\");\n }\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n <div className={cn(toastViewportVariants({ position }), className)} data-slot=\"toast-viewport\">\n <AnimatePresence>\n {ctx.toasts.map((item) => (\n <Toast\n key={item.id}\n toastId={item.id}\n appearance={item.appearance}\n size={item.size}\n animation={item.animation}\n >\n <ToastTitle>{item.title}</ToastTitle>\n {item.description ? <ToastDescription>{item.description}</ToastDescription> : null}\n <ToastClose onClick={() => ctx.dismiss(item.id)} />\n </Toast>\n ))}\n </AnimatePresence>\n </div>,\n portalTarget,\n );\n}\n\nToastViewport.displayName = \"ToastViewport\";\n\nexport function Toast({ toastId: _toastId, appearance, size, animation = \"slide\", className, children }: ToastProps) {\n const motionProps = toastAnimationPresets[animation];\n const live = appearance === \"error\" ? \"assertive\" : \"polite\";\n\n return (\n <motion.div\n layout\n data-slot=\"toast\"\n role={appearance === \"error\" ? \"alert\" : \"status\"}\n aria-live={live}\n aria-atomic=\"true\"\n className={cn(\"relative\", toastRootVariants({ appearance, size }), className)}\n initial={animation === \"none\" ? false : motionProps.initial}\n animate={animation === \"none\" ? undefined : motionProps.animate}\n exit={animation === \"none\" ? undefined : motionProps.exit}\n transition={motionProps.transition}\n >\n {children}\n </motion.div>\n );\n}\n\nToast.displayName = \"Toast\";\n\nexport function ToastTitle({ className, children }: ToastSectionProps) {\n return <div data-slot=\"toast-title\" className={cn(\"font-semibold\", className)}>{children}</div>;\n}\n\nToastTitle.displayName = \"ToastTitle\";\n\nexport function ToastDescription({ className, children }: ToastSectionProps) {\n return (\n <div data-slot=\"toast-description\" className={cn(\"text-sm text-slate-300\", className)}>\n {children}\n </div>\n );\n}\n\nToastDescription.displayName = \"ToastDescription\";\n\nexport function ToastAction({ className, children }: ToastSectionProps) {\n return <div data-slot=\"toast-action\" className={cn(\"mt-3\", className)}>{children}</div>;\n}\n\nToastAction.displayName = \"ToastAction\";\n\nexport function ToastClose({ className, children, onClick, ...rest }: ToastSectionProps & { onClick?: () => void }) {\n return (\n <button\n type=\"button\"\n data-slot=\"toast-close\"\n aria-label=\"Dismiss notification\"\n className={cn(\n \"absolute right-3 top-3 inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10\",\n className,\n )}\n onClick={onClick}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nToastClose.displayName = \"ToastClose\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nexport type ToastAnimation = \"none\" | \"slide\" | \"fade\";\n\ntype ToastPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"exit\" | \"transition\"\n>;\n\nexport type ToastAnimationPresets = Record<ToastAnimation, ToastPresetMotionProps>;\n\nexport const toastAnimationPresets: ToastAnimationPresets = {\n none: {},\n slide: {\n initial: { opacity: 0, x: 24 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 16 },\n transition: { type: \"spring\", stiffness: 380, damping: 28 },\n },\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.18 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const toastViewportVariants = cva(\"fixed z-[60] flex max-h-screen flex-col gap-2 p-4\", {\n variants: {\n position: {\n \"top-left\": \"left-0 top-0 items-start\",\n \"top-center\": \"left-1/2 top-0 -translate-x-1/2 items-center\",\n \"top-right\": \"right-0 top-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n },\n },\n defaultVariants: {\n position: \"bottom-right\",\n },\n});\n\nexport const toastRootVariants = cva(\n \"pointer-events-auto w-[min(100vw-2rem,380px)] rounded-xl border border-white/10 bg-slate-950 p-4 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.45)]\",\n {\n variants: {\n appearance: {\n default: \"bg-slate-950\",\n success: \"border-emerald-500/40 bg-emerald-950\",\n warning: \"border-amber-500/40 bg-amber-950\",\n error: \"border-rose-500/50 bg-rose-950\",\n info: \"border-sky-500/40 bg-sky-950\",\n ghost: \"border-transparent bg-transparent text-slate-200\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n size: {\n sm: \"p-3 text-xs\",\n md: \"p-4 text-sm\",\n lg: \"p-5 text-base\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { useCallback, useState } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { toggleThumbAnimationPresets } from \"./animations\";\nimport type { ToggleProps } from \"./types\";\nimport { toggleThumbVariants, toggleTrackVariants } from \"./variants\";\n\nexport function Toggle(props: ToggleProps) {\n const {\n className,\n size,\n appearance,\n animation = \"spring\",\n checked,\n defaultChecked = false,\n onCheckedChange,\n disabled,\n ref,\n \"aria-label\": ariaLabel = \"Toggle\",\n children,\n ...rest\n } = props;\n const isControlled = checked !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultChecked);\n const resolved = isControlled ? Boolean(checked) : uncontrolled;\n const thumbMotion = toggleThumbAnimationPresets[animation];\n\n const setChecked = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolled(next);\n }\n onCheckedChange?.(next);\n },\n [isControlled, onCheckedChange],\n );\n\n const thumbShiftPx = size === \"sm\" ? 14 : size === \"lg\" ? 26 : 20;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n data-slot=\"toggle\"\n aria-checked={resolved}\n aria-label={ariaLabel}\n data-state={resolved ? \"checked\" : \"unchecked\"}\n disabled={disabled}\n className={cn(toggleTrackVariants({ size, appearance }), className)}\n onClick={() => {\n if (!disabled) {\n setChecked(!resolved);\n }\n }}\n {...rest}\n >\n <span className=\"sr-only\">{children}</span>\n <motion.span\n className={cn(toggleThumbVariants({ size }), \"absolute left-1 top-1/2 -translate-y-1/2\")}\n animate={{ x: resolved ? thumbShiftPx : 0 }}\n transition={thumbMotion.transition}\n />\n </button>\n );\n}\n\nToggle.displayName = \"Toggle\";\n\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nexport type ToggleAnimation = \"none\" | \"spring\";\n\ntype ToggleThumbPreset = Pick<HTMLMotionProps<\"span\">, \"transition\" | \"layout\">;\n\nexport type ToggleAnimationPresets = Record<ToggleAnimation, ToggleThumbPreset>;\n\nexport const toggleThumbAnimationPresets: ToggleAnimationPresets = {\n none: {},\n spring: {\n layout: true,\n transition: { type: \"spring\", stiffness: 520, damping: 32 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const toggleTrackVariants = cva(\n \"relative inline-flex shrink-0 cursor-pointer rounded-full border border-white/10 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950 data-[state=checked]:border-cyan-500/40 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n md: \"h-6 w-11\",\n lg: \"h-7 w-[3.25rem]\",\n },\n appearance: {\n default: \"data-[state=checked]:bg-cyan-600/80\",\n success: \"data-[state=checked]:border-emerald-500/40 data-[state=checked]:bg-emerald-600/80\",\n destructive: \"data-[state=checked]:border-rose-500/40 data-[state=checked]:bg-rose-600/80\",\n neutral: \"data-[state=checked]:border-slate-400/40 data-[state=checked]:bg-slate-600/90\",\n indigo: \"data-[state=checked]:border-indigo-500/40 data-[state=checked]:bg-indigo-600/80\",\n purple: \"data-[state=checked]:border-purple-500/40 data-[state=checked]:bg-purple-600/80\",\n pink: \"data-[state=checked]:border-pink-500/40 data-[state=checked]:bg-pink-600/80\",\n orange: \"data-[state=checked]:border-orange-500/40 data-[state=checked]:bg-orange-600/80\",\n yellow: \"data-[state=checked]:border-yellow-500/40 data-[state=checked]:bg-yellow-600/80\",\n green: \"data-[state=checked]:border-green-500/40 data-[state=checked]:bg-green-600/80\",\n teal: \"data-[state=checked]:border-teal-500/40 data-[state=checked]:bg-teal-600/80\",\n cyan: \"data-[state=checked]:border-cyan-500/40 data-[state=checked]:bg-cyan-600/80\",\n lime: \"data-[state=checked]:border-lime-500/40 data-[state=checked]:bg-lime-600/80\",\n emerald: \"data-[state=checked]:border-emerald-500/40 data-[state=checked]:bg-emerald-600/80\",\n rose: \"data-[state=checked]:border-rose-500/40 data-[state=checked]:bg-rose-600/80\",\n slate: \"data-[state=checked]:border-slate-400/40 data-[state=checked]:bg-slate-600/90\",\n zinc: \"data-[state=checked]:border-zinc-400/40 data-[state=checked]:bg-zinc-600/90\",\n gray: \"data-[state=checked]:border-gray-400/40 data-[state=checked]:bg-gray-600/90\",\n stone: \"data-[state=checked]:border-stone-400/40 data-[state=checked]:bg-stone-600/90\",\n \"gradient-blue\": \"data-[state=checked]:bg-linear-to-r from-blue-600 to-purple-600\",\n \"gradient-green\": \"data-[state=checked]:bg-linear-to-r from-green-600 to-lime-600\",\n \"gradient-red\": \"data-[state=checked]:bg-linear-to-r from-red-600 to-pink-600\",\n \"gradient-yellow\": \"data-[state=checked]:bg-linear-to-r from-yellow-600 to-orange-600\",\n \"gradient-purple\": \"data-[state=checked]:bg-linear-to-r from-purple-600 to-pink-600\",\n \"gradient-teal\": \"data-[state=checked]:bg-linear-to-r from-teal-600 to-cyan-600\",\n \"gradient-indigo\": \"data-[state=checked]:bg-linear-to-r from-indigo-600 to-purple-600\",\n \"gradient-pink\": \"data-[state=checked]:bg-linear-to-r from-pink-600 to-rose-600\",\n \"gradient-orange\": \"data-[state=checked]:bg-linear-to-r from-orange-600 to-red-600\",\n },\n },\n defaultVariants: {\n size: \"md\",\n appearance: \"default\",\n },\n },\n);\n\nexport const toggleThumbVariants = cva(\n \"pointer-events-none block rounded-full bg-white shadow-[0_1px_2px_rgba(15,23,42,0.35)] ring-0\",\n {\n variants: {\n size: {\n sm: \"size-4\",\n md: \"size-5\",\n lg: \"size-6\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n","\"use client\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type {\n TooltipProps,\n TooltipContextType,\n TooltipTriggerProps,\n TooltipContentProps,\n} from \"./types\";\n\nimport { createContext, useContext } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { tooltipVariants } from \"./variants\";\nimport { motion } from \"framer-motion\";\nimport { tooltipAnimationPresets } from \"./animation\";\n\nexport const TooltipContext = createContext<TooltipContextType | null>(null);\n\nexport const useTooltip = () => {\n const context = useContext(TooltipContext);\n if (!context) {\n throw new Error(\"Tooltip components must be used within Tooltip\");\n }\n return context;\n};\nexport const Tooltip = ({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n position = \"top\",\n delay = 100,\n}: TooltipProps) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const setOpen = useCallback(\n (value: boolean) => {\n if (!isControlled) setUncontrolledOpen(value);\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const showTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const cancelDelayedOpen = useCallback(() => {\n if (showTimeoutRef.current !== null) {\n clearTimeout(showTimeoutRef.current);\n showTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleDelayedOpen = useCallback(() => {\n cancelDelayedOpen();\n showTimeoutRef.current = setTimeout(() => {\n showTimeoutRef.current = null;\n setOpen(true);\n }, delay);\n }, [cancelDelayedOpen, delay, setOpen]);\n\n useEffect(() => () => cancelDelayedOpen(), [cancelDelayedOpen]);\n\n return (\n <TooltipContext.Provider\n value={{\n open,\n setOpen,\n position,\n delay,\n scheduleDelayedOpen,\n cancelDelayedOpen,\n }}\n >\n <div className=\"relative inline-block\">{children}</div>\n </TooltipContext.Provider>\n );\n};\n\nexport const TooltipTrigger = ({\n children,\n className,\n}: TooltipTriggerProps) => {\n const { setOpen, scheduleDelayedOpen, cancelDelayedOpen } = useTooltip();\n\n const triggerProps = {\n onMouseEnter: () => scheduleDelayedOpen(),\n onMouseLeave: () => {\n cancelDelayedOpen();\n setOpen(false);\n },\n onFocus: () => {\n cancelDelayedOpen();\n setOpen(true);\n },\n onBlur: () => {\n cancelDelayedOpen();\n setOpen(false);\n },\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === \"Escape\") {\n cancelDelayedOpen();\n setOpen(false);\n }\n },\n className,\n tabIndex: 0,\n };\n\n return <span {...triggerProps}>{children}</span>;\n};\n\nexport const TooltipContent = ({\n children,\n className,\n variant,\n size,\n width,\n animation = \"none\",\n}: TooltipContentProps) => {\n const { open, position } = useTooltip();\n\n if (!open) return null;\n\n const positionStyles = {\n top: \"bottom-full mb-2\",\n bottom: \"top-full mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n };\n\n const motionProps = tooltipAnimationPresets[animation];\n\n return (\n <motion.div\n data-open={open}\n role=\"tooltip\"\n {...motionProps}\n className={cn(\n tooltipVariants({ variant, size, width }),\n positionStyles[position],\n className,\n )}\n >\n {children}\n </motion.div>\n );\n};\n","import { cva } from \"class-variance-authority\"\n\nexport const tooltipVariants = cva(\n \"absolute z-50 rounded-md shadow-md transition-all duration-200 pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-black text-white\",\n outline: \"border bg-white text-black\",\n ghost: \"bg-gray-800 text-white/90\",\n glass: \"border border-white/15 bg-white/10 text-white backdrop-blur-md\",\n emerald: \"bg-emerald-600 text-white\",\n indigo: \"bg-indigo-600 text-white\",\n purple: \"bg-purple-600 text-white\",\n pink: \"bg-pink-600 text-white\",\n rose: \"bg-rose-600 text-white\",\n sky: \"bg-sky-600 text-white\",\n teal: \"bg-teal-600 text-white\",\n yellow: \"bg-yellow-600 text-white\",\n orange: \"bg-orange-600 text-white\",\n green: \"bg-green-600 text-white\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600 text-white\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600 text-white\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600 text-white\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600 text-white\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600 text-white\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600 text-white\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600 text-white\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600 text-white\",\n },\n size: {\n sm: \"text-xs px-2 py-1\",\n md: \"text-sm px-3 py-1.5\",\n lg: \"text-base px-4 py-2\",\n },\n width:{\n fit: \"min-w-75 md:min-w-fit\",\n xs: \"min-w-75 md:min-w-xs\",\n sm: \"min-w-75 md:min-w-sm\",\n md: \"min-w-75 md:min-w-md\",\n lg: \"min-w-75 md:min-w-lg\",\n xl: \"min-w-75 md:min-w-xl\",\n \"2xl\": \"min-w-75 md:min-w-2xl\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n width: \"xs\",\n },\n }\n)","import type { HTMLMotionProps } from \"framer-motion\";\nimport { TooltipAnimation } from \"./types\";\n\ntype TooltipPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"style\" | \"transition\"\n>;\n\nexport type TooltipAnimationPresets = Record<TooltipAnimation, TooltipPresetMotionProps>;\n\n/** Runs when TooltipContent mounts after open (e.g. trigger hover + delay), not viewport scroll. */\nexport const tooltipAnimationPresets: TooltipAnimationPresets = {\n none: {},\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { duration: 0.15, ease: \"easeOut\" },\n },\n scale: {\n initial: { opacity: 0, scale: 0.96 },\n animate: { opacity: 1, scale: 1 },\n transition: { duration: 0.15, ease: \"easeIn\" },\n },\n};\n"],"mappings":"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","names":["next","createContext","useContext","useMemo","motion","cva","jsx","createContext","useContext","useMemo","motion","motion","HiXMark","cva","jsx","jsxs","motion","HiXMark","motion","cva","jsx","className","appearance","size","children","ref","animation","rest","motionProps","motion","createContext","useContext","useMemo","motion","cva","jsx","createContext","useContext","useMemo","motion","motion","cva","jsx","jsxs","motion","motion","createContext","useCallback","useContext","useId","useMemo","useState","cva","jsx","jsxs","createContext","useContext","useState","useCallback","useId","useMemo","motion","createContext","useContext","useState","useRef","useEffect","cva","jsx","jsxs","createContext","useContext","useState","useRef","useEffect","createContext","useContext","useMemo","motion","cva","jsx","createContext","useContext","useMemo","motion","useId","motion","cva","jsx","jsxs","useId","className","appearance","size","animation","ring","ref","ariaInvalidProp","errorMessage","id","as","rest","controlId","errorId","motionProps","ariaInvalid","motion","AnimatePresence","motion","useReducedMotion","createContext","useCallback","useContext","useEffect","useId","useMemo","useRef","useState","createPortal","cva","jsx","jsxs","createContext","useContext","FOCUSABLE_SELECTOR","useBodyScrollLock","useEffect","useState","useCallback","useId","useRef","useMemo","useReducedMotion","createPortal","AnimatePresence","motion","useCallback","useId","useCallback","useMemo","useState","useState","useCallback","useMemo","cva","jsx","jsxs","Pagination","useId","useCallback","createContext","useContext","useMemo","motion","cva","Fragment","jsx","createContext","useContext","useMemo","motion","range","useState","useEffect","useCallback","useRef","createContext","useContext","cva","jsx","jsxs","createContext","useContext","useState","useRef","useEffect","useCallback","createContext","useContext","useMemo","motion","cva","jsx","jsxs","createContext","useContext","useMemo","motion","motion","cva","jsx","motion","createContext","useContext","useMemo","motion","cva","jsx","createContext","useContext","useMemo","motion","motion","useReducedMotion","createContext","useContext","useId","useState","cva","jsx","createContext","useContext","useState","useId","useReducedMotion","motion","AnimatePresence","motion","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","createPortal","cva","jsx","jsxs","createContext","useContext","useState","useRef","useCallback","useMemo","useEffect","createPortal","AnimatePresence","motion","motion","useCallback","useState","cva","jsx","jsxs","useState","useCallback","motion","useCallback","useEffect","useRef","useState","createContext","useContext","cva","motion","jsx","createContext","useContext","useState","useCallback","useRef","useEffect","motion"]}