@etus/ui 0.4.0-beta.6 → 0.4.0-beta.8

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 (225) hide show
  1. package/dist/{chunk-2Y7PQ6ZL.js → chunk-237TQKWH.js} +4 -4
  2. package/dist/{chunk-2Y7PQ6ZL.js.map → chunk-237TQKWH.js.map} +1 -1
  3. package/dist/{chunk-KR3IVNQH.js → chunk-2FJJOHHH.js} +16 -10
  4. package/dist/chunk-2FJJOHHH.js.map +1 -0
  5. package/dist/{chunk-W4NC5CU5.js → chunk-2Q4I4VDB.js} +4 -4
  6. package/dist/{chunk-W4NC5CU5.js.map → chunk-2Q4I4VDB.js.map} +1 -1
  7. package/dist/{chunk-2HM5Z2YP.js → chunk-2YWWZEPE.js} +3 -3
  8. package/dist/{chunk-2HM5Z2YP.js.map → chunk-2YWWZEPE.js.map} +1 -1
  9. package/dist/chunk-2Z722V5K.js +231 -0
  10. package/dist/chunk-2Z722V5K.js.map +1 -0
  11. package/dist/chunk-37IIHQP4.js +233 -0
  12. package/dist/chunk-37IIHQP4.js.map +1 -0
  13. package/dist/{chunk-UFRMZ3M6.js → chunk-3JCV72FO.js} +6 -2
  14. package/dist/chunk-3JCV72FO.js.map +1 -0
  15. package/dist/{chunk-HT5XM6XK.js → chunk-43BS3PPX.js} +3 -3
  16. package/dist/{chunk-HT5XM6XK.js.map → chunk-43BS3PPX.js.map} +1 -1
  17. package/dist/{chunk-2UGDLAYC.js → chunk-45D4O7RK.js} +10 -3
  18. package/dist/chunk-45D4O7RK.js.map +1 -0
  19. package/dist/{chunk-32IJQOUV.js → chunk-4EYYCHLD.js} +4 -4
  20. package/dist/{chunk-32IJQOUV.js.map → chunk-4EYYCHLD.js.map} +1 -1
  21. package/dist/{chunk-J62TFQHR.js → chunk-5I7AXWJU.js} +13 -13
  22. package/dist/chunk-5I7AXWJU.js.map +1 -0
  23. package/dist/{chunk-65YSTUD2.js → chunk-5SUD32RK.js} +44 -14
  24. package/dist/chunk-5SUD32RK.js.map +1 -0
  25. package/dist/{chunk-23BHD62H.js → chunk-5TZDEGZN.js} +4 -4
  26. package/dist/chunk-5TZDEGZN.js.map +1 -0
  27. package/dist/{chunk-VPNFYQBL.js → chunk-6DN2UAIR.js} +3 -3
  28. package/dist/chunk-6DN2UAIR.js.map +1 -0
  29. package/dist/{chunk-EGYWK2XX.js → chunk-7CTFBOD4.js} +3 -3
  30. package/dist/{chunk-EGYWK2XX.js.map → chunk-7CTFBOD4.js.map} +1 -1
  31. package/dist/{chunk-36XTKR3B.js → chunk-BMNCNBPA.js} +3 -3
  32. package/dist/{chunk-36XTKR3B.js.map → chunk-BMNCNBPA.js.map} +1 -1
  33. package/dist/{chunk-AWYOWR5N.js → chunk-C5HSYDJC.js} +3 -3
  34. package/dist/{chunk-AWYOWR5N.js.map → chunk-C5HSYDJC.js.map} +1 -1
  35. package/dist/{chunk-VFALJSXB.js → chunk-DCUFQJYP.js} +3 -3
  36. package/dist/chunk-DCUFQJYP.js.map +1 -0
  37. package/dist/{chunk-LATTRPLQ.js → chunk-E2TI5V67.js} +3 -3
  38. package/dist/{chunk-LATTRPLQ.js.map → chunk-E2TI5V67.js.map} +1 -1
  39. package/dist/{chunk-IRKDMISK.js → chunk-G2MAGZHQ.js} +4 -3
  40. package/dist/chunk-G2MAGZHQ.js.map +1 -0
  41. package/dist/{chunk-ONQCNOLU.js → chunk-HDOR3SN3.js} +3 -3
  42. package/dist/{chunk-ONQCNOLU.js.map → chunk-HDOR3SN3.js.map} +1 -1
  43. package/dist/{chunk-PLLJNHWU.js → chunk-HI3T55XK.js} +3 -33
  44. package/dist/chunk-HI3T55XK.js.map +1 -0
  45. package/dist/chunk-HJ4E6YPW.js +236 -0
  46. package/dist/chunk-HJ4E6YPW.js.map +1 -0
  47. package/dist/{chunk-LS3WD6IZ.js → chunk-I55QJ4CU.js} +4 -4
  48. package/dist/{chunk-LS3WD6IZ.js.map → chunk-I55QJ4CU.js.map} +1 -1
  49. package/dist/{chunk-HKXQLWGR.js → chunk-IOWHM7ZY.js} +13 -11
  50. package/dist/chunk-IOWHM7ZY.js.map +1 -0
  51. package/dist/{chunk-ILAV2AZ4.js → chunk-IZC5YFGO.js} +3 -3
  52. package/dist/{chunk-ILAV2AZ4.js.map → chunk-IZC5YFGO.js.map} +1 -1
  53. package/dist/{chunk-Y7UFBSAD.js → chunk-KHOCAVQO.js} +3 -3
  54. package/dist/{chunk-Y7UFBSAD.js.map → chunk-KHOCAVQO.js.map} +1 -1
  55. package/dist/{chunk-IBVCSZCH.js → chunk-KVJOKWP4.js} +5 -4
  56. package/dist/chunk-KVJOKWP4.js.map +1 -0
  57. package/dist/{chunk-KC6CHPT3.js → chunk-KZRTQF64.js} +3 -3
  58. package/dist/{chunk-KC6CHPT3.js.map → chunk-KZRTQF64.js.map} +1 -1
  59. package/dist/{chunk-QIETN4UU.js → chunk-LEAK22ZP.js} +3 -3
  60. package/dist/{chunk-QIETN4UU.js.map → chunk-LEAK22ZP.js.map} +1 -1
  61. package/dist/{chunk-OWOVCGUZ.js → chunk-M2C7HBR5.js} +3 -3
  62. package/dist/{chunk-OWOVCGUZ.js.map → chunk-M2C7HBR5.js.map} +1 -1
  63. package/dist/{chunk-33JGPMUW.js → chunk-M7TPROVH.js} +20 -7
  64. package/dist/chunk-M7TPROVH.js.map +1 -0
  65. package/dist/{chunk-AVR3LVOQ.js → chunk-MQMRVBUL.js} +4 -4
  66. package/dist/{chunk-AVR3LVOQ.js.map → chunk-MQMRVBUL.js.map} +1 -1
  67. package/dist/{chunk-KPNNSUXM.js → chunk-O7AUE5GP.js} +5 -3
  68. package/dist/chunk-O7AUE5GP.js.map +1 -0
  69. package/dist/{chunk-6HEURMY3.js → chunk-OCXGG7UP.js} +5 -5
  70. package/dist/{chunk-6HEURMY3.js.map → chunk-OCXGG7UP.js.map} +1 -1
  71. package/dist/{chunk-V7XHE25E.js → chunk-ON7WFRYH.js} +3 -3
  72. package/dist/{chunk-V7XHE25E.js.map → chunk-ON7WFRYH.js.map} +1 -1
  73. package/dist/{chunk-FSMHI7DW.js → chunk-OXDWUKGP.js} +3 -3
  74. package/dist/chunk-OXDWUKGP.js.map +1 -0
  75. package/dist/{chunk-SJSYKUCL.js → chunk-Q335YODG.js} +3 -3
  76. package/dist/{chunk-SJSYKUCL.js.map → chunk-Q335YODG.js.map} +1 -1
  77. package/dist/{chunk-DDM2I5C6.js → chunk-R5OIL4I4.js} +3 -3
  78. package/dist/{chunk-DDM2I5C6.js.map → chunk-R5OIL4I4.js.map} +1 -1
  79. package/dist/{chunk-FYJHWYPM.js → chunk-S524YVMO.js} +3 -3
  80. package/dist/{chunk-FYJHWYPM.js.map → chunk-S524YVMO.js.map} +1 -1
  81. package/dist/{chunk-OWIFNJXZ.js → chunk-S7TVRVRU.js} +3 -3
  82. package/dist/chunk-S7TVRVRU.js.map +1 -0
  83. package/dist/{chunk-TNROOKX3.js → chunk-UDY3IDCY.js} +10 -2
  84. package/dist/chunk-UDY3IDCY.js.map +1 -0
  85. package/dist/{chunk-3WOGOTOV.js → chunk-UPYT2XM5.js} +7 -7
  86. package/dist/chunk-UPYT2XM5.js.map +1 -0
  87. package/dist/{chunk-YWA63YN3.js → chunk-VAVE4ZJF.js} +2 -2
  88. package/dist/chunk-VAVE4ZJF.js.map +1 -0
  89. package/dist/chunk-WKWLKGNI.js +643 -0
  90. package/dist/chunk-WKWLKGNI.js.map +1 -0
  91. package/dist/{chunk-Z3FL7LEK.js → chunk-X253YD45.js} +71 -6
  92. package/dist/chunk-X253YD45.js.map +1 -0
  93. package/dist/{chunk-6XY7QYVR.js → chunk-X3AXEE3S.js} +3 -3
  94. package/dist/{chunk-6XY7QYVR.js.map → chunk-X3AXEE3S.js.map} +1 -1
  95. package/dist/{chunk-R4UOT76L.js → chunk-XAIUZJOJ.js} +8 -8
  96. package/dist/chunk-XAIUZJOJ.js.map +1 -0
  97. package/dist/{chunk-ZO2EKJZM.js → chunk-XCZMJA2D.js} +7 -7
  98. package/dist/{chunk-ZO2EKJZM.js.map → chunk-XCZMJA2D.js.map} +1 -1
  99. package/dist/{chunk-XRMKL43Y.js → chunk-XOLV7G4S.js} +3 -3
  100. package/dist/{chunk-XRMKL43Y.js.map → chunk-XOLV7G4S.js.map} +1 -1
  101. package/dist/chunk-XYYOV5GW.js +186 -0
  102. package/dist/chunk-XYYOV5GW.js.map +1 -0
  103. package/dist/{chunk-4MQNDQ4O.js → chunk-YACIRNVP.js} +12 -4
  104. package/dist/chunk-YACIRNVP.js.map +1 -0
  105. package/dist/{chunk-JKYB5QAP.js → chunk-YDZBLZVZ.js} +3 -3
  106. package/dist/{chunk-JKYB5QAP.js.map → chunk-YDZBLZVZ.js.map} +1 -1
  107. package/dist/{chunk-5XQIH6WM.js → chunk-YM5YBDRM.js} +4 -4
  108. package/dist/{chunk-5XQIH6WM.js.map → chunk-YM5YBDRM.js.map} +1 -1
  109. package/dist/{chunk-AUCDXPWH.js → chunk-YQX7XZES.js} +4 -4
  110. package/dist/{chunk-AUCDXPWH.js.map → chunk-YQX7XZES.js.map} +1 -1
  111. package/dist/{chunk-CP2PEDG2.js → chunk-Z4KW5VW6.js} +3 -3
  112. package/dist/chunk-Z4KW5VW6.js.map +1 -0
  113. package/dist/{chunk-Y3BOERVB.js → chunk-ZEFK3AXP.js} +3 -3
  114. package/dist/{chunk-Y3BOERVB.js.map → chunk-ZEFK3AXP.js.map} +1 -1
  115. package/dist/{chunk-L3Z5FAJE.js → chunk-ZEYLSDSG.js} +3 -3
  116. package/dist/{chunk-L3Z5FAJE.js.map → chunk-ZEYLSDSG.js.map} +1 -1
  117. package/dist/components/advanced/Calendar/index.js +3 -3
  118. package/dist/components/advanced/Command/index.js +1 -1
  119. package/dist/components/advanced/EventCalendar/index.js +3 -3
  120. package/dist/components/advanced/FileDropzone/index.js +1 -1
  121. package/dist/components/advanced/FilterBuilder/index.js +3 -3
  122. package/dist/components/advanced/MarkdownEditor/index.js +2 -2
  123. package/dist/components/advanced/ReportBuilder/index.js +2 -2
  124. package/dist/components/advanced/RichTextEditor/index.js +2 -2
  125. package/dist/components/advanced/index.js +13 -13
  126. package/dist/components/data-display/AreaChart/index.js +1 -1
  127. package/dist/components/data-display/BarChart/index.js +1 -1
  128. package/dist/components/data-display/Carousel/index.js +3 -3
  129. package/dist/components/data-display/ChartCard/index.js +2 -2
  130. package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
  131. package/dist/components/data-display/DataTable/FilterBuilder/index.js +3 -3
  132. package/dist/components/data-display/DataTable/index.js +6 -6
  133. package/dist/components/data-display/ImageGallery/index.js +6 -6
  134. package/dist/components/data-display/KPICard/index.js +3 -3
  135. package/dist/components/data-display/Lightbox/index.js +1 -1
  136. package/dist/components/data-display/LineChart/index.js +1 -1
  137. package/dist/components/data-display/List/index.js +2 -2
  138. package/dist/components/data-display/Table/index.js +1 -1
  139. package/dist/components/data-display/VirtualTable/index.js +2 -2
  140. package/dist/components/data-display/index.js +29 -29
  141. package/dist/components/feedback/Alert/index.js +1 -1
  142. package/dist/components/feedback/AlertDialog/index.js +3 -3
  143. package/dist/components/feedback/ConfirmModal/index.js +4 -4
  144. package/dist/components/feedback/Modal/index.js +1 -1
  145. package/dist/components/feedback/index.js +8 -8
  146. package/dist/components/forms/ColorPicker/index.js +1 -1
  147. package/dist/components/forms/DatePicker/index.js +4 -4
  148. package/dist/components/forms/DateRangePicker/index.js +4 -4
  149. package/dist/components/forms/IftaLabel/index.js +1 -1
  150. package/dist/components/forms/InputGroup/index.js +3 -3
  151. package/dist/components/forms/MultiSelect/index.js +2 -1
  152. package/dist/components/forms/RadioButton/index.js +1 -1
  153. package/dist/components/forms/Rating/index.js +1 -1
  154. package/dist/components/forms/Slider/index.js +1 -1
  155. package/dist/components/forms/TagsInput/index.js +2 -2
  156. package/dist/components/forms/ToggleGroup/index.js +1 -1
  157. package/dist/components/forms/index.js +19 -19
  158. package/dist/components/index.js +104 -104
  159. package/dist/components/layout/index.js +2 -2
  160. package/dist/components/navigation/AccountSwitch/index.js +3 -3
  161. package/dist/components/navigation/Drawer/index.js +1 -1
  162. package/dist/components/navigation/DropdownMenu/index.js +1 -1
  163. package/dist/components/navigation/Header/index.js +1 -1
  164. package/dist/components/navigation/MobileSidebar/index.js +3 -3
  165. package/dist/components/navigation/Pagination/index.js +3 -3
  166. package/dist/components/navigation/Sidebar/index.js +3 -3
  167. package/dist/components/navigation/UserProfileDropdown/index.js +1 -1
  168. package/dist/components/navigation/WorkspaceDropdown/index.js +1 -1
  169. package/dist/components/navigation/index.js +13 -13
  170. package/dist/components/primitives/AspectRatio/index.js +1 -1
  171. package/dist/components/primitives/Badge/index.js +1 -1
  172. package/dist/components/primitives/Button/index.js +2 -2
  173. package/dist/components/primitives/ConfirmButton/index.js +4 -4
  174. package/dist/components/primitives/ProgressBar/index.js +1 -1
  175. package/dist/components/primitives/SplitButton/index.js +2 -2
  176. package/dist/components/primitives/StatusIndicator/index.js +1 -1
  177. package/dist/components/primitives/Tag/index.js +1 -1
  178. package/dist/components/primitives/Toggle/index.js +1 -1
  179. package/dist/components/primitives/index.js +16 -16
  180. package/dist/components/workflow/ApprovalFlow/index.js +3 -3
  181. package/dist/components/workflow/CommentSystem/index.js +3 -3
  182. package/dist/components/workflow/Dashboard/index.js +3 -3
  183. package/dist/components/workflow/DashboardBuilder/index.js +3 -3
  184. package/dist/components/workflow/KanbanBoard/index.js +3 -3
  185. package/dist/components/workflow/ReportGenerator/index.js +3 -3
  186. package/dist/components/workflow/TaskStatus/index.js +2 -2
  187. package/dist/components/workflow/Wizard/index.js +3 -3
  188. package/dist/components/workflow/index.js +12 -12
  189. package/dist/index.d.ts +156 -50
  190. package/dist/index.js +104 -104
  191. package/dist/styles.css +23 -0
  192. package/package.json +2 -2
  193. package/dist/chunk-23BHD62H.js.map +0 -1
  194. package/dist/chunk-2UGDLAYC.js.map +0 -1
  195. package/dist/chunk-33JGPMUW.js.map +0 -1
  196. package/dist/chunk-3WOGOTOV.js.map +0 -1
  197. package/dist/chunk-4MQNDQ4O.js.map +0 -1
  198. package/dist/chunk-65YSTUD2.js.map +0 -1
  199. package/dist/chunk-CP2PEDG2.js.map +0 -1
  200. package/dist/chunk-FSMHI7DW.js.map +0 -1
  201. package/dist/chunk-GAP3OZR7.js +0 -223
  202. package/dist/chunk-GAP3OZR7.js.map +0 -1
  203. package/dist/chunk-HKXQLWGR.js.map +0 -1
  204. package/dist/chunk-IBVCSZCH.js.map +0 -1
  205. package/dist/chunk-ICAQYWCX.js +0 -153
  206. package/dist/chunk-ICAQYWCX.js.map +0 -1
  207. package/dist/chunk-IRKDMISK.js.map +0 -1
  208. package/dist/chunk-J62TFQHR.js.map +0 -1
  209. package/dist/chunk-KPNNSUXM.js.map +0 -1
  210. package/dist/chunk-KR3IVNQH.js.map +0 -1
  211. package/dist/chunk-OWIFNJXZ.js.map +0 -1
  212. package/dist/chunk-PLLJNHWU.js.map +0 -1
  213. package/dist/chunk-R4UOT76L.js.map +0 -1
  214. package/dist/chunk-SHS6EGWS.js +0 -226
  215. package/dist/chunk-SHS6EGWS.js.map +0 -1
  216. package/dist/chunk-TNROOKX3.js.map +0 -1
  217. package/dist/chunk-UFRMZ3M6.js.map +0 -1
  218. package/dist/chunk-VFALJSXB.js.map +0 -1
  219. package/dist/chunk-VPNFYQBL.js.map +0 -1
  220. package/dist/chunk-XD5LE64P.js +0 -311
  221. package/dist/chunk-XD5LE64P.js.map +0 -1
  222. package/dist/chunk-XV6NXXXP.js +0 -206
  223. package/dist/chunk-XV6NXXXP.js.map +0 -1
  224. package/dist/chunk-YWA63YN3.js.map +0 -1
  225. package/dist/chunk-Z3FL7LEK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/List/List.tsx"],"names":[],"mappings":"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","file":"chunk-V7XHE25E.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\n\n// ============================================\n// TYPES\n// ============================================\ninterface ListItem {\n avatar?: string\n badge?: string\n description?: string\n disabled?: boolean\n id: string\n label: string\n onClick?: () => void\n}\n\n// ============================================\n// VARIANTS\n// ============================================\nconst listVariants = cva(\n \"flex flex-col bg-background text-foreground transition-colors duration-150\",\n {\n variants: {\n variant: {\n default: \"border border-border rounded-md\",\n flat: \"divide-y divide-border\",\n card: \"gap-4 flex-col\",\n minimal: \"divide-y divide-border border-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst listItemVariants = cva(\n \"group/list-item flex items-center text-sm transition-colors duration-150 outline-none\",\n {\n variants: {\n variant: {\n default: \"border-b border-border last:border-b-0\",\n flat: \"\",\n card: \"border border-border rounded-md bg-background\",\n minimal: \"\",\n },\n size: {\n sm: \"px-3 py-2 min-h-8 gap-2\",\n default: \"px-4 py-3 min-h-10 gap-3\",\n lg: \"px-5 py-4 min-h-12 gap-4\",\n },\n selectable: {\n true: \"cursor-pointer hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n false: \"\",\n },\n selected: {\n true: \"bg-muted\",\n false: \"\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n selectable: false,\n selected: false,\n disabled: false,\n },\n }\n)\n\n// ============================================\n// LIST COMPONENT\n// ============================================\ntype ListProps = React.ComponentProps<\"ul\"> &\n VariantProps<typeof listVariants> & {\n items?: ListItem[]\n loading?: boolean\n multiple?: boolean\n onSelect?: (item: ListItem) => void\n selectable?: boolean\n }\n\nfunction List({\n className,\n variant = \"default\",\n items,\n selectable = false,\n multiple = false,\n loading = false,\n onSelect,\n children,\n ref,\n ...props\n}: ListProps) {\n const [selectedIds, setSelectedIds] = React.useState<Set<string>>(() => new Set())\n const [focusedIndex, setFocusedIndex] = React.useState<number>(-1)\n const itemRefsRef = React.useRef<Map<number, HTMLLIElement>>(new Map())\n\n const handleSelect = React.useCallback(\n (item: ListItem) => {\n if (item.disabled) return\n\n if (multiple) {\n setSelectedIds((prev) => {\n const newSet = new Set(prev)\n if (newSet.has(item.id)) {\n newSet.delete(item.id)\n } else {\n newSet.add(item.id)\n }\n return newSet\n })\n } else {\n setSelectedIds(new Set([item.id]))\n }\n\n onSelect?.(item)\n item.onClick?.()\n },\n [multiple, onSelect]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLUListElement>) => {\n if (!items || items.length === 0) return\n\n const enabledIndices = items\n .map((item, index) => (item.disabled ? -1 : index))\n .filter((i) => i !== -1)\n\n let newIndex = focusedIndex\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault()\n if (focusedIndex === -1) {\n newIndex = enabledIndices[0] ?? -1\n } else {\n const currentEnabledPos = enabledIndices.indexOf(focusedIndex)\n const nextPos = Math.min(\n currentEnabledPos + 1,\n enabledIndices.length - 1\n )\n newIndex = enabledIndices[nextPos] ?? focusedIndex\n }\n break\n case \"ArrowUp\":\n e.preventDefault()\n if (focusedIndex === -1) {\n newIndex = enabledIndices[enabledIndices.length - 1] ?? -1\n } else {\n const currentEnabledPos = enabledIndices.indexOf(focusedIndex)\n const prevPos = Math.max(currentEnabledPos - 1, 0)\n newIndex = enabledIndices[prevPos] ?? focusedIndex\n }\n break\n case \"Enter\":\n case \" \":\n e.preventDefault()\n if (focusedIndex >= 0 && selectable && items[focusedIndex]) {\n handleSelect(items[focusedIndex])\n }\n break\n case \"Home\":\n e.preventDefault()\n newIndex = enabledIndices[0] ?? -1\n break\n case \"End\":\n e.preventDefault()\n newIndex = enabledIndices[enabledIndices.length - 1] ?? -1\n break\n }\n\n if (newIndex !== focusedIndex) {\n setFocusedIndex(newIndex)\n itemRefsRef.current.get(newIndex)?.focus()\n }\n },\n [items, focusedIndex, selectable, handleSelect]\n )\n\n // Loading skeleton\n if (loading) {\n return (\n <ul\n ref={ref}\n data-loading\n aria-busy=\"true\"\n aria-label=\"Loading list\"\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {[1, 2, 3].map((i) => (\n <li\n key={i}\n className={cn(listItemVariants({ variant, size: \"default\" }))}\n data-slot=\"list-item\"\n >\n <SkeletonLoader className=\"size-10 rounded-full\" />\n <div className=\"flex flex-1 flex-col gap-1\">\n <SkeletonLoader className=\"h-4 w-32\" />\n <SkeletonLoader className=\"h-3 w-24\" />\n </div>\n </li>\n ))}\n </ul>\n )\n }\n\n // Render with items prop\n if (items && items.length > 0) {\n return (\n <ul\n ref={ref}\n aria-label={props[\"aria-label\"]}\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role={selectable ? \"listbox\" : \"list\"}\n tabIndex={selectable ? 0 : undefined}\n onKeyDown={selectable ? handleKeyDown : undefined}\n {...props}\n >\n {items.map((item, index) => {\n const isSelected = selectedIds.has(item.id)\n const isFocused = focusedIndex === index\n\n return (\n <ListItemInternal\n key={item.id}\n ref={(el) => {\n if (el) {\n itemRefsRef.current.set(index, el)\n } else {\n itemRefsRef.current.delete(index)\n }\n }}\n tabIndex={\n selectable\n ? isFocused || (focusedIndex === -1 && index === 0)\n ? 0\n : -1\n : undefined\n }\n aria-disabled={item.disabled ? true : undefined}\n aria-selected={selectable ? isSelected : undefined}\n data-focused={isFocused ? true : undefined}\n data-selected={isSelected ? true : undefined}\n disabled={item.disabled}\n isFocused={isFocused}\n item={item}\n selectable={selectable}\n selected={isSelected}\n variant={variant}\n onClick={\n selectable && !item.disabled\n ? () => { handleSelect(item); }\n : undefined\n }\n />\n )\n })}\n </ul>\n )\n }\n\n // Render with children\n return (\n <ul\n ref={ref}\n aria-label={props[\"aria-label\"]}\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {children}\n </ul>\n )\n}\n\n// ============================================\n// INTERNAL LIST ITEM (for items prop rendering)\n// ============================================\ninterface ListItemInternalProps\n extends Omit<React.ComponentProps<\"li\">, \"onClick\"> {\n disabled?: boolean\n isFocused?: boolean\n item: ListItem\n onClick?: () => void\n selectable?: boolean\n selected?: boolean\n variant?: \"card\" | \"default\" | \"flat\" | \"minimal\" | null\n}\n\nfunction ListItemInternal({\n ref,\n item,\n variant = \"default\",\n selectable = false,\n selected = false,\n disabled = false,\n isFocused = false,\n onClick,\n className,\n ...props\n}: ListItemInternalProps & { ref?: React.Ref<HTMLLIElement | null> }) {\n return (\n <li\n ref={ref}\n className={cn(\n listItemVariants({\n variant,\n size: \"default\",\n selectable,\n selected,\n disabled,\n }),\n isFocused && \"ring-[3px] ring-ring/50\",\n className\n )}\n data-slot=\"list-item\"\n role={selectable ? \"option\" : undefined}\n onClick={onClick}\n {...props}\n >\n {item.avatar && (\n <Avatar className=\"size-10\" data-slot=\"list-item-avatar\">\n <AvatarImage alt={item.label} src={item.avatar} />\n <AvatarFallback>\n {item.label.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n )}\n\n <div className=\"flex flex-1 flex-col gap-0.5\" data-slot=\"list-item-content\">\n <span className=\"font-medium leading-snug\">{item.label}</span>\n {item.description && (\n <span\n className=\"text-muted-foreground text-xs leading-normal\"\n data-slot=\"list-item-description\"\n >\n {item.description}\n </span>\n )}\n </div>\n\n {item.badge && (\n <div data-slot=\"list-item-actions\">\n <Badge color=\"muted\" type=\"pill-color\">{item.badge}</Badge>\n </div>\n )}\n </li>\n )\n }\n\n// ============================================\n// PUBLIC LIST ITEM COMPONENT\n// ============================================\ninterface ListItemProps extends Omit<React.ComponentProps<\"li\">, \"disabled\"> {\n disabled?: boolean\n selectable?: boolean\n selected?: boolean\n size?: \"default\" | \"lg\" | \"sm\"\n variant?: \"card\" | \"default\" | \"flat\" | \"minimal\"\n}\n\nfunction ListItem({\n className,\n variant = \"default\",\n size = \"default\",\n selectable = false,\n selected = false,\n disabled = false,\n ref,\n ...restProps\n}: ListItemProps) {\n return (\n <li\n ref={ref}\n className={cn(\n listItemVariants({ variant, size, selectable, selected, disabled }),\n className\n )}\n aria-disabled={disabled ? true : undefined}\n aria-selected={selectable ? selected : undefined}\n data-disabled={disabled ? true : undefined}\n data-selected={selected ? true : undefined}\n data-size={size}\n data-slot=\"list-item\"\n data-variant={variant}\n role={selectable ? \"option\" : undefined}\n tabIndex={selectable && !disabled ? 0 : undefined}\n {...restProps}\n />\n )\n}\n\n// ============================================\n// LIST ITEM CONTENT\n// ============================================\nfunction ListItemContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex flex-1 flex-col gap-0.5\", className)}\n data-slot=\"list-item-content\"\n {...props}\n />\n )\n}\n\n// ============================================\n// LIST ITEM ACTIONS\n// ============================================\nfunction ListItemActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n data-slot=\"list-item-actions\"\n {...props}\n />\n )\n}\n\n// ============================================\n// EXPORTS\n// ============================================\nexport {\n List,\n ListItem,\n ListItemActions,\n ListItemContent,\n listItemVariants,\n listVariants,\n}\nexport type { ListItemProps, ListItem as ListItemType, ListProps }\n"]}
