@squadbase/vantage 0.0.1 → 0.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/README.md +21 -4
- package/dist/chunk-A2UUGASH.js +12 -0
- package/dist/chunk-A2UUGASH.js.map +1 -0
- package/dist/{chunk-ZGDU5YLH.js → chunk-PRFBSQA4.js} +9 -5
- package/dist/chunk-PRFBSQA4.js.map +1 -0
- package/dist/chunk-WQZYXXQW.js +2249 -0
- package/dist/chunk-WQZYXXQW.js.map +1 -0
- package/dist/{chunk-73J5ZD4C.js → chunk-YLAB6UQS.js} +17 -3
- package/dist/chunk-YLAB6UQS.js.map +1 -0
- package/dist/cli.js +607 -36
- package/dist/cli.js.map +1 -1
- package/dist/components/index.d.ts +554 -0
- package/dist/components/index.js +1983 -0
- package/dist/components/index.js.map +1 -0
- package/dist/markdown/index.d.ts +9 -0
- package/dist/markdown/index.js +26 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/query/index.d.ts +27 -1
- package/dist/query/index.js +18 -0
- package/dist/query/index.js.map +1 -1
- package/dist/server/node.js +6 -1
- package/dist/server/node.js.map +1 -1
- package/dist/ui/index.d.ts +316 -200
- package/dist/ui/index.js +566 -511
- package/dist/ui/index.js.map +1 -1
- package/dist/vite/index.js +2 -2
- package/docs/en/agent-skills.md +89 -0
- package/docs/en/api-and-server.md +84 -0
- package/docs/en/build-and-deploy.md +280 -0
- package/docs/en/cli-reference.md +311 -0
- package/docs/en/components.md +233 -0
- package/docs/en/data-fetching.md +78 -0
- package/docs/en/environment-variables.md +69 -0
- package/docs/en/getting-started.md +95 -0
- package/docs/en/index.md +65 -0
- package/docs/en/markdown/markdown-renderer.md +44 -0
- package/docs/en/pages-and-metadata.md +56 -0
- package/docs/en/parts/app-shell.md +54 -0
- package/docs/en/parts/dashboard-card.md +64 -0
- package/docs/en/parts/data-table.md +86 -0
- package/docs/en/parts/date-range-picker.md +41 -0
- package/docs/en/parts/echart.md +53 -0
- package/docs/en/parts/filter-bar.md +66 -0
- package/docs/en/parts/funnel-steps.md +33 -0
- package/docs/en/parts/metric-value.md +23 -0
- package/docs/en/parts/multi-select.md +27 -0
- package/docs/en/parts/page-shell.md +45 -0
- package/docs/en/parts/searchable-select.md +47 -0
- package/docs/en/parts/section-header.md +20 -0
- package/docs/en/parts/segmented-control.md +25 -0
- package/docs/en/parts/status-badge.md +44 -0
- package/docs/en/parts/trend-indicator.md +26 -0
- package/docs/en/routing.md +95 -0
- package/docs/en/ui/accordion.md +36 -0
- package/docs/en/ui/alert.md +31 -0
- package/docs/en/ui/badge.md +23 -0
- package/docs/en/ui/breadcrumb.md +38 -0
- package/docs/en/ui/button.md +39 -0
- package/docs/en/ui/calendar.md +28 -0
- package/docs/en/ui/card.md +35 -0
- package/docs/en/ui/checkbox.md +34 -0
- package/docs/en/ui/cn.md +34 -0
- package/docs/en/ui/collapsible.md +21 -0
- package/docs/en/ui/command.md +37 -0
- package/docs/en/ui/dialog.md +52 -0
- package/docs/en/ui/dropdown-menu.md +50 -0
- package/docs/en/ui/empty.md +22 -0
- package/docs/en/ui/error-state.md +50 -0
- package/docs/en/ui/input-group.md +30 -0
- package/docs/en/ui/input.md +28 -0
- package/docs/en/ui/label.md +19 -0
- package/docs/en/ui/loading.md +19 -0
- package/docs/en/ui/popover.md +34 -0
- package/docs/en/ui/progress.md +28 -0
- package/docs/en/ui/scroll-area.md +23 -0
- package/docs/en/ui/select.md +63 -0
- package/docs/en/ui/separator.md +15 -0
- package/docs/en/ui/sheet.md +28 -0
- package/docs/en/ui/sidebar.md +92 -0
- package/docs/en/ui/skeleton.md +16 -0
- package/docs/en/ui/slider.md +21 -0
- package/docs/en/ui/spinner.md +14 -0
- package/docs/en/ui/switch.md +19 -0
- package/docs/en/ui/table.md +24 -0
- package/docs/en/ui/tabs.md +23 -0
- package/docs/en/ui/textarea.md +15 -0
- package/docs/en/ui/toggle-group.md +26 -0
- package/docs/en/ui/toggle.md +19 -0
- package/docs/en/ui/tooltip.md +22 -0
- package/docs/en/ui/use-is-mobile.md +18 -0
- package/docs/en/ui-and-theming.md +95 -0
- package/docs/index.json +1306 -0
- package/docs/ja/agent-skills.md +87 -0
- package/docs/ja/api-and-server.md +84 -0
- package/docs/ja/build-and-deploy.md +279 -0
- package/docs/ja/cli-reference.md +305 -0
- package/docs/ja/components.md +229 -0
- package/docs/ja/data-fetching.md +78 -0
- package/docs/ja/environment-variables.md +68 -0
- package/docs/ja/getting-started.md +95 -0
- package/docs/ja/index.md +65 -0
- package/docs/ja/markdown/markdown-renderer.md +43 -0
- package/docs/ja/pages-and-metadata.md +56 -0
- package/docs/ja/parts/app-shell.md +54 -0
- package/docs/ja/parts/dashboard-card.md +64 -0
- package/docs/ja/parts/data-table.md +85 -0
- package/docs/ja/parts/date-range-picker.md +41 -0
- package/docs/ja/parts/echart.md +52 -0
- package/docs/ja/parts/filter-bar.md +64 -0
- package/docs/ja/parts/funnel-steps.md +33 -0
- package/docs/ja/parts/metric-value.md +25 -0
- package/docs/ja/parts/multi-select.md +27 -0
- package/docs/ja/parts/page-shell.md +45 -0
- package/docs/ja/parts/searchable-select.md +47 -0
- package/docs/ja/parts/section-header.md +20 -0
- package/docs/ja/parts/segmented-control.md +26 -0
- package/docs/ja/parts/status-badge.md +44 -0
- package/docs/ja/parts/trend-indicator.md +26 -0
- package/docs/ja/routing.md +95 -0
- package/docs/ja/ui/accordion.md +37 -0
- package/docs/ja/ui/alert.md +31 -0
- package/docs/ja/ui/badge.md +23 -0
- package/docs/ja/ui/breadcrumb.md +38 -0
- package/docs/ja/ui/button.md +39 -0
- package/docs/ja/ui/calendar.md +28 -0
- package/docs/ja/ui/card.md +35 -0
- package/docs/ja/ui/checkbox.md +34 -0
- package/docs/ja/ui/cn.md +34 -0
- package/docs/ja/ui/collapsible.md +21 -0
- package/docs/ja/ui/command.md +36 -0
- package/docs/ja/ui/dialog.md +51 -0
- package/docs/ja/ui/dropdown-menu.md +50 -0
- package/docs/ja/ui/empty.md +22 -0
- package/docs/ja/ui/error-state.md +50 -0
- package/docs/ja/ui/input-group.md +30 -0
- package/docs/ja/ui/input.md +28 -0
- package/docs/ja/ui/label.md +19 -0
- package/docs/ja/ui/loading.md +19 -0
- package/docs/ja/ui/popover.md +34 -0
- package/docs/ja/ui/progress.md +28 -0
- package/docs/ja/ui/scroll-area.md +24 -0
- package/docs/ja/ui/select.md +64 -0
- package/docs/ja/ui/separator.md +15 -0
- package/docs/ja/ui/sheet.md +28 -0
- package/docs/ja/ui/sidebar.md +92 -0
- package/docs/ja/ui/skeleton.md +16 -0
- package/docs/ja/ui/slider.md +21 -0
- package/docs/ja/ui/spinner.md +14 -0
- package/docs/ja/ui/switch.md +19 -0
- package/docs/ja/ui/table.md +24 -0
- package/docs/ja/ui/tabs.md +24 -0
- package/docs/ja/ui/textarea.md +15 -0
- package/docs/ja/ui/toggle-group.md +27 -0
- package/docs/ja/ui/toggle.md +19 -0
- package/docs/ja/ui/tooltip.md +22 -0
- package/docs/ja/ui/use-is-mobile.md +18 -0
- package/docs/ja/ui-and-theming.md +95 -0
- package/package.json +29 -4
- package/registry/blocks/sales-overview.tsx +43 -19
- package/registry/ui/data-table.tsx +702 -102
- package/skills/vantage-add-feature/SKILL.md +150 -0
- package/skills/vantage-app/SKILL.md +258 -0
- package/skills/vantage-pitfalls/SKILL.md +115 -0
- package/templates/AGENTS.md +268 -0
- package/theme.css +178 -40
- package/dist/chunk-73J5ZD4C.js.map +0 -1
- package/dist/chunk-ZGDU5YLH.js.map +0 -1
|
@@ -0,0 +1,2249 @@
|
|
|
1
|
+
import { cn } from './chunk-A2UUGASH.js';
|
|
2
|
+
import { mergeProps } from '@base-ui/react/merge-props';
|
|
3
|
+
import { useRender } from '@base-ui/react/use-render';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { Button as Button$1 } from '@base-ui/react/button';
|
|
6
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
+
import * as React12 from 'react';
|
|
8
|
+
import { getDefaultClassNames, DayPicker } from 'react-day-picker';
|
|
9
|
+
import { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, CheckIcon, XIcon, SearchIcon, ChevronUpIcon, PanelLeftIcon } from 'lucide-react';
|
|
10
|
+
import { Checkbox as Checkbox$1 } from '@base-ui/react/checkbox';
|
|
11
|
+
import { Collapsible as Collapsible$1 } from '@base-ui/react/collapsible';
|
|
12
|
+
import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
|
|
13
|
+
import { Input as Input$1 } from '@base-ui/react/input';
|
|
14
|
+
import { Command as Command$1 } from 'cmdk';
|
|
15
|
+
import { Menu } from '@base-ui/react/menu';
|
|
16
|
+
import { Popover as Popover$1 } from '@base-ui/react/popover';
|
|
17
|
+
import { Select as Select$1 } from '@base-ui/react/select';
|
|
18
|
+
import { Separator as Separator$1 } from '@base-ui/react/separator';
|
|
19
|
+
import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
|
|
20
|
+
import { Toggle as Toggle$1 } from '@base-ui/react/toggle';
|
|
21
|
+
import { ToggleGroup as ToggleGroup$1 } from '@base-ui/react/toggle-group';
|
|
22
|
+
|
|
23
|
+
// @squadbase/vantage — generated build. Do not edit.
|
|
24
|
+
var badgeVariants = cva(
|
|
25
|
+
"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
|
|
26
|
+
{
|
|
27
|
+
variants: {
|
|
28
|
+
variant: {
|
|
29
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
30
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
31
|
+
destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
|
|
32
|
+
outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
33
|
+
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
|
|
34
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
defaultVariants: {
|
|
38
|
+
variant: "default"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
function Badge({
|
|
43
|
+
className,
|
|
44
|
+
variant = "default",
|
|
45
|
+
render,
|
|
46
|
+
...props
|
|
47
|
+
}) {
|
|
48
|
+
return useRender({
|
|
49
|
+
defaultTagName: "span",
|
|
50
|
+
props: mergeProps(
|
|
51
|
+
{
|
|
52
|
+
className: cn(badgeVariants({ variant }), className)
|
|
53
|
+
},
|
|
54
|
+
props
|
|
55
|
+
),
|
|
56
|
+
render,
|
|
57
|
+
state: {
|
|
58
|
+
slot: "badge",
|
|
59
|
+
variant
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
var buttonVariants = cva(
|
|
64
|
+
"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
65
|
+
{
|
|
66
|
+
variants: {
|
|
67
|
+
variant: {
|
|
68
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
69
|
+
outline: "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
70
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
71
|
+
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
72
|
+
destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
|
|
73
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
74
|
+
},
|
|
75
|
+
size: {
|
|
76
|
+
default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
77
|
+
xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
78
|
+
sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
79
|
+
lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
80
|
+
icon: "size-8",
|
|
81
|
+
"icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
|
|
82
|
+
"icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
|
|
83
|
+
"icon-lg": "size-9"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
defaultVariants: {
|
|
87
|
+
variant: "default",
|
|
88
|
+
size: "default"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
function Button({
|
|
93
|
+
className,
|
|
94
|
+
variant = "default",
|
|
95
|
+
size = "default",
|
|
96
|
+
...props
|
|
97
|
+
}) {
|
|
98
|
+
return /* @__PURE__ */ jsx(
|
|
99
|
+
Button$1,
|
|
100
|
+
{
|
|
101
|
+
"data-slot": "button",
|
|
102
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
103
|
+
...props
|
|
104
|
+
}
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
function Calendar({
|
|
108
|
+
className,
|
|
109
|
+
classNames,
|
|
110
|
+
showOutsideDays = true,
|
|
111
|
+
captionLayout = "label",
|
|
112
|
+
buttonVariant = "ghost",
|
|
113
|
+
locale,
|
|
114
|
+
formatters,
|
|
115
|
+
components,
|
|
116
|
+
...props
|
|
117
|
+
}) {
|
|
118
|
+
const defaultClassNames = getDefaultClassNames();
|
|
119
|
+
return /* @__PURE__ */ jsx(
|
|
120
|
+
DayPicker,
|
|
121
|
+
{
|
|
122
|
+
showOutsideDays,
|
|
123
|
+
className: cn(
|
|
124
|
+
"group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent",
|
|
125
|
+
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
126
|
+
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
127
|
+
className
|
|
128
|
+
),
|
|
129
|
+
captionLayout,
|
|
130
|
+
locale,
|
|
131
|
+
formatters: {
|
|
132
|
+
formatMonthDropdown: (date) => date.toLocaleString(locale?.code, { month: "short" }),
|
|
133
|
+
...formatters
|
|
134
|
+
},
|
|
135
|
+
classNames: {
|
|
136
|
+
root: cn("w-fit", defaultClassNames.root),
|
|
137
|
+
months: cn(
|
|
138
|
+
"relative flex flex-col gap-4 md:flex-row",
|
|
139
|
+
defaultClassNames.months
|
|
140
|
+
),
|
|
141
|
+
month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
|
|
142
|
+
nav: cn(
|
|
143
|
+
"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
|
|
144
|
+
defaultClassNames.nav
|
|
145
|
+
),
|
|
146
|
+
button_previous: cn(
|
|
147
|
+
buttonVariants({ variant: buttonVariant }),
|
|
148
|
+
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
149
|
+
defaultClassNames.button_previous
|
|
150
|
+
),
|
|
151
|
+
button_next: cn(
|
|
152
|
+
buttonVariants({ variant: buttonVariant }),
|
|
153
|
+
"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
|
|
154
|
+
defaultClassNames.button_next
|
|
155
|
+
),
|
|
156
|
+
month_caption: cn(
|
|
157
|
+
"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
|
|
158
|
+
defaultClassNames.month_caption
|
|
159
|
+
),
|
|
160
|
+
dropdowns: cn(
|
|
161
|
+
"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
|
|
162
|
+
defaultClassNames.dropdowns
|
|
163
|
+
),
|
|
164
|
+
dropdown_root: cn(
|
|
165
|
+
"cn-calendar-dropdown-root relative rounded-(--cell-radius)",
|
|
166
|
+
defaultClassNames.dropdown_root
|
|
167
|
+
),
|
|
168
|
+
dropdown: cn(
|
|
169
|
+
"absolute inset-0 bg-popover opacity-0",
|
|
170
|
+
defaultClassNames.dropdown
|
|
171
|
+
),
|
|
172
|
+
caption_label: cn(
|
|
173
|
+
"font-medium select-none",
|
|
174
|
+
captionLayout === "label" ? "cn-calendar-caption text-sm" : "cn-calendar-caption-label flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground",
|
|
175
|
+
defaultClassNames.caption_label
|
|
176
|
+
),
|
|
177
|
+
month_grid: cn("w-full border-collapse", defaultClassNames.month_grid),
|
|
178
|
+
weekdays: cn("flex", defaultClassNames.weekdays),
|
|
179
|
+
weekday: cn(
|
|
180
|
+
"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none",
|
|
181
|
+
defaultClassNames.weekday
|
|
182
|
+
),
|
|
183
|
+
week: cn("mt-2 flex w-full", defaultClassNames.week),
|
|
184
|
+
week_number_header: cn(
|
|
185
|
+
"w-(--cell-size) select-none",
|
|
186
|
+
defaultClassNames.week_number_header
|
|
187
|
+
),
|
|
188
|
+
week_number: cn(
|
|
189
|
+
"text-[0.8rem] text-muted-foreground select-none",
|
|
190
|
+
defaultClassNames.week_number
|
|
191
|
+
),
|
|
192
|
+
day: cn(
|
|
193
|
+
"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)",
|
|
194
|
+
props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)",
|
|
195
|
+
defaultClassNames.day
|
|
196
|
+
),
|
|
197
|
+
range_start: cn(
|
|
198
|
+
"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted",
|
|
199
|
+
defaultClassNames.range_start
|
|
200
|
+
),
|
|
201
|
+
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
202
|
+
range_end: cn(
|
|
203
|
+
"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted",
|
|
204
|
+
defaultClassNames.range_end
|
|
205
|
+
),
|
|
206
|
+
today: cn(
|
|
207
|
+
"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none",
|
|
208
|
+
defaultClassNames.today
|
|
209
|
+
),
|
|
210
|
+
outside: cn(
|
|
211
|
+
"text-muted-foreground aria-selected:text-muted-foreground",
|
|
212
|
+
defaultClassNames.outside
|
|
213
|
+
),
|
|
214
|
+
disabled: cn(
|
|
215
|
+
"text-muted-foreground opacity-50",
|
|
216
|
+
defaultClassNames.disabled
|
|
217
|
+
),
|
|
218
|
+
hidden: cn("invisible", defaultClassNames.hidden),
|
|
219
|
+
...classNames
|
|
220
|
+
},
|
|
221
|
+
components: {
|
|
222
|
+
Root: ({ className: className2, rootRef, ...props2 }) => {
|
|
223
|
+
return /* @__PURE__ */ jsx(
|
|
224
|
+
"div",
|
|
225
|
+
{
|
|
226
|
+
"data-slot": "calendar",
|
|
227
|
+
ref: rootRef,
|
|
228
|
+
className: cn(className2),
|
|
229
|
+
...props2
|
|
230
|
+
}
|
|
231
|
+
);
|
|
232
|
+
},
|
|
233
|
+
Chevron: ({ className: className2, orientation, ...props2 }) => {
|
|
234
|
+
if (orientation === "left") {
|
|
235
|
+
return /* @__PURE__ */ jsx(ChevronLeftIcon, { className: cn("cn-rtl-flip size-4", className2), ...props2 });
|
|
236
|
+
}
|
|
237
|
+
if (orientation === "right") {
|
|
238
|
+
return /* @__PURE__ */ jsx(ChevronRightIcon, { className: cn("cn-rtl-flip size-4", className2), ...props2 });
|
|
239
|
+
}
|
|
240
|
+
return /* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
|
|
241
|
+
},
|
|
242
|
+
DayButton: ({ ...props2 }) => /* @__PURE__ */ jsx(CalendarDayButton, { locale, ...props2 }),
|
|
243
|
+
WeekNumber: ({ children, ...props2 }) => {
|
|
244
|
+
return /* @__PURE__ */ jsx("td", { ...props2, children: /* @__PURE__ */ jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
|
|
245
|
+
},
|
|
246
|
+
...components
|
|
247
|
+
},
|
|
248
|
+
...props
|
|
249
|
+
}
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
function CalendarDayButton({
|
|
253
|
+
className,
|
|
254
|
+
day,
|
|
255
|
+
modifiers,
|
|
256
|
+
locale,
|
|
257
|
+
...props
|
|
258
|
+
}) {
|
|
259
|
+
const defaultClassNames = getDefaultClassNames();
|
|
260
|
+
const ref = React12.useRef(null);
|
|
261
|
+
React12.useEffect(() => {
|
|
262
|
+
if (modifiers.focused) ref.current?.focus();
|
|
263
|
+
}, [modifiers.focused]);
|
|
264
|
+
return /* @__PURE__ */ jsx(
|
|
265
|
+
Button,
|
|
266
|
+
{
|
|
267
|
+
variant: "ghost",
|
|
268
|
+
size: "icon",
|
|
269
|
+
"data-day": day.date.toLocaleDateString(locale?.code),
|
|
270
|
+
"data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
|
|
271
|
+
"data-range-start": modifiers.range_start,
|
|
272
|
+
"data-range-end": modifiers.range_end,
|
|
273
|
+
"data-range-middle": modifiers.range_middle,
|
|
274
|
+
className: cn(
|
|
275
|
+
"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal 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]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) 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-foreground [&>span]:text-xs [&>span]:opacity-70",
|
|
276
|
+
defaultClassNames.day,
|
|
277
|
+
className
|
|
278
|
+
),
|
|
279
|
+
...props
|
|
280
|
+
}
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
function Checkbox({ className, ...props }) {
|
|
284
|
+
return /* @__PURE__ */ jsx(
|
|
285
|
+
Checkbox$1.Root,
|
|
286
|
+
{
|
|
287
|
+
"data-slot": "checkbox",
|
|
288
|
+
className: cn(
|
|
289
|
+
"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary",
|
|
290
|
+
className
|
|
291
|
+
),
|
|
292
|
+
...props,
|
|
293
|
+
children: /* @__PURE__ */ jsx(
|
|
294
|
+
Checkbox$1.Indicator,
|
|
295
|
+
{
|
|
296
|
+
"data-slot": "checkbox-indicator",
|
|
297
|
+
className: "grid place-content-center text-current transition-none [&>svg]:size-3.5",
|
|
298
|
+
children: /* @__PURE__ */ jsx(CheckIcon, {})
|
|
299
|
+
}
|
|
300
|
+
)
|
|
301
|
+
}
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
function Collapsible({ ...props }) {
|
|
305
|
+
return /* @__PURE__ */ jsx(Collapsible$1.Root, { "data-slot": "collapsible", ...props });
|
|
306
|
+
}
|
|
307
|
+
function CollapsibleTrigger({ ...props }) {
|
|
308
|
+
return /* @__PURE__ */ jsx(Collapsible$1.Trigger, { "data-slot": "collapsible-trigger", ...props });
|
|
309
|
+
}
|
|
310
|
+
function CollapsibleContent({ ...props }) {
|
|
311
|
+
return /* @__PURE__ */ jsx(Collapsible$1.Panel, { "data-slot": "collapsible-content", ...props });
|
|
312
|
+
}
|
|
313
|
+
function Dialog({ ...props }) {
|
|
314
|
+
return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "dialog", ...props });
|
|
315
|
+
}
|
|
316
|
+
function DialogTrigger({ ...props }) {
|
|
317
|
+
return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "dialog-trigger", ...props });
|
|
318
|
+
}
|
|
319
|
+
function DialogPortal({ ...props }) {
|
|
320
|
+
return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "dialog-portal", ...props });
|
|
321
|
+
}
|
|
322
|
+
function DialogClose({ ...props }) {
|
|
323
|
+
return /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "dialog-close", ...props });
|
|
324
|
+
}
|
|
325
|
+
function DialogOverlay({
|
|
326
|
+
className,
|
|
327
|
+
...props
|
|
328
|
+
}) {
|
|
329
|
+
return /* @__PURE__ */ jsx(
|
|
330
|
+
Dialog$1.Backdrop,
|
|
331
|
+
{
|
|
332
|
+
"data-slot": "dialog-overlay",
|
|
333
|
+
className: cn(
|
|
334
|
+
"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
335
|
+
className
|
|
336
|
+
),
|
|
337
|
+
...props
|
|
338
|
+
}
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
function DialogContent({
|
|
342
|
+
className,
|
|
343
|
+
children,
|
|
344
|
+
showCloseButton = true,
|
|
345
|
+
...props
|
|
346
|
+
}) {
|
|
347
|
+
return /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
348
|
+
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
349
|
+
/* @__PURE__ */ jsxs(
|
|
350
|
+
Dialog$1.Popup,
|
|
351
|
+
{
|
|
352
|
+
"data-slot": "dialog-content",
|
|
353
|
+
className: cn(
|
|
354
|
+
"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
355
|
+
className
|
|
356
|
+
),
|
|
357
|
+
...props,
|
|
358
|
+
children: [
|
|
359
|
+
children,
|
|
360
|
+
showCloseButton && /* @__PURE__ */ jsxs(
|
|
361
|
+
Dialog$1.Close,
|
|
362
|
+
{
|
|
363
|
+
"data-slot": "dialog-close",
|
|
364
|
+
render: /* @__PURE__ */ jsx(
|
|
365
|
+
Button,
|
|
366
|
+
{
|
|
367
|
+
variant: "ghost",
|
|
368
|
+
className: "absolute top-2 right-2",
|
|
369
|
+
size: "icon-sm"
|
|
370
|
+
}
|
|
371
|
+
),
|
|
372
|
+
children: [
|
|
373
|
+
/* @__PURE__ */ jsx(XIcon, {}),
|
|
374
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
375
|
+
]
|
|
376
|
+
}
|
|
377
|
+
)
|
|
378
|
+
]
|
|
379
|
+
}
|
|
380
|
+
)
|
|
381
|
+
] });
|
|
382
|
+
}
|
|
383
|
+
function DialogHeader({ className, ...props }) {
|
|
384
|
+
return /* @__PURE__ */ jsx(
|
|
385
|
+
"div",
|
|
386
|
+
{
|
|
387
|
+
"data-slot": "dialog-header",
|
|
388
|
+
className: cn("flex flex-col gap-2", className),
|
|
389
|
+
...props
|
|
390
|
+
}
|
|
391
|
+
);
|
|
392
|
+
}
|
|
393
|
+
function DialogFooter({
|
|
394
|
+
className,
|
|
395
|
+
showCloseButton = false,
|
|
396
|
+
children,
|
|
397
|
+
...props
|
|
398
|
+
}) {
|
|
399
|
+
return /* @__PURE__ */ jsxs(
|
|
400
|
+
"div",
|
|
401
|
+
{
|
|
402
|
+
"data-slot": "dialog-footer",
|
|
403
|
+
className: cn(
|
|
404
|
+
"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",
|
|
405
|
+
className
|
|
406
|
+
),
|
|
407
|
+
...props,
|
|
408
|
+
children: [
|
|
409
|
+
children,
|
|
410
|
+
showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, { render: /* @__PURE__ */ jsx(Button, { variant: "outline" }), children: "Close" })
|
|
411
|
+
]
|
|
412
|
+
}
|
|
413
|
+
);
|
|
414
|
+
}
|
|
415
|
+
function DialogTitle({ className, ...props }) {
|
|
416
|
+
return /* @__PURE__ */ jsx(
|
|
417
|
+
Dialog$1.Title,
|
|
418
|
+
{
|
|
419
|
+
"data-slot": "dialog-title",
|
|
420
|
+
className: cn(
|
|
421
|
+
"cn-font-heading text-base leading-none font-medium",
|
|
422
|
+
className
|
|
423
|
+
),
|
|
424
|
+
...props
|
|
425
|
+
}
|
|
426
|
+
);
|
|
427
|
+
}
|
|
428
|
+
function DialogDescription({
|
|
429
|
+
className,
|
|
430
|
+
...props
|
|
431
|
+
}) {
|
|
432
|
+
return /* @__PURE__ */ jsx(
|
|
433
|
+
Dialog$1.Description,
|
|
434
|
+
{
|
|
435
|
+
"data-slot": "dialog-description",
|
|
436
|
+
className: cn(
|
|
437
|
+
"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
438
|
+
className
|
|
439
|
+
),
|
|
440
|
+
...props
|
|
441
|
+
}
|
|
442
|
+
);
|
|
443
|
+
}
|
|
444
|
+
function Input({ className, type, ...props }) {
|
|
445
|
+
return /* @__PURE__ */ jsx(
|
|
446
|
+
Input$1,
|
|
447
|
+
{
|
|
448
|
+
type,
|
|
449
|
+
"data-slot": "input",
|
|
450
|
+
className: cn(
|
|
451
|
+
"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
|
|
452
|
+
className
|
|
453
|
+
),
|
|
454
|
+
...props
|
|
455
|
+
}
|
|
456
|
+
);
|
|
457
|
+
}
|
|
458
|
+
function Textarea({ className, ...props }) {
|
|
459
|
+
return /* @__PURE__ */ jsx(
|
|
460
|
+
"textarea",
|
|
461
|
+
{
|
|
462
|
+
"data-slot": "textarea",
|
|
463
|
+
className: cn(
|
|
464
|
+
"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
|
|
465
|
+
className
|
|
466
|
+
),
|
|
467
|
+
...props
|
|
468
|
+
}
|
|
469
|
+
);
|
|
470
|
+
}
|
|
471
|
+
function InputGroup({ className, ...props }) {
|
|
472
|
+
return /* @__PURE__ */ jsx(
|
|
473
|
+
"div",
|
|
474
|
+
{
|
|
475
|
+
"data-slot": "input-group",
|
|
476
|
+
role: "group",
|
|
477
|
+
className: cn(
|
|
478
|
+
"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
|
|
479
|
+
className
|
|
480
|
+
),
|
|
481
|
+
...props
|
|
482
|
+
}
|
|
483
|
+
);
|
|
484
|
+
}
|
|
485
|
+
var inputGroupAddonVariants = cva(
|
|
486
|
+
"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",
|
|
487
|
+
{
|
|
488
|
+
variants: {
|
|
489
|
+
align: {
|
|
490
|
+
"inline-start": "order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]",
|
|
491
|
+
"inline-end": "order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]",
|
|
492
|
+
"block-start": "order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
|
|
493
|
+
"block-end": "order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
defaultVariants: {
|
|
497
|
+
align: "inline-start"
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
);
|
|
501
|
+
function InputGroupAddon({
|
|
502
|
+
className,
|
|
503
|
+
align = "inline-start",
|
|
504
|
+
...props
|
|
505
|
+
}) {
|
|
506
|
+
return /* @__PURE__ */ jsx(
|
|
507
|
+
"div",
|
|
508
|
+
{
|
|
509
|
+
role: "group",
|
|
510
|
+
"data-slot": "input-group-addon",
|
|
511
|
+
"data-align": align,
|
|
512
|
+
className: cn(inputGroupAddonVariants({ align }), className),
|
|
513
|
+
onClick: (e) => {
|
|
514
|
+
if (e.target.closest("button")) {
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
e.currentTarget.parentElement?.querySelector("input")?.focus();
|
|
518
|
+
},
|
|
519
|
+
...props
|
|
520
|
+
}
|
|
521
|
+
);
|
|
522
|
+
}
|
|
523
|
+
var inputGroupButtonVariants = cva(
|
|
524
|
+
"flex items-center gap-2 text-sm shadow-none",
|
|
525
|
+
{
|
|
526
|
+
variants: {
|
|
527
|
+
size: {
|
|
528
|
+
xs: "h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
|
|
529
|
+
sm: "",
|
|
530
|
+
"icon-xs": "size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0",
|
|
531
|
+
"icon-sm": "size-8 p-0 has-[>svg]:p-0"
|
|
532
|
+
}
|
|
533
|
+
},
|
|
534
|
+
defaultVariants: {
|
|
535
|
+
size: "xs"
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
);
|
|
539
|
+
function InputGroupButton({
|
|
540
|
+
className,
|
|
541
|
+
type = "button",
|
|
542
|
+
variant = "ghost",
|
|
543
|
+
size = "xs",
|
|
544
|
+
...props
|
|
545
|
+
}) {
|
|
546
|
+
return /* @__PURE__ */ jsx(
|
|
547
|
+
Button,
|
|
548
|
+
{
|
|
549
|
+
type,
|
|
550
|
+
"data-size": size,
|
|
551
|
+
variant,
|
|
552
|
+
className: cn(inputGroupButtonVariants({ size }), className),
|
|
553
|
+
...props
|
|
554
|
+
}
|
|
555
|
+
);
|
|
556
|
+
}
|
|
557
|
+
function InputGroupText({ className, ...props }) {
|
|
558
|
+
return /* @__PURE__ */ jsx(
|
|
559
|
+
"span",
|
|
560
|
+
{
|
|
561
|
+
className: cn(
|
|
562
|
+
"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
563
|
+
className
|
|
564
|
+
),
|
|
565
|
+
...props
|
|
566
|
+
}
|
|
567
|
+
);
|
|
568
|
+
}
|
|
569
|
+
function InputGroupInput({
|
|
570
|
+
className,
|
|
571
|
+
...props
|
|
572
|
+
}) {
|
|
573
|
+
return /* @__PURE__ */ jsx(
|
|
574
|
+
Input,
|
|
575
|
+
{
|
|
576
|
+
"data-slot": "input-group-control",
|
|
577
|
+
className: cn(
|
|
578
|
+
"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
|
|
579
|
+
className
|
|
580
|
+
),
|
|
581
|
+
...props
|
|
582
|
+
}
|
|
583
|
+
);
|
|
584
|
+
}
|
|
585
|
+
function InputGroupTextarea({
|
|
586
|
+
className,
|
|
587
|
+
...props
|
|
588
|
+
}) {
|
|
589
|
+
return /* @__PURE__ */ jsx(
|
|
590
|
+
Textarea,
|
|
591
|
+
{
|
|
592
|
+
"data-slot": "input-group-control",
|
|
593
|
+
className: cn(
|
|
594
|
+
"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
|
|
595
|
+
className
|
|
596
|
+
),
|
|
597
|
+
...props
|
|
598
|
+
}
|
|
599
|
+
);
|
|
600
|
+
}
|
|
601
|
+
function Command({
|
|
602
|
+
className,
|
|
603
|
+
...props
|
|
604
|
+
}) {
|
|
605
|
+
return /* @__PURE__ */ jsx(
|
|
606
|
+
Command$1,
|
|
607
|
+
{
|
|
608
|
+
"data-slot": "command",
|
|
609
|
+
className: cn(
|
|
610
|
+
"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground",
|
|
611
|
+
className
|
|
612
|
+
),
|
|
613
|
+
...props
|
|
614
|
+
}
|
|
615
|
+
);
|
|
616
|
+
}
|
|
617
|
+
function CommandDialog({
|
|
618
|
+
title = "Command Palette",
|
|
619
|
+
description = "Search for a command to run...",
|
|
620
|
+
children,
|
|
621
|
+
className,
|
|
622
|
+
showCloseButton = false,
|
|
623
|
+
...props
|
|
624
|
+
}) {
|
|
625
|
+
return /* @__PURE__ */ jsxs(Dialog, { ...props, children: [
|
|
626
|
+
/* @__PURE__ */ jsxs(DialogHeader, { className: "sr-only", children: [
|
|
627
|
+
/* @__PURE__ */ jsx(DialogTitle, { children: title }),
|
|
628
|
+
/* @__PURE__ */ jsx(DialogDescription, { children: description })
|
|
629
|
+
] }),
|
|
630
|
+
/* @__PURE__ */ jsx(
|
|
631
|
+
DialogContent,
|
|
632
|
+
{
|
|
633
|
+
className: cn(
|
|
634
|
+
"top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0",
|
|
635
|
+
className
|
|
636
|
+
),
|
|
637
|
+
showCloseButton,
|
|
638
|
+
children
|
|
639
|
+
}
|
|
640
|
+
)
|
|
641
|
+
] });
|
|
642
|
+
}
|
|
643
|
+
function CommandInput({
|
|
644
|
+
className,
|
|
645
|
+
...props
|
|
646
|
+
}) {
|
|
647
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "command-input-wrapper", className: "p-1 pb-0", children: /* @__PURE__ */ jsxs(InputGroup, { className: "h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!", children: [
|
|
648
|
+
/* @__PURE__ */ jsx(
|
|
649
|
+
Command$1.Input,
|
|
650
|
+
{
|
|
651
|
+
"data-slot": "command-input",
|
|
652
|
+
className: cn(
|
|
653
|
+
"w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
|
|
654
|
+
className
|
|
655
|
+
),
|
|
656
|
+
...props
|
|
657
|
+
}
|
|
658
|
+
),
|
|
659
|
+
/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }) })
|
|
660
|
+
] }) });
|
|
661
|
+
}
|
|
662
|
+
function CommandList({
|
|
663
|
+
className,
|
|
664
|
+
...props
|
|
665
|
+
}) {
|
|
666
|
+
return /* @__PURE__ */ jsx(
|
|
667
|
+
Command$1.List,
|
|
668
|
+
{
|
|
669
|
+
"data-slot": "command-list",
|
|
670
|
+
className: cn(
|
|
671
|
+
"no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none",
|
|
672
|
+
className
|
|
673
|
+
),
|
|
674
|
+
...props
|
|
675
|
+
}
|
|
676
|
+
);
|
|
677
|
+
}
|
|
678
|
+
function CommandEmpty({
|
|
679
|
+
className,
|
|
680
|
+
...props
|
|
681
|
+
}) {
|
|
682
|
+
return /* @__PURE__ */ jsx(
|
|
683
|
+
Command$1.Empty,
|
|
684
|
+
{
|
|
685
|
+
"data-slot": "command-empty",
|
|
686
|
+
className: cn("py-6 text-center text-sm", className),
|
|
687
|
+
...props
|
|
688
|
+
}
|
|
689
|
+
);
|
|
690
|
+
}
|
|
691
|
+
function CommandGroup({
|
|
692
|
+
className,
|
|
693
|
+
...props
|
|
694
|
+
}) {
|
|
695
|
+
return /* @__PURE__ */ jsx(
|
|
696
|
+
Command$1.Group,
|
|
697
|
+
{
|
|
698
|
+
"data-slot": "command-group",
|
|
699
|
+
className: cn(
|
|
700
|
+
"overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground",
|
|
701
|
+
className
|
|
702
|
+
),
|
|
703
|
+
...props
|
|
704
|
+
}
|
|
705
|
+
);
|
|
706
|
+
}
|
|
707
|
+
function CommandSeparator({
|
|
708
|
+
className,
|
|
709
|
+
...props
|
|
710
|
+
}) {
|
|
711
|
+
return /* @__PURE__ */ jsx(
|
|
712
|
+
Command$1.Separator,
|
|
713
|
+
{
|
|
714
|
+
"data-slot": "command-separator",
|
|
715
|
+
className: cn("-mx-1 h-px bg-border", className),
|
|
716
|
+
...props
|
|
717
|
+
}
|
|
718
|
+
);
|
|
719
|
+
}
|
|
720
|
+
function CommandItem({
|
|
721
|
+
className,
|
|
722
|
+
children,
|
|
723
|
+
...props
|
|
724
|
+
}) {
|
|
725
|
+
return /* @__PURE__ */ jsxs(
|
|
726
|
+
Command$1.Item,
|
|
727
|
+
{
|
|
728
|
+
"data-slot": "command-item",
|
|
729
|
+
className: cn(
|
|
730
|
+
"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground",
|
|
731
|
+
className
|
|
732
|
+
),
|
|
733
|
+
...props,
|
|
734
|
+
children: [
|
|
735
|
+
children,
|
|
736
|
+
/* @__PURE__ */ jsx(CheckIcon, { className: "ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100" })
|
|
737
|
+
]
|
|
738
|
+
}
|
|
739
|
+
);
|
|
740
|
+
}
|
|
741
|
+
function CommandShortcut({
|
|
742
|
+
className,
|
|
743
|
+
...props
|
|
744
|
+
}) {
|
|
745
|
+
return /* @__PURE__ */ jsx(
|
|
746
|
+
"span",
|
|
747
|
+
{
|
|
748
|
+
"data-slot": "command-shortcut",
|
|
749
|
+
className: cn(
|
|
750
|
+
"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground",
|
|
751
|
+
className
|
|
752
|
+
),
|
|
753
|
+
...props
|
|
754
|
+
}
|
|
755
|
+
);
|
|
756
|
+
}
|
|
757
|
+
function DropdownMenu({ ...props }) {
|
|
758
|
+
return /* @__PURE__ */ jsx(Menu.Root, { "data-slot": "dropdown-menu", ...props });
|
|
759
|
+
}
|
|
760
|
+
function DropdownMenuPortal({ ...props }) {
|
|
761
|
+
return /* @__PURE__ */ jsx(Menu.Portal, { "data-slot": "dropdown-menu-portal", ...props });
|
|
762
|
+
}
|
|
763
|
+
function DropdownMenuTrigger({ ...props }) {
|
|
764
|
+
return /* @__PURE__ */ jsx(Menu.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
765
|
+
}
|
|
766
|
+
function DropdownMenuContent({
|
|
767
|
+
align = "start",
|
|
768
|
+
alignOffset = 0,
|
|
769
|
+
side = "bottom",
|
|
770
|
+
sideOffset = 4,
|
|
771
|
+
className,
|
|
772
|
+
...props
|
|
773
|
+
}) {
|
|
774
|
+
return /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(
|
|
775
|
+
Menu.Positioner,
|
|
776
|
+
{
|
|
777
|
+
className: "isolate z-50 outline-none",
|
|
778
|
+
align,
|
|
779
|
+
alignOffset,
|
|
780
|
+
side,
|
|
781
|
+
sideOffset,
|
|
782
|
+
children: /* @__PURE__ */ jsx(
|
|
783
|
+
Menu.Popup,
|
|
784
|
+
{
|
|
785
|
+
"data-slot": "dropdown-menu-content",
|
|
786
|
+
className: cn(
|
|
787
|
+
"cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
788
|
+
className
|
|
789
|
+
),
|
|
790
|
+
...props
|
|
791
|
+
}
|
|
792
|
+
)
|
|
793
|
+
}
|
|
794
|
+
) });
|
|
795
|
+
}
|
|
796
|
+
function DropdownMenuGroup({ ...props }) {
|
|
797
|
+
return /* @__PURE__ */ jsx(Menu.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
798
|
+
}
|
|
799
|
+
function DropdownMenuLabel({
|
|
800
|
+
className,
|
|
801
|
+
inset,
|
|
802
|
+
...props
|
|
803
|
+
}) {
|
|
804
|
+
return /* @__PURE__ */ jsx(
|
|
805
|
+
Menu.GroupLabel,
|
|
806
|
+
{
|
|
807
|
+
"data-slot": "dropdown-menu-label",
|
|
808
|
+
"data-inset": inset,
|
|
809
|
+
className: cn(
|
|
810
|
+
"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",
|
|
811
|
+
className
|
|
812
|
+
),
|
|
813
|
+
...props
|
|
814
|
+
}
|
|
815
|
+
);
|
|
816
|
+
}
|
|
817
|
+
function DropdownMenuItem({
|
|
818
|
+
className,
|
|
819
|
+
inset,
|
|
820
|
+
variant = "default",
|
|
821
|
+
...props
|
|
822
|
+
}) {
|
|
823
|
+
return /* @__PURE__ */ jsx(
|
|
824
|
+
Menu.Item,
|
|
825
|
+
{
|
|
826
|
+
"data-slot": "dropdown-menu-item",
|
|
827
|
+
"data-inset": inset,
|
|
828
|
+
"data-variant": variant,
|
|
829
|
+
className: cn(
|
|
830
|
+
"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",
|
|
831
|
+
className
|
|
832
|
+
),
|
|
833
|
+
...props
|
|
834
|
+
}
|
|
835
|
+
);
|
|
836
|
+
}
|
|
837
|
+
function DropdownMenuSub({ ...props }) {
|
|
838
|
+
return /* @__PURE__ */ jsx(Menu.SubmenuRoot, { "data-slot": "dropdown-menu-sub", ...props });
|
|
839
|
+
}
|
|
840
|
+
function DropdownMenuSubTrigger({
|
|
841
|
+
className,
|
|
842
|
+
inset,
|
|
843
|
+
children,
|
|
844
|
+
...props
|
|
845
|
+
}) {
|
|
846
|
+
return /* @__PURE__ */ jsxs(
|
|
847
|
+
Menu.SubmenuTrigger,
|
|
848
|
+
{
|
|
849
|
+
"data-slot": "dropdown-menu-sub-trigger",
|
|
850
|
+
"data-inset": inset,
|
|
851
|
+
className: cn(
|
|
852
|
+
"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
853
|
+
className
|
|
854
|
+
),
|
|
855
|
+
...props,
|
|
856
|
+
children: [
|
|
857
|
+
children,
|
|
858
|
+
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "cn-rtl-flip ml-auto" })
|
|
859
|
+
]
|
|
860
|
+
}
|
|
861
|
+
);
|
|
862
|
+
}
|
|
863
|
+
function DropdownMenuSubContent({
|
|
864
|
+
align = "start",
|
|
865
|
+
alignOffset = -3,
|
|
866
|
+
side = "right",
|
|
867
|
+
sideOffset = 0,
|
|
868
|
+
className,
|
|
869
|
+
...props
|
|
870
|
+
}) {
|
|
871
|
+
return /* @__PURE__ */ jsx(
|
|
872
|
+
DropdownMenuContent,
|
|
873
|
+
{
|
|
874
|
+
"data-slot": "dropdown-menu-sub-content",
|
|
875
|
+
className: cn(
|
|
876
|
+
"cn-menu-target cn-menu-translucent w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 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-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
877
|
+
className
|
|
878
|
+
),
|
|
879
|
+
align,
|
|
880
|
+
alignOffset,
|
|
881
|
+
side,
|
|
882
|
+
sideOffset,
|
|
883
|
+
...props
|
|
884
|
+
}
|
|
885
|
+
);
|
|
886
|
+
}
|
|
887
|
+
function DropdownMenuCheckboxItem({
|
|
888
|
+
className,
|
|
889
|
+
children,
|
|
890
|
+
checked,
|
|
891
|
+
inset,
|
|
892
|
+
...props
|
|
893
|
+
}) {
|
|
894
|
+
return /* @__PURE__ */ jsxs(
|
|
895
|
+
Menu.CheckboxItem,
|
|
896
|
+
{
|
|
897
|
+
"data-slot": "dropdown-menu-checkbox-item",
|
|
898
|
+
"data-inset": inset,
|
|
899
|
+
className: cn(
|
|
900
|
+
"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
901
|
+
className
|
|
902
|
+
),
|
|
903
|
+
checked,
|
|
904
|
+
...props,
|
|
905
|
+
children: [
|
|
906
|
+
/* @__PURE__ */ jsx(
|
|
907
|
+
"span",
|
|
908
|
+
{
|
|
909
|
+
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
910
|
+
"data-slot": "dropdown-menu-checkbox-item-indicator",
|
|
911
|
+
children: /* @__PURE__ */ jsx(Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
912
|
+
}
|
|
913
|
+
),
|
|
914
|
+
children
|
|
915
|
+
]
|
|
916
|
+
}
|
|
917
|
+
);
|
|
918
|
+
}
|
|
919
|
+
function DropdownMenuRadioGroup({ ...props }) {
|
|
920
|
+
return /* @__PURE__ */ jsx(
|
|
921
|
+
Menu.RadioGroup,
|
|
922
|
+
{
|
|
923
|
+
"data-slot": "dropdown-menu-radio-group",
|
|
924
|
+
...props
|
|
925
|
+
}
|
|
926
|
+
);
|
|
927
|
+
}
|
|
928
|
+
function DropdownMenuRadioItem({
|
|
929
|
+
className,
|
|
930
|
+
children,
|
|
931
|
+
inset,
|
|
932
|
+
...props
|
|
933
|
+
}) {
|
|
934
|
+
return /* @__PURE__ */ jsxs(
|
|
935
|
+
Menu.RadioItem,
|
|
936
|
+
{
|
|
937
|
+
"data-slot": "dropdown-menu-radio-item",
|
|
938
|
+
"data-inset": inset,
|
|
939
|
+
className: cn(
|
|
940
|
+
"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
941
|
+
className
|
|
942
|
+
),
|
|
943
|
+
...props,
|
|
944
|
+
children: [
|
|
945
|
+
/* @__PURE__ */ jsx(
|
|
946
|
+
"span",
|
|
947
|
+
{
|
|
948
|
+
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
949
|
+
"data-slot": "dropdown-menu-radio-item-indicator",
|
|
950
|
+
children: /* @__PURE__ */ jsx(Menu.RadioItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
951
|
+
}
|
|
952
|
+
),
|
|
953
|
+
children
|
|
954
|
+
]
|
|
955
|
+
}
|
|
956
|
+
);
|
|
957
|
+
}
|
|
958
|
+
function DropdownMenuSeparator({
|
|
959
|
+
className,
|
|
960
|
+
...props
|
|
961
|
+
}) {
|
|
962
|
+
return /* @__PURE__ */ jsx(
|
|
963
|
+
Menu.Separator,
|
|
964
|
+
{
|
|
965
|
+
"data-slot": "dropdown-menu-separator",
|
|
966
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
967
|
+
...props
|
|
968
|
+
}
|
|
969
|
+
);
|
|
970
|
+
}
|
|
971
|
+
function DropdownMenuShortcut({
|
|
972
|
+
className,
|
|
973
|
+
...props
|
|
974
|
+
}) {
|
|
975
|
+
return /* @__PURE__ */ jsx(
|
|
976
|
+
"span",
|
|
977
|
+
{
|
|
978
|
+
"data-slot": "dropdown-menu-shortcut",
|
|
979
|
+
className: cn(
|
|
980
|
+
"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground",
|
|
981
|
+
className
|
|
982
|
+
),
|
|
983
|
+
...props
|
|
984
|
+
}
|
|
985
|
+
);
|
|
986
|
+
}
|
|
987
|
+
function Popover({ ...props }) {
|
|
988
|
+
return /* @__PURE__ */ jsx(Popover$1.Root, { "data-slot": "popover", ...props });
|
|
989
|
+
}
|
|
990
|
+
function PopoverTrigger({ ...props }) {
|
|
991
|
+
return /* @__PURE__ */ jsx(Popover$1.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
992
|
+
}
|
|
993
|
+
function PopoverContent({
|
|
994
|
+
className,
|
|
995
|
+
align = "center",
|
|
996
|
+
alignOffset = 0,
|
|
997
|
+
side = "bottom",
|
|
998
|
+
sideOffset = 4,
|
|
999
|
+
...props
|
|
1000
|
+
}) {
|
|
1001
|
+
return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
1002
|
+
Popover$1.Positioner,
|
|
1003
|
+
{
|
|
1004
|
+
align,
|
|
1005
|
+
alignOffset,
|
|
1006
|
+
side,
|
|
1007
|
+
sideOffset,
|
|
1008
|
+
className: "isolate z-50",
|
|
1009
|
+
children: /* @__PURE__ */ jsx(
|
|
1010
|
+
Popover$1.Popup,
|
|
1011
|
+
{
|
|
1012
|
+
"data-slot": "popover-content",
|
|
1013
|
+
className: cn(
|
|
1014
|
+
"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
1015
|
+
className
|
|
1016
|
+
),
|
|
1017
|
+
...props
|
|
1018
|
+
}
|
|
1019
|
+
)
|
|
1020
|
+
}
|
|
1021
|
+
) });
|
|
1022
|
+
}
|
|
1023
|
+
function PopoverHeader({ className, ...props }) {
|
|
1024
|
+
return /* @__PURE__ */ jsx(
|
|
1025
|
+
"div",
|
|
1026
|
+
{
|
|
1027
|
+
"data-slot": "popover-header",
|
|
1028
|
+
className: cn("flex flex-col gap-0.5 text-sm", className),
|
|
1029
|
+
...props
|
|
1030
|
+
}
|
|
1031
|
+
);
|
|
1032
|
+
}
|
|
1033
|
+
function PopoverTitle({ className, ...props }) {
|
|
1034
|
+
return /* @__PURE__ */ jsx(
|
|
1035
|
+
Popover$1.Title,
|
|
1036
|
+
{
|
|
1037
|
+
"data-slot": "popover-title",
|
|
1038
|
+
className: cn("font-medium", className),
|
|
1039
|
+
...props
|
|
1040
|
+
}
|
|
1041
|
+
);
|
|
1042
|
+
}
|
|
1043
|
+
function PopoverDescription({
|
|
1044
|
+
className,
|
|
1045
|
+
...props
|
|
1046
|
+
}) {
|
|
1047
|
+
return /* @__PURE__ */ jsx(
|
|
1048
|
+
Popover$1.Description,
|
|
1049
|
+
{
|
|
1050
|
+
"data-slot": "popover-description",
|
|
1051
|
+
className: cn("text-muted-foreground", className),
|
|
1052
|
+
...props
|
|
1053
|
+
}
|
|
1054
|
+
);
|
|
1055
|
+
}
|
|
1056
|
+
var Select = Select$1.Root;
|
|
1057
|
+
function SelectGroup({ className, ...props }) {
|
|
1058
|
+
return /* @__PURE__ */ jsx(
|
|
1059
|
+
Select$1.Group,
|
|
1060
|
+
{
|
|
1061
|
+
"data-slot": "select-group",
|
|
1062
|
+
className: cn("scroll-my-1 p-1", className),
|
|
1063
|
+
...props
|
|
1064
|
+
}
|
|
1065
|
+
);
|
|
1066
|
+
}
|
|
1067
|
+
function SelectValue({ className, ...props }) {
|
|
1068
|
+
return /* @__PURE__ */ jsx(
|
|
1069
|
+
Select$1.Value,
|
|
1070
|
+
{
|
|
1071
|
+
"data-slot": "select-value",
|
|
1072
|
+
className: cn("flex flex-1 text-left", className),
|
|
1073
|
+
...props
|
|
1074
|
+
}
|
|
1075
|
+
);
|
|
1076
|
+
}
|
|
1077
|
+
function SelectTrigger({
|
|
1078
|
+
className,
|
|
1079
|
+
size = "default",
|
|
1080
|
+
children,
|
|
1081
|
+
...props
|
|
1082
|
+
}) {
|
|
1083
|
+
return /* @__PURE__ */ jsxs(
|
|
1084
|
+
Select$1.Trigger,
|
|
1085
|
+
{
|
|
1086
|
+
"data-slot": "select-trigger",
|
|
1087
|
+
"data-size": size,
|
|
1088
|
+
className: cn(
|
|
1089
|
+
"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1090
|
+
className
|
|
1091
|
+
),
|
|
1092
|
+
...props,
|
|
1093
|
+
children: [
|
|
1094
|
+
children,
|
|
1095
|
+
/* @__PURE__ */ jsx(
|
|
1096
|
+
Select$1.Icon,
|
|
1097
|
+
{
|
|
1098
|
+
render: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" })
|
|
1099
|
+
}
|
|
1100
|
+
)
|
|
1101
|
+
]
|
|
1102
|
+
}
|
|
1103
|
+
);
|
|
1104
|
+
}
|
|
1105
|
+
function SelectContent({
|
|
1106
|
+
className,
|
|
1107
|
+
children,
|
|
1108
|
+
side = "bottom",
|
|
1109
|
+
sideOffset = 4,
|
|
1110
|
+
align = "center",
|
|
1111
|
+
alignOffset = 0,
|
|
1112
|
+
alignItemWithTrigger = true,
|
|
1113
|
+
...props
|
|
1114
|
+
}) {
|
|
1115
|
+
return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
1116
|
+
Select$1.Positioner,
|
|
1117
|
+
{
|
|
1118
|
+
side,
|
|
1119
|
+
sideOffset,
|
|
1120
|
+
align,
|
|
1121
|
+
alignOffset,
|
|
1122
|
+
alignItemWithTrigger,
|
|
1123
|
+
className: "isolate z-50",
|
|
1124
|
+
children: /* @__PURE__ */ jsxs(
|
|
1125
|
+
Select$1.Popup,
|
|
1126
|
+
{
|
|
1127
|
+
"data-slot": "select-content",
|
|
1128
|
+
"data-align-trigger": alignItemWithTrigger,
|
|
1129
|
+
className: cn(
|
|
1130
|
+
"cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
1131
|
+
className
|
|
1132
|
+
),
|
|
1133
|
+
...props,
|
|
1134
|
+
children: [
|
|
1135
|
+
/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
|
|
1136
|
+
/* @__PURE__ */ jsx(Select$1.List, { children }),
|
|
1137
|
+
/* @__PURE__ */ jsx(SelectScrollDownButton, {})
|
|
1138
|
+
]
|
|
1139
|
+
}
|
|
1140
|
+
)
|
|
1141
|
+
}
|
|
1142
|
+
) });
|
|
1143
|
+
}
|
|
1144
|
+
function SelectLabel({
|
|
1145
|
+
className,
|
|
1146
|
+
...props
|
|
1147
|
+
}) {
|
|
1148
|
+
return /* @__PURE__ */ jsx(
|
|
1149
|
+
Select$1.GroupLabel,
|
|
1150
|
+
{
|
|
1151
|
+
"data-slot": "select-label",
|
|
1152
|
+
className: cn("px-1.5 py-1 text-xs text-muted-foreground", className),
|
|
1153
|
+
...props
|
|
1154
|
+
}
|
|
1155
|
+
);
|
|
1156
|
+
}
|
|
1157
|
+
function SelectItem({
|
|
1158
|
+
className,
|
|
1159
|
+
children,
|
|
1160
|
+
...props
|
|
1161
|
+
}) {
|
|
1162
|
+
return /* @__PURE__ */ jsxs(
|
|
1163
|
+
Select$1.Item,
|
|
1164
|
+
{
|
|
1165
|
+
"data-slot": "select-item",
|
|
1166
|
+
className: cn(
|
|
1167
|
+
"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
|
1168
|
+
className
|
|
1169
|
+
),
|
|
1170
|
+
...props,
|
|
1171
|
+
children: [
|
|
1172
|
+
/* @__PURE__ */ jsx(Select$1.ItemText, { className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap", children }),
|
|
1173
|
+
/* @__PURE__ */ jsx(
|
|
1174
|
+
Select$1.ItemIndicator,
|
|
1175
|
+
{
|
|
1176
|
+
render: /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
|
|
1177
|
+
children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" })
|
|
1178
|
+
}
|
|
1179
|
+
)
|
|
1180
|
+
]
|
|
1181
|
+
}
|
|
1182
|
+
);
|
|
1183
|
+
}
|
|
1184
|
+
function SelectSeparator({
|
|
1185
|
+
className,
|
|
1186
|
+
...props
|
|
1187
|
+
}) {
|
|
1188
|
+
return /* @__PURE__ */ jsx(
|
|
1189
|
+
Select$1.Separator,
|
|
1190
|
+
{
|
|
1191
|
+
"data-slot": "select-separator",
|
|
1192
|
+
className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
|
|
1193
|
+
...props
|
|
1194
|
+
}
|
|
1195
|
+
);
|
|
1196
|
+
}
|
|
1197
|
+
function SelectScrollUpButton({
|
|
1198
|
+
className,
|
|
1199
|
+
...props
|
|
1200
|
+
}) {
|
|
1201
|
+
return /* @__PURE__ */ jsx(
|
|
1202
|
+
Select$1.ScrollUpArrow,
|
|
1203
|
+
{
|
|
1204
|
+
"data-slot": "select-scroll-up-button",
|
|
1205
|
+
className: cn(
|
|
1206
|
+
"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
1207
|
+
className
|
|
1208
|
+
),
|
|
1209
|
+
...props,
|
|
1210
|
+
children: /* @__PURE__ */ jsx(ChevronUpIcon, {})
|
|
1211
|
+
}
|
|
1212
|
+
);
|
|
1213
|
+
}
|
|
1214
|
+
function SelectScrollDownButton({
|
|
1215
|
+
className,
|
|
1216
|
+
...props
|
|
1217
|
+
}) {
|
|
1218
|
+
return /* @__PURE__ */ jsx(
|
|
1219
|
+
Select$1.ScrollDownArrow,
|
|
1220
|
+
{
|
|
1221
|
+
"data-slot": "select-scroll-down-button",
|
|
1222
|
+
className: cn(
|
|
1223
|
+
"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
1224
|
+
className
|
|
1225
|
+
),
|
|
1226
|
+
...props,
|
|
1227
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, {})
|
|
1228
|
+
}
|
|
1229
|
+
);
|
|
1230
|
+
}
|
|
1231
|
+
function Separator({
|
|
1232
|
+
className,
|
|
1233
|
+
orientation = "horizontal",
|
|
1234
|
+
...props
|
|
1235
|
+
}) {
|
|
1236
|
+
return /* @__PURE__ */ jsx(
|
|
1237
|
+
Separator$1,
|
|
1238
|
+
{
|
|
1239
|
+
"data-slot": "separator",
|
|
1240
|
+
orientation,
|
|
1241
|
+
className: cn(
|
|
1242
|
+
"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
|
|
1243
|
+
className
|
|
1244
|
+
),
|
|
1245
|
+
...props
|
|
1246
|
+
}
|
|
1247
|
+
);
|
|
1248
|
+
}
|
|
1249
|
+
function Sheet({ ...props }) {
|
|
1250
|
+
return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "sheet", ...props });
|
|
1251
|
+
}
|
|
1252
|
+
function SheetTrigger({ ...props }) {
|
|
1253
|
+
return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
1254
|
+
}
|
|
1255
|
+
function SheetClose({ ...props }) {
|
|
1256
|
+
return /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "sheet-close", ...props });
|
|
1257
|
+
}
|
|
1258
|
+
function SheetPortal({ ...props }) {
|
|
1259
|
+
return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "sheet-portal", ...props });
|
|
1260
|
+
}
|
|
1261
|
+
function SheetOverlay({ className, ...props }) {
|
|
1262
|
+
return /* @__PURE__ */ jsx(
|
|
1263
|
+
Dialog$1.Backdrop,
|
|
1264
|
+
{
|
|
1265
|
+
"data-slot": "sheet-overlay",
|
|
1266
|
+
className: cn(
|
|
1267
|
+
"fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",
|
|
1268
|
+
className
|
|
1269
|
+
),
|
|
1270
|
+
...props
|
|
1271
|
+
}
|
|
1272
|
+
);
|
|
1273
|
+
}
|
|
1274
|
+
function SheetContent({
|
|
1275
|
+
className,
|
|
1276
|
+
children,
|
|
1277
|
+
side = "right",
|
|
1278
|
+
showCloseButton = true,
|
|
1279
|
+
...props
|
|
1280
|
+
}) {
|
|
1281
|
+
return /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
1282
|
+
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
1283
|
+
/* @__PURE__ */ jsxs(
|
|
1284
|
+
Dialog$1.Popup,
|
|
1285
|
+
{
|
|
1286
|
+
"data-slot": "sheet-content",
|
|
1287
|
+
"data-side": side,
|
|
1288
|
+
className: cn(
|
|
1289
|
+
"fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",
|
|
1290
|
+
className
|
|
1291
|
+
),
|
|
1292
|
+
...props,
|
|
1293
|
+
children: [
|
|
1294
|
+
children,
|
|
1295
|
+
showCloseButton && /* @__PURE__ */ jsxs(
|
|
1296
|
+
Dialog$1.Close,
|
|
1297
|
+
{
|
|
1298
|
+
"data-slot": "sheet-close",
|
|
1299
|
+
render: /* @__PURE__ */ jsx(
|
|
1300
|
+
Button,
|
|
1301
|
+
{
|
|
1302
|
+
variant: "ghost",
|
|
1303
|
+
className: "absolute top-3 right-3",
|
|
1304
|
+
size: "icon-sm"
|
|
1305
|
+
}
|
|
1306
|
+
),
|
|
1307
|
+
children: [
|
|
1308
|
+
/* @__PURE__ */ jsx(XIcon, {}),
|
|
1309
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
1310
|
+
]
|
|
1311
|
+
}
|
|
1312
|
+
)
|
|
1313
|
+
]
|
|
1314
|
+
}
|
|
1315
|
+
)
|
|
1316
|
+
] });
|
|
1317
|
+
}
|
|
1318
|
+
function SheetHeader({ className, ...props }) {
|
|
1319
|
+
return /* @__PURE__ */ jsx(
|
|
1320
|
+
"div",
|
|
1321
|
+
{
|
|
1322
|
+
"data-slot": "sheet-header",
|
|
1323
|
+
className: cn("flex flex-col gap-0.5 p-4", className),
|
|
1324
|
+
...props
|
|
1325
|
+
}
|
|
1326
|
+
);
|
|
1327
|
+
}
|
|
1328
|
+
function SheetFooter({ className, ...props }) {
|
|
1329
|
+
return /* @__PURE__ */ jsx(
|
|
1330
|
+
"div",
|
|
1331
|
+
{
|
|
1332
|
+
"data-slot": "sheet-footer",
|
|
1333
|
+
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
1334
|
+
...props
|
|
1335
|
+
}
|
|
1336
|
+
);
|
|
1337
|
+
}
|
|
1338
|
+
function SheetTitle({ className, ...props }) {
|
|
1339
|
+
return /* @__PURE__ */ jsx(
|
|
1340
|
+
Dialog$1.Title,
|
|
1341
|
+
{
|
|
1342
|
+
"data-slot": "sheet-title",
|
|
1343
|
+
className: cn(
|
|
1344
|
+
"cn-font-heading text-base font-medium text-foreground",
|
|
1345
|
+
className
|
|
1346
|
+
),
|
|
1347
|
+
...props
|
|
1348
|
+
}
|
|
1349
|
+
);
|
|
1350
|
+
}
|
|
1351
|
+
function SheetDescription({
|
|
1352
|
+
className,
|
|
1353
|
+
...props
|
|
1354
|
+
}) {
|
|
1355
|
+
return /* @__PURE__ */ jsx(
|
|
1356
|
+
Dialog$1.Description,
|
|
1357
|
+
{
|
|
1358
|
+
"data-slot": "sheet-description",
|
|
1359
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
1360
|
+
...props
|
|
1361
|
+
}
|
|
1362
|
+
);
|
|
1363
|
+
}
|
|
1364
|
+
var MOBILE_BREAKPOINT = 768;
|
|
1365
|
+
function useIsMobile() {
|
|
1366
|
+
const [isMobile, setIsMobile] = React12.useState(void 0);
|
|
1367
|
+
React12.useEffect(() => {
|
|
1368
|
+
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
1369
|
+
const onChange = () => {
|
|
1370
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
1371
|
+
};
|
|
1372
|
+
mql.addEventListener("change", onChange);
|
|
1373
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
1374
|
+
return () => mql.removeEventListener("change", onChange);
|
|
1375
|
+
}, []);
|
|
1376
|
+
return !!isMobile;
|
|
1377
|
+
}
|
|
1378
|
+
function Skeleton({ className, ...props }) {
|
|
1379
|
+
return /* @__PURE__ */ jsx(
|
|
1380
|
+
"div",
|
|
1381
|
+
{
|
|
1382
|
+
"data-slot": "skeleton",
|
|
1383
|
+
className: cn("animate-pulse rounded-md bg-muted", className),
|
|
1384
|
+
...props
|
|
1385
|
+
}
|
|
1386
|
+
);
|
|
1387
|
+
}
|
|
1388
|
+
function TooltipProvider({
|
|
1389
|
+
delay = 0,
|
|
1390
|
+
...props
|
|
1391
|
+
}) {
|
|
1392
|
+
return /* @__PURE__ */ jsx(
|
|
1393
|
+
Tooltip$1.Provider,
|
|
1394
|
+
{
|
|
1395
|
+
"data-slot": "tooltip-provider",
|
|
1396
|
+
delay,
|
|
1397
|
+
...props
|
|
1398
|
+
}
|
|
1399
|
+
);
|
|
1400
|
+
}
|
|
1401
|
+
function Tooltip({ ...props }) {
|
|
1402
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Root, { "data-slot": "tooltip", ...props });
|
|
1403
|
+
}
|
|
1404
|
+
function TooltipTrigger({ ...props }) {
|
|
1405
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
1406
|
+
}
|
|
1407
|
+
function TooltipContent({
|
|
1408
|
+
className,
|
|
1409
|
+
side = "top",
|
|
1410
|
+
sideOffset = 4,
|
|
1411
|
+
align = "center",
|
|
1412
|
+
alignOffset = 0,
|
|
1413
|
+
children,
|
|
1414
|
+
...props
|
|
1415
|
+
}) {
|
|
1416
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
1417
|
+
Tooltip$1.Positioner,
|
|
1418
|
+
{
|
|
1419
|
+
align,
|
|
1420
|
+
alignOffset,
|
|
1421
|
+
side,
|
|
1422
|
+
sideOffset,
|
|
1423
|
+
className: "isolate z-50",
|
|
1424
|
+
children: /* @__PURE__ */ jsxs(
|
|
1425
|
+
Tooltip$1.Popup,
|
|
1426
|
+
{
|
|
1427
|
+
"data-slot": "tooltip-content",
|
|
1428
|
+
className: cn(
|
|
1429
|
+
"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
1430
|
+
className
|
|
1431
|
+
),
|
|
1432
|
+
...props,
|
|
1433
|
+
children: [
|
|
1434
|
+
children,
|
|
1435
|
+
/* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })
|
|
1436
|
+
]
|
|
1437
|
+
}
|
|
1438
|
+
)
|
|
1439
|
+
}
|
|
1440
|
+
) });
|
|
1441
|
+
}
|
|
1442
|
+
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
1443
|
+
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
1444
|
+
var SIDEBAR_WIDTH = "16rem";
|
|
1445
|
+
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
1446
|
+
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
1447
|
+
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
1448
|
+
var SidebarContext = React12.createContext(null);
|
|
1449
|
+
function useSidebar() {
|
|
1450
|
+
const context = React12.useContext(SidebarContext);
|
|
1451
|
+
if (!context) {
|
|
1452
|
+
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
1453
|
+
}
|
|
1454
|
+
return context;
|
|
1455
|
+
}
|
|
1456
|
+
function SidebarProvider({
|
|
1457
|
+
defaultOpen = true,
|
|
1458
|
+
open: openProp,
|
|
1459
|
+
onOpenChange: setOpenProp,
|
|
1460
|
+
className,
|
|
1461
|
+
style,
|
|
1462
|
+
children,
|
|
1463
|
+
...props
|
|
1464
|
+
}) {
|
|
1465
|
+
const isMobile = useIsMobile();
|
|
1466
|
+
const [openMobile, setOpenMobile] = React12.useState(false);
|
|
1467
|
+
const [_open, _setOpen] = React12.useState(defaultOpen);
|
|
1468
|
+
const open = openProp ?? _open;
|
|
1469
|
+
const setOpen = React12.useCallback(
|
|
1470
|
+
(value) => {
|
|
1471
|
+
const openState = typeof value === "function" ? value(open) : value;
|
|
1472
|
+
if (setOpenProp) {
|
|
1473
|
+
setOpenProp(openState);
|
|
1474
|
+
} else {
|
|
1475
|
+
_setOpen(openState);
|
|
1476
|
+
}
|
|
1477
|
+
document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
|
|
1478
|
+
},
|
|
1479
|
+
[setOpenProp, open]
|
|
1480
|
+
);
|
|
1481
|
+
const toggleSidebar = React12.useCallback(() => {
|
|
1482
|
+
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
1483
|
+
}, [isMobile, setOpen, setOpenMobile]);
|
|
1484
|
+
React12.useEffect(() => {
|
|
1485
|
+
const handleKeyDown = (event) => {
|
|
1486
|
+
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
1487
|
+
event.preventDefault();
|
|
1488
|
+
toggleSidebar();
|
|
1489
|
+
}
|
|
1490
|
+
};
|
|
1491
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
1492
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
1493
|
+
}, [toggleSidebar]);
|
|
1494
|
+
const state = open ? "expanded" : "collapsed";
|
|
1495
|
+
const contextValue = React12.useMemo(
|
|
1496
|
+
() => ({
|
|
1497
|
+
state,
|
|
1498
|
+
open,
|
|
1499
|
+
setOpen,
|
|
1500
|
+
isMobile,
|
|
1501
|
+
openMobile,
|
|
1502
|
+
setOpenMobile,
|
|
1503
|
+
toggleSidebar
|
|
1504
|
+
}),
|
|
1505
|
+
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
1506
|
+
);
|
|
1507
|
+
return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
1508
|
+
"div",
|
|
1509
|
+
{
|
|
1510
|
+
"data-slot": "sidebar-wrapper",
|
|
1511
|
+
style: {
|
|
1512
|
+
"--sidebar-width": SIDEBAR_WIDTH,
|
|
1513
|
+
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
1514
|
+
...style
|
|
1515
|
+
},
|
|
1516
|
+
className: cn(
|
|
1517
|
+
"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",
|
|
1518
|
+
className
|
|
1519
|
+
),
|
|
1520
|
+
...props,
|
|
1521
|
+
children
|
|
1522
|
+
}
|
|
1523
|
+
) });
|
|
1524
|
+
}
|
|
1525
|
+
function Sidebar({
|
|
1526
|
+
side = "left",
|
|
1527
|
+
variant = "sidebar",
|
|
1528
|
+
collapsible = "offcanvas",
|
|
1529
|
+
className,
|
|
1530
|
+
children,
|
|
1531
|
+
dir,
|
|
1532
|
+
...props
|
|
1533
|
+
}) {
|
|
1534
|
+
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
1535
|
+
if (collapsible === "none") {
|
|
1536
|
+
return /* @__PURE__ */ jsx(
|
|
1537
|
+
"div",
|
|
1538
|
+
{
|
|
1539
|
+
"data-slot": "sidebar",
|
|
1540
|
+
className: cn(
|
|
1541
|
+
"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
|
|
1542
|
+
className
|
|
1543
|
+
),
|
|
1544
|
+
...props,
|
|
1545
|
+
children
|
|
1546
|
+
}
|
|
1547
|
+
);
|
|
1548
|
+
}
|
|
1549
|
+
if (isMobile) {
|
|
1550
|
+
return /* @__PURE__ */ jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs(
|
|
1551
|
+
SheetContent,
|
|
1552
|
+
{
|
|
1553
|
+
dir,
|
|
1554
|
+
"data-sidebar": "sidebar",
|
|
1555
|
+
"data-slot": "sidebar",
|
|
1556
|
+
"data-mobile": "true",
|
|
1557
|
+
className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
|
|
1558
|
+
style: {
|
|
1559
|
+
"--sidebar-width": SIDEBAR_WIDTH_MOBILE
|
|
1560
|
+
},
|
|
1561
|
+
side,
|
|
1562
|
+
children: [
|
|
1563
|
+
/* @__PURE__ */ jsxs(SheetHeader, { className: "sr-only", children: [
|
|
1564
|
+
/* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }),
|
|
1565
|
+
/* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
1566
|
+
] }),
|
|
1567
|
+
/* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col", children })
|
|
1568
|
+
]
|
|
1569
|
+
}
|
|
1570
|
+
) });
|
|
1571
|
+
}
|
|
1572
|
+
return /* @__PURE__ */ jsxs(
|
|
1573
|
+
"div",
|
|
1574
|
+
{
|
|
1575
|
+
className: "group peer hidden text-sidebar-foreground md:block",
|
|
1576
|
+
"data-state": state,
|
|
1577
|
+
"data-collapsible": state === "collapsed" ? collapsible : "",
|
|
1578
|
+
"data-variant": variant,
|
|
1579
|
+
"data-side": side,
|
|
1580
|
+
"data-slot": "sidebar",
|
|
1581
|
+
children: [
|
|
1582
|
+
/* @__PURE__ */ jsx(
|
|
1583
|
+
"div",
|
|
1584
|
+
{
|
|
1585
|
+
"data-slot": "sidebar-gap",
|
|
1586
|
+
className: cn(
|
|
1587
|
+
"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
|
|
1588
|
+
"group-data-[collapsible=offcanvas]:w-0",
|
|
1589
|
+
"group-data-[side=right]:rotate-180",
|
|
1590
|
+
variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
|
|
1591
|
+
)
|
|
1592
|
+
}
|
|
1593
|
+
),
|
|
1594
|
+
/* @__PURE__ */ jsx(
|
|
1595
|
+
"div",
|
|
1596
|
+
{
|
|
1597
|
+
"data-slot": "sidebar-container",
|
|
1598
|
+
"data-side": side,
|
|
1599
|
+
className: cn(
|
|
1600
|
+
"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex",
|
|
1601
|
+
// Adjust the padding for floating and inset variants.
|
|
1602
|
+
variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
|
|
1603
|
+
className
|
|
1604
|
+
),
|
|
1605
|
+
...props,
|
|
1606
|
+
children: /* @__PURE__ */ jsx(
|
|
1607
|
+
"div",
|
|
1608
|
+
{
|
|
1609
|
+
"data-sidebar": "sidebar",
|
|
1610
|
+
"data-slot": "sidebar-inner",
|
|
1611
|
+
className: "flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",
|
|
1612
|
+
children
|
|
1613
|
+
}
|
|
1614
|
+
)
|
|
1615
|
+
}
|
|
1616
|
+
)
|
|
1617
|
+
]
|
|
1618
|
+
}
|
|
1619
|
+
);
|
|
1620
|
+
}
|
|
1621
|
+
function SidebarTrigger({
|
|
1622
|
+
className,
|
|
1623
|
+
onClick,
|
|
1624
|
+
...props
|
|
1625
|
+
}) {
|
|
1626
|
+
const { toggleSidebar } = useSidebar();
|
|
1627
|
+
return /* @__PURE__ */ jsxs(
|
|
1628
|
+
Button,
|
|
1629
|
+
{
|
|
1630
|
+
"data-sidebar": "trigger",
|
|
1631
|
+
"data-slot": "sidebar-trigger",
|
|
1632
|
+
variant: "ghost",
|
|
1633
|
+
size: "icon-sm",
|
|
1634
|
+
className: cn(className),
|
|
1635
|
+
onClick: (event) => {
|
|
1636
|
+
onClick?.(event);
|
|
1637
|
+
toggleSidebar();
|
|
1638
|
+
},
|
|
1639
|
+
...props,
|
|
1640
|
+
children: [
|
|
1641
|
+
/* @__PURE__ */ jsx(PanelLeftIcon, { className: "cn-rtl-flip" }),
|
|
1642
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
1643
|
+
]
|
|
1644
|
+
}
|
|
1645
|
+
);
|
|
1646
|
+
}
|
|
1647
|
+
function SidebarRail({ className, ...props }) {
|
|
1648
|
+
const { toggleSidebar } = useSidebar();
|
|
1649
|
+
return /* @__PURE__ */ jsx(
|
|
1650
|
+
"button",
|
|
1651
|
+
{
|
|
1652
|
+
"data-sidebar": "rail",
|
|
1653
|
+
"data-slot": "sidebar-rail",
|
|
1654
|
+
"aria-label": "Toggle Sidebar",
|
|
1655
|
+
tabIndex: -1,
|
|
1656
|
+
onClick: toggleSidebar,
|
|
1657
|
+
title: "Toggle Sidebar",
|
|
1658
|
+
className: cn(
|
|
1659
|
+
"absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2",
|
|
1660
|
+
"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
|
|
1661
|
+
"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
|
|
1662
|
+
"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar",
|
|
1663
|
+
"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
|
|
1664
|
+
"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
|
|
1665
|
+
className
|
|
1666
|
+
),
|
|
1667
|
+
...props
|
|
1668
|
+
}
|
|
1669
|
+
);
|
|
1670
|
+
}
|
|
1671
|
+
function SidebarInset({ className, ...props }) {
|
|
1672
|
+
return /* @__PURE__ */ jsx(
|
|
1673
|
+
"main",
|
|
1674
|
+
{
|
|
1675
|
+
"data-slot": "sidebar-inset",
|
|
1676
|
+
className: cn(
|
|
1677
|
+
"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
|
|
1678
|
+
className
|
|
1679
|
+
),
|
|
1680
|
+
...props
|
|
1681
|
+
}
|
|
1682
|
+
);
|
|
1683
|
+
}
|
|
1684
|
+
function SidebarInput({
|
|
1685
|
+
className,
|
|
1686
|
+
...props
|
|
1687
|
+
}) {
|
|
1688
|
+
return /* @__PURE__ */ jsx(
|
|
1689
|
+
Input,
|
|
1690
|
+
{
|
|
1691
|
+
"data-slot": "sidebar-input",
|
|
1692
|
+
"data-sidebar": "input",
|
|
1693
|
+
className: cn("h-8 w-full bg-background shadow-none", className),
|
|
1694
|
+
...props
|
|
1695
|
+
}
|
|
1696
|
+
);
|
|
1697
|
+
}
|
|
1698
|
+
function SidebarHeader({ className, ...props }) {
|
|
1699
|
+
return /* @__PURE__ */ jsx(
|
|
1700
|
+
"div",
|
|
1701
|
+
{
|
|
1702
|
+
"data-slot": "sidebar-header",
|
|
1703
|
+
"data-sidebar": "header",
|
|
1704
|
+
className: cn("flex flex-col gap-2 p-2", className),
|
|
1705
|
+
...props
|
|
1706
|
+
}
|
|
1707
|
+
);
|
|
1708
|
+
}
|
|
1709
|
+
function SidebarFooter({ className, ...props }) {
|
|
1710
|
+
return /* @__PURE__ */ jsx(
|
|
1711
|
+
"div",
|
|
1712
|
+
{
|
|
1713
|
+
"data-slot": "sidebar-footer",
|
|
1714
|
+
"data-sidebar": "footer",
|
|
1715
|
+
className: cn("flex flex-col gap-2 p-2", className),
|
|
1716
|
+
...props
|
|
1717
|
+
}
|
|
1718
|
+
);
|
|
1719
|
+
}
|
|
1720
|
+
function SidebarSeparator({
|
|
1721
|
+
className,
|
|
1722
|
+
...props
|
|
1723
|
+
}) {
|
|
1724
|
+
return /* @__PURE__ */ jsx(
|
|
1725
|
+
Separator,
|
|
1726
|
+
{
|
|
1727
|
+
"data-slot": "sidebar-separator",
|
|
1728
|
+
"data-sidebar": "separator",
|
|
1729
|
+
className: cn("mx-2 w-auto bg-sidebar-border", className),
|
|
1730
|
+
...props
|
|
1731
|
+
}
|
|
1732
|
+
);
|
|
1733
|
+
}
|
|
1734
|
+
function SidebarContent({ className, ...props }) {
|
|
1735
|
+
return /* @__PURE__ */ jsx(
|
|
1736
|
+
"div",
|
|
1737
|
+
{
|
|
1738
|
+
"data-slot": "sidebar-content",
|
|
1739
|
+
"data-sidebar": "content",
|
|
1740
|
+
className: cn(
|
|
1741
|
+
"no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
|
|
1742
|
+
className
|
|
1743
|
+
),
|
|
1744
|
+
...props
|
|
1745
|
+
}
|
|
1746
|
+
);
|
|
1747
|
+
}
|
|
1748
|
+
function SidebarGroup({ className, ...props }) {
|
|
1749
|
+
return /* @__PURE__ */ jsx(
|
|
1750
|
+
"div",
|
|
1751
|
+
{
|
|
1752
|
+
"data-slot": "sidebar-group",
|
|
1753
|
+
"data-sidebar": "group",
|
|
1754
|
+
className: cn("relative flex w-full min-w-0 flex-col p-2", className),
|
|
1755
|
+
...props
|
|
1756
|
+
}
|
|
1757
|
+
);
|
|
1758
|
+
}
|
|
1759
|
+
function SidebarGroupLabel({
|
|
1760
|
+
className,
|
|
1761
|
+
render,
|
|
1762
|
+
...props
|
|
1763
|
+
}) {
|
|
1764
|
+
return useRender({
|
|
1765
|
+
defaultTagName: "div",
|
|
1766
|
+
props: mergeProps(
|
|
1767
|
+
{
|
|
1768
|
+
className: cn(
|
|
1769
|
+
"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
|
|
1770
|
+
className
|
|
1771
|
+
)
|
|
1772
|
+
},
|
|
1773
|
+
props
|
|
1774
|
+
),
|
|
1775
|
+
render,
|
|
1776
|
+
state: {
|
|
1777
|
+
slot: "sidebar-group-label",
|
|
1778
|
+
sidebar: "group-label"
|
|
1779
|
+
}
|
|
1780
|
+
});
|
|
1781
|
+
}
|
|
1782
|
+
function SidebarGroupAction({
|
|
1783
|
+
className,
|
|
1784
|
+
render,
|
|
1785
|
+
...props
|
|
1786
|
+
}) {
|
|
1787
|
+
return useRender({
|
|
1788
|
+
defaultTagName: "button",
|
|
1789
|
+
props: mergeProps(
|
|
1790
|
+
{
|
|
1791
|
+
className: cn(
|
|
1792
|
+
"absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",
|
|
1793
|
+
className
|
|
1794
|
+
)
|
|
1795
|
+
},
|
|
1796
|
+
props
|
|
1797
|
+
),
|
|
1798
|
+
render,
|
|
1799
|
+
state: {
|
|
1800
|
+
slot: "sidebar-group-action",
|
|
1801
|
+
sidebar: "group-action"
|
|
1802
|
+
}
|
|
1803
|
+
});
|
|
1804
|
+
}
|
|
1805
|
+
function SidebarGroupContent({
|
|
1806
|
+
className,
|
|
1807
|
+
...props
|
|
1808
|
+
}) {
|
|
1809
|
+
return /* @__PURE__ */ jsx(
|
|
1810
|
+
"div",
|
|
1811
|
+
{
|
|
1812
|
+
"data-slot": "sidebar-group-content",
|
|
1813
|
+
"data-sidebar": "group-content",
|
|
1814
|
+
className: cn("w-full text-sm", className),
|
|
1815
|
+
...props
|
|
1816
|
+
}
|
|
1817
|
+
);
|
|
1818
|
+
}
|
|
1819
|
+
function SidebarMenu({ className, ...props }) {
|
|
1820
|
+
return /* @__PURE__ */ jsx(
|
|
1821
|
+
"ul",
|
|
1822
|
+
{
|
|
1823
|
+
"data-slot": "sidebar-menu",
|
|
1824
|
+
"data-sidebar": "menu",
|
|
1825
|
+
className: cn("flex w-full min-w-0 flex-col gap-0", className),
|
|
1826
|
+
...props
|
|
1827
|
+
}
|
|
1828
|
+
);
|
|
1829
|
+
}
|
|
1830
|
+
function SidebarMenuItem({ className, ...props }) {
|
|
1831
|
+
return /* @__PURE__ */ jsx(
|
|
1832
|
+
"li",
|
|
1833
|
+
{
|
|
1834
|
+
"data-slot": "sidebar-menu-item",
|
|
1835
|
+
"data-sidebar": "menu-item",
|
|
1836
|
+
className: cn("group/menu-item relative", className),
|
|
1837
|
+
...props
|
|
1838
|
+
}
|
|
1839
|
+
);
|
|
1840
|
+
}
|
|
1841
|
+
var sidebarMenuButtonVariants = cva(
|
|
1842
|
+
"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",
|
|
1843
|
+
{
|
|
1844
|
+
variants: {
|
|
1845
|
+
variant: {
|
|
1846
|
+
default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
1847
|
+
outline: "bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"
|
|
1848
|
+
},
|
|
1849
|
+
size: {
|
|
1850
|
+
default: "h-8 text-sm",
|
|
1851
|
+
sm: "h-7 text-xs",
|
|
1852
|
+
lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
|
|
1853
|
+
}
|
|
1854
|
+
},
|
|
1855
|
+
defaultVariants: {
|
|
1856
|
+
variant: "default",
|
|
1857
|
+
size: "default"
|
|
1858
|
+
}
|
|
1859
|
+
}
|
|
1860
|
+
);
|
|
1861
|
+
function SidebarMenuButton({
|
|
1862
|
+
render,
|
|
1863
|
+
isActive = false,
|
|
1864
|
+
variant = "default",
|
|
1865
|
+
size = "default",
|
|
1866
|
+
tooltip,
|
|
1867
|
+
className,
|
|
1868
|
+
...props
|
|
1869
|
+
}) {
|
|
1870
|
+
const { isMobile, state } = useSidebar();
|
|
1871
|
+
const comp = useRender({
|
|
1872
|
+
defaultTagName: "button",
|
|
1873
|
+
props: mergeProps(
|
|
1874
|
+
{
|
|
1875
|
+
className: cn(sidebarMenuButtonVariants({ variant, size }), className)
|
|
1876
|
+
},
|
|
1877
|
+
props
|
|
1878
|
+
),
|
|
1879
|
+
render: !tooltip ? render : /* @__PURE__ */ jsx(TooltipTrigger, { render }),
|
|
1880
|
+
state: {
|
|
1881
|
+
slot: "sidebar-menu-button",
|
|
1882
|
+
sidebar: "menu-button",
|
|
1883
|
+
size,
|
|
1884
|
+
active: isActive
|
|
1885
|
+
}
|
|
1886
|
+
});
|
|
1887
|
+
if (!tooltip) {
|
|
1888
|
+
return comp;
|
|
1889
|
+
}
|
|
1890
|
+
if (typeof tooltip === "string") {
|
|
1891
|
+
tooltip = {
|
|
1892
|
+
children: tooltip
|
|
1893
|
+
};
|
|
1894
|
+
}
|
|
1895
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
1896
|
+
comp,
|
|
1897
|
+
/* @__PURE__ */ jsx(
|
|
1898
|
+
TooltipContent,
|
|
1899
|
+
{
|
|
1900
|
+
side: "right",
|
|
1901
|
+
align: "center",
|
|
1902
|
+
hidden: state !== "collapsed" || isMobile,
|
|
1903
|
+
...tooltip
|
|
1904
|
+
}
|
|
1905
|
+
)
|
|
1906
|
+
] });
|
|
1907
|
+
}
|
|
1908
|
+
function SidebarMenuAction({
|
|
1909
|
+
className,
|
|
1910
|
+
render,
|
|
1911
|
+
showOnHover = false,
|
|
1912
|
+
...props
|
|
1913
|
+
}) {
|
|
1914
|
+
return useRender({
|
|
1915
|
+
defaultTagName: "button",
|
|
1916
|
+
props: mergeProps(
|
|
1917
|
+
{
|
|
1918
|
+
className: cn(
|
|
1919
|
+
"absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",
|
|
1920
|
+
showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0",
|
|
1921
|
+
className
|
|
1922
|
+
)
|
|
1923
|
+
},
|
|
1924
|
+
props
|
|
1925
|
+
),
|
|
1926
|
+
render,
|
|
1927
|
+
state: {
|
|
1928
|
+
slot: "sidebar-menu-action",
|
|
1929
|
+
sidebar: "menu-action"
|
|
1930
|
+
}
|
|
1931
|
+
});
|
|
1932
|
+
}
|
|
1933
|
+
function SidebarMenuBadge({
|
|
1934
|
+
className,
|
|
1935
|
+
...props
|
|
1936
|
+
}) {
|
|
1937
|
+
return /* @__PURE__ */ jsx(
|
|
1938
|
+
"div",
|
|
1939
|
+
{
|
|
1940
|
+
"data-slot": "sidebar-menu-badge",
|
|
1941
|
+
"data-sidebar": "menu-badge",
|
|
1942
|
+
className: cn(
|
|
1943
|
+
"pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground",
|
|
1944
|
+
className
|
|
1945
|
+
),
|
|
1946
|
+
...props
|
|
1947
|
+
}
|
|
1948
|
+
);
|
|
1949
|
+
}
|
|
1950
|
+
function SidebarMenuSkeleton({
|
|
1951
|
+
className,
|
|
1952
|
+
showIcon = false,
|
|
1953
|
+
...props
|
|
1954
|
+
}) {
|
|
1955
|
+
const [width] = React12.useState(() => {
|
|
1956
|
+
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
1957
|
+
});
|
|
1958
|
+
return /* @__PURE__ */ jsxs(
|
|
1959
|
+
"div",
|
|
1960
|
+
{
|
|
1961
|
+
"data-slot": "sidebar-menu-skeleton",
|
|
1962
|
+
"data-sidebar": "menu-skeleton",
|
|
1963
|
+
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
1964
|
+
...props,
|
|
1965
|
+
children: [
|
|
1966
|
+
showIcon && /* @__PURE__ */ jsx(
|
|
1967
|
+
Skeleton,
|
|
1968
|
+
{
|
|
1969
|
+
className: "size-4 rounded-md",
|
|
1970
|
+
"data-sidebar": "menu-skeleton-icon"
|
|
1971
|
+
}
|
|
1972
|
+
),
|
|
1973
|
+
/* @__PURE__ */ jsx(
|
|
1974
|
+
Skeleton,
|
|
1975
|
+
{
|
|
1976
|
+
className: "h-4 max-w-(--skeleton-width) flex-1",
|
|
1977
|
+
"data-sidebar": "menu-skeleton-text",
|
|
1978
|
+
style: {
|
|
1979
|
+
"--skeleton-width": width
|
|
1980
|
+
}
|
|
1981
|
+
}
|
|
1982
|
+
)
|
|
1983
|
+
]
|
|
1984
|
+
}
|
|
1985
|
+
);
|
|
1986
|
+
}
|
|
1987
|
+
function SidebarMenuSub({ className, ...props }) {
|
|
1988
|
+
return /* @__PURE__ */ jsx(
|
|
1989
|
+
"ul",
|
|
1990
|
+
{
|
|
1991
|
+
"data-slot": "sidebar-menu-sub",
|
|
1992
|
+
"data-sidebar": "menu-sub",
|
|
1993
|
+
className: cn(
|
|
1994
|
+
"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden",
|
|
1995
|
+
className
|
|
1996
|
+
),
|
|
1997
|
+
...props
|
|
1998
|
+
}
|
|
1999
|
+
);
|
|
2000
|
+
}
|
|
2001
|
+
function SidebarMenuSubItem({
|
|
2002
|
+
className,
|
|
2003
|
+
...props
|
|
2004
|
+
}) {
|
|
2005
|
+
return /* @__PURE__ */ jsx(
|
|
2006
|
+
"li",
|
|
2007
|
+
{
|
|
2008
|
+
"data-slot": "sidebar-menu-sub-item",
|
|
2009
|
+
"data-sidebar": "menu-sub-item",
|
|
2010
|
+
className: cn("group/menu-sub-item relative", className),
|
|
2011
|
+
...props
|
|
2012
|
+
}
|
|
2013
|
+
);
|
|
2014
|
+
}
|
|
2015
|
+
function SidebarMenuSubButton({
|
|
2016
|
+
render,
|
|
2017
|
+
size = "md",
|
|
2018
|
+
isActive = false,
|
|
2019
|
+
className,
|
|
2020
|
+
...props
|
|
2021
|
+
}) {
|
|
2022
|
+
return useRender({
|
|
2023
|
+
defaultTagName: "a",
|
|
2024
|
+
props: mergeProps(
|
|
2025
|
+
{
|
|
2026
|
+
className: cn(
|
|
2027
|
+
"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
|
|
2028
|
+
className
|
|
2029
|
+
)
|
|
2030
|
+
},
|
|
2031
|
+
props
|
|
2032
|
+
),
|
|
2033
|
+
render,
|
|
2034
|
+
state: {
|
|
2035
|
+
slot: "sidebar-menu-sub-button",
|
|
2036
|
+
sidebar: "menu-sub-button",
|
|
2037
|
+
size,
|
|
2038
|
+
active: isActive
|
|
2039
|
+
}
|
|
2040
|
+
});
|
|
2041
|
+
}
|
|
2042
|
+
function Table({ className, ...props }) {
|
|
2043
|
+
return /* @__PURE__ */ jsx(
|
|
2044
|
+
"div",
|
|
2045
|
+
{
|
|
2046
|
+
"data-slot": "table-container",
|
|
2047
|
+
className: "relative w-full overflow-x-auto",
|
|
2048
|
+
children: /* @__PURE__ */ jsx(
|
|
2049
|
+
"table",
|
|
2050
|
+
{
|
|
2051
|
+
"data-slot": "table",
|
|
2052
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
2053
|
+
...props
|
|
2054
|
+
}
|
|
2055
|
+
)
|
|
2056
|
+
}
|
|
2057
|
+
);
|
|
2058
|
+
}
|
|
2059
|
+
function TableHeader({ className, ...props }) {
|
|
2060
|
+
return /* @__PURE__ */ jsx(
|
|
2061
|
+
"thead",
|
|
2062
|
+
{
|
|
2063
|
+
"data-slot": "table-header",
|
|
2064
|
+
className: cn("[&_tr]:border-b", className),
|
|
2065
|
+
...props
|
|
2066
|
+
}
|
|
2067
|
+
);
|
|
2068
|
+
}
|
|
2069
|
+
function TableBody({ className, ...props }) {
|
|
2070
|
+
return /* @__PURE__ */ jsx(
|
|
2071
|
+
"tbody",
|
|
2072
|
+
{
|
|
2073
|
+
"data-slot": "table-body",
|
|
2074
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
2075
|
+
...props
|
|
2076
|
+
}
|
|
2077
|
+
);
|
|
2078
|
+
}
|
|
2079
|
+
function TableFooter({ className, ...props }) {
|
|
2080
|
+
return /* @__PURE__ */ jsx(
|
|
2081
|
+
"tfoot",
|
|
2082
|
+
{
|
|
2083
|
+
"data-slot": "table-footer",
|
|
2084
|
+
className: cn(
|
|
2085
|
+
"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
|
|
2086
|
+
className
|
|
2087
|
+
),
|
|
2088
|
+
...props
|
|
2089
|
+
}
|
|
2090
|
+
);
|
|
2091
|
+
}
|
|
2092
|
+
function TableRow({ className, ...props }) {
|
|
2093
|
+
return /* @__PURE__ */ jsx(
|
|
2094
|
+
"tr",
|
|
2095
|
+
{
|
|
2096
|
+
"data-slot": "table-row",
|
|
2097
|
+
className: cn(
|
|
2098
|
+
"border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",
|
|
2099
|
+
className
|
|
2100
|
+
),
|
|
2101
|
+
...props
|
|
2102
|
+
}
|
|
2103
|
+
);
|
|
2104
|
+
}
|
|
2105
|
+
function TableHead({ className, ...props }) {
|
|
2106
|
+
return /* @__PURE__ */ jsx(
|
|
2107
|
+
"th",
|
|
2108
|
+
{
|
|
2109
|
+
"data-slot": "table-head",
|
|
2110
|
+
className: cn(
|
|
2111
|
+
"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",
|
|
2112
|
+
className
|
|
2113
|
+
),
|
|
2114
|
+
...props
|
|
2115
|
+
}
|
|
2116
|
+
);
|
|
2117
|
+
}
|
|
2118
|
+
function TableCell({ className, ...props }) {
|
|
2119
|
+
return /* @__PURE__ */ jsx(
|
|
2120
|
+
"td",
|
|
2121
|
+
{
|
|
2122
|
+
"data-slot": "table-cell",
|
|
2123
|
+
className: cn(
|
|
2124
|
+
"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",
|
|
2125
|
+
className
|
|
2126
|
+
),
|
|
2127
|
+
...props
|
|
2128
|
+
}
|
|
2129
|
+
);
|
|
2130
|
+
}
|
|
2131
|
+
function TableCaption({
|
|
2132
|
+
className,
|
|
2133
|
+
...props
|
|
2134
|
+
}) {
|
|
2135
|
+
return /* @__PURE__ */ jsx(
|
|
2136
|
+
"caption",
|
|
2137
|
+
{
|
|
2138
|
+
"data-slot": "table-caption",
|
|
2139
|
+
className: cn("mt-4 text-sm text-muted-foreground", className),
|
|
2140
|
+
...props
|
|
2141
|
+
}
|
|
2142
|
+
);
|
|
2143
|
+
}
|
|
2144
|
+
var toggleVariants = cva(
|
|
2145
|
+
"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground 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 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
2146
|
+
{
|
|
2147
|
+
variants: {
|
|
2148
|
+
variant: {
|
|
2149
|
+
default: "bg-transparent",
|
|
2150
|
+
outline: "border border-input bg-transparent hover:bg-muted"
|
|
2151
|
+
},
|
|
2152
|
+
size: {
|
|
2153
|
+
default: "h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
2154
|
+
sm: "h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
2155
|
+
lg: "h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2"
|
|
2156
|
+
}
|
|
2157
|
+
},
|
|
2158
|
+
defaultVariants: {
|
|
2159
|
+
variant: "default",
|
|
2160
|
+
size: "default"
|
|
2161
|
+
}
|
|
2162
|
+
}
|
|
2163
|
+
);
|
|
2164
|
+
function Toggle({
|
|
2165
|
+
className,
|
|
2166
|
+
variant = "default",
|
|
2167
|
+
size = "default",
|
|
2168
|
+
...props
|
|
2169
|
+
}) {
|
|
2170
|
+
return /* @__PURE__ */ jsx(
|
|
2171
|
+
Toggle$1,
|
|
2172
|
+
{
|
|
2173
|
+
"data-slot": "toggle",
|
|
2174
|
+
className: cn(toggleVariants({ variant, size, className })),
|
|
2175
|
+
...props
|
|
2176
|
+
}
|
|
2177
|
+
);
|
|
2178
|
+
}
|
|
2179
|
+
var ToggleGroupContext = React12.createContext({
|
|
2180
|
+
size: "default",
|
|
2181
|
+
variant: "default",
|
|
2182
|
+
spacing: 2,
|
|
2183
|
+
orientation: "horizontal"
|
|
2184
|
+
});
|
|
2185
|
+
function ToggleGroup({
|
|
2186
|
+
className,
|
|
2187
|
+
variant,
|
|
2188
|
+
size,
|
|
2189
|
+
spacing = 2,
|
|
2190
|
+
orientation = "horizontal",
|
|
2191
|
+
children,
|
|
2192
|
+
...props
|
|
2193
|
+
}) {
|
|
2194
|
+
return /* @__PURE__ */ jsx(
|
|
2195
|
+
ToggleGroup$1,
|
|
2196
|
+
{
|
|
2197
|
+
"data-slot": "toggle-group",
|
|
2198
|
+
"data-variant": variant,
|
|
2199
|
+
"data-size": size,
|
|
2200
|
+
"data-spacing": spacing,
|
|
2201
|
+
"data-orientation": orientation,
|
|
2202
|
+
style: { "--gap": spacing },
|
|
2203
|
+
className: cn(
|
|
2204
|
+
"group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch",
|
|
2205
|
+
className
|
|
2206
|
+
),
|
|
2207
|
+
...props,
|
|
2208
|
+
children: /* @__PURE__ */ jsx(
|
|
2209
|
+
ToggleGroupContext.Provider,
|
|
2210
|
+
{
|
|
2211
|
+
value: { variant, size, spacing, orientation },
|
|
2212
|
+
children
|
|
2213
|
+
}
|
|
2214
|
+
)
|
|
2215
|
+
}
|
|
2216
|
+
);
|
|
2217
|
+
}
|
|
2218
|
+
function ToggleGroupItem({
|
|
2219
|
+
className,
|
|
2220
|
+
children,
|
|
2221
|
+
variant = "default",
|
|
2222
|
+
size = "default",
|
|
2223
|
+
...props
|
|
2224
|
+
}) {
|
|
2225
|
+
const context = React12.useContext(ToggleGroupContext);
|
|
2226
|
+
return /* @__PURE__ */ jsx(
|
|
2227
|
+
Toggle$1,
|
|
2228
|
+
{
|
|
2229
|
+
"data-slot": "toggle-group-item",
|
|
2230
|
+
"data-variant": context.variant || variant,
|
|
2231
|
+
"data-size": context.size || size,
|
|
2232
|
+
"data-spacing": context.spacing,
|
|
2233
|
+
className: cn(
|
|
2234
|
+
"shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t",
|
|
2235
|
+
toggleVariants({
|
|
2236
|
+
variant: context.variant || variant,
|
|
2237
|
+
size: context.size || size
|
|
2238
|
+
}),
|
|
2239
|
+
className
|
|
2240
|
+
),
|
|
2241
|
+
...props,
|
|
2242
|
+
children
|
|
2243
|
+
}
|
|
2244
|
+
);
|
|
2245
|
+
}
|
|
2246
|
+
|
|
2247
|
+
export { Badge, Button, Calendar, CalendarDayButton, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, toggleVariants, useIsMobile, useSidebar };
|
|
2248
|
+
//# sourceMappingURL=chunk-WQZYXXQW.js.map
|
|
2249
|
+
//# sourceMappingURL=chunk-WQZYXXQW.js.map
|