@wealthx/shadcn 1.3.1 → 1.3.3

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 (313) hide show
  1. package/.turbo/turbo-build.log +259 -223
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-2UM72RJ7.mjs → chunk-2D3HQPFN.mjs} +12 -10
  4. package/dist/chunk-2EM2FRU6.mjs +613 -0
  5. package/dist/{chunk-FH6QVUVZ.mjs → chunk-2GIYVERS.mjs} +2 -2
  6. package/dist/chunk-2P7HP7LR.mjs +68 -0
  7. package/dist/{chunk-HISNT2MG.mjs → chunk-37AE3OM5.mjs} +5 -5
  8. package/dist/{chunk-HBZLGDIN.mjs → chunk-3ERBUVHC.mjs} +169 -110
  9. package/dist/{chunk-C7CQJNMR.mjs → chunk-3VDET466.mjs} +2 -2
  10. package/dist/{chunk-462HMNO4.mjs → chunk-4MM7LHM5.mjs} +2 -2
  11. package/dist/{chunk-QMY3AZJH.mjs → chunk-4Z66LMIQ.mjs} +2 -2
  12. package/dist/{chunk-U5X52X37.mjs → chunk-57ZXILTS.mjs} +6 -6
  13. package/dist/{chunk-3OYFOX3X.mjs → chunk-5VOTTIXF.mjs} +2 -2
  14. package/dist/{chunk-LBMRIB3G.mjs → chunk-6AJUS7VX.mjs} +1 -1
  15. package/dist/{chunk-OODBHKG7.mjs → chunk-6HIOM2HL.mjs} +7 -4
  16. package/dist/{chunk-BDYZCBRT.mjs → chunk-6QAFGZC2.mjs} +2 -2
  17. package/dist/{chunk-U4NDAF2P.mjs → chunk-6TX73WG7.mjs} +1 -1
  18. package/dist/{chunk-GD4BJDJR.mjs → chunk-7BTFGCFC.mjs} +4 -4
  19. package/dist/{chunk-FAKPBKLT.mjs → chunk-7GWRPXHD.mjs} +4 -4
  20. package/dist/{chunk-NMOI6CQD.mjs → chunk-7YI3HEBH.mjs} +5 -5
  21. package/dist/{chunk-T4BJLT57.mjs → chunk-AE7MASLF.mjs} +5 -5
  22. package/dist/{chunk-VLQZANBF.mjs → chunk-AFML43VJ.mjs} +6 -1
  23. package/dist/chunk-BBXSNDS3.mjs +260 -0
  24. package/dist/chunk-BOW7U26Y.mjs +203 -0
  25. package/dist/{chunk-34NWQURD.mjs → chunk-BS75ICOO.mjs} +2 -2
  26. package/dist/chunk-D2NSIIXG.mjs +394 -0
  27. package/dist/{chunk-3GF7OVTP.mjs → chunk-DGNHGNYH.mjs} +2 -2
  28. package/dist/{chunk-VLARHE5V.mjs → chunk-DMXYRCHM.mjs} +6 -6
  29. package/dist/{chunk-OGOYQ7BG.mjs → chunk-DQB4EPIS.mjs} +1 -1
  30. package/dist/{chunk-MIZQHHUO.mjs → chunk-FL6DZFJK.mjs} +106 -38
  31. package/dist/{chunk-I3RZS7V2.mjs → chunk-FLL633WS.mjs} +19 -33
  32. package/dist/{chunk-PBL4OQV2.mjs → chunk-FTPBQVQ6.mjs} +4 -4
  33. package/dist/chunk-FYPSTTEJ.mjs +169 -0
  34. package/dist/{chunk-6O6KD7CE.mjs → chunk-G27TSQLQ.mjs} +6 -6
  35. package/dist/{chunk-66MI7Q4B.mjs → chunk-GT3RU6GA.mjs} +2 -2
  36. package/dist/{chunk-D6ID6M4V.mjs → chunk-GTAVSBDO.mjs} +2 -2
  37. package/dist/{chunk-24FUO7TD.mjs → chunk-H6NQTIF4.mjs} +2 -2
  38. package/dist/{chunk-7DHU4VGG.mjs → chunk-HK4HUQTV.mjs} +2 -2
  39. package/dist/chunk-I4KVSZCH.mjs +101 -0
  40. package/dist/{chunk-RGVKLTLH.mjs → chunk-IKXYTCSB.mjs} +2 -2
  41. package/dist/{chunk-Y6DWJSKZ.mjs → chunk-ISUA7DSB.mjs} +1 -1
  42. package/dist/{chunk-2A5RRQGG.mjs → chunk-JD3YWRNP.mjs} +10 -14
  43. package/dist/{chunk-J5UICVJS.mjs → chunk-JPGL36WQ.mjs} +2 -2
  44. package/dist/{chunk-7XJHLGUV.mjs → chunk-JTK6VJXY.mjs} +2 -2
  45. package/dist/{chunk-7YAU5CY6.mjs → chunk-JVMXMFBB.mjs} +2 -2
  46. package/dist/{chunk-IAE3F7DR.mjs → chunk-JZY6TNIS.mjs} +21 -21
  47. package/dist/{chunk-K5A5L6T2.mjs → chunk-K4KOD3KR.mjs} +12 -12
  48. package/dist/{chunk-MBON7YRJ.mjs → chunk-K5QV4TT6.mjs} +3 -3
  49. package/dist/{chunk-IHMFS7NZ.mjs → chunk-K5VHK7CM.mjs} +21 -21
  50. package/dist/{chunk-RJI6GKVF.mjs → chunk-KCWNDYPZ.mjs} +5 -5
  51. package/dist/{chunk-UFYSFDER.mjs → chunk-KFH36NKF.mjs} +1 -1
  52. package/dist/{chunk-EBXQWIYG.mjs → chunk-KLTACJ2G.mjs} +5 -5
  53. package/dist/{chunk-3TTACBDP.mjs → chunk-KWD6GANL.mjs} +4 -4
  54. package/dist/{chunk-IOJRDS6V.mjs → chunk-L4NSRQ3T.mjs} +218 -147
  55. package/dist/{chunk-GYMYRIZP.mjs → chunk-LBTHZSBT.mjs} +2 -2
  56. package/dist/{chunk-AMQZRHEZ.mjs → chunk-LQULK2E3.mjs} +5 -5
  57. package/dist/{chunk-YJG55G2H.mjs → chunk-LR6LHDP3.mjs} +5 -5
  58. package/dist/{chunk-7PV3IWCN.mjs → chunk-M4VYX2PV.mjs} +19 -1
  59. package/dist/{chunk-P76HMUI6.mjs → chunk-MDUKXXIL.mjs} +2 -2
  60. package/dist/{chunk-LV35NGVG.mjs → chunk-N6Q5IPKT.mjs} +9 -9
  61. package/dist/{chunk-DOEO3CDL.mjs → chunk-NB3ZL36B.mjs} +1 -1
  62. package/dist/{chunk-XREGSKX3.mjs → chunk-NOOEKOWY.mjs} +5 -5
  63. package/dist/{chunk-NL3ZO62D.mjs → chunk-NT4FX27K.mjs} +1 -1
  64. package/dist/{chunk-QZ4RE6NA.mjs → chunk-NTYQWVLI.mjs} +6 -6
  65. package/dist/{chunk-ERGGHC2V.mjs → chunk-OEOOYMC2.mjs} +2 -2
  66. package/dist/{chunk-4GAWMKMI.mjs → chunk-OIKBW2QD.mjs} +291 -54
  67. package/dist/{chunk-DUJTAXMH.mjs → chunk-OKTJFDPN.mjs} +6 -6
  68. package/dist/chunk-OLKMCXAR.mjs +1219 -0
  69. package/dist/{chunk-EI5F6FMT.mjs → chunk-OWFQSXVD.mjs} +3 -3
  70. package/dist/{chunk-6DZEXFNB.mjs → chunk-P2N2PEFY.mjs} +3 -3
  71. package/dist/{chunk-NSLMILBT.mjs → chunk-P7CEBZM6.mjs} +2 -2
  72. package/dist/{chunk-7S5AESZO.mjs → chunk-PNRUH7JY.mjs} +6 -6
  73. package/dist/{chunk-ZU4NV6RG.mjs → chunk-PNSYFE3K.mjs} +2 -2
  74. package/dist/{chunk-JKGDCQTZ.mjs → chunk-QTRSCVQ3.mjs} +5 -5
  75. package/dist/{chunk-ABFDMHOR.mjs → chunk-QX7IFQSF.mjs} +5 -5
  76. package/dist/{chunk-CFMQP5QS.mjs → chunk-QXKGOMUX.mjs} +6 -6
  77. package/dist/{chunk-NQPOYKAQ.mjs → chunk-R2ON6CAN.mjs} +2 -2
  78. package/dist/{chunk-DBHJ5KC3.mjs → chunk-R4HCRDU5.mjs} +1 -1
  79. package/dist/{chunk-EWRB4PAD.mjs → chunk-RCAOCHWA.mjs} +14 -14
  80. package/dist/{chunk-EFRENWEJ.mjs → chunk-RSUIPKGX.mjs} +2 -2
  81. package/dist/{chunk-DGHAXJBN.mjs → chunk-S2FKV4M5.mjs} +5 -5
  82. package/dist/{chunk-RGU7HOEC.mjs → chunk-SET2ANTY.mjs} +5 -7
  83. package/dist/chunk-SFH2NJEJ.mjs +47 -0
  84. package/dist/{chunk-6AW4KJHE.mjs → chunk-SIVYAI3M.mjs} +12 -12
  85. package/dist/{chunk-5FQIKDKP.mjs → chunk-THVO2N47.mjs} +8 -8
  86. package/dist/{chunk-JMHR3YGZ.mjs → chunk-TLAWKTSA.mjs} +3 -3
  87. package/dist/{chunk-HVY6KCCF.mjs → chunk-TOWTPLRC.mjs} +68 -72
  88. package/dist/{chunk-6JQFUE5I.mjs → chunk-UALR6JGV.mjs} +2 -2
  89. package/dist/{chunk-MLNEWRWV.mjs → chunk-UJZ4UHWI.mjs} +10 -15
  90. package/dist/{chunk-MARPPFOJ.mjs → chunk-UNACI2YK.mjs} +2 -2
  91. package/dist/{chunk-3NCUZIFP.mjs → chunk-V6XGXYCJ.mjs} +7 -7
  92. package/dist/chunk-VB5M6OZQ.mjs +57 -0
  93. package/dist/{chunk-5IS7G74I.mjs → chunk-VY5NEUP7.mjs} +6 -6
  94. package/dist/{chunk-JHJHG4GO.mjs → chunk-WE4YKBDE.mjs} +2 -2
  95. package/dist/{chunk-BKNFWEH2.mjs → chunk-WL6WVV47.mjs} +3 -3
  96. package/dist/{chunk-FWCSY2DS.mjs → chunk-WNQUEZJF.mjs} +22 -1
  97. package/dist/{chunk-2Y7YJKPE.mjs → chunk-WZ6UJCBL.mjs} +1 -1
  98. package/dist/{chunk-UMTOX62O.mjs → chunk-XYPW2XA5.mjs} +13 -10
  99. package/dist/chunk-Y2MTAVAK.mjs +34 -0
  100. package/dist/{chunk-6CR5N2JW.mjs → chunk-YCWLFG27.mjs} +6 -6
  101. package/dist/{chunk-PU4YZQXV.mjs → chunk-YE67AALL.mjs} +12 -12
  102. package/dist/{chunk-M3FV7LOK.mjs → chunk-YEWNFK5S.mjs} +6 -1
  103. package/dist/{chunk-R3VSPKNP.mjs → chunk-YIZHS72Z.mjs} +11 -12
  104. package/dist/{chunk-7PYJD5JI.mjs → chunk-ZEDMKQK2.mjs} +2 -2
  105. package/dist/{chunk-N2PT566P.mjs → chunk-ZFCDYW6N.mjs} +4 -4
  106. package/dist/chunk-ZGQIVGIN.mjs +57 -0
  107. package/dist/{chunk-Q2BGOAMG.mjs → chunk-ZKWXDQDG.mjs} +4 -4
  108. package/dist/{chunk-GHC7LLUX.mjs → chunk-ZOWL2L5J.mjs} +5 -5
  109. package/dist/components/ui/accordion.mjs +3 -3
  110. package/dist/components/ui/add-column-modal.js +2 -2
  111. package/dist/components/ui/add-column-modal.mjs +10 -10
  112. package/dist/components/ui/add-lead-modal.js +424 -82
  113. package/dist/components/ui/add-lead-modal.mjs +12 -9
  114. package/dist/components/ui/advisor-card.js +2 -2
  115. package/dist/components/ui/advisor-card.mjs +8 -8
  116. package/dist/components/ui/ai-assistant-drawer.js +2 -2
  117. package/dist/components/ui/ai-assistant-drawer.mjs +9 -9
  118. package/dist/components/ui/ai-builder.js +958 -0
  119. package/dist/components/ui/ai-builder.mjs +25 -0
  120. package/dist/components/ui/ai-conversations.js +2045 -0
  121. package/dist/components/ui/ai-conversations.mjs +41 -0
  122. package/dist/components/ui/alert-dialog.js +2 -2
  123. package/dist/components/ui/alert-dialog.mjs +5 -5
  124. package/dist/components/ui/alert.mjs +3 -3
  125. package/dist/components/ui/appointment-action-dialogs.js +19 -3
  126. package/dist/components/ui/appointment-action-dialogs.mjs +15 -14
  127. package/dist/components/ui/appointment-availability-settings.js +181 -111
  128. package/dist/components/ui/appointment-availability-settings.mjs +20 -18
  129. package/dist/components/ui/appointment-book-dialog.js +113 -24
  130. package/dist/components/ui/appointment-book-dialog.mjs +21 -20
  131. package/dist/components/ui/appointment-calendar-view.js +19 -3
  132. package/dist/components/ui/appointment-calendar-view.mjs +10 -9
  133. package/dist/components/ui/appointment-detail-sheet.js +19 -3
  134. package/dist/components/ui/appointment-detail-sheet.mjs +18 -17
  135. package/dist/components/ui/appointment-gmail-connect.js +49 -89
  136. package/dist/components/ui/appointment-gmail-connect.mjs +8 -9
  137. package/dist/components/ui/appointment-mini-card.js +2 -2
  138. package/dist/components/ui/appointment-mini-card.mjs +6 -6
  139. package/dist/components/ui/appointment-time-slot-picker.mjs +6 -6
  140. package/dist/components/ui/appointment-upcoming-card.js +19 -3
  141. package/dist/components/ui/appointment-upcoming-card.mjs +15 -14
  142. package/dist/components/ui/auth-logo.js +95 -0
  143. package/dist/components/ui/auth-logo.mjs +8 -0
  144. package/dist/components/ui/auth-page-layout.js +108 -0
  145. package/dist/components/ui/auth-page-layout.mjs +8 -0
  146. package/dist/components/ui/avatar.mjs +3 -3
  147. package/dist/components/ui/backoffice-alert-history-chart.js +2 -2
  148. package/dist/components/ui/backoffice-alert-history-chart.mjs +9 -9
  149. package/dist/components/ui/backoffice-alerts-chart.js +2 -2
  150. package/dist/components/ui/backoffice-alerts-chart.mjs +11 -11
  151. package/dist/components/ui/backoffice-connections-chart.js +2 -2
  152. package/dist/components/ui/backoffice-connections-chart.mjs +11 -11
  153. package/dist/components/ui/backoffice-contact-history-chart.js +2 -2
  154. package/dist/components/ui/backoffice-contact-history-chart.mjs +9 -9
  155. package/dist/components/ui/badge.mjs +4 -4
  156. package/dist/components/ui/borrowing-capacity-line-chart.js +145 -132
  157. package/dist/components/ui/borrowing-capacity-line-chart.mjs +9 -9
  158. package/dist/components/ui/button.js +2 -2
  159. package/dist/components/ui/button.mjs +4 -4
  160. package/dist/components/ui/calendar.js +17 -3
  161. package/dist/components/ui/calendar.mjs +6 -5
  162. package/dist/components/ui/card.mjs +3 -3
  163. package/dist/components/ui/cash-balance-line-chart.js +157 -152
  164. package/dist/components/ui/cash-balance-line-chart.mjs +9 -9
  165. package/dist/components/ui/cashflow-bar-chart.js +2 -2
  166. package/dist/components/ui/cashflow-bar-chart.mjs +9 -9
  167. package/dist/components/ui/chat-widget-primitives.js +573 -0
  168. package/dist/components/ui/chat-widget-primitives.mjs +21 -0
  169. package/dist/components/ui/chat-widget.js +1268 -0
  170. package/dist/components/ui/chat-widget.mjs +29 -0
  171. package/dist/components/ui/checkbox.mjs +3 -3
  172. package/dist/components/ui/chip.js +2 -2
  173. package/dist/components/ui/chip.mjs +6 -6
  174. package/dist/components/ui/color-picker.js +2 -2
  175. package/dist/components/ui/color-picker.mjs +7 -7
  176. package/dist/components/ui/combobox.mjs +3 -3
  177. package/dist/components/ui/data-table.js +2 -2
  178. package/dist/components/ui/data-table.mjs +12 -12
  179. package/dist/components/ui/date-picker.js +22 -6
  180. package/dist/components/ui/date-picker.mjs +9 -8
  181. package/dist/components/ui/dialog.js +2 -2
  182. package/dist/components/ui/dialog.mjs +5 -5
  183. package/dist/components/ui/document-checklist-template.js +630 -0
  184. package/dist/components/ui/document-checklist-template.mjs +15 -0
  185. package/dist/components/ui/drawer.js +2 -2
  186. package/dist/components/ui/drawer.mjs +3 -3
  187. package/dist/components/ui/dropdown-menu.mjs +3 -3
  188. package/dist/components/ui/empty.mjs +3 -3
  189. package/dist/components/ui/expense-bar-chart.js +2 -2
  190. package/dist/components/ui/expense-bar-chart.mjs +9 -9
  191. package/dist/components/ui/field.mjs +5 -5
  192. package/dist/components/ui/financial-cards.js +431 -291
  193. package/dist/components/ui/financial-cards.mjs +10 -9
  194. package/dist/components/ui/financial-drawers.js +4 -4
  195. package/dist/components/ui/financial-drawers.mjs +8 -8
  196. package/dist/components/ui/financial-primitives.mjs +3 -3
  197. package/dist/components/ui/financial-sections.js +8 -9
  198. package/dist/components/ui/financial-sections.mjs +12 -12
  199. package/dist/components/ui/form-primitives.mjs +8 -8
  200. package/dist/components/ui/income-bar-chart.js +2 -2
  201. package/dist/components/ui/income-bar-chart.mjs +9 -9
  202. package/dist/components/ui/input-group.js +2 -2
  203. package/dist/components/ui/input-group.mjs +7 -7
  204. package/dist/components/ui/input-otp.mjs +3 -3
  205. package/dist/components/ui/input.mjs +3 -3
  206. package/dist/components/ui/kanban-column.js +19 -23
  207. package/dist/components/ui/kanban-column.mjs +14 -14
  208. package/dist/components/ui/label.mjs +3 -3
  209. package/dist/components/ui/onboarding-layout.js +476 -0
  210. package/dist/components/ui/onboarding-layout.mjs +11 -0
  211. package/dist/components/ui/opportunity-card.js +2 -2
  212. package/dist/components/ui/opportunity-card.mjs +12 -12
  213. package/dist/components/ui/opportunity-edit-modals.js +22 -6
  214. package/dist/components/ui/opportunity-edit-modals.mjs +21 -20
  215. package/dist/components/ui/opportunity-summary-tab.js +991 -674
  216. package/dist/components/ui/opportunity-summary-tab.mjs +26 -26
  217. package/dist/components/ui/page-header.mjs +3 -3
  218. package/dist/components/ui/page-top-bar.mjs +3 -3
  219. package/dist/components/ui/pagination.js +2 -2
  220. package/dist/components/ui/pagination.mjs +6 -6
  221. package/dist/components/ui/password-strength-tooltip.js +197 -0
  222. package/dist/components/ui/password-strength-tooltip.mjs +11 -0
  223. package/dist/components/ui/pipeline-alerts.mjs +3 -3
  224. package/dist/components/ui/pipeline-board.js +19 -23
  225. package/dist/components/ui/pipeline-board.mjs +18 -18
  226. package/dist/components/ui/pipeline-chart.js +12 -6
  227. package/dist/components/ui/pipeline-chart.mjs +4 -3
  228. package/dist/components/ui/pipeline-dialogs.js +28 -12
  229. package/dist/components/ui/pipeline-dialogs.mjs +14 -13
  230. package/dist/components/ui/pipeline-primitives.mjs +6 -6
  231. package/dist/components/ui/popover.mjs +3 -3
  232. package/dist/components/ui/progress.mjs +3 -3
  233. package/dist/components/ui/property-cashflow-doughnut-chart.js +2 -2
  234. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +9 -9
  235. package/dist/components/ui/property-debt-equity-doughnut-chart.js +2 -2
  236. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +9 -9
  237. package/dist/components/ui/property-mobile-estimate-line-chart.js +2 -2
  238. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +9 -9
  239. package/dist/components/ui/radio-group.mjs +3 -3
  240. package/dist/components/ui/select.mjs +3 -3
  241. package/dist/components/ui/separator.mjs +3 -3
  242. package/dist/components/ui/sheet.mjs +3 -3
  243. package/dist/components/ui/sidebar-nav.js +7 -9
  244. package/dist/components/ui/sidebar-nav.mjs +7 -7
  245. package/dist/components/ui/skeleton.mjs +3 -3
  246. package/dist/components/ui/slider.mjs +3 -3
  247. package/dist/components/ui/sonner.mjs +2 -2
  248. package/dist/components/ui/spinner.mjs +3 -3
  249. package/dist/components/ui/stage-timeline.mjs +10 -10
  250. package/dist/components/ui/stepper.mjs +3 -3
  251. package/dist/components/ui/switch.mjs +3 -3
  252. package/dist/components/ui/table.mjs +3 -3
  253. package/dist/components/ui/tabs.mjs +3 -3
  254. package/dist/components/ui/textarea.mjs +3 -3
  255. package/dist/components/ui/toggle-group.mjs +4 -4
  256. package/dist/components/ui/toggle.mjs +3 -3
  257. package/dist/components/ui/tooltip.mjs +3 -3
  258. package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +2 -2
  259. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +9 -9
  260. package/dist/components/ui/transactions-income-expense-bar-chart.js +2 -2
  261. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +9 -9
  262. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +2 -2
  263. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +9 -9
  264. package/dist/components/ui/two-fa-setup-form.js +612 -0
  265. package/dist/components/ui/two-fa-setup-form.mjs +16 -0
  266. package/dist/components/ui/upload-card.js +187 -0
  267. package/dist/components/ui/upload-card.mjs +10 -0
  268. package/dist/components/ui/video-background.js +118 -0
  269. package/dist/components/ui/video-background.mjs +8 -0
  270. package/dist/index.js +12765 -9400
  271. package/dist/index.mjs +341 -245
  272. package/dist/lib/colors.mjs +1 -1
  273. package/dist/lib/theme-provider.mjs +1 -1
  274. package/dist/lib/typography.mjs +2 -2
  275. package/dist/lib/utils.js +8 -2
  276. package/dist/lib/utils.mjs +6 -4
  277. package/dist/styles.css +1 -1
  278. package/package.json +61 -1
  279. package/src/components/index.tsx +126 -1
  280. package/src/components/ui/add-lead-modal.tsx +101 -142
  281. package/src/components/ui/ai-builder.tsx +560 -0
  282. package/src/components/ui/ai-conversations.tsx +1690 -0
  283. package/src/components/ui/appointment-availability-settings.tsx +152 -101
  284. package/src/components/ui/appointment-book-dialog.tsx +138 -24
  285. package/src/components/ui/appointment-calendar-view.tsx +2 -3
  286. package/src/components/ui/appointment-gmail-connect.tsx +23 -42
  287. package/src/components/ui/auth-logo.tsx +50 -0
  288. package/src/components/ui/auth-page-layout.tsx +59 -0
  289. package/src/components/ui/borrowing-capacity-line-chart.tsx +10 -8
  290. package/src/components/ui/button.tsx +2 -2
  291. package/src/components/ui/calendar.tsx +2 -1
  292. package/src/components/ui/cash-balance-line-chart.tsx +10 -14
  293. package/src/components/ui/chart-shared.tsx +10 -0
  294. package/src/components/ui/chat-widget-primitives.tsx +336 -0
  295. package/src/components/ui/chat-widget.tsx +822 -0
  296. package/src/components/ui/document-checklist-template.tsx +264 -0
  297. package/src/components/ui/drawer.tsx +2 -2
  298. package/src/components/ui/financial-cards.tsx +176 -78
  299. package/src/components/ui/financial-drawers.tsx +2 -2
  300. package/src/components/ui/financial-sections.tsx +1 -1
  301. package/src/components/ui/kanban-column.tsx +2 -5
  302. package/src/components/ui/onboarding-layout.tsx +109 -0
  303. package/src/components/ui/opportunity-summary-tab.tsx +469 -142
  304. package/src/components/ui/password-strength-tooltip.tsx +70 -0
  305. package/src/components/ui/pipeline-chart.tsx +2 -6
  306. package/src/components/ui/sidebar-nav.tsx +2 -15
  307. package/src/components/ui/two-fa-setup-form.tsx +229 -0
  308. package/src/components/ui/upload-card.tsx +98 -0
  309. package/src/components/ui/video-background.tsx +55 -0
  310. package/src/lib/format-date.ts +26 -0
  311. package/src/lib/utils.ts +11 -0
  312. package/src/styles/styles-css.ts +1 -1
  313. package/tsup.config.ts +13 -0
