@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
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CategoryEditDialog
3
- } from "../../chunk-C35JMOII.mjs";
3
+ } from "../../chunk-7RMXM5O6.mjs";
4
4
  import {
5
5
  Chip
6
6
  } from "../../chunk-MPA2HV5U.mjs";
@@ -11,27 +11,27 @@ import {
11
11
  CardTitle
12
12
  } from "../../chunk-3VDET466.mjs";
13
13
  import "../../chunk-PNSYFE3K.mjs";
14
- import "../../chunk-T5FRVEJQ.mjs";
14
+ import "../../chunk-JTMN36BK.mjs";
15
15
  import {
16
16
  Spinner
17
17
  } from "../../chunk-JVMXMFBB.mjs";
18
18
  import {
19
19
  Badge
20
20
  } from "../../chunk-X6RC5UWB.mjs";
21
+ import {
22
+ formatCurrency
23
+ } from "../../chunk-XQDTFNVL.mjs";
21
24
  import {
22
25
  formatDateShort
23
26
  } from "../../chunk-LHWJQNLG.mjs";
24
27
  import "../../chunk-LBTHZSBT.mjs";
25
- import "../../chunk-XYSRRDBH.mjs";
26
- import "../../chunk-FRCTOAKZ.mjs";
27
- import "../../chunk-UNACI2YK.mjs";
28
- import {
29
- formatCurrency
30
- } from "../../chunk-MN5NYQCL.mjs";
31
28
  import {
32
29
  Button
33
30
  } from "../../chunk-NOOEKOWY.mjs";
34
31
  import "../../chunk-R4HCRDU5.mjs";
32
+ import "../../chunk-XYSRRDBH.mjs";
33
+ import "../../chunk-FRCTOAKZ.mjs";
34
+ import "../../chunk-UNACI2YK.mjs";
35
35
  import {
36
36
  cn
37
37
  } from "../../chunk-AFML43VJ.mjs";
