@wealthx/shadcn 1.2.1 → 1.3.0

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 (247) hide show
  1. package/.turbo/turbo-build.log +203 -150
  2. package/CHANGELOG.md +29 -0
  3. package/dist/{chunk-4Y6R4WEC.mjs → chunk-2A5RRQGG.mjs} +9 -22
  4. package/dist/{chunk-TS2ZX2VS.mjs → chunk-2UM72RJ7.mjs} +11 -15
  5. package/dist/{chunk-A56YQQHG.mjs → chunk-3NCUZIFP.mjs} +2 -2
  6. package/dist/chunk-3OYFOX3X.mjs +79 -0
  7. package/dist/{chunk-RP3SQYA3.mjs → chunk-3TTACBDP.mjs} +9 -4
  8. package/dist/chunk-4GAWMKMI.mjs +710 -0
  9. package/dist/{chunk-SYOD63OZ.mjs → chunk-5FQIKDKP.mjs} +6 -6
  10. package/dist/{chunk-K3JYD4IU.mjs → chunk-5IS7G74I.mjs} +11 -4
  11. package/dist/chunk-6AW4KJHE.mjs +235 -0
  12. package/dist/chunk-6CR5N2JW.mjs +302 -0
  13. package/dist/{chunk-XIRTEFKH.mjs → chunk-6DZEXFNB.mjs} +36 -8
  14. package/dist/chunk-6O6KD7CE.mjs +271 -0
  15. package/dist/chunk-7PV3IWCN.mjs +33 -0
  16. package/dist/{chunk-SPJ5KXW7.mjs → chunk-7S5AESZO.mjs} +5 -5
  17. package/dist/{chunk-RYCLWMZ7.mjs → chunk-ABFDMHOR.mjs} +9 -7
  18. package/dist/{chunk-SWGT756Z.mjs → chunk-AMQZRHEZ.mjs} +10 -4
  19. package/dist/{chunk-WOEHFRGB.mjs → chunk-BDYZCBRT.mjs} +4 -4
  20. package/dist/{chunk-WAZD7NFU.mjs → chunk-BKNFWEH2.mjs} +6 -6
  21. package/dist/{chunk-CLIN5525.mjs → chunk-C7CQJNMR.mjs} +1 -1
  22. package/dist/{chunk-D4ILTPOG.mjs → chunk-CFMQP5QS.mjs} +5 -4
  23. package/dist/{chunk-VPBN3WOO.mjs → chunk-DGHAXJBN.mjs} +9 -7
  24. package/dist/chunk-DOEO3CDL.mjs +27 -0
  25. package/dist/{chunk-KUDCQ4FI.mjs → chunk-DUJTAXMH.mjs} +9 -4
  26. package/dist/{chunk-GGM2UYGG.mjs → chunk-EBXQWIYG.mjs} +10 -4
  27. package/dist/{chunk-PMB3A7V3.mjs → chunk-EI5F6FMT.mjs} +1 -1
  28. package/dist/chunk-EWRB4PAD.mjs +468 -0
  29. package/dist/chunk-FAKPBKLT.mjs +253 -0
  30. package/dist/chunk-FNQXOAYJ.mjs +169 -0
  31. package/dist/{chunk-4CX4SBRO.mjs → chunk-GHC7LLUX.mjs} +14 -5
  32. package/dist/chunk-HBZLGDIN.mjs +507 -0
  33. package/dist/{chunk-SIZMLSRU.mjs → chunk-HISNT2MG.mjs} +8 -6
  34. package/dist/{chunk-PR6V5XKM.mjs → chunk-HVY6KCCF.mjs} +7 -4
  35. package/dist/chunk-I3RZS7V2.mjs +136 -0
  36. package/dist/chunk-IAE3F7DR.mjs +1962 -0
  37. package/dist/{chunk-ZRO5JO3H.mjs → chunk-IHMFS7NZ.mjs} +81 -84
  38. package/dist/{chunk-PCPLO5HT.mjs → chunk-IOJRDS6V.mjs} +96 -14
  39. package/dist/{chunk-LHYCMLVA.mjs → chunk-JKGDCQTZ.mjs} +11 -4
  40. package/dist/{chunk-H45TKD34.mjs → chunk-JMHR3YGZ.mjs} +1 -1
  41. package/dist/{chunk-4MN6UQHG.mjs → chunk-K5A5L6T2.mjs} +17 -39
  42. package/dist/{chunk-CSDO6VBW.mjs → chunk-LBMRIB3G.mjs} +10 -10
  43. package/dist/chunk-LV35NGVG.mjs +272 -0
  44. package/dist/{chunk-FZIXGLMV.mjs → chunk-M3FV7LOK.mjs} +5 -12
  45. package/dist/{chunk-FMAXJ2SI.mjs → chunk-MBON7YRJ.mjs} +1 -1
  46. package/dist/chunk-MIZQHHUO.mjs +441 -0
  47. package/dist/chunk-MN5NYQCL.mjs +29 -0
  48. package/dist/chunk-NL3ZO62D.mjs +31 -0
  49. package/dist/{chunk-Q76O3RIQ.mjs → chunk-NMOI6CQD.mjs} +1 -1
  50. package/dist/{chunk-P6AM5V7O.mjs → chunk-OODBHKG7.mjs} +1 -1
  51. package/dist/chunk-PBL4OQV2.mjs +283 -0
  52. package/dist/{chunk-3WMX6KWS.mjs → chunk-PU4YZQXV.mjs} +11 -12
  53. package/dist/chunk-QMY3AZJH.mjs +80 -0
  54. package/dist/{chunk-BL3DXM2X.mjs → chunk-QZ4RE6NA.mjs} +11 -4
  55. package/dist/{chunk-VACKZOMY.mjs → chunk-R3VSPKNP.mjs} +3 -3
  56. package/dist/{chunk-OPNQAVVH.mjs → chunk-RJI6GKVF.mjs} +8 -6
  57. package/dist/{chunk-WG6JGJXB.mjs → chunk-T4BJLT57.mjs} +1 -1
  58. package/dist/chunk-U4NDAF2P.mjs +207 -0
  59. package/dist/{chunk-DOH3EHX7.mjs → chunk-U5X52X37.mjs} +1 -1
  60. package/dist/chunk-UMTOX62O.mjs +415 -0
  61. package/dist/{chunk-7MMXNK3C.mjs → chunk-VLARHE5V.mjs} +8 -6
  62. package/dist/{chunk-2I5S2AMY.mjs → chunk-XREGSKX3.mjs} +2 -2
  63. package/dist/{chunk-JNQORUPP.mjs → chunk-YJG55G2H.mjs} +14 -11
  64. package/dist/chunk-ZC45IGZO.mjs +388 -0
  65. package/dist/components/ui/add-column-modal.js +42 -14
  66. package/dist/components/ui/add-column-modal.mjs +4 -4
  67. package/dist/components/ui/add-lead-modal.js +42 -11
  68. package/dist/components/ui/add-lead-modal.mjs +3 -3
  69. package/dist/components/ui/advisor-card.js +497 -0
  70. package/dist/components/ui/advisor-card.mjs +13 -0
  71. package/dist/components/ui/ai-assistant-drawer.js +11 -10
  72. package/dist/components/ui/ai-assistant-drawer.mjs +3 -3
  73. package/dist/components/ui/alert-dialog.js +2 -2
  74. package/dist/components/ui/alert-dialog.mjs +2 -2
  75. package/dist/components/ui/appointment-action-dialogs.js +1160 -0
  76. package/dist/components/ui/appointment-action-dialogs.mjs +23 -0
  77. package/dist/components/ui/appointment-availability-settings.js +1590 -0
  78. package/dist/components/ui/appointment-availability-settings.mjs +23 -0
  79. package/dist/components/ui/appointment-book-dialog.js +1744 -0
  80. package/dist/components/ui/appointment-book-dialog.mjs +27 -0
  81. package/dist/components/ui/appointment-calendar-view.js +833 -0
  82. package/dist/components/ui/appointment-calendar-view.mjs +14 -0
  83. package/dist/components/ui/appointment-detail-sheet.js +1517 -0
  84. package/dist/components/ui/appointment-detail-sheet.mjs +24 -0
  85. package/dist/components/ui/appointment-gmail-connect.js +467 -0
  86. package/dist/components/ui/appointment-gmail-connect.mjs +14 -0
  87. package/dist/components/ui/appointment-mini-card.js +345 -0
  88. package/dist/components/ui/appointment-mini-card.mjs +11 -0
  89. package/dist/components/ui/appointment-time-slot-picker.js +311 -0
  90. package/dist/components/ui/appointment-time-slot-picker.mjs +13 -0
  91. package/dist/components/ui/appointment-upcoming-card.js +1268 -0
  92. package/dist/components/ui/appointment-upcoming-card.mjs +21 -0
  93. package/dist/components/ui/backoffice-alert-history-chart.js +11 -5
  94. package/dist/components/ui/backoffice-alert-history-chart.mjs +5 -4
  95. package/dist/components/ui/backoffice-alerts-chart.js +786 -0
  96. package/dist/components/ui/backoffice-alerts-chart.mjs +19 -0
  97. package/dist/components/ui/backoffice-connections-chart.js +817 -0
  98. package/dist/components/ui/backoffice-connections-chart.mjs +19 -0
  99. package/dist/components/ui/backoffice-contact-history-chart.js +11 -5
  100. package/dist/components/ui/backoffice-contact-history-chart.mjs +5 -4
  101. package/dist/components/ui/badge.js +6 -6
  102. package/dist/components/ui/badge.mjs +1 -1
  103. package/dist/components/ui/borrowing-capacity-line-chart.js +30 -21
  104. package/dist/components/ui/borrowing-capacity-line-chart.mjs +5 -4
  105. package/dist/components/ui/button.js +2 -2
  106. package/dist/components/ui/button.mjs +1 -1
  107. package/dist/components/ui/calendar.js +2 -2
  108. package/dist/components/ui/calendar.mjs +2 -2
  109. package/dist/components/ui/card.js +1 -1
  110. package/dist/components/ui/card.mjs +1 -1
  111. package/dist/components/ui/cash-balance-line-chart.js +31 -23
  112. package/dist/components/ui/cash-balance-line-chart.mjs +5 -4
  113. package/dist/components/ui/cashflow-bar-chart.js +12 -5
  114. package/dist/components/ui/cashflow-bar-chart.mjs +5 -4
  115. package/dist/components/ui/chip.js +97 -18
  116. package/dist/components/ui/chip.mjs +3 -2
  117. package/dist/components/ui/color-picker.js +547 -0
  118. package/dist/components/ui/color-picker.mjs +24 -0
  119. package/dist/components/ui/data-table.js +182 -129
  120. package/dist/components/ui/data-table.mjs +3 -2
  121. package/dist/components/ui/date-picker.js +48 -27
  122. package/dist/components/ui/date-picker.mjs +4 -3
  123. package/dist/components/ui/dialog.js +37 -9
  124. package/dist/components/ui/dialog.mjs +2 -2
  125. package/dist/components/ui/expense-bar-chart.js +12 -5
  126. package/dist/components/ui/expense-bar-chart.mjs +5 -4
  127. package/dist/components/ui/field.mjs +2 -2
  128. package/dist/components/ui/financial-cards.js +322 -155
  129. package/dist/components/ui/financial-cards.mjs +5 -3
  130. package/dist/components/ui/financial-drawers.js +2 -2
  131. package/dist/components/ui/financial-drawers.mjs +3 -3
  132. package/dist/components/ui/financial-sections.js +14 -10
  133. package/dist/components/ui/financial-sections.mjs +6 -5
  134. package/dist/components/ui/form-primitives.js +4 -4
  135. package/dist/components/ui/form-primitives.mjs +3 -3
  136. package/dist/components/ui/income-bar-chart.js +12 -5
  137. package/dist/components/ui/income-bar-chart.mjs +5 -4
  138. package/dist/components/ui/input-group.js +2 -2
  139. package/dist/components/ui/input-group.mjs +2 -2
  140. package/dist/components/ui/kanban-column.js +52 -44
  141. package/dist/components/ui/kanban-column.mjs +7 -5
  142. package/dist/components/ui/opportunity-card.js +52 -44
  143. package/dist/components/ui/opportunity-card.mjs +6 -4
  144. package/dist/components/ui/opportunity-edit-modals.js +1371 -1267
  145. package/dist/components/ui/opportunity-edit-modals.mjs +10 -10
  146. package/dist/components/ui/opportunity-summary-tab.js +2748 -2161
  147. package/dist/components/ui/opportunity-summary-tab.mjs +16 -16
  148. package/dist/components/ui/page-header.js +92 -0
  149. package/dist/components/ui/page-header.mjs +8 -0
  150. package/dist/components/ui/page-top-bar.js +88 -0
  151. package/dist/components/ui/page-top-bar.mjs +8 -0
  152. package/dist/components/ui/pagination.js +303 -19
  153. package/dist/components/ui/pagination.mjs +11 -4
  154. package/dist/components/ui/pipeline-board.js +209 -195
  155. package/dist/components/ui/pipeline-board.mjs +10 -8
  156. package/dist/components/ui/pipeline-dialogs.js +118 -69
  157. package/dist/components/ui/pipeline-dialogs.mjs +8 -7
  158. package/dist/components/ui/pipeline-primitives.js +6 -6
  159. package/dist/components/ui/pipeline-primitives.mjs +2 -2
  160. package/dist/components/ui/property-cashflow-doughnut-chart.js +14 -12
  161. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +5 -4
  162. package/dist/components/ui/property-debt-equity-doughnut-chart.js +14 -12
  163. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +5 -4
  164. package/dist/components/ui/property-mobile-estimate-line-chart.js +16 -14
  165. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +5 -4
  166. package/dist/components/ui/sidebar-nav.js +679 -0
  167. package/dist/components/ui/sidebar-nav.mjs +14 -0
  168. package/dist/components/ui/stage-timeline.js +6 -6
  169. package/dist/components/ui/stage-timeline.mjs +3 -3
  170. package/dist/components/ui/stepper.js +283 -0
  171. package/dist/components/ui/stepper.mjs +18 -0
  172. package/dist/components/ui/toggle-group.js +4 -4
  173. package/dist/components/ui/toggle-group.mjs +2 -2
  174. package/dist/components/ui/toggle.js +4 -4
  175. package/dist/components/ui/toggle.mjs +1 -1
  176. package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +18 -16
  177. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +5 -4
  178. package/dist/components/ui/transactions-income-expense-bar-chart.js +28 -12
  179. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +5 -4
  180. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +18 -16
  181. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +5 -4
  182. package/dist/index.js +12927 -8522
  183. package/dist/index.mjs +288 -190
  184. package/dist/lib/typography.js +10 -10
  185. package/dist/lib/typography.mjs +1 -1
  186. package/dist/styles.css +1 -1
  187. package/package.json +86 -1
  188. package/src/components/index.tsx +146 -0
  189. package/src/components/ui/add-column-modal.tsx +7 -7
  190. package/src/components/ui/add-lead-modal.tsx +6 -3
  191. package/src/components/ui/advisor-card.tsx +227 -0
  192. package/src/components/ui/ai-assistant-drawer.tsx +4 -3
  193. package/src/components/ui/appointment-action-dialogs.tsx +297 -0
  194. package/src/components/ui/appointment-availability-settings.tsx +645 -0
  195. package/src/components/ui/appointment-book-dialog.tsx +618 -0
  196. package/src/components/ui/appointment-calendar-view.tsx +510 -0
  197. package/src/components/ui/appointment-detail-sheet.tsx +415 -0
  198. package/src/components/ui/appointment-gmail-connect.tsx +188 -0
  199. package/src/components/ui/appointment-mini-card.tsx +104 -0
  200. package/src/components/ui/appointment-time-slot-picker.tsx +123 -0
  201. package/src/components/ui/appointment-upcoming-card.tsx +635 -0
  202. package/src/components/ui/backoffice-alert-history-chart.tsx +10 -2
  203. package/src/components/ui/backoffice-alerts-chart.tsx +312 -0
  204. package/src/components/ui/backoffice-connections-chart.tsx +339 -0
  205. package/src/components/ui/backoffice-contact-history-chart.tsx +10 -2
  206. package/src/components/ui/badge.tsx +12 -6
  207. package/src/components/ui/borrowing-capacity-line-chart.tsx +4 -11
  208. package/src/components/ui/button.tsx +2 -2
  209. package/src/components/ui/card.tsx +1 -1
  210. package/src/components/ui/cash-balance-line-chart.tsx +4 -23
  211. package/src/components/ui/cashflow-bar-chart.tsx +9 -2
  212. package/src/components/ui/chart-shared.tsx +4 -11
  213. package/src/components/ui/chip.tsx +23 -19
  214. package/src/components/ui/color-picker.tsx +309 -0
  215. package/src/components/ui/data-table.tsx +117 -83
  216. package/src/components/ui/date-picker.tsx +42 -37
  217. package/src/components/ui/dialog.tsx +72 -6
  218. package/src/components/ui/expense-bar-chart.tsx +11 -2
  219. package/src/components/ui/financial-cards.tsx +99 -10
  220. package/src/components/ui/income-bar-chart.tsx +11 -2
  221. package/src/components/ui/opportunity-card.tsx +10 -39
  222. package/src/components/ui/opportunity-edit-modals.tsx +98 -36
  223. package/src/components/ui/opportunity-summary-tab.tsx +548 -232
  224. package/src/components/ui/page-header.tsx +57 -0
  225. package/src/components/ui/page-top-bar.tsx +48 -0
  226. package/src/components/ui/pagination.tsx +171 -22
  227. package/src/components/ui/pipeline-board.tsx +12 -5
  228. package/src/components/ui/property-cashflow-doughnut-chart.tsx +3 -1
  229. package/src/components/ui/property-debt-equity-doughnut-chart.tsx +3 -1
  230. package/src/components/ui/property-mobile-estimate-line-chart.tsx +3 -1
  231. package/src/components/ui/sidebar-nav.tsx +516 -0
  232. package/src/components/ui/stepper.tsx +347 -0
  233. package/src/components/ui/toggle.tsx +4 -4
  234. package/src/components/ui/transactions-expense-categories-doughnut-chart.tsx +3 -1
  235. package/src/components/ui/transactions-income-expense-bar-chart.tsx +12 -9
  236. package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +3 -1
  237. package/src/lib/format-currency.ts +44 -0
  238. package/src/lib/format-date.ts +50 -0
  239. package/src/lib/opportunity-constants.ts +12 -0
  240. package/src/lib/typography.ts +11 -11
  241. package/src/styles/globals.css +36 -34
  242. package/src/styles/styles-css.ts +1 -1
  243. package/tsup.config.ts +17 -0
  244. package/dist/chunk-PG6K5XEC.mjs +0 -475
  245. package/dist/chunk-WA6O6EUR.mjs +0 -1885
  246. package/dist/chunk-WNGWBVLV.mjs +0 -148
  247. package/dist/{chunk-LLVQKSU3.mjs → chunk-GD4BJDJR.mjs} +3 -3
