@wealthx/shadcn 1.5.42 → 1.5.44

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 (209) hide show
  1. package/.turbo/turbo-build.log +207 -202
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-5FHBC6DY.mjs → chunk-33WZ5NCW.mjs} +1 -1
  4. package/dist/{chunk-LBXIYS34.mjs → chunk-4PVCJ3JD.mjs} +1 -1
  5. package/dist/{chunk-EHQL64B7.mjs → chunk-4SUXTO2Z.mjs} +4 -4
  6. package/dist/{chunk-BAONSY54.mjs → chunk-5RYH7SOQ.mjs} +1 -1
  7. package/dist/{chunk-3C4DZTGA.mjs → chunk-5XD7A7YC.mjs} +1 -1
  8. package/dist/{chunk-5DAQU3B6.mjs → chunk-66JXT7NY.mjs} +1 -1
  9. package/dist/{chunk-NGKTJRFN.mjs → chunk-6DO4EGT2.mjs} +2 -2
  10. package/dist/{chunk-C7ZTZTEW.mjs → chunk-6XJWL2E5.mjs} +1 -1
  11. package/dist/{chunk-C35JMOII.mjs → chunk-7RMXM5O6.mjs} +5 -5
  12. package/dist/{chunk-FQUT5XD6.mjs → chunk-A4UP4QFB.mjs} +1 -1
  13. package/dist/{chunk-USIRKDYQ.mjs → chunk-BFCX7ADE.mjs} +1 -1
  14. package/dist/{chunk-XGRSPFFC.mjs → chunk-CQHKU24Z.mjs} +1 -1
  15. package/dist/{chunk-HONTZFLO.mjs → chunk-DP4ER6TJ.mjs} +1 -1
  16. package/dist/{chunk-VLVEZHFE.mjs → chunk-EFSLAMHI.mjs} +4 -4
  17. package/dist/{chunk-FYZBGWYR.mjs → chunk-FVSOFXJQ.mjs} +1 -1
  18. package/dist/{chunk-JUMEIPII.mjs → chunk-G2MOZZPE.mjs} +8 -8
  19. package/dist/{chunk-D3HKFRQO.mjs → chunk-GQWKBESP.mjs} +8 -5
  20. package/dist/{chunk-MD66TGX7.mjs → chunk-GXDKWCMV.mjs} +1 -1
  21. package/dist/{chunk-77L3UPBW.mjs → chunk-H7NOUDU3.mjs} +5 -5
  22. package/dist/{chunk-4LLTZ45R.mjs → chunk-HOXTEU5K.mjs} +8 -7
  23. package/dist/{chunk-ZA37ZWZW.mjs → chunk-IXW77PMI.mjs} +7 -7
  24. package/dist/{chunk-XHZONBL4.mjs → chunk-JLEQU5BO.mjs} +1 -1
  25. package/dist/{chunk-6UKOJLXO.mjs → chunk-JSFWRD7K.mjs} +4 -4
  26. package/dist/{chunk-7PTRHNUV.mjs → chunk-JY3FUGNL.mjs} +1 -1
  27. package/dist/{chunk-3ZU5BH6X.mjs → chunk-KEOAPKJO.mjs} +3 -3
  28. package/dist/{chunk-4QTHK7ML.mjs → chunk-KWYFJQV6.mjs} +1 -1
  29. package/dist/{chunk-FGMDBJCF.mjs → chunk-LDPCSE7J.mjs} +4 -4
  30. package/dist/chunk-LFWNKXZU.mjs +109 -0
  31. package/dist/{chunk-IRZWYTGV.mjs → chunk-M32YSAWL.mjs} +8 -7
  32. package/dist/{chunk-LLAGF6BA.mjs → chunk-MUB2G36A.mjs} +1 -1
  33. package/dist/{chunk-DQNNP6I4.mjs → chunk-NIETQFJQ.mjs} +1 -1
  34. package/dist/{chunk-RUX3OLVZ.mjs → chunk-OTFG57ZF.mjs} +1 -1
  35. package/dist/{chunk-OKIWXOJL.mjs → chunk-OWTW5WAJ.mjs} +1 -1
  36. package/dist/{chunk-WWIWRNBK.mjs → chunk-P7NSCTAW.mjs} +1 -1
  37. package/dist/{chunk-BZWQU52U.mjs → chunk-QZREZL2F.mjs} +1 -1
  38. package/dist/{chunk-E432NK23.mjs → chunk-RBQ4BZUV.mjs} +6 -6
  39. package/dist/{chunk-I2EKKSEF.mjs → chunk-RKBLVNDC.mjs} +4 -7
  40. package/dist/{chunk-LHQACMZY.mjs → chunk-SPPQFW32.mjs} +106 -50
  41. package/dist/{chunk-OSSS56CB.mjs → chunk-SUXJWKRI.mjs} +4 -4
  42. package/dist/{chunk-SCGCGVDN.mjs → chunk-SZXIPE5J.mjs} +1 -1
  43. package/dist/{chunk-VVURVETY.mjs → chunk-TOQRA2TD.mjs} +1 -1
  44. package/dist/{chunk-GYWOD2YI.mjs → chunk-TZSDYQFH.mjs} +4 -4
  45. package/dist/{chunk-S7SBLNX4.mjs → chunk-UB3WG6I4.mjs} +1 -1
  46. package/dist/{chunk-PGJRZHN7.mjs → chunk-UVZ3JWFG.mjs} +1 -1
  47. package/dist/{chunk-UD5UF5OC.mjs → chunk-W7OPFKTZ.mjs} +4 -4
  48. package/dist/{chunk-YEWNFK5S.mjs → chunk-WLXP4OOF.mjs} +5 -5
  49. package/dist/{chunk-ORMC3TV3.mjs → chunk-XYXYTTNW.mjs} +1 -1
  50. package/dist/{chunk-CZOGJC76.mjs → chunk-YACFZWRR.mjs} +7 -7
  51. package/dist/{chunk-UTCW5YUX.mjs → chunk-YPATB6YQ.mjs} +9 -9
  52. package/dist/{chunk-BZGFW6L7.mjs → chunk-YWJAIPUA.mjs} +1 -1
  53. package/dist/{chunk-MHBQJVHE.mjs → chunk-Z65BGSHI.mjs} +5 -5
  54. package/dist/{chunk-PCULNQWA.mjs → chunk-ZGSFRUVI.mjs} +3 -3
  55. package/dist/{chunk-7NQKFPXE.mjs → chunk-ZRYG6ICN.mjs} +1 -1
  56. package/dist/{chunk-ZFKAYRFQ.mjs → chunk-ZUHFYW65.mjs} +1 -1
  57. package/dist/components/ui/about-you-form.mjs +2 -2
  58. package/dist/components/ui/account-list-carousel.mjs +2 -2
  59. package/dist/components/ui/add-column-modal.mjs +4 -4
  60. package/dist/components/ui/add-lead-modal.mjs +4 -4
  61. package/dist/components/ui/advisor-card.mjs +2 -2
  62. package/dist/components/ui/ai-assistant-drawer.mjs +2 -2
  63. package/dist/components/ui/ai-builder/index.mjs +4 -4
  64. package/dist/components/ui/ai-conversations/index.mjs +4 -4
  65. package/dist/components/ui/alert-dialog.mjs +3 -3
  66. package/dist/components/ui/applicant-expenses-section.mjs +1 -1
  67. package/dist/components/ui/appointment-action-dialogs.mjs +5 -5
  68. package/dist/components/ui/appointment-availability-settings.mjs +4 -4
  69. package/dist/components/ui/appointment-book-dialog.mjs +4 -4
  70. package/dist/components/ui/appointment-detail-sheet.mjs +6 -6
  71. package/dist/components/ui/appointment-upcoming-card.mjs +4 -4
  72. package/dist/components/ui/asset-accordion.mjs +7 -7
  73. package/dist/components/ui/assets-liabilities-side-card.js +19 -66
  74. package/dist/components/ui/assets-liabilities-side-card.mjs +22 -69
  75. package/dist/components/ui/backoffice-alert-history-chart.js +1 -1
  76. package/dist/components/ui/backoffice-alert-history-chart.mjs +5 -5
  77. package/dist/components/ui/backoffice-alert-matching-chart.js +1 -1
  78. package/dist/components/ui/backoffice-alert-matching-chart.mjs +5 -5
  79. package/dist/components/ui/backoffice-alerts-chart.js +1 -1
  80. package/dist/components/ui/backoffice-alerts-chart.mjs +5 -5
  81. package/dist/components/ui/backoffice-connections-chart.js +1 -1
  82. package/dist/components/ui/backoffice-connections-chart.mjs +5 -5
  83. package/dist/components/ui/backoffice-contact-history-chart.js +1 -1
  84. package/dist/components/ui/backoffice-contact-history-chart.mjs +5 -5
  85. package/dist/components/ui/backoffice-contact-matching-chart.js +1 -1
  86. package/dist/components/ui/backoffice-contact-matching-chart.mjs +5 -5
  87. package/dist/components/ui/backoffice-signup-steps.mjs +4 -4
  88. package/dist/components/ui/bank-statement-generate-dialog.mjs +4 -4
  89. package/dist/components/ui/bank-statement-pdf-viewer.mjs +4 -4
  90. package/dist/components/ui/borrowing-capacity-atoms.js +3 -6
  91. package/dist/components/ui/borrowing-capacity-atoms.mjs +2 -2
  92. package/dist/components/ui/borrowing-capacity-card.js +5 -5
  93. package/dist/components/ui/borrowing-capacity-card.mjs +6 -6
  94. package/dist/components/ui/borrowing-capacity-line-chart.js +5 -5
  95. package/dist/components/ui/borrowing-capacity-line-chart.mjs +5 -5
  96. package/dist/components/ui/calculator-section.mjs +4 -4
  97. package/dist/components/ui/cash-balance-line-chart.js +102 -46
  98. package/dist/components/ui/cash-balance-line-chart.mjs +5 -5
  99. package/dist/components/ui/cashflow-bar-chart.js +7 -4
  100. package/dist/components/ui/cashflow-bar-chart.mjs +5 -5
  101. package/dist/components/ui/category-edit-dialog.js +1 -1
  102. package/dist/components/ui/category-edit-dialog.mjs +4 -4
  103. package/dist/components/ui/color-picker.mjs +2 -2
  104. package/dist/components/ui/contact-alert-dialog/index.mjs +4 -4
  105. package/dist/components/ui/create-contact-modal.mjs +4 -4
  106. package/dist/components/ui/csv-import-modal.mjs +4 -4
  107. package/dist/components/ui/dashboard-expense-categories.js +99 -66
  108. package/dist/components/ui/dashboard-expense-categories.mjs +104 -69
  109. package/dist/components/ui/dashboard-transactions-table.js +19 -9
  110. package/dist/components/ui/dashboard-transactions-table.mjs +26 -16
  111. package/dist/components/ui/data-table.mjs +2 -2
  112. package/dist/components/ui/date-picker.mjs +2 -2
  113. package/dist/components/ui/debt-accordion.mjs +7 -7
  114. package/dist/components/ui/delete-contact-component.mjs +4 -4
  115. package/dist/components/ui/dialog.mjs +3 -3
  116. package/dist/components/ui/document-checklist-template.mjs +2 -2
  117. package/dist/components/ui/expense-bar-chart.js +8 -7
  118. package/dist/components/ui/expense-bar-chart.mjs +5 -5
  119. package/dist/components/ui/expense-categories-bar.js +261 -0
  120. package/dist/components/ui/expense-categories-bar.mjs +12 -0
  121. package/dist/components/ui/expense-work-details.js +8 -7
  122. package/dist/components/ui/expense-work-details.mjs +7 -7
  123. package/dist/components/ui/file-preview-dialog.mjs +4 -4
  124. package/dist/components/ui/financial-cards.mjs +2 -2
  125. package/dist/components/ui/financial-drawers.mjs +2 -2
  126. package/dist/components/ui/financial-sections.mjs +3 -3
  127. package/dist/components/ui/frontend-signup-steps.mjs +2 -2
  128. package/dist/components/ui/income-bar-chart.js +8 -7
  129. package/dist/components/ui/income-bar-chart.mjs +5 -5
  130. package/dist/components/ui/income-sources-card.mjs +1 -1
  131. package/dist/components/ui/income-summary-component.mjs +1 -1
  132. package/dist/components/ui/income-work-details.js +8 -7
  133. package/dist/components/ui/income-work-details.mjs +6 -6
  134. package/dist/components/ui/incoming-outgoings-card.js +2 -2
  135. package/dist/components/ui/incoming-outgoings-card.mjs +3 -3
  136. package/dist/components/ui/interest-rate-section.mjs +1 -1
  137. package/dist/components/ui/kanban-column.mjs +5 -5
  138. package/dist/components/ui/loan-application-cards.mjs +3 -3
  139. package/dist/components/ui/loan-financials.mjs +3 -3
  140. package/dist/components/ui/money-input-with-slider.mjs +2 -2
  141. package/dist/components/ui/opportunity-card.mjs +4 -4
  142. package/dist/components/ui/opportunity-edit-modals.mjs +4 -4
  143. package/dist/components/ui/opportunity-summary-tab.mjs +8 -8
  144. package/dist/components/ui/pagination.mjs +2 -2
  145. package/dist/components/ui/pipeline-board.mjs +6 -6
  146. package/dist/components/ui/pipeline-chart.mjs +2 -2
  147. package/dist/components/ui/pipeline-dialogs.mjs +4 -4
  148. package/dist/components/ui/policy-ai/index.mjs +2 -2
  149. package/dist/components/ui/property-asset-card.mjs +4 -4
  150. package/dist/components/ui/property-cashflow-doughnut-chart.js +3 -3
  151. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +5 -5
  152. package/dist/components/ui/property-debt-equity-doughnut-chart.js +3 -3
  153. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +5 -5
  154. package/dist/components/ui/property-list-carousel.mjs +2 -2
  155. package/dist/components/ui/property-mobile-estimate-line-chart.js +4 -4
  156. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +5 -5
  157. package/dist/components/ui/property-report-dialog.mjs +5 -5
  158. package/dist/components/ui/resource-center/index.mjs +4 -4
  159. package/dist/components/ui/review-alerts-dialog.mjs +4 -4
  160. package/dist/components/ui/savings-goal-modal.mjs +7 -7
  161. package/dist/components/ui/scenario-drawer.mjs +4 -4
  162. package/dist/components/ui/scenario-list.js +4 -7
  163. package/dist/components/ui/scenario-list.mjs +5 -5
  164. package/dist/components/ui/share-details-dialog.mjs +4 -4
  165. package/dist/components/ui/sidebar-nav.mjs +4 -4
  166. package/dist/components/ui/signup-form-primitives.mjs +2 -2
  167. package/dist/components/ui/stage-timeline.mjs +1 -1
  168. package/dist/components/ui/support-agent/index.mjs +2 -2
  169. package/dist/components/ui/top-three-product.mjs +1 -1
  170. package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +3 -3
  171. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +5 -5
  172. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +5 -5
  173. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +4 -4
  174. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +5 -5
  175. package/dist/components/ui/transactions-summary-block.js +13 -0
  176. package/dist/components/ui/transactions-summary-block.mjs +13 -0
  177. package/dist/index.js +2092 -1935
  178. package/dist/index.mjs +138 -134
  179. package/dist/lib/format-currency.js +54 -0
  180. package/dist/lib/format-currency.mjs +9 -0
  181. package/dist/styles.css +1 -1
  182. package/package.json +6 -1
  183. package/src/component-descriptions/assets-liabilities-side-card.md +19 -0
  184. package/src/component-descriptions/pipeline-chart.md +17 -0
  185. package/src/components/index.tsx +6 -0
  186. package/src/components/ui/assets-liabilities-side-card.tsx +43 -83
  187. package/src/components/ui/borrowing-capacity-atoms.tsx +4 -7
  188. package/src/components/ui/borrowing-capacity-line-chart.tsx +4 -4
  189. package/src/components/ui/cash-balance-line-chart.tsx +123 -42
  190. package/src/components/ui/cashflow-bar-chart.tsx +7 -4
  191. package/src/components/ui/category-edit-dialog.tsx +1 -1
  192. package/src/components/ui/chart-shared.tsx +4 -4
  193. package/src/components/ui/dashboard-expense-categories.tsx +139 -63
  194. package/src/components/ui/dashboard-transactions-table.tsx +51 -15
  195. package/src/components/ui/expense-bar-chart.tsx +32 -19
  196. package/src/components/ui/expense-categories-bar.tsx +178 -0
  197. package/src/components/ui/income-bar-chart.tsx +32 -19
  198. package/src/components/ui/incoming-outgoings-card.tsx +2 -2
  199. package/src/components/ui/property-mobile-estimate-line-chart.tsx +4 -4
  200. package/src/components/ui/scenario-list.tsx +2 -2
  201. package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +7 -5
  202. package/src/components/ui/transactions-summary-block.tsx +39 -6
  203. package/src/styles/styles-css.ts +1 -1
  204. package/tsup.config.ts +2 -0
  205. package/dist/{chunk-CEYEK3TI.mjs → chunk-B4R62ID3.mjs} +3 -3
  206. package/dist/{chunk-7LN5OGC2.mjs → chunk-E3VAK4EB.mjs} +3 -3
  207. package/dist/{chunk-EY36WDCF.mjs → chunk-EEZFXE3P.mjs} +3 -3
  208. package/dist/{chunk-T5FRVEJQ.mjs → chunk-JTMN36BK.mjs} +3 -3
  209. /package/dist/{chunk-MN5NYQCL.mjs → chunk-XQDTFNVL.mjs} +0 -0
