@wealthx/shadcn 1.1.0 → 1.2.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 +235 -154
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-6OJF6XRN.mjs → chunk-24FUO7TD.mjs} +4 -8
- package/dist/{chunk-4AJ5HWHD.mjs → chunk-2I5S2AMY.mjs} +3 -3
- package/dist/chunk-2SF672SZ.mjs +161 -0
- package/dist/{chunk-GPRJQ24C.mjs → chunk-34NWQURD.mjs} +2 -2
- package/dist/{chunk-MQ72DIBH.mjs → chunk-3GF7OVTP.mjs} +14 -5
- package/dist/chunk-3WMX6KWS.mjs +245 -0
- package/dist/{chunk-PMKODV6M.mjs → chunk-462HMNO4.mjs} +6 -10
- package/dist/chunk-4CX4SBRO.mjs +153 -0
- package/dist/chunk-4MN6UQHG.mjs +443 -0
- package/dist/{chunk-GLW2UO6O.mjs → chunk-5QQVZTVZ.mjs} +82 -61
- package/dist/{chunk-BGP2N52Z.mjs → chunk-66MI7Q4B.mjs} +5 -5
- package/dist/chunk-6FCGKSZX.mjs +268 -0
- package/dist/{chunk-CGOKTPXU.mjs → chunk-6JQFUE5I.mjs} +20 -23
- package/dist/{chunk-Z3MK2KKZ.mjs → chunk-7DHU4VGG.mjs} +7 -3
- package/dist/{chunk-VZ2NR7L3.mjs → chunk-7PYJD5JI.mjs} +35 -27
- package/dist/{chunk-JU2RUWHF.mjs → chunk-7XJHLGUV.mjs} +1 -1
- package/dist/{chunk-BMFN37JH.mjs → chunk-7YAU5CY6.mjs} +1 -1
- package/dist/chunk-A56YQQHG.mjs +402 -0
- package/dist/chunk-AH52LG6N.mjs +315 -0
- package/dist/{chunk-SLWCCURD.mjs → chunk-CLIN5525.mjs} +8 -4
- package/dist/{chunk-3VQNJ235.mjs → chunk-CSDO6VBW.mjs} +7 -0
- package/dist/chunk-D4ILTPOG.mjs +293 -0
- package/dist/{chunk-HS7TFG7V.mjs → chunk-D6ID6M4V.mjs} +1 -1
- package/dist/chunk-DOH3EHX7.mjs +378 -0
- package/dist/{chunk-MJIEMGRD.mjs → chunk-EFRENWEJ.mjs} +9 -17
- package/dist/{chunk-YBXCIF5Q.mjs → chunk-ERGGHC2V.mjs} +36 -49
- package/dist/{chunk-OXQQNQZI.mjs → chunk-FEZKMUCF.mjs} +10 -1
- package/dist/{chunk-55CEW76V.mjs → chunk-FH6QVUVZ.mjs} +1 -1
- package/dist/chunk-FMAXJ2SI.mjs +71 -0
- package/dist/chunk-FZIXGLMV.mjs +173 -0
- package/dist/{chunk-DS2AMHN2.mjs → chunk-GYMYRIZP.mjs} +2 -2
- package/dist/{chunk-KQDD5MU3.mjs → chunk-H45TKD34.mjs} +5 -5
- package/dist/{chunk-BBJBJSXQ.mjs → chunk-J5UICVJS.mjs} +1 -1
- package/dist/{chunk-RL772EH7.mjs → chunk-JHJHG4GO.mjs} +4 -12
- package/dist/{chunk-RN67642N.mjs → chunk-KMCGSZTX.mjs} +47 -41
- package/dist/{chunk-FHNT55I5.mjs → chunk-KUDCQ4FI.mjs} +4 -4
- package/dist/chunk-LE6YFY6D.mjs +209 -0
- package/dist/{chunk-NLLKTU4B.mjs → chunk-LLVQKSU3.mjs} +21 -17
- package/dist/{chunk-KKHTJNMM.mjs → chunk-MARPPFOJ.mjs} +8 -4
- package/dist/{chunk-6AFMNC42.mjs → chunk-N2PT566P.mjs} +15 -11
- package/dist/chunk-NLCKVHWB.mjs +161 -0
- package/dist/{chunk-YN5SYTOO.mjs → chunk-NQPOYKAQ.mjs} +9 -5
- package/dist/{chunk-ZZV5JVNW.mjs → chunk-NSLMILBT.mjs} +3 -7
- package/dist/chunk-NXA3CZ7A.mjs +248 -0
- package/dist/chunk-OGOYQ7BG.mjs +150 -0
- package/dist/{chunk-3NQGYJEZ.mjs → chunk-P6AM5V7O.mjs} +10 -18
- package/dist/{chunk-CZ3BW5GL.mjs → chunk-P76HMUI6.mjs} +5 -11
- package/dist/chunk-PCPLO5HT.mjs +671 -0
- package/dist/chunk-PG6K5XEC.mjs +475 -0
- package/dist/{chunk-5JGQAAQV.mjs → chunk-PJHPSRYD.mjs} +84 -62
- package/dist/{chunk-DDPA2XXS.mjs → chunk-PMB3A7V3.mjs} +2 -2
- package/dist/chunk-PR6V5XKM.mjs +209 -0
- package/dist/{chunk-46OFHMQA.mjs → chunk-Q76O3RIQ.mjs} +10 -6
- package/dist/chunk-QVKWW6KE.mjs +272 -0
- package/dist/chunk-RGU7HOEC.mjs +140 -0
- package/dist/{chunk-JF4PHPD5.mjs → chunk-RGVKLTLH.mjs} +4 -4
- package/dist/{chunk-VG6UF6UT.mjs → chunk-RP3SQYA3.mjs} +2 -2
- package/dist/chunk-RRBS6D63.mjs +163 -0
- package/dist/{chunk-UEL4RD5P.mjs → chunk-SMQ3DG25.mjs} +80 -67
- package/dist/chunk-SPJ5KXW7.mjs +199 -0
- package/dist/chunk-SYOD63OZ.mjs +225 -0
- package/dist/chunk-UFYSFDER.mjs +42 -0
- package/dist/chunk-VACKZOMY.mjs +190 -0
- package/dist/chunk-VLQZANBF.mjs +42 -0
- package/dist/chunk-WA6O6EUR.mjs +1885 -0
- package/dist/{chunk-E3K6O4FZ.mjs → chunk-WAZD7NFU.mjs} +5 -2
- package/dist/chunk-WG6JGJXB.mjs +165 -0
- package/dist/{chunk-I64K754C.mjs → chunk-WNGWBVLV.mjs} +2 -2
- package/dist/{chunk-3U7SD3MS.mjs → chunk-WOEHFRGB.mjs} +3 -3
- package/dist/{chunk-DKZRJOMF.mjs → chunk-XIRTEFKH.mjs} +12 -12
- package/dist/chunk-Y6DWJSKZ.mjs +79 -0
- package/dist/chunk-YKPROFLB.mjs +161 -0
- package/dist/{chunk-CJ46PDXE.mjs → chunk-ZRO5JO3H.mjs} +106 -66
- package/dist/{chunk-VYMHBV6D.mjs → chunk-ZU4NV6RG.mjs} +5 -3
- package/dist/components/ui/accordion.js +40 -4
- package/dist/components/ui/accordion.mjs +2 -2
- package/dist/components/ui/add-column-modal.js +789 -0
- package/dist/components/ui/add-column-modal.mjs +17 -0
- package/dist/components/ui/add-lead-modal.js +647 -0
- package/dist/components/ui/add-lead-modal.mjs +16 -0
- package/dist/components/ui/ai-assistant-drawer.js +686 -0
- package/dist/components/ui/ai-assistant-drawer.mjs +16 -0
- package/dist/components/ui/alert-dialog.js +37 -5
- package/dist/components/ui/alert-dialog.mjs +4 -4
- package/dist/components/ui/alert.js +37 -11
- package/dist/components/ui/alert.mjs +2 -2
- package/dist/components/ui/avatar.js +36 -8
- package/dist/components/ui/avatar.mjs +2 -2
- package/dist/components/ui/backoffice-alert-history-chart.js +624 -0
- package/dist/components/ui/backoffice-alert-history-chart.mjs +16 -0
- package/dist/components/ui/backoffice-contact-history-chart.js +687 -0
- package/dist/components/ui/backoffice-contact-history-chart.mjs +16 -0
- package/dist/components/ui/badge.js +37 -2
- package/dist/components/ui/badge.mjs +2 -2
- package/dist/components/ui/borrowing-capacity-line-chart.js +639 -0
- package/dist/components/ui/borrowing-capacity-line-chart.mjs +16 -0
- package/dist/components/ui/button.js +35 -3
- package/dist/components/ui/button.mjs +2 -2
- package/dist/components/ui/calendar.js +43 -19
- package/dist/components/ui/calendar.mjs +3 -3
- package/dist/components/ui/card.js +40 -4
- package/dist/components/ui/card.mjs +2 -2
- package/dist/components/ui/cash-balance-line-chart.js +627 -0
- package/dist/components/ui/cash-balance-line-chart.mjs +16 -0
- package/dist/components/ui/cashflow-bar-chart.js +123 -69
- package/dist/components/ui/cashflow-bar-chart.mjs +8 -8
- package/dist/components/ui/checkbox.js +36 -5
- package/dist/components/ui/checkbox.mjs +2 -3
- package/dist/components/ui/chip.js +37 -2
- package/dist/components/ui/chip.mjs +3 -3
- package/dist/components/ui/combobox.js +68 -49
- package/dist/components/ui/combobox.mjs +2 -2
- package/dist/components/ui/data-table.js +160 -88
- package/dist/components/ui/data-table.mjs +10 -11
- package/dist/components/ui/date-picker.js +44 -20
- package/dist/components/ui/date-picker.mjs +6 -7
- package/dist/components/ui/dialog.js +44 -12
- package/dist/components/ui/dialog.mjs +4 -4
- package/dist/components/ui/drawer.js +46 -10
- package/dist/components/ui/drawer.mjs +3 -3
- package/dist/components/ui/dropdown-menu.js +40 -16
- package/dist/components/ui/dropdown-menu.mjs +3 -3
- package/dist/components/ui/empty.js +41 -5
- package/dist/components/ui/empty.mjs +2 -2
- package/dist/components/ui/expense-bar-chart.js +165 -66
- package/dist/components/ui/expense-bar-chart.mjs +8 -8
- package/dist/components/ui/field.js +53 -21
- package/dist/components/ui/field.mjs +4 -4
- package/dist/components/ui/financial-cards.js +1002 -0
- package/dist/components/ui/financial-cards.mjs +24 -0
- package/dist/components/ui/financial-drawers.js +637 -0
- package/dist/components/ui/financial-drawers.mjs +17 -0
- package/dist/components/ui/financial-primitives.js +218 -0
- package/dist/components/ui/financial-primitives.mjs +22 -0
- package/dist/components/ui/financial-sections.js +1422 -0
- package/dist/components/ui/financial-sections.mjs +30 -0
- package/dist/components/ui/form-primitives.js +682 -0
- package/dist/components/ui/form-primitives.mjs +19 -0
- package/dist/components/ui/income-bar-chart.js +163 -65
- package/dist/components/ui/income-bar-chart.mjs +8 -8
- package/dist/components/ui/input-group.js +43 -7
- package/dist/components/ui/input-group.mjs +5 -5
- package/dist/components/ui/input-otp.js +39 -3
- package/dist/components/ui/input-otp.mjs +2 -2
- package/dist/components/ui/input.js +34 -2
- package/dist/components/ui/input.mjs +2 -2
- package/dist/components/ui/kanban-column.js +1143 -0
- package/dist/components/ui/kanban-column.mjs +20 -0
- package/dist/components/ui/label.js +35 -7
- package/dist/components/ui/label.mjs +2 -2
- package/dist/components/ui/opportunity-card.js +960 -0
- package/dist/components/ui/opportunity-card.mjs +20 -0
- package/dist/components/ui/opportunity-edit-modals.js +3360 -0
- package/dist/components/ui/opportunity-edit-modals.mjs +37 -0
- package/dist/components/ui/opportunity-summary-tab.js +4365 -0
- package/dist/components/ui/opportunity-summary-tab.mjs +34 -0
- package/dist/components/ui/pagination.js +35 -3
- package/dist/components/ui/pagination.mjs +3 -3
- package/dist/components/ui/pipeline-alerts.js +103 -0
- package/dist/components/ui/pipeline-alerts.mjs +8 -0
- package/dist/components/ui/pipeline-board.js +1408 -0
- package/dist/components/ui/pipeline-board.mjs +24 -0
- package/dist/components/ui/pipeline-chart.js +216 -0
- package/dist/components/ui/pipeline-chart.mjs +10 -0
- package/dist/components/ui/pipeline-dialogs.js +1183 -0
- package/dist/components/ui/pipeline-dialogs.mjs +23 -0
- package/dist/components/ui/pipeline-primitives.js +300 -0
- package/dist/components/ui/pipeline-primitives.mjs +11 -0
- package/dist/components/ui/popover.js +45 -4
- package/dist/components/ui/popover.mjs +3 -3
- package/dist/components/ui/progress.js +33 -1
- package/dist/components/ui/progress.mjs +2 -2
- package/dist/components/ui/property-cashflow-doughnut-chart.js +523 -0
- package/dist/components/ui/property-cashflow-doughnut-chart.mjs +16 -0
- package/dist/components/ui/property-debt-equity-doughnut-chart.js +521 -0
- package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +16 -0
- package/dist/components/ui/property-mobile-estimate-line-chart.js +682 -0
- package/dist/components/ui/property-mobile-estimate-line-chart.mjs +16 -0
- package/dist/components/ui/radio-group.js +33 -1
- package/dist/components/ui/radio-group.mjs +2 -2
- package/dist/components/ui/select.js +66 -26
- package/dist/components/ui/select.mjs +3 -3
- package/dist/components/ui/separator.js +33 -1
- package/dist/components/ui/separator.mjs +2 -2
- package/dist/components/ui/sheet.js +37 -9
- package/dist/components/ui/sheet.mjs +3 -3
- package/dist/components/ui/skeleton.js +33 -1
- package/dist/components/ui/skeleton.mjs +2 -2
- package/dist/components/ui/slider.js +86 -102
- package/dist/components/ui/slider.mjs +2 -2
- package/dist/components/ui/spinner.js +33 -1
- package/dist/components/ui/spinner.mjs +2 -2
- package/dist/components/ui/stage-timeline.js +579 -0
- package/dist/components/ui/stage-timeline.mjs +15 -0
- package/dist/components/ui/switch.js +37 -4
- package/dist/components/ui/switch.mjs +2 -3
- package/dist/components/ui/table.js +37 -5
- package/dist/components/ui/table.mjs +2 -2
- package/dist/components/ui/tabs.js +36 -12
- package/dist/components/ui/tabs.mjs +2 -2
- package/dist/components/ui/textarea.js +34 -2
- package/dist/components/ui/textarea.mjs +2 -2
- package/dist/components/ui/toggle-group.js +35 -4
- package/dist/components/ui/toggle-group.mjs +3 -4
- package/dist/components/ui/toggle.js +35 -4
- package/dist/components/ui/toggle.mjs +2 -3
- package/dist/components/ui/tooltip.js +51 -22
- package/dist/components/ui/tooltip.mjs +3 -3
- package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +528 -0
- package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +16 -0
- package/dist/components/ui/transactions-income-expense-bar-chart.js +76 -38
- package/dist/components/ui/transactions-income-expense-bar-chart.mjs +8 -8
- package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +528 -0
- package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +16 -0
- package/dist/index.js +11616 -3831
- package/dist/index.mjs +333 -161
- package/dist/lib/theme-provider.js +10 -1
- package/dist/lib/theme-provider.mjs +1 -1
- package/dist/lib/typography.js +8 -0
- package/dist/lib/typography.mjs +3 -1
- package/dist/lib/utils.js +33 -1
- package/dist/lib/utils.mjs +1 -1
- package/dist/styles.css +1 -1
- package/package.json +140 -5
- package/src/components/index.tsx +296 -42
- package/src/components/ui/accordion.tsx +6 -3
- package/src/components/ui/add-column-modal.tsx +339 -0
- package/src/components/ui/add-lead-modal.tsx +290 -0
- package/src/components/ui/ai-assistant-drawer.tsx +408 -0
- package/src/components/ui/alert-dialog.tsx +80 -54
- package/src/components/ui/alert.tsx +28 -28
- package/src/components/ui/avatar.tsx +30 -29
- package/src/components/ui/backoffice-alert-history-chart.tsx +260 -0
- package/src/components/ui/backoffice-contact-history-chart.tsx +325 -0
- package/src/components/ui/badge.tsx +17 -15
- package/src/components/ui/borrowing-capacity-line-chart.tsx +357 -0
- package/src/components/ui/button.tsx +30 -27
- package/src/components/ui/calendar.tsx +53 -67
- package/src/components/ui/card.tsx +27 -24
- package/src/components/ui/cash-balance-line-chart.tsx +302 -0
- package/src/components/ui/cashflow-bar-chart.tsx +104 -77
- package/src/components/ui/chart-shared.tsx +176 -15
- package/src/components/ui/checkbox.tsx +30 -26
- package/src/components/ui/combobox.tsx +78 -72
- package/src/components/ui/data-table.tsx +160 -99
- package/src/components/ui/date-picker.tsx +0 -2
- package/src/components/ui/dialog.tsx +70 -60
- package/src/components/ui/drawer.tsx +57 -48
- package/src/components/ui/dropdown-menu.tsx +90 -82
- package/src/components/ui/empty.tsx +31 -27
- package/src/components/ui/expense-bar-chart.tsx +83 -65
- package/src/components/ui/field.tsx +70 -62
- package/src/components/ui/financial-cards.tsx +830 -0
- package/src/components/ui/financial-drawers.tsx +339 -0
- package/src/components/ui/financial-primitives.tsx +331 -0
- package/src/components/ui/financial-sections.tsx +672 -0
- package/src/components/ui/form-primitives.tsx +536 -0
- package/src/components/ui/income-bar-chart.tsx +79 -60
- package/src/components/ui/input-group.tsx +41 -34
- package/src/components/ui/input-otp.tsx +29 -24
- package/src/components/ui/input.tsx +8 -8
- package/src/components/ui/kanban-column.tsx +333 -0
- package/src/components/ui/label.tsx +9 -12
- package/src/components/ui/opportunity-card.tsx +616 -0
- package/src/components/ui/opportunity-edit-modals.tsx +2528 -0
- package/src/components/ui/opportunity-summary-tab.tsx +579 -0
- package/src/components/ui/pipeline-alerts.tsx +74 -0
- package/src/components/ui/pipeline-board.tsx +268 -0
- package/src/components/ui/pipeline-chart.tsx +173 -0
- package/src/components/ui/pipeline-dialogs.tsx +303 -0
- package/src/components/ui/pipeline-primitives.tsx +108 -0
- package/src/components/ui/popover.tsx +41 -36
- package/src/components/ui/property-cashflow-doughnut-chart.tsx +188 -0
- package/src/components/ui/property-debt-equity-doughnut-chart.tsx +185 -0
- package/src/components/ui/property-mobile-estimate-line-chart.tsx +393 -0
- package/src/components/ui/select.tsx +65 -52
- package/src/components/ui/sheet.tsx +55 -52
- package/src/components/ui/slider.tsx +54 -77
- package/src/components/ui/stage-timeline.tsx +205 -0
- package/src/components/ui/switch.tsx +42 -29
- package/src/components/ui/table.tsx +28 -28
- package/src/components/ui/tabs.tsx +22 -28
- package/src/components/ui/textarea.tsx +8 -8
- package/src/components/ui/toggle-group.tsx +0 -2
- package/src/components/ui/toggle.tsx +13 -15
- package/src/components/ui/tooltip.tsx +30 -28
- package/src/components/ui/transactions-expense-categories-doughnut-chart.tsx +191 -0
- package/src/components/ui/transactions-income-expense-bar-chart.tsx +45 -38
- package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +191 -0
- package/src/lib/theme-provider.tsx +10 -0
- package/src/lib/typography.ts +9 -0
- package/src/lib/utils.ts +41 -3
- package/src/styles/globals.css +371 -124
- package/src/styles/styles-css.ts +1 -1
- package/tsup.config.ts +27 -0
- package/dist/chunk-3EQP72AW.mjs +0 -58
- package/dist/chunk-K74JRTJR.mjs +0 -105
- package/dist/chunk-V7CNWJT3.mjs +0 -10
|
@@ -77,8 +77,40 @@ function useThemeVars() {
|
|
|
77
77
|
// src/lib/utils.ts
|
|
78
78
|
var import_clsx = require("clsx");
|
|
79
79
|
var import_tailwind_merge = require("tailwind-merge");
|
|
80
|
+
var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
|
|
81
|
+
extend: {
|
|
82
|
+
classGroups: {
|
|
83
|
+
"font-size": [
|
|
84
|
+
{
|
|
85
|
+
text: [
|
|
86
|
+
"display-large",
|
|
87
|
+
"display-medium",
|
|
88
|
+
"display-small",
|
|
89
|
+
"h1",
|
|
90
|
+
"h2",
|
|
91
|
+
"h3",
|
|
92
|
+
"h4",
|
|
93
|
+
"h5",
|
|
94
|
+
"h6",
|
|
95
|
+
"body-large",
|
|
96
|
+
"body-medium",
|
|
97
|
+
"body-small",
|
|
98
|
+
"label-large",
|
|
99
|
+
"label-medium",
|
|
100
|
+
"label-small",
|
|
101
|
+
"button",
|
|
102
|
+
"button-xs",
|
|
103
|
+
"caption",
|
|
104
|
+
"overline",
|
|
105
|
+
"code"
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
80
112
|
function cn(...inputs) {
|
|
81
|
-
return
|
|
113
|
+
return twMerge((0, import_clsx.clsx)(inputs));
|
|
82
114
|
}
|
|
83
115
|
|
|
84
116
|
// src/components/ui/card.tsx
|
|
@@ -114,7 +146,7 @@ function CardTitle(_a) {
|
|
|
114
146
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
115
147
|
"div",
|
|
116
148
|
__spreadValues({
|
|
117
|
-
className: cn("
|
|
149
|
+
className: cn("text-label-large", className),
|
|
118
150
|
"data-slot": "card-title"
|
|
119
151
|
}, props)
|
|
120
152
|
);
|
|
@@ -183,7 +215,7 @@ function EmptyDescription(_a) {
|
|
|
183
215
|
"div",
|
|
184
216
|
__spreadValues({
|
|
185
217
|
className: cn(
|
|
186
|
-
"text-
|
|
218
|
+
"text-body-small leading-relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
187
219
|
className
|
|
188
220
|
),
|
|
189
221
|
"data-slot": "empty-description"
|
|
@@ -259,7 +291,7 @@ Slot.displayName = "Slot";
|
|
|
259
291
|
// src/components/ui/button.tsx
|
|
260
292
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
261
293
|
var buttonVariants = (0, import_class_variance_authority2.cva)(
|
|
262
|
-
"inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-
|
|
294
|
+
"inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-button whitespace-nowrap transition-all active:scale-[0.98] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
263
295
|
{
|
|
264
296
|
variants: {
|
|
265
297
|
variant: {
|
|
@@ -274,7 +306,7 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
|
|
|
274
306
|
},
|
|
275
307
|
size: {
|
|
276
308
|
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
277
|
-
xs: "h-6 gap-1 px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
309
|
+
xs: "h-6 gap-1 px-2 text-button-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
278
310
|
sm: "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
279
311
|
lg: "h-10 px-6 has-[>svg]:px-4",
|
|
280
312
|
icon: "size-9",
|
|
@@ -340,6 +372,8 @@ function hexToRgba(hex, alpha) {
|
|
|
340
372
|
const b = parseInt(full.slice(4, 6), 16);
|
|
341
373
|
return `rgba(${r},${g},${b},${alpha})`;
|
|
342
374
|
}
|
|
375
|
+
var FALLBACK_PRIMARY = "#33FF99";
|
|
376
|
+
var FALLBACK_SECONDARY = "#162029";
|
|
343
377
|
var FALLBACK_TICK = "#9EAAB5";
|
|
344
378
|
function formatTooltipDate(iso, granularity) {
|
|
345
379
|
const d = new Date(iso);
|
|
@@ -351,18 +385,32 @@ function formatTooltipDate(iso, granularity) {
|
|
|
351
385
|
function ChartPeriodButton({
|
|
352
386
|
period,
|
|
353
387
|
active,
|
|
354
|
-
onClick
|
|
388
|
+
onClick,
|
|
389
|
+
unit = "M"
|
|
355
390
|
}) {
|
|
356
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
391
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
392
|
+
Button,
|
|
393
|
+
{
|
|
394
|
+
variant: active ? "default" : "outline",
|
|
395
|
+
size: "xs",
|
|
396
|
+
onClick,
|
|
397
|
+
children: [
|
|
398
|
+
period,
|
|
399
|
+
unit
|
|
400
|
+
]
|
|
401
|
+
}
|
|
402
|
+
);
|
|
360
403
|
}
|
|
361
404
|
|
|
362
405
|
// src/components/ui/cashflow-bar-chart.tsx
|
|
363
406
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
364
407
|
import_chart.Chart.register(import_chart.CategoryScale, import_chart.LinearScale, import_chart.BarElement, import_chart.Tooltip, import_chart.Legend);
|
|
365
|
-
function LegendItem({
|
|
408
|
+
function LegendItem({
|
|
409
|
+
label,
|
|
410
|
+
fillColor,
|
|
411
|
+
strokeColor,
|
|
412
|
+
strokeWidth = 1.5
|
|
413
|
+
}) {
|
|
366
414
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
367
415
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
368
416
|
"div",
|
|
@@ -379,7 +427,10 @@ function LegendItem({ label, fillColor, strokeColor, strokeWidth = 1.5 }) {
|
|
|
379
427
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
|
|
380
428
|
] });
|
|
381
429
|
}
|
|
382
|
-
function ChartLegend({
|
|
430
|
+
function ChartLegend({
|
|
431
|
+
primary,
|
|
432
|
+
secondary
|
|
433
|
+
}) {
|
|
383
434
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: [
|
|
384
435
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
385
436
|
LegendItem,
|
|
@@ -418,8 +469,6 @@ function ChartLegend({ primary, secondary }) {
|
|
|
418
469
|
] });
|
|
419
470
|
}
|
|
420
471
|
var PERIODS = [3, 6, 12];
|
|
421
|
-
var FALLBACK_PRIMARY = "#33FF99";
|
|
422
|
-
var FALLBACK_SECONDARY = "#162029";
|
|
423
472
|
function CashflowBarChart({
|
|
424
473
|
cashflowData,
|
|
425
474
|
title = "Cashflow",
|
|
@@ -428,6 +477,7 @@ function CashflowBarChart({
|
|
|
428
477
|
showYAxis = true,
|
|
429
478
|
legendPosition = "top",
|
|
430
479
|
defaultPeriod = 6,
|
|
480
|
+
showPeriodSelector = true,
|
|
431
481
|
height = 280,
|
|
432
482
|
width = "100%",
|
|
433
483
|
className,
|
|
@@ -437,6 +487,7 @@ function CashflowBarChart({
|
|
|
437
487
|
const themeVars = useThemeVars();
|
|
438
488
|
const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY;
|
|
439
489
|
const brandSecondary = themeVars["--theme-secondary"] || FALLBACK_SECONDARY;
|
|
490
|
+
const fontFamily = themeVars["--font-sans"] || "Figtree, sans-serif";
|
|
440
491
|
const sliced = (0, import_react3.useMemo)(() => {
|
|
441
492
|
var _a;
|
|
442
493
|
if (!((_a = cashflowData == null ? void 0 : cashflowData.data) == null ? void 0 : _a.length)) return null;
|
|
@@ -496,73 +547,76 @@ function CashflowBarChart({
|
|
|
496
547
|
]
|
|
497
548
|
};
|
|
498
549
|
}, [sliced, brandPrimary, brandSecondary]);
|
|
499
|
-
const options = (0, import_react3.useMemo)(
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
550
|
+
const options = (0, import_react3.useMemo)(
|
|
551
|
+
() => ({
|
|
552
|
+
responsive: true,
|
|
553
|
+
maintainAspectRatio: false,
|
|
554
|
+
animation: { duration: 800, easing: "easeOutQuart" },
|
|
555
|
+
layout: { padding: 0 },
|
|
556
|
+
plugins: {
|
|
557
|
+
legend: { display: false },
|
|
558
|
+
tooltip: {
|
|
559
|
+
mode: "index",
|
|
560
|
+
intersect: false,
|
|
561
|
+
padding: 12,
|
|
562
|
+
cornerRadius: 0,
|
|
563
|
+
titleFont: { size: 11, weight: 600 },
|
|
564
|
+
bodyFont: { size: 12, weight: 500 },
|
|
565
|
+
callbacks: {
|
|
566
|
+
title: (tooltipItems) => {
|
|
567
|
+
var _a, _b, _c, _d;
|
|
568
|
+
const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
|
|
569
|
+
if (idx != null && ((_b = sliced == null ? void 0 : sliced.data[idx]) == null ? void 0 : _b.date)) {
|
|
570
|
+
return formatTooltipDate(sliced.data[idx].date, "monthly");
|
|
571
|
+
}
|
|
572
|
+
return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
|
|
573
|
+
},
|
|
574
|
+
label: (ctx) => {
|
|
575
|
+
const val = ctx.raw;
|
|
576
|
+
if (val === 0) return;
|
|
577
|
+
if (ctx.datasetIndex === 2) {
|
|
578
|
+
const d = sliced == null ? void 0 : sliced.data[ctx.dataIndex];
|
|
579
|
+
if (!d) return;
|
|
580
|
+
const lbl = d.overspending > 0 ? "Over Spending" : "Surplus Income";
|
|
581
|
+
return ` ${lbl}: $${val.toLocaleString()}`;
|
|
582
|
+
}
|
|
583
|
+
return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
|
|
530
584
|
}
|
|
531
|
-
return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
|
|
532
585
|
}
|
|
533
586
|
}
|
|
534
|
-
}
|
|
535
|
-
},
|
|
536
|
-
scales: {
|
|
537
|
-
x: {
|
|
538
|
-
display: showXAxis,
|
|
539
|
-
grid: { display: false },
|
|
540
|
-
border: { display: false },
|
|
541
|
-
ticks: { font: { size: 10 }, color: FALLBACK_TICK }
|
|
542
587
|
},
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
font: { size: 10 },
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
588
|
+
scales: {
|
|
589
|
+
x: {
|
|
590
|
+
display: showXAxis,
|
|
591
|
+
grid: { display: false },
|
|
592
|
+
border: { display: false },
|
|
593
|
+
ticks: { font: { size: 10 }, color: FALLBACK_TICK }
|
|
594
|
+
},
|
|
595
|
+
y: {
|
|
596
|
+
display: showYAxis,
|
|
597
|
+
grid: { display: false },
|
|
598
|
+
border: { display: false },
|
|
599
|
+
ticks: {
|
|
600
|
+
font: { size: 10 },
|
|
601
|
+
color: FALLBACK_TICK,
|
|
602
|
+
maxTicksLimit: 5,
|
|
603
|
+
padding: 8,
|
|
604
|
+
callback: (v) => `$${Number(v).toLocaleString()}`
|
|
605
|
+
}
|
|
553
606
|
}
|
|
554
607
|
}
|
|
555
|
-
}
|
|
556
|
-
|
|
608
|
+
}),
|
|
609
|
+
[showXAxis, showYAxis, sliced]
|
|
610
|
+
);
|
|
557
611
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
558
612
|
Card,
|
|
559
613
|
{
|
|
560
614
|
className: cn("w-full py-4 sm:py-6 gap-2", className),
|
|
561
|
-
style: { maxWidth: width },
|
|
615
|
+
style: { maxWidth: width, fontFamily },
|
|
562
616
|
children: [
|
|
563
617
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
|
|
564
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
|
|
565
|
-
/* @__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)(
|
|
618
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-sm sm:text-base uppercase tracking-wider", children: title }),
|
|
619
|
+
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)(
|
|
566
620
|
ChartPeriodButton,
|
|
567
621
|
{
|
|
568
622
|
period: p,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CashflowBarChart
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-SMQ3DG25.mjs";
|
|
4
|
+
import "../../chunk-D6ID6M4V.mjs";
|
|
5
|
+
import "../../chunk-FZIXGLMV.mjs";
|
|
6
|
+
import "../../chunk-NQPOYKAQ.mjs";
|
|
7
|
+
import "../../chunk-CLIN5525.mjs";
|
|
8
|
+
import "../../chunk-2I5S2AMY.mjs";
|
|
9
9
|
import "../../chunk-DBHJ5KC3.mjs";
|
|
10
|
-
import "../../chunk-
|
|
10
|
+
import "../../chunk-FEZKMUCF.mjs";
|
|
11
11
|
import "../../chunk-QOJ2DQD6.mjs";
|
|
12
|
-
import "../../chunk-
|
|
12
|
+
import "../../chunk-VLQZANBF.mjs";
|
|
13
13
|
import "../../chunk-FWCSY2DS.mjs";
|
|
14
14
|
export {
|
|
15
15
|
CashflowBarChart
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
"use client";
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __defProps = Object.defineProperties;
|
|
5
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -61,8 +60,40 @@ var import_checkbox = require("@base-ui/react/checkbox");
|
|
|
61
60
|
// src/lib/utils.ts
|
|
62
61
|
var import_clsx = require("clsx");
|
|
63
62
|
var import_tailwind_merge = require("tailwind-merge");
|
|
63
|
+
var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
|
|
64
|
+
extend: {
|
|
65
|
+
classGroups: {
|
|
66
|
+
"font-size": [
|
|
67
|
+
{
|
|
68
|
+
text: [
|
|
69
|
+
"display-large",
|
|
70
|
+
"display-medium",
|
|
71
|
+
"display-small",
|
|
72
|
+
"h1",
|
|
73
|
+
"h2",
|
|
74
|
+
"h3",
|
|
75
|
+
"h4",
|
|
76
|
+
"h5",
|
|
77
|
+
"h6",
|
|
78
|
+
"body-large",
|
|
79
|
+
"body-medium",
|
|
80
|
+
"body-small",
|
|
81
|
+
"label-large",
|
|
82
|
+
"label-medium",
|
|
83
|
+
"label-small",
|
|
84
|
+
"button",
|
|
85
|
+
"button-xs",
|
|
86
|
+
"caption",
|
|
87
|
+
"overline",
|
|
88
|
+
"code"
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
});
|
|
64
95
|
function cn(...inputs) {
|
|
65
|
-
return
|
|
96
|
+
return twMerge((0, import_clsx.clsx)(inputs));
|
|
66
97
|
}
|
|
67
98
|
|
|
68
99
|
// src/components/ui/checkbox.tsx
|
|
@@ -73,7 +104,7 @@ function Checkbox(_a) {
|
|
|
73
104
|
import_checkbox.Checkbox.Root,
|
|
74
105
|
__spreadProps(__spreadValues({
|
|
75
106
|
className: cn(
|
|
76
|
-
"peer group inline-flex size-4 shrink-0
|
|
107
|
+
"peer group inline-flex size-4 shrink-0 border border-input shadow-xs transition-all outline-none",
|
|
77
108
|
"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
|
|
78
109
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
79
110
|
"aria-invalid:border-destructive aria-invalid:ring-destructive/20",
|
|
@@ -152,8 +183,8 @@ function CheckboxCard(_a) {
|
|
|
152
183
|
}, props)
|
|
153
184
|
),
|
|
154
185
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
155
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-
|
|
156
|
-
description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-
|
|
186
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-label-medium leading-none", children: label }),
|
|
187
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-body-small text-muted-foreground", children: description }) : null
|
|
157
188
|
] })
|
|
158
189
|
]
|
|
159
190
|
}
|
|
@@ -67,8 +67,40 @@ var import_lucide_react = require("lucide-react");
|
|
|
67
67
|
// src/lib/utils.ts
|
|
68
68
|
var import_clsx = require("clsx");
|
|
69
69
|
var import_tailwind_merge = require("tailwind-merge");
|
|
70
|
+
var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
|
|
71
|
+
extend: {
|
|
72
|
+
classGroups: {
|
|
73
|
+
"font-size": [
|
|
74
|
+
{
|
|
75
|
+
text: [
|
|
76
|
+
"display-large",
|
|
77
|
+
"display-medium",
|
|
78
|
+
"display-small",
|
|
79
|
+
"h1",
|
|
80
|
+
"h2",
|
|
81
|
+
"h3",
|
|
82
|
+
"h4",
|
|
83
|
+
"h5",
|
|
84
|
+
"h6",
|
|
85
|
+
"body-large",
|
|
86
|
+
"body-medium",
|
|
87
|
+
"body-small",
|
|
88
|
+
"label-large",
|
|
89
|
+
"label-medium",
|
|
90
|
+
"label-small",
|
|
91
|
+
"button",
|
|
92
|
+
"button-xs",
|
|
93
|
+
"caption",
|
|
94
|
+
"overline",
|
|
95
|
+
"code"
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
});
|
|
70
102
|
function cn(...inputs) {
|
|
71
|
-
return
|
|
103
|
+
return twMerge((0, import_clsx.clsx)(inputs));
|
|
72
104
|
}
|
|
73
105
|
|
|
74
106
|
// src/components/ui/badge.tsx
|
|
@@ -124,13 +156,16 @@ Slot.displayName = "Slot";
|
|
|
124
156
|
// src/components/ui/badge.tsx
|
|
125
157
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
126
158
|
var badgeVariants = (0, import_class_variance_authority.cva)(
|
|
127
|
-
"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium font-sans whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",
|
|
159
|
+
"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2.5 py-0.5 text-xs font-medium font-sans whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",
|
|
128
160
|
{
|
|
129
161
|
variants: {
|
|
130
162
|
variant: {
|
|
131
163
|
default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
132
164
|
secondary: "bg-muted text-muted-foreground [a&]:hover:bg-muted/80",
|
|
133
165
|
destructive: "bg-destructive text-destructive-foreground focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90",
|
|
166
|
+
success: "bg-success text-success-foreground [a&]:hover:bg-success/90",
|
|
167
|
+
warning: "bg-warning text-warning-foreground [a&]:hover:bg-warning/90",
|
|
168
|
+
info: "bg-info text-info-foreground [a&]:hover:bg-info/90",
|
|
134
169
|
outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
135
170
|
ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
136
171
|
link: "text-primary underline-offset-4 [a&]:hover:underline"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Chip
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-RP3SQYA3.mjs";
|
|
4
|
+
import "../../chunk-WAZD7NFU.mjs";
|
|
5
5
|
import "../../chunk-DBHJ5KC3.mjs";
|
|
6
|
-
import "../../chunk-
|
|
6
|
+
import "../../chunk-VLQZANBF.mjs";
|
|
7
7
|
import "../../chunk-FWCSY2DS.mjs";
|
|
8
8
|
export {
|
|
9
9
|
Chip
|
|
@@ -68,8 +68,40 @@ var import_combobox = require("@base-ui/react/combobox");
|
|
|
68
68
|
// src/lib/utils.ts
|
|
69
69
|
var import_clsx = require("clsx");
|
|
70
70
|
var import_tailwind_merge = require("tailwind-merge");
|
|
71
|
+
var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
|
|
72
|
+
extend: {
|
|
73
|
+
classGroups: {
|
|
74
|
+
"font-size": [
|
|
75
|
+
{
|
|
76
|
+
text: [
|
|
77
|
+
"display-large",
|
|
78
|
+
"display-medium",
|
|
79
|
+
"display-small",
|
|
80
|
+
"h1",
|
|
81
|
+
"h2",
|
|
82
|
+
"h3",
|
|
83
|
+
"h4",
|
|
84
|
+
"h5",
|
|
85
|
+
"h6",
|
|
86
|
+
"body-large",
|
|
87
|
+
"body-medium",
|
|
88
|
+
"body-small",
|
|
89
|
+
"label-large",
|
|
90
|
+
"label-medium",
|
|
91
|
+
"label-small",
|
|
92
|
+
"button",
|
|
93
|
+
"button-xs",
|
|
94
|
+
"caption",
|
|
95
|
+
"overline",
|
|
96
|
+
"code"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
71
103
|
function cn(...inputs) {
|
|
72
|
-
return
|
|
104
|
+
return twMerge((0, import_clsx.clsx)(inputs));
|
|
73
105
|
}
|
|
74
106
|
|
|
75
107
|
// src/components/ui/combobox.tsx
|
|
@@ -94,7 +126,7 @@ function ComboboxTrigger(_a) {
|
|
|
94
126
|
"data-slot": "combobox-trigger",
|
|
95
127
|
"data-size": size,
|
|
96
128
|
className: cn(
|
|
97
|
-
"flex w-fit items-center justify-between gap-2 border border-input bg-transparent px-3 py-2 text-body-small whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20 data-[popup-open]:border-primary data-[popup-open]:ring-[3px] data-[popup-open]:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=combobox-value]:line-clamp-1 *:data-[slot=combobox-value]:flex *:data-[slot=combobox-value]:items-center *:data-[slot=combobox-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
129
|
+
"flex w-fit items-center justify-between gap-2 border border-input bg-transparent px-3 py-2 text-body-small whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20 data-[popup-open]:border-primary data-[popup-open]:ring-[3px] data-[popup-open]:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:font-normal data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=combobox-value]:line-clamp-1 *:data-[slot=combobox-value]:flex *:data-[slot=combobox-value]:items-center *:data-[slot=combobox-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
98
130
|
className
|
|
99
131
|
)
|
|
100
132
|
}, props), {
|
|
@@ -110,24 +142,27 @@ function ComboboxValue(_a) {
|
|
|
110
142
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_combobox.Combobox.Value, __spreadValues({ "data-slot": "combobox-value" }, props));
|
|
111
143
|
}
|
|
112
144
|
function ComboboxInput(_a) {
|
|
113
|
-
var _b = _a, {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
145
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
146
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
147
|
+
"div",
|
|
148
|
+
{
|
|
149
|
+
"data-slot": "combobox-input-wrapper",
|
|
150
|
+
className: "flex items-center gap-2 border-b border-border px-3",
|
|
151
|
+
children: [
|
|
152
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
153
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
154
|
+
import_combobox.Combobox.Input,
|
|
155
|
+
__spreadValues({
|
|
156
|
+
"data-slot": "combobox-input",
|
|
157
|
+
className: cn(
|
|
158
|
+
"h-9 w-full min-w-0 bg-transparent py-1 text-body-small outline-none placeholder:font-normal placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
159
|
+
className
|
|
160
|
+
)
|
|
161
|
+
}, props)
|
|
127
162
|
)
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
);
|
|
131
166
|
}
|
|
132
167
|
function ComboboxContent(_a) {
|
|
133
168
|
var _b = _a, {
|
|
@@ -151,11 +186,7 @@ function ComboboxContent(_a) {
|
|
|
151
186
|
) }) });
|
|
152
187
|
}
|
|
153
188
|
function ComboboxList(_a) {
|
|
154
|
-
var _b = _a, {
|
|
155
|
-
className
|
|
156
|
-
} = _b, props = __objRest(_b, [
|
|
157
|
-
"className"
|
|
158
|
-
]);
|
|
189
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
159
190
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
160
191
|
import_combobox.Combobox.List,
|
|
161
192
|
__spreadValues({
|
|
@@ -168,19 +199,13 @@ function ComboboxList(_a) {
|
|
|
168
199
|
);
|
|
169
200
|
}
|
|
170
201
|
function ComboboxItem(_a) {
|
|
171
|
-
var _b = _a, {
|
|
172
|
-
className,
|
|
173
|
-
children
|
|
174
|
-
} = _b, props = __objRest(_b, [
|
|
175
|
-
"className",
|
|
176
|
-
"children"
|
|
177
|
-
]);
|
|
202
|
+
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
178
203
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
179
204
|
import_combobox.Combobox.Item,
|
|
180
205
|
__spreadProps(__spreadValues({
|
|
181
206
|
"data-slot": "combobox-item",
|
|
182
207
|
className: cn(
|
|
183
|
-
"relative flex w-full cursor-default items-center gap-2
|
|
208
|
+
"relative flex w-full cursor-default items-center gap-2 py-1.5 pr-8 pl-2 text-body-small outline-hidden select-none data-highlighted:bg-primary/5 data-highlighted:text-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
184
209
|
className
|
|
185
210
|
)
|
|
186
211
|
}, props), {
|
|
@@ -199,16 +224,15 @@ function ComboboxItem(_a) {
|
|
|
199
224
|
);
|
|
200
225
|
}
|
|
201
226
|
function ComboboxEmpty(_a) {
|
|
202
|
-
var _b = _a, {
|
|
203
|
-
className
|
|
204
|
-
} = _b, props = __objRest(_b, [
|
|
205
|
-
"className"
|
|
206
|
-
]);
|
|
227
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
207
228
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
208
229
|
import_combobox.Combobox.Empty,
|
|
209
230
|
__spreadValues({
|
|
210
231
|
"data-slot": "combobox-empty",
|
|
211
|
-
className:
|
|
232
|
+
className: cn(
|
|
233
|
+
"text-body-small py-6 text-center text-muted-foreground empty:hidden",
|
|
234
|
+
className
|
|
235
|
+
)
|
|
212
236
|
}, props)
|
|
213
237
|
);
|
|
214
238
|
}
|
|
@@ -217,25 +241,20 @@ function ComboboxGroup(_a) {
|
|
|
217
241
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_combobox.Combobox.Group, __spreadValues({ "data-slot": "combobox-group" }, props));
|
|
218
242
|
}
|
|
219
243
|
function ComboboxGroupLabel(_a) {
|
|
220
|
-
var _b = _a, {
|
|
221
|
-
className
|
|
222
|
-
} = _b, props = __objRest(_b, [
|
|
223
|
-
"className"
|
|
224
|
-
]);
|
|
244
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
225
245
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
226
246
|
import_combobox.Combobox.GroupLabel,
|
|
227
247
|
__spreadValues({
|
|
228
248
|
"data-slot": "combobox-group-label",
|
|
229
|
-
className:
|
|
249
|
+
className: cn(
|
|
250
|
+
"text-label-small px-2 py-1.5 uppercase text-muted-foreground",
|
|
251
|
+
className
|
|
252
|
+
)
|
|
230
253
|
}, props)
|
|
231
254
|
);
|
|
232
255
|
}
|
|
233
256
|
function ComboboxSeparator(_a) {
|
|
234
|
-
var _b = _a, {
|
|
235
|
-
className
|
|
236
|
-
} = _b, props = __objRest(_b, [
|
|
237
|
-
"className"
|
|
238
|
-
]);
|
|
257
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
239
258
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
240
259
|
"div",
|
|
241
260
|
__spreadValues({
|