@omnifyjp/ui 1.0.2 → 2.0.0

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 (456) hide show
  1. package/dist/{chunk-TJMK2KBE.js → chunk-2BRCVWXR.js} +3 -3
  2. package/dist/chunk-2BRCVWXR.js.map +1 -0
  3. package/dist/{chunk-RQNZDWY3.js → chunk-33QLY6GI.js} +2 -2
  4. package/dist/chunk-33QLY6GI.js.map +1 -0
  5. package/dist/{chunk-NPL2R5LD.js → chunk-3V6NS4EQ.js} +5 -5
  6. package/dist/chunk-3V6NS4EQ.js.map +1 -0
  7. package/dist/{chunk-G7HTZBUR.js → chunk-47TUWE63.js} +3 -3
  8. package/dist/chunk-47TUWE63.js.map +1 -0
  9. package/dist/{chunk-FRKG7JQY.js → chunk-5AGUCELC.js} +2 -2
  10. package/dist/chunk-5AGUCELC.js.map +1 -0
  11. package/dist/chunk-5K6RO5R3.js +71 -0
  12. package/dist/chunk-5K6RO5R3.js.map +1 -0
  13. package/dist/{chunk-A3BB5ZOC.js → chunk-5SAUUOCN.js} +2 -2
  14. package/dist/chunk-5SAUUOCN.js.map +1 -0
  15. package/dist/{chunk-2TUWDXAC.js → chunk-5WOCEAZG.js} +3 -3
  16. package/dist/chunk-5WOCEAZG.js.map +1 -0
  17. package/dist/{chunk-75WZR6HF.js → chunk-6S5AZCU6.js} +4 -4
  18. package/dist/chunk-6S5AZCU6.js.map +1 -0
  19. package/dist/{chunk-2C2HRGM7.js → chunk-6W5FYOXQ.js} +3 -3
  20. package/dist/chunk-6W5FYOXQ.js.map +1 -0
  21. package/dist/{chunk-ZHEKDP5X.js → chunk-6Z6NRIQ2.js} +3 -3
  22. package/dist/chunk-6Z6NRIQ2.js.map +1 -0
  23. package/dist/{chunk-BAQWGQJG.js → chunk-7KZ7CVRN.js} +3 -3
  24. package/dist/chunk-7KZ7CVRN.js.map +1 -0
  25. package/dist/{chunk-C34KSTWA.js → chunk-7NMNLY7F.js} +2 -2
  26. package/dist/chunk-7NMNLY7F.js.map +1 -0
  27. package/dist/{chunk-55E7D2HR.js → chunk-BOV3Q2JH.js} +2 -2
  28. package/dist/chunk-BOV3Q2JH.js.map +1 -0
  29. package/dist/{chunk-34ARZSNP.js → chunk-CECQY5LL.js} +2 -2
  30. package/dist/chunk-CECQY5LL.js.map +1 -0
  31. package/dist/{chunk-JRU2QX7T.js → chunk-CLYBVDEQ.js} +2 -2
  32. package/dist/chunk-CLYBVDEQ.js.map +1 -0
  33. package/dist/{chunk-TGYQ3AKH.js → chunk-CNS3OMZ7.js} +2 -2
  34. package/dist/chunk-CNS3OMZ7.js.map +1 -0
  35. package/dist/{chunk-C5NZAOA7.js → chunk-CSYH7P6N.js} +2 -2
  36. package/dist/chunk-CSYH7P6N.js.map +1 -0
  37. package/dist/{chunk-USIHM7FV.js → chunk-DEKVLLTL.js} +2 -2
  38. package/dist/chunk-DEKVLLTL.js.map +1 -0
  39. package/dist/chunk-DNPRGSOD.js +70 -0
  40. package/dist/chunk-DNPRGSOD.js.map +1 -0
  41. package/dist/{chunk-Z2QAABLM.js → chunk-DXKFFJIE.js} +2 -2
  42. package/dist/chunk-DXKFFJIE.js.map +1 -0
  43. package/dist/{chunk-IAWKX5W4.js → chunk-DXZZURPN.js} +2 -2
  44. package/dist/chunk-DXZZURPN.js.map +1 -0
  45. package/dist/{chunk-XOJJBNDX.js → chunk-EAY3QSID.js} +2 -2
  46. package/dist/chunk-EAY3QSID.js.map +1 -0
  47. package/dist/{chunk-P3M5TZD2.js → chunk-EYJ7TJIX.js} +2 -2
  48. package/dist/chunk-EYJ7TJIX.js.map +1 -0
  49. package/dist/{chunk-67YUL2ZS.js → chunk-FTNPOZGK.js} +2 -2
  50. package/dist/chunk-FTNPOZGK.js.map +1 -0
  51. package/dist/{chunk-JXGRW2MR.js → chunk-GR7T5QHL.js} +2 -2
  52. package/dist/chunk-GR7T5QHL.js.map +1 -0
  53. package/dist/{chunk-LMT327XH.js → chunk-HEQVBUJO.js} +2 -2
  54. package/dist/chunk-HEQVBUJO.js.map +1 -0
  55. package/dist/chunk-HXMY2NQ3.js +90 -0
  56. package/dist/chunk-HXMY2NQ3.js.map +1 -0
  57. package/dist/{chunk-VVYSAGB3.js → chunk-I6PJSYBI.js} +3 -3
  58. package/dist/chunk-I6PJSYBI.js.map +1 -0
  59. package/dist/{chunk-35DNN46W.js → chunk-ITTPI2Z3.js} +3 -3
  60. package/dist/chunk-ITTPI2Z3.js.map +1 -0
  61. package/dist/{chunk-JAJMM32I.js → chunk-IXEPDTUE.js} +3 -3
  62. package/dist/chunk-IXEPDTUE.js.map +1 -0
  63. package/dist/{chunk-PGWNOZDX.js → chunk-KCUSO3CK.js} +2 -2
  64. package/dist/chunk-KCUSO3CK.js.map +1 -0
  65. package/dist/{chunk-QB3UWRZH.js → chunk-KJAXKHJ2.js} +3 -3
  66. package/dist/chunk-KJAXKHJ2.js.map +1 -0
  67. package/dist/{chunk-7IRLBU2I.js → chunk-LA4L3QIK.js} +3 -3
  68. package/dist/chunk-LA4L3QIK.js.map +1 -0
  69. package/dist/{chunk-NNJTKHCE.js → chunk-LTGCKJX7.js} +2 -2
  70. package/dist/chunk-LTGCKJX7.js.map +1 -0
  71. package/dist/{chunk-JJSVA3TH.js → chunk-LUYTKHGS.js} +2 -2
  72. package/dist/chunk-LUYTKHGS.js.map +1 -0
  73. package/dist/{chunk-6GWVQB3Q.js → chunk-MVYSUWSD.js} +3 -3
  74. package/dist/chunk-MVYSUWSD.js.map +1 -0
  75. package/dist/{chunk-YBMEQZX7.js → chunk-N5BNNKBR.js} +2 -2
  76. package/dist/chunk-N5BNNKBR.js.map +1 -0
  77. package/dist/{chunk-35U6QG4P.js → chunk-N6OUJIQD.js} +2 -2
  78. package/dist/chunk-N6OUJIQD.js.map +1 -0
  79. package/dist/{chunk-R2CDE5DO.js → chunk-NWVMNWOH.js} +2 -2
  80. package/dist/chunk-NWVMNWOH.js.map +1 -0
  81. package/dist/{chunk-7XH3MGBR.js → chunk-O2KRH6BS.js} +2 -2
  82. package/dist/chunk-O2KRH6BS.js.map +1 -0
  83. package/dist/{chunk-NU56GKGM.js → chunk-ORTPKXBI.js} +2 -2
  84. package/dist/chunk-ORTPKXBI.js.map +1 -0
  85. package/dist/chunk-OUOGSSRT.js +71 -0
  86. package/dist/chunk-OUOGSSRT.js.map +1 -0
  87. package/dist/{chunk-FLWMT4DB.js → chunk-PJZ7D36X.js} +2 -2
  88. package/dist/chunk-PJZ7D36X.js.map +1 -0
  89. package/dist/{chunk-CUZR4JWM.js → chunk-PYB6RRA5.js} +3 -3
  90. package/dist/chunk-PYB6RRA5.js.map +1 -0
  91. package/dist/{chunk-BRSM3SZP.js → chunk-QGU4BRMO.js} +2 -2
  92. package/dist/chunk-QGU4BRMO.js.map +1 -0
  93. package/dist/{chunk-S6PDRGR5.js → chunk-RZZH57ZL.js} +2 -2
  94. package/dist/chunk-RZZH57ZL.js.map +1 -0
  95. package/dist/{chunk-EWBCV7VA.js → chunk-S73PGQD5.js} +2 -2
  96. package/dist/chunk-S73PGQD5.js.map +1 -0
  97. package/dist/{chunk-N47H4MHX.js → chunk-SAHHVJMQ.js} +3 -3
  98. package/dist/chunk-SAHHVJMQ.js.map +1 -0
  99. package/dist/{chunk-INLM7UJC.js → chunk-T65EBJUJ.js} +2 -2
  100. package/dist/chunk-T65EBJUJ.js.map +1 -0
  101. package/dist/{chunk-MJLFJPUG.js → chunk-TLQE77WF.js} +5 -5
  102. package/dist/chunk-TLQE77WF.js.map +1 -0
  103. package/dist/{chunk-ZPMXRW2A.js → chunk-TPBRGO4D.js} +3 -3
  104. package/dist/chunk-TPBRGO4D.js.map +1 -0
  105. package/dist/{chunk-WS6E7HBT.js → chunk-UTF42GJR.js} +3 -3
  106. package/dist/chunk-UTF42GJR.js.map +1 -0
  107. package/dist/{chunk-MZ2P566X.js → chunk-VATNOBZ2.js} +3 -3
  108. package/dist/chunk-VATNOBZ2.js.map +1 -0
  109. package/dist/{chunk-JLTBUACL.js → chunk-VOLR236J.js} +2 -2
  110. package/dist/chunk-VOLR236J.js.map +1 -0
  111. package/dist/{chunk-WL4ZO2H3.js → chunk-W477ZR6B.js} +2 -2
  112. package/dist/chunk-W477ZR6B.js.map +1 -0
  113. package/dist/{chunk-3EOHW4QN.js → chunk-WJX6NKKF.js} +3 -3
  114. package/dist/chunk-WJX6NKKF.js.map +1 -0
  115. package/dist/{chunk-LTTNCAAA.js → chunk-XNUFKQYL.js} +3 -3
  116. package/dist/chunk-XNUFKQYL.js.map +1 -0
  117. package/dist/{chunk-ZYEGBF7G.js → chunk-YU23NDE4.js} +3 -3
  118. package/dist/chunk-YU23NDE4.js.map +1 -0
  119. package/dist/chunk-YU55YBID.js +144 -0
  120. package/dist/chunk-YU55YBID.js.map +1 -0
  121. package/dist/{chunk-F2ZJLKDP.js → chunk-YVCLIOMM.js} +2 -2
  122. package/dist/chunk-YVCLIOMM.js.map +1 -0
  123. package/dist/{chunk-7RMTPT6O.js → chunk-YYJVVYFS.js} +2 -2
  124. package/dist/chunk-YYJVVYFS.js.map +1 -0
  125. package/dist/components/display/accordion.js +4 -0
  126. package/dist/components/display/aspect-ratio.js +3 -0
  127. package/dist/components/display/avatar.js +4 -0
  128. package/dist/components/{badge.d.ts → display/badge.d.ts} +1 -1
  129. package/dist/components/display/badge.js +4 -0
  130. package/dist/components/display/card.js +4 -0
  131. package/dist/components/{carousel.d.ts → display/carousel.d.ts} +2 -2
  132. package/dist/components/display/carousel.js +5 -0
  133. package/dist/components/{chart.js → display/chart.js} +1 -1
  134. package/dist/components/display/chart.js.map +1 -0
  135. package/dist/components/{collapsible.js → display/collapsible.js} +1 -1
  136. package/dist/components/display/resizable.js +4 -0
  137. package/dist/components/display/scroll-area.js +4 -0
  138. package/dist/components/display/separator.js +4 -0
  139. package/dist/components/display/table.js +4 -0
  140. package/dist/components/display/toggle-group.js +5 -0
  141. package/dist/components/display/toggle.js +4 -0
  142. package/dist/components/domain/calendar/calendar-category-badge.js +5 -0
  143. package/dist/components/{calendar-event-chip.js → domain/calendar/calendar-event-chip.js} +1 -1
  144. package/dist/components/domain/calendar/calendar-event-chip.js.map +1 -0
  145. package/dist/components/{calendar-event-sheet.js → domain/calendar/calendar-event-sheet.js} +6 -6
  146. package/dist/components/domain/calendar/calendar-event-sheet.js.map +1 -0
  147. package/dist/components/{calendar-mini.js → domain/calendar/calendar-mini.js} +3 -3
  148. package/dist/components/domain/calendar/calendar-mini.js.map +1 -0
  149. package/dist/components/{calendar-toolbar.js → domain/calendar/calendar-toolbar.js} +4 -4
  150. package/dist/components/domain/calendar/calendar-toolbar.js.map +1 -0
  151. package/dist/components/domain/calendar/calendar.js +5 -0
  152. package/dist/components/domain/rbac/permission-grid.js +5 -0
  153. package/dist/components/domain/rbac/scope-tree.js +5 -0
  154. package/dist/components/domain/rbac/scope-type-badge.js +5 -0
  155. package/dist/components/domain/workflow/stage-type-badge.js +5 -0
  156. package/dist/components/domain/workflow/workflow-category-badge.js +5 -0
  157. package/dist/components/domain/workflow/workflow-diagram.js +5 -0
  158. package/dist/components/domain/workflow/workflow-status-badge.js +5 -0
  159. package/dist/components/domain/workflow/workflow-stepper.js +4 -0
  160. package/dist/components/{alert.d.ts → feedback/alert.d.ts} +1 -1
  161. package/dist/components/feedback/alert.js +4 -0
  162. package/dist/components/feedback/progress.js +4 -0
  163. package/dist/components/feedback/skeleton.js +4 -0
  164. package/dist/components/{button.d.ts → inputs/button.d.ts} +2 -2
  165. package/dist/components/inputs/button.js +4 -0
  166. package/dist/components/inputs/checkbox.js +4 -0
  167. package/dist/components/inputs/color-picker.js +9 -0
  168. package/dist/components/inputs/combobox.js +8 -0
  169. package/dist/components/{date-picker.js → inputs/date-picker.js} +4 -4
  170. package/dist/components/inputs/date-picker.js.map +1 -0
  171. package/dist/components/inputs/file-upload.js +5 -0
  172. package/dist/components/{form.js → inputs/form.js} +2 -2
  173. package/dist/components/inputs/form.js.map +1 -0
  174. package/dist/components/inputs/input-otp.js +4 -0
  175. package/dist/components/inputs/input.d.ts +75 -0
  176. package/dist/components/inputs/input.js +6 -0
  177. package/dist/components/inputs/label.js +4 -0
  178. package/dist/components/{password-input.d.ts → inputs/password-input.d.ts} +2 -0
  179. package/dist/components/inputs/password-input.js +7 -0
  180. package/dist/components/inputs/radio-group.js +4 -0
  181. package/dist/components/inputs/rating.js +4 -0
  182. package/dist/components/{select.js → inputs/select.js} +2 -2
  183. package/dist/components/inputs/slider.js +4 -0
  184. package/dist/components/inputs/slug-input.js +8 -0
  185. package/dist/components/inputs/switch.js +4 -0
  186. package/dist/components/inputs/tag-input.js +5 -0
  187. package/dist/components/inputs/textarea.d.ts +67 -0
  188. package/dist/components/inputs/textarea.js +6 -0
  189. package/dist/{chunk-6DIDQ4TB.js → components/inputs/time-picker.js} +9 -7
  190. package/dist/components/inputs/time-picker.js.map +1 -0
  191. package/dist/components/inputs/translatable-field.d.ts +51 -0
  192. package/dist/components/inputs/translatable-field.js +4 -0
  193. package/dist/components/inputs/translatable-field.js.map +1 -0
  194. package/dist/components/layout/page-container.d.ts +96 -0
  195. package/dist/components/layout/page-container.js +5 -0
  196. package/dist/components/layout/page-container.js.map +1 -0
  197. package/dist/components/{breadcrumb.js → navigation/breadcrumb.js} +2 -2
  198. package/dist/components/{command.d.ts → navigation/command.d.ts} +1 -1
  199. package/dist/components/{command.js → navigation/command.js} +3 -3
  200. package/dist/components/{context-menu.js → navigation/context-menu.js} +2 -2
  201. package/dist/components/{dropdown-menu.js → navigation/dropdown-menu.js} +2 -2
  202. package/dist/components/{menubar.js → navigation/menubar.js} +2 -2
  203. package/dist/components/{navigation-menu.js → navigation/navigation-menu.js} +2 -2
  204. package/dist/components/{pagination.d.ts → navigation/pagination.d.ts} +2 -2
  205. package/dist/components/{pagination.js → navigation/pagination.js} +3 -3
  206. package/dist/components/navigation/tabs.js +4 -0
  207. package/dist/components/{alert-dialog.js → overlay/alert-dialog.js} +3 -3
  208. package/dist/components/{dialog.js → overlay/dialog.js} +2 -2
  209. package/dist/components/{drawer.js → overlay/drawer.js} +2 -2
  210. package/dist/components/{hover-card.js → overlay/hover-card.js} +2 -2
  211. package/dist/components/overlay/popover.js +4 -0
  212. package/dist/components/overlay/sheet.js +4 -0
  213. package/dist/components/overlay/sonner.js +3 -0
  214. package/dist/components/overlay/tooltip.js +4 -0
  215. package/dist/index.d.ts +84 -83
  216. package/dist/index.js +62 -60
  217. package/dist/providers/ui-provider.d.ts +80 -0
  218. package/dist/providers/ui-provider.js +3 -0
  219. package/dist/providers/ui-provider.js.map +1 -0
  220. package/package.json +22 -17
  221. package/dist/chunk-2C2HRGM7.js.map +0 -1
  222. package/dist/chunk-2TUWDXAC.js.map +0 -1
  223. package/dist/chunk-34ARZSNP.js.map +0 -1
  224. package/dist/chunk-35DNN46W.js.map +0 -1
  225. package/dist/chunk-35U6QG4P.js.map +0 -1
  226. package/dist/chunk-3EOHW4QN.js.map +0 -1
  227. package/dist/chunk-3VU56V66.js +0 -41
  228. package/dist/chunk-3VU56V66.js.map +0 -1
  229. package/dist/chunk-55E7D2HR.js.map +0 -1
  230. package/dist/chunk-67YUL2ZS.js.map +0 -1
  231. package/dist/chunk-6DIDQ4TB.js.map +0 -1
  232. package/dist/chunk-6GWVQB3Q.js.map +0 -1
  233. package/dist/chunk-75WZR6HF.js.map +0 -1
  234. package/dist/chunk-7IRLBU2I.js.map +0 -1
  235. package/dist/chunk-7RMTPT6O.js.map +0 -1
  236. package/dist/chunk-7XH3MGBR.js.map +0 -1
  237. package/dist/chunk-A3BB5ZOC.js.map +0 -1
  238. package/dist/chunk-BAQWGQJG.js.map +0 -1
  239. package/dist/chunk-BRSM3SZP.js.map +0 -1
  240. package/dist/chunk-C34KSTWA.js.map +0 -1
  241. package/dist/chunk-C5NZAOA7.js.map +0 -1
  242. package/dist/chunk-CUZR4JWM.js.map +0 -1
  243. package/dist/chunk-EWBCV7VA.js.map +0 -1
  244. package/dist/chunk-F2ZJLKDP.js.map +0 -1
  245. package/dist/chunk-FLWMT4DB.js.map +0 -1
  246. package/dist/chunk-FRKG7JQY.js.map +0 -1
  247. package/dist/chunk-G7HTZBUR.js.map +0 -1
  248. package/dist/chunk-IAWKX5W4.js.map +0 -1
  249. package/dist/chunk-INLM7UJC.js.map +0 -1
  250. package/dist/chunk-JAJMM32I.js.map +0 -1
  251. package/dist/chunk-JJSVA3TH.js.map +0 -1
  252. package/dist/chunk-JLTBUACL.js.map +0 -1
  253. package/dist/chunk-JRU2QX7T.js.map +0 -1
  254. package/dist/chunk-JXGRW2MR.js.map +0 -1
  255. package/dist/chunk-LMT327XH.js.map +0 -1
  256. package/dist/chunk-LTTNCAAA.js.map +0 -1
  257. package/dist/chunk-MJLFJPUG.js.map +0 -1
  258. package/dist/chunk-MZ2P566X.js.map +0 -1
  259. package/dist/chunk-N47H4MHX.js.map +0 -1
  260. package/dist/chunk-NNJTKHCE.js.map +0 -1
  261. package/dist/chunk-NPL2R5LD.js.map +0 -1
  262. package/dist/chunk-NU56GKGM.js.map +0 -1
  263. package/dist/chunk-P3M5TZD2.js.map +0 -1
  264. package/dist/chunk-PGWNOZDX.js.map +0 -1
  265. package/dist/chunk-QB3UWRZH.js.map +0 -1
  266. package/dist/chunk-R2CDE5DO.js.map +0 -1
  267. package/dist/chunk-RQNZDWY3.js.map +0 -1
  268. package/dist/chunk-S6PDRGR5.js.map +0 -1
  269. package/dist/chunk-TGYQ3AKH.js.map +0 -1
  270. package/dist/chunk-TJMK2KBE.js.map +0 -1
  271. package/dist/chunk-USIHM7FV.js.map +0 -1
  272. package/dist/chunk-VVYSAGB3.js.map +0 -1
  273. package/dist/chunk-WD5KZE25.js +0 -25
  274. package/dist/chunk-WD5KZE25.js.map +0 -1
  275. package/dist/chunk-WL4ZO2H3.js.map +0 -1
  276. package/dist/chunk-WS6E7HBT.js.map +0 -1
  277. package/dist/chunk-XOJJBNDX.js.map +0 -1
  278. package/dist/chunk-YBMEQZX7.js.map +0 -1
  279. package/dist/chunk-Z2QAABLM.js.map +0 -1
  280. package/dist/chunk-ZHEKDP5X.js.map +0 -1
  281. package/dist/chunk-ZPMXRW2A.js.map +0 -1
  282. package/dist/chunk-ZYEGBF7G.js.map +0 -1
  283. package/dist/components/accordion.js +0 -4
  284. package/dist/components/alert.js +0 -4
  285. package/dist/components/aspect-ratio.js +0 -3
  286. package/dist/components/avatar.js +0 -4
  287. package/dist/components/badge.js +0 -4
  288. package/dist/components/button.js +0 -4
  289. package/dist/components/calendar-category-badge.js +0 -5
  290. package/dist/components/calendar-event-chip.js.map +0 -1
  291. package/dist/components/calendar-event-sheet.js.map +0 -1
  292. package/dist/components/calendar-mini.js.map +0 -1
  293. package/dist/components/calendar-toolbar.js.map +0 -1
  294. package/dist/components/calendar.js +0 -5
  295. package/dist/components/card.js +0 -4
  296. package/dist/components/carousel.js +0 -5
  297. package/dist/components/chart.js.map +0 -1
  298. package/dist/components/checkbox.js +0 -4
  299. package/dist/components/color-picker.js +0 -7
  300. package/dist/components/combobox.js +0 -8
  301. package/dist/components/date-picker.js.map +0 -1
  302. package/dist/components/file-upload.js +0 -5
  303. package/dist/components/form.js.map +0 -1
  304. package/dist/components/input-otp.js +0 -4
  305. package/dist/components/input.d.ts +0 -38
  306. package/dist/components/input.js +0 -4
  307. package/dist/components/label.js +0 -4
  308. package/dist/components/password-input.js +0 -5
  309. package/dist/components/permission-grid.js +0 -5
  310. package/dist/components/popover.js +0 -4
  311. package/dist/components/progress.js +0 -4
  312. package/dist/components/radio-group.js +0 -4
  313. package/dist/components/rating.js +0 -4
  314. package/dist/components/resizable.js +0 -4
  315. package/dist/components/scope-tree.js +0 -5
  316. package/dist/components/scope-type-badge.js +0 -5
  317. package/dist/components/scroll-area.js +0 -4
  318. package/dist/components/separator.js +0 -4
  319. package/dist/components/sheet.js +0 -4
  320. package/dist/components/skeleton.js +0 -4
  321. package/dist/components/slider.js +0 -4
  322. package/dist/components/slug-input.js +0 -6
  323. package/dist/components/sonner.js +0 -3
  324. package/dist/components/stage-type-badge.js +0 -5
  325. package/dist/components/switch.js +0 -4
  326. package/dist/components/table.js +0 -4
  327. package/dist/components/tabs.js +0 -4
  328. package/dist/components/tag-input.js +0 -5
  329. package/dist/components/textarea.d.ts +0 -21
  330. package/dist/components/textarea.js +0 -4
  331. package/dist/components/time-picker.js +0 -8
  332. package/dist/components/time-picker.js.map +0 -1
  333. package/dist/components/toggle-group.js +0 -5
  334. package/dist/components/toggle.js +0 -4
  335. package/dist/components/tooltip.js +0 -4
  336. package/dist/components/workflow-category-badge.js +0 -5
  337. package/dist/components/workflow-diagram.js +0 -5
  338. package/dist/components/workflow-status-badge.js +0 -5
  339. package/dist/components/workflow-stepper.js +0 -4
  340. /package/dist/components/{accordion.d.ts → display/accordion.d.ts} +0 -0
  341. /package/dist/components/{accordion.js.map → display/accordion.js.map} +0 -0
  342. /package/dist/components/{aspect-ratio.d.ts → display/aspect-ratio.d.ts} +0 -0
  343. /package/dist/components/{aspect-ratio.js.map → display/aspect-ratio.js.map} +0 -0
  344. /package/dist/components/{avatar.d.ts → display/avatar.d.ts} +0 -0
  345. /package/dist/components/{avatar.js.map → display/avatar.js.map} +0 -0
  346. /package/dist/components/{badge.js.map → display/badge.js.map} +0 -0
  347. /package/dist/components/{card.d.ts → display/card.d.ts} +0 -0
  348. /package/dist/components/{card.js.map → display/card.js.map} +0 -0
  349. /package/dist/components/{carousel.js.map → display/carousel.js.map} +0 -0
  350. /package/dist/components/{chart.d.ts → display/chart.d.ts} +0 -0
  351. /package/dist/components/{collapsible.d.ts → display/collapsible.d.ts} +0 -0
  352. /package/dist/components/{collapsible.js.map → display/collapsible.js.map} +0 -0
  353. /package/dist/components/{resizable.d.ts → display/resizable.d.ts} +0 -0
  354. /package/dist/components/{resizable.js.map → display/resizable.js.map} +0 -0
  355. /package/dist/components/{scroll-area.d.ts → display/scroll-area.d.ts} +0 -0
  356. /package/dist/components/{scroll-area.js.map → display/scroll-area.js.map} +0 -0
  357. /package/dist/components/{separator.d.ts → display/separator.d.ts} +0 -0
  358. /package/dist/components/{separator.js.map → display/separator.js.map} +0 -0
  359. /package/dist/components/{table.d.ts → display/table.d.ts} +0 -0
  360. /package/dist/components/{table.js.map → display/table.js.map} +0 -0
  361. /package/dist/components/{toggle-group.d.ts → display/toggle-group.d.ts} +0 -0
  362. /package/dist/components/{toggle-group.js.map → display/toggle-group.js.map} +0 -0
  363. /package/dist/components/{toggle.d.ts → display/toggle.d.ts} +0 -0
  364. /package/dist/components/{toggle.js.map → display/toggle.js.map} +0 -0
  365. /package/dist/components/{calendar-category-badge.d.ts → domain/calendar/calendar-category-badge.d.ts} +0 -0
  366. /package/dist/components/{calendar-category-badge.js.map → domain/calendar/calendar-category-badge.js.map} +0 -0
  367. /package/dist/components/{calendar-event-chip.d.ts → domain/calendar/calendar-event-chip.d.ts} +0 -0
  368. /package/dist/components/{calendar-event-sheet.d.ts → domain/calendar/calendar-event-sheet.d.ts} +0 -0
  369. /package/dist/components/{calendar-mini.d.ts → domain/calendar/calendar-mini.d.ts} +0 -0
  370. /package/dist/components/{calendar-toolbar.d.ts → domain/calendar/calendar-toolbar.d.ts} +0 -0
  371. /package/dist/components/{calendar.d.ts → domain/calendar/calendar.d.ts} +0 -0
  372. /package/dist/components/{calendar.js.map → domain/calendar/calendar.js.map} +0 -0
  373. /package/dist/components/{permission-grid.d.ts → domain/rbac/permission-grid.d.ts} +0 -0
  374. /package/dist/components/{permission-grid.js.map → domain/rbac/permission-grid.js.map} +0 -0
  375. /package/dist/components/{scope-tree.d.ts → domain/rbac/scope-tree.d.ts} +0 -0
  376. /package/dist/components/{scope-tree.js.map → domain/rbac/scope-tree.js.map} +0 -0
  377. /package/dist/components/{scope-type-badge.d.ts → domain/rbac/scope-type-badge.d.ts} +0 -0
  378. /package/dist/components/{scope-type-badge.js.map → domain/rbac/scope-type-badge.js.map} +0 -0
  379. /package/dist/components/{stage-type-badge.d.ts → domain/workflow/stage-type-badge.d.ts} +0 -0
  380. /package/dist/components/{stage-type-badge.js.map → domain/workflow/stage-type-badge.js.map} +0 -0
  381. /package/dist/components/{workflow-category-badge.d.ts → domain/workflow/workflow-category-badge.d.ts} +0 -0
  382. /package/dist/components/{workflow-category-badge.js.map → domain/workflow/workflow-category-badge.js.map} +0 -0
  383. /package/dist/components/{workflow-diagram.d.ts → domain/workflow/workflow-diagram.d.ts} +0 -0
  384. /package/dist/components/{workflow-diagram.js.map → domain/workflow/workflow-diagram.js.map} +0 -0
  385. /package/dist/components/{workflow-status-badge.d.ts → domain/workflow/workflow-status-badge.d.ts} +0 -0
  386. /package/dist/components/{workflow-status-badge.js.map → domain/workflow/workflow-status-badge.js.map} +0 -0
  387. /package/dist/components/{workflow-stepper.d.ts → domain/workflow/workflow-stepper.d.ts} +0 -0
  388. /package/dist/components/{workflow-stepper.js.map → domain/workflow/workflow-stepper.js.map} +0 -0
  389. /package/dist/components/{alert.js.map → feedback/alert.js.map} +0 -0
  390. /package/dist/components/{progress.d.ts → feedback/progress.d.ts} +0 -0
  391. /package/dist/components/{progress.js.map → feedback/progress.js.map} +0 -0
  392. /package/dist/components/{skeleton.d.ts → feedback/skeleton.d.ts} +0 -0
  393. /package/dist/components/{skeleton.js.map → feedback/skeleton.js.map} +0 -0
  394. /package/dist/components/{button.js.map → inputs/button.js.map} +0 -0
  395. /package/dist/components/{checkbox.d.ts → inputs/checkbox.d.ts} +0 -0
  396. /package/dist/components/{checkbox.js.map → inputs/checkbox.js.map} +0 -0
  397. /package/dist/components/{color-picker.d.ts → inputs/color-picker.d.ts} +0 -0
  398. /package/dist/components/{color-picker.js.map → inputs/color-picker.js.map} +0 -0
  399. /package/dist/components/{combobox.d.ts → inputs/combobox.d.ts} +0 -0
  400. /package/dist/components/{combobox.js.map → inputs/combobox.js.map} +0 -0
  401. /package/dist/components/{date-picker.d.ts → inputs/date-picker.d.ts} +0 -0
  402. /package/dist/components/{file-upload.d.ts → inputs/file-upload.d.ts} +0 -0
  403. /package/dist/components/{file-upload.js.map → inputs/file-upload.js.map} +0 -0
  404. /package/dist/components/{form.d.ts → inputs/form.d.ts} +0 -0
  405. /package/dist/components/{input-otp.d.ts → inputs/input-otp.d.ts} +0 -0
  406. /package/dist/components/{input-otp.js.map → inputs/input-otp.js.map} +0 -0
  407. /package/dist/components/{input.js.map → inputs/input.js.map} +0 -0
  408. /package/dist/components/{label.d.ts → inputs/label.d.ts} +0 -0
  409. /package/dist/components/{label.js.map → inputs/label.js.map} +0 -0
  410. /package/dist/components/{password-input.js.map → inputs/password-input.js.map} +0 -0
  411. /package/dist/components/{radio-group.d.ts → inputs/radio-group.d.ts} +0 -0
  412. /package/dist/components/{radio-group.js.map → inputs/radio-group.js.map} +0 -0
  413. /package/dist/components/{rating.d.ts → inputs/rating.d.ts} +0 -0
  414. /package/dist/components/{rating.js.map → inputs/rating.js.map} +0 -0
  415. /package/dist/components/{select.d.ts → inputs/select.d.ts} +0 -0
  416. /package/dist/components/{select.js.map → inputs/select.js.map} +0 -0
  417. /package/dist/components/{slider.d.ts → inputs/slider.d.ts} +0 -0
  418. /package/dist/components/{slider.js.map → inputs/slider.js.map} +0 -0
  419. /package/dist/components/{slug-input.d.ts → inputs/slug-input.d.ts} +0 -0
  420. /package/dist/components/{slug-input.js.map → inputs/slug-input.js.map} +0 -0
  421. /package/dist/components/{switch.d.ts → inputs/switch.d.ts} +0 -0
  422. /package/dist/components/{switch.js.map → inputs/switch.js.map} +0 -0
  423. /package/dist/components/{tag-input.d.ts → inputs/tag-input.d.ts} +0 -0
  424. /package/dist/components/{tag-input.js.map → inputs/tag-input.js.map} +0 -0
  425. /package/dist/components/{textarea.js.map → inputs/textarea.js.map} +0 -0
  426. /package/dist/components/{time-picker.d.ts → inputs/time-picker.d.ts} +0 -0
  427. /package/dist/components/{breadcrumb.d.ts → navigation/breadcrumb.d.ts} +0 -0
  428. /package/dist/components/{breadcrumb.js.map → navigation/breadcrumb.js.map} +0 -0
  429. /package/dist/components/{command.js.map → navigation/command.js.map} +0 -0
  430. /package/dist/components/{context-menu.d.ts → navigation/context-menu.d.ts} +0 -0
  431. /package/dist/components/{context-menu.js.map → navigation/context-menu.js.map} +0 -0
  432. /package/dist/components/{dropdown-menu.d.ts → navigation/dropdown-menu.d.ts} +0 -0
  433. /package/dist/components/{dropdown-menu.js.map → navigation/dropdown-menu.js.map} +0 -0
  434. /package/dist/components/{menubar.d.ts → navigation/menubar.d.ts} +0 -0
  435. /package/dist/components/{menubar.js.map → navigation/menubar.js.map} +0 -0
  436. /package/dist/components/{navigation-menu.d.ts → navigation/navigation-menu.d.ts} +0 -0
  437. /package/dist/components/{navigation-menu.js.map → navigation/navigation-menu.js.map} +0 -0
  438. /package/dist/components/{pagination.js.map → navigation/pagination.js.map} +0 -0
  439. /package/dist/components/{tabs.d.ts → navigation/tabs.d.ts} +0 -0
  440. /package/dist/components/{tabs.js.map → navigation/tabs.js.map} +0 -0
  441. /package/dist/components/{alert-dialog.d.ts → overlay/alert-dialog.d.ts} +0 -0
  442. /package/dist/components/{alert-dialog.js.map → overlay/alert-dialog.js.map} +0 -0
  443. /package/dist/components/{dialog.d.ts → overlay/dialog.d.ts} +0 -0
  444. /package/dist/components/{dialog.js.map → overlay/dialog.js.map} +0 -0
  445. /package/dist/components/{drawer.d.ts → overlay/drawer.d.ts} +0 -0
  446. /package/dist/components/{drawer.js.map → overlay/drawer.js.map} +0 -0
  447. /package/dist/components/{hover-card.d.ts → overlay/hover-card.d.ts} +0 -0
  448. /package/dist/components/{hover-card.js.map → overlay/hover-card.js.map} +0 -0
  449. /package/dist/components/{popover.d.ts → overlay/popover.d.ts} +0 -0
  450. /package/dist/components/{popover.js.map → overlay/popover.js.map} +0 -0
  451. /package/dist/components/{sheet.d.ts → overlay/sheet.d.ts} +0 -0
  452. /package/dist/components/{sheet.js.map → overlay/sheet.js.map} +0 -0
  453. /package/dist/components/{sonner.d.ts → overlay/sonner.d.ts} +0 -0
  454. /package/dist/components/{sonner.js.map → overlay/sonner.js.map} +0 -0
  455. /package/dist/components/{tooltip.d.ts → overlay/tooltip.d.ts} +0 -0
  456. /package/dist/components/{tooltip.js.map → overlay/tooltip.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/navigation/menubar.tsx"],"names":[],"mappings":"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","file":"chunk-T65EBJUJ.js","sourcesContent":["import * as React from \"react\";\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Horizontal menu bar component built on Radix UI Menubar.\n *\n * Provides a desktop-style menu bar with multiple dropdown menus.\n * Each menu is defined by a `MenubarMenu` containing a `MenubarTrigger`\n * and `MenubarContent` with items.\n *\n * @example\n * ```tsx\n * <Menubar>\n * <MenubarMenu>\n * <MenubarTrigger>File</MenubarTrigger>\n * <MenubarContent>\n * <MenubarItem>\n * New Tab\n * <MenubarShortcut>Ctrl+T</MenubarShortcut>\n * </MenubarItem>\n * <MenubarItem>New Window</MenubarItem>\n * <MenubarSeparator />\n * <MenubarSub>\n * <MenubarSubTrigger>Share</MenubarSubTrigger>\n * <MenubarSubContent>\n * <MenubarItem>Email Link</MenubarItem>\n * <MenubarItem>Messages</MenubarItem>\n * </MenubarSubContent>\n * </MenubarSub>\n * </MenubarContent>\n * </MenubarMenu>\n * <MenubarMenu>\n * <MenubarTrigger>Edit</MenubarTrigger>\n * <MenubarContent>\n * <MenubarItem>Undo</MenubarItem>\n * <MenubarItem>Redo</MenubarItem>\n * </MenubarContent>\n * </MenubarMenu>\n * </Menubar>\n * ```\n */\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root>) {\n return (\n <MenubarPrimitive.Root\n data-slot=\"menubar\"\n className={cn(\n \"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Wraps a single menu within the menu bar, containing a trigger and content. */\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu data-slot=\"menubar-menu\" {...props} />;\n}\n\n/** Groups related menubar items together for accessibility. */\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group data-slot=\"menubar-group\" {...props} />;\n}\n\n/** Portal that renders menubar content outside the DOM hierarchy. */\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal data-slot=\"menubar-portal\" {...props} />;\n}\n\n/** Container for radio menubar items where only one can be selected at a time. */\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return (\n <MenubarPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n );\n}\n\n/** Button label in the menu bar that opens its associated dropdown content on click. */\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {\n return (\n <MenubarPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Floating container for menubar items, positioned below the trigger. */\nfunction MenubarContent({\n className,\n align = \"start\",\n alignOffset = -4,\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content>) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n data-slot=\"menubar-content\"\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </MenubarPortal>\n );\n}\n\n/** Actionable menu item. Set `variant=\"destructive\"` for dangerous actions, `inset` for left-padding alignment. */\nfunction MenubarItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenubarPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Menu item with a checkbox indicator for toggling options. */\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {\n return (\n <MenubarPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\n/** Menu item with a radio indicator for single-selection groups. */\nfunction MenubarRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {\n return (\n <MenubarPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n );\n}\n\n/** Non-interactive label used to title a group of menu items. */\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.Label\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Visual divider between groups of menu items. */\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator>) {\n return (\n <MenubarPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\n/** Keyboard shortcut hint displayed at the end of a menu item. */\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Container for a nested sub-menu within the menubar. */\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />;\n}\n\n/** Menu item that opens a sub-menu on hover. Displays a chevron indicator. */\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\n/** Floating container for sub-menu items. */\nfunction MenubarSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {\n return (\n <MenubarPrimitive.SubContent\n data-slot=\"menubar-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n};"]}