@@ -69,7 +69,7 @@ __export(financial_cards_exports, {
69
69
  });
70
70
  module.exports = __toCommonJS(financial_cards_exports);
71
71
  var React2 = __toESM(require("react"));
72
- var import_lucide_react3 = require("lucide-react");
72
+ var import_lucide_react4 = require("lucide-react");
73
73
 
74
74
  // src/lib/utils.ts
75
75
  var import_clsx = require("clsx");
@@ -218,11 +218,86 @@ function Badge(_a) {
218
218
  );
219
219
  }
220
220
 
221
- // src/components/ui/radio-group.tsx
221
+ // src/components/ui/accordion.tsx
222
222
  var import_lucide_react = require("lucide-react");
223
+ var import_accordion = require("@base-ui/react/accordion");
224
+ var import_jsx_runtime2 = require("react/jsx-runtime");
225
+ function Accordion(props) {
226
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_accordion.Accordion.Root, __spreadValues({ "data-slot": "accordion" }, props));
227
+ }
228
+ function AccordionItem(_a) {
229
+ var _b = _a, {
230
+ className
231
+ } = _b, props = __objRest(_b, [
232
+ "className"
233
+ ]);
234
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
235
+ import_accordion.Accordion.Item,
236
+ __spreadValues({
237
+ className: cn("border-b", className),
238
+ "data-slot": "accordion-item"
239
+ }, props)
240
+ );
241
+ }
242
+ function AccordionTrigger(_a) {
243
+ var _b = _a, {
244
+ className,
245
+ children
246
+ } = _b, props = __objRest(_b, [
247
+ "className",
248
+ "children"
249
+ ]);
250
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_accordion.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
251
+ import_accordion.Accordion.Trigger,
252
+ __spreadProps(__spreadValues({
253
+ className: cn(
254
+ // layout
255
+ "flex flex-1 items-center justify-between gap-4 py-4 text-left",
256
+ // typography
257
+ "text-label-medium",
258
+ // base
259
+ "rounded-none outline-none transition-[color,opacity]",
260
+ // interactive states
261
+ "hover:underline",
262
+ "focus-visible:ring-2 focus-visible:ring-foreground/30",
263
+ "disabled:pointer-events-none disabled:opacity-50",
264
+ // chevron rotation when open
265
+ "[&[data-panel-open]>svg]:rotate-180",
266
+ className
267
+ ),
268
+ "data-slot": "accordion-trigger"
269
+ }, props), {
270
+ children: [
271
+ children,
272
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
273
+ ]
274
+ })
275
+ ) });
276
+ }
277
+ function AccordionContent(_a) {
278
+ var _b = _a, {
279
+ className,
280
+ children
281
+ } = _b, props = __objRest(_b, [
282
+ "className",
283
+ "children"
284
+ ]);
285
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
286
+ import_accordion.Accordion.Panel,
287
+ __spreadProps(__spreadValues({
288
+ className: "overflow-hidden text-body-small h-(--accordion-panel-height) transition-[height] duration-200 ease-out data-starting-style:h-0 data-ending-style:h-0",
289
+ "data-slot": "accordion-content"
290
+ }, props), {
291
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: cn("pb-4 text-muted-foreground", className), children })
292
+ })
293
+ );
294
+ }
295
+
296
+ // src/components/ui/radio-group.tsx
297
+ var import_lucide_react2 = require("lucide-react");
223
298
  var import_radio_group = require("@base-ui/react/radio-group");