@@ -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_react2 = require("lucide-react");
72
+ var import_lucide_react3 = require("lucide-react");
73
73
 
74
74
  // src/lib/utils.ts
75
75
  var import_clsx = require("clsx");
@@ -110,6 +110,20 @@ function cn(...inputs) {
110
110
  return twMerge((0, import_clsx.clsx)(inputs));
111
111
  }
112
112
 
113
+ // src/lib/format-date.ts
114
+ var import_date_fns = require("date-fns");
115
+ function safeParse(iso) {
116
+ return (0, import_date_fns.parseISO)(iso);
117
+ }
118
+ function formatDateShort(iso) {
119
+ if (!iso) return "\u2014";
120
+ try {
121
+ return (0, import_date_fns.format)(safeParse(iso), "dd MMM yyyy");
122
+ } catch (e) {
123
+ return iso;
124
+ }
125
+ }
126
+
113
127
  // src/components/ui/badge.tsx
114
128
  var import_class_variance_authority = require("class-variance-authority");
115
129
 
@@ -167,12 +181,12 @@ var badgeVariants = (0, import_class_variance_authority.cva)(
167
181
  {
168
182
  variants: {
169
183
  variant: {
170
- default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
171
- secondary: "bg-muted text-muted-foreground [a&]:hover:bg-muted/80",
172
- destructive: "bg-destructive text-destructive-foreground focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90",
173
- success: "bg-success text-success-foreground [a&]:hover:bg-success/90",
174
- warning: "bg-warning text-warning-foreground [a&]:hover:bg-warning/90",
175
- info: "bg-info text-info-foreground [a&]:hover:bg-info/90",
184
+ default: "border-primary/40 bg-primary/10 text-foreground [a&]:hover:bg-primary/15",
185
+ secondary: "border-border bg-muted text-muted-foreground [a&]:hover:bg-muted/80",
186
+ destructive: "border-destructive/40 bg-destructive/10 text-destructive-text focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/15",
187
+ success: "border-success/40 bg-success/10 text-success-text [a&]:hover:bg-success/15",
188
+ warning: "border-warning/40 bg-warning/10 text-warning-text [a&]:hover:bg-warning/15",
189
+ info: "border-info/40 bg-info/10 text-info-text [a&]:hover:bg-info/15",
176
190
  outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
177
191
  ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
178
192
  link: "text-primary underline-offset-4 [a&]:hover:underline"
@@ -367,8 +381,85 @@ function FinancialSubtotalBlock({
367
381
  );
368
382
  }
369
383
 
370
- // src/components/ui/financial-cards.tsx
384
+ // src/components/ui/button.tsx
385
+ var import_react = require("react");
386
+ var import_class_variance_authority2 = require("class-variance-authority");
387
+ var import_lucide_react2 = require("lucide-react");
371
388
  var import_jsx_runtime4 = require("react/jsx-runtime");
389
+ var buttonVariants = (0, import_class_variance_authority2.cva)(
390
+ "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
+ {
392
+ variants: {
393
+ variant: {
394
+ default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
395
+ secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
396
+ 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",
398
+ "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",
400
+ ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
401
+ link: "text-primary underline-offset-4 hover:underline"
402
+ },
403
+ size: {
404
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
405
+ xs: "h-6 gap-1 px-2 text-button-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
406
+ sm: "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
407
+ lg: "h-10 px-6 has-[>svg]:px-4",
408
+ icon: "size-9",
409
+ "icon-xs": "size-6 [&_svg:not([class*='size-'])]:size-3",
410
+ "icon-sm": "size-8",
411
+ "icon-lg": "size-10"
412
+ }
413
+ },
414
+ defaultVariants: {
415
+ variant: "default",
416
+ size: "default"
417
+ }
418
+ }
419
+ );
420
+ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
421
+ var _b = _a, {
422
+ className,
423
+ variant,
424
+ size,
425
+ asChild = false,
426
+ loading = false,
427
+ disabled,
428
+ type = "button",
429
+ children
430
+ } = _b, props = __objRest(_b, [
431
+ "className",
432
+ "variant",
433
+ "size",
434
+ "asChild",
435
+ "loading",
436
+ "disabled",
437
+ "type",
438
+ "children"
439
+ ]);
440
+ const Comp = asChild ? Slot : "button";
441
+ const isIconOnly = size === "icon" || size === "icon-xs" || size === "icon-sm" || size === "icon-lg";
442
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
443
+ Comp,
444
+ __spreadProps(__spreadValues({
445
+ className: cn(buttonVariants({ variant, size, className })),
446
+ "data-size": size,
447
+ "data-slot": "button",
448
+ "data-variant": variant,
449
+ disabled: loading || disabled,
450
+ ref,
451
+ type
452
+ }, 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" }),
455
+ !isIconOnly && children
456
+ ] }) : children
457
+ })
458
+ );
459
+ });
460
+
461
+ // src/components/ui/financial-cards.tsx
462
+ var import_jsx_runtime5 = require("react/jsx-runtime");
372
463
  function PropertyCard({
373
464
  address,
374
465
  type,
@@ -392,7 +483,7 @@ function PropertyCard({
392
483
  principlePaidOff
393
484
  }) {
394
485
  const [expanded, setExpanded] = React2.useState(false);
395
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
486
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
396
487
  "div",
397
488
  {
398
489
  className: cn(
@@ -400,19 +491,20 @@ function PropertyCard({
400
491
  !borderless && "border border-border"
401
492
  ),
402
493
  children: [
403
- isLinkedToBank ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
404
- "button",
494
+ isLinkedToBank ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
495
+ Button,
405
496
  {
406
497
  type: "button",
498
+ variant: "ghost",
407
499
  "aria-expanded": expanded,
408
500
  onClick: () => setExpanded((prev) => !prev),
409
- className: "flex items-center gap-1.5 px-5 py-3 text-left cursor-pointer hover:opacity-85",
501
+ className: "h-auto w-full justify-start gap-1.5 px-5 py-3 text-left",
410
502
  children: [
411
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-label-medium text-foreground", children: address }),
412
- type && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Badge, { variant: "outline", children: type }),
413
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "flex-1" }),
414
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
415
- import_lucide_react2.ChevronDown,
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,
416
508
  {
417
509
  className: cn(
418
510
  "h-5 w-5 shrink-0 text-muted-foreground transition-transform duration-200",
@@ -422,12 +514,12 @@ function PropertyCard({
422
514
  )
423
515
  ]
424
516
  }
425
- ) : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center gap-1.5 px-5 py-3", children: [
426
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-label-medium text-foreground", children: address }),
427
- type && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Badge, { variant: "outline", children: type })
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 })
428
520
  ] }),
