@wealthx/shadcn 1.2.2 → 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 (229) hide show
  1. package/.turbo/turbo-build.log +200 -156
  2. package/CHANGELOG.md +22 -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-VGSESELX.mjs → chunk-5FQIKDKP.mjs} +5 -5
  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-WAZD7NFU.mjs → chunk-BKNFWEH2.mjs} +6 -6
  20. package/dist/{chunk-CLIN5525.mjs → chunk-C7CQJNMR.mjs} +1 -1
  21. package/dist/{chunk-D4ILTPOG.mjs → chunk-CFMQP5QS.mjs} +5 -4
  22. package/dist/{chunk-VPBN3WOO.mjs → chunk-DGHAXJBN.mjs} +9 -7
  23. package/dist/chunk-DOEO3CDL.mjs +27 -0
  24. package/dist/{chunk-5MEWU56Z.mjs → chunk-DUJTAXMH.mjs} +11 -6
  25. package/dist/{chunk-GGM2UYGG.mjs → chunk-EBXQWIYG.mjs} +10 -4
  26. package/dist/chunk-EWRB4PAD.mjs +468 -0
  27. package/dist/{chunk-ZSHYDDRB.mjs → chunk-FAKPBKLT.mjs} +6 -2
  28. package/dist/chunk-FNQXOAYJ.mjs +169 -0
  29. package/dist/{chunk-A6AAWBPF.mjs → chunk-GHC7LLUX.mjs} +13 -4
  30. package/dist/chunk-HBZLGDIN.mjs +507 -0
  31. package/dist/{chunk-SIZMLSRU.mjs → chunk-HISNT2MG.mjs} +8 -6
  32. package/dist/{chunk-CGH4DRNG.mjs → chunk-HVY6KCCF.mjs} +10 -7
  33. package/dist/chunk-I3RZS7V2.mjs +136 -0
  34. package/dist/chunk-IAE3F7DR.mjs +1962 -0
  35. package/dist/{chunk-UT4KJR7V.mjs → chunk-IHMFS7NZ.mjs} +35 -74
  36. package/dist/{chunk-PCPLO5HT.mjs → chunk-IOJRDS6V.mjs} +96 -14
  37. package/dist/{chunk-LHYCMLVA.mjs → chunk-JKGDCQTZ.mjs} +11 -4
  38. package/dist/{chunk-H45TKD34.mjs → chunk-JMHR3YGZ.mjs} +1 -1
  39. package/dist/{chunk-4MN6UQHG.mjs → chunk-K5A5L6T2.mjs} +17 -39
  40. package/dist/chunk-LV35NGVG.mjs +272 -0
  41. package/dist/{chunk-FZIXGLMV.mjs → chunk-M3FV7LOK.mjs} +5 -12
  42. package/dist/{chunk-FMAXJ2SI.mjs → chunk-MBON7YRJ.mjs} +1 -1
  43. package/dist/chunk-MIZQHHUO.mjs +441 -0
  44. package/dist/chunk-MN5NYQCL.mjs +29 -0
  45. package/dist/chunk-NL3ZO62D.mjs +31 -0
  46. package/dist/{chunk-Q76O3RIQ.mjs → chunk-NMOI6CQD.mjs} +1 -1
  47. package/dist/{chunk-P6AM5V7O.mjs → chunk-OODBHKG7.mjs} +1 -1
  48. package/dist/chunk-PBL4OQV2.mjs +283 -0
  49. package/dist/{chunk-Y4QFWRNR.mjs → chunk-PU4YZQXV.mjs} +17 -18
  50. package/dist/chunk-QMY3AZJH.mjs +80 -0
  51. package/dist/{chunk-BL3DXM2X.mjs → chunk-QZ4RE6NA.mjs} +11 -4
  52. package/dist/{chunk-VACKZOMY.mjs → chunk-R3VSPKNP.mjs} +3 -3
  53. package/dist/{chunk-OPNQAVVH.mjs → chunk-RJI6GKVF.mjs} +8 -6
  54. package/dist/{chunk-WG6JGJXB.mjs → chunk-T4BJLT57.mjs} +1 -1
  55. package/dist/chunk-UMTOX62O.mjs +415 -0
  56. package/dist/{chunk-7MMXNK3C.mjs → chunk-VLARHE5V.mjs} +8 -6
  57. package/dist/{chunk-2I5S2AMY.mjs → chunk-XREGSKX3.mjs} +2 -2
  58. package/dist/{chunk-JNQORUPP.mjs → chunk-YJG55G2H.mjs} +14 -11
  59. package/dist/{chunk-ZRSDX6OW.mjs → chunk-ZC45IGZO.mjs} +33 -30
  60. package/dist/components/ui/add-column-modal.js +42 -14
  61. package/dist/components/ui/add-column-modal.mjs +5 -5
  62. package/dist/components/ui/add-lead-modal.js +42 -11
  63. package/dist/components/ui/add-lead-modal.mjs +3 -3
  64. package/dist/components/ui/advisor-card.js +497 -0
  65. package/dist/components/ui/advisor-card.mjs +13 -0
  66. package/dist/components/ui/ai-assistant-drawer.js +11 -10
  67. package/dist/components/ui/ai-assistant-drawer.mjs +3 -3
  68. package/dist/components/ui/alert-dialog.js +2 -2
  69. package/dist/components/ui/alert-dialog.mjs +2 -2
  70. package/dist/components/ui/appointment-action-dialogs.js +1160 -0
  71. package/dist/components/ui/appointment-action-dialogs.mjs +23 -0
  72. package/dist/components/ui/appointment-availability-settings.js +1590 -0
  73. package/dist/components/ui/appointment-availability-settings.mjs +23 -0
  74. package/dist/components/ui/appointment-book-dialog.js +1744 -0
  75. package/dist/components/ui/appointment-book-dialog.mjs +27 -0
  76. package/dist/components/ui/appointment-calendar-view.js +833 -0
  77. package/dist/components/ui/appointment-calendar-view.mjs +14 -0
  78. package/dist/components/ui/appointment-detail-sheet.js +1517 -0
  79. package/dist/components/ui/appointment-detail-sheet.mjs +24 -0
  80. package/dist/components/ui/appointment-gmail-connect.js +467 -0
  81. package/dist/components/ui/appointment-gmail-connect.mjs +14 -0
  82. package/dist/components/ui/appointment-mini-card.js +345 -0
  83. package/dist/components/ui/appointment-mini-card.mjs +11 -0
  84. package/dist/components/ui/appointment-time-slot-picker.js +311 -0
  85. package/dist/components/ui/appointment-time-slot-picker.mjs +13 -0
  86. package/dist/components/ui/appointment-upcoming-card.js +1268 -0
  87. package/dist/components/ui/appointment-upcoming-card.mjs +21 -0
  88. package/dist/components/ui/backoffice-alert-history-chart.js +11 -5
  89. package/dist/components/ui/backoffice-alert-history-chart.mjs +5 -4
  90. package/dist/components/ui/backoffice-alerts-chart.js +786 -0
  91. package/dist/components/ui/backoffice-alerts-chart.mjs +19 -0
  92. package/dist/components/ui/backoffice-connections-chart.js +817 -0
  93. package/dist/components/ui/backoffice-connections-chart.mjs +19 -0
  94. package/dist/components/ui/backoffice-contact-history-chart.js +11 -5
  95. package/dist/components/ui/backoffice-contact-history-chart.mjs +5 -4
  96. package/dist/components/ui/badge.js +6 -6
  97. package/dist/components/ui/badge.mjs +1 -1
  98. package/dist/components/ui/borrowing-capacity-line-chart.js +30 -21
  99. package/dist/components/ui/borrowing-capacity-line-chart.mjs +5 -4
  100. package/dist/components/ui/button.js +2 -2
  101. package/dist/components/ui/button.mjs +1 -1
  102. package/dist/components/ui/calendar.js +2 -2
  103. package/dist/components/ui/calendar.mjs +2 -2
  104. package/dist/components/ui/card.js +1 -1
  105. package/dist/components/ui/card.mjs +1 -1
  106. package/dist/components/ui/cash-balance-line-chart.js +31 -23
  107. package/dist/components/ui/cash-balance-line-chart.mjs +5 -4
  108. package/dist/components/ui/cashflow-bar-chart.js +12 -5
  109. package/dist/components/ui/cashflow-bar-chart.mjs +5 -4
  110. package/dist/components/ui/chip.js +97 -18
  111. package/dist/components/ui/chip.mjs +3 -2
  112. package/dist/components/ui/color-picker.js +158 -28
  113. package/dist/components/ui/color-picker.mjs +3 -1
  114. package/dist/components/ui/data-table.js +140 -119
  115. package/dist/components/ui/data-table.mjs +3 -2
  116. package/dist/components/ui/date-picker.js +48 -27
  117. package/dist/components/ui/date-picker.mjs +4 -3
  118. package/dist/components/ui/dialog.js +37 -9
  119. package/dist/components/ui/dialog.mjs +2 -2
  120. package/dist/components/ui/expense-bar-chart.js +12 -5
  121. package/dist/components/ui/expense-bar-chart.mjs +5 -4
  122. package/dist/components/ui/field.mjs +2 -2
  123. package/dist/components/ui/financial-cards.js +322 -155
  124. package/dist/components/ui/financial-cards.mjs +5 -3
  125. package/dist/components/ui/financial-drawers.js +2 -2
  126. package/dist/components/ui/financial-drawers.mjs +3 -3
  127. package/dist/components/ui/financial-sections.js +14 -10
  128. package/dist/components/ui/financial-sections.mjs +6 -5
  129. package/dist/components/ui/income-bar-chart.js +12 -5
  130. package/dist/components/ui/income-bar-chart.mjs +5 -4
  131. package/dist/components/ui/input-group.js +2 -2
  132. package/dist/components/ui/input-group.mjs +2 -2
  133. package/dist/components/ui/kanban-column.js +52 -44
  134. package/dist/components/ui/kanban-column.mjs +7 -5
  135. package/dist/components/ui/opportunity-card.js +52 -44
  136. package/dist/components/ui/opportunity-card.mjs +6 -4
  137. package/dist/components/ui/opportunity-edit-modals.js +1367 -1263
  138. package/dist/components/ui/opportunity-edit-modals.mjs +8 -8
  139. package/dist/components/ui/opportunity-summary-tab.js +2744 -2157
  140. package/dist/components/ui/opportunity-summary-tab.mjs +14 -14
  141. package/dist/components/ui/page-header.js +92 -0
  142. package/dist/components/ui/page-header.mjs +8 -0
  143. package/dist/components/ui/page-top-bar.js +88 -0
  144. package/dist/components/ui/page-top-bar.mjs +8 -0
  145. package/dist/components/ui/pagination.js +303 -19
  146. package/dist/components/ui/pagination.mjs +11 -4
  147. package/dist/components/ui/pipeline-board.js +205 -191
  148. package/dist/components/ui/pipeline-board.mjs +9 -7
  149. package/dist/components/ui/pipeline-dialogs.js +114 -65
  150. package/dist/components/ui/pipeline-dialogs.mjs +7 -6
  151. package/dist/components/ui/pipeline-primitives.js +6 -6
  152. package/dist/components/ui/pipeline-primitives.mjs +2 -2
  153. package/dist/components/ui/property-cashflow-doughnut-chart.js +14 -12
  154. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +5 -4
  155. package/dist/components/ui/property-debt-equity-doughnut-chart.js +14 -12
  156. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +5 -4
  157. package/dist/components/ui/property-mobile-estimate-line-chart.js +16 -14
  158. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +5 -4
  159. package/dist/components/ui/sidebar-nav.js +234 -95
  160. package/dist/components/ui/sidebar-nav.mjs +4 -1
  161. package/dist/components/ui/stage-timeline.js +6 -6
  162. package/dist/components/ui/stage-timeline.mjs +3 -3
  163. package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +18 -16
  164. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +5 -4
  165. package/dist/components/ui/transactions-income-expense-bar-chart.js +28 -12
  166. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +5 -4
  167. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +18 -16
  168. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +5 -4
  169. package/dist/index.js +12899 -9343
  170. package/dist/index.mjs +256 -190
  171. package/dist/styles.css +1 -1
  172. package/package.json +71 -1
  173. package/src/components/index.tsx +114 -9
  174. package/src/components/ui/add-column-modal.tsx +7 -7
  175. package/src/components/ui/add-lead-modal.tsx +6 -3
  176. package/src/components/ui/advisor-card.tsx +227 -0
  177. package/src/components/ui/ai-assistant-drawer.tsx +4 -3
  178. package/src/components/ui/appointment-action-dialogs.tsx +297 -0
  179. package/src/components/ui/appointment-availability-settings.tsx +645 -0
  180. package/src/components/ui/appointment-book-dialog.tsx +618 -0
  181. package/src/components/ui/appointment-calendar-view.tsx +510 -0
  182. package/src/components/ui/appointment-detail-sheet.tsx +415 -0
  183. package/src/components/ui/appointment-gmail-connect.tsx +188 -0
  184. package/src/components/ui/appointment-mini-card.tsx +104 -0
  185. package/src/components/ui/appointment-time-slot-picker.tsx +123 -0
  186. package/src/components/ui/appointment-upcoming-card.tsx +635 -0
  187. package/src/components/ui/backoffice-alert-history-chart.tsx +10 -2
  188. package/src/components/ui/backoffice-alerts-chart.tsx +312 -0
  189. package/src/components/ui/backoffice-connections-chart.tsx +339 -0
  190. package/src/components/ui/backoffice-contact-history-chart.tsx +10 -2
  191. package/src/components/ui/badge.tsx +12 -6
  192. package/src/components/ui/borrowing-capacity-line-chart.tsx +4 -11
  193. package/src/components/ui/button.tsx +2 -2
  194. package/src/components/ui/card.tsx +1 -1
  195. package/src/components/ui/cash-balance-line-chart.tsx +4 -23
  196. package/src/components/ui/cashflow-bar-chart.tsx +9 -2
  197. package/src/components/ui/chart-shared.tsx +4 -11
  198. package/src/components/ui/chip.tsx +23 -19
  199. package/src/components/ui/color-picker.tsx +4 -2
  200. package/src/components/ui/data-table.tsx +28 -74
  201. package/src/components/ui/date-picker.tsx +42 -37
  202. package/src/components/ui/dialog.tsx +72 -6
  203. package/src/components/ui/expense-bar-chart.tsx +11 -2
  204. package/src/components/ui/financial-cards.tsx +99 -10
  205. package/src/components/ui/income-bar-chart.tsx +11 -2
  206. package/src/components/ui/opportunity-card.tsx +10 -39
  207. package/src/components/ui/opportunity-edit-modals.tsx +98 -36
  208. package/src/components/ui/opportunity-summary-tab.tsx +548 -232
  209. package/src/components/ui/page-header.tsx +57 -0
  210. package/src/components/ui/page-top-bar.tsx +48 -0
  211. package/src/components/ui/pagination.tsx +171 -22
  212. package/src/components/ui/pipeline-board.tsx +12 -5
  213. package/src/components/ui/property-cashflow-doughnut-chart.tsx +3 -1
  214. package/src/components/ui/property-debt-equity-doughnut-chart.tsx +3 -1
  215. package/src/components/ui/property-mobile-estimate-line-chart.tsx +3 -1
  216. package/src/components/ui/sidebar-nav.tsx +36 -37
  217. package/src/components/ui/transactions-expense-categories-doughnut-chart.tsx +3 -1
  218. package/src/components/ui/transactions-income-expense-bar-chart.tsx +12 -9
  219. package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +3 -1
  220. package/src/lib/format-currency.ts +44 -0
  221. package/src/lib/format-date.ts +50 -0
  222. package/src/lib/opportunity-constants.ts +12 -0
  223. package/src/styles/globals.css +17 -15
  224. package/src/styles/styles-css.ts +1 -1
  225. package/tsup.config.ts +14 -0
  226. package/dist/chunk-S4QRUQNW.mjs +0 -475
  227. package/dist/chunk-URGMJAE3.mjs +0 -1885
  228. package/dist/chunk-WNGWBVLV.mjs +0 -148
  229. package/dist/{chunk-LLVQKSU3.mjs → chunk-GD4BJDJR.mjs} +3 -3
