erp-pro-ui 0.2.5 → 0.2.6

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 (408) hide show
  1. package/dist/accordion.cjs +1 -1
  2. package/dist/accordion.mjs +1 -1
  3. package/dist/alert.cjs +1 -1
  4. package/dist/alert.mjs +1 -1
  5. package/dist/animated-content.cjs +1 -1
  6. package/dist/animated-content.mjs +1 -1
  7. package/dist/ascii-text.cjs +1 -1
  8. package/dist/ascii-text.mjs +1 -1
  9. package/dist/background-gradient-animation.cjs +1 -1
  10. package/dist/background-gradient-animation.mjs +1 -1
  11. package/dist/button-hover-border-gradient.cjs +1 -1
  12. package/dist/button-hover-border-gradient.mjs +1 -1
  13. package/dist/button.cjs +1 -1
  14. package/dist/button.mjs +1 -1
  15. package/dist/calendar.cjs +1 -1
  16. package/dist/calendar.mjs +1 -1
  17. package/dist/card.cjs +1 -1
  18. package/dist/card.mjs +1 -1
  19. package/dist/carousel.cjs +1 -1
  20. package/dist/carousel.mjs +1 -1
  21. package/dist/catalog.cjs +14 -0
  22. package/dist/catalog.cjs.map +1 -1
  23. package/dist/catalog.d.ts +25 -1
  24. package/dist/catalog.d.ts.map +1 -1
  25. package/dist/catalog.mjs +14 -0
  26. package/dist/catalog.mjs.map +1 -1
  27. package/dist/charts.cjs +1 -1
  28. package/dist/charts.mjs +1 -1
  29. package/dist/checkbox.cjs +1 -1
  30. package/dist/checkbox.mjs +1 -1
  31. package/dist/chip.cjs +1 -1
  32. package/dist/chip.mjs +1 -1
  33. package/dist/chroma-grid.cjs +1 -1
  34. package/dist/chroma-grid.mjs +1 -1
  35. package/dist/chunks/{drawer-D07dGN6R.cjs → Drawer-D72Xi2Gq.cjs} +2 -2
  36. package/dist/chunks/{drawer-D07dGN6R.cjs.map → Drawer-D72Xi2Gq.cjs.map} +1 -1
  37. package/dist/chunks/{drawer-DaoAXL-w.mjs → Drawer-Y0_sJni5.mjs} +2 -2
  38. package/dist/chunks/{drawer-DaoAXL-w.mjs.map → Drawer-Y0_sJni5.mjs.map} +1 -1
  39. package/dist/chunks/{DropdownMenu-BtTOri-A.mjs → DropdownMenu-BQ4WlaGp.mjs} +1 -1
  40. package/dist/chunks/{DropdownMenu-BtTOri-A.mjs.map → DropdownMenu-BQ4WlaGp.mjs.map} +1 -1
  41. package/dist/chunks/{DropdownMenu-BDrNYO-D.cjs → DropdownMenu-yh04burS.cjs} +1 -1
  42. package/dist/chunks/{DropdownMenu-BDrNYO-D.cjs.map → DropdownMenu-yh04burS.cjs.map} +1 -1
  43. package/dist/chunks/EllipsisVerticalIcon-BJw3MNkg.cjs +51 -0
  44. package/dist/chunks/EllipsisVerticalIcon-BJw3MNkg.cjs.map +1 -0
  45. package/dist/chunks/EllipsisVerticalIcon-C2b2KMfE.mjs +45 -0
  46. package/dist/chunks/EllipsisVerticalIcon-C2b2KMfE.mjs.map +1 -0
  47. package/dist/chunks/{HoverBorderGradient-NbdXeLgC.mjs → HoverBorderGradient-DEtm3owk.mjs} +1 -1
  48. package/dist/chunks/{HoverBorderGradient-NbdXeLgC.mjs.map → HoverBorderGradient-DEtm3owk.mjs.map} +1 -1
  49. package/dist/chunks/{HoverBorderGradient-9pfvBoHR.cjs → HoverBorderGradient-DMMyr2L3.cjs} +1 -1
  50. package/dist/chunks/{HoverBorderGradient-9pfvBoHR.cjs.map → HoverBorderGradient-DMMyr2L3.cjs.map} +1 -1
  51. package/dist/chunks/{SunToMoonButton-BkEfkElJ.mjs → SunToMoonButton-BOKHzC1H.mjs} +1 -1
  52. package/dist/chunks/{SunToMoonButton-BkEfkElJ.mjs.map → SunToMoonButton-BOKHzC1H.mjs.map} +1 -1
  53. package/dist/chunks/{SunToMoonButton-jS4BJD9q.cjs → SunToMoonButton-gX4Kk_5B.cjs} +1 -1
  54. package/dist/chunks/{SunToMoonButton-jS4BJD9q.cjs.map → SunToMoonButton-gX4Kk_5B.cjs.map} +1 -1
  55. package/dist/chunks/{Tooltip-DK3B879v.mjs → Tooltip-LbOKP__2.mjs} +10 -7
  56. package/dist/chunks/Tooltip-LbOKP__2.mjs.map +1 -0
  57. package/dist/chunks/{Tooltip-DD30yj3A.cjs → Tooltip-nnaiqJTT.cjs} +10 -7
  58. package/dist/chunks/Tooltip-nnaiqJTT.cjs.map +1 -0
  59. package/dist/chunks/{accordion-CmB6EidC.cjs → accordion-Bj3Sj0mC.cjs} +2 -2
  60. package/dist/chunks/{accordion-CmB6EidC.cjs.map → accordion-Bj3Sj0mC.cjs.map} +1 -1
  61. package/dist/chunks/{accordion-6zxJUYXr.mjs → accordion-CLcjNX_X.mjs} +2 -2
  62. package/dist/chunks/{accordion-6zxJUYXr.mjs.map → accordion-CLcjNX_X.mjs.map} +1 -1
  63. package/dist/chunks/{alert-C5KEeQqh.cjs → alert-BBA4Sh4e.cjs} +2 -2
  64. package/dist/chunks/{alert-C5KEeQqh.cjs.map → alert-BBA4Sh4e.cjs.map} +1 -1
  65. package/dist/chunks/{alert-XVmYJgds.mjs → alert-oUz79MGc.mjs} +2 -2
  66. package/dist/chunks/{alert-XVmYJgds.mjs.map → alert-oUz79MGc.mjs.map} +1 -1
  67. package/dist/chunks/{animated-content-CLsFnjgr.cjs → animated-content-B3wbiWQI.cjs} +1 -1
  68. package/dist/chunks/{animated-content-CLsFnjgr.cjs.map → animated-content-B3wbiWQI.cjs.map} +1 -1
  69. package/dist/chunks/{animated-content-bK6xp-vc.mjs → animated-content-CiNJLgbq.mjs} +1 -1
  70. package/dist/chunks/{animated-content-bK6xp-vc.mjs.map → animated-content-CiNJLgbq.mjs.map} +1 -1
  71. package/dist/chunks/{ascii-text-Bdy4C5rU.mjs → ascii-text-C6JegLhP.mjs} +1 -1
  72. package/dist/chunks/{ascii-text-Bdy4C5rU.mjs.map → ascii-text-C6JegLhP.mjs.map} +1 -1
  73. package/dist/chunks/{ascii-text-BFnpVur6.cjs → ascii-text-KwVE41Hw.cjs} +1 -1
  74. package/dist/chunks/{ascii-text-BFnpVur6.cjs.map → ascii-text-KwVE41Hw.cjs.map} +1 -1
  75. package/dist/chunks/{background-gradient-animation-CiNdmA61.cjs → background-gradient-animation-1LZY3DYT.cjs} +1 -1
  76. package/dist/chunks/{background-gradient-animation-CiNdmA61.cjs.map → background-gradient-animation-1LZY3DYT.cjs.map} +1 -1
  77. package/dist/chunks/{background-gradient-animation-BR9wx6Z8.mjs → background-gradient-animation-CTc2ZR74.mjs} +1 -1
  78. package/dist/chunks/{background-gradient-animation-BR9wx6Z8.mjs.map → background-gradient-animation-CTc2ZR74.mjs.map} +1 -1
  79. package/dist/chunks/{button-A6UTvrOu.mjs → button-IDShmQqA.mjs} +3 -2
  80. package/dist/chunks/button-IDShmQqA.mjs.map +1 -0
  81. package/dist/chunks/{button-hover-border-gradient-DnFvjNNw.mjs → button-hover-border-gradient-B2ebbDek.mjs} +2 -2
  82. package/dist/chunks/{button-hover-border-gradient-DnFvjNNw.mjs.map → button-hover-border-gradient-B2ebbDek.mjs.map} +1 -1
  83. package/dist/chunks/{button-hover-border-gradient-ssmwU5-U.cjs → button-hover-border-gradient-DGZqd8je.cjs} +2 -2
  84. package/dist/chunks/{button-hover-border-gradient-ssmwU5-U.cjs.map → button-hover-border-gradient-DGZqd8je.cjs.map} +1 -1
  85. package/dist/chunks/{button-C4MXPxsC.cjs → button-uD87K76W.cjs} +3 -2
  86. package/dist/chunks/button-uD87K76W.cjs.map +1 -0
  87. package/dist/chunks/{calendar-CQJgQ5H_.cjs → calendar-DCkikZYb.cjs} +2 -2
  88. package/dist/chunks/{calendar-CQJgQ5H_.cjs.map → calendar-DCkikZYb.cjs.map} +1 -1
  89. package/dist/chunks/{calendar-5XzPqKbE.mjs → calendar-FxAmm_ao.mjs} +2 -2
  90. package/dist/chunks/{calendar-5XzPqKbE.mjs.map → calendar-FxAmm_ao.mjs.map} +1 -1
  91. package/dist/chunks/{card-RrT68nvu.cjs → card-Cuud0jIt.cjs} +1 -1
  92. package/dist/chunks/{card-RrT68nvu.cjs.map → card-Cuud0jIt.cjs.map} +1 -1
  93. package/dist/chunks/{card-BId1_zHw.mjs → card-DNeC6jqk.mjs} +1 -1
  94. package/dist/chunks/{card-BId1_zHw.mjs.map → card-DNeC6jqk.mjs.map} +1 -1
  95. package/dist/chunks/{carousel-Dd4rp-jr.mjs → carousel-Dpe5QLJK.mjs} +2 -2
  96. package/dist/chunks/{carousel-Dd4rp-jr.mjs.map → carousel-Dpe5QLJK.mjs.map} +1 -1
  97. package/dist/chunks/{carousel-Cv0m1Pp5.cjs → carousel-xHkrV_pt.cjs} +2 -2
  98. package/dist/chunks/{carousel-Cv0m1Pp5.cjs.map → carousel-xHkrV_pt.cjs.map} +1 -1
  99. package/dist/chunks/chartStyles-BADmRKZo.cjs +108 -0
  100. package/dist/chunks/chartStyles-BADmRKZo.cjs.map +1 -0
  101. package/dist/chunks/chartStyles-DPXgYmGn.mjs +55 -0
  102. package/dist/chunks/chartStyles-DPXgYmGn.mjs.map +1 -0
  103. package/dist/chunks/{charts-DkVu0rFc.mjs → charts-C-KQ3Nk5.mjs} +3 -54
  104. package/dist/chunks/charts-C-KQ3Nk5.mjs.map +1 -0
  105. package/dist/chunks/{charts-BmIV-mJy.cjs → charts-COx3IbI2.cjs} +42 -93
  106. package/dist/chunks/charts-COx3IbI2.cjs.map +1 -0
  107. package/dist/chunks/{checkbox-D8ivRZ1x.cjs → checkbox-CDknzh89.cjs} +1 -1
  108. package/dist/chunks/{checkbox-D8ivRZ1x.cjs.map → checkbox-CDknzh89.cjs.map} +1 -1
  109. package/dist/chunks/{checkbox-3aB7XC9_.mjs → checkbox-Y04NlzB8.mjs} +1 -1
  110. package/dist/chunks/{checkbox-3aB7XC9_.mjs.map → checkbox-Y04NlzB8.mjs.map} +1 -1
  111. package/dist/chunks/{chip-CqcdcSs2.mjs → chip-B3j6R6sO.mjs} +3 -3
  112. package/dist/chunks/{chip-CqcdcSs2.mjs.map → chip-B3j6R6sO.mjs.map} +1 -1
  113. package/dist/chunks/{chip-B0YzBwkz.cjs → chip-sfQlzrbo.cjs} +3 -3
  114. package/dist/chunks/{chip-B0YzBwkz.cjs.map → chip-sfQlzrbo.cjs.map} +1 -1
  115. package/dist/chunks/{chroma-grid-opB2DBtS.mjs → chroma-grid-BHS9qAn_.mjs} +1 -1
  116. package/dist/chunks/{chroma-grid-opB2DBtS.mjs.map → chroma-grid-BHS9qAn_.mjs.map} +1 -1
  117. package/dist/chunks/{chroma-grid-DcZ9f4Ui.cjs → chroma-grid-Bp55pKEm.cjs} +1 -1
  118. package/dist/chunks/{chroma-grid-DcZ9f4Ui.cjs.map → chroma-grid-Bp55pKEm.cjs.map} +1 -1
  119. package/dist/chunks/{color-palette-C3lesasJ.mjs → color-palette-D9Qlw2Cx.mjs} +1 -1
  120. package/dist/chunks/{color-palette-C3lesasJ.mjs.map → color-palette-D9Qlw2Cx.mjs.map} +1 -1
  121. package/dist/chunks/{color-palette-pLh6En3n.cjs → color-palette-Duud5Iqq.cjs} +1 -1
  122. package/dist/chunks/{color-palette-pLh6En3n.cjs.map → color-palette-Duud5Iqq.cjs.map} +1 -1
  123. package/dist/chunks/{combobox-CtNrGmuR.cjs → combobox-C3a2iogC.cjs} +4 -4
  124. package/dist/chunks/{combobox-CtNrGmuR.cjs.map → combobox-C3a2iogC.cjs.map} +1 -1
  125. package/dist/chunks/{combobox-B6yk5U82.mjs → combobox-neBItbtz.mjs} +4 -4
  126. package/dist/chunks/{combobox-B6yk5U82.mjs.map → combobox-neBItbtz.mjs.map} +1 -1
  127. package/dist/chunks/dashboard-cards-BnPt0gDW.mjs +2428 -0
  128. package/dist/chunks/dashboard-cards-BnPt0gDW.mjs.map +1 -0
  129. package/dist/chunks/dashboard-cards-DNWJPKRu.cjs +2524 -0
  130. package/dist/chunks/dashboard-cards-DNWJPKRu.cjs.map +1 -0
  131. package/dist/chunks/{data-table-fAEuevPn.cjs → data-table-BZEiSZI2.cjs} +48 -36
  132. package/dist/chunks/data-table-BZEiSZI2.cjs.map +1 -0
  133. package/dist/chunks/{data-table-Dtf6lKpp.mjs → data-table-EfGKkerd.mjs} +47 -35
  134. package/dist/chunks/data-table-EfGKkerd.mjs.map +1 -0
  135. package/dist/chunks/{date-picker-BmQ0rgwH.mjs → date-picker-3IDSmb9Z.mjs} +3 -3
  136. package/dist/chunks/{date-picker-BmQ0rgwH.mjs.map → date-picker-3IDSmb9Z.mjs.map} +1 -1
  137. package/dist/chunks/{date-picker-qpUZMtZC.cjs → date-picker-_EVYpGga.cjs} +3 -3
  138. package/dist/chunks/{date-picker-qpUZMtZC.cjs.map → date-picker-_EVYpGga.cjs.map} +1 -1
  139. package/dist/chunks/{dialog-DSyq6MS3.mjs → dialog-B60BjJz0.mjs} +3 -3
  140. package/dist/chunks/{dialog-DSyq6MS3.mjs.map → dialog-B60BjJz0.mjs.map} +1 -1
  141. package/dist/chunks/{dialog-J2ZTSTpL.cjs → dialog-i9LdkXmF.cjs} +3 -3
  142. package/dist/chunks/{dialog-J2ZTSTpL.cjs.map → dialog-i9LdkXmF.cjs.map} +1 -1
  143. package/dist/chunks/event-calendar-BbFOUDov.mjs +1191 -0
  144. package/dist/chunks/event-calendar-BbFOUDov.mjs.map +1 -0
  145. package/dist/chunks/event-calendar-Bljd_7PI.cjs +1209 -0
  146. package/dist/chunks/event-calendar-Bljd_7PI.cjs.map +1 -0
  147. package/dist/chunks/{form-CtZ6U-_B.mjs → form-CDc9UM3r.mjs} +1 -1
  148. package/dist/chunks/{form-CtZ6U-_B.mjs.map → form-CDc9UM3r.mjs.map} +1 -1
  149. package/dist/chunks/{form-X6Vyaavl.cjs → form-DGwdlSW2.cjs} +1 -1
  150. package/dist/chunks/{form-X6Vyaavl.cjs.map → form-DGwdlSW2.cjs.map} +1 -1
  151. package/dist/chunks/{gradual-blur-C6NOnjTw.cjs → gradual-blur-BNYVlqb1.cjs} +1 -1
  152. package/dist/chunks/{gradual-blur-C6NOnjTw.cjs.map → gradual-blur-BNYVlqb1.cjs.map} +1 -1
  153. package/dist/chunks/{gradual-blur-DXfxpCdB.mjs → gradual-blur-Bw2KNmXb.mjs} +1 -1
  154. package/dist/chunks/{gradual-blur-DXfxpCdB.mjs.map → gradual-blur-Bw2KNmXb.mjs.map} +1 -1
  155. package/dist/chunks/{hover-card--rplmsA_.cjs → hover-card-Dp6Y2h2J.cjs} +1 -1
  156. package/dist/chunks/{hover-card--rplmsA_.cjs.map → hover-card-Dp6Y2h2J.cjs.map} +1 -1
  157. package/dist/chunks/{hover-card-C88rU-nW.mjs → hover-card-G66SUyjq.mjs} +1 -1
  158. package/dist/chunks/{hover-card-C88rU-nW.mjs.map → hover-card-G66SUyjq.mjs.map} +1 -1
  159. package/dist/chunks/{icons-bx3nrxNv.mjs → icons-JzMKLygv.mjs} +2 -43
  160. package/dist/chunks/icons-JzMKLygv.mjs.map +1 -0
  161. package/dist/chunks/{icons-CRanVZB1.cjs → icons-ub9iu-JG.cjs} +1 -48
  162. package/dist/chunks/icons-ub9iu-JG.cjs.map +1 -0
  163. package/dist/chunks/{input-Bqo9Q5zF.mjs → input-CRc3MKb_.mjs} +3 -3
  164. package/dist/chunks/{input-Bqo9Q5zF.mjs.map → input-CRc3MKb_.mjs.map} +1 -1
  165. package/dist/chunks/{input-DkCPyWXi.cjs → input-DMTwz27q.cjs} +3 -3
  166. package/dist/chunks/{input-DkCPyWXi.cjs.map → input-DMTwz27q.cjs.map} +1 -1
  167. package/dist/chunks/{label-BKzqfAAq.cjs → label-B5Ugq0Nk.cjs} +1 -1
  168. package/dist/chunks/{label-BKzqfAAq.cjs.map → label-B5Ugq0Nk.cjs.map} +1 -1
  169. package/dist/chunks/{label-Drxg0cG2.mjs → label-Bc_r54NU.mjs} +1 -1
  170. package/dist/chunks/{label-Drxg0cG2.mjs.map → label-Bc_r54NU.mjs.map} +1 -1
  171. package/dist/chunks/{loading-BiM4mKh6.cjs → loading-DZKJc3e7.cjs} +2 -2
  172. package/dist/chunks/{loading-BiM4mKh6.cjs.map → loading-DZKJc3e7.cjs.map} +1 -1
  173. package/dist/chunks/{loading-Dtosnb4A.mjs → loading-ll2L6lc7.mjs} +2 -2
  174. package/dist/chunks/{loading-Dtosnb4A.mjs.map → loading-ll2L6lc7.mjs.map} +1 -1
  175. package/dist/chunks/{multi-select-combobox-C0DoDzxQ.cjs → multi-select-combobox-CFJGq1hn.cjs} +3 -3
  176. package/dist/chunks/{multi-select-combobox-C0DoDzxQ.cjs.map → multi-select-combobox-CFJGq1hn.cjs.map} +1 -1
  177. package/dist/chunks/{multi-select-combobox-Do23ZfOQ.mjs → multi-select-combobox-C_8sxaiL.mjs} +3 -3
  178. package/dist/chunks/{multi-select-combobox-Do23ZfOQ.mjs.map → multi-select-combobox-C_8sxaiL.mjs.map} +1 -1
  179. package/dist/chunks/{otp-input-CkhV-sGl.cjs → otp-input-B5-tuc0q.cjs} +1 -1
  180. package/dist/chunks/{otp-input-CkhV-sGl.cjs.map → otp-input-B5-tuc0q.cjs.map} +1 -1
  181. package/dist/chunks/{otp-input-JOysxKfD.mjs → otp-input-BpcTJOmU.mjs} +1 -1
  182. package/dist/chunks/{otp-input-JOysxKfD.mjs.map → otp-input-BpcTJOmU.mjs.map} +1 -1
  183. package/dist/chunks/{overlay-BzkUmjQ-.mjs → overlay-CG1dMYtO.mjs} +1 -1
  184. package/dist/chunks/{overlay-BzkUmjQ-.mjs.map → overlay-CG1dMYtO.mjs.map} +1 -1
  185. package/dist/chunks/{overlay-DNnZywyR.cjs → overlay-DzE_GyYf.cjs} +1 -1
  186. package/dist/chunks/{overlay-DNnZywyR.cjs.map → overlay-DzE_GyYf.cjs.map} +1 -1
  187. package/dist/chunks/{password-strength-meter-BsvqQBAg.mjs → password-strength-meter-CH6uQAuK.mjs} +2 -2
  188. package/dist/chunks/{password-strength-meter-BsvqQBAg.mjs.map → password-strength-meter-CH6uQAuK.mjs.map} +1 -1
  189. package/dist/chunks/{password-strength-meter-DCi_BP7e.cjs → password-strength-meter-_o1T1HLO.cjs} +2 -2
  190. package/dist/chunks/{password-strength-meter-DCi_BP7e.cjs.map → password-strength-meter-_o1T1HLO.cjs.map} +1 -1
  191. package/dist/chunks/{progress-bar-DQ5ZKk2Y.mjs → progress-bar-BAvRSW1b.mjs} +1 -1
  192. package/dist/chunks/{progress-bar-DQ5ZKk2Y.mjs.map → progress-bar-BAvRSW1b.mjs.map} +1 -1
  193. package/dist/chunks/{progress-bar-CYaBO_lS.cjs → progress-bar-FfdFVvTT.cjs} +1 -1
  194. package/dist/chunks/{progress-bar-CYaBO_lS.cjs.map → progress-bar-FfdFVvTT.cjs.map} +1 -1
  195. package/dist/chunks/{radio-CuiM_gDv.mjs → radio-BMOnxnUS.mjs} +1 -1
  196. package/dist/chunks/{radio-CuiM_gDv.mjs.map → radio-BMOnxnUS.mjs.map} +1 -1
  197. package/dist/chunks/{radio-zx9xEW_C.cjs → radio-wagafWwx.cjs} +1 -1
  198. package/dist/chunks/{radio-zx9xEW_C.cjs.map → radio-wagafWwx.cjs.map} +1 -1
  199. package/dist/chunks/{select-CUaSNR09.mjs → select--DeSgPdn.mjs} +4 -4
  200. package/dist/chunks/{select-CUaSNR09.mjs.map → select--DeSgPdn.mjs.map} +1 -1
  201. package/dist/chunks/{select-bZ9WqLOc.cjs → select-zFFyNmlY.cjs} +4 -4
  202. package/dist/chunks/{select-bZ9WqLOc.cjs.map → select-zFFyNmlY.cjs.map} +1 -1
  203. package/dist/chunks/{sidebar-3i4mGE6T.cjs → sidebar-Cq7UbKJT.cjs} +6 -6
  204. package/dist/chunks/{sidebar-3i4mGE6T.cjs.map → sidebar-Cq7UbKJT.cjs.map} +1 -1
  205. package/dist/chunks/{sidebar-Dhf_Arae.mjs → sidebar-oemmRzCL.mjs} +6 -6
  206. package/dist/chunks/{sidebar-Dhf_Arae.mjs.map → sidebar-oemmRzCL.mjs.map} +1 -1
  207. package/dist/chunks/{skeleton-nH1eAN96.mjs → skeleton-BsDMlWZG.mjs} +1 -1
  208. package/dist/chunks/{skeleton-nH1eAN96.mjs.map → skeleton-BsDMlWZG.mjs.map} +1 -1
  209. package/dist/chunks/{skeleton-DCBGLNAZ.cjs → skeleton-DWvVc17T.cjs} +1 -1
  210. package/dist/chunks/{skeleton-DCBGLNAZ.cjs.map → skeleton-DWvVc17T.cjs.map} +1 -1
  211. package/dist/chunks/{spinners-C9acUulz.cjs → spinners-DBAJliAj.cjs} +2 -2
  212. package/dist/chunks/{spinners-C9acUulz.cjs.map → spinners-DBAJliAj.cjs.map} +1 -1
  213. package/dist/chunks/{spinners-g6_Up5Rb.mjs → spinners-DlMcokJa.mjs} +2 -2
  214. package/dist/chunks/{spinners-g6_Up5Rb.mjs.map → spinners-DlMcokJa.mjs.map} +1 -1
  215. package/dist/chunks/{splash-cursor-N4FdnkOa.mjs → splash-cursor-Bb7LSzaO.mjs} +1 -1
  216. package/dist/chunks/{splash-cursor-N4FdnkOa.mjs.map → splash-cursor-Bb7LSzaO.mjs.map} +1 -1
  217. package/dist/chunks/{splash-cursor-BqG7ClsJ.cjs → splash-cursor-CQ6_HwHV.cjs} +1 -1
  218. package/dist/chunks/{splash-cursor-BqG7ClsJ.cjs.map → splash-cursor-CQ6_HwHV.cjs.map} +1 -1
  219. package/dist/chunks/{spotlight-card-D9Z3nTmb.mjs → spotlight-card-Bs0iiSLc.mjs} +1 -1
  220. package/dist/chunks/{spotlight-card-D9Z3nTmb.mjs.map → spotlight-card-Bs0iiSLc.mjs.map} +1 -1
  221. package/dist/chunks/{spotlight-card-BmsqC7wm.cjs → spotlight-card-COfSD7ns.cjs} +1 -1
  222. package/dist/chunks/{spotlight-card-BmsqC7wm.cjs.map → spotlight-card-COfSD7ns.cjs.map} +1 -1
  223. package/dist/chunks/{stepper-Jv5OS1nY.mjs → stepper-B9NdZ6ZV.mjs} +4 -4
  224. package/dist/chunks/{stepper-Jv5OS1nY.mjs.map → stepper-B9NdZ6ZV.mjs.map} +1 -1
  225. package/dist/chunks/{stepper-DepvEGfr.cjs → stepper-CTteR-Kj.cjs} +4 -4
  226. package/dist/chunks/{stepper-DepvEGfr.cjs.map → stepper-CTteR-Kj.cjs.map} +1 -1
  227. package/dist/chunks/{sun-to-moon-button-BJtBEaa3.mjs → sun-to-moon-button-DWHDpP5B.mjs} +2 -2
  228. package/dist/chunks/{sun-to-moon-button-BJtBEaa3.mjs.map → sun-to-moon-button-DWHDpP5B.mjs.map} +1 -1
  229. package/dist/chunks/{sun-to-moon-button-PwgTPsTW.cjs → sun-to-moon-button-lt-1vmWm.cjs} +2 -2
  230. package/dist/chunks/{sun-to-moon-button-PwgTPsTW.cjs.map → sun-to-moon-button-lt-1vmWm.cjs.map} +1 -1
  231. package/dist/chunks/{switch-iPsN1NS2.mjs → switch--68scepb.mjs} +1 -1
  232. package/dist/chunks/{switch-iPsN1NS2.mjs.map → switch--68scepb.mjs.map} +1 -1
  233. package/dist/chunks/{switch-X3l8xnle.cjs → switch-BbFl5b4t.cjs} +1 -1
  234. package/dist/chunks/{switch-X3l8xnle.cjs.map → switch-BbFl5b4t.cjs.map} +1 -1
  235. package/dist/chunks/{textarea-Bdo-Trvi.mjs → textarea-CEj9voUJ.mjs} +1 -1
  236. package/dist/chunks/{textarea-Bdo-Trvi.mjs.map → textarea-CEj9voUJ.mjs.map} +1 -1
  237. package/dist/chunks/{textarea-CGRl2hrM.cjs → textarea-U_JeSWI3.cjs} +1 -1
  238. package/dist/chunks/{textarea-CGRl2hrM.cjs.map → textarea-U_JeSWI3.cjs.map} +1 -1
  239. package/dist/chunks/{toast-DiFgv3IL.cjs → toast-2yq4Q7-q.cjs} +2 -2
  240. package/dist/chunks/{toast-DiFgv3IL.cjs.map → toast-2yq4Q7-q.cjs.map} +1 -1
  241. package/dist/chunks/{toast-BcBidy5n.mjs → toast-CyY8VZN7.mjs} +2 -2
  242. package/dist/chunks/{toast-BcBidy5n.mjs.map → toast-CyY8VZN7.mjs.map} +1 -1
  243. package/dist/chunks/{truncated-text-BIXqNfOL.cjs → truncated-text-CswjmrHZ.cjs} +1 -1
  244. package/dist/chunks/{truncated-text-BIXqNfOL.cjs.map → truncated-text-CswjmrHZ.cjs.map} +1 -1
  245. package/dist/chunks/{truncated-text-C9t9o9IA.mjs → truncated-text-DUYTW1KP.mjs} +1 -1
  246. package/dist/chunks/{truncated-text-C9t9o9IA.mjs.map → truncated-text-DUYTW1KP.mjs.map} +1 -1
  247. package/dist/chunks/{typography-LwwY_MOy.cjs → typography-CFIiYk1d.cjs} +1 -1
  248. package/dist/chunks/{typography-LwwY_MOy.cjs.map → typography-CFIiYk1d.cjs.map} +1 -1
  249. package/dist/chunks/{typography-Ct-jDJP3.mjs → typography-DHE9sUZ8.mjs} +1 -1
  250. package/dist/chunks/{typography-Ct-jDJP3.mjs.map → typography-DHE9sUZ8.mjs.map} +1 -1
  251. package/dist/color-palette.cjs +1 -1
  252. package/dist/color-palette.mjs +1 -1
  253. package/dist/combobox.cjs +1 -1
  254. package/dist/combobox.mjs +1 -1
  255. package/dist/components/data-display/charts/chartPalette.d.ts +1 -1
  256. package/dist/components/data-display/dashboard-cards/DeviceSalesCard.d.ts +25 -0
  257. package/dist/components/data-display/dashboard-cards/DeviceSalesCard.d.ts.map +1 -0
  258. package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts +34 -0
  259. package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts.map +1 -0
  260. package/dist/components/data-display/dashboard-cards/EarningsCard.d.ts +43 -0
  261. package/dist/components/data-display/dashboard-cards/EarningsCard.d.ts.map +1 -0
  262. package/dist/components/data-display/dashboard-cards/ExpensesCard.d.ts +26 -0
  263. package/dist/components/data-display/dashboard-cards/ExpensesCard.d.ts.map +1 -0
  264. package/dist/components/data-display/dashboard-cards/IncomeExpenseCard.d.ts +30 -0
  265. package/dist/components/data-display/dashboard-cards/IncomeExpenseCard.d.ts.map +1 -0
  266. package/dist/components/data-display/dashboard-cards/RevenueGrowthCard.d.ts +26 -0
  267. package/dist/components/data-display/dashboard-cards/RevenueGrowthCard.d.ts.map +1 -0
  268. package/dist/components/data-display/dashboard-cards/SalesOverviewCard.d.ts +33 -0
  269. package/dist/components/data-display/dashboard-cards/SalesOverviewCard.d.ts.map +1 -0
  270. package/dist/components/data-display/dashboard-cards/ShipmentStatisticsCard.d.ts +33 -0
  271. package/dist/components/data-display/dashboard-cards/ShipmentStatisticsCard.d.ts.map +1 -0
  272. package/dist/components/data-display/dashboard-cards/StockAvailabilityCard.d.ts +24 -0
  273. package/dist/components/data-display/dashboard-cards/StockAvailabilityCard.d.ts.map +1 -0
  274. package/dist/components/data-display/dashboard-cards/SupportTrackerCard.d.ts +25 -0
  275. package/dist/components/data-display/dashboard-cards/SupportTrackerCard.d.ts.map +1 -0
  276. package/dist/components/data-display/dashboard-cards/TopicsCard.d.ts +18 -0
  277. package/dist/components/data-display/dashboard-cards/TopicsCard.d.ts.map +1 -0
  278. package/dist/components/data-display/dashboard-cards/VehicleConditionCard.d.ts +20 -0
  279. package/dist/components/data-display/dashboard-cards/VehicleConditionCard.d.ts.map +1 -0
  280. package/dist/components/data-display/dashboard-cards/VehiclesOverviewCard.d.ts +21 -0
  281. package/dist/components/data-display/dashboard-cards/VehiclesOverviewCard.d.ts.map +1 -0
  282. package/dist/components/data-display/dashboard-cards/index.d.ts +26 -0
  283. package/dist/components/data-display/dashboard-cards/index.d.ts.map +1 -1
  284. package/dist/components/data-display/data-table/DataTable.d.ts.map +1 -1
  285. package/dist/components/data-display/data-table/DataTableControls.d.ts.map +1 -1
  286. package/dist/components/data-display/event-calendar/AddEventPanel.d.ts +11 -0
  287. package/dist/components/data-display/event-calendar/AddEventPanel.d.ts.map +1 -0
  288. package/dist/components/data-display/event-calendar/CalendarHeader.d.ts +13 -0
  289. package/dist/components/data-display/event-calendar/CalendarHeader.d.ts.map +1 -0
  290. package/dist/components/data-display/event-calendar/CalendarSidebar.d.ts +13 -0
  291. package/dist/components/data-display/event-calendar/CalendarSidebar.d.ts.map +1 -0
  292. package/dist/components/data-display/event-calendar/EventCalendar.d.ts +3 -0
  293. package/dist/components/data-display/event-calendar/EventCalendar.d.ts.map +1 -0
  294. package/dist/components/data-display/event-calendar/EventDetailDrawer.d.ts +10 -0
  295. package/dist/components/data-display/event-calendar/EventDetailDrawer.d.ts.map +1 -0
  296. package/dist/components/data-display/event-calendar/EventFilterList.d.ts +9 -0
  297. package/dist/components/data-display/event-calendar/EventFilterList.d.ts.map +1 -0
  298. package/dist/components/data-display/event-calendar/EventPill.d.ts +10 -0
  299. package/dist/components/data-display/event-calendar/EventPill.d.ts.map +1 -0
  300. package/dist/components/data-display/event-calendar/MiniCalendarPicker.d.ts +9 -0
  301. package/dist/components/data-display/event-calendar/MiniCalendarPicker.d.ts.map +1 -0
  302. package/dist/components/data-display/event-calendar/calendarUtils.d.ts +27 -0
  303. package/dist/components/data-display/event-calendar/calendarUtils.d.ts.map +1 -0
  304. package/dist/components/data-display/event-calendar/index.d.ts +4 -0
  305. package/dist/components/data-display/event-calendar/index.d.ts.map +1 -0
  306. package/dist/components/data-display/event-calendar/types.d.ts +52 -0
  307. package/dist/components/data-display/event-calendar/types.d.ts.map +1 -0
  308. package/dist/components/data-display/event-calendar/views/DayView.d.ts +10 -0
  309. package/dist/components/data-display/event-calendar/views/DayView.d.ts.map +1 -0
  310. package/dist/components/data-display/event-calendar/views/ListView.d.ts +10 -0
  311. package/dist/components/data-display/event-calendar/views/ListView.d.ts.map +1 -0
  312. package/dist/components/data-display/event-calendar/views/MonthView.d.ts +11 -0
  313. package/dist/components/data-display/event-calendar/views/MonthView.d.ts.map +1 -0
  314. package/dist/components/data-display/event-calendar/views/WeekView.d.ts +10 -0
  315. package/dist/components/data-display/event-calendar/views/WeekView.d.ts.map +1 -0
  316. package/dist/components/forms/button/Button.d.ts.map +1 -1
  317. package/dist/components/overlays/tooltip/Tooltip.d.ts +3 -1
  318. package/dist/components/overlays/tooltip/Tooltip.d.ts.map +1 -1
  319. package/dist/dashboard-cards.cjs +18 -0
  320. package/dist/dashboard-cards.d.ts +2 -0
  321. package/dist/dashboard-cards.mjs +2 -0
  322. package/dist/data-table.cjs +1 -1
  323. package/dist/data-table.mjs +1 -1
  324. package/dist/date-picker.cjs +1 -1
  325. package/dist/date-picker.mjs +1 -1
  326. package/dist/dialog.cjs +1 -1
  327. package/dist/dialog.mjs +1 -1
  328. package/dist/docs.cjs +31 -0
  329. package/dist/docs.cjs.map +1 -1
  330. package/dist/docs.d.ts.map +1 -1
  331. package/dist/docs.mjs +31 -0
  332. package/dist/docs.mjs.map +1 -1
  333. package/dist/drawer.cjs +2 -2
  334. package/dist/drawer.mjs +1 -1
  335. package/dist/event-calendar.cjs +5 -0
  336. package/dist/event-calendar.d.ts +2 -0
  337. package/dist/event-calendar.mjs +2 -0
  338. package/dist/form.cjs +1 -1
  339. package/dist/form.mjs +1 -1
  340. package/dist/gradual-blur.cjs +1 -1
  341. package/dist/gradual-blur.mjs +1 -1
  342. package/dist/hover-border-gradient.cjs +1 -1
  343. package/dist/hover-border-gradient.mjs +1 -1
  344. package/dist/hover-card.cjs +1 -1
  345. package/dist/hover-card.mjs +1 -1
  346. package/dist/icons.cjs +3 -2
  347. package/dist/icons.mjs +2 -1
  348. package/dist/index.cjs +74 -330
  349. package/dist/index.cjs.map +1 -1
  350. package/dist/index.d.ts +5 -2
  351. package/dist/index.d.ts.map +1 -1
  352. package/dist/index.mjs +55 -327
  353. package/dist/index.mjs.map +1 -1
  354. package/dist/input.cjs +1 -1
  355. package/dist/input.mjs +1 -1
  356. package/dist/label.cjs +1 -1
  357. package/dist/label.mjs +1 -1
  358. package/dist/loading.cjs +1 -1
  359. package/dist/loading.mjs +1 -1
  360. package/dist/multi-select-combobox.cjs +1 -1
  361. package/dist/multi-select-combobox.mjs +1 -1
  362. package/dist/otp-input.cjs +1 -1
  363. package/dist/otp-input.mjs +1 -1
  364. package/dist/password-strength-meter.cjs +1 -1
  365. package/dist/password-strength-meter.mjs +1 -1
  366. package/dist/progress-bar.cjs +1 -1
  367. package/dist/progress-bar.mjs +1 -1
  368. package/dist/radio.cjs +1 -1
  369. package/dist/radio.mjs +1 -1
  370. package/dist/select.cjs +1 -1
  371. package/dist/select.mjs +1 -1
  372. package/dist/sidebar.cjs +1 -1
  373. package/dist/sidebar.mjs +1 -1
  374. package/dist/skeleton.cjs +1 -1
  375. package/dist/skeleton.mjs +1 -1
  376. package/dist/spinners.cjs +1 -1
  377. package/dist/spinners.mjs +1 -1
  378. package/dist/splash-cursor.cjs +1 -1
  379. package/dist/splash-cursor.mjs +1 -1
  380. package/dist/spotlight-card.cjs +1 -1
  381. package/dist/spotlight-card.mjs +1 -1
  382. package/dist/stepper.cjs +1 -1
  383. package/dist/stepper.mjs +1 -1
  384. package/dist/sun-to-moon-button.cjs +2 -2
  385. package/dist/sun-to-moon-button.mjs +2 -2
  386. package/dist/switch.cjs +1 -1
  387. package/dist/switch.mjs +1 -1
  388. package/dist/textarea.cjs +1 -1
  389. package/dist/textarea.mjs +1 -1
  390. package/dist/toast.cjs +1 -1
  391. package/dist/toast.mjs +1 -1
  392. package/dist/tooltip.cjs +1 -1
  393. package/dist/tooltip.mjs +1 -1
  394. package/dist/truncated-text.cjs +1 -1
  395. package/dist/truncated-text.mjs +1 -1
  396. package/dist/typography.cjs +1 -1
  397. package/dist/typography.mjs +1 -1
  398. package/package.json +17 -5
  399. package/dist/chunks/Tooltip-DD30yj3A.cjs.map +0 -1
  400. package/dist/chunks/Tooltip-DK3B879v.mjs.map +0 -1
  401. package/dist/chunks/button-A6UTvrOu.mjs.map +0 -1
  402. package/dist/chunks/button-C4MXPxsC.cjs.map +0 -1
  403. package/dist/chunks/charts-BmIV-mJy.cjs.map +0 -1
  404. package/dist/chunks/charts-DkVu0rFc.mjs.map +0 -1
  405. package/dist/chunks/data-table-Dtf6lKpp.mjs.map +0 -1
  406. package/dist/chunks/data-table-fAEuevPn.cjs.map +0 -1
  407. package/dist/chunks/icons-CRanVZB1.cjs.map +0 -1
  408. package/dist/chunks/icons-bx3nrxNv.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-3i4mGE6T.cjs","names":[],"sources":["../../src/components/navigation/sidebar/HamburgerIcon.tsx","../../src/components/navigation/sidebar/NavLink.tsx","../../src/components/navigation/sidebar/SidebarLinks.tsx","../../src/components/navigation/sidebar/Sidebar.tsx","../../src/components/navigation/sidebar/DashboardSidebarShell.tsx"],"sourcesContent":["import { mergeClassNames } from \"../../../utils\";\n\nexport interface HamburgerIconProps {\n isOpen: boolean;\n className?: string;\n}\n\nconst lineClassName =\n \"block h-0.5 w-full rounded-lg bg-current transition-all duration-300 ease-in-out\";\n\nexport function HamburgerIcon({ isOpen, className }: HamburgerIconProps) {\n return (\n <span\n className={mergeClassNames(\n \"relative flex h-4 w-5 flex-col items-center justify-between\",\n className,\n )}\n aria-hidden=\"true\"\n >\n <span\n className={mergeClassNames(\n lineClassName,\n isOpen && \"translate-y-[5px] rotate-45 transform\",\n )}\n />\n <span className={mergeClassNames(lineClassName, isOpen && \"w-0\")} />\n <span\n className={mergeClassNames(\n lineClassName,\n isOpen && \"-translate-y-[9px] -rotate-45 transform\",\n )}\n />\n </span>\n );\n}\n","import { useMemo } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport type { SidebarNavLinkProps } from \"./types\";\n\nexport function NavLink({\n className,\n children,\n style,\n borderRadius,\n disabled = false,\n href,\n target,\n rel,\n onClick,\n}: SidebarNavLinkProps) {\n const memoizedStyle = useMemo(\n () => (borderRadius !== undefined ? { ...style, borderRadius } : style),\n [borderRadius, style],\n );\n\n if (href) {\n const resolvedRel = target === \"_blank\" ? (rel ?? \"noreferrer noopener\") : rel;\n\n return (\n <a\n href={href}\n className={className}\n style={memoizedStyle}\n target={target}\n rel={resolvedRel}\n aria-disabled={disabled}\n onClick={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n }}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Button\n type=\"button\"\n variant=\"tertiary\"\n className={className}\n style={memoizedStyle}\n disabled={disabled}\n onClick={onClick}\n >\n {children}\n </Button>\n );\n}\n","import { mergeClassNames } from \"../../../utils\";\nimport { NavLink } from \"./NavLink\";\nimport type { SidebarDirection, SidebarItem, SidebarLinksProps } from \"./types\";\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: SidebarDirection,\n): Exclude<SidebarDirection, \"auto\"> {\n if (direction !== \"auto\") {\n return direction;\n }\n\n if (typeof document === \"undefined\") {\n return \"ltr\";\n }\n\n const explicitDirection =\n document.documentElement.getAttribute(\"dir\") ?? undefined;\n\n if (explicitDirection === \"rtl\" || explicitDirection === \"ltr\") {\n return explicitDirection;\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction isRouteActive(item: SidebarItem, activePath?: string): boolean {\n if (typeof item.active === \"boolean\") {\n return item.active;\n }\n\n if (!activePath || !item.href) {\n return false;\n }\n\n return activePath === item.href || activePath.startsWith(`${item.href}/`);\n}\n\nexport function SidebarLinks({\n items,\n activePath,\n onItemSelect,\n direction = \"auto\",\n className,\n itemClassName,\n activeItemClassName,\n}: SidebarLinksProps) {\n const effectiveDirection = resolveDirection(direction);\n const visibleItems = items.filter((item) => !item.hidden);\n\n return (\n <ul className={mergeClassNames(\"space-y-1.5\", className)}>\n {visibleItems.map((item) => {\n const active = isRouteActive(item, activePath);\n\n return (\n <li key={item.id} className=\"relative\">\n <NavLink\n href={item.href}\n disabled={item.disabled}\n className={mergeClassNames(\n \"group relative flex w-full items-center gap-2.5 rounded-md border px-3 py-2.5 transition-all duration-200\",\n effectiveDirection === \"rtl\" ? \"text-right\" : \"text-left\",\n \"border-transparent text-ds-2 hover:border-ds-border-3 hover:bg-ds-surface-2/80 hover:text-ds-1\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ds-focus/60 focus-visible:ring-offset-2 focus-visible:ring-offset-ds-canvas\",\n item.disabled && \"cursor-not-allowed opacity-50\",\n active &&\n \"border-ds-border-accent/35 bg-ds-accent-subtle text-ds-1 shadow-[0_4px_12px_color-mix(in_srgb,var(--ds-color-fg)_8%,transparent)]\",\n active && activeItemClassName,\n itemClassName,\n )}\n onClick={(event) => {\n item.onSelect?.(event);\n onItemSelect?.(item, event);\n if (onItemSelect) {\n event.preventDefault();\n }\n }}\n >\n <span\n className={mergeClassNames(\n \"inline-flex h-5 w-5 shrink-0 items-center justify-center\",\n active ? \"text-ds-1\" : \"text-ds-2 group-hover:text-ds-1\",\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n <span className=\"min-w-0 flex-1 truncate text-sm font-medium\">\n {item.label}\n </span>\n {item.badge ? (\n <span className=\"shrink-0 text-xs text-ds-2\">{item.badge}</span>\n ) : null}\n </NavLink>\n {active ? (\n <span\n className={mergeClassNames(\n \"pointer-events-none absolute top-1.5 h-[calc(100%-12px)] w-2\",\n effectiveDirection === \"rtl\" ? \"right-0\" : \"left-0\",\n )}\n aria-hidden=\"true\"\n >\n {/* <span className=\"absolute inset-y-1 left-1/2 w-2 -translate-x-1/2 rounded-full bg-ds-accent/25 blur-[4px]\" /> */}\n {/* <span className=\"absolute inset-y-0 left-1/6 w-[2px] -translate-x-1/2 rounded-full bg-ds-accent motion-safe:animate-pulse\" /> */}\n {/* <span className=\"absolute top-2.5 left-1/2 h-2 w-2 -translate-x-1/2 rounded-full bg-ds-accent shadow-[0_0_10px_color-mix(in_srgb,var(--ds-color-accent)_55%,transparent)] motion-safe:animate-pulse\" /> */}\n </span>\n ) : null}\n </li>\n );\n })}\n </ul>\n );\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { mergeClassNames } from \"../../../utils\";\nimport { HamburgerIcon } from \"./HamburgerIcon\";\nimport { SidebarLinks } from \"./SidebarLinks\";\nimport type { SidebarProps } from \"./types\";\n\nfunction useControllableOpenState(\n open: boolean | undefined,\n defaultOpen: boolean,\n onOpenChange?: (open: boolean) => void,\n) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : internalOpen;\n\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n return [resolvedOpen, setOpen] as const;\n}\n\nconst fallbackBrand = (\n <div className=\"text-xl font-bold uppercase tracking-wide text-ds-1\">\n <span className=\"text-ds-accent\">ERP</span>\n <span className=\"font-medium\">PRO</span>\n </div>\n);\n\nexport function Sidebar({\n items,\n open,\n defaultOpen = false,\n onOpenChange,\n activePath,\n onItemSelect,\n direction = \"auto\",\n navbar,\n brand = fallbackBrand,\n footer,\n className,\n linksClassName,\n itemClassName,\n activeItemClassName,\n overlayClassName,\n closeLabel = \"Toggle sidebar\",\n showOverlay = true,\n}: SidebarProps) {\n const [resolvedOpen, setOpen] = useControllableOpenState(\n open,\n defaultOpen,\n onOpenChange,\n );\n\n const content = useMemo(\n () => (\n <aside\n dir={direction === \"auto\" ? undefined : direction}\n className={mergeClassNames(\n \"fixed inset-y-2 z-70 flex w-72 flex-col rounded-xl border border-ds-border-3 bg-ds-surface-1/92 p-3 shadow-[0_10px_28px_color-mix(in_srgb,var(--ds-color-fg)_9%,transparent)] backdrop-blur-xl\",\n \"transition-transform duration-200 ease-out xl:translate-x-0\",\n direction === \"rtl\" ? \"right-2\" : \"left-2\",\n resolvedOpen\n ? \"translate-x-0\"\n : direction === \"rtl\"\n ? \"translate-x-[110%] xl:translate-x-0\"\n : \"-translate-x-[110%] xl:translate-x-0\",\n className,\n )}\n style={{\n backdropFilter: \"blur(14px) saturate(120%)\",\n WebkitBackdropFilter: \"blur(14px) saturate(120%)\",\n }}\n >\n {navbar ? (\n <div className=\"mb-4\">{navbar}</div>\n ) : (\n <div className=\"mb-4 flex items-center justify-between gap-3 rounded-xl border border-ds-border-3 bg-ds-surface-2/85 px-3 py-2\">\n <div className=\"min-w-0 flex-1\">{brand}</div>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n aria-label={closeLabel}\n className={mergeClassNames(\n \"p-1! text-ds-2 transition-colors hover:bg-ds-surface-2 hover:text-ds-1\",\n \"xl:hidden\",\n )}\n onClick={() => setOpen(!resolvedOpen)}\n >\n <HamburgerIcon isOpen={resolvedOpen} />\n </Button>\n </div>\n )}\n\n <div className=\"mb-5 h-px bg-ds-border-3\" />\n\n <div className=\"min-h-0 flex-1 overflow-y-auto pr-1\">\n <SidebarLinks\n items={items}\n activePath={activePath}\n onItemSelect={onItemSelect}\n direction={direction}\n className={linksClassName}\n itemClassName={itemClassName}\n activeItemClassName={activeItemClassName}\n />\n </div>\n\n {footer ? <div className=\"mt-4\">{footer}</div> : null}\n </aside>\n ),\n [\n activeItemClassName,\n activePath,\n brand,\n className,\n closeLabel,\n direction,\n footer,\n itemClassName,\n items,\n linksClassName,\n onItemSelect,\n resolvedOpen,\n setOpen,\n ],\n );\n\n if (!showOverlay) {\n return content;\n }\n\n return (\n <>\n {content}\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n aria-hidden={!resolvedOpen}\n tabIndex={resolvedOpen ? 0 : -1}\n className={mergeClassNames(\n \"fixed inset-0 z-65 p-0! bg-black/30 backdrop-blur-[2px] transition-opacity duration-200 xl:hidden\",\n resolvedOpen\n ? \"pointer-events-auto opacity-100\"\n : \"pointer-events-none opacity-0\",\n overlayClassName,\n )}\n onClick={() => setOpen(false)}\n />\n </>\n );\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport { BellIcon, FullScreenIcon } from \"../../icons\";\nimport { Button } from \"../../forms/button\";\nimport { DropdownMenu } from \"../../overlays/dropdown-menu\";\nimport { Typography } from \"../../typography\";\nimport { mergeClassNames } from \"../../../utils\";\nimport { HamburgerIcon } from \"./HamburgerIcon\";\nimport { Sidebar } from \"./Sidebar\";\nimport type { SidebarItem, SidebarProps } from \"./types\";\nimport { SunToMoonButton } from \"../../effects\";\n\nexport interface DashboardHeaderRenderContext {\n isSidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n openSidebar: () => void;\n closeSidebar: () => void;\n toggleSidebar: () => void;\n direction: Exclude<SidebarProps[\"direction\"], \"auto\">;\n isRtl: boolean;\n}\n\ntype DashboardShellSlot =\n | ReactNode\n | ((context: DashboardHeaderRenderContext) => ReactNode);\n\nconst notificationItems = [\n {\n id: \"stock\",\n title: \"Low stock alert\",\n description: \"Wireless Mouse is below reorder point.\",\n time: \"4m\",\n toneClassName:\n \"bg-ds-state-warning-surface text-ds-state-warning-text border-ds-state-warning-border\",\n },\n {\n id: \"invoice\",\n title: \"Invoice paid\",\n description: \"INV-2048 was settled successfully.\",\n time: \"18m\",\n toneClassName:\n \"bg-ds-state-success-surface text-ds-state-success-text border-ds-state-success-border\",\n },\n {\n id: \"sync\",\n title: \"Catalog sync complete\",\n description: \"128 product records refreshed.\",\n time: \"42m\",\n toneClassName:\n \"bg-ds-state-info-surface text-ds-state-info-text border-ds-state-info-border\",\n },\n] as const;\n\nexport interface DashboardSidebarShellProps {\n items: readonly SidebarItem[];\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n direction?: SidebarProps[\"direction\"];\n activePath?: string;\n onItemSelect?: SidebarProps[\"onItemSelect\"];\n brand?: SidebarProps[\"brand\"];\n sidebarNavbar?: SidebarProps[\"navbar\"];\n sidebarFooter?: SidebarProps[\"footer\"];\n sidebarClassName?: SidebarProps[\"className\"];\n sidebarLinksClassName?: SidebarProps[\"linksClassName\"];\n sidebarItemClassName?: SidebarProps[\"itemClassName\"];\n sidebarActiveItemClassName?: SidebarProps[\"activeItemClassName\"];\n sidebarOverlayClassName?: SidebarProps[\"overlayClassName\"];\n sidebarCloseLabel?: SidebarProps[\"closeLabel\"];\n showSidebarOverlay?: SidebarProps[\"showOverlay\"];\n header?: DashboardShellSlot;\n headerLeading?: DashboardShellSlot;\n headerActions?: DashboardShellSlot;\n headerActionsLeading?: DashboardShellSlot;\n headerActionsTrailing?: DashboardShellSlot;\n headerClassName?: string;\n headerTitleClassName?: string;\n headerActionsClassName?: string;\n breadcrumb?: ReactNode;\n title?: ReactNode;\n children?: ReactNode;\n className?: string;\n contentClassName?: string;\n mainClassName?: string;\n autoHideOnMobileBreakpoint?: boolean;\n}\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: SidebarProps[\"direction\"],\n): Exclude<SidebarProps[\"direction\"], \"auto\"> {\n if (direction === \"rtl\" || direction === \"ltr\") {\n return direction;\n }\n\n if (typeof document !== \"undefined\") {\n const documentDirection = document.documentElement.getAttribute(\"dir\");\n if (documentDirection === \"rtl\" || documentDirection === \"ltr\") {\n return documentDirection;\n }\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction resolveSlot(\n slot: DashboardShellSlot | undefined,\n context: DashboardHeaderRenderContext,\n) {\n return typeof slot === \"function\" ? slot(context) : slot;\n}\n\nfunction useControllableOpenState(\n open: boolean | undefined,\n defaultOpen: boolean,\n onOpenChange?: (open: boolean) => void,\n) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : internalOpen;\n\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n return [resolvedOpen, setOpen] as const;\n}\n\nexport function DashboardSidebarShell({\n items,\n open,\n defaultOpen = false,\n onOpenChange,\n direction = \"auto\",\n activePath,\n onItemSelect,\n brand,\n sidebarNavbar,\n sidebarFooter,\n sidebarClassName,\n sidebarLinksClassName,\n sidebarItemClassName,\n sidebarActiveItemClassName,\n sidebarOverlayClassName,\n sidebarCloseLabel,\n showSidebarOverlay,\n header,\n headerLeading,\n headerActions,\n headerActionsLeading,\n headerActionsTrailing,\n headerClassName,\n headerTitleClassName,\n headerActionsClassName,\n breadcrumb = \"Pages / Dashboard\",\n title = \"Dashboard\",\n children,\n className,\n contentClassName,\n mainClassName,\n autoHideOnMobileBreakpoint = true,\n}: DashboardSidebarShellProps) {\n const [resolvedOpen, setOpen] = useControllableOpenState(\n open,\n defaultOpen,\n onOpenChange,\n );\n const resolvedDirection = resolveDirection(direction);\n const isRtl = resolvedDirection === \"rtl\";\n const openSidebar = useCallback(() => setOpen(true), [setOpen]);\n const closeSidebar = useCallback(() => setOpen(false), [setOpen]);\n const toggleSidebar = useCallback(\n () => setOpen(!resolvedOpen),\n [resolvedOpen, setOpen],\n );\n\n const headerContext = useMemo<DashboardHeaderRenderContext>(\n () => ({\n isSidebarOpen: resolvedOpen,\n setSidebarOpen: setOpen,\n openSidebar,\n closeSidebar,\n toggleSidebar,\n direction: resolvedDirection,\n isRtl,\n }),\n [\n closeSidebar,\n isRtl,\n openSidebar,\n resolvedDirection,\n resolvedOpen,\n setOpen,\n toggleSidebar,\n ],\n );\n\n useEffect(() => {\n if (!autoHideOnMobileBreakpoint || typeof window === \"undefined\") {\n return;\n }\n\n const mediaQuery = window.matchMedia(\"(max-width: 1279px)\");\n\n const handleMobileEnter = (event: MediaQueryListEvent | MediaQueryList) => {\n if (event.matches) {\n setOpen(false);\n }\n };\n\n // Ensure first render on smaller screens starts closed.\n handleMobileEnter(mediaQuery);\n\n const listener = (event: MediaQueryListEvent) => handleMobileEnter(event);\n mediaQuery.addEventListener(\"change\", listener);\n\n return () => mediaQuery.removeEventListener(\"change\", listener);\n }, [autoHideOnMobileBreakpoint, setOpen]);\n\n const defaultHeaderActions = useMemo(\n () => (\n <>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0! xl:hidden\"\n aria-label=\"Toggle sidebar\"\n onClick={toggleSidebar}\n >\n <HamburgerIcon isOpen={resolvedOpen} />\n </Button>\n\n <DropdownMenu\n animationClassName={isRtl ? \"origin-top-left\" : \"origin-top-right\"}\n panelClassName={mergeClassNames(\n \"top-[44px]\",\n isRtl ? \"left-0\" : \"right-0\",\n )}\n trigger={\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"relative h-9 w-9 rounded-full p-0!\"\n aria-label=\"Open notifications\"\n >\n <BellIcon className=\"h-5 w-5\" />\n <span\n className={mergeClassNames(\n \"bg-ds-state-danger text-ds-on-accent absolute -top-0.5 flex h-5 min-w-5 items-center justify-center rounded-full px-1 text-[0.68rem] font-bold\",\n isRtl ? \"-left-0.5\" : \"-right-0.5\",\n )}\n >\n {notificationItems.length}\n </span>\n </Button>\n }\n >\n <div className=\"w-[340px] rounded-lg border border-ds-border-3 bg-ds-surface-1 p-3 shadow-xl\">\n <div className=\"mb-2 flex items-center justify-between gap-3\">\n <Typography variant=\"body2\" weight=\"black\">\n Notifications\n </Typography>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"px-2 py-1 text-xs\"\n >\n Mark all read\n </Button>\n </div>\n <div className=\"space-y-2\">\n {notificationItems.map((item) => (\n <Button\n key={item.id}\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"w-full rounded-lg border border-ds-border-3 px-2.5 py-2\",\n isRtl\n ? \"justify-end text-right\"\n : \"justify-start text-left\",\n )}\n >\n <span\n className={`mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border ${item.toneClassName}`}\n >\n <BellIcon className=\"h-3.5 w-3.5\" />\n </span>\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-xs font-semibold text-ds-1\">\n {item.title}\n </span>\n <span className=\"block truncate text-[11px] text-ds-3\">\n {item.description}\n </span>\n </span>\n <span className=\"text-[11px] text-ds-3\">{item.time}</span>\n </Button>\n ))}\n </div>\n </div>\n </DropdownMenu>\n\n <SunToMoonButton showLabelAndImage={false} />\n\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0!\"\n aria-label=\"Toggle fullscreen\"\n onClick={() => {\n if (document.fullscreenElement) {\n document.exitFullscreen();\n } else {\n document.documentElement.requestFullscreen();\n }\n }}\n >\n <FullScreenIcon className=\"h-5 w-5\" />\n </Button>\n\n <DropdownMenu\n animationClassName={isRtl ? \"origin-top-left\" : \"origin-top-right\"}\n panelClassName={mergeClassNames(\n \"top-[44px]\",\n isRtl ? \"left-0\" : \"right-0\",\n )}\n trigger={\n <Button\n type=\"button\"\n variant=\"primary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0! text-sm font-black\"\n aria-label=\"Open user menu\"\n >\n JD\n </Button>\n }\n >\n <div className=\"w-52 rounded-lg border border-ds-border-3 bg-ds-surface-1 p-3 shadow-xl\">\n <div className=\"mb-2 flex items-center gap-2\">\n <span className=\"bg-ds-accent text-ds-on-accent inline-flex h-8 w-8 items-center justify-center rounded-full text-xs font-black\">\n JD\n </span>\n <div className=\"min-w-0\">\n <Typography variant=\"body2\" weight=\"black\" className=\"truncate\">\n John Doe\n </Typography>\n <Typography variant=\"caption\" className=\"text-ds-3\">\n Administrator\n </Typography>\n </div>\n </div>\n <div className=\"my-2 border-t border-ds-border-3\" />\n <div className=\"flex flex-col gap-1\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Profile\n </Button>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Settings\n </Button>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm text-ds-state-error-text\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Log Out\n </Button>\n </div>\n </div>\n </DropdownMenu>\n </>\n ),\n [isRtl, resolvedOpen, toggleSidebar],\n );\n\n const resolvedHeaderLeading = resolveSlot(headerLeading, headerContext);\n const resolvedHeaderActionsLeading = headerActionsLeading\n ? resolveSlot(headerActionsLeading, headerContext)\n : null;\n const resolvedHeaderActionsTrailing = headerActionsTrailing\n ? resolveSlot(headerActionsTrailing, headerContext)\n : null;\n const resolvedHeaderActions =\n headerActions === undefined ? (\n <>\n {resolvedHeaderActionsLeading}\n {defaultHeaderActions}\n {resolvedHeaderActionsTrailing}\n </>\n ) : (\n resolveSlot(headerActions, headerContext)\n );\n\n const defaultHeader = useMemo(\n () => (\n <nav\n dir={resolvedDirection}\n className={mergeClassNames(\n \"sticky top-2 z-40 mb-4 flex items-center rounded-md border border-ds-border-3 bg-ds-surface-1/95 px-4 py-3 shadow-[0_4px_14px_color-mix(in_srgb,var(--ds-color-fg)_8%,transparent)] backdrop-blur-md\",\n headerClassName,\n )}\n >\n <div\n className={mergeClassNames(\n \"flex w-full justify-between gap-4\",\n isRtl && \"flex-row-reverse\",\n )}\n >\n <div\n className={mergeClassNames(\n \"flex min-w-0 items-center gap-3\",\n isRtl && \"flex-row-reverse text-right\",\n headerTitleClassName,\n )}\n >\n {resolvedHeaderLeading}\n <div className=\"min-w-0\">\n <Typography variant=\"caption\" className=\"text-ds-3 capitalize\">\n {breadcrumb}\n </Typography>\n <Typography\n variant=\"h5\"\n weight=\"black\"\n className=\"truncate leading-7 capitalize\"\n >\n {title}\n </Typography>\n </div>\n </div>\n\n <div\n className={mergeClassNames(\n \"border-ds-border-4 flex min-h-11 shrink-0 items-center gap-1 rounded-full border bg-ds-surface-1 px-2 py-1 shadow-[0_2px_8px_color-mix(in_srgb,var(--ds-color-fg)_6%,transparent)]\",\n isRtl && \"flex-row-reverse\",\n headerActionsClassName,\n )}\n >\n {resolvedHeaderActions}\n </div>\n </div>\n </nav>\n ),\n [\n breadcrumb,\n headerActionsClassName,\n headerClassName,\n headerTitleClassName,\n isRtl,\n resolvedDirection,\n resolvedHeaderActions,\n resolvedHeaderLeading,\n title,\n ],\n );\n\n const resolvedHeader =\n header === undefined ? undefined : resolveSlot(header, headerContext);\n\n return (\n <div\n dir={resolvedDirection}\n className={mergeClassNames(\"flex h-full w-full\", className)}\n >\n <Sidebar\n items={items}\n open={resolvedOpen}\n onOpenChange={setOpen}\n activePath={activePath}\n onItemSelect={onItemSelect}\n direction={direction}\n navbar={sidebarNavbar}\n brand={brand}\n footer={sidebarFooter}\n className={sidebarClassName}\n linksClassName={sidebarLinksClassName}\n itemClassName={sidebarItemClassName}\n activeItemClassName={sidebarActiveItemClassName}\n overlayClassName={sidebarOverlayClassName}\n closeLabel={sidebarCloseLabel}\n showOverlay={showSidebarOverlay}\n />\n\n <div className=\"h-full w-full\">\n <main\n className={mergeClassNames(\n \"mx-2 flex-none transition-all duration-200 ease-in-out\",\n isRtl ? \"xl:mr-[18.5rem]\" : \"xl:ml-[18.5rem]\",\n mainClassName,\n )}\n >\n {resolvedHeader ?? defaultHeader}\n\n <section\n className={mergeClassNames(\n \"mx-auto min-h-[calc(100dvh-180px)] rounded-md md:min-h-[calc(100dvh-116px)]\",\n contentClassName,\n )}\n >\n {children}\n </section>\n </main>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-Cq7UbKJT.cjs","names":[],"sources":["../../src/components/navigation/sidebar/HamburgerIcon.tsx","../../src/components/navigation/sidebar/NavLink.tsx","../../src/components/navigation/sidebar/SidebarLinks.tsx","../../src/components/navigation/sidebar/Sidebar.tsx","../../src/components/navigation/sidebar/DashboardSidebarShell.tsx"],"sourcesContent":["import { mergeClassNames } from \"../../../utils\";\n\nexport interface HamburgerIconProps {\n isOpen: boolean;\n className?: string;\n}\n\nconst lineClassName =\n \"block h-0.5 w-full rounded-lg bg-current transition-all duration-300 ease-in-out\";\n\nexport function HamburgerIcon({ isOpen, className }: HamburgerIconProps) {\n return (\n <span\n className={mergeClassNames(\n \"relative flex h-4 w-5 flex-col items-center justify-between\",\n className,\n )}\n aria-hidden=\"true\"\n >\n <span\n className={mergeClassNames(\n lineClassName,\n isOpen && \"translate-y-[5px] rotate-45 transform\",\n )}\n />\n <span className={mergeClassNames(lineClassName, isOpen && \"w-0\")} />\n <span\n className={mergeClassNames(\n lineClassName,\n isOpen && \"-translate-y-[9px] -rotate-45 transform\",\n )}\n />\n </span>\n );\n}\n","import { useMemo } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport type { SidebarNavLinkProps } from \"./types\";\n\nexport function NavLink({\n className,\n children,\n style,\n borderRadius,\n disabled = false,\n href,\n target,\n rel,\n onClick,\n}: SidebarNavLinkProps) {\n const memoizedStyle = useMemo(\n () => (borderRadius !== undefined ? { ...style, borderRadius } : style),\n [borderRadius, style],\n );\n\n if (href) {\n const resolvedRel = target === \"_blank\" ? (rel ?? \"noreferrer noopener\") : rel;\n\n return (\n <a\n href={href}\n className={className}\n style={memoizedStyle}\n target={target}\n rel={resolvedRel}\n aria-disabled={disabled}\n onClick={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n }}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Button\n type=\"button\"\n variant=\"tertiary\"\n className={className}\n style={memoizedStyle}\n disabled={disabled}\n onClick={onClick}\n >\n {children}\n </Button>\n );\n}\n","import { mergeClassNames } from \"../../../utils\";\nimport { NavLink } from \"./NavLink\";\nimport type { SidebarDirection, SidebarItem, SidebarLinksProps } from \"./types\";\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: SidebarDirection,\n): Exclude<SidebarDirection, \"auto\"> {\n if (direction !== \"auto\") {\n return direction;\n }\n\n if (typeof document === \"undefined\") {\n return \"ltr\";\n }\n\n const explicitDirection =\n document.documentElement.getAttribute(\"dir\") ?? undefined;\n\n if (explicitDirection === \"rtl\" || explicitDirection === \"ltr\") {\n return explicitDirection;\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction isRouteActive(item: SidebarItem, activePath?: string): boolean {\n if (typeof item.active === \"boolean\") {\n return item.active;\n }\n\n if (!activePath || !item.href) {\n return false;\n }\n\n return activePath === item.href || activePath.startsWith(`${item.href}/`);\n}\n\nexport function SidebarLinks({\n items,\n activePath,\n onItemSelect,\n direction = \"auto\",\n className,\n itemClassName,\n activeItemClassName,\n}: SidebarLinksProps) {\n const effectiveDirection = resolveDirection(direction);\n const visibleItems = items.filter((item) => !item.hidden);\n\n return (\n <ul className={mergeClassNames(\"space-y-1.5\", className)}>\n {visibleItems.map((item) => {\n const active = isRouteActive(item, activePath);\n\n return (\n <li key={item.id} className=\"relative\">\n <NavLink\n href={item.href}\n disabled={item.disabled}\n className={mergeClassNames(\n \"group relative flex w-full items-center gap-2.5 rounded-md border px-3 py-2.5 transition-all duration-200\",\n effectiveDirection === \"rtl\" ? \"text-right\" : \"text-left\",\n \"border-transparent text-ds-2 hover:border-ds-border-3 hover:bg-ds-surface-2/80 hover:text-ds-1\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ds-focus/60 focus-visible:ring-offset-2 focus-visible:ring-offset-ds-canvas\",\n item.disabled && \"cursor-not-allowed opacity-50\",\n active &&\n \"border-ds-border-accent/35 bg-ds-accent-subtle text-ds-1 shadow-[0_4px_12px_color-mix(in_srgb,var(--ds-color-fg)_8%,transparent)]\",\n active && activeItemClassName,\n itemClassName,\n )}\n onClick={(event) => {\n item.onSelect?.(event);\n onItemSelect?.(item, event);\n if (onItemSelect) {\n event.preventDefault();\n }\n }}\n >\n <span\n className={mergeClassNames(\n \"inline-flex h-5 w-5 shrink-0 items-center justify-center\",\n active ? \"text-ds-1\" : \"text-ds-2 group-hover:text-ds-1\",\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n <span className=\"min-w-0 flex-1 truncate text-sm font-medium\">\n {item.label}\n </span>\n {item.badge ? (\n <span className=\"shrink-0 text-xs text-ds-2\">{item.badge}</span>\n ) : null}\n </NavLink>\n {active ? (\n <span\n className={mergeClassNames(\n \"pointer-events-none absolute top-1.5 h-[calc(100%-12px)] w-2\",\n effectiveDirection === \"rtl\" ? \"right-0\" : \"left-0\",\n )}\n aria-hidden=\"true\"\n >\n {/* <span className=\"absolute inset-y-1 left-1/2 w-2 -translate-x-1/2 rounded-full bg-ds-accent/25 blur-[4px]\" /> */}\n {/* <span className=\"absolute inset-y-0 left-1/6 w-[2px] -translate-x-1/2 rounded-full bg-ds-accent motion-safe:animate-pulse\" /> */}\n {/* <span className=\"absolute top-2.5 left-1/2 h-2 w-2 -translate-x-1/2 rounded-full bg-ds-accent shadow-[0_0_10px_color-mix(in_srgb,var(--ds-color-accent)_55%,transparent)] motion-safe:animate-pulse\" /> */}\n </span>\n ) : null}\n </li>\n );\n })}\n </ul>\n );\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { mergeClassNames } from \"../../../utils\";\nimport { HamburgerIcon } from \"./HamburgerIcon\";\nimport { SidebarLinks } from \"./SidebarLinks\";\nimport type { SidebarProps } from \"./types\";\n\nfunction useControllableOpenState(\n open: boolean | undefined,\n defaultOpen: boolean,\n onOpenChange?: (open: boolean) => void,\n) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : internalOpen;\n\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n return [resolvedOpen, setOpen] as const;\n}\n\nconst fallbackBrand = (\n <div className=\"text-xl font-bold uppercase tracking-wide text-ds-1\">\n <span className=\"text-ds-accent\">ERP</span>\n <span className=\"font-medium\">PRO</span>\n </div>\n);\n\nexport function Sidebar({\n items,\n open,\n defaultOpen = false,\n onOpenChange,\n activePath,\n onItemSelect,\n direction = \"auto\",\n navbar,\n brand = fallbackBrand,\n footer,\n className,\n linksClassName,\n itemClassName,\n activeItemClassName,\n overlayClassName,\n closeLabel = \"Toggle sidebar\",\n showOverlay = true,\n}: SidebarProps) {\n const [resolvedOpen, setOpen] = useControllableOpenState(\n open,\n defaultOpen,\n onOpenChange,\n );\n\n const content = useMemo(\n () => (\n <aside\n dir={direction === \"auto\" ? undefined : direction}\n className={mergeClassNames(\n \"fixed inset-y-2 z-70 flex w-72 flex-col rounded-xl border border-ds-border-3 bg-ds-surface-1/92 p-3 shadow-[0_10px_28px_color-mix(in_srgb,var(--ds-color-fg)_9%,transparent)] backdrop-blur-xl\",\n \"transition-transform duration-200 ease-out xl:translate-x-0\",\n direction === \"rtl\" ? \"right-2\" : \"left-2\",\n resolvedOpen\n ? \"translate-x-0\"\n : direction === \"rtl\"\n ? \"translate-x-[110%] xl:translate-x-0\"\n : \"-translate-x-[110%] xl:translate-x-0\",\n className,\n )}\n style={{\n backdropFilter: \"blur(14px) saturate(120%)\",\n WebkitBackdropFilter: \"blur(14px) saturate(120%)\",\n }}\n >\n {navbar ? (\n <div className=\"mb-4\">{navbar}</div>\n ) : (\n <div className=\"mb-4 flex items-center justify-between gap-3 rounded-xl border border-ds-border-3 bg-ds-surface-2/85 px-3 py-2\">\n <div className=\"min-w-0 flex-1\">{brand}</div>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n aria-label={closeLabel}\n className={mergeClassNames(\n \"p-1! text-ds-2 transition-colors hover:bg-ds-surface-2 hover:text-ds-1\",\n \"xl:hidden\",\n )}\n onClick={() => setOpen(!resolvedOpen)}\n >\n <HamburgerIcon isOpen={resolvedOpen} />\n </Button>\n </div>\n )}\n\n <div className=\"mb-5 h-px bg-ds-border-3\" />\n\n <div className=\"min-h-0 flex-1 overflow-y-auto pr-1\">\n <SidebarLinks\n items={items}\n activePath={activePath}\n onItemSelect={onItemSelect}\n direction={direction}\n className={linksClassName}\n itemClassName={itemClassName}\n activeItemClassName={activeItemClassName}\n />\n </div>\n\n {footer ? <div className=\"mt-4\">{footer}</div> : null}\n </aside>\n ),\n [\n activeItemClassName,\n activePath,\n brand,\n className,\n closeLabel,\n direction,\n footer,\n itemClassName,\n items,\n linksClassName,\n onItemSelect,\n resolvedOpen,\n setOpen,\n ],\n );\n\n if (!showOverlay) {\n return content;\n }\n\n return (\n <>\n {content}\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n aria-hidden={!resolvedOpen}\n tabIndex={resolvedOpen ? 0 : -1}\n className={mergeClassNames(\n \"fixed inset-0 z-65 p-0! bg-black/30 backdrop-blur-[2px] transition-opacity duration-200 xl:hidden\",\n resolvedOpen\n ? \"pointer-events-auto opacity-100\"\n : \"pointer-events-none opacity-0\",\n overlayClassName,\n )}\n onClick={() => setOpen(false)}\n />\n </>\n );\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport { BellIcon, FullScreenIcon } from \"../../icons\";\nimport { Button } from \"../../forms/button\";\nimport { DropdownMenu } from \"../../overlays/dropdown-menu\";\nimport { Typography } from \"../../typography\";\nimport { mergeClassNames } from \"../../../utils\";\nimport { HamburgerIcon } from \"./HamburgerIcon\";\nimport { Sidebar } from \"./Sidebar\";\nimport type { SidebarItem, SidebarProps } from \"./types\";\nimport { SunToMoonButton } from \"../../effects\";\n\nexport interface DashboardHeaderRenderContext {\n isSidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n openSidebar: () => void;\n closeSidebar: () => void;\n toggleSidebar: () => void;\n direction: Exclude<SidebarProps[\"direction\"], \"auto\">;\n isRtl: boolean;\n}\n\ntype DashboardShellSlot =\n | ReactNode\n | ((context: DashboardHeaderRenderContext) => ReactNode);\n\nconst notificationItems = [\n {\n id: \"stock\",\n title: \"Low stock alert\",\n description: \"Wireless Mouse is below reorder point.\",\n time: \"4m\",\n toneClassName:\n \"bg-ds-state-warning-surface text-ds-state-warning-text border-ds-state-warning-border\",\n },\n {\n id: \"invoice\",\n title: \"Invoice paid\",\n description: \"INV-2048 was settled successfully.\",\n time: \"18m\",\n toneClassName:\n \"bg-ds-state-success-surface text-ds-state-success-text border-ds-state-success-border\",\n },\n {\n id: \"sync\",\n title: \"Catalog sync complete\",\n description: \"128 product records refreshed.\",\n time: \"42m\",\n toneClassName:\n \"bg-ds-state-info-surface text-ds-state-info-text border-ds-state-info-border\",\n },\n] as const;\n\nexport interface DashboardSidebarShellProps {\n items: readonly SidebarItem[];\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n direction?: SidebarProps[\"direction\"];\n activePath?: string;\n onItemSelect?: SidebarProps[\"onItemSelect\"];\n brand?: SidebarProps[\"brand\"];\n sidebarNavbar?: SidebarProps[\"navbar\"];\n sidebarFooter?: SidebarProps[\"footer\"];\n sidebarClassName?: SidebarProps[\"className\"];\n sidebarLinksClassName?: SidebarProps[\"linksClassName\"];\n sidebarItemClassName?: SidebarProps[\"itemClassName\"];\n sidebarActiveItemClassName?: SidebarProps[\"activeItemClassName\"];\n sidebarOverlayClassName?: SidebarProps[\"overlayClassName\"];\n sidebarCloseLabel?: SidebarProps[\"closeLabel\"];\n showSidebarOverlay?: SidebarProps[\"showOverlay\"];\n header?: DashboardShellSlot;\n headerLeading?: DashboardShellSlot;\n headerActions?: DashboardShellSlot;\n headerActionsLeading?: DashboardShellSlot;\n headerActionsTrailing?: DashboardShellSlot;\n headerClassName?: string;\n headerTitleClassName?: string;\n headerActionsClassName?: string;\n breadcrumb?: ReactNode;\n title?: ReactNode;\n children?: ReactNode;\n className?: string;\n contentClassName?: string;\n mainClassName?: string;\n autoHideOnMobileBreakpoint?: boolean;\n}\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: SidebarProps[\"direction\"],\n): Exclude<SidebarProps[\"direction\"], \"auto\"> {\n if (direction === \"rtl\" || direction === \"ltr\") {\n return direction;\n }\n\n if (typeof document !== \"undefined\") {\n const documentDirection = document.documentElement.getAttribute(\"dir\");\n if (documentDirection === \"rtl\" || documentDirection === \"ltr\") {\n return documentDirection;\n }\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction resolveSlot(\n slot: DashboardShellSlot | undefined,\n context: DashboardHeaderRenderContext,\n) {\n return typeof slot === \"function\" ? slot(context) : slot;\n}\n\nfunction useControllableOpenState(\n open: boolean | undefined,\n defaultOpen: boolean,\n onOpenChange?: (open: boolean) => void,\n) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : internalOpen;\n\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n return [resolvedOpen, setOpen] as const;\n}\n\nexport function DashboardSidebarShell({\n items,\n open,\n defaultOpen = false,\n onOpenChange,\n direction = \"auto\",\n activePath,\n onItemSelect,\n brand,\n sidebarNavbar,\n sidebarFooter,\n sidebarClassName,\n sidebarLinksClassName,\n sidebarItemClassName,\n sidebarActiveItemClassName,\n sidebarOverlayClassName,\n sidebarCloseLabel,\n showSidebarOverlay,\n header,\n headerLeading,\n headerActions,\n headerActionsLeading,\n headerActionsTrailing,\n headerClassName,\n headerTitleClassName,\n headerActionsClassName,\n breadcrumb = \"Pages / Dashboard\",\n title = \"Dashboard\",\n children,\n className,\n contentClassName,\n mainClassName,\n autoHideOnMobileBreakpoint = true,\n}: DashboardSidebarShellProps) {\n const [resolvedOpen, setOpen] = useControllableOpenState(\n open,\n defaultOpen,\n onOpenChange,\n );\n const resolvedDirection = resolveDirection(direction);\n const isRtl = resolvedDirection === \"rtl\";\n const openSidebar = useCallback(() => setOpen(true), [setOpen]);\n const closeSidebar = useCallback(() => setOpen(false), [setOpen]);\n const toggleSidebar = useCallback(\n () => setOpen(!resolvedOpen),\n [resolvedOpen, setOpen],\n );\n\n const headerContext = useMemo<DashboardHeaderRenderContext>(\n () => ({\n isSidebarOpen: resolvedOpen,\n setSidebarOpen: setOpen,\n openSidebar,\n closeSidebar,\n toggleSidebar,\n direction: resolvedDirection,\n isRtl,\n }),\n [\n closeSidebar,\n isRtl,\n openSidebar,\n resolvedDirection,\n resolvedOpen,\n setOpen,\n toggleSidebar,\n ],\n );\n\n useEffect(() => {\n if (!autoHideOnMobileBreakpoint || typeof window === \"undefined\") {\n return;\n }\n\n const mediaQuery = window.matchMedia(\"(max-width: 1279px)\");\n\n const handleMobileEnter = (event: MediaQueryListEvent | MediaQueryList) => {\n if (event.matches) {\n setOpen(false);\n }\n };\n\n // Ensure first render on smaller screens starts closed.\n handleMobileEnter(mediaQuery);\n\n const listener = (event: MediaQueryListEvent) => handleMobileEnter(event);\n mediaQuery.addEventListener(\"change\", listener);\n\n return () => mediaQuery.removeEventListener(\"change\", listener);\n }, [autoHideOnMobileBreakpoint, setOpen]);\n\n const defaultHeaderActions = useMemo(\n () => (\n <>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0! xl:hidden\"\n aria-label=\"Toggle sidebar\"\n onClick={toggleSidebar}\n >\n <HamburgerIcon isOpen={resolvedOpen} />\n </Button>\n\n <DropdownMenu\n animationClassName={isRtl ? \"origin-top-left\" : \"origin-top-right\"}\n panelClassName={mergeClassNames(\n \"top-[44px]\",\n isRtl ? \"left-0\" : \"right-0\",\n )}\n trigger={\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"relative h-9 w-9 rounded-full p-0!\"\n aria-label=\"Open notifications\"\n >\n <BellIcon className=\"h-5 w-5\" />\n <span\n className={mergeClassNames(\n \"bg-ds-state-danger text-ds-on-accent absolute -top-0.5 flex h-5 min-w-5 items-center justify-center rounded-full px-1 text-[0.68rem] font-bold\",\n isRtl ? \"-left-0.5\" : \"-right-0.5\",\n )}\n >\n {notificationItems.length}\n </span>\n </Button>\n }\n >\n <div className=\"w-[340px] rounded-lg border border-ds-border-3 bg-ds-surface-1 p-3 shadow-xl\">\n <div className=\"mb-2 flex items-center justify-between gap-3\">\n <Typography variant=\"body2\" weight=\"black\">\n Notifications\n </Typography>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"px-2 py-1 text-xs\"\n >\n Mark all read\n </Button>\n </div>\n <div className=\"space-y-2\">\n {notificationItems.map((item) => (\n <Button\n key={item.id}\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"w-full rounded-lg border border-ds-border-3 px-2.5 py-2\",\n isRtl\n ? \"justify-end text-right\"\n : \"justify-start text-left\",\n )}\n >\n <span\n className={`mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border ${item.toneClassName}`}\n >\n <BellIcon className=\"h-3.5 w-3.5\" />\n </span>\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-xs font-semibold text-ds-1\">\n {item.title}\n </span>\n <span className=\"block truncate text-[11px] text-ds-3\">\n {item.description}\n </span>\n </span>\n <span className=\"text-[11px] text-ds-3\">{item.time}</span>\n </Button>\n ))}\n </div>\n </div>\n </DropdownMenu>\n\n <SunToMoonButton showLabelAndImage={false} />\n\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0!\"\n aria-label=\"Toggle fullscreen\"\n onClick={() => {\n if (document.fullscreenElement) {\n document.exitFullscreen();\n } else {\n document.documentElement.requestFullscreen();\n }\n }}\n >\n <FullScreenIcon className=\"h-5 w-5\" />\n </Button>\n\n <DropdownMenu\n animationClassName={isRtl ? \"origin-top-left\" : \"origin-top-right\"}\n panelClassName={mergeClassNames(\n \"top-[44px]\",\n isRtl ? \"left-0\" : \"right-0\",\n )}\n trigger={\n <Button\n type=\"button\"\n variant=\"primary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0! text-sm font-black\"\n aria-label=\"Open user menu\"\n >\n JD\n </Button>\n }\n >\n <div className=\"w-52 rounded-lg border border-ds-border-3 bg-ds-surface-1 p-3 shadow-xl\">\n <div className=\"mb-2 flex items-center gap-2\">\n <span className=\"bg-ds-accent text-ds-on-accent inline-flex h-8 w-8 items-center justify-center rounded-full text-xs font-black\">\n JD\n </span>\n <div className=\"min-w-0\">\n <Typography variant=\"body2\" weight=\"black\" className=\"truncate\">\n John Doe\n </Typography>\n <Typography variant=\"caption\" className=\"text-ds-3\">\n Administrator\n </Typography>\n </div>\n </div>\n <div className=\"my-2 border-t border-ds-border-3\" />\n <div className=\"flex flex-col gap-1\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Profile\n </Button>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Settings\n </Button>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm text-ds-state-error-text\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Log Out\n </Button>\n </div>\n </div>\n </DropdownMenu>\n </>\n ),\n [isRtl, resolvedOpen, toggleSidebar],\n );\n\n const resolvedHeaderLeading = resolveSlot(headerLeading, headerContext);\n const resolvedHeaderActionsLeading = headerActionsLeading\n ? resolveSlot(headerActionsLeading, headerContext)\n : null;\n const resolvedHeaderActionsTrailing = headerActionsTrailing\n ? resolveSlot(headerActionsTrailing, headerContext)\n : null;\n const resolvedHeaderActions =\n headerActions === undefined ? (\n <>\n {resolvedHeaderActionsLeading}\n {defaultHeaderActions}\n {resolvedHeaderActionsTrailing}\n </>\n ) : (\n resolveSlot(headerActions, headerContext)\n );\n\n const defaultHeader = useMemo(\n () => (\n <nav\n dir={resolvedDirection}\n className={mergeClassNames(\n \"sticky top-2 z-40 mb-4 flex items-center rounded-md border border-ds-border-3 bg-ds-surface-1/95 px-4 py-3 shadow-[0_4px_14px_color-mix(in_srgb,var(--ds-color-fg)_8%,transparent)] backdrop-blur-md\",\n headerClassName,\n )}\n >\n <div\n className={mergeClassNames(\n \"flex w-full justify-between gap-4\",\n isRtl && \"flex-row-reverse\",\n )}\n >\n <div\n className={mergeClassNames(\n \"flex min-w-0 items-center gap-3\",\n isRtl && \"flex-row-reverse text-right\",\n headerTitleClassName,\n )}\n >\n {resolvedHeaderLeading}\n <div className=\"min-w-0\">\n <Typography variant=\"caption\" className=\"text-ds-3 capitalize\">\n {breadcrumb}\n </Typography>\n <Typography\n variant=\"h5\"\n weight=\"black\"\n className=\"truncate leading-7 capitalize\"\n >\n {title}\n </Typography>\n </div>\n </div>\n\n <div\n className={mergeClassNames(\n \"border-ds-border-4 flex min-h-11 shrink-0 items-center gap-1 rounded-full border bg-ds-surface-1 px-2 py-1 shadow-[0_2px_8px_color-mix(in_srgb,var(--ds-color-fg)_6%,transparent)]\",\n isRtl && \"flex-row-reverse\",\n headerActionsClassName,\n )}\n >\n {resolvedHeaderActions}\n </div>\n </div>\n </nav>\n ),\n [\n breadcrumb,\n headerActionsClassName,\n headerClassName,\n headerTitleClassName,\n isRtl,\n resolvedDirection,\n resolvedHeaderActions,\n resolvedHeaderLeading,\n title,\n ],\n );\n\n const resolvedHeader =\n header === undefined ? undefined : resolveSlot(header, headerContext);\n\n return (\n <div\n dir={resolvedDirection}\n className={mergeClassNames(\"flex h-full w-full\", className)}\n >\n <Sidebar\n items={items}\n open={resolvedOpen}\n onOpenChange={setOpen}\n activePath={activePath}\n onItemSelect={onItemSelect}\n direction={direction}\n navbar={sidebarNavbar}\n brand={brand}\n footer={sidebarFooter}\n className={sidebarClassName}\n linksClassName={sidebarLinksClassName}\n itemClassName={sidebarItemClassName}\n activeItemClassName={sidebarActiveItemClassName}\n overlayClassName={sidebarOverlayClassName}\n closeLabel={sidebarCloseLabel}\n showOverlay={showSidebarOverlay}\n />\n\n <div className=\"h-full w-full\">\n <main\n className={mergeClassNames(\n \"mx-2 flex-none transition-all duration-200 ease-in-out\",\n isRtl ? \"xl:mr-[18.5rem]\" : \"xl:ml-[18.5rem]\",\n mainClassName,\n )}\n >\n {resolvedHeader ?? defaultHeader}\n\n <section\n className={mergeClassNames(\n \"mx-auto min-h-[calc(100dvh-180px)] rounded-md md:min-h-[calc(100dvh-116px)]\",\n contentClassName,\n )}\n >\n {children}\n </section>\n </main>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { n as mergeClassNames } from "./utils-7S0u48mU.mjs";
2
- import { S as BellIcon, x as FullScreenIcon } from "./icons-bx3nrxNv.mjs";
3
- import { t as Button } from "./button-A6UTvrOu.mjs";
4
- import { t as DropdownMenu } from "./DropdownMenu-BtTOri-A.mjs";
5
- import { t as Typography } from "./typography-Ct-jDJP3.mjs";
6
- import { t as SunToMoonButton } from "./SunToMoonButton-BkEfkElJ.mjs";
2
+ import { S as BellIcon, x as FullScreenIcon } from "./icons-JzMKLygv.mjs";
3
+ import { t as Button } from "./button-IDShmQqA.mjs";
4
+ import { t as DropdownMenu } from "./DropdownMenu-BQ4WlaGp.mjs";
5
+ import { t as Typography } from "./typography-DHE9sUZ8.mjs";
6
+ import { t as SunToMoonButton } from "./SunToMoonButton-BOKHzC1H.mjs";
7
7
  import { useCallback, useEffect, useMemo, useState } from "react";
8
8
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/components/navigation/sidebar/HamburgerIcon.tsx
@@ -513,4 +513,4 @@ function DashboardSidebarShell({ items, open, defaultOpen = false, onOpenChange,
513
513
  //#endregion
514
514
  export { HamburgerIcon as a, NavLink as i, Sidebar as n, SidebarLinks as r, DashboardSidebarShell as t };
515
515
 
516
- //# sourceMappingURL=sidebar-Dhf_Arae.mjs.map
516
+ //# sourceMappingURL=sidebar-oemmRzCL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-Dhf_Arae.mjs","names":[],"sources":["../../src/components/navigation/sidebar/HamburgerIcon.tsx","../../src/components/navigation/sidebar/NavLink.tsx","../../src/components/navigation/sidebar/SidebarLinks.tsx","../../src/components/navigation/sidebar/Sidebar.tsx","../../src/components/navigation/sidebar/DashboardSidebarShell.tsx"],"sourcesContent":["import { mergeClassNames } from \"../../../utils\";\n\nexport interface HamburgerIconProps {\n isOpen: boolean;\n className?: string;\n}\n\nconst lineClassName =\n \"block h-0.5 w-full rounded-lg bg-current transition-all duration-300 ease-in-out\";\n\nexport function HamburgerIcon({ isOpen, className }: HamburgerIconProps) {\n return (\n <span\n className={mergeClassNames(\n \"relative flex h-4 w-5 flex-col items-center justify-between\",\n className,\n )}\n aria-hidden=\"true\"\n >\n <span\n className={mergeClassNames(\n lineClassName,\n isOpen && \"translate-y-[5px] rotate-45 transform\",\n )}\n />\n <span className={mergeClassNames(lineClassName, isOpen && \"w-0\")} />\n <span\n className={mergeClassNames(\n lineClassName,\n isOpen && \"-translate-y-[9px] -rotate-45 transform\",\n )}\n />\n </span>\n );\n}\n","import { useMemo } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport type { SidebarNavLinkProps } from \"./types\";\n\nexport function NavLink({\n className,\n children,\n style,\n borderRadius,\n disabled = false,\n href,\n target,\n rel,\n onClick,\n}: SidebarNavLinkProps) {\n const memoizedStyle = useMemo(\n () => (borderRadius !== undefined ? { ...style, borderRadius } : style),\n [borderRadius, style],\n );\n\n if (href) {\n const resolvedRel = target === \"_blank\" ? (rel ?? \"noreferrer noopener\") : rel;\n\n return (\n <a\n href={href}\n className={className}\n style={memoizedStyle}\n target={target}\n rel={resolvedRel}\n aria-disabled={disabled}\n onClick={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n }}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Button\n type=\"button\"\n variant=\"tertiary\"\n className={className}\n style={memoizedStyle}\n disabled={disabled}\n onClick={onClick}\n >\n {children}\n </Button>\n );\n}\n","import { mergeClassNames } from \"../../../utils\";\nimport { NavLink } from \"./NavLink\";\nimport type { SidebarDirection, SidebarItem, SidebarLinksProps } from \"./types\";\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: SidebarDirection,\n): Exclude<SidebarDirection, \"auto\"> {\n if (direction !== \"auto\") {\n return direction;\n }\n\n if (typeof document === \"undefined\") {\n return \"ltr\";\n }\n\n const explicitDirection =\n document.documentElement.getAttribute(\"dir\") ?? undefined;\n\n if (explicitDirection === \"rtl\" || explicitDirection === \"ltr\") {\n return explicitDirection;\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction isRouteActive(item: SidebarItem, activePath?: string): boolean {\n if (typeof item.active === \"boolean\") {\n return item.active;\n }\n\n if (!activePath || !item.href) {\n return false;\n }\n\n return activePath === item.href || activePath.startsWith(`${item.href}/`);\n}\n\nexport function SidebarLinks({\n items,\n activePath,\n onItemSelect,\n direction = \"auto\",\n className,\n itemClassName,\n activeItemClassName,\n}: SidebarLinksProps) {\n const effectiveDirection = resolveDirection(direction);\n const visibleItems = items.filter((item) => !item.hidden);\n\n return (\n <ul className={mergeClassNames(\"space-y-1.5\", className)}>\n {visibleItems.map((item) => {\n const active = isRouteActive(item, activePath);\n\n return (\n <li key={item.id} className=\"relative\">\n <NavLink\n href={item.href}\n disabled={item.disabled}\n className={mergeClassNames(\n \"group relative flex w-full items-center gap-2.5 rounded-md border px-3 py-2.5 transition-all duration-200\",\n effectiveDirection === \"rtl\" ? \"text-right\" : \"text-left\",\n \"border-transparent text-ds-2 hover:border-ds-border-3 hover:bg-ds-surface-2/80 hover:text-ds-1\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ds-focus/60 focus-visible:ring-offset-2 focus-visible:ring-offset-ds-canvas\",\n item.disabled && \"cursor-not-allowed opacity-50\",\n active &&\n \"border-ds-border-accent/35 bg-ds-accent-subtle text-ds-1 shadow-[0_4px_12px_color-mix(in_srgb,var(--ds-color-fg)_8%,transparent)]\",\n active && activeItemClassName,\n itemClassName,\n )}\n onClick={(event) => {\n item.onSelect?.(event);\n onItemSelect?.(item, event);\n if (onItemSelect) {\n event.preventDefault();\n }\n }}\n >\n <span\n className={mergeClassNames(\n \"inline-flex h-5 w-5 shrink-0 items-center justify-center\",\n active ? \"text-ds-1\" : \"text-ds-2 group-hover:text-ds-1\",\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n <span className=\"min-w-0 flex-1 truncate text-sm font-medium\">\n {item.label}\n </span>\n {item.badge ? (\n <span className=\"shrink-0 text-xs text-ds-2\">{item.badge}</span>\n ) : null}\n </NavLink>\n {active ? (\n <span\n className={mergeClassNames(\n \"pointer-events-none absolute top-1.5 h-[calc(100%-12px)] w-2\",\n effectiveDirection === \"rtl\" ? \"right-0\" : \"left-0\",\n )}\n aria-hidden=\"true\"\n >\n {/* <span className=\"absolute inset-y-1 left-1/2 w-2 -translate-x-1/2 rounded-full bg-ds-accent/25 blur-[4px]\" /> */}\n {/* <span className=\"absolute inset-y-0 left-1/6 w-[2px] -translate-x-1/2 rounded-full bg-ds-accent motion-safe:animate-pulse\" /> */}\n {/* <span className=\"absolute top-2.5 left-1/2 h-2 w-2 -translate-x-1/2 rounded-full bg-ds-accent shadow-[0_0_10px_color-mix(in_srgb,var(--ds-color-accent)_55%,transparent)] motion-safe:animate-pulse\" /> */}\n </span>\n ) : null}\n </li>\n );\n })}\n </ul>\n );\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { mergeClassNames } from \"../../../utils\";\nimport { HamburgerIcon } from \"./HamburgerIcon\";\nimport { SidebarLinks } from \"./SidebarLinks\";\nimport type { SidebarProps } from \"./types\";\n\nfunction useControllableOpenState(\n open: boolean | undefined,\n defaultOpen: boolean,\n onOpenChange?: (open: boolean) => void,\n) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : internalOpen;\n\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n return [resolvedOpen, setOpen] as const;\n}\n\nconst fallbackBrand = (\n <div className=\"text-xl font-bold uppercase tracking-wide text-ds-1\">\n <span className=\"text-ds-accent\">ERP</span>\n <span className=\"font-medium\">PRO</span>\n </div>\n);\n\nexport function Sidebar({\n items,\n open,\n defaultOpen = false,\n onOpenChange,\n activePath,\n onItemSelect,\n direction = \"auto\",\n navbar,\n brand = fallbackBrand,\n footer,\n className,\n linksClassName,\n itemClassName,\n activeItemClassName,\n overlayClassName,\n closeLabel = \"Toggle sidebar\",\n showOverlay = true,\n}: SidebarProps) {\n const [resolvedOpen, setOpen] = useControllableOpenState(\n open,\n defaultOpen,\n onOpenChange,\n );\n\n const content = useMemo(\n () => (\n <aside\n dir={direction === \"auto\" ? undefined : direction}\n className={mergeClassNames(\n \"fixed inset-y-2 z-70 flex w-72 flex-col rounded-xl border border-ds-border-3 bg-ds-surface-1/92 p-3 shadow-[0_10px_28px_color-mix(in_srgb,var(--ds-color-fg)_9%,transparent)] backdrop-blur-xl\",\n \"transition-transform duration-200 ease-out xl:translate-x-0\",\n direction === \"rtl\" ? \"right-2\" : \"left-2\",\n resolvedOpen\n ? \"translate-x-0\"\n : direction === \"rtl\"\n ? \"translate-x-[110%] xl:translate-x-0\"\n : \"-translate-x-[110%] xl:translate-x-0\",\n className,\n )}\n style={{\n backdropFilter: \"blur(14px) saturate(120%)\",\n WebkitBackdropFilter: \"blur(14px) saturate(120%)\",\n }}\n >\n {navbar ? (\n <div className=\"mb-4\">{navbar}</div>\n ) : (\n <div className=\"mb-4 flex items-center justify-between gap-3 rounded-xl border border-ds-border-3 bg-ds-surface-2/85 px-3 py-2\">\n <div className=\"min-w-0 flex-1\">{brand}</div>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n aria-label={closeLabel}\n className={mergeClassNames(\n \"p-1! text-ds-2 transition-colors hover:bg-ds-surface-2 hover:text-ds-1\",\n \"xl:hidden\",\n )}\n onClick={() => setOpen(!resolvedOpen)}\n >\n <HamburgerIcon isOpen={resolvedOpen} />\n </Button>\n </div>\n )}\n\n <div className=\"mb-5 h-px bg-ds-border-3\" />\n\n <div className=\"min-h-0 flex-1 overflow-y-auto pr-1\">\n <SidebarLinks\n items={items}\n activePath={activePath}\n onItemSelect={onItemSelect}\n direction={direction}\n className={linksClassName}\n itemClassName={itemClassName}\n activeItemClassName={activeItemClassName}\n />\n </div>\n\n {footer ? <div className=\"mt-4\">{footer}</div> : null}\n </aside>\n ),\n [\n activeItemClassName,\n activePath,\n brand,\n className,\n closeLabel,\n direction,\n footer,\n itemClassName,\n items,\n linksClassName,\n onItemSelect,\n resolvedOpen,\n setOpen,\n ],\n );\n\n if (!showOverlay) {\n return content;\n }\n\n return (\n <>\n {content}\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n aria-hidden={!resolvedOpen}\n tabIndex={resolvedOpen ? 0 : -1}\n className={mergeClassNames(\n \"fixed inset-0 z-65 p-0! bg-black/30 backdrop-blur-[2px] transition-opacity duration-200 xl:hidden\",\n resolvedOpen\n ? \"pointer-events-auto opacity-100\"\n : \"pointer-events-none opacity-0\",\n overlayClassName,\n )}\n onClick={() => setOpen(false)}\n />\n </>\n );\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport { BellIcon, FullScreenIcon } from \"../../icons\";\nimport { Button } from \"../../forms/button\";\nimport { DropdownMenu } from \"../../overlays/dropdown-menu\";\nimport { Typography } from \"../../typography\";\nimport { mergeClassNames } from \"../../../utils\";\nimport { HamburgerIcon } from \"./HamburgerIcon\";\nimport { Sidebar } from \"./Sidebar\";\nimport type { SidebarItem, SidebarProps } from \"./types\";\nimport { SunToMoonButton } from \"../../effects\";\n\nexport interface DashboardHeaderRenderContext {\n isSidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n openSidebar: () => void;\n closeSidebar: () => void;\n toggleSidebar: () => void;\n direction: Exclude<SidebarProps[\"direction\"], \"auto\">;\n isRtl: boolean;\n}\n\ntype DashboardShellSlot =\n | ReactNode\n | ((context: DashboardHeaderRenderContext) => ReactNode);\n\nconst notificationItems = [\n {\n id: \"stock\",\n title: \"Low stock alert\",\n description: \"Wireless Mouse is below reorder point.\",\n time: \"4m\",\n toneClassName:\n \"bg-ds-state-warning-surface text-ds-state-warning-text border-ds-state-warning-border\",\n },\n {\n id: \"invoice\",\n title: \"Invoice paid\",\n description: \"INV-2048 was settled successfully.\",\n time: \"18m\",\n toneClassName:\n \"bg-ds-state-success-surface text-ds-state-success-text border-ds-state-success-border\",\n },\n {\n id: \"sync\",\n title: \"Catalog sync complete\",\n description: \"128 product records refreshed.\",\n time: \"42m\",\n toneClassName:\n \"bg-ds-state-info-surface text-ds-state-info-text border-ds-state-info-border\",\n },\n] as const;\n\nexport interface DashboardSidebarShellProps {\n items: readonly SidebarItem[];\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n direction?: SidebarProps[\"direction\"];\n activePath?: string;\n onItemSelect?: SidebarProps[\"onItemSelect\"];\n brand?: SidebarProps[\"brand\"];\n sidebarNavbar?: SidebarProps[\"navbar\"];\n sidebarFooter?: SidebarProps[\"footer\"];\n sidebarClassName?: SidebarProps[\"className\"];\n sidebarLinksClassName?: SidebarProps[\"linksClassName\"];\n sidebarItemClassName?: SidebarProps[\"itemClassName\"];\n sidebarActiveItemClassName?: SidebarProps[\"activeItemClassName\"];\n sidebarOverlayClassName?: SidebarProps[\"overlayClassName\"];\n sidebarCloseLabel?: SidebarProps[\"closeLabel\"];\n showSidebarOverlay?: SidebarProps[\"showOverlay\"];\n header?: DashboardShellSlot;\n headerLeading?: DashboardShellSlot;\n headerActions?: DashboardShellSlot;\n headerActionsLeading?: DashboardShellSlot;\n headerActionsTrailing?: DashboardShellSlot;\n headerClassName?: string;\n headerTitleClassName?: string;\n headerActionsClassName?: string;\n breadcrumb?: ReactNode;\n title?: ReactNode;\n children?: ReactNode;\n className?: string;\n contentClassName?: string;\n mainClassName?: string;\n autoHideOnMobileBreakpoint?: boolean;\n}\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: SidebarProps[\"direction\"],\n): Exclude<SidebarProps[\"direction\"], \"auto\"> {\n if (direction === \"rtl\" || direction === \"ltr\") {\n return direction;\n }\n\n if (typeof document !== \"undefined\") {\n const documentDirection = document.documentElement.getAttribute(\"dir\");\n if (documentDirection === \"rtl\" || documentDirection === \"ltr\") {\n return documentDirection;\n }\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction resolveSlot(\n slot: DashboardShellSlot | undefined,\n context: DashboardHeaderRenderContext,\n) {\n return typeof slot === \"function\" ? slot(context) : slot;\n}\n\nfunction useControllableOpenState(\n open: boolean | undefined,\n defaultOpen: boolean,\n onOpenChange?: (open: boolean) => void,\n) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : internalOpen;\n\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n return [resolvedOpen, setOpen] as const;\n}\n\nexport function DashboardSidebarShell({\n items,\n open,\n defaultOpen = false,\n onOpenChange,\n direction = \"auto\",\n activePath,\n onItemSelect,\n brand,\n sidebarNavbar,\n sidebarFooter,\n sidebarClassName,\n sidebarLinksClassName,\n sidebarItemClassName,\n sidebarActiveItemClassName,\n sidebarOverlayClassName,\n sidebarCloseLabel,\n showSidebarOverlay,\n header,\n headerLeading,\n headerActions,\n headerActionsLeading,\n headerActionsTrailing,\n headerClassName,\n headerTitleClassName,\n headerActionsClassName,\n breadcrumb = \"Pages / Dashboard\",\n title = \"Dashboard\",\n children,\n className,\n contentClassName,\n mainClassName,\n autoHideOnMobileBreakpoint = true,\n}: DashboardSidebarShellProps) {\n const [resolvedOpen, setOpen] = useControllableOpenState(\n open,\n defaultOpen,\n onOpenChange,\n );\n const resolvedDirection = resolveDirection(direction);\n const isRtl = resolvedDirection === \"rtl\";\n const openSidebar = useCallback(() => setOpen(true), [setOpen]);\n const closeSidebar = useCallback(() => setOpen(false), [setOpen]);\n const toggleSidebar = useCallback(\n () => setOpen(!resolvedOpen),\n [resolvedOpen, setOpen],\n );\n\n const headerContext = useMemo<DashboardHeaderRenderContext>(\n () => ({\n isSidebarOpen: resolvedOpen,\n setSidebarOpen: setOpen,\n openSidebar,\n closeSidebar,\n toggleSidebar,\n direction: resolvedDirection,\n isRtl,\n }),\n [\n closeSidebar,\n isRtl,\n openSidebar,\n resolvedDirection,\n resolvedOpen,\n setOpen,\n toggleSidebar,\n ],\n );\n\n useEffect(() => {\n if (!autoHideOnMobileBreakpoint || typeof window === \"undefined\") {\n return;\n }\n\n const mediaQuery = window.matchMedia(\"(max-width: 1279px)\");\n\n const handleMobileEnter = (event: MediaQueryListEvent | MediaQueryList) => {\n if (event.matches) {\n setOpen(false);\n }\n };\n\n // Ensure first render on smaller screens starts closed.\n handleMobileEnter(mediaQuery);\n\n const listener = (event: MediaQueryListEvent) => handleMobileEnter(event);\n mediaQuery.addEventListener(\"change\", listener);\n\n return () => mediaQuery.removeEventListener(\"change\", listener);\n }, [autoHideOnMobileBreakpoint, setOpen]);\n\n const defaultHeaderActions = useMemo(\n () => (\n <>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0! xl:hidden\"\n aria-label=\"Toggle sidebar\"\n onClick={toggleSidebar}\n >\n <HamburgerIcon isOpen={resolvedOpen} />\n </Button>\n\n <DropdownMenu\n animationClassName={isRtl ? \"origin-top-left\" : \"origin-top-right\"}\n panelClassName={mergeClassNames(\n \"top-[44px]\",\n isRtl ? \"left-0\" : \"right-0\",\n )}\n trigger={\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"relative h-9 w-9 rounded-full p-0!\"\n aria-label=\"Open notifications\"\n >\n <BellIcon className=\"h-5 w-5\" />\n <span\n className={mergeClassNames(\n \"bg-ds-state-danger text-ds-on-accent absolute -top-0.5 flex h-5 min-w-5 items-center justify-center rounded-full px-1 text-[0.68rem] font-bold\",\n isRtl ? \"-left-0.5\" : \"-right-0.5\",\n )}\n >\n {notificationItems.length}\n </span>\n </Button>\n }\n >\n <div className=\"w-[340px] rounded-lg border border-ds-border-3 bg-ds-surface-1 p-3 shadow-xl\">\n <div className=\"mb-2 flex items-center justify-between gap-3\">\n <Typography variant=\"body2\" weight=\"black\">\n Notifications\n </Typography>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"px-2 py-1 text-xs\"\n >\n Mark all read\n </Button>\n </div>\n <div className=\"space-y-2\">\n {notificationItems.map((item) => (\n <Button\n key={item.id}\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"w-full rounded-lg border border-ds-border-3 px-2.5 py-2\",\n isRtl\n ? \"justify-end text-right\"\n : \"justify-start text-left\",\n )}\n >\n <span\n className={`mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border ${item.toneClassName}`}\n >\n <BellIcon className=\"h-3.5 w-3.5\" />\n </span>\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-xs font-semibold text-ds-1\">\n {item.title}\n </span>\n <span className=\"block truncate text-[11px] text-ds-3\">\n {item.description}\n </span>\n </span>\n <span className=\"text-[11px] text-ds-3\">{item.time}</span>\n </Button>\n ))}\n </div>\n </div>\n </DropdownMenu>\n\n <SunToMoonButton showLabelAndImage={false} />\n\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0!\"\n aria-label=\"Toggle fullscreen\"\n onClick={() => {\n if (document.fullscreenElement) {\n document.exitFullscreen();\n } else {\n document.documentElement.requestFullscreen();\n }\n }}\n >\n <FullScreenIcon className=\"h-5 w-5\" />\n </Button>\n\n <DropdownMenu\n animationClassName={isRtl ? \"origin-top-left\" : \"origin-top-right\"}\n panelClassName={mergeClassNames(\n \"top-[44px]\",\n isRtl ? \"left-0\" : \"right-0\",\n )}\n trigger={\n <Button\n type=\"button\"\n variant=\"primary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0! text-sm font-black\"\n aria-label=\"Open user menu\"\n >\n JD\n </Button>\n }\n >\n <div className=\"w-52 rounded-lg border border-ds-border-3 bg-ds-surface-1 p-3 shadow-xl\">\n <div className=\"mb-2 flex items-center gap-2\">\n <span className=\"bg-ds-accent text-ds-on-accent inline-flex h-8 w-8 items-center justify-center rounded-full text-xs font-black\">\n JD\n </span>\n <div className=\"min-w-0\">\n <Typography variant=\"body2\" weight=\"black\" className=\"truncate\">\n John Doe\n </Typography>\n <Typography variant=\"caption\" className=\"text-ds-3\">\n Administrator\n </Typography>\n </div>\n </div>\n <div className=\"my-2 border-t border-ds-border-3\" />\n <div className=\"flex flex-col gap-1\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Profile\n </Button>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Settings\n </Button>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm text-ds-state-error-text\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Log Out\n </Button>\n </div>\n </div>\n </DropdownMenu>\n </>\n ),\n [isRtl, resolvedOpen, toggleSidebar],\n );\n\n const resolvedHeaderLeading = resolveSlot(headerLeading, headerContext);\n const resolvedHeaderActionsLeading = headerActionsLeading\n ? resolveSlot(headerActionsLeading, headerContext)\n : null;\n const resolvedHeaderActionsTrailing = headerActionsTrailing\n ? resolveSlot(headerActionsTrailing, headerContext)\n : null;\n const resolvedHeaderActions =\n headerActions === undefined ? (\n <>\n {resolvedHeaderActionsLeading}\n {defaultHeaderActions}\n {resolvedHeaderActionsTrailing}\n </>\n ) : (\n resolveSlot(headerActions, headerContext)\n );\n\n const defaultHeader = useMemo(\n () => (\n <nav\n dir={resolvedDirection}\n className={mergeClassNames(\n \"sticky top-2 z-40 mb-4 flex items-center rounded-md border border-ds-border-3 bg-ds-surface-1/95 px-4 py-3 shadow-[0_4px_14px_color-mix(in_srgb,var(--ds-color-fg)_8%,transparent)] backdrop-blur-md\",\n headerClassName,\n )}\n >\n <div\n className={mergeClassNames(\n \"flex w-full justify-between gap-4\",\n isRtl && \"flex-row-reverse\",\n )}\n >\n <div\n className={mergeClassNames(\n \"flex min-w-0 items-center gap-3\",\n isRtl && \"flex-row-reverse text-right\",\n headerTitleClassName,\n )}\n >\n {resolvedHeaderLeading}\n <div className=\"min-w-0\">\n <Typography variant=\"caption\" className=\"text-ds-3 capitalize\">\n {breadcrumb}\n </Typography>\n <Typography\n variant=\"h5\"\n weight=\"black\"\n className=\"truncate leading-7 capitalize\"\n >\n {title}\n </Typography>\n </div>\n </div>\n\n <div\n className={mergeClassNames(\n \"border-ds-border-4 flex min-h-11 shrink-0 items-center gap-1 rounded-full border bg-ds-surface-1 px-2 py-1 shadow-[0_2px_8px_color-mix(in_srgb,var(--ds-color-fg)_6%,transparent)]\",\n isRtl && \"flex-row-reverse\",\n headerActionsClassName,\n )}\n >\n {resolvedHeaderActions}\n </div>\n </div>\n </nav>\n ),\n [\n breadcrumb,\n headerActionsClassName,\n headerClassName,\n headerTitleClassName,\n isRtl,\n resolvedDirection,\n resolvedHeaderActions,\n resolvedHeaderLeading,\n title,\n ],\n );\n\n const resolvedHeader =\n header === undefined ? undefined : resolveSlot(header, headerContext);\n\n return (\n <div\n dir={resolvedDirection}\n className={mergeClassNames(\"flex h-full w-full\", className)}\n >\n <Sidebar\n items={items}\n open={resolvedOpen}\n onOpenChange={setOpen}\n activePath={activePath}\n onItemSelect={onItemSelect}\n direction={direction}\n navbar={sidebarNavbar}\n brand={brand}\n footer={sidebarFooter}\n className={sidebarClassName}\n linksClassName={sidebarLinksClassName}\n itemClassName={sidebarItemClassName}\n activeItemClassName={sidebarActiveItemClassName}\n overlayClassName={sidebarOverlayClassName}\n closeLabel={sidebarCloseLabel}\n showOverlay={showSidebarOverlay}\n />\n\n <div className=\"h-full w-full\">\n <main\n className={mergeClassNames(\n \"mx-2 flex-none transition-all duration-200 ease-in-out\",\n isRtl ? \"xl:mr-[18.5rem]\" : \"xl:ml-[18.5rem]\",\n mainClassName,\n )}\n >\n {resolvedHeader ?? defaultHeader}\n\n <section\n className={mergeClassNames(\n \"mx-auto min-h-[calc(100dvh-180px)] rounded-md md:min-h-[calc(100dvh-116px)]\",\n contentClassName,\n )}\n >\n {children}\n </section>\n </main>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-oemmRzCL.mjs","names":[],"sources":["../../src/components/navigation/sidebar/HamburgerIcon.tsx","../../src/components/navigation/sidebar/NavLink.tsx","../../src/components/navigation/sidebar/SidebarLinks.tsx","../../src/components/navigation/sidebar/Sidebar.tsx","../../src/components/navigation/sidebar/DashboardSidebarShell.tsx"],"sourcesContent":["import { mergeClassNames } from \"../../../utils\";\n\nexport interface HamburgerIconProps {\n isOpen: boolean;\n className?: string;\n}\n\nconst lineClassName =\n \"block h-0.5 w-full rounded-lg bg-current transition-all duration-300 ease-in-out\";\n\nexport function HamburgerIcon({ isOpen, className }: HamburgerIconProps) {\n return (\n <span\n className={mergeClassNames(\n \"relative flex h-4 w-5 flex-col items-center justify-between\",\n className,\n )}\n aria-hidden=\"true\"\n >\n <span\n className={mergeClassNames(\n lineClassName,\n isOpen && \"translate-y-[5px] rotate-45 transform\",\n )}\n />\n <span className={mergeClassNames(lineClassName, isOpen && \"w-0\")} />\n <span\n className={mergeClassNames(\n lineClassName,\n isOpen && \"-translate-y-[9px] -rotate-45 transform\",\n )}\n />\n </span>\n );\n}\n","import { useMemo } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport type { SidebarNavLinkProps } from \"./types\";\n\nexport function NavLink({\n className,\n children,\n style,\n borderRadius,\n disabled = false,\n href,\n target,\n rel,\n onClick,\n}: SidebarNavLinkProps) {\n const memoizedStyle = useMemo(\n () => (borderRadius !== undefined ? { ...style, borderRadius } : style),\n [borderRadius, style],\n );\n\n if (href) {\n const resolvedRel = target === \"_blank\" ? (rel ?? \"noreferrer noopener\") : rel;\n\n return (\n <a\n href={href}\n className={className}\n style={memoizedStyle}\n target={target}\n rel={resolvedRel}\n aria-disabled={disabled}\n onClick={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n }}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Button\n type=\"button\"\n variant=\"tertiary\"\n className={className}\n style={memoizedStyle}\n disabled={disabled}\n onClick={onClick}\n >\n {children}\n </Button>\n );\n}\n","import { mergeClassNames } from \"../../../utils\";\nimport { NavLink } from \"./NavLink\";\nimport type { SidebarDirection, SidebarItem, SidebarLinksProps } from \"./types\";\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: SidebarDirection,\n): Exclude<SidebarDirection, \"auto\"> {\n if (direction !== \"auto\") {\n return direction;\n }\n\n if (typeof document === \"undefined\") {\n return \"ltr\";\n }\n\n const explicitDirection =\n document.documentElement.getAttribute(\"dir\") ?? undefined;\n\n if (explicitDirection === \"rtl\" || explicitDirection === \"ltr\") {\n return explicitDirection;\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction isRouteActive(item: SidebarItem, activePath?: string): boolean {\n if (typeof item.active === \"boolean\") {\n return item.active;\n }\n\n if (!activePath || !item.href) {\n return false;\n }\n\n return activePath === item.href || activePath.startsWith(`${item.href}/`);\n}\n\nexport function SidebarLinks({\n items,\n activePath,\n onItemSelect,\n direction = \"auto\",\n className,\n itemClassName,\n activeItemClassName,\n}: SidebarLinksProps) {\n const effectiveDirection = resolveDirection(direction);\n const visibleItems = items.filter((item) => !item.hidden);\n\n return (\n <ul className={mergeClassNames(\"space-y-1.5\", className)}>\n {visibleItems.map((item) => {\n const active = isRouteActive(item, activePath);\n\n return (\n <li key={item.id} className=\"relative\">\n <NavLink\n href={item.href}\n disabled={item.disabled}\n className={mergeClassNames(\n \"group relative flex w-full items-center gap-2.5 rounded-md border px-3 py-2.5 transition-all duration-200\",\n effectiveDirection === \"rtl\" ? \"text-right\" : \"text-left\",\n \"border-transparent text-ds-2 hover:border-ds-border-3 hover:bg-ds-surface-2/80 hover:text-ds-1\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ds-focus/60 focus-visible:ring-offset-2 focus-visible:ring-offset-ds-canvas\",\n item.disabled && \"cursor-not-allowed opacity-50\",\n active &&\n \"border-ds-border-accent/35 bg-ds-accent-subtle text-ds-1 shadow-[0_4px_12px_color-mix(in_srgb,var(--ds-color-fg)_8%,transparent)]\",\n active && activeItemClassName,\n itemClassName,\n )}\n onClick={(event) => {\n item.onSelect?.(event);\n onItemSelect?.(item, event);\n if (onItemSelect) {\n event.preventDefault();\n }\n }}\n >\n <span\n className={mergeClassNames(\n \"inline-flex h-5 w-5 shrink-0 items-center justify-center\",\n active ? \"text-ds-1\" : \"text-ds-2 group-hover:text-ds-1\",\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n <span className=\"min-w-0 flex-1 truncate text-sm font-medium\">\n {item.label}\n </span>\n {item.badge ? (\n <span className=\"shrink-0 text-xs text-ds-2\">{item.badge}</span>\n ) : null}\n </NavLink>\n {active ? (\n <span\n className={mergeClassNames(\n \"pointer-events-none absolute top-1.5 h-[calc(100%-12px)] w-2\",\n effectiveDirection === \"rtl\" ? \"right-0\" : \"left-0\",\n )}\n aria-hidden=\"true\"\n >\n {/* <span className=\"absolute inset-y-1 left-1/2 w-2 -translate-x-1/2 rounded-full bg-ds-accent/25 blur-[4px]\" /> */}\n {/* <span className=\"absolute inset-y-0 left-1/6 w-[2px] -translate-x-1/2 rounded-full bg-ds-accent motion-safe:animate-pulse\" /> */}\n {/* <span className=\"absolute top-2.5 left-1/2 h-2 w-2 -translate-x-1/2 rounded-full bg-ds-accent shadow-[0_0_10px_color-mix(in_srgb,var(--ds-color-accent)_55%,transparent)] motion-safe:animate-pulse\" /> */}\n </span>\n ) : null}\n </li>\n );\n })}\n </ul>\n );\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport { Button } from \"../../forms/button\";\nimport { mergeClassNames } from \"../../../utils\";\nimport { HamburgerIcon } from \"./HamburgerIcon\";\nimport { SidebarLinks } from \"./SidebarLinks\";\nimport type { SidebarProps } from \"./types\";\n\nfunction useControllableOpenState(\n open: boolean | undefined,\n defaultOpen: boolean,\n onOpenChange?: (open: boolean) => void,\n) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : internalOpen;\n\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n return [resolvedOpen, setOpen] as const;\n}\n\nconst fallbackBrand = (\n <div className=\"text-xl font-bold uppercase tracking-wide text-ds-1\">\n <span className=\"text-ds-accent\">ERP</span>\n <span className=\"font-medium\">PRO</span>\n </div>\n);\n\nexport function Sidebar({\n items,\n open,\n defaultOpen = false,\n onOpenChange,\n activePath,\n onItemSelect,\n direction = \"auto\",\n navbar,\n brand = fallbackBrand,\n footer,\n className,\n linksClassName,\n itemClassName,\n activeItemClassName,\n overlayClassName,\n closeLabel = \"Toggle sidebar\",\n showOverlay = true,\n}: SidebarProps) {\n const [resolvedOpen, setOpen] = useControllableOpenState(\n open,\n defaultOpen,\n onOpenChange,\n );\n\n const content = useMemo(\n () => (\n <aside\n dir={direction === \"auto\" ? undefined : direction}\n className={mergeClassNames(\n \"fixed inset-y-2 z-70 flex w-72 flex-col rounded-xl border border-ds-border-3 bg-ds-surface-1/92 p-3 shadow-[0_10px_28px_color-mix(in_srgb,var(--ds-color-fg)_9%,transparent)] backdrop-blur-xl\",\n \"transition-transform duration-200 ease-out xl:translate-x-0\",\n direction === \"rtl\" ? \"right-2\" : \"left-2\",\n resolvedOpen\n ? \"translate-x-0\"\n : direction === \"rtl\"\n ? \"translate-x-[110%] xl:translate-x-0\"\n : \"-translate-x-[110%] xl:translate-x-0\",\n className,\n )}\n style={{\n backdropFilter: \"blur(14px) saturate(120%)\",\n WebkitBackdropFilter: \"blur(14px) saturate(120%)\",\n }}\n >\n {navbar ? (\n <div className=\"mb-4\">{navbar}</div>\n ) : (\n <div className=\"mb-4 flex items-center justify-between gap-3 rounded-xl border border-ds-border-3 bg-ds-surface-2/85 px-3 py-2\">\n <div className=\"min-w-0 flex-1\">{brand}</div>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n aria-label={closeLabel}\n className={mergeClassNames(\n \"p-1! text-ds-2 transition-colors hover:bg-ds-surface-2 hover:text-ds-1\",\n \"xl:hidden\",\n )}\n onClick={() => setOpen(!resolvedOpen)}\n >\n <HamburgerIcon isOpen={resolvedOpen} />\n </Button>\n </div>\n )}\n\n <div className=\"mb-5 h-px bg-ds-border-3\" />\n\n <div className=\"min-h-0 flex-1 overflow-y-auto pr-1\">\n <SidebarLinks\n items={items}\n activePath={activePath}\n onItemSelect={onItemSelect}\n direction={direction}\n className={linksClassName}\n itemClassName={itemClassName}\n activeItemClassName={activeItemClassName}\n />\n </div>\n\n {footer ? <div className=\"mt-4\">{footer}</div> : null}\n </aside>\n ),\n [\n activeItemClassName,\n activePath,\n brand,\n className,\n closeLabel,\n direction,\n footer,\n itemClassName,\n items,\n linksClassName,\n onItemSelect,\n resolvedOpen,\n setOpen,\n ],\n );\n\n if (!showOverlay) {\n return content;\n }\n\n return (\n <>\n {content}\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n aria-hidden={!resolvedOpen}\n tabIndex={resolvedOpen ? 0 : -1}\n className={mergeClassNames(\n \"fixed inset-0 z-65 p-0! bg-black/30 backdrop-blur-[2px] transition-opacity duration-200 xl:hidden\",\n resolvedOpen\n ? \"pointer-events-auto opacity-100\"\n : \"pointer-events-none opacity-0\",\n overlayClassName,\n )}\n onClick={() => setOpen(false)}\n />\n </>\n );\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport { BellIcon, FullScreenIcon } from \"../../icons\";\nimport { Button } from \"../../forms/button\";\nimport { DropdownMenu } from \"../../overlays/dropdown-menu\";\nimport { Typography } from \"../../typography\";\nimport { mergeClassNames } from \"../../../utils\";\nimport { HamburgerIcon } from \"./HamburgerIcon\";\nimport { Sidebar } from \"./Sidebar\";\nimport type { SidebarItem, SidebarProps } from \"./types\";\nimport { SunToMoonButton } from \"../../effects\";\n\nexport interface DashboardHeaderRenderContext {\n isSidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n openSidebar: () => void;\n closeSidebar: () => void;\n toggleSidebar: () => void;\n direction: Exclude<SidebarProps[\"direction\"], \"auto\">;\n isRtl: boolean;\n}\n\ntype DashboardShellSlot =\n | ReactNode\n | ((context: DashboardHeaderRenderContext) => ReactNode);\n\nconst notificationItems = [\n {\n id: \"stock\",\n title: \"Low stock alert\",\n description: \"Wireless Mouse is below reorder point.\",\n time: \"4m\",\n toneClassName:\n \"bg-ds-state-warning-surface text-ds-state-warning-text border-ds-state-warning-border\",\n },\n {\n id: \"invoice\",\n title: \"Invoice paid\",\n description: \"INV-2048 was settled successfully.\",\n time: \"18m\",\n toneClassName:\n \"bg-ds-state-success-surface text-ds-state-success-text border-ds-state-success-border\",\n },\n {\n id: \"sync\",\n title: \"Catalog sync complete\",\n description: \"128 product records refreshed.\",\n time: \"42m\",\n toneClassName:\n \"bg-ds-state-info-surface text-ds-state-info-text border-ds-state-info-border\",\n },\n] as const;\n\nexport interface DashboardSidebarShellProps {\n items: readonly SidebarItem[];\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n direction?: SidebarProps[\"direction\"];\n activePath?: string;\n onItemSelect?: SidebarProps[\"onItemSelect\"];\n brand?: SidebarProps[\"brand\"];\n sidebarNavbar?: SidebarProps[\"navbar\"];\n sidebarFooter?: SidebarProps[\"footer\"];\n sidebarClassName?: SidebarProps[\"className\"];\n sidebarLinksClassName?: SidebarProps[\"linksClassName\"];\n sidebarItemClassName?: SidebarProps[\"itemClassName\"];\n sidebarActiveItemClassName?: SidebarProps[\"activeItemClassName\"];\n sidebarOverlayClassName?: SidebarProps[\"overlayClassName\"];\n sidebarCloseLabel?: SidebarProps[\"closeLabel\"];\n showSidebarOverlay?: SidebarProps[\"showOverlay\"];\n header?: DashboardShellSlot;\n headerLeading?: DashboardShellSlot;\n headerActions?: DashboardShellSlot;\n headerActionsLeading?: DashboardShellSlot;\n headerActionsTrailing?: DashboardShellSlot;\n headerClassName?: string;\n headerTitleClassName?: string;\n headerActionsClassName?: string;\n breadcrumb?: ReactNode;\n title?: ReactNode;\n children?: ReactNode;\n className?: string;\n contentClassName?: string;\n mainClassName?: string;\n autoHideOnMobileBreakpoint?: boolean;\n}\n\nconst rtlLanguages = /^(ar|fa|ur|he)(-|$)/i;\n\nfunction resolveDirection(\n direction: SidebarProps[\"direction\"],\n): Exclude<SidebarProps[\"direction\"], \"auto\"> {\n if (direction === \"rtl\" || direction === \"ltr\") {\n return direction;\n }\n\n if (typeof document !== \"undefined\") {\n const documentDirection = document.documentElement.getAttribute(\"dir\");\n if (documentDirection === \"rtl\" || documentDirection === \"ltr\") {\n return documentDirection;\n }\n }\n\n if (\n typeof navigator !== \"undefined\" &&\n rtlLanguages.test(navigator.language)\n ) {\n return \"rtl\";\n }\n\n return \"ltr\";\n}\n\nfunction resolveSlot(\n slot: DashboardShellSlot | undefined,\n context: DashboardHeaderRenderContext,\n) {\n return typeof slot === \"function\" ? slot(context) : slot;\n}\n\nfunction useControllableOpenState(\n open: boolean | undefined,\n defaultOpen: boolean,\n onOpenChange?: (open: boolean) => void,\n) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : internalOpen;\n\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n return [resolvedOpen, setOpen] as const;\n}\n\nexport function DashboardSidebarShell({\n items,\n open,\n defaultOpen = false,\n onOpenChange,\n direction = \"auto\",\n activePath,\n onItemSelect,\n brand,\n sidebarNavbar,\n sidebarFooter,\n sidebarClassName,\n sidebarLinksClassName,\n sidebarItemClassName,\n sidebarActiveItemClassName,\n sidebarOverlayClassName,\n sidebarCloseLabel,\n showSidebarOverlay,\n header,\n headerLeading,\n headerActions,\n headerActionsLeading,\n headerActionsTrailing,\n headerClassName,\n headerTitleClassName,\n headerActionsClassName,\n breadcrumb = \"Pages / Dashboard\",\n title = \"Dashboard\",\n children,\n className,\n contentClassName,\n mainClassName,\n autoHideOnMobileBreakpoint = true,\n}: DashboardSidebarShellProps) {\n const [resolvedOpen, setOpen] = useControllableOpenState(\n open,\n defaultOpen,\n onOpenChange,\n );\n const resolvedDirection = resolveDirection(direction);\n const isRtl = resolvedDirection === \"rtl\";\n const openSidebar = useCallback(() => setOpen(true), [setOpen]);\n const closeSidebar = useCallback(() => setOpen(false), [setOpen]);\n const toggleSidebar = useCallback(\n () => setOpen(!resolvedOpen),\n [resolvedOpen, setOpen],\n );\n\n const headerContext = useMemo<DashboardHeaderRenderContext>(\n () => ({\n isSidebarOpen: resolvedOpen,\n setSidebarOpen: setOpen,\n openSidebar,\n closeSidebar,\n toggleSidebar,\n direction: resolvedDirection,\n isRtl,\n }),\n [\n closeSidebar,\n isRtl,\n openSidebar,\n resolvedDirection,\n resolvedOpen,\n setOpen,\n toggleSidebar,\n ],\n );\n\n useEffect(() => {\n if (!autoHideOnMobileBreakpoint || typeof window === \"undefined\") {\n return;\n }\n\n const mediaQuery = window.matchMedia(\"(max-width: 1279px)\");\n\n const handleMobileEnter = (event: MediaQueryListEvent | MediaQueryList) => {\n if (event.matches) {\n setOpen(false);\n }\n };\n\n // Ensure first render on smaller screens starts closed.\n handleMobileEnter(mediaQuery);\n\n const listener = (event: MediaQueryListEvent) => handleMobileEnter(event);\n mediaQuery.addEventListener(\"change\", listener);\n\n return () => mediaQuery.removeEventListener(\"change\", listener);\n }, [autoHideOnMobileBreakpoint, setOpen]);\n\n const defaultHeaderActions = useMemo(\n () => (\n <>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0! xl:hidden\"\n aria-label=\"Toggle sidebar\"\n onClick={toggleSidebar}\n >\n <HamburgerIcon isOpen={resolvedOpen} />\n </Button>\n\n <DropdownMenu\n animationClassName={isRtl ? \"origin-top-left\" : \"origin-top-right\"}\n panelClassName={mergeClassNames(\n \"top-[44px]\",\n isRtl ? \"left-0\" : \"right-0\",\n )}\n trigger={\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"relative h-9 w-9 rounded-full p-0!\"\n aria-label=\"Open notifications\"\n >\n <BellIcon className=\"h-5 w-5\" />\n <span\n className={mergeClassNames(\n \"bg-ds-state-danger text-ds-on-accent absolute -top-0.5 flex h-5 min-w-5 items-center justify-center rounded-full px-1 text-[0.68rem] font-bold\",\n isRtl ? \"-left-0.5\" : \"-right-0.5\",\n )}\n >\n {notificationItems.length}\n </span>\n </Button>\n }\n >\n <div className=\"w-[340px] rounded-lg border border-ds-border-3 bg-ds-surface-1 p-3 shadow-xl\">\n <div className=\"mb-2 flex items-center justify-between gap-3\">\n <Typography variant=\"body2\" weight=\"black\">\n Notifications\n </Typography>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"px-2 py-1 text-xs\"\n >\n Mark all read\n </Button>\n </div>\n <div className=\"space-y-2\">\n {notificationItems.map((item) => (\n <Button\n key={item.id}\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"w-full rounded-lg border border-ds-border-3 px-2.5 py-2\",\n isRtl\n ? \"justify-end text-right\"\n : \"justify-start text-left\",\n )}\n >\n <span\n className={`mt-0.5 inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border ${item.toneClassName}`}\n >\n <BellIcon className=\"h-3.5 w-3.5\" />\n </span>\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-xs font-semibold text-ds-1\">\n {item.title}\n </span>\n <span className=\"block truncate text-[11px] text-ds-3\">\n {item.description}\n </span>\n </span>\n <span className=\"text-[11px] text-ds-3\">{item.time}</span>\n </Button>\n ))}\n </div>\n </div>\n </DropdownMenu>\n\n <SunToMoonButton showLabelAndImage={false} />\n\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0!\"\n aria-label=\"Toggle fullscreen\"\n onClick={() => {\n if (document.fullscreenElement) {\n document.exitFullscreen();\n } else {\n document.documentElement.requestFullscreen();\n }\n }}\n >\n <FullScreenIcon className=\"h-5 w-5\" />\n </Button>\n\n <DropdownMenu\n animationClassName={isRtl ? \"origin-top-left\" : \"origin-top-right\"}\n panelClassName={mergeClassNames(\n \"top-[44px]\",\n isRtl ? \"left-0\" : \"right-0\",\n )}\n trigger={\n <Button\n type=\"button\"\n variant=\"primary\"\n size=\"small\"\n className=\"h-9 w-9 rounded-full p-0! text-sm font-black\"\n aria-label=\"Open user menu\"\n >\n JD\n </Button>\n }\n >\n <div className=\"w-52 rounded-lg border border-ds-border-3 bg-ds-surface-1 p-3 shadow-xl\">\n <div className=\"mb-2 flex items-center gap-2\">\n <span className=\"bg-ds-accent text-ds-on-accent inline-flex h-8 w-8 items-center justify-center rounded-full text-xs font-black\">\n JD\n </span>\n <div className=\"min-w-0\">\n <Typography variant=\"body2\" weight=\"black\" className=\"truncate\">\n John Doe\n </Typography>\n <Typography variant=\"caption\" className=\"text-ds-3\">\n Administrator\n </Typography>\n </div>\n </div>\n <div className=\"my-2 border-t border-ds-border-3\" />\n <div className=\"flex flex-col gap-1\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Profile\n </Button>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Settings\n </Button>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n size=\"small\"\n className={mergeClassNames(\n \"px-2 py-1.5 text-sm text-ds-state-error-text\",\n isRtl ? \"justify-end text-right\" : \"justify-start text-left\",\n )}\n >\n Log Out\n </Button>\n </div>\n </div>\n </DropdownMenu>\n </>\n ),\n [isRtl, resolvedOpen, toggleSidebar],\n );\n\n const resolvedHeaderLeading = resolveSlot(headerLeading, headerContext);\n const resolvedHeaderActionsLeading = headerActionsLeading\n ? resolveSlot(headerActionsLeading, headerContext)\n : null;\n const resolvedHeaderActionsTrailing = headerActionsTrailing\n ? resolveSlot(headerActionsTrailing, headerContext)\n : null;\n const resolvedHeaderActions =\n headerActions === undefined ? (\n <>\n {resolvedHeaderActionsLeading}\n {defaultHeaderActions}\n {resolvedHeaderActionsTrailing}\n </>\n ) : (\n resolveSlot(headerActions, headerContext)\n );\n\n const defaultHeader = useMemo(\n () => (\n <nav\n dir={resolvedDirection}\n className={mergeClassNames(\n \"sticky top-2 z-40 mb-4 flex items-center rounded-md border border-ds-border-3 bg-ds-surface-1/95 px-4 py-3 shadow-[0_4px_14px_color-mix(in_srgb,var(--ds-color-fg)_8%,transparent)] backdrop-blur-md\",\n headerClassName,\n )}\n >\n <div\n className={mergeClassNames(\n \"flex w-full justify-between gap-4\",\n isRtl && \"flex-row-reverse\",\n )}\n >\n <div\n className={mergeClassNames(\n \"flex min-w-0 items-center gap-3\",\n isRtl && \"flex-row-reverse text-right\",\n headerTitleClassName,\n )}\n >\n {resolvedHeaderLeading}\n <div className=\"min-w-0\">\n <Typography variant=\"caption\" className=\"text-ds-3 capitalize\">\n {breadcrumb}\n </Typography>\n <Typography\n variant=\"h5\"\n weight=\"black\"\n className=\"truncate leading-7 capitalize\"\n >\n {title}\n </Typography>\n </div>\n </div>\n\n <div\n className={mergeClassNames(\n \"border-ds-border-4 flex min-h-11 shrink-0 items-center gap-1 rounded-full border bg-ds-surface-1 px-2 py-1 shadow-[0_2px_8px_color-mix(in_srgb,var(--ds-color-fg)_6%,transparent)]\",\n isRtl && \"flex-row-reverse\",\n headerActionsClassName,\n )}\n >\n {resolvedHeaderActions}\n </div>\n </div>\n </nav>\n ),\n [\n breadcrumb,\n headerActionsClassName,\n headerClassName,\n headerTitleClassName,\n isRtl,\n resolvedDirection,\n resolvedHeaderActions,\n resolvedHeaderLeading,\n title,\n ],\n );\n\n const resolvedHeader =\n header === undefined ? undefined : resolveSlot(header, headerContext);\n\n return (\n <div\n dir={resolvedDirection}\n className={mergeClassNames(\"flex h-full w-full\", className)}\n >\n <Sidebar\n items={items}\n open={resolvedOpen}\n onOpenChange={setOpen}\n activePath={activePath}\n onItemSelect={onItemSelect}\n direction={direction}\n navbar={sidebarNavbar}\n brand={brand}\n footer={sidebarFooter}\n className={sidebarClassName}\n linksClassName={sidebarLinksClassName}\n itemClassName={sidebarItemClassName}\n activeItemClassName={sidebarActiveItemClassName}\n overlayClassName={sidebarOverlayClassName}\n closeLabel={sidebarCloseLabel}\n showOverlay={showSidebarOverlay}\n />\n\n <div className=\"h-full w-full\">\n <main\n className={mergeClassNames(\n \"mx-2 flex-none transition-all duration-200 ease-in-out\",\n isRtl ? \"xl:mr-[18.5rem]\" : \"xl:ml-[18.5rem]\",\n mainClassName,\n )}\n >\n {resolvedHeader ?? defaultHeader}\n\n <section\n className={mergeClassNames(\n \"mx-auto min-h-[calc(100dvh-180px)] rounded-md md:min-h-[calc(100dvh-116px)]\",\n contentClassName,\n )}\n >\n {children}\n </section>\n </main>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -365,4 +365,4 @@ SkeletonListItem.displayName = "SkeletonListItem";
365
365
  //#endregion
366
366
  export { SkeletonImage as a, SkeletonTableRow as c, SkeletonCard as i, SkeletonText as l, SkeletonAvatar as n, SkeletonListItem as o, SkeletonButton as r, SkeletonMetricCard as s, Skeleton as t };
367
367
 
368
- //# sourceMappingURL=skeleton-nH1eAN96.mjs.map
368
+ //# sourceMappingURL=skeleton-BsDMlWZG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-nH1eAN96.mjs","names":[],"sources":["../../src/components/data-display/skeleton/Skeleton.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, CSSProperties } from \"react\";\n\nimport { mergeClassNames } from \"../../../utils\";\n\nexport type SkeletonVariant = \"text\" | \"circular\" | \"rectangular\" | \"rounded\";\nexport type SkeletonAnimation = \"pulse\" | \"wave\" | \"none\";\nexport type SkeletonTone =\n | \"default\"\n | \"subtle\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\";\nexport type SkeletonRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type SkeletonSpeed = \"slow\" | \"normal\" | \"fast\";\n\ntype SkeletonCssVariables = CSSProperties &\n Record<\n \"--ui-skeleton-base\" | \"--ui-skeleton-highlight\" | \"--ui-skeleton-duration\",\n string\n >;\n\nexport interface SkeletonProps extends Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> {\n /** The variant shape of the skeleton */\n variant?: SkeletonVariant;\n /** The animation type */\n animation?: SkeletonAnimation;\n /** Width of the skeleton */\n width?: number | string;\n /** Height of the skeleton */\n height?: number | string;\n /** Border radius override */\n borderRadius?: number | string;\n /** Semantic radius preset */\n radius?: SkeletonRadius;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n /** Animation speed preset or custom duration */\n speed?: SkeletonSpeed | number | string;\n /** Number of lines for text variant */\n lines?: number;\n /** Gap between lines */\n lineGap?: number | string;\n /** Whether the last line should be shorter */\n lastLineWidth?: number | string;\n}\n\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"variant\"> {\n /** Number of text lines */\n lines?: number;\n}\n\nexport interface SkeletonAvatarProps extends Omit<\n SkeletonProps,\n \"variant\" | \"width\" | \"height\"\n> {\n /** Size of the avatar */\n size?: number | string;\n}\n\nexport interface SkeletonCardProps {\n /** Whether to show image placeholder */\n showImage?: boolean;\n /** Image height */\n imageHeight?: number | string;\n /** Number of text lines */\n lines?: number;\n /** Whether to show avatar */\n showAvatar?: boolean;\n /** Whether to show action buttons */\n showActions?: boolean;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nexport interface SkeletonMetricCardProps {\n /** Whether to show a compact trend badge */\n showTrend?: boolean;\n /** Whether to render spark bars */\n showChart?: boolean;\n /** Number of spark bars */\n chartBars?: number;\n /** Width for the value block */\n valueWidth?: number | string;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nconst animationStyles: Record<SkeletonAnimation, string> = {\n pulse: \"ui-skeleton-pulse\",\n wave: \"ui-skeleton-wave\",\n none: \"\",\n};\n\nconst radiusStyles: Record<SkeletonRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n full: \"rounded-full\",\n};\n\nconst variantStyles: Record<SkeletonVariant, SkeletonRadius> = {\n text: \"sm\",\n circular: \"full\",\n rectangular: \"none\",\n rounded: \"md\",\n};\n\nconst speedStyles: Record<SkeletonSpeed, string> = {\n slow: \"2.4s\",\n normal: \"1.6s\",\n fast: \"1.05s\",\n};\n\nconst toneStyles: Record<SkeletonTone, { base: string; highlight: string }> = {\n default: {\n base: \"var(--ds-color-bg-ds-surface-3)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 54%, var(--ds-color-bg-canvas))\",\n },\n subtle: {\n base: \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 72%, var(--ds-color-bg-canvas))\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 42%, var(--ds-color-bg-canvas))\",\n },\n accent: {\n base: \"var(--ds-color-accent-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-accent-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n success: {\n base: \"var(--ds-color-success-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-success-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n warning: {\n base: \"var(--ds-color-warning-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-warning-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n danger: {\n base: \"var(--ds-color-danger-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-danger-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n info: {\n base: \"var(--ds-color-info-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-info-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n};\n\nfunction resolveDimension(value?: number | string): string | undefined {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n\n return value;\n}\n\nfunction resolveDuration(value: SkeletonProps[\"speed\"]): string {\n if (typeof value === \"number\") {\n return `${value}ms`;\n }\n\n if (typeof value === \"string\" && value in speedStyles) {\n return speedStyles[value as SkeletonSpeed];\n }\n\n return value ?? speedStyles.normal;\n}\n\nfunction getDimensionStyle({\n variant,\n width,\n height,\n borderRadius,\n}: {\n variant: SkeletonVariant;\n width?: number | string;\n height?: number | string;\n borderRadius?: number | string;\n}): CSSProperties {\n const nextStyle: CSSProperties = {};\n const resolvedWidth = resolveDimension(width);\n const resolvedHeight = resolveDimension(height);\n const resolvedBorderRadius = resolveDimension(borderRadius);\n\n if (resolvedWidth) {\n nextStyle.width = resolvedWidth;\n } else if (variant === \"text\") {\n nextStyle.width = \"100%\";\n }\n\n if (resolvedHeight) {\n nextStyle.height = resolvedHeight;\n } else if (variant === \"text\") {\n nextStyle.height = \"1em\";\n } else if (variant === \"circular\") {\n nextStyle.width = nextStyle.width || \"40px\";\n nextStyle.height = nextStyle.width;\n }\n\n if (resolvedBorderRadius) {\n nextStyle.borderRadius = resolvedBorderRadius;\n }\n\n return nextStyle;\n}\n\n// Base Skeleton Component\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = \"text\",\n animation = \"pulse\",\n width,\n height,\n borderRadius,\n radius,\n tone = \"default\",\n speed = \"normal\",\n className,\n lines = 1,\n lineGap = 8,\n lastLineWidth = \"80%\",\n style,\n [\"aria-hidden\"]: ariaHidden,\n ...rest\n },\n ref,\n ) => {\n const toneStyle = toneStyles[tone];\n const sharedStyle: SkeletonCssVariables = {\n \"--ui-skeleton-base\": toneStyle.base,\n \"--ui-skeleton-highlight\": toneStyle.highlight,\n \"--ui-skeleton-duration\": resolveDuration(speed),\n ...style,\n };\n const effectiveRadius = radius ?? variantStyles[variant];\n const sharedClassName = mergeClassNames(\n \"relative overflow-hidden bg-[var(--ui-skeleton-base)] pointer-events-none select-none shrink-0\",\n radiusStyles[effectiveRadius],\n animationStyles[animation],\n );\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\"flex flex-col\", className)}\n style={{\n ...style,\n gap: resolveDimension(lineGap),\n width: resolveDimension(width) ?? style?.width,\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n className={sharedClassName}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({\n variant,\n width:\n index === lines - 1 ? lastLineWidth : (width ?? \"100%\"),\n height,\n borderRadius,\n }),\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(sharedClassName, className)}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({ variant, width, height, borderRadius }),\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n />\n );\n },\n);\n\nSkeleton.displayName = \"Skeleton\";\n\n// Skeleton Text Component\nconst SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, ...props }, ref) => {\n return <Skeleton ref={ref} variant=\"text\" lines={lines} {...props} />;\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nconst SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = 40, animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeValue = typeof size === \"number\" ? `${size}px` : size;\n\n return (\n <Skeleton\n ref={ref}\n variant=\"circular\"\n width={sizeValue}\n height={sizeValue}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nconst SkeletonButton = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\"> & { size?: \"sm\" | \"md\" | \"lg\" }\n>(({ size = \"md\", animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeStyles = {\n sm: { width: 80, height: 32 },\n md: { width: 100, height: 40 },\n lg: { width: 120, height: 48 },\n };\n\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={sizeStyles[size].width}\n height={sizeStyles[size].height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n});\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Image Component\nconst SkeletonImage = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\">\n>(\n (\n {\n width = \"100%\",\n height = 200,\n animation = \"pulse\",\n className = \"\",\n ...props\n },\n ref,\n ) => {\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={width}\n height={height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonImage.displayName = \"SkeletonImage\";\n\n// Skeleton Card Component\nconst SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n showImage = true,\n imageHeight = 200,\n lines = 3,\n showAvatar = false,\n showActions = false,\n className,\n animation = \"pulse\",\n tone = \"default\",\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"overflow-hidden rounded-md border border-ds-border-2 bg-ds-surface-1 shadow-sm\",\n className,\n )}\n >\n {showImage && (\n <SkeletonImage\n height={imageHeight}\n animation={animation}\n borderRadius={0}\n tone={tone}\n />\n )}\n\n <div className=\"p-4 flex flex-col gap-4\">\n {showAvatar && (\n <div className=\"flex items-center gap-3\">\n <SkeletonAvatar size={40} animation={animation} tone={tone} />\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"60%\"\n height={14}\n animation={animation}\n tone={tone}\n />\n <Skeleton\n variant=\"text\"\n width=\"40%\"\n height={12}\n animation={animation}\n tone={tone}\n className=\"mt-2\"\n />\n </div>\n </div>\n )}\n\n <SkeletonText\n lines={lines}\n animation={animation}\n height={14}\n lineGap={10}\n tone={tone}\n />\n\n {showActions && (\n <div className=\"flex gap-3 mt-2\">\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Metric Card Component\nconst SkeletonMetricCard = forwardRef<HTMLDivElement, SkeletonMetricCardProps>(\n (\n {\n showTrend = true,\n showChart = true,\n chartBars = 7,\n valueWidth = \"52%\",\n className,\n animation = \"wave\",\n tone = \"accent\",\n },\n ref,\n ) => {\n const chartHeights = [36, 52, 46, 72, 64, 84, 68, 78];\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"rounded-md border border-ds-border-2 bg-ds-surface-1 p-4 shadow-sm\",\n className,\n )}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 flex-1 space-y-3\">\n <Skeleton\n width=\"34%\"\n height={11}\n animation={animation}\n tone=\"subtle\"\n />\n <Skeleton\n width={valueWidth}\n height={28}\n animation={animation}\n tone={tone}\n radius=\"md\"\n />\n <Skeleton\n width=\"44%\"\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n\n {showTrend ? (\n <div className=\"rounded-full border border-ds-border-2 bg-ds-surface-1 px-3 py-2\">\n <Skeleton\n width={54}\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n ) : null}\n </div>\n\n {showChart ? (\n <div className=\"mt-5 flex h-20 items-end gap-2\">\n {Array.from({ length: chartBars }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n width=\"100%\"\n height={`${chartHeights[index % chartHeights.length]}%`}\n animation={animation}\n tone={tone}\n className=\"flex-1\"\n />\n ))}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nSkeletonMetricCard.displayName = \"SkeletonMetricCard\";\n\n// Skeleton Table Row Component\nconst SkeletonTableRow = forwardRef<\n HTMLDivElement,\n { columns?: number; animation?: SkeletonAnimation; className?: string }\n>(({ columns = 4, animation = \"pulse\", className = \"\" }, ref) => {\n const sharedWidth =\n columns <= 1 ? \"100%\" : `${Math.floor(72 / (columns - 1))}%`;\n\n return (\n <div ref={ref} className={`flex items-center gap-4 py-3 ${className}`}>\n {Array.from({ length: columns }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n width={index === 0 ? \"28%\" : sharedWidth}\n height={16}\n animation={animation}\n />\n ))}\n </div>\n );\n});\n\nSkeletonTableRow.displayName = \"SkeletonTableRow\";\n\n// Skeleton List Item Component\nconst SkeletonListItem = forwardRef<\n HTMLDivElement,\n {\n showAvatar?: boolean;\n showSecondaryText?: boolean;\n showAction?: boolean;\n animation?: SkeletonAnimation;\n className?: string;\n }\n>(\n (\n {\n showAvatar = true,\n showSecondaryText = true,\n showAction = false,\n animation = \"pulse\",\n className = \"\",\n },\n ref,\n ) => {\n return (\n <div ref={ref} className={`flex items-center gap-3 py-3 ${className}`}>\n {showAvatar && <SkeletonAvatar size={48} animation={animation} />}\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"70%\"\n height={16}\n animation={animation}\n />\n {showSecondaryText && (\n <Skeleton\n variant=\"text\"\n width=\"50%\"\n height={14}\n animation={animation}\n className=\"mt-2\"\n />\n )}\n </div>\n {showAction && <SkeletonButton size=\"sm\" animation={animation} />}\n </div>\n );\n },\n);\n\nSkeletonListItem.displayName = \"SkeletonListItem\";\n\nexport default Skeleton;\nexport {\n Skeleton,\n SkeletonText,\n SkeletonAvatar,\n SkeletonButton,\n SkeletonImage,\n SkeletonCard,\n SkeletonMetricCard,\n SkeletonTableRow,\n SkeletonListItem,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"skeleton-BsDMlWZG.mjs","names":[],"sources":["../../src/components/data-display/skeleton/Skeleton.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, CSSProperties } from \"react\";\n\nimport { mergeClassNames } from \"../../../utils\";\n\nexport type SkeletonVariant = \"text\" | \"circular\" | \"rectangular\" | \"rounded\";\nexport type SkeletonAnimation = \"pulse\" | \"wave\" | \"none\";\nexport type SkeletonTone =\n | \"default\"\n | \"subtle\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\";\nexport type SkeletonRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type SkeletonSpeed = \"slow\" | \"normal\" | \"fast\";\n\ntype SkeletonCssVariables = CSSProperties &\n Record<\n \"--ui-skeleton-base\" | \"--ui-skeleton-highlight\" | \"--ui-skeleton-duration\",\n string\n >;\n\nexport interface SkeletonProps extends Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> {\n /** The variant shape of the skeleton */\n variant?: SkeletonVariant;\n /** The animation type */\n animation?: SkeletonAnimation;\n /** Width of the skeleton */\n width?: number | string;\n /** Height of the skeleton */\n height?: number | string;\n /** Border radius override */\n borderRadius?: number | string;\n /** Semantic radius preset */\n radius?: SkeletonRadius;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n /** Animation speed preset or custom duration */\n speed?: SkeletonSpeed | number | string;\n /** Number of lines for text variant */\n lines?: number;\n /** Gap between lines */\n lineGap?: number | string;\n /** Whether the last line should be shorter */\n lastLineWidth?: number | string;\n}\n\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"variant\"> {\n /** Number of text lines */\n lines?: number;\n}\n\nexport interface SkeletonAvatarProps extends Omit<\n SkeletonProps,\n \"variant\" | \"width\" | \"height\"\n> {\n /** Size of the avatar */\n size?: number | string;\n}\n\nexport interface SkeletonCardProps {\n /** Whether to show image placeholder */\n showImage?: boolean;\n /** Image height */\n imageHeight?: number | string;\n /** Number of text lines */\n lines?: number;\n /** Whether to show avatar */\n showAvatar?: boolean;\n /** Whether to show action buttons */\n showActions?: boolean;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nexport interface SkeletonMetricCardProps {\n /** Whether to show a compact trend badge */\n showTrend?: boolean;\n /** Whether to render spark bars */\n showChart?: boolean;\n /** Number of spark bars */\n chartBars?: number;\n /** Width for the value block */\n valueWidth?: number | string;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nconst animationStyles: Record<SkeletonAnimation, string> = {\n pulse: \"ui-skeleton-pulse\",\n wave: \"ui-skeleton-wave\",\n none: \"\",\n};\n\nconst radiusStyles: Record<SkeletonRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n full: \"rounded-full\",\n};\n\nconst variantStyles: Record<SkeletonVariant, SkeletonRadius> = {\n text: \"sm\",\n circular: \"full\",\n rectangular: \"none\",\n rounded: \"md\",\n};\n\nconst speedStyles: Record<SkeletonSpeed, string> = {\n slow: \"2.4s\",\n normal: \"1.6s\",\n fast: \"1.05s\",\n};\n\nconst toneStyles: Record<SkeletonTone, { base: string; highlight: string }> = {\n default: {\n base: \"var(--ds-color-bg-ds-surface-3)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 54%, var(--ds-color-bg-canvas))\",\n },\n subtle: {\n base: \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 72%, var(--ds-color-bg-canvas))\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 42%, var(--ds-color-bg-canvas))\",\n },\n accent: {\n base: \"var(--ds-color-accent-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-accent-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n success: {\n base: \"var(--ds-color-success-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-success-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n warning: {\n base: \"var(--ds-color-warning-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-warning-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n danger: {\n base: \"var(--ds-color-danger-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-danger-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n info: {\n base: \"var(--ds-color-info-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-info-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n};\n\nfunction resolveDimension(value?: number | string): string | undefined {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n\n return value;\n}\n\nfunction resolveDuration(value: SkeletonProps[\"speed\"]): string {\n if (typeof value === \"number\") {\n return `${value}ms`;\n }\n\n if (typeof value === \"string\" && value in speedStyles) {\n return speedStyles[value as SkeletonSpeed];\n }\n\n return value ?? speedStyles.normal;\n}\n\nfunction getDimensionStyle({\n variant,\n width,\n height,\n borderRadius,\n}: {\n variant: SkeletonVariant;\n width?: number | string;\n height?: number | string;\n borderRadius?: number | string;\n}): CSSProperties {\n const nextStyle: CSSProperties = {};\n const resolvedWidth = resolveDimension(width);\n const resolvedHeight = resolveDimension(height);\n const resolvedBorderRadius = resolveDimension(borderRadius);\n\n if (resolvedWidth) {\n nextStyle.width = resolvedWidth;\n } else if (variant === \"text\") {\n nextStyle.width = \"100%\";\n }\n\n if (resolvedHeight) {\n nextStyle.height = resolvedHeight;\n } else if (variant === \"text\") {\n nextStyle.height = \"1em\";\n } else if (variant === \"circular\") {\n nextStyle.width = nextStyle.width || \"40px\";\n nextStyle.height = nextStyle.width;\n }\n\n if (resolvedBorderRadius) {\n nextStyle.borderRadius = resolvedBorderRadius;\n }\n\n return nextStyle;\n}\n\n// Base Skeleton Component\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = \"text\",\n animation = \"pulse\",\n width,\n height,\n borderRadius,\n radius,\n tone = \"default\",\n speed = \"normal\",\n className,\n lines = 1,\n lineGap = 8,\n lastLineWidth = \"80%\",\n style,\n [\"aria-hidden\"]: ariaHidden,\n ...rest\n },\n ref,\n ) => {\n const toneStyle = toneStyles[tone];\n const sharedStyle: SkeletonCssVariables = {\n \"--ui-skeleton-base\": toneStyle.base,\n \"--ui-skeleton-highlight\": toneStyle.highlight,\n \"--ui-skeleton-duration\": resolveDuration(speed),\n ...style,\n };\n const effectiveRadius = radius ?? variantStyles[variant];\n const sharedClassName = mergeClassNames(\n \"relative overflow-hidden bg-[var(--ui-skeleton-base)] pointer-events-none select-none shrink-0\",\n radiusStyles[effectiveRadius],\n animationStyles[animation],\n );\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\"flex flex-col\", className)}\n style={{\n ...style,\n gap: resolveDimension(lineGap),\n width: resolveDimension(width) ?? style?.width,\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n className={sharedClassName}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({\n variant,\n width:\n index === lines - 1 ? lastLineWidth : (width ?? \"100%\"),\n height,\n borderRadius,\n }),\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(sharedClassName, className)}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({ variant, width, height, borderRadius }),\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n />\n );\n },\n);\n\nSkeleton.displayName = \"Skeleton\";\n\n// Skeleton Text Component\nconst SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, ...props }, ref) => {\n return <Skeleton ref={ref} variant=\"text\" lines={lines} {...props} />;\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nconst SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = 40, animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeValue = typeof size === \"number\" ? `${size}px` : size;\n\n return (\n <Skeleton\n ref={ref}\n variant=\"circular\"\n width={sizeValue}\n height={sizeValue}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nconst SkeletonButton = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\"> & { size?: \"sm\" | \"md\" | \"lg\" }\n>(({ size = \"md\", animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeStyles = {\n sm: { width: 80, height: 32 },\n md: { width: 100, height: 40 },\n lg: { width: 120, height: 48 },\n };\n\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={sizeStyles[size].width}\n height={sizeStyles[size].height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n});\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Image Component\nconst SkeletonImage = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\">\n>(\n (\n {\n width = \"100%\",\n height = 200,\n animation = \"pulse\",\n className = \"\",\n ...props\n },\n ref,\n ) => {\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={width}\n height={height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonImage.displayName = \"SkeletonImage\";\n\n// Skeleton Card Component\nconst SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n showImage = true,\n imageHeight = 200,\n lines = 3,\n showAvatar = false,\n showActions = false,\n className,\n animation = \"pulse\",\n tone = \"default\",\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"overflow-hidden rounded-md border border-ds-border-2 bg-ds-surface-1 shadow-sm\",\n className,\n )}\n >\n {showImage && (\n <SkeletonImage\n height={imageHeight}\n animation={animation}\n borderRadius={0}\n tone={tone}\n />\n )}\n\n <div className=\"p-4 flex flex-col gap-4\">\n {showAvatar && (\n <div className=\"flex items-center gap-3\">\n <SkeletonAvatar size={40} animation={animation} tone={tone} />\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"60%\"\n height={14}\n animation={animation}\n tone={tone}\n />\n <Skeleton\n variant=\"text\"\n width=\"40%\"\n height={12}\n animation={animation}\n tone={tone}\n className=\"mt-2\"\n />\n </div>\n </div>\n )}\n\n <SkeletonText\n lines={lines}\n animation={animation}\n height={14}\n lineGap={10}\n tone={tone}\n />\n\n {showActions && (\n <div className=\"flex gap-3 mt-2\">\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Metric Card Component\nconst SkeletonMetricCard = forwardRef<HTMLDivElement, SkeletonMetricCardProps>(\n (\n {\n showTrend = true,\n showChart = true,\n chartBars = 7,\n valueWidth = \"52%\",\n className,\n animation = \"wave\",\n tone = \"accent\",\n },\n ref,\n ) => {\n const chartHeights = [36, 52, 46, 72, 64, 84, 68, 78];\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"rounded-md border border-ds-border-2 bg-ds-surface-1 p-4 shadow-sm\",\n className,\n )}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 flex-1 space-y-3\">\n <Skeleton\n width=\"34%\"\n height={11}\n animation={animation}\n tone=\"subtle\"\n />\n <Skeleton\n width={valueWidth}\n height={28}\n animation={animation}\n tone={tone}\n radius=\"md\"\n />\n <Skeleton\n width=\"44%\"\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n\n {showTrend ? (\n <div className=\"rounded-full border border-ds-border-2 bg-ds-surface-1 px-3 py-2\">\n <Skeleton\n width={54}\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n ) : null}\n </div>\n\n {showChart ? (\n <div className=\"mt-5 flex h-20 items-end gap-2\">\n {Array.from({ length: chartBars }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n width=\"100%\"\n height={`${chartHeights[index % chartHeights.length]}%`}\n animation={animation}\n tone={tone}\n className=\"flex-1\"\n />\n ))}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nSkeletonMetricCard.displayName = \"SkeletonMetricCard\";\n\n// Skeleton Table Row Component\nconst SkeletonTableRow = forwardRef<\n HTMLDivElement,\n { columns?: number; animation?: SkeletonAnimation; className?: string }\n>(({ columns = 4, animation = \"pulse\", className = \"\" }, ref) => {\n const sharedWidth =\n columns <= 1 ? \"100%\" : `${Math.floor(72 / (columns - 1))}%`;\n\n return (\n <div ref={ref} className={`flex items-center gap-4 py-3 ${className}`}>\n {Array.from({ length: columns }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n width={index === 0 ? \"28%\" : sharedWidth}\n height={16}\n animation={animation}\n />\n ))}\n </div>\n );\n});\n\nSkeletonTableRow.displayName = \"SkeletonTableRow\";\n\n// Skeleton List Item Component\nconst SkeletonListItem = forwardRef<\n HTMLDivElement,\n {\n showAvatar?: boolean;\n showSecondaryText?: boolean;\n showAction?: boolean;\n animation?: SkeletonAnimation;\n className?: string;\n }\n>(\n (\n {\n showAvatar = true,\n showSecondaryText = true,\n showAction = false,\n animation = \"pulse\",\n className = \"\",\n },\n ref,\n ) => {\n return (\n <div ref={ref} className={`flex items-center gap-3 py-3 ${className}`}>\n {showAvatar && <SkeletonAvatar size={48} animation={animation} />}\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"70%\"\n height={16}\n animation={animation}\n />\n {showSecondaryText && (\n <Skeleton\n variant=\"text\"\n width=\"50%\"\n height={14}\n animation={animation}\n className=\"mt-2\"\n />\n )}\n </div>\n {showAction && <SkeletonButton size=\"sm\" animation={animation} />}\n </div>\n );\n },\n);\n\nSkeletonListItem.displayName = \"SkeletonListItem\";\n\nexport default Skeleton;\nexport {\n Skeleton,\n SkeletonText,\n SkeletonAvatar,\n SkeletonButton,\n SkeletonImage,\n SkeletonCard,\n SkeletonMetricCard,\n SkeletonTableRow,\n SkeletonListItem,\n};\n"],"mappings":"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"}
@@ -419,4 +419,4 @@ Object.defineProperty(exports, "SkeletonText", {
419
419
  }
420
420
  });
421
421
 
422
- //# sourceMappingURL=skeleton-DCBGLNAZ.cjs.map
422
+ //# sourceMappingURL=skeleton-DWvVc17T.cjs.map