429
- !isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "px-5 pb-2 text-xs italic text-muted-foreground", children: "No mortgage account linked to this property" }),
430
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
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)(
431
523
  "div",
432
524
  {
433
525
  className: cn(
@@ -435,54 +527,54 @@ function PropertyCard({
435
527
  isLinkedToBank ? "grid-cols-3" : "grid-cols-1"
436
528
  ),
437
529
  children: [
438
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Estimated Value", value: estimated }),
439
- isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
440
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Loan Amount", value: loanAmount }),
441
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Equity", value: equity })
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 })
442
534
  ] })
443
535
  ]
444
536
  }
445
537
  ),
446
- isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "px-5 pb-[15px]", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
538
+ isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "px-5 pb-[15px]", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
447
539
  FinancialLvrBar,
448
540
  {
449
541
  percent: lvrPercent,
450
542
  label: lvr != null ? lvr : `${lvrPercent}%`
451
543
  }
452
544
  ) }),
453
- isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
545
+ isLinkedToBank && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
454
546
  "div",
455
547
  {
456
548
  className: cn(
457
549
  "grid transition-[grid-template-rows] duration-200 ease-in-out",
458
550
  expanded ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
459
551
  ),
460
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "overflow-hidden", children: [
461
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex flex-col gap-5 border-t border-border px-5 py-[15px]", children: [
462
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialSubsectionTitle, { children: "Loan" }),
463
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-4 gap-x-4 gap-y-4", children: [
464
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
465
557
  FinancialDetailField,
466
558
  {
467
559
  label: "Name of Lender",
468
560
  value: lenderName
469
561
  }
470
562
  ),
