erp-pro-ui 0.2.4 → 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 (413) 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-Kkr45nuN.cjs → sidebar-Cq7UbKJT.cjs} +18 -21
  204. package/dist/chunks/sidebar-Cq7UbKJT.cjs.map +1 -0
  205. package/dist/chunks/{sidebar-DYEDFV2u.mjs → sidebar-oemmRzCL.mjs} +18 -21
  206. package/dist/chunks/sidebar-oemmRzCL.mjs.map +1 -0
  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/navigation/sidebar/DashboardSidebarShell.d.ts +3 -1
  318. package/dist/components/navigation/sidebar/DashboardSidebarShell.d.ts.map +1 -1
  319. package/dist/components/navigation/sidebar/SidebarLinks.d.ts.map +1 -1
  320. package/dist/components/overlays/tooltip/Tooltip.d.ts +3 -1
  321. package/dist/components/overlays/tooltip/Tooltip.d.ts.map +1 -1
  322. package/dist/dashboard-cards.cjs +18 -0
  323. package/dist/dashboard-cards.d.ts +2 -0
  324. package/dist/dashboard-cards.mjs +2 -0
  325. package/dist/data-table.cjs +1 -1
  326. package/dist/data-table.mjs +1 -1
  327. package/dist/date-picker.cjs +1 -1
  328. package/dist/date-picker.mjs +1 -1
  329. package/dist/dialog.cjs +1 -1
  330. package/dist/dialog.mjs +1 -1
  331. package/dist/docs.cjs +31 -0
  332. package/dist/docs.cjs.map +1 -1
  333. package/dist/docs.d.ts.map +1 -1
  334. package/dist/docs.mjs +31 -0
  335. package/dist/docs.mjs.map +1 -1
  336. package/dist/drawer.cjs +2 -2
  337. package/dist/drawer.mjs +1 -1
  338. package/dist/event-calendar.cjs +5 -0
  339. package/dist/event-calendar.d.ts +2 -0
  340. package/dist/event-calendar.mjs +2 -0
  341. package/dist/form.cjs +1 -1
  342. package/dist/form.mjs +1 -1
  343. package/dist/gradual-blur.cjs +1 -1
  344. package/dist/gradual-blur.mjs +1 -1
  345. package/dist/hover-border-gradient.cjs +1 -1
  346. package/dist/hover-border-gradient.mjs +1 -1
  347. package/dist/hover-card.cjs +1 -1
  348. package/dist/hover-card.mjs +1 -1
  349. package/dist/icons.cjs +3 -2
  350. package/dist/icons.mjs +2 -1
  351. package/dist/index.cjs +74 -330
  352. package/dist/index.cjs.map +1 -1
  353. package/dist/index.d.ts +5 -2
  354. package/dist/index.d.ts.map +1 -1
  355. package/dist/index.mjs +55 -327
  356. package/dist/index.mjs.map +1 -1
  357. package/dist/input.cjs +1 -1
  358. package/dist/input.mjs +1 -1
  359. package/dist/label.cjs +1 -1
  360. package/dist/label.mjs +1 -1
  361. package/dist/loading.cjs +1 -1
  362. package/dist/loading.mjs +1 -1
  363. package/dist/multi-select-combobox.cjs +1 -1
  364. package/dist/multi-select-combobox.mjs +1 -1
  365. package/dist/otp-input.cjs +1 -1
  366. package/dist/otp-input.mjs +1 -1
  367. package/dist/password-strength-meter.cjs +1 -1
  368. package/dist/password-strength-meter.mjs +1 -1
  369. package/dist/progress-bar.cjs +1 -1
  370. package/dist/progress-bar.mjs +1 -1
  371. package/dist/radio.cjs +1 -1
  372. package/dist/radio.mjs +1 -1
  373. package/dist/select.cjs +1 -1
  374. package/dist/select.mjs +1 -1
  375. package/dist/sidebar.cjs +1 -1
  376. package/dist/sidebar.mjs +1 -1
  377. package/dist/skeleton.cjs +1 -1
  378. package/dist/skeleton.mjs +1 -1
  379. package/dist/spinners.cjs +1 -1
  380. package/dist/spinners.mjs +1 -1
  381. package/dist/splash-cursor.cjs +1 -1
  382. package/dist/splash-cursor.mjs +1 -1
  383. package/dist/spotlight-card.cjs +1 -1
  384. package/dist/spotlight-card.mjs +1 -1
  385. package/dist/stepper.cjs +1 -1
  386. package/dist/stepper.mjs +1 -1
  387. package/dist/sun-to-moon-button.cjs +2 -2
  388. package/dist/sun-to-moon-button.mjs +2 -2
  389. package/dist/switch.cjs +1 -1
  390. package/dist/switch.mjs +1 -1
  391. package/dist/textarea.cjs +1 -1
  392. package/dist/textarea.mjs +1 -1
  393. package/dist/toast.cjs +1 -1
  394. package/dist/toast.mjs +1 -1
  395. package/dist/tooltip.cjs +1 -1
  396. package/dist/tooltip.mjs +1 -1
  397. package/dist/truncated-text.cjs +1 -1
  398. package/dist/truncated-text.mjs +1 -1
  399. package/dist/typography.cjs +1 -1
  400. package/dist/typography.mjs +1 -1
  401. package/package.json +17 -5
  402. package/dist/chunks/Tooltip-DD30yj3A.cjs.map +0 -1
  403. package/dist/chunks/Tooltip-DK3B879v.mjs.map +0 -1
  404. package/dist/chunks/button-A6UTvrOu.mjs.map +0 -1
  405. package/dist/chunks/button-C4MXPxsC.cjs.map +0 -1
  406. package/dist/chunks/charts-BmIV-mJy.cjs.map +0 -1
  407. package/dist/chunks/charts-DkVu0rFc.mjs.map +0 -1
  408. package/dist/chunks/data-table-Dtf6lKpp.mjs.map +0 -1
  409. package/dist/chunks/data-table-fAEuevPn.cjs.map +0 -1
  410. package/dist/chunks/icons-CRanVZB1.cjs.map +0 -1
  411. package/dist/chunks/icons-bx3nrxNv.mjs.map +0 -1
  412. package/dist/chunks/sidebar-DYEDFV2u.mjs.map +0 -1
  413. package/dist/chunks/sidebar-Kkr45nuN.cjs.map +0 -1