224
299
  var import_radio = require("@base-ui/react/radio");
225
- var import_jsx_runtime2 = require("react/jsx-runtime");
300
+ var import_jsx_runtime3 = require("react/jsx-runtime");
226
301
  var CIRCLE_BASE = "inline-flex items-center justify-center aspect-square size-4 shrink-0 rounded-full border border-primary bg-background";
227
302
  var INDICATOR_DOT = "size-2 fill-background text-background";
228
303
  function RadioGroup(_a) {
@@ -231,7 +306,7 @@ function RadioGroup(_a) {
231
306
  } = _b, props = __objRest(_b, [
232
307
  "className"
233
308
  ]);
234
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
309
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
235
310
  import_radio_group.RadioGroup,
236
311
  __spreadValues({
237
312
  className: cn("grid gap-3", className),
@@ -245,7 +320,7 @@ function RadioGroupItem(_a) {
245
320
  } = _b, props = __objRest(_b, [
246
321
  "className"
247
322
  ]);
248
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
323
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
249
324
  import_radio.Radio.Root,
250
325
  __spreadProps(__spreadValues({
251
326
  className: cn(
@@ -261,11 +336,11 @@ function RadioGroupItem(_a) {
261
336
  ),
262
337
  "data-slot": "radio-group-item"
263
338
  }, props), {
264
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
339
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
265
340
  import_radio.Radio.Indicator,
266
341
  {
267
342
  "data-slot": "radio-group-indicator",
268
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.CircleIcon, { className: INDICATOR_DOT })
343
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react2.CircleIcon, { className: INDICATOR_DOT })
269
344
  }
270
345
  )
271
346
  })
@@ -273,12 +348,12 @@ function RadioGroupItem(_a) {
273
348
  }
274
349
 
275
350
  // src/components/ui/financial-primitives.tsx
276
- var import_jsx_runtime3 = require("react/jsx-runtime");
351
+ var import_jsx_runtime4 = require("react/jsx-runtime");
277
352
  var NO_DATA = "\u2014";
278
353
  function FinancialSubsectionTitle({
279
354
  children
280
355
  }) {
281
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-label-medium uppercase text-foreground", children });
356
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-label-medium uppercase text-foreground", children });
282
357
  }
283
358
  function FinancialDetailField({
284
359
  label,
@@ -286,13 +361,13 @@ function FinancialDetailField({
286
361
  variant = "caption"
287
362
  }) {
288
363
  if (variant === "footer") {
289
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex flex-col justify-between min-w-0", children: [
290
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-overline text-muted-foreground", children: label }),
291
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-label-medium text-foreground mt-1 break-words", children: value != null ? value : NO_DATA })
364
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex flex-col justify-between min-w-0", children: [
365
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-overline text-muted-foreground", children: label }),
366
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-label-medium text-foreground mt-1 break-words", children: value != null ? value : NO_DATA })
292
367
  ] });
293
368
  }
294
369
  const labelClass = variant === "caption" ? "block min-h-[2rem] text-caption text-muted-foreground" : "min-h-[1.75rem] text-overline text-muted-foreground";
295
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
370
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
296
371
  "div",
297
372
  {
298
373
  className: cn(
@@ -300,8 +375,8 @@ function FinancialDetailField({
300
375
  variant === "overline" && "flex flex-col gap-0.5"
301
376
  ),
302
377
  children: [
303
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: labelClass, children: label }),
304
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-label-medium text-foreground break-words", children: value != null ? value : NO_DATA })
378
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: labelClass, children: label }),
379
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-label-medium text-foreground break-words", children: value != null ? value : NO_DATA })
305
380
  ]
