@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/workflow/TaskStatus/TaskStatus.variants.ts","../src/components/workflow/TaskStatus/TaskStatus.tsx"],"names":[],"mappings":"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","file":"chunk-LATTRPLQ.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TaskStatus container variants\n */\nexport const taskStatusVariants = cva(\n \"inline-flex items-center gap-1.5 font-medium transition-all duration-200\",\n {\n compoundVariants: [\n // Interactive states\n {\n className: \"cursor-pointer hover:opacity-80\",\n interactive: true,\n },\n {\n className: \"cursor-not-allowed opacity-50\",\n disabled: true,\n },\n ],\n defaultVariants: {\n disabled: false,\n interactive: false,\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n disabled: {\n false: \"\",\n true: \"\",\n },\n interactive: {\n false: \"\",\n true: \"\",\n },\n size: {\n default: \"px-3 py-1.5 text-sm\",\n lg: \"px-4 py-2 text-base\",\n sm: \"px-2 py-1 text-xs\",\n },\n variant: {\n default: \"rounded-md bg-muted\",\n outline: \"rounded-md border border-current bg-transparent\",\n pill: \"rounded-full bg-muted\",\n subtle: \"rounded-md bg-muted/30\",\n },\n },\n }\n)\n\n/**\n * Status-specific color variants using semantic tokens\n * Only applies text colors - background is controlled by variant prop\n */\nexport const taskStatusColorVariants = cva(\"\", {\n defaultVariants: {\n status: \"todo\",\n },\n variants: {\n status: {\n backlog: \"text-[color:var(--task-status-backlog-text)]\",\n blocked: \"text-[color:var(--task-status-blocked-text)]\",\n done: \"text-[color:var(--task-status-done-text)]\",\n \"in-progress\": \"text-[color:var(--task-status-in-progress-text)]\",\n \"in-review\": \"text-[color:var(--task-status-in-review-text)]\",\n todo: \"text-[color:var(--task-status-todo-text)]\",\n },\n },\n})\n\n/**\n * Icon container variants\n */\nexport const taskStatusIconVariants = cva(\"shrink-0\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n sm: \"h-3.5 w-3.5\",\n },\n },\n})\n\n/**\n * Label variants\n */\nexport const taskStatusLabelVariants = cva(\"font-medium leading-none\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"text-sm\",\n lg: \"text-base\",\n sm: \"text-xs\",\n },\n },\n})\n\n/**\n * Trigger button variants (for interactive mode)\n */\nexport const taskStatusTriggerVariants = cva(\n \"ml-1 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n sm: \"h-3 w-3\",\n },\n },\n }\n)\n\n/**\n * Dropdown menu item variants\n */\nexport const taskStatusMenuItemVariants = cva(\n \"flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\n {\n defaultVariants: {\n selected: false,\n },\n variants: {\n selected: {\n false: \"\",\n true: \"bg-accent/50\",\n },\n },\n }\n)\n\n// Export variant prop types\nexport type TaskStatusVariantProps = VariantProps<typeof taskStatusVariants>\nexport type TaskStatusColorVariantProps = VariantProps<typeof taskStatusColorVariants>\nexport type TaskStatusIconVariantProps = VariantProps<typeof taskStatusIconVariants>\nexport type TaskStatusLabelVariantProps = VariantProps<typeof taskStatusLabelVariants>\nexport type TaskStatusTriggerVariantProps = VariantProps<typeof taskStatusTriggerVariants>\nexport type TaskStatusMenuItemVariantProps = VariantProps<typeof taskStatusMenuItemVariants>\n","\"use client\"\n\nimport type { StatusType, TaskStatusConfigMap, TaskStatusProps } from \"./TaskStatus.types\"\n\nimport {\n AlertCircleIcon,\n ArchiveIcon,\n CheckIcon,\n ChevronDownIcon,\n ClockIcon,\n EyeIcon,\n} from \"lucide-react\"\nimport { useId, useMemo, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../../navigation/DropdownMenu\"\nimport {\n taskStatusColorVariants,\n taskStatusIconVariants,\n taskStatusLabelVariants,\n taskStatusTriggerVariants,\n taskStatusVariants,\n} from \"./TaskStatus.variants\"\n\n/**\n * Default status configurations with labels, colors, and icons\n */\nconst DEFAULT_STATUS_CONFIGS: TaskStatusConfigMap = {\n backlog: {\n color: \"text-muted-foreground\",\n icon: <ArchiveIcon />,\n label: \"Backlog\",\n },\n blocked: {\n color: \"text-destructive\",\n icon: <AlertCircleIcon />,\n label: \"Blocked\",\n },\n done: {\n color: \"text-green-600 dark:text-green-400\",\n icon: <CheckIcon />,\n label: \"Done\",\n },\n \"in-progress\": {\n color: \"text-blue-600 dark:text-blue-400\",\n icon: <ClockIcon />,\n label: \"In Progress\",\n },\n \"in-review\": {\n color: \"text-yellow-600 dark:text-yellow-400\",\n icon: <EyeIcon />,\n label: \"In Review\",\n },\n todo: {\n color: \"text-muted-foreground\",\n icon: null,\n label: \"To Do\",\n },\n}\n\n/**\n * List of all available statuses for the dropdown\n */\nconst ALL_STATUSES: StatusType[] = [\n \"todo\",\n \"in-progress\",\n \"in-review\",\n \"done\",\n \"blocked\",\n \"backlog\",\n]\n\n/**\n * TaskStatus - A component that displays the status of a task visually.\n *\n * Can be used as a simple badge or as an interactive dropdown to change status.\n * Supports multiple visual variants and sizes.\n *\n * @example\n * // Simple status badge\n * <TaskStatus status=\"in-progress\" />\n *\n * @example\n * // Interactive status dropdown\n * <TaskStatus\n * status={status}\n * interactive\n * onChange={setStatus}\n * />\n *\n * @example\n * // Pill variant without icon\n * <TaskStatus\n * status=\"done\"\n * variant=\"pill\"\n * showIcon={false}\n * />\n */\nfunction TaskStatus({\n children,\n className,\n customStatuses,\n disabled = false,\n interactive = false,\n onChange,\n ref,\n showIcon = true,\n showLabel = true,\n size = \"default\",\n status,\n variant = \"default\",\n ...props\n}: TaskStatusProps) {\n const id = useId()\n const [isOpen, setIsOpen] = useState(false)\n\n // Merge custom status configs with defaults\n const statusConfigs = useMemo(\n () => ({\n ...DEFAULT_STATUS_CONFIGS,\n ...customStatuses,\n }),\n [customStatuses]\n )\n\n const currentConfig = statusConfigs[status]\n\n const handleStatusSelect = (newStatus: StatusType) => {\n if (!disabled && onChange) {\n onChange(newStatus)\n }\n setIsOpen(false)\n }\n\n // Render content (icon + label)\n const renderContent = () => {\n if (children) {\n return children\n }\n\n return (\n <>\n {showIcon && currentConfig.icon && (\n <span\n className={cn(taskStatusIconVariants({ size }))}\n data-slot=\"task-status-icon\"\n >\n {currentConfig.icon}\n </span>\n )}\n {showLabel && (\n <span\n className={cn(taskStatusLabelVariants({ size }))}\n data-slot=\"task-status-label\"\n >\n {currentConfig.label}\n </span>\n )}\n </>\n )\n }\n\n // Base status element\n const statusElement = (\n <div\n ref={ref}\n className={cn(\n taskStatusVariants({ disabled, interactive, size, variant }),\n taskStatusColorVariants({ status }),\n className\n )}\n aria-disabled={disabled}\n aria-label={`Status: ${currentConfig.label}`}\n aria-live=\"polite\"\n data-slot=\"task-status\"\n data-status={status}\n id={`task-status-${id}`}\n role=\"status\"\n {...props}\n >\n {renderContent()}\n {interactive && !disabled && (\n <ChevronDownIcon\n className={cn(\n taskStatusTriggerVariants({ size }),\n isOpen && \"rotate-180 transition-transform\"\n )}\n data-slot=\"task-status-trigger\"\n />\n )}\n </div>\n )\n\n // If not interactive, just return the status element\n if (!interactive || disabled) {\n return statusElement\n }\n\n // Interactive mode with dropdown\n return (\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger asChild disabled={disabled}>\n {statusElement}\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"min-w-36\">\n {ALL_STATUSES.map((statusOption) => {\n const config = statusConfigs[statusOption]\n const isSelected = statusOption === status\n\n return (\n <DropdownMenuItem\n key={statusOption}\n className={cn(\n \"flex items-center gap-2\",\n isSelected && \"bg-accent/50\"\n )}\n onClick={() => { handleStatusSelect(statusOption); }}\n >\n {config.icon && (\n <span\n className={cn(\n taskStatusIconVariants({ size: \"sm\" }),\n config.color\n )}\n >\n {config.icon}\n </span>\n )}\n <span className=\"flex-1\">{config.label}</span>\n {isSelected && (\n <CheckIcon className=\"h-4 w-4 text-primary\" />\n )}\n </DropdownMenuItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport { ALL_STATUSES, DEFAULT_STATUS_CONFIGS, TaskStatus }\n"]}
1
+ {"version":3,"sources":["../src/components/workflow/TaskStatus/TaskStatus.variants.ts","../src/components/workflow/TaskStatus/TaskStatus.tsx"],"names":[],"mappings":"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","file":"chunk-E2TI5V67.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TaskStatus container variants\n */\nexport const taskStatusVariants = cva(\n \"inline-flex items-center gap-1.5 font-medium transition-all duration-200\",\n {\n compoundVariants: [\n // Interactive states\n {\n className: \"cursor-pointer hover:opacity-80\",\n interactive: true,\n },\n {\n className: \"cursor-not-allowed opacity-50\",\n disabled: true,\n },\n ],\n defaultVariants: {\n disabled: false,\n interactive: false,\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n disabled: {\n false: \"\",\n true: \"\",\n },\n interactive: {\n false: \"\",\n true: \"\",\n },\n size: {\n default: \"px-3 py-1.5 text-sm\",\n lg: \"px-4 py-2 text-base\",\n sm: \"px-2 py-1 text-xs\",\n },\n variant: {\n default: \"rounded-md bg-muted\",\n outline: \"rounded-md border border-current bg-transparent\",\n pill: \"rounded-full bg-muted\",\n subtle: \"rounded-md bg-muted/30\",\n },\n },\n }\n)\n\n/**\n * Status-specific color variants using semantic tokens\n * Only applies text colors - background is controlled by variant prop\n */\nexport const taskStatusColorVariants = cva(\"\", {\n defaultVariants: {\n status: \"todo\",\n },\n variants: {\n status: {\n backlog: \"text-[color:var(--task-status-backlog-text)]\",\n blocked: \"text-[color:var(--task-status-blocked-text)]\",\n done: \"text-[color:var(--task-status-done-text)]\",\n \"in-progress\": \"text-[color:var(--task-status-in-progress-text)]\",\n \"in-review\": \"text-[color:var(--task-status-in-review-text)]\",\n todo: \"text-[color:var(--task-status-todo-text)]\",\n },\n },\n})\n\n/**\n * Icon container variants\n */\nexport const taskStatusIconVariants = cva(\"shrink-0\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n sm: \"h-3.5 w-3.5\",\n },\n },\n})\n\n/**\n * Label variants\n */\nexport const taskStatusLabelVariants = cva(\"font-medium leading-none\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"text-sm\",\n lg: \"text-base\",\n sm: \"text-xs\",\n },\n },\n})\n\n/**\n * Trigger button variants (for interactive mode)\n */\nexport const taskStatusTriggerVariants = cva(\n \"ml-1 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n sm: \"h-3 w-3\",\n },\n },\n }\n)\n\n/**\n * Dropdown menu item variants\n */\nexport const taskStatusMenuItemVariants = cva(\n \"flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\n {\n defaultVariants: {\n selected: false,\n },\n variants: {\n selected: {\n false: \"\",\n true: \"bg-accent/50\",\n },\n },\n }\n)\n\n// Export variant prop types\nexport type TaskStatusVariantProps = VariantProps<typeof taskStatusVariants>\nexport type TaskStatusColorVariantProps = VariantProps<typeof taskStatusColorVariants>\nexport type TaskStatusIconVariantProps = VariantProps<typeof taskStatusIconVariants>\nexport type TaskStatusLabelVariantProps = VariantProps<typeof taskStatusLabelVariants>\nexport type TaskStatusTriggerVariantProps = VariantProps<typeof taskStatusTriggerVariants>\nexport type TaskStatusMenuItemVariantProps = VariantProps<typeof taskStatusMenuItemVariants>\n","\"use client\"\n\nimport type { StatusType, TaskStatusConfigMap, TaskStatusProps } from \"./TaskStatus.types\"\n\nimport {\n AlertCircleIcon,\n ArchiveIcon,\n CheckIcon,\n ChevronDownIcon,\n ClockIcon,\n EyeIcon,\n} from \"lucide-react\"\nimport { useId, useMemo, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../../navigation/DropdownMenu\"\nimport {\n taskStatusColorVariants,\n taskStatusIconVariants,\n taskStatusLabelVariants,\n taskStatusTriggerVariants,\n taskStatusVariants,\n} from \"./TaskStatus.variants\"\n\n/**\n * Default status configurations with labels, colors, and icons\n */\nconst DEFAULT_STATUS_CONFIGS: TaskStatusConfigMap = {\n backlog: {\n color: \"text-muted-foreground\",\n icon: <ArchiveIcon />,\n label: \"Backlog\",\n },\n blocked: {\n color: \"text-destructive\",\n icon: <AlertCircleIcon />,\n label: \"Blocked\",\n },\n done: {\n color: \"text-green-600 dark:text-green-400\",\n icon: <CheckIcon />,\n label: \"Done\",\n },\n \"in-progress\": {\n color: \"text-blue-600 dark:text-blue-400\",\n icon: <ClockIcon />,\n label: \"In Progress\",\n },\n \"in-review\": {\n color: \"text-yellow-600 dark:text-yellow-400\",\n icon: <EyeIcon />,\n label: \"In Review\",\n },\n todo: {\n color: \"text-muted-foreground\",\n icon: null,\n label: \"To Do\",\n },\n}\n\n/**\n * List of all available statuses for the dropdown\n */\nconst ALL_STATUSES: StatusType[] = [\n \"todo\",\n \"in-progress\",\n \"in-review\",\n \"done\",\n \"blocked\",\n \"backlog\",\n]\n\n/**\n * TaskStatus - A component that displays the status of a task visually.\n *\n * Can be used as a simple badge or as an interactive dropdown to change status.\n * Supports multiple visual variants and sizes.\n *\n * @example\n * // Simple status badge\n * <TaskStatus status=\"in-progress\" />\n *\n * @example\n * // Interactive status dropdown\n * <TaskStatus\n * status={status}\n * interactive\n * onChange={setStatus}\n * />\n *\n * @example\n * // Pill variant without icon\n * <TaskStatus\n * status=\"done\"\n * variant=\"pill\"\n * showIcon={false}\n * />\n */\nfunction TaskStatus({\n children,\n className,\n customStatuses,\n disabled = false,\n interactive = false,\n onChange,\n ref,\n showIcon = true,\n showLabel = true,\n size = \"default\",\n status,\n variant = \"default\",\n ...props\n}: TaskStatusProps) {\n const id = useId()\n const [isOpen, setIsOpen] = useState(false)\n\n // Merge custom status configs with defaults\n const statusConfigs = useMemo(\n () => ({\n ...DEFAULT_STATUS_CONFIGS,\n ...customStatuses,\n }),\n [customStatuses]\n )\n\n const currentConfig = statusConfigs[status]\n\n const handleStatusSelect = (newStatus: StatusType) => {\n if (!disabled && onChange) {\n onChange(newStatus)\n }\n setIsOpen(false)\n }\n\n // Render content (icon + label)\n const renderContent = () => {\n if (children) {\n return children\n }\n\n return (\n <>\n {showIcon && currentConfig.icon && (\n <span\n className={cn(taskStatusIconVariants({ size }))}\n data-slot=\"task-status-icon\"\n >\n {currentConfig.icon}\n </span>\n )}\n {showLabel && (\n <span\n className={cn(taskStatusLabelVariants({ size }))}\n data-slot=\"task-status-label\"\n >\n {currentConfig.label}\n </span>\n )}\n </>\n )\n }\n\n // Base status element\n const statusElement = (\n <div\n ref={ref}\n className={cn(\n taskStatusVariants({ disabled, interactive, size, variant }),\n taskStatusColorVariants({ status }),\n className\n )}\n aria-disabled={disabled}\n aria-label={`Status: ${currentConfig.label}`}\n aria-live=\"polite\"\n data-slot=\"task-status\"\n data-status={status}\n id={`task-status-${id}`}\n role=\"status\"\n {...props}\n >\n {renderContent()}\n {interactive && !disabled && (\n <ChevronDownIcon\n className={cn(\n taskStatusTriggerVariants({ size }),\n isOpen && \"rotate-180 transition-transform\"\n )}\n data-slot=\"task-status-trigger\"\n />\n )}\n </div>\n )\n\n // If not interactive, just return the status element\n if (!interactive || disabled) {\n return statusElement\n }\n\n // Interactive mode with dropdown\n return (\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger asChild disabled={disabled}>\n {statusElement}\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"min-w-36\">\n {ALL_STATUSES.map((statusOption) => {\n const config = statusConfigs[statusOption]\n const isSelected = statusOption === status\n\n return (\n <DropdownMenuItem\n key={statusOption}\n className={cn(\n \"flex items-center gap-2\",\n isSelected && \"bg-accent/50\"\n )}\n onClick={() => { handleStatusSelect(statusOption); }}\n >\n {config.icon && (\n <span\n className={cn(\n taskStatusIconVariants({ size: \"sm\" }),\n config.color\n )}\n >\n {config.icon}\n </span>\n )}\n <span className=\"flex-1\">{config.label}</span>\n {isSelected && (\n <CheckIcon className=\"h-4 w-4 text-primary\" />\n )}\n </DropdownMenuItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport { ALL_STATUSES, DEFAULT_STATUS_CONFIGS, TaskStatus }\n"]}
@@ -19,12 +19,13 @@ var alertVariants = cva(
19
19
  }
