@etus/ui 0.4.0-beta.7 → 0.4.0-beta.9

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 (242) hide show
  1. package/dist/{chunk-KR3IVNQH.js → chunk-2FJJOHHH.js} +16 -10
  2. package/dist/chunk-2FJJOHHH.js.map +1 -0
  3. package/dist/{chunk-2YWWZEPE.js → chunk-2HM5Z2YP.js} +3 -3
  4. package/dist/{chunk-2YWWZEPE.js.map → chunk-2HM5Z2YP.js.map} +1 -1
  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-SCGKQ5RE.js → chunk-2ROFZG3A.js} +3 -3
  8. package/dist/{chunk-SCGKQ5RE.js.map → chunk-2ROFZG3A.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-YP2ATSXP.js → chunk-3BBOSSDG.js} +14 -6
  14. package/dist/{chunk-YP2ATSXP.js.map → chunk-3BBOSSDG.js.map} +1 -1
  15. package/dist/{chunk-UFRMZ3M6.js → chunk-3JCV72FO.js} +6 -2
  16. package/dist/chunk-3JCV72FO.js.map +1 -0
  17. package/dist/{chunk-2UGDLAYC.js → chunk-45D4O7RK.js} +10 -3
  18. package/dist/chunk-45D4O7RK.js.map +1 -0
  19. package/dist/{chunk-OTSK2KAI.js → chunk-4EYYCHLD.js} +5 -5
  20. package/dist/{chunk-OTSK2KAI.js.map → chunk-4EYYCHLD.js.map} +1 -1
  21. package/dist/{chunk-QIETN4UU.js → chunk-55RLLBXW.js} +4 -4
  22. package/dist/{chunk-QIETN4UU.js.map → chunk-55RLLBXW.js.map} +1 -1
  23. package/dist/{chunk-FCT6FEEZ.js → chunk-5DMK7CVS.js} +5 -5
  24. package/dist/{chunk-FCT6FEEZ.js.map → chunk-5DMK7CVS.js.map} +1 -1
  25. package/dist/{chunk-J62TFQHR.js → chunk-5I7AXWJU.js} +13 -13
  26. package/dist/chunk-5I7AXWJU.js.map +1 -0
  27. package/dist/{chunk-65YSTUD2.js → chunk-5SUD32RK.js} +44 -14
  28. package/dist/chunk-5SUD32RK.js.map +1 -0
  29. package/dist/{chunk-VPNFYQBL.js → chunk-6DN2UAIR.js} +3 -3
  30. package/dist/chunk-6DN2UAIR.js.map +1 -0
  31. package/dist/{chunk-EGYWK2XX.js → chunk-7CTFBOD4.js} +3 -3
  32. package/dist/{chunk-EGYWK2XX.js.map → chunk-7CTFBOD4.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-23BHD62H.js → chunk-EVZ2GZU4.js} +5 -5
  40. package/dist/chunk-EVZ2GZU4.js.map +1 -0
  41. package/dist/{chunk-IRKDMISK.js → chunk-G2MAGZHQ.js} +4 -3
  42. package/dist/chunk-G2MAGZHQ.js.map +1 -0
  43. package/dist/{chunk-4GQN76L7.js → chunk-G7PBPX3K.js} +3 -3
  44. package/dist/{chunk-4GQN76L7.js.map → chunk-G7PBPX3K.js.map} +1 -1
  45. package/dist/{chunk-36XTKR3B.js → chunk-GDSYLR7L.js} +4 -4
  46. package/dist/{chunk-36XTKR3B.js.map → chunk-GDSYLR7L.js.map} +1 -1
  47. package/dist/{chunk-ONQCNOLU.js → chunk-HDOR3SN3.js} +3 -3
  48. package/dist/{chunk-ONQCNOLU.js.map → chunk-HDOR3SN3.js.map} +1 -1
  49. package/dist/{chunk-PLLJNHWU.js → chunk-HI3T55XK.js} +3 -33
  50. package/dist/chunk-HI3T55XK.js.map +1 -0
  51. package/dist/chunk-HJ4E6YPW.js +236 -0
  52. package/dist/chunk-HJ4E6YPW.js.map +1 -0
  53. package/dist/{chunk-LS3WD6IZ.js → chunk-I55QJ4CU.js} +4 -4
  54. package/dist/{chunk-LS3WD6IZ.js.map → chunk-I55QJ4CU.js.map} +1 -1
  55. package/dist/{chunk-HKXQLWGR.js → chunk-IOWHM7ZY.js} +13 -11
  56. package/dist/chunk-IOWHM7ZY.js.map +1 -0
  57. package/dist/{chunk-ILAV2AZ4.js → chunk-IZC5YFGO.js} +3 -3
  58. package/dist/{chunk-ILAV2AZ4.js.map → chunk-IZC5YFGO.js.map} +1 -1
  59. package/dist/{chunk-Y7UFBSAD.js → chunk-KHOCAVQO.js} +3 -3
  60. package/dist/{chunk-Y7UFBSAD.js.map → chunk-KHOCAVQO.js.map} +1 -1
  61. package/dist/{chunk-IBVCSZCH.js → chunk-KVJOKWP4.js} +5 -4
  62. package/dist/chunk-KVJOKWP4.js.map +1 -0
  63. package/dist/{chunk-2Y7PQ6ZL.js → chunk-LNSCL76Q.js} +5 -5
  64. package/dist/{chunk-2Y7PQ6ZL.js.map → chunk-LNSCL76Q.js.map} +1 -1
  65. package/dist/{chunk-OWOVCGUZ.js → chunk-M2C7HBR5.js} +3 -3
  66. package/dist/{chunk-OWOVCGUZ.js.map → chunk-M2C7HBR5.js.map} +1 -1
  67. package/dist/{chunk-33JGPMUW.js → chunk-M7TPROVH.js} +20 -7
  68. package/dist/chunk-M7TPROVH.js.map +1 -0
  69. package/dist/{chunk-AVR3LVOQ.js → chunk-MQMRVBUL.js} +4 -4
  70. package/dist/{chunk-AVR3LVOQ.js.map → chunk-MQMRVBUL.js.map} +1 -1
  71. package/dist/{chunk-JMZ4CO6R.js → chunk-NCT5WXKG.js} +3 -3
  72. package/dist/{chunk-JMZ4CO6R.js.map → chunk-NCT5WXKG.js.map} +1 -1
  73. package/dist/{chunk-KPNNSUXM.js → chunk-O7AUE5GP.js} +5 -3
  74. package/dist/chunk-O7AUE5GP.js.map +1 -0
  75. package/dist/{chunk-6HEURMY3.js → chunk-OCXGG7UP.js} +5 -5
  76. package/dist/{chunk-6HEURMY3.js.map → chunk-OCXGG7UP.js.map} +1 -1
  77. package/dist/{chunk-FSMHI7DW.js → chunk-OXDWUKGP.js} +3 -3
  78. package/dist/chunk-OXDWUKGP.js.map +1 -0
  79. package/dist/{chunk-SJSYKUCL.js → chunk-Q335YODG.js} +3 -3
  80. package/dist/{chunk-SJSYKUCL.js.map → chunk-Q335YODG.js.map} +1 -1
  81. package/dist/{chunk-DDM2I5C6.js → chunk-R5OIL4I4.js} +3 -3
  82. package/dist/{chunk-DDM2I5C6.js.map → chunk-R5OIL4I4.js.map} +1 -1
  83. package/dist/{chunk-KC6CHPT3.js → chunk-RJ2QVURO.js} +4 -4
  84. package/dist/{chunk-KC6CHPT3.js.map → chunk-RJ2QVURO.js.map} +1 -1
  85. package/dist/{chunk-FYJHWYPM.js → chunk-S524YVMO.js} +3 -3
  86. package/dist/{chunk-FYJHWYPM.js.map → chunk-S524YVMO.js.map} +1 -1
  87. package/dist/{chunk-OWIFNJXZ.js → chunk-S7TVRVRU.js} +3 -3
  88. package/dist/chunk-S7TVRVRU.js.map +1 -0
  89. package/dist/{chunk-JKYB5QAP.js → chunk-SLRCXCHM.js} +4 -4
  90. package/dist/{chunk-JKYB5QAP.js.map → chunk-SLRCXCHM.js.map} +1 -1
  91. package/dist/{chunk-JONTKXGK.js → chunk-U2CXFKRK.js} +3 -3
  92. package/dist/{chunk-JONTKXGK.js.map → chunk-U2CXFKRK.js.map} +1 -1
  93. package/dist/{chunk-B4ETIQOO.js → chunk-U2R47SPY.js} +3 -3
  94. package/dist/{chunk-B4ETIQOO.js.map → chunk-U2R47SPY.js.map} +1 -1
  95. package/dist/{chunk-TNROOKX3.js → chunk-UDY3IDCY.js} +10 -2
  96. package/dist/chunk-UDY3IDCY.js.map +1 -0
  97. package/dist/{chunk-3WOGOTOV.js → chunk-UPYT2XM5.js} +7 -7
  98. package/dist/chunk-UPYT2XM5.js.map +1 -0
  99. package/dist/{chunk-V7XHE25E.js → chunk-UST7EAJM.js} +4 -4
  100. package/dist/{chunk-V7XHE25E.js.map → chunk-UST7EAJM.js.map} +1 -1
  101. package/dist/{chunk-YWA63YN3.js → chunk-VAVE4ZJF.js} +2 -2
  102. package/dist/chunk-VAVE4ZJF.js.map +1 -0
  103. package/dist/{chunk-6ELVWWIA.js → chunk-VBJ26PZJ.js} +3 -3
  104. package/dist/{chunk-6ELVWWIA.js.map → chunk-VBJ26PZJ.js.map} +1 -1
  105. package/dist/chunk-WKWLKGNI.js +643 -0
  106. package/dist/chunk-WKWLKGNI.js.map +1 -0
  107. package/dist/{chunk-Z3FL7LEK.js → chunk-X253YD45.js} +71 -6
  108. package/dist/chunk-X253YD45.js.map +1 -0
  109. package/dist/{chunk-6XY7QYVR.js → chunk-X3AXEE3S.js} +3 -3
  110. package/dist/{chunk-6XY7QYVR.js.map → chunk-X3AXEE3S.js.map} +1 -1
  111. package/dist/{chunk-R4UOT76L.js → chunk-XAIUZJOJ.js} +8 -8
  112. package/dist/chunk-XAIUZJOJ.js.map +1 -0
  113. package/dist/{chunk-ZO2EKJZM.js → chunk-XCZMJA2D.js} +7 -7
  114. package/dist/{chunk-ZO2EKJZM.js.map → chunk-XCZMJA2D.js.map} +1 -1
  115. package/dist/{chunk-XRMKL43Y.js → chunk-XOLV7G4S.js} +3 -3
  116. package/dist/{chunk-XRMKL43Y.js.map → chunk-XOLV7G4S.js.map} +1 -1
  117. package/dist/chunk-XYYOV5GW.js +186 -0
  118. package/dist/chunk-XYYOV5GW.js.map +1 -0
  119. package/dist/{chunk-4MQNDQ4O.js → chunk-YACIRNVP.js} +12 -4
  120. package/dist/chunk-YACIRNVP.js.map +1 -0
  121. package/dist/{chunk-5XQIH6WM.js → chunk-YM5YBDRM.js} +4 -4
  122. package/dist/{chunk-5XQIH6WM.js.map → chunk-YM5YBDRM.js.map} +1 -1
  123. package/dist/{chunk-AUCDXPWH.js → chunk-YZ25HHV2.js} +5 -5
  124. package/dist/{chunk-AUCDXPWH.js.map → chunk-YZ25HHV2.js.map} +1 -1
  125. package/dist/{chunk-Y3BOERVB.js → chunk-ZEFK3AXP.js} +3 -3
  126. package/dist/{chunk-Y3BOERVB.js.map → chunk-ZEFK3AXP.js.map} +1 -1
  127. package/dist/{chunk-L3Z5FAJE.js → chunk-ZEYLSDSG.js} +3 -3
  128. package/dist/{chunk-L3Z5FAJE.js.map → chunk-ZEYLSDSG.js.map} +1 -1
  129. package/dist/components/advanced/Calendar/index.js +4 -4
  130. package/dist/components/advanced/Command/index.js +1 -1
  131. package/dist/components/advanced/EventCalendar/index.js +4 -4
  132. package/dist/components/advanced/FileDropzone/index.js +1 -1
  133. package/dist/components/advanced/FilterBuilder/index.js +4 -4
  134. package/dist/components/advanced/MarkdownEditor/index.js +2 -2
  135. package/dist/components/advanced/ReportBuilder/index.js +2 -2
  136. package/dist/components/advanced/RichTextEditor/index.js +2 -2
  137. package/dist/components/advanced/index.js +17 -17
  138. package/dist/components/data-display/AreaChart/index.js +1 -1
  139. package/dist/components/data-display/BarChart/index.js +1 -1
  140. package/dist/components/data-display/Carousel/index.js +4 -4
  141. package/dist/components/data-display/ChartCard/index.js +2 -2
  142. package/dist/components/data-display/DashboardFilterbar/index.js +6 -6
  143. package/dist/components/data-display/DataTable/FilterBuilder/index.js +4 -4
  144. package/dist/components/data-display/DataTable/index.js +7 -7
  145. package/dist/components/data-display/ImageGallery/index.js +7 -7
  146. package/dist/components/data-display/KPICard/index.js +4 -4
  147. package/dist/components/data-display/Lightbox/index.js +1 -1
  148. package/dist/components/data-display/LineChart/index.js +1 -1
  149. package/dist/components/data-display/List/index.js +3 -3
  150. package/dist/components/data-display/Table/index.js +1 -1
  151. package/dist/components/data-display/VirtualTable/index.js +2 -2
  152. package/dist/components/data-display/index.js +34 -34
  153. package/dist/components/feedback/Alert/index.js +1 -1
  154. package/dist/components/feedback/AlertDialog/index.js +4 -4
  155. package/dist/components/feedback/ConfirmModal/index.js +5 -5
  156. package/dist/components/feedback/Modal/index.js +1 -1
  157. package/dist/components/feedback/Notification/index.js +2 -2
  158. package/dist/components/feedback/index.js +10 -10
  159. package/dist/components/forms/ColorPicker/index.js +1 -1
  160. package/dist/components/forms/DatePicker/index.js +5 -5
  161. package/dist/components/forms/DateRangePicker/index.js +5 -5
  162. package/dist/components/forms/Field/index.js +2 -2
  163. package/dist/components/forms/Form/index.js +2 -2
  164. package/dist/components/forms/IftaLabel/index.js +1 -1
  165. package/dist/components/forms/InputGroup/index.js +4 -4
  166. package/dist/components/forms/InputOTPField/index.js +3 -3
  167. package/dist/components/forms/MultiSelect/index.js +2 -1
  168. package/dist/components/forms/RadioButton/index.js +1 -1
  169. package/dist/components/forms/Rating/index.js +1 -1
  170. package/dist/components/forms/TagsInput/index.js +2 -2
  171. package/dist/components/forms/TextareaField/index.js +3 -3
  172. package/dist/components/forms/ToggleGroup/index.js +1 -1
  173. package/dist/components/forms/index.js +31 -31
  174. package/dist/components/index.js +141 -141
  175. package/dist/components/layout/index.js +2 -2
  176. package/dist/components/navigation/AccountSwitch/index.js +4 -4
  177. package/dist/components/navigation/Drawer/index.js +1 -1
  178. package/dist/components/navigation/DropdownMenu/index.js +1 -1
  179. package/dist/components/navigation/Header/index.js +1 -1
  180. package/dist/components/navigation/MobileSidebar/index.js +4 -4
  181. package/dist/components/navigation/Pagination/index.js +4 -4
  182. package/dist/components/navigation/Sidebar/index.js +5 -5
  183. package/dist/components/navigation/UserProfileDropdown/index.js +1 -1
  184. package/dist/components/navigation/WorkspaceDropdown/index.js +1 -1
  185. package/dist/components/navigation/index.js +16 -16
  186. package/dist/components/primitives/AspectRatio/index.js +1 -1
  187. package/dist/components/primitives/Avatar/index.js +1 -1
  188. package/dist/components/primitives/Badge/index.js +1 -1
  189. package/dist/components/primitives/Button/index.js +3 -3
  190. package/dist/components/primitives/ConfirmButton/index.js +5 -5
  191. package/dist/components/primitives/Label/index.js +1 -1
  192. package/dist/components/primitives/ProgressBar/index.js +1 -1
  193. package/dist/components/primitives/SplitButton/index.js +2 -2
  194. package/dist/components/primitives/StatusIndicator/index.js +1 -1
  195. package/dist/components/primitives/Tag/index.js +1 -1
  196. package/dist/components/primitives/Toggle/index.js +1 -1
  197. package/dist/components/primitives/index.js +21 -21
  198. package/dist/components/workflow/ApprovalFlow/index.js +5 -5
  199. package/dist/components/workflow/CommentSystem/index.js +5 -5
  200. package/dist/components/workflow/Dashboard/index.js +4 -4
  201. package/dist/components/workflow/DashboardBuilder/index.js +5 -5
  202. package/dist/components/workflow/KanbanBoard/index.js +5 -5
  203. package/dist/components/workflow/ReportGenerator/index.js +5 -5
  204. package/dist/components/workflow/TaskStatus/index.js +2 -2
  205. package/dist/components/workflow/Wizard/index.js +4 -4
  206. package/dist/components/workflow/index.js +16 -16
  207. package/dist/index.d.ts +162 -56
  208. package/dist/index.js +143 -143
  209. package/dist/styles.css +121 -25
  210. package/package.json +2 -2
  211. package/dist/chunk-23BHD62H.js.map +0 -1
  212. package/dist/chunk-2UGDLAYC.js.map +0 -1
  213. package/dist/chunk-33JGPMUW.js.map +0 -1
  214. package/dist/chunk-3WOGOTOV.js.map +0 -1
  215. package/dist/chunk-4MQNDQ4O.js.map +0 -1
  216. package/dist/chunk-65YSTUD2.js.map +0 -1
  217. package/dist/chunk-FSMHI7DW.js.map +0 -1
  218. package/dist/chunk-GAP3OZR7.js +0 -223
  219. package/dist/chunk-GAP3OZR7.js.map +0 -1
  220. package/dist/chunk-HKXQLWGR.js.map +0 -1
  221. package/dist/chunk-IBVCSZCH.js.map +0 -1
  222. package/dist/chunk-ICAQYWCX.js +0 -153
  223. package/dist/chunk-ICAQYWCX.js.map +0 -1
  224. package/dist/chunk-IRKDMISK.js.map +0 -1
  225. package/dist/chunk-J62TFQHR.js.map +0 -1
  226. package/dist/chunk-KPNNSUXM.js.map +0 -1
  227. package/dist/chunk-KR3IVNQH.js.map +0 -1
  228. package/dist/chunk-OWIFNJXZ.js.map +0 -1
  229. package/dist/chunk-PLLJNHWU.js.map +0 -1
  230. package/dist/chunk-R4UOT76L.js.map +0 -1
  231. package/dist/chunk-SHS6EGWS.js +0 -226
  232. package/dist/chunk-SHS6EGWS.js.map +0 -1
  233. package/dist/chunk-TNROOKX3.js.map +0 -1
  234. package/dist/chunk-UFRMZ3M6.js.map +0 -1
  235. package/dist/chunk-VFALJSXB.js.map +0 -1
  236. package/dist/chunk-VPNFYQBL.js.map +0 -1
  237. package/dist/chunk-XD5LE64P.js +0 -311
  238. package/dist/chunk-XD5LE64P.js.map +0 -1
  239. package/dist/chunk-XV6NXXXP.js +0 -206
  240. package/dist/chunk-XV6NXXXP.js.map +0 -1
  241. package/dist/chunk-YWA63YN3.js.map +0 -1
  242. package/dist/chunk-Z3FL7LEK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/workflow/DashboardBuilder/DashboardBuilder.variants.ts","../src/components/workflow/DashboardBuilder/DashboardBuilder.tsx"],"names":[],"mappings":"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","file":"chunk-QIETN4UU.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DashboardBuilder container variants\n */\nexport const dashboardBuilderVariants = cva(\n \"relative flex h-full w-full overflow-hidden rounded-lg border bg-background transition-all duration-300\",\n {\n variants: {\n mode: {\n edit: \"\",\n preview: \"\",\n configure: \"\",\n },\n size: {\n default: \"\",\n compact: \"\",\n full: \"h-screen\",\n },\n },\n defaultVariants: {\n mode: \"edit\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Toolbar variants\n */\nexport const dashboardBuilderToolbarVariants = cva(\n \"flex h-14 shrink-0 items-center justify-between border-b bg-card px-4 transition-all duration-200\",\n {\n variants: {\n position: {\n top: \"\",\n bottom: \"border-b-0 border-t\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n\n/**\n * Canvas (main work area) variants\n */\nexport const dashboardBuilderCanvasVariants = cva(\n \"relative flex-1 overflow-auto bg-muted/30 p-4 transition-all duration-200\",\n {\n variants: {\n showGrid: {\n true: [\n \"bg-[linear-gradient(to_right,var(--border)_1px,transparent_1px),linear-gradient(to_bottom,var(--border)_1px,transparent_1px)]\",\n \"bg-[size:var(--grid-size)_var(--grid-size)]\",\n ],\n false: \"\",\n },\n state: {\n idle: \"\",\n dragging: \"cursor-grabbing\",\n resizing: \"cursor-nwse-resize\",\n configuring: \"\",\n saving: \"pointer-events-none opacity-75\",\n },\n },\n defaultVariants: {\n showGrid: true,\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget library sidebar variants\n */\nexport const dashboardBuilderWidgetLibraryVariants = cva(\n \"flex w-64 shrink-0 flex-col border-r bg-card transition-all duration-200\",\n {\n variants: {\n collapsed: {\n true: \"w-14\",\n false: \"w-64\",\n },\n position: {\n left: \"border-r\",\n right: \"border-l border-r-0\",\n },\n },\n defaultVariants: {\n collapsed: false,\n position: \"left\",\n },\n }\n)\n\n/**\n * Properties panel variants\n */\nexport const dashboardBuilderPropertiesPanelVariants = cva(\n \"flex w-72 shrink-0 flex-col border-l bg-card transition-all duration-200\",\n {\n variants: {\n open: {\n true: \"w-72\",\n false: \"w-0 overflow-hidden border-l-0\",\n },\n },\n defaultVariants: {\n open: false,\n },\n }\n)\n\n/**\n * Widget card in library variants\n */\nexport const dashboardBuilderWidgetCardVariants = cva(\n \"flex cursor-grab items-center gap-3 rounded-md border bg-background p-3 transition-all duration-200 hover:border-primary hover:shadow-sm active:cursor-grabbing\",\n {\n variants: {\n category: {\n default: \"\",\n charts: \"border-l-2 border-l-blue-500\",\n kpi: \"border-l-2 border-l-green-500\",\n tables: \"border-l-2 border-l-purple-500\",\n text: \"border-l-2 border-l-orange-500\",\n },\n dragging: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n category: \"default\",\n dragging: false,\n },\n }\n)\n\n/**\n * Widget on canvas variants\n */\nexport const dashboardBuilderWidgetVariants = cva(\n \"group relative rounded-md border-2 bg-card transition-all duration-200\",\n {\n variants: {\n state: {\n idle: \"border-transparent hover:border-muted-foreground/30\",\n selected: \"border-primary ring-2 ring-primary/20\",\n dragging: \"border-primary border-dashed opacity-75\",\n resizing: \"border-primary\",\n preview: \"border-border\",\n },\n },\n defaultVariants: {\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget resize handle variants\n */\nexport const dashboardBuilderResizeHandleVariants = cva(\n \"absolute opacity-0 transition-opacity group-hover:opacity-100\",\n {\n variants: {\n position: {\n se: \"bottom-0 right-0 cursor-se-resize\",\n sw: \"bottom-0 left-0 cursor-sw-resize\",\n ne: \"right-0 top-0 cursor-ne-resize\",\n nw: \"left-0 top-0 cursor-nw-resize\",\n e: \"right-0 top-1/2 -translate-y-1/2 cursor-e-resize\",\n w: \"left-0 top-1/2 -translate-y-1/2 cursor-w-resize\",\n n: \"left-1/2 top-0 -translate-x-1/2 cursor-n-resize\",\n s: \"bottom-0 left-1/2 -translate-x-1/2 cursor-s-resize\",\n },\n size: {\n sm: \"h-2 w-2\",\n default: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n position: \"se\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Drop zone indicator variants\n */\nexport const dashboardBuilderDropZoneVariants = cva(\n \"pointer-events-none absolute rounded-md border-2 transition-all duration-200\",\n {\n variants: {\n active: {\n true: \"border-primary bg-primary/10\",\n false: \"border-transparent\",\n },\n valid: {\n true: \"border-primary bg-primary/10\",\n false: \"border-destructive bg-destructive/10\",\n },\n },\n defaultVariants: {\n active: false,\n valid: true,\n },\n }\n)\n\n/**\n * Empty state variants for canvas\n */\nexport const dashboardBuilderEmptyStateVariants = cva(\n \"flex h-full flex-col items-center justify-center gap-4 text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"\",\n minimal: \"gap-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type DashboardBuilderVariantProps = VariantProps<\n typeof dashboardBuilderVariants\n>\nexport type DashboardBuilderToolbarVariantProps = VariantProps<\n typeof dashboardBuilderToolbarVariants\n>\nexport type DashboardBuilderCanvasVariantProps = VariantProps<\n typeof dashboardBuilderCanvasVariants\n>\nexport type DashboardBuilderWidgetLibraryVariantProps = VariantProps<\n typeof dashboardBuilderWidgetLibraryVariants\n>\nexport type DashboardBuilderPropertiesPanelVariantProps = VariantProps<\n typeof dashboardBuilderPropertiesPanelVariants\n>\nexport type DashboardBuilderWidgetCardVariantProps = VariantProps<\n typeof dashboardBuilderWidgetCardVariants\n>\nexport type DashboardBuilderWidgetVariantProps = VariantProps<\n typeof dashboardBuilderWidgetVariants\n>\nexport type DashboardBuilderResizeHandleVariantProps = VariantProps<\n typeof dashboardBuilderResizeHandleVariants\n>\nexport type DashboardBuilderDropZoneVariantProps = VariantProps<\n typeof dashboardBuilderDropZoneVariants\n>\nexport type DashboardBuilderEmptyStateVariantProps = VariantProps<\n typeof dashboardBuilderEmptyStateVariants\n>\n","import type {\n BuilderLayoutConfig,\n BuilderMode,\n BuilderPosition,\n BuilderState,\n BuilderWidget,\n BuilderWidgetDefinition,\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n} from \"./DashboardBuilder.types\"\nimport type { DragEvent, KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n BarChart2,\n ChevronLeft,\n ChevronRight,\n Eye,\n GripVertical,\n LayoutGrid,\n PieChart,\n Redo2,\n Save,\n Table,\n Trash2,\n Type,\n Undo2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { TextInput } from \"../../forms/TextInput\"\nimport { Button } from \"../../primitives/Button\"\nimport { Label } from \"../../primitives/Label\"\nimport {\n dashboardBuilderCanvasVariants,\n dashboardBuilderEmptyStateVariants,\n dashboardBuilderPropertiesPanelVariants,\n dashboardBuilderToolbarVariants,\n dashboardBuilderVariants,\n dashboardBuilderWidgetCardVariants,\n dashboardBuilderWidgetLibraryVariants,\n dashboardBuilderWidgetVariants,\n} from \"./DashboardBuilder.variants\"\n\n// ============================================\n// DEFAULT WIDGET DEFINITIONS\n// ============================================\n\n/**\n * Placeholder widget component for demo purposes\n */\nfunction PlaceholderWidget({ config, title }: { config: Record<string, unknown>; title: string }): ReactNode {\n const value = config[\"value\"]\n const getDisplayValue = (): string => {\n if (value === null || value === undefined) return \"\"\n if (typeof value === \"object\") return JSON.stringify(value)\n return String(value as boolean | number | string)\n }\n return (\n <div className=\"flex h-full flex-col items-center justify-center p-4\">\n <span className=\"text-sm font-medium\">{title}</span>\n {value !== undefined && value !== null && (\n <span className=\"text-2xl font-bold text-primary\">\n {getDisplayValue()}\n </span>\n )}\n </div>\n )\n}\n\n/**\n * Default widgets available in the library\n */\nconst defaultWidgets: BuilderWidgetDefinition[] = [\n {\n type: \"kpi\",\n name: \"KPI Card\",\n description: \"Display a key performance indicator\",\n icon: <LayoutGrid className=\"h-4 w-4\" />,\n category: \"kpi\",\n defaultSize: { w: 3, h: 2 },\n minSize: { w: 2, h: 1 },\n maxSize: { w: 6, h: 4 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"KPI\" },\n { name: \"value\", type: \"text\", label: \"Value\", defaultValue: \"0\" },\n { name: \"unit\", type: \"text\", label: \"Unit\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-line\",\n name: \"Line Chart\",\n description: \"Display data as a line chart\",\n icon: <BarChart2 className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n {\n name: \"showLegend\",\n type: \"boolean\",\n label: \"Show Legend\",\n defaultValue: true,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-pie\",\n name: \"Pie Chart\",\n description: \"Display data as a pie chart\",\n icon: <PieChart className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 4, h: 4 },\n minSize: { w: 3, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"table\",\n name: \"Data Table\",\n description: \"Display data in a table format\",\n icon: <Table className=\"h-4 w-4\" />,\n category: \"tables\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Table\" },\n {\n name: \"pageSize\",\n type: \"number\",\n label: \"Page Size\",\n defaultValue: 10,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"text\",\n name: \"Text Block\",\n description: \"Display formatted text content\",\n icon: <Type className=\"h-4 w-4\" />,\n category: \"text\",\n defaultSize: { w: 4, h: 2 },\n minSize: { w: 2, h: 1 },\n configSchema: {\n fields: [\n { name: \"content\", type: \"text\", label: \"Content\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n]\n\n// ============================================\n// SUB-COMPONENTS\n// ============================================\n\n/**\n * Toolbar component with save, undo, redo, and preview actions\n */\nfunction DashboardBuilderToolbar({\n canRedo,\n canUndo,\n onRedo,\n onSave,\n onTogglePreview,\n onUndo,\n showPreview,\n showUndo,\n}: DashboardBuilderToolbarProps): ReactNode {\n return (\n <div\n className={dashboardBuilderToolbarVariants()}\n data-slot=\"dashboard-builder-toolbar\"\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">Dashboard Builder</span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showUndo && (\n <>\n <Button\n aria-label=\"Undo\"\n disabled={!canUndo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onUndo}\n >\n <Undo2 className=\"h-4 w-4\" />\n </Button>\n <Button\n aria-label=\"Redo\"\n disabled={!canRedo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onRedo}\n >\n <Redo2 className=\"h-4 w-4\" />\n </Button>\n <div className=\"mx-2 h-6 w-px bg-border\" />\n </>\n )}\n\n {showPreview && (\n <Button\n aria-label=\"Preview dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onTogglePreview}\n >\n <Eye className=\"mr-2 h-4 w-4\" />\n Preview\n </Button>\n )}\n\n <Button size=\"sm\" onClick={onSave}>\n <Save className=\"mr-2 h-4 w-4\" />\n Save\n </Button>\n </div>\n </div>\n )\n}\n\n/**\n * Widget library sidebar showing available widgets\n */\nfunction DashboardBuilderWidgetLibrary({\n widgets,\n}: DashboardBuilderWidgetLibraryProps): ReactNode {\n const [collapsed, setCollapsed] = useState(false)\n\n // Group widgets by category\n const groupedWidgets = useMemo(() => {\n return widgets.reduce<Record<string, BuilderWidgetDefinition[]>>((acc, widget) => {\n const category = widget.category || \"default\"\n acc[category] ??= []\n acc[category].push(widget)\n return acc\n }, {})\n }, [widgets])\n\n const handleDragStart = (e: DragEvent<HTMLDivElement>, widget: BuilderWidgetDefinition): void => {\n e.dataTransfer.setData(\"widget-type\", widget.type)\n e.dataTransfer.effectAllowed = \"copy\"\n }\n\n return (\n <div\n className={dashboardBuilderWidgetLibraryVariants({ collapsed })}\n data-slot=\"dashboard-builder-widget-library\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n {!collapsed && (\n <span className=\"text-sm font-medium\">Widgets</span>\n )}\n <Button\n aria-label={collapsed ? \"Expand widget library\" : \"Collapse widget library\"}\n className=\"ml-auto\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => { setCollapsed(!collapsed); }}\n >\n {collapsed ? (\n <ChevronRight className=\"h-4 w-4\" />\n ) : (\n <ChevronLeft className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n\n {!collapsed && (\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n {Object.entries(groupedWidgets).map(([category, categoryWidgets]) => (\n <div key={category}>\n <span className=\"mb-2 block text-xs font-medium uppercase text-muted-foreground\">\n {category}\n </span>\n <div className=\"space-y-2\">\n {categoryWidgets.map((widget) => (\n <div\n key={widget.type}\n draggable\n className={dashboardBuilderWidgetCardVariants({\n category: category as \"charts\" | \"default\" | \"kpi\" | \"tables\" | \"text\",\n })}\n aria-label={`Drag ${widget.name} widget`}\n role=\"button\"\n tabIndex={0}\n title={widget.description}\n onDragStart={(e: DragEvent<HTMLDivElement>) => { handleDragStart(e, widget); }}\n >\n <span className=\"text-muted-foreground\">{widget.icon}</span>\n <span className=\"text-sm\">{widget.name}</span>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Canvas component - main work area for widgets\n */\nfunction DashboardBuilderCanvas({\n children,\n columns,\n onWidgetDrop,\n rowHeight,\n showGrid,\n widgets,\n}: DashboardBuilderCanvasProps & {\n children?: ReactNode\n onWidgetClick?: (id: string) => void\n onWidgetRemove?: (id: string) => void\n selectedWidgetId?: null | string\n widgetDefinitions: BuilderWidgetDefinition[]\n}): ReactNode {\n const canvasRef = useRef<HTMLDivElement>(null)\n const [isDragOver, setIsDragOver] = useState(false)\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n e.dataTransfer.dropEffect = \"copy\"\n setIsDragOver(true)\n }\n\n const handleDragLeave = (): void => {\n setIsDragOver(false)\n }\n\n const handleDrop = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n setIsDragOver(false)\n\n const widgetType = e.dataTransfer.getData(\"widget-type\")\n if (!widgetType || !canvasRef.current) return\n\n const rect = canvasRef.current.getBoundingClientRect()\n const gridWidth = rect.width / columns\n const x = Math.floor((e.clientX - rect.left) / gridWidth)\n const y = Math.floor((e.clientY - rect.top) / rowHeight)\n\n onWidgetDrop?.(widgetType, { x, y })\n }\n\n const gridSizeStyle = {\n \"--grid-size\": `${String(100 / columns)}%`,\n } as React.CSSProperties\n\n return (\n <div\n ref={canvasRef}\n className={cn(\n dashboardBuilderCanvasVariants({ showGrid }),\n isDragOver && \"ring-2 ring-primary ring-offset-2\"\n )}\n aria-describedby=\"canvas-instructions\"\n aria-label=\"Dashboard canvas\"\n data-slot=\"dashboard-builder-canvas\"\n role=\"region\"\n style={gridSizeStyle}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <span className=\"sr-only\" id=\"canvas-instructions\">\n Drag widgets from the library to add them. Use arrow keys to move selected widgets.\n Press Delete to remove selected widget.\n </span>\n\n {widgets.length === 0 ? (\n <div className={dashboardBuilderEmptyStateVariants()}>\n <LayoutGrid className=\"h-12 w-12 opacity-50\" />\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">No widgets yet</p>\n <p className=\"text-xs text-muted-foreground\">\n Drag widgets from the library to get started\n </p>\n </div>\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${String(columns)}, 1fr)`,\n gap: \"var(--spacing-4)\",\n minHeight: \"100%\",\n }}\n className=\"relative\"\n >\n {children}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Properties panel for configuring selected widget\n */\nfunction DashboardBuilderPropertiesPanel({\n onClose,\n onConfigChange,\n widget,\n widgetDefinition,\n}: DashboardBuilderPropertiesPanelProps): ReactNode {\n const panelId = useId()\n\n if (!widget || !widgetDefinition) {\n return (\n <div\n className={dashboardBuilderPropertiesPanelVariants({ open: false })}\n data-slot=\"dashboard-builder-properties-panel\"\n />\n )\n }\n\n const handleFieldChange = (fieldName: string, value: unknown): void => {\n const newConfig = { ...widget.config, [fieldName]: value }\n onConfigChange?.(newConfig)\n }\n\n return (\n <div\n aria-labelledby={`${panelId}-title`}\n className={dashboardBuilderPropertiesPanelVariants({ open: true })}\n data-slot=\"dashboard-builder-properties-panel\"\n role=\"region\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n <span className=\"text-sm font-medium\" id={`${panelId}-title`}>\n Properties\n </span>\n <Button\n aria-label=\"Close properties panel\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={onClose}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n <div>\n <span className=\"text-xs font-medium uppercase text-muted-foreground\">\n Widget: {widgetDefinition.name}\n </span>\n </div>\n\n <div className=\"h-px w-full bg-border\" />\n\n <div className=\"space-y-4\">\n {widgetDefinition.configSchema.fields.map((field) => (\n <div key={field.name} className=\"space-y-2\">\n <Label htmlFor={`${panelId}-${field.name}`}>{field.label}</Label>\n {field.type === \"text\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? \"\"\n if (typeof val === \"object\") return JSON.stringify(val)\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.value); }}\n />\n )}\n {field.type === \"number\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? 0\n if (typeof val === \"object\") return \"0\"\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n type=\"number\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, Number(e.target.value)); }}\n />\n )}\n {field.type === \"boolean\" && (\n <input\n checked={Boolean(widget.config[field.name] ?? field.defaultValue)}\n className=\"h-4 w-4\"\n id={`${panelId}-${field.name}`}\n type=\"checkbox\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.checked); }}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * Individual widget component on the canvas\n */\nfunction DashboardBuilderWidgetComponent({\n isDragging,\n isSelected,\n onClick,\n onRemove,\n widget,\n widgetDefinition,\n}: DashboardBuilderWidgetComponentProps): ReactNode {\n const WidgetComponent = widgetDefinition?.component\n\n const state = isSelected ? \"selected\" : isDragging ? \"dragging\" : \"idle\"\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>): void => {\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n e.preventDefault()\n onRemove?.()\n }\n }\n\n return (\n <div\n style={{\n gridColumn: `span ${String(widget.w)}`,\n gridRow: `span ${String(widget.h)}`,\n minHeight: `${String(widget.h * 100)}px`,\n }}\n aria-label={`Widget: ${widget.title}`}\n aria-selected={isSelected}\n className={dashboardBuilderWidgetVariants({ state })}\n data-slot=\"dashboard-builder-widget\"\n data-widget-id={widget.id}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n >\n {/* Widget header */}\n <div className=\"flex items-center justify-between border-b bg-muted/50 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <GripVertical className=\"h-4 w-4 cursor-grab text-muted-foreground\" />\n <span className=\"text-xs font-medium\">{widget.title}</span>\n </div>\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"opacity-0 group-hover:opacity-100\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove?.()\n }}\n >\n <Trash2 className=\"h-3 w-3\" />\n </Button>\n </div>\n\n {/* Widget content */}\n <div className=\"flex-1 overflow-hidden p-2\">\n {WidgetComponent ? (\n <WidgetComponent\n config={widget.config}\n height={widget.h}\n id={widget.id}\n title={widget.title}\n width={widget.w}\n />\n ) : (\n <div className=\"flex h-full items-center justify-center text-muted-foreground\">\n <span className=\"text-xs\">Unknown widget type</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN COMPONENT\n// ============================================\n\n/**\n * DashboardBuilder - Visual dashboard construction interface.\n *\n * Allows users to create, edit and customize dashboards through a drag-and-drop\n * interface with a widget library and properties panel.\n *\n * @example\n * ```tsx\n * <DashboardBuilder\n * onSave={({ widgets, layout }) => console.log('Saved:', widgets, layout)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * const initialWidgets = [\n * { id: '1', type: 'kpi', title: 'Sales', x: 0, y: 0, w: 3, h: 2, config: { value: '150k' } }\n * ];\n *\n * <DashboardBuilder\n * initialWidgets={initialWidgets}\n * columns={12}\n * rowHeight={100}\n * />\n * ```\n */\nfunction DashboardBuilder({\n \"aria-label\": ariaLabel = \"Dashboard builder\",\n allowOverlap = false,\n autoSaveInterval = 30000,\n availableWidgets = defaultWidgets,\n className,\n columns = 12,\n enableAutoSave = false,\n initialLayout,\n initialWidgets = [],\n mode,\n onLayoutChange,\n onPreview,\n onRedo,\n onSave,\n onUndo,\n onWidgetAdd,\n onWidgetRemove,\n onWidgetUpdate,\n rowHeight = 100,\n showGrid = true,\n showPreview = true,\n showUndo = true,\n size,\n snapToGrid = true,\n ...props\n}: DashboardBuilderProps): ReactNode {\n const builderId = useId()\n\n // State\n const [widgets, setWidgets] = useState<BuilderWidget[]>(initialWidgets)\n const [selectedWidgetId, setSelectedWidgetId] = useState<null | string>(null)\n const [_builderMode, setBuilderMode] = useState<BuilderMode>(\"edit\")\n const [_builderState, setBuilderState] = useState<BuilderState>(\"idle\")\n const [history, setHistory] = useState<BuilderWidget[][]>([initialWidgets])\n const [historyIndex, setHistoryIndex] = useState(0)\n\n // Suppress unused variable warnings for future implementation\n void snapToGrid\n void allowOverlap\n void enableAutoSave\n void autoSaveInterval\n void initialLayout\n\n // Computed\n const selectedWidget = useMemo(\n () => widgets.find((w) => w.id === selectedWidgetId) ?? null,\n [widgets, selectedWidgetId]\n )\n const selectedWidgetDefinition = useMemo(\n () =>\n selectedWidget\n ? availableWidgets.find((w) => w.type === selectedWidget.type)\n : undefined,\n [selectedWidget, availableWidgets]\n )\n\n const canUndo = historyIndex > 0\n const canRedo = historyIndex < history.length - 1\n\n // Helpers\n const updateHistory = useCallback((newWidgets: BuilderWidget[]) => {\n setHistory((prev) => {\n const newHistory = prev.slice(0, historyIndex + 1)\n newHistory.push(newWidgets)\n return newHistory\n })\n setHistoryIndex((prev) => prev + 1)\n }, [historyIndex])\n\n const generateId = (): string => `widget-${String(Date.now())}-${Math.random().toString(36).slice(2, 9)}`\n\n const getLayoutConfig = useCallback((): BuilderLayoutConfig => {\n return {\n columns,\n rowHeight,\n widgets: widgets.map((w) => ({\n i: w.id,\n x: w.x,\n y: w.y,\n w: w.w,\n h: w.h,\n })),\n }\n }, [columns, rowHeight, widgets])\n\n // Event handlers\n const handleWidgetDrop = useCallback(\n (widgetType: string, position: BuilderPosition) => {\n const definition = availableWidgets.find((w) => w.type === widgetType)\n if (!definition) return\n\n const newWidget: BuilderWidget = {\n id: generateId(),\n type: widgetType,\n title: definition.name,\n x: position.x,\n y: position.y,\n w: definition.defaultSize.w,\n h: definition.defaultSize.h,\n config: definition.configSchema.fields.reduce<Record<string, unknown>>(\n (acc, field) => {\n acc[field.name] = field.defaultValue\n return acc\n },\n {}\n ),\n }\n\n const newWidgets = [...widgets, newWidget]\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n setSelectedWidgetId(newWidget.id)\n\n onWidgetAdd?.({ widget: newWidget, position })\n onLayoutChange?.(getLayoutConfig())\n },\n [availableWidgets, widgets, updateHistory, onWidgetAdd, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n const newWidgets = widgets.filter((w) => w.id !== widgetId)\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n if (selectedWidgetId === widgetId) {\n setSelectedWidgetId(null)\n }\n\n onWidgetRemove?.({ widgetId })\n onLayoutChange?.(getLayoutConfig())\n },\n [widgets, selectedWidgetId, updateHistory, onWidgetRemove, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetSelect = useCallback((widgetId: string) => {\n setSelectedWidgetId(widgetId)\n setBuilderState(\"configuring\")\n }, [])\n\n const handleConfigChange = useCallback(\n (newConfig: Record<string, unknown>) => {\n if (!selectedWidgetId) return\n\n const newWidgets = widgets.map((w) =>\n w.id === selectedWidgetId ? { ...w, config: newConfig } : w\n )\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n onWidgetUpdate?.({ widgetId: selectedWidgetId, config: newConfig })\n },\n [selectedWidgetId, widgets, updateHistory, onWidgetUpdate]\n )\n\n const handleSave = useCallback(() => {\n setBuilderState(\"saving\")\n onSave?.({ widgets, layout: getLayoutConfig() })\n setBuilderState(\"idle\")\n }, [widgets, getLayoutConfig, onSave])\n\n const handleUndo = useCallback(() => {\n if (!canUndo) return\n const newIndex = historyIndex - 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onUndo?.()\n }, [canUndo, historyIndex, history, onUndo])\n\n const handleRedo = useCallback(() => {\n if (!canRedo) return\n const newIndex = historyIndex + 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onRedo?.()\n }, [canRedo, historyIndex, history, onRedo])\n\n const handlePreview = useCallback(() => {\n setBuilderMode(\"preview\")\n onPreview?.()\n }, [onPreview])\n\n const handleCloseProperties = useCallback(() => {\n setSelectedWidgetId(null)\n setBuilderState(\"idle\")\n }, [])\n\n // Keyboard shortcuts\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n // Ctrl/Cmd + S: Save\n if ((e.ctrlKey || e.metaKey) && e.key === \"s\") {\n e.preventDefault()\n handleSave()\n }\n // Ctrl/Cmd + Z: Undo\n if ((e.ctrlKey || e.metaKey) && e.key === \"z\" && !e.shiftKey) {\n e.preventDefault()\n handleUndo()\n }\n // Ctrl/Cmd + Shift + Z or Ctrl/Cmd + Y: Redo\n if ((e.ctrlKey || e.metaKey) && (e.key === \"y\" || (e.key === \"z\" && e.shiftKey))) {\n e.preventDefault()\n handleRedo()\n }\n // Delete: Remove selected widget\n if ((e.key === \"Delete\" || e.key === \"Backspace\") && selectedWidgetId) {\n e.preventDefault()\n handleWidgetRemove(selectedWidgetId)\n }\n },\n [handleSave, handleUndo, handleRedo, selectedWidgetId, handleWidgetRemove]\n )\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardBuilderVariants({ mode, size }), className)}\n data-slot=\"dashboard-builder\"\n id={builderId}\n role=\"application\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Toolbar */}\n <div className=\"flex flex-col\">\n <DashboardBuilderToolbar\n canRedo={canRedo}\n canUndo={canUndo}\n showPreview={showPreview}\n showUndo={showUndo}\n onRedo={handleRedo}\n onSave={handleSave}\n onTogglePreview={handlePreview}\n onUndo={handleUndo}\n />\n\n {/* Main content area */}\n <div className=\"flex flex-1 overflow-hidden\">\n {/* Widget Library */}\n <DashboardBuilderWidgetLibrary widgets={availableWidgets} />\n\n {/* Canvas */}\n <div className=\"flex flex-1 flex-col\">\n <DashboardBuilderCanvas\n columns={columns}\n rowHeight={rowHeight}\n selectedWidgetId={selectedWidgetId}\n showGrid={showGrid}\n widgetDefinitions={availableWidgets}\n widgets={widgets}\n onWidgetClick={handleWidgetSelect}\n onWidgetDrop={handleWidgetDrop}\n onWidgetRemove={handleWidgetRemove}\n >\n {widgets.map((widget) => {\n const definition = availableWidgets.find(\n (w) => w.type === widget.type\n )\n return (\n <DashboardBuilderWidgetComponent\n key={widget.id}\n isSelected={widget.id === selectedWidgetId}\n widget={widget}\n widgetDefinition={definition}\n onClick={() => { handleWidgetSelect(widget.id); }}\n onRemove={() => { handleWidgetRemove(widget.id); }}\n />\n )\n })}\n </DashboardBuilderCanvas>\n </div>\n\n {/* Properties Panel */}\n <DashboardBuilderPropertiesPanel\n widget={selectedWidget}\n widgetDefinition={selectedWidgetDefinition}\n onClose={handleCloseProperties}\n onConfigChange={handleConfigChange}\n />\n </div>\n </div>\n </div>\n )\n}\n\nDashboardBuilder.displayName = \"DashboardBuilder\"\n\n// ============================================\n// EXPORTS\n// ============================================\n\nexport {\n DashboardBuilder,\n DashboardBuilderCanvas,\n DashboardBuilderPropertiesPanel,\n DashboardBuilderToolbar,\n DashboardBuilderWidgetComponent,\n DashboardBuilderWidgetLibrary,\n defaultWidgets,\n}\nexport type {\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/workflow/DashboardBuilder/DashboardBuilder.variants.ts","../src/components/workflow/DashboardBuilder/DashboardBuilder.tsx"],"names":[],"mappings":"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","file":"chunk-55RLLBXW.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DashboardBuilder container variants\n */\nexport const dashboardBuilderVariants = cva(\n \"relative flex h-full w-full overflow-hidden rounded-lg border bg-background transition-all duration-300\",\n {\n variants: {\n mode: {\n edit: \"\",\n preview: \"\",\n configure: \"\",\n },\n size: {\n default: \"\",\n compact: \"\",\n full: \"h-screen\",\n },\n },\n defaultVariants: {\n mode: \"edit\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Toolbar variants\n */\nexport const dashboardBuilderToolbarVariants = cva(\n \"flex h-14 shrink-0 items-center justify-between border-b bg-card px-4 transition-all duration-200\",\n {\n variants: {\n position: {\n top: \"\",\n bottom: \"border-b-0 border-t\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n\n/**\n * Canvas (main work area) variants\n */\nexport const dashboardBuilderCanvasVariants = cva(\n \"relative flex-1 overflow-auto bg-muted/30 p-4 transition-all duration-200\",\n {\n variants: {\n showGrid: {\n true: [\n \"bg-[linear-gradient(to_right,var(--border)_1px,transparent_1px),linear-gradient(to_bottom,var(--border)_1px,transparent_1px)]\",\n \"bg-[size:var(--grid-size)_var(--grid-size)]\",\n ],\n false: \"\",\n },\n state: {\n idle: \"\",\n dragging: \"cursor-grabbing\",\n resizing: \"cursor-nwse-resize\",\n configuring: \"\",\n saving: \"pointer-events-none opacity-75\",\n },\n },\n defaultVariants: {\n showGrid: true,\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget library sidebar variants\n */\nexport const dashboardBuilderWidgetLibraryVariants = cva(\n \"flex w-64 shrink-0 flex-col border-r bg-card transition-all duration-200\",\n {\n variants: {\n collapsed: {\n true: \"w-14\",\n false: \"w-64\",\n },\n position: {\n left: \"border-r\",\n right: \"border-l border-r-0\",\n },\n },\n defaultVariants: {\n collapsed: false,\n position: \"left\",\n },\n }\n)\n\n/**\n * Properties panel variants\n */\nexport const dashboardBuilderPropertiesPanelVariants = cva(\n \"flex w-72 shrink-0 flex-col border-l bg-card transition-all duration-200\",\n {\n variants: {\n open: {\n true: \"w-72\",\n false: \"w-0 overflow-hidden border-l-0\",\n },\n },\n defaultVariants: {\n open: false,\n },\n }\n)\n\n/**\n * Widget card in library variants\n */\nexport const dashboardBuilderWidgetCardVariants = cva(\n \"flex cursor-grab items-center gap-3 rounded-md border bg-background p-3 transition-all duration-200 hover:border-primary hover:shadow-sm active:cursor-grabbing\",\n {\n variants: {\n category: {\n default: \"\",\n charts: \"border-l-2 border-l-blue-500\",\n kpi: \"border-l-2 border-l-green-500\",\n tables: \"border-l-2 border-l-purple-500\",\n text: \"border-l-2 border-l-orange-500\",\n },\n dragging: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n category: \"default\",\n dragging: false,\n },\n }\n)\n\n/**\n * Widget on canvas variants\n */\nexport const dashboardBuilderWidgetVariants = cva(\n \"group relative rounded-md border-2 bg-card transition-all duration-200\",\n {\n variants: {\n state: {\n idle: \"border-transparent hover:border-muted-foreground/30\",\n selected: \"border-primary ring-2 ring-primary/20\",\n dragging: \"border-primary border-dashed opacity-75\",\n resizing: \"border-primary\",\n preview: \"border-border\",\n },\n },\n defaultVariants: {\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget resize handle variants\n */\nexport const dashboardBuilderResizeHandleVariants = cva(\n \"absolute opacity-0 transition-opacity group-hover:opacity-100\",\n {\n variants: {\n position: {\n se: \"bottom-0 right-0 cursor-se-resize\",\n sw: \"bottom-0 left-0 cursor-sw-resize\",\n ne: \"right-0 top-0 cursor-ne-resize\",\n nw: \"left-0 top-0 cursor-nw-resize\",\n e: \"right-0 top-1/2 -translate-y-1/2 cursor-e-resize\",\n w: \"left-0 top-1/2 -translate-y-1/2 cursor-w-resize\",\n n: \"left-1/2 top-0 -translate-x-1/2 cursor-n-resize\",\n s: \"bottom-0 left-1/2 -translate-x-1/2 cursor-s-resize\",\n },\n size: {\n sm: \"h-2 w-2\",\n default: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n position: \"se\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Drop zone indicator variants\n */\nexport const dashboardBuilderDropZoneVariants = cva(\n \"pointer-events-none absolute rounded-md border-2 transition-all duration-200\",\n {\n variants: {\n active: {\n true: \"border-primary bg-primary/10\",\n false: \"border-transparent\",\n },\n valid: {\n true: \"border-primary bg-primary/10\",\n false: \"border-destructive bg-destructive/10\",\n },\n },\n defaultVariants: {\n active: false,\n valid: true,\n },\n }\n)\n\n/**\n * Empty state variants for canvas\n */\nexport const dashboardBuilderEmptyStateVariants = cva(\n \"flex h-full flex-col items-center justify-center gap-4 text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"\",\n minimal: \"gap-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type DashboardBuilderVariantProps = VariantProps<\n typeof dashboardBuilderVariants\n>\nexport type DashboardBuilderToolbarVariantProps = VariantProps<\n typeof dashboardBuilderToolbarVariants\n>\nexport type DashboardBuilderCanvasVariantProps = VariantProps<\n typeof dashboardBuilderCanvasVariants\n>\nexport type DashboardBuilderWidgetLibraryVariantProps = VariantProps<\n typeof dashboardBuilderWidgetLibraryVariants\n>\nexport type DashboardBuilderPropertiesPanelVariantProps = VariantProps<\n typeof dashboardBuilderPropertiesPanelVariants\n>\nexport type DashboardBuilderWidgetCardVariantProps = VariantProps<\n typeof dashboardBuilderWidgetCardVariants\n>\nexport type DashboardBuilderWidgetVariantProps = VariantProps<\n typeof dashboardBuilderWidgetVariants\n>\nexport type DashboardBuilderResizeHandleVariantProps = VariantProps<\n typeof dashboardBuilderResizeHandleVariants\n>\nexport type DashboardBuilderDropZoneVariantProps = VariantProps<\n typeof dashboardBuilderDropZoneVariants\n>\nexport type DashboardBuilderEmptyStateVariantProps = VariantProps<\n typeof dashboardBuilderEmptyStateVariants\n>\n","import type {\n BuilderLayoutConfig,\n BuilderMode,\n BuilderPosition,\n BuilderState,\n BuilderWidget,\n BuilderWidgetDefinition,\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n} from \"./DashboardBuilder.types\"\nimport type { DragEvent, KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n BarChart2,\n ChevronLeft,\n ChevronRight,\n Eye,\n GripVertical,\n LayoutGrid,\n PieChart,\n Redo2,\n Save,\n Table,\n Trash2,\n Type,\n Undo2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { TextInput } from \"../../forms/TextInput\"\nimport { Button } from \"../../primitives/Button\"\nimport { Label } from \"../../primitives/Label\"\nimport {\n dashboardBuilderCanvasVariants,\n dashboardBuilderEmptyStateVariants,\n dashboardBuilderPropertiesPanelVariants,\n dashboardBuilderToolbarVariants,\n dashboardBuilderVariants,\n dashboardBuilderWidgetCardVariants,\n dashboardBuilderWidgetLibraryVariants,\n dashboardBuilderWidgetVariants,\n} from \"./DashboardBuilder.variants\"\n\n// ============================================\n// DEFAULT WIDGET DEFINITIONS\n// ============================================\n\n/**\n * Placeholder widget component for demo purposes\n */\nfunction PlaceholderWidget({ config, title }: { config: Record<string, unknown>; title: string }): ReactNode {\n const value = config[\"value\"]\n const getDisplayValue = (): string => {\n if (value === null || value === undefined) return \"\"\n if (typeof value === \"object\") return JSON.stringify(value)\n return String(value as boolean | number | string)\n }\n return (\n <div className=\"flex h-full flex-col items-center justify-center p-4\">\n <span className=\"text-sm font-medium\">{title}</span>\n {value !== undefined && value !== null && (\n <span className=\"text-2xl font-bold text-primary\">\n {getDisplayValue()}\n </span>\n )}\n </div>\n )\n}\n\n/**\n * Default widgets available in the library\n */\nconst defaultWidgets: BuilderWidgetDefinition[] = [\n {\n type: \"kpi\",\n name: \"KPI Card\",\n description: \"Display a key performance indicator\",\n icon: <LayoutGrid className=\"h-4 w-4\" />,\n category: \"kpi\",\n defaultSize: { w: 3, h: 2 },\n minSize: { w: 2, h: 1 },\n maxSize: { w: 6, h: 4 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"KPI\" },\n { name: \"value\", type: \"text\", label: \"Value\", defaultValue: \"0\" },\n { name: \"unit\", type: \"text\", label: \"Unit\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-line\",\n name: \"Line Chart\",\n description: \"Display data as a line chart\",\n icon: <BarChart2 className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n {\n name: \"showLegend\",\n type: \"boolean\",\n label: \"Show Legend\",\n defaultValue: true,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-pie\",\n name: \"Pie Chart\",\n description: \"Display data as a pie chart\",\n icon: <PieChart className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 4, h: 4 },\n minSize: { w: 3, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"table\",\n name: \"Data Table\",\n description: \"Display data in a table format\",\n icon: <Table className=\"h-4 w-4\" />,\n category: \"tables\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Table\" },\n {\n name: \"pageSize\",\n type: \"number\",\n label: \"Page Size\",\n defaultValue: 10,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"text\",\n name: \"Text Block\",\n description: \"Display formatted text content\",\n icon: <Type className=\"h-4 w-4\" />,\n category: \"text\",\n defaultSize: { w: 4, h: 2 },\n minSize: { w: 2, h: 1 },\n configSchema: {\n fields: [\n { name: \"content\", type: \"text\", label: \"Content\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n]\n\n// ============================================\n// SUB-COMPONENTS\n// ============================================\n\n/**\n * Toolbar component with save, undo, redo, and preview actions\n */\nfunction DashboardBuilderToolbar({\n canRedo,\n canUndo,\n onRedo,\n onSave,\n onTogglePreview,\n onUndo,\n showPreview,\n showUndo,\n}: DashboardBuilderToolbarProps): ReactNode {\n return (\n <div\n className={dashboardBuilderToolbarVariants()}\n data-slot=\"dashboard-builder-toolbar\"\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">Dashboard Builder</span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showUndo && (\n <>\n <Button\n aria-label=\"Undo\"\n disabled={!canUndo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onUndo}\n >\n <Undo2 className=\"h-4 w-4\" />\n </Button>\n <Button\n aria-label=\"Redo\"\n disabled={!canRedo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onRedo}\n >\n <Redo2 className=\"h-4 w-4\" />\n </Button>\n <div className=\"mx-2 h-6 w-px bg-border\" />\n </>\n )}\n\n {showPreview && (\n <Button\n aria-label=\"Preview dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onTogglePreview}\n >\n <Eye className=\"mr-2 h-4 w-4\" />\n Preview\n </Button>\n )}\n\n <Button size=\"sm\" onClick={onSave}>\n <Save className=\"mr-2 h-4 w-4\" />\n Save\n </Button>\n </div>\n </div>\n )\n}\n\n/**\n * Widget library sidebar showing available widgets\n */\nfunction DashboardBuilderWidgetLibrary({\n widgets,\n}: DashboardBuilderWidgetLibraryProps): ReactNode {\n const [collapsed, setCollapsed] = useState(false)\n\n // Group widgets by category\n const groupedWidgets = useMemo(() => {\n return widgets.reduce<Record<string, BuilderWidgetDefinition[]>>((acc, widget) => {\n const category = widget.category || \"default\"\n acc[category] ??= []\n acc[category].push(widget)\n return acc\n }, {})\n }, [widgets])\n\n const handleDragStart = (e: DragEvent<HTMLDivElement>, widget: BuilderWidgetDefinition): void => {\n e.dataTransfer.setData(\"widget-type\", widget.type)\n e.dataTransfer.effectAllowed = \"copy\"\n }\n\n return (\n <div\n className={dashboardBuilderWidgetLibraryVariants({ collapsed })}\n data-slot=\"dashboard-builder-widget-library\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n {!collapsed && (\n <span className=\"text-sm font-medium\">Widgets</span>\n )}\n <Button\n aria-label={collapsed ? \"Expand widget library\" : \"Collapse widget library\"}\n className=\"ml-auto\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => { setCollapsed(!collapsed); }}\n >\n {collapsed ? (\n <ChevronRight className=\"h-4 w-4\" />\n ) : (\n <ChevronLeft className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n\n {!collapsed && (\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n {Object.entries(groupedWidgets).map(([category, categoryWidgets]) => (\n <div key={category}>\n <span className=\"mb-2 block text-xs font-medium uppercase text-muted-foreground\">\n {category}\n </span>\n <div className=\"space-y-2\">\n {categoryWidgets.map((widget) => (\n <div\n key={widget.type}\n draggable\n className={dashboardBuilderWidgetCardVariants({\n category: category as \"charts\" | \"default\" | \"kpi\" | \"tables\" | \"text\",\n })}\n aria-label={`Drag ${widget.name} widget`}\n role=\"button\"\n tabIndex={0}\n title={widget.description}\n onDragStart={(e: DragEvent<HTMLDivElement>) => { handleDragStart(e, widget); }}\n >\n <span className=\"text-muted-foreground\">{widget.icon}</span>\n <span className=\"text-sm\">{widget.name}</span>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Canvas component - main work area for widgets\n */\nfunction DashboardBuilderCanvas({\n children,\n columns,\n onWidgetDrop,\n rowHeight,\n showGrid,\n widgets,\n}: DashboardBuilderCanvasProps & {\n children?: ReactNode\n onWidgetClick?: (id: string) => void\n onWidgetRemove?: (id: string) => void\n selectedWidgetId?: null | string\n widgetDefinitions: BuilderWidgetDefinition[]\n}): ReactNode {\n const canvasRef = useRef<HTMLDivElement>(null)\n const [isDragOver, setIsDragOver] = useState(false)\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n e.dataTransfer.dropEffect = \"copy\"\n setIsDragOver(true)\n }\n\n const handleDragLeave = (): void => {\n setIsDragOver(false)\n }\n\n const handleDrop = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n setIsDragOver(false)\n\n const widgetType = e.dataTransfer.getData(\"widget-type\")\n if (!widgetType || !canvasRef.current) return\n\n const rect = canvasRef.current.getBoundingClientRect()\n const gridWidth = rect.width / columns\n const x = Math.floor((e.clientX - rect.left) / gridWidth)\n const y = Math.floor((e.clientY - rect.top) / rowHeight)\n\n onWidgetDrop?.(widgetType, { x, y })\n }\n\n const gridSizeStyle = {\n \"--grid-size\": `${String(100 / columns)}%`,\n } as React.CSSProperties\n\n return (\n <div\n ref={canvasRef}\n className={cn(\n dashboardBuilderCanvasVariants({ showGrid }),\n isDragOver && \"ring-2 ring-primary ring-offset-2\"\n )}\n aria-describedby=\"canvas-instructions\"\n aria-label=\"Dashboard canvas\"\n data-slot=\"dashboard-builder-canvas\"\n role=\"region\"\n style={gridSizeStyle}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <span className=\"sr-only\" id=\"canvas-instructions\">\n Drag widgets from the library to add them. Use arrow keys to move selected widgets.\n Press Delete to remove selected widget.\n </span>\n\n {widgets.length === 0 ? (\n <div className={dashboardBuilderEmptyStateVariants()}>\n <LayoutGrid className=\"h-12 w-12 opacity-50\" />\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">No widgets yet</p>\n <p className=\"text-xs text-muted-foreground\">\n Drag widgets from the library to get started\n </p>\n </div>\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${String(columns)}, 1fr)`,\n gap: \"var(--spacing-4)\",\n minHeight: \"100%\",\n }}\n className=\"relative\"\n >\n {children}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Properties panel for configuring selected widget\n */\nfunction DashboardBuilderPropertiesPanel({\n onClose,\n onConfigChange,\n widget,\n widgetDefinition,\n}: DashboardBuilderPropertiesPanelProps): ReactNode {\n const panelId = useId()\n\n if (!widget || !widgetDefinition) {\n return (\n <div\n className={dashboardBuilderPropertiesPanelVariants({ open: false })}\n data-slot=\"dashboard-builder-properties-panel\"\n />\n )\n }\n\n const handleFieldChange = (fieldName: string, value: unknown): void => {\n const newConfig = { ...widget.config, [fieldName]: value }\n onConfigChange?.(newConfig)\n }\n\n return (\n <div\n aria-labelledby={`${panelId}-title`}\n className={dashboardBuilderPropertiesPanelVariants({ open: true })}\n data-slot=\"dashboard-builder-properties-panel\"\n role=\"region\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n <span className=\"text-sm font-medium\" id={`${panelId}-title`}>\n Properties\n </span>\n <Button\n aria-label=\"Close properties panel\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={onClose}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n <div>\n <span className=\"text-xs font-medium uppercase text-muted-foreground\">\n Widget: {widgetDefinition.name}\n </span>\n </div>\n\n <div className=\"h-px w-full bg-border\" />\n\n <div className=\"space-y-4\">\n {widgetDefinition.configSchema.fields.map((field) => (\n <div key={field.name} className=\"space-y-2\">\n <Label htmlFor={`${panelId}-${field.name}`}>{field.label}</Label>\n {field.type === \"text\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? \"\"\n if (typeof val === \"object\") return JSON.stringify(val)\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.value); }}\n />\n )}\n {field.type === \"number\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? 0\n if (typeof val === \"object\") return \"0\"\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n type=\"number\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, Number(e.target.value)); }}\n />\n )}\n {field.type === \"boolean\" && (\n <input\n checked={Boolean(widget.config[field.name] ?? field.defaultValue)}\n className=\"h-4 w-4\"\n id={`${panelId}-${field.name}`}\n type=\"checkbox\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.checked); }}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * Individual widget component on the canvas\n */\nfunction DashboardBuilderWidgetComponent({\n isDragging,\n isSelected,\n onClick,\n onRemove,\n widget,\n widgetDefinition,\n}: DashboardBuilderWidgetComponentProps): ReactNode {\n const WidgetComponent = widgetDefinition?.component\n\n const state = isSelected ? \"selected\" : isDragging ? \"dragging\" : \"idle\"\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>): void => {\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n e.preventDefault()\n onRemove?.()\n }\n }\n\n return (\n <div\n style={{\n gridColumn: `span ${String(widget.w)}`,\n gridRow: `span ${String(widget.h)}`,\n minHeight: `${String(widget.h * 100)}px`,\n }}\n aria-label={`Widget: ${widget.title}`}\n aria-selected={isSelected}\n className={dashboardBuilderWidgetVariants({ state })}\n data-slot=\"dashboard-builder-widget\"\n data-widget-id={widget.id}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n >\n {/* Widget header */}\n <div className=\"flex items-center justify-between border-b bg-muted/50 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <GripVertical className=\"h-4 w-4 cursor-grab text-muted-foreground\" />\n <span className=\"text-xs font-medium\">{widget.title}</span>\n </div>\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"opacity-0 group-hover:opacity-100\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove?.()\n }}\n >\n <Trash2 className=\"h-3 w-3\" />\n </Button>\n </div>\n\n {/* Widget content */}\n <div className=\"flex-1 overflow-hidden p-2\">\n {WidgetComponent ? (\n <WidgetComponent\n config={widget.config}\n height={widget.h}\n id={widget.id}\n title={widget.title}\n width={widget.w}\n />\n ) : (\n <div className=\"flex h-full items-center justify-center text-muted-foreground\">\n <span className=\"text-xs\">Unknown widget type</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN COMPONENT\n// ============================================\n\n/**\n * DashboardBuilder - Visual dashboard construction interface.\n *\n * Allows users to create, edit and customize dashboards through a drag-and-drop\n * interface with a widget library and properties panel.\n *\n * @example\n * ```tsx\n * <DashboardBuilder\n * onSave={({ widgets, layout }) => console.log('Saved:', widgets, layout)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * const initialWidgets = [\n * { id: '1', type: 'kpi', title: 'Sales', x: 0, y: 0, w: 3, h: 2, config: { value: '150k' } }\n * ];\n *\n * <DashboardBuilder\n * initialWidgets={initialWidgets}\n * columns={12}\n * rowHeight={100}\n * />\n * ```\n */\nfunction DashboardBuilder({\n \"aria-label\": ariaLabel = \"Dashboard builder\",\n allowOverlap = false,\n autoSaveInterval = 30000,\n availableWidgets = defaultWidgets,\n className,\n columns = 12,\n enableAutoSave = false,\n initialLayout,\n initialWidgets = [],\n mode,\n onLayoutChange,\n onPreview,\n onRedo,\n onSave,\n onUndo,\n onWidgetAdd,\n onWidgetRemove,\n onWidgetUpdate,\n rowHeight = 100,\n showGrid = true,\n showPreview = true,\n showUndo = true,\n size,\n snapToGrid = true,\n ...props\n}: DashboardBuilderProps): ReactNode {\n const builderId = useId()\n\n // State\n const [widgets, setWidgets] = useState<BuilderWidget[]>(initialWidgets)\n const [selectedWidgetId, setSelectedWidgetId] = useState<null | string>(null)\n const [_builderMode, setBuilderMode] = useState<BuilderMode>(\"edit\")\n const [_builderState, setBuilderState] = useState<BuilderState>(\"idle\")\n const [history, setHistory] = useState<BuilderWidget[][]>([initialWidgets])\n const [historyIndex, setHistoryIndex] = useState(0)\n\n // Suppress unused variable warnings for future implementation\n void snapToGrid\n void allowOverlap\n void enableAutoSave\n void autoSaveInterval\n void initialLayout\n\n // Computed\n const selectedWidget = useMemo(\n () => widgets.find((w) => w.id === selectedWidgetId) ?? null,\n [widgets, selectedWidgetId]\n )\n const selectedWidgetDefinition = useMemo(\n () =>\n selectedWidget\n ? availableWidgets.find((w) => w.type === selectedWidget.type)\n : undefined,\n [selectedWidget, availableWidgets]\n )\n\n const canUndo = historyIndex > 0\n const canRedo = historyIndex < history.length - 1\n\n // Helpers\n const updateHistory = useCallback((newWidgets: BuilderWidget[]) => {\n setHistory((prev) => {\n const newHistory = prev.slice(0, historyIndex + 1)\n newHistory.push(newWidgets)\n return newHistory\n })\n setHistoryIndex((prev) => prev + 1)\n }, [historyIndex])\n\n const generateId = (): string => `widget-${String(Date.now())}-${Math.random().toString(36).slice(2, 9)}`\n\n const getLayoutConfig = useCallback((): BuilderLayoutConfig => {\n return {\n columns,\n rowHeight,\n widgets: widgets.map((w) => ({\n i: w.id,\n x: w.x,\n y: w.y,\n w: w.w,\n h: w.h,\n })),\n }\n }, [columns, rowHeight, widgets])\n\n // Event handlers\n const handleWidgetDrop = useCallback(\n (widgetType: string, position: BuilderPosition) => {\n const definition = availableWidgets.find((w) => w.type === widgetType)\n if (!definition) return\n\n const newWidget: BuilderWidget = {\n id: generateId(),\n type: widgetType,\n title: definition.name,\n x: position.x,\n y: position.y,\n w: definition.defaultSize.w,\n h: definition.defaultSize.h,\n config: definition.configSchema.fields.reduce<Record<string, unknown>>(\n (acc, field) => {\n acc[field.name] = field.defaultValue\n return acc\n },\n {}\n ),\n }\n\n const newWidgets = [...widgets, newWidget]\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n setSelectedWidgetId(newWidget.id)\n\n onWidgetAdd?.({ widget: newWidget, position })\n onLayoutChange?.(getLayoutConfig())\n },\n [availableWidgets, widgets, updateHistory, onWidgetAdd, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n const newWidgets = widgets.filter((w) => w.id !== widgetId)\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n if (selectedWidgetId === widgetId) {\n setSelectedWidgetId(null)\n }\n\n onWidgetRemove?.({ widgetId })\n onLayoutChange?.(getLayoutConfig())\n },\n [widgets, selectedWidgetId, updateHistory, onWidgetRemove, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetSelect = useCallback((widgetId: string) => {\n setSelectedWidgetId(widgetId)\n setBuilderState(\"configuring\")\n }, [])\n\n const handleConfigChange = useCallback(\n (newConfig: Record<string, unknown>) => {\n if (!selectedWidgetId) return\n\n const newWidgets = widgets.map((w) =>\n w.id === selectedWidgetId ? { ...w, config: newConfig } : w\n )\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n onWidgetUpdate?.({ widgetId: selectedWidgetId, config: newConfig })\n },\n [selectedWidgetId, widgets, updateHistory, onWidgetUpdate]\n )\n\n const handleSave = useCallback(() => {\n setBuilderState(\"saving\")\n onSave?.({ widgets, layout: getLayoutConfig() })\n setBuilderState(\"idle\")\n }, [widgets, getLayoutConfig, onSave])\n\n const handleUndo = useCallback(() => {\n if (!canUndo) return\n const newIndex = historyIndex - 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onUndo?.()\n }, [canUndo, historyIndex, history, onUndo])\n\n const handleRedo = useCallback(() => {\n if (!canRedo) return\n const newIndex = historyIndex + 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onRedo?.()\n }, [canRedo, historyIndex, history, onRedo])\n\n const handlePreview = useCallback(() => {\n setBuilderMode(\"preview\")\n onPreview?.()\n }, [onPreview])\n\n const handleCloseProperties = useCallback(() => {\n setSelectedWidgetId(null)\n setBuilderState(\"idle\")\n }, [])\n\n // Keyboard shortcuts\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n // Ctrl/Cmd + S: Save\n if ((e.ctrlKey || e.metaKey) && e.key === \"s\") {\n e.preventDefault()\n handleSave()\n }\n // Ctrl/Cmd + Z: Undo\n if ((e.ctrlKey || e.metaKey) && e.key === \"z\" && !e.shiftKey) {\n e.preventDefault()\n handleUndo()\n }\n // Ctrl/Cmd + Shift + Z or Ctrl/Cmd + Y: Redo\n if ((e.ctrlKey || e.metaKey) && (e.key === \"y\" || (e.key === \"z\" && e.shiftKey))) {\n e.preventDefault()\n handleRedo()\n }\n // Delete: Remove selected widget\n if ((e.key === \"Delete\" || e.key === \"Backspace\") && selectedWidgetId) {\n e.preventDefault()\n handleWidgetRemove(selectedWidgetId)\n }\n },\n [handleSave, handleUndo, handleRedo, selectedWidgetId, handleWidgetRemove]\n )\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardBuilderVariants({ mode, size }), className)}\n data-slot=\"dashboard-builder\"\n id={builderId}\n role=\"application\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Toolbar */}\n <div className=\"flex flex-col\">\n <DashboardBuilderToolbar\n canRedo={canRedo}\n canUndo={canUndo}\n showPreview={showPreview}\n showUndo={showUndo}\n onRedo={handleRedo}\n onSave={handleSave}\n onTogglePreview={handlePreview}\n onUndo={handleUndo}\n />\n\n {/* Main content area */}\n <div className=\"flex flex-1 overflow-hidden\">\n {/* Widget Library */}\n <DashboardBuilderWidgetLibrary widgets={availableWidgets} />\n\n {/* Canvas */}\n <div className=\"flex flex-1 flex-col\">\n <DashboardBuilderCanvas\n columns={columns}\n rowHeight={rowHeight}\n selectedWidgetId={selectedWidgetId}\n showGrid={showGrid}\n widgetDefinitions={availableWidgets}\n widgets={widgets}\n onWidgetClick={handleWidgetSelect}\n onWidgetDrop={handleWidgetDrop}\n onWidgetRemove={handleWidgetRemove}\n >\n {widgets.map((widget) => {\n const definition = availableWidgets.find(\n (w) => w.type === widget.type\n )\n return (\n <DashboardBuilderWidgetComponent\n key={widget.id}\n isSelected={widget.id === selectedWidgetId}\n widget={widget}\n widgetDefinition={definition}\n onClick={() => { handleWidgetSelect(widget.id); }}\n onRemove={() => { handleWidgetRemove(widget.id); }}\n />\n )\n })}\n </DashboardBuilderCanvas>\n </div>\n\n {/* Properties Panel */}\n <DashboardBuilderPropertiesPanel\n widget={selectedWidget}\n widgetDefinition={selectedWidgetDefinition}\n onClose={handleCloseProperties}\n onConfigChange={handleConfigChange}\n />\n </div>\n </div>\n </div>\n )\n}\n\nDashboardBuilder.displayName = \"DashboardBuilder\"\n\n// ============================================\n// EXPORTS\n// ============================================\n\nexport {\n DashboardBuilder,\n DashboardBuilderCanvas,\n DashboardBuilderPropertiesPanel,\n DashboardBuilderToolbar,\n DashboardBuilderWidgetComponent,\n DashboardBuilderWidgetLibrary,\n defaultWidgets,\n}\nexport type {\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription } from './chunk-3NFQXZHO.js';