@@ -319,7 +319,7 @@ function ChartLegendItem({
319
319
  }
320
320
  }
321
321
  ),
322
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
322
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-sm text-muted-foreground leading-none", children: label })
323
323
  ] });
324
324
  }
325
325
 
@@ -476,7 +476,8 @@ function CashBalanceLineChart({
476
476
  showYAxis = true,
477
477
  showBalanceValue = false,
478
478
  showLegend = false,
479
- legendPosition = "bottom"
479
+ legendPosition = "bottom",
480
+ extraDatasets
480
481
  }) {
481
482
  const themeVars = useThemeVars();
482
483
  const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY;
@@ -491,30 +492,48 @@ function CashBalanceLineChart({
491
492
  indices.add(count - 1);
492
493
  return indices;
493
494
  }, [hasData, chartData]);
495
+ const hasExtra = Array.isArray(extraDatasets) && extraDatasets.length > 0;
494
496
  const data = (0, import_react3.useMemo)(() => {
495
497
  if (!hasData) return { labels: [], datasets: [] };
498
+ const mainDs = {
499
+ label: title,
500
+ data: chartData.map((p) => p.y),
501
+ fill: false,
502
+ borderColor: brandPrimary,
503
+ backgroundColor: "transparent",
504
+ borderWidth: 2.5,
505
+ borderDash: [],
506
+ tension: 0.4,
507
+ pointRadius: 0,
508
+ pointHoverRadius: 6,
509
+ pointHoverBackgroundColor: FALLBACK_BG,
510
+ pointHoverBorderColor: brandPrimary,
511
+ pointHoverBorderWidth: 3,
512
+ pointHitRadius: 10,
513
+ yAxisID: "y"
514
+ };
515
+ const extraDs = hasExtra ? extraDatasets.map((ds) => ({
516
+ label: ds.label,
517
+ data: ds.data.map((p) => p.y),
518
+ fill: false,
519
+ borderColor: ds.color,
520
+ backgroundColor: "transparent",
521
+ borderWidth: 1.5,
522
+ borderDash: ds.dashed ? [5, 4] : [],
523
+ tension: 0.4,
524
+ pointRadius: 0,
525
+ pointHoverRadius: 4,
526
+ pointHoverBackgroundColor: FALLBACK_BG,
527
+ pointHoverBorderColor: ds.color,
528
+ pointHoverBorderWidth: 2,
529
+ pointHitRadius: 10,
530
+ yAxisID: "y2"
531
+ })) : [];
496
532
  return {
497
533
  labels: chartData.map((p) => p.x),
498
- // raw ISO — used for tooltip + tick lookup
499
- datasets: [
500
- {
501
- label: title,
502
- data: chartData.map((p) => p.y),
503
- fill: false,
504
- borderColor: brandPrimary,
505
- backgroundColor: "transparent",
506
- borderWidth: 2.5,
507
- tension: 0.4,
508
- pointRadius: 0,
509
- pointHoverRadius: 6,
510
- pointHoverBackgroundColor: FALLBACK_BG,
511
- pointHoverBorderColor: brandPrimary,
512
- pointHoverBorderWidth: 3,
513
- pointHitRadius: 10
514
- }
515
- ]
534
+ datasets: [mainDs, ...extraDs]
516
535
  };
517
- }, [hasData, chartData, brandPrimary, title]);
536
+ }, [hasData, chartData, brandPrimary, title, hasExtra, extraDatasets]);
518
537
  const options = (0, import_react3.useMemo)(
519
538
  () => ({
520
539
  responsive: true,
@@ -526,11 +545,11 @@ function CashBalanceLineChart({
526
545
  enabled: true,
527
546
  mode: "index",
528
547
  intersect: false,
529
- displayColors: false,
548
+ displayColors: hasExtra,
530
549
  padding: 12,
531
550
  cornerRadius: 0,
532
551
  titleFont: { size: 11, weight: "600", family: fontFamily },
533
- bodyFont: { size: 13, weight: "700", family: fontFamily },
552
+ bodyFont: { size: 12, weight: "500", family: fontFamily },
534
553
  callbacks: {
535
554
  title: (items) => {
536
555
  var _a;
@@ -538,7 +557,8 @@ function CashBalanceLineChart({
538
557
  return iso ? formatDateTooltip(iso) : "";
539
558
  },
540
559
  label: (ctx) => {
541
- return formatCurrency(ctx.parsed.y, { decimals: 2 });
560
+ const value = formatCurrency(ctx.parsed.y, { decimals: 2 });
561
+ return hasExtra ? ` ${ctx.dataset.label}: ${value}` : value;
542
562
  }
543
563
  }
544
564
  }
@@ -555,7 +575,7 @@ function CashBalanceLineChart({
555
575
  maxRotation: 0,
556
576
  minRotation: 0,
557
577
  color: FALLBACK_TICK,
558
- font: { size: 10, family: fontFamily },
578
+ font: { size: 12, family: fontFamily },
559
579
  callback: function(_, index) {
560
580
  if (!tickIndices.has(index) || !chartData) return "";
561
581
  return formatDateLabel(chartData[index].x);
@@ -572,13 +592,27 @@ function CashBalanceLineChart({
572
592
  maxTicksLimit: 5,
573
593
  padding: 8,
574
594
  color: FALLBACK_TICK,
575
- font: { size: 10, family: fontFamily },
595
+ font: { size: 12, family: fontFamily },
596
+ callback: (v) => formatCurrencyAbbrev(Number(v))
597
+ }
598
+ },
599
+ y2: {
600
+ display: hasExtra && showYAxis,
601
+ position: "right",
602
+ beginAtZero: true,
603
+ grid: { display: false },
604
+ border: { display: false },
605
+ ticks: {
606
+ maxTicksLimit: 5,
607
+ padding: 8,
608
+ color: FALLBACK_TICK,
609
+ font: { size: 12, family: fontFamily },
576
610
  callback: (v) => formatCurrencyAbbrev(Number(v))
577
611
  }
578
612
  }
579
613
  }
580
614
  }),
581
- [tickIndices, chartData, showXAxis, showYAxis, fontFamily]
615
+ [tickIndices, chartData, showXAxis, showYAxis, fontFamily, hasExtra]
582
616
  );
583
617
  const latestValue = hasData ? chartData[chartData.length - 1].y : null;
584
618
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
@@ -587,9 +621,9 @@ function CashBalanceLineChart({
587
621
  className: cn("w-full py-4 sm:py-6 gap-2", className),
588
622
  style: { maxWidth: width, fontFamily },
589
623
  children: [
590
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardHeader, { className: "px-3 sm:px-6", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
591
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-xs font-semibold uppercase tracking-wide", children: title }),
592
- showBalanceValue && latestValue !== null && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-2xl font-bold tabular-nums leading-tight", children: formatCurrency(latestValue, { decimals: 2 }) })
624
+ (title || showBalanceValue && latestValue !== null) && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardHeader, { className: "px-3 sm:px-6", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
625
+ title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: title }),
626
+ showBalanceValue && latestValue !== null && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-lg font-bold tabular-nums leading-tight", children: formatCurrency(latestValue, { decimals: 2 }) })
593
627
  ] }) }),
594
628
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
595
629
  "div",
@@ -599,14 +633,25 @@ function CashBalanceLineChart({
599
633
  children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Spinner, { size: "lg" })
600
634
  }
601
635
  ) : !hasData ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-2", children: [
602
- showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1.5", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
603
- ChartLegendItem,
604
- {
605
- label: title,
606
- color: brandPrimary,
607
- lineStyle: "solid"
608
- }
609
- ) }),
636
+ showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1.5", children: [
637
+ title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
638
+ ChartLegendItem,
639
+ {
640
+ label: title,
641
+ color: brandPrimary,
642
+ lineStyle: "solid"
643
+ }
644
+ ),
645
+ extraDatasets == null ? void 0 : extraDatasets.map((ds) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
646
+ ChartLegendItem,
647
+ {
648
+ label: ds.label,
649
+ color: ds.color,
650
+ lineStyle: ds.dashed ? "dashed" : "solid"
651
+ },
652
+ ds.label
653
+ ))
654
+ ] }),
610
655
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
611
656
  import_react_chartjs_2.Chart,
