@etus/ui 0.4.0-beta.16 → 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 (269) 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-VORFH6HQ.js → chunk-37KLBMFQ.js} +3 -3
  6. package/dist/chunk-37KLBMFQ.js.map +1 -0
  7. package/dist/{chunk-N4UTBJRY.js → chunk-3NHH7VPI.js} +3 -3
  8. package/dist/{chunk-N4UTBJRY.js.map → chunk-3NHH7VPI.js.map} +1 -1
  9. package/dist/{chunk-OEXQ2MOY.js → chunk-45YJLE4R.js} +3 -3
  10. package/dist/{chunk-OEXQ2MOY.js.map → chunk-45YJLE4R.js.map} +1 -1
  11. package/dist/{chunk-66TBTTZO.js → chunk-46SUPGQV.js} +14 -14
  12. package/dist/chunk-46SUPGQV.js.map +1 -0
  13. package/dist/{chunk-3W7FXRO5.js → chunk-56TC4CPT.js} +4 -4
  14. package/dist/{chunk-3W7FXRO5.js.map → chunk-56TC4CPT.js.map} +1 -1
  15. package/dist/{chunk-NCT5WXKG.js → chunk-5ACHKT35.js} +3 -3
  16. package/dist/{chunk-NCT5WXKG.js.map → chunk-5ACHKT35.js.map} +1 -1
  17. package/dist/{chunk-GGUWEAYD.js → chunk-5E44I7PB.js} +3 -3
  18. package/dist/{chunk-GGUWEAYD.js.map → chunk-5E44I7PB.js.map} +1 -1
  19. package/dist/{chunk-T6XRYT6Q.js → chunk-5K2SOCOX.js} +3 -3
  20. package/dist/{chunk-T6XRYT6Q.js.map → chunk-5K2SOCOX.js.map} +1 -1
  21. package/dist/{chunk-VT4IMHGE.js → chunk-5TABQJDW.js} +4 -4
  22. package/dist/chunk-5TABQJDW.js.map +1 -0
  23. package/dist/{chunk-4GVOOXYD.js → chunk-6ABGMOE2.js} +5 -5
  24. package/dist/chunk-6ABGMOE2.js.map +1 -0
  25. package/dist/{chunk-Q43KJP5A.js → chunk-6F5NWXZF.js} +7 -7
  26. package/dist/{chunk-Q43KJP5A.js.map → chunk-6F5NWXZF.js.map} +1 -1
  27. package/dist/{chunk-4RSHPKHB.js → chunk-6KMRMXR6.js} +3 -3
  28. package/dist/{chunk-4RSHPKHB.js.map → chunk-6KMRMXR6.js.map} +1 -1
  29. package/dist/{chunk-7J5OM4ZD.js → chunk-7CMOCWFX.js} +4 -4
  30. package/dist/{chunk-7J5OM4ZD.js.map → chunk-7CMOCWFX.js.map} +1 -1
  31. package/dist/{chunk-G7PBPX3K.js → chunk-7VGF6ZVE.js} +4 -4
  32. package/dist/{chunk-G7PBPX3K.js.map → chunk-7VGF6ZVE.js.map} +1 -1
  33. package/dist/{chunk-E2TI5V67.js → chunk-A4O3USMA.js} +3 -3
  34. package/dist/{chunk-E2TI5V67.js.map → chunk-A4O3USMA.js.map} +1 -1
  35. package/dist/{chunk-UPK5B2FL.js → chunk-AKRVZ2YW.js} +6 -6
  36. package/dist/chunk-AKRVZ2YW.js.map +1 -0
  37. package/dist/{chunk-VBJ26PZJ.js → chunk-AP3T3KMY.js} +3 -3
  38. package/dist/{chunk-VBJ26PZJ.js.map → chunk-AP3T3KMY.js.map} +1 -1
  39. package/dist/{chunk-X3AXEE3S.js → chunk-AR7K7Y4L.js} +3 -3
  40. package/dist/{chunk-X3AXEE3S.js.map → chunk-AR7K7Y4L.js.map} +1 -1
  41. package/dist/{chunk-WKWLKGNI.js → chunk-ARYBNQNS.js} +4 -4
  42. package/dist/chunk-ARYBNQNS.js.map +1 -0
  43. package/dist/{chunk-P27ERD6W.js → chunk-B2OCNHUW.js} +8 -8
  44. package/dist/{chunk-P27ERD6W.js.map → chunk-B2OCNHUW.js.map} +1 -1
  45. package/dist/{chunk-3NLWCX2F.js → chunk-DI3AISAZ.js} +3 -3
  46. package/dist/{chunk-3NLWCX2F.js.map → chunk-DI3AISAZ.js.map} +1 -1
  47. package/dist/{chunk-COZXTBIU.js → chunk-DSCLJ3GK.js} +30 -11
  48. package/dist/chunk-DSCLJ3GK.js.map +1 -0
  49. package/dist/{chunk-3KOLK3OB.js → chunk-EC5YEK3C.js} +3 -3
  50. package/dist/{chunk-3KOLK3OB.js.map → chunk-EC5YEK3C.js.map} +1 -1
  51. package/dist/{chunk-YUHPTV2A.js → chunk-EDSDAX56.js} +3 -3
  52. package/dist/{chunk-YUHPTV2A.js.map → chunk-EDSDAX56.js.map} +1 -1
  53. package/dist/{chunk-IRIIK3BU.js → chunk-F4EX3622.js} +10 -10
  54. package/dist/chunk-F4EX3622.js.map +1 -0
  55. package/dist/{chunk-XYYOV5GW.js → chunk-F5X2BBGU.js} +4 -4
  56. package/dist/{chunk-XYYOV5GW.js.map → chunk-F5X2BBGU.js.map} +1 -1
  57. package/dist/{chunk-BS5XDYOE.js → chunk-FLERVSKG.js} +5 -5
  58. package/dist/{chunk-BS5XDYOE.js.map → chunk-FLERVSKG.js.map} +1 -1
  59. package/dist/{chunk-TAZPML2P.js → chunk-G2CMEHW6.js} +3 -3
  60. package/dist/{chunk-TAZPML2P.js.map → chunk-G2CMEHW6.js.map} +1 -1
  61. package/dist/{chunk-TQBUBD3E.js → chunk-H7JHFBFD.js} +3 -3
  62. package/dist/{chunk-TQBUBD3E.js.map → chunk-H7JHFBFD.js.map} +1 -1
  63. package/dist/{chunk-Y4RKKQMB.js → chunk-HA5YVDHW.js} +3 -3
  64. package/dist/chunk-HA5YVDHW.js.map +1 -0
  65. package/dist/{chunk-ZKK7L7H7.js → chunk-HP7LEQJR.js} +3 -3
  66. package/dist/{chunk-ZKK7L7H7.js.map → chunk-HP7LEQJR.js.map} +1 -1
  67. package/dist/{chunk-W7S7GPU5.js → chunk-HV2ZZXFN.js} +4 -4
  68. package/dist/{chunk-W7S7GPU5.js.map → chunk-HV2ZZXFN.js.map} +1 -1
  69. package/dist/{chunk-K45MMHLA.js → chunk-HVFACGNK.js} +4 -4
  70. package/dist/{chunk-K45MMHLA.js.map → chunk-HVFACGNK.js.map} +1 -1
  71. package/dist/{chunk-R3HUGCGR.js → chunk-HZ47LQFJ.js} +4 -4
  72. package/dist/{chunk-R3HUGCGR.js.map → chunk-HZ47LQFJ.js.map} +1 -1
  73. package/dist/{chunk-FCIF6H6E.js → chunk-IA24GUNV.js} +24 -24
  74. package/dist/chunk-IA24GUNV.js.map +1 -0
  75. package/dist/{chunk-D6TH3EGA.js → chunk-IQKKPOI7.js} +4 -4
  76. package/dist/{chunk-D6TH3EGA.js.map → chunk-IQKKPOI7.js.map} +1 -1
  77. package/dist/{chunk-WXBC3D2N.js → chunk-IRFAIJLV.js} +4 -4
  78. package/dist/{chunk-WXBC3D2N.js.map → chunk-IRFAIJLV.js.map} +1 -1
  79. package/dist/{chunk-SXPBKGLT.js → chunk-J62NPPDO.js} +3 -3
  80. package/dist/{chunk-SXPBKGLT.js.map → chunk-J62NPPDO.js.map} +1 -1
  81. package/dist/{chunk-5U5XAOES.js → chunk-JDG5A44W.js} +73 -34
  82. package/dist/chunk-JDG5A44W.js.map +1 -0
  83. package/dist/{chunk-Z4KW5VW6.js → chunk-JRVUEOKT.js} +5 -5
  84. package/dist/{chunk-Z4KW5VW6.js.map → chunk-JRVUEOKT.js.map} +1 -1
  85. package/dist/{chunk-NXQ25PKF.js → chunk-K43MPWTO.js} +7 -7
  86. package/dist/chunk-K43MPWTO.js.map +1 -0
  87. package/dist/{chunk-2ROFZG3A.js → chunk-KA7747GR.js} +3 -3
  88. package/dist/{chunk-2ROFZG3A.js.map → chunk-KA7747GR.js.map} +1 -1
  89. package/dist/{chunk-OBRJXVWO.js → chunk-KYURFRCH.js} +4 -4
  90. package/dist/{chunk-OBRJXVWO.js.map → chunk-KYURFRCH.js.map} +1 -1
  91. package/dist/{chunk-EYSTEGV5.js → chunk-LR56MGWT.js} +7 -7
  92. package/dist/{chunk-EYSTEGV5.js.map → chunk-LR56MGWT.js.map} +1 -1
  93. package/dist/{chunk-6ZAMTPGN.js → chunk-M6VBDPNQ.js} +3 -3
  94. package/dist/{chunk-6ZAMTPGN.js.map → chunk-M6VBDPNQ.js.map} +1 -1
  95. package/dist/{chunk-JPA2VQRW.js → chunk-MAM5PTRV.js} +3 -3
  96. package/dist/{chunk-JPA2VQRW.js.map → chunk-MAM5PTRV.js.map} +1 -1
  97. package/dist/{chunk-3L5G7VI2.js → chunk-MAM6VUKD.js} +3 -3
  98. package/dist/chunk-MAM6VUKD.js.map +1 -0
  99. package/dist/{chunk-LLI3JFJL.js → chunk-MLSIZ6JU.js} +4 -4
  100. package/dist/{chunk-LLI3JFJL.js.map → chunk-MLSIZ6JU.js.map} +1 -1
  101. package/dist/{chunk-U2R47SPY.js → chunk-NULX3RRN.js} +4 -4
  102. package/dist/{chunk-U2R47SPY.js.map → chunk-NULX3RRN.js.map} +1 -1
  103. package/dist/{chunk-GL56KIFL.js → chunk-OG3M4CMJ.js} +3 -3
  104. package/dist/{chunk-GL56KIFL.js.map → chunk-OG3M4CMJ.js.map} +1 -1
  105. package/dist/{chunk-7EGN7IGY.js → chunk-OR3NPCY2.js} +3 -3
  106. package/dist/{chunk-7EGN7IGY.js.map → chunk-OR3NPCY2.js.map} +1 -1
  107. package/dist/{chunk-5I7AXWJU.js → chunk-PGRMKSVA.js} +4 -4
  108. package/dist/{chunk-5I7AXWJU.js.map → chunk-PGRMKSVA.js.map} +1 -1
  109. package/dist/{chunk-VZZ3HP7G.js → chunk-PM344VOQ.js} +3 -3
  110. package/dist/{chunk-VZZ3HP7G.js.map → chunk-PM344VOQ.js.map} +1 -1
  111. package/dist/{chunk-46ESMCEQ.js → chunk-QBLU7J34.js} +5 -5
  112. package/dist/chunk-QBLU7J34.js.map +1 -0
  113. package/dist/{chunk-U74PNG4S.js → chunk-SMVH56FQ.js} +3 -3
  114. package/dist/{chunk-U74PNG4S.js.map → chunk-SMVH56FQ.js.map} +1 -1
  115. package/dist/{chunk-DYDXGWH2.js → chunk-T3LWBCVR.js} +4 -4
  116. package/dist/chunk-T3LWBCVR.js.map +1 -0
  117. package/dist/{chunk-ZP4HYVDG.js → chunk-TA4HCLP3.js} +3 -3
  118. package/dist/{chunk-ZP4HYVDG.js.map → chunk-TA4HCLP3.js.map} +1 -1
  119. package/dist/{chunk-7HT32DZG.js → chunk-TGLALXPU.js} +3 -3
  120. package/dist/{chunk-7HT32DZG.js.map → chunk-TGLALXPU.js.map} +1 -1
  121. package/dist/{chunk-5GE3BQA7.js → chunk-USPITOG4.js} +5 -5
  122. package/dist/chunk-USPITOG4.js.map +1 -0
  123. package/dist/{chunk-XLTSCY22.js → chunk-UYPYAOET.js} +4 -4
  124. package/dist/chunk-UYPYAOET.js.map +1 -0
  125. package/dist/{chunk-P7D6S6GX.js → chunk-V7O4X3AE.js} +38 -4
  126. package/dist/chunk-V7O4X3AE.js.map +1 -0
  127. package/dist/{chunk-2YSZPUQZ.js → chunk-VTDSGJ4R.js} +3 -3
  128. package/dist/{chunk-2YSZPUQZ.js.map → chunk-VTDSGJ4R.js.map} +1 -1
  129. package/dist/{chunk-4Y72SPNL.js → chunk-VUHJTTPV.js} +4 -4
  130. package/dist/chunk-VUHJTTPV.js.map +1 -0
  131. package/dist/{chunk-VLDAHAG6.js → chunk-VV6QE3M2.js} +4 -4
  132. package/dist/{chunk-VLDAHAG6.js.map → chunk-VV6QE3M2.js.map} +1 -1
  133. package/dist/{chunk-H5N3VPBG.js → chunk-WBERMEN7.js} +3 -3
  134. package/dist/{chunk-H5N3VPBG.js.map → chunk-WBERMEN7.js.map} +1 -1
  135. package/dist/{chunk-OXDWUKGP.js → chunk-WCMRVCIM.js} +4 -4
  136. package/dist/chunk-WCMRVCIM.js.map +1 -0
  137. package/dist/{chunk-IFHF4UES.js → chunk-WQI2USN7.js} +11 -11
  138. package/dist/chunk-WQI2USN7.js.map +1 -0
  139. package/dist/{chunk-CKD4UBV6.js → chunk-WVFQKBDB.js} +3 -3
  140. package/dist/{chunk-CKD4UBV6.js.map → chunk-WVFQKBDB.js.map} +1 -1
  141. package/dist/{chunk-3NSIUZGP.js → chunk-WZ2J4ALB.js} +3 -3
  142. package/dist/{chunk-3NSIUZGP.js.map → chunk-WZ2J4ALB.js.map} +1 -1
  143. package/dist/{chunk-7TF5PVEU.js → chunk-X5XP5QVO.js} +5 -5
  144. package/dist/chunk-X5XP5QVO.js.map +1 -0
  145. package/dist/{chunk-7Y2UQMX6.js → chunk-XKO6G5H2.js} +36 -36
  146. package/dist/chunk-XKO6G5H2.js.map +1 -0
  147. package/dist/{chunk-SUU3HNOX.js → chunk-XORDGKZI.js} +4 -4
  148. package/dist/{chunk-SUU3HNOX.js.map → chunk-XORDGKZI.js.map} +1 -1
  149. package/dist/{chunk-VAVE4ZJF.js → chunk-YGLD22TU.js} +3 -3
  150. package/dist/chunk-YGLD22TU.js.map +1 -0
  151. package/dist/{chunk-XOGMDABS.js → chunk-ZHUW6UYD.js} +8 -8
  152. package/dist/chunk-ZHUW6UYD.js.map +1 -0
  153. package/dist/{chunk-PWCMCMDN.js → chunk-ZMUUEXVD.js} +3 -3
  154. package/dist/{chunk-PWCMCMDN.js.map → chunk-ZMUUEXVD.js.map} +1 -1
  155. package/dist/components/advanced/Calendar/index.js +5 -5
  156. package/dist/components/advanced/EventCalendar/index.js +5 -5
  157. package/dist/components/advanced/FilterBuilder/index.js +7 -7
  158. package/dist/components/advanced/MarkdownEditor/index.js +2 -2
  159. package/dist/components/advanced/ReportBuilder/index.js +3 -3
  160. package/dist/components/advanced/RichTextEditor/index.js +2 -2
  161. package/dist/components/advanced/index.js +18 -18
  162. package/dist/components/data-display/Callout/index.js +1 -1
  163. package/dist/components/data-display/Carousel/index.js +5 -5
  164. package/dist/components/data-display/ChartCard/index.js +2 -2
  165. package/dist/components/data-display/DataTable/FilterBuilder/index.js +7 -7
  166. package/dist/components/data-display/DataTable/index.js +10 -10
  167. package/dist/components/data-display/ImageGallery/index.js +6 -6
  168. package/dist/components/data-display/Item/index.js +2 -2
  169. package/dist/components/data-display/KPICard/index.js +3 -3
  170. package/dist/components/data-display/List/index.js +2 -2
  171. package/dist/components/data-display/SingleStat/index.js +1 -1
  172. package/dist/components/data-display/index.js +26 -26
  173. package/dist/components/feedback/AlertDialog/index.js +5 -5
  174. package/dist/components/feedback/ConfirmModal/index.js +6 -6
  175. package/dist/components/feedback/Modal/index.js +1 -1
  176. package/dist/components/feedback/UpdatesWidget/index.js +1 -1
  177. package/dist/components/feedback/index.js +9 -9
  178. package/dist/components/forms/ColorPicker/index.js +1 -1
  179. package/dist/components/forms/Combobox/index.js +1 -1
  180. package/dist/components/forms/DatePicker/index.js +6 -6
  181. package/dist/components/forms/DateRangePicker/index.js +6 -6
  182. package/dist/components/forms/EmailInput/index.js +3 -3
  183. package/dist/components/forms/Field/index.js +3 -3
  184. package/dist/components/forms/Form/index.js +2 -2
  185. package/dist/components/forms/InputGroup/index.js +8 -8
  186. package/dist/components/forms/InputOTPField/index.js +4 -4
  187. package/dist/components/forms/NativeSelect/index.js +1 -1
  188. package/dist/components/forms/NumberInput/index.js +2 -2
  189. package/dist/components/forms/PasswordInput/index.js +3 -3
  190. package/dist/components/forms/PaymentInput/index.js +1 -1
  191. package/dist/components/forms/PhoneInput/index.js +1 -1
  192. package/dist/components/forms/RadioButton/index.js +1 -1
  193. package/dist/components/forms/SearchInput/index.js +3 -3
  194. package/dist/components/forms/Slider/index.js +1 -1
  195. package/dist/components/forms/TagsInput/index.js +2 -2
  196. package/dist/components/forms/TextInput/index.js +2 -2
  197. package/dist/components/forms/Textarea/index.js +1 -1
  198. package/dist/components/forms/TextareaField/index.js +5 -5
  199. package/dist/components/forms/URLInput/index.js +3 -3
  200. package/dist/components/forms/index.js +33 -33
  201. package/dist/components/index.js +111 -111
  202. package/dist/components/layout/Card/index.js +1 -1
  203. package/dist/components/layout/Section/index.js +1 -1
  204. package/dist/components/layout/index.js +5 -5
  205. package/dist/components/navigation/AccountSwitch/index.js +3 -3
  206. package/dist/components/navigation/ContextMenu/index.js +1 -1
  207. package/dist/components/navigation/DropdownMenu/index.js +1 -1
  208. package/dist/components/navigation/FileTree/index.js +1 -1
  209. package/dist/components/navigation/LogoConta/index.js +1 -1
  210. package/dist/components/navigation/Menu/index.js +1 -1
  211. package/dist/components/navigation/Menubar/index.js +1 -1
  212. package/dist/components/navigation/Navbar/index.js +1 -1
  213. package/dist/components/navigation/Pagination/index.js +5 -5
  214. package/dist/components/navigation/Sidebar/index.js +7 -7
  215. package/dist/components/navigation/Toolbar/index.js +1 -1
  216. package/dist/components/navigation/index.js +21 -21
  217. package/dist/components/primitives/Badge/index.js +1 -1
  218. package/dist/components/primitives/Button/index.js +4 -4
  219. package/dist/components/primitives/ButtonGroup/index.js +2 -2
  220. package/dist/components/primitives/ConfirmButton/index.js +6 -6
  221. package/dist/components/primitives/Divider/index.js +1 -1
  222. package/dist/components/primitives/FolderStack/index.js +1 -1
  223. package/dist/components/primitives/Image/index.js +1 -1
  224. package/dist/components/primitives/Label/index.js +1 -1
  225. package/dist/components/primitives/SplitButton/index.js +2 -2
  226. package/dist/components/primitives/StatusIndicator/index.js +1 -1
  227. package/dist/components/primitives/Tag/index.js +1 -1
  228. package/dist/components/primitives/Thumbnail/index.js +2 -2
  229. package/dist/components/primitives/index.js +17 -17
  230. package/dist/components/workflow/ApprovalFlow/index.js +5 -5
  231. package/dist/components/workflow/CommentSystem/index.js +6 -6
  232. package/dist/components/workflow/Dashboard/index.js +5 -5
  233. package/dist/components/workflow/DashboardBuilder/index.js +8 -8
  234. package/dist/components/workflow/KanbanBoard/index.js +5 -5
  235. package/dist/components/workflow/ReportGenerator/index.js +6 -6
  236. package/dist/components/workflow/Stepper/index.js +1 -1
  237. package/dist/components/workflow/TaskStatus/index.js +2 -2
  238. package/dist/components/workflow/Wizard/index.js +6 -6
  239. package/dist/components/workflow/index.js +19 -19
  240. package/dist/index.d.ts +41 -12
  241. package/dist/index.js +111 -111
  242. package/dist/styles.css +27 -703
  243. package/package.json +2 -2
  244. package/dist/chunk-3L5G7VI2.js.map +0 -1
  245. package/dist/chunk-46ESMCEQ.js.map +0 -1
  246. package/dist/chunk-4GVOOXYD.js.map +0 -1
  247. package/dist/chunk-4Y72SPNL.js.map +0 -1
  248. package/dist/chunk-5GE3BQA7.js.map +0 -1
  249. package/dist/chunk-5U5XAOES.js.map +0 -1
  250. package/dist/chunk-66TBTTZO.js.map +0 -1
  251. package/dist/chunk-7TF5PVEU.js.map +0 -1
  252. package/dist/chunk-7Y2UQMX6.js.map +0 -1
  253. package/dist/chunk-COZXTBIU.js.map +0 -1
  254. package/dist/chunk-DYDXGWH2.js.map +0 -1
  255. package/dist/chunk-FCIF6H6E.js.map +0 -1
  256. package/dist/chunk-IFHF4UES.js.map +0 -1
  257. package/dist/chunk-IRIIK3BU.js.map +0 -1
  258. package/dist/chunk-NXQ25PKF.js.map +0 -1
  259. package/dist/chunk-OXDWUKGP.js.map +0 -1
  260. package/dist/chunk-P7D6S6GX.js.map +0 -1
  261. package/dist/chunk-U6EOAIPK.js.map +0 -1
  262. package/dist/chunk-UPK5B2FL.js.map +0 -1
  263. package/dist/chunk-VAVE4ZJF.js.map +0 -1
  264. package/dist/chunk-VORFH6HQ.js.map +0 -1
  265. package/dist/chunk-VT4IMHGE.js.map +0 -1
  266. package/dist/chunk-WKWLKGNI.js.map +0 -1
  267. package/dist/chunk-XLTSCY22.js.map +0 -1
  268. package/dist/chunk-XOGMDABS.js.map +0 -1
  269. package/dist/chunk-Y4RKKQMB.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etus/ui",