2
2
  import { useIsMobile } from './chunk-WH7Y2MAY.js';
3
3
  import { SkeletonLoader } from './chunk-QHKOBGLW.js';
4
- import { Avatar } from './chunk-YP2ATSXP.js';
5
4
  import { TextInput } from './chunk-PWCMCMDN.js';
6
- import { Button } from './chunk-ONQCNOLU.js';
7
- import { Divider } from './chunk-3L5G7VI2.js';
5
+ import { Avatar } from './chunk-3BBOSSDG.js';
6
+ import { Button } from './chunk-HDOR3SN3.js';
8
7
  import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from './chunk-7ZJ32KRQ.js';
8
+ import { Divider } from './chunk-3L5G7VI2.js';
9
9
  import { cn } from './chunk-HRNDJU7D.js';
10
10
  import { Slot } from '@radix-ui/react-slot';
11
11
  import { PanelLeftIcon, ChevronDown, SunIcon, MoonIcon } from 'lucide-react';
@@ -1204,5 +1204,5 @@ function SidebarThemeToggle({
1204
1204
  }
1205
1205
 
1206
1206
  export { Sidebar, SidebarAvatar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLogo, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarPanelContent, SidebarProvider, SidebarRail, SidebarRailButton, SidebarRailContent, SidebarSeparator, SidebarThemeToggle, SidebarTrigger, sidebarContainerVariants, sidebarContentVariants, sidebarDesktopVariants, sidebarFooterVariants, sidebarGapVariants, sidebarGroupActionVariants, sidebarGroupContentVariants, sidebarGroupLabelVariants, sidebarGroupVariants, sidebarHeaderVariants, sidebarInnerVariants, sidebarInputVariants, sidebarInsetVariants, sidebarMenuActionShowOnHoverVariants, sidebarMenuActionVariants, sidebarMenuBadgeVariants, sidebarMenuButtonVariants, sidebarMenuItemVariants, sidebarMenuSkeletonVariants, sidebarMenuSubButtonVariants, sidebarMenuSubItemVariants, sidebarMenuSubVariants, sidebarMenuVariants, sidebarMobileVariants, sidebarNonCollapsibleVariants, sidebarProviderVariants, sidebarRailButtonVariants, sidebarRailVariants, sidebarSeparatorVariants, sidebarTriggerVariants, useSidebar };
1207
- //# sourceMappingURL=chunk-FCT6FEEZ.js.map
1208
- //# sourceMappingURL=chunk-FCT6FEEZ.js.map
1207
+ //# sourceMappingURL=chunk-5DMK7CVS.js.map
1208
+ //# sourceMappingURL=chunk-5DMK7CVS.js.map