20
20
  }
21
21
  );
22
- function Alert({ className, variant, ...props }) {
22
+ function Alert({ className, variant = "default", ...props }) {
23
23
  return /* @__PURE__ */ jsx(
24
24
  "div",
25
25
  {
26
26
  className: cn(alertVariants({ variant }), className),
27
27
  "data-slot": "alert",
28
+ "data-variant": variant,
28
29
  role: "alert",
29
30
  ...props
30
31
  }
@@ -58,5 +59,5 @@ function AlertDescription({ className, ...props }) {
58
59
  }
59
60
 
60
61
  export { Alert, AlertDescription, AlertTitle, alertVariants };
61
- //# sourceMappingURL=chunk-IRKDMISK.js.map
62
- //# sourceMappingURL=chunk-IRKDMISK.js.map
62
+ //# sourceMappingURL=chunk-G2MAGZHQ.js.map
63
+ //# sourceMappingURL=chunk-G2MAGZHQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/Alert/Alert.variants.ts","../src/components/feedback/Alert/Alert.tsx"],"names":[],"mappings":";;;;AAKO,IAAM,aAAA,GAAgB,GAAA;AAAA,EAC3B,gWAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,4IAAA;AAAA,QACT,WAAA,EACE,iQAAA;AAAA,QACF,IAAA,EAAM,qOAAA;AAAA,QACN,OAAA,EACE,iPAAA;AAAA,QACF,OAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;ACfA,SAAS,MAAM,EAAE,SAAA,EAAW,UAAU,SAAA,EAAW,GAAG,OAAM,EAAe;AACvE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MACnD,WAAA,EAAU,OAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,IAAA,EAAK,OAAA;AAAA,MACJ,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoB;AAC5D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,6DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,aAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA0B;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,gGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,mBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-G2MAGZHQ.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Alert variant styles using CVA\n */\nexport const alertVariants = cva(\n \"relative w-full rounded-[var(--alert-root-radius)] border px-[var(--alert-root-padding-x)] py-[var(--alert-root-padding-y)] text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-[var(--alert-root-gap)] gap-y-0.5 items-start [&>svg]:size-[var(--alert-icon-size)] [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-[color:var(--alert-variant-default-bg)] text-[color:var(--alert-variant-default-fg)] border-[color:var(--alert-variant-default-border)]\",\n destructive:\n \"bg-[color:var(--alert-variant-destructive-bg)] text-[color:var(--alert-variant-destructive-fg)] border-[color:var(--alert-variant-destructive-border)] [&>svg]:text-current *:data-[slot=alert-description]:text-[color:var(--alert-variant-destructive-fg)]/90\",\n info: \"bg-[color:var(--alert-variant-info-bg)] text-[color:var(--alert-variant-info-fg)] border-[color:var(--alert-variant-info-border)] [&>svg]:text-current *:data-[slot=alert-description]:text-[color:var(--alert-variant-info-fg)]/90\",\n success:\n \"bg-[color:var(--alert-variant-success-bg)] text-[color:var(--alert-variant-success-fg)] border-[color:var(--alert-variant-success-border)] [&>svg]:text-current *:data-[slot=alert-description]:text-[color:var(--alert-variant-success-fg)]/90\",\n warning:\n \"bg-[color:var(--alert-variant-warning-bg)] text-[color:var(--alert-variant-warning-fg)] border-[color:var(--alert-variant-warning-border)] [&>svg]:text-current *:data-[slot=alert-description]:text-[color:var(--alert-variant-warning-fg)]/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n","import type {\n AlertDescriptionProps,\n AlertProps,\n AlertTitleProps,\n} from \"./Alert.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { alertVariants } from \"./Alert.variants\"\n\nfunction Alert({ className, variant = \"default\", ...props }: AlertProps) {\n return (\n <div\n className={cn(alertVariants({ variant }), className)}\n data-slot=\"alert\"\n data-variant={variant}\n role=\"alert\"\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: AlertTitleProps) {\n return (\n <div\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n data-slot=\"alert-title\"\n {...props}\n />\n )\n}\n\nfunction AlertDescription({ className, ...props }: AlertDescriptionProps) {\n return (\n <div\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n data-slot=\"alert-description\"\n {...props}\n />\n )\n}\n\nexport { Alert, AlertDescription, AlertTitle, alertVariants }\nexport type { AlertDescriptionProps, AlertProps, AlertTitleProps }\n"]}
@@ -1,5 +1,5 @@
1
1
  import { useButtonGroup } from './chunk-TAZPML2P.js';
2
- import { Badge } from './chunk-TNROOKX3.js';
2
+ import { Badge } from './chunk-UDY3IDCY.js';
3
3
  import { Tooltip, TooltipTrigger, TooltipContent } from './chunk-7ZJ32KRQ.js';
4
4
  import { cn } from './chunk-HRNDJU7D.js';
5
5
  import { Slot } from '@radix-ui/react-slot';
@@ -229,5 +229,5 @@ function Button({
229
229
  }
230
230
 
231
231
  export { Button, buttonVariants };
232
- //# sourceMappingURL=chunk-ONQCNOLU.js.map
233
- //# sourceMappingURL=chunk-ONQCNOLU.js.map
232
+ //# sourceMappingURL=chunk-HDOR3SN3.js.map
233
+ //# sourceMappingURL=chunk-HDOR3SN3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/primitives/Button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-ONQCNOLU.js","sourcesContent":["import type { ButtonEventPayload, ButtonProps } from \"./Button.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport { Badge } from \"../Badge/Badge\"\nimport { useButtonGroup } from \"../ButtonGroup/ButtonGroup\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-button-ring-brand focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative\",\n {\n variants: {\n fullWidth: {\n true: \"flex w-full\",\n false: \"\",\n },\n variant: {\n default:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n primary:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n destructive:\n \"bg-[color:var(--button-destructive-bg-default)] text-[color:var(--button-destructive-fg-default)] hover:bg-[color:var(--button-destructive-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-destructive)] dark:bg-destructive/60 hover:translate-y-px active:translate-y-0.5\",\n outline:\n \"border border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n dashed:\n \"border border-dashed border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 hover:translate-y-px active:translate-y-0.5\",\n \"secondary-gray\":\n \"bg-[color:var(--button-secondary-gray-bg-default)] text-[color:var(--button-secondary-gray-fg-default)] border border-[color:var(--button-secondary-gray-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-gray-bg-hover)] hover:text-[color:var(--button-secondary-gray-fg-hover)] hover:border-[color:var(--button-secondary-gray-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-gray)] disabled:bg-[color:var(--button-secondary-gray-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n \"secondary-color\":\n \"bg-[color:var(--button-secondary-color-bg-default)] text-[color:var(--button-secondary-color-fg-default)] border border-[color:var(--button-secondary-color-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-color-bg-hover)] hover:text-[color:var(--button-secondary-color-fg-hover)] hover:border-[color:var(--button-secondary-color-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] disabled:bg-[color:var(--button-secondary-color-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n ghost:\n \"text-[color:var(--button-ghost-fg-default)] hover:bg-[color:var(--button-ghost-bg-hover)] hover:text-[color:var(--button-ghost-fg-hover)] dark:hover:bg-accent/50 hover:translate-y-px active:translate-y-0.5\",\n link: \"text-shadow-button underline-offset-4 hover:underline focus-visible:underline\",\n \"link-gray\":\n \"text-[color:var(--button-link-gray-fg-default)] hover:text-[color:var(--button-link-gray-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"link-color\":\n \"text-[color:var(--button-link-color-fg-default)] hover:text-[color:var(--button-link-color-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"tertiary-gray\":\n \"text-[color:var(--button-tertiary-gray-fg-default)] hover:text-[color:var(--button-tertiary-gray-fg-hover)] hover:bg-[color:var(--button-tertiary-gray-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n \"tertiary-color\":\n \"text-[color:var(--button-tertiary-color-fg-default)] hover:text-[color:var(--button-tertiary-color-fg-hover)] hover:bg-[color:var(--button-tertiary-color-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n success:\n \"bg-success text-success-foreground hover:bg-success/90 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-success)] hover:translate-y-px active:translate-y-0.5\",\n warning:\n \"bg-warning text-warning-foreground hover:bg-warning/90 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-warning)] hover:translate-y-px active:translate-y-0.5\",\n unstyled: \"bg-transparent text-current border-0 p-0 h-auto rounded-none hover:bg-transparent shadow-none w-auto\",\n },\n size: {\n default: \"h-[var(--button-size-default-h)] px-[var(--button-size-default-px)] py-[var(--button-size-default-py)] text-[length:var(--button-size-default-text)] leading-[var(--button-size-default-leading)] gap-[var(--button-size-default-gap)]\",\n sm: \"h-[var(--button-size-sm-h)] px-[var(--button-size-sm-px)] py-[var(--button-size-sm-py)] text-[length:var(--button-size-sm-text)] leading-[var(--button-size-sm-leading)] gap-[var(--button-size-sm-gap)]\",\n lg: \"h-[var(--button-size-lg-h)] px-[var(--button-size-lg-px)] py-[var(--button-size-lg-py)] text-[length:var(--button-size-lg-text)] leading-[var(--button-size-lg-leading)] gap-[var(--button-size-lg-gap)]\",\n icon: \"size-[var(--button-size-icon-size)] p-0 gap-0\",\n \"icon-sm\": \"size-[var(--button-size-icon-sm-size)] p-0 gap-0\",\n },\n shape: {\n default: \"\",\n square: \"rounded-md\",\n circle: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n fullWidth: false,\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n tone,\n size,\n shape,\n fullWidth = false,\n asChild = false,\n badge,\n badgeColor = \"destructive\",\n badgeSize = \"sm\",\n loading = false,\n loadingText,\n icon,\n leftIcon,\n rightIcon,\n disabled,\n children,\n tooltip,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n \"data-id\": dataId,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : \"button\"\n\n // Get ButtonGroup context for prop inheritance\n const groupContext = useButtonGroup()\n\n // Merge props with group context (individual props take precedence)\n const effectiveSize = size ?? groupContext?.size\n const effectiveVariant = variant ?? groupContext?.buttonVariant\n const effectiveDisabled = disabled ?? groupContext?.disabled\n\n const isDisabled = effectiveDisabled ?? loading\n // Resolve virtual variants (tertiary, secondary with tone, link with tone) to actual CVA variants\n const resolvedVariant = (() => {\n // Handle virtual \"tertiary\" variant - always resolves to tertiary-gray or tertiary-color\n if (effectiveVariant === \"tertiary\") {\n return tone === \"color\" ? \"tertiary-color\" : \"tertiary-gray\"\n }\n // Handle secondary with tone\n if (effectiveVariant === \"secondary\" && tone) {\n return tone === \"gray\" ? \"secondary-gray\" : \"secondary-color\"\n }\n // Handle link with tone\n if (effectiveVariant === \"link\" && tone) {\n return tone === \"gray\" ? \"link-gray\" : \"link-color\"\n }\n // Return variant as-is for all other cases\n return effectiveVariant\n })()\n\n // Default to icon size if icon prop is provided and size is undefined\n const defaultSize = icon && !effectiveSize ? \"icon\" : effectiveSize\n\n // Create event payload for callbacks\n const createPayload = React.useCallback((): ButtonEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n timestamp: Date.now(),\n isLoading: loading,\n }), [dataId, loading])\n\n // Wrapped event handlers that emit ButtonEventPayload\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n event.preventDefault()\n return\n }\n onClick?.(event, createPayload())\n },\n [onClick, createPayload, isDisabled]\n )\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onFocus?.(event, createPayload())\n },\n [onFocus, createPayload]\n )\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onBlur?.(event, createPayload())\n },\n [onBlur, createPayload]\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event, createPayload())\n },\n [onKeyDown, createPayload]\n )\n\n // Determine what to render as children\n const renderContent = () => {\n if (asChild) {\n return children\n }\n\n if (loading) {\n const spinner = (\n <LoaderCircle\n className={cn(\n \"animate-spin\",\n // Center absolutely if we are preserving width (no loadingText)\n !loadingText && !defaultSize?.toString().startsWith(\"icon\") && \"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n )}\n aria-hidden=\"true\"\n data-slot=\"loading-icon\"\n data-testid=\"loading-icon\"\n />\n )\n\n if (defaultSize?.toString().startsWith(\"icon\")) {\n return spinner\n }\n\n if (loadingText) {\n return (\n <>\n {spinner}\n {loadingText}\n </>\n )\n }\n\n // Preserve width by rendering hidden children\n return (\n <>\n {spinner}\n <span aria-hidden=\"true\" className=\"opacity-0 flex items-center gap-2\">\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </span>\n </>\n )\n }\n\n if (icon) {\n return (\n <span aria-hidden=\"true\" data-slot=\"icon\">\n {icon}\n </span>\n )\n }\n\n return (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </>\n )\n }\n\n const buttonElement = (\n <Comp\n className={cn(\n buttonVariants({\n variant: resolvedVariant,\n size: defaultSize,\n shape,\n fullWidth,\n className,\n })\n )}\n aria-busy={loading || undefined}\n aria-disabled={isDisabled || undefined}\n data-id={dataId}\n data-loading={loading || undefined}\n data-slot=\"button\"\n disabled={isDisabled}\n onBlur={handleBlur}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n {...props}\n aria-label={loading && !loadingText ? \"Loading\" : props[\"aria-label\"]}\n >\n {/* When asChild=true, Slot requires exactly ONE child element */}\n {asChild ? (\n children\n ) : (\n <>\n {renderContent()}\n {badge !== undefined && (\n <Badge\n className=\"absolute -top-1.5 -right-1.5 min-w-5 h-5 px-1.5 text-xs pointer-events-none\"\n color={badgeColor}\n data-slot=\"button-badge\"\n size={badgeSize}\n type=\"pill-color\"\n >\n {badge}\n </Badge>\n )}\n </>\n )}\n </Comp>\n )\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {buttonElement}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n return buttonElement\n}\n\nexport { Button, buttonVariants }\n"]}
1
+ {"version":3,"sources":["../src/components/primitives/Button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-HDOR3SN3.js","sourcesContent":["import type { ButtonEventPayload, ButtonProps } from \"./Button.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport { Badge } from \"../Badge/Badge\"\nimport { useButtonGroup } from \"../ButtonGroup/ButtonGroup\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-button-ring-brand focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative\",\n {\n variants: {\n fullWidth: {\n true: \"flex w-full\",\n false: \"\",\n },\n variant: {\n default:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n primary:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n destructive:\n \"bg-[color:var(--button-destructive-bg-default)] text-[color:var(--button-destructive-fg-default)] hover:bg-[color:var(--button-destructive-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-destructive)] dark:bg-destructive/60 hover:translate-y-px active:translate-y-0.5\",\n outline:\n \"border border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n dashed:\n \"border border-dashed border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 hover:translate-y-px active:translate-y-0.5\",\n \"secondary-gray\":\n \"bg-[color:var(--button-secondary-gray-bg-default)] text-[color:var(--button-secondary-gray-fg-default)] border border-[color:var(--button-secondary-gray-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-gray-bg-hover)] hover:text-[color:var(--button-secondary-gray-fg-hover)] hover:border-[color:var(--button-secondary-gray-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-gray)] disabled:bg-[color:var(--button-secondary-gray-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n \"secondary-color\":\n \"bg-[color:var(--button-secondary-color-bg-default)] text-[color:var(--button-secondary-color-fg-default)] border border-[color:var(--button-secondary-color-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-color-bg-hover)] hover:text-[color:var(--button-secondary-color-fg-hover)] hover:border-[color:var(--button-secondary-color-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] disabled:bg-[color:var(--button-secondary-color-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n ghost:\n \"text-[color:var(--button-ghost-fg-default)] hover:bg-[color:var(--button-ghost-bg-hover)] hover:text-[color:var(--button-ghost-fg-hover)] dark:hover:bg-accent/50 hover:translate-y-px active:translate-y-0.5\",\n link: \"text-shadow-button underline-offset-4 hover:underline focus-visible:underline\",\n \"link-gray\":\n \"text-[color:var(--button-link-gray-fg-default)] hover:text-[color:var(--button-link-gray-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"link-color\":\n \"text-[color:var(--button-link-color-fg-default)] hover:text-[color:var(--button-link-color-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"tertiary-gray\":\n \"text-[color:var(--button-tertiary-gray-fg-default)] hover:text-[color:var(--button-tertiary-gray-fg-hover)] hover:bg-[color:var(--button-tertiary-gray-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n \"tertiary-color\":\n \"text-[color:var(--button-tertiary-color-fg-default)] hover:text-[color:var(--button-tertiary-color-fg-hover)] hover:bg-[color:var(--button-tertiary-color-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n success:\n \"bg-success text-success-foreground hover:bg-success/90 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-success)] hover:translate-y-px active:translate-y-0.5\",\n warning:\n \"bg-warning text-warning-foreground hover:bg-warning/90 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-warning)] hover:translate-y-px active:translate-y-0.5\",\n unstyled: \"bg-transparent text-current border-0 p-0 h-auto rounded-none hover:bg-transparent shadow-none w-auto\",\n },\n size: {\n default: \"h-[var(--button-size-default-h)] px-[var(--button-size-default-px)] py-[var(--button-size-default-py)] text-[length:var(--button-size-default-text)] leading-[var(--button-size-default-leading)] gap-[var(--button-size-default-gap)]\",\n sm: \"h-[var(--button-size-sm-h)] px-[var(--button-size-sm-px)] py-[var(--button-size-sm-py)] text-[length:var(--button-size-sm-text)] leading-[var(--button-size-sm-leading)] gap-[var(--button-size-sm-gap)]\",\n lg: \"h-[var(--button-size-lg-h)] px-[var(--button-size-lg-px)] py-[var(--button-size-lg-py)] text-[length:var(--button-size-lg-text)] leading-[var(--button-size-lg-leading)] gap-[var(--button-size-lg-gap)]\",\n icon: \"size-[var(--button-size-icon-size)] p-0 gap-0\",\n \"icon-sm\": \"size-[var(--button-size-icon-sm-size)] p-0 gap-0\",\n },\n shape: {\n default: \"\",\n square: \"rounded-md\",\n circle: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n fullWidth: false,\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n tone,\n size,\n shape,\n fullWidth = false,\n asChild = false,\n badge,\n badgeColor = \"destructive\",\n badgeSize = \"sm\",\n loading = false,\n loadingText,\n icon,\n leftIcon,\n rightIcon,\n disabled,\n children,\n tooltip,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n \"data-id\": dataId,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : \"button\"\n\n // Get ButtonGroup context for prop inheritance\n const groupContext = useButtonGroup()\n\n // Merge props with group context (individual props take precedence)\n const effectiveSize = size ?? groupContext?.size\n const effectiveVariant = variant ?? groupContext?.buttonVariant\n const effectiveDisabled = disabled ?? groupContext?.disabled\n\n const isDisabled = effectiveDisabled ?? loading\n // Resolve virtual variants (tertiary, secondary with tone, link with tone) to actual CVA variants\n const resolvedVariant = (() => {\n // Handle virtual \"tertiary\" variant - always resolves to tertiary-gray or tertiary-color\n if (effectiveVariant === \"tertiary\") {\n return tone === \"color\" ? \"tertiary-color\" : \"tertiary-gray\"\n }\n // Handle secondary with tone\n if (effectiveVariant === \"secondary\" && tone) {\n return tone === \"gray\" ? \"secondary-gray\" : \"secondary-color\"\n }\n // Handle link with tone\n if (effectiveVariant === \"link\" && tone) {\n return tone === \"gray\" ? \"link-gray\" : \"link-color\"\n }\n // Return variant as-is for all other cases\n return effectiveVariant\n })()\n\n // Default to icon size if icon prop is provided and size is undefined\n const defaultSize = icon && !effectiveSize ? \"icon\" : effectiveSize\n\n // Create event payload for callbacks\n const createPayload = React.useCallback((): ButtonEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n timestamp: Date.now(),\n isLoading: loading,\n }), [dataId, loading])\n\n // Wrapped event handlers that emit ButtonEventPayload\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n event.preventDefault()\n return\n }\n onClick?.(event, createPayload())\n },\n [onClick, createPayload, isDisabled]\n )\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onFocus?.(event, createPayload())\n },\n [onFocus, createPayload]\n )\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onBlur?.(event, createPayload())\n },\n [onBlur, createPayload]\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event, createPayload())\n },\n [onKeyDown, createPayload]\n )\n\n // Determine what to render as children\n const renderContent = () => {\n if (asChild) {\n return children\n }\n\n if (loading) {\n const spinner = (\n <LoaderCircle\n className={cn(\n \"animate-spin\",\n // Center absolutely if we are preserving width (no loadingText)\n !loadingText && !defaultSize?.toString().startsWith(\"icon\") && \"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n )}\n aria-hidden=\"true\"\n data-slot=\"loading-icon\"\n data-testid=\"loading-icon\"\n />\n )\n\n if (defaultSize?.toString().startsWith(\"icon\")) {\n return spinner\n }\n\n if (loadingText) {\n return (\n <>\n {spinner}\n {loadingText}\n </>\n )\n }\n\n // Preserve width by rendering hidden children\n return (\n <>\n {spinner}\n <span aria-hidden=\"true\" className=\"opacity-0 flex items-center gap-2\">\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </span>\n </>\n )\n }\n\n if (icon) {\n return (\n <span aria-hidden=\"true\" data-slot=\"icon\">\n {icon}\n </span>\n )\n }\n\n return (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </>\n )\n }\n\n const buttonElement = (\n <Comp\n className={cn(\n buttonVariants({\n variant: resolvedVariant,\n size: defaultSize,\n shape,\n fullWidth,\n className,\n })\n )}\n aria-busy={loading || undefined}\n aria-disabled={isDisabled || undefined}\n data-id={dataId}\n data-loading={loading || undefined}\n data-slot=\"button\"\n disabled={isDisabled}\n onBlur={handleBlur}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n {...props}\n aria-label={loading && !loadingText ? \"Loading\" : props[\"aria-label\"]}\n >\n {/* When asChild=true, Slot requires exactly ONE child element */}\n {asChild ? (\n children\n ) : (\n <>\n {renderContent()}\n {badge !== undefined && (\n <Badge\n className=\"absolute -top-1.5 -right-1.5 min-w-5 h-5 px-1.5 text-xs pointer-events-none\"\n color={badgeColor}\n data-slot=\"button-badge\"\n size={badgeSize}\n type=\"pill-color\"\n >\n {badge}\n </Badge>\n )}\n </>\n )}\n </Comp>\n )\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {buttonElement}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n return buttonElement\n}\n\nexport { Button, buttonVariants }\n"]}
@@ -8,36 +8,6 @@ var drawerOverlayVariants = cva([
8
8
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
9
9
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
10
10
  ]);
11
- var drawerContentVariants = cva(
12
- [
13
- "group/drawer-content bg-[color:var(--drawer-content-bg)] fixed z-50 flex h-auto flex-col"
14
- ],
15
- {
16
- variants: {
17
- /**
18
- * Visual styling applied based on direction
19
- * Note: Direction is controlled by vaul via data-vaul-drawer-direction attribute
20
- */
21
- direction: {
22
- top: [
23
- "inset-x-0 top-0 mb-24 max-h-[80vh] rounded-b-[var(--drawer-content-radius)] border-b border-[color:var(--drawer-content-border)]"
24
- ],
25
- bottom: [
26
- "inset-x-0 bottom-0 mt-24 max-h-[80vh] rounded-t-[var(--drawer-content-radius)] border-t border-[color:var(--drawer-content-border)]"
27
- ],
28
- left: [
29
- "inset-y-0 left-0 w-3/4 border-r border-[color:var(--drawer-content-border)] sm:max-w-sm"
30
- ],
31
- right: [
32
- "inset-y-0 right-0 w-3/4 border-l border-[color:var(--drawer-content-border)] sm:max-w-sm"
33
- ]
34
- }
35
- },
36
- defaultVariants: {
37
- direction: "bottom"
38
- }
39
- }
40
- );
41
11
  var drawerContentBaseVariants = cva([
42
12
  "group/drawer-content bg-[color:var(--drawer-content-bg)] fixed z-50 flex h-auto flex-col",
43
13
  // Top direction styles
@@ -170,6 +140,6 @@ function DrawerDescription({ className, ...props }) {
170
140
  );
171
141
  }
172
142
 
173
- export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, drawerContentBaseVariants, drawerContentVariants, drawerDescriptionVariants, drawerFooterVariants, drawerHandleVariants, drawerHeaderVariants, drawerOverlayVariants, drawerTitleVariants };
174
- //# sourceMappingURL=chunk-PLLJNHWU.js.map
175
- //# sourceMappingURL=chunk-PLLJNHWU.js.map
143
+ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, drawerContentBaseVariants, drawerDescriptionVariants, drawerFooterVariants, drawerHandleVariants, drawerHeaderVariants, drawerOverlayVariants, drawerTitleVariants };
144
+ //# sourceMappingURL=chunk-HI3T55XK.js.map
145
+ //# sourceMappingURL=chunk-HI3T55XK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/navigation/Drawer/Drawer.variants.ts","../src/components/navigation/Drawer/Drawer.tsx"],"names":["DrawerPrimitive"],"mappings":"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","file":"chunk-HI3T55XK.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * DrawerOverlay variant styles\n * Semi-transparent backdrop behind the drawer\n */\nexport const drawerOverlayVariants = cva([\n \"fixed inset-0 z-50 bg-[color:var(--drawer-overlay-bg)]\",\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])\n\n/**\n * DrawerContent base styles (direction handled by data attributes)\n * Use this when direction is controlled by vaul\n */\nexport const drawerContentBaseVariants = cva([\n \"group/drawer-content bg-[color:var(--drawer-content-bg)] fixed z-50 flex h-auto flex-col\",\n // Top direction styles\n \"data-[vaul-drawer-direction=top]:inset-x-0\",\n \"data-[vaul-drawer-direction=top]:top-0\",\n \"data-[vaul-drawer-direction=top]:mb-24\",\n \"data-[vaul-drawer-direction=top]:max-h-[80vh]\",\n \"data-[vaul-drawer-direction=top]:rounded-b-[var(--drawer-content-radius)]\",\n \"data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-[color:var(--drawer-content-border)]\",\n // Bottom direction styles\n \"data-[vaul-drawer-direction=bottom]:inset-x-0\",\n \"data-[vaul-drawer-direction=bottom]:bottom-0\",\n \"data-[vaul-drawer-direction=bottom]:mt-24\",\n \"data-[vaul-drawer-direction=bottom]:max-h-[80vh]\",\n \"data-[vaul-drawer-direction=bottom]:rounded-t-[var(--drawer-content-radius)]\",\n \"data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=bottom]:border-[color:var(--drawer-content-border)]\",\n // Right direction styles\n \"data-[vaul-drawer-direction=right]:inset-y-0\",\n \"data-[vaul-drawer-direction=right]:right-0\",\n \"data-[vaul-drawer-direction=right]:w-3/4\",\n \"data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:border-[color:var(--drawer-content-border)]\",\n \"data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n // Left direction styles\n \"data-[vaul-drawer-direction=left]:inset-y-0\",\n \"data-[vaul-drawer-direction=left]:left-0\",\n \"data-[vaul-drawer-direction=left]:w-3/4\",\n \"data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:border-[color:var(--drawer-content-border)]\",\n \"data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n])\n\n/**\n * Drawer handle (drag indicator) variant styles\n */\nexport const drawerHandleVariants = cva([\n \"bg-[color:var(--drawer-handle-bg)] mx-auto mt-[var(--drawer-handle-margin-top)] h-[var(--drawer-handle-height)] w-[var(--drawer-handle-width)] shrink-0 rounded-full\",\n \"hidden group-data-[vaul-drawer-direction=bottom]/drawer-content:block\",\n])\n\n/**\n * DrawerHeader variant styles\n */\nexport const drawerHeaderVariants = cva([\n \"flex flex-col gap-[var(--drawer-header-gap)] p-[var(--drawer-header-padding)]\",\n \"md:gap-1.5 md:text-left\",\n \"group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center\",\n \"group-data-[vaul-drawer-direction=top]/drawer-content:text-center\",\n])\n\n/**\n * DrawerFooter variant styles\n */\nexport const drawerFooterVariants = cva([\n \"mt-auto flex flex-col gap-[var(--drawer-footer-gap)] p-[var(--drawer-footer-padding)]\",\n])\n\n/**\n * DrawerTitle variant styles\n */\nexport const drawerTitleVariants = cva([\n \"text-foreground font-semibold\",\n])\n\n/**\n * DrawerDescription variant styles\n */\nexport const drawerDescriptionVariants = cva([\n \"text-muted-foreground text-sm\",\n])\n","\"use client\"\n\nimport type {\n DrawerCloseProps,\n DrawerContentProps,\n DrawerDescriptionProps,\n DrawerFooterProps,\n DrawerHeaderProps,\n DrawerOverlayProps,\n DrawerPortalProps,\n DrawerProps,\n DrawerTitleProps,\n DrawerTriggerProps,\n} from \"./Drawer.types\"\n\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n drawerContentBaseVariants,\n drawerDescriptionVariants,\n drawerFooterVariants,\n drawerHandleVariants,\n drawerHeaderVariants,\n drawerOverlayVariants,\n drawerTitleVariants,\n} from \"./Drawer.variants\"\n\n/**\n * Drawer - A drawer/slide-out panel component.\n *\n * Built on top of vaul for touch-friendly drawer behavior.\n * Supports all four directions: top, bottom, left, right.\n *\n * @example\n * <Drawer>\n * <DrawerTrigger>Open Drawer</DrawerTrigger>\n * <DrawerContent>\n * <DrawerHeader>\n * <DrawerTitle>Title</DrawerTitle>\n * <DrawerDescription>Description</DrawerDescription>\n * </DrawerHeader>\n * <div className=\"p-4\">Content</div>\n * </DrawerContent>\n * </Drawer>\n */\nfunction Drawer({ ...props }: DrawerProps) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\n/**\n * DrawerTrigger - Button that opens the drawer.\n */\nfunction DrawerTrigger({ ...props }: DrawerTriggerProps) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\n/**\n * DrawerPortal - Renders drawer content in a portal.\n */\nfunction DrawerPortal({ ...props }: DrawerPortalProps) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\n/**\n * DrawerClose - Button that closes the drawer.\n */\nfunction DrawerClose({ ...props }: DrawerCloseProps) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\n/**\n * DrawerOverlay - Semi-transparent backdrop behind the drawer.\n */\nfunction DrawerOverlay({ className, ...props }: DrawerOverlayProps) {\n return (\n <DrawerPrimitive.Overlay\n className={cn(drawerOverlayVariants(), className)}\n data-slot=\"drawer-overlay\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerContent - Main content container for the drawer.\n *\n * Automatically includes overlay and handles positioning based on direction.\n * Includes a drag handle for bottom drawers.\n */\nfunction DrawerContent({\n className,\n children,\n ...props\n}: DrawerContentProps) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n className={cn(drawerContentBaseVariants(), className)}\n data-slot=\"drawer-content\"\n {...props}\n >\n <div className={cn(drawerHandleVariants())} />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n )\n}\n\n/**\n * DrawerHeader - Container for drawer title and description.\n *\n * Centered text for top/bottom drawers, left-aligned for side drawers on desktop.\n */\nfunction DrawerHeader({ className, ...props }: DrawerHeaderProps) {\n return (\n <div\n className={cn(drawerHeaderVariants(), className)}\n data-slot=\"drawer-header\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerFooter - Footer container for drawer actions.\n *\n * Positioned at the bottom with auto margin-top.\n */\nfunction DrawerFooter({ className, ...props }: DrawerFooterProps) {\n return (\n <div\n className={cn(drawerFooterVariants(), className)}\n data-slot=\"drawer-footer\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerTitle - Title text for the drawer.\n */\nfunction DrawerTitle({ className, ...props }: DrawerTitleProps) {\n return (\n <DrawerPrimitive.Title\n className={cn(drawerTitleVariants(), className)}\n data-slot=\"drawer-title\"\n {...props}\n />\n )\n}\n\n/**\n * DrawerDescription - Description text for the drawer.\n */\nfunction DrawerDescription({ className, ...props }: DrawerDescriptionProps) {\n return (\n <DrawerPrimitive.Description\n className={cn(drawerDescriptionVariants(), className)}\n data-slot=\"drawer-description\"\n {...props}\n />\n )\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n}\n"]}
@@ -0,0 +1,236 @@
1
+ import { ChartTooltipContent, ChartContainer, ChartTooltip, ChartLegend, ChartLegendContent } from './chunk-7I6KK6QE.js';
2
+ import { cn } from './chunk-HRNDJU7D.js';
3
+ import * as React from 'react';
4
+ import { AreaChart as AreaChart$1, CartesianGrid, XAxis, Label, YAxis, Area } from 'recharts';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ function normalizeSeriesConfig(series) {
8
+ return series.map(
9
+ (s) => typeof s === "string" ? { dataKey: s } : s
10
+ );
11
+ }
12
+ function GradientDefs({
13
+ idPrefix,
14
+ series
15
+ }) {
16
+ return /* @__PURE__ */ jsx("defs", { children: series.map((s) => /* @__PURE__ */ jsxs(
17
+ "linearGradient",
18
+ {
19
+ id: `${idPrefix}-${s.dataKey}`,
20
+ x1: "0",
21
+ x2: "0",
22
+ y1: "0",
23
+ y2: "1",
24
+ children: [
25
+ /* @__PURE__ */ jsx(
26
+ "stop",
27
+ {
28
+ offset: "5%",
29
+ stopColor: `var(--color-${s.dataKey})`,
30
+ stopOpacity: 0.8
31
+ }
32
+ ),
33
+ /* @__PURE__ */ jsx(
34
+ "stop",
35
+ {
36
+ offset: "95%",
37
+ stopColor: `var(--color-${s.dataKey})`,
38
+ stopOpacity: 0.1
39
+ }
40
+ )
41
+ ]
42
+ },
43
+ s.dataKey
44
+ )) });
45
+ }
46
+ function AreaChart({
47
+ allowDecimals = true,
48
+ ariaLabel,
49
+ autoMinValue = false,
50
+ className,
51
+ config,
52
+ connectNulls = false,
53
+ customTooltip,
54
+ enableLegendSlider = false,
55
+ curveType = "monotone",
56
+ data,
57
+ fill = "solid",
58
+ fillOpacity = 0.3,
59
+ gradientIdPrefix = "area-gradient",
60
+ gridDashArray = "3 3",
61
+ intervalType,
62
+ legendPosition = "bottom",
63
+ maxValue,
64
+ minValue,
65
+ onValueChange,
66
+ series,
67
+ showGrid = true,
68
+ showLegend = false,
69
+ showTooltip = true,
70
+ showXAxis = true,
71
+ showYAxis = true,
72
+ startEndOnly = false,
73
+ tickGap,
74
+ tooltipCallback,
75
+ tooltipIndicator = "dot",
76
+ variant = "default",
77
+ xAxisLabel,
78
+ xAxisKey,
79
+ xAxisTickFormatter,
80
+ yAxisLabel,
81
+ yAxisTickFormatter,
82
+ yAxisWidth,
83
+ ...props
84
+ }) {
85
+ const normalizedSeries = normalizeSeriesConfig(series);
86
+ const isStacked = variant === "stacked" || variant === "percent";
87
+ const isPercent = variant === "percent";
88
+ const isGradient = variant === "gradient" || fill === "gradient";
89
+ const isNoFill = fill === "none";
90
+ const chartId = React.useId().replaceAll(":", "");
91
+ const gradientPrefix = `${gradientIdPrefix}-${chartId}`;
92
+ const prevTooltipStateRef = React.useRef(false);
93
+ const handleDotClick = React.useCallback(
94
+ (dataKey) => (data2) => {
95
+ if (!onValueChange) return;
96
+ const payload = data2.payload;
97
+ const value = payload[dataKey];
98
+ onValueChange({
99
+ category: payload[xAxisKey],
100
+ dataKey,
101
+ payload,
102
+ value: typeof value === "number" ? value : 0
103
+ });
104
+ },
105
+ [onValueChange, xAxisKey]
106
+ );
107
+ const TooltipContentWithCallback = React.useCallback(
108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
+ (props2) => {
110
+ const { active = false, label, payload } = props2;
111
+ if (tooltipCallback && active !== prevTooltipStateRef.current) {
112
+ prevTooltipStateRef.current = active;
113
+ tooltipCallback({
114
+ active,
115
+ label,
116
+ payload: payload?.map((p) => ({
117
+ dataKey: String(p.dataKey),
118
+ value: p.value,
119
+ payload: p.payload
120
+ }))
121
+ });
122
+ }
123
+ return /* @__PURE__ */ jsx(ChartTooltipContent, { indicator: tooltipIndicator, ...props2 });
124
+ },
125
+ [tooltipCallback, tooltipIndicator]
126
+ );
127
+ const yDomain = React.useMemo(() => {
128
+ const min = minValue ?? (autoMinValue ? "auto" : 0);
129
+ const max = maxValue ?? "auto";
130
+ return [min, max];
131
+ }, [autoMinValue, maxValue, minValue]);
132
+ const xAxisTicks = React.useMemo(() => {
133
+ if (!startEndOnly || data.length < 2) return;
134
+ const first = data[0];
135
+ const last = data[data.length - 1];
136
+ if (!first || !last) return;
137
+ return [first[xAxisKey], last[xAxisKey]];
138
+ }, [data, startEndOnly, xAxisKey]);
139
+ return /* @__PURE__ */ jsx(
140
+ "div",
141
+ {
142
+ "aria-label": ariaLabel,
143
+ "data-slot": "area-chart",
144
+ role: ariaLabel ? "img" : void 0,
145
+ ...props,
146
+ children: /* @__PURE__ */ jsx(
147
+ ChartContainer,
148
+ {
149
+ className: cn(className),
150
+ config,
151
+ children: /* @__PURE__ */ jsxs(
152
+ AreaChart$1,
153
+ {
154
+ accessibilityLayer: true,
155
+ data,
156
+ margin: { left: xAxisLabel ? 20 : 12, right: 12, bottom: yAxisLabel ? 20 : 0 },
157
+ stackOffset: isPercent ? "expand" : void 0,
158
+ children: [
159
+ isGradient && /* @__PURE__ */ jsx(GradientDefs, { idPrefix: gradientPrefix, series: normalizedSeries }),
160
+ showGrid && /* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: gridDashArray, vertical: false }),
161
+ showXAxis && /* @__PURE__ */ jsx(
162
+ XAxis,
163
+ {
164
+ axisLine: false,
165
+ dataKey: xAxisKey,
166
+ interval: intervalType,
167
+ minTickGap: tickGap,
168
+ tickFormatter: xAxisTickFormatter,
169
+ tickLine: false,
170
+ tickMargin: 8,
171
+ ticks: xAxisTicks,
172
+ children: xAxisLabel && /* @__PURE__ */ jsx(Label, { offset: -5, position: "insideBottom", value: xAxisLabel })
173
+ }
174
+ ),
175
+ showYAxis && /* @__PURE__ */ jsx(
176
+ YAxis,
177
+ {
178
+ allowDecimals,
179
+ axisLine: false,
180
+ domain: isPercent ? [0, 1] : yDomain,
181
+ tickFormatter: isPercent ? (value) => `${(value * 100).toFixed(0)}%` : yAxisTickFormatter,
182
+ tickLine: false,
183
+ tickMargin: 8,
184
+ width: yAxisWidth,
185
+ children: yAxisLabel && /* @__PURE__ */ jsx(Label, { angle: -90, offset: -5, position: "insideLeft", value: yAxisLabel })
186
+ }
187
+ ),
188
+ showTooltip && /* @__PURE__ */ jsx(
189
+ ChartTooltip,
190
+ {
191
+ content: customTooltip ?? (tooltipCallback ? /* @__PURE__ */ jsx(TooltipContentWithCallback, {}) : /* @__PURE__ */ jsx(ChartTooltipContent, { indicator: tooltipIndicator })),
192
+ cursor: false
193
+ }
194
+ ),
195
+ showLegend && /* @__PURE__ */ jsx(
196
+ ChartLegend,
197
+ {
198
+ align: legendPosition === "left" ? "left" : legendPosition === "right" ? "right" : "center",
199
+ content: /* @__PURE__ */ jsx(ChartLegendContent, { enableSlider: enableLegendSlider }),
200
+ layout: legendPosition === "left" || legendPosition === "right" ? "vertical" : "horizontal",
201
+ verticalAlign: legendPosition === "top" ? "top" : legendPosition === "bottom" ? "bottom" : "middle"
202
+ }
203
+ ),
204
+ normalizedSeries.map((seriesConfig) => {
205
+ const { dataKey, fillOpacity: seriesFillOpacity, stackId } = seriesConfig;
206
+ const areaFill = isGradient ? `url(#${gradientPrefix}-${dataKey})` : `var(--color-${dataKey})`;
207
+ const stroke = `var(--color-${dataKey})`;
208
+ const computedFillOpacity = isNoFill ? 0 : seriesFillOpacity ?? fillOpacity;
209
+ return /* @__PURE__ */ jsx(
210
+ Area,
211
+ {
212
+ activeDot: onValueChange ? { onClick: handleDotClick(dataKey), r: 6, style: { cursor: "pointer" } } : { r: 6 },
213
+ connectNulls,
214
+ dataKey,
215
+ fill: areaFill,
216
+ fillOpacity: computedFillOpacity,
217
+ stackId: isStacked ? "area-stack" : stackId,
218
+ stroke,
219
+ type: curveType
220
+ },
221
+ dataKey
222
+ );
223
+ })
224
+ ]
225
+ }
226
+ )
227
+ }
228
+ )
229
+ }
230
+ );
231
+ }
232
+ AreaChart.displayName = "AreaChart";
233
+
234
+ export { AreaChart };
235
+ //# sourceMappingURL=chunk-HJ4E6YPW.js.map
236
+ //# sourceMappingURL=chunk-HJ4E6YPW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/AreaChart/AreaChart.tsx"],"names":["data","props","RechartsAreaChart"],"mappings":"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","file":"chunk-HJ4E6YPW.js","sourcesContent":["\"use client\"\n\nimport type {\n AreaChartProps,\n AreaChartSeriesConfig,\n} from \"./AreaChart.types\"\n\nimport * as React from \"react\"\nimport {\n Area,\n CartesianGrid,\n Label,\n AreaChart as RechartsAreaChart,\n XAxis,\n YAxis,\n} from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"../Chart\"\n\n/**\n * Normalize series to AreaChartSeriesConfig format\n */\nfunction normalizeSeriesConfig(\n series: (AreaChartSeriesConfig | string)[]\n): AreaChartSeriesConfig[] {\n return series.map((s) =>\n typeof s === \"string\" ? { dataKey: s } : s\n )\n}\n\n/**\n * Generate gradient defs for gradient variant\n */\nfunction GradientDefs({\n idPrefix,\n series,\n}: {\n idPrefix: string\n series: AreaChartSeriesConfig[]\n}) {\n return (\n <defs>\n {series.map((s) => (\n <linearGradient\n key={s.dataKey}\n id={`${idPrefix}-${s.dataKey}`}\n x1=\"0\"\n x2=\"0\"\n y1=\"0\"\n y2=\"1\"\n >\n <stop\n offset=\"5%\"\n stopColor={`var(--color-${s.dataKey})`}\n stopOpacity={0.8}\n />\n <stop\n offset=\"95%\"\n stopColor={`var(--color-${s.dataKey})`}\n stopOpacity={0.1}\n />\n </linearGradient>\n ))}\n </defs>\n )\n}\n\n/**\n * AreaChart - Data visualization component for cumulative data\n *\n * Displays quantitative values along a continuous axis with filled area.\n * Ideal for showing trends over time and comparing volumes between series.\n *\n * @example\n * ```tsx\n * const data = [\n * { month: \"Jan\", desktop: 186, mobile: 80 },\n * { month: \"Feb\", desktop: 305, mobile: 200 },\n * ]\n *\n * const config = {\n * desktop: { label: \"Desktop\", color: \"hsl(var(--chart-1))\" },\n * mobile: { label: \"Mobile\", color: \"hsl(var(--chart-2))\" },\n * }\n *\n * <AreaChart\n * data={data}\n * config={config}\n * xAxisKey=\"month\"\n * series={[\"desktop\", \"mobile\"]}\n * />\n * ```\n */\nexport function AreaChart({\n allowDecimals = true,\n ariaLabel,\n autoMinValue = false,\n className,\n config,\n connectNulls = false,\n customTooltip,\n enableLegendSlider = false,\n curveType = \"monotone\",\n data,\n fill = \"solid\",\n fillOpacity = 0.3,\n gradientIdPrefix = \"area-gradient\",\n gridDashArray = \"3 3\",\n intervalType,\n legendPosition = \"bottom\",\n maxValue,\n minValue,\n onValueChange,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n showXAxis = true,\n showYAxis = true,\n startEndOnly = false,\n tickGap,\n tooltipCallback,\n tooltipIndicator = \"dot\",\n variant = \"default\",\n xAxisLabel,\n xAxisKey,\n xAxisTickFormatter,\n yAxisLabel,\n yAxisTickFormatter,\n yAxisWidth,\n ...props\n}: AreaChartProps) {\n const normalizedSeries = normalizeSeriesConfig(series)\n const isStacked = variant === \"stacked\" || variant === \"percent\"\n const isPercent = variant === \"percent\"\n const isGradient = variant === \"gradient\" || fill === \"gradient\"\n const isNoFill = fill === \"none\"\n const chartId = React.useId().replaceAll(\":\", \"\")\n const gradientPrefix = `${gradientIdPrefix}-${chartId}`\n const prevTooltipStateRef = React.useRef<boolean>(false)\n\n // Handle dot click for onValueChange\n const handleDotClick = React.useCallback(\n (dataKey: string) => (data: { payload: Record<string, unknown> }) => {\n if (!onValueChange) return\n const payload = data.payload\n const value = payload[dataKey]\n onValueChange({\n category: payload[xAxisKey],\n dataKey,\n payload,\n value: typeof value === \"number\" ? value : 0,\n })\n },\n [onValueChange, xAxisKey]\n )\n\n /* eslint-disable react-hooks/static-components, @eslint-react/no-nested-component-definitions, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access -- Intentional: memoized render function with Recharts any-typed props */\n // Custom tooltip content wrapper for tooltipCallback\n const TooltipContentWithCallback = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: any) => {\n const { active = false, label, payload } = props\n\n // Call tooltipCallback when state changes\n if (tooltipCallback && active !== prevTooltipStateRef.current) {\n prevTooltipStateRef.current = active\n tooltipCallback({\n active,\n label,\n payload: payload?.map((p: { dataKey: number | string; payload: Record<string, unknown>; value: number; }) => ({\n dataKey: String(p.dataKey),\n value: p.value,\n payload: p.payload,\n })),\n })\n }\n\n return <ChartTooltipContent indicator={tooltipIndicator} {...props} />\n },\n [tooltipCallback, tooltipIndicator]\n )\n\n // Calculate Y-axis domain\n const yDomain = React.useMemo(() => {\n const min = minValue ?? (autoMinValue ? \"auto\" : 0)\n const max = maxValue ?? \"auto\"\n return [min, max] as const\n }, [autoMinValue, maxValue, minValue])\n\n // Calculate X-axis ticks for startEndOnly\n const xAxisTicks = React.useMemo(() => {\n if (!startEndOnly || data.length < 2) return\n const first = data[0]\n const last = data[data.length - 1]\n if (!first || !last) return\n return [first[xAxisKey], last[xAxisKey]] as string[]\n }, [data, startEndOnly, xAxisKey])\n\n return (\n <div\n aria-label={ariaLabel}\n data-slot=\"area-chart\"\n role={ariaLabel ? \"img\" : undefined}\n {...props}\n >\n <ChartContainer\n className={cn(className)}\n config={config}\n >\n <RechartsAreaChart\n accessibilityLayer\n data={data}\n margin={{ left: xAxisLabel ? 20 : 12, right: 12, bottom: yAxisLabel ? 20 : 0 }}\n stackOffset={isPercent ? \"expand\" : undefined}\n >\n {isGradient && (\n <GradientDefs idPrefix={gradientPrefix} series={normalizedSeries} />\n )}\n\n {showGrid && (\n <CartesianGrid strokeDasharray={gridDashArray} vertical={false} />\n )}\n\n {showXAxis && (\n <XAxis\n axisLine={false}\n dataKey={xAxisKey}\n interval={intervalType}\n minTickGap={tickGap}\n tickFormatter={xAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n ticks={xAxisTicks}\n >\n {xAxisLabel && (\n <Label offset={-5} position=\"insideBottom\" value={xAxisLabel} />\n )}\n </XAxis>\n )}\n\n {showYAxis && (\n <YAxis\n allowDecimals={allowDecimals}\n axisLine={false}\n domain={isPercent ? [0, 1] : yDomain}\n tickFormatter={isPercent ? (value) => `${(value * 100).toFixed(0)}%` : yAxisTickFormatter}\n tickLine={false}\n tickMargin={8}\n width={yAxisWidth}\n >\n {yAxisLabel && (\n <Label angle={-90} offset={-5} position=\"insideLeft\" value={yAxisLabel} />\n )}\n </YAxis>\n )}\n\n {showTooltip && (\n <ChartTooltip\n content={\n customTooltip\n ?? (tooltipCallback\n ? <TooltipContentWithCallback />\n : <ChartTooltipContent indicator={tooltipIndicator} />)\n }\n cursor={false}\n />\n )}\n\n {showLegend && (\n <ChartLegend\n align={legendPosition === \"left\" ? \"left\" : legendPosition === \"right\" ? \"right\" : \"center\"}\n content={<ChartLegendContent enableSlider={enableLegendSlider} />}\n layout={legendPosition === \"left\" || legendPosition === \"right\" ? \"vertical\" : \"horizontal\"}\n verticalAlign={legendPosition === \"top\" ? \"top\" : legendPosition === \"bottom\" ? \"bottom\" : \"middle\"}\n />\n )}\n\n {normalizedSeries.map((seriesConfig) => {\n const { dataKey, fillOpacity: seriesFillOpacity, stackId } = seriesConfig\n\n const areaFill = isGradient\n ? `url(#${gradientPrefix}-${dataKey})`\n : `var(--color-${dataKey})`\n\n const stroke = `var(--color-${dataKey})`\n\n // Calculate fill opacity: 0 for \"none\", otherwise use series or default\n const computedFillOpacity = isNoFill ? 0 : (seriesFillOpacity ?? fillOpacity)\n\n return (\n <Area\n key={dataKey}\n activeDot={\n onValueChange\n ? { onClick: handleDotClick(dataKey), r: 6, style: { cursor: \"pointer\" } }\n : { r: 6 }\n }\n connectNulls={connectNulls}\n dataKey={dataKey}\n fill={areaFill}\n fillOpacity={computedFillOpacity}\n stackId={isStacked ? \"area-stack\" : stackId}\n stroke={stroke}\n type={curveType}\n />\n )\n })}\n </RechartsAreaChart>\n </ChartContainer>\n </div>\n )\n}\n\nAreaChart.displayName = \"AreaChart\"\n"]}
@@ -1,7 +1,7 @@
1
1
  import { ScrollArea } from './chunk-CNRV2IGH.js';
2
- import { Calendar } from './chunk-R4UOT76L.js';
2
+ import { Calendar } from './chunk-XAIUZJOJ.js';
3
3
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-AFCSDND5.js';
4
- import { Button } from './chunk-ONQCNOLU.js';
4
+ import { Button } from './chunk-HDOR3SN3.js';
5
5
  import { cn } from './chunk-HRNDJU7D.js';
6
6
  import { format, startOfDay, isBefore, isAfter, setMinutes, setHours } from 'date-fns';
7
7
  import { CalendarIcon, XIcon } from 'lucide-react';
@@ -491,5 +491,5 @@ function DatePicker({
491
491
  }
492
492
 
493
493
  export { DatePicker, datePickerTriggerVariants };
494
- //# sourceMappingURL=chunk-LS3WD6IZ.js.map
495
- //# sourceMappingURL=chunk-LS3WD6IZ.js.map
494
+ //# sourceMappingURL=chunk-I55QJ4CU.js.map
495
+ //# sourceMappingURL=chunk-I55QJ4CU.js.map