306
381
  }
307
382
  );
@@ -326,12 +401,12 @@ function FinancialLvrBar({
326
401
  warning: "bg-warning",
327
402
  destructive: "bg-destructive"
328
403
  }[color];
329
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex flex-col gap-2", children: [
330
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center justify-between", children: [
331
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-body-small text-muted-foreground", children: "LVR" }),
332
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: cn("text-label-medium", textClass), children: label })
404
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex flex-col gap-2", children: [
405
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center justify-between", children: [
406
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-body-small text-muted-foreground", children: "LVR" }),
407
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: cn("text-label-medium", textClass), children: label })
333
408
  ] }),
334
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn("h-2.5 w-full overflow-hidden", trackClass), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
409
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn("h-2.5 w-full overflow-hidden", trackClass), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
335
410
  "div",
336
411
  {
337
412
  className: cn("h-full", fillClass),
@@ -343,7 +418,7 @@ function FinancialLvrBar({
343
418
  function FinancialSubtotalFrame({
344
419
  children
345
420
  }) {
346
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "mt-auto border-t border-primary/20 bg-primary/10 px-4 py-3", children });
421
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "mt-auto border-t border-primary/20 bg-primary/10 px-4 py-3", children });
347
422
  }
348
423
  function FinancialSubtotalBlock({
349
424
  monthlyAverage,
@@ -351,7 +426,7 @@ function FinancialSubtotalBlock({
351
426
  label
352
427
  }) {
353
428
  const isSingle = monthlyAverage && !totalLast12Months;
354
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
429
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
355
430
  "div",
356
431
  {
357
432
  className: cn(
@@ -359,7 +434,7 @@ function FinancialSubtotalBlock({
359
434
  isSingle ? "justify-end" : "justify-between"
360
435
  ),
361
436
  children: [
362
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
437
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
363
438
  "div",
364
439
  {
365
440
  className: cn(
@@ -367,14 +442,14 @@ function FinancialSubtotalBlock({
367
442
  isSingle ? "text-right" : "text-left"
368
443
  ),
369
444
  children: [
370
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "min-h-[1.75rem] text-overline text-muted-foreground", children: label != null ? label : "Monthly Average" }),
371
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-label-medium text-foreground", children: monthlyAverage != null ? monthlyAverage : NO_DATA })
445
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "min-h-[1.75rem] text-overline text-muted-foreground", children: label != null ? label : "Monthly Average" }),
446
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-label-medium text-foreground", children: monthlyAverage != null ? monthlyAverage : NO_DATA })
372
447
  ]
373
448
  }
374
449
  ),
375
- !isSingle && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex flex-col gap-0.5 text-right", children: [
376
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "min-h-[1.75rem] text-overline text-muted-foreground", children: "Total Last 12 Months" }),
377
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-label-medium text-foreground", children: totalLast12Months != null ? totalLast12Months : NO_DATA })
450
+ !isSingle && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex flex-col gap-0.5 text-right", children: [
451
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "min-h-[1.75rem] text-overline text-muted-foreground", children: "Total Last 12 Months" }),
452
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-label-medium text-foreground", children: totalLast12Months != null ? totalLast12Months : NO_DATA })
378
453
  ] })