1
+ {"version":3,"sources":["../src/components/data-display/List/List.tsx"],"names":[],"mappings":"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","file":"chunk-ON7WFRYH.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\n\n// ============================================\n// TYPES\n// ============================================\ninterface ListItem {\n avatar?: string\n badge?: string\n description?: string\n disabled?: boolean\n id: string\n label: string\n onClick?: () => void\n}\n\n// ============================================\n// VARIANTS\n// ============================================\nconst listVariants = cva(\n \"flex flex-col bg-background text-foreground transition-colors duration-150\",\n {\n variants: {\n variant: {\n default: \"border border-border rounded-md\",\n flat: \"divide-y divide-border\",\n card: \"gap-4 flex-col\",\n minimal: \"divide-y divide-border border-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst listItemVariants = cva(\n \"group/list-item flex items-center text-sm transition-colors duration-150 outline-none\",\n {\n variants: {\n variant: {\n default: \"border-b border-border last:border-b-0\",\n flat: \"\",\n card: \"border border-border rounded-md bg-background\",\n minimal: \"\",\n },\n size: {\n sm: \"px-3 py-2 min-h-8 gap-2\",\n default: \"px-4 py-3 min-h-10 gap-3\",\n lg: \"px-5 py-4 min-h-12 gap-4\",\n },\n selectable: {\n true: \"cursor-pointer hover:bg-muted/50 focus-visible:bg-muted/50 focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n false: \"\",\n },\n selected: {\n true: \"bg-muted\",\n false: \"\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n selectable: false,\n selected: false,\n disabled: false,\n },\n }\n)\n\n// ============================================\n// LIST COMPONENT\n// ============================================\ntype ListProps = React.ComponentProps<\"ul\"> &\n VariantProps<typeof listVariants> & {\n items?: ListItem[]\n loading?: boolean\n multiple?: boolean\n onSelect?: (item: ListItem) => void\n selectable?: boolean\n }\n\nfunction List({\n className,\n variant = \"default\",\n items,\n selectable = false,\n multiple = false,\n loading = false,\n onSelect,\n children,\n ref,\n ...props\n}: ListProps) {\n const [selectedIds, setSelectedIds] = React.useState<Set<string>>(() => new Set())\n const [focusedIndex, setFocusedIndex] = React.useState<number>(-1)\n const itemRefsRef = React.useRef<Map<number, HTMLLIElement>>(new Map())\n\n const handleSelect = React.useCallback(\n (item: ListItem) => {\n if (item.disabled) return\n\n if (multiple) {\n setSelectedIds((prev) => {\n const newSet = new Set(prev)\n if (newSet.has(item.id)) {\n newSet.delete(item.id)\n } else {\n newSet.add(item.id)\n }\n return newSet\n })\n } else {\n setSelectedIds(new Set([item.id]))\n }\n\n onSelect?.(item)\n item.onClick?.()\n },\n [multiple, onSelect]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLUListElement>) => {\n if (!items || items.length === 0) return\n\n const enabledIndices = items\n .map((item, index) => (item.disabled ? -1 : index))\n .filter((i) => i !== -1)\n\n let newIndex = focusedIndex\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault()\n if (focusedIndex === -1) {\n newIndex = enabledIndices[0] ?? -1\n } else {\n const currentEnabledPos = enabledIndices.indexOf(focusedIndex)\n const nextPos = Math.min(\n currentEnabledPos + 1,\n enabledIndices.length - 1\n )\n newIndex = enabledIndices[nextPos] ?? focusedIndex\n }\n break\n case \"ArrowUp\":\n e.preventDefault()\n if (focusedIndex === -1) {\n newIndex = enabledIndices[enabledIndices.length - 1] ?? -1\n } else {\n const currentEnabledPos = enabledIndices.indexOf(focusedIndex)\n const prevPos = Math.max(currentEnabledPos - 1, 0)\n newIndex = enabledIndices[prevPos] ?? focusedIndex\n }\n break\n case \"Enter\":\n case \" \":\n e.preventDefault()\n if (focusedIndex >= 0 && selectable && items[focusedIndex]) {\n handleSelect(items[focusedIndex])\n }\n break\n case \"Home\":\n e.preventDefault()\n newIndex = enabledIndices[0] ?? -1\n break\n case \"End\":\n e.preventDefault()\n newIndex = enabledIndices[enabledIndices.length - 1] ?? -1\n break\n }\n\n if (newIndex !== focusedIndex) {\n setFocusedIndex(newIndex)\n itemRefsRef.current.get(newIndex)?.focus()\n }\n },\n [items, focusedIndex, selectable, handleSelect]\n )\n\n // Loading skeleton\n if (loading) {\n return (\n <ul\n ref={ref}\n data-loading\n aria-busy=\"true\"\n aria-label=\"Loading list\"\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {[1, 2, 3].map((i) => (\n <li\n key={i}\n className={cn(listItemVariants({ variant, size: \"default\" }))}\n data-slot=\"list-item\"\n >\n <SkeletonLoader className=\"size-10 rounded-full\" />\n <div className=\"flex flex-1 flex-col gap-1\">\n <SkeletonLoader className=\"h-4 w-32\" />\n <SkeletonLoader className=\"h-3 w-24\" />\n </div>\n </li>\n ))}\n </ul>\n )\n }\n\n // Render with items prop\n if (items && items.length > 0) {\n return (\n <ul\n ref={ref}\n aria-label={props[\"aria-label\"]}\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role={selectable ? \"listbox\" : \"list\"}\n tabIndex={selectable ? 0 : undefined}\n onKeyDown={selectable ? handleKeyDown : undefined}\n {...props}\n >\n {items.map((item, index) => {\n const isSelected = selectedIds.has(item.id)\n const isFocused = focusedIndex === index\n\n return (\n <ListItemInternal\n key={item.id}\n ref={(el) => {\n if (el) {\n itemRefsRef.current.set(index, el)\n } else {\n itemRefsRef.current.delete(index)\n }\n }}\n tabIndex={\n selectable\n ? isFocused || (focusedIndex === -1 && index === 0)\n ? 0\n : -1\n : undefined\n }\n aria-disabled={item.disabled ? true : undefined}\n aria-selected={selectable ? isSelected : undefined}\n data-focused={isFocused ? true : undefined}\n data-selected={isSelected ? true : undefined}\n disabled={item.disabled}\n isFocused={isFocused}\n item={item}\n selectable={selectable}\n selected={isSelected}\n variant={variant}\n onClick={\n selectable && !item.disabled\n ? () => { handleSelect(item); }\n : undefined\n }\n />\n )\n })}\n </ul>\n )\n }\n\n // Render with children\n return (\n <ul\n ref={ref}\n aria-label={props[\"aria-label\"]}\n className={cn(listVariants({ variant }), className)}\n data-slot=\"list\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {children}\n </ul>\n )\n}\n\n// ============================================\n// INTERNAL LIST ITEM (for items prop rendering)\n// ============================================\ninterface ListItemInternalProps\n extends Omit<React.ComponentProps<\"li\">, \"onClick\"> {\n disabled?: boolean\n isFocused?: boolean\n item: ListItem\n onClick?: () => void\n selectable?: boolean\n selected?: boolean\n variant?: \"card\" | \"default\" | \"flat\" | \"minimal\" | null\n}\n\nfunction ListItemInternal({\n ref,\n item,\n variant = \"default\",\n selectable = false,\n selected = false,\n disabled = false,\n isFocused = false,\n onClick,\n className,\n ...props\n}: ListItemInternalProps & { ref?: React.Ref<HTMLLIElement | null> }) {\n return (\n <li\n ref={ref}\n className={cn(\n listItemVariants({\n variant,\n size: \"default\",\n selectable,\n selected,\n disabled,\n }),\n isFocused && \"ring-[3px] ring-ring/50\",\n className\n )}\n data-slot=\"list-item\"\n role={selectable ? \"option\" : undefined}\n onClick={onClick}\n {...props}\n >\n {item.avatar && (\n <Avatar className=\"size-10\" data-slot=\"list-item-avatar\">\n <AvatarImage alt={item.label} src={item.avatar} />\n <AvatarFallback>\n {item.label.slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n )}\n\n <div className=\"flex flex-1 flex-col gap-0.5\" data-slot=\"list-item-content\">\n <span className=\"font-medium leading-snug\">{item.label}</span>\n {item.description && (\n <span\n className=\"text-muted-foreground text-xs leading-normal\"\n data-slot=\"list-item-description\"\n >\n {item.description}\n </span>\n )}\n </div>\n\n {item.badge && (\n <div data-slot=\"list-item-actions\">\n <Badge color=\"muted\" type=\"pill-color\">{item.badge}</Badge>\n </div>\n )}\n </li>\n )\n }\n\n// ============================================\n// PUBLIC LIST ITEM COMPONENT\n// ============================================\ninterface ListItemProps extends Omit<React.ComponentProps<\"li\">, \"disabled\"> {\n disabled?: boolean\n selectable?: boolean\n selected?: boolean\n size?: \"default\" | \"lg\" | \"sm\"\n variant?: \"card\" | \"default\" | \"flat\" | \"minimal\"\n}\n\nfunction ListItem({\n className,\n variant = \"default\",\n size = \"default\",\n selectable = false,\n selected = false,\n disabled = false,\n ref,\n ...restProps\n}: ListItemProps) {\n return (\n <li\n ref={ref}\n className={cn(\n listItemVariants({ variant, size, selectable, selected, disabled }),\n className\n )}\n aria-disabled={disabled ? true : undefined}\n aria-selected={selectable ? selected : undefined}\n data-disabled={disabled ? true : undefined}\n data-selected={selected ? true : undefined}\n data-size={size}\n data-slot=\"list-item\"\n data-variant={variant}\n role={selectable ? \"option\" : undefined}\n tabIndex={selectable && !disabled ? 0 : undefined}\n {...restProps}\n />\n )\n}\n\n// ============================================\n// LIST ITEM CONTENT\n// ============================================\nfunction ListItemContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex flex-1 flex-col gap-0.5\", className)}\n data-slot=\"list-item-content\"\n {...props}\n />\n )\n}\n\n// ============================================\n// LIST ITEM ACTIONS\n// ============================================\nfunction ListItemActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n data-slot=\"list-item-actions\"\n {...props}\n />\n )\n}\n\n// ============================================\n// EXPORTS\n// ============================================\nexport {\n List,\n ListItem,\n ListItemActions,\n ListItemContent,\n listItemVariants,\n listVariants,\n}\nexport type { ListItemProps, ListItem as ListItemType, ListProps }\n"]}
@@ -22,7 +22,7 @@ var menuItemBase = [
22
22
  ];
