@wealthx/shadcn 1.0.1 → 1.1.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 +154 -135
- package/CHANGELOG.md +12 -0
- package/README.md +82 -0
- package/dist/chunk-3EQP72AW.mjs +58 -0
- package/dist/{chunk-2WZVSBAY.mjs → chunk-3NQGYJEZ.mjs} +1 -1
- package/dist/{chunk-ZN2QKLF6.mjs → chunk-46OFHMQA.mjs} +1 -1
- package/dist/{chunk-IAOOZCUY.mjs → chunk-4AJ5HWHD.mjs} +4 -1
- package/dist/chunk-5JGQAAQV.mjs +212 -0
- package/dist/{chunk-MKFL5MNH.mjs → chunk-CJ46PDXE.mjs} +6 -6
- package/dist/{chunk-7LDIMXGM.mjs → chunk-DKZRJOMF.mjs} +1 -1
- package/dist/{chunk-AMJ23O53.mjs → chunk-FHNT55I5.mjs} +2 -2
- package/dist/chunk-GLW2UO6O.mjs +212 -0
- package/dist/{chunk-NGYG2EA6.mjs → chunk-I64K754C.mjs} +1 -1
- package/dist/chunk-K74JRTJR.mjs +105 -0
- package/dist/{chunk-NWZ46DJL.mjs → chunk-KQDD5MU3.mjs} +1 -1
- package/dist/chunk-RN67642N.mjs +171 -0
- package/dist/chunk-UEL4RD5P.mjs +272 -0
- package/dist/chunk-YBXCIF5Q.mjs +198 -0
- package/dist/components/ui/alert-dialog.js +4 -1
- package/dist/components/ui/alert-dialog.mjs +2 -2
- package/dist/components/ui/button.js +4 -1
- package/dist/components/ui/button.mjs +1 -1
- package/dist/components/ui/calendar.js +4 -1
- package/dist/components/ui/calendar.mjs +2 -2
- package/dist/components/ui/cashflow-bar-chart.js +596 -0
- package/dist/components/ui/cashflow-bar-chart.mjs +16 -0
- package/dist/components/ui/combobox.js +261 -0
- package/dist/components/ui/combobox.mjs +28 -0
- package/dist/components/ui/data-table.js +4 -1
- package/dist/components/ui/data-table.mjs +4 -4
- package/dist/components/ui/date-picker.js +4 -1
- package/dist/components/ui/date-picker.mjs +3 -3
- package/dist/components/ui/dialog.js +4 -1
- package/dist/components/ui/dialog.mjs +2 -2
- package/dist/components/ui/expense-bar-chart.js +543 -0
- package/dist/components/ui/expense-bar-chart.mjs +16 -0
- package/dist/components/ui/field.mjs +2 -2
- package/dist/components/ui/income-bar-chart.js +543 -0
- package/dist/components/ui/income-bar-chart.mjs +16 -0
- package/dist/components/ui/input-group.js +4 -1
- package/dist/components/ui/input-group.mjs +2 -2
- package/dist/components/ui/pagination.js +4 -1
- package/dist/components/ui/pagination.mjs +2 -2
- package/dist/components/ui/slider.js +166 -0
- package/dist/components/ui/slider.mjs +8 -0
- package/dist/components/ui/transactions-income-expense-bar-chart.js +478 -0
- package/dist/components/ui/transactions-income-expense-bar-chart.mjs +16 -0
- package/dist/index.js +1757 -698
- package/dist/index.mjs +160 -115
- package/dist/styles.css +1 -1
- package/package.json +35 -2
- package/src/components/index.tsx +59 -0
- package/src/components/ui/button.tsx +2 -0
- package/src/components/ui/cashflow-bar-chart.tsx +336 -0
- package/src/components/ui/chart-shared.tsx +100 -0
- package/src/components/ui/combobox.tsx +217 -0
- package/src/components/ui/expense-bar-chart.tsx +278 -0
- package/src/components/ui/income-bar-chart.tsx +278 -0
- package/src/components/ui/slider.tsx +107 -0
- package/src/components/ui/transactions-income-expense-bar-chart.tsx +198 -0
- package/src/styles/styles-css.ts +1 -1
- package/tsup.config.ts +6 -0
- package/dist/{chunk-HUVTPUV2.mjs → chunk-NLLKTU4B.mjs} +3 -3
package/dist/index.js
CHANGED
|
@@ -95,9 +95,21 @@ __export(index_exports, {
|
|
|
95
95
|
CardFooter: () => CardFooter,
|
|
96
96
|
CardHeader: () => CardHeader,
|
|
97
97
|
CardTitle: () => CardTitle,
|
|
98
|
+
CashflowBarChart: () => CashflowBarChart,
|
|
98
99
|
Checkbox: () => Checkbox,
|
|
99
100
|
CheckboxCard: () => CheckboxCard,
|
|
100
101
|
Chip: () => Chip,
|
|
102
|
+
Combobox: () => Combobox,
|
|
103
|
+
ComboboxContent: () => ComboboxContent,
|
|
104
|
+
ComboboxEmpty: () => ComboboxEmpty,
|
|
105
|
+
ComboboxGroup: () => ComboboxGroup,
|
|
106
|
+
ComboboxGroupLabel: () => ComboboxGroupLabel,
|
|
107
|
+
ComboboxInput: () => ComboboxInput,
|
|
108
|
+
ComboboxItem: () => ComboboxItem,
|
|
109
|
+
ComboboxList: () => ComboboxList,
|
|
110
|
+
ComboboxSeparator: () => ComboboxSeparator,
|
|
111
|
+
ComboboxTrigger: () => ComboboxTrigger,
|
|
112
|
+
ComboboxValue: () => ComboboxValue,
|
|
101
113
|
DataTable: () => DataTable,
|
|
102
114
|
DataTableColumnHeader: () => DataTableColumnHeader,
|
|
103
115
|
DataTablePagination: () => DataTablePagination,
|
|
@@ -145,6 +157,7 @@ __export(index_exports, {
|
|
|
145
157
|
EmptyHeader: () => EmptyHeader,
|
|
146
158
|
EmptyMedia: () => EmptyMedia,
|
|
147
159
|
EmptyTitle: () => EmptyTitle,
|
|
160
|
+
ExpenseBarChart: () => ExpenseBarChart,
|
|
148
161
|
FONT_FAMILY_SANS: () => FONT_FAMILY_SANS,
|
|
149
162
|
Field: () => Field,
|
|
150
163
|
FieldContent: () => FieldContent,
|
|
@@ -156,6 +169,7 @@ __export(index_exports, {
|
|
|
156
169
|
FieldSeparator: () => FieldSeparator,
|
|
157
170
|
FieldSet: () => FieldSet,
|
|
158
171
|
FieldTitle: () => FieldTitle,
|
|
172
|
+
IncomeBarChart: () => IncomeBarChart,
|
|
159
173
|
Input: () => Input,
|
|
160
174
|
InputGroup: () => InputGroup,
|
|
161
175
|
InputGroupAddon: () => InputGroupAddon,
|
|
@@ -207,6 +221,7 @@ __export(index_exports, {
|
|
|
207
221
|
SheetTitle: () => SheetTitle,
|
|
208
222
|
SheetTrigger: () => SheetTrigger,
|
|
209
223
|
Skeleton: () => Skeleton,
|
|
224
|
+
Slider: () => Slider,
|
|
210
225
|
Spinner: () => Spinner,
|
|
211
226
|
Switch: () => Switch,
|
|
212
227
|
SwitchCard: () => SwitchCard,
|
|
@@ -234,10 +249,11 @@ __export(index_exports, {
|
|
|
234
249
|
Toggle: () => Toggle,
|
|
235
250
|
ToggleGroup: () => ToggleGroup,
|
|
236
251
|
ToggleGroupItem: () => ToggleGroupItem,
|
|
237
|
-
Tooltip: () =>
|
|
252
|
+
Tooltip: () => Tooltip5,
|
|
238
253
|
TooltipContent: () => TooltipContent,
|
|
239
254
|
TooltipProvider: () => TooltipProvider,
|
|
240
255
|
TooltipTrigger: () => TooltipTrigger,
|
|
256
|
+
TransactionsIncomeExpenseBarChart: () => TransactionsIncomeExpenseBarChart,
|
|
241
257
|
badgeVariants: () => badgeVariants,
|
|
242
258
|
buttonVariants: () => buttonVariants,
|
|
243
259
|
cn: () => cn,
|
|
@@ -355,91 +371,235 @@ function getResponsiveTypographyCssVars(breakpoint) {
|
|
|
355
371
|
return vars;
|
|
356
372
|
}
|
|
357
373
|
|
|
358
|
-
// src/components/ui/
|
|
359
|
-
var
|
|
360
|
-
var
|
|
374
|
+
// src/components/ui/transactions-income-expense-bar-chart.tsx
|
|
375
|
+
var import_react3 = require("react");
|
|
376
|
+
var import_chart = require("chart.js");
|
|
377
|
+
var import_chartjs_plugin_datalabels = __toESM(require("chartjs-plugin-datalabels"));
|
|
378
|
+
var import_react_chartjs_2 = require("react-chartjs-2");
|
|
379
|
+
|
|
380
|
+
// src/lib/theme-provider.tsx
|
|
381
|
+
var import_react = require("react");
|
|
361
382
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
362
|
-
|
|
363
|
-
|
|
383
|
+
var ThemeVarsContext = (0, import_react.createContext)({});
|
|
384
|
+
function useThemeVars() {
|
|
385
|
+
return (0, import_react.useContext)(ThemeVarsContext);
|
|
364
386
|
}
|
|
365
|
-
|
|
387
|
+
|
|
388
|
+
// src/components/ui/card.tsx
|
|
389
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
390
|
+
function Card(_a) {
|
|
366
391
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
367
|
-
return /* @__PURE__ */ (0,
|
|
368
|
-
|
|
392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
393
|
+
"div",
|
|
369
394
|
__spreadValues({
|
|
370
|
-
className: cn(
|
|
371
|
-
|
|
395
|
+
className: cn(
|
|
396
|
+
"flex flex-col gap-6 border bg-card py-6 text-card-foreground shadow-sm",
|
|
397
|
+
className
|
|
398
|
+
),
|
|
399
|
+
"data-slot": "card"
|
|
372
400
|
}, props)
|
|
373
401
|
);
|
|
374
402
|
}
|
|
375
|
-
function
|
|
376
|
-
var _b = _a, {
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
"className",
|
|
381
|
-
"children"
|
|
382
|
-
]);
|
|
383
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_accordion.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
384
|
-
import_accordion.Accordion.Trigger,
|
|
385
|
-
__spreadProps(__spreadValues({
|
|
403
|
+
function CardHeader(_a) {
|
|
404
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
405
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
406
|
+
"div",
|
|
407
|
+
__spreadValues({
|
|
386
408
|
className: cn(
|
|
387
|
-
|
|
388
|
-
"flex flex-1 items-center justify-between gap-4 py-4 text-left",
|
|
389
|
-
// typography
|
|
390
|
-
"text-sm font-medium",
|
|
391
|
-
// base
|
|
392
|
-
"rounded-none outline-none transition-[color,opacity]",
|
|
393
|
-
// interactive states
|
|
394
|
-
"hover:underline",
|
|
395
|
-
"focus-visible:ring-2 focus-visible:ring-foreground/30",
|
|
396
|
-
"disabled:pointer-events-none disabled:opacity-50",
|
|
397
|
-
// chevron rotation when open
|
|
398
|
-
"[&[data-panel-open]>svg]:rotate-180",
|
|
409
|
+
"@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",
|
|
399
410
|
className
|
|
400
411
|
),
|
|
401
|
-
"data-slot": "
|
|
402
|
-
}, props)
|
|
403
|
-
|
|
404
|
-
children,
|
|
405
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
|
|
406
|
-
]
|
|
407
|
-
})
|
|
408
|
-
) });
|
|
412
|
+
"data-slot": "card-header"
|
|
413
|
+
}, props)
|
|
414
|
+
);
|
|
409
415
|
}
|
|
410
|
-
function
|
|
416
|
+
function CardTitle(_a) {
|
|
417
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
418
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
419
|
+
"div",
|
|
420
|
+
__spreadValues({
|
|
421
|
+
className: cn("leading-none font-semibold", className),
|
|
422
|
+
"data-slot": "card-title"
|
|
423
|
+
}, props)
|
|
424
|
+
);
|
|
425
|
+
}
|
|
426
|
+
function CardDescription(_a) {
|
|
427
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
428
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
429
|
+
"div",
|
|
430
|
+
__spreadValues({
|
|
431
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
432
|
+
"data-slot": "card-description"
|
|
433
|
+
}, props)
|
|
434
|
+
);
|
|
435
|
+
}
|
|
436
|
+
function CardAction(_a) {
|
|
437
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
438
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
439
|
+
"div",
|
|
440
|
+
__spreadValues({
|
|
441
|
+
className: cn(
|
|
442
|
+
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
443
|
+
className
|
|
444
|
+
),
|
|
445
|
+
"data-slot": "card-action"
|
|
446
|
+
}, props)
|
|
447
|
+
);
|
|
448
|
+
}
|
|
449
|
+
function CardContent(_a) {
|
|
450
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
451
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
452
|
+
"div",
|
|
453
|
+
__spreadValues({
|
|
454
|
+
className: cn("px-6", className),
|
|
455
|
+
"data-slot": "card-content"
|
|
456
|
+
}, props)
|
|
457
|
+
);
|
|
458
|
+
}
|
|
459
|
+
function CardFooter(_a) {
|
|
460
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
461
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
462
|
+
"div",
|
|
463
|
+
__spreadValues({
|
|
464
|
+
className: cn("flex items-center px-6 [.border-t]:pt-6", className),
|
|
465
|
+
"data-slot": "card-footer"
|
|
466
|
+
}, props)
|
|
467
|
+
);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// src/components/ui/empty.tsx
|
|
471
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
472
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
473
|
+
function Empty(_a) {
|
|
474
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
475
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
476
|
+
"div",
|
|
477
|
+
__spreadValues({
|
|
478
|
+
className: cn(
|
|
479
|
+
"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 border border-dashed p-6 text-center text-balance md:p-12",
|
|
480
|
+
className
|
|
481
|
+
),
|
|
482
|
+
"data-slot": "empty"
|
|
483
|
+
}, props)
|
|
484
|
+
);
|
|
485
|
+
}
|
|
486
|
+
function EmptyHeader(_a) {
|
|
487
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
488
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
489
|
+
"div",
|
|
490
|
+
__spreadValues({
|
|
491
|
+
className: cn(
|
|
492
|
+
"flex max-w-sm flex-col items-center gap-2 text-center",
|
|
493
|
+
className
|
|
494
|
+
),
|
|
495
|
+
"data-slot": "empty-header"
|
|
496
|
+
}, props)
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
var emptyMediaVariants = (0, import_class_variance_authority.cva)(
|
|
500
|
+
"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
501
|
+
{
|
|
502
|
+
variants: {
|
|
503
|
+
variant: {
|
|
504
|
+
default: "[&_svg:not([class*='size-'])]:size-10",
|
|
505
|
+
icon: "flex size-10 shrink-0 items-center justify-center text-muted-foreground [&_svg:not([class*='size-'])]:size-6"
|
|
506
|
+
}
|
|
507
|
+
},
|
|
508
|
+
defaultVariants: {
|
|
509
|
+
variant: "default"
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
);
|
|
513
|
+
function EmptyMedia(_a) {
|
|
411
514
|
var _b = _a, {
|
|
412
515
|
className,
|
|
413
|
-
|
|
516
|
+
variant = "default"
|
|
414
517
|
} = _b, props = __objRest(_b, [
|
|
415
518
|
"className",
|
|
416
|
-
"
|
|
519
|
+
"variant"
|
|
417
520
|
]);
|
|
418
|
-
return /* @__PURE__ */ (0,
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
className:
|
|
422
|
-
"data-slot": "
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
521
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
522
|
+
"div",
|
|
523
|
+
__spreadValues({
|
|
524
|
+
className: cn(emptyMediaVariants({ variant, className })),
|
|
525
|
+
"data-slot": "empty-icon",
|
|
526
|
+
"data-variant": variant
|
|
527
|
+
}, props)
|
|
528
|
+
);
|
|
529
|
+
}
|
|
530
|
+
function EmptyTitle(_a) {
|
|
531
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
532
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
533
|
+
"div",
|
|
534
|
+
__spreadValues({
|
|
535
|
+
className: cn("text-lg font-medium tracking-tight", className),
|
|
536
|
+
"data-slot": "empty-title"
|
|
537
|
+
}, props)
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
function EmptyDescription(_a) {
|
|
541
|
+
var _b = _a, {
|
|
542
|
+
className
|
|
543
|
+
} = _b, props = __objRest(_b, [
|
|
544
|
+
"className"
|
|
545
|
+
]);
|
|
546
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
547
|
+
"div",
|
|
548
|
+
__spreadValues({
|
|
549
|
+
className: cn(
|
|
550
|
+
"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
551
|
+
className
|
|
552
|
+
),
|
|
553
|
+
"data-slot": "empty-description"
|
|
554
|
+
}, props)
|
|
555
|
+
);
|
|
556
|
+
}
|
|
557
|
+
function EmptyContent(_a) {
|
|
558
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
560
|
+
"div",
|
|
561
|
+
__spreadValues({
|
|
562
|
+
className: cn(
|
|
563
|
+
"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance",
|
|
564
|
+
className
|
|
565
|
+
),
|
|
566
|
+
"data-slot": "empty-content"
|
|
567
|
+
}, props)
|
|
426
568
|
);
|
|
427
569
|
}
|
|
428
570
|
|
|
429
|
-
// src/components/ui/
|
|
430
|
-
var
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
var
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
571
|
+
// src/components/ui/spinner.tsx
|
|
572
|
+
var import_class_variance_authority2 = require("class-variance-authority");
|
|
573
|
+
var import_lucide_react = require("lucide-react");
|
|
574
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
575
|
+
var spinnerVariants = (0, import_class_variance_authority2.cva)("animate-spin shrink-0", {
|
|
576
|
+
variants: {
|
|
577
|
+
size: {
|
|
578
|
+
sm: "size-3",
|
|
579
|
+
default: "size-4",
|
|
580
|
+
lg: "size-6",
|
|
581
|
+
xl: "size-8"
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
defaultVariants: {
|
|
585
|
+
size: "default"
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
function Spinner(_a) {
|
|
589
|
+
var _b = _a, { className, size } = _b, props = __objRest(_b, ["className", "size"]);
|
|
590
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
591
|
+
import_lucide_react.LoaderCircle,
|
|
592
|
+
__spreadValues({
|
|
593
|
+
"aria-hidden": "true",
|
|
594
|
+
className: cn(spinnerVariants({ size }), className),
|
|
595
|
+
"data-slot": "spinner"
|
|
596
|
+
}, props)
|
|
597
|
+
);
|
|
438
598
|
}
|
|
439
599
|
|
|
440
600
|
// src/components/ui/button.tsx
|
|
441
601
|
var import_react2 = require("react");
|
|
442
|
-
var
|
|
602
|
+
var import_class_variance_authority3 = require("class-variance-authority");
|
|
443
603
|
var import_lucide_react2 = require("lucide-react");
|
|
444
604
|
|
|
445
605
|
// src/lib/slot.tsx
|
|
@@ -490,8 +650,8 @@ var Slot = React2.forwardRef(
|
|
|
490
650
|
Slot.displayName = "Slot";
|
|
491
651
|
|
|
492
652
|
// src/components/ui/button.tsx
|
|
493
|
-
var
|
|
494
|
-
var buttonVariants = (0,
|
|
653
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
654
|
+
var buttonVariants = (0, import_class_variance_authority3.cva)(
|
|
495
655
|
"inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-sm font-medium 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",
|
|
496
656
|
{
|
|
497
657
|
variants: {
|
|
@@ -516,63 +676,901 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
|
516
676
|
"icon-lg": "size-10"
|
|
517
677
|
}
|
|
518
678
|
},
|
|
519
|
-
defaultVariants: {
|
|
520
|
-
variant: "default",
|
|
521
|
-
size: "default"
|
|
679
|
+
defaultVariants: {
|
|
680
|
+
variant: "default",
|
|
681
|
+
size: "default"
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
);
|
|
685
|
+
var Button = (0, import_react2.forwardRef)(function Button2(_a, ref) {
|
|
686
|
+
var _b = _a, {
|
|
687
|
+
className,
|
|
688
|
+
variant,
|
|
689
|
+
size,
|
|
690
|
+
asChild = false,
|
|
691
|
+
loading = false,
|
|
692
|
+
disabled,
|
|
693
|
+
type = "button",
|
|
694
|
+
children
|
|
695
|
+
} = _b, props = __objRest(_b, [
|
|
696
|
+
"className",
|
|
697
|
+
"variant",
|
|
698
|
+
"size",
|
|
699
|
+
"asChild",
|
|
700
|
+
"loading",
|
|
701
|
+
"disabled",
|
|
702
|
+
"type",
|
|
703
|
+
"children"
|
|
704
|
+
]);
|
|
705
|
+
const Comp = asChild ? Slot : "button";
|
|
706
|
+
const isIconOnly = size === "icon" || size === "icon-xs" || size === "icon-sm" || size === "icon-lg";
|
|
707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
708
|
+
Comp,
|
|
709
|
+
__spreadProps(__spreadValues({
|
|
710
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
711
|
+
"data-size": size,
|
|
712
|
+
"data-slot": "button",
|
|
713
|
+
"data-variant": variant,
|
|
714
|
+
disabled: loading || disabled,
|
|
715
|
+
ref,
|
|
716
|
+
type
|
|
717
|
+
}, props), {
|
|
718
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
719
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Loader2, { "aria-hidden": "true", className: "animate-spin" }),
|
|
720
|
+
!isIconOnly && children
|
|
721
|
+
] }) : children
|
|
722
|
+
})
|
|
723
|
+
);
|
|
724
|
+
});
|
|
725
|
+
|
|
726
|
+
// src/components/ui/chart-shared.tsx
|
|
727
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
728
|
+
var CHART_SLICE_COUNT = {
|
|
729
|
+
monthly: { 1: 1, 3: 3, 6: 6, 12: 12 },
|
|
730
|
+
daily: { 1: 30, 3: 90, 6: 180, 12: 365 }
|
|
731
|
+
};
|
|
732
|
+
var CHART_PERIODS = {
|
|
733
|
+
monthly: [3, 6, 12],
|
|
734
|
+
daily: [1, 3, 6, 12]
|
|
735
|
+
};
|
|
736
|
+
function hexToRgba(hex, alpha) {
|
|
737
|
+
const clean = hex.replace("#", "");
|
|
738
|
+
const full = clean.length === 3 ? clean.split("").map((c) => c + c).join("") : clean;
|
|
739
|
+
const r = parseInt(full.slice(0, 2), 16);
|
|
740
|
+
const g = parseInt(full.slice(2, 4), 16);
|
|
741
|
+
const b = parseInt(full.slice(4, 6), 16);
|
|
742
|
+
return `rgba(${r},${g},${b},${alpha})`;
|
|
743
|
+
}
|
|
744
|
+
var DATASET_ALPHAS = [1, 0.72, 0.52, 0.36, 0.24, 0.15];
|
|
745
|
+
var FALLBACK_TICK = "#9EAAB5";
|
|
746
|
+
function formatTooltipDate(iso, granularity) {
|
|
747
|
+
const d = new Date(iso);
|
|
748
|
+
return d.toLocaleDateString(
|
|
749
|
+
"en-US",
|
|
750
|
+
granularity === "daily" ? { month: "short", day: "numeric", year: "numeric" } : { month: "short", year: "numeric" }
|
|
751
|
+
);
|
|
752
|
+
}
|
|
753
|
+
function ChartLegendItem({ label, color }) {
|
|
754
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
755
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { style: { width: 10, height: 10, backgroundColor: color, flexShrink: 0 } }),
|
|
756
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
|
|
757
|
+
] });
|
|
758
|
+
}
|
|
759
|
+
function ChartPeriodButton({
|
|
760
|
+
period,
|
|
761
|
+
active,
|
|
762
|
+
onClick
|
|
763
|
+
}) {
|
|
764
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Button, { variant: active ? "default" : "outline", size: "xs", onClick, children: [
|
|
765
|
+
period,
|
|
766
|
+
"M"
|
|
767
|
+
] });
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
// src/components/ui/transactions-income-expense-bar-chart.tsx
|
|
771
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
772
|
+
import_chart.Chart.register(import_chart.CategoryScale, import_chart.LinearScale, import_chart.BarElement, import_chart.Tooltip);
|
|
773
|
+
var FALLBACK_PRIMARY = "#33FF99";
|
|
774
|
+
var FALLBACK_SECONDARY = "#162029";
|
|
775
|
+
var VALUE_LABEL_COLOR = "#162029";
|
|
776
|
+
function formatDollar(value) {
|
|
777
|
+
return `$${value.toLocaleString(void 0, {
|
|
778
|
+
minimumFractionDigits: 2,
|
|
779
|
+
maximumFractionDigits: 2
|
|
780
|
+
})}`;
|
|
781
|
+
}
|
|
782
|
+
function TransactionsIncomeExpenseBarChart({
|
|
783
|
+
totalIncome,
|
|
784
|
+
totalExpense,
|
|
785
|
+
title = "Transactions \u2014 Income vs Expense",
|
|
786
|
+
height = 120,
|
|
787
|
+
width = "100%",
|
|
788
|
+
className,
|
|
789
|
+
isLoading = false
|
|
790
|
+
}) {
|
|
791
|
+
const themeVars = useThemeVars();
|
|
792
|
+
const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY;
|
|
793
|
+
const brandSecondary = themeVars["--theme-secondary"] || FALLBACK_SECONDARY;
|
|
794
|
+
const hasData = totalIncome != null && totalExpense != null;
|
|
795
|
+
const incomeVal = totalIncome != null ? totalIncome : 0;
|
|
796
|
+
const expenseVal = Math.abs(totalExpense != null ? totalExpense : 0);
|
|
797
|
+
const maxVal = Math.max(incomeVal, expenseVal);
|
|
798
|
+
const chartData = (0, import_react3.useMemo)(() => {
|
|
799
|
+
if (!hasData) return { labels: [], datasets: [] };
|
|
800
|
+
return {
|
|
801
|
+
labels: ["Incoming", "Outgoing"],
|
|
802
|
+
datasets: [
|
|
803
|
+
{
|
|
804
|
+
barThickness: 40,
|
|
805
|
+
backgroundColor: [brandPrimary, brandSecondary],
|
|
806
|
+
hoverBackgroundColor: [brandPrimary, brandSecondary],
|
|
807
|
+
borderWidth: 0,
|
|
808
|
+
borderRadius: 0,
|
|
809
|
+
borderSkipped: false,
|
|
810
|
+
data: [incomeVal, expenseVal],
|
|
811
|
+
// chartjs-plugin-datalabels config — typed via plugin module augmentation
|
|
812
|
+
datalabels: {
|
|
813
|
+
labels: {
|
|
814
|
+
value: {
|
|
815
|
+
anchor: "end",
|
|
816
|
+
align: "end",
|
|
817
|
+
offset: 10,
|
|
818
|
+
clamp: false,
|
|
819
|
+
font: { weight: "bold", size: 14 },
|
|
820
|
+
color: VALUE_LABEL_COLOR,
|
|
821
|
+
textAlign: "left",
|
|
822
|
+
// Returns array for multi-line: dollar value on line 1, blank on line 2
|
|
823
|
+
formatter: (v) => [formatDollar(v), ""]
|
|
824
|
+
},
|
|
825
|
+
name: {
|
|
826
|
+
anchor: "end",
|
|
827
|
+
align: "end",
|
|
828
|
+
offset: 10,
|
|
829
|
+
clamp: false,
|
|
830
|
+
font: { size: 12 },
|
|
831
|
+
color: FALLBACK_TICK,
|
|
832
|
+
textAlign: "left",
|
|
833
|
+
// Returns array for multi-line: blank on line 1, bar label on line 2
|
|
834
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
835
|
+
formatter: (_, ctx) => {
|
|
836
|
+
var _a, _b;
|
|
837
|
+
return ["", String((_b = (_a = ctx.chart.data.labels) == null ? void 0 : _a[ctx.dataIndex]) != null ? _b : "")];
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
]
|
|
844
|
+
};
|
|
845
|
+
}, [hasData, incomeVal, expenseVal, brandPrimary, brandSecondary]);
|
|
846
|
+
const options = (0, import_react3.useMemo)(() => ({
|
|
847
|
+
indexAxis: "y",
|
|
848
|
+
responsive: true,
|
|
849
|
+
maintainAspectRatio: false,
|
|
850
|
+
animation: { duration: 800, easing: "easeOutQuart" },
|
|
851
|
+
layout: {
|
|
852
|
+
// Right padding reserves space for the datalabels rendered outside the bar area
|
|
853
|
+
padding: { right: 180, left: 0, top: 10, bottom: 10 }
|
|
854
|
+
},
|
|
855
|
+
plugins: {
|
|
856
|
+
legend: { display: false },
|
|
857
|
+
tooltip: { enabled: false }
|
|
858
|
+
},
|
|
859
|
+
scales: {
|
|
860
|
+
y: {
|
|
861
|
+
display: true,
|
|
862
|
+
grid: { display: false },
|
|
863
|
+
border: { display: false },
|
|
864
|
+
ticks: { display: false }
|
|
865
|
+
},
|
|
866
|
+
x: {
|
|
867
|
+
display: true,
|
|
868
|
+
suggestedMax: maxVal * 1.3,
|
|
869
|
+
grid: { display: false },
|
|
870
|
+
border: { display: false },
|
|
871
|
+
ticks: { display: false }
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
}), [maxVal]);
|
|
875
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
876
|
+
Card,
|
|
877
|
+
{
|
|
878
|
+
className: cn("w-full py-4 sm:py-6 gap-2", className),
|
|
879
|
+
style: { maxWidth: width },
|
|
880
|
+
children: [
|
|
881
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardHeader, { className: "px-3 sm:px-6", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }) }),
|
|
882
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
883
|
+
"div",
|
|
884
|
+
{
|
|
885
|
+
className: "flex items-center justify-center text-muted-foreground",
|
|
886
|
+
style: { height, width: "100%" },
|
|
887
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Spinner, { size: "lg" })
|
|
888
|
+
}
|
|
889
|
+
) : !hasData ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
890
|
+
import_react_chartjs_2.Chart,
|
|
891
|
+
{
|
|
892
|
+
type: "bar",
|
|
893
|
+
data: chartData,
|
|
894
|
+
options,
|
|
895
|
+
plugins: [import_chartjs_plugin_datalabels.default],
|
|
896
|
+
"aria-label": title
|
|
897
|
+
},
|
|
898
|
+
`${brandPrimary}__${brandSecondary}`
|
|
899
|
+
) }) })
|
|
900
|
+
]
|
|
901
|
+
}
|
|
902
|
+
);
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
// src/components/ui/cashflow-bar-chart.tsx
|
|
906
|
+
var import_react4 = require("react");
|
|
907
|
+
var import_chart2 = require("chart.js");
|
|
908
|
+
var import_react_chartjs_22 = require("react-chartjs-2");
|
|
909
|
+
|
|
910
|
+
// src/components/ui/skeleton.tsx
|
|
911
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
912
|
+
function Skeleton(_a) {
|
|
913
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
914
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
915
|
+
"div",
|
|
916
|
+
__spreadValues({
|
|
917
|
+
className: cn("animate-pulse bg-muted", className),
|
|
918
|
+
"data-slot": "skeleton"
|
|
919
|
+
}, props)
|
|
920
|
+
);
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
// src/components/ui/cashflow-bar-chart.tsx
|
|
924
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
925
|
+
import_chart2.Chart.register(import_chart2.CategoryScale, import_chart2.LinearScale, import_chart2.BarElement, import_chart2.Tooltip, import_chart2.Legend);
|
|
926
|
+
function LegendItem({ label, fillColor, strokeColor, strokeWidth = 1.5 }) {
|
|
927
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
928
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
929
|
+
"div",
|
|
930
|
+
{
|
|
931
|
+
style: {
|
|
932
|
+
width: 10,
|
|
933
|
+
height: 10,
|
|
934
|
+
backgroundColor: fillColor,
|
|
935
|
+
border: strokeWidth > 0 ? `${strokeWidth}px solid ${strokeColor}` : "none",
|
|
936
|
+
flexShrink: 0
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
),
|
|
940
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-[11px] text-muted-foreground leading-none", children: label })
|
|
941
|
+
] });
|
|
942
|
+
}
|
|
943
|
+
function ChartLegend({ primary, secondary }) {
|
|
944
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: [
|
|
945
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
946
|
+
LegendItem,
|
|
947
|
+
{
|
|
948
|
+
label: "Income",
|
|
949
|
+
fillColor: hexToRgba(primary, 0.2),
|
|
950
|
+
strokeColor: primary
|
|
951
|
+
}
|
|
952
|
+
),
|
|
953
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
954
|
+
LegendItem,
|
|
955
|
+
{
|
|
956
|
+
label: "Expenses and Liabilities",
|
|
957
|
+
fillColor: hexToRgba(secondary, 0.2),
|
|
958
|
+
strokeColor: secondary
|
|
959
|
+
}
|
|
960
|
+
),
|
|
961
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
962
|
+
LegendItem,
|
|
963
|
+
{
|
|
964
|
+
label: "Surplus Income",
|
|
965
|
+
fillColor: primary,
|
|
966
|
+
strokeColor: primary,
|
|
967
|
+
strokeWidth: 0
|
|
968
|
+
}
|
|
969
|
+
),
|
|
970
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
971
|
+
LegendItem,
|
|
972
|
+
{
|
|
973
|
+
label: "Over Spending",
|
|
974
|
+
fillColor: secondary,
|
|
975
|
+
strokeColor: secondary,
|
|
976
|
+
strokeWidth: 0
|
|
977
|
+
}
|
|
978
|
+
)
|
|
979
|
+
] });
|
|
980
|
+
}
|
|
981
|
+
var PERIODS = [3, 6, 12];
|
|
982
|
+
var FALLBACK_PRIMARY2 = "#33FF99";
|
|
983
|
+
var FALLBACK_SECONDARY2 = "#162029";
|
|
984
|
+
function CashflowBarChart({
|
|
985
|
+
cashflowData,
|
|
986
|
+
title = "Cashflow",
|
|
987
|
+
showLegend = true,
|
|
988
|
+
showXAxis = true,
|
|
989
|
+
showYAxis = true,
|
|
990
|
+
legendPosition = "top",
|
|
991
|
+
defaultPeriod = 6,
|
|
992
|
+
height = 280,
|
|
993
|
+
width = "100%",
|
|
994
|
+
className,
|
|
995
|
+
isLoading = false
|
|
996
|
+
}) {
|
|
997
|
+
const [period, setPeriod] = (0, import_react4.useState)(defaultPeriod);
|
|
998
|
+
const themeVars = useThemeVars();
|
|
999
|
+
const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY2;
|
|
1000
|
+
const brandSecondary = themeVars["--theme-secondary"] || FALLBACK_SECONDARY2;
|
|
1001
|
+
const sliced = (0, import_react4.useMemo)(() => {
|
|
1002
|
+
var _a;
|
|
1003
|
+
if (!((_a = cashflowData == null ? void 0 : cashflowData.data) == null ? void 0 : _a.length)) return null;
|
|
1004
|
+
const count = Math.min(period, cashflowData.data.length);
|
|
1005
|
+
const start = cashflowData.data.length - count;
|
|
1006
|
+
return {
|
|
1007
|
+
months: cashflowData.months.slice(start),
|
|
1008
|
+
data: cashflowData.data.slice(start)
|
|
1009
|
+
};
|
|
1010
|
+
}, [cashflowData, period]);
|
|
1011
|
+
const chartData = (0, import_react4.useMemo)(() => {
|
|
1012
|
+
if (!sliced) return { labels: [], datasets: [] };
|
|
1013
|
+
return {
|
|
1014
|
+
labels: sliced.months,
|
|
1015
|
+
datasets: [
|
|
1016
|
+
{
|
|
1017
|
+
label: "Income",
|
|
1018
|
+
data: sliced.data.map((d) => d.income),
|
|
1019
|
+
backgroundColor: hexToRgba(brandPrimary, 0.2),
|
|
1020
|
+
hoverBackgroundColor: hexToRgba(brandPrimary, 0.35),
|
|
1021
|
+
borderColor: brandPrimary,
|
|
1022
|
+
borderWidth: 1.5,
|
|
1023
|
+
borderRadius: 0,
|
|
1024
|
+
borderSkipped: false,
|
|
1025
|
+
barPercentage: 0.75,
|
|
1026
|
+
categoryPercentage: 0.7
|
|
1027
|
+
},
|
|
1028
|
+
{
|
|
1029
|
+
label: "Expenses and Liabilities",
|
|
1030
|
+
data: sliced.data.map((d) => d.expenses),
|
|
1031
|
+
backgroundColor: hexToRgba(brandSecondary, 0.2),
|
|
1032
|
+
hoverBackgroundColor: hexToRgba(brandSecondary, 0.35),
|
|
1033
|
+
borderColor: brandSecondary,
|
|
1034
|
+
borderWidth: 1.5,
|
|
1035
|
+
borderRadius: 0,
|
|
1036
|
+
borderSkipped: false,
|
|
1037
|
+
barPercentage: 0.75,
|
|
1038
|
+
categoryPercentage: 0.7
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
label: "_thirdBar",
|
|
1042
|
+
data: sliced.data.map(
|
|
1043
|
+
(d) => d.overspending > 0 ? d.overspending : d.surplus
|
|
1044
|
+
),
|
|
1045
|
+
backgroundColor: sliced.data.map(
|
|
1046
|
+
(d) => d.overspending > 0 ? brandSecondary : brandPrimary
|
|
1047
|
+
),
|
|
1048
|
+
hoverBackgroundColor: sliced.data.map(
|
|
1049
|
+
(d) => d.overspending > 0 ? hexToRgba(brandSecondary, 0.8) : hexToRgba(brandPrimary, 0.8)
|
|
1050
|
+
),
|
|
1051
|
+
borderWidth: 0,
|
|
1052
|
+
borderRadius: 0,
|
|
1053
|
+
borderSkipped: false,
|
|
1054
|
+
barPercentage: 0.75,
|
|
1055
|
+
categoryPercentage: 0.7
|
|
1056
|
+
}
|
|
1057
|
+
]
|
|
1058
|
+
};
|
|
1059
|
+
}, [sliced, brandPrimary, brandSecondary]);
|
|
1060
|
+
const options = (0, import_react4.useMemo)(() => ({
|
|
1061
|
+
responsive: true,
|
|
1062
|
+
maintainAspectRatio: false,
|
|
1063
|
+
animation: { duration: 800, easing: "easeOutQuart" },
|
|
1064
|
+
layout: { padding: 0 },
|
|
1065
|
+
plugins: {
|
|
1066
|
+
legend: { display: false },
|
|
1067
|
+
tooltip: {
|
|
1068
|
+
mode: "index",
|
|
1069
|
+
intersect: false,
|
|
1070
|
+
padding: 12,
|
|
1071
|
+
cornerRadius: 0,
|
|
1072
|
+
titleFont: { size: 11, weight: "600" },
|
|
1073
|
+
bodyFont: { size: 12, weight: "500" },
|
|
1074
|
+
callbacks: {
|
|
1075
|
+
title: (tooltipItems) => {
|
|
1076
|
+
var _a, _b, _c, _d;
|
|
1077
|
+
const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
|
|
1078
|
+
if (idx != null && ((_b = sliced == null ? void 0 : sliced.data[idx]) == null ? void 0 : _b.date)) {
|
|
1079
|
+
return formatTooltipDate(sliced.data[idx].date, "monthly");
|
|
1080
|
+
}
|
|
1081
|
+
return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
|
|
1082
|
+
},
|
|
1083
|
+
label: (ctx) => {
|
|
1084
|
+
const val = ctx.raw;
|
|
1085
|
+
if (val === 0) return null;
|
|
1086
|
+
if (ctx.datasetIndex === 2) {
|
|
1087
|
+
const d = sliced == null ? void 0 : sliced.data[ctx.dataIndex];
|
|
1088
|
+
if (!d) return null;
|
|
1089
|
+
const lbl = d.overspending > 0 ? "Over Spending" : "Surplus Income";
|
|
1090
|
+
return ` ${lbl}: $${val.toLocaleString()}`;
|
|
1091
|
+
}
|
|
1092
|
+
return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
},
|
|
1097
|
+
scales: {
|
|
1098
|
+
x: {
|
|
1099
|
+
display: showXAxis,
|
|
1100
|
+
grid: { display: false },
|
|
1101
|
+
border: { display: false },
|
|
1102
|
+
ticks: { font: { size: 10 }, color: FALLBACK_TICK }
|
|
1103
|
+
},
|
|
1104
|
+
y: {
|
|
1105
|
+
display: showYAxis,
|
|
1106
|
+
grid: { display: false },
|
|
1107
|
+
border: { display: false },
|
|
1108
|
+
ticks: {
|
|
1109
|
+
font: { size: 10 },
|
|
1110
|
+
color: FALLBACK_TICK,
|
|
1111
|
+
maxTicksLimit: 5,
|
|
1112
|
+
padding: 8,
|
|
1113
|
+
callback: (v) => `$${Number(v).toLocaleString()}`
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
}), [showXAxis, showYAxis, sliced]);
|
|
1118
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
1119
|
+
Card,
|
|
1120
|
+
{
|
|
1121
|
+
className: cn("w-full py-4 sm:py-6 gap-2", className),
|
|
1122
|
+
style: { maxWidth: width },
|
|
1123
|
+
children: [
|
|
1124
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
|
|
1125
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
|
|
1126
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: PERIODS.map((p) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1127
|
+
ChartPeriodButton,
|
|
1128
|
+
{
|
|
1129
|
+
period: p,
|
|
1130
|
+
active: period === p,
|
|
1131
|
+
onClick: () => setPeriod(p)
|
|
1132
|
+
},
|
|
1133
|
+
p
|
|
1134
|
+
)) }) })
|
|
1135
|
+
] }),
|
|
1136
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Skeleton, { style: { height, width: "100%" } }) : !sliced ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1137
|
+
showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChartLegend, { primary: brandPrimary, secondary: brandSecondary }),
|
|
1138
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1139
|
+
import_react_chartjs_22.Chart,
|
|
1140
|
+
{
|
|
1141
|
+
type: "bar",
|
|
1142
|
+
data: chartData,
|
|
1143
|
+
options,
|
|
1144
|
+
"aria-label": title
|
|
1145
|
+
},
|
|
1146
|
+
`${brandPrimary}__${brandSecondary}`
|
|
1147
|
+
) }),
|
|
1148
|
+
showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChartLegend, { primary: brandPrimary, secondary: brandSecondary })
|
|
1149
|
+
] }) })
|
|
1150
|
+
]
|
|
1151
|
+
}
|
|
1152
|
+
);
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
// src/components/ui/expense-bar-chart.tsx
|
|
1156
|
+
var import_react5 = require("react");
|
|
1157
|
+
var import_chart3 = require("chart.js");
|
|
1158
|
+
var import_react_chartjs_23 = require("react-chartjs-2");
|
|
1159
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1160
|
+
import_chart3.Chart.register(import_chart3.CategoryScale, import_chart3.LinearScale, import_chart3.BarElement, import_chart3.Tooltip, import_chart3.Legend);
|
|
1161
|
+
var FALLBACK_SECONDARY3 = "#162029";
|
|
1162
|
+
function ExpenseBarChart({
|
|
1163
|
+
expenseData,
|
|
1164
|
+
title = "Expenses",
|
|
1165
|
+
showLegend = true,
|
|
1166
|
+
showXAxis = true,
|
|
1167
|
+
showYAxis = true,
|
|
1168
|
+
legendPosition = "top",
|
|
1169
|
+
defaultPeriod = 6,
|
|
1170
|
+
granularity = "monthly",
|
|
1171
|
+
height = 280,
|
|
1172
|
+
width = "100%",
|
|
1173
|
+
className,
|
|
1174
|
+
isLoading = false
|
|
1175
|
+
}) {
|
|
1176
|
+
const periods = CHART_PERIODS[granularity];
|
|
1177
|
+
const [period, setPeriod] = (0, import_react5.useState)(defaultPeriod);
|
|
1178
|
+
const isFirstRender = (0, import_react5.useRef)(true);
|
|
1179
|
+
(0, import_react5.useEffect)(() => {
|
|
1180
|
+
if (isFirstRender.current) {
|
|
1181
|
+
isFirstRender.current = false;
|
|
1182
|
+
return;
|
|
1183
|
+
}
|
|
1184
|
+
setPeriod(CHART_PERIODS[granularity][0]);
|
|
1185
|
+
}, [granularity]);
|
|
1186
|
+
const themeVars = useThemeVars();
|
|
1187
|
+
const brandSecondary = themeVars["--theme-secondary"] || FALLBACK_SECONDARY3;
|
|
1188
|
+
const sliced = (0, import_react5.useMemo)(() => {
|
|
1189
|
+
var _a, _b;
|
|
1190
|
+
if (!((_a = expenseData == null ? void 0 : expenseData.months) == null ? void 0 : _a.length) || !expenseData.datasets.length) return null;
|
|
1191
|
+
const count = Math.min(CHART_SLICE_COUNT[granularity][period], expenseData.months.length);
|
|
1192
|
+
const start = expenseData.months.length - count;
|
|
1193
|
+
return {
|
|
1194
|
+
months: expenseData.months.slice(start),
|
|
1195
|
+
dates: (_b = expenseData.dates) == null ? void 0 : _b.slice(start),
|
|
1196
|
+
datasets: expenseData.datasets.map((ds) => __spreadProps(__spreadValues({}, ds), {
|
|
1197
|
+
data: ds.data.slice(start)
|
|
1198
|
+
}))
|
|
1199
|
+
};
|
|
1200
|
+
}, [expenseData, period, granularity]);
|
|
1201
|
+
const datasetColors = (0, import_react5.useMemo)(
|
|
1202
|
+
() => {
|
|
1203
|
+
var _a;
|
|
1204
|
+
return (_a = sliced == null ? void 0 : sliced.datasets.map(
|
|
1205
|
+
(_, i) => hexToRgba(brandSecondary, DATASET_ALPHAS[i % DATASET_ALPHAS.length])
|
|
1206
|
+
)) != null ? _a : [];
|
|
1207
|
+
},
|
|
1208
|
+
[sliced, brandSecondary]
|
|
1209
|
+
);
|
|
1210
|
+
const chartData = (0, import_react5.useMemo)(() => {
|
|
1211
|
+
if (!sliced) return { labels: [], datasets: [] };
|
|
1212
|
+
return {
|
|
1213
|
+
labels: sliced.months,
|
|
1214
|
+
datasets: sliced.datasets.map((ds, i) => ({
|
|
1215
|
+
label: ds.label,
|
|
1216
|
+
data: ds.data,
|
|
1217
|
+
backgroundColor: datasetColors[i],
|
|
1218
|
+
hoverBackgroundColor: hexToRgba(
|
|
1219
|
+
brandSecondary,
|
|
1220
|
+
Math.min(DATASET_ALPHAS[i % DATASET_ALPHAS.length] + 0.15, 1)
|
|
1221
|
+
),
|
|
1222
|
+
borderWidth: 0,
|
|
1223
|
+
borderRadius: 0,
|
|
1224
|
+
borderSkipped: false,
|
|
1225
|
+
barPercentage: 0.75,
|
|
1226
|
+
categoryPercentage: 0.7,
|
|
1227
|
+
stack: "expense"
|
|
1228
|
+
}))
|
|
1229
|
+
};
|
|
1230
|
+
}, [sliced, datasetColors, brandSecondary]);
|
|
1231
|
+
const options = (0, import_react5.useMemo)(() => ({
|
|
1232
|
+
responsive: true,
|
|
1233
|
+
maintainAspectRatio: false,
|
|
1234
|
+
animation: { duration: 800, easing: "easeOutQuart" },
|
|
1235
|
+
layout: { padding: 0 },
|
|
1236
|
+
plugins: {
|
|
1237
|
+
legend: { display: false },
|
|
1238
|
+
tooltip: {
|
|
1239
|
+
mode: "index",
|
|
1240
|
+
intersect: false,
|
|
1241
|
+
padding: 12,
|
|
1242
|
+
cornerRadius: 0,
|
|
1243
|
+
titleFont: { size: 11, weight: "600" },
|
|
1244
|
+
bodyFont: { size: 12, weight: "500" },
|
|
1245
|
+
callbacks: {
|
|
1246
|
+
title: (tooltipItems) => {
|
|
1247
|
+
var _a, _b, _c, _d;
|
|
1248
|
+
const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
|
|
1249
|
+
if (idx != null && ((_b = sliced == null ? void 0 : sliced.dates) == null ? void 0 : _b[idx])) {
|
|
1250
|
+
return formatTooltipDate(sliced.dates[idx], granularity);
|
|
1251
|
+
}
|
|
1252
|
+
return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
|
|
1253
|
+
},
|
|
1254
|
+
label: (ctx) => {
|
|
1255
|
+
const val = ctx.raw;
|
|
1256
|
+
if (val === 0) return null;
|
|
1257
|
+
return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
},
|
|
1262
|
+
scales: {
|
|
1263
|
+
x: {
|
|
1264
|
+
display: showXAxis,
|
|
1265
|
+
stacked: true,
|
|
1266
|
+
grid: { display: false },
|
|
1267
|
+
border: { display: false },
|
|
1268
|
+
ticks: { font: { size: 10 }, color: FALLBACK_TICK }
|
|
1269
|
+
},
|
|
1270
|
+
y: {
|
|
1271
|
+
display: showYAxis,
|
|
1272
|
+
stacked: true,
|
|
1273
|
+
grid: { display: false },
|
|
1274
|
+
border: { display: false },
|
|
1275
|
+
ticks: {
|
|
1276
|
+
font: { size: 10 },
|
|
1277
|
+
color: FALLBACK_TICK,
|
|
1278
|
+
maxTicksLimit: 5,
|
|
1279
|
+
padding: 8,
|
|
1280
|
+
callback: (v) => `$${Number(v).toLocaleString()}`
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
}
|
|
1284
|
+
}), [showXAxis, showYAxis, sliced, granularity]);
|
|
1285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1286
|
+
Card,
|
|
1287
|
+
{
|
|
1288
|
+
className: cn("w-full py-4 sm:py-6 gap-2", className),
|
|
1289
|
+
style: { maxWidth: width },
|
|
1290
|
+
children: [
|
|
1291
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
|
|
1292
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
|
|
1293
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: periods.map((p) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1294
|
+
ChartPeriodButton,
|
|
1295
|
+
{
|
|
1296
|
+
period: p,
|
|
1297
|
+
active: period === p,
|
|
1298
|
+
onClick: () => setPeriod(p)
|
|
1299
|
+
},
|
|
1300
|
+
p
|
|
1301
|
+
)) }) })
|
|
1302
|
+
] }),
|
|
1303
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Skeleton, { style: { height, width: "100%" } }) : !sliced ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1304
|
+
showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) }),
|
|
1305
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1306
|
+
import_react_chartjs_23.Chart,
|
|
1307
|
+
{
|
|
1308
|
+
type: "bar",
|
|
1309
|
+
data: chartData,
|
|
1310
|
+
options,
|
|
1311
|
+
"aria-label": title
|
|
1312
|
+
},
|
|
1313
|
+
brandSecondary
|
|
1314
|
+
) }),
|
|
1315
|
+
showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pt-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) })
|
|
1316
|
+
] }) })
|
|
1317
|
+
]
|
|
1318
|
+
}
|
|
1319
|
+
);
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
// src/components/ui/income-bar-chart.tsx
|
|
1323
|
+
var import_react6 = require("react");
|
|
1324
|
+
var import_chart4 = require("chart.js");
|
|
1325
|
+
var import_react_chartjs_24 = require("react-chartjs-2");
|
|
1326
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1327
|
+
import_chart4.Chart.register(import_chart4.CategoryScale, import_chart4.LinearScale, import_chart4.BarElement, import_chart4.Tooltip, import_chart4.Legend);
|
|
1328
|
+
var FALLBACK_PRIMARY3 = "#33FF99";
|
|
1329
|
+
function IncomeBarChart({
|
|
1330
|
+
incomeData,
|
|
1331
|
+
title = "Income",
|
|
1332
|
+
showLegend = true,
|
|
1333
|
+
showXAxis = true,
|
|
1334
|
+
showYAxis = true,
|
|
1335
|
+
legendPosition = "top",
|
|
1336
|
+
defaultPeriod = 6,
|
|
1337
|
+
granularity = "monthly",
|
|
1338
|
+
height = 280,
|
|
1339
|
+
width = "100%",
|
|
1340
|
+
className,
|
|
1341
|
+
isLoading = false
|
|
1342
|
+
}) {
|
|
1343
|
+
const periods = CHART_PERIODS[granularity];
|
|
1344
|
+
const [period, setPeriod] = (0, import_react6.useState)(defaultPeriod);
|
|
1345
|
+
const isFirstRender = (0, import_react6.useRef)(true);
|
|
1346
|
+
(0, import_react6.useEffect)(() => {
|
|
1347
|
+
if (isFirstRender.current) {
|
|
1348
|
+
isFirstRender.current = false;
|
|
1349
|
+
return;
|
|
1350
|
+
}
|
|
1351
|
+
setPeriod(CHART_PERIODS[granularity][0]);
|
|
1352
|
+
}, [granularity]);
|
|
1353
|
+
const themeVars = useThemeVars();
|
|
1354
|
+
const brandPrimary = themeVars["--theme-primary"] || FALLBACK_PRIMARY3;
|
|
1355
|
+
const sliced = (0, import_react6.useMemo)(() => {
|
|
1356
|
+
var _a, _b;
|
|
1357
|
+
if (!((_a = incomeData == null ? void 0 : incomeData.months) == null ? void 0 : _a.length) || !incomeData.datasets.length) return null;
|
|
1358
|
+
const count = Math.min(CHART_SLICE_COUNT[granularity][period], incomeData.months.length);
|
|
1359
|
+
const start = incomeData.months.length - count;
|
|
1360
|
+
return {
|
|
1361
|
+
months: incomeData.months.slice(start),
|
|
1362
|
+
dates: (_b = incomeData.dates) == null ? void 0 : _b.slice(start),
|
|
1363
|
+
datasets: incomeData.datasets.map((ds) => __spreadProps(__spreadValues({}, ds), {
|
|
1364
|
+
data: ds.data.slice(start)
|
|
1365
|
+
}))
|
|
1366
|
+
};
|
|
1367
|
+
}, [incomeData, period, granularity]);
|
|
1368
|
+
const datasetColors = (0, import_react6.useMemo)(
|
|
1369
|
+
() => {
|
|
1370
|
+
var _a;
|
|
1371
|
+
return (_a = sliced == null ? void 0 : sliced.datasets.map(
|
|
1372
|
+
(_, i) => hexToRgba(brandPrimary, DATASET_ALPHAS[i % DATASET_ALPHAS.length])
|
|
1373
|
+
)) != null ? _a : [];
|
|
1374
|
+
},
|
|
1375
|
+
[sliced, brandPrimary]
|
|
1376
|
+
);
|
|
1377
|
+
const chartData = (0, import_react6.useMemo)(() => {
|
|
1378
|
+
if (!sliced) return { labels: [], datasets: [] };
|
|
1379
|
+
return {
|
|
1380
|
+
labels: sliced.months,
|
|
1381
|
+
datasets: sliced.datasets.map((ds, i) => ({
|
|
1382
|
+
label: ds.label,
|
|
1383
|
+
data: ds.data,
|
|
1384
|
+
backgroundColor: datasetColors[i],
|
|
1385
|
+
hoverBackgroundColor: hexToRgba(
|
|
1386
|
+
brandPrimary,
|
|
1387
|
+
Math.min(DATASET_ALPHAS[i % DATASET_ALPHAS.length] + 0.15, 1)
|
|
1388
|
+
),
|
|
1389
|
+
borderWidth: 0,
|
|
1390
|
+
borderRadius: 0,
|
|
1391
|
+
borderSkipped: false,
|
|
1392
|
+
barPercentage: 0.75,
|
|
1393
|
+
categoryPercentage: 0.7,
|
|
1394
|
+
stack: "income"
|
|
1395
|
+
}))
|
|
1396
|
+
};
|
|
1397
|
+
}, [sliced, datasetColors, brandPrimary]);
|
|
1398
|
+
const options = (0, import_react6.useMemo)(() => ({
|
|
1399
|
+
responsive: true,
|
|
1400
|
+
maintainAspectRatio: false,
|
|
1401
|
+
animation: { duration: 800, easing: "easeOutQuart" },
|
|
1402
|
+
layout: { padding: 0 },
|
|
1403
|
+
plugins: {
|
|
1404
|
+
legend: { display: false },
|
|
1405
|
+
tooltip: {
|
|
1406
|
+
mode: "index",
|
|
1407
|
+
intersect: false,
|
|
1408
|
+
padding: 12,
|
|
1409
|
+
cornerRadius: 0,
|
|
1410
|
+
titleFont: { size: 11, weight: "600" },
|
|
1411
|
+
bodyFont: { size: 12, weight: "500" },
|
|
1412
|
+
callbacks: {
|
|
1413
|
+
title: (tooltipItems) => {
|
|
1414
|
+
var _a, _b, _c, _d;
|
|
1415
|
+
const idx = (_a = tooltipItems[0]) == null ? void 0 : _a.dataIndex;
|
|
1416
|
+
if (idx != null && ((_b = sliced == null ? void 0 : sliced.dates) == null ? void 0 : _b[idx])) {
|
|
1417
|
+
return formatTooltipDate(sliced.dates[idx], granularity);
|
|
1418
|
+
}
|
|
1419
|
+
return (_d = (_c = tooltipItems[0]) == null ? void 0 : _c.label) != null ? _d : "";
|
|
1420
|
+
},
|
|
1421
|
+
label: (ctx) => {
|
|
1422
|
+
const val = ctx.raw;
|
|
1423
|
+
if (val === 0) return null;
|
|
1424
|
+
return ` ${ctx.dataset.label}: $${val.toLocaleString()}`;
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
},
|
|
1429
|
+
scales: {
|
|
1430
|
+
x: {
|
|
1431
|
+
display: showXAxis,
|
|
1432
|
+
stacked: true,
|
|
1433
|
+
grid: { display: false },
|
|
1434
|
+
border: { display: false },
|
|
1435
|
+
ticks: { font: { size: 10 }, color: FALLBACK_TICK }
|
|
1436
|
+
},
|
|
1437
|
+
y: {
|
|
1438
|
+
display: showYAxis,
|
|
1439
|
+
stacked: true,
|
|
1440
|
+
grid: { display: false },
|
|
1441
|
+
border: { display: false },
|
|
1442
|
+
ticks: {
|
|
1443
|
+
font: { size: 10 },
|
|
1444
|
+
color: FALLBACK_TICK,
|
|
1445
|
+
maxTicksLimit: 5,
|
|
1446
|
+
padding: 8,
|
|
1447
|
+
callback: (v) => `$${Number(v).toLocaleString()}`
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
522
1450
|
}
|
|
523
|
-
}
|
|
524
|
-
)
|
|
525
|
-
|
|
1451
|
+
}), [showXAxis, showYAxis, sliced, granularity]);
|
|
1452
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
1453
|
+
Card,
|
|
1454
|
+
{
|
|
1455
|
+
className: cn("w-full py-4 sm:py-6 gap-2", className),
|
|
1456
|
+
style: { maxWidth: width },
|
|
1457
|
+
children: [
|
|
1458
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(CardHeader, { className: "px-3 sm:px-6", children: [
|
|
1459
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CardTitle, { className: "text-sm sm:text-base", children: title }),
|
|
1460
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CardAction, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex gap-0.5 sm:gap-1", children: periods.map((p) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1461
|
+
ChartPeriodButton,
|
|
1462
|
+
{
|
|
1463
|
+
period: p,
|
|
1464
|
+
active: period === p,
|
|
1465
|
+
onClick: () => setPeriod(p)
|
|
1466
|
+
},
|
|
1467
|
+
p
|
|
1468
|
+
)) }) })
|
|
1469
|
+
] }),
|
|
1470
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CardContent, { className: "px-3 sm:px-6", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Skeleton, { style: { height, width: "100%" } }) : !sliced ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Empty, { className: "flex-none p-4", style: { height }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(EmptyDescription, { children: "No data available" }) }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1471
|
+
showLegend && legendPosition === "top" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pb-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) }),
|
|
1472
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { height, width: "100%", position: "relative" }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1473
|
+
import_react_chartjs_24.Chart,
|
|
1474
|
+
{
|
|
1475
|
+
type: "bar",
|
|
1476
|
+
data: chartData,
|
|
1477
|
+
options,
|
|
1478
|
+
"aria-label": title
|
|
1479
|
+
},
|
|
1480
|
+
brandPrimary
|
|
1481
|
+
) }),
|
|
1482
|
+
showLegend && legendPosition === "bottom" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex flex-wrap gap-x-3 gap-y-1.5 pt-2", children: sliced.datasets.map((ds, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ChartLegendItem, { label: ds.label, color: datasetColors[i] }, ds.label)) })
|
|
1483
|
+
] }) })
|
|
1484
|
+
]
|
|
1485
|
+
}
|
|
1486
|
+
);
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
// src/components/ui/accordion.tsx
|
|
1490
|
+
var import_lucide_react3 = require("lucide-react");
|
|
1491
|
+
var import_accordion = require("@base-ui/react/accordion");
|
|
1492
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1493
|
+
function Accordion(props) {
|
|
1494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_accordion.Accordion.Root, __spreadValues({ "data-slot": "accordion" }, props));
|
|
1495
|
+
}
|
|
1496
|
+
function AccordionItem(_a) {
|
|
1497
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1498
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1499
|
+
import_accordion.Accordion.Item,
|
|
1500
|
+
__spreadValues({
|
|
1501
|
+
className: cn("border-b", className),
|
|
1502
|
+
"data-slot": "accordion-item"
|
|
1503
|
+
}, props)
|
|
1504
|
+
);
|
|
1505
|
+
}
|
|
1506
|
+
function AccordionTrigger(_a) {
|
|
526
1507
|
var _b = _a, {
|
|
527
1508
|
className,
|
|
528
|
-
variant,
|
|
529
|
-
size,
|
|
530
|
-
asChild = false,
|
|
531
|
-
loading = false,
|
|
532
|
-
disabled,
|
|
533
1509
|
children
|
|
534
1510
|
} = _b, props = __objRest(_b, [
|
|
535
1511
|
"className",
|
|
536
|
-
"variant",
|
|
537
|
-
"size",
|
|
538
|
-
"asChild",
|
|
539
|
-
"loading",
|
|
540
|
-
"disabled",
|
|
541
1512
|
"children"
|
|
542
1513
|
]);
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
546
|
-
Comp,
|
|
1514
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_accordion.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
1515
|
+
import_accordion.Accordion.Trigger,
|
|
547
1516
|
__spreadProps(__spreadValues({
|
|
548
|
-
className: cn(
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
1517
|
+
className: cn(
|
|
1518
|
+
// layout
|
|
1519
|
+
"flex flex-1 items-center justify-between gap-4 py-4 text-left",
|
|
1520
|
+
// typography
|
|
1521
|
+
"text-sm font-medium",
|
|
1522
|
+
// base
|
|
1523
|
+
"rounded-none outline-none transition-[color,opacity]",
|
|
1524
|
+
// interactive states
|
|
1525
|
+
"hover:underline",
|
|
1526
|
+
"focus-visible:ring-2 focus-visible:ring-foreground/30",
|
|
1527
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
1528
|
+
// chevron rotation when open
|
|
1529
|
+
"[&[data-panel-open]>svg]:rotate-180",
|
|
1530
|
+
className
|
|
1531
|
+
),
|
|
1532
|
+
"data-slot": "accordion-trigger"
|
|
554
1533
|
}, props), {
|
|
555
|
-
children:
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
]
|
|
1534
|
+
children: [
|
|
1535
|
+
children,
|
|
1536
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react3.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
|
|
1537
|
+
]
|
|
1538
|
+
})
|
|
1539
|
+
) });
|
|
1540
|
+
}
|
|
1541
|
+
function AccordionContent(_a) {
|
|
1542
|
+
var _b = _a, {
|
|
1543
|
+
className,
|
|
1544
|
+
children
|
|
1545
|
+
} = _b, props = __objRest(_b, [
|
|
1546
|
+
"className",
|
|
1547
|
+
"children"
|
|
1548
|
+
]);
|
|
1549
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1550
|
+
import_accordion.Accordion.Panel,
|
|
1551
|
+
__spreadProps(__spreadValues({
|
|
1552
|
+
className: "overflow-hidden text-sm h-(--accordion-panel-height) transition-[height] duration-200 ease-out data-starting-style:h-0 data-ending-style:h-0",
|
|
1553
|
+
"data-slot": "accordion-content"
|
|
1554
|
+
}, props), {
|
|
1555
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: cn("pb-4 text-muted-foreground", className), children })
|
|
559
1556
|
})
|
|
560
1557
|
);
|
|
561
|
-
}
|
|
1558
|
+
}
|
|
562
1559
|
|
|
563
1560
|
// src/components/ui/alert-dialog.tsx
|
|
564
|
-
var
|
|
1561
|
+
var import_alert_dialog = require("@base-ui/react/alert-dialog");
|
|
1562
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
565
1563
|
function AlertDialog(_a) {
|
|
566
1564
|
var props = __objRest(_a, []);
|
|
567
|
-
return /* @__PURE__ */ (0,
|
|
1565
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_alert_dialog.AlertDialog.Root, __spreadValues({ "data-slot": "alert-dialog" }, props));
|
|
568
1566
|
}
|
|
569
1567
|
function AlertDialogTrigger(_a) {
|
|
570
1568
|
var props = __objRest(_a, []);
|
|
571
|
-
return /* @__PURE__ */ (0,
|
|
1569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_alert_dialog.AlertDialog.Trigger, __spreadValues({ "data-slot": "alert-dialog-trigger" }, props));
|
|
572
1570
|
}
|
|
573
1571
|
function AlertDialogPortal(_a) {
|
|
574
1572
|
var props = __objRest(_a, []);
|
|
575
|
-
return /* @__PURE__ */ (0,
|
|
1573
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_alert_dialog.AlertDialog.Portal, __spreadValues({ "data-slot": "alert-dialog-portal" }, props));
|
|
576
1574
|
}
|
|
577
1575
|
function AlertDialogOverlay(_a) {
|
|
578
1576
|
var _b = _a, {
|
|
@@ -580,7 +1578,7 @@ function AlertDialogOverlay(_a) {
|
|
|
580
1578
|
} = _b, props = __objRest(_b, [
|
|
581
1579
|
"className"
|
|
582
1580
|
]);
|
|
583
|
-
return /* @__PURE__ */ (0,
|
|
1581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
584
1582
|
import_alert_dialog.AlertDialog.Backdrop,
|
|
585
1583
|
__spreadValues({
|
|
586
1584
|
className: cn(
|
|
@@ -603,9 +1601,9 @@ function AlertDialogContent(_a) {
|
|
|
603
1601
|
"style"
|
|
604
1602
|
]);
|
|
605
1603
|
const themeVars = useThemeVars();
|
|
606
|
-
return /* @__PURE__ */ (0,
|
|
607
|
-
/* @__PURE__ */ (0,
|
|
608
|
-
/* @__PURE__ */ (0,
|
|
1604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(AlertDialogPortal, { children: [
|
|
1605
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AlertDialogOverlay, {}),
|
|
1606
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
609
1607
|
import_alert_dialog.AlertDialog.Popup,
|
|
610
1608
|
__spreadValues({
|
|
611
1609
|
className: cn(
|
|
@@ -626,7 +1624,7 @@ function AlertDialogHeader(_a) {
|
|
|
626
1624
|
} = _b, props = __objRest(_b, [
|
|
627
1625
|
"className"
|
|
628
1626
|
]);
|
|
629
|
-
return /* @__PURE__ */ (0,
|
|
1627
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
630
1628
|
"div",
|
|
631
1629
|
__spreadValues({
|
|
632
1630
|
className: cn(
|
|
@@ -643,7 +1641,7 @@ function AlertDialogFooter(_a) {
|
|
|
643
1641
|
} = _b, props = __objRest(_b, [
|
|
644
1642
|
"className"
|
|
645
1643
|
]);
|
|
646
|
-
return /* @__PURE__ */ (0,
|
|
1644
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
647
1645
|
"div",
|
|
648
1646
|
__spreadValues({
|
|
649
1647
|
className: cn(
|
|
@@ -661,7 +1659,7 @@ function AlertDialogTitle(_a) {
|
|
|
661
1659
|
} = _b, props = __objRest(_b, [
|
|
662
1660
|
"className"
|
|
663
1661
|
]);
|
|
664
|
-
return /* @__PURE__ */ (0,
|
|
1662
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
665
1663
|
import_alert_dialog.AlertDialog.Title,
|
|
666
1664
|
__spreadValues({
|
|
667
1665
|
className: cn(
|
|
@@ -678,7 +1676,7 @@ function AlertDialogDescription(_a) {
|
|
|
678
1676
|
} = _b, props = __objRest(_b, [
|
|
679
1677
|
"className"
|
|
680
1678
|
]);
|
|
681
|
-
return /* @__PURE__ */ (0,
|
|
1679
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
682
1680
|
import_alert_dialog.AlertDialog.Description,
|
|
683
1681
|
__spreadValues({
|
|
684
1682
|
className: cn(
|
|
@@ -695,7 +1693,7 @@ function AlertDialogMedia(_a) {
|
|
|
695
1693
|
} = _b, props = __objRest(_b, [
|
|
696
1694
|
"className"
|
|
697
1695
|
]);
|
|
698
|
-
return /* @__PURE__ */ (0,
|
|
1696
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
699
1697
|
"div",
|
|
700
1698
|
__spreadValues({
|
|
701
1699
|
className: cn(
|
|
@@ -717,7 +1715,7 @@ function AlertDialogAction(_a) {
|
|
|
717
1715
|
"variant",
|
|
718
1716
|
"size"
|
|
719
1717
|
]);
|
|
720
|
-
return /* @__PURE__ */ (0,
|
|
1718
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
721
1719
|
import_alert_dialog.AlertDialog.Close,
|
|
722
1720
|
__spreadValues({
|
|
723
1721
|
className: cn(buttonVariants({ variant, size }), className),
|
|
@@ -735,7 +1733,7 @@ function AlertDialogCancel(_a) {
|
|
|
735
1733
|
"variant",
|
|
736
1734
|
"size"
|
|
737
1735
|
]);
|
|
738
|
-
return /* @__PURE__ */ (0,
|
|
1736
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
739
1737
|
import_alert_dialog.AlertDialog.Close,
|
|
740
1738
|
__spreadValues({
|
|
741
1739
|
className: cn(buttonVariants({ variant, size }), className),
|
|
@@ -745,9 +1743,9 @@ function AlertDialogCancel(_a) {
|
|
|
745
1743
|
}
|
|
746
1744
|
|
|
747
1745
|
// src/components/ui/alert.tsx
|
|
748
|
-
var
|
|
749
|
-
var
|
|
750
|
-
var alertVariants = (0,
|
|
1746
|
+
var import_class_variance_authority4 = require("class-variance-authority");
|
|
1747
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1748
|
+
var alertVariants = (0, import_class_variance_authority4.cva)(
|
|
751
1749
|
"relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
|
|
752
1750
|
{
|
|
753
1751
|
variants: {
|
|
@@ -772,7 +1770,7 @@ function Alert(_a) {
|
|
|
772
1770
|
"className",
|
|
773
1771
|
"variant"
|
|
774
1772
|
]);
|
|
775
|
-
return /* @__PURE__ */ (0,
|
|
1773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
776
1774
|
"div",
|
|
777
1775
|
__spreadValues({
|
|
778
1776
|
className: cn(alertVariants({ variant }), className),
|
|
@@ -783,7 +1781,7 @@ function Alert(_a) {
|
|
|
783
1781
|
}
|
|
784
1782
|
function AlertTitle(_a) {
|
|
785
1783
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
786
|
-
return /* @__PURE__ */ (0,
|
|
1784
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
787
1785
|
"div",
|
|
788
1786
|
__spreadValues({
|
|
789
1787
|
className: cn(
|
|
@@ -800,7 +1798,7 @@ function AlertDescription(_a) {
|
|
|
800
1798
|
} = _b, props = __objRest(_b, [
|
|
801
1799
|
"className"
|
|
802
1800
|
]);
|
|
803
|
-
return /* @__PURE__ */ (0,
|
|
1801
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
804
1802
|
"div",
|
|
805
1803
|
__spreadValues({
|
|
806
1804
|
className: cn(
|
|
@@ -814,7 +1812,7 @@ function AlertDescription(_a) {
|
|
|
814
1812
|
|
|
815
1813
|
// src/components/ui/avatar.tsx
|
|
816
1814
|
var import_avatar = require("@base-ui/react/avatar");
|
|
817
|
-
var
|
|
1815
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
818
1816
|
function Avatar(_a) {
|
|
819
1817
|
var _b = _a, {
|
|
820
1818
|
className,
|
|
@@ -823,7 +1821,7 @@ function Avatar(_a) {
|
|
|
823
1821
|
"className",
|
|
824
1822
|
"size"
|
|
825
1823
|
]);
|
|
826
|
-
return /* @__PURE__ */ (0,
|
|
1824
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
827
1825
|
import_avatar.Avatar.Root,
|
|
828
1826
|
__spreadValues({
|
|
829
1827
|
className: cn(
|
|
@@ -841,7 +1839,7 @@ function AvatarImage(_a) {
|
|
|
841
1839
|
} = _b, props = __objRest(_b, [
|
|
842
1840
|
"className"
|
|
843
1841
|
]);
|
|
844
|
-
return /* @__PURE__ */ (0,
|
|
1842
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
845
1843
|
import_avatar.Avatar.Image,
|
|
846
1844
|
__spreadValues({
|
|
847
1845
|
className: cn("aspect-square size-full rounded-full", className),
|
|
@@ -855,7 +1853,7 @@ function AvatarFallback(_a) {
|
|
|
855
1853
|
} = _b, props = __objRest(_b, [
|
|
856
1854
|
"className"
|
|
857
1855
|
]);
|
|
858
|
-
return /* @__PURE__ */ (0,
|
|
1856
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
859
1857
|
import_avatar.Avatar.Fallback,
|
|
860
1858
|
__spreadValues({
|
|
861
1859
|
className: cn(
|
|
@@ -868,7 +1866,7 @@ function AvatarFallback(_a) {
|
|
|
868
1866
|
}
|
|
869
1867
|
function AvatarBadge(_a) {
|
|
870
1868
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
871
|
-
return /* @__PURE__ */ (0,
|
|
1869
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
872
1870
|
"span",
|
|
873
1871
|
__spreadValues({
|
|
874
1872
|
className: cn(
|
|
@@ -884,7 +1882,7 @@ function AvatarBadge(_a) {
|
|
|
884
1882
|
}
|
|
885
1883
|
function AvatarGroup(_a) {
|
|
886
1884
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
887
|
-
return /* @__PURE__ */ (0,
|
|
1885
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
888
1886
|
"div",
|
|
889
1887
|
__spreadValues({
|
|
890
1888
|
className: cn(
|
|
@@ -901,7 +1899,7 @@ function AvatarGroupCount(_a) {
|
|
|
901
1899
|
} = _b, props = __objRest(_b, [
|
|
902
1900
|
"className"
|
|
903
1901
|
]);
|
|
904
|
-
return /* @__PURE__ */ (0,
|
|
1902
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
905
1903
|
"div",
|
|
906
1904
|
__spreadValues({
|
|
907
1905
|
className: cn(
|
|
@@ -914,9 +1912,9 @@ function AvatarGroupCount(_a) {
|
|
|
914
1912
|
}
|
|
915
1913
|
|
|
916
1914
|
// src/components/ui/badge.tsx
|
|
917
|
-
var
|
|
918
|
-
var
|
|
919
|
-
var badgeVariants = (0,
|
|
1915
|
+
var import_class_variance_authority5 = require("class-variance-authority");
|
|
1916
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1917
|
+
var badgeVariants = (0, import_class_variance_authority5.cva)(
|
|
920
1918
|
"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",
|
|
921
1919
|
{
|
|
922
1920
|
variants: {
|
|
@@ -945,7 +1943,7 @@ function Badge(_a) {
|
|
|
945
1943
|
"asChild"
|
|
946
1944
|
]);
|
|
947
1945
|
const Comp = asChild ? Slot : "span";
|
|
948
|
-
return /* @__PURE__ */ (0,
|
|
1946
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
949
1947
|
Comp,
|
|
950
1948
|
__spreadValues({
|
|
951
1949
|
className: cn(badgeVariants({ variant }), className),
|
|
@@ -956,10 +1954,10 @@ function Badge(_a) {
|
|
|
956
1954
|
}
|
|
957
1955
|
|
|
958
1956
|
// src/components/ui/calendar.tsx
|
|
959
|
-
var
|
|
960
|
-
var
|
|
1957
|
+
var React7 = __toESM(require("react"));
|
|
1958
|
+
var import_lucide_react4 = require("lucide-react");
|
|
961
1959
|
var import_react_day_picker = require("react-day-picker");
|
|
962
|
-
var
|
|
1960
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
963
1961
|
function CalendarRoot(_a) {
|
|
964
1962
|
var _b = _a, {
|
|
965
1963
|
className,
|
|
@@ -968,7 +1966,7 @@ function CalendarRoot(_a) {
|
|
|
968
1966
|
"className",
|
|
969
1967
|
"rootRef"
|
|
970
1968
|
]);
|
|
971
|
-
return /* @__PURE__ */ (0,
|
|
1969
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
972
1970
|
"div",
|
|
973
1971
|
__spreadValues({
|
|
974
1972
|
className: cn(className),
|
|
@@ -986,17 +1984,17 @@ function CalendarChevron(_a) {
|
|
|
986
1984
|
"orientation"
|
|
987
1985
|
]);
|
|
988
1986
|
if (orientation === "left") {
|
|
989
|
-
return /* @__PURE__ */ (0,
|
|
1987
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react4.ChevronLeftIcon, __spreadValues({ className: cn("size-4", className) }, props));
|
|
990
1988
|
}
|
|
991
1989
|
if (orientation === "right") {
|
|
992
|
-
return /* @__PURE__ */ (0,
|
|
993
|
-
|
|
1990
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1991
|
+
import_lucide_react4.ChevronRightIcon,
|
|
994
1992
|
__spreadValues({
|
|
995
1993
|
className: cn("size-4", className)
|
|
996
1994
|
}, props)
|
|
997
1995
|
);
|
|
998
1996
|
}
|
|
999
|
-
return /* @__PURE__ */ (0,
|
|
1997
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react4.ChevronDownIcon, __spreadValues({ className: cn("size-4", className) }, props));
|
|
1000
1998
|
}
|
|
1001
1999
|
function CalendarWeekNumber(_a) {
|
|
1002
2000
|
var _b = _a, {
|
|
@@ -1004,7 +2002,7 @@ function CalendarWeekNumber(_a) {
|
|
|
1004
2002
|
} = _b, props = __objRest(_b, [
|
|
1005
2003
|
"children"
|
|
1006
2004
|
]);
|
|
1007
|
-
return /* @__PURE__ */ (0,
|
|
2005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("td", __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
|
|
1008
2006
|
}
|
|
1009
2007
|
function Calendar(_a) {
|
|
1010
2008
|
var _b = _a, {
|
|
@@ -1025,7 +2023,7 @@ function Calendar(_a) {
|
|
|
1025
2023
|
"components"
|
|
1026
2024
|
]);
|
|
1027
2025
|
const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
|
|
1028
|
-
return /* @__PURE__ */ (0,
|
|
2026
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1029
2027
|
import_react_day_picker.DayPicker,
|
|
1030
2028
|
__spreadValues({
|
|
1031
2029
|
captionLayout,
|
|
@@ -1134,125 +2132,43 @@ function CalendarDayButton(_a) {
|
|
|
1134
2132
|
} = _b, props = __objRest(_b, [
|
|
1135
2133
|
"className",
|
|
1136
2134
|
"day",
|
|
1137
|
-
"modifiers"
|
|
1138
|
-
]);
|
|
1139
|
-
const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
|
|
1140
|
-
const ref =
|
|
1141
|
-
|
|
1142
|
-
var _a2;
|
|
1143
|
-
if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
|
|
1144
|
-
}, [modifiers.focused]);
|
|
1145
|
-
const selectedSingle = modifiers.selected && !modifiers.range_start && !modifiers.range_end ? !modifiers.range_middle : null;
|
|
1146
|
-
return /* @__PURE__ */ (0,
|
|
1147
|
-
Button,
|
|
1148
|
-
__spreadValues({
|
|
1149
|
-
className: cn(
|
|
1150
|
-
"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal rounded-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70",
|
|
1151
|
-
defaultClassNames.day,
|
|
1152
|
-
className
|
|
1153
|
-
),
|
|
1154
|
-
"data-day": day.date.toLocaleDateString(),
|
|
1155
|
-
"data-range-end": modifiers.range_end,
|
|
1156
|
-
"data-range-middle": modifiers.range_middle,
|
|
1157
|
-
"data-range-start": modifiers.range_start,
|
|
1158
|
-
"data-selected-single": selectedSingle,
|
|
1159
|
-
ref,
|
|
1160
|
-
size: "icon",
|
|
1161
|
-
variant: "ghost"
|
|
1162
|
-
}, props)
|
|
1163
|
-
);
|
|
1164
|
-
}
|
|
1165
|
-
|
|
1166
|
-
// src/components/ui/card.tsx
|
|
1167
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1168
|
-
function Card(_a) {
|
|
1169
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1170
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1171
|
-
"div",
|
|
1172
|
-
__spreadValues({
|
|
1173
|
-
className: cn(
|
|
1174
|
-
"flex flex-col gap-6 border bg-card py-6 text-card-foreground shadow-sm",
|
|
1175
|
-
className
|
|
1176
|
-
),
|
|
1177
|
-
"data-slot": "card"
|
|
1178
|
-
}, props)
|
|
1179
|
-
);
|
|
1180
|
-
}
|
|
1181
|
-
function CardHeader(_a) {
|
|
1182
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1183
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1184
|
-
"div",
|
|
1185
|
-
__spreadValues({
|
|
1186
|
-
className: cn(
|
|
1187
|
-
"@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",
|
|
1188
|
-
className
|
|
1189
|
-
),
|
|
1190
|
-
"data-slot": "card-header"
|
|
1191
|
-
}, props)
|
|
1192
|
-
);
|
|
1193
|
-
}
|
|
1194
|
-
function CardTitle(_a) {
|
|
1195
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1196
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1197
|
-
"div",
|
|
1198
|
-
__spreadValues({
|
|
1199
|
-
className: cn("leading-none font-semibold", className),
|
|
1200
|
-
"data-slot": "card-title"
|
|
1201
|
-
}, props)
|
|
1202
|
-
);
|
|
1203
|
-
}
|
|
1204
|
-
function CardDescription(_a) {
|
|
1205
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1206
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1207
|
-
"div",
|
|
1208
|
-
__spreadValues({
|
|
1209
|
-
className: cn("text-sm text-muted-foreground", className),
|
|
1210
|
-
"data-slot": "card-description"
|
|
1211
|
-
}, props)
|
|
1212
|
-
);
|
|
1213
|
-
}
|
|
1214
|
-
function CardAction(_a) {
|
|
1215
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1216
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1217
|
-
"div",
|
|
1218
|
-
__spreadValues({
|
|
1219
|
-
className: cn(
|
|
1220
|
-
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
1221
|
-
className
|
|
1222
|
-
),
|
|
1223
|
-
"data-slot": "card-action"
|
|
1224
|
-
}, props)
|
|
1225
|
-
);
|
|
1226
|
-
}
|
|
1227
|
-
function CardContent(_a) {
|
|
1228
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1229
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1230
|
-
"div",
|
|
1231
|
-
__spreadValues({
|
|
1232
|
-
className: cn("px-6", className),
|
|
1233
|
-
"data-slot": "card-content"
|
|
1234
|
-
}, props)
|
|
1235
|
-
);
|
|
1236
|
-
}
|
|
1237
|
-
function CardFooter(_a) {
|
|
1238
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1239
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1240
|
-
"div",
|
|
2135
|
+
"modifiers"
|
|
2136
|
+
]);
|
|
2137
|
+
const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
|
|
2138
|
+
const ref = React7.useRef(null);
|
|
2139
|
+
React7.useEffect(() => {
|
|
2140
|
+
var _a2;
|
|
2141
|
+
if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
|
|
2142
|
+
}, [modifiers.focused]);
|
|
2143
|
+
const selectedSingle = modifiers.selected && !modifiers.range_start && !modifiers.range_end ? !modifiers.range_middle : null;
|
|
2144
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
2145
|
+
Button,
|
|
1241
2146
|
__spreadValues({
|
|
1242
|
-
className: cn(
|
|
1243
|
-
|
|
2147
|
+
className: cn(
|
|
2148
|
+
"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal rounded-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70",
|
|
2149
|
+
defaultClassNames.day,
|
|
2150
|
+
className
|
|
2151
|
+
),
|
|
2152
|
+
"data-day": day.date.toLocaleDateString(),
|
|
2153
|
+
"data-range-end": modifiers.range_end,
|
|
2154
|
+
"data-range-middle": modifiers.range_middle,
|
|
2155
|
+
"data-range-start": modifiers.range_start,
|
|
2156
|
+
"data-selected-single": selectedSingle,
|
|
2157
|
+
ref,
|
|
2158
|
+
size: "icon",
|
|
2159
|
+
variant: "ghost"
|
|
1244
2160
|
}, props)
|
|
1245
2161
|
);
|
|
1246
2162
|
}
|
|
1247
2163
|
|
|
1248
2164
|
// src/components/ui/checkbox.tsx
|
|
1249
|
-
var
|
|
1250
|
-
var
|
|
2165
|
+
var import_react7 = require("react");
|
|
2166
|
+
var import_lucide_react5 = require("lucide-react");
|
|
1251
2167
|
var import_checkbox = require("@base-ui/react/checkbox");
|
|
1252
|
-
var
|
|
2168
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1253
2169
|
function Checkbox(_a) {
|
|
1254
2170
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1255
|
-
return /* @__PURE__ */ (0,
|
|
2171
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1256
2172
|
import_checkbox.Checkbox.Root,
|
|
1257
2173
|
__spreadProps(__spreadValues({
|
|
1258
2174
|
className: cn(
|
|
@@ -1271,14 +2187,14 @@ function Checkbox(_a) {
|
|
|
1271
2187
|
),
|
|
1272
2188
|
"data-slot": "checkbox"
|
|
1273
2189
|
}, props), {
|
|
1274
|
-
children: /* @__PURE__ */ (0,
|
|
2190
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1275
2191
|
import_checkbox.Checkbox.Indicator,
|
|
1276
2192
|
{
|
|
1277
2193
|
className: "grid place-content-center text-current transition-none",
|
|
1278
2194
|
"data-slot": "checkbox-indicator",
|
|
1279
2195
|
children: [
|
|
1280
|
-
/* @__PURE__ */ (0,
|
|
1281
|
-
/* @__PURE__ */ (0,
|
|
2196
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react5.CheckIcon, { className: "size-3.5 group-data-indeterminate:hidden" }),
|
|
2197
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react5.MinusIcon, { className: "size-3.5 hidden group-data-indeterminate:block" })
|
|
1282
2198
|
]
|
|
1283
2199
|
}
|
|
1284
2200
|
)
|
|
@@ -1305,12 +2221,12 @@ function CheckboxCard(_a) {
|
|
|
1305
2221
|
"label",
|
|
1306
2222
|
"description"
|
|
1307
2223
|
]);
|
|
1308
|
-
const [internalChecked, setInternalChecked] = (0,
|
|
2224
|
+
const [internalChecked, setInternalChecked] = (0, import_react7.useState)(
|
|
1309
2225
|
Boolean(defaultChecked)
|
|
1310
2226
|
);
|
|
1311
2227
|
const resolvedChecked = checked != null ? checked : internalChecked;
|
|
1312
2228
|
const isTinted = resolvedChecked;
|
|
1313
|
-
return /* @__PURE__ */ (0,
|
|
2229
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1314
2230
|
"label",
|
|
1315
2231
|
{
|
|
1316
2232
|
className: cn(
|
|
@@ -1321,7 +2237,7 @@ function CheckboxCard(_a) {
|
|
|
1321
2237
|
),
|
|
1322
2238
|
"data-slot": "checkbox-card",
|
|
1323
2239
|
children: [
|
|
1324
|
-
/* @__PURE__ */ (0,
|
|
2240
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1325
2241
|
Checkbox,
|
|
1326
2242
|
__spreadValues({
|
|
1327
2243
|
"aria-invalid": error || void 0,
|
|
@@ -1334,9 +2250,9 @@ function CheckboxCard(_a) {
|
|
|
1334
2250
|
}
|
|
1335
2251
|
}, props)
|
|
1336
2252
|
),
|
|
1337
|
-
/* @__PURE__ */ (0,
|
|
1338
|
-
/* @__PURE__ */ (0,
|
|
1339
|
-
description ? /* @__PURE__ */ (0,
|
|
2253
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
2254
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
|
|
2255
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
|
|
1340
2256
|
] })
|
|
1341
2257
|
]
|
|
1342
2258
|
}
|
|
@@ -1344,8 +2260,8 @@ function CheckboxCard(_a) {
|
|
|
1344
2260
|
}
|
|
1345
2261
|
|
|
1346
2262
|
// src/components/ui/chip.tsx
|
|
1347
|
-
var
|
|
1348
|
-
var
|
|
2263
|
+
var import_lucide_react6 = require("lucide-react");
|
|
2264
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1349
2265
|
function Chip(_a) {
|
|
1350
2266
|
var _b = _a, {
|
|
1351
2267
|
className,
|
|
@@ -1360,7 +2276,7 @@ function Chip(_a) {
|
|
|
1360
2276
|
"disabled",
|
|
1361
2277
|
"children"
|
|
1362
2278
|
]);
|
|
1363
|
-
return /* @__PURE__ */ (0,
|
|
2279
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1364
2280
|
"span",
|
|
1365
2281
|
__spreadProps(__spreadValues({
|
|
1366
2282
|
"aria-disabled": disabled,
|
|
@@ -1376,7 +2292,7 @@ function Chip(_a) {
|
|
|
1376
2292
|
}, props), {
|
|
1377
2293
|
children: [
|
|
1378
2294
|
children,
|
|
1379
|
-
onRemove ? /* @__PURE__ */ (0,
|
|
2295
|
+
onRemove ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1380
2296
|
"button",
|
|
1381
2297
|
{
|
|
1382
2298
|
"aria-label": "Remove",
|
|
@@ -1388,7 +2304,7 @@ function Chip(_a) {
|
|
|
1388
2304
|
onRemove();
|
|
1389
2305
|
},
|
|
1390
2306
|
type: "button",
|
|
1391
|
-
children: /* @__PURE__ */ (0,
|
|
2307
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react6.X, { className: "size-3" })
|
|
1392
2308
|
}
|
|
1393
2309
|
) : null
|
|
1394
2310
|
]
|
|
@@ -1396,21 +2312,197 @@ function Chip(_a) {
|
|
|
1396
2312
|
);
|
|
1397
2313
|
}
|
|
1398
2314
|
|
|
2315
|
+
// src/components/ui/combobox.tsx
|
|
2316
|
+
var import_lucide_react7 = require("lucide-react");
|
|
2317
|
+
var import_combobox = require("@base-ui/react/combobox");
|
|
2318
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2319
|
+
function Combobox(_a) {
|
|
2320
|
+
var props = __objRest(_a, []);
|
|
2321
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Root, __spreadValues({ "data-slot": "combobox" }, props));
|
|
2322
|
+
}
|
|
2323
|
+
function ComboboxTrigger(_a) {
|
|
2324
|
+
var _b = _a, {
|
|
2325
|
+
className,
|
|
2326
|
+
size = "default",
|
|
2327
|
+
children
|
|
2328
|
+
} = _b, props = __objRest(_b, [
|
|
2329
|
+
"className",
|
|
2330
|
+
"size",
|
|
2331
|
+
"children"
|
|
2332
|
+
]);
|
|
2333
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
2334
|
+
import_combobox.Combobox.Trigger,
|
|
2335
|
+
__spreadProps(__spreadValues({
|
|
2336
|
+
"data-slot": "combobox-trigger",
|
|
2337
|
+
"data-size": size,
|
|
2338
|
+
className: cn(
|
|
2339
|
+
"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",
|
|
2340
|
+
className
|
|
2341
|
+
)
|
|
2342
|
+
}, props), {
|
|
2343
|
+
children: [
|
|
2344
|
+
children,
|
|
2345
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Icon, { className: "transition-transform duration-200 data-[popup-open]:rotate-180", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react7.ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
2346
|
+
]
|
|
2347
|
+
})
|
|
2348
|
+
);
|
|
2349
|
+
}
|
|
2350
|
+
function ComboboxValue(_a) {
|
|
2351
|
+
var props = __objRest(_a, []);
|
|
2352
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Value, __spreadValues({ "data-slot": "combobox-value" }, props));
|
|
2353
|
+
}
|
|
2354
|
+
function ComboboxInput(_a) {
|
|
2355
|
+
var _b = _a, {
|
|
2356
|
+
className
|
|
2357
|
+
} = _b, props = __objRest(_b, [
|
|
2358
|
+
"className"
|
|
2359
|
+
]);
|
|
2360
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { "data-slot": "combobox-input-wrapper", className: "flex items-center gap-2 border-b border-border px-3", children: [
|
|
2361
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react7.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
2362
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2363
|
+
import_combobox.Combobox.Input,
|
|
2364
|
+
__spreadValues({
|
|
2365
|
+
"data-slot": "combobox-input",
|
|
2366
|
+
className: cn(
|
|
2367
|
+
"h-9 w-full min-w-0 bg-transparent py-1 text-body-small outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
2368
|
+
className
|
|
2369
|
+
)
|
|
2370
|
+
}, props)
|
|
2371
|
+
)
|
|
2372
|
+
] });
|
|
2373
|
+
}
|
|
2374
|
+
function ComboboxContent(_a) {
|
|
2375
|
+
var _b = _a, {
|
|
2376
|
+
className,
|
|
2377
|
+
children
|
|
2378
|
+
} = _b, props = __objRest(_b, [
|
|
2379
|
+
"className",
|
|
2380
|
+
"children"
|
|
2381
|
+
]);
|
|
2382
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Positioner, { sideOffset: 4, align: "start", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2383
|
+
import_combobox.Combobox.Popup,
|
|
2384
|
+
__spreadProps(__spreadValues({
|
|
2385
|
+
"data-slot": "combobox-content",
|
|
2386
|
+
className: cn(
|
|
2387
|
+
"relative z-50 max-h-[var(--available-height)] min-w-[8rem] overflow-hidden border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[ending-style]:animate-out data-[ending-style]:fade-out-0 data-[ending-style]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95",
|
|
2388
|
+
className
|
|
2389
|
+
)
|
|
2390
|
+
}, props), {
|
|
2391
|
+
children
|
|
2392
|
+
})
|
|
2393
|
+
) }) });
|
|
2394
|
+
}
|
|
2395
|
+
function ComboboxList(_a) {
|
|
2396
|
+
var _b = _a, {
|
|
2397
|
+
className
|
|
2398
|
+
} = _b, props = __objRest(_b, [
|
|
2399
|
+
"className"
|
|
2400
|
+
]);
|
|
2401
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2402
|
+
import_combobox.Combobox.List,
|
|
2403
|
+
__spreadValues({
|
|
2404
|
+
"data-slot": "combobox-list",
|
|
2405
|
+
className: cn(
|
|
2406
|
+
"max-h-[min(var(--available-height),18rem)] overflow-y-auto p-1",
|
|
2407
|
+
className
|
|
2408
|
+
)
|
|
2409
|
+
}, props)
|
|
2410
|
+
);
|
|
2411
|
+
}
|
|
2412
|
+
function ComboboxItem(_a) {
|
|
2413
|
+
var _b = _a, {
|
|
2414
|
+
className,
|
|
2415
|
+
children
|
|
2416
|
+
} = _b, props = __objRest(_b, [
|
|
2417
|
+
"className",
|
|
2418
|
+
"children"
|
|
2419
|
+
]);
|
|
2420
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
2421
|
+
import_combobox.Combobox.Item,
|
|
2422
|
+
__spreadProps(__spreadValues({
|
|
2423
|
+
"data-slot": "combobox-item",
|
|
2424
|
+
className: cn(
|
|
2425
|
+
"relative flex w-full cursor-default items-center gap-2 rounded-sm 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",
|
|
2426
|
+
className
|
|
2427
|
+
)
|
|
2428
|
+
}, props), {
|
|
2429
|
+
children: [
|
|
2430
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2431
|
+
"span",
|
|
2432
|
+
{
|
|
2433
|
+
"data-slot": "combobox-item-indicator",
|
|
2434
|
+
className: "absolute right-2 flex size-3.5 items-center justify-center",
|
|
2435
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react7.CheckIcon, { className: "size-4" }) })
|
|
2436
|
+
}
|
|
2437
|
+
),
|
|
2438
|
+
children
|
|
2439
|
+
]
|
|
2440
|
+
})
|
|
2441
|
+
);
|
|
2442
|
+
}
|
|
2443
|
+
function ComboboxEmpty(_a) {
|
|
2444
|
+
var _b = _a, {
|
|
2445
|
+
className
|
|
2446
|
+
} = _b, props = __objRest(_b, [
|
|
2447
|
+
"className"
|
|
2448
|
+
]);
|
|
2449
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2450
|
+
import_combobox.Combobox.Empty,
|
|
2451
|
+
__spreadValues({
|
|
2452
|
+
"data-slot": "combobox-empty",
|
|
2453
|
+
className: `text-body-small ${cn("py-6 text-center text-muted-foreground empty:hidden", className)}`
|
|
2454
|
+
}, props)
|
|
2455
|
+
);
|
|
2456
|
+
}
|
|
2457
|
+
function ComboboxGroup(_a) {
|
|
2458
|
+
var props = __objRest(_a, []);
|
|
2459
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_combobox.Combobox.Group, __spreadValues({ "data-slot": "combobox-group" }, props));
|
|
2460
|
+
}
|
|
2461
|
+
function ComboboxGroupLabel(_a) {
|
|
2462
|
+
var _b = _a, {
|
|
2463
|
+
className
|
|
2464
|
+
} = _b, props = __objRest(_b, [
|
|
2465
|
+
"className"
|
|
2466
|
+
]);
|
|
2467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2468
|
+
import_combobox.Combobox.GroupLabel,
|
|
2469
|
+
__spreadValues({
|
|
2470
|
+
"data-slot": "combobox-group-label",
|
|
2471
|
+
className: `text-label-small ${cn("px-2 py-1.5 uppercase text-muted-foreground", className)}`
|
|
2472
|
+
}, props)
|
|
2473
|
+
);
|
|
2474
|
+
}
|
|
2475
|
+
function ComboboxSeparator(_a) {
|
|
2476
|
+
var _b = _a, {
|
|
2477
|
+
className
|
|
2478
|
+
} = _b, props = __objRest(_b, [
|
|
2479
|
+
"className"
|
|
2480
|
+
]);
|
|
2481
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2482
|
+
"div",
|
|
2483
|
+
__spreadValues({
|
|
2484
|
+
role: "separator",
|
|
2485
|
+
"data-slot": "combobox-separator",
|
|
2486
|
+
className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className)
|
|
2487
|
+
}, props)
|
|
2488
|
+
);
|
|
2489
|
+
}
|
|
2490
|
+
|
|
1399
2491
|
// src/components/ui/data-table.tsx
|
|
1400
|
-
var
|
|
2492
|
+
var React8 = __toESM(require("react"));
|
|
1401
2493
|
var import_react_table = require("@tanstack/react-table");
|
|
1402
|
-
var
|
|
2494
|
+
var import_lucide_react10 = require("lucide-react");
|
|
1403
2495
|
|
|
1404
2496
|
// src/components/ui/table.tsx
|
|
1405
|
-
var
|
|
2497
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1406
2498
|
function Table(_a) {
|
|
1407
2499
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1408
|
-
return /* @__PURE__ */ (0,
|
|
2500
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1409
2501
|
"div",
|
|
1410
2502
|
{
|
|
1411
2503
|
className: "relative w-full overflow-x-auto",
|
|
1412
2504
|
"data-slot": "table-container",
|
|
1413
|
-
children: /* @__PURE__ */ (0,
|
|
2505
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1414
2506
|
"table",
|
|
1415
2507
|
__spreadValues({
|
|
1416
2508
|
className: cn("w-full caption-bottom text-sm", className),
|
|
@@ -1422,7 +2514,7 @@ function Table(_a) {
|
|
|
1422
2514
|
}
|
|
1423
2515
|
function TableHeader(_a) {
|
|
1424
2516
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1425
|
-
return /* @__PURE__ */ (0,
|
|
2517
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1426
2518
|
"thead",
|
|
1427
2519
|
__spreadValues({
|
|
1428
2520
|
className: cn("[&_tr]:border-b", className),
|
|
@@ -1432,7 +2524,7 @@ function TableHeader(_a) {
|
|
|
1432
2524
|
}
|
|
1433
2525
|
function TableBody(_a) {
|
|
1434
2526
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1435
|
-
return /* @__PURE__ */ (0,
|
|
2527
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1436
2528
|
"tbody",
|
|
1437
2529
|
__spreadValues({
|
|
1438
2530
|
className: cn("[&_tr:last-child]:border-0", className),
|
|
@@ -1442,7 +2534,7 @@ function TableBody(_a) {
|
|
|
1442
2534
|
}
|
|
1443
2535
|
function TableFooter(_a) {
|
|
1444
2536
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1445
|
-
return /* @__PURE__ */ (0,
|
|
2537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1446
2538
|
"tfoot",
|
|
1447
2539
|
__spreadValues({
|
|
1448
2540
|
className: cn(
|
|
@@ -1455,7 +2547,7 @@ function TableFooter(_a) {
|
|
|
1455
2547
|
}
|
|
1456
2548
|
function TableRow(_a) {
|
|
1457
2549
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1458
|
-
return /* @__PURE__ */ (0,
|
|
2550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1459
2551
|
"tr",
|
|
1460
2552
|
__spreadValues({
|
|
1461
2553
|
className: cn(
|
|
@@ -1468,7 +2560,7 @@ function TableRow(_a) {
|
|
|
1468
2560
|
}
|
|
1469
2561
|
function TableHead(_a) {
|
|
1470
2562
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1471
|
-
return /* @__PURE__ */ (0,
|
|
2563
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1472
2564
|
"th",
|
|
1473
2565
|
__spreadValues({
|
|
1474
2566
|
className: cn(
|
|
@@ -1482,7 +2574,7 @@ function TableHead(_a) {
|
|
|
1482
2574
|
}
|
|
1483
2575
|
function TableCell(_a) {
|
|
1484
2576
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1485
|
-
return /* @__PURE__ */ (0,
|
|
2577
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1486
2578
|
"td",
|
|
1487
2579
|
__spreadValues({
|
|
1488
2580
|
className: cn(
|
|
@@ -1500,7 +2592,7 @@ function TableCaption(_a) {
|
|
|
1500
2592
|
} = _b, props = __objRest(_b, [
|
|
1501
2593
|
"className"
|
|
1502
2594
|
]);
|
|
1503
|
-
return /* @__PURE__ */ (0,
|
|
2595
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1504
2596
|
"caption",
|
|
1505
2597
|
__spreadValues({
|
|
1506
2598
|
className: cn("mt-4 text-sm text-muted-foreground", className),
|
|
@@ -1510,10 +2602,10 @@ function TableCaption(_a) {
|
|
|
1510
2602
|
}
|
|
1511
2603
|
|
|
1512
2604
|
// src/components/ui/input.tsx
|
|
1513
|
-
var
|
|
2605
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1514
2606
|
function Input(_a) {
|
|
1515
2607
|
var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
|
|
1516
|
-
return /* @__PURE__ */ (0,
|
|
2608
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1517
2609
|
"input",
|
|
1518
2610
|
__spreadValues({
|
|
1519
2611
|
className: cn(
|
|
@@ -1529,20 +2621,20 @@ function Input(_a) {
|
|
|
1529
2621
|
}
|
|
1530
2622
|
|
|
1531
2623
|
// src/components/ui/select.tsx
|
|
1532
|
-
var
|
|
2624
|
+
var import_lucide_react8 = require("lucide-react");
|
|
1533
2625
|
var import_select = require("@base-ui/react/select");
|
|
1534
|
-
var
|
|
2626
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1535
2627
|
function Select(_a) {
|
|
1536
2628
|
var props = __objRest(_a, []);
|
|
1537
|
-
return /* @__PURE__ */ (0,
|
|
2629
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Root, __spreadValues({ "data-slot": "select" }, props));
|
|
1538
2630
|
}
|
|
1539
2631
|
function SelectGroup(_a) {
|
|
1540
2632
|
var props = __objRest(_a, []);
|
|
1541
|
-
return /* @__PURE__ */ (0,
|
|
2633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Group, __spreadValues({ "data-slot": "select-group" }, props));
|
|
1542
2634
|
}
|
|
1543
2635
|
function SelectValue(_a) {
|
|
1544
2636
|
var props = __objRest(_a, []);
|
|
1545
|
-
return /* @__PURE__ */ (0,
|
|
2637
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Value, __spreadValues({ "data-slot": "select-value" }, props));
|
|
1546
2638
|
}
|
|
1547
2639
|
function SelectTrigger(_a) {
|
|
1548
2640
|
var _b = _a, {
|
|
@@ -1554,7 +2646,7 @@ function SelectTrigger(_a) {
|
|
|
1554
2646
|
"size",
|
|
1555
2647
|
"children"
|
|
1556
2648
|
]);
|
|
1557
|
-
return /* @__PURE__ */ (0,
|
|
2649
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1558
2650
|
import_select.Select.Trigger,
|
|
1559
2651
|
__spreadProps(__spreadValues({
|
|
1560
2652
|
className: cn(
|
|
@@ -1566,7 +2658,7 @@ function SelectTrigger(_a) {
|
|
|
1566
2658
|
}, props), {
|
|
1567
2659
|
children: [
|
|
1568
2660
|
children,
|
|
1569
|
-
/* @__PURE__ */ (0,
|
|
2661
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Icon, { className: "transition-transform duration-200 data-popup-open:rotate-180", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
1570
2662
|
]
|
|
1571
2663
|
})
|
|
1572
2664
|
);
|
|
@@ -1582,7 +2674,7 @@ function SelectContent(_a) {
|
|
|
1582
2674
|
"style"
|
|
1583
2675
|
]);
|
|
1584
2676
|
const themeVars = useThemeVars();
|
|
1585
|
-
return /* @__PURE__ */ (0,
|
|
2677
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.Positioner, { align: "start", alignItemWithTrigger: false, sideOffset: 4, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1586
2678
|
import_select.Select.Popup,
|
|
1587
2679
|
__spreadProps(__spreadValues({
|
|
1588
2680
|
className: cn(
|
|
@@ -1593,9 +2685,9 @@ function SelectContent(_a) {
|
|
|
1593
2685
|
style: __spreadValues(__spreadValues({}, themeVars), style2)
|
|
1594
2686
|
}, props), {
|
|
1595
2687
|
children: [
|
|
1596
|
-
/* @__PURE__ */ (0,
|
|
2688
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectScrollUpButton, {}),
|
|
1597
2689
|
children,
|
|
1598
|
-
/* @__PURE__ */ (0,
|
|
2690
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectScrollDownButton, {})
|
|
1599
2691
|
]
|
|
1600
2692
|
})
|
|
1601
2693
|
) }) });
|
|
@@ -1606,7 +2698,7 @@ function SelectLabel(_a) {
|
|
|
1606
2698
|
} = _b, props = __objRest(_b, [
|
|
1607
2699
|
"className"
|
|
1608
2700
|
]);
|
|
1609
|
-
return /* @__PURE__ */ (0,
|
|
2701
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1610
2702
|
import_select.Select.GroupLabel,
|
|
1611
2703
|
__spreadValues({
|
|
1612
2704
|
className: cn("px-2 py-1.5 text-xs font-semibold text-muted-foreground", className),
|
|
@@ -1622,7 +2714,7 @@ function SelectItem(_a) {
|
|
|
1622
2714
|
"className",
|
|
1623
2715
|
"children"
|
|
1624
2716
|
]);
|
|
1625
|
-
return /* @__PURE__ */ (0,
|
|
2717
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1626
2718
|
import_select.Select.Item,
|
|
1627
2719
|
__spreadProps(__spreadValues({
|
|
1628
2720
|
className: cn(
|
|
@@ -1632,15 +2724,15 @@ function SelectItem(_a) {
|
|
|
1632
2724
|
"data-slot": "select-item"
|
|
1633
2725
|
}, props), {
|
|
1634
2726
|
children: [
|
|
1635
|
-
/* @__PURE__ */ (0,
|
|
2727
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1636
2728
|
"span",
|
|
1637
2729
|
{
|
|
1638
2730
|
className: "absolute right-2 flex size-3.5 items-center justify-center",
|
|
1639
2731
|
"data-slot": "select-item-indicator",
|
|
1640
|
-
children: /* @__PURE__ */ (0,
|
|
2732
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.CheckIcon, { className: "size-4" }) })
|
|
1641
2733
|
}
|
|
1642
2734
|
),
|
|
1643
|
-
/* @__PURE__ */ (0,
|
|
2735
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_select.Select.ItemText, { children })
|
|
1644
2736
|
]
|
|
1645
2737
|
})
|
|
1646
2738
|
);
|
|
@@ -1651,7 +2743,7 @@ function SelectSeparator(_a) {
|
|
|
1651
2743
|
} = _b, props = __objRest(_b, [
|
|
1652
2744
|
"className"
|
|
1653
2745
|
]);
|
|
1654
|
-
return /* @__PURE__ */ (0,
|
|
2746
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1655
2747
|
"div",
|
|
1656
2748
|
__spreadValues({
|
|
1657
2749
|
className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
|
|
@@ -1666,7 +2758,7 @@ function SelectScrollUpButton(_a) {
|
|
|
1666
2758
|
} = _b, props = __objRest(_b, [
|
|
1667
2759
|
"className"
|
|
1668
2760
|
]);
|
|
1669
|
-
return /* @__PURE__ */ (0,
|
|
2761
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1670
2762
|
import_select.Select.ScrollUpArrow,
|
|
1671
2763
|
__spreadProps(__spreadValues({
|
|
1672
2764
|
className: cn(
|
|
@@ -1675,7 +2767,7 @@ function SelectScrollUpButton(_a) {
|
|
|
1675
2767
|
),
|
|
1676
2768
|
"data-slot": "select-scroll-up-button"
|
|
1677
2769
|
}, props), {
|
|
1678
|
-
children: /* @__PURE__ */ (0,
|
|
2770
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.ChevronUpIcon, { className: "size-4" })
|
|
1679
2771
|
})
|
|
1680
2772
|
);
|
|
1681
2773
|
}
|
|
@@ -1685,7 +2777,7 @@ function SelectScrollDownButton(_a) {
|
|
|
1685
2777
|
} = _b, props = __objRest(_b, [
|
|
1686
2778
|
"className"
|
|
1687
2779
|
]);
|
|
1688
|
-
return /* @__PURE__ */ (0,
|
|
2780
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1689
2781
|
import_select.Select.ScrollDownArrow,
|
|
1690
2782
|
__spreadProps(__spreadValues({
|
|
1691
2783
|
className: cn(
|
|
@@ -1694,26 +2786,26 @@ function SelectScrollDownButton(_a) {
|
|
|
1694
2786
|
),
|
|
1695
2787
|
"data-slot": "select-scroll-down-button"
|
|
1696
2788
|
}, props), {
|
|
1697
|
-
children: /* @__PURE__ */ (0,
|
|
2789
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react8.ChevronDownIcon, { className: "size-4" })
|
|
1698
2790
|
})
|
|
1699
2791
|
);
|
|
1700
2792
|
}
|
|
1701
2793
|
|
|
1702
2794
|
// src/components/ui/dropdown-menu.tsx
|
|
1703
|
-
var
|
|
2795
|
+
var import_lucide_react9 = require("lucide-react");
|
|
1704
2796
|
var import_menu = require("@base-ui/react/menu");
|
|
1705
|
-
var
|
|
2797
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1706
2798
|
function DropdownMenu(_a) {
|
|
1707
2799
|
var props = __objRest(_a, []);
|
|
1708
|
-
return /* @__PURE__ */ (0,
|
|
2800
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Root, __spreadValues({ "data-slot": "dropdown-menu" }, props));
|
|
1709
2801
|
}
|
|
1710
2802
|
function DropdownMenuPortal(_a) {
|
|
1711
2803
|
var props = __objRest(_a, []);
|
|
1712
|
-
return /* @__PURE__ */ (0,
|
|
2804
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Portal, __spreadValues({ "data-slot": "dropdown-menu-portal" }, props));
|
|
1713
2805
|
}
|
|
1714
2806
|
function DropdownMenuTrigger(_a) {
|
|
1715
2807
|
var props = __objRest(_a, []);
|
|
1716
|
-
return /* @__PURE__ */ (0,
|
|
2808
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1717
2809
|
import_menu.Menu.Trigger,
|
|
1718
2810
|
__spreadValues({
|
|
1719
2811
|
"data-slot": "dropdown-menu-trigger"
|
|
@@ -1731,7 +2823,7 @@ function DropdownMenuContent(_a) {
|
|
|
1731
2823
|
"style"
|
|
1732
2824
|
]);
|
|
1733
2825
|
const themeVars = useThemeVars();
|
|
1734
|
-
return /* @__PURE__ */ (0,
|
|
2826
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Positioner, { sideOffset, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1735
2827
|
import_menu.Menu.Popup,
|
|
1736
2828
|
__spreadValues({
|
|
1737
2829
|
className: cn(
|
|
@@ -1745,7 +2837,7 @@ function DropdownMenuContent(_a) {
|
|
|
1745
2837
|
}
|
|
1746
2838
|
function DropdownMenuGroup(_a) {
|
|
1747
2839
|
var props = __objRest(_a, []);
|
|
1748
|
-
return /* @__PURE__ */ (0,
|
|
2840
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Group, __spreadValues({ "data-slot": "dropdown-menu-group" }, props));
|
|
1749
2841
|
}
|
|
1750
2842
|
function DropdownMenuItem(_a) {
|
|
1751
2843
|
var _b = _a, {
|
|
@@ -1757,7 +2849,7 @@ function DropdownMenuItem(_a) {
|
|
|
1757
2849
|
"inset",
|
|
1758
2850
|
"variant"
|
|
1759
2851
|
]);
|
|
1760
|
-
return /* @__PURE__ */ (0,
|
|
2852
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1761
2853
|
import_menu.Menu.Item,
|
|
1762
2854
|
__spreadValues({
|
|
1763
2855
|
className: cn(
|
|
@@ -1780,7 +2872,7 @@ function DropdownMenuCheckboxItem(_a) {
|
|
|
1780
2872
|
"children",
|
|
1781
2873
|
"checked"
|
|
1782
2874
|
]);
|
|
1783
|
-
return /* @__PURE__ */ (0,
|
|
2875
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1784
2876
|
import_menu.Menu.CheckboxItem,
|
|
1785
2877
|
__spreadProps(__spreadValues({
|
|
1786
2878
|
checked,
|
|
@@ -1791,7 +2883,7 @@ function DropdownMenuCheckboxItem(_a) {
|
|
|
1791
2883
|
"data-slot": "dropdown-menu-checkbox-item"
|
|
1792
2884
|
}, props), {
|
|
1793
2885
|
children: [
|
|
1794
|
-
/* @__PURE__ */ (0,
|
|
2886
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react9.CheckIcon, { className: "size-4" }) }) }),
|
|
1795
2887
|
children
|
|
1796
2888
|
]
|
|
1797
2889
|
})
|
|
@@ -1799,7 +2891,7 @@ function DropdownMenuCheckboxItem(_a) {
|
|
|
1799
2891
|
}
|
|
1800
2892
|
function DropdownMenuRadioGroup(_a) {
|
|
1801
2893
|
var props = __objRest(_a, []);
|
|
1802
|
-
return /* @__PURE__ */ (0,
|
|
2894
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1803
2895
|
import_menu.Menu.RadioGroup,
|
|
1804
2896
|
__spreadValues({
|
|
1805
2897
|
"data-slot": "dropdown-menu-radio-group"
|
|
@@ -1814,7 +2906,7 @@ function DropdownMenuRadioItem(_a) {
|
|
|
1814
2906
|
"className",
|
|
1815
2907
|
"children"
|
|
1816
2908
|
]);
|
|
1817
|
-
return /* @__PURE__ */ (0,
|
|
2909
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1818
2910
|
import_menu.Menu.RadioItem,
|
|
1819
2911
|
__spreadProps(__spreadValues({
|
|
1820
2912
|
className: cn(
|
|
@@ -1824,7 +2916,7 @@ function DropdownMenuRadioItem(_a) {
|
|
|
1824
2916
|
"data-slot": "dropdown-menu-radio-item"
|
|
1825
2917
|
}, props), {
|
|
1826
2918
|
children: [
|
|
1827
|
-
/* @__PURE__ */ (0,
|
|
2919
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.RadioItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react9.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
1828
2920
|
children
|
|
1829
2921
|
]
|
|
1830
2922
|
})
|
|
@@ -1838,7 +2930,7 @@ function DropdownMenuLabel(_a) {
|
|
|
1838
2930
|
"className",
|
|
1839
2931
|
"inset"
|
|
1840
2932
|
]);
|
|
1841
|
-
return /* @__PURE__ */ (0,
|
|
2933
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1842
2934
|
import_menu.Menu.GroupLabel,
|
|
1843
2935
|
__spreadValues({
|
|
1844
2936
|
className: cn(
|
|
@@ -1856,7 +2948,7 @@ function DropdownMenuSeparator(_a) {
|
|
|
1856
2948
|
} = _b, props = __objRest(_b, [
|
|
1857
2949
|
"className"
|
|
1858
2950
|
]);
|
|
1859
|
-
return /* @__PURE__ */ (0,
|
|
2951
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1860
2952
|
import_menu.Menu.Separator,
|
|
1861
2953
|
__spreadValues({
|
|
1862
2954
|
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
@@ -1870,7 +2962,7 @@ function DropdownMenuShortcut(_a) {
|
|
|
1870
2962
|
} = _b, props = __objRest(_b, [
|
|
1871
2963
|
"className"
|
|
1872
2964
|
]);
|
|
1873
|
-
return /* @__PURE__ */ (0,
|
|
2965
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1874
2966
|
"span",
|
|
1875
2967
|
__spreadValues({
|
|
1876
2968
|
className: cn(
|
|
@@ -1883,7 +2975,7 @@ function DropdownMenuShortcut(_a) {
|
|
|
1883
2975
|
}
|
|
1884
2976
|
function DropdownMenuSub(_a) {
|
|
1885
2977
|
var props = __objRest(_a, []);
|
|
1886
|
-
return /* @__PURE__ */ (0,
|
|
2978
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.SubmenuRoot, __spreadValues({ "data-slot": "dropdown-menu-sub" }, props));
|
|
1887
2979
|
}
|
|
1888
2980
|
function DropdownMenuSubTrigger(_a) {
|
|
1889
2981
|
var _b = _a, {
|
|
@@ -1895,7 +2987,7 @@ function DropdownMenuSubTrigger(_a) {
|
|
|
1895
2987
|
"inset",
|
|
1896
2988
|
"children"
|
|
1897
2989
|
]);
|
|
1898
|
-
return /* @__PURE__ */ (0,
|
|
2990
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1899
2991
|
import_menu.Menu.SubmenuTrigger,
|
|
1900
2992
|
__spreadProps(__spreadValues({
|
|
1901
2993
|
className: cn(
|
|
@@ -1907,7 +2999,7 @@ function DropdownMenuSubTrigger(_a) {
|
|
|
1907
2999
|
}, props), {
|
|
1908
3000
|
children: [
|
|
1909
3001
|
children,
|
|
1910
|
-
/* @__PURE__ */ (0,
|
|
3002
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react9.ChevronRightIcon, { className: "ml-auto size-4" })
|
|
1911
3003
|
]
|
|
1912
3004
|
})
|
|
1913
3005
|
);
|
|
@@ -1923,7 +3015,7 @@ function DropdownMenuSubContent(_a) {
|
|
|
1923
3015
|
"style"
|
|
1924
3016
|
]);
|
|
1925
3017
|
const themeVars = useThemeVars();
|
|
1926
|
-
return /* @__PURE__ */ (0,
|
|
3018
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_menu.Menu.Positioner, { sideOffset, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1927
3019
|
import_menu.Menu.Popup,
|
|
1928
3020
|
__spreadValues({
|
|
1929
3021
|
className: cn(
|
|
@@ -1936,39 +3028,26 @@ function DropdownMenuSubContent(_a) {
|
|
|
1936
3028
|
) }) });
|
|
1937
3029
|
}
|
|
1938
3030
|
|
|
1939
|
-
// src/components/ui/skeleton.tsx
|
|
1940
|
-
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1941
|
-
function Skeleton(_a) {
|
|
1942
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
1943
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1944
|
-
"div",
|
|
1945
|
-
__spreadValues({
|
|
1946
|
-
className: cn("animate-pulse bg-muted", className),
|
|
1947
|
-
"data-slot": "skeleton"
|
|
1948
|
-
}, props)
|
|
1949
|
-
);
|
|
1950
|
-
}
|
|
1951
|
-
|
|
1952
3031
|
// src/components/ui/data-table.tsx
|
|
1953
|
-
var
|
|
3032
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1954
3033
|
function DataTableColumnHeader({
|
|
1955
3034
|
column,
|
|
1956
3035
|
title,
|
|
1957
3036
|
className
|
|
1958
3037
|
}) {
|
|
1959
3038
|
if (!column.getCanSort()) {
|
|
1960
|
-
return /* @__PURE__ */ (0,
|
|
3039
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className, children: title });
|
|
1961
3040
|
}
|
|
1962
3041
|
const sorted = column.getIsSorted();
|
|
1963
3042
|
let sortIcon;
|
|
1964
3043
|
if (sorted === "asc") {
|
|
1965
|
-
sortIcon = /* @__PURE__ */ (0,
|
|
3044
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ArrowUp, { className: "ml-1 size-3.5" });
|
|
1966
3045
|
} else if (sorted === "desc") {
|
|
1967
|
-
sortIcon = /* @__PURE__ */ (0,
|
|
3046
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ArrowDown, { className: "ml-1 size-3.5" });
|
|
1968
3047
|
} else {
|
|
1969
|
-
sortIcon = /* @__PURE__ */ (0,
|
|
3048
|
+
sortIcon = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ArrowUpDown, { className: "ml-1 size-3.5" });
|
|
1970
3049
|
}
|
|
1971
|
-
return /* @__PURE__ */ (0,
|
|
3050
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
1972
3051
|
Button,
|
|
1973
3052
|
{
|
|
1974
3053
|
className: cn("-ml-3 h-8 font-medium text-muted-foreground hover:text-foreground", className),
|
|
@@ -1987,7 +3066,7 @@ function DataTableColumnHeader({
|
|
|
1987
3066
|
function getSelectionColumn() {
|
|
1988
3067
|
return {
|
|
1989
3068
|
id: "select",
|
|
1990
|
-
header: ({ table }) => /* @__PURE__ */ (0,
|
|
3069
|
+
header: ({ table }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1991
3070
|
Checkbox,
|
|
1992
3071
|
{
|
|
1993
3072
|
"aria-label": "Select all",
|
|
@@ -1998,7 +3077,7 @@ function getSelectionColumn() {
|
|
|
1998
3077
|
}
|
|
1999
3078
|
}
|
|
2000
3079
|
),
|
|
2001
|
-
cell: ({ row }) => /* @__PURE__ */ (0,
|
|
3080
|
+
cell: ({ row }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2002
3081
|
Checkbox,
|
|
2003
3082
|
{
|
|
2004
3083
|
"aria-label": "Select row",
|
|
@@ -2019,8 +3098,8 @@ function DataTableToolbar({
|
|
|
2019
3098
|
enableColumnVisibility
|
|
2020
3099
|
}) {
|
|
2021
3100
|
var _a;
|
|
2022
|
-
return /* @__PURE__ */ (0,
|
|
2023
|
-
/* @__PURE__ */ (0,
|
|
3101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center justify-between gap-2 py-4", "data-slot": "data-table-toolbar", children: [
|
|
3102
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "flex flex-1 items-center gap-2", children: searchKey ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2024
3103
|
Input,
|
|
2025
3104
|
{
|
|
2026
3105
|
className: "max-w-xs",
|
|
@@ -2032,21 +3111,21 @@ function DataTableToolbar({
|
|
|
2032
3111
|
value: (_a = table.getColumn(searchKey)) == null ? void 0 : _a.getFilterValue()
|
|
2033
3112
|
}
|
|
2034
3113
|
) : null }),
|
|
2035
|
-
enableColumnVisibility ? /* @__PURE__ */ (0,
|
|
2036
|
-
/* @__PURE__ */ (0,
|
|
3114
|
+
enableColumnVisibility ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(DropdownMenu, { children: [
|
|
3115
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2037
3116
|
DropdownMenuTrigger,
|
|
2038
3117
|
{
|
|
2039
|
-
render: /* @__PURE__ */ (0,
|
|
3118
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Button, { className: "ml-auto h-8 gap-1.5", size: "sm", variant: "outline" }),
|
|
2040
3119
|
children: [
|
|
2041
|
-
/* @__PURE__ */ (0,
|
|
2042
|
-
/* @__PURE__ */ (0,
|
|
3120
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.SlidersHorizontal, { className: "size-3.5" }),
|
|
3121
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "hidden sm:inline", children: "Columns" })
|
|
2043
3122
|
]
|
|
2044
3123
|
}
|
|
2045
3124
|
),
|
|
2046
|
-
/* @__PURE__ */ (0,
|
|
2047
|
-
/* @__PURE__ */ (0,
|
|
2048
|
-
/* @__PURE__ */ (0,
|
|
2049
|
-
table.getAllColumns().filter((col) => col.getCanHide()).map((col) => /* @__PURE__ */ (0,
|
|
3125
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DropdownMenuContent, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(DropdownMenuGroup, { children: [
|
|
3126
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DropdownMenuLabel, { children: "Toggle columns" }),
|
|
3127
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DropdownMenuSeparator, {}),
|
|
3128
|
+
table.getAllColumns().filter((col) => col.getCanHide()).map((col) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2050
3129
|
DropdownMenuCheckboxItem,
|
|
2051
3130
|
{
|
|
2052
3131
|
checked: col.getIsVisible(),
|
|
@@ -2066,23 +3145,23 @@ function DataTablePagination({
|
|
|
2066
3145
|
table,
|
|
2067
3146
|
pageSizeOptions = [10, 20, 30, 50]
|
|
2068
3147
|
}) {
|
|
2069
|
-
return /* @__PURE__ */ (0,
|
|
3148
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2070
3149
|
"div",
|
|
2071
3150
|
{
|
|
2072
3151
|
className: "flex items-center justify-between gap-4 py-4",
|
|
2073
3152
|
"data-slot": "data-table-pagination",
|
|
2074
3153
|
children: [
|
|
2075
|
-
/* @__PURE__ */ (0,
|
|
3154
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-sm text-muted-foreground", children: table.getFilteredSelectedRowModel().rows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
|
|
2076
3155
|
table.getFilteredSelectedRowModel().rows.length,
|
|
2077
3156
|
" of",
|
|
2078
3157
|
" ",
|
|
2079
3158
|
table.getFilteredRowModel().rows.length,
|
|
2080
3159
|
" row(s) selected."
|
|
2081
3160
|
] }) }),
|
|
2082
|
-
/* @__PURE__ */ (0,
|
|
2083
|
-
/* @__PURE__ */ (0,
|
|
2084
|
-
/* @__PURE__ */ (0,
|
|
2085
|
-
/* @__PURE__ */ (0,
|
|
3161
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-6", children: [
|
|
3162
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3163
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "text-sm text-muted-foreground whitespace-nowrap", children: "Rows per page" }),
|
|
3164
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2086
3165
|
Select,
|
|
2087
3166
|
{
|
|
2088
3167
|
onValueChange: (value) => {
|
|
@@ -2090,20 +3169,20 @@ function DataTablePagination({
|
|
|
2090
3169
|
},
|
|
2091
3170
|
value: `${table.getState().pagination.pageSize}`,
|
|
2092
3171
|
children: [
|
|
2093
|
-
/* @__PURE__ */ (0,
|
|
2094
|
-
/* @__PURE__ */ (0,
|
|
3172
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectTrigger, { className: "w-[70px]", size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectValue, { placeholder: `${table.getState().pagination.pageSize}` }) }),
|
|
3173
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectContent, { children: pageSizeOptions.map((pageSize) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize)) })
|
|
2095
3174
|
]
|
|
2096
3175
|
}
|
|
2097
3176
|
)
|
|
2098
3177
|
] }),
|
|
2099
|
-
/* @__PURE__ */ (0,
|
|
3178
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("p", { className: "text-sm text-muted-foreground whitespace-nowrap", children: [
|
|
2100
3179
|
"Page ",
|
|
2101
3180
|
table.getState().pagination.pageIndex + 1,
|
|
2102
3181
|
" of ",
|
|
2103
3182
|
table.getPageCount()
|
|
2104
3183
|
] }),
|
|
2105
|
-
/* @__PURE__ */ (0,
|
|
2106
|
-
/* @__PURE__ */ (0,
|
|
3184
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
3185
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2107
3186
|
Button,
|
|
2108
3187
|
{
|
|
2109
3188
|
"aria-label": "Go to first page",
|
|
@@ -2113,10 +3192,10 @@ function DataTablePagination({
|
|
|
2113
3192
|
},
|
|
2114
3193
|
size: "icon-sm",
|
|
2115
3194
|
variant: "outline",
|
|
2116
|
-
children: /* @__PURE__ */ (0,
|
|
3195
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronsLeftIcon, { className: "size-4" })
|
|
2117
3196
|
}
|
|
2118
3197
|
),
|
|
2119
|
-
/* @__PURE__ */ (0,
|
|
3198
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2120
3199
|
Button,
|
|
2121
3200
|
{
|
|
2122
3201
|
"aria-label": "Go to previous page",
|
|
@@ -2126,10 +3205,10 @@ function DataTablePagination({
|
|
|
2126
3205
|
},
|
|
2127
3206
|
size: "icon-sm",
|
|
2128
3207
|
variant: "outline",
|
|
2129
|
-
children: /* @__PURE__ */ (0,
|
|
3208
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronLeftIcon, { className: "size-4" })
|
|
2130
3209
|
}
|
|
2131
3210
|
),
|
|
2132
|
-
/* @__PURE__ */ (0,
|
|
3211
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2133
3212
|
Button,
|
|
2134
3213
|
{
|
|
2135
3214
|
"aria-label": "Go to next page",
|
|
@@ -2139,10 +3218,10 @@ function DataTablePagination({
|
|
|
2139
3218
|
},
|
|
2140
3219
|
size: "icon-sm",
|
|
2141
3220
|
variant: "outline",
|
|
2142
|
-
children: /* @__PURE__ */ (0,
|
|
3221
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronRightIcon, { className: "size-4" })
|
|
2143
3222
|
}
|
|
2144
3223
|
),
|
|
2145
|
-
/* @__PURE__ */ (0,
|
|
3224
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2146
3225
|
Button,
|
|
2147
3226
|
{
|
|
2148
3227
|
"aria-label": "Go to last page",
|
|
@@ -2152,7 +3231,7 @@ function DataTablePagination({
|
|
|
2152
3231
|
},
|
|
2153
3232
|
size: "icon-sm",
|
|
2154
3233
|
variant: "outline",
|
|
2155
|
-
children: /* @__PURE__ */ (0,
|
|
3234
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react10.ChevronsRightIcon, { className: "size-4" })
|
|
2156
3235
|
}
|
|
2157
3236
|
)
|
|
2158
3237
|
] })
|
|
@@ -2165,7 +3244,7 @@ function DataTableSkeleton({
|
|
|
2165
3244
|
columnCount,
|
|
2166
3245
|
rowCount = 5
|
|
2167
3246
|
}) {
|
|
2168
|
-
return /* @__PURE__ */ (0,
|
|
3247
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jsx_runtime25.Fragment, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableRow, { children: Array.from({ length: columnCount }).map((_inner, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Skeleton, { className: "h-4 w-3/4" }) }, `skeleton-cell-${String(rowIdx)}-${String(colIdx)}`)) }, `skeleton-row-${String(rowIdx)}`)) });
|
|
2169
3248
|
}
|
|
2170
3249
|
function DataTable({
|
|
2171
3250
|
columns: userColumns,
|
|
@@ -2182,11 +3261,11 @@ function DataTable({
|
|
|
2182
3261
|
toolbar,
|
|
2183
3262
|
emptyText = "No results."
|
|
2184
3263
|
}) {
|
|
2185
|
-
const [sorting, setSorting] =
|
|
2186
|
-
const [columnFilters, setColumnFilters] =
|
|
2187
|
-
const [columnVisibility, setColumnVisibility] =
|
|
2188
|
-
const [rowSelection, setRowSelection] =
|
|
2189
|
-
const resolvedColumns =
|
|
3264
|
+
const [sorting, setSorting] = React8.useState([]);
|
|
3265
|
+
const [columnFilters, setColumnFilters] = React8.useState([]);
|
|
3266
|
+
const [columnVisibility, setColumnVisibility] = React8.useState({});
|
|
3267
|
+
const [rowSelection, setRowSelection] = React8.useState({});
|
|
3268
|
+
const resolvedColumns = React8.useMemo(() => {
|
|
2190
3269
|
if (!enableRowSelection) return userColumns;
|
|
2191
3270
|
return [getSelectionColumn(), ...userColumns];
|
|
2192
3271
|
}, [userColumns, enableRowSelection]);
|
|
@@ -2215,19 +3294,19 @@ function DataTable({
|
|
|
2215
3294
|
});
|
|
2216
3295
|
function renderTableBody() {
|
|
2217
3296
|
if (loading) {
|
|
2218
|
-
return /* @__PURE__ */ (0,
|
|
3297
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DataTableSkeleton, { columnCount: resolvedColumns.length, rowCount: skeletonRows });
|
|
2219
3298
|
}
|
|
2220
3299
|
if (table.getRowModel().rows.length) {
|
|
2221
|
-
return /* @__PURE__ */ (0,
|
|
3300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jsx_runtime25.Fragment, { children: table.getRowModel().rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2222
3301
|
TableRow,
|
|
2223
3302
|
{
|
|
2224
3303
|
"data-state": row.getIsSelected() ? "selected" : void 0,
|
|
2225
|
-
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ (0,
|
|
3304
|
+
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableCell, { children: (0, import_react_table.flexRender)(cell.column.columnDef.cell, cell.getContext()) }, cell.id))
|
|
2226
3305
|
},
|
|
2227
3306
|
row.id
|
|
2228
3307
|
)) });
|
|
2229
3308
|
}
|
|
2230
|
-
return /* @__PURE__ */ (0,
|
|
3309
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2231
3310
|
TableCell,
|
|
2232
3311
|
{
|
|
2233
3312
|
className: "h-24 text-center text-muted-foreground",
|
|
@@ -2236,8 +3315,8 @@ function DataTable({
|
|
|
2236
3315
|
}
|
|
2237
3316
|
) });
|
|
2238
3317
|
}
|
|
2239
|
-
return /* @__PURE__ */ (0,
|
|
2240
|
-
toolbar ? toolbar(table) : (searchKey || enableColumnVisibility) && /* @__PURE__ */ (0,
|
|
3318
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: cn("w-full font-sans", className), "data-slot": "data-table", children: [
|
|
3319
|
+
toolbar ? toolbar(table) : (searchKey || enableColumnVisibility) && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2241
3320
|
DataTableToolbar,
|
|
2242
3321
|
{
|
|
2243
3322
|
enableColumnVisibility,
|
|
@@ -2246,29 +3325,29 @@ function DataTable({
|
|
|
2246
3325
|
table
|
|
2247
3326
|
}
|
|
2248
3327
|
),
|
|
2249
|
-
/* @__PURE__ */ (0,
|
|
2250
|
-
/* @__PURE__ */ (0,
|
|
2251
|
-
/* @__PURE__ */ (0,
|
|
3328
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "border border-border", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(Table, { children: [
|
|
3329
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableHead, { children: header.isPlaceholder ? null : (0, import_react_table.flexRender)(header.column.columnDef.header, header.getContext()) }, header.id)) }, headerGroup.id)) }),
|
|
3330
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(TableBody, { children: renderTableBody() })
|
|
2252
3331
|
] }) }),
|
|
2253
|
-
/* @__PURE__ */ (0,
|
|
3332
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DataTablePagination, { pageSizeOptions, table })
|
|
2254
3333
|
] });
|
|
2255
3334
|
}
|
|
2256
3335
|
|
|
2257
3336
|
// src/components/ui/date-picker.tsx
|
|
2258
|
-
var
|
|
3337
|
+
var React9 = __toESM(require("react"));
|
|
2259
3338
|
var import_date_fns = require("date-fns");
|
|
2260
|
-
var
|
|
3339
|
+
var import_lucide_react11 = require("lucide-react");
|
|
2261
3340
|
|
|
2262
3341
|
// src/components/ui/popover.tsx
|
|
2263
3342
|
var import_popover = require("@base-ui/react/popover");
|
|
2264
|
-
var
|
|
3343
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2265
3344
|
function Popover(_a) {
|
|
2266
3345
|
var props = __objRest(_a, []);
|
|
2267
|
-
return /* @__PURE__ */ (0,
|
|
3346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
2268
3347
|
}
|
|
2269
3348
|
function PopoverTrigger(_a) {
|
|
2270
3349
|
var props = __objRest(_a, []);
|
|
2271
|
-
return /* @__PURE__ */ (0,
|
|
3350
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_popover.Popover.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
|
|
2272
3351
|
}
|
|
2273
3352
|
function PopoverContent(_a) {
|
|
2274
3353
|
var _b = _a, {
|
|
@@ -2283,12 +3362,12 @@ function PopoverContent(_a) {
|
|
|
2283
3362
|
"style"
|
|
2284
3363
|
]);
|
|
2285
3364
|
const themeVars = useThemeVars();
|
|
2286
|
-
return /* @__PURE__ */ (0,
|
|
3365
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_popover.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2287
3366
|
import_popover.Popover.Positioner,
|
|
2288
3367
|
{
|
|
2289
3368
|
align,
|
|
2290
3369
|
sideOffset,
|
|
2291
|
-
children: /* @__PURE__ */ (0,
|
|
3370
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2292
3371
|
import_popover.Popover.Popup,
|
|
2293
3372
|
__spreadValues({
|
|
2294
3373
|
className: cn(
|
|
@@ -2304,11 +3383,11 @@ function PopoverContent(_a) {
|
|
|
2304
3383
|
}
|
|
2305
3384
|
function PopoverAnchor(_a) {
|
|
2306
3385
|
var props = __objRest(_a, []);
|
|
2307
|
-
return /* @__PURE__ */ (0,
|
|
3386
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", __spreadValues({ "data-slot": "popover-anchor" }, props));
|
|
2308
3387
|
}
|
|
2309
3388
|
function PopoverHeader(_a) {
|
|
2310
3389
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2311
|
-
return /* @__PURE__ */ (0,
|
|
3390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2312
3391
|
"div",
|
|
2313
3392
|
__spreadValues({
|
|
2314
3393
|
className: cn("flex flex-col gap-1 text-sm", className),
|
|
@@ -2320,7 +3399,7 @@ function PopoverTitle(_a) {
|
|
|
2320
3399
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2321
3400
|
return (
|
|
2322
3401
|
// eslint-disable-next-line jsx-a11y/heading-has-content -- children passed via props spread
|
|
2323
|
-
/* @__PURE__ */ (0,
|
|
3402
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2324
3403
|
"h2",
|
|
2325
3404
|
__spreadValues({
|
|
2326
3405
|
className: cn("font-medium", className),
|
|
@@ -2335,7 +3414,7 @@ function PopoverDescription(_a) {
|
|
|
2335
3414
|
} = _b, props = __objRest(_b, [
|
|
2336
3415
|
"className"
|
|
2337
3416
|
]);
|
|
2338
|
-
return /* @__PURE__ */ (0,
|
|
3417
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2339
3418
|
"p",
|
|
2340
3419
|
__spreadValues({
|
|
2341
3420
|
className: cn("text-muted-foreground", className),
|
|
@@ -2345,7 +3424,7 @@ function PopoverDescription(_a) {
|
|
|
2345
3424
|
}
|
|
2346
3425
|
|
|
2347
3426
|
// src/components/ui/date-picker.tsx
|
|
2348
|
-
var
|
|
3427
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2349
3428
|
function DatePicker({
|
|
2350
3429
|
value,
|
|
2351
3430
|
onChange,
|
|
@@ -2355,7 +3434,7 @@ function DatePicker({
|
|
|
2355
3434
|
className,
|
|
2356
3435
|
calendarProps
|
|
2357
3436
|
}) {
|
|
2358
|
-
const [open, setOpen] =
|
|
3437
|
+
const [open, setOpen] = React9.useState(false);
|
|
2359
3438
|
function handleDaySelect(day) {
|
|
2360
3439
|
if (!day) {
|
|
2361
3440
|
onChange == null ? void 0 : onChange(void 0);
|
|
@@ -2380,11 +3459,11 @@ function DatePicker({
|
|
|
2380
3459
|
} else if (value) {
|
|
2381
3460
|
displayValue = (0, import_date_fns.format)(value, "dd/MM/yyyy");
|
|
2382
3461
|
}
|
|
2383
|
-
return /* @__PURE__ */ (0,
|
|
2384
|
-
/* @__PURE__ */ (0,
|
|
3462
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Popover, { onOpenChange: disabled ? void 0 : setOpen, open, children: [
|
|
3463
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
2385
3464
|
PopoverTrigger,
|
|
2386
3465
|
{
|
|
2387
|
-
render: /* @__PURE__ */ (0,
|
|
3466
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2388
3467
|
Button,
|
|
2389
3468
|
{
|
|
2390
3469
|
className: cn(
|
|
@@ -2398,18 +3477,18 @@ function DatePicker({
|
|
|
2398
3477
|
}
|
|
2399
3478
|
),
|
|
2400
3479
|
children: [
|
|
2401
|
-
/* @__PURE__ */ (0,
|
|
3480
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react11.CalendarIcon, {}),
|
|
2402
3481
|
value ? displayValue : placeholder
|
|
2403
3482
|
]
|
|
2404
3483
|
}
|
|
2405
3484
|
),
|
|
2406
|
-
/* @__PURE__ */ (0,
|
|
3485
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
2407
3486
|
PopoverContent,
|
|
2408
3487
|
{
|
|
2409
3488
|
align: "start",
|
|
2410
3489
|
className: "w-auto rounded-none p-0 shadow-sm",
|
|
2411
3490
|
children: [
|
|
2412
|
-
/* @__PURE__ */ (0,
|
|
3491
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2413
3492
|
Calendar,
|
|
2414
3493
|
__spreadProps(__spreadValues({
|
|
2415
3494
|
captionLayout: "dropdown",
|
|
@@ -2423,9 +3502,9 @@ function DatePicker({
|
|
|
2423
3502
|
)
|
|
2424
3503
|
})
|
|
2425
3504
|
),
|
|
2426
|
-
showTimePicker ? /* @__PURE__ */ (0,
|
|
3505
|
+
showTimePicker ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "border-t border-border px-3 pb-3 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("label", { className: "mb-1.5 block text-xs font-medium text-muted-foreground", children: [
|
|
2427
3506
|
"Time",
|
|
2428
|
-
/* @__PURE__ */ (0,
|
|
3507
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2429
3508
|
"input",
|
|
2430
3509
|
{
|
|
2431
3510
|
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",
|
|
@@ -2442,24 +3521,24 @@ function DatePicker({
|
|
|
2442
3521
|
}
|
|
2443
3522
|
|
|
2444
3523
|
// src/components/ui/dialog.tsx
|
|
2445
|
-
var
|
|
3524
|
+
var import_lucide_react12 = require("lucide-react");
|
|
2446
3525
|
var import_dialog = require("@base-ui/react/dialog");
|
|
2447
|
-
var
|
|
3526
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2448
3527
|
function Dialog(_a) {
|
|
2449
3528
|
var props = __objRest(_a, []);
|
|
2450
|
-
return /* @__PURE__ */ (0,
|
|
3529
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_dialog.Dialog.Root, __spreadValues({ "data-slot": "dialog" }, props));
|
|
2451
3530
|
}
|
|
2452
3531
|
function DialogTrigger(_a) {
|
|
2453
3532
|
var props = __objRest(_a, []);
|
|
2454
|
-
return /* @__PURE__ */ (0,
|
|
3533
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_dialog.Dialog.Trigger, __spreadValues({ "data-slot": "dialog-trigger" }, props));
|
|
2455
3534
|
}
|
|
2456
3535
|
function DialogPortal(_a) {
|
|
2457
3536
|
var props = __objRest(_a, []);
|
|
2458
|
-
return /* @__PURE__ */ (0,
|
|
3537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_dialog.Dialog.Portal, __spreadValues({ "data-slot": "dialog-portal" }, props));
|
|
2459
3538
|
}
|
|
2460
3539
|
function DialogClose(_a) {
|
|
2461
3540
|
var props = __objRest(_a, []);
|
|
2462
|
-
return /* @__PURE__ */ (0,
|
|
3541
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_dialog.Dialog.Close, __spreadValues({ "data-slot": "dialog-close" }, props));
|
|
2463
3542
|
}
|
|
2464
3543
|
function DialogOverlay(_a) {
|
|
2465
3544
|
var _b = _a, {
|
|
@@ -2467,7 +3546,7 @@ function DialogOverlay(_a) {
|
|
|
2467
3546
|
} = _b, props = __objRest(_b, [
|
|
2468
3547
|
"className"
|
|
2469
3548
|
]);
|
|
2470
|
-
return /* @__PURE__ */ (0,
|
|
3549
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2471
3550
|
import_dialog.Dialog.Backdrop,
|
|
2472
3551
|
__spreadValues({
|
|
2473
3552
|
className: cn(
|
|
@@ -2492,9 +3571,9 @@ function DialogContent(_a) {
|
|
|
2492
3571
|
"style"
|
|
2493
3572
|
]);
|
|
2494
3573
|
const themeVars = useThemeVars();
|
|
2495
|
-
return /* @__PURE__ */ (0,
|
|
2496
|
-
/* @__PURE__ */ (0,
|
|
2497
|
-
/* @__PURE__ */ (0,
|
|
3574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(DialogPortal, { children: [
|
|
3575
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DialogOverlay, {}),
|
|
3576
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2498
3577
|
import_dialog.Dialog.Popup,
|
|
2499
3578
|
__spreadProps(__spreadValues({
|
|
2500
3579
|
className: cn(
|
|
@@ -2507,14 +3586,14 @@ function DialogContent(_a) {
|
|
|
2507
3586
|
}, props), {
|
|
2508
3587
|
children: [
|
|
2509
3588
|
children,
|
|
2510
|
-
showCloseButton ? /* @__PURE__ */ (0,
|
|
3589
|
+
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2511
3590
|
import_dialog.Dialog.Close,
|
|
2512
3591
|
{
|
|
2513
3592
|
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",
|
|
2514
3593
|
"data-slot": "dialog-close",
|
|
2515
3594
|
children: [
|
|
2516
|
-
/* @__PURE__ */ (0,
|
|
2517
|
-
/* @__PURE__ */ (0,
|
|
3595
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react12.XIcon, {}),
|
|
3596
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "sr-only", children: "Close" })
|
|
2518
3597
|
]
|
|
2519
3598
|
}
|
|
2520
3599
|
) : null
|
|
@@ -2525,7 +3604,7 @@ function DialogContent(_a) {
|
|
|
2525
3604
|
}
|
|
2526
3605
|
function DialogHeader(_a) {
|
|
2527
3606
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2528
|
-
return /* @__PURE__ */ (0,
|
|
3607
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2529
3608
|
"div",
|
|
2530
3609
|
__spreadValues({
|
|
2531
3610
|
className: cn("flex flex-col gap-1.5", className),
|
|
@@ -2543,7 +3622,7 @@ function DialogFooter(_a) {
|
|
|
2543
3622
|
"showCloseButton",
|
|
2544
3623
|
"children"
|
|
2545
3624
|
]);
|
|
2546
|
-
return /* @__PURE__ */ (0,
|
|
3625
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2547
3626
|
"div",
|
|
2548
3627
|
__spreadProps(__spreadValues({
|
|
2549
3628
|
className: cn(
|
|
@@ -2555,7 +3634,7 @@ function DialogFooter(_a) {
|
|
|
2555
3634
|
}, props), {
|
|
2556
3635
|
children: [
|
|
2557
3636
|
children,
|
|
2558
|
-
showCloseButton ? /* @__PURE__ */ (0,
|
|
3637
|
+
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2559
3638
|
import_dialog.Dialog.Close,
|
|
2560
3639
|
{
|
|
2561
3640
|
className: cn(buttonVariants({ variant: "outline" })),
|
|
@@ -2572,7 +3651,7 @@ function DialogTitle(_a) {
|
|
|
2572
3651
|
} = _b, props = __objRest(_b, [
|
|
2573
3652
|
"className"
|
|
2574
3653
|
]);
|
|
2575
|
-
return /* @__PURE__ */ (0,
|
|
3654
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2576
3655
|
import_dialog.Dialog.Title,
|
|
2577
3656
|
__spreadValues({
|
|
2578
3657
|
className: cn("text-lg leading-none font-semibold", className),
|
|
@@ -2586,7 +3665,7 @@ function DialogDescription(_a) {
|
|
|
2586
3665
|
} = _b, props = __objRest(_b, [
|
|
2587
3666
|
"className"
|
|
2588
3667
|
]);
|
|
2589
|
-
return /* @__PURE__ */ (0,
|
|
3668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
2590
3669
|
import_dialog.Dialog.Description,
|
|
2591
3670
|
__spreadValues({
|
|
2592
3671
|
className: cn("text-sm text-muted-foreground", className),
|
|
@@ -2597,22 +3676,22 @@ function DialogDescription(_a) {
|
|
|
2597
3676
|
|
|
2598
3677
|
// src/components/ui/drawer.tsx
|
|
2599
3678
|
var import_vaul = require("vaul");
|
|
2600
|
-
var
|
|
3679
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
2601
3680
|
function Drawer(_a) {
|
|
2602
3681
|
var props = __objRest(_a, []);
|
|
2603
|
-
return /* @__PURE__ */ (0,
|
|
3682
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul.Drawer.Root, __spreadValues({ "data-slot": "drawer" }, props));
|
|
2604
3683
|
}
|
|
2605
3684
|
function DrawerTrigger(_a) {
|
|
2606
3685
|
var props = __objRest(_a, []);
|
|
2607
|
-
return /* @__PURE__ */ (0,
|
|
3686
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul.Drawer.Trigger, __spreadValues({ "data-slot": "drawer-trigger" }, props));
|
|
2608
3687
|
}
|
|
2609
3688
|
function DrawerPortal(_a) {
|
|
2610
3689
|
var props = __objRest(_a, []);
|
|
2611
|
-
return /* @__PURE__ */ (0,
|
|
3690
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul.Drawer.Portal, __spreadValues({ "data-slot": "drawer-portal" }, props));
|
|
2612
3691
|
}
|
|
2613
3692
|
function DrawerClose(_a) {
|
|
2614
3693
|
var props = __objRest(_a, []);
|
|
2615
|
-
return /* @__PURE__ */ (0,
|
|
3694
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_vaul.Drawer.Close, __spreadValues({ "data-slot": "drawer-close" }, props));
|
|
2616
3695
|
}
|
|
2617
3696
|
function DrawerOverlay(_a) {
|
|
2618
3697
|
var _b = _a, {
|
|
@@ -2620,7 +3699,7 @@ function DrawerOverlay(_a) {
|
|
|
2620
3699
|
} = _b, props = __objRest(_b, [
|
|
2621
3700
|
"className"
|
|
2622
3701
|
]);
|
|
2623
|
-
return /* @__PURE__ */ (0,
|
|
3702
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2624
3703
|
import_vaul.Drawer.Overlay,
|
|
2625
3704
|
__spreadValues({
|
|
2626
3705
|
className: cn(
|
|
@@ -2643,9 +3722,9 @@ function DrawerContent(_a) {
|
|
|
2643
3722
|
"style"
|
|
2644
3723
|
]);
|
|
2645
3724
|
const themeVars = useThemeVars();
|
|
2646
|
-
return /* @__PURE__ */ (0,
|
|
2647
|
-
/* @__PURE__ */ (0,
|
|
2648
|
-
/* @__PURE__ */ (0,
|
|
3725
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(DrawerPortal, { "data-slot": "drawer-portal", children: [
|
|
3726
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DrawerOverlay, {}),
|
|
3727
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
2649
3728
|
import_vaul.Drawer.Content,
|
|
2650
3729
|
__spreadProps(__spreadValues({
|
|
2651
3730
|
className: cn(
|
|
@@ -2661,7 +3740,7 @@ function DrawerContent(_a) {
|
|
|
2661
3740
|
style: __spreadValues(__spreadValues({}, themeVars), style2)
|
|
2662
3741
|
}, props), {
|
|
2663
3742
|
children: [
|
|
2664
|
-
/* @__PURE__ */ (0,
|
|
3743
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block group-data-[vaul-drawer-direction=top]/drawer-content:block" }),
|
|
2665
3744
|
children
|
|
2666
3745
|
]
|
|
2667
3746
|
})
|
|
@@ -2670,7 +3749,7 @@ function DrawerContent(_a) {
|
|
|
2670
3749
|
}
|
|
2671
3750
|
function DrawerHeader(_a) {
|
|
2672
3751
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2673
|
-
return /* @__PURE__ */ (0,
|
|
3752
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2674
3753
|
"div",
|
|
2675
3754
|
__spreadValues({
|
|
2676
3755
|
className: cn("flex flex-col gap-1 p-4", className),
|
|
@@ -2680,7 +3759,7 @@ function DrawerHeader(_a) {
|
|
|
2680
3759
|
}
|
|
2681
3760
|
function DrawerFooter(_a) {
|
|
2682
3761
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2683
|
-
return /* @__PURE__ */ (0,
|
|
3762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2684
3763
|
"div",
|
|
2685
3764
|
__spreadValues({
|
|
2686
3765
|
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
@@ -2694,7 +3773,7 @@ function DrawerTitle(_a) {
|
|
|
2694
3773
|
} = _b, props = __objRest(_b, [
|
|
2695
3774
|
"className"
|
|
2696
3775
|
]);
|
|
2697
|
-
return /* @__PURE__ */ (0,
|
|
3776
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2698
3777
|
import_vaul.Drawer.Title,
|
|
2699
3778
|
__spreadValues({
|
|
2700
3779
|
className: cn("text-lg font-semibold text-foreground", className),
|
|
@@ -2708,7 +3787,7 @@ function DrawerDescription(_a) {
|
|
|
2708
3787
|
} = _b, props = __objRest(_b, [
|
|
2709
3788
|
"className"
|
|
2710
3789
|
]);
|
|
2711
|
-
return /* @__PURE__ */ (0,
|
|
3790
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2712
3791
|
import_vaul.Drawer.Description,
|
|
2713
3792
|
__spreadValues({
|
|
2714
3793
|
className: cn("text-sm text-muted-foreground", className),
|
|
@@ -2717,113 +3796,12 @@ function DrawerDescription(_a) {
|
|
|
2717
3796
|
);
|
|
2718
3797
|
}
|
|
2719
3798
|
|
|
2720
|
-
// src/components/ui/empty.tsx
|
|
2721
|
-
var import_class_variance_authority4 = require("class-variance-authority");
|
|
2722
|
-
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2723
|
-
function Empty(_a) {
|
|
2724
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2725
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2726
|
-
"div",
|
|
2727
|
-
__spreadValues({
|
|
2728
|
-
className: cn(
|
|
2729
|
-
"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 border border-dashed p-6 text-center text-balance md:p-12",
|
|
2730
|
-
className
|
|
2731
|
-
),
|
|
2732
|
-
"data-slot": "empty"
|
|
2733
|
-
}, props)
|
|
2734
|
-
);
|
|
2735
|
-
}
|
|
2736
|
-
function EmptyHeader(_a) {
|
|
2737
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2738
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2739
|
-
"div",
|
|
2740
|
-
__spreadValues({
|
|
2741
|
-
className: cn(
|
|
2742
|
-
"flex max-w-sm flex-col items-center gap-2 text-center",
|
|
2743
|
-
className
|
|
2744
|
-
),
|
|
2745
|
-
"data-slot": "empty-header"
|
|
2746
|
-
}, props)
|
|
2747
|
-
);
|
|
2748
|
-
}
|
|
2749
|
-
var emptyMediaVariants = (0, import_class_variance_authority4.cva)(
|
|
2750
|
-
"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
2751
|
-
{
|
|
2752
|
-
variants: {
|
|
2753
|
-
variant: {
|
|
2754
|
-
default: "[&_svg:not([class*='size-'])]:size-10",
|
|
2755
|
-
icon: "flex size-10 shrink-0 items-center justify-center text-muted-foreground [&_svg:not([class*='size-'])]:size-6"
|
|
2756
|
-
}
|
|
2757
|
-
},
|
|
2758
|
-
defaultVariants: {
|
|
2759
|
-
variant: "default"
|
|
2760
|
-
}
|
|
2761
|
-
}
|
|
2762
|
-
);
|
|
2763
|
-
function EmptyMedia(_a) {
|
|
2764
|
-
var _b = _a, {
|
|
2765
|
-
className,
|
|
2766
|
-
variant = "default"
|
|
2767
|
-
} = _b, props = __objRest(_b, [
|
|
2768
|
-
"className",
|
|
2769
|
-
"variant"
|
|
2770
|
-
]);
|
|
2771
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2772
|
-
"div",
|
|
2773
|
-
__spreadValues({
|
|
2774
|
-
className: cn(emptyMediaVariants({ variant, className })),
|
|
2775
|
-
"data-slot": "empty-icon",
|
|
2776
|
-
"data-variant": variant
|
|
2777
|
-
}, props)
|
|
2778
|
-
);
|
|
2779
|
-
}
|
|
2780
|
-
function EmptyTitle(_a) {
|
|
2781
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2782
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2783
|
-
"div",
|
|
2784
|
-
__spreadValues({
|
|
2785
|
-
className: cn("text-lg font-medium tracking-tight", className),
|
|
2786
|
-
"data-slot": "empty-title"
|
|
2787
|
-
}, props)
|
|
2788
|
-
);
|
|
2789
|
-
}
|
|
2790
|
-
function EmptyDescription(_a) {
|
|
2791
|
-
var _b = _a, {
|
|
2792
|
-
className
|
|
2793
|
-
} = _b, props = __objRest(_b, [
|
|
2794
|
-
"className"
|
|
2795
|
-
]);
|
|
2796
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2797
|
-
"div",
|
|
2798
|
-
__spreadValues({
|
|
2799
|
-
className: cn(
|
|
2800
|
-
"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
2801
|
-
className
|
|
2802
|
-
),
|
|
2803
|
-
"data-slot": "empty-description"
|
|
2804
|
-
}, props)
|
|
2805
|
-
);
|
|
2806
|
-
}
|
|
2807
|
-
function EmptyContent(_a) {
|
|
2808
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2809
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2810
|
-
"div",
|
|
2811
|
-
__spreadValues({
|
|
2812
|
-
className: cn(
|
|
2813
|
-
"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance",
|
|
2814
|
-
className
|
|
2815
|
-
),
|
|
2816
|
-
"data-slot": "empty-content"
|
|
2817
|
-
}, props)
|
|
2818
|
-
);
|
|
2819
|
-
}
|
|
2820
|
-
|
|
2821
3799
|
// src/components/ui/field.tsx
|
|
2822
|
-
var
|
|
2823
|
-
var
|
|
3800
|
+
var import_react8 = require("react");
|
|
3801
|
+
var import_class_variance_authority6 = require("class-variance-authority");
|
|
2824
3802
|
|
|
2825
3803
|
// src/components/ui/label.tsx
|
|
2826
|
-
var
|
|
3804
|
+
var import_jsx_runtime30 = (
|
|
2827
3805
|
// eslint-disable-next-line jsx-a11y/label-has-associated-control -- htmlFor is passed by the consumer
|
|
2828
3806
|
require("react/jsx-runtime")
|
|
2829
3807
|
);
|
|
@@ -2833,7 +3811,7 @@ function Label(_a) {
|
|
|
2833
3811
|
} = _b, props = __objRest(_b, [
|
|
2834
3812
|
"className"
|
|
2835
3813
|
]);
|
|
2836
|
-
return /* @__PURE__ */ (0,
|
|
3814
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2837
3815
|
"label",
|
|
2838
3816
|
__spreadValues({
|
|
2839
3817
|
className: cn(
|
|
@@ -2847,7 +3825,7 @@ function Label(_a) {
|
|
|
2847
3825
|
|
|
2848
3826
|
// src/components/ui/separator.tsx
|
|
2849
3827
|
var import_separator = require("@base-ui/react/separator");
|
|
2850
|
-
var
|
|
3828
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2851
3829
|
function Separator(_a) {
|
|
2852
3830
|
var _b = _a, {
|
|
2853
3831
|
className,
|
|
@@ -2856,7 +3834,7 @@ function Separator(_a) {
|
|
|
2856
3834
|
"className",
|
|
2857
3835
|
"orientation"
|
|
2858
3836
|
]);
|
|
2859
|
-
return /* @__PURE__ */ (0,
|
|
3837
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2860
3838
|
import_separator.Separator,
|
|
2861
3839
|
__spreadValues({
|
|
2862
3840
|
className: cn(
|
|
@@ -2870,10 +3848,10 @@ function Separator(_a) {
|
|
|
2870
3848
|
}
|
|
2871
3849
|
|
|
2872
3850
|
// src/components/ui/field.tsx
|
|
2873
|
-
var
|
|
3851
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2874
3852
|
function FieldSet(_a) {
|
|
2875
3853
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2876
|
-
return /* @__PURE__ */ (0,
|
|
3854
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2877
3855
|
"fieldset",
|
|
2878
3856
|
__spreadValues({
|
|
2879
3857
|
className: cn(
|
|
@@ -2893,7 +3871,7 @@ function FieldLegend(_a) {
|
|
|
2893
3871
|
"className",
|
|
2894
3872
|
"variant"
|
|
2895
3873
|
]);
|
|
2896
|
-
return /* @__PURE__ */ (0,
|
|
3874
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2897
3875
|
"legend",
|
|
2898
3876
|
__spreadValues({
|
|
2899
3877
|
className: cn(
|
|
@@ -2909,7 +3887,7 @@ function FieldLegend(_a) {
|
|
|
2909
3887
|
}
|
|
2910
3888
|
function FieldGroup(_a) {
|
|
2911
3889
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2912
|
-
return /* @__PURE__ */ (0,
|
|
3890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2913
3891
|
"div",
|
|
2914
3892
|
__spreadValues({
|
|
2915
3893
|
className: cn(
|
|
@@ -2920,7 +3898,7 @@ function FieldGroup(_a) {
|
|
|
2920
3898
|
}, props)
|
|
2921
3899
|
);
|
|
2922
3900
|
}
|
|
2923
|
-
var fieldVariants = (0,
|
|
3901
|
+
var fieldVariants = (0, import_class_variance_authority6.cva)(
|
|
2924
3902
|
"group/field flex w-full gap-3 data-[invalid=true]:text-destructive",
|
|
2925
3903
|
{
|
|
2926
3904
|
variants: {
|
|
@@ -2951,7 +3929,7 @@ function Field(_a) {
|
|
|
2951
3929
|
"className",
|
|
2952
3930
|
"orientation"
|
|
2953
3931
|
]);
|
|
2954
|
-
return /* @__PURE__ */ (0,
|
|
3932
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2955
3933
|
"div",
|
|
2956
3934
|
__spreadValues({
|
|
2957
3935
|
className: cn(fieldVariants({ orientation }), className),
|
|
@@ -2963,7 +3941,7 @@ function Field(_a) {
|
|
|
2963
3941
|
}
|
|
2964
3942
|
function FieldContent(_a) {
|
|
2965
3943
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2966
|
-
return /* @__PURE__ */ (0,
|
|
3944
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2967
3945
|
"div",
|
|
2968
3946
|
__spreadValues({
|
|
2969
3947
|
className: cn(
|
|
@@ -2980,7 +3958,7 @@ function FieldLabel(_a) {
|
|
|
2980
3958
|
} = _b, props = __objRest(_b, [
|
|
2981
3959
|
"className"
|
|
2982
3960
|
]);
|
|
2983
|
-
return /* @__PURE__ */ (0,
|
|
3961
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2984
3962
|
Label,
|
|
2985
3963
|
__spreadValues({
|
|
2986
3964
|
className: cn(
|
|
@@ -2995,7 +3973,7 @@ function FieldLabel(_a) {
|
|
|
2995
3973
|
}
|
|
2996
3974
|
function FieldTitle(_a) {
|
|
2997
3975
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
2998
|
-
return /* @__PURE__ */ (0,
|
|
3976
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
2999
3977
|
"div",
|
|
3000
3978
|
__spreadValues({
|
|
3001
3979
|
className: cn(
|
|
@@ -3008,7 +3986,7 @@ function FieldTitle(_a) {
|
|
|
3008
3986
|
}
|
|
3009
3987
|
function FieldDescription(_a) {
|
|
3010
3988
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3011
|
-
return /* @__PURE__ */ (0,
|
|
3989
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
3012
3990
|
"p",
|
|
3013
3991
|
__spreadValues({
|
|
3014
3992
|
className: cn(
|
|
@@ -3029,7 +4007,7 @@ function FieldSeparator(_a) {
|
|
|
3029
4007
|
"children",
|
|
3030
4008
|
"className"
|
|
3031
4009
|
]);
|
|
3032
|
-
return /* @__PURE__ */ (0,
|
|
4010
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
3033
4011
|
"div",
|
|
3034
4012
|
__spreadProps(__spreadValues({
|
|
3035
4013
|
className: cn(
|
|
@@ -3040,8 +4018,8 @@ function FieldSeparator(_a) {
|
|
|
3040
4018
|
"data-slot": "field-separator"
|
|
3041
4019
|
}, props), {
|
|
3042
4020
|
children: [
|
|
3043
|
-
/* @__PURE__ */ (0,
|
|
3044
|
-
children ? /* @__PURE__ */ (0,
|
|
4021
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
4022
|
+
children ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
3045
4023
|
"span",
|
|
3046
4024
|
{
|
|
3047
4025
|
className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
|
|
@@ -3063,7 +4041,7 @@ function FieldError(_a) {
|
|
|
3063
4041
|
"children",
|
|
3064
4042
|
"errors"
|
|
3065
4043
|
]);
|
|
3066
|
-
const content = (0,
|
|
4044
|
+
const content = (0, import_react8.useMemo)(() => {
|
|
3067
4045
|
var _a2;
|
|
3068
4046
|
if (children) {
|
|
3069
4047
|
return children;
|
|
@@ -3077,14 +4055,14 @@ function FieldError(_a) {
|
|
|
3077
4055
|
if (uniqueErrors.length === 1) {
|
|
3078
4056
|
return (_a2 = uniqueErrors[0]) == null ? void 0 : _a2.message;
|
|
3079
4057
|
}
|
|
3080
|
-
return /* @__PURE__ */ (0,
|
|
3081
|
-
(error) => (error == null ? void 0 : error.message) && /* @__PURE__ */ (0,
|
|
4058
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
|
|
4059
|
+
(error) => (error == null ? void 0 : error.message) && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("li", { children: error.message }, error.message)
|
|
3082
4060
|
) });
|
|
3083
4061
|
}, [children, errors]);
|
|
3084
4062
|
if (!content) {
|
|
3085
4063
|
return null;
|
|
3086
4064
|
}
|
|
3087
|
-
return /* @__PURE__ */ (0,
|
|
4065
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
3088
4066
|
"div",
|
|
3089
4067
|
__spreadProps(__spreadValues({
|
|
3090
4068
|
className: cn("text-xs font-normal text-destructive", className),
|
|
@@ -3097,13 +4075,13 @@ function FieldError(_a) {
|
|
|
3097
4075
|
}
|
|
3098
4076
|
|
|
3099
4077
|
// src/components/ui/input-group.tsx
|
|
3100
|
-
var
|
|
4078
|
+
var import_class_variance_authority7 = require("class-variance-authority");
|
|
3101
4079
|
|
|
3102
4080
|
// src/components/ui/textarea.tsx
|
|
3103
|
-
var
|
|
4081
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
3104
4082
|
function Textarea(_a) {
|
|
3105
4083
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3106
|
-
return /* @__PURE__ */ (0,
|
|
4084
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
3107
4085
|
"textarea",
|
|
3108
4086
|
__spreadValues({
|
|
3109
4087
|
className: cn(
|
|
@@ -3117,10 +4095,10 @@ function Textarea(_a) {
|
|
|
3117
4095
|
}
|
|
3118
4096
|
|
|
3119
4097
|
// src/components/ui/input-group.tsx
|
|
3120
|
-
var
|
|
4098
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
3121
4099
|
function InputGroup(_a) {
|
|
3122
4100
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3123
|
-
return /* @__PURE__ */ (0,
|
|
4101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3124
4102
|
"div",
|
|
3125
4103
|
__spreadValues({
|
|
3126
4104
|
className: cn(
|
|
@@ -3142,7 +4120,7 @@ function InputGroup(_a) {
|
|
|
3142
4120
|
}, props)
|
|
3143
4121
|
);
|
|
3144
4122
|
}
|
|
3145
|
-
var inputGroupAddonVariants = (0,
|
|
4123
|
+
var inputGroupAddonVariants = (0, import_class_variance_authority7.cva)(
|
|
3146
4124
|
"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
|
|
3147
4125
|
{
|
|
3148
4126
|
variants: {
|
|
@@ -3168,7 +4146,7 @@ function InputGroupAddon(_a) {
|
|
|
3168
4146
|
]);
|
|
3169
4147
|
return (
|
|
3170
4148
|
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- click only forwards focus to the sibling input; the div is not truly interactive
|
|
3171
|
-
/* @__PURE__ */ (0,
|
|
4149
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3172
4150
|
"div",
|
|
3173
4151
|
__spreadValues({
|
|
3174
4152
|
className: cn(inputGroupAddonVariants({ align }), className),
|
|
@@ -3192,7 +4170,7 @@ function InputGroupAddon(_a) {
|
|
|
3192
4170
|
)
|
|
3193
4171
|
);
|
|
3194
4172
|
}
|
|
3195
|
-
var inputGroupButtonVariants = (0,
|
|
4173
|
+
var inputGroupButtonVariants = (0, import_class_variance_authority7.cva)(
|
|
3196
4174
|
"flex items-center gap-2 text-sm shadow-none",
|
|
3197
4175
|
{
|
|
3198
4176
|
variants: {
|
|
@@ -3220,7 +4198,7 @@ function InputGroupButton(_a) {
|
|
|
3220
4198
|
"variant",
|
|
3221
4199
|
"size"
|
|
3222
4200
|
]);
|
|
3223
|
-
return /* @__PURE__ */ (0,
|
|
4201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3224
4202
|
Button,
|
|
3225
4203
|
__spreadValues({
|
|
3226
4204
|
className: cn(inputGroupButtonVariants({ size }), className),
|
|
@@ -3232,7 +4210,7 @@ function InputGroupButton(_a) {
|
|
|
3232
4210
|
}
|
|
3233
4211
|
function InputGroupText(_a) {
|
|
3234
4212
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3235
|
-
return /* @__PURE__ */ (0,
|
|
4213
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3236
4214
|
"span",
|
|
3237
4215
|
__spreadValues({
|
|
3238
4216
|
className: cn(
|
|
@@ -3248,7 +4226,7 @@ function InputGroupInput(_a) {
|
|
|
3248
4226
|
} = _b, props = __objRest(_b, [
|
|
3249
4227
|
"className"
|
|
3250
4228
|
]);
|
|
3251
|
-
return /* @__PURE__ */ (0,
|
|
4229
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3252
4230
|
Input,
|
|
3253
4231
|
__spreadValues({
|
|
3254
4232
|
className: cn(
|
|
@@ -3265,7 +4243,7 @@ function InputGroupTextarea(_a) {
|
|
|
3265
4243
|
} = _b, props = __objRest(_b, [
|
|
3266
4244
|
"className"
|
|
3267
4245
|
]);
|
|
3268
|
-
return /* @__PURE__ */ (0,
|
|
4246
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3269
4247
|
Textarea,
|
|
3270
4248
|
__spreadValues({
|
|
3271
4249
|
className: cn(
|
|
@@ -3278,10 +4256,10 @@ function InputGroupTextarea(_a) {
|
|
|
3278
4256
|
}
|
|
3279
4257
|
|
|
3280
4258
|
// src/components/ui/input-otp.tsx
|
|
3281
|
-
var
|
|
4259
|
+
var React10 = __toESM(require("react"));
|
|
3282
4260
|
var import_input_otp = require("input-otp");
|
|
3283
|
-
var
|
|
3284
|
-
var
|
|
4261
|
+
var import_lucide_react13 = require("lucide-react");
|
|
4262
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
3285
4263
|
function InputOTP(_a) {
|
|
3286
4264
|
var _b = _a, {
|
|
3287
4265
|
className,
|
|
@@ -3290,7 +4268,7 @@ function InputOTP(_a) {
|
|
|
3290
4268
|
"className",
|
|
3291
4269
|
"containerClassName"
|
|
3292
4270
|
]);
|
|
3293
|
-
return /* @__PURE__ */ (0,
|
|
4271
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3294
4272
|
import_input_otp.OTPInput,
|
|
3295
4273
|
__spreadValues({
|
|
3296
4274
|
className: cn("disabled:cursor-not-allowed", className),
|
|
@@ -3304,7 +4282,7 @@ function InputOTP(_a) {
|
|
|
3304
4282
|
}
|
|
3305
4283
|
function InputOTPGroup(_a) {
|
|
3306
4284
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3307
|
-
return /* @__PURE__ */ (0,
|
|
4285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3308
4286
|
"div",
|
|
3309
4287
|
__spreadValues({
|
|
3310
4288
|
className: cn("flex items-center", className),
|
|
@@ -3321,9 +4299,9 @@ function InputOTPSlot(_a) {
|
|
|
3321
4299
|
"className"
|
|
3322
4300
|
]);
|
|
3323
4301
|
var _a2;
|
|
3324
|
-
const inputOTPContext =
|
|
4302
|
+
const inputOTPContext = React10.useContext(import_input_otp.OTPInputContext);
|
|
3325
4303
|
const { char, hasFakeCaret, isActive } = (_a2 = inputOTPContext.slots[index]) != null ? _a2 : {};
|
|
3326
|
-
return /* @__PURE__ */ (0,
|
|
4304
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
3327
4305
|
"div",
|
|
3328
4306
|
__spreadProps(__spreadValues({
|
|
3329
4307
|
className: cn(
|
|
@@ -3335,22 +4313,22 @@ function InputOTPSlot(_a) {
|
|
|
3335
4313
|
}, props), {
|
|
3336
4314
|
children: [
|
|
3337
4315
|
char,
|
|
3338
|
-
hasFakeCaret ? /* @__PURE__ */ (0,
|
|
4316
|
+
hasFakeCaret ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) }) : null
|
|
3339
4317
|
]
|
|
3340
4318
|
})
|
|
3341
4319
|
);
|
|
3342
4320
|
}
|
|
3343
4321
|
function InputOTPSeparator(_a) {
|
|
3344
4322
|
var props = __objRest(_a, []);
|
|
3345
|
-
return /* @__PURE__ */ (0,
|
|
4323
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", __spreadProps(__spreadValues({ "data-slot": "input-otp-separator", role: "separator" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react13.MinusIcon, {}) }));
|
|
3346
4324
|
}
|
|
3347
4325
|
|
|
3348
4326
|
// src/components/ui/pagination.tsx
|
|
3349
|
-
var
|
|
3350
|
-
var
|
|
4327
|
+
var import_lucide_react14 = require("lucide-react");
|
|
4328
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
3351
4329
|
function Pagination(_a) {
|
|
3352
4330
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3353
|
-
return /* @__PURE__ */ (0,
|
|
4331
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3354
4332
|
"nav",
|
|
3355
4333
|
__spreadValues({
|
|
3356
4334
|
"aria-label": "pagination",
|
|
@@ -3366,7 +4344,7 @@ function PaginationContent(_a) {
|
|
|
3366
4344
|
} = _b, props = __objRest(_b, [
|
|
3367
4345
|
"className"
|
|
3368
4346
|
]);
|
|
3369
|
-
return /* @__PURE__ */ (0,
|
|
4347
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3370
4348
|
"ul",
|
|
3371
4349
|
__spreadValues({
|
|
3372
4350
|
className: cn("flex flex-row items-center gap-1", className),
|
|
@@ -3376,7 +4354,7 @@ function PaginationContent(_a) {
|
|
|
3376
4354
|
}
|
|
3377
4355
|
function PaginationItem(_a) {
|
|
3378
4356
|
var props = __objRest(_a, []);
|
|
3379
|
-
return /* @__PURE__ */ (0,
|
|
4357
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("li", __spreadValues({ "data-slot": "pagination-item" }, props));
|
|
3380
4358
|
}
|
|
3381
4359
|
function PaginationLink(_a) {
|
|
3382
4360
|
var _b = _a, {
|
|
@@ -3390,7 +4368,7 @@ function PaginationLink(_a) {
|
|
|
3390
4368
|
]);
|
|
3391
4369
|
return (
|
|
3392
4370
|
// eslint-disable-next-line jsx-a11y/anchor-has-content -- children passed via props spread
|
|
3393
|
-
/* @__PURE__ */ (0,
|
|
4371
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3394
4372
|
"a",
|
|
3395
4373
|
__spreadValues({
|
|
3396
4374
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -3413,7 +4391,7 @@ function PaginationPrevious(_a) {
|
|
|
3413
4391
|
} = _b, props = __objRest(_b, [
|
|
3414
4392
|
"className"
|
|
3415
4393
|
]);
|
|
3416
|
-
return /* @__PURE__ */ (0,
|
|
4394
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
3417
4395
|
PaginationLink,
|
|
3418
4396
|
__spreadProps(__spreadValues({
|
|
3419
4397
|
"aria-label": "Go to previous page",
|
|
@@ -3421,8 +4399,8 @@ function PaginationPrevious(_a) {
|
|
|
3421
4399
|
size: "default"
|
|
3422
4400
|
}, props), {
|
|
3423
4401
|
children: [
|
|
3424
|
-
/* @__PURE__ */ (0,
|
|
3425
|
-
/* @__PURE__ */ (0,
|
|
4402
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react14.ChevronLeftIcon, {}),
|
|
4403
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "hidden sm:block", children: "Previous" })
|
|
3426
4404
|
]
|
|
3427
4405
|
})
|
|
3428
4406
|
);
|
|
@@ -3433,7 +4411,7 @@ function PaginationNext(_a) {
|
|
|
3433
4411
|
} = _b, props = __objRest(_b, [
|
|
3434
4412
|
"className"
|
|
3435
4413
|
]);
|
|
3436
|
-
return /* @__PURE__ */ (0,
|
|
4414
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
3437
4415
|
PaginationLink,
|
|
3438
4416
|
__spreadProps(__spreadValues({
|
|
3439
4417
|
"aria-label": "Go to next page",
|
|
@@ -3441,8 +4419,8 @@ function PaginationNext(_a) {
|
|
|
3441
4419
|
size: "default"
|
|
3442
4420
|
}, props), {
|
|
3443
4421
|
children: [
|
|
3444
|
-
/* @__PURE__ */ (0,
|
|
3445
|
-
/* @__PURE__ */ (0,
|
|
4422
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "hidden sm:block", children: "Next" }),
|
|
4423
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react14.ChevronRightIcon, {})
|
|
3446
4424
|
]
|
|
3447
4425
|
})
|
|
3448
4426
|
);
|
|
@@ -3453,7 +4431,7 @@ function PaginationEllipsis(_a) {
|
|
|
3453
4431
|
} = _b, props = __objRest(_b, [
|
|
3454
4432
|
"className"
|
|
3455
4433
|
]);
|
|
3456
|
-
return /* @__PURE__ */ (0,
|
|
4434
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
3457
4435
|
"span",
|
|
3458
4436
|
__spreadProps(__spreadValues({
|
|
3459
4437
|
"aria-hidden": true,
|
|
@@ -3461,8 +4439,8 @@ function PaginationEllipsis(_a) {
|
|
|
3461
4439
|
"data-slot": "pagination-ellipsis"
|
|
3462
4440
|
}, props), {
|
|
3463
4441
|
children: [
|
|
3464
|
-
/* @__PURE__ */ (0,
|
|
3465
|
-
/* @__PURE__ */ (0,
|
|
4442
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react14.MoreHorizontalIcon, { className: "size-4" }),
|
|
4443
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "sr-only", children: "More pages" })
|
|
3466
4444
|
]
|
|
3467
4445
|
})
|
|
3468
4446
|
);
|
|
@@ -3470,7 +4448,7 @@ function PaginationEllipsis(_a) {
|
|
|
3470
4448
|
|
|
3471
4449
|
// src/components/ui/progress.tsx
|
|
3472
4450
|
var import_progress = require("@base-ui/react/progress");
|
|
3473
|
-
var
|
|
4451
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
3474
4452
|
function Progress(_a) {
|
|
3475
4453
|
var _b = _a, {
|
|
3476
4454
|
className,
|
|
@@ -3479,7 +4457,7 @@ function Progress(_a) {
|
|
|
3479
4457
|
"className",
|
|
3480
4458
|
"value"
|
|
3481
4459
|
]);
|
|
3482
|
-
return /* @__PURE__ */ (0,
|
|
4460
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
3483
4461
|
import_progress.Progress.Root,
|
|
3484
4462
|
__spreadProps(__spreadValues({
|
|
3485
4463
|
className: cn(
|
|
@@ -3489,7 +4467,7 @@ function Progress(_a) {
|
|
|
3489
4467
|
"data-slot": "progress",
|
|
3490
4468
|
value
|
|
3491
4469
|
}, props), {
|
|
3492
|
-
children: /* @__PURE__ */ (0,
|
|
4470
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_progress.Progress.Track, { className: "h-full", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
3493
4471
|
import_progress.Progress.Indicator,
|
|
3494
4472
|
{
|
|
3495
4473
|
className: "h-full bg-primary transition-all",
|
|
@@ -3501,10 +4479,10 @@ function Progress(_a) {
|
|
|
3501
4479
|
}
|
|
3502
4480
|
|
|
3503
4481
|
// src/components/ui/radio-group.tsx
|
|
3504
|
-
var
|
|
4482
|
+
var import_lucide_react15 = require("lucide-react");
|
|
3505
4483
|
var import_radio_group = require("@base-ui/react/radio-group");
|
|
3506
4484
|
var import_radio = require("@base-ui/react/radio");
|
|
3507
|
-
var
|
|
4485
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
3508
4486
|
var CIRCLE_BASE = "inline-flex items-center justify-center aspect-square size-4 shrink-0 rounded-full border border-primary bg-background";
|
|
3509
4487
|
var INDICATOR_DOT = "size-2 fill-background text-background";
|
|
3510
4488
|
function RadioGroup(_a) {
|
|
@@ -3513,7 +4491,7 @@ function RadioGroup(_a) {
|
|
|
3513
4491
|
} = _b, props = __objRest(_b, [
|
|
3514
4492
|
"className"
|
|
3515
4493
|
]);
|
|
3516
|
-
return /* @__PURE__ */ (0,
|
|
4494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3517
4495
|
import_radio_group.RadioGroup,
|
|
3518
4496
|
__spreadValues({
|
|
3519
4497
|
className: cn("grid gap-3", className),
|
|
@@ -3527,7 +4505,7 @@ function RadioGroupItem(_a) {
|
|
|
3527
4505
|
} = _b, props = __objRest(_b, [
|
|
3528
4506
|
"className"
|
|
3529
4507
|
]);
|
|
3530
|
-
return /* @__PURE__ */ (0,
|
|
4508
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3531
4509
|
import_radio.Radio.Root,
|
|
3532
4510
|
__spreadProps(__spreadValues({
|
|
3533
4511
|
className: cn(
|
|
@@ -3543,11 +4521,11 @@ function RadioGroupItem(_a) {
|
|
|
3543
4521
|
),
|
|
3544
4522
|
"data-slot": "radio-group-item"
|
|
3545
4523
|
}, props), {
|
|
3546
|
-
children: /* @__PURE__ */ (0,
|
|
4524
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3547
4525
|
import_radio.Radio.Indicator,
|
|
3548
4526
|
{
|
|
3549
4527
|
"data-slot": "radio-group-indicator",
|
|
3550
|
-
children: /* @__PURE__ */ (0,
|
|
4528
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react15.CircleIcon, { className: INDICATOR_DOT })
|
|
3551
4529
|
}
|
|
3552
4530
|
)
|
|
3553
4531
|
})
|
|
@@ -3569,7 +4547,7 @@ function RadioGroupCard(_a) {
|
|
|
3569
4547
|
"label",
|
|
3570
4548
|
"description"
|
|
3571
4549
|
]);
|
|
3572
|
-
return /* @__PURE__ */ (0,
|
|
4550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
3573
4551
|
import_radio.Radio.Root,
|
|
3574
4552
|
__spreadProps(__spreadValues({
|
|
3575
4553
|
"aria-invalid": error || void 0,
|
|
@@ -3587,7 +4565,7 @@ function RadioGroupCard(_a) {
|
|
|
3587
4565
|
value
|
|
3588
4566
|
}, props), {
|
|
3589
4567
|
children: [
|
|
3590
|
-
/* @__PURE__ */ (0,
|
|
4568
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3591
4569
|
"div",
|
|
3592
4570
|
{
|
|
3593
4571
|
className: cn(
|
|
@@ -3597,12 +4575,12 @@ function RadioGroupCard(_a) {
|
|
|
3597
4575
|
"group-aria-invalid/card:border-destructive",
|
|
3598
4576
|
"group-aria-invalid/card:group-data-[checked]/card:border-destructive group-aria-invalid/card:group-data-[checked]/card:bg-destructive"
|
|
3599
4577
|
),
|
|
3600
|
-
children: /* @__PURE__ */ (0,
|
|
4578
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_radio.Radio.Indicator, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react15.CircleIcon, { className: INDICATOR_DOT }) })
|
|
3601
4579
|
}
|
|
3602
4580
|
),
|
|
3603
|
-
/* @__PURE__ */ (0,
|
|
3604
|
-
/* @__PURE__ */ (0,
|
|
3605
|
-
description ? /* @__PURE__ */ (0,
|
|
4581
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
4582
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
|
|
4583
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
|
|
3606
4584
|
] })
|
|
3607
4585
|
]
|
|
3608
4586
|
})
|
|
@@ -3610,9 +4588,9 @@ function RadioGroupCard(_a) {
|
|
|
3610
4588
|
}
|
|
3611
4589
|
|
|
3612
4590
|
// src/components/ui/sheet.tsx
|
|
3613
|
-
var
|
|
4591
|
+
var import_lucide_react16 = require("lucide-react");
|
|
3614
4592
|
var import_dialog2 = require("@base-ui/react/dialog");
|
|
3615
|
-
var
|
|
4593
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
3616
4594
|
var SIDE_CLASSES = {
|
|
3617
4595
|
right: "inset-y-0 right-0 h-full w-3/4 border-l data-ending-style:slide-out-to-right data-open:slide-in-from-right sm:max-w-sm",
|
|
3618
4596
|
left: "inset-y-0 left-0 h-full w-3/4 border-r data-ending-style:slide-out-to-left data-open:slide-in-from-left sm:max-w-sm",
|
|
@@ -3621,19 +4599,19 @@ var SIDE_CLASSES = {
|
|
|
3621
4599
|
};
|
|
3622
4600
|
function Sheet(_a) {
|
|
3623
4601
|
var props = __objRest(_a, []);
|
|
3624
|
-
return /* @__PURE__ */ (0,
|
|
4602
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dialog2.Dialog.Root, __spreadValues({ "data-slot": "sheet" }, props));
|
|
3625
4603
|
}
|
|
3626
4604
|
function SheetTrigger(_a) {
|
|
3627
4605
|
var props = __objRest(_a, []);
|
|
3628
|
-
return /* @__PURE__ */ (0,
|
|
4606
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dialog2.Dialog.Trigger, __spreadValues({ "data-slot": "sheet-trigger" }, props));
|
|
3629
4607
|
}
|
|
3630
4608
|
function SheetClose(_a) {
|
|
3631
4609
|
var props = __objRest(_a, []);
|
|
3632
|
-
return /* @__PURE__ */ (0,
|
|
4610
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dialog2.Dialog.Close, __spreadValues({ "data-slot": "sheet-close" }, props));
|
|
3633
4611
|
}
|
|
3634
4612
|
function SheetPortal(_a) {
|
|
3635
4613
|
var props = __objRest(_a, []);
|
|
3636
|
-
return /* @__PURE__ */ (0,
|
|
4614
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dialog2.Dialog.Portal, __spreadValues({ "data-slot": "sheet-portal" }, props));
|
|
3637
4615
|
}
|
|
3638
4616
|
function SheetOverlay(_a) {
|
|
3639
4617
|
var _b = _a, {
|
|
@@ -3641,7 +4619,7 @@ function SheetOverlay(_a) {
|
|
|
3641
4619
|
} = _b, props = __objRest(_b, [
|
|
3642
4620
|
"className"
|
|
3643
4621
|
]);
|
|
3644
|
-
return /* @__PURE__ */ (0,
|
|
4622
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3645
4623
|
import_dialog2.Dialog.Backdrop,
|
|
3646
4624
|
__spreadValues({
|
|
3647
4625
|
className: cn(
|
|
@@ -3667,9 +4645,9 @@ function SheetContent(_a) {
|
|
|
3667
4645
|
"style"
|
|
3668
4646
|
]);
|
|
3669
4647
|
const themeVars = useThemeVars();
|
|
3670
|
-
return /* @__PURE__ */ (0,
|
|
3671
|
-
/* @__PURE__ */ (0,
|
|
3672
|
-
/* @__PURE__ */ (0,
|
|
4648
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(SheetPortal, { children: [
|
|
4649
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SheetOverlay, {}),
|
|
4650
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
3673
4651
|
import_dialog2.Dialog.Popup,
|
|
3674
4652
|
__spreadProps(__spreadValues({
|
|
3675
4653
|
className: cn(
|
|
@@ -3682,14 +4660,14 @@ function SheetContent(_a) {
|
|
|
3682
4660
|
}, props), {
|
|
3683
4661
|
children: [
|
|
3684
4662
|
children,
|
|
3685
|
-
showCloseButton ? /* @__PURE__ */ (0,
|
|
4663
|
+
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
3686
4664
|
import_dialog2.Dialog.Close,
|
|
3687
4665
|
{
|
|
3688
4666
|
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",
|
|
3689
4667
|
"data-slot": "sheet-icon-close",
|
|
3690
4668
|
children: [
|
|
3691
|
-
/* @__PURE__ */ (0,
|
|
3692
|
-
/* @__PURE__ */ (0,
|
|
4669
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react16.XIcon, {}),
|
|
4670
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "sr-only", children: "Close" })
|
|
3693
4671
|
]
|
|
3694
4672
|
}
|
|
3695
4673
|
) : null
|
|
@@ -3700,7 +4678,7 @@ function SheetContent(_a) {
|
|
|
3700
4678
|
}
|
|
3701
4679
|
function SheetHeader(_a) {
|
|
3702
4680
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3703
|
-
return /* @__PURE__ */ (0,
|
|
4681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3704
4682
|
"div",
|
|
3705
4683
|
__spreadValues({
|
|
3706
4684
|
className: cn("flex flex-col gap-1.5 p-4", className),
|
|
@@ -3710,7 +4688,7 @@ function SheetHeader(_a) {
|
|
|
3710
4688
|
}
|
|
3711
4689
|
function SheetFooter(_a) {
|
|
3712
4690
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3713
|
-
return /* @__PURE__ */ (0,
|
|
4691
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3714
4692
|
"div",
|
|
3715
4693
|
__spreadValues({
|
|
3716
4694
|
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
@@ -3724,7 +4702,7 @@ function SheetTitle(_a) {
|
|
|
3724
4702
|
} = _b, props = __objRest(_b, [
|
|
3725
4703
|
"className"
|
|
3726
4704
|
]);
|
|
3727
|
-
return /* @__PURE__ */ (0,
|
|
4705
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3728
4706
|
import_dialog2.Dialog.Title,
|
|
3729
4707
|
__spreadValues({
|
|
3730
4708
|
className: cn("text-lg font-semibold text-foreground", className),
|
|
@@ -3738,7 +4716,7 @@ function SheetDescription(_a) {
|
|
|
3738
4716
|
} = _b, props = __objRest(_b, [
|
|
3739
4717
|
"className"
|
|
3740
4718
|
]);
|
|
3741
|
-
return /* @__PURE__ */ (0,
|
|
4719
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3742
4720
|
import_dialog2.Dialog.Description,
|
|
3743
4721
|
__spreadValues({
|
|
3744
4722
|
className: cn("text-sm text-muted-foreground", className),
|
|
@@ -3747,22 +4725,116 @@ function SheetDescription(_a) {
|
|
|
3747
4725
|
);
|
|
3748
4726
|
}
|
|
3749
4727
|
|
|
4728
|
+
// src/components/ui/slider.tsx
|
|
4729
|
+
var React11 = __toESM(require("react"));
|
|
4730
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
4731
|
+
var Slider = React11.forwardRef(
|
|
4732
|
+
(_a, ref) => {
|
|
4733
|
+
var _b = _a, {
|
|
4734
|
+
className,
|
|
4735
|
+
value,
|
|
4736
|
+
defaultValue = 0,
|
|
4737
|
+
min = 0,
|
|
4738
|
+
max = 100,
|
|
4739
|
+
step = 1,
|
|
4740
|
+
disabled = false,
|
|
4741
|
+
onValueChange
|
|
4742
|
+
} = _b, props = __objRest(_b, [
|
|
4743
|
+
"className",
|
|
4744
|
+
"value",
|
|
4745
|
+
"defaultValue",
|
|
4746
|
+
"min",
|
|
4747
|
+
"max",
|
|
4748
|
+
"step",
|
|
4749
|
+
"disabled",
|
|
4750
|
+
"onValueChange"
|
|
4751
|
+
]);
|
|
4752
|
+
const [internalValue, setInternalValue] = React11.useState(defaultValue);
|
|
4753
|
+
const currentValue = value !== void 0 ? value : internalValue;
|
|
4754
|
+
const percentage = (currentValue - min) / (max - min) * 100;
|
|
4755
|
+
const handleChange = (e) => {
|
|
4756
|
+
const newValue = Number(e.target.value);
|
|
4757
|
+
if (value === void 0) {
|
|
4758
|
+
setInternalValue(newValue);
|
|
4759
|
+
}
|
|
4760
|
+
onValueChange == null ? void 0 : onValueChange(newValue);
|
|
4761
|
+
};
|
|
4762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
4763
|
+
"div",
|
|
4764
|
+
{
|
|
4765
|
+
"data-slot": "slider",
|
|
4766
|
+
className: cn(
|
|
4767
|
+
"relative flex w-full touch-none items-center select-none",
|
|
4768
|
+
disabled && "opacity-50",
|
|
4769
|
+
className
|
|
4770
|
+
),
|
|
4771
|
+
children: [
|
|
4772
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
4773
|
+
"div",
|
|
4774
|
+
{
|
|
4775
|
+
"data-slot": "slider-track",
|
|
4776
|
+
className: "relative h-2 w-full overflow-hidden rounded-full bg-muted",
|
|
4777
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
4778
|
+
"div",
|
|
4779
|
+
{
|
|
4780
|
+
"data-slot": "slider-range",
|
|
4781
|
+
className: "absolute h-full rounded-full bg-primary",
|
|
4782
|
+
style: { width: `${percentage}%` }
|
|
4783
|
+
}
|
|
4784
|
+
)
|
|
4785
|
+
}
|
|
4786
|
+
),
|
|
4787
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
4788
|
+
"input",
|
|
4789
|
+
__spreadValues({
|
|
4790
|
+
ref,
|
|
4791
|
+
type: "range",
|
|
4792
|
+
min,
|
|
4793
|
+
max,
|
|
4794
|
+
step,
|
|
4795
|
+
value: currentValue,
|
|
4796
|
+
disabled,
|
|
4797
|
+
onChange: handleChange,
|
|
4798
|
+
className: cn(
|
|
4799
|
+
"absolute inset-0 h-full w-full cursor-pointer opacity-0",
|
|
4800
|
+
disabled && "cursor-not-allowed"
|
|
4801
|
+
)
|
|
4802
|
+
}, props)
|
|
4803
|
+
),
|
|
4804
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
4805
|
+
"div",
|
|
4806
|
+
{
|
|
4807
|
+
"data-slot": "slider-thumb",
|
|
4808
|
+
className: cn(
|
|
4809
|
+
"pointer-events-none absolute top-1/2 -translate-x-1/2 -translate-y-1/2",
|
|
4810
|
+
"block size-5 rounded-full border-2 border-primary bg-background shadow-sm"
|
|
4811
|
+
),
|
|
4812
|
+
style: { left: `${percentage}%` }
|
|
4813
|
+
}
|
|
4814
|
+
)
|
|
4815
|
+
]
|
|
4816
|
+
}
|
|
4817
|
+
);
|
|
4818
|
+
}
|
|
4819
|
+
);
|
|
4820
|
+
Slider.displayName = "Slider";
|
|
4821
|
+
|
|
3750
4822
|
// src/components/ui/sonner.tsx
|
|
3751
|
-
var
|
|
4823
|
+
var import_lucide_react17 = require("lucide-react");
|
|
3752
4824
|
var import_sonner = require("sonner");
|
|
3753
|
-
var
|
|
4825
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
3754
4826
|
function Toaster(_a) {
|
|
3755
4827
|
var _b = _a, { theme = "light" } = _b, props = __objRest(_b, ["theme"]);
|
|
3756
|
-
return /* @__PURE__ */ (0,
|
|
4828
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3757
4829
|
import_sonner.Toaster,
|
|
3758
4830
|
__spreadValues({
|
|
3759
4831
|
className: "toaster group",
|
|
3760
4832
|
icons: {
|
|
3761
|
-
success: /* @__PURE__ */ (0,
|
|
3762
|
-
info: /* @__PURE__ */ (0,
|
|
3763
|
-
warning: /* @__PURE__ */ (0,
|
|
3764
|
-
error: /* @__PURE__ */ (0,
|
|
3765
|
-
loading: /* @__PURE__ */ (0,
|
|
4833
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.CircleCheckIcon, { className: "size-4" }),
|
|
4834
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.InfoIcon, { className: "size-4" }),
|
|
4835
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.TriangleAlertIcon, { className: "size-4" }),
|
|
4836
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.OctagonXIcon, { className: "size-4" }),
|
|
4837
|
+
loading: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react17.Loader2Icon, { className: "size-4 animate-spin" })
|
|
3766
4838
|
},
|
|
3767
4839
|
style: {
|
|
3768
4840
|
"--normal-bg": "var(--popover)",
|
|
@@ -3780,39 +4852,10 @@ function Toaster(_a) {
|
|
|
3780
4852
|
);
|
|
3781
4853
|
}
|
|
3782
4854
|
|
|
3783
|
-
// src/components/ui/spinner.tsx
|
|
3784
|
-
var import_class_variance_authority7 = require("class-variance-authority");
|
|
3785
|
-
var import_lucide_react16 = require("lucide-react");
|
|
3786
|
-
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
3787
|
-
var spinnerVariants = (0, import_class_variance_authority7.cva)("animate-spin shrink-0", {
|
|
3788
|
-
variants: {
|
|
3789
|
-
size: {
|
|
3790
|
-
sm: "size-3",
|
|
3791
|
-
default: "size-4",
|
|
3792
|
-
lg: "size-6",
|
|
3793
|
-
xl: "size-8"
|
|
3794
|
-
}
|
|
3795
|
-
},
|
|
3796
|
-
defaultVariants: {
|
|
3797
|
-
size: "default"
|
|
3798
|
-
}
|
|
3799
|
-
});
|
|
3800
|
-
function Spinner(_a) {
|
|
3801
|
-
var _b = _a, { className, size } = _b, props = __objRest(_b, ["className", "size"]);
|
|
3802
|
-
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3803
|
-
import_lucide_react16.LoaderCircle,
|
|
3804
|
-
__spreadValues({
|
|
3805
|
-
"aria-hidden": "true",
|
|
3806
|
-
className: cn(spinnerVariants({ size }), className),
|
|
3807
|
-
"data-slot": "spinner"
|
|
3808
|
-
}, props)
|
|
3809
|
-
);
|
|
3810
|
-
}
|
|
3811
|
-
|
|
3812
4855
|
// src/components/ui/switch.tsx
|
|
3813
|
-
var
|
|
4856
|
+
var import_react9 = require("react");
|
|
3814
4857
|
var import_switch = require("@base-ui/react/switch");
|
|
3815
|
-
var
|
|
4858
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3816
4859
|
function Switch(_a) {
|
|
3817
4860
|
var _b = _a, {
|
|
3818
4861
|
className,
|
|
@@ -3821,7 +4864,7 @@ function Switch(_a) {
|
|
|
3821
4864
|
"className",
|
|
3822
4865
|
"size"
|
|
3823
4866
|
]);
|
|
3824
|
-
return /* @__PURE__ */ (0,
|
|
4867
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3825
4868
|
import_switch.Switch.Root,
|
|
3826
4869
|
__spreadProps(__spreadValues({
|
|
3827
4870
|
className: cn(
|
|
@@ -3838,7 +4881,7 @@ function Switch(_a) {
|
|
|
3838
4881
|
"data-size": size,
|
|
3839
4882
|
"data-slot": "switch"
|
|
3840
4883
|
}, props), {
|
|
3841
|
-
children: /* @__PURE__ */ (0,
|
|
4884
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3842
4885
|
import_switch.Switch.Thumb,
|
|
3843
4886
|
{
|
|
3844
4887
|
className: cn(
|
|
@@ -3877,9 +4920,9 @@ function SwitchCard(_a) {
|
|
|
3877
4920
|
"switchPosition",
|
|
3878
4921
|
"size"
|
|
3879
4922
|
]);
|
|
3880
|
-
const [internalChecked, setInternalChecked] = (0,
|
|
4923
|
+
const [internalChecked, setInternalChecked] = (0, import_react9.useState)(defaultChecked != null ? defaultChecked : false);
|
|
3881
4924
|
const isChecked = checked != null ? checked : internalChecked;
|
|
3882
|
-
const switchElement = /* @__PURE__ */ (0,
|
|
4925
|
+
const switchElement = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3883
4926
|
Switch,
|
|
3884
4927
|
__spreadValues({
|
|
3885
4928
|
"aria-invalid": error || void 0,
|
|
@@ -3893,11 +4936,11 @@ function SwitchCard(_a) {
|
|
|
3893
4936
|
size
|
|
3894
4937
|
}, props)
|
|
3895
4938
|
);
|
|
3896
|
-
const contentElement = /* @__PURE__ */ (0,
|
|
3897
|
-
/* @__PURE__ */ (0,
|
|
3898
|
-
description ? /* @__PURE__ */ (0,
|
|
4939
|
+
const contentElement = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
4940
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-sm font-medium leading-none", children: label }),
|
|
4941
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-sm text-muted-foreground", children: description }) : null
|
|
3899
4942
|
] });
|
|
3900
|
-
return /* @__PURE__ */ (0,
|
|
4943
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3901
4944
|
"label",
|
|
3902
4945
|
{
|
|
3903
4946
|
className: cn(
|
|
@@ -3908,10 +4951,10 @@ function SwitchCard(_a) {
|
|
|
3908
4951
|
className
|
|
3909
4952
|
),
|
|
3910
4953
|
"data-slot": "switch-card",
|
|
3911
|
-
children: switchPosition === "left" ? /* @__PURE__ */ (0,
|
|
4954
|
+
children: switchPosition === "left" ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
|
|
3912
4955
|
switchElement,
|
|
3913
4956
|
contentElement
|
|
3914
|
-
] }) : /* @__PURE__ */ (0,
|
|
4957
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
|
|
3915
4958
|
contentElement,
|
|
3916
4959
|
switchElement
|
|
3917
4960
|
] })
|
|
@@ -3922,7 +4965,7 @@ function SwitchCard(_a) {
|
|
|
3922
4965
|
// src/components/ui/tabs.tsx
|
|
3923
4966
|
var import_class_variance_authority8 = require("class-variance-authority");
|
|
3924
4967
|
var import_tabs = require("@base-ui/react/tabs");
|
|
3925
|
-
var
|
|
4968
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
3926
4969
|
function Tabs(_a) {
|
|
3927
4970
|
var _b = _a, {
|
|
3928
4971
|
className,
|
|
@@ -3931,7 +4974,7 @@ function Tabs(_a) {
|
|
|
3931
4974
|
"className",
|
|
3932
4975
|
"orientation"
|
|
3933
4976
|
]);
|
|
3934
|
-
return /* @__PURE__ */ (0,
|
|
4977
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3935
4978
|
import_tabs.Tabs.Root,
|
|
3936
4979
|
__spreadValues({
|
|
3937
4980
|
className: cn(
|
|
@@ -3965,7 +5008,7 @@ function TabsList(_a) {
|
|
|
3965
5008
|
"className",
|
|
3966
5009
|
"variant"
|
|
3967
5010
|
]);
|
|
3968
|
-
return /* @__PURE__ */ (0,
|
|
5011
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3969
5012
|
import_tabs.Tabs.List,
|
|
3970
5013
|
__spreadValues({
|
|
3971
5014
|
className: cn(tabsListVariants({ variant }), className),
|
|
@@ -3980,7 +5023,7 @@ function TabsTrigger(_a) {
|
|
|
3980
5023
|
} = _b, props = __objRest(_b, [
|
|
3981
5024
|
"className"
|
|
3982
5025
|
]);
|
|
3983
|
-
return /* @__PURE__ */ (0,
|
|
5026
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3984
5027
|
import_tabs.Tabs.Tab,
|
|
3985
5028
|
__spreadValues({
|
|
3986
5029
|
className: cn(
|
|
@@ -4021,7 +5064,7 @@ function TabsContent(_a) {
|
|
|
4021
5064
|
} = _b, props = __objRest(_b, [
|
|
4022
5065
|
"className"
|
|
4023
5066
|
]);
|
|
4024
|
-
return /* @__PURE__ */ (0,
|
|
5067
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
4025
5068
|
import_tabs.Tabs.Panel,
|
|
4026
5069
|
__spreadValues({
|
|
4027
5070
|
className: cn("flex-1 outline-none", className),
|
|
@@ -4031,14 +5074,14 @@ function TabsContent(_a) {
|
|
|
4031
5074
|
}
|
|
4032
5075
|
|
|
4033
5076
|
// src/components/ui/toggle-group.tsx
|
|
4034
|
-
var
|
|
5077
|
+
var React12 = __toESM(require("react"));
|
|
4035
5078
|
var import_toggle_group = require("@base-ui/react/toggle-group");
|
|
4036
5079
|
var import_toggle2 = require("@base-ui/react/toggle");
|
|
4037
5080
|
|
|
4038
5081
|
// src/components/ui/toggle.tsx
|
|
4039
5082
|
var import_class_variance_authority9 = require("class-variance-authority");
|
|
4040
5083
|
var import_toggle = require("@base-ui/react/toggle");
|
|
4041
|
-
var
|
|
5084
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
4042
5085
|
var toggleVariants = (0, import_class_variance_authority9.cva)(
|
|
4043
5086
|
"inline-flex items-center justify-center gap-2 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] 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 data-pressed:bg-primary/10 data-pressed:inset-ring data-pressed:inset-ring-primary data-pressed:text-foreground data-pressed:hover:bg-primary/10 data-pressed:hover:text-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
4044
5087
|
{
|
|
@@ -4069,7 +5112,7 @@ function Toggle(_a) {
|
|
|
4069
5112
|
"variant",
|
|
4070
5113
|
"size"
|
|
4071
5114
|
]);
|
|
4072
|
-
return /* @__PURE__ */ (0,
|
|
5115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
4073
5116
|
import_toggle.Toggle,
|
|
4074
5117
|
__spreadValues({
|
|
4075
5118
|
className: cn(toggleVariants({ variant, size, className })),
|
|
@@ -4079,8 +5122,8 @@ function Toggle(_a) {
|
|
|
4079
5122
|
}
|
|
4080
5123
|
|
|
4081
5124
|
// src/components/ui/toggle-group.tsx
|
|
4082
|
-
var
|
|
4083
|
-
var ToggleGroupContext =
|
|
5125
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
5126
|
+
var ToggleGroupContext = React12.createContext({
|
|
4084
5127
|
size: "default",
|
|
4085
5128
|
variant: "default",
|
|
4086
5129
|
spacing: 0
|
|
@@ -4101,7 +5144,7 @@ function ToggleGroup(_a) {
|
|
|
4101
5144
|
"type",
|
|
4102
5145
|
"children"
|
|
4103
5146
|
]);
|
|
4104
|
-
return /* @__PURE__ */ (0,
|
|
5147
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
4105
5148
|
import_toggle_group.ToggleGroup,
|
|
4106
5149
|
__spreadProps(__spreadValues({
|
|
4107
5150
|
className: cn(
|
|
@@ -4116,7 +5159,7 @@ function ToggleGroup(_a) {
|
|
|
4116
5159
|
multiple: type === "multiple",
|
|
4117
5160
|
style: { "--gap": spacing }
|
|
4118
5161
|
}, props), {
|
|
4119
|
-
children: /* @__PURE__ */ (0,
|
|
5162
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
|
|
4120
5163
|
})
|
|
4121
5164
|
);
|
|
4122
5165
|
}
|
|
@@ -4132,8 +5175,8 @@ function ToggleGroupItem(_a) {
|
|
|
4132
5175
|
"variant",
|
|
4133
5176
|
"size"
|
|
4134
5177
|
]);
|
|
4135
|
-
const context =
|
|
4136
|
-
return /* @__PURE__ */ (0,
|
|
5178
|
+
const context = React12.useContext(ToggleGroupContext);
|
|
5179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
4137
5180
|
import_toggle2.Toggle,
|
|
4138
5181
|
__spreadProps(__spreadValues({
|
|
4139
5182
|
className: cn(
|
|
@@ -4158,14 +5201,14 @@ function ToggleGroupItem(_a) {
|
|
|
4158
5201
|
|
|
4159
5202
|
// src/components/ui/tooltip.tsx
|
|
4160
5203
|
var import_tooltip = require("@base-ui/react/tooltip");
|
|
4161
|
-
var
|
|
5204
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
4162
5205
|
function TooltipProvider(_a) {
|
|
4163
5206
|
var _b = _a, {
|
|
4164
5207
|
delay = 0
|
|
4165
5208
|
} = _b, props = __objRest(_b, [
|
|
4166
5209
|
"delay"
|
|
4167
5210
|
]);
|
|
4168
|
-
return /* @__PURE__ */ (0,
|
|
5211
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4169
5212
|
import_tooltip.Tooltip.Provider,
|
|
4170
5213
|
__spreadValues({
|
|
4171
5214
|
"data-slot": "tooltip-provider",
|
|
@@ -4173,13 +5216,13 @@ function TooltipProvider(_a) {
|
|
|
4173
5216
|
}, props)
|
|
4174
5217
|
);
|
|
4175
5218
|
}
|
|
4176
|
-
function
|
|
5219
|
+
function Tooltip5(_a) {
|
|
4177
5220
|
var props = __objRest(_a, []);
|
|
4178
|
-
return /* @__PURE__ */ (0,
|
|
5221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_tooltip.Tooltip.Root, __spreadValues({ "data-slot": "tooltip" }, props));
|
|
4179
5222
|
}
|
|
4180
5223
|
function TooltipTrigger(_a) {
|
|
4181
5224
|
var props = __objRest(_a, []);
|
|
4182
|
-
return /* @__PURE__ */ (0,
|
|
5225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_tooltip.Tooltip.Trigger, __spreadValues({ "data-slot": "tooltip-trigger" }, props));
|
|
4183
5226
|
}
|
|
4184
5227
|
function TooltipContent(_a) {
|
|
4185
5228
|
var _b = _a, {
|
|
@@ -4194,8 +5237,8 @@ function TooltipContent(_a) {
|
|
|
4194
5237
|
"style"
|
|
4195
5238
|
]);
|
|
4196
5239
|
const themeVars = useThemeVars();
|
|
4197
|
-
return /* @__PURE__ */ (0,
|
|
4198
|
-
/* @__PURE__ */ (0,
|
|
5240
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_tooltip.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_tooltip.Tooltip.Positioner, { sideOffset, children: [
|
|
5241
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4199
5242
|
import_tooltip.Tooltip.Popup,
|
|
4200
5243
|
__spreadProps(__spreadValues({
|
|
4201
5244
|
className: cn(
|
|
@@ -4208,7 +5251,7 @@ function TooltipContent(_a) {
|
|
|
4208
5251
|
children
|
|
4209
5252
|
})
|
|
4210
5253
|
),
|
|
4211
|
-
/* @__PURE__ */ (0,
|
|
5254
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4212
5255
|
import_tooltip.Tooltip.Arrow,
|
|
4213
5256
|
{
|
|
4214
5257
|
className: "z-50 size-2.5 rotate-45 bg-brand-secondary"
|
|
@@ -4254,9 +5297,21 @@ function TooltipContent(_a) {
|
|
|
4254
5297
|
CardFooter,
|
|
4255
5298
|
CardHeader,
|
|
4256
5299
|
CardTitle,
|
|
5300
|
+
CashflowBarChart,
|
|
4257
5301
|
Checkbox,
|
|
4258
5302
|
CheckboxCard,
|
|
4259
5303
|
Chip,
|
|
5304
|
+
Combobox,
|
|
5305
|
+
ComboboxContent,
|
|
5306
|
+
ComboboxEmpty,
|
|
5307
|
+
ComboboxGroup,
|
|
5308
|
+
ComboboxGroupLabel,
|
|
5309
|
+
ComboboxInput,
|
|
5310
|
+
ComboboxItem,
|
|
5311
|
+
ComboboxList,
|
|
5312
|
+
ComboboxSeparator,
|
|
5313
|
+
ComboboxTrigger,
|
|
5314
|
+
ComboboxValue,
|
|
4260
5315
|
DataTable,
|
|
4261
5316
|
DataTableColumnHeader,
|
|
4262
5317
|
DataTablePagination,
|
|
@@ -4304,6 +5359,7 @@ function TooltipContent(_a) {
|
|
|
4304
5359
|
EmptyHeader,
|
|
4305
5360
|
EmptyMedia,
|
|
4306
5361
|
EmptyTitle,
|
|
5362
|
+
ExpenseBarChart,
|
|
4307
5363
|
FONT_FAMILY_SANS,
|
|
4308
5364
|
Field,
|
|
4309
5365
|
FieldContent,
|
|
@@ -4315,6 +5371,7 @@ function TooltipContent(_a) {
|
|
|
4315
5371
|
FieldSeparator,
|
|
4316
5372
|
FieldSet,
|
|
4317
5373
|
FieldTitle,
|
|
5374
|
+
IncomeBarChart,
|
|
4318
5375
|
Input,
|
|
4319
5376
|
InputGroup,
|
|
4320
5377
|
InputGroupAddon,
|
|
@@ -4366,6 +5423,7 @@ function TooltipContent(_a) {
|
|
|
4366
5423
|
SheetTitle,
|
|
4367
5424
|
SheetTrigger,
|
|
4368
5425
|
Skeleton,
|
|
5426
|
+
Slider,
|
|
4369
5427
|
Spinner,
|
|
4370
5428
|
Switch,
|
|
4371
5429
|
SwitchCard,
|
|
@@ -4397,6 +5455,7 @@ function TooltipContent(_a) {
|
|
|
4397
5455
|
TooltipContent,
|
|
4398
5456
|
TooltipProvider,
|
|
4399
5457
|
TooltipTrigger,
|
|
5458
|
+
TransactionsIncomeExpenseBarChart,
|
|
4400
5459
|
badgeVariants,
|
|
4401
5460
|
buttonVariants,
|
|
4402
5461
|
cn,
|