379
454
  ]
380
455
  }
@@ -384,8 +459,8 @@ function FinancialSubtotalBlock({
384
459
  // src/components/ui/button.tsx
385
460
  var import_react = require("react");
386
461
  var import_class_variance_authority2 = require("class-variance-authority");
387
- var import_lucide_react2 = require("lucide-react");
388
- var import_jsx_runtime4 = require("react/jsx-runtime");
462
+ var import_lucide_react3 = require("lucide-react");
463
+ var import_jsx_runtime5 = require("react/jsx-runtime");
389
464
  var buttonVariants = (0, import_class_variance_authority2.cva)(
390
465
  "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-button whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
391
466
  {
@@ -394,9 +469,9 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
394
469
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
395
470
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
396
471
  destructive: "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
397
- outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
472
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:border-border focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
398
473
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
399
- "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
474
+ "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:border-brand-secondary focus-visible:ring-brand-secondary/30",
400
475
  ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
401
476
  link: "text-primary underline-offset-4 hover:underline"
402
477
  },
@@ -439,7 +514,7 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
439
514
  ]);
440
515
  const Comp = asChild ? Slot : "button";
441
516
  const isIconOnly = size === "icon" || size === "icon-xs" || size === "icon-sm" || size === "icon-lg";
442
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
517
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
443
518
  Comp,
444
519
  __spreadProps(__spreadValues({
445
520
  className: cn(buttonVariants({ variant, size, className })),
@@ -450,8 +525,8 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
450
525
  ref,
451
526
  type
452
527
  }, props), {
453
- children: loading ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
454
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.Loader2, { "aria-hidden": "true", className: "animate-spin" }),
528
+ children: loading ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
529
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react3.Loader2, { "aria-hidden": "true", className: "animate-spin" }),
455
530
  !isIconOnly && children
456
531
  ] }) : children
457
532
  })
@@ -459,7 +534,7 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
459
534
  });
460
535
 
461
536
  // src/components/ui/financial-cards.tsx
462
- var import_jsx_runtime5 = require("react/jsx-runtime");
537
+ var import_jsx_runtime6 = require("react/jsx-runtime");
463
538
  function PropertyCard({
464
539
  address,
465
540
  type,
@@ -483,7 +558,7 @@ function PropertyCard({
483
558
  principlePaidOff
484
559
  }) {
485
560
  const [expanded, setExpanded] = React2.useState(false);
486
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
561
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
487
562
  "div",
488
563
  {
489
564
  className: cn(
@@ -491,20 +566,19 @@ function PropertyCard({
491
566
  !borderless && "border border-border"
492
567
  ),
493
568
  children: [
494
- isLinkedToBank ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
569
+ isLinkedToBank ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
495
570
  Button,
496
571
  {
497
572
  type: "button",
498
573
  variant: "ghost",
499
574
  "aria-expanded": expanded,
500
575
  onClick: () => setExpanded((prev) => !prev),
501
- className: "h-auto w-full justify-start gap-1.5 px-5 py-3 text-left",
576
+ className: "h-auto w-full justify-start gap-1.5 px-5 py-3 text-left has-[>svg]:px-5",
502
577
  children: [
503
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-label-medium text-foreground", children: address }),
504
- type && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Badge, { variant: "outline", children: type }),
505
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "flex-1" }),
506
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
507
- import_lucide_react3.ChevronDown,
578
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "flex-1 min-w-0 truncate text-label-medium text-foreground", children: address }),
579
+ type && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Badge, { className: "shrink-0", variant: "outline", children: type }),
580
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
581
+ import_lucide_react4.ChevronDown,
508
582
  {
509
583
  className: cn(
510
584
  "h-5 w-5 shrink-0 text-muted-foreground transition-transform duration-200",
@@ -514,67 +588,67 @@ function PropertyCard({
514
588
  )
515
589
  ]
516
590
  }
517
- ) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-1.5 px-5 py-3", children: [
518
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-label-medium text-foreground", children: address }),
519
- type && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Badge, { variant: "outline", children: type })
591
+ ) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-1.5 px-5 py-3", children: [
592
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-label-medium text-foreground", children: address }),
593
+ type && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Badge, { variant: "outline", children: type })
520
594
  ] }),
521
- !isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "px-5 pb-2 text-xs italic text-muted-foreground", children: "No mortgage account linked to this property" }),
522
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
595
+ !isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "px-5 pb-2 text-xs italic text-muted-foreground", children: "No mortgage account linked to this property" }),
596
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
523
597
  "div",
524
598
  {
525
599
  className: cn(
526
600
  "grid gap-5 px-5 py-[15px]",
527
- isLinkedToBank ? "grid-cols-3" : "grid-cols-1"
601
+ isLinkedToBank ? "grid-cols-2" : "grid-cols-1"
528
602
  ),
529
603
  children: [
530
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Estimated Value", value: estimated }),
531
- isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
532
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Loan Amount", value: loanAmount }),
533
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Equity", value: equity })
604
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Estimated Value", value: estimated }),
605
+ isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
606
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Loan Amount", value: loanAmount }),
607
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "col-span-2", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Equity", value: equity }) })
534
608
  ] })
535
609
  ]
536
610
  }
537
611
  ),
538
- isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "px-5 pb-[15px]", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
612
+ isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "px-5 pb-[15px]", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
539
613
  FinancialLvrBar,
540
614
  {
541
615
  percent: lvrPercent,
542
616
  label: lvr != null ? lvr : `${lvrPercent}%`
543
617
  }
544
618
  ) }),
545
- isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
619
+ isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
546
620
  "div",
547
621
  {
548
622
  className: cn(
549
623
  "grid transition-[grid-template-rows] duration-200 ease-in-out",
550
624
  expanded ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
551
625
  ),
552
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "overflow-hidden", children: [
553
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-5 border-t border-border px-5 py-[15px]", children: [
554
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubsectionTitle, { children: "Loan" }),
555
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-4 gap-x-4 gap-y-4", children: [
556
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
626
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "overflow-hidden", children: [
627
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col gap-5 border-t border-border px-5 py-[15px]", children: [
628
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialSubsectionTitle, { children: "Loan" }),
629
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-4 gap-x-4 gap-y-4", children: [
630
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
557
631
  FinancialDetailField,
558
632
  {
559
633
  label: "Name of Lender",
560
634
  value: lenderName
561
635
  }
562
636
  ),
563
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
637
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
564
638
  FinancialDetailField,
565
639
  {
566
640
  label: "Current Loan Amount",
567
641
  value: loanAmount
568
642
  }
569
643
  ),
570
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
644
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
571
645
  FinancialDetailField,
572
646
  {
573
647
  label: "Interest Rate",
574
648
  value: interestRate
575
649
  }
576
650
  ),
577
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
651
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
578
652
  FinancialDetailField,
579
653
  {
580
654
  label: "Years Remaining",
@@ -582,29 +656,29 @@ function PropertyCard({
582
656
  }
583
657
  )
584
658
  ] }),
585
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-4 gap-x-4 gap-y-4", children: [
586
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
659
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-4 gap-x-4 gap-y-4", children: [
660
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
587
661
  FinancialDetailField,
588
662
  {
589
663
  label: "Min Repayments",
590
664
  value: minRepayments
591
665
  }
592
666
  ),
593
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
667
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
594
668
  FinancialDetailField,
595
669
  {
596
670
  label: "Average Repayments",
597
671
  value: averageRepayments
598
672
  }
599
673
  ),
600
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
674
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
601
675
  FinancialDetailField,
602
676
  {
603
677
  label: "Redraw Amount",
604
678
  value: redrawAmount
605
679
  }
606
680
  ),
607
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
681
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
608
682
  FinancialDetailField,
609
683
  {
610
684
  label: "Offset Account",
@@ -613,8 +687,8 @@ function PropertyCard({
613
687
  )
614
688
  ] })
615
689
  ] }),
616
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-4 gap-x-4 gap-y-1", children: [
617
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
690
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-4 gap-x-4 gap-y-1", children: [
691
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
618
692
  FinancialDetailField,