471
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
563
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
472
564
  FinancialDetailField,
473
565
  {
474
566
  label: "Current Loan Amount",
475
567
  value: loanAmount
476
568
  }
477
569
  ),
478
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
570
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
479
571
  FinancialDetailField,
480
572
  {
481
573
  label: "Interest Rate",
482
574
  value: interestRate
483
575
  }
484
576
  ),
485
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
577
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
486
578
  FinancialDetailField,
487
579
  {
488
580
  label: "Years Remaining",
@@ -490,29 +582,29 @@ function PropertyCard({
490
582
  }
491
583
  )
492
584
  ] }),
493
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-4 gap-x-4 gap-y-4", children: [
494
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
495
587
  FinancialDetailField,
496
588
  {
497
589
  label: "Min Repayments",
498
590
  value: minRepayments
499
591
  }
500
592
  ),
501
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
593
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
502
594
  FinancialDetailField,
503
595
  {
504
596
  label: "Average Repayments",
505
597
  value: averageRepayments
506
598
  }
507
599
  ),
508
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
600
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
509
601
  FinancialDetailField,
510
602
  {
511
603
  label: "Redraw Amount",
512
604
  value: redrawAmount
513
605
  }
514
606
  ),
515
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
607
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
516
608
  FinancialDetailField,