@@ -167,10 +167,10 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
167
167
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
168
168
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
169
169
  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",
170
- outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
170
+ 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",
171
171
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
172
172
  "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
173
- ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs dark:hover:bg-accent/50",
173
+ ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
174
174
  link: "text-primary underline-offset-4 hover:underline"
175
175
  },
176
176
  size: {
@@ -231,11 +231,30 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
231
231
  );
232
232
  });
233
233
 
234
+ // src/components/ui/input.tsx
235
+ var import_jsx_runtime2 = require("react/jsx-runtime");
236
+ function Input(_a) {
237
+ var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
238
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
239
+ "input",
240
+ __spreadValues({
241
+ className: cn(
242
+ "h-9 w-full min-w-0 border border-input bg-transparent px-3 py-1 text-body-medium font-sans shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-label-medium file:text-foreground placeholder:font-normal placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/30",
243
+ "focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20",
244
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
245
+ className
246
+ ),
247
+ "data-slot": "input",
248
+ type
249
+ }, props)
250
+ );
251
+ }
252
+
234
253
  // src/components/ui/calendar.tsx
235
254
  var React2 = __toESM(require("react"));
236
255
  var import_lucide_react2 = require("lucide-react");
237
256
  var import_react_day_picker = require("react-day-picker");