@@ -44,6 +44,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
44
44
  function CategoryChip({
45
45
  label,
46
46
  canEdit,
47
+ colorScheme = "primary",
47
48
  onClick
48
49
  }) {
49
50
  if (canEdit) {
@@ -52,7 +53,10 @@ function CategoryChip({
52
53
  {
53
54
  asChild: true,
54
55
  variant: "secondary",
55
- className: "cursor-pointer transition-colors hover:border-primary/40 hover:bg-primary/10 hover:text-primary",
56
+ className: cn(
57
+ "cursor-pointer transition-colors",
58
+ colorScheme === "secondary" ? "hover:bg-brand-secondary/10 hover:text-[var(--brand-secondary)]" : "hover:border-primary/40 hover:bg-primary/10 hover:text-primary"
59
+ ),
56
60
  children: /* @__PURE__ */ jsxs("button", { type: "button", onClick, children: [
57
61
  label,
58
62
  /* @__PURE__ */ jsx(Pencil, { className: "size-2.5 shrink-0 opacity-60" })
@@ -66,6 +70,7 @@ function TransactionRow({
66
70
  tx,
67
71
  isDimmed,
68
72
  canEdit,
73
+ colorScheme = "primary",
69
74
  onChipClick
70
75
  }) {
71
76
  var _a;
@@ -80,14 +85,15 @@ function TransactionRow({
80
85
  ),
81
86
  children: [
82
87
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
83
- /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: formatDateShort(tx.date) }),
84
- /* @__PURE__ */ jsx("p", { className: "mt-0.5 truncate text-sm font-medium text-foreground", children: tx.description }),
85
- tx.merchant && /* @__PURE__ */ jsx("p", { className: "mt-0.5 truncate text-xs text-muted-foreground", children: tx.merchant }),
88
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: formatDateShort(tx.date) }),
89
+ /* @__PURE__ */ jsx("p", { className: "mt-0.5 truncate text-base font-medium text-foreground", children: tx.description }),
90
+ tx.merchant && /* @__PURE__ */ jsx("p", { className: "mt-0.5 truncate text-sm text-muted-foreground", children: tx.merchant }),
86
91
  categoryLabel && /* @__PURE__ */ jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsx(
87
92
  CategoryChip,
88
93
  {
89
94
  label: categoryLabel,
90
95
  canEdit,
96
+ colorScheme,
91
97
  onClick: onChipClick
92
98
  }
93
99
  ) })
@@ -96,7 +102,7 @@ function TransactionRow({
96
102
  "span",
97
103
  {
98
104
  className: cn(
99
- "shrink-0 text-sm font-semibold",
105
+ "shrink-0 text-base font-semibold",
100
106
  isCredit ? "text-success" : "text-foreground"
101
107
  ),
102
108
  children: [
@@ -119,7 +125,10 @@ function DashboardTransactionsTable({
119
125
  className,
120
126
  selectedCategoryId,
121
127
  categories,
122
- onCategoryChange
128
+ onCategoryChange,
129
+ showHeader = true,
130
+ showTab = true,
131
+ colorScheme = "primary"
123
132
  }) {
124
133
  const isFiltering = selectedCategoryId != null;
125
134
  const canEdit = !!(categories == null ? void 0 : categories.length);
@@ -132,9 +141,9 @@ function DashboardTransactionsTable({
132
141
  };
133
142
  return /* @__PURE__ */ jsxs(Fragment, { children: [
134
143
  /* @__PURE__ */ jsxs(Card, { className: cn("flex flex-col", className), children: [
135
- /* @__PURE__ */ jsxs(CardHeader, { className: "pb-0", children: [
144
+ showHeader && /* @__PURE__ */ jsxs(CardHeader, { className: "pb-0", children: [
136
145
  /* @__PURE__ */ jsx(CardTitle, { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: title }),
137
- /* @__PURE__ */ jsx("div", { className: "mt-2 flex border-b border-border", children: /* @__PURE__ */ jsx("span", { className: "border-b-2 border-foreground pb-1.5 text-xs font-semibold text-foreground", children: "Account Transaction" }) })
146
+ showTab && /* @__PURE__ */ jsx("div", { className: "mt-2 flex border-b border-border", children: /* @__PURE__ */ jsx("span", { className: "border-b-2 border-foreground pb-1.5 text-xs font-semibold text-foreground", children: "Account Transaction" }) })
138
147
  ] }),
139
148
  /* @__PURE__ */ jsxs(CardContent, { className: "flex flex-1 flex-col px-4 pb-0 pt-0", children: [
140
149
  isLoading ? /* @__PURE__ */ jsx("div", { className: "flex flex-1 items-center justify-center py-8", children: /* @__PURE__ */ jsx(Spinner, { size: "default" }) }) : transactions.length === 0 ? /* @__PURE__ */ jsx("p", { className: "py-8 text-center text-sm text-muted-foreground", children: "No transactions found" }) : /* @__PURE__ */ jsx("div", { className: "flex flex-col", children: transactions.map((tx) => /* @__PURE__ */ jsx(
@@ -143,6 +152,7 @@ function DashboardTransactionsTable({
143
152
  tx,
144
153
  isDimmed: isFiltering && tx.categoryId !== selectedCategoryId,
145
154
  canEdit,
155
+ colorScheme,
146
156
  onChipClick: () => setEditingTx(tx)
147
157
  },
148
158
  tx.id
@@ -13,10 +13,10 @@ import "../../chunk-IKXYTCSB.mjs";
13
13
  import "../../chunk-K6VCC2MK.mjs";
14
14
  import "../../chunk-H5DTKPJ2.mjs";
15
15
  import "../../chunk-LBTHZSBT.mjs";
16
- import "../../chunk-XYSRRDBH.mjs";
17
- import "../../chunk-FRCTOAKZ.mjs";
18
16
  import "../../chunk-NOOEKOWY.mjs";
19
17
  import "../../chunk-R4HCRDU5.mjs";
18
+ import "../../chunk-XYSRRDBH.mjs";
19
+ import "../../chunk-FRCTOAKZ.mjs";
20
20
  import "../../chunk-AFML43VJ.mjs";
21
21
  import "../../chunk-WNQUEZJF.mjs";
22
22
  export {
@@ -5,10 +5,10 @@ import "../../chunk-F3CU6KEI.mjs";
5
5
  import "../../chunk-FBNEIYSE.mjs";
6
6
  import "../../chunk-LHWJQNLG.mjs";
7
7
  import "../../chunk-LBTHZSBT.mjs";
8
- import "../../chunk-XYSRRDBH.mjs";
9
- import "../../chunk-FRCTOAKZ.mjs";
10
8
  import "../../chunk-NOOEKOWY.mjs";
11
9
  import "../../chunk-R4HCRDU5.mjs";
10
+ import "../../chunk-XYSRRDBH.mjs";
11
+ import "../../chunk-FRCTOAKZ.mjs";
12
12
  import "../../chunk-AFML43VJ.mjs";
13
13
  import "../../chunk-WNQUEZJF.mjs";
14
14
  export {
@@ -1,16 +1,16 @@
1
- import {
2
- Accordion,
3
- AccordionContent,
4
- AccordionItem,
5
- AccordionTrigger
6
- } from "../../chunk-UNACI2YK.mjs";
7
1
  import {
8
2
  formatCurrency
9
- } from "../../chunk-MN5NYQCL.mjs";
3
+ } from "../../chunk-XQDTFNVL.mjs";
10
4
  import {
11
5
  Button
12
6
  } from "../../chunk-NOOEKOWY.mjs";
13
7
  import "../../chunk-R4HCRDU5.mjs";
8
+ import {
9
+ Accordion,
10
+ AccordionContent,
11
+ AccordionItem,
12
+ AccordionTrigger
13
+ } from "../../chunk-UNACI2YK.mjs";
14
14
  import {
15
15
  cn
16
16
  } from "../../chunk-AFML43VJ.mjs";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  DeleteContactComponent
3
- } from "../../chunk-5DAQU3B6.mjs";
3
+ } from "../../chunk-66JXT7NY.mjs";
4
4
  import "../../chunk-JVMXMFBB.mjs";
5
- import "../../chunk-CEYEK3TI.mjs";
6
- import "../../chunk-XYSRRDBH.mjs";
7
- import "../../chunk-FRCTOAKZ.mjs";
5
+ import "../../chunk-B4R62ID3.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 {
@@ -9,11 +9,11 @@ import {
9
9
  DialogPortal,
10
10
  DialogTitle,
11
11
  DialogTrigger
12
- } from "../../chunk-T5FRVEJQ.mjs";
13
- import "../../chunk-XYSRRDBH.mjs";
14
- import "../../chunk-FRCTOAKZ.mjs";
12
+ } from "../../chunk-JTMN36BK.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 {
@@ -4,10 +4,10 @@ import {
4
4
  import "../../chunk-PNSYFE3K.mjs";
5
5
  import "../../chunk-K6VCC2MK.mjs";
6
6
  import "../../chunk-LBTHZSBT.mjs";
7
- import "../../chunk-XYSRRDBH.mjs";
8
- import "../../chunk-FRCTOAKZ.mjs";
9
7
  import "../../chunk-NOOEKOWY.mjs";
10
8
  import "../../chunk-R4HCRDU5.mjs";
9
+ import "../../chunk-XYSRRDBH.mjs";
10
+ import "../../chunk-FRCTOAKZ.mjs";
11
11
  import "../../chunk-AFML43VJ.mjs";
12
12
  import "../../chunk-WNQUEZJF.mjs";
13
13
  export {
@@ -429,7 +429,7 @@ function ChartLegendItem({
429
429
  }
430
430
  }
431
431
  ),
432
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
432
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-sm text-muted-foreground leading-none", children: label })
433
433
  ] });
434
434
  }
435
435
  function ChartPeriodButton({
@@ -474,7 +474,8 @@ function ExpenseBarChart({
474
474
  height = 280,
475
475
  width = "100%",
476
476
  className,
477
- isLoading = false
477
+ isLoading = false,
478
+ showPeriodSelector = true
478
479
  }) {
479
480
  const periods = CHART_PERIODS[granularity];
480
481
  const [period, setPeriod] = (0, import_react3.useState)(defaultPeriod);
@@ -574,7 +575,7 @@ function ExpenseBarChart({
574
575
  stacked: true,
575
576
  grid: { display: false },
576
577
  border: { display: false },
577
- ticks: { font: { size: 10 }, color: FALLBACK_TICK }
578
+ ticks: { font: { size: 12 }, color: FALLBACK_TICK }
578
579
  },
579
580
  y: {
580
581
  display: showYAxis,
@@ -582,7 +583,7 @@ function ExpenseBarChart({
582
583
  grid: { display: false },
583
584
  border: { display: false },
584
585
  ticks: {
585
- font: { size: 10 },
586
+ font: { size: 12 },
586
587
  color: FALLBACK_TICK,
587
588
  maxTicksLimit: 5,
588
589
  padding: 8,
@@ -599,9 +600,9 @@ function ExpenseBarChart({
599
600
  className: cn("w-full py-4 sm:py-6 gap-2", className),
600
601
  style: { maxWidth: width, fontFamily },
601
602
  children: [
602
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
603
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-xs font-semibold uppercase tracking-wide", children: title }),
604
- /* @__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)(
603
+ (title || showPeriodSelector) && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
604
+ title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-xs font-semibold uppercase tracking-wide", children: title }),
605
+ 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)(
605
606
  ChartPeriodButton,
606
607
  {
607
608
  period: p,
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  ExpenseBarChart
3
- } from "../../chunk-4LLTZ45R.mjs";
3
+ } from "../../chunk-HOXTEU5K.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 {
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __objRest = (source, exclude) => {
24
+ var target = {};
25
+ for (var prop in source)
26
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
27
+ target[prop] = source[prop];
28
+ if (source != null && __getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(source)) {
30
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
31
+ target[prop] = source[prop];
32
+ }
33
+ return target;
34
+ };
35
+ var __export = (target, all) => {
36
+ for (var name in all)
37
+ __defProp(target, name, { get: all[name], enumerable: true });
38
+ };
39
+ var __copyProps = (to, from, except, desc) => {
40
+ if (from && typeof from === "object" || typeof from === "function") {
41
+ for (let key of __getOwnPropNames(from))
42
+ if (!__hasOwnProp.call(to, key) && key !== except)
43
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
44
+ }
45
+ return to;
46
+ };
47
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
48
+
49
+ // src/components/ui/expense-categories-bar.tsx
50
+ var expense_categories_bar_exports = {};
51
+ __export(expense_categories_bar_exports, {
52
+ ExpenseCategoriesBar: () => ExpenseCategoriesBar
53
+ });
54
+ module.exports = __toCommonJS(expense_categories_bar_exports);
55
+ var import_react2 = require("react");
56
+ var import_lucide_react = require("lucide-react");
57
+
58
+ // src/components/ui/tooltip.tsx
59
+ var import_tooltip = require("@base-ui/react/tooltip");
60
+
61
+ // src/lib/utils.ts
62
+ var import_clsx = require("clsx");
63
+ var import_tailwind_merge = require("tailwind-merge");
64
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
65
+ extend: {
66
+ classGroups: {
67
+ "font-size": [
68
+ {
69
+ text: [
70
+ "display-large",
71
+ "display-medium",
72
+ "display-small",
73
+ "h1",
74
+ "h2",
75
+ "h3",
76
+ "h4",
77
+ "h5",
78
+ "h6",
79
+ "body-large",
80
+ "body-medium",
81
+ "body-small",
82
+ "label-large",
83
+ "label-medium",
84
+ "label-small",
85
+ "button",
86
+ "button-xs",
87
+ "caption",
88
+ "overline",
89
+ "code"
90
+ ]
91
+ }
92
+ ]
93
+ }
94
+ }
95
+ });
96
+ function cn(...inputs) {
97
+ return twMerge((0, import_clsx.clsx)(inputs));
98
+ }
99
+
100
+ // src/lib/theme-provider.tsx
101
+ var import_react = require("react");
102
+ var import_jsx_runtime = require("react/jsx-runtime");
103
+ var ThemeVarsContext = (0, import_react.createContext)({});
104
+ function useThemeVars() {
105
+ return (0, import_react.useContext)(ThemeVarsContext);
106
+ }
107
+
108
+ // src/components/ui/tooltip.tsx
109
+ var import_jsx_runtime2 = require("react/jsx-runtime");
110
+ function Tooltip(_a) {
111
+ var props = __objRest(_a, []);
112
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_tooltip.Tooltip.Root, __spreadValues({ "data-slot": "tooltip" }, props));
113
+ }
114
+ function TooltipTrigger(_a) {
115
+ var props = __objRest(_a, []);
116
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_tooltip.Tooltip.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
117
+ }
118
+ function TooltipContent(_a) {
119
+ var _b = _a, {
120
+ className,
121
+ sideOffset = 8,
122
+ side,
123
+ children,
124
+ style
125
+ } = _b, props = __objRest(_b, [
126
+ "className",
127
+ "sideOffset",
128
+ "side",
129
+ "children",
130
+ "style"
131
+ ]);
132
+ const themeVars = useThemeVars();
133
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_tooltip.Tooltip.Positioner, { sideOffset, side, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
134
+ import_tooltip.Tooltip.Popup,
135
+ __spreadProps(__spreadValues({
136
+ className: cn(
137
+ "relative z-50 w-fit animate-in overflow-visible bg-brand-secondary px-3 py-1.5 text-caption text-balance text-brand-secondary-foreground fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards",
138
+ className
139
+ ),
140
+ "data-slot": "tooltip-content",
141
+ style: __spreadValues(__spreadValues({}, themeVars), style)
142
+ }, props), {
143
+ children: [
144
+ children,
145
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_tooltip.Tooltip.Arrow, { className: "z-50 size-2.5 rotate-45 bg-brand-secondary data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1 data-[side=top]:-bottom-1" })
146
+ ]
147
+ })
148
+ ) }) });
149
+ }
150
+
151
+ // src/lib/format-currency.ts
152
+ function formatCurrency(value, options) {
153
+ const { decimals = 0, showSign = false } = options != null ? options : {};
154
+ const abs = Math.abs(value);
155
+ const formatted = new Intl.NumberFormat("en-AU", {
156
+ style: "currency",
157
+ currency: "AUD",
158
+ minimumFractionDigits: decimals,
159
+ maximumFractionDigits: decimals
160
+ }).format(abs);
161
+ if (!showSign) return value < 0 ? `-${formatted}` : formatted;
162
+ if (value > 0) return `+${formatted}`;
163
+ if (value < 0) return `-${formatted}`;
164
+ return formatted;
165
+ }
166
+
167
+ // src/components/ui/expense-categories-bar.tsx
168
+ var import_jsx_runtime3 = require("react/jsx-runtime");
169
+ function ExpenseCategoriesBar({
170
+ title,
171
+ subtitle,
172
+ tooltipText,
173
+ parts = [],
174
+ icons = [],
175
+ color = "secondary",
176
+ className
177
+ }) {
178
+ const [hoveredIndex, setHoveredIndex] = (0, import_react2.useState)(-1);
179
+ const segmentBase = color === "primary" ? "bg-primary" : "bg-brand-secondary";
180
+ const segmentHover = color === "primary" ? "border-primary/50 bg-primary/60" : "border-brand-secondary/50 bg-brand-secondary/60";
181
+ const iconDefault = color === "primary" ? "[&_svg]:stroke-primary-foreground [&_svg]:text-primary-foreground" : "[&_svg]:stroke-brand-secondary-foreground [&_svg]:text-brand-secondary-foreground";
182
+ const iconHovered = "[&_svg]:stroke-foreground [&_svg]:text-foreground";
183
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: cn("flex flex-col", className), children: [
184
+ (title || subtitle) && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-baseline gap-2", children: [
185
+ title && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "m-0 overflow-hidden text-ellipsis whitespace-nowrap text-[22px] font-normal leading-tight", children: title }),
186
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex min-w-0 items-center gap-1", children: [
187
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "whitespace-nowrap text-sm text-muted-foreground", children: subtitle }),
188
+ tooltipText && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Tooltip, { children: [
189
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
190
+ TooltipTrigger,
191
+ {
192
+ render: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
193
+ "button",
194
+ {
195
+ type: "button",
196
+ className: "flex items-center text-muted-foreground transition-colors hover:text-foreground"
197
+ }
198
+ ),
199
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Info, { className: "size-4" })
200
+ }
201
+ ),
202
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipContent, { side: "top", children: tooltipText })
203
+ ] })
204
+ ] })
205
+ ] }),
206
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
207
+ "div",
208
+ {
209
+ className: "mt-4 mb-6 flex h-8 w-full gap-px",
210
+ onMouseLeave: () => setHoveredIndex(-1),
211
+ children: parts.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "grow bg-muted" }) : parts.map((part, index) => {
212
+ const isHovered = hoveredIndex === index;
213
+ const showIcon = part.percentage > 0.01;
214
+ const icon = icons[index];
215
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Tooltip, { open: isHovered, children: [
216
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
217
+ TooltipTrigger,
218
+ {
219
+ render: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
220
+ "div",
221
+ {
222
+ className: cn(
223
+ "relative border border-transparent transition-colors duration-200",
224
+ segmentBase,
225
+ isHovered && segmentHover
226
+ ),
227
+ style: {
228
+ flexGrow: Math.max(part.percentage, 1e-4) * 10
229
+ },
230
+ onMouseEnter: () => setHoveredIndex(index)
231
+ }
232
+ ),
233
+ children: showIcon && icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
234
+ "div",
235
+ {
236
+ className: cn(
237
+ "absolute left-2 top-0 bottom-0 flex items-center [&_svg]:size-4",
238
+ isHovered ? iconHovered : iconDefault
239
+ ),
240
+ children: icon
241
+ }
242
+ )
243
+ }
244
+ ),
245
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipContent, { side: "top", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex flex-col gap-1.5 min-w-[120px]", children: [
246
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center gap-2", children: [
247
+ icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "[&_svg]:size-4", children: icon }),
248
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-sm font-semibold leading-tight line-clamp-2", children: part.title })
249
+ ] }),
250
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "self-end text-sm font-bold", children: formatCurrency(part.amount) })
251
+ ] }) })
252
+ ] }, part.id);
253
+ })
254
+ }
255
+ )
256
+ ] });
257
+ }
258
+ // Annotate the CommonJS export names for ESM import in node:
259
+ 0 && (module.exports = {
260
+ ExpenseCategoriesBar
261
+ });
@@ -0,0 +1,12 @@
1
+ import {
2
+ ExpenseCategoriesBar
3
+ } from "../../chunk-LFWNKXZU.mjs";
4
+ import "../../chunk-3S6KVFF5.mjs";
5
+ import "../../chunk-XQDTFNVL.mjs";
6
+ import "../../chunk-XYSRRDBH.mjs";
7
+ import "../../chunk-FRCTOAKZ.mjs";
8
+ import "../../chunk-AFML43VJ.mjs";
9
+ import "../../chunk-WNQUEZJF.mjs";
10
+ export {
11
+ ExpenseCategoriesBar
12
+ };
@@ -494,7 +494,7 @@ function ChartLegendItem({
494
494
  }
495
495
  }
496
496
  ),
497
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
497
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-sm text-muted-foreground leading-none", children: label })
498
498
  ] });
499
499
  }
500
500
  function ChartPeriodButton({
@@ -539,7 +539,8 @@ function ExpenseBarChart({
539
539
  height = 280,
540
540
  width = "100%",
541
541
  className,
542
- isLoading = false
542
+ isLoading = false,
543
+ showPeriodSelector = true
543
544
  }) {
544
545
  const periods = CHART_PERIODS[granularity];
545
546
  const [period, setPeriod] = (0, import_react4.useState)(defaultPeriod);
@@ -639,7 +640,7 @@ function ExpenseBarChart({
639
640
  stacked: true,
640
641
  grid: { display: false },
641
642
  border: { display: false },
642
- ticks: { font: { size: 10 }, color: FALLBACK_TICK }
643
+ ticks: { font: { size: 12 }, color: FALLBACK_TICK }
643
644
  },
644
645
  y: {
645
646
  display: showYAxis,
@@ -647,7 +648,7 @@ function ExpenseBarChart({
647
648
  grid: { display: false },
648
649
  border: { display: false },
649
650
  ticks: {
650
- font: { size: 10 },
651
+ font: { size: 12 },
651
652
  color: FALLBACK_TICK,
652
653
  maxTicksLimit: 5,
653
654
  padding: 8,
@@ -664,9 +665,9 @@ function ExpenseBarChart({
664
665
  className: cn("w-full py-4 sm:py-6 gap-2", className),
665
666
  style: { maxWidth: width, fontFamily },
666
667
  children: [
667
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
668
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CardTitle, { className: "text-xs font-semibold uppercase tracking-wide", children: title }),
669
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: periods.map((p) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
668
+ (title || showPeriodSelector) && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
669
+ title && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CardTitle, { className: "text-xs font-semibold uppercase tracking-wide", children: title }),
670
+ showPeriodSelector && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: periods.map((p) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
670
671
  ChartPeriodButton,
671
672
  {
672
673
  period: p,
@@ -3,9 +3,9 @@ import {
3
3
  } from "../../chunk-I433SC7S.mjs";
4
4
  import {
5
5
  ExpenseBarChart
6
- } from "../../chunk-4LLTZ45R.mjs";
6
+ } from "../../chunk-HOXTEU5K.mjs";
7
7
  import "../../chunk-GTAVSBDO.mjs";
8
- import "../../chunk-YEWNFK5S.mjs";
8
+ import "../../chunk-WLXP4OOF.mjs";
9
9
  import "../../chunk-R2ON6CAN.mjs";
10
10
  import {
11
11
  Card,
@@ -22,19 +22,19 @@ import {
22
22
  DropdownMenuItem,
23
23
  DropdownMenuTrigger
24
24
  } from "../../chunk-H5DTKPJ2.mjs";
25
+ import {
26
+ formatCurrency
27
+ } from "../../chunk-XQDTFNVL.mjs";
25
28
  import "../../chunk-OWFQSXVD.mjs";
26
29
  import "../../chunk-6QAFGZC2.mjs";
27
30
  import "../../chunk-LSRGA5BI.mjs";
28
31
  import "../../chunk-LBTHZSBT.mjs";
29
- import "../../chunk-XYSRRDBH.mjs";
30
- import "../../chunk-FRCTOAKZ.mjs";
31
- import {
32
- formatCurrency
33
- } from "../../chunk-MN5NYQCL.mjs";
34
32
  import {
35
33
  Button
36
34
  } from "../../chunk-NOOEKOWY.mjs";
37
35
  import "../../chunk-R4HCRDU5.mjs";
36
+ import "../../chunk-XYSRRDBH.mjs";
37
+ import "../../chunk-FRCTOAKZ.mjs";
38
38
  import {
39
39
  cn
40
40
  } from "../../chunk-AFML43VJ.mjs";