517
609
  {
518
610
  label: "Offset Account",
@@ -521,8 +613,8 @@ function PropertyCard({
521
613
  )
522
614
  ] })
523
615
  ] }),
524
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-4 gap-x-4 gap-y-1", children: [
525
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
526
618
  FinancialDetailField,
527
619
  {
528
620
  variant: "footer",
@@ -530,7 +622,7 @@ function PropertyCard({
530
622
  value: totalMinRepayments
531
623
  }
532
624
  ),
533
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
625
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
534
626
  FinancialDetailField,
535
627
  {
536
628
  variant: "footer",
@@ -538,7 +630,7 @@ function PropertyCard({
538
630
  value: totalExtraRepayments
539
631
  }
540
632
  ),
541
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
633
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
542
634
  FinancialDetailField,
543
635
  {
544
636
  variant: "footer",
@@ -546,7 +638,7 @@ function PropertyCard({
546
638
  value: interestCharged
547
639
  }
548
640
  ),
549
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
641
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
550
642
  FinancialDetailField,
551
643
  {
552
644
  variant: "footer",
@@ -576,17 +668,17 @@ function DebtCard({
576
668
  totalInterestPaid,
577
669
  yearsRemaining
578
670
  }) {
579
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col h-full", children: [
580
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-3 gap-5 px-5 py-[15px] border-b border-border min-h-[7rem] items-start", children: [
581
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Name of Lender", value: lenderName }),
582
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
583
675
  FinancialDetailField,
584
676
  {
585
677
  label: "Current Loan Amount",
586
678
  value: currentLoanAmount
587
679
  }
588
680
  ),
589
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
681
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
590
682
  FinancialDetailField,
591
683
  {
592
684
  label: "Current Interest Rate",
@@ -594,24 +686,24 @@ function DebtCard({
594
686
  }
595
687
  )
596
688
  ] }),
597
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "px-5 py-[15px] flex flex-col gap-5 flex-1", children: [
598
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialSubsectionTitle, { children: "Loan Stats" }),
599
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
600
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
601
693
  FinancialDetailField,
602
694
  {
603
695
  label: "Original Loan Amount",
604
696
  value: originalLoanAmount
605
697
  }
606
698
  ),
607
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
699
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
608
700
  FinancialDetailField,
609
701
  {
610
702
  label: "Original Loan Term",
611
703
  value: originalLoanTerm
612
704
  }
613
705
  ),