@@ -0,0 +1,2524 @@
1
+ require("./chunk-B_GkZjkl.cjs");
2
+ const require_utils = require("./utils-LRbEQHYs.cjs");
3
+ const require_chartStyles = require("./chartStyles-BADmRKZo.cjs");
4
+ const require_truncated_text = require("./truncated-text-CswjmrHZ.cjs");
5
+ const require_EllipsisVerticalIcon = require("./EllipsisVerticalIcon-BJw3MNkg.cjs");
6
+ const require_button = require("./button-uD87K76W.cjs");
7
+ const require_Tooltip = require("./Tooltip-nnaiqJTT.cjs");
8
+ let react = require("react");
9
+ let react_jsx_runtime = require("react/jsx-runtime");
10
+ let recharts = require("recharts");
11
+ //#region src/components/data-display/dashboard-cards/StatCard.tsx
12
+ var TrendBadge$3 = ({ value, direction }) => {
13
+ const isUp = direction === "up";
14
+ const color = isUp ? "var(--ds-color-success)" : "var(--ds-color-danger)";
15
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
16
+ className: "inline-flex items-center gap-1 rounded-sm border px-1 py-0.5 text-[11px] font-semibold leading-none",
17
+ style: {
18
+ color,
19
+ borderColor: color,
20
+ backgroundColor: isUp ? "var(--ds-color-success-subtle)" : "var(--ds-color-danger-subtle)"
21
+ },
22
+ "aria-label": `${value} ${isUp ? "increase" : "decrease"}`,
23
+ children: [value, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
24
+ width: "10",
25
+ height: "10",
26
+ viewBox: "0 0 10 10",
27
+ fill: "none",
28
+ "aria-hidden": "true",
29
+ children: isUp ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
30
+ d: "M5 8V2M5 2L2 5M5 2L8 5",
31
+ stroke: "currentColor",
32
+ strokeWidth: "1.5",
33
+ strokeLinecap: "round",
34
+ strokeLinejoin: "round"
35
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
36
+ d: "M5 2V8M5 8L2 5M5 8L8 5",
37
+ stroke: "currentColor",
38
+ strokeWidth: "1.5",
39
+ strokeLinecap: "round",
40
+ strokeLinejoin: "round"
41
+ })
42
+ })]
43
+ });
44
+ };
45
+ var MenuButton = ({ onClick }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
46
+ variant: "tertiary",
47
+ size: "small",
48
+ className: "shrink-0 p-0.5! text-ds-3",
49
+ "aria-label": "More options",
50
+ onClick,
51
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
52
+ width: 18,
53
+ height: 18
54
+ })
55
+ });
56
+ var LegendDots = ({ items }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
57
+ className: "flex items-center gap-3",
58
+ children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
59
+ className: "flex items-center gap-1.5 text-xs text-ds-2",
60
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
61
+ className: "inline-block h-2.5 w-2.5 shrink-0 rounded-full",
62
+ style: { backgroundColor: item.color },
63
+ "aria-hidden": "true"
64
+ }), item.label]
65
+ }, item.label))
66
+ });
67
+ var StatCard = ({ size = "md", title, badge, value, dateRange, chart, chartPosition = "side", chartClassName, legend, className, onMenuClick }) => {
68
+ const base = require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className);
69
+ if (size === "sm") return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
70
+ className: require_utils.mergeClassNames(base, "flex flex-col gap-7 p-5"),
71
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
72
+ className: "flex items-start justify-between gap-2",
73
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
74
+ className: "flex flex-wrap items-center gap-2",
75
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
76
+ className: "text-sm font-semibold text-ds-1",
77
+ children: title
78
+ }), badge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrendBadge$3, {
79
+ value: badge.value,
80
+ direction: badge.direction
81
+ })]
82
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuButton, { onClick: onMenuClick })]
83
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
84
+ className: "flex flex-col gap-1",
85
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
86
+ className: "text-2xl font-bold tracking-tight text-ds-1 leading-none",
87
+ children: value
88
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
89
+ className: "text-[10px] text-ds-3 mt-1",
90
+ children: dateRange
91
+ })]
92
+ })]
93
+ });
94
+ if (size === "md") {
95
+ const metricBlock = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
96
+ className: "flex flex-col gap-1 min-w-0",
97
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
98
+ className: "text-3xl font-bold tracking-tight text-ds-1 leading-none",
99
+ children: value
100
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
101
+ className: "text-[10px] text-ds-3 mt-1",
102
+ children: dateRange
103
+ })]
104
+ });
105
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
106
+ className: require_utils.mergeClassNames(base, "flex flex-col gap-3 p-5"),
107
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
108
+ className: "flex items-start justify-between gap-2",
109
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
110
+ className: "flex flex-wrap items-center gap-2",
111
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
112
+ className: "text-sm font-semibold text-ds-1",
113
+ children: title
114
+ }), badge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrendBadge$3, {
115
+ value: badge.value,
116
+ direction: badge.direction
117
+ })]
118
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuButton, { onClick: onMenuClick })]
119
+ }), chartPosition === "bottom" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [metricBlock, chart && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
120
+ className: require_utils.mergeClassNames("w-full pt-3", chartClassName),
121
+ children: chart
122
+ })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
123
+ className: "flex items-end justify-between gap-3",
124
+ children: [metricBlock, chart && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
125
+ className: require_utils.mergeClassNames("h-[46px] w-[155px] shrink-0 overflow-hidden", chartClassName),
126
+ children: chart
127
+ })]
128
+ })]
129
+ });
130
+ }
131
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
132
+ className: require_utils.mergeClassNames(base, "flex flex-col p-5"),
133
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
134
+ className: "flex flex-wrap items-start justify-between gap-x-6 gap-y-2 mb-4",
135
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
136
+ className: "flex flex-col gap-1.5",
137
+ children: [
138
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
139
+ className: "flex flex-wrap items-center gap-2",
140
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
141
+ className: "text-sm font-semibold text-ds-1",
142
+ children: title
143
+ }), badge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrendBadge$3, {
144
+ value: badge.value,
145
+ direction: badge.direction
146
+ })]
147
+ }),
148
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
149
+ className: "text-3xl font-bold tracking-tight text-ds-1 leading-none",
150
+ children: value
151
+ }),
152
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
153
+ className: "text-xs text-ds-3",
154
+ children: dateRange
155
+ })
156
+ ]
157
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
158
+ className: "flex items-center gap-4 ms-auto",
159
+ children: [legend && legend.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LegendDots, { items: legend }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MenuButton, { onClick: onMenuClick })]
160
+ })]
161
+ }), chart && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
162
+ className: require_utils.mergeClassNames("border-t border-ds-border-2 pt-4 w-full", chartClassName),
163
+ children: chart
164
+ })]
165
+ });
166
+ };
167
+ //#endregion
168
+ //#region src/components/data-display/dashboard-cards/ChartCard.tsx
169
+ var ChartCard = ({ title, dateRange, legend, className, onMenuClick, children }) => {
170
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
171
+ className: require_utils.mergeClassNames("flex flex-col gap-4 rounded-2xl border border-ds-border-2 bg-ds-surface-1 p-5", className),
172
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
173
+ className: "flex flex-wrap items-start justify-between gap-x-6 gap-y-2",
174
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
175
+ className: "flex flex-col gap-0.5",
176
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
177
+ className: "text-sm font-semibold text-ds-color-fg",
178
+ children: title
179
+ }), dateRange && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
180
+ className: "text-xs text-ds-color-fg-subtle",
181
+ children: dateRange
182
+ })]
183
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
184
+ className: "flex items-center gap-4 ms-auto",
185
+ children: [legend && legend.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
186
+ className: "flex items-center gap-3",
187
+ children: legend.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
188
+ className: "flex items-center gap-1.5 text-xs text-ds-color-fg-muted",
189
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
190
+ className: "inline-block h-2.5 w-2.5 rounded-full shrink-0",
191
+ style: { backgroundColor: item.color },
192
+ "aria-hidden": "true"
193
+ }), item.label]
194
+ }, item.label))
195
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
196
+ variant: "tertiary",
197
+ size: "small",
198
+ className: "shrink-0 p-0.5! text-ds-color-fg-subtle",
199
+ "aria-label": "More options",
200
+ onClick: onMenuClick,
201
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
202
+ width: 18,
203
+ height: 18
204
+ })
205
+ })]
206
+ })]
207
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
208
+ className: "w-full",
209
+ children
210
+ })]
211
+ });
212
+ };
213
+ //#endregion
214
+ //#region src/components/data-display/dashboard-cards/TopProductsCard.tsx
215
+ var RankBadge = ({ rank }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
216
+ className: "inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md border text-xs font-semibold border-ds-border-3/80 ",
217
+ style: {
218
+ borderColor: "var(--ds-color-accent)",
219
+ color: "var(--ds-color-accent)"
220
+ },
221
+ "aria-label": `Rank ${rank}`,
222
+ children: rank
223
+ });
224
+ var ProductImage = ({ src, alt }) => {
225
+ if (src) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
226
+ src,
227
+ alt,
228
+ className: "h-11 w-11 shrink-0 rounded-md object-contain bg-ds-color-bg-utility p-1"
229
+ });
230
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
231
+ className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-md bg-ds-color-bg-utility text-ds-color-fg-subtle text-lg",
232
+ "aria-hidden": "true",
233
+ children: "□"
234
+ });
235
+ };
236
+ var TopProductsCard = ({ title = "Top Products", items, className, onMenuClick }) => {
237
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
238
+ className: require_utils.mergeClassNames("flex flex-col rounded-lg border border-ds-border-3/80 bg-ds-surface-1 p-5", className),
239
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
240
+ className: "mb-4 flex items-center justify-between",
241
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
242
+ className: "text-sm font-semibold text-ds-color-fg",
243
+ children: title
244
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
245
+ variant: "tertiary",
246
+ size: "small",
247
+ className: "shrink-0 p-0.5! text-ds-color-fg-subtle",
248
+ "aria-label": "More options",
249
+ onClick: onMenuClick,
250
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
251
+ width: 18,
252
+ height: 18
253
+ })
254
+ })]
255
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
256
+ className: "flex flex-col divide-y divide-ds-border-2",
257
+ role: "list",
258
+ children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
259
+ className: "flex items-center gap-3 py-3 first:pt-0 last:pb-0",
260
+ children: [
261
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProductImage, {
262
+ src: item.image,
263
+ alt: item.name
264
+ }),
265
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
266
+ className: "flex min-w-0 flex-1 flex-col gap-0.5",
267
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
268
+ className: "truncate text-sm font-semibold text-ds-color-fg",
269
+ children: item.name
270
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
271
+ className: "truncate text-xs text-ds-color-fg-subtle",
272
+ children: [
273
+ item.category,
274
+ " · ",
275
+ item.soldCount.toLocaleString(),
276
+ " sold"
277
+ ]
278
+ })]
279
+ }),
280
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RankBadge, { rank: item.rank })
281
+ ]
282
+ }, item.id))
283
+ })]
284
+ });
285
+ };
286
+ //#endregion
287
+ //#region src/components/data-display/dashboard-cards/EarningsCard.tsx
288
+ var TrendBadge$2 = ({ value, direction }) => {
289
+ const isUp = direction === "up";
290
+ const color = isUp ? "var(--ds-color-success)" : "var(--ds-color-danger)";
291
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
292
+ className: "inline-flex items-center gap-1 rounded-sm border px-1.5 py-0.5 text-[11px] font-semibold leading-none",
293
+ style: {
294
+ color,
295
+ borderColor: color,
296
+ backgroundColor: isUp ? "var(--ds-color-success-subtle)" : "var(--ds-color-danger-subtle)"
297
+ },
298
+ "aria-label": `${value} ${isUp ? "increase" : "decrease"}`,
299
+ children: [value, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
300
+ width: "10",
301
+ height: "10",
302
+ viewBox: "0 0 10 10",
303
+ fill: "none",
304
+ "aria-hidden": "true",
305
+ children: isUp ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
306
+ d: "M5 8V2M5 2L2 5M5 2L8 5",
307
+ stroke: "currentColor",
308
+ strokeWidth: "1.5",
309
+ strokeLinecap: "round",
310
+ strokeLinejoin: "round"
311
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
312
+ d: "M5 2V8M5 8L2 5M5 8L8 5",
313
+ stroke: "currentColor",
314
+ strokeWidth: "1.5",
315
+ strokeLinecap: "round",
316
+ strokeLinejoin: "round"
317
+ })
318
+ })]
319
+ });
320
+ };
321
+ var BarChartSection = ({ weeklyData, barSize = 16, height = 90 }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
322
+ style: { height },
323
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
324
+ width: "100%",
325
+ height: "100%",
326
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
327
+ data: weeklyData,
328
+ barSize,
329
+ barCategoryGap: "25%",
330
+ margin: {
331
+ top: 4,
332
+ right: 0,
333
+ left: 0,
334
+ bottom: 0
335
+ },
336
+ children: [
337
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, {
338
+ dataKey: "day",
339
+ axisLine: false,
340
+ tickLine: false,
341
+ tick: {
342
+ fill: "var(--ds-color-fg-muted)",
343
+ fontSize: 10
344
+ },
345
+ dy: 6
346
+ }),
347
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
348
+ contentStyle: require_chartStyles.chartTooltipContentStyle,
349
+ itemStyle: require_chartStyles.chartTooltipItemStyle,
350
+ labelStyle: require_chartStyles.chartTooltipLabelStyle,
351
+ wrapperStyle: require_chartStyles.chartTooltipWrapperStyle,
352
+ cursor: false
353
+ }),
354
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
355
+ dataKey: "value",
356
+ radius: [
357
+ 4,
358
+ 4,
359
+ 0,
360
+ 0
361
+ ],
362
+ children: weeklyData.map((entry, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Cell, { fill: entry.highlighted ? "var(--ds-color-accent)" : "var(--ds-color-accent-subtle)" }, i))
363
+ })
364
+ ]
365
+ })
366
+ })
367
+ });
368
+ var MetricsStrip = ({ metrics, large = false }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
369
+ className: "mx-5 mb-5 rounded-lg border border-ds-border-3/60 bg-ds-surface-2/50 px-1 py-3",
370
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
371
+ className: "grid grid-cols-3 divide-x divide-ds-border-3/50",
372
+ children: metrics.slice(0, 3).map((metric, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
373
+ className: require_utils.mergeClassNames("flex flex-col gap-2 px-4", large && "gap-3 px-5"),
374
+ children: [
375
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
376
+ className: "flex items-center gap-1.5",
377
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
378
+ className: require_utils.mergeClassNames("inline-flex shrink-0 items-center justify-center rounded-full", large ? "h-6 w-6 text-xs" : "h-5 w-5 text-[10px]"),
379
+ style: {
380
+ backgroundColor: metric.color + "28",
381
+ color: metric.color
382
+ },
383
+ "aria-hidden": "true",
384
+ children: metric.icon
385
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
386
+ className: require_utils.mergeClassNames("truncate text-ds-2", large ? "text-sm" : "text-xs"),
387
+ children: metric.label
388
+ })]
389
+ }),
390
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
391
+ className: require_utils.mergeClassNames("font-bold text-ds-1", large ? "text-base" : "text-sm"),
392
+ children: metric.value
393
+ }),
394
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
395
+ className: "h-[3px] w-full overflow-hidden rounded-full bg-ds-border-3/50",
396
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
397
+ className: "h-full rounded-full transition-all duration-500",
398
+ style: {
399
+ width: `${Math.min(100, Math.max(0, metric.progress))}%`,
400
+ backgroundColor: metric.color
401
+ }
402
+ })
403
+ })
404
+ ]
405
+ }, i))
406
+ })
407
+ });
408
+ var EarningsCard = ({ title = "Earning Reports", subtitle = "Weekly Earnings Overview", value, badge, description, weeklyData, metrics, size = "md", className, onMenuClick }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
409
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
410
+ children: [
411
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
412
+ className: "flex items-start justify-between px-5 pb-3 pt-5",
413
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
414
+ className: "text-base font-bold text-ds-1",
415
+ children: title
416
+ }), subtitle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
417
+ className: "mt-0.5 text-xs text-ds-3",
418
+ children: subtitle
419
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
420
+ variant: "tertiary",
421
+ size: "small",
422
+ className: "shrink-0 p-0.5! text-ds-3",
423
+ "aria-label": "More options",
424
+ onClick: onMenuClick,
425
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
426
+ width: 18,
427
+ height: 18
428
+ })
429
+ })]
430
+ }),
431
+ size === "md" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
432
+ className: "flex items-start gap-4 px-5 pb-5",
433
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
434
+ className: "min-w-0 flex-1",
435
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
436
+ className: "flex items-center gap-2",
437
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
438
+ className: "text-4xl font-bold tracking-tight text-ds-1",
439
+ children: value
440
+ }), badge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrendBadge$2, {
441
+ value: badge.value,
442
+ direction: badge.direction
443
+ })]
444
+ }), description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
445
+ className: "mt-2 max-w-[180px] text-xs leading-relaxed text-ds-3",
446
+ children: description
447
+ })]
448
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
449
+ className: "w-[185px] shrink-0",
450
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BarChartSection, {
451
+ weeklyData,
452
+ barSize: 16,
453
+ height: 90
454
+ })
455
+ })]
456
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MetricsStrip, { metrics })] }),
457
+ size === "lg" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
458
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
459
+ className: "px-5 pb-4",
460
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
461
+ className: "flex items-center gap-3",
462
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
463
+ className: "text-5xl font-bold tracking-tight text-ds-1",
464
+ children: value
465
+ }), badge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrendBadge$2, {
466
+ value: badge.value,
467
+ direction: badge.direction
468
+ })]
469
+ }), description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
470
+ className: "mt-2 text-sm leading-relaxed text-ds-3",
471
+ children: description
472
+ })]
473
+ }),
474
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
475
+ className: "px-5 pb-5",
476
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BarChartSection, {
477
+ weeklyData,
478
+ barSize: 24,
479
+ height: 160
480
+ })
481
+ }),
482
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MetricsStrip, {
483
+ metrics,
484
+ large: true
485
+ })
486
+ ] })
487
+ ]
488
+ });
489
+ //#endregion
490
+ //#region src/components/data-display/dashboard-cards/SupportTrackerCard.tsx
491
+ function GaugeChart({ percentage, label = "Completed Task", size = 190 }) {
492
+ const segments = 26;
493
+ const filledCount = Math.round(percentage / 100 * segments);
494
+ const cx = size / 2;
495
+ const cy = size * .5;
496
+ const radius = size * .4;
497
+ const segW = size * .03;
498
+ const segH = size * .1;
499
+ const startAngle = 135;
500
+ const step = 270 / segments;
501
+ const viewH = Math.ceil(cy + radius * .78 + segH);
502
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
503
+ width: "100%",
504
+ viewBox: `0 0 ${size} ${viewH}`,
505
+ style: { aspectRatio: `${size} / ${viewH}` },
506
+ "aria-label": `${percentage}% ${label}`,
507
+ role: "img",
508
+ children: [
509
+ Array.from({ length: segments }, (_, i) => {
510
+ const angleDeg = startAngle + (i + .5) * step;
511
+ const angleRad = angleDeg * Math.PI / 180;
512
+ const x = cx + radius * Math.cos(angleRad);
513
+ const y = cy + radius * Math.sin(angleRad);
514
+ const filled = i < filledCount;
515
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
516
+ x: -segW / 2,
517
+ y: -segH / 2,
518
+ width: segW,
519
+ height: segH,
520
+ rx: segW / 2,
521
+ fill: filled ? "var(--ds-color-accent)" : "var(--ds-color-border-3)",
522
+ opacity: filled ? 1 : .45,
523
+ transform: `translate(${x}, ${y}) rotate(${angleDeg - 90})`
524
+ }, i);
525
+ }),
526
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("text", {
527
+ x: cx,
528
+ y: cy - size * .04,
529
+ textAnchor: "middle",
530
+ dominantBaseline: "middle",
531
+ fontSize: size * .085,
532
+ fill: "var(--ds-color-fg-muted)",
533
+ children: label
534
+ }),
535
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("text", {
536
+ x: cx,
537
+ y: cy + size * .12,
538
+ textAnchor: "middle",
539
+ dominantBaseline: "middle",
540
+ fontSize: size * .22,
541
+ fontWeight: "700",
542
+ fill: "var(--ds-color-fg)",
543
+ children: [percentage, "%"]
544
+ })
545
+ ]
546
+ });
547
+ }
548
+ var SupportTrackerCard = ({ title = "Support Tracker", subtitle = "Last 7 Days", total, totalLabel = "Total Tickets", items, percentage, completedLabel = "Completed Task", className, onMenuClick }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
549
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
550
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
551
+ className: "flex items-start justify-between px-5 pb-3 pt-5",
552
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
553
+ className: "text-base font-bold text-ds-1",
554
+ children: title
555
+ }), subtitle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
556
+ className: "mt-0.5 text-xs text-ds-3",
557
+ children: subtitle
558
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
559
+ variant: "tertiary",
560
+ size: "small",
561
+ className: "shrink-0 p-0.5! text-ds-3",
562
+ "aria-label": "More options",
563
+ onClick: onMenuClick,
564
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
565
+ width: 18,
566
+ height: 18
567
+ })
568
+ })]
569
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
570
+ className: "flex items-center gap-3 px-5 pb-6",
571
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
572
+ className: "flex flex-[1_1_0] flex-col gap-5 min-w-0",
573
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
574
+ className: "text-4xl font-bold tracking-tight text-ds-1",
575
+ children: total
576
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
577
+ className: "mt-0.5 text-xs text-ds-3",
578
+ children: totalLabel
579
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
580
+ className: "flex flex-col gap-3",
581
+ children: items.map((item, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
582
+ className: "flex items-center gap-3",
583
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
584
+ className: "inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-md",
585
+ style: {
586
+ backgroundColor: item.iconColor + "22",
587
+ color: item.iconColor
588
+ },
589
+ "aria-hidden": "true",
590
+ children: item.icon
591
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
592
+ className: "min-w-0",
593
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Tooltip.Tooltip, {
594
+ content: item.label,
595
+ position: "top",
596
+ delayShow: 400,
597
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_truncated_text.TruncatedText, {
598
+ showTitleOnHover: true,
599
+ className: "text-sm font-semibold text-ds-1",
600
+ children: item.label
601
+ })
602
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
603
+ className: "text-xs text-ds-3",
604
+ children: item.value
605
+ })]
606
+ })]
607
+ }, i))
608
+ })]
609
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
610
+ className: "flex-[1_1_0] min-w-0",
611
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(GaugeChart, {
612
+ percentage,
613
+ label: completedLabel,
614
+ size: 190
615
+ })
616
+ })]
617
+ })]
618
+ });
619
+ //#endregion
620
+ //#region src/components/data-display/dashboard-cards/SalesOverviewCard.tsx
621
+ var TrendBadge$1 = ({ value, direction }) => {
622
+ const isUp = direction === "up";
623
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
624
+ className: "text-sm font-semibold",
625
+ style: {
626
+ color: isUp ? "var(--ds-color-success)" : "var(--ds-color-danger)",
627
+ backgroundColor: isUp ? "var(--ds-color-success-subtle)" : "var(--ds-color-danger-subtle)"
628
+ },
629
+ "aria-label": `${value} ${isUp ? "increase" : "decrease"}`,
630
+ children: value
631
+ });
632
+ };
633
+ function parsePercent(s) {
634
+ return parseFloat(s.replace("%", "")) || 0;
635
+ }
636
+ var SalesOverviewCard = ({ title = "Sales Overview", badge, value, leftMetric, rightMetric, leftProgress, vsLabel = "VS", className }) => {
637
+ const leftPct = parsePercent(leftMetric.percentage);
638
+ const total = leftPct + parsePercent(rightMetric.percentage);
639
+ const resolvedLeftProgress = leftProgress ?? (total > 0 ? leftPct / total * 100 : 50);
640
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
641
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1 p-5", className),
642
+ children: [
643
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
644
+ className: "mb-1 flex items-center justify-between gap-2",
645
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
646
+ className: "text-sm font-semibold text-ds-1",
647
+ children: title
648
+ }), badge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrendBadge$1, {
649
+ value: badge.value,
650
+ direction: badge.direction
651
+ })]
652
+ }),
653
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
654
+ className: "mb-5 text-3xl font-bold tracking-tight text-ds-1",
655
+ children: value
656
+ }),
657
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
658
+ className: "relative mb-5 flex items-start",
659
+ children: [
660
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
661
+ className: "flex flex-1 flex-col gap-1",
662
+ children: [
663
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
664
+ className: "flex items-center gap-1.5 text-xs text-ds-2",
665
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
666
+ className: "inline-flex h-6 w-6 items-center justify-center rounded-md",
667
+ style: {
668
+ backgroundColor: leftMetric.color + "20",
669
+ color: leftMetric.color
670
+ },
671
+ "aria-hidden": "true",
672
+ children: leftMetric.icon
673
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
674
+ className: "font-medium",
675
+ children: leftMetric.label
676
+ })]
677
+ }),
678
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
679
+ className: "text-2xl font-bold text-ds-1",
680
+ children: leftMetric.percentage
681
+ }),
682
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
683
+ className: "text-xs text-ds-3",
684
+ children: leftMetric.count
685
+ })
686
+ ]
687
+ }),
688
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
689
+ className: "relative flex flex-col items-center self-stretch",
690
+ children: [
691
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "w-px flex-1 bg-ds-border-3" }),
692
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
693
+ className: "my-2 flex h-7 w-7 items-center justify-center rounded-full border border-ds-border-3 bg-ds-surface-1 text-[9px] font-bold text-ds-3",
694
+ children: vsLabel
695
+ }),
696
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "w-px flex-1 bg-ds-border-3" })
697
+ ]
698
+ }),
699
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
700
+ className: "flex flex-1 flex-col items-end gap-1",
701
+ children: [
702
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
703
+ className: "flex items-center gap-1.5 text-xs text-ds-2",
704
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
705
+ className: "font-medium",
706
+ children: rightMetric.label
707
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
708
+ className: "inline-flex h-6 w-6 items-center justify-center rounded-md",
709
+ style: {
710
+ backgroundColor: rightMetric.color + "20",
711
+ color: rightMetric.color
712
+ },
713
+ "aria-hidden": "true",
714
+ children: rightMetric.icon
715
+ })]
716
+ }),
717
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
718
+ className: "text-2xl font-bold text-ds-1",
719
+ children: rightMetric.percentage
720
+ }),
721
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
722
+ className: "text-xs text-ds-3",
723
+ children: rightMetric.count
724
+ })
725
+ ]
726
+ })
727
+ ]
728
+ }),
729
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
730
+ className: "flex h-2 w-full overflow-hidden rounded-full",
731
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
732
+ className: "h-full rounded-l-full transition-all duration-500",
733
+ style: {
734
+ width: `${resolvedLeftProgress}%`,
735
+ backgroundColor: leftMetric.color
736
+ }
737
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
738
+ className: "h-full flex-1 rounded-r-full transition-all duration-500",
739
+ style: { backgroundColor: rightMetric.color }
740
+ })]
741
+ })
742
+ ]
743
+ });
744
+ };
745
+ //#endregion
746
+ //#region src/components/data-display/dashboard-cards/RevenueGrowthCard.tsx
747
+ var TrendBadge = ({ value, direction, color, bg }) => {
748
+ const isUp = direction === "up";
749
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
750
+ className: "inline-flex items-center gap-1 rounded-md px-2 py-0.5 text-xs font-semibold",
751
+ style: {
752
+ color: color ?? (isUp ? "var(--ds-color-success)" : "var(--ds-color-danger)"),
753
+ backgroundColor: bg ?? (isUp ? "var(--ds-color-success-subtle)" : "var(--ds-color-danger-subtle)")
754
+ },
755
+ "aria-label": `${value} ${isUp ? "increase" : "decrease"}`,
756
+ children: value
757
+ });
758
+ };
759
+ var RevenueGrowthCard = ({ title = "Revenue Growth", subtitle = "Weekly Report", value, badge, weeklyData, highlightColor = "var(--ds-color-success)", barColor, className }) => {
760
+ const resolvedBarColor = barColor ?? highlightColor + "38";
761
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
762
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1 p-5", className),
763
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
764
+ className: "mb-4",
765
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
766
+ className: "text-base font-bold text-ds-1",
767
+ children: title
768
+ }), subtitle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
769
+ className: "mt-0.5 text-xs text-ds-3",
770
+ children: subtitle
771
+ })]
772
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
773
+ className: "flex items-end gap-4",
774
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
775
+ className: "flex flex-col gap-2",
776
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
777
+ className: "text-4xl font-bold tracking-tight text-ds-1",
778
+ children: value
779
+ }), badge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrendBadge, {
780
+ value: badge.value,
781
+ direction: badge.direction,
782
+ color: highlightColor,
783
+ bg: highlightColor + "22"
784
+ })]
785
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
786
+ className: "min-w-0 flex-1 pb-1",
787
+ style: { height: 100 },
788
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
789
+ width: "100%",
790
+ height: "100%",
791
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
792
+ data: weeklyData,
793
+ barSize: 14,
794
+ barCategoryGap: "25%",
795
+ margin: {
796
+ top: 4,
797
+ right: 0,
798
+ left: 0,
799
+ bottom: 0
800
+ },
801
+ children: [
802
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, {
803
+ dataKey: "day",
804
+ axisLine: false,
805
+ tickLine: false,
806
+ tick: {
807
+ fill: "var(--ds-color-fg-muted)",
808
+ fontSize: 10
809
+ },
810
+ dy: 6
811
+ }),
812
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
813
+ contentStyle: require_chartStyles.chartTooltipContentStyle,
814
+ itemStyle: require_chartStyles.chartTooltipItemStyle,
815
+ labelStyle: require_chartStyles.chartTooltipLabelStyle,
816
+ wrapperStyle: require_chartStyles.chartTooltipWrapperStyle,
817
+ cursor: false
818
+ }),
819
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
820
+ dataKey: "value",
821
+ radius: [
822
+ 4,
823
+ 4,
824
+ 0,
825
+ 0
826
+ ],
827
+ children: weeklyData.map((entry, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Cell, { fill: entry.highlighted ? highlightColor : resolvedBarColor }, i))
828
+ })
829
+ ]
830
+ })
831
+ })
832
+ })]
833
+ })]
834
+ });
835
+ };
836
+ //#endregion
837
+ //#region src/components/data-display/dashboard-cards/EarningReportsTabsCard.tsx
838
+ function defaultKFormatter(value) {
839
+ if (value >= 1e3) return `${Math.round(value / 1e3)}k`;
840
+ return String(value);
841
+ }
842
+ var EarningReportsTabsCard = ({ title = "Earning Reports", subtitle = "Yearly Earnings Overview", tabs, selectedTabId, onTabChange, defaultTabId, yAxisFormatter = defaultKFormatter, barLabelFormatter, showAddTab = true, onAddTab, className, onMenuClick }) => {
843
+ const [internalId, setInternalId] = (0, react.useState)(defaultTabId ?? tabs[0]?.id ?? "");
844
+ const isControlled = selectedTabId !== void 0;
845
+ const activeId = isControlled ? selectedTabId : internalId;
846
+ const handleTabChange = (id) => {
847
+ if (!isControlled) setInternalId(id);
848
+ onTabChange?.(id);
849
+ };
850
+ const activeTab = tabs.find((t) => t.id === activeId) ?? tabs[0];
851
+ const labelFormatter = barLabelFormatter ?? yAxisFormatter;
852
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
853
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
854
+ children: [
855
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
856
+ className: "flex items-start justify-between px-5 pb-4 pt-5",
857
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
858
+ className: "text-base font-bold text-ds-1",
859
+ children: title
860
+ }), subtitle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
861
+ className: "mt-0.5 text-xs text-ds-3",
862
+ children: subtitle
863
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
864
+ variant: "tertiary",
865
+ size: "small",
866
+ className: "shrink-0 p-0.5! text-ds-3",
867
+ "aria-label": "More options",
868
+ onClick: onMenuClick,
869
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
870
+ width: 18,
871
+ height: 18
872
+ })
873
+ })]
874
+ }),
875
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
876
+ className: "flex items-center gap-3 overflow-x-auto px-5 pb-5",
877
+ children: [tabs.map((tab) => {
878
+ const isActive = tab.id === activeId;
879
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_button.Button, {
880
+ variant: "tertiary",
881
+ onClick: () => handleTabChange(tab.id),
882
+ className: require_utils.mergeClassNames("min-w-[72px] flex-col gap-1.5 rounded-lg border p-3 transition-colors hover:opacity-100", isActive ? "border-ds-accent bg-ds-accent-subtle text-ds-accent" : "border-ds-border-3 bg-ds-surface-1 text-ds-2 hover:border-ds-border-accent/30 hover:bg-ds-surface-2"),
883
+ "aria-pressed": isActive,
884
+ "aria-label": tab.label,
885
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
886
+ className: "flex h-6 w-6 items-center justify-center",
887
+ children: tab.icon
888
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
889
+ className: "text-xs font-semibold",
890
+ children: tab.label
891
+ })]
892
+ }, tab.id);
893
+ }), showAddTab && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
894
+ variant: "tertiary",
895
+ onClick: onAddTab,
896
+ className: "min-w-[72px] flex-col gap-1.5 rounded-lg border border-dashed border-ds-border-3 p-3 text-ds-3 transition-colors hover:border-ds-border-2 hover:bg-ds-surface-2 hover:text-ds-2 hover:opacity-100",
897
+ "aria-label": "Add category",
898
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
899
+ className: "flex h-6 w-6 items-center justify-center text-lg font-light",
900
+ children: "+"
901
+ })
902
+ })]
903
+ }),
904
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
905
+ className: "px-2 pb-5",
906
+ style: { height: 280 },
907
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
908
+ width: "100%",
909
+ height: "100%",
910
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
911
+ data: activeTab?.chartData ?? [],
912
+ barSize: 36,
913
+ barCategoryGap: "25%",
914
+ margin: {
915
+ top: 28,
916
+ right: 16,
917
+ left: 0,
918
+ bottom: 0
919
+ },
920
+ children: [
921
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.CartesianGrid, {
922
+ strokeDasharray: "3 3",
923
+ vertical: false,
924
+ stroke: "var(--ds-color-border)",
925
+ opacity: .5
926
+ }),
927
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, {
928
+ dataKey: "name",
929
+ axisLine: false,
930
+ tickLine: false,
931
+ tick: {
932
+ fill: "var(--ds-color-fg-muted)",
933
+ fontSize: 12
934
+ },
935
+ dy: 10
936
+ }),
937
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {
938
+ axisLine: false,
939
+ tickLine: false,
940
+ tickFormatter: yAxisFormatter,
941
+ tick: {
942
+ fill: "var(--ds-color-fg-muted)",
943
+ fontSize: 11
944
+ },
945
+ dx: -4
946
+ }),
947
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
948
+ contentStyle: require_chartStyles.chartTooltipContentStyle,
949
+ itemStyle: require_chartStyles.chartTooltipItemStyle,
950
+ labelStyle: require_chartStyles.chartTooltipLabelStyle,
951
+ wrapperStyle: require_chartStyles.chartTooltipWrapperStyle,
952
+ cursor: {
953
+ fill: "var(--ds-color-accent)",
954
+ fillOpacity: .06
955
+ },
956
+ formatter: (v) => [labelFormatter(Number(v)), activeTab?.label]
957
+ }),
958
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.Bar, {
959
+ dataKey: "value",
960
+ radius: [
961
+ 4,
962
+ 4,
963
+ 0,
964
+ 0
965
+ ],
966
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.LabelList, {
967
+ dataKey: "value",
968
+ position: "top",
969
+ formatter: (v) => labelFormatter(Number(v)),
970
+ style: {
971
+ fontSize: 11,
972
+ fill: "var(--ds-color-fg-muted)",
973
+ fontWeight: 600
974
+ }
975
+ }), (activeTab?.chartData ?? []).map((entry, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Cell, { fill: entry.highlighted ? "var(--ds-color-accent)" : "var(--ds-color-accent-subtle)" }, i))]
976
+ })
977
+ ]
978
+ })
979
+ })
980
+ })
981
+ ]
982
+ });
983
+ };
984
+ //#endregion
985
+ //#region src/components/data-display/dashboard-cards/TopicsCard.tsx
986
+ function BarLabel({ x = 0, y = 0, width = 0, height = 0, value = "" }) {
987
+ const pad = 10;
988
+ const availW = width - pad * 2;
989
+ if (availW < 24) return null;
990
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("foreignObject", {
991
+ x: x + pad,
992
+ y,
993
+ width: availW,
994
+ height,
995
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
996
+ style: {
997
+ height: "100%",
998
+ display: "flex",
999
+ alignItems: "center",
1000
+ overflow: "hidden"
1001
+ },
1002
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_truncated_text.TruncatedText, {
1003
+ showTitleOnHover: true,
1004
+ style: {
1005
+ color: "#fff",
1006
+ fontSize: 12,
1007
+ fontWeight: 600,
1008
+ lineHeight: 1
1009
+ },
1010
+ children: value
1011
+ })
1012
+ })
1013
+ });
1014
+ }
1015
+ var TopicsCard = ({ title = "Topic you are interested in", items, xTickFormatter = (v) => `${v}%`, className, onMenuClick }) => {
1016
+ const chartData = [...items].sort((a, b) => b.percentage - a.percentage).map((item, i) => ({
1017
+ ...item,
1018
+ rank: items.length - i
1019
+ }));
1020
+ const maxValue = Math.max(...items.map((it) => it.percentage), 1);
1021
+ const xMax = Math.ceil(maxValue / 7) * 7;
1022
+ const xTicks = Array.from({ length: Math.floor(xMax / 7) + 1 }, (_, i) => i * 7);
1023
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1024
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
1025
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1026
+ className: "flex items-start justify-between px-5 pb-4 pt-5",
1027
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1028
+ className: "text-base font-bold text-ds-1",
1029
+ children: title
1030
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
1031
+ variant: "tertiary",
1032
+ size: "small",
1033
+ className: "shrink-0 p-0.5! text-ds-3",
1034
+ "aria-label": "More options",
1035
+ onClick: onMenuClick,
1036
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
1037
+ width: 18,
1038
+ height: 18
1039
+ })
1040
+ })]
1041
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1042
+ className: "flex items-center gap-4 px-5 pb-6",
1043
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1044
+ className: "min-w-0 flex-1",
1045
+ style: { height: items.length * 42 + 32 },
1046
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
1047
+ width: "100%",
1048
+ height: "100%",
1049
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
1050
+ data: chartData,
1051
+ layout: "vertical",
1052
+ barSize: 28,
1053
+ barCategoryGap: "20%",
1054
+ margin: {
1055
+ top: 0,
1056
+ right: 16,
1057
+ left: 8,
1058
+ bottom: 24
1059
+ },
1060
+ children: [
1061
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.CartesianGrid, {
1062
+ strokeDasharray: "3 3",
1063
+ horizontal: false,
1064
+ stroke: "var(--ds-color-border)",
1065
+ opacity: .5
1066
+ }),
1067
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, {
1068
+ type: "number",
1069
+ domain: [0, xMax],
1070
+ ticks: xTicks,
1071
+ tickFormatter: xTickFormatter,
1072
+ axisLine: false,
1073
+ tickLine: false,
1074
+ tick: {
1075
+ fill: "var(--ds-color-fg-muted)",
1076
+ fontSize: 11
1077
+ },
1078
+ dy: 10
1079
+ }),
1080
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {
1081
+ type: "category",
1082
+ dataKey: "rank",
1083
+ axisLine: false,
1084
+ tickLine: false,
1085
+ tick: {
1086
+ fill: "var(--ds-color-fg-muted)",
1087
+ fontSize: 11
1088
+ },
1089
+ dx: -4,
1090
+ width: 16
1091
+ }),
1092
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
1093
+ contentStyle: require_chartStyles.chartTooltipContentStyle,
1094
+ itemStyle: require_chartStyles.chartTooltipItemStyle,
1095
+ labelStyle: require_chartStyles.chartTooltipLabelStyle,
1096
+ wrapperStyle: require_chartStyles.chartTooltipWrapperStyle,
1097
+ cursor: { fill: "rgba(0,0,0,0.04)" },
1098
+ formatter: (v, _name, props) => [`${Number(v)}%`, props.payload?.label ?? ""],
1099
+ labelFormatter: () => ""
1100
+ }),
1101
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.Bar, {
1102
+ dataKey: "percentage",
1103
+ radius: [
1104
+ 0,
1105
+ 4,
1106
+ 4,
1107
+ 0
1108
+ ],
1109
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.LabelList, {
1110
+ dataKey: "label",
1111
+ content: (props) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BarLabel, { ...props })
1112
+ }), chartData.map((entry, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Cell, { fill: entry.color }, i))]
1113
+ })
1114
+ ]
1115
+ })
1116
+ })
1117
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1118
+ className: "grid shrink-0 grid-cols-2 gap-x-6 gap-y-4",
1119
+ children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1120
+ className: "flex flex-col gap-0.5",
1121
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1122
+ className: "flex items-center gap-1.5",
1123
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1124
+ className: "inline-block h-2.5 w-2.5 shrink-0 rounded-full",
1125
+ style: { backgroundColor: item.color },
1126
+ "aria-hidden": "true"
1127
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1128
+ className: "text-xs text-ds-2",
1129
+ children: item.label
1130
+ })]
1131
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
1132
+ className: "ps-4 text-sm font-bold text-ds-1",
1133
+ children: [item.percentage, "%"]
1134
+ })]
1135
+ }, item.label))
1136
+ })]
1137
+ })]
1138
+ });
1139
+ };
1140
+ //#endregion
1141
+ //#region src/components/data-display/dashboard-cards/ShipmentStatisticsCard.tsx
1142
+ var ChevronDownIcon$2 = () => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
1143
+ width: "13",
1144
+ height: "13",
1145
+ viewBox: "0 0 24 24",
1146
+ fill: "none",
1147
+ stroke: "currentColor",
1148
+ strokeWidth: "2.5",
1149
+ strokeLinecap: "round",
1150
+ strokeLinejoin: "round",
1151
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("polyline", { points: "6 9 12 15 18 9" })
1152
+ });
1153
+ var ShipmentStatisticsCard = ({ title = "Shipment statistics", subtitle, data, months = [
1154
+ "January",
1155
+ "February",
1156
+ "March",
1157
+ "April",
1158
+ "May",
1159
+ "June",
1160
+ "July",
1161
+ "August",
1162
+ "September",
1163
+ "October",
1164
+ "November",
1165
+ "December"
1166
+ ], selectedMonth: controlledMonth, onMonthChange, defaultMonth, yAxisFormatter = (v) => `${v}%`, shipmentColor = "#FFB400", deliveryColor = "#7367F0", shipmentLabel = "Shipment", deliveryLabel = "Delivery", className }) => {
1167
+ const isControlled = controlledMonth !== void 0;
1168
+ const [internalMonth, setInternalMonth] = (0, react.useState)(defaultMonth ?? months[0] ?? "");
1169
+ const activeMonth = isControlled ? controlledMonth : internalMonth;
1170
+ const [dropdownOpen, setDropdownOpen] = (0, react.useState)(false);
1171
+ const dropdownRef = (0, react.useRef)(null);
1172
+ (0, react.useEffect)(() => {
1173
+ function handleClickOutside(e) {
1174
+ if (dropdownRef.current && !dropdownRef.current.contains(e.target)) setDropdownOpen(false);
1175
+ }
1176
+ if (dropdownOpen) document.addEventListener("mousedown", handleClickOutside);
1177
+ return () => document.removeEventListener("mousedown", handleClickOutside);
1178
+ }, [dropdownOpen]);
1179
+ const handleMonthSelect = (m) => {
1180
+ if (!isControlled) setInternalMonth(m);
1181
+ onMonthChange?.(m);
1182
+ setDropdownOpen(false);
1183
+ };
1184
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1185
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1 p-5", className),
1186
+ children: [
1187
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1188
+ className: "mb-5 flex items-start justify-between gap-4",
1189
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1190
+ className: "text-lg font-bold text-ds-1",
1191
+ children: title
1192
+ }), subtitle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1193
+ className: "mt-0.5 text-sm text-ds-3",
1194
+ children: subtitle
1195
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1196
+ ref: dropdownRef,
1197
+ className: "relative shrink-0",
1198
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_button.Button, {
1199
+ variant: "tertiary",
1200
+ size: "small",
1201
+ onClick: () => setDropdownOpen((o) => !o),
1202
+ className: "gap-1.5 rounded-md border border-ds-border-accent/30 bg-ds-accent-subtle px-3 py-1.5 text-sm font-semibold text-ds-accent hover:bg-ds-accent-subtle/80 hover:opacity-100",
1203
+ "aria-haspopup": "listbox",
1204
+ "aria-expanded": dropdownOpen,
1205
+ children: [activeMonth, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1206
+ className: require_utils.mergeClassNames("transition-transform duration-150", dropdownOpen ? "rotate-180" : ""),
1207
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChevronDownIcon$2, {})
1208
+ })]
1209
+ }), dropdownOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1210
+ role: "listbox",
1211
+ className: "absolute end-0 top-full z-20 mt-1 max-h-48 min-w-[130px] overflow-y-auto rounded-md border border-ds-border-2 bg-ds-surface-1 py-1 shadow-lg",
1212
+ children: months.map((m) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
1213
+ variant: "tertiary",
1214
+ size: "small",
1215
+ role: "option",
1216
+ "aria-selected": m === activeMonth,
1217
+ onClick: () => handleMonthSelect(m),
1218
+ className: require_utils.mergeClassNames("w-full justify-start rounded-none px-3 py-1.5 text-start text-sm hover:bg-ds-surface-2 hover:opacity-100", m === activeMonth ? "font-semibold text-ds-accent" : "text-ds-2"),
1219
+ children: m
1220
+ }, m))
1221
+ })]
1222
+ })]
1223
+ }),
1224
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1225
+ style: { height: 260 },
1226
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
1227
+ width: "100%",
1228
+ height: "100%",
1229
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.ComposedChart, {
1230
+ data,
1231
+ barSize: 22,
1232
+ barCategoryGap: "30%",
1233
+ margin: {
1234
+ top: 8,
1235
+ right: 8,
1236
+ left: 0,
1237
+ bottom: 0
1238
+ },
1239
+ children: [
1240
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.CartesianGrid, {
1241
+ strokeDasharray: "3 3",
1242
+ vertical: false,
1243
+ stroke: "var(--ds-color-border)",
1244
+ opacity: .5
1245
+ }),
1246
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, {
1247
+ dataKey: "date",
1248
+ axisLine: false,
1249
+ tickLine: false,
1250
+ tick: {
1251
+ fill: "var(--ds-color-fg-muted)",
1252
+ fontSize: 12
1253
+ },
1254
+ dy: 10
1255
+ }),
1256
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {
1257
+ axisLine: false,
1258
+ tickLine: false,
1259
+ tickFormatter: yAxisFormatter,
1260
+ tick: {
1261
+ fill: "var(--ds-color-fg-muted)",
1262
+ fontSize: 11
1263
+ },
1264
+ dx: -4,
1265
+ domain: [0, "auto"]
1266
+ }),
1267
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
1268
+ contentStyle: require_chartStyles.chartTooltipContentStyle,
1269
+ itemStyle: require_chartStyles.chartTooltipItemStyle,
1270
+ labelStyle: require_chartStyles.chartTooltipLabelStyle,
1271
+ wrapperStyle: require_chartStyles.chartTooltipWrapperStyle,
1272
+ cursor: { fill: "rgba(0,0,0,0.04)" },
1273
+ formatter: (v, name) => [yAxisFormatter(Number(v)), name === "shipment" ? shipmentLabel : deliveryLabel]
1274
+ }),
1275
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
1276
+ dataKey: "shipment",
1277
+ fill: shipmentColor,
1278
+ radius: [
1279
+ 4,
1280
+ 4,
1281
+ 0,
1282
+ 0
1283
+ ]
1284
+ }),
1285
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Line, {
1286
+ type: "monotone",
1287
+ dataKey: "delivery",
1288
+ stroke: deliveryColor,
1289
+ strokeWidth: 2.5,
1290
+ dot: {
1291
+ r: 3.5,
1292
+ fill: deliveryColor,
1293
+ strokeWidth: 0
1294
+ },
1295
+ activeDot: {
1296
+ r: 5,
1297
+ fill: deliveryColor,
1298
+ strokeWidth: 0
1299
+ }
1300
+ })
1301
+ ]
1302
+ })
1303
+ })
1304
+ }),
1305
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1306
+ className: "mt-4 flex items-center justify-center gap-6",
1307
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1308
+ className: "flex items-center gap-2",
1309
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1310
+ className: "inline-block h-2.5 w-2.5 shrink-0 rounded-full",
1311
+ style: { backgroundColor: shipmentColor },
1312
+ "aria-hidden": "true"
1313
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1314
+ className: "text-sm text-ds-2",
1315
+ children: shipmentLabel
1316
+ })]
1317
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1318
+ className: "flex items-center gap-2",
1319
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1320
+ className: "inline-block h-2.5 w-2.5 shrink-0 rounded-full",
1321
+ style: { backgroundColor: deliveryColor },
1322
+ "aria-hidden": "true"
1323
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1324
+ className: "text-sm text-ds-2",
1325
+ children: deliveryLabel
1326
+ })]
1327
+ })]
1328
+ })
1329
+ ]
1330
+ });
1331
+ };
1332
+ //#endregion
1333
+ //#region src/components/data-display/dashboard-cards/VehicleConditionCard.tsx
1334
+ var MiniGauge = ({ percentage, color, size = 62 }) => {
1335
+ const strokeWidth = 4;
1336
+ const r = (size - strokeWidth * 2) / 2;
1337
+ const cx = size / 2;
1338
+ const cy = size / 2;
1339
+ const circumference = 2 * Math.PI * r;
1340
+ const clamped = Math.max(0, Math.min(100, percentage));
1341
+ const dashOffset = circumference - clamped / 100 * circumference;
1342
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
1343
+ width: size,
1344
+ height: size,
1345
+ viewBox: `0 0 ${size} ${size}`,
1346
+ "aria-hidden": "true",
1347
+ children: [
1348
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
1349
+ cx,
1350
+ cy,
1351
+ r,
1352
+ fill: "none",
1353
+ stroke: "var(--ds-color-border)",
1354
+ strokeWidth
1355
+ }),
1356
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
1357
+ cx,
1358
+ cy,
1359
+ r,
1360
+ fill: "none",
1361
+ stroke: color,
1362
+ strokeWidth,
1363
+ strokeDasharray: circumference,
1364
+ strokeDashoffset: dashOffset,
1365
+ strokeLinecap: "round",
1366
+ transform: `rotate(-90 ${cx} ${cy})`
1367
+ }),
1368
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("text", {
1369
+ x: cx,
1370
+ y: cy,
1371
+ textAnchor: "middle",
1372
+ dominantBaseline: "middle",
1373
+ fontSize: size * .21,
1374
+ fontWeight: "700",
1375
+ fill: "var(--ds-color-fg)",
1376
+ children: [clamped, "%"]
1377
+ })
1378
+ ]
1379
+ });
1380
+ };
1381
+ var VehicleConditionCard = ({ title = "Vehicle Condition", items, className, onMenuClick }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1382
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
1383
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1384
+ className: "flex items-start justify-between px-5 pb-2 pt-5",
1385
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1386
+ className: "text-base font-bold text-ds-1",
1387
+ children: title
1388
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
1389
+ variant: "tertiary",
1390
+ size: "small",
1391
+ className: "shrink-0 p-0.5! text-ds-3",
1392
+ "aria-label": "More options",
1393
+ onClick: onMenuClick,
1394
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
1395
+ width: 18,
1396
+ height: 18
1397
+ })
1398
+ })]
1399
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1400
+ className: "divide-y divide-ds-border-3/50 px-5 pb-4",
1401
+ children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1402
+ className: "flex items-center gap-4 py-3",
1403
+ children: [
1404
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1405
+ className: "shrink-0",
1406
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MiniGauge, {
1407
+ percentage: item.percentage,
1408
+ color: item.color
1409
+ })
1410
+ }),
1411
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1412
+ className: "min-w-0 flex-1",
1413
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1414
+ className: "text-sm font-semibold leading-tight",
1415
+ style: { color: item.color },
1416
+ children: item.label
1417
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1418
+ className: "mt-0.5 text-xs text-ds-3",
1419
+ children: item.sublabel
1420
+ })]
1421
+ }),
1422
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1423
+ className: "shrink-0 rounded-md bg-ds-surface-2 px-2.5 py-1 text-xs font-semibold text-ds-2",
1424
+ children: item.badge
1425
+ })
1426
+ ]
1427
+ }, item.label))
1428
+ })]
1429
+ });
1430
+ //#endregion
1431
+ //#region src/components/data-display/dashboard-cards/VehiclesOverviewCard.tsx
1432
+ var VehiclesOverviewCard = ({ title = "Vehicles Overview", items, className, onMenuClick }) => {
1433
+ const totalPct = items.reduce((sum, item) => sum + item.percentage, 0);
1434
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1435
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
1436
+ children: [
1437
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1438
+ className: "flex items-start justify-between px-5 pb-2 pt-5",
1439
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1440
+ className: "text-base font-bold text-ds-1",
1441
+ children: title
1442
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
1443
+ variant: "tertiary",
1444
+ size: "small",
1445
+ className: "shrink-0 p-0.5! text-ds-3",
1446
+ "aria-label": "More options",
1447
+ onClick: onMenuClick,
1448
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
1449
+ width: 18,
1450
+ height: 18
1451
+ })
1452
+ })]
1453
+ }),
1454
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1455
+ className: "flex items-center px-5 pb-3",
1456
+ children: items.map((item, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1457
+ className: "flex flex-1 items-center",
1458
+ children: [i > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "me-3 h-8 w-px shrink-0 bg-ds-border-3/60" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1459
+ className: "text-xs font-medium text-ds-3",
1460
+ children: item.label
1461
+ })]
1462
+ }, item.label))
1463
+ }),
1464
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1465
+ className: "mx-5 mb-5 flex h-3 overflow-hidden rounded-full",
1466
+ children: items.map((item, i) => {
1467
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1468
+ style: {
1469
+ width: `${totalPct > 0 ? item.percentage / totalPct * 100 : 0}%`,
1470
+ backgroundColor: item.color
1471
+ },
1472
+ className: require_utils.mergeClassNames("h-full transition-all", i === 0 && "rounded-s-full", i === items.length - 1 && "rounded-e-full"),
1473
+ role: "presentation",
1474
+ "aria-label": `${item.label}: ${item.percentage}%`
1475
+ }, item.label);
1476
+ })
1477
+ }),
1478
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1479
+ className: "divide-y divide-ds-border-3/50 px-5 pb-4",
1480
+ children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1481
+ className: "flex items-center gap-3 py-3",
1482
+ children: [
1483
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1484
+ className: "flex size-9 shrink-0 items-center justify-center rounded-full",
1485
+ style: { backgroundColor: `${item.color}1a` },
1486
+ "aria-hidden": "true",
1487
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1488
+ style: { color: item.color },
1489
+ className: "flex items-center",
1490
+ children: item.icon
1491
+ })
1492
+ }),
1493
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1494
+ className: "min-w-0 flex-1 text-sm font-medium text-ds-2",
1495
+ children: item.label
1496
+ }),
1497
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1498
+ className: "text-sm font-bold text-ds-1",
1499
+ children: item.duration
1500
+ }),
1501
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1502
+ className: "w-12 text-end text-xs font-semibold text-ds-3",
1503
+ children: [item.percentage, "%"]
1504
+ })
1505
+ ]
1506
+ }, item.label))
1507
+ })
1508
+ ]
1509
+ });
1510
+ };
1511
+ //#endregion
1512
+ //#region src/components/data-display/dashboard-cards/StockAvailabilityCard.tsx
1513
+ var AVAILABLE_COLOR = "#0ABFBC";
1514
+ var LOW_STOCK_COLOR = "#FFC107";
1515
+ var OUT_OF_STOCK_COLOR = "#FF5B5C";
1516
+ var StockAvailabilityCard = ({ title = "Stock Availability", totalAsset = "$53,000", totalProduct = 442, availability = {
1517
+ available: 62,
1518
+ lowStock: 28,
1519
+ outOfStock: 10
1520
+ }, lowStockItems = [], onViewAll, className, onMenuClick }) => {
1521
+ const { available, lowStock, outOfStock } = availability;
1522
+ const total = available + lowStock + outOfStock || 100;
1523
+ const segments = [
1524
+ {
1525
+ label: "Available",
1526
+ color: AVAILABLE_COLOR,
1527
+ pct: available
1528
+ },
1529
+ {
1530
+ label: "Low Stock",
1531
+ color: LOW_STOCK_COLOR,
1532
+ pct: lowStock
1533
+ },
1534
+ {
1535
+ label: "Out of stock",
1536
+ color: OUT_OF_STOCK_COLOR,
1537
+ pct: outOfStock
1538
+ }
1539
+ ];
1540
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1541
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
1542
+ children: [
1543
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1544
+ className: "flex items-center justify-between px-5 pb-3 pt-5",
1545
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1546
+ className: "text-base font-bold text-ds-1",
1547
+ children: title
1548
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
1549
+ variant: "tertiary",
1550
+ size: "small",
1551
+ className: "shrink-0 p-0.5! text-ds-3",
1552
+ "aria-label": "More options",
1553
+ onClick: onMenuClick,
1554
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_EllipsisVerticalIcon.EllipsisVerticalIcon, {
1555
+ width: 18,
1556
+ height: 18
1557
+ })
1558
+ })]
1559
+ }),
1560
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1561
+ className: "grid grid-cols-2 divide-x divide-ds-border-3/50 border-b border-ds-border-3/50 px-5 pb-5",
1562
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1563
+ className: "pe-4",
1564
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1565
+ className: "text-[10px] font-medium uppercase tracking-wide text-ds-3",
1566
+ children: "Total Asset"
1567
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1568
+ className: "mt-1 text-2xl font-bold text-ds-1",
1569
+ children: totalAsset
1570
+ })]
1571
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1572
+ className: "ps-4",
1573
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1574
+ className: "text-[10px] font-medium uppercase tracking-wide text-ds-3",
1575
+ children: "Total Product"
1576
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1577
+ className: "mt-1 text-2xl font-bold text-ds-1",
1578
+ children: totalProduct.toLocaleString()
1579
+ })]
1580
+ })]
1581
+ }),
1582
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1583
+ className: "px-5 py-4",
1584
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1585
+ className: "flex h-2 w-full overflow-hidden rounded-full",
1586
+ children: segments.map(({ label, color, pct }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1587
+ style: {
1588
+ width: `${pct / total * 100}%`,
1589
+ backgroundColor: color
1590
+ },
1591
+ "aria-hidden": "true"
1592
+ }, label))
1593
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1594
+ className: "mt-3 flex flex-wrap gap-x-4 gap-y-1.5",
1595
+ children: segments.map(({ label, color, pct }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1596
+ className: "flex items-center gap-1.5",
1597
+ children: [
1598
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1599
+ className: "h-2 w-2 shrink-0 rounded-full",
1600
+ style: { backgroundColor: color },
1601
+ "aria-hidden": "true"
1602
+ }),
1603
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1604
+ className: "text-xs text-ds-2",
1605
+ children: label
1606
+ }),
1607
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1608
+ className: "text-xs font-semibold text-ds-1",
1609
+ children: [pct, "%"]
1610
+ })
1611
+ ]
1612
+ }, label))
1613
+ })]
1614
+ }),
1615
+ lowStockItems.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1616
+ className: "border-t border-ds-border-3/50",
1617
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1618
+ className: "flex items-center justify-between px-5 py-3",
1619
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1620
+ className: "text-xs font-bold uppercase tracking-wide text-ds-1",
1621
+ children: "Low Stock"
1622
+ }), onViewAll && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
1623
+ variant: "tertiary",
1624
+ size: "small",
1625
+ onClick: onViewAll,
1626
+ className: "p-0! text-xs text-ds-accent hover:opacity-100",
1627
+ children: "View all"
1628
+ })]
1629
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1630
+ className: "pb-2",
1631
+ children: lowStockItems.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1632
+ className: "flex items-center justify-between gap-2 px-5 py-2",
1633
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1634
+ className: "truncate text-sm font-medium text-ds-1",
1635
+ children: item.name
1636
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1637
+ className: "flex shrink-0 items-center gap-3",
1638
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1639
+ className: "text-xs text-ds-3",
1640
+ children: ["Qty: ", item.qty]
1641
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
1642
+ variant: "secondary",
1643
+ size: "small",
1644
+ onClick: item.onOrder,
1645
+ className: "h-7 rounded-md px-3 text-xs",
1646
+ children: "Order"
1647
+ })]
1648
+ })]
1649
+ }, item.id))
1650
+ })]
1651
+ })
1652
+ ]
1653
+ });
1654
+ };
1655
+ //#endregion
1656
+ //#region src/components/data-display/dashboard-cards/ExpensesCard.tsx
1657
+ var DEFAULT_EXPENSES = [
1658
+ {
1659
+ label: "Internet",
1660
+ percentage: 45,
1661
+ color: "#7367F0"
1662
+ },
1663
+ {
1664
+ label: "Electricity",
1665
+ percentage: 26,
1666
+ color: "#00CFE8"
1667
+ },
1668
+ {
1669
+ label: "Transactions",
1670
+ percentage: 22,
1671
+ color: "#28C76F"
1672
+ },
1673
+ {
1674
+ label: "Rental Cost",
1675
+ percentage: 8,
1676
+ color: "#FF9F43"
1677
+ },
1678
+ {
1679
+ label: "Foods",
1680
+ percentage: 3,
1681
+ color: "#EA5455"
1682
+ },
1683
+ {
1684
+ label: "Other",
1685
+ percentage: 2,
1686
+ color: "#82868B"
1687
+ }
1688
+ ];
1689
+ var DEFAULT_TOP = [
1690
+ {
1691
+ label: "Internet",
1692
+ value: "$59.46",
1693
+ color: "#7367F0"
1694
+ },
1695
+ {
1696
+ label: "Electricity",
1697
+ value: "$34.41",
1698
+ color: "#00CFE8"
1699
+ },
1700
+ {
1701
+ label: "Transactions",
1702
+ value: "$29.12",
1703
+ color: "#28C76F"
1704
+ },
1705
+ {
1706
+ label: "Rental Cost",
1707
+ value: "$10.58",
1708
+ color: "#FF9F43"
1709
+ }
1710
+ ];
1711
+ var ChevronDownIcon$1 = () => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
1712
+ width: "13",
1713
+ height: "13",
1714
+ viewBox: "0 0 24 24",
1715
+ fill: "none",
1716
+ stroke: "currentColor",
1717
+ strokeWidth: "2.5",
1718
+ strokeLinecap: "round",
1719
+ strokeLinejoin: "round",
1720
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("polyline", { points: "6 9 12 15 18 9" })
1721
+ });
1722
+ var ExpensesCard = ({ title = "Expenses", totalExpense = "$132.34", expenses = DEFAULT_EXPENSES, topExpenses = DEFAULT_TOP, periods = [
1723
+ "Last 6 months",
1724
+ "Last 3 months",
1725
+ "Last year"
1726
+ ], defaultPeriod, selectedPeriod: controlledPeriod, onPeriodChange, className }) => {
1727
+ const isControlled = controlledPeriod !== void 0;
1728
+ const [internalPeriod, setInternalPeriod] = (0, react.useState)(defaultPeriod ?? periods[0] ?? "");
1729
+ const activePeriod = isControlled ? controlledPeriod : internalPeriod;
1730
+ const [dropdownOpen, setDropdownOpen] = (0, react.useState)(false);
1731
+ const dropdownRef = (0, react.useRef)(null);
1732
+ (0, react.useEffect)(() => {
1733
+ function handleClickOutside(e) {
1734
+ if (dropdownRef.current && !dropdownRef.current.contains(e.target)) setDropdownOpen(false);
1735
+ }
1736
+ if (dropdownOpen) document.addEventListener("mousedown", handleClickOutside);
1737
+ return () => document.removeEventListener("mousedown", handleClickOutside);
1738
+ }, [dropdownOpen]);
1739
+ const handlePeriodSelect = (p) => {
1740
+ if (!isControlled) setInternalPeriod(p);
1741
+ onPeriodChange?.(p);
1742
+ setDropdownOpen(false);
1743
+ };
1744
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1745
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
1746
+ children: [
1747
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1748
+ className: "flex items-center justify-between px-5 pb-3 pt-5",
1749
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1750
+ className: "text-base font-bold text-ds-1",
1751
+ children: title
1752
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1753
+ ref: dropdownRef,
1754
+ className: "relative shrink-0",
1755
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_button.Button, {
1756
+ variant: "tertiary",
1757
+ size: "small",
1758
+ onClick: () => setDropdownOpen((o) => !o),
1759
+ className: "gap-1.5 rounded-md border border-ds-border-accent/30 bg-ds-accent-subtle px-3 py-1.5 text-sm font-semibold text-ds-accent hover:bg-ds-accent-subtle/80 hover:opacity-100",
1760
+ "aria-haspopup": "listbox",
1761
+ "aria-expanded": dropdownOpen,
1762
+ children: [activePeriod, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1763
+ className: require_utils.mergeClassNames("transition-transform duration-150", dropdownOpen ? "rotate-180" : ""),
1764
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChevronDownIcon$1, {})
1765
+ })]
1766
+ }), dropdownOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1767
+ role: "listbox",
1768
+ className: "absolute end-0 top-full z-20 mt-1 min-w-[160px] overflow-y-auto rounded-md border border-ds-border-2 bg-ds-surface-1 py-1 shadow-lg",
1769
+ children: periods.map((p) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
1770
+ variant: "tertiary",
1771
+ size: "small",
1772
+ role: "option",
1773
+ "aria-selected": p === activePeriod,
1774
+ onClick: () => handlePeriodSelect(p),
1775
+ className: require_utils.mergeClassNames("w-full justify-start rounded-none px-3 py-1.5 text-start text-sm hover:bg-ds-surface-2 hover:opacity-100", p === activePeriod ? "font-semibold text-ds-accent" : "text-ds-2"),
1776
+ children: p
1777
+ }, p))
1778
+ })]
1779
+ })]
1780
+ }),
1781
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1782
+ className: "flex items-center gap-4 px-5 pb-5",
1783
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1784
+ className: "relative shrink-0",
1785
+ style: {
1786
+ width: 160,
1787
+ height: 160
1788
+ },
1789
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
1790
+ width: "100%",
1791
+ height: "100%",
1792
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.PieChart, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Pie, {
1793
+ data: expenses,
1794
+ cx: "50%",
1795
+ cy: "50%",
1796
+ innerRadius: 52,
1797
+ outerRadius: 72,
1798
+ dataKey: "percentage",
1799
+ paddingAngle: 2,
1800
+ startAngle: 90,
1801
+ endAngle: -270,
1802
+ children: expenses.map((entry, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Cell, { fill: entry.color }, i))
1803
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
1804
+ contentStyle: require_chartStyles.chartTooltipContentStyle,
1805
+ itemStyle: require_chartStyles.chartTooltipItemStyle,
1806
+ labelStyle: require_chartStyles.chartTooltipLabelStyle,
1807
+ wrapperStyle: require_chartStyles.chartTooltipWrapperStyle,
1808
+ formatter: (v, _name, props) => [`${v}%`, props.payload.label]
1809
+ })] })
1810
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1811
+ className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center text-center",
1812
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1813
+ className: "text-[10px] leading-none text-ds-3",
1814
+ children: "Total Expense"
1815
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1816
+ className: "mt-1 text-base font-bold leading-none text-ds-1",
1817
+ children: totalExpense
1818
+ })]
1819
+ })]
1820
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1821
+ className: "flex min-w-0 flex-1 flex-col gap-2",
1822
+ children: expenses.map((e) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1823
+ className: "flex items-center gap-2",
1824
+ children: [
1825
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1826
+ className: "h-2.5 w-2.5 shrink-0 rounded-full",
1827
+ style: { backgroundColor: e.color },
1828
+ "aria-hidden": "true"
1829
+ }),
1830
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1831
+ className: "flex-1 truncate text-xs text-ds-2",
1832
+ children: e.label
1833
+ }),
1834
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1835
+ className: "text-xs font-semibold text-ds-1",
1836
+ children: [e.percentage, "%"]
1837
+ })
1838
+ ]
1839
+ }, e.label))
1840
+ })]
1841
+ }),
1842
+ topExpenses.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1843
+ className: "border-t border-ds-border-3/50 px-5 pb-5 pt-4",
1844
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1845
+ className: "mb-3 text-[10px] font-bold uppercase tracking-wide text-ds-3",
1846
+ children: "Top Expense"
1847
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1848
+ className: "grid grid-cols-2 gap-3",
1849
+ children: topExpenses.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1850
+ className: "flex items-start gap-2",
1851
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1852
+ className: "mt-0.5 h-2.5 w-2.5 shrink-0 rounded-full",
1853
+ style: { backgroundColor: item.color },
1854
+ "aria-hidden": "true"
1855
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1856
+ className: "min-w-0",
1857
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1858
+ className: "truncate text-xs text-ds-3",
1859
+ children: item.label
1860
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1861
+ className: "text-sm font-bold text-ds-1",
1862
+ children: item.value
1863
+ })]
1864
+ })]
1865
+ }, item.label))
1866
+ })]
1867
+ })
1868
+ ]
1869
+ });
1870
+ };
1871
+ //#endregion
1872
+ //#region src/components/data-display/dashboard-cards/IncomeExpenseCard.tsx
1873
+ var DEFAULT_DATA = [
1874
+ {
1875
+ month: "JAN",
1876
+ income: 800,
1877
+ expense: 400
1878
+ },
1879
+ {
1880
+ month: "FEB",
1881
+ income: 1e3,
1882
+ expense: 500
1883
+ },
1884
+ {
1885
+ month: "MAR",
1886
+ income: 1412,
1887
+ expense: 612,
1888
+ highlighted: true
1889
+ },
1890
+ {
1891
+ month: "APR",
1892
+ income: 900,
1893
+ expense: 450
1894
+ },
1895
+ {
1896
+ month: "MAY",
1897
+ income: 1100,
1898
+ expense: 520
1899
+ },
1900
+ {
1901
+ month: "JUN",
1902
+ income: 950,
1903
+ expense: 480
1904
+ }
1905
+ ];
1906
+ var ChevronDownIcon = () => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
1907
+ width: "13",
1908
+ height: "13",
1909
+ viewBox: "0 0 24 24",
1910
+ fill: "none",
1911
+ stroke: "currentColor",
1912
+ strokeWidth: "2.5",
1913
+ strokeLinecap: "round",
1914
+ strokeLinejoin: "round",
1915
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("polyline", { points: "6 9 12 15 18 9" })
1916
+ });
1917
+ var TrendLabel = ({ value, direction }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
1918
+ className: "text-xs font-semibold",
1919
+ style: { color: direction === "up" ? "var(--ds-color-success)" : "var(--ds-color-danger)" },
1920
+ children: [
1921
+ direction === "up" ? "▲" : "▼",
1922
+ " ",
1923
+ value
1924
+ ]
1925
+ });
1926
+ var IncomeExpenseCard = ({ title = "Income & Expense", totalIncome = "$1,412", incomeBadge = {
1927
+ value: "4.51%",
1928
+ direction: "up"
1929
+ }, totalExpenses = "$612.34", expensesBadge = {
1930
+ value: "2.41%",
1931
+ direction: "down"
1932
+ }, data = DEFAULT_DATA, incomeColor = "#28C76F", expenseColor = "#FFC107", periods = [
1933
+ "Last 6 months",
1934
+ "Last 3 months",
1935
+ "Last year"
1936
+ ], defaultPeriod, selectedPeriod: controlledPeriod, onPeriodChange, className }) => {
1937
+ const isControlled = controlledPeriod !== void 0;
1938
+ const [internalPeriod, setInternalPeriod] = (0, react.useState)(defaultPeriod ?? periods[0] ?? "");
1939
+ const activePeriod = isControlled ? controlledPeriod : internalPeriod;
1940
+ const [dropdownOpen, setDropdownOpen] = (0, react.useState)(false);
1941
+ const dropdownRef = (0, react.useRef)(null);
1942
+ (0, react.useEffect)(() => {
1943
+ function handleClickOutside(e) {
1944
+ if (dropdownRef.current && !dropdownRef.current.contains(e.target)) setDropdownOpen(false);
1945
+ }
1946
+ if (dropdownOpen) document.addEventListener("mousedown", handleClickOutside);
1947
+ return () => document.removeEventListener("mousedown", handleClickOutside);
1948
+ }, [dropdownOpen]);
1949
+ const handlePeriodSelect = (p) => {
1950
+ if (!isControlled) setInternalPeriod(p);
1951
+ onPeriodChange?.(p);
1952
+ setDropdownOpen(false);
1953
+ };
1954
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1955
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
1956
+ children: [
1957
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1958
+ className: "flex items-center justify-between px-5 pb-3 pt-5",
1959
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1960
+ className: "text-base font-bold text-ds-1",
1961
+ children: title
1962
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1963
+ ref: dropdownRef,
1964
+ className: "relative shrink-0",
1965
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_button.Button, {
1966
+ variant: "tertiary",
1967
+ size: "small",
1968
+ onClick: () => setDropdownOpen((o) => !o),
1969
+ className: "gap-1.5 rounded-md border border-ds-border-accent/30 bg-ds-accent-subtle px-3 py-1.5 text-sm font-semibold text-ds-accent hover:bg-ds-accent-subtle/80 hover:opacity-100",
1970
+ "aria-haspopup": "listbox",
1971
+ "aria-expanded": dropdownOpen,
1972
+ children: [activePeriod, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1973
+ className: require_utils.mergeClassNames("transition-transform duration-150", dropdownOpen ? "rotate-180" : ""),
1974
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChevronDownIcon, {})
1975
+ })]
1976
+ }), dropdownOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1977
+ role: "listbox",
1978
+ className: "absolute end-0 top-full z-20 mt-1 min-w-[160px] overflow-y-auto rounded-md border border-ds-border-2 bg-ds-surface-1 py-1 shadow-lg",
1979
+ children: periods.map((p) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
1980
+ variant: "tertiary",
1981
+ size: "small",
1982
+ role: "option",
1983
+ "aria-selected": p === activePeriod,
1984
+ onClick: () => handlePeriodSelect(p),
1985
+ className: require_utils.mergeClassNames("w-full justify-start rounded-none px-3 py-1.5 text-start text-sm hover:bg-ds-surface-2 hover:opacity-100", p === activePeriod ? "font-semibold text-ds-accent" : "text-ds-2"),
1986
+ children: p
1987
+ }, p))
1988
+ })]
1989
+ })]
1990
+ }),
1991
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1992
+ className: "grid grid-cols-2 gap-4 px-5 pb-4",
1993
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
1994
+ className: "text-[10px] font-medium uppercase tracking-wide text-ds-3",
1995
+ children: "Total Income"
1996
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1997
+ className: "mt-1 flex items-baseline gap-2",
1998
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1999
+ className: "text-2xl font-bold text-ds-1",
2000
+ children: totalIncome
2001
+ }), incomeBadge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrendLabel, {
2002
+ value: incomeBadge.value,
2003
+ direction: incomeBadge.direction
2004
+ })]
2005
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2006
+ className: "text-[10px] font-medium uppercase tracking-wide text-ds-3",
2007
+ children: "Total Expenses"
2008
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2009
+ className: "mt-1 flex items-baseline gap-2",
2010
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2011
+ className: "text-2xl font-bold text-ds-1",
2012
+ children: totalExpenses
2013
+ }), expensesBadge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrendLabel, {
2014
+ value: expensesBadge.value,
2015
+ direction: expensesBadge.direction
2016
+ })]
2017
+ })] })]
2018
+ }),
2019
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2020
+ style: { height: 200 },
2021
+ className: "px-2",
2022
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
2023
+ width: "100%",
2024
+ height: "100%",
2025
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
2026
+ data,
2027
+ barSize: 12,
2028
+ barCategoryGap: "30%",
2029
+ barGap: 4,
2030
+ margin: {
2031
+ top: 8,
2032
+ right: 8,
2033
+ left: 0,
2034
+ bottom: 0
2035
+ },
2036
+ children: [
2037
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.CartesianGrid, {
2038
+ strokeDasharray: "3 3",
2039
+ vertical: false,
2040
+ stroke: "var(--ds-color-border)",
2041
+ opacity: .5
2042
+ }),
2043
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, {
2044
+ dataKey: "month",
2045
+ axisLine: false,
2046
+ tickLine: false,
2047
+ tick: {
2048
+ fill: "var(--ds-color-fg-muted)",
2049
+ fontSize: 11
2050
+ },
2051
+ dy: 8
2052
+ }),
2053
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {
2054
+ axisLine: false,
2055
+ tickLine: false,
2056
+ tick: {
2057
+ fill: "var(--ds-color-fg-muted)",
2058
+ fontSize: 10
2059
+ },
2060
+ dx: -4
2061
+ }),
2062
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
2063
+ contentStyle: require_chartStyles.chartTooltipContentStyle,
2064
+ itemStyle: require_chartStyles.chartTooltipItemStyle,
2065
+ labelStyle: require_chartStyles.chartTooltipLabelStyle,
2066
+ wrapperStyle: require_chartStyles.chartTooltipWrapperStyle,
2067
+ cursor: { fill: "rgba(0,0,0,0.04)" }
2068
+ }),
2069
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
2070
+ dataKey: "income",
2071
+ name: "Income",
2072
+ radius: [
2073
+ 4,
2074
+ 4,
2075
+ 0,
2076
+ 0
2077
+ ],
2078
+ children: data.map((entry, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Cell, { fill: entry.highlighted ? incomeColor : incomeColor + "80" }, i))
2079
+ }),
2080
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
2081
+ dataKey: "expense",
2082
+ name: "Expense",
2083
+ radius: [
2084
+ 4,
2085
+ 4,
2086
+ 0,
2087
+ 0
2088
+ ],
2089
+ children: data.map((entry, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Cell, { fill: entry.highlighted ? expenseColor : expenseColor + "80" }, i))
2090
+ })
2091
+ ]
2092
+ })
2093
+ })
2094
+ }),
2095
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2096
+ className: "flex items-center justify-center gap-6 py-4",
2097
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2098
+ className: "flex items-center gap-2",
2099
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2100
+ className: "h-2.5 w-2.5 shrink-0 rounded-full",
2101
+ style: { backgroundColor: incomeColor },
2102
+ "aria-hidden": "true"
2103
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2104
+ className: "text-sm text-ds-2",
2105
+ children: "Income"
2106
+ })]
2107
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2108
+ className: "flex items-center gap-2",
2109
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2110
+ className: "h-2.5 w-2.5 shrink-0 rounded-full",
2111
+ style: { backgroundColor: expenseColor },
2112
+ "aria-hidden": "true"
2113
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2114
+ className: "text-sm text-ds-2",
2115
+ children: "Expense"
2116
+ })]
2117
+ })]
2118
+ })
2119
+ ]
2120
+ });
2121
+ };
2122
+ //#endregion
2123
+ //#region src/components/data-display/dashboard-cards/DeviceSalesCard.tsx
2124
+ var DEFAULT_CHANNELS = [
2125
+ {
2126
+ key: "retail",
2127
+ label: "Retail",
2128
+ sales: 310,
2129
+ color: "#4361EE"
2130
+ },
2131
+ {
2132
+ key: "website",
2133
+ label: "Website",
2134
+ sales: 1420,
2135
+ color: "#00CFE8"
2136
+ },
2137
+ {
2138
+ key: "thirdParty",
2139
+ label: "Third Party",
2140
+ sales: 1920,
2141
+ color: "#FF9F43"
2142
+ }
2143
+ ];
2144
+ var DEFAULT_BRANDS = [
2145
+ {
2146
+ name: "Apple",
2147
+ retail: 35e3,
2148
+ website: 4e4,
2149
+ thirdParty: 45e3
2150
+ },
2151
+ {
2152
+ name: "Lenovo",
2153
+ retail: 2e4,
2154
+ website: 35e3,
2155
+ thirdParty: 3e4
2156
+ },
2157
+ {
2158
+ name: "Asus",
2159
+ retail: 15e3,
2160
+ website: 25e3,
2161
+ thirdParty: 2e4
2162
+ }
2163
+ ];
2164
+ var InfoIcon = () => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
2165
+ width: "14",
2166
+ height: "14",
2167
+ viewBox: "0 0 24 24",
2168
+ fill: "none",
2169
+ stroke: "currentColor",
2170
+ strokeWidth: "2",
2171
+ strokeLinecap: "round",
2172
+ strokeLinejoin: "round",
2173
+ children: [
2174
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
2175
+ cx: "12",
2176
+ cy: "12",
2177
+ r: "10"
2178
+ }),
2179
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
2180
+ x1: "12",
2181
+ y1: "16",
2182
+ x2: "12",
2183
+ y2: "12"
2184
+ }),
2185
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
2186
+ x1: "12",
2187
+ y1: "8",
2188
+ x2: "12.01",
2189
+ y2: "8"
2190
+ })
2191
+ ]
2192
+ });
2193
+ var ExpandIcon = () => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
2194
+ width: "14",
2195
+ height: "14",
2196
+ viewBox: "0 0 24 24",
2197
+ fill: "none",
2198
+ stroke: "currentColor",
2199
+ strokeWidth: "2",
2200
+ strokeLinecap: "round",
2201
+ strokeLinejoin: "round",
2202
+ children: [
2203
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("polyline", { points: "15 3 21 3 21 9" }),
2204
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("polyline", { points: "9 21 3 21 3 15" }),
2205
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
2206
+ x1: "21",
2207
+ y1: "3",
2208
+ x2: "14",
2209
+ y2: "10"
2210
+ }),
2211
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
2212
+ x1: "3",
2213
+ y1: "21",
2214
+ x2: "10",
2215
+ y2: "14"
2216
+ })
2217
+ ]
2218
+ });
2219
+ var EditIcon = () => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
2220
+ width: "14",
2221
+ height: "14",
2222
+ viewBox: "0 0 24 24",
2223
+ fill: "none",
2224
+ stroke: "currentColor",
2225
+ strokeWidth: "2",
2226
+ strokeLinecap: "round",
2227
+ strokeLinejoin: "round",
2228
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" })]
2229
+ });
2230
+ var EllipsisHIcon = () => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
2231
+ width: "14",
2232
+ height: "14",
2233
+ viewBox: "0 0 24 24",
2234
+ fill: "none",
2235
+ stroke: "currentColor",
2236
+ strokeWidth: "2",
2237
+ strokeLinecap: "round",
2238
+ strokeLinejoin: "round",
2239
+ children: [
2240
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
2241
+ cx: "12",
2242
+ cy: "12",
2243
+ r: "1"
2244
+ }),
2245
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
2246
+ cx: "19",
2247
+ cy: "12",
2248
+ r: "1"
2249
+ }),
2250
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
2251
+ cx: "5",
2252
+ cy: "12",
2253
+ r: "1"
2254
+ })
2255
+ ]
2256
+ });
2257
+ var xTickFormatter = (v) => v === 0 ? "0" : `${Math.round(v / 1e3)}K`;
2258
+ var DeviceSalesCard = ({ title = "Device Sales", channels = DEFAULT_CHANNELS, brands = DEFAULT_BRANDS, className, onExpand, onEdit, onMoreClick }) => {
2259
+ const channelMap = Object.fromEntries(channels.map((c) => [c.key, c]));
2260
+ const maxValue = Math.ceil(brands.reduce((max, b) => Math.max(max, b.retail + b.website + b.thirdParty), 0) / 2e4) * 2e4;
2261
+ const xDomain = [0, Math.max(maxValue, 1e5)];
2262
+ const xTicks = Array.from({ length: Math.floor(xDomain[1] / 2e4) + 1 }, (_, i) => i * 2e4);
2263
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2264
+ className: require_utils.mergeClassNames("rounded-lg border border-ds-border-3/80 bg-ds-surface-1", className),
2265
+ children: [
2266
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2267
+ className: "flex items-center justify-between px-5 pb-3 pt-5",
2268
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2269
+ className: "flex items-center gap-2",
2270
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2271
+ className: "text-base font-bold text-ds-1",
2272
+ children: title
2273
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2274
+ className: "text-ds-3",
2275
+ "aria-hidden": "true",
2276
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InfoIcon, {})
2277
+ })]
2278
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2279
+ className: "flex items-center gap-0.5",
2280
+ children: [
2281
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
2282
+ variant: "tertiary",
2283
+ size: "small",
2284
+ className: "p-1! text-ds-3",
2285
+ "aria-label": "Expand",
2286
+ onClick: onExpand,
2287
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExpandIcon, {})
2288
+ }),
2289
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
2290
+ variant: "tertiary",
2291
+ size: "small",
2292
+ className: "p-1! text-ds-3",
2293
+ "aria-label": "Edit",
2294
+ onClick: onEdit,
2295
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EditIcon, {})
2296
+ }),
2297
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
2298
+ variant: "tertiary",
2299
+ size: "small",
2300
+ className: "p-1! text-ds-3",
2301
+ "aria-label": "More options",
2302
+ onClick: onMoreClick,
2303
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EllipsisHIcon, {})
2304
+ })
2305
+ ]
2306
+ })]
2307
+ }),
2308
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2309
+ className: "grid grid-cols-3 divide-x divide-ds-border-3/50 border-b border-ds-border-3/50 pb-4",
2310
+ children: channels.map((channel) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2311
+ className: "flex flex-col items-center gap-1 px-3 pt-1",
2312
+ children: [
2313
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2314
+ className: "mb-1 h-1 w-8 rounded-full",
2315
+ style: { backgroundColor: channel.color },
2316
+ "aria-hidden": "true"
2317
+ }),
2318
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2319
+ className: "text-lg font-bold text-ds-1",
2320
+ children: channel.sales.toLocaleString()
2321
+ }),
2322
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
2323
+ className: "text-center text-[11px] leading-tight text-ds-3",
2324
+ children: [channel.label, " Sales"]
2325
+ })
2326
+ ]
2327
+ }, channel.key))
2328
+ }),
2329
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2330
+ style: { height: brands.length * 64 + 56 },
2331
+ className: "px-2 pt-4",
2332
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.ResponsiveContainer, {
2333
+ width: "100%",
2334
+ height: "100%",
2335
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
2336
+ data: brands,
2337
+ layout: "vertical",
2338
+ barSize: 18,
2339
+ barCategoryGap: "35%",
2340
+ margin: {
2341
+ top: 4,
2342
+ right: 12,
2343
+ left: 0,
2344
+ bottom: 4
2345
+ },
2346
+ children: [
2347
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, {
2348
+ type: "number",
2349
+ domain: xDomain,
2350
+ ticks: xTicks,
2351
+ axisLine: false,
2352
+ tickLine: false,
2353
+ tickFormatter: xTickFormatter,
2354
+ tick: {
2355
+ fill: "var(--ds-color-fg-muted)",
2356
+ fontSize: 10
2357
+ }
2358
+ }),
2359
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {
2360
+ type: "category",
2361
+ dataKey: "name",
2362
+ axisLine: false,
2363
+ tickLine: false,
2364
+ tick: {
2365
+ fill: "var(--ds-color-fg-muted)",
2366
+ fontSize: 12
2367
+ },
2368
+ width: 52
2369
+ }),
2370
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Tooltip, {
2371
+ contentStyle: require_chartStyles.chartTooltipContentStyle,
2372
+ itemStyle: require_chartStyles.chartTooltipItemStyle,
2373
+ labelStyle: require_chartStyles.chartTooltipLabelStyle,
2374
+ wrapperStyle: require_chartStyles.chartTooltipWrapperStyle,
2375
+ cursor: { fill: "rgba(0,0,0,0.04)" },
2376
+ formatter: (v, name) => [Number(v).toLocaleString(), channelMap[name]?.label ?? String(name)]
2377
+ }),
2378
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
2379
+ dataKey: "retail",
2380
+ stackId: "stack",
2381
+ fill: channelMap.retail?.color ?? "#4361EE",
2382
+ radius: [
2383
+ 2,
2384
+ 0,
2385
+ 0,
2386
+ 2
2387
+ ]
2388
+ }),
2389
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
2390
+ dataKey: "website",
2391
+ stackId: "stack",
2392
+ fill: channelMap.website?.color ?? "#00CFE8"
2393
+ }),
2394
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
2395
+ dataKey: "thirdParty",
2396
+ stackId: "stack",
2397
+ fill: channelMap.thirdParty?.color ?? "#FF9F43",
2398
+ radius: [
2399
+ 0,
2400
+ 2,
2401
+ 2,
2402
+ 0
2403
+ ]
2404
+ })
2405
+ ]
2406
+ })
2407
+ })
2408
+ }),
2409
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2410
+ className: "flex flex-wrap items-center justify-center gap-4 px-5 pb-4 pt-1",
2411
+ children: channels.map((channel) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2412
+ className: "flex items-center gap-2",
2413
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2414
+ className: "h-2.5 w-2.5 shrink-0 rounded-full",
2415
+ style: { backgroundColor: channel.color },
2416
+ "aria-hidden": "true"
2417
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2418
+ className: "text-xs text-ds-2",
2419
+ children: channel.label
2420
+ })]
2421
+ }, channel.key))
2422
+ })
2423
+ ]
2424
+ });
2425
+ };
2426
+ //#endregion
2427
+ Object.defineProperty(exports, "ChartCard", {
2428
+ enumerable: true,
2429
+ get: function() {
2430
+ return ChartCard;
2431
+ }
2432
+ });
2433
+ Object.defineProperty(exports, "DeviceSalesCard", {
2434
+ enumerable: true,
2435
+ get: function() {
2436
+ return DeviceSalesCard;
2437
+ }
2438
+ });
2439
+ Object.defineProperty(exports, "EarningReportsTabsCard", {
2440
+ enumerable: true,
2441
+ get: function() {
2442
+ return EarningReportsTabsCard;
2443
+ }
2444
+ });
2445
+ Object.defineProperty(exports, "EarningsCard", {
2446
+ enumerable: true,
2447
+ get: function() {
2448
+ return EarningsCard;
2449
+ }
2450
+ });
2451
+ Object.defineProperty(exports, "ExpensesCard", {
2452
+ enumerable: true,
2453
+ get: function() {
2454
+ return ExpensesCard;
2455
+ }
2456
+ });
2457
+ Object.defineProperty(exports, "IncomeExpenseCard", {
2458
+ enumerable: true,
2459
+ get: function() {
2460
+ return IncomeExpenseCard;
2461
+ }
2462
+ });
2463
+ Object.defineProperty(exports, "RevenueGrowthCard", {
2464
+ enumerable: true,
2465
+ get: function() {
2466
+ return RevenueGrowthCard;
2467
+ }
2468
+ });
2469
+ Object.defineProperty(exports, "SalesOverviewCard", {
2470
+ enumerable: true,
2471
+ get: function() {
2472
+ return SalesOverviewCard;
2473
+ }
2474
+ });
2475
+ Object.defineProperty(exports, "ShipmentStatisticsCard", {
2476
+ enumerable: true,
2477
+ get: function() {
2478
+ return ShipmentStatisticsCard;
2479
+ }
2480
+ });
2481
+ Object.defineProperty(exports, "StatCard", {
2482
+ enumerable: true,
2483
+ get: function() {
2484
+ return StatCard;
2485
+ }
2486
+ });
2487
+ Object.defineProperty(exports, "StockAvailabilityCard", {
2488
+ enumerable: true,
2489
+ get: function() {
2490
+ return StockAvailabilityCard;
2491
+ }
2492
+ });
2493
+ Object.defineProperty(exports, "SupportTrackerCard", {
2494
+ enumerable: true,
2495
+ get: function() {
2496
+ return SupportTrackerCard;
2497
+ }
2498
+ });
2499
+ Object.defineProperty(exports, "TopProductsCard", {
2500
+ enumerable: true,
2501
+ get: function() {
2502
+ return TopProductsCard;
2503
+ }
2504
+ });
2505
+ Object.defineProperty(exports, "TopicsCard", {
2506
+ enumerable: true,
2507
+ get: function() {
2508
+ return TopicsCard;
2509
+ }
2510
+ });
2511
+ Object.defineProperty(exports, "VehicleConditionCard", {
2512
+ enumerable: true,
2513
+ get: function() {
2514
+ return VehicleConditionCard;
2515
+ }
2516
+ });
2517
+ Object.defineProperty(exports, "VehiclesOverviewCard", {
2518
+ enumerable: true,
2519
+ get: function() {
2520
+ return VehiclesOverviewCard;
2521
+ }
2522
+ });
2523
+
2524
+ //# sourceMappingURL=dashboard-cards-DNWJPKRu.cjs.map