619
693
  {
620
694
  variant: "footer",
@@ -622,7 +696,7 @@ function PropertyCard({
622
696
  value: totalMinRepayments
623
697
  }
624
698
  ),
625
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
699
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
626
700
  FinancialDetailField,
627
701
  {
628
702
  variant: "footer",
@@ -630,7 +704,7 @@ function PropertyCard({
630
704
  value: totalExtraRepayments
631
705
  }
632
706
  ),
633
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
707
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
634
708
  FinancialDetailField,
635
709
  {
636
710
  variant: "footer",
@@ -638,7 +712,7 @@ function PropertyCard({
638
712
  value: interestCharged
639
713
  }
640
714
  ),
641
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
715
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
642
716
  FinancialDetailField,
643
717
  {
644
718
  variant: "footer",
@@ -668,17 +742,17 @@ function DebtCard({
668
742
  totalInterestPaid,
669
743
  yearsRemaining
670
744
  }) {
671
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col h-full", children: [
672
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-5 px-5 py-[15px] border-b border-border min-h-[7rem] items-start", children: [
673
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Name of Lender", value: lenderName }),
674
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
745
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col h-full", children: [
746
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-3 gap-5 px-5 py-[15px] border-b border-border min-h-[7rem] items-start", children: [
747
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Name of Lender", value: lenderName }),
748
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
675
749
  FinancialDetailField,
676
750
  {
677
751
  label: "Current Loan Amount",
678
752
  value: currentLoanAmount
679
753
  }
680
754
  ),
681
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
755
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
682
756
  FinancialDetailField,
683
757
  {
684
758
  label: "Current Interest Rate",
@@ -686,24 +760,24 @@ function DebtCard({
686
760
  }
687
761
  )
688
762
  ] }),
689
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "px-5 py-[15px] flex flex-col gap-5 flex-1", children: [
690
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubsectionTitle, { children: "Loan Stats" }),
691
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
692
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
763
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "px-5 py-[15px] flex flex-col gap-5 flex-1", children: [
764
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialSubsectionTitle, { children: "Loan Stats" }),
765
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
766
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
693
767
  FinancialDetailField,
694
768
  {
695
769
  label: "Original Loan Amount",
696
770
  value: originalLoanAmount
697
771
  }
698
772
  ),
699
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
773
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
700
774
  FinancialDetailField,
701
775
  {
702
776
  label: "Original Loan Term",
703
777
  value: originalLoanTerm
704
778
  }
705
779
  ),
706
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
780
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
707
781
  FinancialDetailField,
708
782
  {
709
783
  label: "Monthly Repayments",
@@ -711,10 +785,10 @@ function DebtCard({
711
785
  }
712
786
  )
713
787
  ] }),
714
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
715
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Redraw Amount", value: redrawAmount }),
716
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Offset Account", value: offsetAmount }),
717
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
788
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
789
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Redraw Amount", value: redrawAmount }),
790
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Offset Account", value: offsetAmount }),
791
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
718
792
  FinancialDetailField,
719
793
  {
720
794
  label: "Extra Loan Repayments",
@@ -723,8 +797,8 @@ function DebtCard({
723
797
  )
724
798
  ] })
725
799
  ] }),
726
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-x-4 gap-y-1", children: [
727
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
800
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-3 gap-x-4 gap-y-1", children: [
801
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
728
802
  FinancialDetailField,
729
803
  {
730
804
  variant: "footer",
@@ -732,7 +806,7 @@ function DebtCard({
732
806
  value: totalRepaymentsMade
733
807
  }
734
808
  ),
735
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
809
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
736
810
  FinancialDetailField,
737
811
  {
738
812
  variant: "footer",
@@ -740,7 +814,7 @@ function DebtCard({
740
814
  value: totalInterestPaid
741
815
  }
742
816
  ),
743
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
817
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
744
818
  FinancialDetailField,
745
819
  {
746
820
  variant: "footer",
@@ -769,52 +843,52 @@ function OtherLiabilityCard({
769
843
  totalInterestPaid
770
844
  }) {
771
845
  const isCreditCard = type === "credit_card";
772
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col h-full", children: [
773
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-5 px-4 pt-5 pb-4 min-h-[7rem] items-start", children: [
774
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Lender", value: lenderName }),
775
- isCreditCard ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
846
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col h-full", children: [
847
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-3 gap-5 px-4 pt-5 pb-4 min-h-[7rem] items-start", children: [
848
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Lender", value: lenderName }),
849
+ isCreditCard ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
776
850
  FinancialDetailField,
777
851
  {
778
852
  label: "Current Balance",
779
853
  value: currentBalance
780
854
  }
781
- ) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
855
+ ) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
782
856
  FinancialDetailField,
783
857
  {
784
858
  label: "Current Loan Amount",
785
859
  value: currentLoanAmount
786
860
  }
787
861
  ),
788
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Interest Rate", value: interestRate })
862
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Interest Rate", value: interestRate })
789
863
  ] }),
790
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "px-4 pt-4 pb-5 flex flex-col gap-5 border-t border-border flex-1", children: [
791
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubsectionTitle, { children: isCreditCard ? "Card Stats" : "Loan Stats" }),
792
- isCreditCard ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
793
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Credit Limit", value: creditLimit }),
794
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
864
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "px-4 pt-4 pb-5 flex flex-col gap-5 border-t border-border flex-1", children: [
865
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialSubsectionTitle, { children: isCreditCard ? "Card Stats" : "Loan Stats" }),
866
+ isCreditCard ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
867
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Credit Limit", value: creditLimit }),
868
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
795
869
  FinancialDetailField,
796
870
  {
797
871
  label: "Min Monthly Payment",
798
872
  value: minMonthlyPayment
799
873
  }
800
874
  ),
801
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Annual Fee", value: annualFee })
802
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
803
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
875
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Annual Fee", value: annualFee })
876
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
877
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
804
878
  FinancialDetailField,
805
879
  {
806
880
  label: "Original Loan Amount",
807
881
  value: originalLoanAmount
808
882
  }
809
883
  ),
810
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
884
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
811
885
  FinancialDetailField,
812
886
  {
813
887
  label: "Original Loan Term",
814
888
  value: originalLoanTerm
815
889
  }
816
890
  ),
817
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
891
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
818
892
  FinancialDetailField,
819
893
  {
820
894
  label: "Monthly Repayments",
@@ -823,8 +897,8 @@ function OtherLiabilityCard({
823
897
  )
824
898
  ] })
825
899
  ] }),