612
657
  {
@@ -617,14 +662,25 @@ function CashBalanceLineChart({
617
662
  },
618
663
  brandPrimary
619
664
  ) }),
620
- showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1.5", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
621
- ChartLegendItem,
622
- {
623
- label: title,
624
- color: brandPrimary,
625
- lineStyle: "solid"
626
- }
627
- ) })
665
+ showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1.5", children: [
666
+ title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
667
+ ChartLegendItem,
668
+ {
669
+ label: title,
670
+ color: brandPrimary,
671
+ lineStyle: "solid"
672
+ }
673
+ ),
674
+ extraDatasets == null ? void 0 : extraDatasets.map((ds) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
675
+ ChartLegendItem,
676
+ {
677
+ label: ds.label,
678
+ color: ds.color,
679
+ lineStyle: ds.dashed ? "dashed" : "solid"
680
+ },
681
+ ds.label
682
+ ))
683
+ ] })
628
684
  ] }) })
629
685
  ]
630
686
  }
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  CashBalanceLineChart
3
- } from "../../chunk-LHQACMZY.mjs";
4
- import "../../chunk-YEWNFK5S.mjs";
3
+ } from "../../chunk-SPPQFW32.mjs";
4
+ import "../../chunk-WLXP4OOF.mjs";
5
5
  import "../../chunk-R2ON6CAN.mjs";
