@ginia/ui 0.1.1 → 0.1.3

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 (273) hide show
  1. package/dist/components/domain/resume/resume-editor/resume-editor.cjs +13 -5
  2. package/dist/components/domain/resume/resume-editor/resume-editor.cjs.map +1 -1
  3. package/dist/components/domain/resume/resume-editor/resume-editor.d.cts +1 -1
  4. package/dist/components/domain/resume/resume-editor/resume-editor.d.ts +1 -1
  5. package/dist/components/domain/resume/resume-editor/resume-editor.js +19 -6
  6. package/dist/components/domain/resume/resume-editor/resume-editor.js.map +1 -1
  7. package/dist/components/domain/resume/resume-editor/sections/academic-info.cjs +1 -1
  8. package/dist/components/domain/resume/resume-editor/sections/academic-info.cjs.map +1 -1
  9. package/dist/components/domain/resume/resume-editor/sections/academic-info.js +1 -1
  10. package/dist/components/domain/resume/resume-editor/sections/academic-info.js.map +1 -1
  11. package/dist/components/domain/resume/resume-editor/sections/activities.cjs +25 -11
  12. package/dist/components/domain/resume/resume-editor/sections/activities.cjs.map +1 -1
  13. package/dist/components/domain/resume/resume-editor/sections/activities.js +25 -11
  14. package/dist/components/domain/resume/resume-editor/sections/activities.js.map +1 -1
  15. package/dist/components/domain/resume/resume-editor/sections/certifications.cjs +27 -12
  16. package/dist/components/domain/resume/resume-editor/sections/certifications.cjs.map +1 -1
  17. package/dist/components/domain/resume/resume-editor/sections/certifications.js +27 -12
  18. package/dist/components/domain/resume/resume-editor/sections/certifications.js.map +1 -1
  19. package/dist/components/domain/resume/resume-editor/sections/education.cjs +25 -11
  20. package/dist/components/domain/resume/resume-editor/sections/education.cjs.map +1 -1
  21. package/dist/components/domain/resume/resume-editor/sections/education.js +25 -11
  22. package/dist/components/domain/resume/resume-editor/sections/education.js.map +1 -1
  23. package/dist/components/domain/resume/resume-editor/sections/experience.cjs +25 -11
  24. package/dist/components/domain/resume/resume-editor/sections/experience.cjs.map +1 -1
  25. package/dist/components/domain/resume/resume-editor/sections/experience.js +25 -11
  26. package/dist/components/domain/resume/resume-editor/sections/experience.js.map +1 -1
  27. package/dist/components/domain/resume/resume-editor/sections/personal-info.cjs +1 -1
  28. package/dist/components/domain/resume/resume-editor/sections/personal-info.cjs.map +1 -1
  29. package/dist/components/domain/resume/resume-editor/sections/personal-info.js +1 -1
  30. package/dist/components/domain/resume/resume-editor/sections/personal-info.js.map +1 -1
  31. package/dist/components/domain/resume/resume-editor/sections/preferences.cjs +2 -2
  32. package/dist/components/domain/resume/resume-editor/sections/preferences.cjs.map +1 -1
  33. package/dist/components/domain/resume/resume-editor/sections/preferences.js +2 -2
  34. package/dist/components/domain/resume/resume-editor/sections/preferences.js.map +1 -1
  35. package/dist/components/domain/resume/resume-editor/sections/requirements.cjs +19 -11
  36. package/dist/components/domain/resume/resume-editor/sections/requirements.cjs.map +1 -1
  37. package/dist/components/domain/resume/resume-editor/sections/requirements.js +29 -12
  38. package/dist/components/domain/resume/resume-editor/sections/requirements.js.map +1 -1
  39. package/dist/components/domain/resume/resume-editor/sections/skills.cjs +30 -10
  40. package/dist/components/domain/resume/resume-editor/sections/skills.cjs.map +1 -1
  41. package/dist/components/domain/resume/resume-editor/sections/skills.js +30 -10
  42. package/dist/components/domain/resume/resume-editor/sections/skills.js.map +1 -1
  43. package/dist/components/domain/resume/resume-preview/resume-preview.cjs +27 -11
  44. package/dist/components/domain/resume/resume-preview/resume-preview.cjs.map +1 -1
  45. package/dist/components/domain/resume/resume-preview/resume-preview.js +27 -11
  46. package/dist/components/domain/resume/resume-preview/resume-preview.js.map +1 -1
  47. package/dist/components/domain/resume/resume-preview/sections/contact-skills.cjs +31 -15
  48. package/dist/components/domain/resume/resume-preview/sections/contact-skills.cjs.map +1 -1
  49. package/dist/components/domain/resume/resume-preview/sections/contact-skills.js +31 -15
  50. package/dist/components/domain/resume/resume-preview/sections/contact-skills.js.map +1 -1
  51. package/dist/components/domain/resume/resume-preview/sections/experience-education.cjs +131 -73
  52. package/dist/components/domain/resume/resume-preview/sections/experience-education.cjs.map +1 -1
  53. package/dist/components/domain/resume/resume-preview/sections/experience-education.d.cts +1 -1
  54. package/dist/components/domain/resume/resume-preview/sections/experience-education.d.ts +1 -1
  55. package/dist/components/domain/resume/resume-preview/sections/experience-education.js +131 -73
  56. package/dist/components/domain/resume/resume-preview/sections/experience-education.js.map +1 -1
  57. package/dist/components/domain/resume/resume-preview/sections/footer-preview.cjs +2 -2
  58. package/dist/components/domain/resume/resume-preview/sections/footer-preview.cjs.map +1 -1
  59. package/dist/components/domain/resume/resume-preview/sections/footer-preview.js +2 -2
  60. package/dist/components/domain/resume/resume-preview/sections/footer-preview.js.map +1 -1
  61. package/dist/components/domain/resume/resume-preview/sections/header-preview.cjs +7 -7
  62. package/dist/components/domain/resume/resume-preview/sections/header-preview.cjs.map +1 -1
  63. package/dist/components/domain/resume/resume-preview/sections/header-preview.js +7 -7
  64. package/dist/components/domain/resume/resume-preview/sections/header-preview.js.map +1 -1
  65. package/dist/components/domain/resume/resume.cjs +46 -29
  66. package/dist/components/domain/resume/resume.cjs.map +1 -1
  67. package/dist/components/domain/resume/resume.js +46 -29
  68. package/dist/components/domain/resume/resume.js.map +1 -1
  69. package/dist/components/ui/accordion/accordion.cjs +1 -3
  70. package/dist/components/ui/accordion/accordion.cjs.map +1 -1
  71. package/dist/components/ui/accordion/accordion.js +1 -3
  72. package/dist/components/ui/accordion/accordion.js.map +1 -1
  73. package/dist/components/ui/alert/alert.cjs +12 -25
  74. package/dist/components/ui/alert/alert.cjs.map +1 -1
  75. package/dist/components/ui/alert/alert.js +12 -25
  76. package/dist/components/ui/alert/alert.js.map +1 -1
  77. package/dist/components/ui/alert-dialog/alert-dialog.cjs +12 -46
  78. package/dist/components/ui/alert-dialog/alert-dialog.cjs.map +1 -1
  79. package/dist/components/ui/alert-dialog/alert-dialog.js +12 -46
  80. package/dist/components/ui/alert-dialog/alert-dialog.js.map +1 -1
  81. package/dist/components/ui/autocomplete/autocomplete.cjs +12 -12
  82. package/dist/components/ui/autocomplete/autocomplete.cjs.map +1 -1
  83. package/dist/components/ui/autocomplete/autocomplete.js +12 -12
  84. package/dist/components/ui/autocomplete/autocomplete.js.map +1 -1
  85. package/dist/components/ui/avatar/avatar.cjs +1 -4
  86. package/dist/components/ui/avatar/avatar.cjs.map +1 -1
  87. package/dist/components/ui/avatar/avatar.js +1 -4
  88. package/dist/components/ui/avatar/avatar.js.map +1 -1
  89. package/dist/components/ui/badge/badge.cjs +1 -8
  90. package/dist/components/ui/badge/badge.cjs.map +1 -1
  91. package/dist/components/ui/badge/badge.js +1 -8
  92. package/dist/components/ui/badge/badge.js.map +1 -1
  93. package/dist/components/ui/breadcrumb/breadcrumb.cjs +6 -19
  94. package/dist/components/ui/breadcrumb/breadcrumb.cjs.map +1 -1
  95. package/dist/components/ui/breadcrumb/breadcrumb.js +6 -19
  96. package/dist/components/ui/breadcrumb/breadcrumb.js.map +1 -1
  97. package/dist/components/ui/button/button.cjs.map +1 -1
  98. package/dist/components/ui/button/button.js.map +1 -1
  99. package/dist/components/ui/calendar/calendar.cjs +1 -6
  100. package/dist/components/ui/calendar/calendar.cjs.map +1 -1
  101. package/dist/components/ui/calendar/calendar.js +1 -6
  102. package/dist/components/ui/calendar/calendar.js.map +1 -1
  103. package/dist/components/ui/card/card.cjs +7 -17
  104. package/dist/components/ui/card/card.cjs.map +1 -1
  105. package/dist/components/ui/card/card.js +7 -17
  106. package/dist/components/ui/card/card.js.map +1 -1
  107. package/dist/components/ui/carousel/carousel.cjs +4 -11
  108. package/dist/components/ui/carousel/carousel.cjs.map +1 -1
  109. package/dist/components/ui/carousel/carousel.js +4 -11
  110. package/dist/components/ui/carousel/carousel.js.map +1 -1
  111. package/dist/components/ui/checkbox/checkbox.cjs +1 -7
  112. package/dist/components/ui/checkbox/checkbox.cjs.map +1 -1
  113. package/dist/components/ui/checkbox/checkbox.js +1 -7
  114. package/dist/components/ui/checkbox/checkbox.js.map +1 -1
  115. package/dist/components/ui/collapsible/collapsible.cjs.map +1 -1
  116. package/dist/components/ui/collapsible/collapsible.js.map +1 -1
  117. package/dist/components/ui/combobox/combobox.cjs +1 -3
  118. package/dist/components/ui/combobox/combobox.cjs.map +1 -1
  119. package/dist/components/ui/combobox/combobox.js +1 -3
  120. package/dist/components/ui/combobox/combobox.js.map +1 -1
  121. package/dist/components/ui/command/command.cjs +7 -24
  122. package/dist/components/ui/command/command.cjs.map +1 -1
  123. package/dist/components/ui/command/command.js +7 -24
  124. package/dist/components/ui/command/command.js.map +1 -1
  125. package/dist/components/ui/context-menu/context-menu.cjs +4 -18
  126. package/dist/components/ui/context-menu/context-menu.cjs.map +1 -1
  127. package/dist/components/ui/context-menu/context-menu.js +4 -18
  128. package/dist/components/ui/context-menu/context-menu.js.map +1 -1
  129. package/dist/components/ui/date-picker/date-picker.cjs +21 -57
  130. package/dist/components/ui/date-picker/date-picker.cjs.map +1 -1
  131. package/dist/components/ui/date-picker/date-picker.js +22 -62
  132. package/dist/components/ui/date-picker/date-picker.js.map +1 -1
  133. package/dist/components/ui/dialog/dialog.cjs +12 -29
  134. package/dist/components/ui/dialog/dialog.cjs.map +1 -1
  135. package/dist/components/ui/dialog/dialog.js +12 -29
  136. package/dist/components/ui/dialog/dialog.js.map +1 -1
  137. package/dist/components/ui/drawer/drawer.cjs +9 -23
  138. package/dist/components/ui/drawer/drawer.cjs.map +1 -1
  139. package/dist/components/ui/drawer/drawer.js +9 -23
  140. package/dist/components/ui/drawer/drawer.js.map +1 -1
  141. package/dist/components/ui/dropdown-menu/dropdown-menu.cjs +3 -16
  142. package/dist/components/ui/dropdown-menu/dropdown-menu.cjs.map +1 -1
  143. package/dist/components/ui/dropdown-menu/dropdown-menu.js +3 -16
  144. package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +1 -1
  145. package/dist/components/ui/form/form.cjs +7 -24
  146. package/dist/components/ui/form/form.cjs.map +1 -1
  147. package/dist/components/ui/form/form.js +7 -24
  148. package/dist/components/ui/form/form.js.map +1 -1
  149. package/dist/components/ui/hover-card/hover-card.cjs +2 -6
  150. package/dist/components/ui/hover-card/hover-card.cjs.map +1 -1
  151. package/dist/components/ui/hover-card/hover-card.js +2 -6
  152. package/dist/components/ui/hover-card/hover-card.js.map +1 -1
  153. package/dist/components/ui/icon/icon.cjs +1 -1
  154. package/dist/components/ui/icon/icon.cjs.map +1 -1
  155. package/dist/components/ui/icon/icon.js +1 -1
  156. package/dist/components/ui/icon/icon.js.map +1 -1
  157. package/dist/components/ui/input/input.cjs +1 -1
  158. package/dist/components/ui/input/input.cjs.map +1 -1
  159. package/dist/components/ui/input/input.js +1 -1
  160. package/dist/components/ui/input/input.js.map +1 -1
  161. package/dist/components/ui/input-field/input-field.cjs +1 -1
  162. package/dist/components/ui/input-field/input-field.cjs.map +1 -1
  163. package/dist/components/ui/input-field/input-field.js +1 -1
  164. package/dist/components/ui/input-field/input-field.js.map +1 -1
  165. package/dist/components/ui/input-otp/input-otp.cjs +5 -15
  166. package/dist/components/ui/input-otp/input-otp.cjs.map +1 -1
  167. package/dist/components/ui/input-otp/input-otp.js +5 -15
  168. package/dist/components/ui/input-otp/input-otp.js.map +1 -1
  169. package/dist/components/ui/label/label.cjs +2 -5
  170. package/dist/components/ui/label/label.cjs.map +1 -1
  171. package/dist/components/ui/label/label.js +2 -5
  172. package/dist/components/ui/label/label.js.map +1 -1
  173. package/dist/components/ui/loading-state/loading-state.cjs +3 -8
  174. package/dist/components/ui/loading-state/loading-state.cjs.map +1 -1
  175. package/dist/components/ui/loading-state/loading-state.d.cts +1 -1
  176. package/dist/components/ui/loading-state/loading-state.d.ts +1 -1
  177. package/dist/components/ui/loading-state/loading-state.js +3 -8
  178. package/dist/components/ui/loading-state/loading-state.js.map +1 -1
  179. package/dist/components/ui/menubar/menubar.cjs +5 -21
  180. package/dist/components/ui/menubar/menubar.cjs.map +1 -1
  181. package/dist/components/ui/menubar/menubar.js +5 -21
  182. package/dist/components/ui/menubar/menubar.js.map +1 -1
  183. package/dist/components/ui/month-year-picker/month-year-picker.cjs +5 -23
  184. package/dist/components/ui/month-year-picker/month-year-picker.cjs.map +1 -1
  185. package/dist/components/ui/month-year-picker/month-year-picker.js +6 -28
  186. package/dist/components/ui/month-year-picker/month-year-picker.js.map +1 -1
  187. package/dist/components/ui/multi-select/multi-select.cjs +12 -29
  188. package/dist/components/ui/multi-select/multi-select.cjs.map +1 -1
  189. package/dist/components/ui/multi-select/multi-select.js +12 -29
  190. package/dist/components/ui/multi-select/multi-select.js.map +1 -1
  191. package/dist/components/ui/navigation-menu/navigation-menu.cjs +7 -13
  192. package/dist/components/ui/navigation-menu/navigation-menu.cjs.map +1 -1
  193. package/dist/components/ui/navigation-menu/navigation-menu.js +7 -13
  194. package/dist/components/ui/navigation-menu/navigation-menu.js.map +1 -1
  195. package/dist/components/ui/pagination/pagination.cjs +4 -18
  196. package/dist/components/ui/pagination/pagination.cjs.map +1 -1
  197. package/dist/components/ui/pagination/pagination.js +4 -18
  198. package/dist/components/ui/pagination/pagination.js.map +1 -1
  199. package/dist/components/ui/popover/popover.cjs.map +1 -1
  200. package/dist/components/ui/popover/popover.js.map +1 -1
  201. package/dist/components/ui/progress/progress.cjs +2 -2
  202. package/dist/components/ui/progress/progress.cjs.map +1 -1
  203. package/dist/components/ui/progress/progress.js +2 -2
  204. package/dist/components/ui/progress/progress.js.map +1 -1
  205. package/dist/components/ui/radio-group/radio-group.cjs +1 -8
  206. package/dist/components/ui/radio-group/radio-group.cjs.map +1 -1
  207. package/dist/components/ui/radio-group/radio-group.js +1 -8
  208. package/dist/components/ui/radio-group/radio-group.js.map +1 -1
  209. package/dist/components/ui/resizable/resizable.cjs +3 -6
  210. package/dist/components/ui/resizable/resizable.cjs.map +1 -1
  211. package/dist/components/ui/resizable/resizable.js +4 -11
  212. package/dist/components/ui/resizable/resizable.js.map +1 -1
  213. package/dist/components/ui/rich-text-editor/rich-text-editor.cjs +25 -37
  214. package/dist/components/ui/rich-text-editor/rich-text-editor.cjs.map +1 -1
  215. package/dist/components/ui/rich-text-editor/rich-text-editor.js +25 -37
  216. package/dist/components/ui/rich-text-editor/rich-text-editor.js.map +1 -1
  217. package/dist/components/ui/scroll-area/scroll-area.cjs.map +1 -1
  218. package/dist/components/ui/scroll-area/scroll-area.js.map +1 -1
  219. package/dist/components/ui/section-loader/section-loader.cjs +4 -15
  220. package/dist/components/ui/section-loader/section-loader.cjs.map +1 -1
  221. package/dist/components/ui/section-loader/section-loader.js +4 -15
  222. package/dist/components/ui/section-loader/section-loader.js.map +1 -1
  223. package/dist/components/ui/select/select.cjs +11 -29
  224. package/dist/components/ui/select/select.cjs.map +1 -1
  225. package/dist/components/ui/select/select.js +11 -29
  226. package/dist/components/ui/select/select.js.map +1 -1
  227. package/dist/components/ui/separator/separator.cjs +14 -16
  228. package/dist/components/ui/separator/separator.cjs.map +1 -1
  229. package/dist/components/ui/separator/separator.js +14 -16
  230. package/dist/components/ui/separator/separator.js.map +1 -1
  231. package/dist/components/ui/sheet/sheet.cjs +10 -24
  232. package/dist/components/ui/sheet/sheet.cjs.map +1 -1
  233. package/dist/components/ui/sheet/sheet.js +10 -24
  234. package/dist/components/ui/sheet/sheet.js.map +1 -1
  235. package/dist/components/ui/skeleton/skeleton.cjs +2 -11
  236. package/dist/components/ui/skeleton/skeleton.cjs.map +1 -1
  237. package/dist/components/ui/skeleton/skeleton.js +2 -11
  238. package/dist/components/ui/skeleton/skeleton.js.map +1 -1
  239. package/dist/components/ui/slider/slider.cjs +1 -4
  240. package/dist/components/ui/slider/slider.cjs.map +1 -1
  241. package/dist/components/ui/slider/slider.js +1 -4
  242. package/dist/components/ui/slider/slider.js.map +1 -1
  243. package/dist/components/ui/sonner/sonner.cjs.map +1 -1
  244. package/dist/components/ui/sonner/sonner.js.map +1 -1
  245. package/dist/components/ui/spinner/spinner.cjs +1 -1
  246. package/dist/components/ui/spinner/spinner.cjs.map +1 -1
  247. package/dist/components/ui/spinner/spinner.js +1 -1
  248. package/dist/components/ui/spinner/spinner.js.map +1 -1
  249. package/dist/components/ui/switch/switch.cjs.map +1 -1
  250. package/dist/components/ui/switch/switch.js.map +1 -1
  251. package/dist/components/ui/table/table.cjs +6 -28
  252. package/dist/components/ui/table/table.cjs.map +1 -1
  253. package/dist/components/ui/table/table.js +6 -28
  254. package/dist/components/ui/table/table.js.map +1 -1
  255. package/dist/components/ui/tabs/tabs.cjs.map +1 -1
  256. package/dist/components/ui/tabs/tabs.js.map +1 -1
  257. package/dist/components/ui/textarea/textarea.cjs +1 -4
  258. package/dist/components/ui/textarea/textarea.cjs.map +1 -1
  259. package/dist/components/ui/textarea/textarea.js +1 -4
  260. package/dist/components/ui/textarea/textarea.js.map +1 -1
  261. package/dist/components/ui/toast/toast.cjs +3 -12
  262. package/dist/components/ui/toast/toast.cjs.map +1 -1
  263. package/dist/components/ui/toast/toast.js +3 -12
  264. package/dist/components/ui/toast/toast.js.map +1 -1
  265. package/dist/components/ui/toggle/toggle.cjs.map +1 -1
  266. package/dist/components/ui/toggle/toggle.js.map +1 -1
  267. package/dist/components/ui/toggle-group/toggle-group.cjs +1 -4
  268. package/dist/components/ui/toggle-group/toggle-group.cjs.map +1 -1
  269. package/dist/components/ui/toggle-group/toggle-group.js +1 -4
  270. package/dist/components/ui/toggle-group/toggle-group.js.map +1 -1
  271. package/dist/components/ui/tooltip/tooltip.cjs.map +1 -1
  272. package/dist/components/ui/tooltip/tooltip.js.map +1 -1
  273. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ui/month-year-picker/month-year-picker.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport { es } from \"date-fns/locale\";\nimport {\n Calendar as CalendarIcon,\n ChevronLeft,\n ChevronRight,\n} from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { Button } from \"../button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\n\nexport interface MonthYearPickerProps {\n value?: Date;\n onChange?: (date: Date | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst monthNames = [\n \"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\",\n \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\",\n];\n\nfunction MonthYearPicker({\n value,\n onChange,\n placeholder = \"Seleccionar mes y año\",\n disabled = false,\n className,\n}: MonthYearPickerProps) {\n const [open, setOpen] = React.useState(false);\n const [currentYear, setCurrentYear] = React.useState(() => {\n return value ? value.getFullYear() : new Date().getFullYear();\n });\n\n React.useEffect(() => {\n if (value) {\n setCurrentYear(value.getFullYear());\n }\n }, [value]);\n\n const handleMonthSelect = (monthIndex: number) => {\n const selectedDate = new Date(currentYear, monthIndex, 1);\n onChange?.(selectedDate);\n setOpen(false);\n };\n\n const goToPreviousYear = () => {\n setCurrentYear((prev) => prev - 1);\n };\n\n const goToNextYear = () => {\n setCurrentYear((prev) => prev + 1);\n };\n\n const isSelected = (monthIndex: number) => {\n if (!value) return false;\n return (\n value.getFullYear() === currentYear && value.getMonth() === monthIndex\n );\n };\n\n const isCurrentMonth = (monthIndex: number) => {\n const now = new Date();\n return now.getFullYear() === currentYear && now.getMonth() === monthIndex;\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n data-slot=\"month-year-picker\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !value && \"text-muted-foreground\",\n className\n )}\n disabled={disabled}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {value\n ? format(value, \"MMMM yyyy\", { locale: es })\n : placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"p-3\">\n <div className=\"flex items-center justify-between mb-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={goToPreviousYear}\n className=\"h-7 w-7 p-0\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <div className=\"font-medium text-sm\">{currentYear}</div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={goToNextYear}\n className=\"h-7 w-7 p-0\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"grid grid-cols-3 gap-2\">\n {monthNames.map((month, index) => (\n <Button\n key={index}\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-9 px-3 font-normal text-sm\",\n isSelected(index) &&\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n isCurrentMonth(index) &&\n !isSelected(index) &&\n \"bg-accent text-accent-foreground\",\n \"hover:bg-muted\"\n )}\n onClick={() => handleMonthSelect(index)}\n >\n {month}\n </Button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { MonthYearPicker };\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/ui/month-year-picker/month-year-picker.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport { es } from \"date-fns/locale\";\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { Button } from \"../button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\n\nexport interface MonthYearPickerProps {\n value?: Date;\n onChange?: (date: Date | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst monthNames = [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\",\n];\n\nfunction MonthYearPicker({\n value,\n onChange,\n placeholder = \"Seleccionar mes y año\",\n disabled = false,\n className,\n}: MonthYearPickerProps) {\n const [open, setOpen] = React.useState(false);\n const [currentYear, setCurrentYear] = React.useState(() => {\n return value ? value.getFullYear() : new Date().getFullYear();\n });\n\n React.useEffect(() => {\n if (value) {\n setCurrentYear(value.getFullYear());\n }\n }, [value]);\n\n const handleMonthSelect = (monthIndex: number) => {\n const selectedDate = new Date(currentYear, monthIndex, 1);\n onChange?.(selectedDate);\n setOpen(false);\n };\n\n const goToPreviousYear = () => {\n setCurrentYear((prev) => prev - 1);\n };\n\n const goToNextYear = () => {\n setCurrentYear((prev) => prev + 1);\n };\n\n const isSelected = (monthIndex: number) => {\n if (!value) return false;\n return value.getFullYear() === currentYear && value.getMonth() === monthIndex;\n };\n\n const isCurrentMonth = (monthIndex: number) => {\n const now = new Date();\n return now.getFullYear() === currentYear && now.getMonth() === monthIndex;\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n data-slot=\"month-year-picker\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !value && \"text-muted-foreground\",\n className,\n )}\n disabled={disabled}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {value ? format(value, \"MMMM yyyy\", { locale: es }) : placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"p-3\">\n <div className=\"mb-4 flex items-center justify-between\">\n <Button variant=\"outline\" size=\"sm\" onClick={goToPreviousYear} className=\"h-7 w-7 p-0\">\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <div className=\"text-sm font-medium\">{currentYear}</div>\n <Button variant=\"outline\" size=\"sm\" onClick={goToNextYear} className=\"h-7 w-7 p-0\">\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"grid grid-cols-3 gap-2\">\n {monthNames.map((month, index) => (\n <Button\n key={index}\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-9 px-3 text-sm font-normal\",\n isSelected(index) &&\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n isCurrentMonth(index) && !isSelected(index) && \"bg-accent text-accent-foreground\",\n \"hover:bg-muted\",\n )}\n onClick={() => handleMonthSelect(index)}\n >\n {month}\n </Button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { MonthYearPicker };\n"],"mappings":"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","names":[]}