826
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubtotalFrame, { children: isCreditCard ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-2 gap-x-4 gap-y-1", children: [
827
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
900
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialSubtotalFrame, { children: isCreditCard ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-2 gap-x-4 gap-y-1", children: [
901
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
828
902
  FinancialDetailField,
829
903
  {
830
904
  variant: "footer",
@@ -832,7 +906,7 @@ function OtherLiabilityCard({
832
906
  value: totalInterestPaid
833
907
  }
834
908
  ),
835
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
909
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
836
910
  FinancialDetailField,
837
911
  {
838
912
  variant: "footer",
@@ -840,8 +914,8 @@ function OtherLiabilityCard({
840
914
  value: availableCredit
841
915
  }
842
916
  )
843
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-x-4 gap-y-1", children: [
844
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
917
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-3 gap-x-4 gap-y-1", children: [
918
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
845
919
  FinancialDetailField,
846
920
  {
847
921
  variant: "footer",
@@ -849,7 +923,7 @@ function OtherLiabilityCard({
849
923
  value: totalRepaymentsMade
850
924
  }
851
925
  ),
852
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
926
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
853
927
  FinancialDetailField,
854
928
  {
855
929
  variant: "footer",
@@ -857,7 +931,7 @@ function OtherLiabilityCard({
857
931
  value: totalInterestPaid
858
932
  }
859
933
  ),
860
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
934
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
861
935
  FinancialDetailField,
862
936
  {
863
937
  variant: "footer",
@@ -883,10 +957,10 @@ function AlertCard({
883
957
  onActionChange
884
958
  }) {
885
959
  const { dot, border } = SEVERITY_CLASSES[severityCode];
886
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: cn("flex flex-col gap-1.5 border p-2.5 px-3", border), children: [
887
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-1.5", children: [
888
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: cn("h-[9px] w-[9px] shrink-0 rounded-full", dot) }),
889
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
960
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: cn("flex flex-col gap-1.5 border p-2.5 px-3", border), children: [
961
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-1.5", children: [
962
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: cn("h-[9px] w-[9px] shrink-0 rounded-full", dot) }),
963
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
890
964
  "span",
891
965
  {
892
966
  className: cn(
@@ -897,19 +971,19 @@ function AlertCard({
897
971
  }
898
972
  )
899
973
  ] }),
900
- ignored ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "ml-[15px] text-xs italic text-muted-foreground/60", children: [
974
+ ignored ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "ml-[15px] text-xs italic text-muted-foreground/60", children: [
901
975
  "Ignored until ",
902
976
  ignoredUntil
903
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
977
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
904
978
  RadioGroup,
905
979
  {
906
980
  value: selectedAction != null ? selectedAction : "",
907
981
  onValueChange: (val) => onActionChange == null ? void 0 : onActionChange(val),
908
982
  className: "ml-[15px] flex flex-col gap-1",
909
983
  children: [
910
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
911
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(RadioGroupItem, { value: "DISMISS", id: `dismiss-${id}` }),
912
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
984
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
985
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(RadioGroupItem, { value: "DISMISS", id: `dismiss-${id}` }),
986
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
913
987
  "label",
914
988
  {
915
989
  htmlFor: `dismiss-${id}`,
@@ -918,9 +992,9 @@ function AlertCard({
918
992
  }
919
993
  )
920
994
  ] }),
921
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
922
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(RadioGroupItem, { value: "SNOOZE", id: `snooze-${id}` }),
923
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
995
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
996
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(RadioGroupItem, { value: "SNOOZE", id: `snooze-${id}` }),
997
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
924
998
  "label",
925
999
  {
926
1000
  htmlFor: `snooze-${id}`,
@@ -934,6 +1008,16 @@ function AlertCard({
934
1008
  )
935
1009
  ] });
936
1010
  }
1011
+ function ageFromDob(dobStr) {
1012
+ if (!dobStr) return null;
1013
+ const dob = new Date(dobStr);
1014
+ if (isNaN(dob.getTime())) return null;
1015
+ const today = /* @__PURE__ */ new Date();
1016
+ let age = today.getFullYear() - dob.getFullYear();
1017
+ const m = today.getMonth() - dob.getMonth();
1018
+ if (m < 0 || m === 0 && today.getDate() < dob.getDate()) age--;
1019
+ return age >= 0 ? age : null;
1020
+ }
937
1021
  function AboutCard({
938
1022
  title,
939
1023
  firstName,
@@ -944,6 +1028,7 @@ function AboutCard({
944
1028
  gender,
945
1029
  maritalStatus,
946
1030
  numDependants,
1031
+ dependants,
947
1032
  citizenStatus,
948
1033
  residentialAddress,
949
1034
  residentialStatus,
@@ -952,210 +1037,265 @@ function AboutCard({
952
1037
  driversLicence,
953
1038
  passport,
954
1039
  propertyInTrust,
955
- companyOwnership
1040
+ companyOwnership,
1041
+ borderless = false
956
1042
  }) {
957
1043
  const fullName = [title, firstName, lastName].filter(Boolean).join(" ") || "\u2014";
958
1044
  const timeAtAddress = timeAtAddressYears || timeAtAddressMonths ? [
959
1045
  timeAtAddressYears && `${timeAtAddressYears}yr`,
960
1046
  timeAtAddressMonths && `${timeAtAddressMonths}mo`
961
1047
  ].filter(Boolean).join(" ") : void 0;
962
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "border border-border overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-2 gap-x-8 gap-y-4 px-5 py-4", children: [
963
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Full Name", value: fullName }),
964
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Date of Birth", value: dob || "\u2014" }),
965
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Gender", value: gender || "\u2014" }),
966
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Phone", value: phone || "\u2014" }),
967
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Email", value: email || "\u2014" }),
968
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
969
- FinancialDetailField,
970
- {
971
- label: "Marital Status",
972
- value: maritalStatus || "\u2014"
973
- }
974
- ),
975
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
976
- FinancialDetailField,
977
- {
978
- label: "No. of Dependants",
979
- value: numDependants != null ? numDependants : "\u2014"
980
- }
981
- ),
982
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
983
- FinancialDetailField,
984
- {
985
- label: "Citizenship",
986
- value: citizenStatus || "\u2014"
987
- }
988
- ),
989
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
990
- FinancialDetailField,
991
- {
992
- label: "Residential Address",
993
- value: residentialAddress || "\u2014"
994
- }
995
- ),
996
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
997
- FinancialDetailField,
998
- {
999
- label: "Residential Status",
1000
- value: residentialStatus || "\u2014"
1001
- }
1002
- ),
1003
- timeAtAddress && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Time at Address", value: timeAtAddress }),
1004
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1005
- FinancialDetailField,
1006
- {
1007
- label: "Driver's Licence",
1008
- value: driversLicence || "\u2014"
1009
- }
1010
- ),
1011
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Passport", value: passport || "\u2014" }),
1012
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1013
- FinancialDetailField,
1014
- {
1015
- label: "Property in Trust",
1016
- value: propertyInTrust || "\u2014"
1017
- }
1018
- ),
1019
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1020
- FinancialDetailField,
1021
- {
1022
- label: "Company Ownership",
1023
- value: companyOwnership || "\u2014"
1024
- }
1025
- )
1026
- ] }) });
1048
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1049
+ "div",
1050
+ {
1051
+ className: cn(
1052
+ "overflow-hidden divide-y divide-border",
1053
+ !borderless && "border border-border"
1054
+ ),
1055
+ children: [
1056
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
1057
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Full Name", value: fullName }),
1058
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Date of Birth", value: dob || "\u2014" }),
1059
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Gender", value: gender || "\u2014" }),
1060
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1061
+ FinancialDetailField,
1062
+ {
1063
+ label: "Citizenship",
1064
+ value: citizenStatus || "\u2014"
1065
+ }
1066
+ ),
1067
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1068
+ FinancialDetailField,
1069
+ {
1070
+ label: "Driver's Licence",
1071
+ value: driversLicence || "\u2014"
1072
+ }
1073
+ ),
1074
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Passport", value: passport || "\u2014" })
1075
+ ] }),
1076
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
1077
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Phone", value: phone || "\u2014" }),
1078
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Email", value: email || "\u2014" })
1079
+ ] }),
1080
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
1081
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1082
+ FinancialDetailField,
1083
+ {
1084
+ label: "Marital Status",
1085
+ value: maritalStatus || "\u2014"
1086
+ }
1087
+ ),
1088
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1089
+ FinancialDetailField,
1090
+ {
1091
+ label: "No. of Dependants",
1092
+ value: numDependants != null ? numDependants : "\u2014"
1093
+ }
1094
+ ),
1095
+ dependants && dependants.map((dep, i) => {
1096
+ const age = ageFromDob(dep.dob);
1097
+ const dobFormatted = formatDateShort(dep.dob) || "\u2014";
1098
+ const value = age !== null ? `${dobFormatted} \xB7 age ${age}` : dobFormatted;
1099
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1100
+ FinancialDetailField,
1101
+ {
1102
+ label: `Dependant ${i + 1}`,
1103
+ value
1104
+ },
1105
+ i
1106
+ );
1107
+ })
1108
+ ] }),
1109
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
1110
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "col-span-2", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1111
+ FinancialDetailField,
1112
+ {
1113
+ label: "Residential Address",
1114
+ value: residentialAddress || "\u2014"
1115
+ }
1116
+ ) }),
1117
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1118
+ FinancialDetailField,
1119
+ {
1120
+ label: "Residential Status",
1121
+ value: residentialStatus || "\u2014"
1122
+ }
1123
+ ),
1124
+ timeAtAddress && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialDetailField, { label: "Time at Address", value: timeAtAddress })
1125
+ ] }),
1126
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
1127
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1128
+ FinancialDetailField,
1129
+ {
1130
+ label: "Property in Trust",
1131
+ value: propertyInTrust || "\u2014"
1132
+ }
1133
+ ),
1134
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1135
+ FinancialDetailField,
1136
+ {
1137
+ label: "Company Ownership",
1138
+ value: companyOwnership || "\u2014"
1139
+ }
1140
+ )
1141
+ ] })
1142
+ ]
1143
+ }
1144
+ );
1027
1145
  }
1028
- function IncomeCard({ items, totalMonthly }) {
1146
+ function IncomeCard({
1147
+ items,
1148
+ totalMonthly,
1149
+ borderless = false
1150
+ }) {
1029
1151
  if (items.length === 0) {
1030
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "border border-border px-5 py-4", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-muted-foreground", children: "No income recorded." }) });
1152
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("px-5 py-4", !borderless && "border border-border"), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm text-muted-foreground", children: "No income recorded." }) });
1031
1153
  }
1032
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col", children: [
1033
- items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1034
- "div",
1035
- {
1036
- className: cn(
1037
- "flex flex-col gap-3 px-5 py-[15px]",
1038
- i < items.length - 1 && "border-b border-border"
1039
- ),
1040
- children: [
1041
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-x-6", children: [
1042
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Type", value: item.incomeType || "\u2014" }),
1043
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1154
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1155
+ "div",
1156
+ {
1157
+ className: cn(
1158
+ "overflow-hidden flex flex-col",
1159
+ !borderless && "border border-border"
1160
+ ),
1161
+ children: [
1162
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Accordion, { openMultiple: true, children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(AccordionItem, { value: String(i), children: [
1163
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(AccordionTrigger, { className: "px-5", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-1 items-center justify-between pr-2", children: [
1164
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
1165
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-label-medium text-foreground", children: item.incomeType }),
1166
+ item.jobTitle && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "text-body-small text-muted-foreground", children: [
1167
+ "\xB7 ",
1168
+ item.jobTitle
1169
+ ] })
1170
+ ] }),
1171
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-label-medium text-foreground", children: item.amountLabel })
1172
+ ] }) }),
1173
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(AccordionContent, { className: "px-5", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "grid grid-cols-3 gap-x-6 gap-y-4 pb-2 pt-1", children: [
1174
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1044
1175
  FinancialDetailField,
1045
1176
  {
1046
1177
  label: "Job Title",
1047
1178
  value: item.jobTitle || "\u2014"
1048
1179
  }
1049
1180
  ),
1050
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Amount", value: item.amountLabel })
1051
- ] }),
1052
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "grid grid-cols-3 gap-x-6", children: [
1053
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1181
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1054
1182
  FinancialDetailField,
1055
1183
  {
1056
1184
  label: "Company",
1057
1185
  value: item.companyName || "\u2014"
1058
1186
  }
1059
1187
  ),
1060
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1188
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1061
1189
  FinancialDetailField,
1062
1190
  {
1063
1191
  label: "Start Date",
1064
1192
  value: formatDateShort(item.startDate)
1065
1193
  }
1066
1194
  ),