6
6
  import "../../chunk-3VDET466.mjs";
7
7
  import "../../chunk-JVMXMFBB.mjs";
8
- import "../../chunk-XYSRRDBH.mjs";
9
- import "../../chunk-FRCTOAKZ.mjs";
10
- import "../../chunk-MN5NYQCL.mjs";
8
+ import "../../chunk-XQDTFNVL.mjs";
11
9
  import "../../chunk-NOOEKOWY.mjs";
12
10
  import "../../chunk-R4HCRDU5.mjs";
11
+ import "../../chunk-XYSRRDBH.mjs";
12
+ import "../../chunk-FRCTOAKZ.mjs";
13
13
  import "../../chunk-AFML43VJ.mjs";
14
14
  import "../../chunk-WNQUEZJF.mjs";
15
15
  export {
@@ -597,14 +597,17 @@ function CashflowBarChart({
597
597
  display: showXAxis,
598
598
  grid: { display: false },
599
599
  border: { display: false },
600
- ticks: { font: { size: 10 }, color: FALLBACK_TICK }
600
+ ticks: {
601
+ font: { size: 12, family: fontFamily },
602
+ color: FALLBACK_TICK
603
+ }
601
604
  },
602
605
  y: {
603
606
  display: showYAxis,
604
607
  grid: { display: false },
605
608
  border: { display: false },
606
609
  ticks: {
607
- font: { size: 10 },
610
+ font: { size: 12, family: fontFamily },
608
611
  color: FALLBACK_TICK,
609
612
  maxTicksLimit: 5,
610
613
  padding: 8,
@@ -613,7 +616,7 @@ function CashflowBarChart({
613
616
  }
614
617
  }
615
618
  }),
616
- [showXAxis, showYAxis, sliced]
619
+ [showXAxis, showYAxis, sliced, fontFamily]
617
620
  );
618
621
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
619
622
  Card,
@@ -622,7 +625,7 @@ function CashflowBarChart({
622
625
  style: { maxWidth: width, fontFamily },
623
626
  children: [
624
627
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
625
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-xs font-semibold uppercase tracking-wide", children: title }),
628
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: title }),
626
629
  showPeriodSelector && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: PERIODS.map((p) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
627
630
  ChartPeriodButton,
628
631
  {
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  CashflowBarChart
3
- } from "../../chunk-D3HKFRQO.mjs";
3
+ } from "../../chunk-GQWKBESP.mjs";
4
4
  import "../../chunk-GTAVSBDO.mjs";
5
- import "../../chunk-YEWNFK5S.mjs";
5
+ import "../../chunk-WLXP4OOF.mjs";
6
6
  import "../../chunk-R2ON6CAN.mjs";
7
7
  import "../../chunk-3VDET466.mjs";
8
- import "../../chunk-XYSRRDBH.mjs";
9
- import "../../chunk-FRCTOAKZ.mjs";
10
- import "../../chunk-MN5NYQCL.mjs";
8
+ import "../../chunk-XQDTFNVL.mjs";
11
9
  import "../../chunk-NOOEKOWY.mjs";
12
10
  import "../../chunk-R4HCRDU5.mjs";
11
+ import "../../chunk-XYSRRDBH.mjs";
12
+ import "../../chunk-FRCTOAKZ.mjs";
13
13
  import "../../chunk-AFML43VJ.mjs";
14
14
  import "../../chunk-WNQUEZJF.mjs";
15
15
  export {
@@ -543,7 +543,7 @@ function CategoryRow({
543
543
  isSelected && "bg-primary/10"
544
544
  ),
545
545
  children: [
546
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ItemIcon, { icon, active: isSelected }),
546
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ItemIcon, { icon, active: false }),
547
547
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "flex-1", children: name }),
548
548
  isSelected && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react4.Check, { className: "size-3.5 shrink-0 text-primary" })
