@etus/ui 0.4.0-beta.17 → 0.4.0-beta.18

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 (264) hide show
  1. package/dist/{chunk-U6EOAIPK.js → chunk-2X35C55E.js} +3 -3
  2. package/dist/chunk-2X35C55E.js.map +1 -0
  3. package/dist/{chunk-UYC7M3FM.js → chunk-34WNJNPL.js} +5 -5
  4. package/dist/{chunk-UYC7M3FM.js.map → chunk-34WNJNPL.js.map} +1 -1
  5. package/dist/{chunk-N4UTBJRY.js → chunk-3NHH7VPI.js} +3 -3
  6. package/dist/{chunk-N4UTBJRY.js.map → chunk-3NHH7VPI.js.map} +1 -1
  7. package/dist/{chunk-OEXQ2MOY.js → chunk-45YJLE4R.js} +3 -3
  8. package/dist/{chunk-OEXQ2MOY.js.map → chunk-45YJLE4R.js.map} +1 -1
  9. package/dist/{chunk-66TBTTZO.js → chunk-46SUPGQV.js} +14 -14
  10. package/dist/chunk-46SUPGQV.js.map +1 -0
  11. package/dist/{chunk-3W7FXRO5.js → chunk-56TC4CPT.js} +4 -4
  12. package/dist/{chunk-3W7FXRO5.js.map → chunk-56TC4CPT.js.map} +1 -1
  13. package/dist/{chunk-NCT5WXKG.js → chunk-5ACHKT35.js} +3 -3
  14. package/dist/{chunk-NCT5WXKG.js.map → chunk-5ACHKT35.js.map} +1 -1
  15. package/dist/{chunk-GGUWEAYD.js → chunk-5E44I7PB.js} +3 -3
  16. package/dist/{chunk-GGUWEAYD.js.map → chunk-5E44I7PB.js.map} +1 -1
  17. package/dist/{chunk-T6XRYT6Q.js → chunk-5K2SOCOX.js} +3 -3
  18. package/dist/{chunk-T6XRYT6Q.js.map → chunk-5K2SOCOX.js.map} +1 -1
  19. package/dist/{chunk-VT4IMHGE.js → chunk-5TABQJDW.js} +4 -4
  20. package/dist/chunk-5TABQJDW.js.map +1 -0
  21. package/dist/{chunk-4GVOOXYD.js → chunk-6ABGMOE2.js} +5 -5
  22. package/dist/chunk-6ABGMOE2.js.map +1 -0
  23. package/dist/{chunk-Q43KJP5A.js → chunk-6F5NWXZF.js} +7 -7
  24. package/dist/{chunk-Q43KJP5A.js.map → chunk-6F5NWXZF.js.map} +1 -1
  25. package/dist/{chunk-4RSHPKHB.js → chunk-6KMRMXR6.js} +3 -3
  26. package/dist/{chunk-4RSHPKHB.js.map → chunk-6KMRMXR6.js.map} +1 -1
  27. package/dist/{chunk-7J5OM4ZD.js → chunk-7CMOCWFX.js} +4 -4
  28. package/dist/{chunk-7J5OM4ZD.js.map → chunk-7CMOCWFX.js.map} +1 -1
  29. package/dist/{chunk-G7PBPX3K.js → chunk-7VGF6ZVE.js} +4 -4
  30. package/dist/{chunk-G7PBPX3K.js.map → chunk-7VGF6ZVE.js.map} +1 -1
  31. package/dist/{chunk-E2TI5V67.js → chunk-A4O3USMA.js} +3 -3
  32. package/dist/{chunk-E2TI5V67.js.map → chunk-A4O3USMA.js.map} +1 -1
  33. package/dist/{chunk-UPK5B2FL.js → chunk-AKRVZ2YW.js} +6 -6
  34. package/dist/chunk-AKRVZ2YW.js.map +1 -0
  35. package/dist/{chunk-VBJ26PZJ.js → chunk-AP3T3KMY.js} +3 -3
  36. package/dist/{chunk-VBJ26PZJ.js.map → chunk-AP3T3KMY.js.map} +1 -1
  37. package/dist/{chunk-X3AXEE3S.js → chunk-AR7K7Y4L.js} +3 -3
  38. package/dist/{chunk-X3AXEE3S.js.map → chunk-AR7K7Y4L.js.map} +1 -1
  39. package/dist/{chunk-WKWLKGNI.js → chunk-ARYBNQNS.js} +4 -4
  40. package/dist/chunk-ARYBNQNS.js.map +1 -0
  41. package/dist/{chunk-P27ERD6W.js → chunk-B2OCNHUW.js} +8 -8
  42. package/dist/{chunk-P27ERD6W.js.map → chunk-B2OCNHUW.js.map} +1 -1
  43. package/dist/{chunk-3NLWCX2F.js → chunk-DI3AISAZ.js} +3 -3
  44. package/dist/{chunk-3NLWCX2F.js.map → chunk-DI3AISAZ.js.map} +1 -1
  45. package/dist/{chunk-W3JVNX35.js → chunk-DSCLJ3GK.js} +4 -4
  46. package/dist/{chunk-W3JVNX35.js.map → chunk-DSCLJ3GK.js.map} +1 -1
  47. package/dist/{chunk-3KOLK3OB.js → chunk-EC5YEK3C.js} +3 -3
  48. package/dist/{chunk-3KOLK3OB.js.map → chunk-EC5YEK3C.js.map} +1 -1
  49. package/dist/{chunk-YUHPTV2A.js → chunk-EDSDAX56.js} +3 -3
  50. package/dist/{chunk-YUHPTV2A.js.map → chunk-EDSDAX56.js.map} +1 -1
  51. package/dist/{chunk-IRIIK3BU.js → chunk-F4EX3622.js} +10 -10
  52. package/dist/chunk-F4EX3622.js.map +1 -0
  53. package/dist/{chunk-XYYOV5GW.js → chunk-F5X2BBGU.js} +4 -4
  54. package/dist/{chunk-XYYOV5GW.js.map → chunk-F5X2BBGU.js.map} +1 -1
  55. package/dist/{chunk-BS5XDYOE.js → chunk-FLERVSKG.js} +5 -5
  56. package/dist/{chunk-BS5XDYOE.js.map → chunk-FLERVSKG.js.map} +1 -1
  57. package/dist/{chunk-TAZPML2P.js → chunk-G2CMEHW6.js} +3 -3
  58. package/dist/{chunk-TAZPML2P.js.map → chunk-G2CMEHW6.js.map} +1 -1
  59. package/dist/{chunk-TQBUBD3E.js → chunk-H7JHFBFD.js} +3 -3
  60. package/dist/{chunk-TQBUBD3E.js.map → chunk-H7JHFBFD.js.map} +1 -1
  61. package/dist/{chunk-Y4RKKQMB.js → chunk-HA5YVDHW.js} +3 -3
  62. package/dist/chunk-HA5YVDHW.js.map +1 -0
  63. package/dist/{chunk-ZKK7L7H7.js → chunk-HP7LEQJR.js} +3 -3
  64. package/dist/{chunk-ZKK7L7H7.js.map → chunk-HP7LEQJR.js.map} +1 -1
  65. package/dist/{chunk-W7S7GPU5.js → chunk-HV2ZZXFN.js} +4 -4
  66. package/dist/{chunk-W7S7GPU5.js.map → chunk-HV2ZZXFN.js.map} +1 -1
  67. package/dist/{chunk-K45MMHLA.js → chunk-HVFACGNK.js} +4 -4
  68. package/dist/{chunk-K45MMHLA.js.map → chunk-HVFACGNK.js.map} +1 -1
  69. package/dist/{chunk-R3HUGCGR.js → chunk-HZ47LQFJ.js} +4 -4
  70. package/dist/{chunk-R3HUGCGR.js.map → chunk-HZ47LQFJ.js.map} +1 -1
  71. package/dist/{chunk-4KOJTZVU.js → chunk-IA24GUNV.js} +25 -25
  72. package/dist/chunk-IA24GUNV.js.map +1 -0
  73. package/dist/{chunk-D6TH3EGA.js → chunk-IQKKPOI7.js} +4 -4
  74. package/dist/{chunk-D6TH3EGA.js.map → chunk-IQKKPOI7.js.map} +1 -1
  75. package/dist/{chunk-WXBC3D2N.js → chunk-IRFAIJLV.js} +4 -4
  76. package/dist/{chunk-WXBC3D2N.js.map → chunk-IRFAIJLV.js.map} +1 -1
  77. package/dist/{chunk-SXPBKGLT.js → chunk-J62NPPDO.js} +3 -3
  78. package/dist/{chunk-SXPBKGLT.js.map → chunk-J62NPPDO.js.map} +1 -1
  79. package/dist/{chunk-TNDW52VZ.js → chunk-JDG5A44W.js} +20 -13
  80. package/dist/chunk-JDG5A44W.js.map +1 -0
  81. package/dist/{chunk-Z4KW5VW6.js → chunk-JRVUEOKT.js} +5 -5
  82. package/dist/{chunk-Z4KW5VW6.js.map → chunk-JRVUEOKT.js.map} +1 -1
  83. package/dist/{chunk-NXQ25PKF.js → chunk-K43MPWTO.js} +7 -7
  84. package/dist/chunk-K43MPWTO.js.map +1 -0
  85. package/dist/{chunk-2ROFZG3A.js → chunk-KA7747GR.js} +3 -3
  86. package/dist/{chunk-2ROFZG3A.js.map → chunk-KA7747GR.js.map} +1 -1
  87. package/dist/{chunk-OBRJXVWO.js → chunk-KYURFRCH.js} +4 -4
  88. package/dist/{chunk-OBRJXVWO.js.map → chunk-KYURFRCH.js.map} +1 -1
  89. package/dist/{chunk-EYSTEGV5.js → chunk-LR56MGWT.js} +7 -7
  90. package/dist/{chunk-EYSTEGV5.js.map → chunk-LR56MGWT.js.map} +1 -1
  91. package/dist/{chunk-6ZAMTPGN.js → chunk-M6VBDPNQ.js} +3 -3
  92. package/dist/{chunk-6ZAMTPGN.js.map → chunk-M6VBDPNQ.js.map} +1 -1
  93. package/dist/{chunk-JPA2VQRW.js → chunk-MAM5PTRV.js} +3 -3
  94. package/dist/{chunk-JPA2VQRW.js.map → chunk-MAM5PTRV.js.map} +1 -1
  95. package/dist/{chunk-3L5G7VI2.js → chunk-MAM6VUKD.js} +3 -3
  96. package/dist/chunk-MAM6VUKD.js.map +1 -0
  97. package/dist/{chunk-LLI3JFJL.js → chunk-MLSIZ6JU.js} +4 -4
  98. package/dist/{chunk-LLI3JFJL.js.map → chunk-MLSIZ6JU.js.map} +1 -1
  99. package/dist/{chunk-U2R47SPY.js → chunk-NULX3RRN.js} +4 -4
  100. package/dist/{chunk-U2R47SPY.js.map → chunk-NULX3RRN.js.map} +1 -1
  101. package/dist/{chunk-GL56KIFL.js → chunk-OG3M4CMJ.js} +3 -3
  102. package/dist/{chunk-GL56KIFL.js.map → chunk-OG3M4CMJ.js.map} +1 -1
  103. package/dist/{chunk-7EGN7IGY.js → chunk-OR3NPCY2.js} +3 -3
  104. package/dist/{chunk-7EGN7IGY.js.map → chunk-OR3NPCY2.js.map} +1 -1
  105. package/dist/{chunk-5I7AXWJU.js → chunk-PGRMKSVA.js} +4 -4
  106. package/dist/{chunk-5I7AXWJU.js.map → chunk-PGRMKSVA.js.map} +1 -1
  107. package/dist/{chunk-VZZ3HP7G.js → chunk-PM344VOQ.js} +3 -3
  108. package/dist/{chunk-VZZ3HP7G.js.map → chunk-PM344VOQ.js.map} +1 -1
  109. package/dist/{chunk-46ESMCEQ.js → chunk-QBLU7J34.js} +5 -5
  110. package/dist/chunk-QBLU7J34.js.map +1 -0
  111. package/dist/{chunk-U74PNG4S.js → chunk-SMVH56FQ.js} +3 -3
  112. package/dist/{chunk-U74PNG4S.js.map → chunk-SMVH56FQ.js.map} +1 -1
  113. package/dist/{chunk-DYDXGWH2.js → chunk-T3LWBCVR.js} +4 -4
  114. package/dist/chunk-T3LWBCVR.js.map +1 -0
  115. package/dist/{chunk-ZP4HYVDG.js → chunk-TA4HCLP3.js} +3 -3
  116. package/dist/{chunk-ZP4HYVDG.js.map → chunk-TA4HCLP3.js.map} +1 -1
  117. package/dist/{chunk-7HT32DZG.js → chunk-TGLALXPU.js} +3 -3
  118. package/dist/{chunk-7HT32DZG.js.map → chunk-TGLALXPU.js.map} +1 -1
  119. package/dist/{chunk-5GE3BQA7.js → chunk-USPITOG4.js} +5 -5
  120. package/dist/chunk-USPITOG4.js.map +1 -0
  121. package/dist/{chunk-XLTSCY22.js → chunk-UYPYAOET.js} +4 -4
  122. package/dist/chunk-UYPYAOET.js.map +1 -0
  123. package/dist/{chunk-P7D6S6GX.js → chunk-V7O4X3AE.js} +38 -4
  124. package/dist/chunk-V7O4X3AE.js.map +1 -0
  125. package/dist/{chunk-2YSZPUQZ.js → chunk-VTDSGJ4R.js} +3 -3
  126. package/dist/{chunk-2YSZPUQZ.js.map → chunk-VTDSGJ4R.js.map} +1 -1
  127. package/dist/{chunk-4Y72SPNL.js → chunk-VUHJTTPV.js} +4 -4
  128. package/dist/chunk-VUHJTTPV.js.map +1 -0
  129. package/dist/{chunk-VLDAHAG6.js → chunk-VV6QE3M2.js} +4 -4
  130. package/dist/{chunk-VLDAHAG6.js.map → chunk-VV6QE3M2.js.map} +1 -1
  131. package/dist/{chunk-H5N3VPBG.js → chunk-WBERMEN7.js} +3 -3
  132. package/dist/{chunk-H5N3VPBG.js.map → chunk-WBERMEN7.js.map} +1 -1
  133. package/dist/{chunk-OXDWUKGP.js → chunk-WCMRVCIM.js} +4 -4
  134. package/dist/chunk-WCMRVCIM.js.map +1 -0
  135. package/dist/{chunk-IFHF4UES.js → chunk-WQI2USN7.js} +11 -11
  136. package/dist/chunk-WQI2USN7.js.map +1 -0
  137. package/dist/{chunk-CKD4UBV6.js → chunk-WVFQKBDB.js} +3 -3
  138. package/dist/{chunk-CKD4UBV6.js.map → chunk-WVFQKBDB.js.map} +1 -1
  139. package/dist/{chunk-3NSIUZGP.js → chunk-WZ2J4ALB.js} +3 -3
  140. package/dist/{chunk-3NSIUZGP.js.map → chunk-WZ2J4ALB.js.map} +1 -1
  141. package/dist/{chunk-7TF5PVEU.js → chunk-X5XP5QVO.js} +5 -5
  142. package/dist/chunk-X5XP5QVO.js.map +1 -0
  143. package/dist/{chunk-7Y2UQMX6.js → chunk-XKO6G5H2.js} +36 -36
  144. package/dist/chunk-XKO6G5H2.js.map +1 -0
  145. package/dist/{chunk-SUU3HNOX.js → chunk-XORDGKZI.js} +4 -4
  146. package/dist/{chunk-SUU3HNOX.js.map → chunk-XORDGKZI.js.map} +1 -1
  147. package/dist/{chunk-VAVE4ZJF.js → chunk-YGLD22TU.js} +3 -3
  148. package/dist/chunk-YGLD22TU.js.map +1 -0
  149. package/dist/{chunk-XOGMDABS.js → chunk-ZHUW6UYD.js} +8 -8
  150. package/dist/chunk-ZHUW6UYD.js.map +1 -0
  151. package/dist/{chunk-PWCMCMDN.js → chunk-ZMUUEXVD.js} +3 -3
  152. package/dist/{chunk-PWCMCMDN.js.map → chunk-ZMUUEXVD.js.map} +1 -1
  153. package/dist/components/advanced/Calendar/index.js +5 -5
  154. package/dist/components/advanced/EventCalendar/index.js +5 -5
  155. package/dist/components/advanced/FilterBuilder/index.js +7 -7
  156. package/dist/components/advanced/MarkdownEditor/index.js +2 -2
  157. package/dist/components/advanced/ReportBuilder/index.js +4 -4
  158. package/dist/components/advanced/RichTextEditor/index.js +2 -2
  159. package/dist/components/advanced/index.js +16 -16
  160. package/dist/components/data-display/Callout/index.js +1 -1
  161. package/dist/components/data-display/Carousel/index.js +5 -5
  162. package/dist/components/data-display/ChartCard/index.js +2 -2
  163. package/dist/components/data-display/DataTable/FilterBuilder/index.js +7 -7
  164. package/dist/components/data-display/DataTable/index.js +10 -10
  165. package/dist/components/data-display/ImageGallery/index.js +6 -6
  166. package/dist/components/data-display/Item/index.js +2 -2
  167. package/dist/components/data-display/KPICard/index.js +3 -3
  168. package/dist/components/data-display/List/index.js +2 -2
  169. package/dist/components/data-display/SingleStat/index.js +1 -1
  170. package/dist/components/data-display/index.js +31 -31
  171. package/dist/components/feedback/AlertDialog/index.js +5 -5
  172. package/dist/components/feedback/ConfirmModal/index.js +6 -6
  173. package/dist/components/feedback/Modal/index.js +1 -1
  174. package/dist/components/feedback/UpdatesWidget/index.js +1 -1
  175. package/dist/components/feedback/index.js +10 -10
  176. package/dist/components/forms/ColorPicker/index.js +1 -1
  177. package/dist/components/forms/Combobox/index.js +1 -1
  178. package/dist/components/forms/DatePicker/index.js +6 -6
  179. package/dist/components/forms/DateRangePicker/index.js +6 -6
  180. package/dist/components/forms/EmailInput/index.js +3 -3
  181. package/dist/components/forms/Field/index.js +3 -3
  182. package/dist/components/forms/Form/index.js +2 -2
  183. package/dist/components/forms/InputGroup/index.js +8 -8
  184. package/dist/components/forms/InputOTPField/index.js +4 -4
  185. package/dist/components/forms/NativeSelect/index.js +1 -1
  186. package/dist/components/forms/NumberInput/index.js +2 -2
  187. package/dist/components/forms/PasswordInput/index.js +3 -3
  188. package/dist/components/forms/PaymentInput/index.js +1 -1
  189. package/dist/components/forms/PhoneInput/index.js +1 -1
  190. package/dist/components/forms/RadioButton/index.js +1 -1
  191. package/dist/components/forms/SearchInput/index.js +3 -3
  192. package/dist/components/forms/Slider/index.js +1 -1
  193. package/dist/components/forms/TagsInput/index.js +2 -2
  194. package/dist/components/forms/TextInput/index.js +2 -2
  195. package/dist/components/forms/Textarea/index.js +1 -1
  196. package/dist/components/forms/TextareaField/index.js +5 -5
  197. package/dist/components/forms/URLInput/index.js +3 -3
  198. package/dist/components/forms/index.js +33 -33
  199. package/dist/components/index.js +132 -132
  200. package/dist/components/layout/Card/index.js +1 -1
  201. package/dist/components/layout/Section/index.js +1 -1
  202. package/dist/components/layout/index.js +6 -6
  203. package/dist/components/navigation/AccountSwitch/index.js +3 -3
  204. package/dist/components/navigation/ContextMenu/index.js +1 -1
  205. package/dist/components/navigation/DropdownMenu/index.js +1 -1
  206. package/dist/components/navigation/FileTree/index.js +1 -1
  207. package/dist/components/navigation/Menu/index.js +1 -1
  208. package/dist/components/navigation/Menubar/index.js +1 -1
  209. package/dist/components/navigation/Navbar/index.js +1 -1
  210. package/dist/components/navigation/Pagination/index.js +5 -5
  211. package/dist/components/navigation/Sidebar/index.js +7 -7
  212. package/dist/components/navigation/Toolbar/index.js +1 -1
  213. package/dist/components/navigation/index.js +20 -20
  214. package/dist/components/primitives/Badge/index.js +1 -1
  215. package/dist/components/primitives/Button/index.js +4 -4
  216. package/dist/components/primitives/ButtonGroup/index.js +2 -2
  217. package/dist/components/primitives/ConfirmButton/index.js +6 -6
  218. package/dist/components/primitives/Divider/index.js +1 -1
  219. package/dist/components/primitives/FolderStack/index.js +1 -1
  220. package/dist/components/primitives/Image/index.js +1 -1
  221. package/dist/components/primitives/Label/index.js +1 -1
  222. package/dist/components/primitives/SplitButton/index.js +2 -2
  223. package/dist/components/primitives/StatusIndicator/index.js +1 -1
  224. package/dist/components/primitives/Tag/index.js +1 -1
  225. package/dist/components/primitives/Thumbnail/index.js +2 -2
  226. package/dist/components/primitives/index.js +19 -19
  227. package/dist/components/workflow/ApprovalFlow/index.js +5 -5
  228. package/dist/components/workflow/CommentSystem/index.js +6 -6
  229. package/dist/components/workflow/Dashboard/index.js +5 -5
  230. package/dist/components/workflow/DashboardBuilder/index.js +8 -8
  231. package/dist/components/workflow/KanbanBoard/index.js +5 -5
  232. package/dist/components/workflow/ReportGenerator/index.js +6 -6
  233. package/dist/components/workflow/Stepper/index.js +1 -1
  234. package/dist/components/workflow/TaskStatus/index.js +2 -2
  235. package/dist/components/workflow/Wizard/index.js +6 -6
  236. package/dist/components/workflow/index.js +19 -19
  237. package/dist/index.d.ts +8 -1
  238. package/dist/index.js +132 -132
  239. package/dist/styles.css +27 -703
  240. package/package.json +2 -2
  241. package/dist/chunk-3L5G7VI2.js.map +0 -1
  242. package/dist/chunk-46ESMCEQ.js.map +0 -1
  243. package/dist/chunk-4GVOOXYD.js.map +0 -1
  244. package/dist/chunk-4KOJTZVU.js.map +0 -1
  245. package/dist/chunk-4Y72SPNL.js.map +0 -1
  246. package/dist/chunk-5GE3BQA7.js.map +0 -1
  247. package/dist/chunk-66TBTTZO.js.map +0 -1
  248. package/dist/chunk-7TF5PVEU.js.map +0 -1
  249. package/dist/chunk-7Y2UQMX6.js.map +0 -1
  250. package/dist/chunk-DYDXGWH2.js.map +0 -1
  251. package/dist/chunk-IFHF4UES.js.map +0 -1
  252. package/dist/chunk-IRIIK3BU.js.map +0 -1
  253. package/dist/chunk-NXQ25PKF.js.map +0 -1
  254. package/dist/chunk-OXDWUKGP.js.map +0 -1
  255. package/dist/chunk-P7D6S6GX.js.map +0 -1
  256. package/dist/chunk-TNDW52VZ.js.map +0 -1
  257. package/dist/chunk-U6EOAIPK.js.map +0 -1
  258. package/dist/chunk-UPK5B2FL.js.map +0 -1
  259. package/dist/chunk-VAVE4ZJF.js.map +0 -1
  260. package/dist/chunk-VT4IMHGE.js.map +0 -1
  261. package/dist/chunk-WKWLKGNI.js.map +0 -1
  262. package/dist/chunk-XLTSCY22.js.map +0 -1
  263. package/dist/chunk-XOGMDABS.js.map +0 -1
  264. package/dist/chunk-Y4RKKQMB.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/workflow/ApprovalFlow/ApprovalFlow.variants.ts","../src/components/workflow/ApprovalFlow/ApprovalFlow.tsx"],"names":[],"mappings":"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","file":"chunk-3NSIUZGP.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * ApprovalFlow container variants\n */\nexport const approvalFlowVariants = cva(\n \"relative rounded-lg border bg-card p-6 transition-all duration-300\",\n {\n variants: {\n variant: {\n linear: \"\",\n parallel: \"\",\n conditional: \"\",\n hybrid: \"\",\n },\n layout: {\n horizontal: \"flex flex-row gap-4 overflow-x-auto\",\n vertical: \"flex flex-col gap-4\",\n compact: \"flex flex-col gap-2 p-4\",\n },\n },\n defaultVariants: {\n variant: \"linear\",\n layout: \"horizontal\",\n },\n }\n)\n\n/**\n * ApprovalFlow step variants\n */\nexport const approvalFlowStepVariants = cva(\n \"relative flex transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n variants: {\n layout: {\n horizontal: \"flex-col items-center gap-2 min-w-40\",\n vertical: \"flex-row gap-4\",\n compact: \"flex-row gap-3\",\n },\n status: {\n pending: \"\",\n in_progress: \"\",\n awaiting: \"\",\n approved: \"\",\n rejected: \"\",\n escalated: \"\",\n skipped: \"opacity-50\",\n },\n },\n defaultVariants: {\n layout: \"horizontal\",\n status: \"pending\",\n },\n }\n)\n\n/**\n * Step marker/indicator variants based on status\n */\nexport const approvalFlowMarkerVariants = cva(\n \"flex shrink-0 items-center justify-center rounded-full border-2 transition-all duration-300\",\n {\n variants: {\n status: {\n pending: \"border-muted-foreground/50 bg-muted text-muted-foreground\",\n in_progress:\n \"border-primary bg-primary text-primary-foreground animate-pulse\",\n awaiting: \"border-warning bg-warning text-warning-foreground\",\n approved: \"border-success bg-success text-success-foreground\",\n rejected: \"border-destructive bg-destructive text-destructive-foreground\",\n escalated: \"border-warning bg-warning text-warning-foreground\",\n skipped: \"border-muted-foreground/30 bg-muted/50 text-muted-foreground/50\",\n },\n size: {\n sm: \"h-8 w-8 text-xs\",\n default: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Connector line variants between steps\n */\nexport const approvalFlowConnectorVariants = cva(\n \"transition-colors duration-300\",\n {\n variants: {\n layout: {\n horizontal: \"h-0.5 flex-1 min-w-10\",\n vertical: \"w-0.5 min-h-10 ml-5\",\n compact: \"w-0.5 min-h-6 ml-4\",\n },\n status: {\n pending: \"bg-muted-foreground/30\",\n in_progress: \"bg-primary/50\",\n awaiting: \"bg-warning/50\",\n approved: \"bg-success\",\n rejected: \"bg-destructive/50\",\n escalated: \"bg-warning/50\",\n skipped: \"bg-muted-foreground/20\",\n },\n style: {\n solid: \"\",\n dashed: \"border-dashed border-2 bg-transparent\",\n },\n },\n compoundVariants: [\n {\n layout: \"horizontal\",\n style: \"dashed\",\n className: \"border-l-0 border-r-0 border-t-2 border-b-0 h-0\",\n },\n {\n layout: \"vertical\",\n style: \"dashed\",\n className: \"border-t-0 border-b-0 border-l-2 border-r-0 w-0\",\n },\n {\n layout: \"compact\",\n style: \"dashed\",\n className: \"border-t-0 border-b-0 border-l-2 border-r-0 w-0\",\n },\n ],\n defaultVariants: {\n layout: \"horizontal\",\n status: \"pending\",\n style: \"solid\",\n },\n }\n)\n\n/**\n * Step card variants\n */\nexport const approvalFlowStepCardVariants = cva(\n \"rounded-md border bg-background p-4 transition-all duration-200\",\n {\n variants: {\n status: {\n pending: \"border-muted\",\n in_progress: \"border-primary shadow-sm ring-1 ring-primary/20\",\n awaiting: \"border-warning shadow-sm\",\n approved: \"border-success/50 bg-success/5\",\n rejected: \"border-destructive/50 bg-destructive/5\",\n escalated: \"border-warning/50 bg-warning/5\",\n skipped: \"border-muted/50 bg-muted/10\",\n },\n layout: {\n horizontal: \"w-full max-w-52\",\n vertical: \"flex-1\",\n compact: \"flex-1 py-2\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n layout: \"horizontal\",\n },\n }\n)\n\n/**\n * Action button group variants\n */\nexport const approvalFlowActionsVariants = cva(\n \"flex gap-2 transition-opacity duration-200\",\n {\n variants: {\n layout: {\n horizontal: \"flex-wrap justify-center mt-2\",\n vertical: \"flex-wrap\",\n compact: \"flex-wrap\",\n },\n visible: {\n true: \"opacity-100\",\n false: \"opacity-0 pointer-events-none\",\n },\n },\n defaultVariants: {\n layout: \"horizontal\",\n visible: true,\n },\n }\n)\n\nexport type ApprovalFlowVariantProps = VariantProps<typeof approvalFlowVariants>\nexport type ApprovalFlowStepVariantProps = VariantProps<\n typeof approvalFlowStepVariants\n>\nexport type ApprovalFlowMarkerVariantProps = VariantProps<\n typeof approvalFlowMarkerVariants\n>\nexport type ApprovalFlowConnectorVariantProps = VariantProps<\n typeof approvalFlowConnectorVariants\n>\nexport type ApprovalFlowStepCardVariantProps = VariantProps<\n typeof approvalFlowStepCardVariants\n>\nexport type ApprovalFlowActionsVariantProps = VariantProps<\n typeof approvalFlowActionsVariants\n>\n","import type {\n ApprovalFlowProps,\n ApprovalFlowStepProps,\n ApprovalStep,\n ApprovalStepStatus,\n Approver,\n} from \"./ApprovalFlow.types\"\nimport type { KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n Check,\n ChevronRight,\n Clock,\n Forward,\n TrendingUp,\n User,\n X,\n} from \"lucide-react\"\nimport { useId, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n approvalFlowActionsVariants,\n approvalFlowConnectorVariants,\n approvalFlowMarkerVariants,\n approvalFlowStepCardVariants,\n approvalFlowStepVariants,\n approvalFlowVariants,\n} from \"./ApprovalFlow.variants\"\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Get icon for status\n */\nfunction getStatusIcon(status: ApprovalStepStatus): ReactNode {\n switch (status) {\n case \"approved\":\n return <Check className=\"h-4 w-4\" />\n case \"rejected\":\n return <X className=\"h-4 w-4\" />\n case \"in_progress\":\n case \"awaiting\":\n return <Clock className=\"h-4 w-4\" />\n case \"escalated\":\n return <TrendingUp className=\"h-4 w-4\" />\n case \"skipped\":\n return <Forward className=\"h-4 w-4\" />\n default:\n return null\n }\n}\n\n/**\n * Get accessible status label\n */\nfunction getStatusLabel(status: ApprovalStepStatus): string {\n const labels: Record<ApprovalStepStatus, string> = {\n pending: \"Pending\",\n in_progress: \"In progress\",\n awaiting: \"Awaiting approval\",\n approved: \"Approved\",\n rejected: \"Rejected\",\n escalated: \"Escalated\",\n skipped: \"Skipped\",\n }\n return labels[status]\n}\n\n/**\n * ApprovalFlowMarker component renders the status indicator\n */\nfunction ApprovalFlowMarker({\n index,\n status = \"pending\",\n}: {\n index: number\n status?: ApprovalStepStatus\n}) {\n const icon = getStatusIcon(status)\n\n return (\n <div\n aria-hidden=\"true\"\n className={approvalFlowMarkerVariants({ status })}\n data-slot=\"approval-flow-marker\"\n data-status={status}\n >\n {icon ?? (\n <span className=\"font-medium\">{index + 1}</span>\n )}\n </div>\n )\n}\n\n/**\n * ApprovalFlowConnector component renders the line between steps\n */\nfunction ApprovalFlowConnector({\n layout = \"horizontal\",\n status = \"pending\",\n isConditional = false,\n}: {\n isConditional?: boolean\n layout?: \"compact\" | \"horizontal\" | \"vertical\"\n status?: ApprovalStepStatus\n}) {\n return (\n <div\n className={approvalFlowConnectorVariants({\n layout,\n status,\n style: isConditional ? \"dashed\" : \"solid\",\n })}\n aria-hidden=\"true\"\n data-slot=\"approval-flow-connector\"\n />\n )\n}\n\n/**\n * ApproverAvatar component renders an approver's avatar\n */\nfunction ApproverAvatar({ approver }: { approver: Approver }) {\n return (\n <div className=\"flex items-center gap-2\" title={`${approver.name} (${approver.role})`}>\n <Avatar size=\"sm\">\n {approver.avatar ? (\n <AvatarImage alt={approver.name} src={approver.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(approver.name)}</AvatarFallback>\n </Avatar>\n </div>\n )\n}\n\n/**\n * ApprovalFlowStepContent renders the content of a step\n */\nfunction ApprovalFlowStepContent({\n step,\n layout = \"horizontal\",\n}: {\n layout?: \"compact\" | \"horizontal\" | \"vertical\"\n step: ApprovalStep\n}) {\n const showApproversCount = step.approvers.length > 3\n const visibleApprovers = showApproversCount\n ? step.approvers.slice(0, 3)\n : step.approvers\n\n return (\n <div\n className={approvalFlowStepCardVariants({ status: step.status, layout })}\n data-slot=\"approval-flow-step-card\"\n >\n <div className=\"space-y-2\">\n <div data-slot=\"approval-flow-step-title\">\n <span className=\"text-sm font-medium text-foreground\">\n {step.title}\n </span>\n </div>\n\n {step.description && (\n <div data-slot=\"approval-flow-step-description\">\n <span className=\"text-xs text-muted-foreground\">\n {step.description}\n </span>\n </div>\n )}\n\n {step.approvers.length > 0 && (\n <div\n className=\"flex items-center gap-1\"\n data-slot=\"approval-flow-step-approvers\"\n >\n <div className=\"flex -space-x-2\">\n {visibleApprovers.map((approver) => (\n <ApproverAvatar key={approver.id} approver={approver} />\n ))}\n </div>\n {showApproversCount && (\n <span className=\"ml-2 text-xs text-muted-foreground\">\n +{step.approvers.length - 3} more\n </span>\n )}\n </div>\n )}\n\n {step.requiredApprovals && step.requiredApprovals > 1 && (\n <div\n className=\"text-xs text-muted-foreground\"\n data-slot=\"approval-flow-step-required\"\n >\n Requires {step.requiredApprovals} of {step.approvers.length} approvals\n </div>\n )}\n\n {step.deadline && (\n <div\n className=\"flex items-center gap-1 text-xs text-muted-foreground\"\n data-slot=\"approval-flow-step-deadline\"\n >\n <Clock className=\"h-3 w-3\" />\n <span>Due: {step.deadline.toLocaleDateString()}</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * ApprovalFlowStep component renders a single approval step\n */\nfunction ApprovalFlowStep({\n step,\n index,\n isCurrent,\n isLast,\n showConnector = true,\n layout = \"horizontal\",\n readOnly = false,\n allowDelegation = true,\n allowEscalation = true,\n onApprove,\n onReject,\n onDelegate,\n onEscalate,\n className,\n ...props\n}: ApprovalFlowStepProps) {\n const stepId = useId()\n const statusLabel = getStatusLabel(step.status)\n // Normalize null to undefined for layout\n const normalizedLayout = layout ?? \"horizontal\"\n const canAct =\n isCurrent &&\n !readOnly &&\n (step.status === \"in_progress\" || step.status === \"awaiting\")\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const target = event.currentTarget\n const parent = target.parentElement\n if (!parent) return\n\n const siblings = [\n ...parent.querySelectorAll('[data-slot=\"approval-flow-step\"]'),\n ] as HTMLDivElement[]\n const currentIndex = siblings.indexOf(target)\n\n let nextIndex = -1\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n event.preventDefault()\n nextIndex = Math.min(currentIndex + 1, siblings.length - 1)\n break\n case \"ArrowUp\":\n case \"ArrowLeft\":\n event.preventDefault()\n nextIndex = Math.max(currentIndex - 1, 0)\n break\n default:\n return\n }\n\n const nextElement = siblings[nextIndex]\n if (nextIndex !== -1 && nextElement) {\n nextElement.focus()\n }\n }\n\n return (\n <div\n className={cn(\n approvalFlowStepVariants({ layout: normalizedLayout, status: step.status }),\n className\n )}\n aria-current={isCurrent ? \"step\" : undefined}\n aria-describedby={`${stepId}-description`}\n aria-label={`${step.title} - ${statusLabel}`}\n data-active={isCurrent ? \"\" : undefined}\n data-slot=\"approval-flow-step\"\n data-status={step.status}\n role=\"listitem\"\n tabIndex={0}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Marker and Connector for vertical/compact layouts */}\n {(normalizedLayout === \"vertical\" || normalizedLayout === \"compact\") && (\n <div className=\"relative flex flex-col items-center\">\n <ApprovalFlowMarker index={index} status={step.status} />\n {showConnector && !isLast && (\n <ApprovalFlowConnector layout={normalizedLayout} status={step.status} />\n )}\n </div>\n )}\n\n {/* Main content wrapper */}\n <div className=\"flex flex-1 flex-col gap-2\">\n {/* Marker for horizontal layout */}\n {normalizedLayout === \"horizontal\" && (\n <div className=\"flex items-center justify-center\">\n <ApprovalFlowMarker index={index} status={step.status} />\n </div>\n )}\n\n {/* Step content */}\n <ApprovalFlowStepContent layout={normalizedLayout} step={step} />\n\n {/* Actions */}\n <div\n className={approvalFlowActionsVariants({\n layout: normalizedLayout,\n visible: canAct,\n })}\n data-slot=\"approval-flow-step-actions\"\n id={`${stepId}-description`}\n >\n {canAct && (\n <>\n <Button\n aria-label={`Approve ${step.title}`}\n size=\"sm\"\n variant=\"default\"\n onClick={onApprove}\n >\n <Check className=\"h-4 w-4\" />\n Approve\n </Button>\n <Button\n aria-label={`Reject ${step.title}`}\n size=\"sm\"\n variant=\"destructive\"\n onClick={onReject}\n >\n <X className=\"h-4 w-4\" />\n Reject\n </Button>\n {allowDelegation && (\n <Button\n aria-label={`Delegate ${step.title}`}\n size=\"sm\"\n variant=\"outline\"\n onClick={onDelegate}\n >\n <User className=\"h-4 w-4\" />\n Delegate\n </Button>\n )}\n {allowEscalation && (\n <Button\n aria-label={`Escalate ${step.title}`}\n size=\"sm\"\n variant=\"outline\"\n onClick={onEscalate}\n >\n <TrendingUp className=\"h-4 w-4\" />\n Escalate\n </Button>\n )}\n </>\n )}\n </div>\n </div>\n\n {/* Connector for horizontal layout */}\n {normalizedLayout === \"horizontal\" && showConnector && !isLast && (\n <div className=\"flex items-center self-start mt-5\">\n <ApprovalFlowConnector layout={normalizedLayout} status={step.status} />\n <ChevronRight className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n </div>\n )}\n </div>\n )\n}\n\n/**\n * ApprovalFlow component displays and manages an approval workflow.\n *\n * @example\n * ```tsx\n * const steps = [\n * { id: \"1\", title: \"Request\", status: \"approved\", approvers: [] },\n * { id: \"2\", title: \"Manager\", status: \"in_progress\", approvers: [{ id: \"1\", name: \"John\", email: \"john@example.com\", role: \"Manager\" }] },\n * { id: \"3\", title: \"Director\", status: \"pending\", approvers: [] },\n * ]\n *\n * <ApprovalFlow\n * steps={steps}\n * currentStep={1}\n * onApprove={({ stepId }) => console.log(\"Approved:\", stepId)}\n * onReject={({ stepId, reason }) => console.log(\"Rejected:\", stepId, reason)}\n * />\n * ```\n */\nfunction ApprovalFlow({\n \"aria-label\": ariaLabel = \"Approval workflow\",\n className,\n steps,\n currentStep = 0,\n variant = \"linear\",\n layout = \"horizontal\",\n allowDelegation = true,\n allowEscalation = true,\n showTimeline: _showTimeline = true,\n showComments: _showComments = true,\n readOnly = false,\n history: _history,\n onApprove,\n onReject,\n onDelegate,\n onEscalate,\n onStepChange: _onStepChange,\n onComplete: _onComplete,\n ...props\n}: ApprovalFlowProps) {\n const [_activeStepIndex, setActiveStepIndex] = useState(currentStep)\n\n // Determine effective layout based on screen size\n // On mobile, force vertical layout\n const effectiveLayout = layout\n\n const handleApprove = (stepId: string) => {\n onApprove?.({ stepId })\n }\n\n const handleReject = (stepId: string) => {\n // In a real implementation, this would open a dialog for the reason\n onReject?.({ stepId, reason: \"\" })\n }\n\n const handleDelegate = (stepId: string) => {\n // In a real implementation, this would open a dialog to select delegate\n onDelegate?.({\n stepId,\n delegateTo: { id: \"\", name: \"\", email: \"\", role: \"\" },\n })\n }\n\n const handleEscalate = (stepId: string) => {\n // In a real implementation, this would open a dialog to select escalation target\n onEscalate?.({\n stepId,\n escalateTo: { id: \"\", name: \"\", email: \"\", role: \"\" },\n })\n }\n\n // Handle keyboard navigation between steps\n const handleStepFocus = (index: number) => {\n setActiveStepIndex(index)\n }\n\n const hasSteps = steps.length > 0\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(approvalFlowVariants({ variant, layout: effectiveLayout }), className)}\n data-slot=\"approval-flow\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {hasSteps\n ? steps.map((step, index) => (\n <ApprovalFlowStep\n key={step.id}\n allowDelegation={allowDelegation}\n allowEscalation={allowEscalation}\n index={index}\n isCurrent={index === currentStep}\n isLast={index === steps.length - 1}\n layout={effectiveLayout}\n readOnly={readOnly}\n showConnector={variant !== \"conditional\"}\n step={step}\n onApprove={() => { handleApprove(step.id); }}\n onDelegate={() => { handleDelegate(step.id); }}\n onEscalate={() => { handleEscalate(step.id); }}\n onFocus={() => { handleStepFocus(index); }}\n onReject={() => { handleReject(step.id); }}\n />\n ))\n : null}\n </div>\n )\n}\n\nexport {\n ApprovalFlow,\n approvalFlowActionsVariants,\n ApprovalFlowConnector,\n approvalFlowConnectorVariants,\n ApprovalFlowMarker,\n approvalFlowMarkerVariants,\n ApprovalFlowStep,\n approvalFlowStepCardVariants,\n approvalFlowStepVariants,\n approvalFlowVariants,\n}\nexport type {\n ApprovalFlowProps,\n ApprovalFlowStepProps,\n ApprovalStep,\n ApprovalStepStatus,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/workflow/ApprovalFlow/ApprovalFlow.variants.ts","../src/components/workflow/ApprovalFlow/ApprovalFlow.tsx"],"names":[],"mappings":"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","file":"chunk-WZ2J4ALB.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * ApprovalFlow container variants\n */\nexport const approvalFlowVariants = cva(\n \"relative rounded-lg border bg-card p-6 transition-all duration-300\",\n {\n variants: {\n variant: {\n linear: \"\",\n parallel: \"\",\n conditional: \"\",\n hybrid: \"\",\n },\n layout: {\n horizontal: \"flex flex-row gap-4 overflow-x-auto\",\n vertical: \"flex flex-col gap-4\",\n compact: \"flex flex-col gap-2 p-4\",\n },\n },\n defaultVariants: {\n variant: \"linear\",\n layout: \"horizontal\",\n },\n }\n)\n\n/**\n * ApprovalFlow step variants\n */\nexport const approvalFlowStepVariants = cva(\n \"relative flex transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n variants: {\n layout: {\n horizontal: \"flex-col items-center gap-2 min-w-40\",\n vertical: \"flex-row gap-4\",\n compact: \"flex-row gap-3\",\n },\n status: {\n pending: \"\",\n in_progress: \"\",\n awaiting: \"\",\n approved: \"\",\n rejected: \"\",\n escalated: \"\",\n skipped: \"opacity-50\",\n },\n },\n defaultVariants: {\n layout: \"horizontal\",\n status: \"pending\",\n },\n }\n)\n\n/**\n * Step marker/indicator variants based on status\n */\nexport const approvalFlowMarkerVariants = cva(\n \"flex shrink-0 items-center justify-center rounded-full border-2 transition-all duration-300\",\n {\n variants: {\n status: {\n pending: \"border-muted-foreground/50 bg-muted text-muted-foreground\",\n in_progress:\n \"border-primary bg-primary text-primary-foreground animate-pulse\",\n awaiting: \"border-warning bg-warning text-warning-foreground\",\n approved: \"border-success bg-success text-success-foreground\",\n rejected: \"border-destructive bg-destructive text-destructive-foreground\",\n escalated: \"border-warning bg-warning text-warning-foreground\",\n skipped: \"border-muted-foreground/30 bg-muted/50 text-muted-foreground/50\",\n },\n size: {\n sm: \"h-8 w-8 text-xs\",\n default: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Connector line variants between steps\n */\nexport const approvalFlowConnectorVariants = cva(\n \"transition-colors duration-300\",\n {\n variants: {\n layout: {\n horizontal: \"h-0.5 flex-1 min-w-10\",\n vertical: \"w-0.5 min-h-10 ml-5\",\n compact: \"w-0.5 min-h-6 ml-4\",\n },\n status: {\n pending: \"bg-muted-foreground/30\",\n in_progress: \"bg-primary/50\",\n awaiting: \"bg-warning/50\",\n approved: \"bg-success\",\n rejected: \"bg-destructive/50\",\n escalated: \"bg-warning/50\",\n skipped: \"bg-muted-foreground/20\",\n },\n style: {\n solid: \"\",\n dashed: \"border-dashed border-2 bg-transparent\",\n },\n },\n compoundVariants: [\n {\n layout: \"horizontal\",\n style: \"dashed\",\n className: \"border-l-0 border-r-0 border-t-2 border-b-0 h-0\",\n },\n {\n layout: \"vertical\",\n style: \"dashed\",\n className: \"border-t-0 border-b-0 border-l-2 border-r-0 w-0\",\n },\n {\n layout: \"compact\",\n style: \"dashed\",\n className: \"border-t-0 border-b-0 border-l-2 border-r-0 w-0\",\n },\n ],\n defaultVariants: {\n layout: \"horizontal\",\n status: \"pending\",\n style: \"solid\",\n },\n }\n)\n\n/**\n * Step card variants\n */\nexport const approvalFlowStepCardVariants = cva(\n \"rounded-md border bg-background p-4 transition-all duration-200\",\n {\n variants: {\n status: {\n pending: \"border-muted\",\n in_progress: \"border-primary shadow-sm ring-1 ring-primary/20\",\n awaiting: \"border-warning shadow-sm\",\n approved: \"border-success/50 bg-success/5\",\n rejected: \"border-destructive/50 bg-destructive/5\",\n escalated: \"border-warning/50 bg-warning/5\",\n skipped: \"border-muted/50 bg-muted/10\",\n },\n layout: {\n horizontal: \"w-full max-w-52\",\n vertical: \"flex-1\",\n compact: \"flex-1 py-2\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n layout: \"horizontal\",\n },\n }\n)\n\n/**\n * Action button group variants\n */\nexport const approvalFlowActionsVariants = cva(\n \"flex gap-2 transition-opacity duration-200\",\n {\n variants: {\n layout: {\n horizontal: \"flex-wrap justify-center mt-2\",\n vertical: \"flex-wrap\",\n compact: \"flex-wrap\",\n },\n visible: {\n true: \"opacity-100\",\n false: \"opacity-0 pointer-events-none\",\n },\n },\n defaultVariants: {\n layout: \"horizontal\",\n visible: true,\n },\n }\n)\n\nexport type ApprovalFlowVariantProps = VariantProps<typeof approvalFlowVariants>\nexport type ApprovalFlowStepVariantProps = VariantProps<\n typeof approvalFlowStepVariants\n>\nexport type ApprovalFlowMarkerVariantProps = VariantProps<\n typeof approvalFlowMarkerVariants\n>\nexport type ApprovalFlowConnectorVariantProps = VariantProps<\n typeof approvalFlowConnectorVariants\n>\nexport type ApprovalFlowStepCardVariantProps = VariantProps<\n typeof approvalFlowStepCardVariants\n>\nexport type ApprovalFlowActionsVariantProps = VariantProps<\n typeof approvalFlowActionsVariants\n>\n","import type {\n ApprovalFlowProps,\n ApprovalFlowStepProps,\n ApprovalStep,\n ApprovalStepStatus,\n Approver,\n} from \"./ApprovalFlow.types\"\nimport type { KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n Check,\n ChevronRight,\n Clock,\n Forward,\n TrendingUp,\n User,\n X,\n} from \"lucide-react\"\nimport { useId, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n approvalFlowActionsVariants,\n approvalFlowConnectorVariants,\n approvalFlowMarkerVariants,\n approvalFlowStepCardVariants,\n approvalFlowStepVariants,\n approvalFlowVariants,\n} from \"./ApprovalFlow.variants\"\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Get icon for status\n */\nfunction getStatusIcon(status: ApprovalStepStatus): ReactNode {\n switch (status) {\n case \"approved\":\n return <Check className=\"h-4 w-4\" />\n case \"rejected\":\n return <X className=\"h-4 w-4\" />\n case \"in_progress\":\n case \"awaiting\":\n return <Clock className=\"h-4 w-4\" />\n case \"escalated\":\n return <TrendingUp className=\"h-4 w-4\" />\n case \"skipped\":\n return <Forward className=\"h-4 w-4\" />\n default:\n return null\n }\n}\n\n/**\n * Get accessible status label\n */\nfunction getStatusLabel(status: ApprovalStepStatus): string {\n const labels: Record<ApprovalStepStatus, string> = {\n pending: \"Pending\",\n in_progress: \"In progress\",\n awaiting: \"Awaiting approval\",\n approved: \"Approved\",\n rejected: \"Rejected\",\n escalated: \"Escalated\",\n skipped: \"Skipped\",\n }\n return labels[status]\n}\n\n/**\n * ApprovalFlowMarker component renders the status indicator\n */\nfunction ApprovalFlowMarker({\n index,\n status = \"pending\",\n}: {\n index: number\n status?: ApprovalStepStatus\n}) {\n const icon = getStatusIcon(status)\n\n return (\n <div\n aria-hidden=\"true\"\n className={approvalFlowMarkerVariants({ status })}\n data-slot=\"approval-flow-marker\"\n data-status={status}\n >\n {icon ?? (\n <span className=\"font-medium\">{index + 1}</span>\n )}\n </div>\n )\n}\n\n/**\n * ApprovalFlowConnector component renders the line between steps\n */\nfunction ApprovalFlowConnector({\n layout = \"horizontal\",\n status = \"pending\",\n isConditional = false,\n}: {\n isConditional?: boolean\n layout?: \"compact\" | \"horizontal\" | \"vertical\"\n status?: ApprovalStepStatus\n}) {\n return (\n <div\n className={approvalFlowConnectorVariants({\n layout,\n status,\n style: isConditional ? \"dashed\" : \"solid\",\n })}\n aria-hidden=\"true\"\n data-slot=\"approval-flow-connector\"\n />\n )\n}\n\n/**\n * ApproverAvatar component renders an approver's avatar\n */\nfunction ApproverAvatar({ approver }: { approver: Approver }) {\n return (\n <div className=\"flex items-center gap-2\" title={`${approver.name} (${approver.role})`}>\n <Avatar size=\"sm\">\n {approver.avatar ? (\n <AvatarImage alt={approver.name} src={approver.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(approver.name)}</AvatarFallback>\n </Avatar>\n </div>\n )\n}\n\n/**\n * ApprovalFlowStepContent renders the content of a step\n */\nfunction ApprovalFlowStepContent({\n step,\n layout = \"horizontal\",\n}: {\n layout?: \"compact\" | \"horizontal\" | \"vertical\"\n step: ApprovalStep\n}) {\n const showApproversCount = step.approvers.length > 3\n const visibleApprovers = showApproversCount\n ? step.approvers.slice(0, 3)\n : step.approvers\n\n return (\n <div\n className={approvalFlowStepCardVariants({ status: step.status, layout })}\n data-slot=\"approval-flow-step-card\"\n >\n <div className=\"space-y-2\">\n <div data-slot=\"approval-flow-step-title\">\n <span className=\"text-sm font-medium text-foreground\">\n {step.title}\n </span>\n </div>\n\n {step.description && (\n <div data-slot=\"approval-flow-step-description\">\n <span className=\"text-xs text-muted-foreground\">\n {step.description}\n </span>\n </div>\n )}\n\n {step.approvers.length > 0 && (\n <div\n className=\"flex items-center gap-1\"\n data-slot=\"approval-flow-step-approvers\"\n >\n <div className=\"flex -space-x-2\">\n {visibleApprovers.map((approver) => (\n <ApproverAvatar key={approver.id} approver={approver} />\n ))}\n </div>\n {showApproversCount && (\n <span className=\"ml-2 text-xs text-muted-foreground\">\n +{step.approvers.length - 3} more\n </span>\n )}\n </div>\n )}\n\n {step.requiredApprovals && step.requiredApprovals > 1 && (\n <div\n className=\"text-xs text-muted-foreground\"\n data-slot=\"approval-flow-step-required\"\n >\n Requires {step.requiredApprovals} of {step.approvers.length} approvals\n </div>\n )}\n\n {step.deadline && (\n <div\n className=\"flex items-center gap-1 text-xs text-muted-foreground\"\n data-slot=\"approval-flow-step-deadline\"\n >\n <Clock className=\"h-3 w-3\" />\n <span>Due: {step.deadline.toLocaleDateString()}</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * ApprovalFlowStep component renders a single approval step\n */\nfunction ApprovalFlowStep({\n step,\n index,\n isCurrent,\n isLast,\n showConnector = true,\n layout = \"horizontal\",\n readOnly = false,\n allowDelegation = true,\n allowEscalation = true,\n onApprove,\n onReject,\n onDelegate,\n onEscalate,\n className,\n ...props\n}: ApprovalFlowStepProps) {\n const stepId = useId()\n const statusLabel = getStatusLabel(step.status)\n // Normalize null to undefined for layout\n const normalizedLayout = layout ?? \"horizontal\"\n const canAct =\n isCurrent &&\n !readOnly &&\n (step.status === \"in_progress\" || step.status === \"awaiting\")\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const target = event.currentTarget\n const parent = target.parentElement\n if (!parent) return\n\n const siblings = [\n ...parent.querySelectorAll('[data-slot=\"approval-flow-step\"]'),\n ] as HTMLDivElement[]\n const currentIndex = siblings.indexOf(target)\n\n let nextIndex = -1\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n event.preventDefault()\n nextIndex = Math.min(currentIndex + 1, siblings.length - 1)\n break\n case \"ArrowUp\":\n case \"ArrowLeft\":\n event.preventDefault()\n nextIndex = Math.max(currentIndex - 1, 0)\n break\n default:\n return\n }\n\n const nextElement = siblings[nextIndex]\n if (nextIndex !== -1 && nextElement) {\n nextElement.focus()\n }\n }\n\n return (\n <div\n className={cn(\n approvalFlowStepVariants({ layout: normalizedLayout, status: step.status }),\n className\n )}\n aria-current={isCurrent ? \"step\" : undefined}\n aria-describedby={`${stepId}-description`}\n aria-label={`${step.title} - ${statusLabel}`}\n data-active={isCurrent ? \"\" : undefined}\n data-slot=\"approval-flow-step\"\n data-status={step.status}\n role=\"listitem\"\n tabIndex={0}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Marker and Connector for vertical/compact layouts */}\n {(normalizedLayout === \"vertical\" || normalizedLayout === \"compact\") && (\n <div className=\"relative flex flex-col items-center\">\n <ApprovalFlowMarker index={index} status={step.status} />\n {showConnector && !isLast && (\n <ApprovalFlowConnector layout={normalizedLayout} status={step.status} />\n )}\n </div>\n )}\n\n {/* Main content wrapper */}\n <div className=\"flex flex-1 flex-col gap-2\">\n {/* Marker for horizontal layout */}\n {normalizedLayout === \"horizontal\" && (\n <div className=\"flex items-center justify-center\">\n <ApprovalFlowMarker index={index} status={step.status} />\n </div>\n )}\n\n {/* Step content */}\n <ApprovalFlowStepContent layout={normalizedLayout} step={step} />\n\n {/* Actions */}\n <div\n className={approvalFlowActionsVariants({\n layout: normalizedLayout,\n visible: canAct,\n })}\n data-slot=\"approval-flow-step-actions\"\n id={`${stepId}-description`}\n >\n {canAct && (\n <>\n <Button\n aria-label={`Approve ${step.title}`}\n size=\"sm\"\n variant=\"default\"\n onClick={onApprove}\n >\n <Check className=\"h-4 w-4\" />\n Approve\n </Button>\n <Button\n aria-label={`Reject ${step.title}`}\n size=\"sm\"\n variant=\"destructive\"\n onClick={onReject}\n >\n <X className=\"h-4 w-4\" />\n Reject\n </Button>\n {allowDelegation && (\n <Button\n aria-label={`Delegate ${step.title}`}\n size=\"sm\"\n variant=\"outline\"\n onClick={onDelegate}\n >\n <User className=\"h-4 w-4\" />\n Delegate\n </Button>\n )}\n {allowEscalation && (\n <Button\n aria-label={`Escalate ${step.title}`}\n size=\"sm\"\n variant=\"outline\"\n onClick={onEscalate}\n >\n <TrendingUp className=\"h-4 w-4\" />\n Escalate\n </Button>\n )}\n </>\n )}\n </div>\n </div>\n\n {/* Connector for horizontal layout */}\n {normalizedLayout === \"horizontal\" && showConnector && !isLast && (\n <div className=\"flex items-center self-start mt-5\">\n <ApprovalFlowConnector layout={normalizedLayout} status={step.status} />\n <ChevronRight className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n </div>\n )}\n </div>\n )\n}\n\n/**\n * ApprovalFlow component displays and manages an approval workflow.\n *\n * @example\n * ```tsx\n * const steps = [\n * { id: \"1\", title: \"Request\", status: \"approved\", approvers: [] },\n * { id: \"2\", title: \"Manager\", status: \"in_progress\", approvers: [{ id: \"1\", name: \"John\", email: \"john@example.com\", role: \"Manager\" }] },\n * { id: \"3\", title: \"Director\", status: \"pending\", approvers: [] },\n * ]\n *\n * <ApprovalFlow\n * steps={steps}\n * currentStep={1}\n * onApprove={({ stepId }) => console.log(\"Approved:\", stepId)}\n * onReject={({ stepId, reason }) => console.log(\"Rejected:\", stepId, reason)}\n * />\n * ```\n */\nfunction ApprovalFlow({\n \"aria-label\": ariaLabel = \"Approval workflow\",\n className,\n steps,\n currentStep = 0,\n variant = \"linear\",\n layout = \"horizontal\",\n allowDelegation = true,\n allowEscalation = true,\n showTimeline: _showTimeline = true,\n showComments: _showComments = true,\n readOnly = false,\n history: _history,\n onApprove,\n onReject,\n onDelegate,\n onEscalate,\n onStepChange: _onStepChange,\n onComplete: _onComplete,\n ...props\n}: ApprovalFlowProps) {\n const [_activeStepIndex, setActiveStepIndex] = useState(currentStep)\n\n // Determine effective layout based on screen size\n // On mobile, force vertical layout\n const effectiveLayout = layout\n\n const handleApprove = (stepId: string) => {\n onApprove?.({ stepId })\n }\n\n const handleReject = (stepId: string) => {\n // In a real implementation, this would open a dialog for the reason\n onReject?.({ stepId, reason: \"\" })\n }\n\n const handleDelegate = (stepId: string) => {\n // In a real implementation, this would open a dialog to select delegate\n onDelegate?.({\n stepId,\n delegateTo: { id: \"\", name: \"\", email: \"\", role: \"\" },\n })\n }\n\n const handleEscalate = (stepId: string) => {\n // In a real implementation, this would open a dialog to select escalation target\n onEscalate?.({\n stepId,\n escalateTo: { id: \"\", name: \"\", email: \"\", role: \"\" },\n })\n }\n\n // Handle keyboard navigation between steps\n const handleStepFocus = (index: number) => {\n setActiveStepIndex(index)\n }\n\n const hasSteps = steps.length > 0\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(approvalFlowVariants({ variant, layout: effectiveLayout }), className)}\n data-slot=\"approval-flow\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {hasSteps\n ? steps.map((step, index) => (\n <ApprovalFlowStep\n key={step.id}\n allowDelegation={allowDelegation}\n allowEscalation={allowEscalation}\n index={index}\n isCurrent={index === currentStep}\n isLast={index === steps.length - 1}\n layout={effectiveLayout}\n readOnly={readOnly}\n showConnector={variant !== \"conditional\"}\n step={step}\n onApprove={() => { handleApprove(step.id); }}\n onDelegate={() => { handleDelegate(step.id); }}\n onEscalate={() => { handleEscalate(step.id); }}\n onFocus={() => { handleStepFocus(index); }}\n onReject={() => { handleReject(step.id); }}\n />\n ))\n : null}\n </div>\n )\n}\n\nexport {\n ApprovalFlow,\n approvalFlowActionsVariants,\n ApprovalFlowConnector,\n approvalFlowConnectorVariants,\n ApprovalFlowMarker,\n approvalFlowMarkerVariants,\n ApprovalFlowStep,\n approvalFlowStepCardVariants,\n approvalFlowStepVariants,\n approvalFlowVariants,\n}\nexport type {\n ApprovalFlowProps,\n ApprovalFlowStepProps,\n ApprovalStep,\n ApprovalStepStatus,\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { useButtonGroup } from './chunk-TAZPML2P.js';