614
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
706
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
615
707
  FinancialDetailField,
616
708
  {
617
709
  label: "Monthly Repayments",
@@ -619,10 +711,10 @@ function DebtCard({
619
711
  }
620
712
  )
621
713
  ] }),
622
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
623
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Redraw Amount", value: redrawAmount }),
624
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Offset Account", value: offsetAmount }),
625
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
626
718
  FinancialDetailField,
627
719
  {
628
720
  label: "Extra Loan Repayments",
@@ -631,8 +723,8 @@ function DebtCard({
631
723
  )
632
724
  ] })
633
725
  ] }),
634
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-3 gap-x-4 gap-y-1", children: [
635
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
636
728
  FinancialDetailField,
637
729
  {
638
730
  variant: "footer",
@@ -640,7 +732,7 @@ function DebtCard({
640
732
  value: totalRepaymentsMade
641
733
  }
642
734
  ),
643
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
735
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
644
736
  FinancialDetailField,
645
737
  {
646
738
  variant: "footer",
@@ -648,7 +740,7 @@ function DebtCard({
648
740
  value: totalInterestPaid
649
741
  }
650
742
  ),
651
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
743
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
652
744
  FinancialDetailField,
653
745
  {
654
746
  variant: "footer",
@@ -677,52 +769,52 @@ function OtherLiabilityCard({
677
769
  totalInterestPaid
678
770
  }) {
679
771
  const isCreditCard = type === "credit_card";
680
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col h-full", children: [
681
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-3 gap-5 px-4 pt-5 pb-4 min-h-[7rem] items-start", children: [
682
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Lender", value: lenderName }),
683
- isCreditCard ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
684
776
  FinancialDetailField,
685
777
  {
686
778
  label: "Current Balance",
687
779
  value: currentBalance
688
780
  }
689
- ) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
781
+ ) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
690
782
  FinancialDetailField,
691
783
  {
692
784
  label: "Current Loan Amount",
693
785
  value: currentLoanAmount
694
786
  }
695
787
  ),
696
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Interest Rate", value: interestRate })
788
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialDetailField, { label: "Interest Rate", value: interestRate })
697
789
  ] }),
698
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "px-4 pt-4 pb-5 flex flex-col gap-5 border-t border-border flex-1", children: [
699
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialSubsectionTitle, { children: isCreditCard ? "Card Stats" : "Loan Stats" }),
700
- isCreditCard ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
701
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Credit Limit", value: creditLimit }),
702
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
703
795
  FinancialDetailField,
704
796
  {
705
797
  label: "Min Monthly Payment",
706
798
  value: minMonthlyPayment
707
799
  }
708
800
  ),
709
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Annual Fee", value: annualFee })
710
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-3 gap-5", children: [
711
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
712
804
  FinancialDetailField,
713
805
  {
714
806
  label: "Original Loan Amount",
715
807
  value: originalLoanAmount
716
808
  }