549
549
  ]
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  CategoryEditDialog
3
- } from "../../chunk-C35JMOII.mjs";
3
+ } from "../../chunk-7RMXM5O6.mjs";
4
4
  import "../../chunk-PNSYFE3K.mjs";
5
- import "../../chunk-T5FRVEJQ.mjs";
5
+ import "../../chunk-JTMN36BK.mjs";
6
6
  import "../../chunk-LBTHZSBT.mjs";
7
+ import "../../chunk-NOOEKOWY.mjs";
8
+ import "../../chunk-R4HCRDU5.mjs";
7
9
  import "../../chunk-XYSRRDBH.mjs";
8
10
  import "../../chunk-FRCTOAKZ.mjs";
9
11
  import "../../chunk-UNACI2YK.mjs";
10
- import "../../chunk-NOOEKOWY.mjs";
11
- import "../../chunk-R4HCRDU5.mjs";
12
12
  import "../../chunk-AFML43VJ.mjs";
13
13
  import "../../chunk-WNQUEZJF.mjs";
14
14
  export {
@@ -8,10 +8,10 @@ import {
8
8
  } from "../../chunk-X3VEDQPO.mjs";
9
9
  import "../../chunk-F3CU6KEI.mjs";
10
10
  import "../../chunk-LBTHZSBT.mjs";
11
- import "../../chunk-XYSRRDBH.mjs";
12
- import "../../chunk-FRCTOAKZ.mjs";
13
11
  import "../../chunk-NOOEKOWY.mjs";
14
12
  import "../../chunk-R4HCRDU5.mjs";
13
+ import "../../chunk-XYSRRDBH.mjs";
14
+ import "../../chunk-FRCTOAKZ.mjs";
15
15
  import "../../chunk-AFML43VJ.mjs";
16
16
  import "../../chunk-WNQUEZJF.mjs";
17
17
  export {
@@ -4,22 +4,22 @@ import {
4
4
  ContactAlertDialog,
5
5
  ContactAlertQueryBuilder,
6
6
  createAlertTree
7
- } from "../../../chunk-SCGCGVDN.mjs";
7
+ } from "../../../chunk-SZXIPE5J.mjs";
8
8
  import "../../../chunk-7YI3HEBH.mjs";
9
9
  import "../../../chunk-MS3GNXMB.mjs";
10
10
  import "../../../chunk-IKXYTCSB.mjs";
11
11
  import "../../../chunk-K6VCC2MK.mjs";
12
- import "../../../chunk-T5FRVEJQ.mjs";
12
+ import "../../../chunk-JTMN36BK.mjs";
13
13
  import "../../../chunk-2GIYVERS.mjs";
14
14
  import "../../../chunk-BS75ICOO.mjs";
15
15
  import "../../../chunk-OWFQSXVD.mjs";
16
16
  import "../../../chunk-6QAFGZC2.mjs";
17
17
  import "../../../chunk-LSRGA5BI.mjs";
18
18
  import "../../../chunk-LBTHZSBT.mjs";
19
- import "../../../chunk-XYSRRDBH.mjs";
20
- import "../../../chunk-FRCTOAKZ.mjs";
21
19
  import "../../../chunk-NOOEKOWY.mjs";
22
20
  import "../../../chunk-R4HCRDU5.mjs";
21
+ import "../../../chunk-XYSRRDBH.mjs";
22
+ import "../../../chunk-FRCTOAKZ.mjs";
23
23
  import "../../../chunk-AFML43VJ.mjs";
24
24
  import "../../../chunk-WNQUEZJF.mjs";
25
25
  export {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  CreateContactModal
3
- } from "../../chunk-OKIWXOJL.mjs";
3
+ } from "../../chunk-OWTW5WAJ.mjs";
4
4
  import "../../chunk-LDC6V6DJ.mjs";