@@ -50,9 +50,7 @@ function MultiSelect({
50
50
  maxDisplay = 3
51
51
  }) {
52
52
  const [open, setOpen] = React.useState(false);
53
- const selectedOptions = options.filter(
54
- (option) => value.includes(option.value)
55
- );
53
+ const selectedOptions = options.filter((option) => value.includes(option.value));
56
54
  const handleSelect = (optionValue) => {
57
55
  const newValue = value.includes(optionValue) ? value.filter((v) => v !== optionValue) : [...value, optionValue];
58
56
  onValueChange(newValue);
@@ -74,7 +72,7 @@ function MultiSelect({
74
72
  import_badge.Badge,
75
73
  {
76
74
  variant: option.variant || "secondary",
77
- className: "text-xs px-2 py-0.5 h-auto",
75
+ className: "h-auto px-2 py-0.5 text-xs",
78
76
  children: [
79
77
  option.label,
80
78
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -107,21 +105,15 @@ function MultiSelect({
107
105
  "aria-expanded": open,
108
106
  "data-slot": "multi-select",
109
107
  className: (0, import_utils.cn)(
110
- "w-full justify-between min-h-[2.5rem] h-auto py-2 hover:bg-muted hover:text-foreground",
108
+ "h-auto min-h-[2.5rem] w-full justify-between py-2 hover:bg-muted hover:text-foreground",
111
109
  selectedOptions.length === 0 && "text-muted-foreground",
112
110
  className
113
111
  ),
114
112
  disabled,
115
113
  children: [
116
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex-1 text-left overflow-hidden", children: displayText() }),
117
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-1 ml-2", children: [
118
- selectedOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
119
- import_lucide_react.X,
120
- {
121
- className: "h-4 w-4 shrink-0 opacity-50 hover:opacity-100",
122
- onClick: handleClear
123
- }
124
- ),
114
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex-1 overflow-hidden text-left", children: displayText() }),
115
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "ml-2 flex items-center gap-1", children: [
116
+ selectedOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.X, { className: "h-4 w-4 shrink-0 opacity-50 hover:opacity-100", onClick: handleClear }),
125
117
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, { className: "h-4 w-4 shrink-0 opacity-50" })
126
118
  ] })
127
119
  ]
@@ -132,7 +124,7 @@ function MultiSelect({
132
124
  "div",
133
125
  {
134
126
  className: (0, import_utils.cn)(
135
- "flex items-center space-x-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer hover:bg-muted transition-colors",
127
+ "flex cursor-pointer items-center space-x-2 rounded-sm px-2 py-1.5 text-sm transition-colors hover:bg-muted",
136
128
  value.includes(option.value) && "bg-muted/50 font-medium"
137
129
  ),
138
130
  onClick: () => handleSelect(option.value),
@@ -149,20 +141,11 @@ function MultiSelect({
149
141
  },
150
142
  option.value
151
143
  )) }) }),
152
- selectedOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "border-t p-2", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
153
- import_button.Button,
154
- {
155
- variant: "ghost",
156
- size: "sm",
157
- onClick: handleClear,
158
- className: "w-full text-xs",
159
- children: [
160
- "Clear all (",
161
- selectedOptions.length,
162
- ")"
163
- ]
164
- }
165
- ) })
144
+ selectedOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "border-t p-2", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_button.Button, { variant: "ghost", size: "sm", onClick: handleClear, className: "w-full text-xs", children: [
145
+ "Clear all (",
146
+ selectedOptions.length,
147
+ ")"
148
+ ] }) })
166
149
  ] })
