@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.
- package/.turbo/turbo-build.log +200 -156
- package/CHANGELOG.md +22 -0
- package/dist/{chunk-4Y6R4WEC.mjs → chunk-2A5RRQGG.mjs} +9 -22
- package/dist/{chunk-TS2ZX2VS.mjs → chunk-2UM72RJ7.mjs} +11 -15
- package/dist/{chunk-A56YQQHG.mjs → chunk-3NCUZIFP.mjs} +2 -2
- package/dist/chunk-3OYFOX3X.mjs +79 -0
- package/dist/{chunk-RP3SQYA3.mjs → chunk-3TTACBDP.mjs} +9 -4
- package/dist/chunk-4GAWMKMI.mjs +710 -0
- package/dist/{chunk-VGSESELX.mjs → chunk-5FQIKDKP.mjs} +5 -5
- package/dist/{chunk-K3JYD4IU.mjs → chunk-5IS7G74I.mjs} +11 -4
- package/dist/chunk-6AW4KJHE.mjs +235 -0
- package/dist/chunk-6CR5N2JW.mjs +302 -0
- package/dist/{chunk-XIRTEFKH.mjs → chunk-6DZEXFNB.mjs} +36 -8
- package/dist/chunk-6O6KD7CE.mjs +271 -0
- package/dist/chunk-7PV3IWCN.mjs +33 -0
- package/dist/{chunk-SPJ5KXW7.mjs → chunk-7S5AESZO.mjs} +5 -5
- package/dist/{chunk-RYCLWMZ7.mjs → chunk-ABFDMHOR.mjs} +9 -7
- package/dist/{chunk-SWGT756Z.mjs → chunk-AMQZRHEZ.mjs} +10 -4
- package/dist/{chunk-WAZD7NFU.mjs → chunk-BKNFWEH2.mjs} +6 -6
- package/dist/{chunk-CLIN5525.mjs → chunk-C7CQJNMR.mjs} +1 -1
- package/dist/{chunk-D4ILTPOG.mjs → chunk-CFMQP5QS.mjs} +5 -4
- package/dist/{chunk-VPBN3WOO.mjs → chunk-DGHAXJBN.mjs} +9 -7
- package/dist/chunk-DOEO3CDL.mjs +27 -0
- package/dist/{chunk-5MEWU56Z.mjs → chunk-DUJTAXMH.mjs} +11 -6
- package/dist/{chunk-GGM2UYGG.mjs → chunk-EBXQWIYG.mjs} +10 -4
- package/dist/chunk-EWRB4PAD.mjs +468 -0
- package/dist/{chunk-ZSHYDDRB.mjs → chunk-FAKPBKLT.mjs} +6 -2
- package/dist/chunk-FNQXOAYJ.mjs +169 -0
- package/dist/{chunk-A6AAWBPF.mjs → chunk-GHC7LLUX.mjs} +13 -4
- package/dist/chunk-HBZLGDIN.mjs +507 -0
- package/dist/{chunk-SIZMLSRU.mjs → chunk-HISNT2MG.mjs} +8 -6
- package/dist/{chunk-CGH4DRNG.mjs → chunk-HVY6KCCF.mjs} +10 -7
- package/dist/chunk-I3RZS7V2.mjs +136 -0
- package/dist/chunk-IAE3F7DR.mjs +1962 -0
- package/dist/{chunk-UT4KJR7V.mjs → chunk-IHMFS7NZ.mjs} +35 -74
- package/dist/{chunk-PCPLO5HT.mjs → chunk-IOJRDS6V.mjs} +96 -14
- package/dist/{chunk-LHYCMLVA.mjs → chunk-JKGDCQTZ.mjs} +11 -4
- package/dist/{chunk-H45TKD34.mjs → chunk-JMHR3YGZ.mjs} +1 -1
- package/dist/{chunk-4MN6UQHG.mjs → chunk-K5A5L6T2.mjs} +17 -39
- package/dist/chunk-LV35NGVG.mjs +272 -0
- package/dist/{chunk-FZIXGLMV.mjs → chunk-M3FV7LOK.mjs} +5 -12
- package/dist/{chunk-FMAXJ2SI.mjs → chunk-MBON7YRJ.mjs} +1 -1
- package/dist/chunk-MIZQHHUO.mjs +441 -0
- package/dist/chunk-MN5NYQCL.mjs +29 -0
- package/dist/chunk-NL3ZO62D.mjs +31 -0
- package/dist/{chunk-Q76O3RIQ.mjs → chunk-NMOI6CQD.mjs} +1 -1
- package/dist/{chunk-P6AM5V7O.mjs → chunk-OODBHKG7.mjs} +1 -1
- package/dist/chunk-PBL4OQV2.mjs +283 -0
- package/dist/{chunk-Y4QFWRNR.mjs → chunk-PU4YZQXV.mjs} +17 -18
- package/dist/chunk-QMY3AZJH.mjs +80 -0
- package/dist/{chunk-BL3DXM2X.mjs → chunk-QZ4RE6NA.mjs} +11 -4
- package/dist/{chunk-VACKZOMY.mjs → chunk-R3VSPKNP.mjs} +3 -3
- package/dist/{chunk-OPNQAVVH.mjs → chunk-RJI6GKVF.mjs} +8 -6
- package/dist/{chunk-WG6JGJXB.mjs → chunk-T4BJLT57.mjs} +1 -1
- package/dist/chunk-UMTOX62O.mjs +415 -0
- package/dist/{chunk-7MMXNK3C.mjs → chunk-VLARHE5V.mjs} +8 -6
- package/dist/{chunk-2I5S2AMY.mjs → chunk-XREGSKX3.mjs} +2 -2
- package/dist/{chunk-JNQORUPP.mjs → chunk-YJG55G2H.mjs} +14 -11
- package/dist/{chunk-ZRSDX6OW.mjs → chunk-ZC45IGZO.mjs} +33 -30
- package/dist/components/ui/add-column-modal.js +42 -14
- package/dist/components/ui/add-column-modal.mjs +5 -5
- package/dist/components/ui/add-lead-modal.js +42 -11
- package/dist/components/ui/add-lead-modal.mjs +3 -3
- package/dist/components/ui/advisor-card.js +497 -0
- package/dist/components/ui/advisor-card.mjs +13 -0
- package/dist/components/ui/ai-assistant-drawer.js +11 -10
- package/dist/components/ui/ai-assistant-drawer.mjs +3 -3
- package/dist/components/ui/alert-dialog.js +2 -2
- package/dist/components/ui/alert-dialog.mjs +2 -2
- package/dist/components/ui/appointment-action-dialogs.js +1160 -0
- package/dist/components/ui/appointment-action-dialogs.mjs +23 -0
- package/dist/components/ui/appointment-availability-settings.js +1590 -0
- package/dist/components/ui/appointment-availability-settings.mjs +23 -0
- package/dist/components/ui/appointment-book-dialog.js +1744 -0
- package/dist/components/ui/appointment-book-dialog.mjs +27 -0
- package/dist/components/ui/appointment-calendar-view.js +833 -0
- package/dist/components/ui/appointment-calendar-view.mjs +14 -0
- package/dist/components/ui/appointment-detail-sheet.js +1517 -0
- package/dist/components/ui/appointment-detail-sheet.mjs +24 -0
- package/dist/components/ui/appointment-gmail-connect.js +467 -0
- package/dist/components/ui/appointment-gmail-connect.mjs +14 -0
- package/dist/components/ui/appointment-mini-card.js +345 -0
- package/dist/components/ui/appointment-mini-card.mjs +11 -0
- package/dist/components/ui/appointment-time-slot-picker.js +311 -0
- package/dist/components/ui/appointment-time-slot-picker.mjs +13 -0
- package/dist/components/ui/appointment-upcoming-card.js +1268 -0
- package/dist/components/ui/appointment-upcoming-card.mjs +21 -0
- package/dist/components/ui/backoffice-alert-history-chart.js +11 -5
- package/dist/components/ui/backoffice-alert-history-chart.mjs +5 -4
- package/dist/components/ui/backoffice-alerts-chart.js +786 -0
- package/dist/components/ui/backoffice-alerts-chart.mjs +19 -0
- package/dist/components/ui/backoffice-connections-chart.js +817 -0
- package/dist/components/ui/backoffice-connections-chart.mjs +19 -0
- package/dist/components/ui/backoffice-contact-history-chart.js +11 -5
- package/dist/components/ui/backoffice-contact-history-chart.mjs +5 -4
- package/dist/components/ui/badge.js +6 -6
- package/dist/components/ui/badge.mjs +1 -1
- package/dist/components/ui/borrowing-capacity-line-chart.js +30 -21
- package/dist/components/ui/borrowing-capacity-line-chart.mjs +5 -4
- package/dist/components/ui/button.js +2 -2
- package/dist/components/ui/button.mjs +1 -1
- package/dist/components/ui/calendar.js +2 -2
- package/dist/components/ui/calendar.mjs +2 -2
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/card.mjs +1 -1
- package/dist/components/ui/cash-balance-line-chart.js +31 -23
- package/dist/components/ui/cash-balance-line-chart.mjs +5 -4
- package/dist/components/ui/cashflow-bar-chart.js +12 -5
- package/dist/components/ui/cashflow-bar-chart.mjs +5 -4
- package/dist/components/ui/chip.js +97 -18
- package/dist/components/ui/chip.mjs +3 -2
- package/dist/components/ui/color-picker.js +158 -28
- package/dist/components/ui/color-picker.mjs +3 -1
- package/dist/components/ui/data-table.js +140 -119
- package/dist/components/ui/data-table.mjs +3 -2
- package/dist/components/ui/date-picker.js +48 -27
- package/dist/components/ui/date-picker.mjs +4 -3
- package/dist/components/ui/dialog.js +37 -9
- package/dist/components/ui/dialog.mjs +2 -2
- package/dist/components/ui/expense-bar-chart.js +12 -5
- package/dist/components/ui/expense-bar-chart.mjs +5 -4
- package/dist/components/ui/field.mjs +2 -2
- package/dist/components/ui/financial-cards.js +322 -155
- package/dist/components/ui/financial-cards.mjs +5 -3
- package/dist/components/ui/financial-drawers.js +2 -2
- package/dist/components/ui/financial-drawers.mjs +3 -3
- package/dist/components/ui/financial-sections.js +14 -10
- package/dist/components/ui/financial-sections.mjs +6 -5
- package/dist/components/ui/income-bar-chart.js +12 -5
- package/dist/components/ui/income-bar-chart.mjs +5 -4
- package/dist/components/ui/input-group.js +2 -2
- package/dist/components/ui/input-group.mjs +2 -2
- package/dist/components/ui/kanban-column.js +52 -44
- package/dist/components/ui/kanban-column.mjs +7 -5
- package/dist/components/ui/opportunity-card.js +52 -44
- package/dist/components/ui/opportunity-card.mjs +6 -4
- package/dist/components/ui/opportunity-edit-modals.js +1367 -1263
- package/dist/components/ui/opportunity-edit-modals.mjs +8 -8
- package/dist/components/ui/opportunity-summary-tab.js +2744 -2157
- package/dist/components/ui/opportunity-summary-tab.mjs +14 -14
- package/dist/components/ui/page-header.js +92 -0
- package/dist/components/ui/page-header.mjs +8 -0
- package/dist/components/ui/page-top-bar.js +88 -0
- package/dist/components/ui/page-top-bar.mjs +8 -0
- package/dist/components/ui/pagination.js +303 -19
- package/dist/components/ui/pagination.mjs +11 -4
- package/dist/components/ui/pipeline-board.js +205 -191
- package/dist/components/ui/pipeline-board.mjs +9 -7
- package/dist/components/ui/pipeline-dialogs.js +114 -65
- package/dist/components/ui/pipeline-dialogs.mjs +7 -6
- package/dist/components/ui/pipeline-primitives.js +6 -6
- package/dist/components/ui/pipeline-primitives.mjs +2 -2
- package/dist/components/ui/property-cashflow-doughnut-chart.js +14 -12
- package/dist/components/ui/property-cashflow-doughnut-chart.mjs +5 -4
- package/dist/components/ui/property-debt-equity-doughnut-chart.js +14 -12
- package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +5 -4
- package/dist/components/ui/property-mobile-estimate-line-chart.js +16 -14
- package/dist/components/ui/property-mobile-estimate-line-chart.mjs +5 -4
- package/dist/components/ui/sidebar-nav.js +234 -95
- package/dist/components/ui/sidebar-nav.mjs +4 -1
- package/dist/components/ui/stage-timeline.js +6 -6
- package/dist/components/ui/stage-timeline.mjs +3 -3
- package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +18 -16
- package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +5 -4
- package/dist/components/ui/transactions-income-expense-bar-chart.js +28 -12
- package/dist/components/ui/transactions-income-expense-bar-chart.mjs +5 -4
- package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +18 -16
- package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +5 -4
- package/dist/index.js +12899 -9343
- package/dist/index.mjs +256 -190
- package/dist/styles.css +1 -1
- package/package.json +71 -1
- package/src/components/index.tsx +114 -9
- package/src/components/ui/add-column-modal.tsx +7 -7
- package/src/components/ui/add-lead-modal.tsx +6 -3
- package/src/components/ui/advisor-card.tsx +227 -0
- package/src/components/ui/ai-assistant-drawer.tsx +4 -3
- package/src/components/ui/appointment-action-dialogs.tsx +297 -0
- package/src/components/ui/appointment-availability-settings.tsx +645 -0
- package/src/components/ui/appointment-book-dialog.tsx +618 -0
- package/src/components/ui/appointment-calendar-view.tsx +510 -0
- package/src/components/ui/appointment-detail-sheet.tsx +415 -0
- package/src/components/ui/appointment-gmail-connect.tsx +188 -0
- package/src/components/ui/appointment-mini-card.tsx +104 -0
- package/src/components/ui/appointment-time-slot-picker.tsx +123 -0
- package/src/components/ui/appointment-upcoming-card.tsx +635 -0
- package/src/components/ui/backoffice-alert-history-chart.tsx +10 -2
- package/src/components/ui/backoffice-alerts-chart.tsx +312 -0
- package/src/components/ui/backoffice-connections-chart.tsx +339 -0
- package/src/components/ui/backoffice-contact-history-chart.tsx +10 -2
- package/src/components/ui/badge.tsx +12 -6
- package/src/components/ui/borrowing-capacity-line-chart.tsx +4 -11
- package/src/components/ui/button.tsx +2 -2
- package/src/components/ui/card.tsx +1 -1
- package/src/components/ui/cash-balance-line-chart.tsx +4 -23
- package/src/components/ui/cashflow-bar-chart.tsx +9 -2
- package/src/components/ui/chart-shared.tsx +4 -11
- package/src/components/ui/chip.tsx +23 -19
- package/src/components/ui/color-picker.tsx +4 -2
- package/src/components/ui/data-table.tsx +28 -74
- package/src/components/ui/date-picker.tsx +42 -37
- package/src/components/ui/dialog.tsx +72 -6
- package/src/components/ui/expense-bar-chart.tsx +11 -2
- package/src/components/ui/financial-cards.tsx +99 -10
- package/src/components/ui/income-bar-chart.tsx +11 -2
- package/src/components/ui/opportunity-card.tsx +10 -39
- package/src/components/ui/opportunity-edit-modals.tsx +98 -36
- package/src/components/ui/opportunity-summary-tab.tsx +548 -232
- package/src/components/ui/page-header.tsx +57 -0
- package/src/components/ui/page-top-bar.tsx +48 -0
- package/src/components/ui/pagination.tsx +171 -22
- package/src/components/ui/pipeline-board.tsx +12 -5
- package/src/components/ui/property-cashflow-doughnut-chart.tsx +3 -1
- package/src/components/ui/property-debt-equity-doughnut-chart.tsx +3 -1
- package/src/components/ui/property-mobile-estimate-line-chart.tsx +3 -1
- package/src/components/ui/sidebar-nav.tsx +36 -37
- package/src/components/ui/transactions-expense-categories-doughnut-chart.tsx +3 -1
- package/src/components/ui/transactions-income-expense-bar-chart.tsx +12 -9
- package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +3 -1
- package/src/lib/format-currency.ts +44 -0
- package/src/lib/format-date.ts +50 -0
- package/src/lib/opportunity-constants.ts +12 -0
- package/src/styles/globals.css +17 -15
- package/src/styles/styles-css.ts +1 -1
- package/tsup.config.ts +14 -0
- package/dist/chunk-S4QRUQNW.mjs +0 -475
- package/dist/chunk-URGMJAE3.mjs +0 -1885
- package/dist/chunk-WNGWBVLV.mjs +0 -148
- 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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
465
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
447
466
|
function Popover(_a) {
|
|
448
467
|
var props = __objRest(_a, []);
|
|
449
|
-
return /* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
526
|
-
/* @__PURE__ */ (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
571
|
-
|
|
591
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
592
|
+
Input,
|
|
572
593
|
{
|
|
573
|
-
className: "mt-1.5 h-8
|
|
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-
|
|
4
|
-
import "../../chunk-P6AM5V7O.mjs";
|
|
3
|
+
} from "../../chunk-DUJTAXMH.mjs";
|
|
5
4
|
import "../../chunk-3GF7OVTP.mjs";
|
|
6
|
-
import "../../chunk-
|
|
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
|
-
|
|
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)
|
|
306
|
-
|
|
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-
|
|
13
|
-
import "../../chunk-
|
|
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-
|
|
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(
|
|
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-
|
|
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-
|
|
3
|
+
} from "../../chunk-5IS7G74I.mjs";
|
|
4
4
|
import "../../chunk-D6ID6M4V.mjs";
|
|
5
|
-
import "../../chunk-
|
|
5
|
+
import "../../chunk-M3FV7LOK.mjs";
|
|
6
|
+
import "../../chunk-MN5NYQCL.mjs";
|
|
6
7
|
import "../../chunk-NQPOYKAQ.mjs";
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
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-
|
|
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 {
|