@@ -1,6 +1,6 @@
1
- import { Input } from './chunk-3VU56V66.js';
2
- import { Popover, PopoverTrigger, PopoverContent } from './chunk-C34KSTWA.js';
3
- import { Button } from './chunk-55E7D2HR.js';
1
+ import { Input } from './chunk-HXMY2NQ3.js';
2
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-7NMNLY7F.js';
3
+ import { Button } from './chunk-BOV3Q2JH.js';
4
4
  import { cn } from './chunk-DGPY4WP3.js';
5
5
  import * as React from 'react';
6
6
  import { Check } from 'lucide-react';
@@ -139,5 +139,5 @@ function ColorPicker({
139
139
  }
140
140
 
141
141
  export { ColorPicker };
142
- //# sourceMappingURL=chunk-MJLFJPUG.js.map
143
- //# sourceMappingURL=chunk-MJLFJPUG.js.map
142
+ //# sourceMappingURL=chunk-TLQE77WF.js.map
143
+ //# sourceMappingURL=chunk-TLQE77WF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/inputs/color-picker.tsx"],"names":[],"mappings":"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","file":"chunk-TLQE77WF.js","sourcesContent":["import * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../overlay/popover\";\nimport { Input } from \"./input\";\n\nconst PRESET_COLORS = [\n \"#EF4444\", // Red\n \"#F97316\", // Orange\n \"#F59E0B\", // Amber\n \"#EAB308\", // Yellow\n \"#84CC16\", // Lime\n \"#22C55E\", // Green\n \"#10B981\", // Emerald\n \"#14B8A6\", // Teal\n \"#06B6D4\", // Cyan\n \"#0EA5E9\", // Sky\n \"#3B82F6\", // Blue\n \"#6366F1\", // Indigo\n \"#8B5CF6\", // Purple\n \"#A855F7\", // Violet\n \"#D946EF\", // Fuchsia\n \"#EC4899\", // Pink\n \"#F43F5E\", // Rose\n \"#64748B\", // Slate\n \"#6B7280\", // Gray\n \"#000000\", // Black\n];\n\ninterface ColorPickerProps {\n /** Currently selected color as a hex string (e.g., `\"#3B82F6\"`). */\n value?: string;\n /** Callback fired when a color is selected. Receives a hex string. */\n onChange?: (color: string) => void;\n /** Additional CSS class for the trigger button. */\n className?: string;\n /** Whether the color picker is disabled. */\n disabled?: boolean;\n /** Whether to show the preset color grid. Defaults to `true`. */\n showPresets?: boolean;\n /** Whether to show the custom hex input with native color picker. Defaults to `true`. */\n showInput?: boolean;\n}\n\n/**\n * Color picker with a popover containing preset color swatches and an optional custom hex input.\n * The trigger button shows the currently selected color swatch and its hex value.\n *\n * @example\n * ```tsx\n * const [color, setColor] = useState(\"#3B82F6\");\n *\n * <ColorPicker\n * value={color}\n * onChange={setColor}\n * showPresets\n * showInput\n * />\n * ```\n */\nexport function ColorPicker({\n value = \"#3B82F6\",\n onChange,\n className,\n disabled,\n showPresets = true,\n showInput = true,\n}: ColorPickerProps) {\n const [customColor, setCustomColor] = React.useState(value);\n\n const handleColorChange = (color: string) => {\n setCustomColor(color);\n onChange?.(color);\n };\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start gap-2\",\n className\n )}\n >\n <div\n className=\"h-4 w-4 rounded border border-border\"\n style={{ backgroundColor: value }}\n />\n <span className=\"flex-1 text-left\">{value}</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-3\" align=\"start\">\n <div className=\"space-y-3\">\n {showPresets && (\n <div>\n <div className=\"text-xs font-medium mb-2 text-foreground\">\n Màu mặc định\n </div>\n <div className=\"grid grid-cols-10 gap-1.5\">\n {PRESET_COLORS.map((color) => (\n <button\n key={color}\n type=\"button\"\n className={cn(\n \"h-6 w-6 rounded border-2 transition-all hover:scale-110\",\n value === color\n ? \"border-foreground ring-2 ring-foreground ring-offset-1\"\n : \"border-border\"\n )}\n style={{ backgroundColor: color }}\n onClick={() => handleColorChange(color)}\n >\n {value === color && (\n <Check className=\"w-3 h-3 text-white mx-auto drop-shadow\" />\n )}\n </button>\n ))}\n </div>\n </div>\n )}\n\n {showInput && (\n <div>\n <div className=\"text-xs font-medium mb-2 text-foreground\">\n Màu tùy chỉnh\n </div>\n <div className=\"flex gap-2\">\n <div className=\"relative flex-1\">\n <Input\n value={customColor}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setCustomColor(e.target.value)}\n onBlur={() => {\n // Validate hex color\n if (/^#[0-9A-F]{6}$/i.test(customColor)) {\n handleColorChange(customColor);\n } else {\n setCustomColor(value);\n }\n }}\n placeholder=\"#000000\"\n className=\"pr-10\"\n />\n <input\n type=\"color\"\n value={customColor}\n onChange={(e) => {\n setCustomColor(e.target.value);\n handleColorChange(e.target.value);\n }}\n className=\"absolute right-2 top-1/2 -translate-y-1/2 h-6 w-6 rounded border border-border cursor-pointer\"\n />\n </div>\n </div>\n </div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { toggleVariants } from './chunk-NU56GKGM.js';
1
+ import { toggleVariants } from './chunk-ORTPKXBI.js';
2
2
  import { cn } from './chunk-DGPY4WP3.js';
3
3
  import * as React from 'react';
4
4
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
@@ -59,5 +59,5 @@ function ToggleGroupItem({
59
59
  }
60
60
 
61
61
  export { ToggleGroup, ToggleGroupItem };
62
- //# sourceMappingURL=chunk-ZPMXRW2A.js.map
63
- //# sourceMappingURL=chunk-ZPMXRW2A.js.map
62
+ //# sourceMappingURL=chunk-TPBRGO4D.js.map
63
+ //# sourceMappingURL=chunk-TPBRGO4D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/display/toggle-group.tsx"],"names":[],"mappings":";;;;;;AAOA,IAAM,qBAA2B,KAAA,CAAA,aAAA,CAE/B;AAAA,EACA,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAC,CAAA;AAyBD,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,uBACE,GAAA;AAAA,IAAsB,oBAAA,CAAA,IAAA;AAAA,IAArB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACT,wFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAAC,mBAAmB,QAAA,EAAnB,EAA4B,OAAO,EAAE,OAAA,EAAS,IAAA,EAAK,EACjD,QAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAgBA,SAAS,eAAA,CAAgB;AAAA,EACvB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyB;AACvB,EAAA,MAAM,OAAA,GAAgB,iBAAW,kBAAkB,CAAA;AAEnD,EAAA,uBACE,GAAA;AAAA,IAAsB,oBAAA,CAAA,IAAA;AAAA,IAArB;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,cAAA,EAAc,QAAQ,OAAA,IAAW,OAAA;AAAA,MACjC,WAAA,EAAW,QAAQ,IAAA,IAAQ,IAAA;AAAA,MAC3B,SAAA,EAAW,EAAA;AAAA,QACT,cAAA,CAAe;AAAA,UACb,OAAA,EAAS,QAAQ,OAAA,IAAW,OAAA;AAAA,UAC5B,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,SACvB,CAAA;AAAA,QACD,6LAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ","file":"chunk-TPBRGO4D.js","sourcesContent":["import * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\nimport { toggleVariants } from \"./toggle\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n});\n\ntype ToggleGroupProps = React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>;\n\n/**\n * Group of toggle buttons where one or multiple items can be active.\n * Provides shared `variant` and `size` context to child {@link ToggleGroupItem} components.\n *\n * @example\n * ```tsx\n * // Single selection\n * <ToggleGroup type=\"single\" defaultValue=\"center\">\n * <ToggleGroupItem value=\"left\"><AlignLeftIcon /></ToggleGroupItem>\n * <ToggleGroupItem value=\"center\"><AlignCenterIcon /></ToggleGroupItem>\n * <ToggleGroupItem value=\"right\"><AlignRightIcon /></ToggleGroupItem>\n * </ToggleGroup>\n *\n * // Multiple selection with outline variant\n * <ToggleGroup type=\"multiple\" variant=\"outline\" size=\"sm\">\n * <ToggleGroupItem value=\"bold\"><BoldIcon /></ToggleGroupItem>\n * <ToggleGroupItem value=\"italic\"><ItalicIcon /></ToggleGroupItem>\n * </ToggleGroup>\n * ```\n */\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n ...props\n}: ToggleGroupProps) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n className,\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\ntype ToggleGroupItemProps = React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>;\n\n/**\n * Individual toggle item within a {@link ToggleGroup}.\n * Inherits `variant` and `size` from the parent group context unless overridden.\n *\n * @example\n * ```tsx\n * <ToggleGroupItem value=\"bold\" aria-label=\"Toggle bold\">\n * <BoldIcon className=\"size-4\" />\n * </ToggleGroupItem>\n * ```\n */\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: ToggleGroupItemProps) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l\",\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\nexport type { ToggleGroupProps, ToggleGroupItemProps };"]}
@@ -1,4 +1,4 @@
1
- import { inputVariants } from './chunk-3VU56V66.js';
1
+ import { inputVariants } from './chunk-HXMY2NQ3.js';
2
2
  import { cn } from './chunk-DGPY4WP3.js';
3
3
  import * as React from 'react';
4
4
  import { EyeOff, Eye } from 'lucide-react';
@@ -35,5 +35,5 @@ var PasswordInput = React.forwardRef(
35
35
  PasswordInput.displayName = "PasswordInput";
36
36
 
37
37
  export { PasswordInput };
38
- //# sourceMappingURL=chunk-WS6E7HBT.js.map
39
- //# sourceMappingURL=chunk-WS6E7HBT.js.map
38
+ //# sourceMappingURL=chunk-UTF42GJR.js.map
39
+ //# sourceMappingURL=chunk-UTF42GJR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/inputs/password-input.tsx"],"names":[],"mappings":";;;;;;AAiCA,IAAM,aAAA,GAAsB,KAAA,CAAA,UAAA;AAAA,EAC1B,CAAC,EAAE,SAAA,EAAW,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtC,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAU,eAAS,KAAK,CAAA;AAElD,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,UAAU,MAAA,GAAS,UAAA;AAAA,UACzB,GAAA;AAAA,UACA,WAAA,EAAU,OAAA;AAAA,UACV,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAE,IAAA,EAAM,SAAA,EAAW,EAAA,CAAG,+EAAA,EAAiF,SAAS,CAAA,EAAG,CAAC,CAAA;AAAA,UAC/I,GAAG;AAAA;AAAA,OACN;AAAA,sBACA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,QAAA,EAAU,EAAA;AAAA,UACV,SAAA,EAAU,mIAAA;AAAA,UACV,SAAS,MAAM,UAAA,CAAW,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,UACnC,YAAA,EAAY,UAAU,eAAA,GAAkB,eAAA;AAAA,UAEvC,QAAA,EAAA,OAAA,uBACE,MAAA,EAAA,EAAO,SAAA,EAAU,WAAU,CAAA,mBAE5B,GAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAE7B,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA","file":"chunk-UTF42GJR.js","sourcesContent":["import * as React from \"react\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputVariants } from \"./input\";\n\ninterface PasswordInputProps\n extends Omit<React.ComponentProps<\"input\">, \"type\" | \"size\">,\n VariantProps<typeof inputVariants> {}\n\n/**\n * Password input with a built-in show/hide toggle button.\n *\n * Extends native `<input>` (minus `type` which is managed internally).\n * Shares the same size variants as `Input`.\n *\n * @example\n * ```tsx\n * // Default size\n * <PasswordInput placeholder=\"Enter password\" />\n *\n * // Sizes: xs (24px) | sm (28px) | default (32px) | lg (36px) | xl (44px)\n * <PasswordInput size=\"xl\" placeholder=\"Password\" />\n *\n * // Controlled\n * <PasswordInput\n * value={password}\n * onChange={(e) => setPassword(e.target.value)}\n * placeholder=\"Password\"\n * />\n * ```\n */\nconst PasswordInput = React.forwardRef<HTMLInputElement, PasswordInputProps>(\n ({ className, size, ...props }, ref) => {\n const [visible, setVisible] = React.useState(false);\n\n return (\n <div className=\"relative\">\n <input\n type={visible ? \"text\" : \"password\"}\n ref={ref}\n data-slot=\"input\"\n className={cn(inputVariants({ size, className: cn(\"pr-10 [&::-ms-reveal]:hidden [&::-webkit-credentials-auto-fill-button]:hidden\", className) }))}\n {...props}\n />\n <button\n type=\"button\"\n tabIndex={-1}\n className=\"absolute right-0 top-0 flex h-full w-10 items-center justify-center text-muted-foreground hover:text-foreground transition-colors\"\n onClick={() => setVisible((v) => !v)}\n aria-label={visible ? \"Hide password\" : \"Show password\"}\n >\n {visible ? (\n <EyeOff className=\"h-4 w-4\" />\n ) : (\n <Eye className=\"h-4 w-4\" />\n )}\n </button>\n </div>\n );\n },\n);\nPasswordInput.displayName = \"PasswordInput\";\n\nexport { PasswordInput };\nexport type { PasswordInputProps };\n"]}
@@ -1,4 +1,4 @@
1
- import { Card, CardContent } from './chunk-Z2QAABLM.js';
1
+ import { Card, CardContent } from './chunk-DXKFFJIE.js';
2
2
  import { cn } from './chunk-DGPY4WP3.js';
3
3
  import { GitBranch, Bell, Eye, CheckCircle, Users, ArrowRight } from 'lucide-react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -61,5 +61,5 @@ function WorkflowDiagram({
61
61
  }
62
62
 
63
63
  export { WorkflowDiagram };
64
- //# sourceMappingURL=chunk-MZ2P566X.js.map
65
- //# sourceMappingURL=chunk-MZ2P566X.js.map
64
+ //# sourceMappingURL=chunk-VATNOBZ2.js.map
65
+ //# sourceMappingURL=chunk-VATNOBZ2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/domain/workflow/workflow-diagram.tsx"],"names":[],"mappings":"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","file":"chunk-VATNOBZ2.js","sourcesContent":["import { ArrowRight, CheckCircle, Eye, Bell, GitBranch, Users } from 'lucide-react';\nimport { cn } from '../../../lib/utils';\nimport { Card, CardContent } from '../../display/card';\n\n/**\n * Supported stage types for the workflow diagram. Each type has a dedicated\n * icon (CheckCircle, Eye, Bell, GitBranch) and color.\n */\nexport type WorkflowDiagramStageType = 'approval' | 'review' | 'notification' | 'conditional';\n\n/** A single stage in the workflow diagram. */\nexport interface WorkflowDiagramStage {\n /** Unique identifier for this stage. */\n id: string;\n /** Display name shown on the stage card. */\n name: string;\n /** Stage type that determines the icon and color. */\n type: WorkflowDiagramStageType;\n /** List of user IDs assigned as approvers. Count is displayed on the card. */\n approverIds: string[];\n /** Numeric order used to sort stages left-to-right. */\n order: number;\n}\n\n/** User-visible labels for the workflow diagram. All have English defaults. */\nexport interface WorkflowDiagramLabels {\n /** Label shown above stage name for each stage type */\n approval?: string;\n review?: string;\n notification?: string;\n conditional?: string;\n /** Text for the approver count (e.g. \"approvers\") */\n approvers?: string;\n}\n\nexport interface WorkflowDiagramProps {\n /** Ordered list of stages to display. Will be sorted by `order`. */\n stages: WorkflowDiagramStage[];\n /** The id of the currently active stage. Highlighted with a blue border. */\n currentStageId?: string;\n /** User-visible labels with English defaults. */\n labels?: WorkflowDiagramLabels;\n /** Optional additional className for the root container. */\n className?: string;\n}\n\nconst stageIcons: Record<WorkflowDiagramStageType, typeof CheckCircle> = {\n approval: CheckCircle,\n review: Eye,\n notification: Bell,\n conditional: GitBranch,\n};\n\nconst stageColors: Record<WorkflowDiagramStageType, string> = {\n approval: 'text-green-600 dark:text-green-400',\n review: 'text-blue-600 dark:text-blue-400',\n notification: 'text-amber-600 dark:text-amber-400',\n conditional: 'text-purple-600 dark:text-purple-400',\n};\n\nconst defaultLabels: Required<WorkflowDiagramLabels> = {\n approval: 'Approval',\n review: 'Review',\n notification: 'Notification',\n conditional: 'Conditional',\n approvers: 'approvers',\n};\n\n/**\n * WorkflowDiagram renders a horizontal flow of workflow stages as cards\n * connected by arrows.\n *\n * Each stage card displays an icon based on stage type, the stage name,\n * and an optional approver count. The current stage is highlighted with\n * a blue border.\n *\n * @example\n * ```tsx\n * <WorkflowDiagram\n * stages={[\n * { id: \"s1\", name: \"Manager Review\", type: \"review\", approverIds: [\"u1\"], order: 1 },\n * { id: \"s2\", name: \"Final Approval\", type: \"approval\", approverIds: [\"u2\", \"u3\"], order: 2 },\n * ]}\n * currentStageId=\"s1\"\n * labels={{ approvers: \"approvers\" }}\n * />\n * ```\n */\nexport function WorkflowDiagram({\n stages,\n currentStageId,\n labels,\n className,\n}: WorkflowDiagramProps) {\n const sortedStages = [...stages].sort((a, b) => a.order - b.order);\n\n const resolvedLabels = { ...defaultLabels, ...labels };\n\n const typeLabels: Record<WorkflowDiagramStageType, string> = {\n approval: resolvedLabels.approval,\n review: resolvedLabels.review,\n notification: resolvedLabels.notification,\n conditional: resolvedLabels.conditional,\n };\n\n return (\n <div className={cn('flex items-start gap-2 overflow-x-auto pb-2', className)}>\n {sortedStages.map((stage, index) => {\n const Icon = stageIcons[stage.type];\n const isCurrent = stage.id === currentStageId;\n\n return (\n <div key={stage.id} className=\"flex items-center gap-2 flex-shrink-0\">\n <Card className={cn('w-48', isCurrent && 'border-primary border-2')}>\n <CardContent className=\"px-3 py-3\">\n <div className=\"flex items-center gap-2 mb-1\">\n <Icon className={cn('w-4 h-4', stageColors[stage.type])} />\n <span className=\"text-xs font-medium text-muted-foreground\">\n {typeLabels[stage.type]}\n </span>\n </div>\n <p className=\"text-sm font-medium truncate\">{stage.name}</p>\n {stage.approverIds.length > 0 && (\n <div className=\"flex items-center gap-1 mt-1.5 text-xs text-muted-foreground\">\n <Users className=\"w-3 h-3\" />\n <span>\n {stage.approverIds.length} {resolvedLabels.approvers.toLowerCase()}\n </span>\n </div>\n )}\n </CardContent>\n </Card>\n {index < sortedStages.length - 1 && (\n <ArrowRight className=\"w-4 h-4 text-muted-foreground flex-shrink-0\" />\n )}\n </div>\n );\n })}\n </div>\n );\n}\n"]}
@@ -117,5 +117,5 @@ function SheetDescription({
117
117
  }
118
118
 
119
119
  export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger };
120
- //# sourceMappingURL=chunk-JLTBUACL.js.map
121
- //# sourceMappingURL=chunk-JLTBUACL.js.map
120
+ //# sourceMappingURL=chunk-VOLR236J.js.map
121
+ //# sourceMappingURL=chunk-VOLR236J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/overlay/sheet.tsx"],"names":[],"mappings":"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","file":"chunk-VOLR236J.js","sourcesContent":["import * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Slide-out panel component built on Radix UI Dialog.\n *\n * A sheet slides in from the edge of the screen, ideal for navigation,\n * filters, or supplementary content. Supports `top`, `right`, `bottom`,\n * and `left` sides via the `side` prop on `SheetContent`.\n *\n * @example\n * ```tsx\n * <Sheet open={open} onOpenChange={setOpen}>\n * <SheetTrigger asChild>\n * <Button variant=\"outline\">Open Sheet</Button>\n * </SheetTrigger>\n * <SheetContent side=\"right\">\n * <SheetHeader>\n * <SheetTitle>Settings</SheetTitle>\n * <SheetDescription>\n * Adjust your preferences below.\n * </SheetDescription>\n * </SheetHeader>\n * <div className=\"p-4\">Content here</div>\n * <SheetFooter>\n * <Button onClick={() => setOpen(false)}>Done</Button>\n * </SheetFooter>\n * </SheetContent>\n * </Sheet>\n * ```\n */\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\n/** Element that opens the sheet when clicked. Use `asChild` to merge into your own button. */\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\n/** Button that closes the sheet. Use `asChild` to merge into your own button. */\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\n/** Portal that renders sheet content outside the DOM hierarchy. */\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\n/** Semi-transparent backdrop rendered behind the sheet panel. */\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Sliding content panel. Set `side` to control which edge it slides from (default: `\"right\"`). */\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\n/** Container for SheetTitle and SheetDescription at the top of the sheet. */\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-[var(--density-sheet)]\", className)}\n {...props}\n />\n );\n}\n\n/** Container for action buttons at the bottom of the sheet. Pushed to the bottom via `mt-auto`. */\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-[var(--density-sheet)]\", className)}\n {...props}\n />\n );\n}\n\n/** Accessible title rendered inside SheetHeader. */\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\n/** Accessible description rendered inside SheetHeader below the title. */\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};"]}
@@ -29,5 +29,5 @@ var Checkbox = React.forwardRef(({ className, ...props }, ref) => {
29
29
  Checkbox.displayName = CheckboxPrimitive.Root.displayName;
30
30
 
31
31
  export { Checkbox };
32
- //# sourceMappingURL=chunk-WL4ZO2H3.js.map
33
- //# sourceMappingURL=chunk-WL4ZO2H3.js.map
32
+ //# sourceMappingURL=chunk-W477ZR6B.js.map
33
+ //# sourceMappingURL=chunk-W477ZR6B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/inputs/checkbox.tsx"],"names":[],"mappings":";;;;;;AAyBA,IAAM,QAAA,GAAiB,iBAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACE,GAAA;AAAA,IAAmB,iBAAA,CAAA,IAAA;AAAA,IAAlB;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2fAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAmB,iBAAA,CAAA,SAAA;AAAA,QAAlB;AAAA,UACC,WAAA,EAAU,oBAAA;AAAA,UACV,SAAA,EAAU,+DAAA;AAAA,UAEV,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,UAAA,EAAW;AAAA;AAAA;AAClC;AAAA,GACF;AAEJ,CAAC;AACD,QAAA,CAAS,cAAgC,iBAAA,CAAA,IAAA,CAAK,WAAA","file":"chunk-W477ZR6B.js","sourcesContent":["import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\n\n/**\n * Checkable input that allows selecting one or more options from a set.\n * Supports checked, unchecked, and indeterminate states.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Checkbox id=\"terms\" />\n * <Label htmlFor=\"terms\">Accept terms</Label>\n *\n * // Controlled\n * <Checkbox checked={accepted} onCheckedChange={setAccepted} />\n *\n * // Indeterminate (partial selection)\n * <Checkbox checked=\"indeterminate\" />\n * ```\n */\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, ...props }, ref) => {\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n data-slot=\"checkbox\"\n className={cn(\n \"peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\nexport type { CheckboxProps };\n"]}
@@ -1,7 +1,7 @@
1
1
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
 
4
- // src/components/collapsible.tsx
4
+ // src/components/display/collapsible.tsx
5
5
  function Collapsible({
6
6
  ...props
7
7
  }) {
@@ -31,5 +31,5 @@ function CollapsibleContent2({
31
31
  }
32
32
 
33
33
  export { Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger };
34
- //# sourceMappingURL=chunk-3EOHW4QN.js.map
35
- //# sourceMappingURL=chunk-3EOHW4QN.js.map
34
+ //# sourceMappingURL=chunk-WJX6NKKF.js.map
35
+ //# sourceMappingURL=chunk-WJX6NKKF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/display/collapsible.tsx"],"names":["CollapsibleTrigger","CollapsibleContent"],"mappings":";;;;AAoBA,SAAS,WAAA,CAAY;AAAA,EACnB,GAAG;AACL,CAAA,EAA2D;AACzD,EAAA,2BAA6B,oBAAA,CAAA,IAAA,EAArB,EAA0B,WAAA,EAAU,aAAA,EAAe,GAAG,KAAA,EAAO,CAAA;AACvE;AAGA,SAASA,mBAAAA,CAAmB;AAAA,EAC1B,GAAG;AACL,CAAA,EAAyE;AACvE,EAAA,uBACE,GAAA;AAAA,IAAsB,oBAAA,CAAA,kBAAA;AAAA,IAArB;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAASC,mBAAAA,CAAmB;AAAA,EAC1B,GAAG;AACL,CAAA,EAAyE;AACvE,EAAA,uBACE,GAAA;AAAA,IAAsB,oBAAA,CAAA,kBAAA;AAAA,IAArB;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-WJX6NKKF.js","sourcesContent":["import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\n/**\n * Expandable/collapsible container built on Radix Collapsible.\n *\n * Manages open/closed state for a single content region. For multiple\n * collapsible sections, consider using `Accordion` instead.\n *\n * @example\n * ```tsx\n * <Collapsible>\n * <CollapsibleTrigger asChild>\n * <Button variant=\"ghost\">Toggle details</Button>\n * </CollapsibleTrigger>\n * <CollapsibleContent>\n * <p>Hidden content revealed on toggle.</p>\n * </CollapsibleContent>\n * </Collapsible>\n * ```\n */\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\n/** Button or element that toggles the collapsible open/closed state. Supports `asChild` for custom trigger elements. */\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n );\n}\n\n/** Content region that shows/hides when the collapsible is toggled. */\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n {...props}\n />\n );\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n"]}
@@ -1,4 +1,4 @@
1
- import { buttonVariants } from './chunk-55E7D2HR.js';
1
+ import { buttonVariants } from './chunk-BOV3Q2JH.js';
2
2
  import { cn } from './chunk-DGPY4WP3.js';
3
3
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -134,5 +134,5 @@ function AlertDialogCancel({
134
134
  }
135
135
 
136
136
  export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
137
- //# sourceMappingURL=chunk-LTTNCAAA.js.map
138
- //# sourceMappingURL=chunk-LTTNCAAA.js.map
137
+ //# sourceMappingURL=chunk-XNUFKQYL.js.map
138
+ //# sourceMappingURL=chunk-XNUFKQYL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/overlay/alert-dialog.tsx"],"names":[],"mappings":"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","file":"chunk-XNUFKQYL.js","sourcesContent":["import * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"../../lib/utils\";\nimport { buttonVariants } from \"../inputs/button\";\n\n/**\n * Confirmation dialog built on Radix UI AlertDialog.\n *\n * Unlike `Dialog`, an alert dialog requires an explicit user action to dismiss\n * (no click-outside or Escape by default). Use it for destructive actions or\n * important confirmations.\n *\n * @example\n * ```tsx\n * <AlertDialog open={open} onOpenChange={setOpen}>\n * <AlertDialogTrigger asChild>\n * <Button variant=\"destructive\">Delete Item</Button>\n * </AlertDialogTrigger>\n * <AlertDialogContent>\n * <AlertDialogHeader>\n * <AlertDialogTitle>Are you sure?</AlertDialogTitle>\n * <AlertDialogDescription>\n * This action cannot be undone. This will permanently delete\n * your item and remove it from our servers.\n * </AlertDialogDescription>\n * </AlertDialogHeader>\n * <AlertDialogFooter>\n * <AlertDialogCancel>Cancel</AlertDialogCancel>\n * <AlertDialogAction>Delete</AlertDialogAction>\n * </AlertDialogFooter>\n * </AlertDialogContent>\n * </AlertDialog>\n * ```\n */\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\n/** Element that opens the alert dialog when clicked. Use `asChild` to merge into your own button. */\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\n/** Portal that renders alert dialog content outside the DOM hierarchy. */\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\n/** Semi-transparent backdrop rendered behind the alert dialog content. */\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Alert dialog content panel with overlay backdrop. */\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\n/** Container for AlertDialogTitle and AlertDialogDescription. */\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\n/** Container for AlertDialogAction and AlertDialogCancel buttons. */\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible title for the alert dialog. */\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n );\n}\n\n/** Accessible description explaining the consequences of the action. */\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\n/** Primary action button that confirms and closes the alert dialog. */\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n );\n}\n\n/** Cancel button that dismisses the alert dialog without taking action. Styled as outline variant. */\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};"]}
@@ -1,4 +1,4 @@
1
- import { Badge } from './chunk-A3BB5ZOC.js';
1
+ import { Badge } from './chunk-5SAUUOCN.js';
2
2
  import { cn } from './chunk-DGPY4WP3.js';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -21,5 +21,5 @@ function WorkflowStatusBadge({ status, label, className }) {
21
21
  }
22
22
 
23
23
  export { WorkflowStatusBadge };
24
- //# sourceMappingURL=chunk-ZYEGBF7G.js.map
25
- //# sourceMappingURL=chunk-ZYEGBF7G.js.map
24
+ //# sourceMappingURL=chunk-YU23NDE4.js.map
25
+ //# sourceMappingURL=chunk-YU23NDE4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/domain/workflow/workflow-status-badge.tsx"],"names":[],"mappings":";;;;AAoBA,IAAM,YAAA,GAA+C;AAAA,EACnD,OAAA,EACE,yGAAA;AAAA,EACF,aAAA,EACE,+GAAA;AAAA,EACF,QAAA,EACE,+GAAA;AAAA,EACF,QAAA,EACE,mGAAA;AAAA,EACF,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,aAAA,GAAgD;AAAA,EACpD,OAAA,EAAS,SAAA;AAAA,EACT,aAAA,EAAe,aAAA;AAAA,EACf,QAAA,EAAU,UAAA;AAAA,EACV,QAAA,EAAU,UAAA;AAAA,EACV,SAAA,EAAW;AACb,CAAA;AAiBO,SAAS,mBAAA,CAAoB,EAAE,MAAA,EAAQ,KAAA,EAAO,WAAU,EAA6B;AAC1F,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,SAAA,EAAU,WAAW,EAAA,CAAG,YAAA,CAAa,MAAM,CAAA,EAAG,SAAS,CAAA,EACnE,QAAA,EAAA,KAAA,IAAS,aAAA,CAAc,MAAM,CAAA,EAChC,CAAA;AAEJ","file":"chunk-YU23NDE4.js","sourcesContent":["import { cn } from '../../../lib/utils';\nimport { Badge } from '../../display/badge';\n\n/** Common workflow instance statuses with built-in styling. */\nexport type WorkflowStatus =\n | 'pending'\n | 'in-progress'\n | 'approved'\n | 'rejected'\n | 'cancelled';\n\nexport interface WorkflowStatusBadgeProps {\n /** The status key. Must be one of the predefined statuses. */\n status: WorkflowStatus;\n /** The displayed label text. Defaults to a capitalized version of the status. */\n label?: string;\n /** Optional additional className. */\n className?: string;\n}\n\nconst statusStyles: Record<WorkflowStatus, string> = {\n pending:\n 'bg-blue-50 dark:bg-blue-500/15 text-blue-600 dark:text-blue-400 border-blue-200 dark:border-blue-500/30',\n 'in-progress':\n 'bg-amber-50 dark:bg-amber-500/15 text-amber-600 dark:text-amber-400 border-amber-200 dark:border-amber-500/30',\n approved:\n 'bg-green-50 dark:bg-green-500/15 text-green-600 dark:text-green-400 border-green-200 dark:border-green-500/30',\n rejected:\n 'bg-red-50 dark:bg-red-500/15 text-red-600 dark:text-red-400 border-red-200 dark:border-red-500/30',\n cancelled: 'bg-muted text-muted-foreground',\n};\n\nconst defaultLabels: Record<WorkflowStatus, string> = {\n pending: 'Pending',\n 'in-progress': 'In Progress',\n approved: 'Approved',\n rejected: 'Rejected',\n cancelled: 'Cancelled',\n};\n\n/**\n * WorkflowStatusBadge renders a color-coded badge for a workflow instance status.\n *\n * - pending: blue\n * - in-progress: amber\n * - approved: green\n * - rejected: red\n * - cancelled: muted\n *\n * @example\n * ```tsx\n * <WorkflowStatusBadge status=\"approved\" />\n * <WorkflowStatusBadge status=\"in-progress\" label=\"In Review\" />\n * ```\n */\nexport function WorkflowStatusBadge({ status, label, className }: WorkflowStatusBadgeProps) {\n return (\n <Badge variant=\"outline\" className={cn(statusStyles[status], className)}>\n {label ?? defaultLabels[status]}\n </Badge>\n );\n}\n"]}
@@ -0,0 +1,144 @@
1
+ import { cn } from './chunk-DGPY4WP3.js';
2
+ import { useState, useRef, useEffect } from 'react';
3
+ import { ChevronDown, CornerDownLeft } from 'lucide-react';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var MAX_INLINE_TABS = 3;
7
+ function TranslatableField({
8
+ config,
9
+ value,
10
+ onChange,
11
+ children,
12
+ className,
13
+ errors
14
+ }) {
15
+ const [activeLocale, setActiveLocale] = useState(config.defaultLocale);
16
+ const [dropdownOpen, setDropdownOpen] = useState(false);
17
+ const dropdownRef = useRef(null);
18
+ useEffect(() => {
19
+ if (!dropdownOpen) return;
20
+ const handler = (e) => {
21
+ if (dropdownRef.current && !dropdownRef.current.contains(e.target)) {
22
+ setDropdownOpen(false);
23
+ }
24
+ };
25
+ document.addEventListener("mousedown", handler);
26
+ return () => document.removeEventListener("mousedown", handler);
27
+ }, [dropdownOpen]);
28
+ const isFallback = activeLocale !== config.fallbackLocale;
29
+ const fallbackPlaceholder = isFallback ? value[config.fallbackLocale] ?? void 0 : void 0;
30
+ const hasError = !!errors?.[activeLocale];
31
+ const handleChange = (v) => {
32
+ onChange({ ...value, [activeLocale]: v });
33
+ };
34
+ const localeEntries = Object.entries(config.locales);
35
+ let visibleEntries;
36
+ let overflowEntries;
37
+ if (localeEntries.length <= MAX_INLINE_TABS) {
38
+ visibleEntries = localeEntries;
39
+ overflowEntries = [];
40
+ } else {
41
+ const nonActive = localeEntries.filter(([code]) => code !== activeLocale);
42
+ const visibleNonActive = nonActive.slice(0, MAX_INLINE_TABS - 1);
43
+ const visibleCodes = /* @__PURE__ */ new Set([...visibleNonActive.map(([c]) => c), activeLocale]);
44
+ visibleEntries = localeEntries.filter(([code]) => visibleCodes.has(code));
45
+ overflowEntries = localeEntries.filter(([code]) => !visibleCodes.has(code));
46
+ }
47
+ const activeInOverflow = overflowEntries.some(([code]) => code === activeLocale);
48
+ const overflowHasValue = overflowEntries.some(([code]) => !!(value[code] ?? ""));
49
+ const overflowHasError = overflowEntries.some(([code]) => !!errors?.[code]);
50
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-1", className), children: [
51
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5", children: [
52
+ visibleEntries.map(([code, label]) => {
53
+ const isActive = code === activeLocale;
54
+ const hasValue = !!(value[code] ?? "");
55
+ const hasLocaleError = !!errors?.[code];
56
+ return /* @__PURE__ */ jsxs(
57
+ "button",
58
+ {
59
+ type: "button",
60
+ title: label,
61
+ onClick: () => setActiveLocale(code),
62
+ className: cn(
63
+ "relative px-2 py-0.5 rounded text-xs font-medium transition-colors select-none",
64
+ isActive ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground hover:bg-muted"
65
+ ),
66
+ children: [
67
+ code.toUpperCase(),
68
+ (hasValue || hasLocaleError) && !isActive && /* @__PURE__ */ jsx("span", { className: cn(
69
+ "absolute -top-0.5 -right-0.5 w-1.5 h-1.5 rounded-full",
70
+ hasLocaleError ? "bg-destructive" : "bg-primary"
71
+ ) })
72
+ ]
73
+ },
74
+ code
75
+ );
76
+ }),
77
+ overflowEntries.length > 0 && /* @__PURE__ */ jsxs("div", { ref: dropdownRef, className: "relative", children: [
78
+ /* @__PURE__ */ jsxs(
79
+ "button",
80
+ {
81
+ type: "button",
82
+ title: "More languages",
83
+ onClick: () => setDropdownOpen((o) => !o),
84
+ className: cn(
85
+ "relative flex items-center gap-0.5 px-1.5 py-0.5 rounded text-xs font-medium transition-colors select-none",
86
+ activeInOverflow ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground hover:bg-muted"
87
+ ),
88
+ children: [
89
+ activeInOverflow ? activeLocale.toUpperCase() : `+${overflowEntries.length}`,
90
+ /* @__PURE__ */ jsx(ChevronDown, { className: cn("w-3 h-3 transition-transform", dropdownOpen && "rotate-180") }),
91
+ (overflowHasValue || overflowHasError) && !activeInOverflow && /* @__PURE__ */ jsx("span", { className: cn(
92
+ "absolute -top-0.5 -right-0.5 w-1.5 h-1.5 rounded-full",
93
+ overflowHasError ? "bg-destructive" : "bg-primary"
94
+ ) })
95
+ ]
96
+ }
97
+ ),
98
+ dropdownOpen && /* @__PURE__ */ jsx("div", { className: "absolute top-full left-0 mt-1 z-10 min-w-[140px] rounded-md border border-border bg-popover shadow-md py-1", children: overflowEntries.map(([code, label]) => {
99
+ const isActive = code === activeLocale;
100
+ const hasValue = !!(value[code] ?? "");
101
+ const hasLocaleError = !!errors?.[code];
102
+ return /* @__PURE__ */ jsxs(
103
+ "button",
104
+ {
105
+ type: "button",
106
+ onClick: () => {
107
+ setActiveLocale(code);
108
+ setDropdownOpen(false);
109
+ },
110
+ className: cn(
111
+ "w-full flex items-center gap-2 px-3 py-1.5 text-sm transition-colors",
112
+ isActive ? "bg-primary/10 text-primary font-medium" : "hover:bg-accent text-foreground"
113
+ ),
114
+ children: [
115
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold w-6 shrink-0", children: code.toUpperCase() }),
116
+ /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground flex-1 text-left", children: label }),
117
+ (hasValue || hasLocaleError) && /* @__PURE__ */ jsx("span", { className: cn(
118
+ "w-1.5 h-1.5 rounded-full shrink-0",
119
+ hasLocaleError ? "bg-destructive" : "bg-primary"
120
+ ) })
121
+ ]
122
+ },
123
+ code
124
+ );
125
+ }) })
126
+ ] }),
127
+ fallbackPlaceholder && !value[activeLocale] && /* @__PURE__ */ jsxs("span", { "data-testid": "fallback-hint", className: "ml-1 flex items-center gap-0.5 text-xs text-muted-foreground", children: [
128
+ /* @__PURE__ */ jsx(CornerDownLeft, { className: "w-3 h-3" }),
129
+ config.fallbackLocale.toUpperCase()
130
+ ] })
131
+ ] }),
132
+ children({
133
+ locale: activeLocale,
134
+ value: value[activeLocale] ?? "",
135
+ onChange: handleChange,
136
+ fallbackPlaceholder,
137
+ hasError
138
+ })
139
+ ] });
140
+ }
141
+
142
+ export { TranslatableField };
143
+ //# sourceMappingURL=chunk-YU55YBID.js.map
144
+ //# sourceMappingURL=chunk-YU55YBID.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/inputs/translatable-field.tsx"],"names":[],"mappings":"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","file":"chunk-YU55YBID.js","sourcesContent":["import { useState, useRef, useEffect, ReactNode } from 'react';\nimport { CornerDownLeft, ChevronDown } from 'lucide-react';\nimport { cn } from '../../lib/utils';\nimport type { UILocaleConfig, LocaleCode, TranslatableValue } from '../../providers/ui-provider';\n\nexport type { TranslatableValue };\n\n// ─── Config ───────────────────────────────────────────────────────────────────\n\n/** Max locale tabs shown inline; overflow goes into a dropdown. */\nconst MAX_INLINE_TABS = 3;\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface TranslatableRenderProps {\n /** Active locale code, e.g. `'en'` */\n locale: LocaleCode;\n /** String value for the active locale */\n value: string;\n /** Call with the new string to update the active locale's value */\n onChange: (value: string) => void;\n /** Fallback value shown as placeholder when the active locale is empty */\n fallbackPlaceholder: string | undefined;\n /** True when the active locale has a truthy entry in `errors` */\n hasError: boolean;\n}\n\ninterface TranslatableFieldProps {\n config: UILocaleConfig;\n value: TranslatableValue;\n onChange: (value: TranslatableValue) => void;\n /** Render the actual input. Receives locale-scoped value/onChange. */\n children: (props: TranslatableRenderProps) => ReactNode;\n className?: string;\n /**\n * Per-locale validation errors. A truthy string for a locale code marks that\n * locale as invalid: its tab dot turns red and `hasError` is `true` in the\n * render props when that locale is active.\n *\n * @example `{ en: '', vi: 'Too long' }` — only VI has an error\n */\n errors?: Partial<Record<string, string>>;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * Wraps any text input with a locale switcher tab bar.\n * Used internally by `Input` and `Textarea` when `translatable` prop is set.\n *\n * When more than 3 locales are configured, overflow locales are collapsed into\n * a dropdown button to prevent the tab bar from overflowing.\n *\n * @example\n * ```tsx\n * <TranslatableField config={localeConfig} value={val} onChange={setVal} errors={{ vi: 'Too long' }}>\n * {({ value, onChange, fallbackPlaceholder, hasError }) => (\n * <input aria-invalid={hasError || undefined} value={value} onChange={(e) => onChange(e.target.value)} />\n * )}\n * </TranslatableField>\n * ```\n */\nexport function TranslatableField({\n config,\n value,\n onChange,\n children,\n className,\n errors,\n}: TranslatableFieldProps) {\n const [activeLocale, setActiveLocale] = useState<LocaleCode>(config.defaultLocale);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // Close dropdown on outside click\n useEffect(() => {\n if (!dropdownOpen) return;\n const handler = (e: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\n setDropdownOpen(false);\n }\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [dropdownOpen]);\n\n const isFallback = activeLocale !== config.fallbackLocale;\n const fallbackPlaceholder = isFallback ? (value[config.fallbackLocale] ?? undefined) : undefined;\n const hasError = !!(errors?.[activeLocale]);\n\n const handleChange = (v: string) => {\n onChange({ ...value, [activeLocale]: v });\n };\n\n // ── Build visible + overflow locale lists ──────────────────────────────────\n const localeEntries = Object.entries(config.locales) as [LocaleCode, string][];\n let visibleEntries: [LocaleCode, string][];\n let overflowEntries: [LocaleCode, string][];\n\n if (localeEntries.length <= MAX_INLINE_TABS) {\n visibleEntries = localeEntries;\n overflowEntries = [];\n } else {\n // Always keep active locale visible; fill remaining slots from the front\n const nonActive = localeEntries.filter(([code]) => code !== activeLocale);\n const visibleNonActive = nonActive.slice(0, MAX_INLINE_TABS - 1);\n const visibleCodes = new Set([...visibleNonActive.map(([c]) => c), activeLocale]);\n // Preserve original order\n visibleEntries = localeEntries.filter(([code]) => visibleCodes.has(code));\n overflowEntries = localeEntries.filter(([code]) => !visibleCodes.has(code));\n }\n\n const activeInOverflow = overflowEntries.some(([code]) => code === activeLocale);\n const overflowHasValue = overflowEntries.some(([code]) => !!(value[code] ?? ''));\n const overflowHasError = overflowEntries.some(([code]) => !!(errors?.[code]));\n\n return (\n <div className={cn('flex flex-col gap-1', className)}>\n {/* Locale tab bar */}\n <div className=\"flex items-center gap-0.5\">\n\n {/* Inline locale tabs */}\n {visibleEntries.map(([code, label]) => {\n const isActive = code === activeLocale;\n const hasValue = !!(value[code] ?? '');\n const hasLocaleError = !!(errors?.[code]);\n\n return (\n <button\n key={code}\n type=\"button\"\n title={label}\n onClick={() => setActiveLocale(code)}\n className={cn(\n 'relative px-2 py-0.5 rounded text-xs font-medium transition-colors select-none',\n isActive\n ? 'bg-primary text-primary-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted',\n )}\n >\n {code.toUpperCase()}\n {/* dot — locale has a value or an error, but is not active */}\n {(hasValue || hasLocaleError) && !isActive && (\n <span className={cn(\n 'absolute -top-0.5 -right-0.5 w-1.5 h-1.5 rounded-full',\n hasLocaleError ? 'bg-destructive' : 'bg-primary',\n )} />\n )}\n </button>\n );\n })}\n\n {/* Overflow dropdown */}\n {overflowEntries.length > 0 && (\n <div ref={dropdownRef} className=\"relative\">\n <button\n type=\"button\"\n title=\"More languages\"\n onClick={() => setDropdownOpen((o) => !o)}\n className={cn(\n 'relative flex items-center gap-0.5 px-1.5 py-0.5 rounded text-xs font-medium transition-colors select-none',\n activeInOverflow\n ? 'bg-primary text-primary-foreground'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted',\n )}\n >\n {activeInOverflow\n ? activeLocale.toUpperCase()\n : `+${overflowEntries.length}`}\n <ChevronDown className={cn('w-3 h-3 transition-transform', dropdownOpen && 'rotate-180')} />\n {/* dot when overflow has values/errors but active is not in overflow */}\n {(overflowHasValue || overflowHasError) && !activeInOverflow && (\n <span className={cn(\n 'absolute -top-0.5 -right-0.5 w-1.5 h-1.5 rounded-full',\n overflowHasError ? 'bg-destructive' : 'bg-primary',\n )} />\n )}\n </button>\n\n {dropdownOpen && (\n <div className=\"absolute top-full left-0 mt-1 z-10 min-w-[140px] rounded-md border border-border bg-popover shadow-md py-1\">\n {overflowEntries.map(([code, label]) => {\n const isActive = code === activeLocale;\n const hasValue = !!(value[code] ?? '');\n const hasLocaleError = !!(errors?.[code]);\n return (\n <button\n key={code}\n type=\"button\"\n onClick={() => { setActiveLocale(code); setDropdownOpen(false); }}\n className={cn(\n 'w-full flex items-center gap-2 px-3 py-1.5 text-sm transition-colors',\n isActive\n ? 'bg-primary/10 text-primary font-medium'\n : 'hover:bg-accent text-foreground',\n )}\n >\n <span className=\"text-xs font-semibold w-6 shrink-0\">{code.toUpperCase()}</span>\n <span className=\"text-xs text-muted-foreground flex-1 text-left\">{label}</span>\n {(hasValue || hasLocaleError) && (\n <span className={cn(\n 'w-1.5 h-1.5 rounded-full shrink-0',\n hasLocaleError ? 'bg-destructive' : 'bg-primary',\n )} />\n )}\n </button>\n );\n })}\n </div>\n )}\n </div>\n )}\n\n {/* Fallback hint when active locale is empty */}\n {fallbackPlaceholder && !value[activeLocale] && (\n <span data-testid=\"fallback-hint\" className=\"ml-1 flex items-center gap-0.5 text-xs text-muted-foreground\">\n <CornerDownLeft className=\"w-3 h-3\" />\n {config.fallbackLocale.toUpperCase()}\n </span>\n )}\n </div>\n\n {children({\n locale: activeLocale,\n value: value[activeLocale] ?? '',\n onChange: handleChange,\n fallbackPlaceholder,\n hasError,\n })}\n </div>\n );\n}\n"]}
@@ -115,5 +115,5 @@ function DialogDescription({
115
115
  }
116
116
 
117
117
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
118
- //# sourceMappingURL=chunk-F2ZJLKDP.js.map
119
- //# sourceMappingURL=chunk-F2ZJLKDP.js.map
118
+ //# sourceMappingURL=chunk-YVCLIOMM.js.map
119
+ //# sourceMappingURL=chunk-YVCLIOMM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/overlay/dialog.tsx"],"names":[],"mappings":"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","file":"chunk-YVCLIOMM.js","sourcesContent":["import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Modal dialog component built on Radix UI Dialog.\n *\n * Renders a centered overlay panel that interrupts the user with important content\n * and expects a response. Supports controlled (`open`/`onOpenChange`) and\n * uncontrolled usage (via `DialogTrigger`).\n *\n * @example\n * ```tsx\n * <Dialog open={open} onOpenChange={setOpen}>\n * <DialogTrigger asChild>\n * <Button>Open Dialog</Button>\n * </DialogTrigger>\n * <DialogContent>\n * <DialogHeader>\n * <DialogTitle>Edit Profile</DialogTitle>\n * <DialogDescription>\n * Make changes to your profile here.\n * </DialogDescription>\n * </DialogHeader>\n * <div className=\"space-y-4\">\n * <Input placeholder=\"Name\" />\n * </div>\n * <DialogFooter>\n * <Button variant=\"outline\" onClick={() => setOpen(false)}>\n * Cancel\n * </Button>\n * <Button>Save Changes</Button>\n * </DialogFooter>\n * </DialogContent>\n * </Dialog>\n * ```\n */\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\n/** Element that opens the dialog when clicked. Use `asChild` to merge into your own button. */\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\n/** Portal that renders dialog content outside the DOM hierarchy. */\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\n/** Button that closes the dialog. Use `asChild` to merge into your own button. */\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\n/** Semi-transparent backdrop rendered behind the dialog content. */\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <DialogPrimitive.Overlay\n ref={ref}\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n});\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\n/** Dialog content panel with overlay backdrop and a built-in close button. */\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-dialog shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\">\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n});\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\n/** Container for DialogTitle and DialogDescription at the top of the dialog. */\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\n/** Container for action buttons at the bottom of the dialog. */\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible title rendered inside DialogHeader. */\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\n/** Accessible description rendered inside DialogHeader below the title. */\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};"]}
@@ -95,5 +95,5 @@ function BreadcrumbEllipsis({
95
95
  }
96
96
 
97
97
  export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
98
- //# sourceMappingURL=chunk-7RMTPT6O.js.map
99
- //# sourceMappingURL=chunk-7RMTPT6O.js.map
98
+ //# sourceMappingURL=chunk-YYJVVYFS.js.map
99
+ //# sourceMappingURL=chunk-YYJVVYFS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/navigation/breadcrumb.tsx"],"names":[],"mappings":";;;;;AAgCA,SAAS,UAAA,CAAW,EAAE,GAAG,KAAA,EAAM,EAAgC;AAC7D,EAAA,2BAAQ,KAAA,EAAA,EAAI,YAAA,EAAW,cAAa,WAAA,EAAU,YAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AACxE;AAGA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,0FAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,kCAAA,EAAoC,SAAS,CAAA;AAAA,MAC1D,GAAG;AAAA;AAAA,GACN;AAEJ;AAOA,SAAS,cAAA,CAAe;AAAA,EACtB,OAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,GAAA;AAE9B,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,MACjE,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAAiC;AAC7E,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,IAAA,EAAK,MAAA;AAAA,MACL,eAAA,EAAc,MAAA;AAAA,MACd,cAAA,EAAa,MAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,MACrD,GAAG;AAAA;AAAA,GACN;AAEJ;AAGA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA+B;AAC7B,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,sBAAA;AAAA,MACV,IAAA,EAAK,cAAA;AAAA,MACL,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,SAAS,CAAA;AAAA,MAC1C,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,QAAA,wBAAa,YAAA,EAAA,EAAa;AAAA;AAAA,GAC7B;AAEJ;AAGA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiC;AAC/B,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,IAAA,EAAK,cAAA;AAAA,MACL,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,MACjE,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,WAAU,QAAA,EAAS,CAAA;AAAA,wBACnC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAAA,GAChC;AAEJ","file":"chunk-YYJVVYFS.js","sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Navigation breadcrumb trail showing the current page hierarchy.\n *\n * Renders as a `<nav>` with `aria-label=\"breadcrumb\"` for accessibility.\n * Use `BreadcrumbSeparator` between items (defaults to a chevron icon)\n * and `BreadcrumbEllipsis` for collapsed intermediate items.\n *\n * @example\n * ```tsx\n * <Breadcrumb>\n * <BreadcrumbList>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/projects\">Projects</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbPage>Current Project</BreadcrumbPage>\n * </BreadcrumbItem>\n * </BreadcrumbList>\n * </Breadcrumb>\n * ```\n */\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\n/** Ordered list container for breadcrumb items. Handles wrapping and spacing. */\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Individual breadcrumb list item wrapping a link or page indicator. */\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Clickable breadcrumb link. Set `asChild` to render a custom element (e.g., React Router `Link`).\n *\n * @param asChild - When true, renders the child element instead of an `<a>` tag.\n */\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n );\n}\n\n/** Non-interactive breadcrumb label for the current page. Rendered with `aria-current=\"page\"`. */\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n );\n}\n\n/** Visual separator between breadcrumb items. Defaults to a `ChevronRight` icon; pass custom children to override. */\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\n/** Ellipsis indicator for collapsed breadcrumb items. Renders a `MoreHorizontal` icon with screen-reader text. */\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n"]}
@@ -0,0 +1,4 @@
1
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '../../chunk-CECQY5LL.js';
2
+ import '../../chunk-DGPY4WP3.js';
3
+ //# sourceMappingURL=accordion.js.map
4
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1,3 @@
1
+ export { AspectRatio } from '../../chunk-ITTPI2Z3.js';
2
+ //# sourceMappingURL=aspect-ratio.js.map
3
+ //# sourceMappingURL=aspect-ratio.js.map
@@ -0,0 +1,4 @@
1
+ export { Avatar, AvatarFallback, AvatarImage } from '../../chunk-FTNPOZGK.js';
2
+ import '../../chunk-DGPY4WP3.js';
3
+ //# sourceMappingURL=avatar.js.map
4
+ //# sourceMappingURL=avatar.js.map
@@ -2,7 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as class_variance_authority_types from 'class-variance-authority/types';
3
3
  import * as React from 'react';
4
4
  import { VariantProps } from 'class-variance-authority';
5
- import { UIColor } from '../lib/types.js';
5
+ import { UIColor } from '../../lib/types.js';
6
6
 
7
7
  declare const badgeVariants: (props?: ({
8
8
  variant?: "destructive" | "default" | "secondary" | "outline" | "soft" | null | undefined;
@@ -0,0 +1,4 @@
1
+ export { Badge, badgeVariants } from '../../chunk-5SAUUOCN.js';
2
+ import '../../chunk-DGPY4WP3.js';
3
+ //# sourceMappingURL=badge.js.map
4
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1,4 @@
1
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '../../chunk-DXKFFJIE.js';
2
+ import '../../chunk-DGPY4WP3.js';
3
+ //# sourceMappingURL=card.js.map
4
+ //# sourceMappingURL=card.js.map