717
809
  ),
718
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
810
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
719
811
  FinancialDetailField,
720
812
  {
721
813
  label: "Original Loan Term",
722
814
  value: originalLoanTerm
723
815
  }
724
816
  ),
725
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
817
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
726
818
  FinancialDetailField,
727
819
  {
728
820
  label: "Monthly Repayments",
@@ -731,8 +823,8 @@ function OtherLiabilityCard({
731
823
  )
732
824
  ] })
733
825
  ] }),
734
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialSubtotalFrame, { children: isCreditCard ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-2 gap-x-4 gap-y-1", children: [
735
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
736
828
  FinancialDetailField,
737
829
  {
738
830
  variant: "footer",
@@ -740,7 +832,7 @@ function OtherLiabilityCard({
740
832
  value: totalInterestPaid
741
833
  }
742
834
  ),
743
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
835
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
744
836
  FinancialDetailField,
745
837
  {
746
838
  variant: "footer",
@@ -748,8 +840,8 @@ function OtherLiabilityCard({
748
840
  value: availableCredit
749
841
  }
750
842
  )
751
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-3 gap-x-4 gap-y-1", children: [
752
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
753
845
  FinancialDetailField,
754
846
  {
755
847
  variant: "footer",
@@ -757,7 +849,7 @@ function OtherLiabilityCard({
757
849
  value: totalRepaymentsMade
758
850
  }
759
851
  ),
760
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
852
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
761
853
  FinancialDetailField,
762
854
  {
763
855
  variant: "footer",
@@ -765,7 +857,7 @@ function OtherLiabilityCard({
765
857
  value: totalInterestPaid
766
858
  }
767
859
  ),
768
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
860
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
769
861
  FinancialDetailField,
770
862
  {
771
863
  variant: "footer",
@@ -791,10 +883,10 @@ function AlertCard({
791
883
  onActionChange
792
884
  }) {
793
885
  const { dot, border } = SEVERITY_CLASSES[severityCode];
794
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: cn("flex flex-col gap-1.5 border p-2.5 px-3", border), children: [
795
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center gap-1.5", children: [
796
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: cn("h-[9px] w-[9px] shrink-0 rounded-full", dot) }),
797
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
798
890
  "span",
799
891
  {
800
892
  className: cn(
@@ -805,19 +897,19 @@ function AlertCard({
805
897
  }
806
898
  )
807
899
  ] }),
808
- ignored ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "ml-[15px] text-xs italic text-muted-foreground/60", children: [
900
+ ignored ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "ml-[15px] text-xs italic text-muted-foreground/60", children: [
809
901
  "Ignored until ",
810
902
  ignoredUntil
811
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
903
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
812
904
  RadioGroup,
813
905
  {
814
906
  value: selectedAction != null ? selectedAction : "",
815
907
  onValueChange: (val) => onActionChange == null ? void 0 : onActionChange(val),
816
908
  className: "ml-[15px] flex flex-col gap-1",
817
909
  children: [
818
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center gap-2", children: [
819
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(RadioGroupItem, { value: "DISMISS", id: `dismiss-${id}` }),
820
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
821
913
  "label",
822
914
  {
823
915
  htmlFor: `dismiss-${id}`,
@@ -826,9 +918,9 @@ function AlertCard({
826
918
  }
827
919
  )
828
920
  ] }),
829
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center gap-2", children: [
830
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(RadioGroupItem, { value: "SNOOZE", id: `snooze-${id}` }),
831
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
832
924
  "label",
833
925
  {
834
926
  htmlFor: `snooze-${id}`,
@@ -848,40 +940,83 @@ function AboutCard({
848
940
  lastName,
849
941
  phone,
850
942
  email,
943
+ dob,
851
944
  gender,
852
945
  maritalStatus,
946
+ numDependants,
853
947
  citizenStatus,
948
+ residentialAddress,
949
+ residentialStatus,
950
+ timeAtAddressYears,
951
+ timeAtAddressMonths,
952
+ driversLicence,
953
+ passport,
854
954
  propertyInTrust,
855
955
  companyOwnership
856
956
  }) {
857
957
  const fullName = [title, firstName, lastName].filter(Boolean).join(" ") || "\u2014";
858
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "border border-border overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid grid-cols-2 gap-x-8 gap-y-4 px-5 py-4", children: [
859
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Full Name", value: fullName }),
860
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Gender", value: gender || "\u2014" }),
861
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Phone", value: phone || "\u2014" }),
862
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Email", value: email || "\u2014" }),
863
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
958
+ const timeAtAddress = timeAtAddressYears || timeAtAddressMonths ? [
959
+ timeAtAddressYears && `${timeAtAddressYears}yr`,
960
+ timeAtAddressMonths && `${timeAtAddressMonths}mo`
961
+ ].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)(
864
969
  FinancialDetailField,
865
970
  {
866
971
  label: "Marital Status",
867
972
  value: maritalStatus || "\u2014"
868
973
  }
869
974
  ),
870
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
871
983
  FinancialDetailField,
872
984
  {
873
985
  label: "Citizenship",
874
986
  value: citizenStatus || "\u2014"
875
987
  }
876
988
  ),
877
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
878
1013
  FinancialDetailField,
879
1014
  {
880
1015
  label: "Property in Trust",
881
1016
  value: propertyInTrust || "\u2014"
882
1017
  }
883
1018
  ),
884
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1019
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
885
1020
  FinancialDetailField,
886
1021
  {
887
1022
  label: "Company Ownership",
@@ -892,31 +1027,63 @@ function AboutCard({
892
1027
  }
893
1028
  function IncomeCard({ items, totalMonthly }) {
894
1029
  if (items.length === 0) {
895
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "border border-border px-5 py-4", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "text-sm text-muted-foreground", children: "No income recorded." }) });
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." }) });
896
1031
  }
897
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col", children: [
898
- items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
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)(
899
1034
  "div",
900
1035
  {
901
1036
  className: cn(
902
- "grid grid-cols-3 gap-x-6 px-5 py-[15px]",
1037
+ "flex flex-col gap-3 px-5 py-[15px]",
903
1038
  i < items.length - 1 && "border-b border-border"
904
1039
  ),
905
1040
  children: [
906
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Type", value: item.incomeType || "\u2014" }),
907
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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)(
1044
+ FinancialDetailField,
1045
+ {
1046
+ label: "Job Title",
1047
+ value: item.jobTitle || "\u2014"
1048
+ }
1049
+ ),
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)(
1054
+ FinancialDetailField,
1055
+ {
1056
+ label: "Company",
1057
+ value: item.companyName || "\u2014"
1058
+ }
1059
+ ),
1060
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1061
+ FinancialDetailField,
1062
+ {
1063
+ label: "Start Date",
1064
+ value: formatDateShort(item.startDate)
1065
+ }
1066
+ ),
1067
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1068
+ FinancialDetailField,
1069
+ {
1070
+ label: "Status",
1071
+ value: item.stillInPosition === void 0 ? "\u2014" : item.stillInPosition ? "Still in position" : item.endDate ? `Ended ${formatDateShort(item.endDate)}` : "No longer in position"
1072
+ }
1073
+ )
1074
+ ] }),
1075
+ item.companyAddress && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
908
1076
  FinancialDetailField,
909
1077
  {
910
- label: "Employer",
911
- value: item.companyName || item.jobTitle || "\u2014"
1078
+ label: "Company Address",
1079
+ value: item.companyAddress
912
1080
  }
913
- ),
914
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialDetailField, { label: "Amount", value: item.amountLabel })
1081
+ )
915
1082
  ]