1067
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1195
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1068
1196
  FinancialDetailField,
1069
1197
  {
1070
1198
  label: "Status",
1071
1199
  value: item.stillInPosition === void 0 ? "\u2014" : item.stillInPosition ? "Still in position" : item.endDate ? `Ended ${formatDateShort(item.endDate)}` : "No longer in position"
1072
1200
  }
1201
+ ),
1202
+ item.companyAddress && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1203
+ FinancialDetailField,
1204
+ {
1205
+ label: "Company Address",
1206
+ value: item.companyAddress
1207
+ }
1073
1208
  )
1074
- ] }),
1075
- item.companyAddress && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1076
- FinancialDetailField,
1077
- {
1078
- label: "Company Address",
1079
- value: item.companyAddress
1080
- }
1081
- )
1082
- ]
1083
- },
1084
- i
1085
- )),
1086
- totalMonthly && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1087
- FinancialSubtotalBlock,
1088
- {
1089
- monthlyAverage: totalMonthly,
1090
- label: "Total Monthly Income"
1091
- }
1092
- ) })
1093
- ] });
1209
+ ] }) })
1210
+ ] }, i)) }),
1211
+ totalMonthly && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1212
+ FinancialSubtotalBlock,
1213
+ {
1214
+ monthlyAverage: totalMonthly,
1215
+ label: "Total Monthly Income"
1216
+ }
1217
+ ) })
1218
+ ]
1219
+ }
1220
+ );
1094
1221
  }
1095
1222
  var EXPENSE_ICON_MAP = {
1096
- groceries: import_lucide_react3.ShoppingCart,
1097
- "dining out": import_lucide_react3.UtensilsCrossed,
1098
- dining: import_lucide_react3.UtensilsCrossed,
1099
- restaurants: import_lucide_react3.UtensilsCrossed,
1100
- transport: import_lucide_react3.Car,
1101
- transportation: import_lucide_react3.Car,
1102
- vehicle: import_lucide_react3.Car,
1103
- utilities: import_lucide_react3.Zap,
1104
- electricity: import_lucide_react3.Zap,
1105
- insurance: import_lucide_react3.Shield,
1106
- "council rates": import_lucide_react3.Landmark,
1107
- council: import_lucide_react3.Landmark,
1108
- rates: import_lucide_react3.Landmark,
1109
- medical: import_lucide_react3.HeartPulse,
1110
- health: import_lucide_react3.HeartPulse,
1111
- subscriptions: import_lucide_react3.RefreshCw,
1112
- subscription: import_lucide_react3.RefreshCw,
1113
- "credit card": import_lucide_react3.CreditCard,
1114
- education: import_lucide_react3.GraduationCap,
1115
- childcare: import_lucide_react3.Baby,
1116
- entertainment: import_lucide_react3.Tv,
1117
- gym: import_lucide_react3.Dumbbell,
1118
- fitness: import_lucide_react3.Dumbbell,
1119
- clothing: import_lucide_react3.Shirt,
1120
- rent: import_lucide_react3.Building2
1223
+ groceries: import_lucide_react4.ShoppingCart,
1224
+ "dining out": import_lucide_react4.UtensilsCrossed,
1225
+ dining: import_lucide_react4.UtensilsCrossed,
1226
+ restaurants: import_lucide_react4.UtensilsCrossed,
1227
+ transport: import_lucide_react4.Car,
1228
+ transportation: import_lucide_react4.Car,
1229
+ vehicle: import_lucide_react4.Car,
1230
+ utilities: import_lucide_react4.Zap,
1231
+ electricity: import_lucide_react4.Zap,
1232
+ insurance: import_lucide_react4.Shield,
1233
+ "council rates": import_lucide_react4.Landmark,
1234
+ council: import_lucide_react4.Landmark,
1235
+ rates: import_lucide_react4.Landmark,
1236
+ medical: import_lucide_react4.HeartPulse,
1237
+ health: import_lucide_react4.HeartPulse,
1238
+ subscriptions: import_lucide_react4.RefreshCw,
1239
+ subscription: import_lucide_react4.RefreshCw,
1240
+ "credit card": import_lucide_react4.CreditCard,
1241
+ education: import_lucide_react4.GraduationCap,
1242
+ childcare: import_lucide_react4.Baby,
1243
+ entertainment: import_lucide_react4.Tv,
1244
+ gym: import_lucide_react4.Dumbbell,
1245
+ fitness: import_lucide_react4.Dumbbell,
1246
+ clothing: import_lucide_react4.Shirt,
1247
+ rent: import_lucide_react4.Building2
1121
1248
  };
1122
1249
  function getExpenseIcon(expenseType) {
1123
1250
  var _a;
1124
- return (_a = EXPENSE_ICON_MAP[expenseType.toLowerCase()]) != null ? _a : import_lucide_react3.Receipt;
1251
+ return (_a = EXPENSE_ICON_MAP[expenseType.toLowerCase()]) != null ? _a : import_lucide_react4.Receipt;
1125
1252
  }
1126
- function ExpensesCard({ items, totalMonthly }) {
1253
+ function ExpensesCard({
1254
+ items,
1255
+ totalMonthly,
1256
+ borderless = false
1257
+ }) {
1127
1258
  if (items.length === 0) {
1128
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "border border-border px-5 py-4", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-muted-foreground", children: "No expenses recorded." }) });
1259
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("px-5 py-4", !borderless && "border border-border"), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm text-muted-foreground", children: "No expenses recorded." }) });
1129
1260
  }
1130
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col", children: [
1131
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex flex-col", children: items.map((item, i) => {
1132
- const Icon = getExpenseIcon(item.expenseType);
1133
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1134
- "div",
1135
- {
1136
- className: cn(
1137
- "flex items-center justify-between gap-4 px-5 py-2.5",
1138
- i < items.length - 1 && "border-b border-border"
1139
- ),
1140
- children: [
1141
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2.5", children: [
1142
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Icon, { className: "size-3.5 shrink-0 text-muted-foreground" }),
1143
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-body-small text-foreground", children: item.expenseType })
1144
- ] }),
1145
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-label-medium whitespace-nowrap text-destructive", children: item.amountLabel })
1146
- ]
1147
- },
1148
- item.expenseType
1149
- );
1150
- }) }),
1151
- totalMonthly && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1152
- FinancialSubtotalBlock,
1153
- {
1154
- monthlyAverage: totalMonthly,
1155
- label: "Total Monthly Expenses"
1156
- }
1157
- ) })
1158
- ] });
1261
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1262
+ "div",
1263
+ {
1264
+ className: cn(
1265
+ "overflow-hidden flex flex-col",
1266
+ !borderless && "border border-border"
1267
+ ),
1268
+ children: [
1269
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "flex flex-col", children: items.map((item, i) => {
1270
+ const Icon = getExpenseIcon(item.expenseType);
1271
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1272
+ "div",
1273
+ {
1274
+ className: cn(
1275
+ "flex items-center justify-between gap-4 px-5 py-2.5",
1276
+ i < items.length - 1 && "border-b border-border"
1277
+ ),
1278
+ children: [
1279
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2.5", children: [
1280
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { className: "size-3.5 shrink-0 text-muted-foreground" }),
1281
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-body-small text-foreground", children: item.expenseType })
1282
+ ] }),
1283
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-label-medium whitespace-nowrap text-destructive", children: item.amountLabel })
1284
+ ]
1285
+ },
1286
+ item.expenseType
1287
+ );
1288
+ }) }),
1289
+ totalMonthly && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1290
+ FinancialSubtotalBlock,
1291
+ {
1292
+ monthlyAverage: totalMonthly,
1293
+ label: "Total Monthly Expenses"
1294
+ }
1295
+ ) })
1296
+ ]
1297
+ }
1298
+ );
1159
1299
  }
1160
1300
  // Annotate the CommonJS export names for ESM import in node:
1161
1301
  0 && (module.exports = {