3
- "version": "0.4.0-beta.16",
3
+ "version": "0.4.0-beta.18",
4
4
  "description": "Seven Design System - UI components for ETUS applications",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -113,7 +113,7 @@
113
113
  "sonner": "^2.0.7",
114
114
  "tailwind-merge": "^3.6.0",
115
115
  "vaul": "^1.1.2",
116
- "@etus/tokens": "^0.4.0-beta.13"
116
+ "@etus/tokens": "^0.4.0-beta.14"
117
117
  },
118
118
  "devDependencies": {
119
119
  "@storybook/react-vite": "^10.4.6",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/Divider/Divider.variants.ts","../src/components/primitives/Divider/Divider.tsx"],"names":[],"mappings":"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","file":"chunk-3L5G7VI2.js","sourcesContent":["// Divider/Divider.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * CVA variants for the divider line\n */\nexport const dividerLineVariants = cva(\"shrink-0\", {\n variants: {\n orientation: {\n horizontal: \"h-[var(--divider-thickness)] w-full\",\n vertical: \"h-full w-[var(--divider-thickness)]\",\n },\n visualStyle: {\n \"single-line\": \"\",\n \"dual-line\": \"shadow-[0_2px_0_0_var(--divider-color-dual)]\",\n \"background-fill\": \"\",\n },\n lineType: {\n solid: \"bg-[color:var(--divider-color-default)]\",\n dashed:\n \"bg-transparent border-0 border-dashed border-[color:var(--divider-color-default)]\",\n dotted:\n \"bg-transparent border-0 border-dotted border-[color:var(--divider-color-default)]\",\n },\n },\n compoundVariants: [\n // Dashed/dotted horizontal needs border-t\n {\n orientation: \"horizontal\",\n lineType: \"dashed\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"horizontal\",\n lineType: \"dotted\",\n className: \"border-t h-0\",\n },\n // Dashed/dotted vertical needs border-l\n {\n orientation: \"vertical\",\n lineType: \"dashed\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"vertical\",\n lineType: \"dotted\",\n className: \"border-l w-0\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n visualStyle: \"single-line\",\n lineType: \"solid\",\n },\n})\n\n/**\n * CVA variants for the content container\n */\nexport const dividerContentVariants = cva(\n \"flex items-center text-sm text-[color:var(--divider-content-text-default)]\",\n {\n variants: {\n type: {\n line: \"\",\n heading: \"text-base font-semibold text-[color:var(--divider-content-text-heading)]\",\n text: \"text-sm text-[color:var(--divider-content-text-default)]\",\n button: \"\",\n \"button-icon\": \"\",\n \"button-group\": \"gap-2\",\n \"button-group-icon\": \"gap-1\",\n },\n visualStyle: {\n \"single-line\": \"px-3\",\n \"dual-line\": \"px-3\",\n \"background-fill\": \"rounded-md bg-[color:var(--divider-content-bg-fill)] px-3 py-1.5\",\n },\n },\n defaultVariants: {\n type: \"text\",\n visualStyle: \"single-line\",\n },\n }\n)\n\n/**\n * CVA variants for the wrapper\n */\nexport const dividerWrapperVariants = cva(\"flex items-center\", {\n variants: {\n orientation: {\n horizontal: \"w-full\",\n vertical: \"h-full flex-col\",\n },\n labelPosition: {\n left: \"\",\n center: \"\",\n right: \"\",\n },\n },\n compoundVariants: [\n // Horizontal label positions\n {\n orientation: \"horizontal\",\n labelPosition: \"left\",\n className: \"justify-start\",\n },\n {\n orientation: \"horizontal\",\n labelPosition: \"center\",\n className: \"justify-center\",\n },\n {\n orientation: \"horizontal\",\n labelPosition: \"right\",\n className: \"justify-end\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n labelPosition: \"center\",\n },\n})\n\nexport type DividerLineVariantProps = VariantProps<typeof dividerLineVariants>\nexport type DividerContentVariantProps = VariantProps<typeof dividerContentVariants>\nexport type DividerWrapperVariantProps = VariantProps<typeof dividerWrapperVariants>\n","\"use client\"\n\nimport type { DividerProps } from \"./Divider.types\"\n\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n dividerContentVariants,\n dividerLineVariants,\n dividerWrapperVariants,\n} from \"./Divider.variants\"\n\n/**\n * Divider - A visual separator with optional content\n *\n * Based on Figma Content Divider design. Supports multiple types and styles:\n * - Types: line, heading, text, button, button-icon, button-group, button-group-icon\n * - Styles: single-line, dual-line, background-fill\n * - Label positions: left, center, right\n *\n * @example\n * ```tsx\n * // Simple line divider (backwards compatible)\n * <Divider />\n *\n * // Content divider with text\n * <Divider type=\"text\">or</Divider>\n *\n * // Heading divider\n * <Divider type=\"heading\" visualStyle=\"dual-line\">Section Title</Divider>\n *\n * // Button group divider\n * <Divider type=\"button-group\" visualStyle=\"background-fill\">\n * <Button variant=\"ghost\" size=\"sm\">Option 1</Button>\n * <Button variant=\"ghost\" size=\"sm\">Option 2</Button>\n * </Divider>\n * ```\n */\nfunction Divider({\n className,\n orientation = \"horizontal\",\n decorative = true,\n type = \"line\",\n visualStyle = \"single-line\",\n lineType = \"solid\",\n labelPosition = \"center\",\n children,\n ...props\n}: DividerProps) {\n // Simple line divider (no children) - backwards compatible\n if (!children || type === \"line\") {\n return (\n <SeparatorPrimitive.Root\n className={cn(\n dividerLineVariants({ orientation, visualStyle, lineType }),\n className\n )}\n data-line-type={lineType}\n data-slot=\"divider\"\n decorative={decorative}\n orientation={orientation}\n {...props}\n />\n )\n }\n\n // Content divider with children\n // Determine line flex based on label position\n const getLineFlexClasses = (position: \"after\" | \"before\") => {\n if (labelPosition === \"left\") {\n return position === \"before\" ? \"shrink-0 basis-8\" : \"grow\"\n }\n if (labelPosition === \"right\") {\n return position === \"before\" ? \"grow\" : \"shrink-0 basis-8\"\n }\n return \"grow\" // center - both grow equally\n }\n\n return (\n <div\n className={cn(\n dividerWrapperVariants({ orientation, labelPosition }),\n className\n )}\n aria-orientation={orientation}\n data-line-type={lineType}\n data-slot=\"divider\"\n data-type={type}\n data-visual-style={visualStyle}\n role={decorative ? \"none\" : \"separator\"}\n {...props}\n >\n {/* Line before content */}\n <SeparatorPrimitive.Root\n decorative\n className={cn(\n dividerLineVariants({ orientation, visualStyle, lineType }),\n getLineFlexClasses(\"before\")\n )}\n data-slot=\"divider-line\"\n orientation={orientation}\n />\n\n {/* Content */}\n <div\n className={cn(dividerContentVariants({ type, visualStyle }))}\n data-slot=\"divider-content\"\n >\n {children}\n </div>\n\n {/* Line after content */}\n <SeparatorPrimitive.Root\n decorative\n className={cn(\n dividerLineVariants({ orientation, visualStyle, lineType }),\n getLineFlexClasses(\"after\")\n )}\n data-slot=\"divider-line\"\n orientation={orientation}\n />\n </div>\n )\n}\n\nexport { Divider, dividerContentVariants, dividerLineVariants, dividerWrapperVariants }\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/feedback/UpdatesWidget/UpdatesWidget.tsx"],"names":[],"mappings":"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","file":"chunk-46ESMCEQ.js","sourcesContent":["\"use client\"\n\nimport type { UpdatesWidgetProps } from \"./UpdatesWidget.types\"\n\nimport { Inbox, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst toneClass: Record<string, string> = {\n success: \"bg-[color:var(--primary-subtle)] text-[color:var(--primary-subtle-foreground)]\",\n info: \"bg-[color:var(--info-subtle)] text-[color:var(--info)]\",\n warning: \"bg-[color:var(--warning-subtle)] text-[color:var(--warning-subtle-foreground)]\",\n destructive: \"bg-[color:var(--destructive-subtle)] text-[color:var(--destructive-subtle-foreground)]\",\n}\n\nfunction UpdatesWidget({\n className,\n items,\n emptyState,\n menu,\n title,\n ...props\n}: UpdatesWidgetProps) {\n const hasItems = items.length > 0\n\n return (\n <div\n className={cn(\n \"w-[313px] flex flex-col gap-3 p-4 bg-card border border-border rounded-[var(--radius-md)] shadow-sm\",\n className\n )}\n data-slot=\"updates-widget\"\n {...props}\n >\n {(title !== undefined || menu !== undefined) && (\n <header className=\"flex items-center justify-between gap-2\">\n <div className=\"text-sm font-medium text-foreground\">{title ?? \"Updates\"}</div>\n {menu === undefined ? (\n <button\n aria-label=\"More options\"\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n data-slot=\"updates-widget-menu\"\n type=\"button\"\n >\n <MoreHorizontal aria-hidden=\"true\" className=\"size-4\" />\n </button>\n ) : (\n menu\n )}\n </header>\n )}\n {hasItems ? (\n <ul className=\"flex flex-col gap-3 list-none m-0 p-0\" data-slot=\"updates-widget-list\">\n {items.map((item) => (\n <li key={item.id} className=\"flex items-start gap-3\" data-slot=\"updates-widget-item\">\n <span\n className={cn(\n \"inline-grid place-items-center size-6 rounded-full shrink-0 [&_svg]:size-3.5\",\n toneClass[item.tone] ?? toneClass[\"info\"]\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-xs leading-4 text-foreground\">{item.text}</div>\n {item.when && (\n <div className=\"text-[10px] leading-3 text-muted-foreground mt-0.5\">\n {item.when}\n </div>\n )}\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <div\n className=\"flex flex-col items-center justify-center gap-2 py-6 text-center\"\n data-slot=\"updates-widget-empty\"\n >\n {emptyState ?? (\n <>\n <span className=\"inline-grid place-items-center size-9 rounded-full bg-muted text-muted-foreground\">\n <Inbox aria-hidden=\"true\" className=\"size-5\" />\n </span>\n <div>\n <div className=\"text-xs font-medium text-foreground\">Sem updates</div>\n <div className=\"text-[10px] text-muted-foreground\">Você está em dia</div>\n </div>\n </>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport { UpdatesWidget }\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/Badge/Badge.tsx"],"names":[],"mappings":";;;;;;;;AAaA,IAAM,gBAAA,GAAqE;AAAA,EACzE,OAAA,EAAS,EAAE,IAAA,EAAM,YAAA,EAAc,OAAO,SAAA,EAAU;AAAA,EAChD,SAAA,EAAW,EAAE,IAAA,EAAM,YAAA,EAAc,OAAO,OAAA,EAAQ;AAAA,EAChD,WAAA,EAAa,EAAE,IAAA,EAAM,YAAA,EAAc,OAAO,aAAA,EAAc;AAAA,EACxD,OAAA,EAAS,EAAE,IAAA,EAAM,cAAA,EAAgB,OAAO,OAAA;AAC1C,CAAA;AAGA,IAAM,WAAA,GAAsC;AAAA,EAC1C,OAAA,EAAS,uBAAA;AAAA,EACT,SAAA,EAAW,yBAAA;AAAA,EACX,WAAA,EAAa,UAAA;AAAA,EACb,OAAA,EAAS,uBAAA;AAAA,EACT,OAAA,EAAS,uBAAA;AAAA,EACT,IAAA,EAAM,UAAA;AAAA,EACN,GAAA,EAAK,UAAA;AAAA,EACL,KAAA,EAAO;AACT,CAAA;AAGA,IAAM,eAAA,GAA0C;AAAA,EAC9C,OAAA,EAAS,wDAAA;AAAA,EACT,SAAA,EAAW,4DAAA;AAAA,EACX,WAAA,EAAa,8BAAA;AAAA,EACb,OAAA,EAAS,wDAAA;AAAA,EACT,OAAA,EAAS,wDAAA;AAAA,EACT,IAAA,EAAM,8BAAA;AAAA,EACN,GAAA,EAAK,8BAAA;AAAA,EACL,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,wVAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,YAAA,EAAc,uDAAA;AAAA,QACd,cAAA,EAAgB,mDAAA;AAAA,QAChB,aAAA,EAAe,0DAAA;AAAA,QACf,eAAA,EAAiB,sDAAA;AAAA,QACjB,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,SAAA,EAAW,EAAA;AAAA,QACX,WAAA,EAAa,EAAA;AAAA,QACb,OAAA,EAAS,EAAA;AAAA,QACT,OAAA,EAAS,EAAA;AAAA,QACT,IAAA,EAAM,EAAA;AAAA,QACN,GAAA,EAAK,EAAA;AAAA,QACL,KAAA,EAAO;AAAA,OACT;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gHAAA;AAAA,QACJ,OAAA,EAAS,kHAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA;AAAA;AAAA;AAAA,MAIhB,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MACzI,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,WAAA,EAAa,WAAW,yFAAA,EAA0F;AAAA,MAC/I,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,aAAA,EAAe,WAAW,6FAAA,EAA8F;AAAA,MACrJ,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MACzI,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MACzI,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,MAAA,EAAQ,WAAW,8BAAA,EAA+B;AAAA,MAC/E,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,KAAA,EAAO,WAAW,mBAAA,EAAoB;AAAA,MACnE,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,OAAA,EAAS,WAAW,yFAAA,EAA0F;AAAA;AAAA;AAAA;AAAA,MAK3I,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACnF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,WAAA,EAAa,WAAW,iCAAA,EAAkC;AAAA,MACzF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,aAAA,EAAe,WAAW,qCAAA,EAAsC;AAAA,MAC/F,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACnF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACnF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,MAAA,EAAQ,WAAW,uBAAA,EAAwB;AAAA,MAC1E,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,WAAW,qBAAA,EAAsB;AAAA,MACvE,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,OAAA,EAAS,WAAW,qCAAA,EAAsC;AAAA;AAAA;AAAA;AAAA,MAKzF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,WAAW,oCAAA,EAAqC;AAAA,MACzF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,WAAA,EAAa,WAAW,yFAAA,EAA0F;AAAA,MAChJ,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,aAAA,EAAe,WAAW,2BAAA,EAA4B;AAAA,MACpF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MAC1I,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,WAAW,qFAAA,EAAsF;AAAA,MAC1I,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,MAAA,EAAQ,WAAW,8BAAA,EAA+B;AAAA,MAChF,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,KAAA,EAAO,WAAW,mBAAA,EAAoB;AAAA,MACpE,EAAE,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,OAAA,EAAS,WAAW,gCAAA,EAAiC;AAAA;AAAA;AAAA;AAAA,MAKnF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACpF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,WAAA,EAAa,WAAW,iCAAA,EAAkC;AAAA,MAC1F,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,aAAA,EAAe,WAAW,qCAAA,EAAsC;AAAA,MAChG,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACpF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,SAAA,EAAW,WAAW,6BAAA,EAA8B;AAAA,MACpF,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,MAAA,EAAQ,WAAW,uBAAA,EAAwB;AAAA,MAC3E,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,KAAA,EAAO,WAAW,qBAAA,EAAsB;AAAA,MACxE,EAAE,IAAA,EAAM,eAAA,EAAiB,KAAA,EAAO,OAAA,EAAS,WAAW,qCAAA,EAAsC;AAAA;AAAA;AAAA;AAAA,MAK1F,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6CAAA,EAA8C;AAAA,MACnG,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,WAAA,EAAa,WAAW,mDAAA,EAAoD;AAAA,MAC3G,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,aAAA,EAAe,WAAW,yDAAA,EAA0D;AAAA,MACnH,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6CAAA,EAA8C;AAAA,MACnG,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,WAAW,6CAAA,EAA8C;AAAA,MACnG,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,MAAA,EAAQ,WAAW,oCAAA,EAAqC;AAAA,MACvF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,WAAW,iCAAA,EAAkC;AAAA,MACnF,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,OAAA,EAAS,WAAW,0DAAA;AAA2D,KAChH;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,YAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM;AAAA;AACR;AAEJ;AAGA,SAAS,QAAA,CAAS,EAAE,KAAA,EAAM,EAA0B;AAClD,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,gCAAA,EAAkC,WAAA,CAAY,KAAK,CAAA,IAAK,WAAA,CAAY,SAAS,CAAC,CAAA;AAAA,MAC5F,WAAA,EAAU;AAAA;AAAA,GACZ;AAEJ;AAGA,SAAS,aAAa,EAAE,OAAA,EAAS,OAAO,IAAA,EAAM,YAAA,GAAe,WAAU,EAAqF;AAC1J,EAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwB;AAC3C,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2B;AAChD,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,OAAA,EAAQ;AAAA,IACV;AAAA,EACF,CAAA;AAGA,EAAA,MAAM,MAAA,GAAS,IAAA,KAAS,YAAA,IAAgB,IAAA,KAAS,cAAA;AACjD,EAAA,MAAM,UAAA,GAAa,SAAS,cAAA,GAAiB,YAAA;AAE7C,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,gGAAA;AAAA,QACA,UAAA;AAAA,QACA,yEAAA;AAAA,QACA,eAAA,CAAgB,KAAK,CAAA,IAAK,eAAA,CAAgB,SAAS;AAAA,OACrD;AAAA,MACA,YAAA,EAAY,YAAA;AAAA,MACZ,WAAA,EAAU,eAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MAEX,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,GACxB;AAEJ;AAGA,SAAS,WAAA,CAAY,EAAE,GAAA,EAAK,QAAA,EAAU,KAAI,EAAqB;AAC7D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,eAAS,KAAK,CAAA;AAGxD,EAAA,MAAM,WAAW,QAAA,CACd,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,CAAC,CAAC,CAAA,CACrB,KAAK,EAAE,CAAA,CACP,aAAY,CACZ,KAAA,CAAM,GAAG,CAAC,CAAA;AAEb,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,yHAAA;AAAA,MACV,WAAA,EAAU,cAAA;AAAA,MAET,QAAA,EAAA,GAAA,IAAO,CAAC,UAAA,mBACP,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAK,GAAA,IAAO,QAAA;AAAA,UACZ,SAAA,EAAU,wBAAA;AAAA,UACV,GAAA;AAAA,UACA,SAAS,MAAM;AAAE,YAAA,aAAA,CAAc,IAAI,CAAA;AAAA,UAAG;AAAA;AAAA,0BAGxC,GAAA,CAAC,MAAA,EAAA,EAAK,YAAA,EAAY,GAAA,IAAO,UAAW,QAAA,EAAA,QAAA,EAAS;AAAA;AAAA,GAEjD;AAEJ;AAGA,SAAS,YAAA,CAAa,EAAE,IAAA,EAAK,EAAqB;AAEhD,EAAA,MAAM,aAAA,GAAgB,CAAC,WAAA,KAAwB;AAE7C,IAAA,MAAM,aAAa,KAAA,CAAM,IAAA,CAAK,WAAA,CAAY,WAAA,EAAa,CAAA,CAAE,GAAA;AAAA,MACvD,CAAC,IAAA,KAAS,MAAA,GAAS,IAAA,CAAK,WAAW,CAAC;AAAA,KACtC;AACA,IAAA,OAAO,MAAA,CAAO,aAAA,CAAc,GAAG,UAAU,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,WAAW,IAAI,CAAA,CAAA;AAAA,MAC3B,SAAA,EAAU,yCAAA;AAAA,MACV,WAAA,EAAU,eAAA;AAAA,MACV,IAAA,EAAK,KAAA;AAAA,MAEJ,wBAAc,IAAI;AAAA;AAAA,GACrB;AAEJ;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA;AAAA,EAEA,OAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AAEb,EAAA,MAAM,aAAA,GAAgB,OAAA,GAAU,gBAAA,CAAiB,OAAO,CAAA,GAAI,IAAA;AAC5D,EAAA,MAAM,YAAA,GAAgB,IAAA,IAAQ,aAAA,EAAe,IAAA,IAAQ,YAAA;AACrD,EAAA,MAAM,aAAA,GAAiB,KAAA,IAAS,aAAA,EAAe,KAAA,IAAS,SAAA;AAGxD,EAAA,MAAM,aAAA,GAAgB,WAClB,oBAAA,GACA,EAAA;AAEJ,EAAA,MAAM,cAAA,GAAiB,EAAA;AAAA,IACrB,cAAc,EAAE,IAAA,EAAM,cAAc,KAAA,EAAO,aAAA,EAAe,MAAM,CAAA;AAAA,IAChE,aAAA;AAAA,IACA,OAAA,CAAQ,WAAA,IAAe,OAAO,CAAA,IAAK,oCAAA;AAAA,IACnC;AAAA,GACF;AAGA,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,eAAA,EAAiB,WAAW,IAAA,GAAO,MAAA;AAAA,IACnC,eAAA,EAAiB,WAAW,IAAA,GAAO;AAAA,GACrC;AAIA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,cAAA,EAAgB,WAAA,EAAU,SAAS,GAAG,UAAA,EAAa,GAAG,KAAA,EACpE,QAAA,EACH,CAAA;AAAA,EAEJ;AAGA,EAAA,MAAM,sBAAsB,WAAA,IAAe,IAAA;AAG3C,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,MAAA,EAAQ,uBAAO,GAAA,CAAC,WAAA,EAAA,EAAa,GAAG,MAAA,EAAQ,CAAA;AAC5C,IAAA,IAAI,OAAA,EAAS,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAa,MAAM,OAAA,EAAS,CAAA;AACjD,IAAA,IAAI,GAAA,EAAK,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAS,OAAO,aAAA,EAAe,CAAA;AAChD,IAAA,IAAI,mBAAA,yBAA4B,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,UAAA,EAAW,WAAA,EAAU,sBAAsB,QAAA,EAAA,mBAAA,EAAoB,CAAA;AAC/G,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,IAAI,SAAA,EAAW,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,aAAA,EAAe,YAAA,EAA4B,IAAA,EAAM,YAAA,IAAgB,YAAA,EAAc,OAAA,EAAS,SAAA,EAAW,CAAA;AAC9I,IAAA,IAAI,YAAA,yBAAqB,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,UAAA,EAAW,WAAA,EAAU,uBAAuB,QAAA,EAAA,YAAA,EAAa,CAAA;AAClG,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,eAAA,GAAkB,CAAC,OAAA,KAAgC;AACvD,IAAA,IAAI,CAAC,SAAS,OAAO,OAAA;AACrB,IAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACpB,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,sBACA,GAAA,CAAC,kBACE,QAAA,EAAA,OAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAGA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO,eAAA;AAAA,sBACL,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,cAAA;AAAA,UACX,WAAA,EAAU,OAAA;AAAA,UACV,OAAA;AAAA,UACC,GAAG,UAAA;AAAA,UACH,GAAG,KAAA;AAAA,UAEJ,8BAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAW,WAAA,EAAU,mBAAmB,QAAA,EAAA,QAAA,EAAS;AAAA;AAAA;AACnE,KACF;AAAA,EACF;AAEA,EAAA,OAAO,eAAA;AAAA,oBACL,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,cAAA;AAAA,QACX,WAAA,EAAU,OAAA;AAAA,QACV,OAAA;AAAA,QACC,GAAG,UAAA;AAAA,QACH,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,aAAA,EAAc;AAAA,UACd,QAAA;AAAA,UACA,cAAA;AAAe;AAAA;AAAA;AAClB,GACF;AACF","file":"chunk-4GVOOXYD.js","sourcesContent":["import type { BadgeAvatarProps, BadgeColor, BadgeProps } from \"./Badge.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\n\n/* eslint-disable sonarjs/no-duplicate-string -- Badge variants require repeated color class patterns */\n\n// Legacy variant mapping for backwards compatibility\nconst legacyVariantMap: Record<string, { color: string; type: string; }> = {\n default: { type: \"pill-color\", color: \"primary\" },\n secondary: { type: \"pill-color\", color: \"muted\" },\n destructive: { type: \"pill-color\", color: \"destructive\" },\n outline: { type: \"pill-outline\", color: \"muted\" },\n}\n\n// Dot color mapping\nconst dotColorMap: Record<string, string> = {\n primary: \"bg-primary-foreground\",\n secondary: \"bg-secondary-foreground\",\n destructive: \"bg-white\",\n warning: \"bg-warning-foreground\",\n success: \"bg-success-foreground\",\n info: \"bg-white\",\n tip: \"bg-white\",\n muted: \"bg-muted-foreground\",\n}\n\n// Dismiss button color mapping\nconst dismissColorMap: Record<string, string> = {\n primary: \"text-primary-foreground hover:bg-primary-foreground/20\",\n secondary: \"text-secondary-foreground hover:bg-secondary-foreground/20\",\n destructive: \"text-white hover:bg-white/20\",\n warning: \"text-warning-foreground hover:bg-warning-foreground/20\",\n success: \"text-success-foreground hover:bg-success-foreground/20\",\n info: \"text-white hover:bg-white/20\",\n tip: \"text-white hover:bg-white/20\",\n muted: \"text-muted-foreground hover:bg-muted-foreground/20\",\n}\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center font-medium w-fit whitespace-nowrap shrink-0 gap-1.5 transition-[color,background-color,box-shadow,filter] overflow-hidden border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[disabled=true]:opacity-50 data-[disabled=true]:pointer-events-none\",\n {\n variants: {\n type: {\n \"pill-color\": \"rounded-[var(--badge-radius-pill)] border-transparent\",\n \"pill-outline\": \"rounded-[var(--badge-radius-pill)] bg-transparent\",\n \"badge-color\": \"rounded-[var(--badge-radius-default)] border-transparent\",\n \"badge-outline\": \"rounded-[var(--badge-radius-default)] bg-transparent\",\n \"badge-modern\": \"rounded-[var(--badge-radius-default)] border-transparent border-l-[3px] pr-2.5 pl-2 shadow-xs\",\n },\n color: {\n primary: \"\",\n secondary: \"\",\n destructive: \"\",\n warning: \"\",\n success: \"\",\n info: \"\",\n tip: \"\",\n muted: \"\",\n },\n size: {\n sm: \"h-[var(--badge-size-sm-h)] px-[var(--badge-size-sm-px)] text-[length:var(--badge-size-sm-text)] [&_svg]:size-3\",\n default: \"h-[var(--badge-size-md-h)] px-[var(--badge-size-md-px)] text-[length:var(--badge-size-md-text)] [&_svg]:size-3.5\",\n lg: \"h-[var(--badge-size-lg-h)] px-[var(--badge-size-lg-px)] text-[length:var(--badge-size-lg-text)] [&_svg]:size-4\",\n },\n },\n compoundVariants: [\n // ========================================\n // PILL-COLOR VARIANTS\n // ========================================\n { type: \"pill-color\", color: \"primary\", className: \"bg-[color:var(--badge-color-primary-bg)] text-[color:var(--badge-color-primary-fg)]\" },\n { type: \"pill-color\", color: \"secondary\", className: \"bg-[color:var(--badge-color-secondary-bg)] text-[color:var(--badge-color-secondary-fg)]\" },\n { type: \"pill-color\", color: \"destructive\", className: \"bg-[color:var(--badge-color-destructive-bg)] text-[color:var(--badge-color-destructive-fg)]\" },\n { type: \"pill-color\", color: \"warning\", className: \"bg-[color:var(--badge-color-warning-bg)] text-[color:var(--badge-color-warning-fg)]\" },\n { type: \"pill-color\", color: \"success\", className: \"bg-[color:var(--badge-color-success-bg)] text-[color:var(--badge-color-success-fg)]\" },\n { type: \"pill-color\", color: \"info\", className: \"bg-info text-info-foreground\" },\n { type: \"pill-color\", color: \"tip\", className: \"bg-tip text-white\" },\n { type: \"pill-color\", color: \"muted\", className: \"bg-[color:var(--badge-color-secondary-bg)] text-[color:var(--badge-color-secondary-fg)]\" },\n\n // ========================================\n // PILL-OUTLINE VARIANTS\n // ========================================\n { type: \"pill-outline\", color: \"primary\", className: \"border-primary text-primary\" },\n { type: \"pill-outline\", color: \"secondary\", className: \"border-secondary text-secondary\" },\n { type: \"pill-outline\", color: \"destructive\", className: \"border-destructive text-destructive\" },\n { type: \"pill-outline\", color: \"warning\", className: \"border-warning text-warning\" },\n { type: \"pill-outline\", color: \"success\", className: \"border-success text-success\" },\n { type: \"pill-outline\", color: \"info\", className: \"border-info text-info\" },\n { type: \"pill-outline\", color: \"tip\", className: \"border-tip text-tip\" },\n { type: \"pill-outline\", color: \"muted\", className: \"border-border text-muted-foreground\" },\n\n // ========================================\n // BADGE-COLOR VARIANTS\n // ========================================\n { type: \"badge-color\", color: \"primary\", className: \"bg-primary text-primary-foreground\" },\n { type: \"badge-color\", color: \"secondary\", className: \"bg-[color:var(--badge-color-secondary-bg)] text-[color:var(--badge-color-secondary-fg)]\" },\n { type: \"badge-color\", color: \"destructive\", className: \"bg-destructive text-white\" },\n { type: \"badge-color\", color: \"warning\", className: \"bg-[color:var(--badge-color-warning-bg)] text-[color:var(--badge-color-warning-fg)]\" },\n { type: \"badge-color\", color: \"success\", className: \"bg-[color:var(--badge-color-success-bg)] text-[color:var(--badge-color-success-fg)]\" },\n { type: \"badge-color\", color: \"info\", className: \"bg-info text-info-foreground\" },\n { type: \"badge-color\", color: \"tip\", className: \"bg-tip text-white\" },\n { type: \"badge-color\", color: \"muted\", className: \"bg-muted text-muted-foreground\" },\n\n // ========================================\n // BADGE-OUTLINE VARIANTS\n // ========================================\n { type: \"badge-outline\", color: \"primary\", className: \"border-primary text-primary\" },\n { type: \"badge-outline\", color: \"secondary\", className: \"border-secondary text-secondary\" },\n { type: \"badge-outline\", color: \"destructive\", className: \"border-destructive text-destructive\" },\n { type: \"badge-outline\", color: \"warning\", className: \"border-warning text-warning\" },\n { type: \"badge-outline\", color: \"success\", className: \"border-success text-success\" },\n { type: \"badge-outline\", color: \"info\", className: \"border-info text-info\" },\n { type: \"badge-outline\", color: \"tip\", className: \"border-tip text-tip\" },\n { type: \"badge-outline\", color: \"muted\", className: \"border-border text-muted-foreground\" },\n\n // ========================================\n // BADGE-MODERN VARIANTS (with left accent)\n // ========================================\n { type: \"badge-modern\", color: \"primary\", className: \"bg-primary/10 text-primary border-l-primary\" },\n { type: \"badge-modern\", color: \"secondary\", className: \"bg-secondary/10 text-secondary border-l-secondary\" },\n { type: \"badge-modern\", color: \"destructive\", className: \"bg-destructive/10 text-destructive border-l-destructive\" },\n { type: \"badge-modern\", color: \"warning\", className: \"bg-warning/10 text-warning border-l-warning\" },\n { type: \"badge-modern\", color: \"success\", className: \"bg-success/10 text-success border-l-success\" },\n { type: \"badge-modern\", color: \"info\", className: \"bg-info/10 text-info border-l-info\" },\n { type: \"badge-modern\", color: \"tip\", className: \"bg-tip/10 text-tip border-l-tip\" },\n { type: \"badge-modern\", color: \"muted\", className: \"bg-muted text-muted-foreground border-l-muted-foreground\" },\n ],\n defaultVariants: {\n type: \"pill-color\",\n color: \"primary\",\n size: \"default\",\n },\n }\n)\n\n// Internal dot component\nfunction BadgeDot({ color }: { color: BadgeColor }) {\n return (\n <span\n className={cn(\"size-1.5 rounded-full shrink-0\", dotColorMap[color] ?? dotColorMap[\"primary\"])}\n data-slot=\"badge-dot\"\n />\n )\n}\n\n// Internal dismiss button component\nfunction BadgeDismiss({ onClick, color, type, dismissLabel = \"Dismiss\" }: { color: BadgeColor; dismissLabel?: string; onClick: () => void; type: string; }) {\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n onClick()\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.stopPropagation()\n onClick()\n }\n }\n\n // Adapt shape based on badge type: rounded for pills, square for badges\n const isPill = type === \"pill-color\" || type === \"pill-outline\"\n const shapeClass = isPill ? \"rounded-full\" : \"rounded-sm\"\n\n return (\n <button\n className={cn(\n \"size-4 -mr-1 inline-flex items-center justify-center shrink-0 transition-colors cursor-pointer\",\n shapeClass,\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n dismissColorMap[color] ?? dismissColorMap[\"primary\"]\n )}\n aria-label={dismissLabel}\n data-slot=\"badge-dismiss\"\n type=\"button\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n <X className=\"size-3\" />\n </button>\n )\n}\n\n// Internal avatar component for badge\nfunction BadgeAvatar({ src, fallback, alt }: BadgeAvatarProps) {\n const [imageError, setImageError] = React.useState(false)\n\n // Get initials from fallback text\n const initials = fallback\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n\n return (\n <span\n className=\"size-4 -ml-1 rounded-full shrink-0 inline-flex items-center justify-center overflow-hidden bg-muted text-xs font-medium\"\n data-slot=\"badge-avatar\"\n >\n {src && !imageError ? (\n <img\n alt={alt ?? fallback}\n className=\"size-full object-cover\"\n src={src}\n onError={() => { setImageError(true); }}\n />\n ) : (\n <span aria-label={alt ?? fallback}>{initials}</span>\n )}\n </span>\n )\n}\n\n// Internal country flag component\nfunction BadgeCountry({ code }: { code: string }) {\n // Convert country code to flag emoji using regional indicator symbols\n const countryToFlag = (countryCode: string) => {\n // eslint-disable-next-line unicorn/prefer-spread -- Array.from handles Unicode correctly for country codes\n const codePoints = Array.from(countryCode.toUpperCase()).map(\n (char) => 127397 + char.charCodeAt(0)\n )\n return String.fromCodePoint(...codePoints)\n }\n\n return (\n <span\n aria-label={`Flag of ${code}`}\n className=\"text-base -ml-0.5 shrink-0 leading-none\"\n data-slot=\"badge-country\"\n role=\"img\"\n >\n {countryToFlag(code)}\n </span>\n )\n}\n\nfunction Badge({\n className,\n type,\n color,\n size,\n disabled,\n dot,\n icon,\n leadingIcon,\n trailingIcon,\n country,\n avatar,\n iconOnly,\n onDismiss,\n dismissLabel,\n interactive,\n tooltip,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- Intentionally supporting legacy variant for backwards compatibility\n variant,\n asChild = false,\n children,\n onClick,\n ...props\n}: BadgeProps) {\n // Resolve legacy variant to new props (new props take precedence)\n const legacyMapping = variant ? legacyVariantMap[variant] : null\n const resolvedType = (type ?? legacyMapping?.type ?? \"pill-color\") as VariantProps<typeof badgeVariants>[\"type\"]\n const resolvedColor = (color ?? legacyMapping?.color ?? \"primary\") as BadgeColor\n\n // Icon-only badges are square with no horizontal padding\n const iconOnlyClass = iconOnly\n ? \"px-0 aspect-square\"\n : \"\"\n\n const badgeClassName = cn(\n badgeVariants({ type: resolvedType, color: resolvedColor, size }),\n iconOnlyClass,\n Boolean(interactive ?? onClick) && \"cursor-pointer hover:brightness-90\",\n className\n )\n\n // Disabled is a real state (not just a Figma style): toggle data-disabled + aria-disabled\n const stateAttrs = {\n \"aria-disabled\": disabled ? true : undefined,\n \"data-disabled\": disabled ? true : undefined,\n }\n\n // When asChild is true, use Slot which requires exactly one child\n // dot and onDismiss features are not supported with asChild\n if (asChild) {\n return (\n <Slot className={badgeClassName} data-slot=\"badge\" {...stateAttrs} {...props}>\n {children}\n </Slot>\n )\n }\n\n // Resolve leading content\n const resolvedLeadingIcon = leadingIcon ?? icon\n\n // Render leading content (avatar, country, dot, or leading icon)\n const renderLeading = () => {\n if (avatar) return <BadgeAvatar {...avatar} />\n if (country) return <BadgeCountry code={country} />\n if (dot) return <BadgeDot color={resolvedColor} />\n if (resolvedLeadingIcon) return <span className=\"shrink-0\" data-slot=\"badge-leading-icon\">{resolvedLeadingIcon}</span>\n return null\n }\n\n // Render trailing content (trailing icon or dismiss)\n const renderTrailing = () => {\n if (onDismiss) return <BadgeDismiss color={resolvedColor} dismissLabel={dismissLabel} type={resolvedType ?? \"pill-color\"} onClick={onDismiss} />\n if (trailingIcon) return <span className=\"shrink-0\" data-slot=\"badge-trailing-icon\">{trailingIcon}</span>\n return null\n }\n\n // Helper to wrap element with tooltip if tooltip prop is provided\n const wrapWithTooltip = (element: React.ReactElement) => {\n if (!tooltip) return element\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {element}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n // Icon-only variant: render only the icon, no children or other elements\n if (iconOnly) {\n return wrapWithTooltip(\n <span\n className={badgeClassName}\n data-slot=\"badge\"\n onClick={onClick}\n {...stateAttrs}\n {...props}\n >\n <span className=\"shrink-0\" data-slot=\"badge-icon-only\">{iconOnly}</span>\n </span>\n )\n }\n\n return wrapWithTooltip(\n <span\n className={badgeClassName}\n data-slot=\"badge\"\n onClick={onClick}\n {...stateAttrs}\n {...props}\n >\n {renderLeading()}\n {children}\n {renderTrailing()}\n </span>\n )\n}\n\n/* eslint-enable sonarjs/no-duplicate-string */\n\nexport { Badge, badgeVariants }\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/ContextMenu/ContextMenu.variants.ts","../src/components/navigation/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"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","file":"chunk-4Y72SPNL.js","sourcesContent":["// ContextMenu/ContextMenu.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Shared animation and transition styles for menu content\n */\nconst menuContentBase = [\n \"bg-popover text-popover-foreground\",\n \"z-[var(--context-menu-content-z-index)] min-w-[var(--context-menu-content-min-width)] overflow-hidden rounded-[var(--context-menu-content-radius)] border-[var(--context-menu-content-border-width)] p-[var(--context-menu-content-padding)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n]\n\n/**\n * Shared base styles for interactive menu items\n */\nconst menuItemBase = [\n \"relative flex cursor-default items-center rounded-[var(--context-menu-item-radius)] text-[length:var(--context-menu-item-text-size)] outline-hidden select-none\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-[var(--context-menu-item-icon-size)]\",\n]\n\n/**\n * ContextMenuSubTrigger variant styles\n */\nexport const contextMenuSubTriggerVariants = cva(\n [\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"px-[var(--context-menu-item-padding-x)] py-[var(--context-menu-item-padding-y)] gap-[var(--context-menu-item-gap)]\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-[var(--context-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * ContextMenuSubContent variant styles\n */\nexport const contextMenuSubContentVariants = cva([\n ...menuContentBase,\n \"shadow-lg\",\n \"origin-(--radix-context-menu-content-transform-origin)\",\n])\n\n/**\n * ContextMenuContent variant styles\n */\nexport const contextMenuContentVariants = cva([\n ...menuContentBase,\n \"shadow-md\",\n \"max-h-(--radix-context-menu-content-available-height)\",\n \"origin-(--radix-context-menu-content-transform-origin)\",\n \"overflow-x-hidden overflow-y-auto\",\n])\n\n/**\n * ContextMenuItem variant styles\n */\nexport const contextMenuItemVariants = cva(\n [\n ...menuItemBase,\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"px-[var(--context-menu-item-padding-x)] py-[var(--context-menu-item-padding-y)] gap-[var(--context-menu-item-gap)]\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-[var(--context-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n variant: {\n default: \"focus:bg-accent focus:text-accent-foreground\",\n destructive: [\n \"text-destructive\",\n \"focus:bg-destructive/10 dark:focus:bg-destructive/20\",\n \"focus:text-destructive\",\n \"*:[svg]:!text-destructive\",\n ],\n },\n },\n defaultVariants: {\n inset: false,\n variant: \"default\",\n },\n }\n)\n\n/**\n * ContextMenuCheckboxItem variant styles\n */\nexport const contextMenuCheckboxItemVariants = cva([\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"py-[var(--context-menu-item-padding-y)] pr-[var(--context-menu-item-padding-x)] pl-[var(--context-menu-item-inset-padding-left)] gap-[var(--context-menu-item-gap)]\",\n])\n\n/**\n * ContextMenuRadioItem variant styles\n */\nexport const contextMenuRadioItemVariants = cva([\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"py-[var(--context-menu-item-padding-y)] pr-[var(--context-menu-item-padding-x)] pl-[var(--context-menu-item-inset-padding-left)] gap-[var(--context-menu-item-gap)]\",\n])\n\n/**\n * ContextMenuLabel variant styles\n */\nexport const contextMenuLabelVariants = cva(\n [\"text-foreground px-[var(--context-menu-item-padding-x)] py-[var(--context-menu-item-padding-y)] text-[length:var(--context-menu-item-text-size)] font-medium\"],\n {\n variants: {\n inset: {\n true: \"pl-[var(--context-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * ContextMenuSeparator variant styles\n */\nexport const contextMenuSeparatorVariants = cva([\"bg-border -mx-[var(--context-menu-separator-margin-x)] my-[var(--context-menu-separator-margin-y)] h-[var(--context-menu-separator-height)]\"])\n\n/**\n * ContextMenuShortcut variant styles\n */\nexport const contextMenuShortcutVariants = cva([\n \"text-muted-foreground ml-auto text-[length:var(--context-menu-shortcut-text-size)] tracking-widest\",\n])\n\n/**\n * Item indicator wrapper styles\n */\nexport const contextMenuIndicatorWrapperVariants = cva([\n \"pointer-events-none absolute left-[var(--context-menu-indicator-left)] flex size-[var(--context-menu-indicator-size)] items-center justify-center\",\n])\n\nexport type ContextMenuSubTriggerVariantProps = VariantProps<\n typeof contextMenuSubTriggerVariants\n>\nexport type ContextMenuItemVariantProps = VariantProps<\n typeof contextMenuItemVariants\n>\nexport type ContextMenuLabelVariantProps = VariantProps<\n typeof contextMenuLabelVariants\n>\n","\"use client\"\n\nimport type {\n ContextMenuCheckboxItemProps,\n ContextMenuContentProps,\n ContextMenuGroupProps,\n ContextMenuItemProps,\n ContextMenuLabelProps,\n ContextMenuPortalProps,\n ContextMenuProps,\n ContextMenuRadioGroupProps,\n ContextMenuRadioItemProps,\n ContextMenuSeparatorProps,\n ContextMenuShortcutProps,\n ContextMenuSubContentProps,\n ContextMenuSubProps,\n ContextMenuSubTriggerProps,\n ContextMenuTriggerProps,\n} from \"./ContextMenu.types\"\n\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n contextMenuCheckboxItemVariants,\n contextMenuContentVariants,\n contextMenuIndicatorWrapperVariants,\n contextMenuItemVariants,\n contextMenuLabelVariants,\n contextMenuRadioItemVariants,\n contextMenuSeparatorVariants,\n contextMenuShortcutVariants,\n contextMenuSubContentVariants,\n contextMenuSubTriggerVariants,\n} from \"./ContextMenu.variants\"\n\n/**\n * ContextMenu - Root component for context menus.\n *\n * Displays a menu when the user right-clicks on the trigger element.\n *\n * @example\n * <ContextMenu>\n * <ContextMenuTrigger>Right click me</ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuItem>Profile</ContextMenuItem>\n * <ContextMenuItem>Settings</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n */\nfunction ContextMenu({ ...props }: ContextMenuProps) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\n/**\n * ContextMenuTrigger - Element that triggers the context menu on right-click.\n */\nfunction ContextMenuTrigger({ ...props }: ContextMenuTriggerProps) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\n/**\n * ContextMenuGroup - Groups related menu items.\n */\nfunction ContextMenuGroup({ ...props }: ContextMenuGroupProps) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\n/**\n * ContextMenuPortal - Renders content in a portal.\n */\nfunction ContextMenuPortal({ ...props }: ContextMenuPortalProps) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\n/**\n * ContextMenuSub - Container for nested submenus.\n */\nfunction ContextMenuSub({ ...props }: ContextMenuSubProps) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\n/**\n * ContextMenuRadioGroup - Groups radio items for single selection.\n */\nfunction ContextMenuRadioGroup({ ...props }: ContextMenuRadioGroupProps) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuSubTrigger - Triggers a nested submenu.\n */\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: ContextMenuSubTriggerProps) {\n return (\n <ContextMenuPrimitive.SubTrigger\n className={cn(contextMenuSubTriggerVariants({ inset }), className)}\n data-inset={inset}\n data-slot=\"context-menu-sub-trigger\"\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\n/**\n * ContextMenuSubContent - Content container for submenus.\n */\nfunction ContextMenuSubContent({\n className,\n ...props\n}: ContextMenuSubContentProps) {\n return (\n <ContextMenuPrimitive.SubContent\n className={cn(contextMenuSubContentVariants(), className)}\n data-slot=\"context-menu-sub-content\"\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuContent - Main content container for the menu.\n *\n * Automatically wraps content in a Portal.\n */\nfunction ContextMenuContent({\n className,\n ...props\n}: ContextMenuContentProps) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n className={cn(contextMenuContentVariants(), className)}\n data-slot=\"context-menu-content\"\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\n/**\n * ContextMenuItem - Individual menu item.\n *\n * @example\n * // Default item\n * <ContextMenuItem>Edit</ContextMenuItem>\n *\n * @example\n * // Destructive variant\n * <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n */\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: ContextMenuItemProps) {\n return (\n <ContextMenuPrimitive.Item\n className={cn(contextMenuItemVariants({ inset, variant }), className)}\n data-inset={inset}\n data-slot=\"context-menu-item\"\n data-variant={variant}\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuCheckboxItem - Menu item with a checkbox.\n */\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: ContextMenuCheckboxItemProps) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n checked={checked ?? false}\n className={cn(contextMenuCheckboxItemVariants(), className)}\n data-slot=\"context-menu-checkbox-item\"\n {...props}\n >\n <span className={cn(contextMenuIndicatorWrapperVariants())}>\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\n/**\n * ContextMenuRadioItem - Menu item for radio selection.\n */\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: ContextMenuRadioItemProps) {\n return (\n <ContextMenuPrimitive.RadioItem\n className={cn(contextMenuRadioItemVariants(), className)}\n data-slot=\"context-menu-radio-item\"\n {...props}\n >\n <span className={cn(contextMenuIndicatorWrapperVariants())}>\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\n/**\n * ContextMenuLabel - Non-interactive label for grouping items.\n */\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: ContextMenuLabelProps) {\n return (\n <ContextMenuPrimitive.Label\n className={cn(contextMenuLabelVariants({ inset }), className)}\n data-inset={inset}\n data-slot=\"context-menu-label\"\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuSeparator - Visual separator between menu sections.\n */\nfunction ContextMenuSeparator({\n className,\n ...props\n}: ContextMenuSeparatorProps) {\n return (\n <ContextMenuPrimitive.Separator\n className={cn(contextMenuSeparatorVariants(), className)}\n data-slot=\"context-menu-separator\"\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuShortcut - Displays keyboard shortcut hint.\n */\nfunction ContextMenuShortcut({\n className,\n ...props\n}: ContextMenuShortcutProps) {\n return (\n <span\n className={cn(contextMenuShortcutVariants(), className)}\n data-slot=\"context-menu-shortcut\"\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/Menu/Menu.variants.ts","../src/components/navigation/Menu/Menu.tsx"],"names":[],"mappings":"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","file":"chunk-5GE3BQA7.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Menu root variant styles\n */\nexport const menuVariants = cva(\n [\n \"flex p-[var(--menu-root-padding)]\",\n // Floating chrome (DES-1281): Menu owns the popover casing — bg/border/shadow/radius —\n // so consumers no longer wrap it in a `rounded-md border bg-popover shadow-md` div.\n \"rounded-[var(--menu-content-radius)] border border-[color:var(--menu-content-border)] bg-[color:var(--menu-content-bg)] shadow-[var(--menu-content-shadow)]\",\n ],\n {\n variants: {\n orientation: {\n vertical: \"flex-col\",\n horizontal: \"flex-row\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\n/**\n * MenuItem variant styles\n */\nexport const menuItemVariants = cva(\n [\n // Base styles\n \"relative flex w-full cursor-pointer select-none items-center gap-[var(--menu-item-gap)]\",\n \"rounded-[var(--menu-item-radius)] px-[var(--menu-item-padding-x)] py-[var(--menu-item-padding-y)] text-[length:var(--menu-item-text-size)] outline-none\",\n // Focus styles\n \"focus:bg-accent focus:text-accent-foreground\",\n // Hover styles\n \"hover:bg-accent hover:text-accent-foreground\",\n // Transition\n \"transition-colors\",\n // Disabled styles\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n // SVG styles\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ],\n {\n variants: {\n variant: {\n default: \"\",\n destructive: \"text-destructive focus:bg-destructive/10 focus:text-destructive hover:bg-destructive/10 hover:text-destructive\",\n },\n inset: {\n true: \"pl-8\",\n false: \"\",\n },\n selected: {\n true: \"bg-accent/50\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n inset: false,\n selected: false,\n },\n }\n)\n\n/**\n * MenuGroup variant styles\n */\nexport const menuGroupVariants = cva([\n \"flex flex-col gap-1\",\n])\n\n/**\n * MenuLabel variant styles\n */\nexport const menuLabelVariants = cva(\n [\n \"px-2 py-1.5 text-xs font-medium text-muted-foreground\",\n \"uppercase tracking-wider\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-8\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * MenuSeparator variant styles\n */\nexport const menuSeparatorVariants = cva([\n \"-mx-1 my-1 h-px bg-border\",\n])\n\n/**\n * MenuShortcut variant styles\n */\nexport const menuShortcutVariants = cva([\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n])\n","\"use client\"\n\nimport type {\n MenuGroupProps,\n MenuItemProps,\n MenuLabelProps,\n MenuProps,\n MenuSeparatorProps,\n MenuShortcutProps,\n} from \"./Menu.types\"\nimport type { KeyboardEvent } from \"react\";\n\nimport { useCallback, useRef } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { ScrollArea } from \"../../layout/ScrollArea\"\nimport {\n menuGroupVariants,\n menuItemVariants,\n menuLabelVariants,\n menuSeparatorVariants,\n menuShortcutVariants,\n menuVariants,\n} from \"./Menu.variants\"\n\n/**\n * Menu - A navigable list of options with keyboard support.\n *\n * Base component for creating custom menus with full accessibility.\n *\n * @example\n * <Menu>\n * <MenuItem onSelect={() => console.log(\"Edit\")}>Edit</MenuItem>\n * <MenuItem onSelect={() => console.log(\"Copy\")}>Copy</MenuItem>\n * <MenuSeparator />\n * <MenuItem variant=\"destructive\">Delete</MenuItem>\n * </Menu>\n */\nfunction Menu({\n className,\n orientation = \"vertical\",\n maxHeight,\n children,\n ...props\n}: MenuProps) {\n const menuRef = useRef<HTMLDivElement>(null)\n\n /* eslint-disable sonarjs/cognitive-complexity -- Keyboard navigation requires handling multiple key cases */\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const menu = menuRef.current\n if (!menu) return\n\n const items = [...menu.querySelectorAll('[role=\"menuitem\"]:not([data-disabled])')] as HTMLElement[]\n\n if (items.length === 0) return\n\n const currentIndex = items.findIndex((item) => item === document.activeElement)\n\n let nextIndex: null | number = null\n\n switch (event.key) {\n case \"ArrowDown\":\n if (orientation === \"vertical\") {\n event.preventDefault()\n nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0\n }\n break\n case \"ArrowUp\":\n if (orientation === \"vertical\") {\n event.preventDefault()\n nextIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1\n }\n break\n case \"ArrowRight\":\n if (orientation === \"horizontal\") {\n event.preventDefault()\n nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0\n }\n break\n case \"ArrowLeft\":\n if (orientation === \"horizontal\") {\n event.preventDefault()\n nextIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1\n }\n break\n case \"Home\":\n event.preventDefault()\n nextIndex = 0\n break\n case \"End\":\n event.preventDefault()\n nextIndex = items.length - 1\n break\n }\n\n if (nextIndex !== null) {\n const nextItem = items[nextIndex]\n if (nextItem) {\n nextItem.focus()\n }\n }\n },\n [orientation]\n )\n /* eslint-enable sonarjs/cognitive-complexity */\n\n return (\n <div\n ref={menuRef}\n className={cn(menuVariants({ orientation }), className)}\n data-slot=\"menu\"\n role=\"menu\"\n onKeyDown={handleKeyDown}\n {...props}\n >\n {maxHeight == null ? (\n children\n ) : (\n <ScrollArea className=\"w-full\" style={{ maxHeight }}>\n {children}\n </ScrollArea>\n )}\n </div>\n )\n}\n\n/**\n * MenuItem - Individual menu item with optional variants.\n */\nfunction MenuItem({\n className,\n variant = \"default\",\n inset = false,\n selected = false,\n onSelect,\n disabled = false,\n children,\n onClick,\n onKeyDown,\n ...props\n}: MenuItemProps) {\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return\n onClick?.(event)\n onSelect?.()\n },\n [disabled, onClick, onSelect]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event)\n if (disabled) return\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onSelect?.()\n }\n },\n [disabled, onKeyDown, onSelect]\n )\n\n return (\n <button\n aria-disabled={disabled || undefined}\n aria-selected={selected || undefined}\n className={cn(menuItemVariants({ variant, inset, selected }), className)}\n data-disabled={disabled || undefined}\n data-slot=\"menu-item\"\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n type=\"button\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </button>\n )\n}\n\n/**\n * MenuGroup - Groups related menu items together.\n */\nfunction MenuGroup({\n className,\n label,\n children,\n ...props\n}: MenuGroupProps) {\n return (\n <div\n aria-label={label}\n className={cn(menuGroupVariants(), className)}\n data-slot=\"menu-group\"\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * MenuLabel - Label for a group of menu items.\n */\nfunction MenuLabel({\n className,\n inset = false,\n children,\n ...props\n}: MenuLabelProps) {\n return (\n <div\n className={cn(menuLabelVariants({ inset }), className)}\n data-slot=\"menu-label\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * MenuSeparator - Visual divider between menu items.\n */\nfunction MenuSeparator({ className, ...props }: MenuSeparatorProps) {\n return (\n <div\n className={cn(menuSeparatorVariants(), className)}\n data-slot=\"menu-separator\"\n role=\"separator\"\n {...props}\n />\n )\n}\n\n/**\n * MenuShortcut - Displays keyboard shortcut hint.\n */\nfunction MenuShortcut({ className, children, ...props }: MenuShortcutProps) {\n return (\n <span\n className={cn(menuShortcutVariants(), className)}\n data-slot=\"menu-shortcut\"\n {...props}\n >\n {children}\n </span>\n )\n}\n\nexport { Menu, MenuGroup, MenuItem, MenuLabel, MenuSeparator, MenuShortcut }\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/Sidebar/Sidebar.variants.ts","../src/components/navigation/Sidebar/Sidebar.tsx"],"names":["open"],"mappings":"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","file":"chunk-5U5XAOES.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/* eslint-disable sonarjs/no-duplicate-string -- Tailwind class combinations naturally repeat in variant definitions */\n\n/**\n * Common peer menu button position styles\n */\nconst PEER_SIZE_POSITIONS = [\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n]\n\n/**\n * SidebarProvider wrapper variant styles\n */\nexport const sidebarProviderVariants = cva([\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n])\n\n/**\n * Sidebar (non-collapsible) variant styles\n */\nexport const sidebarNonCollapsibleVariants = cva([\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n])\n\n/**\n * Sidebar mobile content variant styles\n */\nexport const sidebarMobileVariants = cva([\n \"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\",\n])\n\n/**\n * Sidebar desktop wrapper variant styles\n */\nexport const sidebarDesktopVariants = cva([\n \"group peer text-sidebar-foreground hidden md:block\",\n])\n\n/**\n * Sidebar gap variant styles\n */\nexport const sidebarGapVariants = cva([\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n])\n\n/**\n * Sidebar container variant styles\n */\nexport const sidebarContainerVariants = cva([\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n])\n\n/**\n * Sidebar inner variant styles\n */\nexport const sidebarInnerVariants = cva([\n \"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col\",\n \"group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\",\n])\n\n/**\n * SidebarTrigger variant styles\n */\nexport const sidebarTriggerVariants = cva([\"size-7\"])\n\n/**\n * SidebarRail variant styles\n */\nexport const sidebarRailVariants = cva([\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear\",\n \"group-data-[side=left]:-right-4 group-data-[side=right]:left-0\",\n \"after:absolute after:inset-y-0 after:left-1/2 after:w-0.5 sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n])\n\n/**\n * SidebarInset variant styles\n */\nexport const sidebarInsetVariants = cva([\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0\",\n \"md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm\",\n \"md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n \"peer-data-[mode=dual]:bg-[color:var(--sidebar-background,var(--sidebar))] peer-data-[mode=dual]:flex peer-data-[mode=dual]:flex-col peer-data-[mode=dual]:gap-3 peer-data-[mode=dual]:pt-5\",\n])\n\n/**\n * SidebarInput variant styles\n */\nexport const sidebarInputVariants = cva([\n \"bg-background h-8 w-full shadow-none\",\n])\n\n/**\n * SidebarHeader variant styles\n *\n * Dual mode consumes sidebar.tokens.json (Figma 1092:542 panel header):\n * - padding-x = 16px (--sidebar-panel-header-padding-x)\n * - padding-top = 28px (--sidebar-panel-padding-top) when at top of panel\n */\nexport const sidebarHeaderVariants = cva([\n \"flex flex-col gap-2 p-2\",\n \"group-data-[mode]/sidebar-wrapper:gap-0\",\n \"group-data-[mode]/sidebar-wrapper:px-[var(--sidebar-panel-header-padding-x)]\",\n \"group-data-[mode]/sidebar-wrapper:pt-[var(--sidebar-panel-padding-top)]\",\n \"group-data-[mode]/sidebar-wrapper:pb-0\",\n])\n\n/**\n * SidebarFooter variant styles\n */\nexport const sidebarFooterVariants = cva([\n \"flex flex-col gap-2 p-2\",\n])\n\n/**\n * SidebarSeparator variant styles\n */\nexport const sidebarSeparatorVariants = cva([\n \"bg-sidebar-border mx-2 w-auto\",\n])\n\n/**\n * SidebarContent variant styles\n */\nexport const sidebarContentVariants = cva([\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n])\n\n/**\n * SidebarGroup variant styles\n *\n * Dual mode consumes sidebar.tokens.json (Figma 1092:542 Sub Categoria block):\n * - padding-x = 8px (--sidebar-section-padding-x)\n * - vertical gap with header handled by panel gap (--sidebar-panel-gap = 28px)\n */\nexport const sidebarGroupVariants = cva([\n \"relative flex w-full min-w-0 flex-col p-2\",\n \"group-data-[mode]/sidebar-wrapper:px-[var(--sidebar-section-padding-x)]\",\n \"group-data-[mode]/sidebar-wrapper:pt-[var(--sidebar-panel-gap)]\",\n \"group-data-[mode]/sidebar-wrapper:gap-[var(--sidebar-section-gap)]\",\n])\n\n/**\n * SidebarGroupLabel variant styles\n *\n * Dual mode consumes sidebar.tokens.json (Figma 1092:542 section title \"Dashboards\"):\n * - padding-x = 8px (--sidebar-section-title-padding-x)\n * - font 10px Regular leading-1 (not 12px uppercase!)\n * - color = muted-foreground tertiary\n */\nexport const sidebarGroupLabelVariants = cva([\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium\",\n \"outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2\",\n \"[&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n \"group-data-[mode]/sidebar-wrapper:h-auto\",\n \"group-data-[mode]/sidebar-wrapper:px-[var(--sidebar-section-title-padding-x)]\",\n \"group-data-[mode]/sidebar-wrapper:py-0\",\n \"group-data-[mode]/sidebar-wrapper:text-[length:var(--sidebar-section-title-font-size)]\",\n \"group-data-[mode]/sidebar-wrapper:font-[var(--sidebar-section-title-font-weight)]\",\n \"group-data-[mode]/sidebar-wrapper:leading-[var(--sidebar-section-title-line-height)]\",\n \"group-data-[mode]/sidebar-wrapper:tracking-normal\",\n \"group-data-[mode]/sidebar-wrapper:normal-case\",\n \"group-data-[mode]/sidebar-wrapper:text-[color:var(--sidebar-section-title-color)]\",\n])\n\n/**\n * SidebarGroupAction variant styles\n */\nexport const sidebarGroupActionVariants = cva([\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n \"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0\",\n \"outline-hidden transition-transform focus-visible:ring-2\",\n \"[&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n])\n\n/**\n * SidebarGroupContent variant styles\n */\nexport const sidebarGroupContentVariants = cva([\n \"w-full text-sm\",\n])\n\n/**\n * SidebarMenu variant styles\n *\n * Figma spacing differs per variant:\n * - Single (Expanded 1091:8942): gap-y 20px between items (--sidebar-rail-item-gap)\n * - Dual panel (1092:542): gap-y 8px between sub-items (--sidebar-section-content-gap)\n */\nexport const sidebarMenuVariants = cva([\n \"flex w-full min-w-0 flex-col gap-1\",\n \"group-data-[mode=single]:gap-[var(--sidebar-rail-item-gap)]\",\n \"group-data-[mode=dual]:gap-[var(--sidebar-section-content-gap)]\",\n \"group-data-[mode=dual]:px-[var(--sidebar-section-content-padding-x)]\",\n])\n\n/**\n * SidebarMenuItem variant styles\n */\nexport const sidebarMenuItemVariants = cva([\n \"group/menu-item relative\",\n])\n\n/**\n * SidebarMenuButton variant styles\n */\nexport const sidebarMenuButtonVariants = cva(\n [\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm\",\n \"outline-hidden ring-sidebar-ring transition-[width,height,padding]\",\n \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n \"focus-visible:ring-2\",\n \"active:bg-sidebar-accent active:text-sidebar-accent-foreground\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"group-has-data-[sidebar=menu-action]/menu-item:pr-8\",\n \"aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground\",\n \"data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground\",\n \"group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!\",\n \"[&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n // Dual mode — consumes Figma 1092:446 nav-item tokens:\n // padding 8px, radius 4px, gap 12px, font 14px Regular leading-1,\n // color muted-foreground default / foreground active, icon 20px\n \"group-data-[mode]/sidebar-wrapper:p-[var(--sidebar-nav-item-padding)]\",\n \"group-data-[mode]/sidebar-wrapper:rounded-[var(--sidebar-nav-item-radius)]\",\n \"group-data-[mode]/sidebar-wrapper:gap-[var(--sidebar-nav-item-gap)]\",\n \"group-data-[mode]/sidebar-wrapper:text-[length:var(--sidebar-nav-item-font-size)]\",\n \"group-data-[mode]/sidebar-wrapper:font-[var(--sidebar-nav-item-font-weight)]\",\n \"group-data-[mode]/sidebar-wrapper:leading-[var(--sidebar-nav-item-line-height)]\",\n \"group-data-[mode]/sidebar-wrapper:text-[color:var(--sidebar-nav-item-fg-default)]\",\n \"group-data-[mode]/sidebar-wrapper:[&>svg]:size-[var(--sidebar-nav-item-icon-size)]\",\n \"group-data-[mode]/sidebar-wrapper:hover:bg-[color:var(--sidebar-nav-item-bg-hover)]\",\n \"group-data-[mode]/sidebar-wrapper:hover:text-[color:var(--sidebar-nav-item-fg-active)]\",\n // Scoped `!` so the token-mode active bg/fg wins the Tailwind v4 stacked-variant\n // cascade over the base `data-[active=true]:bg-sidebar-accent` (which otherwise wins\n // by sort order). Idiomatic here (cf. `size-8!`/`p-2!` above). Gated on data-mode →\n // legacy sidebars (no data-mode) keep the shadcn mint; fixes single + dual alike.\n \"group-data-[mode]/sidebar-wrapper:data-[active=true]:bg-[color:var(--sidebar-nav-item-bg-hover)]!\",\n \"group-data-[mode]/sidebar-wrapper:data-[active=true]:text-[color:var(--sidebar-nav-item-fg-active)]!\",\n ],\n {\n variants: {\n variant: {\n default:\n \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n/**\n * SidebarRailButton variant styles\n *\n * Consumes sidebar.tokens.json sub-tokens (Figma 1087:204 Nav Item, status=Default/Active):\n * - padding 8px, radius 4px (rounded-md)\n * - icon size 20px (was 16px — Figma canonical)\n * - fg default = muted-foreground, active = foreground\n * - bg hover/active = muted\n */\nexport const sidebarRailButtonVariants = cva(\n [\n \"inline-flex items-center justify-center transition-colors shrink-0\",\n \"p-[var(--sidebar-rail-item-padding)]\",\n \"rounded-[var(--sidebar-rail-item-radius)]\",\n \"outline-hidden ring-sidebar-ring focus-visible:ring-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"[&>svg]:size-[var(--sidebar-rail-item-icon-size)] [&>svg]:shrink-0\",\n ],\n {\n variants: {\n isActive: {\n true: \"bg-[color:var(--sidebar-rail-item-bg-hover)] text-[color:var(--sidebar-rail-item-fg-active)]\",\n false: \"bg-[color:var(--sidebar-rail-item-bg-default)] text-[color:var(--sidebar-rail-item-fg-default)] hover:bg-[color:var(--sidebar-rail-item-bg-hover)] hover:text-[color:var(--sidebar-rail-item-fg-active)]\",\n },\n },\n defaultVariants: {\n isActive: false,\n },\n }\n)\n\n/**\n * SidebarMenuAction variant styles\n */\nexport const sidebarMenuActionVariants = cva([\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground\",\n \"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0\",\n \"outline-hidden transition-transform focus-visible:ring-2\",\n \"[&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 md:after:hidden\",\n ...PEER_SIZE_POSITIONS,\n \"group-data-[collapsible=icon]:hidden\",\n])\n\n/**\n * SidebarMenuAction showOnHover variant styles\n */\nexport const sidebarMenuActionShowOnHoverVariants = cva([\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100\",\n \"data-[state=open]:opacity-100 md:opacity-0\",\n])\n\n/**\n * SidebarMenuBadge variant styles\n */\nexport const sidebarMenuBadgeVariants = cva([\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center\",\n \"rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n ...PEER_SIZE_POSITIONS,\n \"group-data-[collapsible=icon]:hidden\",\n])\n\n/**\n * SidebarMenuSkeleton variant styles\n */\nexport const sidebarMenuSkeletonVariants = cva([\n \"flex h-8 items-center gap-2 rounded-md px-2\",\n])\n\n/**\n * SidebarMenuSub variant styles\n */\nexport const sidebarMenuSubVariants = cva([\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n])\n\n/**\n * SidebarMenuSubItem variant styles\n */\nexport const sidebarMenuSubItemVariants = cva([\n \"group/menu-sub-item relative\",\n])\n\n/**\n * SidebarMenuSubButton variant styles\n */\nexport const sidebarMenuSubButtonVariants = cva(\n [\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n \"active:bg-sidebar-accent active:text-sidebar-accent-foreground\",\n \"[&>svg]:text-sidebar-accent-foreground\",\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2\",\n \"outline-hidden focus-visible:ring-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n \"[&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n \"group-data-[collapsible=icon]:hidden\",\n ],\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n","\"use client\"\n\nimport type {\n SidebarContentProps,\n SidebarContextProps,\n SidebarFooterProps,\n SidebarGroupActionProps,\n SidebarGroupContentProps,\n SidebarGroupLabelProps,\n SidebarGroupProps,\n SidebarHeaderProps,\n SidebarInputProps,\n SidebarInsetProps,\n SidebarMenuActionProps,\n SidebarMenuBadgeProps,\n SidebarMenuButtonProps,\n SidebarMenuItemProps,\n SidebarMenuProps,\n SidebarMenuSkeletonProps,\n SidebarMenuSubButtonProps,\n SidebarMenuSubItemProps,\n SidebarMenuSubProps,\n SidebarPanelContentProps,\n SidebarProps,\n SidebarProviderProps,\n SidebarRailButtonProps,\n SidebarRailContentProps,\n SidebarRailProps,\n SidebarSeparatorProps,\n SidebarTriggerProps,\n} from \"./Sidebar.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronsUpDown, MoonIcon, PanelLeftIcon, SunIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { useIsMobile } from \"../../../hooks/use-mobile\"\nimport { cn } from \"../../../lib/utils\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../../feedback/Tooltip\"\nimport { TextInput } from \"../../forms/TextInput\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"../../layout/Sheet\"\nimport { Avatar } from \"../../primitives/Avatar\"\nimport { Button } from \"../../primitives/Button\"\nimport { Divider } from \"../../primitives/Divider\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\nimport {\n sidebarContainerVariants,\n sidebarContentVariants,\n sidebarDesktopVariants,\n sidebarFooterVariants,\n sidebarGapVariants,\n sidebarGroupActionVariants,\n sidebarGroupContentVariants,\n sidebarGroupLabelVariants,\n sidebarGroupVariants,\n sidebarHeaderVariants,\n sidebarInnerVariants,\n sidebarInputVariants,\n sidebarInsetVariants,\n sidebarMenuActionShowOnHoverVariants,\n sidebarMenuActionVariants,\n sidebarMenuBadgeVariants,\n sidebarMenuButtonVariants,\n sidebarMenuItemVariants,\n sidebarMenuSkeletonVariants,\n sidebarMenuSubButtonVariants,\n sidebarMenuSubItemVariants,\n sidebarMenuSubVariants,\n sidebarMenuVariants,\n sidebarMobileVariants,\n sidebarNonCollapsibleVariants,\n sidebarProviderVariants,\n sidebarRailButtonVariants,\n sidebarRailVariants,\n sidebarSeparatorVariants,\n sidebarTriggerVariants,\n} from \"./Sidebar.variants\"\n\n// App-level constants — NOT design tokens. Persistence + keyboard config.\n// Width tokens read from CSS vars (--sidebar-width, --sidebar-width-icon,\n// --sidebar-width-mobile, --sidebar-rail-width, --sidebar-panel-width)\n// emitted by @etus/tokens. See packages/tokens/src/components/sidebar.tokens.json.\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\nconst SidebarContext = React.createContext<null | SidebarContextProps>(null)\n\n/**\n * useSidebar - Hook to access sidebar context.\n *\n * Must be used within a SidebarProvider.\n */\nfunction useSidebar() {\n const context = React.use(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\n/**\n * SidebarProvider - Context provider for sidebar state management.\n *\n * Provides state for expanded/collapsed, mobile/desktop, and keyboard shortcuts.\n *\n * @example\n * <SidebarProvider>\n * <Sidebar>...</Sidebar>\n * <SidebarInset>...</SidebarInset>\n * </SidebarProvider>\n */\nfunction SidebarProvider({\n defaultOpen = true,\n mode,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: SidebarProviderProps) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const open = openProp ?? internalOpen\n const cookieTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(undefined)\n const persistCookie = React.useCallback((openState: boolean) => {\n clearTimeout(cookieTimeoutRef.current)\n cookieTimeoutRef.current = setTimeout(() => {\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${String(openState)}; path=/; max-age=${String(SIDEBAR_COOKIE_MAX_AGE)}`\n }, 300)\n }, [])\n\n const setOpen = React.useCallback(\n (value: ((value: boolean) => boolean) | boolean) => {\n if (typeof value === \"function\") {\n if (setOpenProp) {\n const resolved = value(open)\n setOpenProp(resolved)\n persistCookie(resolved)\n } else {\n setInternalOpen((prev) => {\n const next = value(prev)\n persistCookie(next)\n return next\n })\n }\n } else {\n if (setOpenProp) {\n setOpenProp(value)\n } else {\n setInternalOpen(value)\n }\n persistCookie(value)\n }\n },\n [setOpenProp, open, persistCookie]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) { setOpenMobile((open) => !open); } else { setOpen((open) => !open); }\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.repeat) return\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => { window.removeEventListener(\"keydown\", handleKeyDown); }\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n mode,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, mode, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n // Mode \"dual\" overrides --sidebar-width and --sidebar-width-icon to compose\n // rail + panel widths. Single mode uses the base token values from\n // @etus/tokens (--sidebar-width, --sidebar-width-icon) without override.\n ...(mode === \"dual\" && {\n \"--sidebar-width\": \"calc(var(--sidebar-rail-width) + var(--sidebar-panel-width))\",\n \"--sidebar-width-icon\": \"var(--sidebar-rail-width)\",\n }),\n ...style,\n } as React.CSSProperties\n }\n className={cn(sidebarProviderVariants(), className)}\n data-mode={mode}\n data-slot=\"sidebar-wrapper\"\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext>\n )\n}\n\n/**\n * SidebarDualMode - Private dual-mode rendering path (icon rail + text panel).\n *\n * Desktop: fixed sidebar with rail and panel children side by side.\n * Mobile: falls back to Sheet with panel content only (rail hidden).\n */\nfunction SidebarDualMode({\n side = \"left\",\n className,\n children,\n ...props\n}: SidebarProps) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n style={\n {\n \"--sidebar-width\": \"var(--sidebar-width-mobile)\",\n } as React.CSSProperties\n }\n className={cn(sidebarMobileVariants())}\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <nav aria-label=\"Main navigation\" className=\"flex h-full w-full flex-col\">{children}</nav>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className={cn(sidebarDesktopVariants())}\n data-collapsible={state === \"collapsed\" ? \"icon\" : \"\"}\n data-mode=\"dual\"\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant=\"sidebar\"\n >\n {/* Gap spacer transitions between rail-only and rail+panel widths */}\n <div\n className={cn(\n sidebarGapVariants(),\n \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n sidebarContainerVariants(),\n side === \"left\" ? \"left-0\" : \"right-0\",\n \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n className\n )}\n data-slot=\"sidebar-container\"\n {...props}\n >\n <nav\n aria-label=\"Main navigation\"\n className=\"flex h-full w-full flex-row\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n >\n {children}\n </nav>\n </div>\n </div>\n )\n}\n\n/**\n * Sidebar - The main sidebar component.\n *\n * Supports multiple variants and collapsible modes.\n * When `mode=\"dual\"` is set on SidebarProvider, delegates to SidebarDualMode.\n */\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: SidebarProps) {\n const { isMobile, mode, state, openMobile, setOpenMobile } = useSidebar()\n\n if (mode === \"dual\") {\n return (\n <SidebarDualMode className={className} side={side} {...props}>\n {children}\n </SidebarDualMode>\n )\n }\n\n if (collapsible === \"none\") {\n return (\n <nav\n aria-label=\"Main navigation\"\n className={cn(sidebarNonCollapsibleVariants(), className)}\n data-slot=\"sidebar\"\n {...props}\n >\n {children}\n </nav>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n style={\n {\n \"--sidebar-width\": \"var(--sidebar-width-mobile)\",\n } as React.CSSProperties\n }\n className={cn(sidebarMobileVariants())}\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <nav aria-label=\"Main navigation\" className=\"flex h-full w-full flex-col\">{children}</nav>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className={cn(sidebarDesktopVariants())}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-mode={mode}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n sidebarGapVariants(),\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n sidebarContainerVariants(),\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n className\n )}\n data-slot=\"sidebar-container\"\n {...props}\n >\n <nav\n aria-label=\"Main navigation\"\n className={cn(sidebarInnerVariants())}\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n >\n {children}\n </nav>\n </div>\n </div>\n )\n}\n\n/**\n * SidebarTrigger - Button to toggle the sidebar.\n */\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: SidebarTriggerProps) {\n const { toggleSidebar, state } = useSidebar()\n\n return (\n <Button\n aria-expanded={state === \"expanded\"}\n className={cn(sidebarTriggerVariants(), className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(event, payload) => {\n onClick?.(event, payload)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\n/**\n * SidebarRail - Clickable edge to toggle sidebar.\n */\nfunction SidebarRail({ className, ...props }: SidebarRailProps) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n aria-label=\"Toggle Sidebar\"\n className={cn(sidebarRailVariants(), className)}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n tabIndex={-1}\n title=\"Toggle Sidebar\"\n onClick={toggleSidebar}\n {...props}\n />\n )\n}\n\n/**\n * SidebarInset - Main content area adjacent to sidebar.\n */\nfunction SidebarInset({ className, ...props }: SidebarInsetProps) {\n return (\n <main\n className={cn(sidebarInsetVariants(), className)}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarInput - Input field styled for sidebar.\n */\nfunction SidebarInput({\n className,\n ...props\n}: SidebarInputProps) {\n return (\n <TextInput\n className={cn(sidebarInputVariants(), className)}\n data-sidebar=\"input\"\n data-slot=\"sidebar-input\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarHeader - Header section of the sidebar.\n */\nfunction SidebarHeader({ className, ...props }: SidebarHeaderProps) {\n return (\n <div\n className={cn(sidebarHeaderVariants(), className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarFooter - Footer section of the sidebar.\n */\nfunction SidebarFooter({ className, ...props }: SidebarFooterProps) {\n return (\n <div\n className={cn(sidebarFooterVariants(), className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarSeparator - Divider for sidebar sections.\n */\nfunction SidebarSeparator({\n className,\n ...props\n}: SidebarSeparatorProps) {\n return (\n <Divider\n className={cn(sidebarSeparatorVariants(), className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarContent - Main scrollable content area.\n */\nfunction SidebarContent({ className, ...props }: SidebarContentProps) {\n return (\n <div\n className={cn(sidebarContentVariants(), className)}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarGroup - Group container for sidebar items.\n */\nfunction SidebarGroup({ className, ...props }: SidebarGroupProps) {\n return (\n <div\n className={cn(sidebarGroupVariants(), className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarGroupLabel - Label for a sidebar group.\n */\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: SidebarGroupLabelProps) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(sidebarGroupLabelVariants(), className)}\n data-sidebar=\"group-label\"\n data-slot=\"sidebar-group-label\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarGroupAction - Action button for a sidebar group.\n */\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: SidebarGroupActionProps) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n className={cn(sidebarGroupActionVariants(), className)}\n data-sidebar=\"group-action\"\n data-slot=\"sidebar-group-action\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarGroupContent - Content container for a sidebar group.\n */\nfunction SidebarGroupContent({\n className,\n ...props\n}: SidebarGroupContentProps) {\n return (\n <div\n className={cn(sidebarGroupContentVariants(), className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarMenu - Menu list container.\n */\nfunction SidebarMenu({ className, ...props }: SidebarMenuProps) {\n return (\n <ul\n className={cn(sidebarMenuVariants(), className)}\n data-sidebar=\"menu\"\n data-slot=\"sidebar-menu\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarMenuItem - Individual menu item.\n */\nfunction SidebarMenuItem({ className, ...props }: SidebarMenuItemProps) {\n return (\n <li\n className={cn(sidebarMenuItemVariants(), className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarMenuButton - Interactive menu button with variants.\n */\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: SidebarMenuButtonProps) {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n data-active={isActive}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-slot=\"sidebar-menu-button\"\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n side=\"right\"\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\n/**\n * SidebarMenuAction - Action button within a menu item.\n */\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: SidebarMenuActionProps) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n className={cn(\n sidebarMenuActionVariants(),\n showOnHover && sidebarMenuActionShowOnHoverVariants(),\n className\n )}\n data-sidebar=\"menu-action\"\n data-slot=\"sidebar-menu-action\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarMenuBadge - Badge displayed in a menu item.\n */\nfunction SidebarMenuBadge({\n className,\n ...props\n}: SidebarMenuBadgeProps) {\n return (\n <div\n className={cn(sidebarMenuBadgeVariants(), className)}\n data-sidebar=\"menu-badge\"\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarMenuSkeleton - Loading skeleton for menu items.\n */\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: SidebarMenuSkeletonProps) {\n const skeletonId = React.useId()\n // Deterministic width between 50 to 90% based on component id.\n const width = React.useMemo(() => {\n let hash = 0\n for (let i = 0; i < skeletonId.length; i += 1) {\n hash = Math.trunc(hash * 31 + skeletonId.charCodeAt(i))\n }\n const normalized = Math.abs(hash) % 41 + 50\n return `${String(normalized)}%`\n }, [skeletonId])\n\n return (\n <div\n className={cn(sidebarMenuSkeletonVariants(), className)}\n data-sidebar=\"menu-skeleton\"\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon && (\n <SkeletonLoader\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <SkeletonLoader\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n />\n </div>\n )\n}\n\n/**\n * SidebarMenuSub - Submenu container.\n */\nfunction SidebarMenuSub({ className, ...props }: SidebarMenuSubProps) {\n return (\n <ul\n className={cn(sidebarMenuSubVariants(), className)}\n data-sidebar=\"menu-sub\"\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarMenuSubItem - Individual submenu item.\n */\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: SidebarMenuSubItemProps) {\n return (\n <li\n className={cn(sidebarMenuSubItemVariants(), className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarMenuSubButton - Interactive button within a submenu.\n */\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: SidebarMenuSubButtonProps) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n className={cn(sidebarMenuSubButtonVariants({ size }), className)}\n data-active={isActive}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-slot=\"sidebar-menu-sub-button\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarRailContent - Icon rail zone in dual mode (always visible, 3rem wide).\n */\nfunction SidebarRailContent({\n className,\n ...props\n}: SidebarRailContentProps) {\n const { isMobile, mode } = useSidebar()\n\n if (isMobile && mode === \"dual\") return null\n\n return (\n <div\n className={cn(\n \"flex h-full w-[var(--rail-width)] shrink-0 flex-col items-center\",\n \"border-r border-[color:var(--rail-border)]\",\n \"bg-[color:var(--rail-background)]\",\n className\n )}\n data-sidebar=\"rail-content\"\n data-slot=\"sidebar-rail-content\"\n {...props}\n />\n )\n}\n\n/**\n * SidebarRailButton - Icon button for the sidebar rail (32×32).\n *\n * Supports active/inactive states with Figma-aligned sizing.\n */\nfunction SidebarRailButton({\n isActive = false,\n tooltip,\n className,\n ...props\n}: SidebarRailButtonProps) {\n const button = (\n <button\n className={cn(sidebarRailButtonVariants({ isActive: isActive ?? undefined }), className)}\n data-active={isActive}\n data-sidebar=\"rail-button\"\n data-slot=\"sidebar-rail-button\"\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\">{tooltip}</TooltipContent>\n </Tooltip>\n )\n}\n\n/**\n * SidebarPanelContent - Text panel zone in dual mode (toggleable, 13.5rem wide).\n *\n * Collapses to width 0 when sidebar state is \"collapsed\".\n */\nfunction SidebarPanelContent({\n className,\n ...props\n}: SidebarPanelContentProps) {\n const { open } = useSidebar()\n\n return (\n <div\n className={cn(\n \"flex h-full flex-col overflow-hidden\",\n \"w-[var(--sidebar-panel-width)]\",\n \"bg-sidebar text-sidebar-foreground\",\n \"transition-[width,opacity] duration-200 ease-linear motion-reduce:transition-none\",\n !open && \"w-0 opacity-0\",\n className\n )}\n data-sidebar=\"panel-content\"\n data-slot=\"sidebar-panel-content\"\n data-state={open ? \"expanded\" : \"collapsed\"}\n {...props}\n />\n )\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Sub-componentes alinhados aos Figma nodes:\n * - Sidebar / Logo (1087-323) → SidebarLogo\n * - Sidebar / Avatar (1088-627) → SidebarAvatar\n * - Sidebar / Color Mode Toggle (1089-324) → SidebarThemeToggle\n * Valores numéricos pinados em docs/proposals/sidebar-filetree-components/\n * 11-Prototype-values.md (seção 9).\n * ─────────────────────────────────────────────────────────────*/\n\nfunction SevenLogo({ className, ...props }: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n aria-hidden=\"true\"\n className={className}\n fill=\"none\"\n viewBox=\"0 0 447 421\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect\n height=\"420.697\"\n rx=\"52.3255\"\n style={{ fill: \"var(--brand-primary-500, var(--primary))\" }}\n width=\"446.511\"\n />\n <path\n clipRule=\"evenodd\"\n d=\"M297.097 126.658C313.023 126.661 327.15 131.593 337.759 140.229L337.772 140.241C342.56 143.898 346.681 148.278 349.989 153.277C360.539 169.219 361.562 189.733 351.524 207.699C341.313 225.975 325.169 234.706 307.327 237.12C289.856 239.483 270.755 235.793 253.953 229.106C257.099 236.591 262.271 243.904 268.869 249.321C273.202 252.609 278.097 255.077 283.391 256.278C304.929 261.165 323.562 252.744 336.549 236.264L337.34 235.261L365.526 256.947L365.513 256.964L366.897 258.029L366.095 259.055C346.033 284.695 314.063 300.49 276.874 292.052C264.669 289.283 254.128 283.966 245.384 276.913L245.377 276.907L245.36 276.894L245.353 276.888L244.889 276.528C224.237 260.353 213.344 234.603 213.866 209.528C213.876 209.081 214.479 202.313 214.479 202.313C214.479 202.313 218.001 182.504 224.799 169.993C237.562 146.503 261.564 126.651 297.097 126.658ZM298.448 163.313C276.722 163.308 261.843 176.856 255.022 192.602C262.048 196.07 269.076 198.519 275.811 199.995C299.647 205.218 314.251 197.954 319.102 189.272C322.736 182.767 322.06 176.535 318.957 171.845C318.134 170.602 317.053 169.35 315.692 168.179L315.341 167.93L314.978 167.684C311.174 165.165 305.764 163.314 298.448 163.313Z\"\n fill=\"black\"\n fillRule=\"evenodd\"\n />\n <path\n d=\"M246.018 186.67C268.826 199.868 252.621 219.225 249.886 226.823C212.772 211.745 200.922 187.978 177.479 169.658C158.128 154.537 139.239 156.58 131.217 162.056C127.067 164.888 125.582 168.878 125.582 173.623C125.582 176.588 126.375 179.159 127.957 181.334C129.538 183.509 131.716 185.286 134.484 186.67C137.449 188.054 140.808 189.34 144.562 190.526L170.368 198.237C183.616 202.192 193.804 208.125 200.922 216.034C208.237 223.942 211.893 233.632 211.893 245.099C211.893 254.788 209.323 263.391 204.182 270.905C199.041 278.22 191.923 283.954 182.828 288.106C173.732 292.258 163.052 294.336 150.792 294.336C133.591 294.336 118.561 290.28 105.709 282.174C93.0569 273.87 84.3585 262.7 79.613 248.665L108.679 234.724C112.831 243.818 118.564 250.937 125.88 256.078C133.393 261.218 141.698 263.789 150.792 263.789C157.911 263.789 163.551 262.204 167.703 259.04C171.853 255.878 173.925 251.727 173.926 246.588C173.926 243.426 173.039 240.854 171.261 238.877C169.679 236.702 167.402 234.917 164.436 233.533C161.668 231.952 158.604 230.665 155.243 229.677L128.85 222.264C115.206 218.309 104.818 212.276 97.7 204.169C90.7811 196.063 87.3242 186.473 87.3242 175.401C87.3242 165.515 89.7943 156.912 94.7376 149.596C99.8784 142.083 106.897 136.249 115.794 132.097C137.208 122.527 166.002 124.69 188.861 140.375C214.713 158.114 223.21 173.473 246.018 186.67Z\"\n fill=\"black\"\n />\n </svg>\n )\n}\n\ninterface SidebarLogoProps extends Omit<React.ComponentProps<\"div\">, \"onClick\"> {\n brand?: string\n collapseLabel?: string\n mark?: React.ReactNode\n onClick?: (event: React.MouseEvent) => void\n showCollapse?: boolean\n sub?: string\n}\n\n/**\n * SidebarLogo — branding header inside `<SidebarHeader>`.\n *\n * Renders a logomark + brand name + (optional) sub line + (optional) collapse trigger.\n * Aligned with Figma node `Sidebar / Logo` (1087-323).\n *\n * Default `mark` is the Seven brand logo. Pass a custom `mark` to override.\n *\n * @example\n * <SidebarHeader>\n * <SidebarLogo brand=\"ETUS · DAM\" showCollapse />\n * </SidebarHeader>\n */\nfunction SidebarLogo({\n mark = <SevenLogo className=\"size-full\" />,\n brand,\n sub,\n showCollapse = false,\n collapseLabel = \"Colapsar painel\",\n onClick,\n className,\n ...props\n}: SidebarLogoProps) {\n const { toggleSidebar } = useSidebar()\n return (\n <div\n className={cn(\n \"flex items-center gap-2.5 px-3.5 pt-4 pb-3\",\n className,\n )}\n data-slot=\"sidebar-logo\"\n {...props}\n >\n {mark && (\n <button\n className={cn(\n \"grid place-items-center shrink-0 size-[var(--sidebar-logo-size)] rounded-[var(--sidebar-logo-radius)]\",\n \"bg-[color:var(--sidebar-logo-background)] text-[color:var(--sidebar-logo-foreground)]\",\n onClick && \"cursor-pointer transition-transform hover:translate-y-px active:translate-y-0.5 motion-reduce:transform-none\",\n )}\n aria-label={brand ?? \"Home\"}\n data-slot=\"sidebar-logo-mark\"\n type=\"button\"\n onClick={onClick}\n >\n {mark}\n </button>\n )}\n {(brand ?? sub) && (\n <div className=\"flex flex-col min-w-0 flex-1 leading-tight\" data-slot=\"sidebar-logo-meta\">\n {brand && (\n <span\n className=\"text-[18px] font-semibold leading-6 truncate\"\n data-slot=\"sidebar-logo-brand\"\n >\n {brand}\n </span>\n )}\n {sub && (\n <span\n className=\"text-[11px] text-[color:var(--muted-foreground)] truncate\"\n data-slot=\"sidebar-logo-sub\"\n >\n {sub}\n </span>\n )}\n </div>\n )}\n {showCollapse && (\n <button\n className={cn(\n \"grid place-items-center shrink-0 size-[26px] rounded-md\",\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 )}\n aria-label={collapseLabel}\n data-slot=\"sidebar-logo-collapse\"\n type=\"button\"\n onClick={() => { toggleSidebar(); }}\n >\n <PanelLeftIcon size={14} />\n </button>\n )}\n </div>\n )\n}\n\ninterface SidebarAvatarProps {\n \"aria-label\"?: string\n avatar?: React.ComponentProps<typeof Avatar>\n className?: string\n compact?: boolean\n email?: string\n name?: string\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n showChevron?: boolean\n}\n\n/**\n * SidebarAvatar — user-identity footer button inside `<SidebarFooter>`.\n *\n * Renders avatar + name + email + (optional) chevron, opens user menu on click.\n * Aligned with Figma node `Sidebar / Avatar` (1088-627).\n *\n * @example\n * <SidebarFooter>\n * <SidebarAvatar\n * avatar={{ initials: \"CR\", tone: \"mint\", size: \"sm\" }}\n * name=\"Camila Reis\"\n * email=\"camila@etus.com.br\"\n * onClick={() => userMenu.toggle()}\n * />\n * <SidebarThemeToggle />\n * </SidebarFooter>\n */\nfunction SidebarAvatar({\n avatar,\n name,\n email,\n showChevron = true,\n compact = false,\n onClick,\n className,\n \"aria-label\": ariaLabel,\n}: SidebarAvatarProps) {\n return (\n <button\n className={cn(\n \"flex items-center gap-2.5 px-2 py-1.5 flex-1 min-w-0 rounded-md text-left\",\n \"bg-transparent cursor-pointer transition-colors hover:bg-[color:var(--muted)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]\",\n className,\n )}\n aria-haspopup={onClick ? \"menu\" : undefined}\n aria-label={ariaLabel ?? (name ? `User menu — ${name}` : \"User menu\")}\n data-compact={compact || undefined}\n data-slot=\"sidebar-avatar\"\n type=\"button\"\n onClick={onClick}\n >\n {avatar && (\n <Avatar\n size=\"sm\"\n {...avatar}\n />\n )}\n {!compact && (name ?? email) && (\n <span className=\"flex flex-col min-w-0 flex-1 leading-tight\" data-slot=\"sidebar-avatar-meta\">\n {name && (\n <span className=\"text-[13px] font-medium text-[color:var(--foreground)] truncate\" data-slot=\"sidebar-avatar-name\">\n {name}\n </span>\n )}\n {email && (\n <span className=\"text-[11px] text-[color:var(--muted-foreground)] truncate\" data-slot=\"sidebar-avatar-email\">\n {email}\n </span>\n )}\n </span>\n )}\n {!compact && showChevron && (\n <ChevronsUpDown\n aria-hidden=\"true\"\n className=\"shrink-0 text-[color:var(--muted-foreground)]\"\n data-slot=\"sidebar-avatar-chevron\"\n size={14}\n />\n )}\n </button>\n )\n}\n\ninterface SidebarThemeToggleProps {\n className?: string\n darkIcon?: React.ReactNode\n label?: (mode: \"dark\" | \"light\") => string\n lightIcon?: React.ReactNode\n mode?: \"dark\" | \"light\"\n onToggle?: (next: \"dark\" | \"light\") => void\n size?: \"default\" | \"sm\"\n}\n\n/**\n * useSidebarTheme — internal hook to read/write `class=\"dark\"|\"light\"` on `<html>`.\n *\n * Persists choice to localStorage under \"seven-theme\". Reacts to external changes\n * via a MutationObserver on `<html>.class`. Used by SidebarThemeToggle when no\n * `mode` prop is provided (uncontrolled mode).\n */\nfunction useSidebarTheme(): readonly [\"dark\" | \"light\", () => void] {\n const read = React.useCallback((): \"dark\" | \"light\" => {\n if (typeof document === \"undefined\") return \"light\"\n const html = document.documentElement\n if (html.classList.contains(\"dark\")) return \"dark\"\n if (html.classList.contains(\"light\")) return \"light\"\n return typeof window !== \"undefined\" && window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\"\n }, [])\n const [mode, setMode] = React.useState<\"dark\" | \"light\">(read)\n React.useEffect(() => {\n if (typeof document === \"undefined\") return\n const obs = new MutationObserver(() => { setMode(read()); })\n obs.observe(document.documentElement, { attributes: true, attributeFilter: [\"class\"] })\n return () => { obs.disconnect(); }\n }, [read])\n const toggle = React.useCallback(() => {\n if (typeof document === \"undefined\") return\n const next: \"dark\" | \"light\" = mode === \"dark\" ? \"light\" : \"dark\"\n const html = document.documentElement\n html.classList.remove(\"dark\", \"light\")\n html.classList.add(next)\n try { localStorage.setItem(\"seven-theme\", next) } catch {\n // localStorage may be unavailable (private browsing, SSR); fail silently\n }\n setMode(next)\n }, [mode])\n return [mode, toggle] as const\n}\n\n/**\n * SidebarThemeToggle — sun/moon button that flips `<html>` class between\n * `light` and `dark`. Use inside `<SidebarFooter>` next to `<SidebarAvatar>`.\n *\n * Aligned with Figma node `Sidebar / Color Mode Toggle` (1089-324).\n *\n * @example\n * // Uncontrolled — reads/writes html.classList + localStorage\n * <SidebarThemeToggle />\n *\n * @example\n * // Controlled\n * <SidebarThemeToggle mode={themeStore.mode} onToggle={themeStore.set} />\n */\nfunction SidebarThemeToggle({\n mode: controlledMode,\n onToggle,\n lightIcon,\n darkIcon,\n label = (m) => (m === \"dark\" ? \"Modo de cor: Escuro\" : \"Modo de cor: Claro\"),\n size = \"default\",\n className,\n}: SidebarThemeToggleProps) {\n const [internalMode, internalToggle] = useSidebarTheme()\n const mode = controlledMode ?? internalMode\n const isDark = mode === \"dark\"\n const handleClick = () => {\n if (onToggle) {\n onToggle(isDark ? \"light\" : \"dark\")\n } else {\n internalToggle()\n }\n }\n const iconSize = size === \"sm\" ? 11 : 12\n return (\n <button\n className={cn(\n \"flex items-center gap-[var(--sidebar-theme-toggle-gap)] rounded-md p-2 text-left cursor-pointer\",\n \"bg-transparent transition-colors hover:bg-[color:var(--muted)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]\",\n className,\n )}\n aria-checked={isDark}\n aria-label={label(mode)}\n data-mode={mode}\n data-slot=\"sidebar-theme-toggle\"\n role=\"switch\"\n title={label(mode)}\n type=\"button\"\n onClick={handleClick}\n >\n {/* Pill switch — knob slides + swaps icon to reflect the active mode (Figma 1089:324) */}\n <span\n aria-hidden\n className={cn(\n \"relative flex h-[var(--sidebar-theme-toggle-track-height)] w-[var(--sidebar-theme-toggle-track-width)] shrink-0 items-center rounded-full px-0.5 transition-colors\",\n isDark ? \"bg-[color:var(--sidebar-theme-toggle-track-bg-dark)]\" : \"bg-[color:var(--sidebar-theme-toggle-track-bg-light)]\",\n )}\n >\n <span\n className={cn(\n \"grid size-[var(--sidebar-theme-toggle-knob-size)] place-items-center rounded-full bg-[color:var(--sidebar-theme-toggle-knob-bg)] text-[color:var(--sidebar-theme-toggle-knob-fg)] shadow-sm transition-transform duration-200\",\n isDark && \"translate-x-3\",\n )}\n >\n {isDark\n ? (darkIcon ?? <MoonIcon size={iconSize} />)\n : (lightIcon ?? <SunIcon size={iconSize} />)}\n </span>\n </span>\n {/* Label — hidden when the sidebar is collapsed to icons */}\n <span className=\"truncate text-[14px] text-[color:var(--muted-foreground)] group-data-[collapsible=icon]:hidden\">\n {label(mode)}\n </span>\n </button>\n )\n}\n\nexport {\n Sidebar,\n SidebarAvatar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarLogo,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarPanelContent,\n SidebarProvider,\n SidebarRail,\n SidebarRailButton,\n SidebarRailContent,\n SidebarSeparator,\n SidebarThemeToggle,\n SidebarTrigger,\n useSidebar,\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/StatusIndicator/StatusIndicator.variants.ts","../src/components/primitives/StatusIndicator/StatusIndicator.tsx"],"names":[],"mappings":"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","file":"chunk-66TBTTZO.js","sourcesContent":["// StatusIndicator/StatusIndicator.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n// Extracted to satisfy sonarjs/no-duplicate-string — each appears multiple times in compoundVariants.\nconst FULL_H = \"h-full\"\nconst FULL_W = \"w-full\"\nconst SHAPE_BAR_V = \"bar-vertical\" as const\nconst SHAPE_BAR_H = \"bar-horizontal\" as const\n\n/**\n * StatusIndicator style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const statusIndicatorVariants = cva(\"shrink-0\", {\n variants: {\n variant: {\n success: \"bg-[color:var(--status-indicator-dot-color-success)]\",\n warning: \"bg-[color:var(--status-indicator-dot-color-warning)]\",\n error: \"bg-[color:var(--status-indicator-dot-color-error)]\",\n destructive: \"bg-[color:var(--status-indicator-dot-color-destructive)]\",\n info: \"bg-[color:var(--status-indicator-dot-color-info)]\",\n neutral: \"bg-[color:var(--status-indicator-dot-color-neutral)]\",\n },\n shape: {\n dot: \"rounded-[var(--status-indicator-root-border-radius)]\",\n \"bar-vertical\": \"rounded-xs\",\n \"bar-horizontal\": \"rounded-xs\",\n },\n size: {\n xs: \"\",\n sm: \"\",\n default: \"\",\n lg: \"\",\n xl: \"\",\n \"2xl\": \"\",\n },\n },\n compoundVariants: [\n // Dot — uses size for both dimensions\n { shape: \"dot\", size: \"xs\", className: \"size-[var(--status-indicator-dot-size-xs)]\" },\n { shape: \"dot\", size: \"sm\", className: \"size-[var(--status-indicator-dot-size-sm)]\" },\n { shape: \"dot\", size: \"default\", className: \"size-[var(--status-indicator-dot-size-default)]\" },\n { shape: \"dot\", size: \"lg\", className: \"size-[var(--status-indicator-dot-size-lg)]\" },\n { shape: \"dot\", size: \"xl\", className: \"size-[var(--status-indicator-dot-size-xl)]\" },\n { shape: \"dot\", size: \"2xl\", className: \"size-[var(--status-indicator-dot-size-2xl)]\" },\n // Bar-vertical — width is secondary dim (size controls it); height 100% (FULL_H constant below)\n { shape: SHAPE_BAR_V, size: \"xs\", className: `${FULL_H} w-px` },\n { shape: SHAPE_BAR_V, size: \"sm\", className: `${FULL_H} w-[2px]` },\n { shape: SHAPE_BAR_V, size: \"default\", className: `${FULL_H} w-[2px]` },\n { shape: SHAPE_BAR_V, size: \"lg\", className: `${FULL_H} w-[3px]` },\n { shape: SHAPE_BAR_V, size: \"xl\", className: `${FULL_H} w-[4px]` },\n { shape: SHAPE_BAR_V, size: \"2xl\", className: `${FULL_H} w-[6px]` },\n // Bar-horizontal — height is secondary dim; width 100% (FULL_W constant below)\n { shape: SHAPE_BAR_H, size: \"xs\", className: `${FULL_W} h-px` },\n { shape: SHAPE_BAR_H, size: \"sm\", className: `${FULL_W} h-[2px]` },\n { shape: SHAPE_BAR_H, size: \"default\", className: `${FULL_W} h-[2px]` },\n { shape: SHAPE_BAR_H, size: \"lg\", className: `${FULL_W} h-[3px]` },\n { shape: SHAPE_BAR_H, size: \"xl\", className: `${FULL_W} h-[4px]` },\n { shape: SHAPE_BAR_H, size: \"2xl\", className: `${FULL_W} h-[6px]` },\n ],\n defaultVariants: {\n variant: \"neutral\",\n shape: \"dot\",\n size: \"default\",\n },\n})\n\n// Export variant prop types\nexport type StatusIndicatorVariantProps = VariantProps<typeof statusIndicatorVariants>\n","\"use client\"\n\nimport type { StatusIndicatorProps } from \"./StatusIndicator.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { statusIndicatorVariants } from \"./StatusIndicator.variants\"\n\nfunction StatusIndicator({\n className,\n variant,\n shape = \"dot\",\n size,\n pulse = false,\n label,\n labelPosition = \"right\",\n \"aria-label\": ariaLabel,\n ...props\n}: StatusIndicatorProps) {\n // Generate accessible label based on variant if not provided\n const defaultAriaLabel = `Status: ${variant ?? \"neutral\"}`\n const accessibleLabel = ariaLabel ?? (label ? undefined : defaultAriaLabel)\n\n // Bar shapes ignore `label` — they're purely visual (warning in dev when misused).\n const isBar = shape === \"bar-vertical\" || shape === \"bar-horizontal\"\n \n // `typeof process` guard is required so the library runs in browser bundlers (Vite, etc.) where `process` is not defined globally — without it, the dev-only warning branch throws `ReferenceError: process is not defined`.\n let isProd = false\n if (typeof process !== \"undefined\") {\n const { NODE_ENV } = process.env\n isProd = NODE_ENV === \"production\"\n }\n if (isBar && label && !isProd) {\n \n console.warn(\n `<StatusIndicator shape=\"${shape}\"> ignores the \\`label\\` prop. Use shape=\"dot\" to combine with label, or move the label to surrounding context.`,\n )\n }\n\n // Bar shape — render the bar alone (no label, no inline-flex wrapper).\n if (isBar) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape, size }),\n pulse && \"animate-pulse\",\n className,\n )}\n aria-label={accessibleLabel}\n data-shape={shape}\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n />\n )\n }\n\n // If no label, render just the dot\n if (!label) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className=\"sr-only\"\n data-slot=\"status-indicator-dot\"\n >\n {variant ?? \"neutral\"}\n </span>\n </span>\n )\n }\n\n // With label, render inline-flex container\n return (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center gap-[var(--status-indicator-label-gap)]\",\n labelPosition === \"left\" && \"flex-row-reverse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\"\n )}\n aria-hidden=\"true\"\n data-slot=\"status-indicator-dot\"\n />\n <span\n className=\"text-[length:var(--status-indicator-label-font-size)] leading-normal text-[color:var(--status-indicator-label-color)]\"\n data-slot=\"status-indicator-label\"\n >\n {label}\n </span>\n </span>\n )\n}\n\nexport { StatusIndicator }\nexport { statusIndicatorVariants } from \"./StatusIndicator.variants\"\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/Button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-7TF5PVEU.js","sourcesContent":["import type { ButtonEventPayload, ButtonProps } from \"./Button.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport { Badge } from \"../Badge/Badge\"\nimport { useButtonGroup } from \"../ButtonGroup/ButtonGroup\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-button-ring-brand focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative\",\n {\n variants: {\n fullWidth: {\n true: \"flex w-full\",\n false: \"\",\n },\n variant: {\n default:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n primary:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n destructive:\n \"bg-[color:var(--button-destructive-bg-default)] text-[color:var(--button-destructive-fg-default)] hover:bg-[color:var(--button-destructive-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-destructive)] dark:bg-destructive/60 hover:translate-y-px active:translate-y-0.5\",\n outline:\n \"border border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n dashed:\n \"border border-dashed border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 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"]}