23
23
  var dropdownMenuContentVariants = cva([
24
24
  ...menuContentBase,
25
- "shadow-md",
25
+ "shadow-[var(--dropdown-menu-content-shadow)]",
26
26
  "max-h-(--radix-dropdown-menu-content-available-height)",
27
27
  "origin-(--radix-dropdown-menu-content-transform-origin)",
28
28
  "overflow-x-hidden overflow-y-auto"
@@ -287,5 +287,5 @@ function DropdownMenuSubContent({
287
287
  }
288
288
 
289
289
  export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, dropdownMenuCheckboxItemVariants, dropdownMenuContentVariants, dropdownMenuIndicatorWrapperVariants, dropdownMenuItemVariants, dropdownMenuLabelVariants, dropdownMenuRadioItemVariants, dropdownMenuSeparatorVariants, dropdownMenuShortcutVariants, dropdownMenuSubContentVariants, dropdownMenuSubTriggerVariants };
290
- //# sourceMappingURL=chunk-FSMHI7DW.js.map
291
- //# sourceMappingURL=chunk-FSMHI7DW.js.map
290
+ //# sourceMappingURL=chunk-OXDWUKGP.js.map
291
+ //# sourceMappingURL=chunk-OXDWUKGP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/navigation/DropdownMenu/DropdownMenu.variants.ts","../src/components/navigation/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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","file":"chunk-OXDWUKGP.js","sourcesContent":["// DropdownMenu/DropdownMenu.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Shared animation and transition styles for menu content\n */\nconst menuContentBase = [\n \"bg-popover text-popover-foreground\",\n \"z-[var(--dropdown-menu-content-z-index)] min-w-[var(--dropdown-menu-content-min-width)] overflow-hidden rounded-[var(--dropdown-menu-content-radius)] border-[var(--dropdown-menu-content-border-width)] p-[var(--dropdown-menu-content-padding)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n]\n\n/**\n * Shared base styles for interactive menu items\n */\nconst menuItemBase = [\n \"relative flex cursor-default items-center rounded-[var(--dropdown-menu-item-radius)] text-[length:var(--dropdown-menu-item-text-size)] outline-hidden select-none\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-[var(--dropdown-menu-item-icon-size)]\",\n]\n\n/**\n * DropdownMenuContent variant styles\n */\nexport const dropdownMenuContentVariants = cva([\n ...menuContentBase,\n \"shadow-[var(--dropdown-menu-content-shadow)]\",\n \"max-h-(--radix-dropdown-menu-content-available-height)\",\n \"origin-(--radix-dropdown-menu-content-transform-origin)\",\n \"overflow-x-hidden overflow-y-auto\",\n])\n\n/**\n * DropdownMenuSubContent variant styles\n */\nexport const dropdownMenuSubContentVariants = cva([\n ...menuContentBase,\n \"shadow-lg\",\n \"origin-(--radix-dropdown-menu-content-transform-origin)\",\n])\n\n/**\n * DropdownMenuItem variant styles\n */\nexport const dropdownMenuItemVariants = cva(\n [\n ...menuItemBase,\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"px-[var(--dropdown-menu-item-padding-x)] py-[var(--dropdown-menu-item-padding-y)] gap-[var(--dropdown-menu-item-gap)]\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-[var(--dropdown-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n variant: {\n default: \"focus:bg-accent focus:text-accent-foreground\",\n destructive: [\n \"text-destructive\",\n \"focus:bg-destructive/10 dark:focus:bg-destructive/20\",\n \"focus:text-destructive\",\n \"*:[svg]:!text-destructive\",\n ],\n },\n },\n defaultVariants: {\n inset: false,\n variant: \"default\",\n },\n }\n)\n\n/**\n * DropdownMenuSubTrigger variant styles\n */\nexport const dropdownMenuSubTriggerVariants = cva(\n [\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"px-[var(--dropdown-menu-item-padding-x)] py-[var(--dropdown-menu-item-padding-y)] gap-[var(--dropdown-menu-item-gap)]\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-[var(--dropdown-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * DropdownMenuCheckboxItem variant styles\n */\nexport const dropdownMenuCheckboxItemVariants = cva([\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"py-[var(--dropdown-menu-item-padding-y)] pr-[var(--dropdown-menu-item-padding-x)] pl-[var(--dropdown-menu-item-inset-padding-left)] gap-[var(--dropdown-menu-item-gap)]\",\n])\n\n/**\n * DropdownMenuRadioItem variant styles\n */\nexport const dropdownMenuRadioItemVariants = cva([\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"py-[var(--dropdown-menu-item-padding-y)] pr-[var(--dropdown-menu-item-padding-x)] pl-[var(--dropdown-menu-item-inset-padding-left)] gap-[var(--dropdown-menu-item-gap)]\",\n])\n\n/**\n * DropdownMenuLabel variant styles\n */\nexport const dropdownMenuLabelVariants = cva(\n [\"px-[var(--dropdown-menu-item-padding-x)] py-[var(--dropdown-menu-item-padding-y)] text-[length:var(--dropdown-menu-item-text-size)] font-medium\"],\n {\n variants: {\n inset: {\n true: \"pl-[var(--dropdown-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * DropdownMenuSeparator variant styles\n */\nexport const dropdownMenuSeparatorVariants = cva([\"bg-border -mx-[var(--dropdown-menu-separator-margin-x)] my-[var(--dropdown-menu-separator-margin-y)] h-[var(--dropdown-menu-separator-height)]\"])\n\n/**\n * DropdownMenuShortcut variant styles\n */\nexport const dropdownMenuShortcutVariants = cva([\n \"text-muted-foreground ml-auto text-[length:var(--dropdown-menu-shortcut-text-size)] tracking-widest\",\n])\n\n/**\n * Item indicator wrapper styles\n */\nexport const dropdownMenuIndicatorWrapperVariants = cva([\n \"pointer-events-none absolute left-[var(--dropdown-menu-indicator-left)] flex size-[var(--dropdown-menu-indicator-size)] items-center justify-center\",\n])\n\nexport type DropdownMenuItemVariantProps = VariantProps<\n typeof dropdownMenuItemVariants\n>\nexport type DropdownMenuSubTriggerVariantProps = VariantProps<\n typeof dropdownMenuSubTriggerVariants\n>\nexport type DropdownMenuLabelVariantProps = VariantProps<\n typeof dropdownMenuLabelVariants\n>\n\n","\"use client\"\n\nimport type {\n DropdownMenuCheckboxItemProps,\n DropdownMenuContentProps,\n DropdownMenuGroupProps,\n DropdownMenuItemProps,\n DropdownMenuLabelProps,\n DropdownMenuPortalProps,\n DropdownMenuProps,\n DropdownMenuRadioGroupProps,\n DropdownMenuRadioItemProps,\n DropdownMenuSeparatorProps,\n DropdownMenuShortcutProps,\n DropdownMenuSubContentProps,\n DropdownMenuSubProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuTriggerProps,\n} from \"./DropdownMenu.types\"\n\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n dropdownMenuCheckboxItemVariants,\n dropdownMenuContentVariants,\n dropdownMenuIndicatorWrapperVariants,\n dropdownMenuItemVariants,\n dropdownMenuLabelVariants,\n dropdownMenuRadioItemVariants,\n dropdownMenuSeparatorVariants,\n dropdownMenuShortcutVariants,\n dropdownMenuSubContentVariants,\n dropdownMenuSubTriggerVariants,\n} from \"./DropdownMenu.variants\"\n\n/**\n * DropdownMenu - A menu that appears when triggered by a button or other element.\n *\n * Built on top of Radix UI DropdownMenu primitive with additional styling.\n *\n * @example\n * <DropdownMenu>\n * <DropdownMenuTrigger>Open Menu</DropdownMenuTrigger>\n * <DropdownMenuContent>\n * <DropdownMenuItem>Item 1</DropdownMenuItem>\n * <DropdownMenuItem>Item 2</DropdownMenuItem>\n * </DropdownMenuContent>\n * </DropdownMenu>\n */\nfunction DropdownMenu({ ...props }: DropdownMenuProps) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\n/**\n * DropdownMenuPortal - Renders dropdown menu content in a portal.\n */\nfunction DropdownMenuPortal({ ...props }: DropdownMenuPortalProps) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\n/**\n * DropdownMenuTrigger - Button that opens the dropdown menu.\n */\nfunction DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuContent - Main content container for the dropdown menu.\n */\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: DropdownMenuContentProps) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n className={cn(dropdownMenuContentVariants(), className)}\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\n/**\n * DropdownMenuGroup - Groups related menu items together.\n */\nfunction DropdownMenuGroup({ ...props }: DropdownMenuGroupProps) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\n/**\n * DropdownMenuItem - An interactive menu item.\n *\n * Supports inset layout and destructive variant.\n */\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: DropdownMenuItemProps) {\n return (\n <DropdownMenuPrimitive.Item\n className={cn(dropdownMenuItemVariants({ inset, variant }), className)}\n data-inset={inset}\n data-slot=\"dropdown-menu-item\"\n data-variant={variant}\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuCheckboxItem - A menu item that can be checked/unchecked.\n */\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: DropdownMenuCheckboxItemProps) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n checked={checked ?? false}\n className={cn(dropdownMenuCheckboxItemVariants(), className)}\n data-slot=\"dropdown-menu-checkbox-item\"\n {...props}\n >\n <span className={cn(dropdownMenuIndicatorWrapperVariants())}>\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\n/**\n * DropdownMenuRadioGroup - Groups radio items together.\n */\nfunction DropdownMenuRadioGroup({ ...props }: DropdownMenuRadioGroupProps) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuRadioItem - A radio menu item within a radio group.\n */\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: DropdownMenuRadioItemProps) {\n return (\n <DropdownMenuPrimitive.RadioItem\n className={cn(dropdownMenuRadioItemVariants(), className)}\n data-slot=\"dropdown-menu-radio-item\"\n {...props}\n >\n <span className={cn(dropdownMenuIndicatorWrapperVariants())}>\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\n/**\n * DropdownMenuLabel - A non-interactive label for menu sections.\n */\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: DropdownMenuLabelProps) {\n return (\n <DropdownMenuPrimitive.Label\n className={cn(dropdownMenuLabelVariants({ inset }), className)}\n data-inset={inset}\n data-slot=\"dropdown-menu-label\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuSeparator - A visual separator between menu sections.\n */\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: DropdownMenuSeparatorProps) {\n return (\n <DropdownMenuPrimitive.Separator\n className={cn(dropdownMenuSeparatorVariants(), className)}\n data-slot=\"dropdown-menu-separator\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuShortcut - Displays keyboard shortcut hints.\n */\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: DropdownMenuShortcutProps) {\n return (\n <span\n className={cn(dropdownMenuShortcutVariants(), className)}\n data-slot=\"dropdown-menu-shortcut\"\n {...props}\n />\n )\n}\n\n/**\n * DropdownMenuSub - Container for nested submenus.\n */\nfunction DropdownMenuSub({ ...props }: DropdownMenuSubProps) {\n return (\n <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n )\n}\n\n/**\n * DropdownMenuSubTrigger - Trigger for opening a submenu.\n *\n * Includes a chevron icon indicator.\n */\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: DropdownMenuSubTriggerProps) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n className={cn(dropdownMenuSubTriggerVariants({ inset }), className)}\n data-inset={inset}\n data-slot=\"dropdown-menu-sub-trigger\"\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\n/**\n * DropdownMenuSubContent - Content container for submenus.\n */\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: DropdownMenuSubContentProps) {\n return (\n <DropdownMenuPrimitive.SubContent\n className={cn(dropdownMenuSubContentVariants(), className)}\n data-slot=\"dropdown-menu-sub-content\"\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Button } from './chunk-ONQCNOLU.js';
1
+ import { Button } from './chunk-HDOR3SN3.js';
2
2
  import { cn } from './chunk-HRNDJU7D.js';
3
3
  import useEmblaCarousel from 'embla-carousel-react';
4
4
  import { ArrowLeft, ArrowRight } from 'lucide-react';
@@ -293,5 +293,5 @@ function CarouselNext({
293
293
  }
294
294
 
295
295
  export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious };
296
- //# sourceMappingURL=chunk-SJSYKUCL.js.map
297
- //# sourceMappingURL=chunk-SJSYKUCL.js.map
296
+ //# sourceMappingURL=chunk-Q335YODG.js.map
297
+ //# sourceMappingURL=chunk-Q335YODG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/Carousel/Carousel.variants.ts","../src/components/data-display/Carousel/Carousel.tsx"],"names":["api"],"mappings":"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","file":"chunk-SJSYKUCL.js","sourcesContent":["// Carousel/Carousel.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Carousel root container style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const carouselVariants = cva(\n // Base styles (always applied)\n \"relative\",\n {\n variants: {\n orientation: {\n horizontal: \"\",\n vertical: \"\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\n/**\n * Carousel content container style variants\n */\nexport const carouselContentVariants = cva(\n // Base styles (always applied)\n \"flex\",\n {\n variants: {\n orientation: {\n horizontal: \"-ml-[var(--carousel-item-gap-default)]\",\n vertical: \"-mt-[var(--carousel-item-gap-default)] flex-col\",\n },\n gap: {\n sm: \"\",\n default: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n { gap: \"sm\", orientation: \"horizontal\", class: \"-ml-[var(--carousel-item-gap-sm)]\" },\n { gap: \"default\", orientation: \"horizontal\", class: \"-ml-[var(--carousel-item-gap-default)]\" },\n { gap: \"lg\", orientation: \"horizontal\", class: \"-ml-[var(--carousel-item-gap-lg)]\" },\n { gap: \"sm\", orientation: \"vertical\", class: \"-mt-[var(--carousel-item-gap-sm)]\" },\n { gap: \"default\", orientation: \"vertical\", class: \"-mt-[var(--carousel-item-gap-default)]\" },\n { gap: \"lg\", orientation: \"vertical\", class: \"-mt-[var(--carousel-item-gap-lg)]\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n gap: \"default\",\n },\n }\n)\n\n/**\n * Carousel item style variants\n */\nexport const carouselItemVariants = cva(\n // Base styles (always applied)\n \"min-w-0 shrink-0 grow-0 basis-full\",\n {\n variants: {\n orientation: {\n horizontal: \"pl-[var(--carousel-item-gap-default)]\",\n vertical: \"pt-[var(--carousel-item-gap-default)]\",\n },\n gap: {\n sm: \"\",\n default: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n { gap: \"sm\", orientation: \"horizontal\", class: \"pl-[var(--carousel-item-gap-sm)]\" },\n { gap: \"default\", orientation: \"horizontal\", class: \"pl-[var(--carousel-item-gap-default)]\" },\n { gap: \"lg\", orientation: \"horizontal\", class: \"pl-[var(--carousel-item-gap-lg)]\" },\n { gap: \"sm\", orientation: \"vertical\", class: \"pt-[var(--carousel-item-gap-sm)]\" },\n { gap: \"default\", orientation: \"vertical\", class: \"pt-[var(--carousel-item-gap-default)]\" },\n { gap: \"lg\", orientation: \"vertical\", class: \"pt-[var(--carousel-item-gap-lg)]\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n gap: \"default\",\n },\n }\n)\n\n/**\n * Carousel navigation button style variants\n */\nexport const carouselButtonVariants = cva(\n // Base styles (always applied)\n \"absolute size-[var(--carousel-button-size)] rounded-full\",\n {\n variants: {\n orientation: {\n horizontal: \"top-1/2 -translate-y-1/2\",\n vertical: \"left-1/2 -translate-x-1/2 rotate-90\",\n },\n direction: {\n prev: \"\",\n next: \"\",\n },\n },\n compoundVariants: [\n { direction: \"prev\", orientation: \"horizontal\", class: \"-left-[var(--carousel-button-offset)]\" },\n { direction: \"next\", orientation: \"horizontal\", class: \"-right-[var(--carousel-button-offset)]\" },\n { direction: \"prev\", orientation: \"vertical\", class: \"-top-[var(--carousel-button-offset)]\" },\n { direction: \"next\", orientation: \"vertical\", class: \"-bottom-[var(--carousel-button-offset)]\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n direction: \"prev\",\n },\n }\n)\n\n// Export variant prop types\nexport type CarouselVariantProps = VariantProps<typeof carouselVariants>\nexport type CarouselContentVariantProps = VariantProps<typeof carouselContentVariants>\nexport type CarouselItemVariantProps = VariantProps<typeof carouselItemVariants>\nexport type CarouselButtonVariantProps = VariantProps<typeof carouselButtonVariants>\n","import useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n carouselButtonVariants,\n carouselContentVariants,\n carouselItemVariants,\n} from \"./Carousel.variants\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ninterface CarouselProps {\n opts?: CarouselOptions\n orientation?: \"horizontal\" | \"vertical\"\n plugins?: CarouselPlugin\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n api: ReturnType<typeof useEmblaCarousel>[1]\n canScrollNext: boolean\n canScrollPrev: boolean\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n scrollNext: () => void\n scrollPrev: () => void\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.use(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n // Update scroll state based on carousel position - state derived from carousel events\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect -- Callback invoked by useEffect, not direct call\n setCanScrollPrev(api.canScrollPrev())\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect -- Callback invoked by useEffect, not direct call\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api) return\n if (setApi) {\n // eslint-disable-next-line react-you-might-not-need-an-effect/no-pass-data-to-parent -- Required by embla-carousel API pattern\n setApi(api)\n }\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext\n value={{\n carouselRef,\n api: api,\n opts,\n orientation,\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n aria-roledescription=\"carousel\"\n className={cn(\"relative\", className)}\n data-orientation={orientation}\n data-slot=\"carousel\"\n role=\"region\"\n onKeyDownCapture={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n </CarouselContext>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n carouselContentVariants({ orientation }),\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n className={cn(\n carouselItemVariants({ orientation }),\n className\n )}\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n role=\"group\"\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n className={cn(\n carouselButtonVariants({ orientation, direction: \"prev\" }),\n className\n )}\n aria-label=\"Previous slide\"\n data-slot=\"carousel-previous\"\n disabled={!canScrollPrev}\n size={size}\n variant={variant}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n className={cn(\n carouselButtonVariants({ orientation, direction: \"next\" }),\n className\n )}\n aria-label=\"Next slide\"\n data-slot=\"carousel-next\"\n disabled={!canScrollNext}\n size={size}\n variant={variant}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n Carousel,\n type CarouselApi,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/data-display/Carousel/Carousel.variants.ts","../src/components/data-display/Carousel/Carousel.tsx"],"names":["api"],"mappings":"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","file":"chunk-Q335YODG.js","sourcesContent":["// Carousel/Carousel.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Carousel root container style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const carouselVariants = cva(\n // Base styles (always applied)\n \"relative\",\n {\n variants: {\n orientation: {\n horizontal: \"\",\n vertical: \"\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\n/**\n * Carousel content container style variants\n */\nexport const carouselContentVariants = cva(\n // Base styles (always applied)\n \"flex\",\n {\n variants: {\n orientation: {\n horizontal: \"-ml-[var(--carousel-item-gap-default)]\",\n vertical: \"-mt-[var(--carousel-item-gap-default)] flex-col\",\n },\n gap: {\n sm: \"\",\n default: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n { gap: \"sm\", orientation: \"horizontal\", class: \"-ml-[var(--carousel-item-gap-sm)]\" },\n { gap: \"default\", orientation: \"horizontal\", class: \"-ml-[var(--carousel-item-gap-default)]\" },\n { gap: \"lg\", orientation: \"horizontal\", class: \"-ml-[var(--carousel-item-gap-lg)]\" },\n { gap: \"sm\", orientation: \"vertical\", class: \"-mt-[var(--carousel-item-gap-sm)]\" },\n { gap: \"default\", orientation: \"vertical\", class: \"-mt-[var(--carousel-item-gap-default)]\" },\n { gap: \"lg\", orientation: \"vertical\", class: \"-mt-[var(--carousel-item-gap-lg)]\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n gap: \"default\",\n },\n }\n)\n\n/**\n * Carousel item style variants\n */\nexport const carouselItemVariants = cva(\n // Base styles (always applied)\n \"min-w-0 shrink-0 grow-0 basis-full\",\n {\n variants: {\n orientation: {\n horizontal: \"pl-[var(--carousel-item-gap-default)]\",\n vertical: \"pt-[var(--carousel-item-gap-default)]\",\n },\n gap: {\n sm: \"\",\n default: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n { gap: \"sm\", orientation: \"horizontal\", class: \"pl-[var(--carousel-item-gap-sm)]\" },\n { gap: \"default\", orientation: \"horizontal\", class: \"pl-[var(--carousel-item-gap-default)]\" },\n { gap: \"lg\", orientation: \"horizontal\", class: \"pl-[var(--carousel-item-gap-lg)]\" },\n { gap: \"sm\", orientation: \"vertical\", class: \"pt-[var(--carousel-item-gap-sm)]\" },\n { gap: \"default\", orientation: \"vertical\", class: \"pt-[var(--carousel-item-gap-default)]\" },\n { gap: \"lg\", orientation: \"vertical\", class: \"pt-[var(--carousel-item-gap-lg)]\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n gap: \"default\",\n },\n }\n)\n\n/**\n * Carousel navigation button style variants\n */\nexport const carouselButtonVariants = cva(\n // Base styles (always applied)\n \"absolute size-[var(--carousel-button-size)] rounded-full\",\n {\n variants: {\n orientation: {\n horizontal: \"top-1/2 -translate-y-1/2\",\n vertical: \"left-1/2 -translate-x-1/2 rotate-90\",\n },\n direction: {\n prev: \"\",\n next: \"\",\n },\n },\n compoundVariants: [\n { direction: \"prev\", orientation: \"horizontal\", class: \"-left-[var(--carousel-button-offset)]\" },\n { direction: \"next\", orientation: \"horizontal\", class: \"-right-[var(--carousel-button-offset)]\" },\n { direction: \"prev\", orientation: \"vertical\", class: \"-top-[var(--carousel-button-offset)]\" },\n { direction: \"next\", orientation: \"vertical\", class: \"-bottom-[var(--carousel-button-offset)]\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n direction: \"prev\",\n },\n }\n)\n\n// Export variant prop types\nexport type CarouselVariantProps = VariantProps<typeof carouselVariants>\nexport type CarouselContentVariantProps = VariantProps<typeof carouselContentVariants>\nexport type CarouselItemVariantProps = VariantProps<typeof carouselItemVariants>\nexport type CarouselButtonVariantProps = VariantProps<typeof carouselButtonVariants>\n","import useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n carouselButtonVariants,\n carouselContentVariants,\n carouselItemVariants,\n} from \"./Carousel.variants\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ninterface CarouselProps {\n opts?: CarouselOptions\n orientation?: \"horizontal\" | \"vertical\"\n plugins?: CarouselPlugin\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n api: ReturnType<typeof useEmblaCarousel>[1]\n canScrollNext: boolean\n canScrollPrev: boolean\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n scrollNext: () => void\n scrollPrev: () => void\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.use(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n // Update scroll state based on carousel position - state derived from carousel events\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect -- Callback invoked by useEffect, not direct call\n setCanScrollPrev(api.canScrollPrev())\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect -- Callback invoked by useEffect, not direct call\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api) return\n if (setApi) {\n // eslint-disable-next-line react-you-might-not-need-an-effect/no-pass-data-to-parent -- Required by embla-carousel API pattern\n setApi(api)\n }\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext\n value={{\n carouselRef,\n api: api,\n opts,\n orientation,\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n aria-roledescription=\"carousel\"\n className={cn(\"relative\", className)}\n data-orientation={orientation}\n data-slot=\"carousel\"\n role=\"region\"\n onKeyDownCapture={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n </CarouselContext>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n carouselContentVariants({ orientation }),\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n className={cn(\n carouselItemVariants({ orientation }),\n className\n )}\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n role=\"group\"\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n className={cn(\n carouselButtonVariants({ orientation, direction: \"prev\" }),\n className\n )}\n aria-label=\"Previous slide\"\n data-slot=\"carousel-previous\"\n disabled={!canScrollPrev}\n size={size}\n variant={variant}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n className={cn(\n carouselButtonVariants({ orientation, direction: \"next\" }),\n className\n )}\n aria-label=\"Next slide\"\n data-slot=\"carousel-next\"\n disabled={!canScrollNext}\n size={size}\n variant={variant}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n Carousel,\n type CarouselApi,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Badge } from './chunk-TNROOKX3.js';
1
+ import { Badge } from './chunk-UDY3IDCY.js';
2
2
  import { cn } from './chunk-HRNDJU7D.js';
3
3
  import { useRef, useState, useId, useCallback } from 'react';
4
4
  import { cva } from 'class-variance-authority';
@@ -195,5 +195,5 @@ function TagsInput({
195
195
  }
196
196
 
197
197
  export { TagsInput, tagsInputInputVariants, tagsInputVariants };
198
- //# sourceMappingURL=chunk-DDM2I5C6.js.map
199
- //# sourceMappingURL=chunk-DDM2I5C6.js.map
198
+ //# sourceMappingURL=chunk-R5OIL4I4.js.map
199
+ //# sourceMappingURL=chunk-R5OIL4I4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/forms/TagsInput/TagsInput.variants.ts","../src/components/forms/TagsInput/TagsInput.tsx"],"names":[],"mappings":"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","file":"chunk-DDM2I5C6.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TagsInput container variant styles using CVA\n */\nexport const tagsInputVariants = cva(\n [\n \"flex flex-wrap items-center gap-1.5 w-full min-w-0 rounded-md border bg-transparent transition-[color,box-shadow] outline-none\",\n \"dark:bg-input/30\",\n \"focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n \"aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n ],\n {\n variants: {\n size: {\n sm: \"min-h-8 px-2 py-1 text-sm\",\n md: \"min-h-9 px-3 py-1.5 text-base md:text-sm\",\n lg: \"min-h-10 px-3.5 py-2 text-base\",\n },\n variant: {\n default: \"border-input shadow-xs\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * TagsInput inner input variant styles\n */\nexport const tagsInputInputVariants = cva(\n [\n \"flex-1 min-w-24 bg-transparent outline-none\",\n \"placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed\",\n ],\n {\n variants: {\n size: {\n sm: \"text-sm h-5\",\n md: \"text-base md:text-sm h-5\",\n lg: \"text-base h-6\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type TagsInputVariantProps = VariantProps<typeof tagsInputVariants>\nexport type TagsInputInputVariantProps = VariantProps<typeof tagsInputInputVariants>\n","\"use client\"\n\nimport type { TagsInputProps } from \"./TagsInput.types\"\n\nimport * as React from \"react\"\nimport { useCallback, useId, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { tagsInputInputVariants, tagsInputVariants } from \"./TagsInput.variants\"\n\n/**\n * TagsInput - A multi-tag input component for entering and managing tags\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <TagsInput\n * defaultValue={[\"react\", \"typescript\"]}\n * placeholder=\"Add tags...\"\n * />\n *\n * // Controlled\n * const [tags, setTags] = useState([\"hello\"])\n * <TagsInput\n * value={tags}\n * onChange={setTags}\n * maxTags={5}\n * />\n * ```\n */\nfunction TagsInput({\n value: controlledValue,\n defaultValue = [],\n onChange,\n onTagAdd,\n onTagRemove,\n placeholder = \"Add tag...\",\n maxTags,\n allowDuplicates = false,\n disabled,\n size = \"md\",\n variant,\n invalid,\n delimiters = [\",\"],\n className,\n ...props\n}: TagsInputProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n const [inputValue, setInputValue] = useState(\"\")\n const [internalTags, setInternalTags] = useState<string[]>(defaultValue)\n const id = useId()\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledValue !== undefined\n const tags = isControlled ? controlledValue : internalTags\n\n const updateTags = useCallback(\n (newTags: string[]) => {\n if (!isControlled) {\n setInternalTags(newTags)\n }\n onChange?.(newTags)\n },\n [isControlled, onChange]\n )\n\n const addTag = useCallback(\n (tag: string) => {\n const trimmedTag = tag.trim()\n if (!trimmedTag) return\n\n // Check for duplicates\n if (!allowDuplicates && tags.includes(trimmedTag)) {\n setInputValue(\"\")\n return\n }\n\n // Check max tags\n if (maxTags && tags.length >= maxTags) {\n setInputValue(\"\")\n return\n }\n\n const newTags = [...tags, trimmedTag]\n updateTags(newTags)\n onTagAdd?.(trimmedTag)\n setInputValue(\"\")\n },\n [tags, allowDuplicates, maxTags, updateTags, onTagAdd]\n )\n\n const removeTag = useCallback(\n (tagToRemove: string) => {\n const newTags = tags.filter((tag) => tag !== tagToRemove)\n updateTags(newTags)\n onTagRemove?.(tagToRemove)\n },\n [tags, updateTags, onTagRemove]\n )\n\n const removeLastTag = useCallback(() => {\n const lastTag = tags[tags.length - 1]\n if (lastTag) {\n removeTag(lastTag)\n }\n }, [tags, removeTag])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || delimiters.includes(e.key)) {\n e.preventDefault()\n addTag(inputValue)\n } else if (e.key === \"Backspace\" && inputValue === \"\" && tags.length > 0) {\n removeLastTag()\n }\n },\n [inputValue, tags.length, addTag, removeLastTag, delimiters]\n )\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n\n // Check if any delimiter is in the pasted/typed value\n for (const delimiter of delimiters) {\n if (value.includes(delimiter)) {\n const parts = value.split(delimiter)\n parts.forEach((part, index) => {\n if (index < parts.length - 1) {\n addTag(part)\n } else {\n setInputValue(part)\n }\n })\n return\n }\n }\n\n setInputValue(value)\n },\n [delimiters, addTag]\n )\n\n const handleContainerClick = useCallback(() => {\n inputRef.current?.focus()\n }, [])\n\n // Map size to Tag size\n const tagSize = size === \"lg\" ? \"default\" : \"sm\"\n\n return (\n <div\n aria-disabled={disabled ?? undefined}\n aria-invalid={invalid ?? undefined}\n className={cn(tagsInputVariants({ size, variant }), className)}\n data-slot=\"tags-input\"\n onClick={handleContainerClick}\n {...props}\n >\n {tags.map((tag, index) => (\n <Badge\n key={`${tag}-${String(index)}`}\n color=\"muted\"\n size={tagSize}\n type=\"pill-color\"\n onDismiss={disabled ? undefined : () => { removeTag(tag); }}\n >\n {tag}\n </Badge>\n ))}\n <input\n ref={inputRef}\n aria-label=\"Add tag\"\n className={tagsInputInputVariants({ size })}\n data-slot=\"tags-input-field\"\n disabled={disabled}\n id={id}\n placeholder={tags.length === 0 ? placeholder : undefined}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n )\n}\n\nexport { TagsInput }\n"]}
1
+ {"version":3,"sources":["../src/components/forms/TagsInput/TagsInput.variants.ts","../src/components/forms/TagsInput/TagsInput.tsx"],"names":[],"mappings":"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","file":"chunk-R5OIL4I4.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TagsInput container variant styles using CVA\n */\nexport const tagsInputVariants = cva(\n [\n \"flex flex-wrap items-center gap-1.5 w-full min-w-0 rounded-md border bg-transparent transition-[color,box-shadow] outline-none\",\n \"dark:bg-input/30\",\n \"focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]\",\n \"aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n ],\n {\n variants: {\n size: {\n sm: \"min-h-8 px-2 py-1 text-sm\",\n md: \"min-h-9 px-3 py-1.5 text-base md:text-sm\",\n lg: \"min-h-10 px-3.5 py-2 text-base\",\n },\n variant: {\n default: \"border-input shadow-xs\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * TagsInput inner input variant styles\n */\nexport const tagsInputInputVariants = cva(\n [\n \"flex-1 min-w-24 bg-transparent outline-none\",\n \"placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed\",\n ],\n {\n variants: {\n size: {\n sm: \"text-sm h-5\",\n md: \"text-base md:text-sm h-5\",\n lg: \"text-base h-6\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type TagsInputVariantProps = VariantProps<typeof tagsInputVariants>\nexport type TagsInputInputVariantProps = VariantProps<typeof tagsInputInputVariants>\n","\"use client\"\n\nimport type { TagsInputProps } from \"./TagsInput.types\"\n\nimport * as React from \"react\"\nimport { useCallback, useId, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { tagsInputInputVariants, tagsInputVariants } from \"./TagsInput.variants\"\n\n/**\n * TagsInput - A multi-tag input component for entering and managing tags\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * <TagsInput\n * defaultValue={[\"react\", \"typescript\"]}\n * placeholder=\"Add tags...\"\n * />\n *\n * // Controlled\n * const [tags, setTags] = useState([\"hello\"])\n * <TagsInput\n * value={tags}\n * onChange={setTags}\n * maxTags={5}\n * />\n * ```\n */\nfunction TagsInput({\n value: controlledValue,\n defaultValue = [],\n onChange,\n onTagAdd,\n onTagRemove,\n placeholder = \"Add tag...\",\n maxTags,\n allowDuplicates = false,\n disabled,\n size = \"md\",\n variant,\n invalid,\n delimiters = [\",\"],\n className,\n ...props\n}: TagsInputProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n const [inputValue, setInputValue] = useState(\"\")\n const [internalTags, setInternalTags] = useState<string[]>(defaultValue)\n const id = useId()\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledValue !== undefined\n const tags = isControlled ? controlledValue : internalTags\n\n const updateTags = useCallback(\n (newTags: string[]) => {\n if (!isControlled) {\n setInternalTags(newTags)\n }\n onChange?.(newTags)\n },\n [isControlled, onChange]\n )\n\n const addTag = useCallback(\n (tag: string) => {\n const trimmedTag = tag.trim()\n if (!trimmedTag) return\n\n // Check for duplicates\n if (!allowDuplicates && tags.includes(trimmedTag)) {\n setInputValue(\"\")\n return\n }\n\n // Check max tags\n if (maxTags && tags.length >= maxTags) {\n setInputValue(\"\")\n return\n }\n\n const newTags = [...tags, trimmedTag]\n updateTags(newTags)\n onTagAdd?.(trimmedTag)\n setInputValue(\"\")\n },\n [tags, allowDuplicates, maxTags, updateTags, onTagAdd]\n )\n\n const removeTag = useCallback(\n (tagToRemove: string) => {\n const newTags = tags.filter((tag) => tag !== tagToRemove)\n updateTags(newTags)\n onTagRemove?.(tagToRemove)\n },\n [tags, updateTags, onTagRemove]\n )\n\n const removeLastTag = useCallback(() => {\n const lastTag = tags[tags.length - 1]\n if (lastTag) {\n removeTag(lastTag)\n }\n }, [tags, removeTag])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || delimiters.includes(e.key)) {\n e.preventDefault()\n addTag(inputValue)\n } else if (e.key === \"Backspace\" && inputValue === \"\" && tags.length > 0) {\n removeLastTag()\n }\n },\n [inputValue, tags.length, addTag, removeLastTag, delimiters]\n )\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n\n // Check if any delimiter is in the pasted/typed value\n for (const delimiter of delimiters) {\n if (value.includes(delimiter)) {\n const parts = value.split(delimiter)\n parts.forEach((part, index) => {\n if (index < parts.length - 1) {\n addTag(part)\n } else {\n setInputValue(part)\n }\n })\n return\n }\n }\n\n setInputValue(value)\n },\n [delimiters, addTag]\n )\n\n const handleContainerClick = useCallback(() => {\n inputRef.current?.focus()\n }, [])\n\n // Map size to Tag size\n const tagSize = size === \"lg\" ? \"default\" : \"sm\"\n\n return (\n <div\n aria-disabled={disabled ?? undefined}\n aria-invalid={invalid ?? undefined}\n className={cn(tagsInputVariants({ size, variant }), className)}\n data-slot=\"tags-input\"\n onClick={handleContainerClick}\n {...props}\n >\n {tags.map((tag, index) => (\n <Badge\n key={`${tag}-${String(index)}`}\n color=\"muted\"\n size={tagSize}\n type=\"pill-color\"\n onDismiss={disabled ? undefined : () => { removeTag(tag); }}\n >\n {tag}\n </Badge>\n ))}\n <input\n ref={inputRef}\n aria-label=\"Add tag\"\n className={tagsInputInputVariants({ size })}\n data-slot=\"tags-input-field\"\n disabled={disabled}\n id={id}\n placeholder={tags.length === 0 ? placeholder : undefined}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n )\n}\n\nexport { TagsInput }\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Tabs, TabsList, TabsTrigger, TabsContent } from './chunk-NGR4HFVA.js';
2
- import { Toggle } from './chunk-3WOGOTOV.js';
2
+ import { Toggle } from './chunk-UPYT2XM5.js';
3
3
  import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from './chunk-ZUFM33AV.js';
4
4
  import { Divider } from './chunk-3L5G7VI2.js';
5
5
  import { cn } from './chunk-HRNDJU7D.js';
@@ -535,5 +535,5 @@ function MarkdownEditor({
535
535
  }
536
536
 
537
537
  export { MarkdownEditor, MarkdownHelp, MarkdownPreview, MarkdownToolbar };
538
- //# sourceMappingURL=chunk-FYJHWYPM.js.map
539
- //# sourceMappingURL=chunk-FYJHWYPM.js.map
538
+ //# sourceMappingURL=chunk-S524YVMO.js.map
539
+ //# sourceMappingURL=chunk-S524YVMO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/advanced/MarkdownEditor/MarkdownEditor.variants.ts","../src/components/advanced/MarkdownEditor/MarkdownEditor.tsx"],"names":[],"mappings":"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","file":"chunk-FYJHWYPM.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\nexport const markdownEditorVariants = cva(\n \"bg-background text-foreground border rounded-md overflow-hidden\",\n {\n variants: {\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n disabled: false,\n },\n }\n)\n\nexport const markdownToolbarVariants = cva(\n \"bg-muted flex flex-wrap items-center gap-1 border-b p-1\",\n {\n variants: {\n position: {\n top: \"rounded-t-md\",\n bottom: \"rounded-b-md border-t border-b-0\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n\nexport const markdownEditorAreaVariants = cva(\n \"font-mono text-sm resize-none bg-background p-4 focus:outline-none w-full\",\n {\n variants: {\n disabled: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n disabled: false,\n },\n }\n)\n\nexport const markdownPreviewVariants = cva(\n \"prose prose-sm dark:prose-invert max-w-none p-4 bg-muted/50 overflow-auto\",\n {\n variants: {\n mode: {\n split: \"flex-1\",\n tabs: \"\",\n preview: \"\",\n },\n },\n defaultVariants: {\n mode: \"tabs\",\n },\n }\n)\n","\"use client\"\n\nimport type {\n MarkdownEditorProps,\n MarkdownEditorRef,\n MarkdownHelpProps,\n MarkdownPreviewProps,\n MarkdownToolbarProps,\n} from \"./MarkdownEditor.types\"\n\nimport {\n BoldIcon,\n CodeIcon,\n Heading1Icon,\n Heading2Icon,\n Heading3Icon,\n HelpCircleIcon,\n ImageIcon,\n ItalicIcon,\n LinkIcon,\n ListIcon,\n ListOrderedIcon,\n ListTodoIcon,\n QuoteIcon,\n StrikethroughIcon,\n} from \"lucide-react\"\nimport { marked } from \"marked\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"../../feedback/Dialog\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../navigation/Tabs\"\nimport { Divider } from \"../../primitives/Divider\"\nimport { Toggle } from \"../../primitives/Toggle\"\nimport {\n markdownEditorAreaVariants,\n markdownEditorVariants,\n markdownPreviewVariants,\n markdownToolbarVariants,\n} from \"./MarkdownEditor.variants\"\n\n// Configure marked for security\nmarked.setOptions({\n breaks: true,\n gfm: true,\n})\n\n/**\n * MarkdownHelp - Modal with markdown syntax reference\n */\nfunction MarkdownHelp({ open, onOpenChange }: MarkdownHelpProps) {\n const syntaxExamples = [\n { syntax: \"**bold**\", description: \"Bold text\" },\n { syntax: \"*italic*\", description: \"Italic text\" },\n { syntax: \"~~strikethrough~~\", description: \"Strikethrough\" },\n { syntax: \"# Heading 1\", description: \"Large heading\" },\n { syntax: \"## Heading 2\", description: \"Medium heading\" },\n { syntax: \"### Heading 3\", description: \"Small heading\" },\n { syntax: \"[link](url)\", description: \"Hyperlink\" },\n { syntax: \"![alt](url)\", description: \"Image\" },\n { syntax: \"> quote\", description: \"Blockquote\" },\n { syntax: \"`code`\", description: \"Inline code\" },\n { syntax: \"```code block```\", description: \"Code block\" },\n { syntax: \"- item\", description: \"Unordered list\" },\n { syntax: \"1. item\", description: \"Ordered list\" },\n { syntax: \"- [ ] task\", description: \"Task list\" },\n ]\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Markdown Syntax</DialogTitle>\n <DialogDescription>\n Quick reference for markdown formatting\n </DialogDescription>\n </DialogHeader>\n <div className=\"grid grid-cols-2 gap-2 text-sm\">\n {syntaxExamples.map(({ syntax, description }) => (\n <div key={syntax} className=\"flex items-center gap-2\">\n <code className=\"bg-muted rounded px-1.5 py-0.5 font-mono text-xs\">\n {syntax}\n </code>\n <span className=\"text-muted-foreground\">{description}</span>\n </div>\n ))}\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\n/**\n * MarkdownPreview - Renders markdown content as HTML\n */\nfunction MarkdownPreview({ content, className }: MarkdownPreviewProps) {\n const html = React.useMemo(() => {\n if (!content) return \"\"\n return marked.parse(content) as string\n }, [content])\n\n return (\n <div\n className={cn(markdownPreviewVariants(), className)}\n // eslint-disable-next-line @eslint-react/dom/no-dangerously-set-innerhtml -- required for markdown rendering\n dangerouslySetInnerHTML={{ __html: html }}\n data-slot=\"markdown-preview\"\n />\n )\n}\n\n/**\n * MarkdownToolbar - Formatting toolbar for the editor\n */\nfunction MarkdownToolbar({\n className,\n disabled = false,\n editorRef,\n showHelp = true,\n onHelpClick,\n}: MarkdownToolbarProps) {\n const handleAction = React.useCallback(\n (before: string, after: string) => {\n if (disabled || !editorRef.current) return\n editorRef.current.wrapSelection(before, after)\n },\n [disabled, editorRef]\n )\n\n const handleInsert = React.useCallback(\n (text: string) => {\n if (disabled || !editorRef.current) return\n editorRef.current.insertText(text)\n },\n [disabled, editorRef]\n )\n\n return (\n <div\n aria-label=\"Markdown formatting\"\n className={cn(markdownToolbarVariants(), className)}\n data-slot=\"markdown-toolbar\"\n role=\"toolbar\"\n >\n {/* Text formatting */}\n <Toggle\n aria-label=\"Bold (Ctrl+B)\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"**\", \"**\"); }}\n >\n <BoldIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Italic (Ctrl+I)\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"*\", \"*\"); }}\n >\n <ItalicIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Strikethrough\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"~~\", \"~~\"); }}\n >\n <StrikethroughIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Inline code (Ctrl+E)\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"`\", \"`\"); }}\n >\n <CodeIcon className=\"size-4\" />\n </Toggle>\n\n <Divider className=\"mx-1 h-6\" orientation=\"vertical\" />\n\n {/* Headings */}\n <Toggle\n aria-label=\"Heading 1\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"# \"); }}\n >\n <Heading1Icon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Heading 2\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"## \"); }}\n >\n <Heading2Icon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Heading 3\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"### \"); }}\n >\n <Heading3Icon className=\"size-4\" />\n </Toggle>\n\n <Divider className=\"mx-1 h-6\" orientation=\"vertical\" />\n\n {/* Lists */}\n <Toggle\n aria-label=\"Bullet list\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"- \"); }}\n >\n <ListIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Numbered list\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"1. \"); }}\n >\n <ListOrderedIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Task list\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"- [ ] \"); }}\n >\n <ListTodoIcon className=\"size-4\" />\n </Toggle>\n\n <Divider className=\"mx-1 h-6\" orientation=\"vertical\" />\n\n {/* Blocks */}\n <Toggle\n aria-label=\"Quote\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"> \"); }}\n >\n <QuoteIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Link (Ctrl+K)\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"[\", \"](url)\"); }}\n >\n <LinkIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Image\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"![\", \"](url)\"); }}\n >\n <ImageIcon className=\"size-4\" />\n </Toggle>\n\n {showHelp && (\n <>\n <Divider className=\"mx-1 h-6\" orientation=\"vertical\" />\n <Toggle\n aria-label=\"Markdown help\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={onHelpClick}\n >\n <HelpCircleIcon className=\"size-4\" />\n </Toggle>\n </>\n )}\n </div>\n )\n}\n\n/**\n * MarkdownEditor - A markdown editor with toolbar and preview.\n *\n * Supports tabs mode (switch between editor/preview), split mode (side by side),\n * or standalone editor/preview modes.\n *\n * @example\n * ```tsx\n * const [content, setContent] = useState(\"\")\n *\n * <MarkdownEditor\n * value={content}\n * onChange={setContent}\n * placeholder=\"Write something...\"\n * />\n * ```\n */\nfunction MarkdownEditor({\n \"aria-describedby\": ariaDescribedBy,\n \"aria-label\": ariaLabel = \"Markdown editor\",\n allowImages: _allowImages = true,\n className,\n defaultValue = \"\",\n disabled = false,\n maxHeight,\n minHeight = \"200px\",\n mode = \"tabs\",\n onBlur,\n onChange,\n onFocus,\n onImageUpload: _onImageUpload,\n placeholder = \"Write markdown...\",\n readOnly = false,\n ref,\n showHelp = true,\n showToolbar = true,\n toolbar: _toolbar,\n value,\n}: MarkdownEditorProps & { ref?: React.Ref<MarkdownEditorRef> }) {\n const textareaRef = React.useRef<HTMLTextAreaElement>(null)\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [showHelpModal, setShowHelpModal] = React.useState(false)\n\n // Controlled vs uncontrolled value\n const currentValue = value ?? internalValue\n\n // Create stable ref for internal use (toolbar, etc.)\n const editorRef = React.useRef<MarkdownEditorRef | null>(null)\n\n // Expose ref methods - using useImperativeHandle directly for immediate availability\n React.useImperativeHandle(\n ref,\n () => {\n const methods: MarkdownEditorRef = {\n blur: () => textareaRef.current?.blur(),\n focus: () => textareaRef.current?.focus(),\n getSelection: () => {\n const textarea = textareaRef.current\n if (!textarea) return { start: 0, end: 0, text: \"\" }\n return {\n end: textarea.selectionEnd,\n start: textarea.selectionStart,\n text: textarea.value.substring(\n textarea.selectionStart,\n textarea.selectionEnd\n ),\n }\n },\n getValue: () => textareaRef.current?.value ?? \"\",\n insertText: (text: string) => {\n const textarea = textareaRef.current\n if (!textarea) return\n\n const start = textarea.selectionStart\n const end = textarea.selectionEnd\n const newValue =\n currentValue.slice(0, start) + text + currentValue.slice(end)\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n\n // Restore cursor position\n requestAnimationFrame(() => {\n textarea.selectionStart = start + text.length\n textarea.selectionEnd = start + text.length\n textarea.focus()\n })\n },\n setValue: (newValue: string) => {\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n },\n wrapSelection: (before: string, after: string) => {\n const textarea = textareaRef.current\n if (!textarea) return\n\n const start = textarea.selectionStart\n const end = textarea.selectionEnd\n const selectedText = currentValue.substring(start, end)\n const newText = before + selectedText + after\n const newValue =\n currentValue.slice(0, start) + newText + currentValue.slice(end)\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n\n // Select the wrapped text\n requestAnimationFrame(() => {\n textarea.selectionStart = start + before.length\n textarea.selectionEnd = start + before.length + selectedText.length\n textarea.focus()\n })\n },\n }\n // Also update internal ref for toolbar use\n editorRef.current = methods\n return methods\n },\n [currentValue, onChange, value]\n )\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n },\n [onChange, value]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (disabled || readOnly) return\n\n const isMod = e.metaKey || e.ctrlKey\n\n if (isMod && e.key === \"b\") {\n e.preventDefault()\n editorRef.current?.wrapSelection(\"**\", \"**\")\n } else if (isMod && e.key === \"i\") {\n e.preventDefault()\n editorRef.current?.wrapSelection(\"*\", \"*\")\n } else if (isMod && e.key === \"k\") {\n e.preventDefault()\n editorRef.current?.wrapSelection(\"[\", \"](url)\")\n } else if (isMod && e.key === \"e\") {\n e.preventDefault()\n editorRef.current?.wrapSelection(\"`\", \"`\")\n }\n },\n [disabled, readOnly]\n )\n\n const isDisabled = disabled || readOnly\n\n const editorStyle: React.CSSProperties = {\n maxHeight,\n minHeight,\n }\n\n const renderEditor = () => (\n <textarea\n ref={textareaRef}\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n aria-multiline=\"true\"\n className={cn(markdownEditorAreaVariants({ disabled: isDisabled }))}\n disabled={disabled}\n placeholder={placeholder}\n readOnly={readOnly}\n role=\"textbox\"\n style={editorStyle}\n value={currentValue}\n onBlur={onBlur}\n onChange={handleChange}\n onFocus={onFocus}\n onKeyDown={handleKeyDown}\n />\n )\n\n const renderPreview = () => (\n <MarkdownPreview\n className={mode === \"split\" ? \"flex-1\" : undefined}\n content={currentValue}\n />\n )\n\n const renderContent = () => {\n switch (mode) {\n case \"editor\":\n return renderEditor()\n\n case \"preview\":\n return renderPreview()\n\n case \"split\":\n return (\n <div className=\"flex flex-1\">\n <div className=\"flex-1 overflow-auto border-r\" style={editorStyle}>\n {renderEditor()}\n </div>\n <div className=\"flex-1 overflow-auto\" style={editorStyle}>\n {renderPreview()}\n </div>\n </div>\n )\n\n case \"tabs\":\n default:\n return (\n <Tabs className=\"flex-1\" defaultValue=\"editor\">\n <TabsList className=\"mx-2 mt-2\">\n <TabsTrigger value=\"editor\">Editor</TabsTrigger>\n <TabsTrigger value=\"preview\">Preview</TabsTrigger>\n </TabsList>\n <TabsContent className=\"mt-0\" value=\"editor\">\n {renderEditor()}\n </TabsContent>\n <TabsContent className=\"mt-0\" value=\"preview\">\n {renderPreview()}\n </TabsContent>\n </Tabs>\n )\n }\n }\n\n return (\n <>\n <div\n className={cn(markdownEditorVariants({ disabled }), className)}\n data-slot=\"markdown-editor\"\n >\n {showToolbar && mode !== \"preview\" && (\n <MarkdownToolbar\n disabled={isDisabled}\n editorRef={editorRef as React.RefObject<MarkdownEditorRef>}\n showHelp={showHelp}\n onHelpClick={() => { setShowHelpModal(true); }}\n />\n )}\n {renderContent()}\n </div>\n\n <MarkdownHelp open={showHelpModal} onOpenChange={setShowHelpModal} />\n </>\n )\n}\n\nexport { MarkdownEditor, MarkdownHelp, MarkdownPreview, MarkdownToolbar }\n"]}
1
+ {"version":3,"sources":["../src/components/advanced/MarkdownEditor/MarkdownEditor.variants.ts","../src/components/advanced/MarkdownEditor/MarkdownEditor.tsx"],"names":[],"mappings":"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","file":"chunk-S524YVMO.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\nexport const markdownEditorVariants = cva(\n \"bg-background text-foreground border rounded-md overflow-hidden\",\n {\n variants: {\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n disabled: false,\n },\n }\n)\n\nexport const markdownToolbarVariants = cva(\n \"bg-muted flex flex-wrap items-center gap-1 border-b p-1\",\n {\n variants: {\n position: {\n top: \"rounded-t-md\",\n bottom: \"rounded-b-md border-t border-b-0\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n\nexport const markdownEditorAreaVariants = cva(\n \"font-mono text-sm resize-none bg-background p-4 focus:outline-none w-full\",\n {\n variants: {\n disabled: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n disabled: false,\n },\n }\n)\n\nexport const markdownPreviewVariants = cva(\n \"prose prose-sm dark:prose-invert max-w-none p-4 bg-muted/50 overflow-auto\",\n {\n variants: {\n mode: {\n split: \"flex-1\",\n tabs: \"\",\n preview: \"\",\n },\n },\n defaultVariants: {\n mode: \"tabs\",\n },\n }\n)\n","\"use client\"\n\nimport type {\n MarkdownEditorProps,\n MarkdownEditorRef,\n MarkdownHelpProps,\n MarkdownPreviewProps,\n MarkdownToolbarProps,\n} from \"./MarkdownEditor.types\"\n\nimport {\n BoldIcon,\n CodeIcon,\n Heading1Icon,\n Heading2Icon,\n Heading3Icon,\n HelpCircleIcon,\n ImageIcon,\n ItalicIcon,\n LinkIcon,\n ListIcon,\n ListOrderedIcon,\n ListTodoIcon,\n QuoteIcon,\n StrikethroughIcon,\n} from \"lucide-react\"\nimport { marked } from \"marked\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"../../feedback/Dialog\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../navigation/Tabs\"\nimport { Divider } from \"../../primitives/Divider\"\nimport { Toggle } from \"../../primitives/Toggle\"\nimport {\n markdownEditorAreaVariants,\n markdownEditorVariants,\n markdownPreviewVariants,\n markdownToolbarVariants,\n} from \"./MarkdownEditor.variants\"\n\n// Configure marked for security\nmarked.setOptions({\n breaks: true,\n gfm: true,\n})\n\n/**\n * MarkdownHelp - Modal with markdown syntax reference\n */\nfunction MarkdownHelp({ open, onOpenChange }: MarkdownHelpProps) {\n const syntaxExamples = [\n { syntax: \"**bold**\", description: \"Bold text\" },\n { syntax: \"*italic*\", description: \"Italic text\" },\n { syntax: \"~~strikethrough~~\", description: \"Strikethrough\" },\n { syntax: \"# Heading 1\", description: \"Large heading\" },\n { syntax: \"## Heading 2\", description: \"Medium heading\" },\n { syntax: \"### Heading 3\", description: \"Small heading\" },\n { syntax: \"[link](url)\", description: \"Hyperlink\" },\n { syntax: \"![alt](url)\", description: \"Image\" },\n { syntax: \"> quote\", description: \"Blockquote\" },\n { syntax: \"`code`\", description: \"Inline code\" },\n { syntax: \"```code block```\", description: \"Code block\" },\n { syntax: \"- item\", description: \"Unordered list\" },\n { syntax: \"1. item\", description: \"Ordered list\" },\n { syntax: \"- [ ] task\", description: \"Task list\" },\n ]\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Markdown Syntax</DialogTitle>\n <DialogDescription>\n Quick reference for markdown formatting\n </DialogDescription>\n </DialogHeader>\n <div className=\"grid grid-cols-2 gap-2 text-sm\">\n {syntaxExamples.map(({ syntax, description }) => (\n <div key={syntax} className=\"flex items-center gap-2\">\n <code className=\"bg-muted rounded px-1.5 py-0.5 font-mono text-xs\">\n {syntax}\n </code>\n <span className=\"text-muted-foreground\">{description}</span>\n </div>\n ))}\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\n/**\n * MarkdownPreview - Renders markdown content as HTML\n */\nfunction MarkdownPreview({ content, className }: MarkdownPreviewProps) {\n const html = React.useMemo(() => {\n if (!content) return \"\"\n return marked.parse(content) as string\n }, [content])\n\n return (\n <div\n className={cn(markdownPreviewVariants(), className)}\n // eslint-disable-next-line @eslint-react/dom/no-dangerously-set-innerhtml -- required for markdown rendering\n dangerouslySetInnerHTML={{ __html: html }}\n data-slot=\"markdown-preview\"\n />\n )\n}\n\n/**\n * MarkdownToolbar - Formatting toolbar for the editor\n */\nfunction MarkdownToolbar({\n className,\n disabled = false,\n editorRef,\n showHelp = true,\n onHelpClick,\n}: MarkdownToolbarProps) {\n const handleAction = React.useCallback(\n (before: string, after: string) => {\n if (disabled || !editorRef.current) return\n editorRef.current.wrapSelection(before, after)\n },\n [disabled, editorRef]\n )\n\n const handleInsert = React.useCallback(\n (text: string) => {\n if (disabled || !editorRef.current) return\n editorRef.current.insertText(text)\n },\n [disabled, editorRef]\n )\n\n return (\n <div\n aria-label=\"Markdown formatting\"\n className={cn(markdownToolbarVariants(), className)}\n data-slot=\"markdown-toolbar\"\n role=\"toolbar\"\n >\n {/* Text formatting */}\n <Toggle\n aria-label=\"Bold (Ctrl+B)\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"**\", \"**\"); }}\n >\n <BoldIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Italic (Ctrl+I)\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"*\", \"*\"); }}\n >\n <ItalicIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Strikethrough\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"~~\", \"~~\"); }}\n >\n <StrikethroughIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Inline code (Ctrl+E)\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"`\", \"`\"); }}\n >\n <CodeIcon className=\"size-4\" />\n </Toggle>\n\n <Divider className=\"mx-1 h-6\" orientation=\"vertical\" />\n\n {/* Headings */}\n <Toggle\n aria-label=\"Heading 1\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"# \"); }}\n >\n <Heading1Icon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Heading 2\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"## \"); }}\n >\n <Heading2Icon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Heading 3\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"### \"); }}\n >\n <Heading3Icon className=\"size-4\" />\n </Toggle>\n\n <Divider className=\"mx-1 h-6\" orientation=\"vertical\" />\n\n {/* Lists */}\n <Toggle\n aria-label=\"Bullet list\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"- \"); }}\n >\n <ListIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Numbered list\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"1. \"); }}\n >\n <ListOrderedIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Task list\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"- [ ] \"); }}\n >\n <ListTodoIcon className=\"size-4\" />\n </Toggle>\n\n <Divider className=\"mx-1 h-6\" orientation=\"vertical\" />\n\n {/* Blocks */}\n <Toggle\n aria-label=\"Quote\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleInsert(\"> \"); }}\n >\n <QuoteIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Link (Ctrl+K)\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"[\", \"](url)\"); }}\n >\n <LinkIcon className=\"size-4\" />\n </Toggle>\n <Toggle\n aria-label=\"Image\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={() => { handleAction(\"![\", \"](url)\"); }}\n >\n <ImageIcon className=\"size-4\" />\n </Toggle>\n\n {showHelp && (\n <>\n <Divider className=\"mx-1 h-6\" orientation=\"vertical\" />\n <Toggle\n aria-label=\"Markdown help\"\n disabled={disabled}\n pressed={false}\n size=\"sm\"\n onPressedChange={onHelpClick}\n >\n <HelpCircleIcon className=\"size-4\" />\n </Toggle>\n </>\n )}\n </div>\n )\n}\n\n/**\n * MarkdownEditor - A markdown editor with toolbar and preview.\n *\n * Supports tabs mode (switch between editor/preview), split mode (side by side),\n * or standalone editor/preview modes.\n *\n * @example\n * ```tsx\n * const [content, setContent] = useState(\"\")\n *\n * <MarkdownEditor\n * value={content}\n * onChange={setContent}\n * placeholder=\"Write something...\"\n * />\n * ```\n */\nfunction MarkdownEditor({\n \"aria-describedby\": ariaDescribedBy,\n \"aria-label\": ariaLabel = \"Markdown editor\",\n allowImages: _allowImages = true,\n className,\n defaultValue = \"\",\n disabled = false,\n maxHeight,\n minHeight = \"200px\",\n mode = \"tabs\",\n onBlur,\n onChange,\n onFocus,\n onImageUpload: _onImageUpload,\n placeholder = \"Write markdown...\",\n readOnly = false,\n ref,\n showHelp = true,\n showToolbar = true,\n toolbar: _toolbar,\n value,\n}: MarkdownEditorProps & { ref?: React.Ref<MarkdownEditorRef> }) {\n const textareaRef = React.useRef<HTMLTextAreaElement>(null)\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const [showHelpModal, setShowHelpModal] = React.useState(false)\n\n // Controlled vs uncontrolled value\n const currentValue = value ?? internalValue\n\n // Create stable ref for internal use (toolbar, etc.)\n const editorRef = React.useRef<MarkdownEditorRef | null>(null)\n\n // Expose ref methods - using useImperativeHandle directly for immediate availability\n React.useImperativeHandle(\n ref,\n () => {\n const methods: MarkdownEditorRef = {\n blur: () => textareaRef.current?.blur(),\n focus: () => textareaRef.current?.focus(),\n getSelection: () => {\n const textarea = textareaRef.current\n if (!textarea) return { start: 0, end: 0, text: \"\" }\n return {\n end: textarea.selectionEnd,\n start: textarea.selectionStart,\n text: textarea.value.substring(\n textarea.selectionStart,\n textarea.selectionEnd\n ),\n }\n },\n getValue: () => textareaRef.current?.value ?? \"\",\n insertText: (text: string) => {\n const textarea = textareaRef.current\n if (!textarea) return\n\n const start = textarea.selectionStart\n const end = textarea.selectionEnd\n const newValue =\n currentValue.slice(0, start) + text + currentValue.slice(end)\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n\n // Restore cursor position\n requestAnimationFrame(() => {\n textarea.selectionStart = start + text.length\n textarea.selectionEnd = start + text.length\n textarea.focus()\n })\n },\n setValue: (newValue: string) => {\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n },\n wrapSelection: (before: string, after: string) => {\n const textarea = textareaRef.current\n if (!textarea) return\n\n const start = textarea.selectionStart\n const end = textarea.selectionEnd\n const selectedText = currentValue.substring(start, end)\n const newText = before + selectedText + after\n const newValue =\n currentValue.slice(0, start) + newText + currentValue.slice(end)\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n\n // Select the wrapped text\n requestAnimationFrame(() => {\n textarea.selectionStart = start + before.length\n textarea.selectionEnd = start + before.length + selectedText.length\n textarea.focus()\n })\n },\n }\n // Also update internal ref for toolbar use\n editorRef.current = methods\n return methods\n },\n [currentValue, onChange, value]\n )\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n },\n [onChange, value]\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (disabled || readOnly) return\n\n const isMod = e.metaKey || e.ctrlKey\n\n if (isMod && e.key === \"b\") {\n e.preventDefault()\n editorRef.current?.wrapSelection(\"**\", \"**\")\n } else if (isMod && e.key === \"i\") {\n e.preventDefault()\n editorRef.current?.wrapSelection(\"*\", \"*\")\n } else if (isMod && e.key === \"k\") {\n e.preventDefault()\n editorRef.current?.wrapSelection(\"[\", \"](url)\")\n } else if (isMod && e.key === \"e\") {\n e.preventDefault()\n editorRef.current?.wrapSelection(\"`\", \"`\")\n }\n },\n [disabled, readOnly]\n )\n\n const isDisabled = disabled || readOnly\n\n const editorStyle: React.CSSProperties = {\n maxHeight,\n minHeight,\n }\n\n const renderEditor = () => (\n <textarea\n ref={textareaRef}\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n aria-multiline=\"true\"\n className={cn(markdownEditorAreaVariants({ disabled: isDisabled }))}\n disabled={disabled}\n placeholder={placeholder}\n readOnly={readOnly}\n role=\"textbox\"\n style={editorStyle}\n value={currentValue}\n onBlur={onBlur}\n onChange={handleChange}\n onFocus={onFocus}\n onKeyDown={handleKeyDown}\n />\n )\n\n const renderPreview = () => (\n <MarkdownPreview\n className={mode === \"split\" ? \"flex-1\" : undefined}\n content={currentValue}\n />\n )\n\n const renderContent = () => {\n switch (mode) {\n case \"editor\":\n return renderEditor()\n\n case \"preview\":\n return renderPreview()\n\n case \"split\":\n return (\n <div className=\"flex flex-1\">\n <div className=\"flex-1 overflow-auto border-r\" style={editorStyle}>\n {renderEditor()}\n </div>\n <div className=\"flex-1 overflow-auto\" style={editorStyle}>\n {renderPreview()}\n </div>\n </div>\n )\n\n case \"tabs\":\n default:\n return (\n <Tabs className=\"flex-1\" defaultValue=\"editor\">\n <TabsList className=\"mx-2 mt-2\">\n <TabsTrigger value=\"editor\">Editor</TabsTrigger>\n <TabsTrigger value=\"preview\">Preview</TabsTrigger>\n </TabsList>\n <TabsContent className=\"mt-0\" value=\"editor\">\n {renderEditor()}\n </TabsContent>\n <TabsContent className=\"mt-0\" value=\"preview\">\n {renderPreview()}\n </TabsContent>\n </Tabs>\n )\n }\n }\n\n return (\n <>\n <div\n className={cn(markdownEditorVariants({ disabled }), className)}\n data-slot=\"markdown-editor\"\n >\n {showToolbar && mode !== \"preview\" && (\n <MarkdownToolbar\n disabled={isDisabled}\n editorRef={editorRef as React.RefObject<MarkdownEditorRef>}\n showHelp={showHelp}\n onHelpClick={() => { setShowHelpModal(true); }}\n />\n )}\n {renderContent()}\n </div>\n\n <MarkdownHelp open={showHelpModal} onOpenChange={setShowHelpModal} />\n </>\n )\n}\n\nexport { MarkdownEditor, MarkdownHelp, MarkdownPreview, MarkdownToolbar }\n"]}
@@ -73,7 +73,7 @@ function StatusIndicator({
73
73
  const defaultAriaLabel = `Status: ${variant ?? "neutral"}`;
74
74
  const accessibleLabel = ariaLabel ?? (label ? void 0 : defaultAriaLabel);
75
75
  const isBar = shape === "bar-vertical" || shape === "bar-horizontal";
76
- const isProd = typeof process !== "undefined" && process.env["NODE_ENV"] === "production";
76
+ const isProd = typeof process !== "undefined" && process.env.NODE_ENV === "production";
77
77
  if (isBar && label && !isProd) {
78
78
  console.warn(
79
79
  `<StatusIndicator shape="${shape}"> ignores the \`label\` prop. Use shape="dot" to combine with label, or move the label to surrounding context.`
@@ -163,5 +163,5 @@ function StatusIndicator({
163
163
  }
164
164
 
165
165
  export { StatusIndicator, statusIndicatorVariants };
166
- //# sourceMappingURL=chunk-OWIFNJXZ.js.map
167
- //# sourceMappingURL=chunk-OWIFNJXZ.js.map
166
+ //# sourceMappingURL=chunk-S7TVRVRU.js.map
167
+ //# sourceMappingURL=chunk-S7TVRVRU.js.map