238
- var import_jsx_runtime2 = require("react/jsx-runtime");
257
+ var import_jsx_runtime3 = require("react/jsx-runtime");
239
258
  function CalendarRoot(_a) {
240
259
  var _b = _a, {
241
260
  className,
@@ -244,7 +263,7 @@ function CalendarRoot(_a) {
244
263
  "className",
245
264
  "rootRef"
246
265
  ]);
247
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
266
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
248
267
  "div",
249
268
  __spreadValues({
250
269
  className: cn(className),
@@ -262,12 +281,12 @@ function CalendarChevron(_a) {
262
281
  "orientation"
263
282
  ]);
264
283
  if (orientation === "left") {
265
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react2.ChevronLeftIcon, __spreadValues({ className: cn("size-4", className) }, props));
284
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react2.ChevronLeftIcon, __spreadValues({ className: cn("size-4", className) }, props));
266
285
  }
267
286
  if (orientation === "right") {
268
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react2.ChevronRightIcon, __spreadValues({ className: cn("size-4", className) }, props));
287
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react2.ChevronRightIcon, __spreadValues({ className: cn("size-4", className) }, props));
269
288
  }
270
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react2.ChevronDownIcon, __spreadValues({ className: cn("size-4", className) }, props));
289
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react2.ChevronDownIcon, __spreadValues({ className: cn("size-4", className) }, props));
271
290
  }