2
- import { Badge } from './chunk-4GVOOXYD.js';
1
+ import { useButtonGroup } from './chunk-G2CMEHW6.js';
2
+ import { Badge } from './chunk-6ABGMOE2.js';
3
3
  import { Tooltip, TooltipTrigger, TooltipContent } from './chunk-7ZJ32KRQ.js';
4
4
  import { cn } from './chunk-HRNDJU7D.js';
5
5
  import { Slot } from '@radix-ui/react-slot';
@@ -9,7 +9,7 @@ import * as React from 'react';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
10
 
11
11
  var buttonVariants = cva(
12
- "inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-button-ring-brand focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative",
12
+ "inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative",
13
13
  {
14
14
  variants: {
15
15
  fullWidth: {
@@ -229,5 +229,5 @@ function Button({
229
229
  }
230
230
 
231
231
  export { Button, buttonVariants };
232
- //# sourceMappingURL=chunk-7TF5PVEU.js.map
233
- //# sourceMappingURL=chunk-7TF5PVEU.js.map
232
+ //# sourceMappingURL=chunk-X5XP5QVO.js.map
233
+ //# sourceMappingURL=chunk-X5XP5QVO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/primitives/Button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-X5XP5QVO.js","sourcesContent":["import type { ButtonEventPayload, ButtonProps } from \"./Button.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport { Badge } from \"../Badge/Badge\"\nimport { useButtonGroup } from \"../ButtonGroup/ButtonGroup\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative\",\n {\n variants: {\n fullWidth: {\n true: \"flex w-full\",\n false: \"\",\n },\n variant: {\n default:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n primary:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n destructive:\n \"bg-[color:var(--button-destructive-bg-default)] text-[color:var(--button-destructive-fg-default)] hover:bg-[color:var(--button-destructive-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-destructive)] dark:bg-destructive/60 hover:translate-y-px active:translate-y-0.5\",\n outline:\n \"border border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n dashed:\n \"border border-dashed border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-secondary)] hover:translate-y-px active:translate-y-0.5\",\n \"secondary-gray\":\n \"bg-[color:var(--button-secondary-gray-bg-default)] text-[color:var(--button-secondary-gray-fg-default)] border border-[color:var(--button-secondary-gray-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-gray-bg-hover)] hover:text-[color:var(--button-secondary-gray-fg-hover)] hover:border-[color:var(--button-secondary-gray-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-gray)] disabled:bg-[color:var(--button-secondary-gray-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n \"secondary-color\":\n \"bg-[color:var(--button-secondary-color-bg-default)] text-[color:var(--button-secondary-color-fg-default)] border border-[color:var(--button-secondary-color-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-color-bg-hover)] hover:text-[color:var(--button-secondary-color-fg-hover)] hover:border-[color:var(--button-secondary-color-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] disabled:bg-[color:var(--button-secondary-color-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n ghost:\n \"text-[color:var(--button-ghost-fg-default)] hover:bg-[color:var(--button-ghost-bg-hover)] hover:text-[color:var(--button-ghost-fg-hover)] dark:hover:bg-accent/50 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-ghost)] hover:translate-y-px active:translate-y-0.5\",\n link: \"text-shadow-button underline-offset-4 hover:underline focus-visible:underline\",\n \"link-gray\":\n \"text-[color:var(--button-link-gray-fg-default)] hover:text-[color:var(--button-link-gray-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"link-color\":\n \"text-[color:var(--button-link-color-fg-default)] hover:text-[color:var(--button-link-color-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"tertiary-gray\":\n \"text-[color:var(--button-tertiary-gray-fg-default)] hover:text-[color:var(--button-tertiary-gray-fg-hover)] hover:bg-[color:var(--button-tertiary-gray-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n \"tertiary-color\":\n \"text-[color:var(--button-tertiary-color-fg-default)] hover:text-[color:var(--button-tertiary-color-fg-hover)] hover:bg-[color:var(--button-tertiary-color-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n success:\n \"bg-[color:var(--button-success-bg-default)] text-[color:var(--button-success-fg-default)] hover:bg-[color:var(--button-success-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-success)] hover:translate-y-px active:translate-y-0.5\",\n warning:\n \"bg-[color:var(--button-warning-bg-default)] text-[color:var(--button-warning-fg-default)] hover:bg-[color:var(--button-warning-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-warning)] hover:translate-y-px active:translate-y-0.5\",\n unstyled: \"bg-transparent text-current border-0 p-0 h-auto rounded-none hover:bg-transparent shadow-none w-auto\",\n },\n size: {\n default: \"h-[var(--button-size-default-h)] px-[var(--button-size-default-px)] py-[var(--button-size-default-py)] text-[length:var(--button-size-default-text)] leading-[var(--button-size-default-leading)] gap-[var(--button-size-default-gap)]\",\n sm: \"h-[var(--button-size-sm-h)] px-[var(--button-size-sm-px)] py-[var(--button-size-sm-py)] text-[length:var(--button-size-sm-text)] leading-[var(--button-size-sm-leading)] gap-[var(--button-size-sm-gap)]\",\n lg: \"h-[var(--button-size-lg-h)] px-[var(--button-size-lg-px)] py-[var(--button-size-lg-py)] text-[length:var(--button-size-lg-text)] leading-[var(--button-size-lg-leading)] gap-[var(--button-size-lg-gap)]\",\n icon: \"size-[var(--button-size-icon-size)] p-0 gap-0\",\n \"icon-sm\": \"size-[var(--button-size-icon-sm-size)] p-0 gap-0\",\n },\n shape: {\n default: \"\",\n square: \"rounded-md\",\n circle: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n fullWidth: false,\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n tone,\n size,\n shape,\n fullWidth = false,\n asChild = false,\n badge,\n badgeColor = \"destructive\",\n badgeSize = \"sm\",\n loading = false,\n loadingText,\n icon,\n leftIcon,\n rightIcon,\n disabled,\n children,\n tooltip,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n \"data-id\": dataId,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : \"button\"\n\n // Get ButtonGroup context for prop inheritance\n const groupContext = useButtonGroup()\n\n // Merge props with group context (individual props take precedence)\n const effectiveSize = size ?? groupContext?.size\n const effectiveVariant = variant ?? groupContext?.buttonVariant\n const effectiveDisabled = disabled ?? groupContext?.disabled\n\n const isDisabled = effectiveDisabled ?? loading\n // Resolve virtual variants (tertiary, secondary with tone, link with tone) to actual CVA variants\n const resolvedVariant = (() => {\n // Handle virtual \"tertiary\" variant - always resolves to tertiary-gray or tertiary-color\n if (effectiveVariant === \"tertiary\") {\n return tone === \"color\" ? \"tertiary-color\" : \"tertiary-gray\"\n }\n // Handle secondary with tone\n if (effectiveVariant === \"secondary\" && tone) {\n return tone === \"gray\" ? \"secondary-gray\" : \"secondary-color\"\n }\n // Handle link with tone\n if (effectiveVariant === \"link\" && tone) {\n return tone === \"gray\" ? \"link-gray\" : \"link-color\"\n }\n // Return variant as-is for all other cases\n return effectiveVariant\n })()\n\n // Default to icon size if icon prop is provided and size is undefined\n const defaultSize = icon && !effectiveSize ? \"icon\" : effectiveSize\n\n // Create event payload for callbacks\n const createPayload = React.useCallback((): ButtonEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n timestamp: Date.now(),\n isLoading: loading,\n }), [dataId, loading])\n\n // Wrapped event handlers that emit ButtonEventPayload\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n event.preventDefault()\n return\n }\n onClick?.(event, createPayload())\n },\n [onClick, createPayload, isDisabled]\n )\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onFocus?.(event, createPayload())\n },\n [onFocus, createPayload]\n )\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onBlur?.(event, createPayload())\n },\n [onBlur, createPayload]\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event, createPayload())\n },\n [onKeyDown, createPayload]\n )\n\n // Determine what to render as children\n const renderContent = () => {\n if (asChild) {\n return children\n }\n\n if (loading) {\n const spinner = (\n <LoaderCircle\n className={cn(\n \"animate-spin\",\n // Center absolutely if we are preserving width (no loadingText)\n !loadingText && !defaultSize?.toString().startsWith(\"icon\") && \"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n )}\n aria-hidden=\"true\"\n data-slot=\"loading-icon\"\n data-testid=\"loading-icon\"\n />\n )\n\n if (defaultSize?.toString().startsWith(\"icon\")) {\n return spinner\n }\n\n if (loadingText) {\n return (\n <>\n {spinner}\n {loadingText}\n </>\n )\n }\n\n // Preserve width by rendering hidden children\n return (\n <>\n {spinner}\n <span aria-hidden=\"true\" className=\"opacity-0 flex items-center gap-2\">\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </span>\n </>\n )\n }\n\n if (icon) {\n return (\n <span aria-hidden=\"true\" data-slot=\"icon\">\n {icon}\n </span>\n )\n }\n\n return (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </>\n )\n }\n\n const buttonElement = (\n <Comp\n className={cn(\n buttonVariants({\n variant: resolvedVariant,\n size: defaultSize,\n shape,\n fullWidth,\n className,\n })\n )}\n aria-busy={loading || undefined}\n aria-disabled={isDisabled || undefined}\n data-id={dataId}\n data-loading={loading || undefined}\n data-slot=\"button\"\n disabled={isDisabled}\n onBlur={handleBlur}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n {...props}\n aria-label={loading && !loadingText ? \"Loading\" : props[\"aria-label\"]}\n >\n {/* When asChild=true, Slot requires exactly ONE child element */}\n {asChild ? (\n children\n ) : (\n <>\n {renderContent()}\n {badge !== undefined && (\n <Badge\n className=\"absolute -top-1.5 -right-1.5 min-w-5 h-5 px-1.5 text-xs pointer-events-none\"\n color={badgeColor}\n data-slot=\"button-badge\"\n size={badgeSize}\n type=\"pill-color\"\n >\n {badge}\n </Badge>\n )}\n </>\n )}\n </Comp>\n )\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {buttonElement}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n return buttonElement\n}\n\nexport { Button, buttonVariants }\n"]}
@@ -41,9 +41,9 @@ var fileTreeRowVariants = cva(
41
41
  {
42
42
  variants: {
43
43
  variant: {
44
- ide: "h-[var(--filetree-row-h-ide,24px)] rounded-sm pr-2 text-[12.5px]",
45
- notion: "h-[var(--filetree-row-h-notion,30px)] rounded-md pr-1.5 pl-1 text-[13.5px]",
46
- outline: "h-[var(--filetree-row-h-outline,28px)] rounded-sm px-2.5 text-[13px]"
44
+ ide: "h-[var(--filetree-variant-ide-row-h,24px)] rounded-[var(--filetree-row-radius,4px)] pr-[var(--filetree-row-padding-x,8px)] text-[length:var(--filetree-variant-ide-text,12.5px)]",
45
+ notion: "h-[var(--filetree-variant-notion-row-h,30px)] rounded-md pr-1.5 pl-1 text-[length:var(--filetree-variant-notion-text,13.5px)]",
46
+ outline: "h-[var(--filetree-variant-outline-row-h,28px)] rounded-[var(--filetree-row-radius,4px)] px-2.5 text-[length:var(--filetree-variant-outline-text,13px)]"
47
47
  }
48
48
  },
49
49
  defaultVariants: {
@@ -91,7 +91,7 @@ function FileTreeHeader({ className, children, ...props }) {
91
91
  "div",
92
92
  {
93
93
  className: cn(
94
- "flex items-center gap-2.5 px-3.5 pt-3.5 pb-3 border-b border-[color:var(--filetree-shell-border,var(--sidebar-border))]",
94
+ "flex items-center gap-[var(--filetree-project-gap)] px-[var(--filetree-project-padding-x)] pt-[var(--filetree-project-padding-top)] pb-[var(--filetree-project-padding-bottom)] border-b border-[color:var(--filetree-shell-border,var(--sidebar-border))]",
95
95
  className
96
96
  ),
97
97
  "data-slot": "filetree-header",
@@ -105,9 +105,9 @@ function FileTreeProjectBadge({ className, ...props }) {
105
105
  "div",
106
106
  {
107
107
  className: cn(
108
- "grid place-items-center shrink-0 size-7 rounded-md",
109
- "bg-[color:var(--brand-primary-500,var(--primary))] text-[color:var(--brand-primary-900,var(--primary-foreground))]",
110
- "text-[12px] font-bold tracking-[-0.02em]",
108
+ "grid place-items-center shrink-0 size-[var(--filetree-project-badge-size)] rounded-[var(--filetree-project-badge-radius)]",
109
+ "bg-[color:var(--filetree-project-badge-bg)] text-[color:var(--filetree-project-badge-fg)]",
110
+ "text-[length:var(--filetree-project-badge-text)] font-[number:var(--filetree-project-badge-weight)] tracking-[-0.02em]",
111
111
  className
112
112
  ),
113
113
  "data-slot": "filetree-project-badge",
@@ -117,8 +117,8 @@ function FileTreeProjectBadge({ className, ...props }) {
117
117
  }
118
118
  function FileTreeProjectMeta({ name, sub }) {
119
119
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col min-w-0 flex-1 leading-tight", "data-slot": "filetree-project-meta", children: [
120
- /* @__PURE__ */ jsx("span", { className: "text-[13px] font-semibold truncate", "data-slot": "filetree-project-name", children: name }),
121
- sub && /* @__PURE__ */ jsx("span", { className: "text-[11px] text-[color:var(--muted-foreground)] truncate", "data-slot": "filetree-project-sub", children: sub })
120
+ /* @__PURE__ */ jsx("span", { className: "text-[length:var(--filetree-project-name-text)] font-[number:var(--filetree-project-name-weight)] truncate", "data-slot": "filetree-project-name", children: name }),
121
+ sub && /* @__PURE__ */ jsx("span", { className: "text-[length:var(--filetree-project-sub-text)] text-[color:var(--filetree-project-sub-fg)] truncate", "data-slot": "filetree-project-sub", children: sub })
122
122
  ] });
123
123
  }
124
124
  function FileTreeToolbar({ className, children, ...props }) {
@@ -126,7 +126,7 @@ function FileTreeToolbar({ className, children, ...props }) {
126
126
  return /* @__PURE__ */ jsx(
127
127
  "div",
128
128
  {
129
- className: cn("flex items-center gap-1.5 px-3 py-2.5", className),
129
+ className: cn("flex items-center gap-[var(--filetree-toolbar-gap)] px-[var(--filetree-toolbar-padding-x)] py-[var(--filetree-toolbar-padding-y)]", className),
130
130
  "data-slot": "filetree-toolbar",
131
131
  ...props,
132
132
  children
@@ -147,8 +147,8 @@ function FileTreeSearch({
147
147
  "label",
148
148
  {
149
149
  className: cn(
150
- "flex items-center gap-1.5 flex-1 min-w-0 h-7 px-2 rounded-md",
151
- "bg-[color:var(--muted)] border border-transparent text-[color:var(--muted-foreground)] text-[12px]",
150
+ "flex items-center gap-1.5 flex-1 min-w-0 h-[var(--filetree-toolbar-search-h)] px-[var(--filetree-toolbar-search-px)] rounded-[var(--filetree-toolbar-search-radius)]",
151
+ "bg-[color:var(--filetree-toolbar-search-bg)] border border-transparent text-[color:var(--muted-foreground)] text-[length:var(--filetree-toolbar-search-text)]",
152
152
  "transition-[border-color,background-color] duration-100",
153
153
  "focus-within:border-[color:var(--ring)] focus-within:bg-[color:var(--background)]"
154
154
  ),
@@ -165,7 +165,7 @@ function FileTreeSearch({
165
165
  onChange: (e) => handle?.(e.target.value)
166
166
  }
167
167
  ),
168
- shortcut && /* @__PURE__ */ jsx("kbd", { className: "font-mono text-[10px] bg-[color:var(--neutral-200,var(--muted))] text-[color:var(--muted-foreground)] px-1.5 py-px rounded-xs", children: shortcut })
168
+ shortcut && /* @__PURE__ */ jsx("kbd", { className: "font-mono text-[length:var(--filetree-toolbar-search-kbd-text)] bg-[color:var(--neutral-200,var(--muted))] text-[color:var(--muted-foreground)] px-1.5 py-px rounded-xs", children: shortcut })
169
169
  ]
170
170
  }
171
171
  );
@@ -180,7 +180,7 @@ function FileTreeAction({
180
180
  "button",
181
181
  {
182
182
  className: cn(
183
- "grid place-items-center shrink-0 size-7 rounded-md",
183
+ "grid place-items-center shrink-0 size-[var(--filetree-toolbar-action-size)] rounded-[var(--filetree-toolbar-action-radius)]",
184
184
  "bg-transparent text-[color:var(--muted-foreground)] cursor-pointer",
185
185
  "transition-colors hover:bg-[color:var(--muted)] hover:text-[color:var(--foreground)]",
186
186
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",
@@ -218,12 +218,12 @@ function FileTreeFooter({
218
218
  "div",
219
219
  {
220
220
  className: cn(
221
- "flex items-center gap-2 px-3 py-2.5 border-t border-[color:var(--filetree-shell-border,var(--sidebar-border))]",
222
- "text-[12px] text-[color:var(--muted-foreground)]"
221
+ "flex items-center gap-[var(--filetree-footer-gap)] px-[var(--filetree-footer-padding-x)] py-[var(--filetree-footer-padding-y)] border-t border-[color:var(--filetree-shell-border,var(--sidebar-border))]",
222
+ "text-[length:var(--filetree-footer-text)] text-[color:var(--muted-foreground)]"
223
223
  ),
224
224
  "data-slot": "filetree-footer",
225
225
  children: [
226
- branch && /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-[color:var(--foreground)] font-medium font-mono text-[11.5px]", children: [
226
+ branch && /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-[color:var(--foreground)] font-[number:var(--filetree-footer-branch-weight)] font-mono text-[length:var(--filetree-footer-branch-text)]", children: [
227
227
  /* @__PURE__ */ jsx(GitBranchIcon, { size: 12 }),
228
228
  branch
229
229
  ] }),
@@ -232,9 +232,9 @@ function FileTreeFooter({
232
232
  "span",
233
233
  {
234
234
  className: cn(
235
- "ml-auto size-1.5 rounded-full",
236
- "bg-[color:var(--primary)]",
237
- "ring-[3px] ring-[color:var(--primary)]/20"
235
+ "ml-auto size-[var(--filetree-footer-dot-size)] rounded-full",
236
+ "bg-[color:var(--filetree-footer-dot-color)]",
237
+ "shadow-[var(--filetree-footer-dot-ring)]"
238
238
  ),
239
239
  "data-slot": "filetree-footer-indicator"
240
240
  }
@@ -262,7 +262,7 @@ function FileTreeNodeRenderer({ node, depth }) {
262
262
  ctx.select(node.path, node);
263
263
  }
264
264
  };
265
- const indentPx = ctx.variant === "notion" ? depth * 18 : ctx.variant === "outline" ? depth * 16 : depth * 14;
265
+ const indentVar = ctx.variant === "notion" ? "--filetree-variant-notion-indent" : ctx.variant === "outline" ? "--filetree-variant-outline-indent" : "--filetree-variant-ide-indent";
266
266
  const handleClick = () => {
267
267
  ctx.select(node.path, node);
268
268
  if (isFolder) ctx.toggle(node.path);
@@ -312,18 +312,18 @@ function FileTreeNodeRenderer({ node, depth }) {
312
312
  if (isFolder) ctx.toggle(node.path);
313
313
  }
314
314
  };
315
- const leading = ctx.renderLeading ? ctx.renderLeading(node, rowContext) : isFolder ? /* @__PURE__ */ jsx("span", { className: "grid place-items-center shrink-0 w-[18px] text-[color:var(--brand-primary-600,var(--primary))]", children: isExpanded ? /* @__PURE__ */ jsx(FolderOpenIcon, { size: 14 }) : /* @__PURE__ */ jsx(FolderIcon, { size: 14 }) }) : /* @__PURE__ */ jsx("span", { className: "grid place-items-center shrink-0 w-[18px] text-[color:var(--muted-foreground)]", children: /* @__PURE__ */ jsx(FileIcon, { size: 14 }) });
315
+ const leading = ctx.renderLeading ? ctx.renderLeading(node, rowContext) : isFolder ? /* @__PURE__ */ jsx("span", { className: "grid place-items-center shrink-0 w-[var(--filetree-variant-ide-folder-icon-w)] text-[color:var(--filetree-variant-ide-folder-icon-color)]", children: isExpanded ? /* @__PURE__ */ jsx(FolderOpenIcon, { size: 14 }) : /* @__PURE__ */ jsx(FolderIcon, { size: 14 }) }) : /* @__PURE__ */ jsx("span", { className: "grid place-items-center shrink-0 w-[var(--filetree-variant-ide-folder-icon-w)] text-[color:var(--muted-foreground)]", children: /* @__PURE__ */ jsx(FileIcon, { size: 14 }) });
316
316
  const trailing = ctx.renderTrailing?.(node, rowContext);
317
317
  if (ctx.variant === "outline") {
318
318
  const isL0 = isFolder && depth === 0;
319
319
  const rowEl = ctx.renderRow ? ctx.renderRow(node, rowContext) : /* @__PURE__ */ jsxs(Fragment, { children: [
320
- isFolder && !isL0 && /* @__PURE__ */ jsx("span", { className: cn("inline-block w-[10px] shrink-0 text-[color:var(--muted-foreground)] font-mono text-[12px] transition-transform", isExpanded && "rotate-90"), children: "\u203A" }),
320
+ isFolder && !isL0 && /* @__PURE__ */ jsx("span", { className: cn("inline-block w-[var(--filetree-variant-outline-marker-w)] shrink-0 text-[color:var(--muted-foreground)] font-mono text-[length:var(--filetree-variant-outline-marker-text)] transition-transform", isExpanded && "rotate-90"), children: "\u203A" }),
321
321
  /* @__PURE__ */ jsx("span", { className: cn(
322
322
  "flex-1 overflow-hidden text-ellipsis whitespace-nowrap",
323
- isL0 && "text-[11px] font-bold uppercase tracking-[0.08em] text-[color:var(--muted-foreground)]",
323
+ isL0 && "text-[length:var(--filetree-variant-outline-l0-text)] font-[number:var(--filetree-variant-outline-l0-weight)] uppercase tracking-[var(--filetree-variant-outline-l0-tracking)] text-[color:var(--muted-foreground)]",
324
324
  !isL0 && isFolder && "font-semibold tracking-[-0.005em] text-[color:var(--foreground)]"
325
325
  ), children: node.name }),
326
- !isFolder && /* @__PURE__ */ jsx("span", { className: cn("size-[7px] rounded-full shrink-0", node.modified ? "bg-[color:var(--brand-primary-500,var(--primary))]" : "bg-[color:var(--muted)]") }),
326
+ !isFolder && /* @__PURE__ */ jsx("span", { className: cn("size-[var(--filetree-variant-outline-status-size)] rounded-full shrink-0", node.modified ? "bg-[color:var(--filetree-row-modified-color)]" : "bg-[color:var(--muted)]") }),
327
327
  trailing
328
328
  ] });
329
329
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -332,7 +332,7 @@ function FileTreeNodeRenderer({ node, depth }) {
332
332
  {
333
333
  className: cn(
334
334
  fileTreeRowVariants({ variant: "outline" }),
335
- isL0 && "h-[30px] mt-3 first:mt-0",
335
+ isL0 && "h-[var(--filetree-variant-outline-l0-h)] mt-[var(--filetree-variant-outline-l0-margin-top)] first:mt-0",
336
336
  node.disabled && "opacity-50 pointer-events-none"
337
337
  ),
338
338
  "aria-disabled": node.disabled ?? void 0,
@@ -345,7 +345,7 @@ function FileTreeNodeRenderer({ node, depth }) {
345
345
  "data-l0": isL0 || void 0,
346
346
  "data-slot": "filetree-row",
347
347
  role: "treeitem",
348
- style: { paddingLeft: `${String(10 + indentPx)}px` },
348
+ style: { paddingLeft: `calc(10px + ${String(depth)} * var(${indentVar}))` },
349
349
  tabIndex: isFocused ? 0 : -1,
350
350
  onClick: handleClick,
351
351
  onKeyDown: handleKeyDown,
@@ -360,19 +360,19 @@ function FileTreeNodeRenderer({ node, depth }) {
360
360
  "span",
361
361
  {
362
362
  className: cn(
363
- "grid place-items-center shrink-0 w-4 text-[color:var(--muted-foreground)] transition-transform",
364
- ctx.variant === "notion" && "w-5 h-[22px] rounded-sm opacity-0 group-hover/ftrow:opacity-100",
363
+ "grid place-items-center shrink-0 w-[var(--filetree-variant-ide-chev-w)] text-[color:var(--muted-foreground)] transition-transform",
364
+ ctx.variant === "notion" && "w-[var(--filetree-variant-notion-chev-w)] h-[var(--filetree-variant-notion-chev-h)] rounded-sm opacity-0 group-hover/ftrow:opacity-100",
365
365
  isExpanded && "rotate-90"
366
366
  ),
367
367
  children: /* @__PURE__ */ jsx(ChevronRight, { size: 12 })
368
368
  }
369
- ) : /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("inline-block shrink-0 w-4 h-6", ctx.variant === "notion" && "w-5 h-[22px]") });
369
+ ) : /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("inline-block shrink-0 w-[var(--filetree-variant-ide-chev-w)] h-[var(--filetree-variant-ide-chev-h)]", ctx.variant === "notion" && "w-[var(--filetree-variant-notion-chev-w)] h-[var(--filetree-variant-notion-chev-h)]") });
370
370
  const indentEls = ctx.variant === "ide" ? Array.from({ length: depth }, (_, i) => /* @__PURE__ */ jsx(
371
371
  "span",
372
372
  {
373
373
  "aria-hidden": "true",
374
- className: "relative shrink-0 w-[14px] self-stretch",
375
- children: /* @__PURE__ */ jsx("span", { className: "absolute left-2 top-0 bottom-0 w-px bg-[color:var(--neutral-200)] dark:bg-[color:var(--neutral-800)]" })
374
+ className: "relative shrink-0 w-[var(--filetree-variant-ide-indent)] self-stretch",
375
+ children: /* @__PURE__ */ jsx("span", { className: "absolute left-2 top-0 bottom-0 w-px bg-[color:var(--filetree-variant-ide-indent-guide-color)]" })
376
376
  },
377
377
  i
378
378
  )) : null;
@@ -382,7 +382,7 @@ function FileTreeNodeRenderer({ node, depth }) {
382
382
  leading,
383
383
  /* @__PURE__ */ jsx("span", { className: "pl-1.5 overflow-hidden text-ellipsis whitespace-nowrap flex-1", children: node.name }),
384
384
  trailing,
385
- node.modified && !isFolder && /* @__PURE__ */ jsx("span", { className: "ml-1 text-[color:var(--brand-primary-600,var(--primary))] font-bold", children: "\u25CF" })
385
+ node.modified && !isFolder && /* @__PURE__ */ jsx("span", { className: "ml-1 text-[color:var(--filetree-row-modified-color)] font-bold", children: "\u25CF" })
386
386
  ] });
387
387
  return /* @__PURE__ */ jsxs(Fragment, { children: [
388
388
  /* @__PURE__ */ jsx(
@@ -402,7 +402,7 @@ function FileTreeNodeRenderer({ node, depth }) {
402
402
  "data-folder": isFolder || void 0,
403
403
  "data-slot": "filetree-row",
404
404
  role: "treeitem",
405
- style: ctx.variant === "notion" ? { paddingLeft: `${String(4 + indentPx)}px` } : void 0,
405
+ style: ctx.variant === "notion" ? { paddingLeft: `calc(4px + ${String(depth)} * var(${indentVar}))` } : void 0,
406
406
  tabIndex: isFocused ? 0 : -1,
407
407
  onClick: handleClick,
408
408
  onKeyDown: handleKeyDown,
@@ -520,5 +520,5 @@ FileTree.Body = FileTreeBody;
520
520
  FileTree.Footer = FileTreeFooter;
521
521
 
522
522
  export { FileTree, FileTreeAction, FileTreeBody, FileTreeFooter, FileTreeHeader, FileTreeProjectBadge, FileTreeProjectMeta, FileTreeSearch, FileTreeToolbar, fileTreeRowVariants, fileTreeShellVariants };
523
- //# sourceMappingURL=chunk-7Y2UQMX6.js.map
524
- //# sourceMappingURL=chunk-7Y2UQMX6.js.map
523
+ //# sourceMappingURL=chunk-XKO6G5H2.js.map
524
+ //# sourceMappingURL=chunk-XKO6G5H2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/navigation/FileTree/FileTree.variants.ts","../src/components/navigation/FileTree/FileTree.tsx"],"names":[],"mappings":"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","file":"chunk-XKO6G5H2.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\nexport const fileTreeShellVariants = cva(\n [\n \"flex flex-col h-full select-none\",\n \"bg-[color:var(--filetree-shell-bg,var(--sidebar))]\",\n \"text-[color:var(--filetree-shell-fg,var(--sidebar-foreground))]\",\n \"border-r border-[color:var(--filetree-shell-border,var(--sidebar-border))]\",\n ],\n {\n variants: {\n variant: {\n ide: \"font-mono\",\n notion: \"font-sans\",\n outline: \"font-sans\",\n },\n size: {\n sm: \"w-[var(--filetree-shell-width-sm,240px)]\",\n default: \"w-[var(--filetree-shell-width-default,296px)]\",\n lg: \"w-[var(--filetree-shell-width-lg,320px)]\",\n },\n },\n defaultVariants: {\n variant: \"ide\",\n size: \"default\",\n },\n },\n)\n\nexport const fileTreeRowVariants = cva(\n [\n \"relative flex items-center cursor-pointer\",\n \"transition-colors duration-100\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]\",\n \"data-[active=true]:bg-[color:var(--filetree-row-active-bg,var(--brand-primary-100,var(--accent)))] data-[active=true]:text-[color:var(--filetree-row-active-fg,var(--brand-primary-900,var(--accent-foreground)))]\",\n \"hover:bg-[color:var(--filetree-row-hover-bg,var(--muted))]\",\n ],\n {\n variants: {\n variant: {\n ide: \"h-[var(--filetree-variant-ide-row-h,24px)] rounded-[var(--filetree-row-radius,4px)] pr-[var(--filetree-row-padding-x,8px)] text-[length:var(--filetree-variant-ide-text,12.5px)]\",\n notion: \"h-[var(--filetree-variant-notion-row-h,30px)] rounded-md pr-1.5 pl-1 text-[length:var(--filetree-variant-notion-text,13.5px)]\",\n outline: \"h-[var(--filetree-variant-outline-row-h,28px)] rounded-[var(--filetree-row-radius,4px)] px-2.5 text-[length:var(--filetree-variant-outline-text,13px)]\",\n },\n },\n defaultVariants: {\n variant: \"ide\",\n },\n },\n)\n","\"use client\"\n\nimport type {\n FileTreeNode,\n FileTreeProps,\n FileTreeRowContext,\n} from \"./FileTree.types\"\n\nimport { ChevronRight, FileIcon, FolderIcon, FolderOpenIcon, GitBranchIcon, SearchIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n fileTreeRowVariants,\n fileTreeShellVariants,\n} from \"./FileTree.variants\"\n\n/* ─────────────────────────────────────────────────────────────\n * Context — shares variant/state/handlers with sub-components.\n * ─────────────────────────────────────────────────────────────*/\n\ninterface FileTreeContextValue {\n data: FileTreeNode\n expanded: Record<string, boolean>\n focusedPath: string | undefined\n getNodeProps?: FileTreeProps[\"getNodeProps\"]\n keyboardNav: boolean\n renderLeading?: FileTreeProps[\"renderLeading\"]\n renderRow?: FileTreeProps[\"renderRow\"]\n renderTrailing?: FileTreeProps[\"renderTrailing\"]\n searchOnChange?: (value: string) => void\n searchPlaceholder?: string\n searchValue: string\n select: (path: string, node: FileTreeNode) => void\n selectedPath: string | undefined\n setFocused: (path: string | undefined) => void\n size: \"default\" | \"lg\" | \"sm\"\n toggle: (path: string) => void\n variant: \"ide\" | \"notion\" | \"outline\"\n}\n\nconst FileTreeContext = React.createContext<FileTreeContextValue | null>(null)\n\nfunction useFileTree(): FileTreeContextValue {\n const ctx = React.use(FileTreeContext)\n if (!ctx) throw new Error(\"FileTree sub-components must be used inside <FileTree>.\")\n return ctx\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Utilities\n * ─────────────────────────────────────────────────────────────*/\n\nfunction collectInitialExpanded(node: FileTreeNode, acc: Record<string, boolean> = {}): Record<string, boolean> {\n if (node.kind === \"folder\" && node.open) acc[node.path] = true\n node.children?.forEach((c) => collectInitialExpanded(c, acc))\n return acc\n}\n\nfunction collectInitialActive(node: FileTreeNode): string | undefined {\n if (node.active) return node.path\n if (node.children) {\n for (const c of node.children) {\n const r = collectInitialActive(c)\n if (r) return r\n }\n }\n return undefined\n}\n\n/** Flat list of currently-visible nodes (respects expanded state). Used for keyboard nav. */\nfunction visibleNodes(root: FileTreeNode, expanded: Record<string, boolean>): { depth: number; node: FileTreeNode; }[] {\n const out: { depth: number; node: FileTreeNode; }[] = []\n function walk(n: FileTreeNode, depth: number) {\n if (n !== root) out.push({ node: n, depth })\n if (n.kind === \"folder\" && (n === root || expanded[n.path])) {\n n.children?.forEach((c) => { walk(c, n === root ? 0 : depth + 1); })\n }\n }\n walk(root, -1)\n return out\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Sub-components (Header, Toolbar, Body, Footer)\n * ─────────────────────────────────────────────────────────────*/\n\nfunction FileTreeHeader({ className, children, ...props }: React.ComponentProps<\"div\">) {\n if (!children) return null\n return (\n <div\n className={cn(\n \"flex items-center gap-[var(--filetree-project-gap)] px-[var(--filetree-project-padding-x)] pt-[var(--filetree-project-padding-top)] pb-[var(--filetree-project-padding-bottom)] border-b border-[color:var(--filetree-shell-border,var(--sidebar-border))]\",\n className,\n )}\n data-slot=\"filetree-header\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\nfunction FileTreeProjectBadge({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"grid place-items-center shrink-0 size-[var(--filetree-project-badge-size)] rounded-[var(--filetree-project-badge-radius)]\",\n \"bg-[color:var(--filetree-project-badge-bg)] text-[color:var(--filetree-project-badge-fg)]\",\n \"text-[length:var(--filetree-project-badge-text)] font-[number:var(--filetree-project-badge-weight)] tracking-[-0.02em]\",\n className,\n )}\n data-slot=\"filetree-project-badge\"\n {...props}\n />\n )\n}\n\nfunction FileTreeProjectMeta({ name, sub }: { name: string; sub?: string }) {\n return (\n <div className=\"flex flex-col min-w-0 flex-1 leading-tight\" data-slot=\"filetree-project-meta\">\n <span className=\"text-[length:var(--filetree-project-name-text)] font-[number:var(--filetree-project-name-weight)] truncate\" data-slot=\"filetree-project-name\">\n {name}\n </span>\n {sub && (\n <span className=\"text-[length:var(--filetree-project-sub-text)] text-[color:var(--filetree-project-sub-fg)] truncate\" data-slot=\"filetree-project-sub\">\n {sub}\n </span>\n )}\n </div>\n )\n}\n\nfunction FileTreeToolbar({ className, children, ...props }: React.ComponentProps<\"div\">) {\n if (!children) return null\n return (\n <div\n className={cn(\"flex items-center gap-[var(--filetree-toolbar-gap)] px-[var(--filetree-toolbar-padding-x)] py-[var(--filetree-toolbar-padding-y)]\", className)}\n data-slot=\"filetree-toolbar\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\nfunction FileTreeSearch({\n shortcut,\n placeholder,\n value,\n onChange,\n}: {\n onChange?: (value: string) => void\n placeholder?: string\n shortcut?: string\n value?: string\n}) {\n const ctx = React.use(FileTreeContext)\n // Use context's search props as fallback when this Search component doesn't get explicit ones.\n const ph = placeholder ?? ctx?.searchPlaceholder ?? \"Buscar arquivo…\"\n const val = value ?? ctx?.searchValue ?? \"\"\n const handle = onChange ?? ctx?.searchOnChange\n return (\n <label\n className={cn(\n \"flex items-center gap-1.5 flex-1 min-w-0 h-[var(--filetree-toolbar-search-h)] px-[var(--filetree-toolbar-search-px)] rounded-[var(--filetree-toolbar-search-radius)]\",\n \"bg-[color:var(--filetree-toolbar-search-bg)] border border-transparent text-[color:var(--muted-foreground)] text-[length:var(--filetree-toolbar-search-text)]\",\n \"transition-[border-color,background-color] duration-100\",\n \"focus-within:border-[color:var(--ring)] focus-within:bg-[color:var(--background)]\",\n )}\n data-slot=\"filetree-search\"\n >\n <SearchIcon size={14} />\n <input\n className=\"flex-1 min-w-0 bg-transparent border-0 outline-none text-[color:var(--foreground)] placeholder:text-[color:var(--muted-foreground)]\"\n placeholder={ph}\n type=\"text\"\n value={val}\n onChange={(e) => handle?.(e.target.value)}\n />\n {shortcut && (\n <kbd className=\"font-mono text-[length:var(--filetree-toolbar-search-kbd-text)] bg-[color:var(--neutral-200,var(--muted))] text-[color:var(--muted-foreground)] px-1.5 py-px rounded-xs\">\n {shortcut}\n </kbd>\n )}\n </label>\n )\n}\n\nfunction FileTreeAction({\n icon,\n className,\n children,\n ...props\n}: React.ComponentProps<\"button\"> & { icon?: React.ReactNode }) {\n return (\n <button\n className={cn(\n \"grid place-items-center shrink-0 size-[var(--filetree-toolbar-action-size)] rounded-[var(--filetree-toolbar-action-radius)]\",\n \"bg-transparent text-[color:var(--muted-foreground)] cursor-pointer\",\n \"transition-colors hover:bg-[color:var(--muted)] hover:text-[color:var(--foreground)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]\",\n className,\n )}\n data-slot=\"filetree-action\"\n type=\"button\"\n {...props}\n >\n {icon ?? children}\n </button>\n )\n}\n\nfunction FileTreeBody({ className, ...props }: React.ComponentProps<\"div\">) {\n const ctx = useFileTree()\n return (\n <div\n aria-label=\"File tree\"\n className={cn(\"flex-1 min-h-0 overflow-y-auto px-1.5 pt-1 pb-3\", className)}\n data-slot=\"filetree-body\"\n data-variant={ctx.variant}\n role=\"tree\"\n {...props}\n >\n {ctx.data.children?.map((child) => (\n <FileTreeNodeRenderer key={child.path} depth={0} node={child} />\n ))}\n </div>\n )\n}\n\nfunction FileTreeFooter({\n branch,\n indicator = \"dot\",\n children,\n}: {\n branch?: string\n children?: React.ReactNode\n indicator?: \"dot\" | \"none\"\n}) {\n if (!branch && !children) return null\n return (\n <div\n className={cn(\n \"flex items-center gap-[var(--filetree-footer-gap)] px-[var(--filetree-footer-padding-x)] py-[var(--filetree-footer-padding-y)] border-t border-[color:var(--filetree-shell-border,var(--sidebar-border))]\",\n \"text-[length:var(--filetree-footer-text)] text-[color:var(--muted-foreground)]\",\n )}\n data-slot=\"filetree-footer\"\n >\n {branch && (\n <span className=\"inline-flex items-center gap-1.5 text-[color:var(--foreground)] font-[number:var(--filetree-footer-branch-weight)] font-mono text-[length:var(--filetree-footer-branch-text)]\">\n <GitBranchIcon size={12} />\n {branch}\n </span>\n )}\n {children}\n {indicator === \"dot\" && (\n <span\n className={cn(\n \"ml-auto size-[var(--filetree-footer-dot-size)] rounded-full\",\n \"bg-[color:var(--filetree-footer-dot-color)]\",\n \"shadow-[var(--filetree-footer-dot-ring)]\",\n )}\n data-slot=\"filetree-footer-indicator\"\n />\n )}\n </div>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Row renderer — recursive\n * ─────────────────────────────────────────────────────────────*/\n\n// eslint-disable-next-line sonarjs/cognitive-complexity -- tree node renderer composes 3 variants (ide/notion/outline) + keyboard handler; splitting hurts readability more than it helps\nfunction FileTreeNodeRenderer({ node, depth }: { depth: number; node: FileTreeNode; }) {\n const ctx = useFileTree()\n const isFolder = node.kind === \"folder\"\n const isExpanded = !!ctx.expanded[node.path]\n const isActive = ctx.selectedPath === node.path\n const isFocused = ctx.focusedPath === node.path\n\n const rowContext: FileTreeRowContext = {\n depth,\n isExpanded,\n isActive,\n isFolder,\n isFocused,\n toggle: () => { ctx.toggle(node.path); },\n select: () => { ctx.select(node.path, node); },\n }\n\n // Indent rendering depends on variant. IDE/Notion use guide-lines; outline is pure indent.\n const indentVar = ctx.variant === \"notion\" ? \"--filetree-variant-notion-indent\" : ctx.variant === \"outline\" ? \"--filetree-variant-outline-indent\" : \"--filetree-variant-ide-indent\"\n\n const handleClick = () => {\n ctx.select(node.path, node)\n if (isFolder) ctx.toggle(node.path)\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity -- WAI-ARIA tree keyboard pattern requires 9 distinct key branches; refactoring obscures the spec mapping\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!ctx.keyboardNav) return\n const flat = visibleNodes(ctx.data, ctx.expanded)\n const idx = flat.findIndex((f) => f.node.path === node.path)\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n const next = flat[idx + 1]\n if (next) ctx.setFocused(next.node.path)\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n const prev = flat[idx - 1]\n if (prev) ctx.setFocused(prev.node.path)\n } else if (e.key === \"ArrowRight\" && isFolder) {\n e.preventDefault()\n if (!isExpanded) ctx.toggle(node.path)\n else {\n const next = flat[idx + 1]\n if (next && next.depth > depth) ctx.setFocused(next.node.path)\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n if (isFolder && isExpanded) {\n ctx.toggle(node.path)\n } else {\n // move to parent (find previous shallower)\n for (let i = idx - 1; i >= 0; i--) {\n const f = flat[i]\n if (f && f.depth < depth) { ctx.setFocused(f.node.path); break }\n }\n }\n } else if (e.key === \"Home\") {\n e.preventDefault()\n if (flat[0]) ctx.setFocused(flat[0].node.path)\n } else if (e.key === \"End\") {\n e.preventDefault()\n const last = flat.at(-1)\n if (last) ctx.setFocused(last.node.path)\n } else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n ctx.select(node.path, node)\n if (isFolder) ctx.toggle(node.path)\n }\n }\n\n // Compute leading + trailing via render-props OR defaults\n const leading = ctx.renderLeading\n ? ctx.renderLeading(node, rowContext)\n : isFolder\n ? <span className=\"grid place-items-center shrink-0 w-[var(--filetree-variant-ide-folder-icon-w)] text-[color:var(--filetree-variant-ide-folder-icon-color)]\">\n {isExpanded ? <FolderOpenIcon size={14} /> : <FolderIcon size={14} />}\n </span>\n : <span className=\"grid place-items-center shrink-0 w-[var(--filetree-variant-ide-folder-icon-w)] text-[color:var(--muted-foreground)]\">\n <FileIcon size={14} />\n </span>\n\n const trailing = ctx.renderTrailing?.(node, rowContext)\n\n // ── Variant: outline (no chevron, no folder icon, marker only)\n if (ctx.variant === \"outline\") {\n const isL0 = isFolder && depth === 0\n const rowEl = ctx.renderRow ? (\n ctx.renderRow(node, rowContext)\n ) : (\n <>\n {isFolder && !isL0 && (\n <span className={cn(\"inline-block w-[var(--filetree-variant-outline-marker-w)] shrink-0 text-[color:var(--muted-foreground)] font-mono text-[length:var(--filetree-variant-outline-marker-text)] transition-transform\", isExpanded && \"rotate-90\")}>\n ›\n </span>\n )}\n <span className={cn(\n \"flex-1 overflow-hidden text-ellipsis whitespace-nowrap\",\n isL0 && \"text-[length:var(--filetree-variant-outline-l0-text)] font-[number:var(--filetree-variant-outline-l0-weight)] uppercase tracking-[var(--filetree-variant-outline-l0-tracking)] text-[color:var(--muted-foreground)]\",\n !isL0 && isFolder && \"font-semibold tracking-[-0.005em] text-[color:var(--foreground)]\",\n )}>\n {node.name}\n </span>\n {!isFolder && (\n <span className={cn(\"size-[var(--filetree-variant-outline-status-size)] rounded-full shrink-0\", node.modified ? \"bg-[color:var(--filetree-row-modified-color)]\" : \"bg-[color:var(--muted)]\")} />\n )}\n {trailing}\n </>\n )\n return (\n <>\n <div\n className={cn(\n fileTreeRowVariants({ variant: \"outline\" }),\n isL0 && \"h-[var(--filetree-variant-outline-l0-h)] mt-[var(--filetree-variant-outline-l0-margin-top)] first:mt-0\",\n node.disabled && \"opacity-50 pointer-events-none\",\n )}\n aria-disabled={node.disabled ?? undefined}\n aria-expanded={isFolder ? isExpanded : undefined}\n aria-level={depth + 1}\n aria-selected={isActive || undefined}\n data-active={isActive || undefined}\n data-expanded={isFolder ? isExpanded : undefined}\n data-folder={isFolder || undefined}\n data-l0={isL0 || undefined}\n data-slot=\"filetree-row\"\n role=\"treeitem\"\n style={{ paddingLeft: `calc(10px + ${String(depth)} * var(${indentVar}))` }}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...ctx.getNodeProps?.(node)}\n >\n {rowEl}\n </div>\n {isFolder && isExpanded && node.children?.map((c) => (\n <FileTreeNodeRenderer key={c.path} depth={depth + 1} node={c} />\n ))}\n </>\n )\n }\n\n // ── Variant: ide / notion (chevron + icon + name + trailing)\n const chevron = isFolder ? (\n <span\n className={cn(\n \"grid place-items-center shrink-0 w-[var(--filetree-variant-ide-chev-w)] text-[color:var(--muted-foreground)] transition-transform\",\n ctx.variant === \"notion\" && \"w-[var(--filetree-variant-notion-chev-w)] h-[var(--filetree-variant-notion-chev-h)] rounded-sm opacity-0 group-hover/ftrow:opacity-100\",\n isExpanded && \"rotate-90\",\n )}\n >\n <ChevronRight size={12} />\n </span>\n ) : (\n <span aria-hidden=\"true\" className={cn(\"inline-block shrink-0 w-[var(--filetree-variant-ide-chev-w)] h-[var(--filetree-variant-ide-chev-h)]\", ctx.variant === \"notion\" && \"w-[var(--filetree-variant-notion-chev-w)] h-[var(--filetree-variant-notion-chev-h)]\")} />\n )\n\n const indentEls = ctx.variant === \"ide\"\n ? Array.from({ length: depth }, (_, i) => (\n <span\n key={i}\n aria-hidden=\"true\"\n className=\"relative shrink-0 w-[var(--filetree-variant-ide-indent)] self-stretch\"\n >\n <span className=\"absolute left-2 top-0 bottom-0 w-px bg-[color:var(--filetree-variant-ide-indent-guide-color)]\" />\n </span>\n ))\n : null\n\n const row = ctx.renderRow ? (\n ctx.renderRow(node, rowContext)\n ) : (\n <>\n {indentEls}\n {chevron}\n {leading}\n <span className=\"pl-1.5 overflow-hidden text-ellipsis whitespace-nowrap flex-1\">\n {node.name}\n </span>\n {trailing}\n {node.modified && !isFolder && (\n <span className=\"ml-1 text-[color:var(--filetree-row-modified-color)] font-bold\">●</span>\n )}\n </>\n )\n\n return (\n <>\n <div\n className={cn(\n \"group/ftrow\",\n fileTreeRowVariants({ variant: ctx.variant }),\n node.disabled && \"opacity-50 pointer-events-none\",\n )}\n aria-disabled={node.disabled ?? undefined}\n aria-expanded={isFolder ? isExpanded : undefined}\n aria-level={depth + 1}\n aria-selected={isActive || undefined}\n data-active={isActive || undefined}\n data-expanded={isFolder ? isExpanded : undefined}\n data-folder={isFolder || undefined}\n data-slot=\"filetree-row\"\n role=\"treeitem\"\n style={ctx.variant === \"notion\" ? { paddingLeft: `calc(4px + ${String(depth)} * var(${indentVar}))` } : undefined}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...ctx.getNodeProps?.(node)}\n >\n {row}\n </div>\n {isFolder && isExpanded && node.children?.map((c) => (\n <FileTreeNodeRenderer key={c.path} depth={depth + 1} node={c} />\n ))}\n </>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Root — FileTree\n * ─────────────────────────────────────────────────────────────*/\n\nfunction FileTree({\n data,\n variant = \"ide\",\n size = \"default\",\n expanded: expandedProp,\n defaultExpanded,\n selectedPath: selectedPathProp,\n defaultSelectedPath,\n onToggle,\n onSelect,\n renderRow,\n renderLeading,\n renderTrailing,\n getNodeProps,\n searchValue: searchValueProp,\n onSearchChange,\n searchPlaceholder,\n keyboardNav = true,\n className,\n children,\n ...props\n}: FileTreeProps) {\n const isExpandedControlled = expandedProp !== undefined\n const isSelectedControlled = selectedPathProp !== undefined\n const isSearchControlled = searchValueProp !== undefined\n\n const [internalExpanded, setInternalExpanded] = React.useState<Record<string, boolean>>(\n () => defaultExpanded ?? collectInitialExpanded(data),\n )\n const [internalSelected, setInternalSelected] = React.useState<string | undefined>(\n () => defaultSelectedPath ?? collectInitialActive(data),\n )\n const [internalSearch, setInternalSearch] = React.useState<string>(\"\")\n // Initial focus: prefer selectedPath (controlled or default), else first visible node.\n // Computed at mount via useState initializer to avoid the \"initialize state in effect\" anti-pattern.\n const [focusedPath, setFocusedPath] = React.useState<string | undefined>(() => {\n const initial = defaultSelectedPath ?? selectedPathProp ?? collectInitialActive(data)\n if (initial) return initial\n const initialExpanded = defaultExpanded ?? collectInitialExpanded(data)\n return visibleNodes(data, initialExpanded)[0]?.node.path\n })\n\n const expanded = isExpandedControlled ? expandedProp : internalExpanded\n const selectedPath = isSelectedControlled ? selectedPathProp : internalSelected\n const searchValue = isSearchControlled ? searchValueProp : internalSearch\n\n const toggle = React.useCallback(\n (path: string) => {\n const next = !expanded[path]\n if (!isExpandedControlled) {\n setInternalExpanded((prev) => ({ ...prev, [path]: next }))\n }\n onToggle?.(path, next, { path, next, timestamp: Date.now() })\n },\n [expanded, isExpandedControlled, onToggle],\n )\n\n const select = React.useCallback(\n (path: string, node: FileTreeNode) => {\n if (!isSelectedControlled) setInternalSelected(path)\n setFocusedPath(path)\n onSelect?.(path, { path, node, timestamp: Date.now() })\n },\n [isSelectedControlled, onSelect],\n )\n\n const searchOnChange = React.useCallback(\n (v: string) => {\n if (!isSearchControlled) setInternalSearch(v)\n onSearchChange?.(v)\n },\n [isSearchControlled, onSearchChange],\n )\n\n const ctxValue: FileTreeContextValue = {\n variant,\n size,\n expanded,\n selectedPath,\n focusedPath,\n toggle,\n select,\n setFocused: setFocusedPath,\n data,\n renderRow,\n renderLeading,\n renderTrailing,\n getNodeProps,\n keyboardNav,\n searchValue,\n searchOnChange,\n searchPlaceholder,\n }\n\n return (\n <FileTreeContext value={ctxValue}>\n <div\n className={cn(fileTreeShellVariants({ variant, size }), className)}\n data-size={size}\n data-slot=\"filetree\"\n data-variant={variant}\n {...props}\n >\n {children ?? (\n <>\n <FileTreeBody />\n </>\n )}\n </div>\n </FileTreeContext>\n )\n}\n\n// Attach sub-components\nFileTree.Header = FileTreeHeader\nFileTree.ProjectBadge = FileTreeProjectBadge\nFileTree.ProjectMeta = FileTreeProjectMeta\nFileTree.Toolbar = FileTreeToolbar\nFileTree.Search = FileTreeSearch\nFileTree.Action = FileTreeAction\nFileTree.Body = FileTreeBody\nFileTree.Footer = FileTreeFooter\n\nexport {\n FileTree,\n FileTreeAction,\n FileTreeBody,\n FileTreeFooter,\n FileTreeHeader,\n FileTreeProjectBadge,\n FileTreeProjectMeta,\n fileTreeRowVariants,\n FileTreeSearch,\n fileTreeShellVariants,\n FileTreeToolbar,\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { Label } from './chunk-2ROFZG3A.js';
1
+ import { Label } from './chunk-KA7747GR.js';
2
2
  import { Checkbox } from './chunk-XETKCF73.js';
3
- import { Button } from './chunk-7TF5PVEU.js';
3
+ import { Button } from './chunk-X5XP5QVO.js';
4
4
  import { cn } from './chunk-HRNDJU7D.js';
5
5
  import { cva } from 'class-variance-authority';
6
6
  import { Loader2, AlertCircle, ArrowLeft, ArrowRight, Check, Settings2, Table2, Filter, Eye, Clock, Download, Printer, FileJson, FileSpreadsheet, FileText, Calendar } from 'lucide-react';
@@ -991,5 +991,5 @@ function ReportGenerator({
991
991
  }
992
992
 
993
993
  export { ReportGenerator, configSectionVariants, errorStateVariants, exportButtonGroupVariants, formActionsVariants, loadingStateVariants, previewContainerVariants, previewContentVariants, previewHeaderVariants, reportGeneratorVariants, stepBadgeVariants, stepIndicatorVariants, stepItemVariants, templateCardVariants, templateGridVariants };
994
- //# sourceMappingURL=chunk-SUU3HNOX.js.map
995
- //# sourceMappingURL=chunk-SUU3HNOX.js.map
994
+ //# sourceMappingURL=chunk-XORDGKZI.js.map
995
+ //# sourceMappingURL=chunk-XORDGKZI.js.map