916
1083
  },
917
1084
  i
918
1085
  )),
919
- totalMonthly && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1086
+ totalMonthly && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
920
1087
  FinancialSubtotalBlock,
921
1088
  {
922
1089
  monthlyAverage: totalMonthly,
@@ -926,44 +1093,44 @@ function IncomeCard({ items, totalMonthly }) {
926
1093
  ] });
927
1094
  }
928
1095
  var EXPENSE_ICON_MAP = {
929
- groceries: import_lucide_react2.ShoppingCart,
930
- "dining out": import_lucide_react2.UtensilsCrossed,
931
- dining: import_lucide_react2.UtensilsCrossed,
932
- restaurants: import_lucide_react2.UtensilsCrossed,
933
- transport: import_lucide_react2.Car,
934
- transportation: import_lucide_react2.Car,
935
- vehicle: import_lucide_react2.Car,
936
- utilities: import_lucide_react2.Zap,
937
- electricity: import_lucide_react2.Zap,
938
- insurance: import_lucide_react2.Shield,
939
- "council rates": import_lucide_react2.Landmark,
940
- council: import_lucide_react2.Landmark,
941
- rates: import_lucide_react2.Landmark,
942
- medical: import_lucide_react2.HeartPulse,
943
- health: import_lucide_react2.HeartPulse,
944
- subscriptions: import_lucide_react2.RefreshCw,
945
- subscription: import_lucide_react2.RefreshCw,
946
- "credit card": import_lucide_react2.CreditCard,
947
- education: import_lucide_react2.GraduationCap,
948
- childcare: import_lucide_react2.Baby,
949
- entertainment: import_lucide_react2.Tv,
950
- gym: import_lucide_react2.Dumbbell,
951
- fitness: import_lucide_react2.Dumbbell,
952
- clothing: import_lucide_react2.Shirt,
953
- rent: import_lucide_react2.Building2
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
954
1121
  };
955
1122
  function getExpenseIcon(expenseType) {
956
1123
  var _a;
957
- return (_a = EXPENSE_ICON_MAP[expenseType.toLowerCase()]) != null ? _a : import_lucide_react2.Receipt;
1124
+ return (_a = EXPENSE_ICON_MAP[expenseType.toLowerCase()]) != null ? _a : import_lucide_react3.Receipt;
958
1125
  }
959
1126
  function ExpensesCard({ items, totalMonthly }) {
960
1127
  if (items.length === 0) {
961
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "border border-border px-5 py-4", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "text-sm text-muted-foreground", children: "No expenses recorded." }) });
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." }) });
962
1129
  }
963
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "border border-border overflow-hidden flex flex-col", children: [
964
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "flex flex-col", children: items.map((item, i) => {
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) => {
965
1132
  const Icon = getExpenseIcon(item.expenseType);
966
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
1133
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
967
1134
  "div",
968
1135
  {
969
1136
  className: cn(
@@ -971,17 +1138,17 @@ function ExpensesCard({ items, totalMonthly }) {
971
1138
  i < items.length - 1 && "border-b border-border"
972
1139
  ),
973
1140
  children: [
974
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center gap-2.5", children: [
975
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Icon, { className: "size-3.5 shrink-0 text-muted-foreground" }),
976
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-body-small text-foreground", children: item.expenseType })
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 })
977
1144
  ] }),
978
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-label-medium whitespace-nowrap text-destructive", children: item.amountLabel })
1145
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-label-medium whitespace-nowrap text-destructive", children: item.amountLabel })
979
1146
  ]
980
1147
  },
981
1148
  item.expenseType
982
1149
  );
983
1150
  }) }),
984
- totalMonthly && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1151
+ totalMonthly && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FinancialSubtotalFrame, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
985
1152
  FinancialSubtotalBlock,
986
1153
  {
987
1154
  monthlyAverage: totalMonthly,