167
150
  ] });
168
151
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ui/multi-select/multi-select.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDown, X } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { Button } from \"../button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { Badge } from \"../badge\";\nimport { Checkbox } from \"../checkbox\";\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\";\n}\n\ninterface MultiSelectProps {\n options: MultiSelectOption[];\n value: string[];\n onValueChange: (value: string[]) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n maxDisplay?: number;\n}\n\nfunction MultiSelect({\n options,\n value,\n onValueChange,\n placeholder = \"Select options...\",\n className,\n disabled = false,\n maxDisplay = 3,\n}: MultiSelectProps) {\n const [open, setOpen] = React.useState(false);\n\n const selectedOptions = options.filter((option) =>\n value.includes(option.value)\n );\n\n const handleSelect = (optionValue: string) => {\n const newValue = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n onValueChange(newValue);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onValueChange([]);\n };\n\n const handleRemoveItem = (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation();\n onValueChange(value.filter((v) => v !== optionValue));\n };\n\n const displayText = () => {\n if (selectedOptions.length === 0) {\n return placeholder;\n }\n\n if (selectedOptions.length <= maxDisplay) {\n return (\n <div className=\"flex flex-wrap gap-1\">\n {selectedOptions.map((option) => (\n <Badge\n key={option.value}\n variant={option.variant || \"secondary\"}\n className=\"text-xs px-2 py-0.5 h-auto\"\n >\n {option.label}\n <X\n className=\"ml-1 h-3 w-3 cursor-pointer hover:text-destructive\"\n onClick={(e) => handleRemoveItem(option.value, e)}\n />\n </Badge>\n ))}\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center gap-1\">\n <Badge variant=\"secondary\" className=\"text-xs\">\n {selectedOptions[0].label}\n </Badge>\n <span className=\"text-sm text-muted-foreground\">\n +{selectedOptions.length - 1} more\n </span>\n </div>\n );\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n data-slot=\"multi-select\"\n className={cn(\n \"w-full justify-between min-h-[2.5rem] h-auto py-2 hover:bg-muted hover:text-foreground\",\n selectedOptions.length === 0 && \"text-muted-foreground\",\n className\n )}\n disabled={disabled}\n >\n <div className=\"flex-1 text-left overflow-hidden\">\n {displayText()}\n </div>\n <div className=\"flex items-center gap-1 ml-2\">\n {selectedOptions.length > 0 && (\n <X\n className=\"h-4 w-4 shrink-0 opacity-50 hover:opacity-100\"\n onClick={handleClear}\n />\n )}\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\" align=\"start\">\n <div className=\"max-h-60 overflow-auto\">\n {options.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n No options available\n </div>\n ) : (\n <div className=\"p-1\">\n {options.map((option) => (\n <div\n key={option.value}\n className={cn(\n \"flex items-center space-x-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer hover:bg-muted transition-colors\",\n value.includes(option.value) && \"bg-muted/50 font-medium\"\n )}\n onClick={() => handleSelect(option.value)}\n >\n <Checkbox\n checked={value.includes(option.value)}\n className=\"pointer-events-none text-primary\"\n />\n <span>{option.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n {selectedOptions.length > 0 && (\n <div className=\"border-t p-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClear}\n className=\"w-full text-xs\"\n >\n Clear all ({selectedOptions.length})\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { MultiSelect };\nexport type { MultiSelectProps };\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/ui/multi-select/multi-select.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDown, X } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { Button } from \"../button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { Badge } from \"../badge\";\nimport { Checkbox } from \"../checkbox\";\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\";\n}\n\ninterface MultiSelectProps {\n options: MultiSelectOption[];\n value: string[];\n onValueChange: (value: string[]) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n maxDisplay?: number;\n}\n\nfunction MultiSelect({\n options,\n value,\n onValueChange,\n placeholder = \"Select options...\",\n className,\n disabled = false,\n maxDisplay = 3,\n}: MultiSelectProps) {\n const [open, setOpen] = React.useState(false);\n\n const selectedOptions = options.filter((option) => value.includes(option.value));\n\n const handleSelect = (optionValue: string) => {\n const newValue = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n onValueChange(newValue);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onValueChange([]);\n };\n\n const handleRemoveItem = (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation();\n onValueChange(value.filter((v) => v !== optionValue));\n };\n\n const displayText = () => {\n if (selectedOptions.length === 0) {\n return placeholder;\n }\n\n if (selectedOptions.length <= maxDisplay) {\n return (\n <div className=\"flex flex-wrap gap-1\">\n {selectedOptions.map((option) => (\n <Badge\n key={option.value}\n variant={option.variant || \"secondary\"}\n className=\"h-auto px-2 py-0.5 text-xs\"\n >\n {option.label}\n <X\n className=\"ml-1 h-3 w-3 cursor-pointer hover:text-destructive\"\n onClick={(e) => handleRemoveItem(option.value, e)}\n />\n </Badge>\n ))}\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center gap-1\">\n <Badge variant=\"secondary\" className=\"text-xs\">\n {selectedOptions[0].label}\n </Badge>\n <span className=\"text-sm text-muted-foreground\">+{selectedOptions.length - 1} more</span>\n </div>\n );\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n data-slot=\"multi-select\"\n className={cn(\n \"h-auto min-h-[2.5rem] w-full justify-between py-2 hover:bg-muted hover:text-foreground\",\n selectedOptions.length === 0 && \"text-muted-foreground\",\n className,\n )}\n disabled={disabled}\n >\n <div className=\"flex-1 overflow-hidden text-left\">{displayText()}</div>\n <div className=\"ml-2 flex items-center gap-1\">\n {selectedOptions.length > 0 && (\n <X className=\"h-4 w-4 shrink-0 opacity-50 hover:opacity-100\" onClick={handleClear} />\n )}\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\" align=\"start\">\n <div className=\"max-h-60 overflow-auto\">\n {options.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n No options available\n </div>\n ) : (\n <div className=\"p-1\">\n {options.map((option) => (\n <div\n key={option.value}\n className={cn(\n \"flex cursor-pointer items-center space-x-2 rounded-sm px-2 py-1.5 text-sm transition-colors hover:bg-muted\",\n value.includes(option.value) && \"bg-muted/50 font-medium\",\n )}\n onClick={() => handleSelect(option.value)}\n >\n <Checkbox\n checked={value.includes(option.value)}\n className=\"pointer-events-none text-primary\"\n />\n <span>{option.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n {selectedOptions.length > 0 && (\n <div className=\"border-t p-2\">\n <Button variant=\"ghost\" size=\"sm\" onClick={handleClear} className=\"w-full text-xs\">\n Clear all ({selectedOptions.length})\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { MultiSelect };\nexport type { MultiSelectProps };\n"],"mappings":"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","names":[]}
@@ -17,9 +17,7 @@ function MultiSelect({
17
17
  maxDisplay = 3
18
18
  }) {
19
19
  const [open, setOpen] = React.useState(false);
20
- const selectedOptions = options.filter(
21
- (option) => value.includes(option.value)
22
- );
20
+ const selectedOptions = options.filter((option) => value.includes(option.value));
23
21
  const handleSelect = (optionValue) => {
24
22
  const newValue = value.includes(optionValue) ? value.filter((v) => v !== optionValue) : [...value, optionValue];
25
23
  onValueChange(newValue);
@@ -41,7 +39,7 @@ function MultiSelect({
41
39
  Badge,
42
40
  {
43
41
  variant: option.variant || "secondary",
44
- className: "text-xs px-2 py-0.5 h-auto",
42
+ className: "h-auto px-2 py-0.5 text-xs",
45
43
  children: [
46
44
  option.label,
47
45
  /* @__PURE__ */ jsx(
@@ -74,21 +72,15 @@ function MultiSelect({
74
72
  "aria-expanded": open,
75
73
  "data-slot": "multi-select",
76
74
  className: cn(
77
- "w-full justify-between min-h-[2.5rem] h-auto py-2 hover:bg-muted hover:text-foreground",
75
+ "h-auto min-h-[2.5rem] w-full justify-between py-2 hover:bg-muted hover:text-foreground",
78
76
  selectedOptions.length === 0 && "text-muted-foreground",
79
77
  className
80
78
  ),
81
79
  disabled,
82
80
  children: [
83
- /* @__PURE__ */ jsx("div", { className: "flex-1 text-left overflow-hidden", children: displayText() }),
84
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 ml-2", children: [
85
- selectedOptions.length > 0 && /* @__PURE__ */ jsx(
86
- X,
87
- {
88
- className: "h-4 w-4 shrink-0 opacity-50 hover:opacity-100",
89
- onClick: handleClear
90
- }
91
- ),
81
+ /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden text-left", children: displayText() }),
82
+ /* @__PURE__ */ jsxs("div", { className: "ml-2 flex items-center gap-1", children: [
83
+ selectedOptions.length > 0 && /* @__PURE__ */ jsx(X, { className: "h-4 w-4 shrink-0 opacity-50 hover:opacity-100", onClick: handleClear }),
92
84
  /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 opacity-50" })
93
85
  ] })
94
86
  ]
@@ -99,7 +91,7 @@ function MultiSelect({
99
91
  "div",
100
92
  {
101
93
  className: cn(
102
- "flex items-center space-x-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer hover:bg-muted transition-colors",
94
+ "flex cursor-pointer items-center space-x-2 rounded-sm px-2 py-1.5 text-sm transition-colors hover:bg-muted",
103
95
  value.includes(option.value) && "bg-muted/50 font-medium"
104
96
  ),
105
97
  onClick: () => handleSelect(option.value),
@@ -116,20 +108,11 @@ function MultiSelect({
116
108
  },
117
109
  option.value
118
110
  )) }) }),
119
- selectedOptions.length > 0 && /* @__PURE__ */ jsx("div", { className: "border-t p-2", children: /* @__PURE__ */ jsxs(
120
- Button,
121
- {
122
- variant: "ghost",
123
- size: "sm",
124
- onClick: handleClear,
125
- className: "w-full text-xs",
126
- children: [
127
- "Clear all (",
128
- selectedOptions.length,
129
- ")"
130
- ]
131
- }
132
- ) })
111
+ selectedOptions.length > 0 && /* @__PURE__ */ jsx("div", { className: "border-t p-2", children: /* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "sm", onClick: handleClear, className: "w-full text-xs", children: [
112
+ "Clear all (",
113
+ selectedOptions.length,
114
+ ")"
115
+ ] }) })
133
116
  ] })
134
117
  ] });
135
118
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ui/multi-select/multi-select.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDown, X } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { Button } from \"../button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { Badge } from \"../badge\";\nimport { Checkbox } from \"../checkbox\";\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\";\n}\n\ninterface MultiSelectProps {\n options: MultiSelectOption[];\n value: string[];\n onValueChange: (value: string[]) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n maxDisplay?: number;\n}\n\nfunction MultiSelect({\n options,\n value,\n onValueChange,\n placeholder = \"Select options...\",\n className,\n disabled = false,\n maxDisplay = 3,\n}: MultiSelectProps) {\n const [open, setOpen] = React.useState(false);\n\n const selectedOptions = options.filter((option) =>\n value.includes(option.value)\n );\n\n const handleSelect = (optionValue: string) => {\n const newValue = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n onValueChange(newValue);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onValueChange([]);\n };\n\n const handleRemoveItem = (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation();\n onValueChange(value.filter((v) => v !== optionValue));\n };\n\n const displayText = () => {\n if (selectedOptions.length === 0) {\n return placeholder;\n }\n\n if (selectedOptions.length <= maxDisplay) {\n return (\n <div className=\"flex flex-wrap gap-1\">\n {selectedOptions.map((option) => (\n <Badge\n key={option.value}\n variant={option.variant || \"secondary\"}\n className=\"text-xs px-2 py-0.5 h-auto\"\n >\n {option.label}\n <X\n className=\"ml-1 h-3 w-3 cursor-pointer hover:text-destructive\"\n onClick={(e) => handleRemoveItem(option.value, e)}\n />\n </Badge>\n ))}\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center gap-1\">\n <Badge variant=\"secondary\" className=\"text-xs\">\n {selectedOptions[0].label}\n </Badge>\n <span className=\"text-sm text-muted-foreground\">\n +{selectedOptions.length - 1} more\n </span>\n </div>\n );\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n data-slot=\"multi-select\"\n className={cn(\n \"w-full justify-between min-h-[2.5rem] h-auto py-2 hover:bg-muted hover:text-foreground\",\n selectedOptions.length === 0 && \"text-muted-foreground\",\n className\n )}\n disabled={disabled}\n >\n <div className=\"flex-1 text-left overflow-hidden\">\n {displayText()}\n </div>\n <div className=\"flex items-center gap-1 ml-2\">\n {selectedOptions.length > 0 && (\n <X\n className=\"h-4 w-4 shrink-0 opacity-50 hover:opacity-100\"\n onClick={handleClear}\n />\n )}\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\" align=\"start\">\n <div className=\"max-h-60 overflow-auto\">\n {options.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n No options available\n </div>\n ) : (\n <div className=\"p-1\">\n {options.map((option) => (\n <div\n key={option.value}\n className={cn(\n \"flex items-center space-x-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer hover:bg-muted transition-colors\",\n value.includes(option.value) && \"bg-muted/50 font-medium\"\n )}\n onClick={() => handleSelect(option.value)}\n >\n <Checkbox\n checked={value.includes(option.value)}\n className=\"pointer-events-none text-primary\"\n />\n <span>{option.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n {selectedOptions.length > 0 && (\n <div className=\"border-t p-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClear}\n className=\"w-full text-xs\"\n >\n Clear all ({selectedOptions.length})\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { MultiSelect };\nexport type { MultiSelectProps };\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/ui/multi-select/multi-select.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDown, X } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { Button } from \"../button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { Badge } from \"../badge\";\nimport { Checkbox } from \"../checkbox\";\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\";\n}\n\ninterface MultiSelectProps {\n options: MultiSelectOption[];\n value: string[];\n onValueChange: (value: string[]) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n maxDisplay?: number;\n}\n\nfunction MultiSelect({\n options,\n value,\n onValueChange,\n placeholder = \"Select options...\",\n className,\n disabled = false,\n maxDisplay = 3,\n}: MultiSelectProps) {\n const [open, setOpen] = React.useState(false);\n\n const selectedOptions = options.filter((option) => value.includes(option.value));\n\n const handleSelect = (optionValue: string) => {\n const newValue = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n onValueChange(newValue);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onValueChange([]);\n };\n\n const handleRemoveItem = (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation();\n onValueChange(value.filter((v) => v !== optionValue));\n };\n\n const displayText = () => {\n if (selectedOptions.length === 0) {\n return placeholder;\n }\n\n if (selectedOptions.length <= maxDisplay) {\n return (\n <div className=\"flex flex-wrap gap-1\">\n {selectedOptions.map((option) => (\n <Badge\n key={option.value}\n variant={option.variant || \"secondary\"}\n className=\"h-auto px-2 py-0.5 text-xs\"\n >\n {option.label}\n <X\n className=\"ml-1 h-3 w-3 cursor-pointer hover:text-destructive\"\n onClick={(e) => handleRemoveItem(option.value, e)}\n />\n </Badge>\n ))}\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center gap-1\">\n <Badge variant=\"secondary\" className=\"text-xs\">\n {selectedOptions[0].label}\n </Badge>\n <span className=\"text-sm text-muted-foreground\">+{selectedOptions.length - 1} more</span>\n </div>\n );\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n data-slot=\"multi-select\"\n className={cn(\n \"h-auto min-h-[2.5rem] w-full justify-between py-2 hover:bg-muted hover:text-foreground\",\n selectedOptions.length === 0 && \"text-muted-foreground\",\n className,\n )}\n disabled={disabled}\n >\n <div className=\"flex-1 overflow-hidden text-left\">{displayText()}</div>\n <div className=\"ml-2 flex items-center gap-1\">\n {selectedOptions.length > 0 && (\n <X className=\"h-4 w-4 shrink-0 opacity-50 hover:opacity-100\" onClick={handleClear} />\n )}\n <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\" align=\"start\">\n <div className=\"max-h-60 overflow-auto\">\n {options.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n No options available\n </div>\n ) : (\n <div className=\"p-1\">\n {options.map((option) => (\n <div\n key={option.value}\n className={cn(\n \"flex cursor-pointer items-center space-x-2 rounded-sm px-2 py-1.5 text-sm transition-colors hover:bg-muted\",\n value.includes(option.value) && \"bg-muted/50 font-medium\",\n )}\n onClick={() => handleSelect(option.value)}\n >\n <Checkbox\n checked={value.includes(option.value)}\n className=\"pointer-events-none text-primary\"\n />\n <span>{option.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n {selectedOptions.length > 0 && (\n <div className=\"border-t p-2\">\n <Button variant=\"ghost\" size=\"sm\" onClick={handleClear} className=\"w-full text-xs\">\n Clear all ({selectedOptions.length})\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { MultiSelect };\nexport type { MultiSelectProps };\n"],"mappings":"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","names":[]}
@@ -55,10 +55,7 @@ function NavigationMenu({
55
55
  NavigationMenuPrimitive.Root,
56
56
  {
57
57
  "data-slot": "navigation-menu",
58
- className: (0, import_utils.cn)(
59
- "relative z-10 flex max-w-max flex-1 items-center justify-center",
60
- className
61
- ),
58
+ className: (0, import_utils.cn)("relative z-10 flex max-w-max flex-1 items-center justify-center", className),
62
59
  ...props,
63
60
  children: [
64
61
  children,
@@ -75,10 +72,7 @@ function NavigationMenuList({
75
72
  NavigationMenuPrimitive.List,
76
73
  {
77
74
  "data-slot": "navigation-menu-list",
78
- className: (0, import_utils.cn)(
79
- "group flex flex-1 list-none items-center justify-center gap-1",
80
- className
81
- ),
75
+ className: (0, import_utils.cn)("group flex flex-1 list-none items-center justify-center gap-1", className),
82
76
  ...props
83
77
  }
84
78
  );
@@ -133,7 +127,7 @@ function NavigationMenuContent({
133
127
  {
134
128
  "data-slot": "navigation-menu-content",
135
129
  className: (0, import_utils.cn)(
136
- "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full md:absolute md:w-auto",
130
+ "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto",
137
131
  className
138
132
  ),
139
133
  ...props
@@ -144,12 +138,12 @@ function NavigationMenuViewport({
144
138
  className,
145
139
  ...props
146
140
  }) {
147
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute top-full left-0 flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
141
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute left-0 top-full flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
148
142
  NavigationMenuPrimitive.Viewport,
149
143
  {
150
144
  "data-slot": "navigation-menu-viewport",
151
145
  className: (0, import_utils.cn)(
152
- "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
146
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
153
147
  className
154
148
  ),
155
149
  ...props
@@ -178,11 +172,11 @@ function NavigationMenuIndicator({
178
172
  {
179
173
  "data-slot": "navigation-menu-indicator",
180
174
  className: (0, import_utils.cn)(
181
- "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden",
175
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
182
176
  className
183
177
  ),
184
178
  ...props,
185
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "bg-border relative top-[60%] size-2 rotate-45 rounded-tl-sm shadow-md" })
179
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "relative top-[60%] size-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
186
180
  }
187
181
  );
188
182
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ui/navigation-menu/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n className={cn(\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring/20 focus-visible:ring-offset-2\"\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full md:absolute md:w-auto\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div className=\"absolute top-full left-0 flex justify-center\">\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(className)}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n className\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] size-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBQ;AAfR,8BAAyC;AACzC,sCAAoB;AACpB,0BAAgC;AAEhC,mBAAmB;AAEnB,SAAS,eAAe;AAAA,EACpB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACP,GAEG;AACC,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,eAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,YAAY,4CAAC,0BAAuB;AAAA;AAAA;AAAA,EACzC;AAER;AAEA,SAAS,mBAAmB;AAAA,EACxB;AAAA,EACA,GAAG;AACP,GAA8D;AAC1D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,eAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA;AAAA,EACR;AAER;AAEA,SAAS,mBAAmB;AAAA,EACxB;AAAA,EACA,GAAG;AACP,GAA8D;AAC1D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,eAAW,iBAAG,YAAY,SAAS;AAAA,MAClC,GAAG;AAAA;AAAA,EACR;AAER;AAEA,MAAM,iCAA6B;AAAA,EAC/B;AACJ;AAEA,SAAS,sBAAsB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,GAAG;AACP,GAAiE;AAC7D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,eAAW,iBAAG,2BAA2B,GAAG,SAAS,SAAS;AAAA,MAC7D,GAAG;AAAA,MAEH;AAAA;AAAA,QAAU;AAAA,QACX;AAAA,UAAC;AAAA;AAAA,YACG,WAAU;AAAA,YACV,eAAY;AAAA;AAAA,QAChB;AAAA;AAAA;AAAA,EACJ;AAER;AAEA,SAAS,sBAAsB;AAAA,EAC3B;AAAA,EACA,GAAG;AACP,GAAiE;AAC7D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,eAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA;AAAA,EACR;AAER;AAEA,SAAS,uBAAuB;AAAA,EAC5B;AAAA,EACA,GAAG;AACP,GAAkE;AAC9D,SACI,4CAAC,SAAI,WAAU,gDACX;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,eAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA;AAAA,EACR,GACJ;AAER;AAEA,SAAS,mBAAmB;AAAA,EACxB;AAAA,EACA,GAAG;AACP,GAA8D;AAC1D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,eAAW,iBAAG,SAAS;AAAA,MACtB,GAAG;AAAA;AAAA,EACR;AAER;AAEA,SAAS,wBAAwB;AAAA,EAC7B;AAAA,EACA,GAAG;AACP,GAAmE;AAC/D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,eAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA,MAEJ,sDAAC,SAAI,WAAU,yEAAwE;AAAA;AAAA,EAC3F;AAER;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/ui/navigation-menu/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n className={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\"group flex flex-1 list-none items-center justify-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring/20 focus-visible:ring-offset-2\",\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div className=\"absolute left-0 top-full flex justify-center\">\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(className)}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className,\n )}\n {...props}\n >\n <div className=\"relative top-[60%] size-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBI;AAfJ,8BAAyC;AACzC,sCAAoB;AACpB,0BAAgC;AAEhC,mBAAmB;AAEnB,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAEG;AACD,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,eAAW,iBAAG,mEAAmE,SAAS;AAAA,MACzF,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,YAAY,4CAAC,0BAAuB;AAAA;AAAA;AAAA,EACvC;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,eAAW,iBAAG,iEAAiE,SAAS;AAAA,MACvF,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,eAAW,iBAAG,YAAY,SAAS;AAAA,MAClC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,MAAM,iCAA6B;AAAA,EACjC;AACF;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,eAAW,iBAAG,2BAA2B,GAAG,SAAS,SAAS;AAAA,MAC7D,GAAG;AAAA,MAEH;AAAA;AAAA,QAAU;AAAA,QACX;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA;AAAA,QACd;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAkE;AAChE,SACE,4CAAC,SAAI,WAAU,gDACb;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,eAAW,iBAAG,SAAS;AAAA,MACtB,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,wBAAwB;AAAA,EAC/B;AAAA,EACA,GAAG;AACL,GAAmE;AACjE,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,sDAAC,SAAI,WAAU,yEAAwE;AAAA;AAAA,EACzF;AAEJ;","names":[]}
@@ -14,10 +14,7 @@ function NavigationMenu({
14
14
  NavigationMenuPrimitive.Root,
15
15
  {
16
16
  "data-slot": "navigation-menu",
17
- className: cn(
18
- "relative z-10 flex max-w-max flex-1 items-center justify-center",
19
- className
20
- ),
17
+ className: cn("relative z-10 flex max-w-max flex-1 items-center justify-center", className),
21
18
  ...props,
22
19
  children: [
23
20
  children,
@@ -34,10 +31,7 @@ function NavigationMenuList({
34
31
  NavigationMenuPrimitive.List,
35
32
  {
36
33
  "data-slot": "navigation-menu-list",
37
- className: cn(
38
- "group flex flex-1 list-none items-center justify-center gap-1",
39
- className
40
- ),
34
+ className: cn("group flex flex-1 list-none items-center justify-center gap-1", className),
41
35
  ...props
42
36
  }
43
37
  );
@@ -92,7 +86,7 @@ function NavigationMenuContent({
92
86
  {
93
87
  "data-slot": "navigation-menu-content",
94
88
  className: cn(
95
- "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full md:absolute md:w-auto",
89
+ "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto",
96
90
  className
97
91
  ),
98
92
  ...props
@@ -103,12 +97,12 @@ function NavigationMenuViewport({
103
97
  className,
104
98
  ...props
105
99
  }) {
106
- return /* @__PURE__ */ jsx("div", { className: "absolute top-full left-0 flex justify-center", children: /* @__PURE__ */ jsx(
100
+ return /* @__PURE__ */ jsx("div", { className: "absolute left-0 top-full flex justify-center", children: /* @__PURE__ */ jsx(
107
101
  NavigationMenuPrimitive.Viewport,
108
102
  {
109
103
  "data-slot": "navigation-menu-viewport",
110
104
  className: cn(
111
- "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
105
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
112
106
  className
113
107
  ),
114
108
  ...props
@@ -137,11 +131,11 @@ function NavigationMenuIndicator({
137
131
  {
138
132
  "data-slot": "navigation-menu-indicator",
139
133
  className: cn(
140
- "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden",
134
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
141
135
  className
142
136
  ),
143
137
  ...props,
144
- children: /* @__PURE__ */ jsx("div", { className: "bg-border relative top-[60%] size-2 rotate-45 rounded-tl-sm shadow-md" })
138
+ children: /* @__PURE__ */ jsx("div", { className: "relative top-[60%] size-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
145
139
  }
146
140
  );
147
141
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ui/navigation-menu/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n className={cn(\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring/20 focus-visible:ring-offset-2\"\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full md:absolute md:w-auto\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div className=\"absolute top-full left-0 flex justify-center\">\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(className)}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n className\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] size-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n"],"mappings":";AAkBQ,SASiB,KATjB;AAfR,YAAY,6BAA6B;AACzC,SAAS,WAAW;AACpB,SAAS,uBAAuB;AAEhC,SAAS,UAAU;AAEnB,SAAS,eAAe;AAAA,EACpB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACP,GAEG;AACC,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,YAAY,oBAAC,0BAAuB;AAAA;AAAA;AAAA,EACzC;AAER;AAEA,SAAS,mBAAmB;AAAA,EACxB;AAAA,EACA,GAAG;AACP,GAA8D;AAC1D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA;AAAA,EACR;AAER;AAEA,SAAS,mBAAmB;AAAA,EACxB;AAAA,EACA,GAAG;AACP,GAA8D;AAC1D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,WAAW,GAAG,YAAY,SAAS;AAAA,MAClC,GAAG;AAAA;AAAA,EACR;AAER;AAEA,MAAM,6BAA6B;AAAA,EAC/B;AACJ;AAEA,SAAS,sBAAsB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,GAAG;AACP,GAAiE;AAC7D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,GAAG,SAAS,SAAS;AAAA,MAC7D,GAAG;AAAA,MAEH;AAAA;AAAA,QAAU;AAAA,QACX;AAAA,UAAC;AAAA;AAAA,YACG,WAAU;AAAA,YACV,eAAY;AAAA;AAAA,QAChB;AAAA;AAAA;AAAA,EACJ;AAER;AAEA,SAAS,sBAAsB;AAAA,EAC3B;AAAA,EACA,GAAG;AACP,GAAiE;AAC7D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA;AAAA,EACR;AAER;AAEA,SAAS,uBAAuB;AAAA,EAC5B;AAAA,EACA,GAAG;AACP,GAAkE;AAC9D,SACI,oBAAC,SAAI,WAAU,gDACX;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA;AAAA,EACR,GACJ;AAER;AAEA,SAAS,mBAAmB;AAAA,EACxB;AAAA,EACA,GAAG;AACP,GAA8D;AAC1D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG;AAAA;AAAA,EACR;AAER;AAEA,SAAS,wBAAwB;AAAA,EAC7B;AAAA,EACA,GAAG;AACP,GAAmE;AAC/D,SACI;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACG,aAAU;AAAA,MACV,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA,MAEJ,8BAAC,SAAI,WAAU,yEAAwE;AAAA;AAAA,EAC3F;AAER;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/ui/navigation-menu/navigation-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n className={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\"group flex flex-1 list-none items-center justify-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring/20 focus-visible:ring-offset-2\",\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div className=\"absolute left-0 top-full flex justify-center\">\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(className)}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className,\n )}\n {...props}\n >\n <div className=\"relative top-[60%] size-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n"],"mappings":";AAkBI,SAMe,KANf;AAfJ,YAAY,6BAA6B;AACzC,SAAS,WAAW;AACpB,SAAS,uBAAuB;AAEhC,SAAS,UAAU;AAEnB,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,GAEG;AACD,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,mEAAmE,SAAS;AAAA,MACzF,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,YAAY,oBAAC,0BAAuB;AAAA;AAAA;AAAA,EACvC;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iEAAiE,SAAS;AAAA,MACvF,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,YAAY,SAAS;AAAA,MAClC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,MAAM,6BAA6B;AAAA,EACjC;AACF;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2BAA2B,GAAG,SAAS,SAAS;AAAA,MAC7D,GAAG;AAAA,MAEH;AAAA;AAAA,QAAU;AAAA,QACX;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA;AAAA,QACd;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA,GAAG;AACL,GAAiE;AAC/D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,uBAAuB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAkE;AAChE,SACE,oBAAC,SAAI,WAAU,gDACb;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAA8D;AAC5D,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,SAAS;AAAA,MACtB,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,wBAAwB;AAAA,EAC/B;AAAA,EACA,GAAG;AACL,GAAmE;AACjE,SACE;AAAA,IAAC,wBAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,8BAAC,SAAI,WAAU,yEAAwE;AAAA;AAAA,EACzF;AAEJ;","names":[]}
@@ -44,10 +44,7 @@ function Pagination({ className, ...props }) {
44
44
  }
45
45
  );
46
46
  }
47
- function PaginationContent({
48
- className,
49
- ...props
50
- }) {
47
+ function PaginationContent({ className, ...props }) {
51
48
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
52
49
  "ul",
53
50
  {
@@ -57,18 +54,10 @@ function PaginationContent({
57
54
  }
58
55
  );
59
56
  }
60
- function PaginationItem({
61
- className,
62
- ...props
63
- }) {
57
+ function PaginationItem({ className, ...props }) {
64
58
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { "data-slot": "pagination-item", className: (0, import_utils.cn)("", className), ...props });
65
59
  }
66
- function PaginationLink({
67
- className,
68
- isActive,
69
- size = "icon",
70
- ...props
71
- }) {
60
+ function PaginationLink({ className, isActive, size = "icon", ...props }) {
72
61
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
73
62
  "a",
74
63
  {
@@ -117,10 +106,7 @@ function PaginationNext({
117
106
  }
118
107
  );
119
108
  }
120
- function PaginationEllipsis({
121
- className,
122
- ...props
123
- }) {
109
+ function PaginationEllipsis({ className, ...props }) {
124
110
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
125
111
  "span",
126
112
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ui/pagination/pagination.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { Button, buttonVariants } from \"../button\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" className={cn(\"\", className)} {...props} />;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n className={cn(buttonVariants({ variant: isActive ? \"default\" : \"ghost\", size }), className)}\n {...props}\n />\n );\n}\n\nfunction PaginationPrevious({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size={size}\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size={size}\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUI;AAPJ,0BAA0D;AAE1D,mBAAmB;AACnB,oBAAuC;AAEvC,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,aAAU;AAAA,MACV,eAAW,iBAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAW,iBAAG,oCAAoC,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,SAAO,4CAAC,QAAG,aAAU,mBAAkB,eAAW,iBAAG,IAAI,SAAS,GAAI,GAAG,OAAO;AAClF;AAOA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAAwB;AACtB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc,WAAW,SAAS;AAAA,MAClC,aAAU;AAAA,MACV,eAAW,qBAAG,8BAAe,EAAE,SAAS,WAAW,YAAY,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,MACzF,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAAgD;AAC9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX;AAAA,MACA,eAAW,iBAAG,gBAAgB,SAAS;AAAA,MACtC,GAAG;AAAA,MAEJ;AAAA,oDAAC,mCAAY,WAAU,WAAU;AAAA,QACjC,4CAAC,UAAK,sBAAQ;AAAA;AAAA;AAAA,EAChB;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAAgD;AAC9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX;AAAA,MACA,eAAW,iBAAG,gBAAgB,SAAS;AAAA,MACtC,GAAG;AAAA,MAEJ;AAAA,oDAAC,UAAK,kBAAI;AAAA,QACV,4CAAC,oCAAa,WAAU,WAAU;AAAA;AAAA;AAAA,EACpC;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,MACX,aAAU;AAAA,MACV,eAAW,iBAAG,4CAA4C,SAAS;AAAA,MAClE,GAAG;AAAA,MAEJ;AAAA,oDAAC,sCAAe,WAAU,WAAU;AAAA,QACpC,4CAAC,UAAK,WAAU,WAAU,wBAAU;AAAA;AAAA;AAAA,EACtC;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/ui/pagination/pagination.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { Button, buttonVariants } from \"../button\";\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationContent({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction PaginationItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" className={cn(\"\", className)} {...props} />;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">;\n\nfunction PaginationLink({ className, isActive, size = \"icon\", ...props }: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n className={cn(buttonVariants({ variant: isActive ? \"default\" : \"ghost\", size }), className)}\n {...props}\n />\n );\n}\n\nfunction PaginationPrevious({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size={size}\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size={size}\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUI;AAPJ,0BAA0D;AAE1D,mBAAmB;AACnB,oBAAuC;AAEvC,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,aAAU;AAAA,MACV,eAAW,iBAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC9E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAW,iBAAG,oCAAoC,SAAS;AAAA,MAC1D,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,MAAM,GAA+B;AAC3E,SAAO,4CAAC,QAAG,aAAU,mBAAkB,eAAW,iBAAG,IAAI,SAAS,GAAI,GAAG,OAAO;AAClF;AAOA,SAAS,eAAe,EAAE,WAAW,UAAU,OAAO,QAAQ,GAAG,MAAM,GAAwB;AAC7F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc,WAAW,SAAS;AAAA,MAClC,aAAU;AAAA,MACV,eAAW,qBAAG,8BAAe,EAAE,SAAS,WAAW,YAAY,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,MACzF,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAAgD;AAC9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX;AAAA,MACA,eAAW,iBAAG,gBAAgB,SAAS;AAAA,MACtC,GAAG;AAAA,MAEJ;AAAA,oDAAC,mCAAY,WAAU,WAAU;AAAA,QACjC,4CAAC,UAAK,sBAAQ;AAAA;AAAA;AAAA,EAChB;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAAgD;AAC9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX;AAAA,MACA,eAAW,iBAAG,gBAAgB,SAAS;AAAA,MACtC,GAAG;AAAA,MAEJ;AAAA,oDAAC,UAAK,kBAAI;AAAA,QACV,4CAAC,oCAAa,WAAU,WAAU;AAAA;AAAA;AAAA,EACpC;AAEJ;AAEA,SAAS,mBAAmB,EAAE,WAAW,GAAG,MAAM,GAAiC;AACjF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,MACX,aAAU;AAAA,MACV,eAAW,iBAAG,4CAA4C,SAAS;AAAA,MAClE,GAAG;AAAA,MAEJ;AAAA,oDAAC,sCAAe,WAAU,WAAU;AAAA,QACpC,4CAAC,UAAK,WAAU,WAAU,wBAAU;AAAA;AAAA;AAAA,EACtC;AAEJ;","names":[]}