5
5
  import "../../chunk-ISUA7DSB.mjs";
6
6
  import "../../chunk-K6VCC2MK.mjs";
7
- import "../../chunk-T5FRVEJQ.mjs";
7
+ import "../../chunk-JTMN36BK.mjs";
8
8
  import "../../chunk-JVMXMFBB.mjs";
9
9
  import "../../chunk-OWFQSXVD.mjs";
10
10
  import "../../chunk-6QAFGZC2.mjs";
11
11
  import "../../chunk-LSRGA5BI.mjs";
12
12
  import "../../chunk-LBTHZSBT.mjs";
13
- import "../../chunk-XYSRRDBH.mjs";
14
- import "../../chunk-FRCTOAKZ.mjs";
15
13
  import "../../chunk-NOOEKOWY.mjs";
16
14
  import "../../chunk-R4HCRDU5.mjs";
15
+ import "../../chunk-XYSRRDBH.mjs";
16
+ import "../../chunk-FRCTOAKZ.mjs";
17
17
  import "../../chunk-AFML43VJ.mjs";
18
18
  import "../../chunk-WNQUEZJF.mjs";
19
19
  export {
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  CsvImportModal
3
- } from "../../chunk-7PTRHNUV.mjs";
3
+ } from "../../chunk-JY3FUGNL.mjs";
4
4
  import "../../chunk-I4KVSZCH.mjs";
5
- import "../../chunk-T5FRVEJQ.mjs";
6
- import "../../chunk-XYSRRDBH.mjs";
7
- import "../../chunk-FRCTOAKZ.mjs";
5
+ import "../../chunk-JTMN36BK.mjs";
8
6
  import "../../chunk-NOOEKOWY.mjs";
9
7
  import "../../chunk-R4HCRDU5.mjs";
8
+ import "../../chunk-XYSRRDBH.mjs";
9
+ import "../../chunk-FRCTOAKZ.mjs";
10
10
  import "../../chunk-AFML43VJ.mjs";
11
11
  import "../../chunk-WNQUEZJF.mjs";
12
12
  export {