272
291
  function CalendarWeekNumber(_a) {
273
292
  var _b = _a, {
@@ -275,7 +294,7 @@ function CalendarWeekNumber(_a) {
275
294
  } = _b, props = __objRest(_b, [
276
295
  "children"
277
296
  ]);
278
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("td", __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
297
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("td", __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
279
298
  }
280
299
  function Calendar(_a) {
281
300
  var _b = _a, {
@@ -296,7 +315,7 @@ function Calendar(_a) {
296
315
  "components"
297
316
  ]);
298
317
  const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
299
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
318
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
300
319
  import_react_day_picker.DayPicker,
301
320
  __spreadValues({
302
321
  captionLayout,
@@ -411,7 +430,7 @@ function CalendarDayButton(_a) {
411
430
  if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
412
431
  }, [modifiers.focused]);
413
432
  const selectedSingle = modifiers.selected && !modifiers.range_start && !modifiers.range_end ? !modifiers.range_middle : null;
414
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
433
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
415
434
  Button,
416
435
  __spreadValues({
417
436
  className: cn(
@@ -436,21 +455,21 @@ var import_popover = require("@base-ui/react/popover");
436
455
 
437
456
  // src/lib/theme-provider.tsx
438
457
  var import_react2 = require("react");
439
- var import_jsx_runtime3 = require("react/jsx-runtime");
458
+ var import_jsx_runtime4 = require("react/jsx-runtime");
440
459
  var ThemeVarsContext = (0, import_react2.createContext)({});
441
460
  function useThemeVars() {
442
461
  return (0, import_react2.useContext)(ThemeVarsContext);
443
462
  }
444
463
 
445
464
  // src/components/ui/popover.tsx
446
- var import_jsx_runtime4 = require("react/jsx-runtime");
465
+ var import_jsx_runtime5 = require("react/jsx-runtime");
447
466
  function Popover(_a) {
448
467
  var props = __objRest(_a, []);
449
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
468
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
450
469
  }
451
470
  function PopoverTrigger(_a) {
452
471
  var props = __objRest(_a, []);
453
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_popover.Popover.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
472
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_popover.Popover.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
454
473
  }
455
474
  function PopoverContent(_a) {
456
475
  var _b = _a, {
@@ -465,13 +484,13 @@ function PopoverContent(_a) {
465
484
  "style"
466
485
  ]);
467
486
  const themeVars = useThemeVars();
468
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_popover.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
487
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_popover.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
469
488
  import_popover.Popover.Positioner,
470
489
  {
471
490
  className: "z-[200]",
472
491
  align,
473
492
  sideOffset,
474
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
493
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
475
494
  import_popover.Popover.Popup,
476
495
  __spreadValues({
477
496
  className: cn(
@@ -487,7 +506,7 @@ function PopoverContent(_a) {
487
506
  }
488
507
 
489
508
  // src/components/ui/date-picker.tsx
490
- var import_jsx_runtime5 = require("react/jsx-runtime");
509
+ var import_jsx_runtime6 = require("react/jsx-runtime");
491
510
  function DatePicker({
492
511
  value,
493
512
  onChange,
@@ -522,15 +541,17 @@ function DatePicker({
522
541
  } else if (value) {
523
542
  displayValue = (0, import_date_fns.format)(value, "dd/MM/yyyy");
524
543
  }
525
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Popover, { onOpenChange: disabled ? void 0 : setOpen, open, children: [
526
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
544
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Popover, { onOpenChange: disabled ? void 0 : setOpen, open, children: [
545
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
527
546
  PopoverTrigger,
528
547
  {
529
- render: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
548
+ render: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
530
549
  Button,
531
550
  {
532
551
  className: cn(
533
552
  "w-full justify-start rounded-none font-normal data-[empty=true]:text-muted-foreground",
553
+ // Show open/focus state when the popover is expanded
554
+ "aria-expanded:border-ring aria-expanded:ring-2 aria-expanded:ring-ring/20",
534
555
  className
535
556
  ),
536
557
  "data-empty": !value,
@@ -540,18 +561,18 @@ function DatePicker({
540
561
  }
541
562
  ),
542
563
  children: [
543
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react3.CalendarIcon, {}),
564
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.CalendarIcon, {}),
544
565
  value ? displayValue : placeholder
545
566
  ]
546
567
  }
547
568
  ),
548
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
569
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
549
570
  PopoverContent,
550
571
  {
551
572
  align: "start",
552
573
  className: "w-auto rounded-none p-0 shadow-sm",
553
574
  children: [
554
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
575
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
555
576
  Calendar,
556
577
  __spreadProps(__spreadValues({
557
578
  captionLayout: "dropdown",
@@ -565,12 +586,12 @@ function DatePicker({
565
586
  )
566
587
  })
567
588
  ),
568
- showTimePicker ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "border-t border-border px-3 pb-3 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("label", { className: "mb-1.5 block text-xs font-medium text-muted-foreground", children: [
589
+ showTimePicker ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "border-t border-border px-3 pb-3 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("label", { className: "mb-1.5 block text-xs font-medium text-muted-foreground", children: [
569
590
  "Time",
570
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
571
- "input",
591
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
592
+ Input,
572
593
  {
573
- className: "mt-1.5 h-8 w-full rounded-none border border-input bg-transparent px-2 text-sm font-sans outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
594
+ className: "mt-1.5 h-8",
574
595
  onChange: handleTimeChange,
575
596
  type: "time",
576
597
  value: timeValue
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  DatePicker
3
- } from "../../chunk-5MEWU56Z.mjs";
4
- import "../../chunk-P6AM5V7O.mjs";
3
+ } from "../../chunk-DUJTAXMH.mjs";
5
4
  import "../../chunk-3GF7OVTP.mjs";
6
- import "../../chunk-2I5S2AMY.mjs";
5
+ import "../../chunk-OODBHKG7.mjs";
6
+ import "../../chunk-GYMYRIZP.mjs";
7
+ import "../../chunk-XREGSKX3.mjs";
7
8
  import "../../chunk-DBHJ5KC3.mjs";
8
9
  import "../../chunk-FEZKMUCF.mjs";
9
10
  import "../../chunk-QOJ2DQD6.mjs";
@@ -183,10 +183,10 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
183
183
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
184
184
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
185
185
  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",
186
- outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
186
+ 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",
187
187
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
188
188
  "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
189
- ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs dark:hover:bg-accent/50",
189
+ ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
190
190
  link: "text-primary underline-offset-4 hover:underline"
191
191
  },
192
192
  size: {
@@ -283,38 +283,65 @@ function DialogOverlay(_a) {
283
283
  }, props)
284
284
  );
285
285
  }
286
+ var DIALOG_MAX_WIDTHS = {
287
+ sm: "24rem",
288
+ md: "28rem",
289
+ lg: "32rem",
290
+ xl: "36rem",
291
+ "2xl": "42rem",
292
+ "3xl": "48rem",
293
+ "4xl": "56rem",
294
+ full: "100%"
295
+ };
296
+ var DIALOG_AUTO_MIN_WIDTH = "20rem";
286
297
  function DialogContent(_a) {
287
298
  var _b = _a, {
288
299
  className,
289
300
  children,
290
301
  showCloseButton = true,
291
- style
302
+ style,
303
+ container,
304
+ align = "center",
305
+ size = "lg",
306
+ minWidth
292
307
  } = _b, props = __objRest(_b, [
293
308
  "className",
294
309
  "children",
295
310
  "showCloseButton",
296
- "style"
311
+ "style",
312
+ "container",
313
+ "align",
314
+ "size",
315
+ "minWidth"
297
316
  ]);
298
317
  const themeVars = useThemeVars();
299
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(DialogPortal, { children: [
318
+ const isAuto = size === "auto";
319
+ const sizeStyle = isAuto ? { minWidth: minWidth != null ? minWidth : DIALOG_AUTO_MIN_WIDTH } : { maxWidth: DIALOG_MAX_WIDTHS[size] };
320
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(DialogPortal, { container: container != null ? container : void 0, children: [
300
321
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(DialogOverlay, { style: themeVars }),
301
322
  /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
302
323
  import_dialog.Dialog.Popup,
303
324
  __spreadProps(__spreadValues({
304
325
  className: cn(
305
- // WealthX: removed rounded-lg (sharp corners), shadow-lg (flat panels), foreground/50 scrim via DialogOverlay
306
- "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 duration-200 outline-none data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 sm:max-w-lg",
326
+ // WealthX: removed rounded-lg (sharp corners), shadow-lg (flat panels)
327
+ // max-w-[calc(100%-2rem)] acts as a viewport-edge guard on all sizes.
328
+ // Fixed max-width is applied via inline style (sizeStyle) to avoid
329
+ // Tailwind v4 class-scanning gaps with dynamic class lookups.
330
+ "fixed left-[50%] z-50 grid max-w-[calc(100%-2rem)] translate-x-[-50%] gap-4 border bg-background p-6 duration-200 outline-none data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95",
331
+ // "auto" → hug content (with min-width floor); fixed sizes → fill to max-width
332
+ isAuto ? "w-auto" : "w-full",
333
+ align === "center" ? "top-[50%] translate-y-[-50%]" : "top-4 translate-y-0",
307
334
  className
308
335
  ),
309
336
  "data-slot": "dialog-content",
310
- style: __spreadValues(__spreadValues({}, themeVars), style)
337
+ style: __spreadValues(__spreadValues(__spreadValues({}, themeVars), sizeStyle), style)
311
338
  }, props), {
312
339
  children: [
313
340
  children,
314
341
  showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
315
342
  import_dialog.Dialog.Close,
316
343
  {
317
- className: "absolute top-4 right-4 transition-colors hover:bg-foreground/5 focus:outline-hidden focus:ring-2 focus:ring-border focus:ring-offset-0 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
344
+ className: "absolute top-4 right-4 inline-flex size-7 items-center justify-center transition-colors hover:bg-foreground/5 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-border focus-visible:ring-offset-0 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
318
345
  "data-slot": "dialog-close",
319
346
  children: [
320
347
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react2.XIcon, {}),
@@ -367,6 +394,7 @@ function DialogFooter(_a) {
367
394
  import_dialog.Dialog.Close,
368
395
  {
369
396
  className: cn(buttonVariants({ variant: "outline" })),
397
+ type: "button",
370
398
  children: "Close"
371
399
  }
372
400
  ) : null
@@ -9,8 +9,8 @@ import {
9
9
  DialogPortal,
10
10
  DialogTitle,
11
11
  DialogTrigger
12
- } from "../../chunk-XIRTEFKH.mjs";
13
- import "../../chunk-2I5S2AMY.mjs";
12
+ } from "../../chunk-6DZEXFNB.mjs";
13
+ import "../../chunk-XREGSKX3.mjs";
14
14
  import "../../chunk-DBHJ5KC3.mjs";
15
15
  import "../../chunk-FEZKMUCF.mjs";
16
16
  import "../../chunk-QOJ2DQD6.mjs";
@@ -134,7 +134,7 @@ function CardHeader(_a) {
134
134
  "div",
135
135
  __spreadValues({
136
136
  className: cn(
137
- "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
137
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-center gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
138
138
  className
139
139
  ),
140
140
  "data-slot": "card-header"
@@ -298,10 +298,10 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
298
298
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
299
299
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
300
300
  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",
301
- outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
301
+ 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",
302
302
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
303
303
  "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
304
- ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs dark:hover:bg-accent/50",
304
+ ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
305
305
  link: "text-primary underline-offset-4 hover:underline"
306
306
  },
307
307
  size: {
@@ -454,7 +454,14 @@ function ChartPeriodButton({
454
454
 
455
455
  // src/components/ui/expense-bar-chart.tsx
456
456
  var import_jsx_runtime7 = require("react/jsx-runtime");
457
- import_chart.Chart.register(import_chart.CategoryScale, import_chart.LinearScale, import_chart.BarController, import_chart.BarElement, import_chart.Tooltip, import_chart.Legend);
457
+ import_chart.Chart.register(
458
+ import_chart.CategoryScale,
459
+ import_chart.LinearScale,
460
+ import_chart.BarController,
461
+ import_chart.BarElement,
462
+ import_chart.Tooltip,
463
+ import_chart.Legend
464
+ );
458
465
  function ExpenseBarChart({
459
466
  expenseData,
460
467
  title = "Expenses",
@@ -593,7 +600,7 @@ function ExpenseBarChart({
593
600
  style: { maxWidth: width, fontFamily },
594
601
  children: [
595
602
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
596
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
603
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-xs font-semibold uppercase tracking-wide", children: title }),
597
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)(
598
605
  ChartPeriodButton,
599
606
  {
@@ -1,11 +1,12 @@
1
1
  import {
2
2
  ExpenseBarChart
3
- } from "../../chunk-K3JYD4IU.mjs";
3
+ } from "../../chunk-5IS7G74I.mjs";
4
4
  import "../../chunk-D6ID6M4V.mjs";
5
- import "../../chunk-FZIXGLMV.mjs";
5
+ import "../../chunk-M3FV7LOK.mjs";
6
+ import "../../chunk-MN5NYQCL.mjs";
6
7
  import "../../chunk-NQPOYKAQ.mjs";
7
- import "../../chunk-CLIN5525.mjs";
8
- import "../../chunk-2I5S2AMY.mjs";
8
+ import "../../chunk-C7CQJNMR.mjs";
9
+ import "../../chunk-XREGSKX3.mjs";
9
10
  import "../../chunk-DBHJ5KC3.mjs";
10
11
  import "../../chunk-FEZKMUCF.mjs";
11
12
  import "../../chunk-QOJ2DQD6.mjs";
@@ -9,9 +9,9 @@ import {
9
9
  FieldSeparator,
10
10
  FieldSet,
11
11
  FieldTitle
12
- } from "../../chunk-LLVQKSU3.mjs";
13
- import "../../chunk-FH6QVUVZ.mjs";
12
+ } from "../../chunk-GD4BJDJR.mjs";
14
13
  import "../../chunk-NSLMILBT.mjs";
14
+ import "../../chunk-FH6QVUVZ.mjs";
15
15
  import "../../chunk-VLQZANBF.mjs";
16
16
  import "../../chunk-FWCSY2DS.mjs";
17
17
  export {