@alexgorbatchev/shadcn 0.0.30 → 0.0.32
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 +26 -22
- package/THIRD_PARTY_NOTICES.md +10 -0
- package/dist/{chunk-0ewzb2ax.js → chunk-0kyfh857.js} +1 -1
- package/dist/chunk-1xncv9gb.js +19 -0
- package/dist/chunk-2dxa9enk.js +98 -0
- package/dist/{chunk-8wfy03bp.js → chunk-6kwf9644.js} +1 -1
- package/dist/{chunk-82e7fbmq.js → chunk-9vyg3854.js} +2 -1
- package/dist/chunk-c6g2rbhv.js +3940 -0
- package/dist/chunk-dzvsjw59.js +200 -0
- package/dist/{chunk-g238nezp.js → chunk-pg9rhbgm.js} +4 -2
- package/dist/{chunk-5da3rzn5.js → chunk-s0typ7hv.js} +1 -1
- package/dist/chunk-tch86q2w.js +6050 -0
- package/dist/{chunk-eehfrrdz.js → chunk-tnnf8ydf.js} +1 -15
- package/dist/chunk-yfr9syen.js +363 -0
- package/dist/{chunk-53q730zs.js → chunk-zdt8xxzy.js} +3 -0
- package/dist/components/Alert.d.ts +1 -1
- package/dist/components/Table.d.ts +1 -0
- package/dist/components/assistant-ui/elements/Chart.js +2 -2
- package/dist/components/assistant-ui/elements/GuardrailNotice.js +2 -2
- package/dist/components/assistant-ui/elements/OptionList.js +3 -2
- package/dist/components/assistant-ui/elements/QuestionFlow.js +4 -3
- package/dist/components/assistant-ui/index.js +8 -7
- package/dist/components/assistant-ui/native/Sources.d.ts +1 -1
- package/dist/components/carousel/index.js +15 -204
- package/dist/components/chart/AnalyticsChart.d.ts +3 -2
- package/dist/components/chart/Chart.d.ts +1 -1
- package/dist/components/chart/index.js +24 -10
- package/dist/components/chart/types.d.ts +1 -0
- package/dist/components/data-grid/DataGrid.d.ts +48 -9
- package/dist/components/data-grid/DataGridColumnOptions.d.ts +14 -0
- package/dist/components/data-grid/DataGridColumnResizer.d.ts +13 -0
- package/dist/components/data-grid/getDataGridColumnSizeVariables.d.ts +6 -0
- package/dist/components/data-grid/hooks/useDataGridColumnSizes.d.ts +8 -0
- package/dist/components/data-grid/index.d.ts +3 -2
- package/dist/components/data-grid/index.js +124 -199
- package/dist/components/data-grid/moveDataGridColumn.d.ts +5 -0
- package/dist/components/event-calendar/index.js +4 -2
- package/dist/components/json-render/JsonAccordion.d.ts +3 -0
- package/dist/components/json-render/JsonAlert.d.ts +3 -0
- package/dist/components/json-render/JsonAvatar.d.ts +3 -0
- package/dist/components/json-render/JsonBadge.d.ts +3 -0
- package/dist/components/json-render/JsonButton.d.ts +3 -0
- package/dist/components/json-render/JsonButtonGroup.d.ts +3 -0
- package/dist/components/json-render/JsonCard.d.ts +3 -0
- package/dist/components/json-render/JsonCarousel.d.ts +3 -0
- package/dist/components/json-render/JsonCheckbox.d.ts +3 -0
- package/dist/components/json-render/JsonCollapsible.d.ts +3 -0
- package/dist/components/json-render/JsonDialog.d.ts +3 -0
- package/dist/components/json-render/JsonDrawer.d.ts +3 -0
- package/dist/components/json-render/JsonDropdownMenu.d.ts +3 -0
- package/dist/components/json-render/JsonGrid.d.ts +3 -0
- package/dist/components/json-render/JsonHeading.d.ts +3 -0
- package/dist/components/json-render/JsonImage.d.ts +3 -0
- package/dist/components/json-render/JsonInput.d.ts +3 -0
- package/dist/components/json-render/JsonLink.d.ts +3 -0
- package/dist/components/json-render/JsonPagination.d.ts +3 -0
- package/dist/components/json-render/JsonPopover.d.ts +3 -0
- package/dist/components/json-render/JsonProgress.d.ts +3 -0
- package/dist/components/json-render/JsonRadio.d.ts +3 -0
- package/dist/components/json-render/JsonSelect.d.ts +3 -0
- package/dist/components/json-render/JsonSeparator.d.ts +3 -0
- package/dist/components/json-render/JsonSkeleton.d.ts +3 -0
- package/dist/components/json-render/JsonSlider.d.ts +3 -0
- package/dist/components/json-render/JsonSpinner.d.ts +3 -0
- package/dist/components/json-render/JsonStack.d.ts +3 -0
- package/dist/components/json-render/JsonSwitch.d.ts +3 -0
- package/dist/components/json-render/JsonTable.d.ts +3 -0
- package/dist/components/json-render/JsonTabs.d.ts +3 -0
- package/dist/components/json-render/JsonText.d.ts +3 -0
- package/dist/components/json-render/JsonTextarea.d.ts +3 -0
- package/dist/components/json-render/JsonToggle.d.ts +3 -0
- package/dist/components/json-render/JsonToggleGroup.d.ts +3 -0
- package/dist/components/json-render/JsonTooltip.d.ts +3 -0
- package/dist/components/json-render/catalog.d.ts +548 -0
- package/dist/components/json-render/catalog.js +6 -0
- package/dist/components/json-render/getPaginationRange.d.ts +1 -0
- package/dist/components/json-render/index.d.ts +39 -0
- package/dist/components/json-render/index.js +1254 -0
- package/dist/components/virtual-data-grid/VirtualDataGrid.d.ts +26 -0
- package/dist/components/virtual-data-grid/index.d.ts +2 -0
- package/dist/components/virtual-data-grid/index.js +88 -0
- package/dist/components/virtual-table/index.js +4 -96
- package/dist/index.d.ts +1 -0
- package/dist/index.js +569 -4189
- package/licenses/json-render-APACHE-2.0.txt +201 -0
- package/llms/components/data-display/AnalyticsChart.md +34 -0
- package/llms/components/data-display/DataGridColumnOptions.md +22 -0
- package/llms/components/data-display/JsonRender.md +476 -0
- package/llms/components/data-display/VirtualDataGrid.md +71 -0
- package/llms/components/feedback/Alert.md +20 -4
- package/llms/setup.md +26 -22
- package/llms.txt +3 -0
- package/package.json +24 -2
package/dist/index.js
CHANGED
|
@@ -1,25 +1,238 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
ButtonLink2,
|
|
3
|
+
Accordion2,
|
|
4
|
+
AccordionItem2,
|
|
5
|
+
AccordionTrigger2,
|
|
6
|
+
AccordionContent2,
|
|
7
|
+
Combobox2,
|
|
8
|
+
ComboboxValue2,
|
|
9
|
+
ComboboxTrigger2,
|
|
10
|
+
ComboboxInput2,
|
|
11
|
+
ComboboxContent2,
|
|
12
|
+
ComboboxList2,
|
|
13
|
+
ComboboxItem2,
|
|
14
|
+
ComboboxGroup2,
|
|
15
|
+
ComboboxLabel2,
|
|
16
|
+
ComboboxCollection2,
|
|
17
|
+
ComboboxEmpty2,
|
|
18
|
+
ComboboxSeparator2,
|
|
19
|
+
ComboboxChips2,
|
|
20
|
+
ComboboxChip2,
|
|
21
|
+
ComboboxChipsInput2,
|
|
22
|
+
EmptyState3,
|
|
23
|
+
PageMessage2,
|
|
24
|
+
JsonViewer2,
|
|
25
|
+
AlertDialog2,
|
|
26
|
+
AlertDialogTrigger2,
|
|
27
|
+
AlertDialogPortal2,
|
|
28
|
+
AlertDialogOverlay2,
|
|
29
|
+
AlertDialogContent2,
|
|
30
|
+
AlertDialogHeader2,
|
|
31
|
+
AlertDialogFooter2,
|
|
32
|
+
AlertDialogMedia2,
|
|
33
|
+
AlertDialogTitle2,
|
|
34
|
+
AlertDialogDescription2,
|
|
35
|
+
AlertDialogAction2,
|
|
36
|
+
AlertDialogCancel2,
|
|
37
|
+
Select2,
|
|
38
|
+
SelectGroup2,
|
|
39
|
+
SelectValue2,
|
|
40
|
+
SelectTrigger2,
|
|
41
|
+
SelectContent2,
|
|
42
|
+
SelectLabel2,
|
|
43
|
+
SelectItem2,
|
|
44
|
+
SelectSeparator2,
|
|
45
|
+
SelectScrollUpButton2,
|
|
46
|
+
SelectScrollDownButton2,
|
|
47
|
+
DensityProvider2,
|
|
48
|
+
collectLayoutViolations2,
|
|
49
|
+
LayoutGuard2,
|
|
50
|
+
ScrollGuard2,
|
|
51
|
+
ThemeProvider2,
|
|
52
|
+
useComboboxAnchor2,
|
|
53
|
+
AspectRatio2,
|
|
54
|
+
Breadcrumb2,
|
|
55
|
+
BreadcrumbList2,
|
|
56
|
+
BreadcrumbItem2,
|
|
57
|
+
BreadcrumbLink2,
|
|
58
|
+
BreadcrumbPage2,
|
|
59
|
+
BreadcrumbSeparator2,
|
|
60
|
+
BreadcrumbEllipsis2,
|
|
61
|
+
buttonGroupVariants2,
|
|
62
|
+
ButtonGroup2,
|
|
63
|
+
ButtonGroupText2,
|
|
64
|
+
ButtonGroupSeparator2,
|
|
65
|
+
ItemGroup2,
|
|
66
|
+
ItemSeparator2,
|
|
67
|
+
Item2,
|
|
68
|
+
ItemMedia2,
|
|
69
|
+
ItemContent2,
|
|
70
|
+
ItemTitle2,
|
|
71
|
+
ItemDescription2,
|
|
72
|
+
ItemActions2,
|
|
73
|
+
ItemHeader2,
|
|
74
|
+
ItemFooter2,
|
|
75
|
+
Pagination2,
|
|
76
|
+
PaginationContent2,
|
|
77
|
+
PaginationItem2,
|
|
78
|
+
PaginationLink2,
|
|
79
|
+
PaginationPrevious2,
|
|
80
|
+
PaginationNext2,
|
|
81
|
+
PaginationEllipsis2,
|
|
82
|
+
ScrollArea2,
|
|
83
|
+
ScrollBar2,
|
|
84
|
+
Drawer2,
|
|
85
|
+
DrawerTrigger2,
|
|
86
|
+
DrawerPortal2,
|
|
87
|
+
DrawerClose2,
|
|
88
|
+
DrawerOverlay2,
|
|
89
|
+
DrawerSwipeHandle2,
|
|
90
|
+
DrawerContent2,
|
|
91
|
+
DrawerHeader2,
|
|
92
|
+
DrawerFooter2,
|
|
93
|
+
DrawerTitle2,
|
|
94
|
+
DrawerDescription2,
|
|
95
|
+
ContextMenu2,
|
|
96
|
+
ContextMenuPortal2,
|
|
97
|
+
ContextMenuTrigger2,
|
|
98
|
+
ContextMenuContent2,
|
|
99
|
+
ContextMenuGroup2,
|
|
100
|
+
ContextMenuLabel2,
|
|
101
|
+
ContextMenuItem2,
|
|
102
|
+
ContextMenuSub2,
|
|
103
|
+
ContextMenuSubTrigger2,
|
|
104
|
+
ContextMenuSubContent2,
|
|
105
|
+
ContextMenuCheckboxItem2,
|
|
106
|
+
ContextMenuRadioGroup2,
|
|
107
|
+
ContextMenuRadioItem2,
|
|
108
|
+
ContextMenuSeparator2,
|
|
109
|
+
ContextMenuShortcut2,
|
|
110
|
+
Menubar2,
|
|
111
|
+
MenubarMenu2,
|
|
112
|
+
MenubarGroup2,
|
|
113
|
+
MenubarPortal2,
|
|
114
|
+
MenubarTrigger2,
|
|
115
|
+
MenubarContent2,
|
|
116
|
+
MenubarItem2,
|
|
117
|
+
MenubarCheckboxItem2,
|
|
118
|
+
MenubarRadioGroup2,
|
|
119
|
+
MenubarRadioItem2,
|
|
120
|
+
MenubarLabel2,
|
|
121
|
+
MenubarSeparator2,
|
|
122
|
+
MenubarShortcut2,
|
|
123
|
+
MenubarSub2,
|
|
124
|
+
MenubarSubTrigger2,
|
|
125
|
+
MenubarSubContent2,
|
|
126
|
+
NavigationMenu2,
|
|
127
|
+
NavigationMenuList2,
|
|
128
|
+
NavigationMenuItem2,
|
|
129
|
+
navigationMenuTriggerStyle2,
|
|
130
|
+
NavigationMenuTrigger2,
|
|
131
|
+
NavigationMenuContent2,
|
|
132
|
+
NavigationMenuPositioner2,
|
|
133
|
+
NavigationMenuLink2,
|
|
134
|
+
NavigationMenuIndicator2,
|
|
135
|
+
ToastProvider2,
|
|
136
|
+
ToastPortal2,
|
|
137
|
+
ToastViewport2,
|
|
138
|
+
Toast2,
|
|
139
|
+
ToastContent2,
|
|
140
|
+
ToastTitle2,
|
|
141
|
+
ToastDescription2,
|
|
142
|
+
ToastAction2,
|
|
143
|
+
ToastClose2,
|
|
144
|
+
ToastToaster2,
|
|
145
|
+
createToastManager2,
|
|
146
|
+
useToastManager2,
|
|
147
|
+
markerVariants2,
|
|
148
|
+
Marker2,
|
|
149
|
+
MarkerIcon2,
|
|
150
|
+
MarkerContent2,
|
|
151
|
+
BubbleGroup2,
|
|
152
|
+
Bubble2,
|
|
153
|
+
BubbleContent2,
|
|
154
|
+
BubbleReactions2,
|
|
155
|
+
MessageGroup2,
|
|
156
|
+
Message2,
|
|
157
|
+
MessageAvatar2,
|
|
158
|
+
MessageContent2,
|
|
159
|
+
MessageHeader2,
|
|
160
|
+
MessageFooter2,
|
|
161
|
+
Attachment2,
|
|
162
|
+
AttachmentMedia2,
|
|
163
|
+
AttachmentContent2,
|
|
164
|
+
AttachmentTitle2,
|
|
165
|
+
AttachmentDescription2,
|
|
166
|
+
AttachmentActions2,
|
|
167
|
+
AttachmentAction2,
|
|
168
|
+
AttachmentTrigger2,
|
|
169
|
+
AttachmentGroup2,
|
|
170
|
+
InlineEdit2,
|
|
171
|
+
StarRating2,
|
|
172
|
+
ConfirmationDialog2,
|
|
173
|
+
ImagePicker2,
|
|
174
|
+
NumberField2,
|
|
175
|
+
NumberFieldGroup2,
|
|
176
|
+
NumberFieldInput2,
|
|
177
|
+
NumberFieldDecrement2,
|
|
178
|
+
NumberFieldIncrement2,
|
|
179
|
+
NumberFieldScrubArea2,
|
|
180
|
+
NumberFieldScrubAreaCursor2,
|
|
181
|
+
Meter2,
|
|
182
|
+
MeterLabel2,
|
|
183
|
+
MeterValue2,
|
|
184
|
+
MeterTrack2,
|
|
185
|
+
MeterIndicator2,
|
|
186
|
+
Stepper2,
|
|
187
|
+
StepperList2,
|
|
188
|
+
StepperTrigger2,
|
|
189
|
+
StepperIndicator2,
|
|
190
|
+
StepperContent2,
|
|
191
|
+
AppShell2,
|
|
192
|
+
PageHeader2,
|
|
193
|
+
WorkspaceSwitcher2,
|
|
194
|
+
AccountMenu2,
|
|
195
|
+
StatCard2,
|
|
196
|
+
AuthForm2,
|
|
197
|
+
SettingsSection2,
|
|
198
|
+
TagInput2,
|
|
199
|
+
FilterBar2,
|
|
200
|
+
BarList2,
|
|
201
|
+
StatusTracker2,
|
|
202
|
+
DashboardLayout2,
|
|
203
|
+
BillingUsage2
|
|
204
|
+
} from "./chunk-c6g2rbhv.js";
|
|
8
205
|
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
206
|
+
Tabs2,
|
|
207
|
+
tabsListVariants2,
|
|
208
|
+
TabsList2,
|
|
209
|
+
TabsTrigger2,
|
|
210
|
+
TabsContent2,
|
|
211
|
+
DragDropPreview2,
|
|
212
|
+
DragDropProvider2,
|
|
213
|
+
useDragDrop2,
|
|
214
|
+
useDragSource2,
|
|
215
|
+
DragSource2,
|
|
216
|
+
useDropTarget2,
|
|
217
|
+
DropTarget2,
|
|
218
|
+
Kanban2
|
|
219
|
+
} from "./chunk-6grcm62s.js";
|
|
12
220
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
221
|
+
Toolbar2,
|
|
222
|
+
ToolbarButton2,
|
|
223
|
+
ToolbarLink2,
|
|
224
|
+
ToolbarInput2,
|
|
225
|
+
ToolbarGroup2,
|
|
226
|
+
ToolbarSeparator2
|
|
227
|
+
} from "./chunk-83zjj4jd.js";
|
|
15
228
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
229
|
+
NativeSelect2,
|
|
230
|
+
NativeSelectOption2,
|
|
231
|
+
NativeSelectOptGroup2
|
|
232
|
+
} from "./chunk-r9qrb6b6.js";
|
|
19
233
|
import {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
} from "./chunk-jpvw9xqy.js";
|
|
234
|
+
Slider2
|
|
235
|
+
} from "./chunk-644cnngf.js";
|
|
23
236
|
import {
|
|
24
237
|
DropdownMenu2,
|
|
25
238
|
DropdownMenuPortal2,
|
|
@@ -38,25 +251,35 @@ import {
|
|
|
38
251
|
DropdownMenuShortcut2
|
|
39
252
|
} from "./chunk-d4bm5rzy.js";
|
|
40
253
|
import {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
} from "./chunk-
|
|
48
|
-
import {
|
|
49
|
-
Skeleton2
|
|
50
|
-
} from "./chunk-d70rcwk7.js";
|
|
254
|
+
Empty2,
|
|
255
|
+
EmptyHeader2,
|
|
256
|
+
EmptyMedia2,
|
|
257
|
+
EmptyTitle2,
|
|
258
|
+
EmptyDescription2,
|
|
259
|
+
EmptyContent2
|
|
260
|
+
} from "./chunk-9de1htr5.js";
|
|
51
261
|
import {
|
|
52
|
-
|
|
53
|
-
|
|
262
|
+
Table2,
|
|
263
|
+
TableHeader2,
|
|
264
|
+
TableBody2,
|
|
265
|
+
TableFooter2,
|
|
266
|
+
TableRow2,
|
|
267
|
+
TableHead2,
|
|
268
|
+
TableCell2,
|
|
269
|
+
TableColumnGroup2,
|
|
270
|
+
TableColumn2,
|
|
271
|
+
TableCaption2
|
|
272
|
+
} from "./chunk-zte6pw69.js";
|
|
54
273
|
import {
|
|
55
|
-
|
|
56
|
-
|
|
274
|
+
Alert2,
|
|
275
|
+
AlertTitle2,
|
|
276
|
+
AlertDescription2,
|
|
277
|
+
AlertAction2
|
|
278
|
+
} from "./chunk-zdt8xxzy.js";
|
|
57
279
|
import {
|
|
58
|
-
|
|
59
|
-
|
|
280
|
+
RadioGroup2,
|
|
281
|
+
RadioGroupItem2
|
|
282
|
+
} from "./chunk-wndqbss9.js";
|
|
60
283
|
import {
|
|
61
284
|
FieldSet2,
|
|
62
285
|
FieldLegend2,
|
|
@@ -69,92 +292,6 @@ import {
|
|
|
69
292
|
FieldSeparator2,
|
|
70
293
|
FieldError2
|
|
71
294
|
} from "./chunk-6jpz5geq.js";
|
|
72
|
-
import {
|
|
73
|
-
Dialog2,
|
|
74
|
-
DialogTrigger2,
|
|
75
|
-
DialogPortal2,
|
|
76
|
-
DialogClose2,
|
|
77
|
-
DialogOverlay2,
|
|
78
|
-
DialogContent2,
|
|
79
|
-
DialogHeader2,
|
|
80
|
-
DialogFooter2,
|
|
81
|
-
DialogTitle2,
|
|
82
|
-
DialogDescription2
|
|
83
|
-
} from "./chunk-ex1zk6ta.js";
|
|
84
|
-
import {
|
|
85
|
-
Slider2
|
|
86
|
-
} from "./chunk-644cnngf.js";
|
|
87
|
-
import {
|
|
88
|
-
Switch2
|
|
89
|
-
} from "./chunk-8ye0k6z7.js";
|
|
90
|
-
import {
|
|
91
|
-
Textarea2
|
|
92
|
-
} from "./chunk-hz9azhzx.js";
|
|
93
|
-
import {
|
|
94
|
-
TooltipProvider2,
|
|
95
|
-
Tooltip2,
|
|
96
|
-
TooltipTrigger2,
|
|
97
|
-
TooltipContent2
|
|
98
|
-
} from "./chunk-mz3e810d.js";
|
|
99
|
-
import {
|
|
100
|
-
RadioGroup2,
|
|
101
|
-
RadioGroupItem2
|
|
102
|
-
} from "./chunk-wndqbss9.js";
|
|
103
|
-
import {
|
|
104
|
-
Card2,
|
|
105
|
-
CardHeader2,
|
|
106
|
-
CardTitle2,
|
|
107
|
-
CardDescription2,
|
|
108
|
-
CardAction2,
|
|
109
|
-
CardContent2,
|
|
110
|
-
CardFooter2
|
|
111
|
-
} from "./chunk-bygq5yqf.js";
|
|
112
|
-
import {
|
|
113
|
-
InputGroup2,
|
|
114
|
-
InputGroupAddon2,
|
|
115
|
-
InputGroupButton2,
|
|
116
|
-
InputGroupText2,
|
|
117
|
-
InputGroupInput2,
|
|
118
|
-
InputGroupTextarea2
|
|
119
|
-
} from "./chunk-57jj9v64.js";
|
|
120
|
-
import {
|
|
121
|
-
Tabs2,
|
|
122
|
-
tabsListVariants2,
|
|
123
|
-
TabsList2,
|
|
124
|
-
TabsTrigger2,
|
|
125
|
-
TabsContent2,
|
|
126
|
-
DragDropPreview2,
|
|
127
|
-
DragDropProvider2,
|
|
128
|
-
useDragDrop2,
|
|
129
|
-
useDragSource2,
|
|
130
|
-
DragSource2,
|
|
131
|
-
useDropTarget2,
|
|
132
|
-
DropTarget2,
|
|
133
|
-
Kanban2
|
|
134
|
-
} from "./chunk-6grcm62s.js";
|
|
135
|
-
import {
|
|
136
|
-
badgeVariants2,
|
|
137
|
-
Badge2
|
|
138
|
-
} from "./chunk-wjx6zf94.js";
|
|
139
|
-
import {
|
|
140
|
-
Empty2,
|
|
141
|
-
EmptyHeader2,
|
|
142
|
-
EmptyMedia2,
|
|
143
|
-
EmptyTitle2,
|
|
144
|
-
EmptyDescription2,
|
|
145
|
-
EmptyContent2
|
|
146
|
-
} from "./chunk-9de1htr5.js";
|
|
147
|
-
import {
|
|
148
|
-
Checkbox2,
|
|
149
|
-
Spinner2
|
|
150
|
-
} from "./chunk-eehfrrdz.js";
|
|
151
|
-
import {
|
|
152
|
-
ThemeContext,
|
|
153
|
-
useTheme2
|
|
154
|
-
} from "./chunk-1j2hz3w9.js";
|
|
155
|
-
import {
|
|
156
|
-
useMediaQuery
|
|
157
|
-
} from "./chunk-k99h6evz.js";
|
|
158
295
|
import {
|
|
159
296
|
toggleVariants2,
|
|
160
297
|
Toggle2,
|
|
@@ -162,19 +299,18 @@ import {
|
|
|
162
299
|
ToggleGroupItem2
|
|
163
300
|
} from "./chunk-aexby8h3.js";
|
|
164
301
|
import {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
AlertDescription2,
|
|
168
|
-
AlertAction2
|
|
169
|
-
} from "./chunk-53q730zs.js";
|
|
302
|
+
Spinner2
|
|
303
|
+
} from "./chunk-1xncv9gb.js";
|
|
170
304
|
import {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
305
|
+
Checkbox2
|
|
306
|
+
} from "./chunk-tnnf8ydf.js";
|
|
307
|
+
import {
|
|
308
|
+
Kbd2,
|
|
309
|
+
KbdGroup2
|
|
310
|
+
} from "./chunk-vyve5wf3.js";
|
|
311
|
+
import {
|
|
312
|
+
Switch2
|
|
313
|
+
} from "./chunk-8ye0k6z7.js";
|
|
178
314
|
import {
|
|
179
315
|
Progress2,
|
|
180
316
|
ProgressTrack2,
|
|
@@ -183,36 +319,14 @@ import {
|
|
|
183
319
|
ProgressValue2
|
|
184
320
|
} from "./chunk-5j39rehg.js";
|
|
185
321
|
import {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
TableFooter2,
|
|
195
|
-
TableRow2,
|
|
196
|
-
TableHead2,
|
|
197
|
-
TableCell2,
|
|
198
|
-
TableColumnGroup2,
|
|
199
|
-
TableColumn2,
|
|
200
|
-
TableCaption2
|
|
201
|
-
} from "./chunk-zte6pw69.js";
|
|
202
|
-
import {
|
|
203
|
-
NativeSelect2,
|
|
204
|
-
NativeSelectOption2,
|
|
205
|
-
NativeSelectOptGroup2
|
|
206
|
-
} from "./chunk-r9qrb6b6.js";
|
|
207
|
-
import {
|
|
208
|
-
Kbd2,
|
|
209
|
-
KbdGroup2
|
|
210
|
-
} from "./chunk-vyve5wf3.js";
|
|
211
|
-
import {
|
|
212
|
-
HoverCard2,
|
|
213
|
-
HoverCardTrigger2,
|
|
214
|
-
HoverCardContent2
|
|
215
|
-
} from "./chunk-hh43wg05.js";
|
|
322
|
+
Card2,
|
|
323
|
+
CardHeader2,
|
|
324
|
+
CardTitle2,
|
|
325
|
+
CardDescription2,
|
|
326
|
+
CardAction2,
|
|
327
|
+
CardContent2,
|
|
328
|
+
CardFooter2
|
|
329
|
+
} from "./chunk-bygq5yqf.js";
|
|
216
330
|
import {
|
|
217
331
|
Sheet2,
|
|
218
332
|
SheetTrigger2,
|
|
@@ -248,3866 +362,132 @@ import {
|
|
|
248
362
|
SidebarMenuSubButton2
|
|
249
363
|
} from "./chunk-8vfh3ez0.js";
|
|
250
364
|
import {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
} from "./chunk-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
}
|
|
344
|
-
// src/components/Combobox.tsx
|
|
345
|
-
import { useDirection } from "@base-ui/react/direction-provider";
|
|
346
|
-
import { Combobox as ComboboxPrimitive } from "@base-ui/react/combobox";
|
|
347
|
-
import { ChevronDownIcon as ChevronDownIcon2, XIcon, CheckIcon } from "lucide-react";
|
|
348
|
-
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
349
|
-
var Combobox = ComboboxPrimitive.Root;
|
|
350
|
-
function ComboboxValue({ ...props }) {
|
|
351
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Value, {
|
|
352
|
-
...props
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
function ComboboxTrigger({ density, className, children, ...props }) {
|
|
356
|
-
return /* @__PURE__ */ jsxs2(ComboboxPrimitive.Trigger, {
|
|
357
|
-
"data-density": density,
|
|
358
|
-
"data-slot": "combobox-trigger",
|
|
359
|
-
className: (state) => cn2("[&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
360
|
-
...props,
|
|
361
|
-
children: [
|
|
362
|
-
children,
|
|
363
|
-
/* @__PURE__ */ jsx3(ChevronDownIcon2, {
|
|
364
|
-
className: "pointer-events-none size-4 text-muted-foreground"
|
|
365
|
-
})
|
|
366
|
-
]
|
|
367
|
-
});
|
|
368
|
-
}
|
|
369
|
-
function ComboboxClear({ density, className, ...props }) {
|
|
370
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Clear, {
|
|
371
|
-
"data-density": density,
|
|
372
|
-
"data-slot": "combobox-clear",
|
|
373
|
-
render: /* @__PURE__ */ jsx3(InputGroupButton2, {
|
|
374
|
-
variant: "ghost",
|
|
375
|
-
size: "icon-xs"
|
|
376
|
-
}),
|
|
377
|
-
className: (state) => cn2(typeof className === "function" ? className(state) : className),
|
|
378
|
-
...props,
|
|
379
|
-
children: /* @__PURE__ */ jsx3(XIcon, {
|
|
380
|
-
className: "pointer-events-none"
|
|
381
|
-
})
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
function ComboboxInput({
|
|
385
|
-
density,
|
|
386
|
-
className,
|
|
387
|
-
children,
|
|
388
|
-
disabled = false,
|
|
389
|
-
showTrigger = true,
|
|
390
|
-
showClear = false,
|
|
391
|
-
frameClassName,
|
|
392
|
-
triggerLabel = "Open popup",
|
|
393
|
-
clearLabel = "Clear selection",
|
|
394
|
-
...props
|
|
395
|
-
}) {
|
|
396
|
-
return /* @__PURE__ */ jsxs2(InputGroup2, {
|
|
397
|
-
density,
|
|
398
|
-
className: cn2("w-auto", frameClassName),
|
|
399
|
-
children: [
|
|
400
|
-
/* @__PURE__ */ jsx3(ComboboxPrimitive.Input, {
|
|
401
|
-
disabled,
|
|
402
|
-
className,
|
|
403
|
-
render: /* @__PURE__ */ jsx3(InputGroupInput2, {}),
|
|
404
|
-
...props
|
|
405
|
-
}),
|
|
406
|
-
/* @__PURE__ */ jsxs2(InputGroupAddon2, {
|
|
407
|
-
align: "inline-end",
|
|
408
|
-
children: [
|
|
409
|
-
showTrigger && /* @__PURE__ */ jsx3(InputGroupButton2, {
|
|
410
|
-
size: "icon-xs",
|
|
411
|
-
variant: "ghost",
|
|
412
|
-
render: /* @__PURE__ */ jsx3(ComboboxTrigger, {}),
|
|
413
|
-
"aria-label": triggerLabel,
|
|
414
|
-
"data-density": density,
|
|
415
|
-
"data-slot": "input-group-button",
|
|
416
|
-
className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent",
|
|
417
|
-
disabled
|
|
418
|
-
}),
|
|
419
|
-
showClear && /* @__PURE__ */ jsx3(ComboboxClear, {
|
|
420
|
-
disabled,
|
|
421
|
-
"aria-label": clearLabel
|
|
422
|
-
})
|
|
423
|
-
]
|
|
424
|
-
}),
|
|
425
|
-
children
|
|
426
|
-
]
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
function ComboboxContent({
|
|
430
|
-
density,
|
|
431
|
-
className,
|
|
432
|
-
side = "bottom",
|
|
433
|
-
sideOffset = 6,
|
|
434
|
-
align = "start",
|
|
435
|
-
alignOffset = 0,
|
|
436
|
-
anchor,
|
|
437
|
-
...props
|
|
438
|
-
}) {
|
|
439
|
-
const resolvedDensity = useDensity(density);
|
|
440
|
-
const direction = useDirection();
|
|
441
|
-
const container = usePortalContainer2();
|
|
442
|
-
const portal = usePortalNode();
|
|
443
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Portal, {
|
|
444
|
-
container,
|
|
445
|
-
ref: portal.ref,
|
|
446
|
-
children: /* @__PURE__ */ jsx3(PortalProvider2, {
|
|
447
|
-
container: portal.node,
|
|
448
|
-
children: /* @__PURE__ */ jsx3(ComboboxPrimitive.Positioner, {
|
|
449
|
-
side,
|
|
450
|
-
sideOffset,
|
|
451
|
-
align,
|
|
452
|
-
alignOffset,
|
|
453
|
-
anchor,
|
|
454
|
-
className: "isolate ",
|
|
455
|
-
children: /* @__PURE__ */ jsx3(ComboboxPrimitive.Popup, {
|
|
456
|
-
dir: direction,
|
|
457
|
-
"data-density": resolvedDensity,
|
|
458
|
-
"data-slot": "combobox-content",
|
|
459
|
-
"data-chips": !!anchor,
|
|
460
|
-
className: (state) => cn2("group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground border border-frame-edge shadow-frame duration-120 data-[chips=true]:min-w-(--anchor-width) *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-control *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", typeof className === "function" ? className(state) : className),
|
|
461
|
-
...props
|
|
462
|
-
})
|
|
463
|
-
})
|
|
464
|
-
})
|
|
465
|
-
});
|
|
466
|
-
}
|
|
467
|
-
function ComboboxList({ density, className, ...props }) {
|
|
468
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.List, {
|
|
469
|
-
"data-density": density,
|
|
470
|
-
"data-slot": "combobox-list",
|
|
471
|
-
className: (state) => cn2("no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0", typeof className === "function" ? className(state) : className),
|
|
472
|
-
...props
|
|
473
|
-
});
|
|
474
|
-
}
|
|
475
|
-
function ComboboxItem({ density, className, children, ...props }) {
|
|
476
|
-
return /* @__PURE__ */ jsxs2(ComboboxPrimitive.Item, {
|
|
477
|
-
"data-density": density,
|
|
478
|
-
"data-slot": "combobox-item",
|
|
479
|
-
className: (state) => cn2("relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pe-8 ps-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**: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", typeof className === "function" ? className(state) : className),
|
|
480
|
-
...props,
|
|
481
|
-
children: [
|
|
482
|
-
children,
|
|
483
|
-
/* @__PURE__ */ jsx3(ComboboxPrimitive.ItemIndicator, {
|
|
484
|
-
render: /* @__PURE__ */ jsx3("span", {
|
|
485
|
-
className: "pointer-events-none absolute end-2 flex size-4 items-center justify-center"
|
|
486
|
-
}),
|
|
487
|
-
children: /* @__PURE__ */ jsx3(CheckIcon, {
|
|
488
|
-
className: "pointer-events-none"
|
|
489
|
-
})
|
|
490
|
-
})
|
|
491
|
-
]
|
|
492
|
-
});
|
|
493
|
-
}
|
|
494
|
-
function ComboboxGroup({ density, className, ...props }) {
|
|
495
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Group, {
|
|
496
|
-
"data-density": density,
|
|
497
|
-
"data-slot": "combobox-group",
|
|
498
|
-
className: (state) => cn2(typeof className === "function" ? className(state) : className),
|
|
499
|
-
...props
|
|
500
|
-
});
|
|
501
|
-
}
|
|
502
|
-
function ComboboxLabel({ density, className, ...props }) {
|
|
503
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.GroupLabel, {
|
|
504
|
-
"data-density": density,
|
|
505
|
-
"data-slot": "combobox-label",
|
|
506
|
-
className: (state) => cn2("px-2 py-1.5 text-xs text-muted-foreground", typeof className === "function" ? className(state) : className),
|
|
507
|
-
...props
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
function ComboboxCollection({ ...props }) {
|
|
511
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Collection, {
|
|
512
|
-
...props
|
|
513
|
-
});
|
|
514
|
-
}
|
|
515
|
-
function ComboboxEmpty({ density, className, ...props }) {
|
|
516
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Empty, {
|
|
517
|
-
"data-density": density,
|
|
518
|
-
"data-slot": "combobox-empty",
|
|
519
|
-
className: (state) => cn2("flex w-full justify-center py-2 empty:p-0 text-center text-sm text-muted-foreground", typeof className === "function" ? className(state) : className),
|
|
520
|
-
...props
|
|
521
|
-
});
|
|
522
|
-
}
|
|
523
|
-
function ComboboxSeparator({ density, className, ...props }) {
|
|
524
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Separator, {
|
|
525
|
-
"data-density": density,
|
|
526
|
-
"data-slot": "combobox-separator",
|
|
527
|
-
className: (state) => cn2("-mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
|
|
528
|
-
...props
|
|
529
|
-
});
|
|
530
|
-
}
|
|
531
|
-
function ComboboxChips({ density, className, ...props }) {
|
|
532
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Chips, {
|
|
533
|
-
"data-density": density,
|
|
534
|
-
"data-slot": "combobox-chips",
|
|
535
|
-
className: (state) => cn2("flex min-h-control flex-wrap items-center gap-1 rounded-sm border border-input bg-transparent bg-clip-padding px-control-x py-px text-sm transition-colors focus-within:border-ring focus-within:ring-1 focus-within:ring-ring has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive has-data-[slot=combobox-chip]:px-1", typeof className === "function" ? className(state) : className),
|
|
536
|
-
...props
|
|
537
|
-
});
|
|
538
|
-
}
|
|
539
|
-
function ComboboxChip({
|
|
540
|
-
density,
|
|
541
|
-
className,
|
|
542
|
-
children,
|
|
543
|
-
showRemove = true,
|
|
544
|
-
removeLabel = "Remove item",
|
|
545
|
-
...props
|
|
546
|
-
}) {
|
|
547
|
-
return /* @__PURE__ */ jsxs2(ComboboxPrimitive.Chip, {
|
|
548
|
-
"data-density": density,
|
|
549
|
-
"data-slot": "combobox-chip",
|
|
550
|
-
className: (state) => cn2("flex h-tag w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pe-0", typeof className === "function" ? className(state) : className),
|
|
551
|
-
...props,
|
|
552
|
-
children: [
|
|
553
|
-
children,
|
|
554
|
-
showRemove && /* @__PURE__ */ jsx3(ComboboxPrimitive.ChipRemove, {
|
|
555
|
-
render: /* @__PURE__ */ jsx3(Button2, {
|
|
556
|
-
variant: "ghost",
|
|
557
|
-
size: "icon-xs"
|
|
558
|
-
}),
|
|
559
|
-
className: "size-tag -ms-1 opacity-50 hover:opacity-100",
|
|
560
|
-
"data-slot": "combobox-chip-remove",
|
|
561
|
-
"aria-label": removeLabel,
|
|
562
|
-
children: /* @__PURE__ */ jsx3(XIcon, {
|
|
563
|
-
className: "pointer-events-none"
|
|
564
|
-
})
|
|
565
|
-
})
|
|
566
|
-
]
|
|
567
|
-
});
|
|
568
|
-
}
|
|
569
|
-
function ComboboxChipsInput({ density, className, ...props }) {
|
|
570
|
-
return /* @__PURE__ */ jsx3(ComboboxPrimitive.Input, {
|
|
571
|
-
"data-density": density,
|
|
572
|
-
"data-slot": "combobox-chip-input",
|
|
573
|
-
className: (state) => cn2("h-tag min-w-16 flex-1 py-0 text-sm leading-none outline-none", typeof className === "function" ? className(state) : className),
|
|
574
|
-
...props
|
|
575
|
-
});
|
|
576
|
-
}
|
|
577
|
-
// src/components/EmptyState.tsx
|
|
578
|
-
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
579
|
-
function EmptyState({ title, description, children }) {
|
|
580
|
-
return /* @__PURE__ */ jsxs3(Empty2, {
|
|
581
|
-
children: [
|
|
582
|
-
/* @__PURE__ */ jsxs3(EmptyHeader2, {
|
|
583
|
-
children: [
|
|
584
|
-
/* @__PURE__ */ jsx4(EmptyTitle2, {
|
|
585
|
-
children: title
|
|
586
|
-
}),
|
|
587
|
-
/* @__PURE__ */ jsx4(EmptyDescription2, {
|
|
588
|
-
children: description
|
|
589
|
-
})
|
|
590
|
-
]
|
|
591
|
-
}),
|
|
592
|
-
children && /* @__PURE__ */ jsx4(EmptyContent2, {
|
|
593
|
-
children
|
|
594
|
-
})
|
|
595
|
-
]
|
|
596
|
-
});
|
|
597
|
-
}
|
|
598
|
-
// src/components/PageMessage.tsx
|
|
599
|
-
import { useId } from "react";
|
|
600
|
-
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
601
|
-
function PageMessage({ title, description, children }) {
|
|
602
|
-
const titleId = useId();
|
|
603
|
-
const descriptionId = useId();
|
|
604
|
-
return /* @__PURE__ */ jsx5("main", {
|
|
605
|
-
"aria-labelledby": titleId,
|
|
606
|
-
"aria-describedby": description == null ? undefined : descriptionId,
|
|
607
|
-
className: "grid min-h-dvh w-full place-items-center bg-background text-foreground",
|
|
608
|
-
children: /* @__PURE__ */ jsxs4(Empty2, {
|
|
609
|
-
children: [
|
|
610
|
-
/* @__PURE__ */ jsxs4(EmptyHeader2, {
|
|
611
|
-
children: [
|
|
612
|
-
/* @__PURE__ */ jsx5(EmptyTitle2, {
|
|
613
|
-
children: /* @__PURE__ */ jsx5("h1", {
|
|
614
|
-
id: titleId,
|
|
615
|
-
children: title
|
|
616
|
-
})
|
|
617
|
-
}),
|
|
618
|
-
description != null && /* @__PURE__ */ jsx5(EmptyDescription2, {
|
|
619
|
-
id: descriptionId,
|
|
620
|
-
children: description
|
|
621
|
-
})
|
|
622
|
-
]
|
|
623
|
-
}),
|
|
624
|
-
children != null && /* @__PURE__ */ jsx5(EmptyContent2, {
|
|
625
|
-
children
|
|
626
|
-
})
|
|
627
|
-
]
|
|
628
|
-
})
|
|
629
|
-
});
|
|
630
|
-
}
|
|
631
|
-
// src/components/JsonViewer.tsx
|
|
632
|
-
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
633
|
-
function JsonViewer({ value, label = "JSON", rows = 12 }) {
|
|
634
|
-
return /* @__PURE__ */ jsx6(Textarea2, {
|
|
635
|
-
readOnly: true,
|
|
636
|
-
rows,
|
|
637
|
-
"aria-label": label,
|
|
638
|
-
value: JSON.stringify(value ?? null, null, 2) ?? "null"
|
|
639
|
-
});
|
|
640
|
-
}
|
|
641
|
-
// src/components/AlertDialog.tsx
|
|
642
|
-
import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
|
|
643
|
-
import { useDirection as useDirection3 } from "@base-ui/react/direction-provider";
|
|
644
|
-
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
645
|
-
"use client";
|
|
646
|
-
function AlertDialog({ ...props }) {
|
|
647
|
-
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Root, {
|
|
648
|
-
"data-slot": "alert-dialog",
|
|
649
|
-
...props
|
|
650
|
-
});
|
|
651
|
-
}
|
|
652
|
-
function AlertDialogTrigger({ ...props }) {
|
|
653
|
-
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Trigger, {
|
|
654
|
-
"data-slot": "alert-dialog-trigger",
|
|
655
|
-
...props
|
|
656
|
-
});
|
|
657
|
-
}
|
|
658
|
-
function AlertDialogPortal({ container, ref, children, ...props }) {
|
|
659
|
-
const resolvedContainer = usePortalContainer2(container);
|
|
660
|
-
const portal = usePortalNode(ref);
|
|
661
|
-
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Portal, {
|
|
662
|
-
"data-slot": "alert-dialog-portal",
|
|
663
|
-
container: resolvedContainer,
|
|
664
|
-
ref: portal.ref,
|
|
665
|
-
...props,
|
|
666
|
-
children: /* @__PURE__ */ jsx7(PortalProvider2, {
|
|
667
|
-
container: portal.node,
|
|
668
|
-
children
|
|
669
|
-
})
|
|
670
|
-
});
|
|
671
|
-
}
|
|
672
|
-
function AlertDialogOverlay({ density, className, ...props }) {
|
|
673
|
-
const resolvedDensity = useDensity(density);
|
|
674
|
-
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Backdrop, {
|
|
675
|
-
"data-density": resolvedDensity,
|
|
676
|
-
"data-slot": "alert-dialog-overlay",
|
|
677
|
-
className: (state) => cn2("fixed inset-0 isolate bg-backdrop duration-120 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", typeof className === "function" ? className(state) : className),
|
|
678
|
-
...props
|
|
679
|
-
});
|
|
680
|
-
}
|
|
681
|
-
function AlertDialogContent({ density, className, size = "default", ...props }) {
|
|
682
|
-
const resolvedDensity = useDensity(density);
|
|
683
|
-
const direction = useDirection3();
|
|
684
|
-
return /* @__PURE__ */ jsxs5(AlertDialogPortal, {
|
|
685
|
-
children: [
|
|
686
|
-
/* @__PURE__ */ jsx7(AlertDialogOverlay, {}),
|
|
687
|
-
/* @__PURE__ */ jsx7(AlertDialogPrimitive.Popup, {
|
|
688
|
-
dir: direction,
|
|
689
|
-
"data-density": resolvedDensity,
|
|
690
|
-
"data-slot": "alert-dialog-content",
|
|
691
|
-
"data-scroll": "none",
|
|
692
|
-
"data-size": size,
|
|
693
|
-
className: (state) => cn2("group/alert-dialog-content fixed top-1/2 left-1/2 grid w-full -translate-x-1/2 -translate-y-1/2 gap-panel rounded-md bg-popover p-panel text-popover-foreground border border-frame-edge shadow-frame duration-120 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", typeof className === "function" ? className(state) : className),
|
|
694
|
-
...props
|
|
695
|
-
})
|
|
696
|
-
]
|
|
697
|
-
});
|
|
698
|
-
}
|
|
699
|
-
function AlertDialogHeader({ density, className, ...props }) {
|
|
700
|
-
return /* @__PURE__ */ jsx7("div", {
|
|
701
|
-
"data-density": density,
|
|
702
|
-
"data-slot": "alert-dialog-header",
|
|
703
|
-
className: cn2("grid grid-rows-[auto_1fr] place-items-center gap-control-gap text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
|
|
704
|
-
...props
|
|
705
|
-
});
|
|
706
|
-
}
|
|
707
|
-
function AlertDialogFooter({ density, className, ...props }) {
|
|
708
|
-
return /* @__PURE__ */ jsx7("div", {
|
|
709
|
-
"data-density": density,
|
|
710
|
-
"data-slot": "alert-dialog-footer",
|
|
711
|
-
className: cn2("-mx-panel -mb-panel flex flex-col-reverse gap-2 rounded-b-md border-t bg-muted/50 p-panel group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className),
|
|
712
|
-
...props
|
|
713
|
-
});
|
|
714
|
-
}
|
|
715
|
-
function AlertDialogMedia({ density, className, ...props }) {
|
|
716
|
-
return /* @__PURE__ */ jsx7("div", {
|
|
717
|
-
"data-density": density,
|
|
718
|
-
"data-slot": "alert-dialog-media",
|
|
719
|
-
className: cn2("mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-control-xs", className),
|
|
720
|
-
...props
|
|
721
|
-
});
|
|
722
|
-
}
|
|
723
|
-
function AlertDialogTitle({ density, className, ...props }) {
|
|
724
|
-
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Title, {
|
|
725
|
-
"data-density": density,
|
|
726
|
-
"data-slot": "alert-dialog-title",
|
|
727
|
-
className: (state) => cn2("text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", typeof className === "function" ? className(state) : className),
|
|
728
|
-
...props
|
|
729
|
-
});
|
|
730
|
-
}
|
|
731
|
-
function AlertDialogDescription({ density, className, ...props }) {
|
|
732
|
-
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Description, {
|
|
733
|
-
"data-density": density,
|
|
734
|
-
"data-slot": "alert-dialog-description",
|
|
735
|
-
className: (state) => cn2("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", typeof className === "function" ? className(state) : className),
|
|
736
|
-
...props
|
|
737
|
-
});
|
|
738
|
-
}
|
|
739
|
-
function AlertDialogAction({ density, className, ...props }) {
|
|
740
|
-
return /* @__PURE__ */ jsx7(Button2, {
|
|
741
|
-
"data-density": density,
|
|
742
|
-
"data-slot": "alert-dialog-action",
|
|
743
|
-
className,
|
|
744
|
-
...props
|
|
745
|
-
});
|
|
746
|
-
}
|
|
747
|
-
function AlertDialogCancel({
|
|
748
|
-
density,
|
|
749
|
-
className,
|
|
750
|
-
variant = "outline",
|
|
751
|
-
size = "default",
|
|
752
|
-
...props
|
|
753
|
-
}) {
|
|
754
|
-
return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Close, {
|
|
755
|
-
"data-density": density,
|
|
756
|
-
"data-slot": "alert-dialog-cancel",
|
|
757
|
-
className,
|
|
758
|
-
render: /* @__PURE__ */ jsx7(Button2, {
|
|
759
|
-
variant,
|
|
760
|
-
size
|
|
761
|
-
}),
|
|
762
|
-
...props
|
|
763
|
-
});
|
|
764
|
-
}
|
|
765
|
-
// src/components/Select.tsx
|
|
766
|
-
import { Select as SelectPrimitive } from "@base-ui/react/select";
|
|
767
|
-
import { useDirection as useDirection4 } from "@base-ui/react/direction-provider";
|
|
768
|
-
import { ChevronDownIcon as ChevronDownIcon3, CheckIcon as CheckIcon2, ChevronUpIcon as ChevronUpIcon2 } from "lucide-react";
|
|
769
|
-
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
770
|
-
"use client";
|
|
771
|
-
var Select = SelectPrimitive.Root;
|
|
772
|
-
function SelectGroup({ density, className, ...props }) {
|
|
773
|
-
return /* @__PURE__ */ jsx8(SelectPrimitive.Group, {
|
|
774
|
-
"data-density": density,
|
|
775
|
-
"data-slot": "select-group",
|
|
776
|
-
className: (state) => cn2("scroll-my-1 p-1", typeof className === "function" ? className(state) : className),
|
|
777
|
-
...props
|
|
778
|
-
});
|
|
779
|
-
}
|
|
780
|
-
function SelectValue({ density, className, ...props }) {
|
|
781
|
-
return /* @__PURE__ */ jsx8(SelectPrimitive.Value, {
|
|
782
|
-
"data-density": density,
|
|
783
|
-
"data-slot": "select-value",
|
|
784
|
-
className: (state) => cn2("flex flex-1 text-start", typeof className === "function" ? className(state) : className),
|
|
785
|
-
...props
|
|
786
|
-
});
|
|
787
|
-
}
|
|
788
|
-
function SelectTrigger({ density, className, size = "default", children, ...props }) {
|
|
789
|
-
return /* @__PURE__ */ jsxs6(SelectPrimitive.Trigger, {
|
|
790
|
-
"data-density": density,
|
|
791
|
-
"data-slot": "select-trigger",
|
|
792
|
-
"data-size": size,
|
|
793
|
-
className: (state) => cn2("flex w-fit items-center justify-between gap-control-gap rounded-sm border border-input bg-transparent py-2 pe-2 ps-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive data-placeholder:text-muted-foreground data-[size=default]:h-control data-[size=sm]:h-control-sm data-[size=sm]:rounded-sm *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-control-gap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
794
|
-
...props,
|
|
795
|
-
children: [
|
|
796
|
-
children,
|
|
797
|
-
/* @__PURE__ */ jsx8(SelectPrimitive.Icon, {
|
|
798
|
-
render: /* @__PURE__ */ jsx8(ChevronDownIcon3, {
|
|
799
|
-
className: "pointer-events-none size-4 text-muted-foreground"
|
|
800
|
-
})
|
|
801
|
-
})
|
|
802
|
-
]
|
|
803
|
-
});
|
|
804
|
-
}
|
|
805
|
-
function SelectContent({
|
|
806
|
-
density,
|
|
807
|
-
className,
|
|
808
|
-
children,
|
|
809
|
-
side = "bottom",
|
|
810
|
-
sideOffset = 4,
|
|
811
|
-
align = "center",
|
|
812
|
-
alignOffset = 0,
|
|
813
|
-
alignItemWithTrigger = true,
|
|
814
|
-
...props
|
|
815
|
-
}) {
|
|
816
|
-
const resolvedDensity = useDensity(density);
|
|
817
|
-
const direction = useDirection4();
|
|
818
|
-
const container = usePortalContainer2();
|
|
819
|
-
const portal = usePortalNode();
|
|
820
|
-
return /* @__PURE__ */ jsx8(SelectPrimitive.Portal, {
|
|
821
|
-
container,
|
|
822
|
-
ref: portal.ref,
|
|
823
|
-
children: /* @__PURE__ */ jsx8(PortalProvider2, {
|
|
824
|
-
container: portal.node,
|
|
825
|
-
children: /* @__PURE__ */ jsx8(SelectPrimitive.Positioner, {
|
|
826
|
-
side,
|
|
827
|
-
sideOffset,
|
|
828
|
-
align,
|
|
829
|
-
alignOffset,
|
|
830
|
-
alignItemWithTrigger,
|
|
831
|
-
className: "isolate ",
|
|
832
|
-
children: /* @__PURE__ */ jsxs6(SelectPrimitive.Popup, {
|
|
833
|
-
dir: direction,
|
|
834
|
-
"data-density": resolvedDensity,
|
|
835
|
-
"data-slot": "select-content",
|
|
836
|
-
"data-align-trigger": alignItemWithTrigger,
|
|
837
|
-
className: (state) => cn2("relative isolate max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover text-popover-foreground border border-frame-edge shadow-frame duration-120 data-[align-trigger=true]:animate-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:animate-none", typeof className === "function" ? className(state) : className),
|
|
838
|
-
...props,
|
|
839
|
-
children: [
|
|
840
|
-
/* @__PURE__ */ jsx8(SelectScrollUpButton, {}),
|
|
841
|
-
/* @__PURE__ */ jsx8(SelectPrimitive.List, {
|
|
842
|
-
children
|
|
843
|
-
}),
|
|
844
|
-
/* @__PURE__ */ jsx8(SelectScrollDownButton, {})
|
|
845
|
-
]
|
|
846
|
-
})
|
|
847
|
-
})
|
|
848
|
-
})
|
|
849
|
-
});
|
|
850
|
-
}
|
|
851
|
-
function SelectLabel({ density, className, ...props }) {
|
|
852
|
-
return /* @__PURE__ */ jsx8(SelectPrimitive.GroupLabel, {
|
|
853
|
-
"data-density": density,
|
|
854
|
-
"data-slot": "select-label",
|
|
855
|
-
className: (state) => cn2("px-1.5 py-1 text-xs text-muted-foreground", typeof className === "function" ? className(state) : className),
|
|
856
|
-
...props
|
|
857
|
-
});
|
|
858
|
-
}
|
|
859
|
-
function SelectItem({ density, className, children, ...props }) {
|
|
860
|
-
return /* @__PURE__ */ jsxs6(SelectPrimitive.Item, {
|
|
861
|
-
"data-density": density,
|
|
862
|
-
"data-slot": "select-item",
|
|
863
|
-
className: (state) => cn2("relative flex w-full cursor-default items-center gap-control-gap rounded-md py-1 pe-8 ps-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", typeof className === "function" ? className(state) : className),
|
|
864
|
-
...props,
|
|
865
|
-
children: [
|
|
866
|
-
/* @__PURE__ */ jsx8(SelectPrimitive.ItemText, {
|
|
867
|
-
className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap",
|
|
868
|
-
children
|
|
869
|
-
}),
|
|
870
|
-
/* @__PURE__ */ jsx8(SelectPrimitive.ItemIndicator, {
|
|
871
|
-
render: /* @__PURE__ */ jsx8("span", {
|
|
872
|
-
className: "pointer-events-none absolute end-2 flex size-4 items-center justify-center"
|
|
873
|
-
}),
|
|
874
|
-
children: /* @__PURE__ */ jsx8(CheckIcon2, {
|
|
875
|
-
className: "pointer-events-none"
|
|
876
|
-
})
|
|
877
|
-
})
|
|
878
|
-
]
|
|
879
|
-
});
|
|
880
|
-
}
|
|
881
|
-
function SelectSeparator({ density, className, ...props }) {
|
|
882
|
-
return /* @__PURE__ */ jsx8(SelectPrimitive.Separator, {
|
|
883
|
-
"data-density": density,
|
|
884
|
-
"data-slot": "select-separator",
|
|
885
|
-
className: (state) => cn2("pointer-events-none -mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
|
|
886
|
-
...props
|
|
887
|
-
});
|
|
888
|
-
}
|
|
889
|
-
function SelectScrollUpButton({ density, className, ...props }) {
|
|
890
|
-
return /* @__PURE__ */ jsx8(SelectPrimitive.ScrollUpArrow, {
|
|
891
|
-
"data-density": density,
|
|
892
|
-
"data-slot": "select-scroll-up-button",
|
|
893
|
-
className: (state) => cn2("top-0 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
894
|
-
...props,
|
|
895
|
-
children: /* @__PURE__ */ jsx8(ChevronUpIcon2, {})
|
|
896
|
-
});
|
|
897
|
-
}
|
|
898
|
-
function SelectScrollDownButton({ density, className, ...props }) {
|
|
899
|
-
return /* @__PURE__ */ jsx8(SelectPrimitive.ScrollDownArrow, {
|
|
900
|
-
"data-density": density,
|
|
901
|
-
"data-slot": "select-scroll-down-button",
|
|
902
|
-
className: (state) => cn2("bottom-0 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
903
|
-
...props,
|
|
904
|
-
children: /* @__PURE__ */ jsx8(ChevronDownIcon3, {})
|
|
905
|
-
});
|
|
906
|
-
}
|
|
907
|
-
// src/components/DensityProvider.tsx
|
|
908
|
-
import { mergeProps as mergeProps2 } from "@base-ui/react/merge-props";
|
|
909
|
-
import { useRender as useRender2 } from "@base-ui/react/use-render";
|
|
910
|
-
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
911
|
-
function DensityProvider({
|
|
912
|
-
density = "comfortable",
|
|
913
|
-
className,
|
|
914
|
-
render,
|
|
915
|
-
...props
|
|
916
|
-
}) {
|
|
917
|
-
const element = useRender2({
|
|
918
|
-
defaultTagName: "div",
|
|
919
|
-
props: mergeProps2({ className: cn2("font-sans text-base leading-(--ag-leading)", className) }, props),
|
|
920
|
-
render,
|
|
921
|
-
state: { slot: "density-provider", density }
|
|
922
|
-
});
|
|
923
|
-
return /* @__PURE__ */ jsx9(DensityContext.Provider, {
|
|
924
|
-
value: density,
|
|
925
|
-
children: element
|
|
926
|
-
});
|
|
927
|
-
}
|
|
928
|
-
// src/hooks/useDocumentGuard.ts
|
|
929
|
-
import { useEffect } from "react";
|
|
930
|
-
var registrations = new WeakMap;
|
|
931
|
-
function useDocumentGuard(observe, ownerDocument) {
|
|
932
|
-
useEffect(() => {
|
|
933
|
-
if (process.env.NODE_ENV === "production")
|
|
934
|
-
return;
|
|
935
|
-
const target = ownerDocument ?? document;
|
|
936
|
-
let observers = registrations.get(target);
|
|
937
|
-
if (!observers) {
|
|
938
|
-
observers = new Map;
|
|
939
|
-
registrations.set(target, observers);
|
|
940
|
-
}
|
|
941
|
-
let registration = observers.get(observe);
|
|
942
|
-
if (!registration) {
|
|
943
|
-
registration = { users: 0, disconnect: observe(target) };
|
|
944
|
-
observers.set(observe, registration);
|
|
945
|
-
}
|
|
946
|
-
registration.users++;
|
|
947
|
-
return () => {
|
|
948
|
-
registration.users--;
|
|
949
|
-
if (!registration.users) {
|
|
950
|
-
registration.disconnect();
|
|
951
|
-
observers.delete(observe);
|
|
952
|
-
if (!observers.size)
|
|
953
|
-
registrations.delete(target);
|
|
954
|
-
}
|
|
955
|
-
};
|
|
956
|
-
}, [observe, ownerDocument]);
|
|
957
|
-
}
|
|
958
|
-
|
|
959
|
-
// src/utils/getLayoutAnimations.ts
|
|
960
|
-
function getLayoutAnimations(root) {
|
|
961
|
-
const document2 = root.ownerDocument ?? root;
|
|
962
|
-
const view = document2.defaultView;
|
|
963
|
-
if (!view)
|
|
964
|
-
return [];
|
|
965
|
-
const boundaries = [...root.querySelectorAll("[data-layout-boundary]")];
|
|
966
|
-
if (root instanceof view.Element && root.hasAttribute("data-layout-boundary"))
|
|
967
|
-
boundaries.push(root);
|
|
968
|
-
return document2.getAnimations().filter((animation) => {
|
|
969
|
-
if (animation.playState !== "running" || animation.effect?.getComputedTiming().iterations === Infinity)
|
|
970
|
-
return false;
|
|
971
|
-
const target = animation.effect instanceof view.KeyframeEffect ? animation.effect.target : null;
|
|
972
|
-
return target instanceof view.Element && boundaries.some((boundary) => boundary.contains(target) || target.contains(boundary));
|
|
973
|
-
});
|
|
974
|
-
}
|
|
975
|
-
|
|
976
|
-
// src/utils/collectLayoutViolations.ts
|
|
977
|
-
function identify(element) {
|
|
978
|
-
const slot = element.getAttribute("data-slot");
|
|
979
|
-
const name = element.getAttribute("aria-label") ?? element.textContent?.trim().slice(0, 60);
|
|
980
|
-
return `${element.localName}${element.id ? `#${element.id}` : slot ? `[data-slot="${slot}"]` : ""}${name ? ` "${name}"` : ""}`;
|
|
981
|
-
}
|
|
982
|
-
function isHidden(element, view) {
|
|
983
|
-
if (element.closest('[inert], [data-layout-exclude]:not([data-layout-exclude=""])'))
|
|
984
|
-
return true;
|
|
985
|
-
if (!element.checkVisibility({ visibilityProperty: true, opacityProperty: true }))
|
|
986
|
-
return true;
|
|
987
|
-
const style = view.getComputedStyle(element);
|
|
988
|
-
return style.clip === "rect(0px, 0px, 0px, 0px)" || style.clipPath === "inset(50%)";
|
|
989
|
-
}
|
|
990
|
-
function collectLayoutViolations(root, tolerance = 1) {
|
|
991
|
-
const document2 = root.nodeType === Node.DOCUMENT_NODE ? root : root.ownerDocument;
|
|
992
|
-
const view = document2.defaultView;
|
|
993
|
-
if (!view)
|
|
994
|
-
return [];
|
|
995
|
-
const boundaries = [...root.querySelectorAll("[data-layout-boundary]")];
|
|
996
|
-
if (root instanceof view.Element && root.hasAttribute("data-layout-boundary"))
|
|
997
|
-
boundaries.unshift(root);
|
|
998
|
-
const violations = [];
|
|
999
|
-
for (const boundary of boundaries) {
|
|
1000
|
-
if (isHidden(boundary, view))
|
|
1001
|
-
continue;
|
|
1002
|
-
const bounds = boundary.getBoundingClientRect();
|
|
1003
|
-
const axis = boundary.getAttribute("data-layout-boundary");
|
|
1004
|
-
for (const element of [boundary, ...boundary.querySelectorAll("*")]) {
|
|
1005
|
-
if (isHidden(element, view) || element.parentElement?.closest("svg"))
|
|
1006
|
-
continue;
|
|
1007
|
-
let checkX = axis !== "y";
|
|
1008
|
-
let checkY = axis !== "x";
|
|
1009
|
-
const isControl = element.matches("button, a[href], input, select, textarea, [tabindex], [role=button]");
|
|
1010
|
-
const elementBounds = element.getBoundingClientRect();
|
|
1011
|
-
const limits = { left: bounds.left, right: bounds.right, top: bounds.top, bottom: bounds.bottom };
|
|
1012
|
-
if (isControl) {
|
|
1013
|
-
limits.left = Math.max(limits.left, elementBounds.left);
|
|
1014
|
-
limits.right = Math.min(limits.right, elementBounds.right);
|
|
1015
|
-
limits.top = Math.max(limits.top, elementBounds.top);
|
|
1016
|
-
limits.bottom = Math.min(limits.bottom, elementBounds.bottom);
|
|
1017
|
-
}
|
|
1018
|
-
let ancestor = element === boundary ? null : element.parentElement;
|
|
1019
|
-
let hidden = false;
|
|
1020
|
-
while (ancestor && ancestor !== boundary) {
|
|
1021
|
-
if (isHidden(ancestor, view)) {
|
|
1022
|
-
hidden = true;
|
|
1023
|
-
break;
|
|
1024
|
-
}
|
|
1025
|
-
const style = view.getComputedStyle(ancestor);
|
|
1026
|
-
if (isControl) {
|
|
1027
|
-
const clip = ancestor.getBoundingClientRect();
|
|
1028
|
-
if (["hidden", "clip"].includes(style.overflowX)) {
|
|
1029
|
-
limits.left = Math.max(limits.left, clip.left);
|
|
1030
|
-
limits.right = Math.min(limits.right, clip.right);
|
|
1031
|
-
}
|
|
1032
|
-
if (["hidden", "clip"].includes(style.overflowY)) {
|
|
1033
|
-
limits.top = Math.max(limits.top, clip.top);
|
|
1034
|
-
limits.bottom = Math.min(limits.bottom, clip.bottom);
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
if (["auto", "scroll"].includes(style.overflowX))
|
|
1038
|
-
checkX = false;
|
|
1039
|
-
if (["auto", "scroll"].includes(style.overflowY))
|
|
1040
|
-
checkY = false;
|
|
1041
|
-
ancestor = ancestor.parentElement;
|
|
1042
|
-
}
|
|
1043
|
-
if (hidden)
|
|
1044
|
-
continue;
|
|
1045
|
-
const rectangles = [...element.getClientRects()];
|
|
1046
|
-
const style = view.getComputedStyle(element);
|
|
1047
|
-
if (style.textOverflow !== "ellipsis") {
|
|
1048
|
-
for (const child of element.childNodes) {
|
|
1049
|
-
if (child.nodeType !== Node.TEXT_NODE || !child.textContent?.trim())
|
|
1050
|
-
continue;
|
|
1051
|
-
const range = document2.createRange();
|
|
1052
|
-
range.selectNodeContents(child);
|
|
1053
|
-
rectangles.push(...range.getClientRects());
|
|
1054
|
-
}
|
|
1055
|
-
}
|
|
1056
|
-
for (const edge of ["left", "right", "top", "bottom"]) {
|
|
1057
|
-
if (edge === "left" || edge === "right" ? !checkX : !checkY)
|
|
1058
|
-
continue;
|
|
1059
|
-
const overflow = Math.max(0, ...rectangles.map((rect) => edge === "left" || edge === "top" ? limits[edge] - rect[edge] : rect[edge] - limits[edge]));
|
|
1060
|
-
if (overflow <= tolerance)
|
|
1061
|
-
continue;
|
|
1062
|
-
violations.push({
|
|
1063
|
-
boundary,
|
|
1064
|
-
element,
|
|
1065
|
-
edge,
|
|
1066
|
-
overflow,
|
|
1067
|
-
message: `${identify(element)} exceeds ${identify(boundary)} ${edge} edge by ${Math.round(overflow * 100) / 100}px`
|
|
1068
|
-
});
|
|
1069
|
-
}
|
|
1070
|
-
}
|
|
1071
|
-
}
|
|
1072
|
-
return violations;
|
|
1073
|
-
}
|
|
1074
|
-
|
|
1075
|
-
// src/utils/observeLayoutChanges.ts
|
|
1076
|
-
function observeLayoutChanges(ownerDocument, selector, checkLayout) {
|
|
1077
|
-
const view = ownerDocument.defaultView;
|
|
1078
|
-
if (!view)
|
|
1079
|
-
return () => {};
|
|
1080
|
-
let isConnected = true;
|
|
1081
|
-
let frame;
|
|
1082
|
-
let needsRefresh = true;
|
|
1083
|
-
let guarded = [];
|
|
1084
|
-
const observed = new Set;
|
|
1085
|
-
const schedule = () => {
|
|
1086
|
-
if (!isConnected)
|
|
1087
|
-
return;
|
|
1088
|
-
frame ??= view.requestAnimationFrame(check);
|
|
1089
|
-
};
|
|
1090
|
-
const resizeObserver = new view.ResizeObserver(schedule);
|
|
1091
|
-
const refresh = () => {
|
|
1092
|
-
guarded = [...ownerDocument.querySelectorAll(selector)];
|
|
1093
|
-
const targets = new Set(guarded.flatMap((element) => [element, ...element.querySelectorAll("*")]));
|
|
1094
|
-
for (const element of observed) {
|
|
1095
|
-
if (!targets.has(element)) {
|
|
1096
|
-
resizeObserver.unobserve(element);
|
|
1097
|
-
observed.delete(element);
|
|
1098
|
-
}
|
|
1099
|
-
}
|
|
1100
|
-
for (const element of targets) {
|
|
1101
|
-
if (!observed.has(element)) {
|
|
1102
|
-
resizeObserver.observe(element);
|
|
1103
|
-
observed.add(element);
|
|
1104
|
-
}
|
|
1105
|
-
}
|
|
1106
|
-
needsRefresh = false;
|
|
1107
|
-
};
|
|
1108
|
-
const check = () => {
|
|
1109
|
-
frame = undefined;
|
|
1110
|
-
if (needsRefresh)
|
|
1111
|
-
refresh();
|
|
1112
|
-
checkLayout(guarded, schedule);
|
|
1113
|
-
};
|
|
1114
|
-
const mutations = new view.MutationObserver((records) => {
|
|
1115
|
-
needsRefresh ||= records.some((record) => record.type === "childList" || record.type === "attributes");
|
|
1116
|
-
schedule();
|
|
1117
|
-
});
|
|
1118
|
-
mutations.observe(ownerDocument.documentElement, {
|
|
1119
|
-
subtree: true,
|
|
1120
|
-
childList: true,
|
|
1121
|
-
characterData: true,
|
|
1122
|
-
attributes: true
|
|
1123
|
-
});
|
|
1124
|
-
view.addEventListener("resize", schedule);
|
|
1125
|
-
ownerDocument.addEventListener("scroll", schedule, true);
|
|
1126
|
-
ownerDocument.addEventListener("load", schedule, true);
|
|
1127
|
-
ownerDocument.addEventListener("transitionend", schedule, true);
|
|
1128
|
-
ownerDocument.addEventListener("animationend", schedule, true);
|
|
1129
|
-
ownerDocument.fonts.addEventListener("loadingdone", schedule);
|
|
1130
|
-
schedule();
|
|
1131
|
-
return () => {
|
|
1132
|
-
isConnected = false;
|
|
1133
|
-
mutations.disconnect();
|
|
1134
|
-
resizeObserver.disconnect();
|
|
1135
|
-
if (frame !== undefined)
|
|
1136
|
-
view.cancelAnimationFrame(frame);
|
|
1137
|
-
view.removeEventListener("resize", schedule);
|
|
1138
|
-
ownerDocument.removeEventListener("scroll", schedule, true);
|
|
1139
|
-
ownerDocument.removeEventListener("load", schedule, true);
|
|
1140
|
-
ownerDocument.removeEventListener("transitionend", schedule, true);
|
|
1141
|
-
ownerDocument.removeEventListener("animationend", schedule, true);
|
|
1142
|
-
ownerDocument.fonts.removeEventListener("loadingdone", schedule);
|
|
1143
|
-
};
|
|
1144
|
-
}
|
|
1145
|
-
|
|
1146
|
-
// src/utils/observeLayoutGuards.ts
|
|
1147
|
-
function throwViolation(error) {
|
|
1148
|
-
throw error;
|
|
1149
|
-
}
|
|
1150
|
-
function observeLayoutGuards(document2, report = throwViolation) {
|
|
1151
|
-
const pending = new WeakSet;
|
|
1152
|
-
let previous = "";
|
|
1153
|
-
return observeLayoutChanges(document2, "[data-layout-boundary]", (_elements, schedule) => {
|
|
1154
|
-
const animations = getLayoutAnimations(document2);
|
|
1155
|
-
for (const animation of animations) {
|
|
1156
|
-
if (pending.has(animation))
|
|
1157
|
-
continue;
|
|
1158
|
-
pending.add(animation);
|
|
1159
|
-
const settled = () => {
|
|
1160
|
-
pending.delete(animation);
|
|
1161
|
-
schedule();
|
|
1162
|
-
};
|
|
1163
|
-
animation.finished.then(settled, settled);
|
|
1164
|
-
}
|
|
1165
|
-
if (animations.length)
|
|
1166
|
-
return;
|
|
1167
|
-
const message = collectLayoutViolations(document2).map((violation) => violation.message).join("; ");
|
|
1168
|
-
const hasChanged = message !== previous;
|
|
1169
|
-
previous = message;
|
|
1170
|
-
if (message && hasChanged)
|
|
1171
|
-
report(new Error(`[shadcn] Layout containment: ${message}`));
|
|
1172
|
-
});
|
|
1173
|
-
}
|
|
1174
|
-
|
|
1175
|
-
// src/components/LayoutGuard.tsx
|
|
1176
|
-
"use client";
|
|
1177
|
-
function LayoutGuard({ ownerDocument }) {
|
|
1178
|
-
useDocumentGuard(observeLayoutGuards, ownerDocument);
|
|
1179
|
-
return null;
|
|
1180
|
-
}
|
|
1181
|
-
|
|
1182
|
-
// src/components/ThemeProvider.tsx
|
|
1183
|
-
import { useMemo } from "react";
|
|
1184
|
-
import { useIsomorphicLayoutEffect, useTernaryDarkMode } from "usehooks-ts";
|
|
1185
|
-
|
|
1186
|
-
// src/utils/observeScrollGuards.ts
|
|
1187
|
-
function throwViolation2(error) {
|
|
1188
|
-
throw error;
|
|
1189
|
-
}
|
|
1190
|
-
function getViolation(element, view) {
|
|
1191
|
-
if (!element.getClientRects().length)
|
|
1192
|
-
return;
|
|
1193
|
-
const style = view.getComputedStyle(element);
|
|
1194
|
-
if (style.visibility !== "visible")
|
|
1195
|
-
return;
|
|
1196
|
-
const axes = [];
|
|
1197
|
-
if (["auto", "scroll"].includes(style.overflowX) && element.scrollWidth > element.clientWidth) {
|
|
1198
|
-
axes.push(`horizontal: ${element.scrollWidth}px > ${element.clientWidth}px`);
|
|
1199
|
-
}
|
|
1200
|
-
if (["auto", "scroll"].includes(style.overflowY) && element.scrollHeight > element.clientHeight) {
|
|
1201
|
-
axes.push(`vertical: ${element.scrollHeight}px > ${element.clientHeight}px`);
|
|
1202
|
-
}
|
|
1203
|
-
if (!axes.length)
|
|
1204
|
-
return;
|
|
1205
|
-
const slot = element.getAttribute("data-slot");
|
|
1206
|
-
const identity = element.id ? ` id="${element.id}"` : slot ? ` data-slot="${slot}"` : "";
|
|
1207
|
-
return `<${element.localName}${identity}> (${axes.join(", ")})`;
|
|
1208
|
-
}
|
|
1209
|
-
function observeScrollGuards(ownerDocument, reportViolation = throwViolation2) {
|
|
1210
|
-
const reported = new WeakSet;
|
|
1211
|
-
return observeLayoutChanges(ownerDocument, '[data-scroll="none"]', (guarded) => {
|
|
1212
|
-
const view = ownerDocument.defaultView;
|
|
1213
|
-
const violations = [];
|
|
1214
|
-
for (const element of guarded) {
|
|
1215
|
-
const violation = getViolation(element, view);
|
|
1216
|
-
if (!violation)
|
|
1217
|
-
reported.delete(element);
|
|
1218
|
-
else if (!reported.has(element)) {
|
|
1219
|
-
reported.add(element);
|
|
1220
|
-
violations.push(violation);
|
|
1221
|
-
}
|
|
1222
|
-
}
|
|
1223
|
-
if (violations.length)
|
|
1224
|
-
reportViolation(new Error('[shadcn] Scrolling is forbidden by data-scroll="none": ' + violations.join("; ") + ". " + "Move scrolling content into a nested ScrollArea or another explicit scroll viewport."));
|
|
1225
|
-
});
|
|
1226
|
-
}
|
|
1227
|
-
|
|
1228
|
-
// src/components/ScrollGuard.tsx
|
|
1229
|
-
"use client";
|
|
1230
|
-
function ScrollGuard({ ownerDocument }) {
|
|
1231
|
-
useDocumentGuard(observeScrollGuards, ownerDocument);
|
|
1232
|
-
return null;
|
|
1233
|
-
}
|
|
1234
|
-
|
|
1235
|
-
// src/components/ThemeProvider.tsx
|
|
1236
|
-
import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1237
|
-
function StoredThemeProvider({
|
|
1238
|
-
children,
|
|
1239
|
-
defaultTheme = "system",
|
|
1240
|
-
storageKey = "shadcn-alexgorbatchev-theme",
|
|
1241
|
-
forcedTheme
|
|
1242
|
-
}) {
|
|
1243
|
-
const { isDarkMode, ternaryDarkMode, setTernaryDarkMode } = useTernaryDarkMode({
|
|
1244
|
-
defaultValue: defaultTheme,
|
|
1245
|
-
localStorageKey: storageKey
|
|
1246
|
-
});
|
|
1247
|
-
return /* @__PURE__ */ jsx10(ThemePalette, {
|
|
1248
|
-
theme: forcedTheme ?? ternaryDarkMode,
|
|
1249
|
-
resolvedTheme: forcedTheme ?? (isDarkMode ? "dark" : "light"),
|
|
1250
|
-
setTheme: setTernaryDarkMode,
|
|
1251
|
-
children
|
|
1252
|
-
});
|
|
1253
|
-
}
|
|
1254
|
-
function ThemePalette({
|
|
1255
|
-
children,
|
|
1256
|
-
theme,
|
|
1257
|
-
resolvedTheme,
|
|
1258
|
-
setTheme
|
|
1259
|
-
}) {
|
|
1260
|
-
useIsomorphicLayoutEffect(() => {
|
|
1261
|
-
document.documentElement.dataset.theme = resolvedTheme;
|
|
1262
|
-
document.documentElement.style.colorScheme = resolvedTheme;
|
|
1263
|
-
}, [resolvedTheme]);
|
|
1264
|
-
const value = useMemo(() => ({ theme, resolvedTheme, setTheme }), [theme, resolvedTheme, setTheme]);
|
|
1265
|
-
return /* @__PURE__ */ jsxs7(ThemeContext.Provider, {
|
|
1266
|
-
value,
|
|
1267
|
-
children: [
|
|
1268
|
-
/* @__PURE__ */ jsx10(ScrollGuard, {}),
|
|
1269
|
-
/* @__PURE__ */ jsx10(LayoutGuard, {}),
|
|
1270
|
-
children
|
|
1271
|
-
]
|
|
1272
|
-
});
|
|
1273
|
-
}
|
|
1274
|
-
function ControlledThemeProvider({
|
|
1275
|
-
children,
|
|
1276
|
-
controlledTheme,
|
|
1277
|
-
forcedTheme
|
|
1278
|
-
}) {
|
|
1279
|
-
const isDark = useMediaQuery("(prefers-color-scheme: dark)");
|
|
1280
|
-
const { theme, setTheme } = controlledTheme;
|
|
1281
|
-
const resolvedTheme = forcedTheme ?? (theme === "system" ? isDark ? "dark" : "light" : theme);
|
|
1282
|
-
return /* @__PURE__ */ jsx10(ThemePalette, {
|
|
1283
|
-
theme: forcedTheme ?? theme,
|
|
1284
|
-
resolvedTheme,
|
|
1285
|
-
setTheme,
|
|
1286
|
-
children
|
|
1287
|
-
});
|
|
1288
|
-
}
|
|
1289
|
-
function ThemeProvider(props) {
|
|
1290
|
-
if (props.controlledTheme)
|
|
1291
|
-
return /* @__PURE__ */ jsx10(ControlledThemeProvider, {
|
|
1292
|
-
...props,
|
|
1293
|
-
controlledTheme: props.controlledTheme
|
|
1294
|
-
});
|
|
1295
|
-
return /* @__PURE__ */ jsx10(StoredThemeProvider, {
|
|
1296
|
-
...props
|
|
1297
|
-
});
|
|
1298
|
-
}
|
|
1299
|
-
// src/hooks/useComboboxAnchor.ts
|
|
1300
|
-
import { useRef } from "react";
|
|
1301
|
-
function useComboboxAnchor() {
|
|
1302
|
-
return useRef(null);
|
|
1303
|
-
}
|
|
1304
|
-
// src/components/AspectRatio.tsx
|
|
1305
|
-
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
1306
|
-
function AspectRatio({ ratio, className, style, ...props }) {
|
|
1307
|
-
return /* @__PURE__ */ jsx11("div", {
|
|
1308
|
-
"data-slot": "aspect-ratio",
|
|
1309
|
-
className: cn2("relative", className),
|
|
1310
|
-
style: { aspectRatio: ratio, ...style },
|
|
1311
|
-
...props
|
|
1312
|
-
});
|
|
1313
|
-
}
|
|
1314
|
-
// src/components/Breadcrumb.tsx
|
|
1315
|
-
import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
|
|
1316
|
-
import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
|
|
1317
|
-
import { useRender as useRender3 } from "@base-ui/react/use-render";
|
|
1318
|
-
import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1319
|
-
function Breadcrumb({ density, className, ...props }) {
|
|
1320
|
-
return /* @__PURE__ */ jsx12("nav", {
|
|
1321
|
-
"aria-label": "breadcrumb",
|
|
1322
|
-
"data-density": density,
|
|
1323
|
-
"data-slot": "breadcrumb",
|
|
1324
|
-
className: cn2(className),
|
|
1325
|
-
...props
|
|
1326
|
-
});
|
|
1327
|
-
}
|
|
1328
|
-
function BreadcrumbList({ density, className, ...props }) {
|
|
1329
|
-
return /* @__PURE__ */ jsx12("ol", {
|
|
1330
|
-
"data-density": density,
|
|
1331
|
-
"data-slot": "breadcrumb-list",
|
|
1332
|
-
className: cn2("flex flex-wrap items-center gap-control-gap text-sm wrap-break-word text-muted-foreground", className),
|
|
1333
|
-
...props
|
|
1334
|
-
});
|
|
1335
|
-
}
|
|
1336
|
-
function BreadcrumbItem({ density, className, ...props }) {
|
|
1337
|
-
return /* @__PURE__ */ jsx12("li", {
|
|
1338
|
-
"data-density": density,
|
|
1339
|
-
"data-slot": "breadcrumb-item",
|
|
1340
|
-
className: cn2("inline-flex items-center gap-1", className),
|
|
1341
|
-
...props
|
|
1342
|
-
});
|
|
1343
|
-
}
|
|
1344
|
-
function BreadcrumbLink({ density, className, render, ...props }) {
|
|
1345
|
-
return useRender3({
|
|
1346
|
-
defaultTagName: "a",
|
|
1347
|
-
props: mergeProps3({
|
|
1348
|
-
className: cn2("transition-colors hover:text-foreground", className)
|
|
1349
|
-
}, props),
|
|
1350
|
-
render,
|
|
1351
|
-
state: {
|
|
1352
|
-
density,
|
|
1353
|
-
slot: "breadcrumb-link"
|
|
1354
|
-
}
|
|
1355
|
-
});
|
|
1356
|
-
}
|
|
1357
|
-
function BreadcrumbPage({ density, className, ...props }) {
|
|
1358
|
-
return /* @__PURE__ */ jsx12("span", {
|
|
1359
|
-
"data-density": density,
|
|
1360
|
-
"data-slot": "breadcrumb-page",
|
|
1361
|
-
role: "link",
|
|
1362
|
-
"aria-disabled": "true",
|
|
1363
|
-
"aria-current": "page",
|
|
1364
|
-
className: cn2("font-normal text-foreground", className),
|
|
1365
|
-
...props
|
|
1366
|
-
});
|
|
1367
|
-
}
|
|
1368
|
-
function BreadcrumbSeparator({ density, children, className, ...props }) {
|
|
1369
|
-
return /* @__PURE__ */ jsx12("li", {
|
|
1370
|
-
"data-density": density,
|
|
1371
|
-
"data-slot": "breadcrumb-separator",
|
|
1372
|
-
role: "presentation",
|
|
1373
|
-
"aria-hidden": "true",
|
|
1374
|
-
className: cn2("[&>svg]:size-3.5", className),
|
|
1375
|
-
...props,
|
|
1376
|
-
children: children ?? /* @__PURE__ */ jsx12(ChevronRightIcon, {
|
|
1377
|
-
className: "rtl:rotate-180"
|
|
1378
|
-
})
|
|
1379
|
-
});
|
|
1380
|
-
}
|
|
1381
|
-
function BreadcrumbEllipsis({ density, className, ...props }) {
|
|
1382
|
-
return /* @__PURE__ */ jsxs8("span", {
|
|
1383
|
-
"data-density": density,
|
|
1384
|
-
"data-slot": "breadcrumb-ellipsis",
|
|
1385
|
-
role: "presentation",
|
|
1386
|
-
"aria-hidden": "true",
|
|
1387
|
-
className: cn2("flex size-5 items-center justify-center [&>svg]:size-4", className),
|
|
1388
|
-
...props,
|
|
1389
|
-
children: [
|
|
1390
|
-
/* @__PURE__ */ jsx12(MoreHorizontalIcon, {}),
|
|
1391
|
-
/* @__PURE__ */ jsx12("span", {
|
|
1392
|
-
className: "sr-only",
|
|
1393
|
-
children: "More"
|
|
1394
|
-
})
|
|
1395
|
-
]
|
|
1396
|
-
});
|
|
1397
|
-
}
|
|
1398
|
-
// src/components/ButtonGroup.tsx
|
|
1399
|
-
import { mergeProps as mergeProps4 } from "@base-ui/react/merge-props";
|
|
1400
|
-
import { useRender as useRender4 } from "@base-ui/react/use-render";
|
|
1401
|
-
import { cva } from "class-variance-authority";
|
|
1402
|
-
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
1403
|
-
var buttonGroupVariants = cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-sm [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
|
|
1404
|
-
variants: {
|
|
1405
|
-
layout: {
|
|
1406
|
-
content: "",
|
|
1407
|
-
equal: "grid w-full grid-flow-col auto-cols-fr data-[orientation=vertical]:grid-flow-row"
|
|
1408
|
-
},
|
|
1409
|
-
orientation: {
|
|
1410
|
-
horizontal: "*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-sm! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0",
|
|
1411
|
-
vertical: "flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-sm! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0"
|
|
1412
|
-
}
|
|
1413
|
-
},
|
|
1414
|
-
defaultVariants: {
|
|
1415
|
-
orientation: "horizontal"
|
|
1416
|
-
}
|
|
1417
|
-
});
|
|
1418
|
-
function ButtonGroup({
|
|
1419
|
-
density,
|
|
1420
|
-
className,
|
|
1421
|
-
orientation,
|
|
1422
|
-
layout = "content",
|
|
1423
|
-
...props
|
|
1424
|
-
}) {
|
|
1425
|
-
return /* @__PURE__ */ jsx13("div", {
|
|
1426
|
-
role: "group",
|
|
1427
|
-
"data-density": density,
|
|
1428
|
-
"data-slot": "button-group",
|
|
1429
|
-
"data-orientation": orientation,
|
|
1430
|
-
className: cn2(buttonGroupVariants({ orientation, layout }), className),
|
|
1431
|
-
...props
|
|
1432
|
-
});
|
|
1433
|
-
}
|
|
1434
|
-
function ButtonGroupText({ density, className, render, ...props }) {
|
|
1435
|
-
return useRender4({
|
|
1436
|
-
defaultTagName: "div",
|
|
1437
|
-
props: mergeProps4({
|
|
1438
|
-
className: cn2("flex items-center gap-2 rounded-sm border bg-muted px-control-x text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className)
|
|
1439
|
-
}, props),
|
|
1440
|
-
render,
|
|
1441
|
-
state: {
|
|
1442
|
-
density,
|
|
1443
|
-
slot: "button-group-text"
|
|
1444
|
-
}
|
|
1445
|
-
});
|
|
1446
|
-
}
|
|
1447
|
-
function ButtonGroupSeparator({
|
|
1448
|
-
density,
|
|
1449
|
-
className,
|
|
1450
|
-
orientation = "vertical",
|
|
1451
|
-
...props
|
|
1452
|
-
}) {
|
|
1453
|
-
return /* @__PURE__ */ jsx13(Separator2, {
|
|
1454
|
-
"data-density": density,
|
|
1455
|
-
"data-slot": "button-group-separator",
|
|
1456
|
-
orientation,
|
|
1457
|
-
className: (state) => cn2("relative self-stretch bg-input data-[orientation=horizontal]:mx-px data-[orientation=horizontal]:w-auto data-[orientation=vertical]:my-px data-[orientation=vertical]:h-auto", typeof className === "function" ? className(state) : className),
|
|
1458
|
-
...props
|
|
1459
|
-
});
|
|
1460
|
-
}
|
|
1461
|
-
// src/components/Item.tsx
|
|
1462
|
-
import { mergeProps as mergeProps5 } from "@base-ui/react/merge-props";
|
|
1463
|
-
import { useRender as useRender5 } from "@base-ui/react/use-render";
|
|
1464
|
-
import { cva as cva2 } from "class-variance-authority";
|
|
1465
|
-
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
1466
|
-
function ItemGroup({ density, className, ...props }) {
|
|
1467
|
-
return /* @__PURE__ */ jsx14("div", {
|
|
1468
|
-
role: "list",
|
|
1469
|
-
"data-density": density,
|
|
1470
|
-
"data-slot": "item-group",
|
|
1471
|
-
className: cn2("group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2", className),
|
|
1472
|
-
...props
|
|
1473
|
-
});
|
|
1474
|
-
}
|
|
1475
|
-
function ItemSeparator({ density, className, ...props }) {
|
|
1476
|
-
return /* @__PURE__ */ jsx14(Separator2, {
|
|
1477
|
-
"data-density": density,
|
|
1478
|
-
"data-slot": "item-separator",
|
|
1479
|
-
orientation: "horizontal",
|
|
1480
|
-
className: (state) => cn2("my-2", typeof className === "function" ? className(state) : className),
|
|
1481
|
-
...props
|
|
1482
|
-
});
|
|
1483
|
-
}
|
|
1484
|
-
var itemVariants = cva2("group/item flex w-full flex-wrap items-center rounded-sm border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring [a]:transition-colors [a]:hover:bg-muted", {
|
|
1485
|
-
variants: {
|
|
1486
|
-
variant: {
|
|
1487
|
-
default: "border-transparent",
|
|
1488
|
-
outline: "border-border",
|
|
1489
|
-
muted: "border-transparent bg-muted/50"
|
|
1490
|
-
},
|
|
1491
|
-
size: {
|
|
1492
|
-
default: "gap-panel p-panel",
|
|
1493
|
-
sm: "gap-panel p-panel",
|
|
1494
|
-
xs: "gap-2 px-control-x py-2 in-data-[slot=dropdown-menu-content]:p-0"
|
|
1495
|
-
}
|
|
1496
|
-
},
|
|
1497
|
-
defaultVariants: {
|
|
1498
|
-
variant: "default",
|
|
1499
|
-
size: "default"
|
|
1500
|
-
}
|
|
1501
|
-
});
|
|
1502
|
-
function Item({
|
|
1503
|
-
density,
|
|
1504
|
-
className,
|
|
1505
|
-
variant = "default",
|
|
1506
|
-
size = "default",
|
|
1507
|
-
render,
|
|
1508
|
-
...props
|
|
1509
|
-
}) {
|
|
1510
|
-
return useRender5({
|
|
1511
|
-
defaultTagName: "div",
|
|
1512
|
-
props: mergeProps5({
|
|
1513
|
-
className: cn2(itemVariants({ variant, size, className }))
|
|
1514
|
-
}, props),
|
|
1515
|
-
render,
|
|
1516
|
-
state: {
|
|
1517
|
-
density,
|
|
1518
|
-
slot: "item",
|
|
1519
|
-
variant,
|
|
1520
|
-
size
|
|
1521
|
-
}
|
|
1522
|
-
});
|
|
1523
|
-
}
|
|
1524
|
-
var itemMediaVariants = cva2("flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none", {
|
|
1525
|
-
variants: {
|
|
1526
|
-
variant: {
|
|
1527
|
-
default: "bg-transparent",
|
|
1528
|
-
icon: "[&_svg:not([class*='size-'])]:size-4",
|
|
1529
|
-
image: "size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover"
|
|
1530
|
-
}
|
|
1531
|
-
},
|
|
1532
|
-
defaultVariants: {
|
|
1533
|
-
variant: "default"
|
|
1534
|
-
}
|
|
1535
|
-
});
|
|
1536
|
-
function ItemMedia({ density, className, variant = "default", ...props }) {
|
|
1537
|
-
return /* @__PURE__ */ jsx14("div", {
|
|
1538
|
-
"data-density": density,
|
|
1539
|
-
"data-slot": "item-media",
|
|
1540
|
-
"data-variant": variant,
|
|
1541
|
-
className: cn2(itemMediaVariants({ variant, className })),
|
|
1542
|
-
...props
|
|
1543
|
-
});
|
|
1544
|
-
}
|
|
1545
|
-
function ItemContent({ density, className, ...props }) {
|
|
1546
|
-
return /* @__PURE__ */ jsx14("div", {
|
|
1547
|
-
"data-density": density,
|
|
1548
|
-
"data-slot": "item-content",
|
|
1549
|
-
className: cn2("flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none", className),
|
|
1550
|
-
...props
|
|
1551
|
-
});
|
|
1552
|
-
}
|
|
1553
|
-
function ItemTitle({ density, className, ...props }) {
|
|
1554
|
-
return /* @__PURE__ */ jsx14("div", {
|
|
1555
|
-
"data-density": density,
|
|
1556
|
-
"data-slot": "item-title",
|
|
1557
|
-
className: cn2("line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4", className),
|
|
1558
|
-
...props
|
|
1559
|
-
});
|
|
1560
|
-
}
|
|
1561
|
-
function ItemDescription({ density, className, ...props }) {
|
|
1562
|
-
return /* @__PURE__ */ jsx14("p", {
|
|
1563
|
-
"data-density": density,
|
|
1564
|
-
"data-slot": "item-description",
|
|
1565
|
-
className: cn2("line-clamp-2 text-start text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
|
|
1566
|
-
...props
|
|
1567
|
-
});
|
|
1568
|
-
}
|
|
1569
|
-
function ItemActions({ density, className, ...props }) {
|
|
1570
|
-
return /* @__PURE__ */ jsx14("div", {
|
|
1571
|
-
"data-density": density,
|
|
1572
|
-
"data-slot": "item-actions",
|
|
1573
|
-
className: cn2("flex items-center gap-2", className),
|
|
1574
|
-
...props
|
|
1575
|
-
});
|
|
1576
|
-
}
|
|
1577
|
-
function ItemHeader({ density, className, ...props }) {
|
|
1578
|
-
return /* @__PURE__ */ jsx14("div", {
|
|
1579
|
-
"data-density": density,
|
|
1580
|
-
"data-slot": "item-header",
|
|
1581
|
-
className: cn2("flex basis-full items-center justify-between gap-2", className),
|
|
1582
|
-
...props
|
|
1583
|
-
});
|
|
1584
|
-
}
|
|
1585
|
-
function ItemFooter({ density, className, ...props }) {
|
|
1586
|
-
return /* @__PURE__ */ jsx14("div", {
|
|
1587
|
-
"data-density": density,
|
|
1588
|
-
"data-slot": "item-footer",
|
|
1589
|
-
className: cn2("flex basis-full items-center justify-between gap-2", className),
|
|
1590
|
-
...props
|
|
1591
|
-
});
|
|
1592
|
-
}
|
|
1593
|
-
// src/components/Pagination.tsx
|
|
1594
|
-
import { ChevronLeftIcon, ChevronRightIcon as ChevronRightIcon2, MoreHorizontalIcon as MoreHorizontalIcon2 } from "lucide-react";
|
|
1595
|
-
import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1596
|
-
function Pagination({ density, className, ...props }) {
|
|
1597
|
-
return /* @__PURE__ */ jsx15("nav", {
|
|
1598
|
-
role: "navigation",
|
|
1599
|
-
"aria-label": "pagination",
|
|
1600
|
-
"data-density": density,
|
|
1601
|
-
"data-slot": "pagination",
|
|
1602
|
-
className: cn2("mx-auto flex w-full justify-center", className),
|
|
1603
|
-
...props
|
|
1604
|
-
});
|
|
1605
|
-
}
|
|
1606
|
-
function PaginationContent({ density, className, ...props }) {
|
|
1607
|
-
return /* @__PURE__ */ jsx15("ul", {
|
|
1608
|
-
"data-density": density,
|
|
1609
|
-
"data-slot": "pagination-content",
|
|
1610
|
-
className: cn2("flex items-center gap-0.5", className),
|
|
1611
|
-
...props
|
|
1612
|
-
});
|
|
1613
|
-
}
|
|
1614
|
-
function PaginationItem({ ...props }) {
|
|
1615
|
-
return /* @__PURE__ */ jsx15("li", {
|
|
1616
|
-
"data-slot": "pagination-item",
|
|
1617
|
-
...props
|
|
1618
|
-
});
|
|
1619
|
-
}
|
|
1620
|
-
function PaginationLink({
|
|
1621
|
-
density,
|
|
1622
|
-
className,
|
|
1623
|
-
isActive,
|
|
1624
|
-
size = "icon",
|
|
1625
|
-
...props
|
|
1626
|
-
}) {
|
|
1627
|
-
return /* @__PURE__ */ jsx15("a", {
|
|
1628
|
-
"data-density": density,
|
|
1629
|
-
className: cn2(buttonVariants2({ variant: isActive ? "outline" : "ghost", size }), className),
|
|
1630
|
-
"aria-current": isActive ? "page" : undefined,
|
|
1631
|
-
"data-slot": "pagination-link",
|
|
1632
|
-
"data-active": isActive,
|
|
1633
|
-
...props
|
|
1634
|
-
});
|
|
1635
|
-
}
|
|
1636
|
-
function PaginationPrevious({
|
|
1637
|
-
density,
|
|
1638
|
-
className,
|
|
1639
|
-
text = "Previous",
|
|
1640
|
-
...props
|
|
1641
|
-
}) {
|
|
1642
|
-
return /* @__PURE__ */ jsxs9(PaginationLink, {
|
|
1643
|
-
density,
|
|
1644
|
-
"aria-label": "Go to previous page",
|
|
1645
|
-
size: "default",
|
|
1646
|
-
className: cn2("ps-1.5!", className),
|
|
1647
|
-
...props,
|
|
1648
|
-
children: [
|
|
1649
|
-
/* @__PURE__ */ jsx15(ChevronLeftIcon, {
|
|
1650
|
-
"data-icon": "inline-start",
|
|
1651
|
-
className: "rtl:rotate-180"
|
|
1652
|
-
}),
|
|
1653
|
-
/* @__PURE__ */ jsx15("span", {
|
|
1654
|
-
className: "hidden sm:block",
|
|
1655
|
-
children: text
|
|
1656
|
-
})
|
|
1657
|
-
]
|
|
1658
|
-
});
|
|
1659
|
-
}
|
|
1660
|
-
function PaginationNext({ density, className, text = "Next", ...props }) {
|
|
1661
|
-
return /* @__PURE__ */ jsxs9(PaginationLink, {
|
|
1662
|
-
density,
|
|
1663
|
-
"aria-label": "Go to next page",
|
|
1664
|
-
size: "default",
|
|
1665
|
-
className: cn2("pe-1.5!", className),
|
|
1666
|
-
...props,
|
|
1667
|
-
children: [
|
|
1668
|
-
/* @__PURE__ */ jsx15("span", {
|
|
1669
|
-
className: "hidden sm:block",
|
|
1670
|
-
children: text
|
|
1671
|
-
}),
|
|
1672
|
-
/* @__PURE__ */ jsx15(ChevronRightIcon2, {
|
|
1673
|
-
"data-icon": "inline-end",
|
|
1674
|
-
className: "rtl:rotate-180"
|
|
1675
|
-
})
|
|
1676
|
-
]
|
|
1677
|
-
});
|
|
1678
|
-
}
|
|
1679
|
-
function PaginationEllipsis({ density, className, ...props }) {
|
|
1680
|
-
return /* @__PURE__ */ jsxs9("span", {
|
|
1681
|
-
"aria-hidden": true,
|
|
1682
|
-
"data-density": density,
|
|
1683
|
-
"data-slot": "pagination-ellipsis",
|
|
1684
|
-
className: cn2("flex size-control items-center justify-center [&_svg:not([class*='size-'])]:size-4", className),
|
|
1685
|
-
...props,
|
|
1686
|
-
children: [
|
|
1687
|
-
/* @__PURE__ */ jsx15(MoreHorizontalIcon2, {}),
|
|
1688
|
-
/* @__PURE__ */ jsx15("span", {
|
|
1689
|
-
className: "sr-only",
|
|
1690
|
-
children: "More pages"
|
|
1691
|
-
})
|
|
1692
|
-
]
|
|
1693
|
-
});
|
|
1694
|
-
}
|
|
1695
|
-
// src/components/ScrollArea.tsx
|
|
1696
|
-
import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area";
|
|
1697
|
-
import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1698
|
-
function ScrollArea({
|
|
1699
|
-
density,
|
|
1700
|
-
className,
|
|
1701
|
-
children,
|
|
1702
|
-
scrollbars = /* @__PURE__ */ jsx16(ScrollBar, {}),
|
|
1703
|
-
...props
|
|
1704
|
-
}) {
|
|
1705
|
-
return /* @__PURE__ */ jsxs10(ScrollAreaPrimitive.Root, {
|
|
1706
|
-
"data-density": density,
|
|
1707
|
-
"data-slot": "scroll-area",
|
|
1708
|
-
className: (state) => cn2("relative flex min-h-0 flex-col", typeof className === "function" ? className(state) : className),
|
|
1709
|
-
...props,
|
|
1710
|
-
children: [
|
|
1711
|
-
/* @__PURE__ */ jsx16(ScrollAreaPrimitive.Viewport, {
|
|
1712
|
-
"data-slot": "scroll-area-viewport",
|
|
1713
|
-
className: "size-full min-h-0 flex-1 rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1",
|
|
1714
|
-
children
|
|
1715
|
-
}),
|
|
1716
|
-
scrollbars,
|
|
1717
|
-
/* @__PURE__ */ jsx16(ScrollAreaPrimitive.Corner, {})
|
|
1718
|
-
]
|
|
1719
|
-
});
|
|
1720
|
-
}
|
|
1721
|
-
function ScrollBar({ density, className, orientation = "vertical", ...props }) {
|
|
1722
|
-
return /* @__PURE__ */ jsx16(ScrollAreaPrimitive.Scrollbar, {
|
|
1723
|
-
"data-density": density,
|
|
1724
|
-
"data-slot": "scroll-area-scrollbar",
|
|
1725
|
-
"data-orientation": orientation,
|
|
1726
|
-
orientation,
|
|
1727
|
-
className: (state) => cn2("flex touch-none p-px transition-colors select-none data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-s data-[orientation=vertical]:border-s-transparent", typeof className === "function" ? className(state) : className),
|
|
1728
|
-
...props,
|
|
1729
|
-
children: /* @__PURE__ */ jsx16(ScrollAreaPrimitive.Thumb, {
|
|
1730
|
-
"data-slot": "scroll-area-thumb",
|
|
1731
|
-
className: "relative flex-1 rounded-full bg-border"
|
|
1732
|
-
})
|
|
1733
|
-
});
|
|
1734
|
-
}
|
|
1735
|
-
// src/components/Drawer.tsx
|
|
1736
|
-
import { useMemo as useMemo2 } from "react";
|
|
1737
|
-
|
|
1738
|
-
// src/drawer/DrawerContext.ts
|
|
1739
|
-
import { createContext } from "react";
|
|
1740
|
-
var DrawerContext = createContext(null);
|
|
1741
|
-
|
|
1742
|
-
// src/hooks/useDrawer.ts
|
|
1743
|
-
import { useContext } from "react";
|
|
1744
|
-
function useDrawer() {
|
|
1745
|
-
const context = useContext(DrawerContext);
|
|
1746
|
-
if (!context) {
|
|
1747
|
-
throw new Error("useDrawer must be used within a Drawer.");
|
|
1748
|
-
}
|
|
1749
|
-
return context;
|
|
1750
|
-
}
|
|
1751
|
-
|
|
1752
|
-
// src/components/Drawer.tsx
|
|
1753
|
-
import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer";
|
|
1754
|
-
import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1755
|
-
function Drawer({
|
|
1756
|
-
modal = true,
|
|
1757
|
-
showSwipeHandle = false,
|
|
1758
|
-
snapPoints,
|
|
1759
|
-
swipeDirection = "down",
|
|
1760
|
-
...props
|
|
1761
|
-
}) {
|
|
1762
|
-
const hasSnapPoints = snapPoints != null && snapPoints.length > 0;
|
|
1763
|
-
const contextValue = useMemo2(() => ({ hasSnapPoints, modal, showSwipeHandle, swipeDirection }), [hasSnapPoints, modal, showSwipeHandle, swipeDirection]);
|
|
1764
|
-
return /* @__PURE__ */ jsx17(DrawerContext.Provider, {
|
|
1765
|
-
value: contextValue,
|
|
1766
|
-
children: /* @__PURE__ */ jsx17(DrawerPrimitive.Root, {
|
|
1767
|
-
"data-slot": "drawer",
|
|
1768
|
-
modal,
|
|
1769
|
-
snapPoints,
|
|
1770
|
-
swipeDirection,
|
|
1771
|
-
...props
|
|
1772
|
-
})
|
|
1773
|
-
});
|
|
1774
|
-
}
|
|
1775
|
-
function DrawerTrigger({ ...props }) {
|
|
1776
|
-
return /* @__PURE__ */ jsx17(DrawerPrimitive.Trigger, {
|
|
1777
|
-
"data-slot": "drawer-trigger",
|
|
1778
|
-
...props
|
|
1779
|
-
});
|
|
1780
|
-
}
|
|
1781
|
-
function DrawerPortal({ container, ref, children, ...props }) {
|
|
1782
|
-
const resolvedContainer = usePortalContainer2(container);
|
|
1783
|
-
const portal = usePortalNode(ref);
|
|
1784
|
-
return /* @__PURE__ */ jsx17(DrawerPrimitive.Portal, {
|
|
1785
|
-
"data-slot": "drawer-portal",
|
|
1786
|
-
container: resolvedContainer,
|
|
1787
|
-
ref: portal.ref,
|
|
1788
|
-
...props,
|
|
1789
|
-
children: /* @__PURE__ */ jsx17(PortalProvider2, {
|
|
1790
|
-
container: portal.node,
|
|
1791
|
-
children
|
|
1792
|
-
})
|
|
1793
|
-
});
|
|
1794
|
-
}
|
|
1795
|
-
function DrawerClose({ ...props }) {
|
|
1796
|
-
return /* @__PURE__ */ jsx17(DrawerPrimitive.Close, {
|
|
1797
|
-
"data-slot": "drawer-close",
|
|
1798
|
-
...props
|
|
1799
|
-
});
|
|
1800
|
-
}
|
|
1801
|
-
function DrawerOverlay({ density, className, ...props }) {
|
|
1802
|
-
const resolvedDensity = useDensity(density);
|
|
1803
|
-
return /* @__PURE__ */ jsx17(DrawerPrimitive.Backdrop, {
|
|
1804
|
-
"data-density": resolvedDensity,
|
|
1805
|
-
"data-slot": "drawer-overlay",
|
|
1806
|
-
className: (state) => cn2("fixed inset-0 min-h-dvh bg-backdrop opacity-[max(var(--drawer-overlay-min-opacity,0),calc(1-var(--drawer-swipe-progress)))] transition-opacity duration-450 ease-[cubic-bezier(0.32,0.72,0,1)] select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-snap-points:[--drawer-overlay-min-opacity:0.5] data-starting-style:opacity-0 data-swiping:duration-0 supports-[-webkit-touch-callout:none]:absolute", typeof className === "function" ? className(state) : className),
|
|
1807
|
-
...props
|
|
1808
|
-
});
|
|
1809
|
-
}
|
|
1810
|
-
function DrawerSwipeHandle({ density, className, ...props }) {
|
|
1811
|
-
return /* @__PURE__ */ jsx17("div", {
|
|
1812
|
-
"data-density": density,
|
|
1813
|
-
"data-slot": "drawer-swipe-handle",
|
|
1814
|
-
"aria-hidden": "true",
|
|
1815
|
-
className: cn2("relative flex shrink-0 cursor-grab transition-opacity duration-200 group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-[swipe-axis=x]/drawer-popup:h-full group-data-[swipe-axis=x]/drawer-popup:w-3 group-data-[swipe-axis=x]/drawer-popup:items-center group-data-[swipe-axis=y]/drawer-popup:h-3 group-data-[swipe-axis=y]/drawer-popup:w-full group-data-[swipe-axis=y]/drawer-popup:justify-center group-data-[swipe-direction=down]/drawer-popup:items-end group-data-[swipe-direction=left]/drawer-popup:order-last group-data-[swipe-direction=left]/drawer-popup:justify-start group-data-[swipe-direction=right]/drawer-popup:justify-end group-data-[swipe-direction=up]/drawer-popup:order-last group-data-[swipe-direction=up]/drawer-popup:items-start after:block after:shrink-0 after:rounded-full after:bg-muted group-data-[swipe-axis=x]/drawer-popup:after:h-24 group-data-[swipe-axis=x]/drawer-popup:after:w-1 group-data-[swipe-axis=y]/drawer-popup:after:h-1 group-data-[swipe-axis=y]/drawer-popup:after:w-24 active:cursor-grabbing", className),
|
|
1816
|
-
...props
|
|
1817
|
-
});
|
|
1818
|
-
}
|
|
1819
|
-
function DrawerContent({ density, className, children, ...props }) {
|
|
1820
|
-
const resolvedDensity = useDensity(density);
|
|
1821
|
-
const direction = useDirection2();
|
|
1822
|
-
const { hasSnapPoints, modal, showSwipeHandle, swipeDirection } = useDrawer();
|
|
1823
|
-
const swipeAxis = swipeDirection === "down" || swipeDirection === "up" ? "y" : "x";
|
|
1824
|
-
return /* @__PURE__ */ jsxs11(DrawerPortal, {
|
|
1825
|
-
"data-slot": "drawer-portal",
|
|
1826
|
-
children: [
|
|
1827
|
-
modal === true && /* @__PURE__ */ jsx17(DrawerOverlay, {
|
|
1828
|
-
"data-snap-points": hasSnapPoints ? "" : undefined
|
|
1829
|
-
}),
|
|
1830
|
-
/* @__PURE__ */ jsx17(DrawerPrimitive.Viewport, {
|
|
1831
|
-
dir: direction,
|
|
1832
|
-
"data-slot": "drawer-viewport",
|
|
1833
|
-
"data-modal": modal,
|
|
1834
|
-
className: "pointer-events-none fixed inset-0 select-none data-[modal=true]:pointer-events-auto",
|
|
1835
|
-
children: /* @__PURE__ */ jsxs11(DrawerPrimitive.Popup, {
|
|
1836
|
-
"data-density": resolvedDensity,
|
|
1837
|
-
"data-slot": "drawer-popup",
|
|
1838
|
-
"data-scroll": "none",
|
|
1839
|
-
"data-swipe-axis": swipeAxis,
|
|
1840
|
-
"data-snap-points": hasSnapPoints ? "" : undefined,
|
|
1841
|
-
className: (state) => cn2("group/drawer-popup pointer-events-auto fixed m-(--drawer-inset,0px) flex h-(--drawer-content-height) max-h-(--drawer-content-max-height,none) min-h-0 w-(--drawer-content-width,auto) transform-[translate3d(var(--translate-x,0px),var(--translate-y,0px),0)] flex-col border border-frame-edge shadow-frame bg-popover text-sm text-popover-foreground transition-[transform,height,opacity,filter] duration-450 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-transform outline-none select-none [interpolate-size:allow-keywords] data-[swipe-direction=down]:rounded-t-md data-[swipe-direction=down]:border-t data-[swipe-direction=left]:rounded-r-md data-[swipe-direction=left]:border-r data-[swipe-direction=right]:rounded-l-md data-[swipe-direction=right]:border-l data-[swipe-direction=up]:rounded-b-md data-[swipe-direction=up]:border-b", "data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95", "after:pointer-events-none after:absolute after:bg-(--drawer-bleed-background,var(--color-popover)) data-[swipe-axis=x]:after:inset-y-0 data-[swipe-axis=x]:after:w-(--bleed) data-[swipe-axis=y]:after:inset-x-0 data-[swipe-axis=y]:after:h-(--bleed) data-[swipe-direction=down]:after:top-full data-[swipe-direction=left]:after:right-full data-[swipe-direction=right]:after:left-full data-[swipe-direction=up]:after:bottom-full", "[--drawer-content-height:var(--drawer-height,auto)] data-[swipe-axis=x]:[--drawer-content-width:75%] data-[swipe-axis=y]:[--drawer-content-max-height:calc(100dvh-6rem)] data-[swipe-axis=y]:data-snap-points:[--drawer-content-height:100dvh] data-[swipe-axis=x]:sm:[--drawer-content-width:24rem]", "[--bleed:3rem] [--peek:1rem] [--stack-height:var(--drawer-frontmost-height,var(--drawer-height,0px))] [--stack-peek-offset:max(0px,calc((var(--nested-drawers)-var(--stack-progress))*var(--peek)))] [--stack-progress:clamp(0,var(--drawer-swipe-progress),1)] [--stack-shrink:0]", "data-ending-style:transform-(--closed-transform) data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-nested-drawer-swiping:duration-0 data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-starting-style:transform-(--closed-transform) data-swiping:duration-0 data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)]", "data-[swipe-axis=y]:inset-x-0 data-[swipe-axis=y]:data-nested-drawer-open:h-(--stack-height)", "data-[swipe-axis=x]:inset-y-0 data-[swipe-axis=x]:flex-row", "data-[swipe-direction=down]:bottom-0 data-[swipe-direction=down]:origin-bottom data-[swipe-direction=down]:[--closed-transform:translate3d(0,calc(100%+var(--drawer-inset,0px)+2px),0)] data-[swipe-direction=down]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)-var(--stack-peek-offset)-(var(--stack-shrink)*var(--stack-height)))]", "data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:origin-top data-[swipe-direction=up]:[--closed-transform:translate3d(0,calc(-100%-var(--drawer-inset,0px)-2px),0)] data-[swipe-direction=up]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)+var(--stack-peek-offset)+(var(--stack-shrink)*var(--stack-height)))]", "data-[swipe-direction=left]:left-0 data-[swipe-direction=left]:origin-left data-[swipe-direction=left]:[--closed-transform:translate3d(calc(-100%-var(--drawer-inset,0px)-2px),0,0)] data-[swipe-direction=left]:[--translate-x:calc(var(--drawer-swipe-movement-x)+var(--stack-peek-offset)+(var(--stack-shrink)*100%))]", "data-[swipe-direction=right]:right-0 data-[swipe-direction=right]:origin-right data-[swipe-direction=right]:[--closed-transform:translate3d(calc(100%+var(--drawer-inset,0px)+2px),0,0)] data-[swipe-direction=right]:[--translate-x:calc(var(--drawer-swipe-movement-x)-var(--stack-peek-offset)-(var(--stack-shrink)*100%))]", typeof className === "function" ? className(state) : className),
|
|
1842
|
-
...props,
|
|
1843
|
-
children: [
|
|
1844
|
-
showSwipeHandle && /* @__PURE__ */ jsx17(DrawerSwipeHandle, {}),
|
|
1845
|
-
/* @__PURE__ */ jsx17(DrawerPrimitive.Content, {
|
|
1846
|
-
"data-slot": "drawer-content",
|
|
1847
|
-
"data-scroll": "none",
|
|
1848
|
-
className: "flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-300 ease-out select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none",
|
|
1849
|
-
children
|
|
1850
|
-
})
|
|
1851
|
-
]
|
|
1852
|
-
})
|
|
1853
|
-
})
|
|
1854
|
-
]
|
|
1855
|
-
});
|
|
1856
|
-
}
|
|
1857
|
-
function DrawerHeader({ density, className, ...props }) {
|
|
1858
|
-
return /* @__PURE__ */ jsx17("div", {
|
|
1859
|
-
"data-density": density,
|
|
1860
|
-
"data-slot": "drawer-header",
|
|
1861
|
-
className: cn2("flex shrink-0 flex-col gap-0.5 p-panel pb-0 group-data-[swipe-axis=y]/drawer-popup:text-center md:gap-0.5 md:text-start md:group-data-[swipe-axis=y]/drawer-popup:text-start", className),
|
|
1862
|
-
...props
|
|
1863
|
-
});
|
|
1864
|
-
}
|
|
1865
|
-
function DrawerFooter({ density, className, ...props }) {
|
|
1866
|
-
return /* @__PURE__ */ jsx17("div", {
|
|
1867
|
-
"data-density": density,
|
|
1868
|
-
"data-slot": "drawer-footer",
|
|
1869
|
-
className: cn2("mt-auto flex shrink-0 flex-col gap-2 p-panel pt-0", className),
|
|
1870
|
-
...props
|
|
1871
|
-
});
|
|
1872
|
-
}
|
|
1873
|
-
function DrawerTitle({ density, className, ...props }) {
|
|
1874
|
-
return /* @__PURE__ */ jsx17(DrawerPrimitive.Title, {
|
|
1875
|
-
"data-density": density,
|
|
1876
|
-
"data-slot": "drawer-title",
|
|
1877
|
-
className: (state) => cn2(" text-base font-medium text-foreground", typeof className === "function" ? className(state) : className),
|
|
1878
|
-
...props
|
|
1879
|
-
});
|
|
1880
|
-
}
|
|
1881
|
-
function DrawerDescription({ density, className, ...props }) {
|
|
1882
|
-
return /* @__PURE__ */ jsx17(DrawerPrimitive.Description, {
|
|
1883
|
-
"data-density": density,
|
|
1884
|
-
"data-slot": "drawer-description",
|
|
1885
|
-
className: (state) => cn2("text-sm text-balance text-muted-foreground", typeof className === "function" ? className(state) : className),
|
|
1886
|
-
...props
|
|
1887
|
-
});
|
|
1888
|
-
}
|
|
1889
|
-
// src/components/ContextMenu.tsx
|
|
1890
|
-
import { ChevronRightIcon as ChevronRightIcon3, CheckIcon as CheckIcon3 } from "lucide-react";
|
|
1891
|
-
import { useDirection as useDirection5 } from "@base-ui/react/direction-provider";
|
|
1892
|
-
import { ContextMenu as ContextMenuPrimitive } from "@base-ui/react/context-menu";
|
|
1893
|
-
import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1894
|
-
function ContextMenu({ ...props }) {
|
|
1895
|
-
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Root, {
|
|
1896
|
-
"data-slot": "context-menu",
|
|
1897
|
-
...props
|
|
1898
|
-
});
|
|
1899
|
-
}
|
|
1900
|
-
function ContextMenuPortal({ container, ref, children, ...props }) {
|
|
1901
|
-
const resolvedContainer = usePortalContainer2(container);
|
|
1902
|
-
const portal = usePortalNode(ref);
|
|
1903
|
-
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Portal, {
|
|
1904
|
-
"data-slot": "context-menu-portal",
|
|
1905
|
-
container: resolvedContainer,
|
|
1906
|
-
ref: portal.ref,
|
|
1907
|
-
...props,
|
|
1908
|
-
children: /* @__PURE__ */ jsx18(PortalProvider2, {
|
|
1909
|
-
container: portal.node,
|
|
1910
|
-
children
|
|
1911
|
-
})
|
|
1912
|
-
});
|
|
1913
|
-
}
|
|
1914
|
-
function ContextMenuTrigger({ density, className, ...props }) {
|
|
1915
|
-
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Trigger, {
|
|
1916
|
-
"data-density": density,
|
|
1917
|
-
"data-slot": "context-menu-trigger",
|
|
1918
|
-
className: (state) => cn2("select-none", typeof className === "function" ? className(state) : className),
|
|
1919
|
-
...props
|
|
1920
|
-
});
|
|
1921
|
-
}
|
|
1922
|
-
function ContextMenuContent({
|
|
1923
|
-
density,
|
|
1924
|
-
className,
|
|
1925
|
-
align = "start",
|
|
1926
|
-
alignOffset = 4,
|
|
1927
|
-
side = "right",
|
|
1928
|
-
sideOffset = 0,
|
|
1929
|
-
...props
|
|
1930
|
-
}) {
|
|
1931
|
-
const resolvedDensity = useDensity(density);
|
|
1932
|
-
const direction = useDirection5();
|
|
1933
|
-
return /* @__PURE__ */ jsx18(ContextMenuPortal, {
|
|
1934
|
-
children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.Positioner, {
|
|
1935
|
-
dir: direction,
|
|
1936
|
-
className: "isolate outline-none",
|
|
1937
|
-
align,
|
|
1938
|
-
alignOffset,
|
|
1939
|
-
side,
|
|
1940
|
-
sideOffset,
|
|
1941
|
-
children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.Popup, {
|
|
1942
|
-
dir: direction,
|
|
1943
|
-
"data-density": resolvedDensity,
|
|
1944
|
-
"data-slot": "context-menu-content",
|
|
1945
|
-
className: (state) => cn2(" max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-sm bg-popover p-1 text-popover-foreground border border-frame-edge shadow-frame duration-100 outline-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none ", typeof className === "function" ? className(state) : className),
|
|
1946
|
-
...props
|
|
1947
|
-
})
|
|
1948
|
-
})
|
|
1949
|
-
});
|
|
1950
|
-
}
|
|
1951
|
-
function ContextMenuGroup({ ...props }) {
|
|
1952
|
-
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Group, {
|
|
1953
|
-
"data-slot": "context-menu-group",
|
|
1954
|
-
...props
|
|
1955
|
-
});
|
|
1956
|
-
}
|
|
1957
|
-
function ContextMenuLabel({ density, className, inset, ...props }) {
|
|
1958
|
-
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.GroupLabel, {
|
|
1959
|
-
"data-density": density,
|
|
1960
|
-
"data-slot": "context-menu-label",
|
|
1961
|
-
"data-inset": inset,
|
|
1962
|
-
className: (state) => cn2("px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:ps-7", typeof className === "function" ? className(state) : className),
|
|
1963
|
-
...props
|
|
1964
|
-
});
|
|
1965
|
-
}
|
|
1966
|
-
function ContextMenuItem({ density, className, inset, variant = "default", ...props }) {
|
|
1967
|
-
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Item, {
|
|
1968
|
-
"data-density": density,
|
|
1969
|
-
"data-slot": "context-menu-item",
|
|
1970
|
-
"data-inset": inset,
|
|
1971
|
-
"data-variant": variant,
|
|
1972
|
-
className: (state) => cn2("group/context-menu-item relative flex cursor-default items-center gap-control-gap rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive", typeof className === "function" ? className(state) : className),
|
|
1973
|
-
...props
|
|
1974
|
-
});
|
|
1975
|
-
}
|
|
1976
|
-
function ContextMenuSub({ ...props }) {
|
|
1977
|
-
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.SubmenuRoot, {
|
|
1978
|
-
"data-slot": "context-menu-sub",
|
|
1979
|
-
...props
|
|
1980
|
-
});
|
|
1981
|
-
}
|
|
1982
|
-
function ContextMenuSubTrigger({ density, className, inset, children, ...props }) {
|
|
1983
|
-
return /* @__PURE__ */ jsxs12(ContextMenuPrimitive.SubmenuTrigger, {
|
|
1984
|
-
"data-density": density,
|
|
1985
|
-
"data-slot": "context-menu-sub-trigger",
|
|
1986
|
-
"data-inset": inset,
|
|
1987
|
-
className: (state) => cn2("flex cursor-default items-center gap-control-gap rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
1988
|
-
...props,
|
|
1989
|
-
children: [
|
|
1990
|
-
children,
|
|
1991
|
-
/* @__PURE__ */ jsx18(ChevronRightIcon3, {
|
|
1992
|
-
className: "rtl:rotate-180 ms-auto"
|
|
1993
|
-
})
|
|
1994
|
-
]
|
|
1995
|
-
});
|
|
1996
|
-
}
|
|
1997
|
-
function ContextMenuSubContent({ ...props }) {
|
|
1998
|
-
return /* @__PURE__ */ jsx18(ContextMenuContent, {
|
|
1999
|
-
"data-slot": "context-menu-sub-content",
|
|
2000
|
-
className: " shadow-frame border border-frame-edge",
|
|
2001
|
-
side: "inline-end",
|
|
2002
|
-
...props
|
|
2003
|
-
});
|
|
2004
|
-
}
|
|
2005
|
-
function ContextMenuCheckboxItem({
|
|
2006
|
-
density,
|
|
2007
|
-
className,
|
|
2008
|
-
children,
|
|
2009
|
-
checked,
|
|
2010
|
-
inset,
|
|
2011
|
-
...props
|
|
2012
|
-
}) {
|
|
2013
|
-
return /* @__PURE__ */ jsxs12(ContextMenuPrimitive.CheckboxItem, {
|
|
2014
|
-
"data-density": density,
|
|
2015
|
-
"data-slot": "context-menu-checkbox-item",
|
|
2016
|
-
"data-inset": inset,
|
|
2017
|
-
className: (state) => cn2("relative flex cursor-default items-center gap-control-gap rounded-md py-1 pe-8 ps-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
2018
|
-
checked,
|
|
2019
|
-
...props,
|
|
2020
|
-
children: [
|
|
2021
|
-
/* @__PURE__ */ jsx18("span", {
|
|
2022
|
-
className: "pointer-events-none absolute end-2",
|
|
2023
|
-
children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.CheckboxItemIndicator, {
|
|
2024
|
-
children: /* @__PURE__ */ jsx18(CheckIcon3, {})
|
|
2025
|
-
})
|
|
2026
|
-
}),
|
|
2027
|
-
children
|
|
2028
|
-
]
|
|
2029
|
-
});
|
|
2030
|
-
}
|
|
2031
|
-
function ContextMenuRadioGroup({ ...props }) {
|
|
2032
|
-
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.RadioGroup, {
|
|
2033
|
-
"data-slot": "context-menu-radio-group",
|
|
2034
|
-
...props
|
|
2035
|
-
});
|
|
2036
|
-
}
|
|
2037
|
-
function ContextMenuRadioItem({ density, className, children, inset, ...props }) {
|
|
2038
|
-
return /* @__PURE__ */ jsxs12(ContextMenuPrimitive.RadioItem, {
|
|
2039
|
-
"data-density": density,
|
|
2040
|
-
"data-slot": "context-menu-radio-item",
|
|
2041
|
-
"data-inset": inset,
|
|
2042
|
-
className: (state) => cn2("relative flex cursor-default items-center gap-control-gap rounded-md py-1 pe-8 ps-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
2043
|
-
...props,
|
|
2044
|
-
children: [
|
|
2045
|
-
/* @__PURE__ */ jsx18("span", {
|
|
2046
|
-
className: "pointer-events-none absolute end-2",
|
|
2047
|
-
children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.RadioItemIndicator, {
|
|
2048
|
-
children: /* @__PURE__ */ jsx18(CheckIcon3, {})
|
|
2049
|
-
})
|
|
2050
|
-
}),
|
|
2051
|
-
children
|
|
2052
|
-
]
|
|
2053
|
-
});
|
|
2054
|
-
}
|
|
2055
|
-
function ContextMenuSeparator({ density, className, ...props }) {
|
|
2056
|
-
return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Separator, {
|
|
2057
|
-
"data-density": density,
|
|
2058
|
-
"data-slot": "context-menu-separator",
|
|
2059
|
-
className: (state) => cn2("-mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
|
|
2060
|
-
...props
|
|
2061
|
-
});
|
|
2062
|
-
}
|
|
2063
|
-
function ContextMenuShortcut({ density, className, ...props }) {
|
|
2064
|
-
return /* @__PURE__ */ jsx18("span", {
|
|
2065
|
-
"data-density": density,
|
|
2066
|
-
"data-slot": "context-menu-shortcut",
|
|
2067
|
-
className: cn2("ms-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground", className),
|
|
2068
|
-
...props
|
|
2069
|
-
});
|
|
2070
|
-
}
|
|
2071
|
-
// src/components/Menubar.tsx
|
|
2072
|
-
import { CheckIcon as CheckIcon4 } from "lucide-react";
|
|
2073
|
-
import { Menu as MenuPrimitive } from "@base-ui/react/menu";
|
|
2074
|
-
import { Menubar as MenubarPrimitive } from "@base-ui/react/menubar";
|
|
2075
|
-
import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2076
|
-
function Menubar({ density, className, ...props }) {
|
|
2077
|
-
return /* @__PURE__ */ jsx19(MenubarPrimitive, {
|
|
2078
|
-
"data-density": density,
|
|
2079
|
-
"data-slot": "menubar",
|
|
2080
|
-
className: (state) => cn2("flex h-control items-center gap-0.5 rounded-sm border p-px", typeof className === "function" ? className(state) : className),
|
|
2081
|
-
...props
|
|
2082
|
-
});
|
|
2083
|
-
}
|
|
2084
|
-
function MenubarMenu({ ...props }) {
|
|
2085
|
-
return /* @__PURE__ */ jsx19(DropdownMenu2, {
|
|
2086
|
-
"data-slot": "menubar-menu",
|
|
2087
|
-
...props
|
|
2088
|
-
});
|
|
2089
|
-
}
|
|
2090
|
-
function MenubarGroup({ ...props }) {
|
|
2091
|
-
return /* @__PURE__ */ jsx19(DropdownMenuGroup2, {
|
|
2092
|
-
"data-slot": "menubar-group",
|
|
2093
|
-
...props
|
|
2094
|
-
});
|
|
2095
|
-
}
|
|
2096
|
-
function MenubarPortal({ ...props }) {
|
|
2097
|
-
return /* @__PURE__ */ jsx19(DropdownMenuPortal2, {
|
|
2098
|
-
"data-slot": "menubar-portal",
|
|
2099
|
-
...props
|
|
2100
|
-
});
|
|
2101
|
-
}
|
|
2102
|
-
function MenubarTrigger({ density, className, ...props }) {
|
|
2103
|
-
return /* @__PURE__ */ jsx19(DropdownMenuTrigger2, {
|
|
2104
|
-
"data-density": density,
|
|
2105
|
-
"data-slot": "menubar-trigger",
|
|
2106
|
-
className: (state) => cn2("flex h-full items-center rounded-sm px-control-x text-sm leading-none font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted", typeof className === "function" ? className(state) : className),
|
|
2107
|
-
...props
|
|
2108
|
-
});
|
|
2109
|
-
}
|
|
2110
|
-
function MenubarContent({
|
|
2111
|
-
density,
|
|
2112
|
-
className,
|
|
2113
|
-
align = "start",
|
|
2114
|
-
alignOffset = -4,
|
|
2115
|
-
sideOffset = 8,
|
|
2116
|
-
...props
|
|
2117
|
-
}) {
|
|
2118
|
-
return /* @__PURE__ */ jsx19(DropdownMenuContent2, {
|
|
2119
|
-
density,
|
|
2120
|
-
"data-slot": "menubar-content",
|
|
2121
|
-
align,
|
|
2122
|
-
alignOffset,
|
|
2123
|
-
sideOffset,
|
|
2124
|
-
className: (state) => cn2(" min-w-36 rounded-sm bg-popover p-1 text-popover-foreground border border-frame-edge shadow-frame duration-100 data-open:animate-in data-open:fade-in-0 ", typeof className === "function" ? className(state) : className),
|
|
2125
|
-
...props
|
|
2126
|
-
});
|
|
2127
|
-
}
|
|
2128
|
-
function MenubarItem({ density, className, inset, variant = "default", ...props }) {
|
|
2129
|
-
return /* @__PURE__ */ jsx19(DropdownMenuItem2, {
|
|
2130
|
-
density,
|
|
2131
|
-
"data-slot": "menubar-item",
|
|
2132
|
-
inset,
|
|
2133
|
-
variant,
|
|
2134
|
-
className: (state) => cn2("group/menubar-item gap-control-gap rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!", typeof className === "function" ? className(state) : className),
|
|
2135
|
-
...props
|
|
2136
|
-
});
|
|
2137
|
-
}
|
|
2138
|
-
function MenubarCheckboxItem({
|
|
2139
|
-
density,
|
|
2140
|
-
className,
|
|
2141
|
-
children,
|
|
2142
|
-
checked,
|
|
2143
|
-
inset,
|
|
2144
|
-
...props
|
|
2145
|
-
}) {
|
|
2146
|
-
return /* @__PURE__ */ jsxs13(MenuPrimitive.CheckboxItem, {
|
|
2147
|
-
"data-density": density,
|
|
2148
|
-
"data-slot": "menubar-checkbox-item",
|
|
2149
|
-
"data-inset": inset,
|
|
2150
|
-
className: (state) => cn2("relative flex cursor-default items-center gap-control-gap rounded-md py-1 pe-1.5 ps-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", typeof className === "function" ? className(state) : className),
|
|
2151
|
-
checked,
|
|
2152
|
-
...props,
|
|
2153
|
-
children: [
|
|
2154
|
-
/* @__PURE__ */ jsx19("span", {
|
|
2155
|
-
className: "pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
|
|
2156
|
-
children: /* @__PURE__ */ jsx19(MenuPrimitive.CheckboxItemIndicator, {
|
|
2157
|
-
children: /* @__PURE__ */ jsx19(CheckIcon4, {})
|
|
2158
|
-
})
|
|
2159
|
-
}),
|
|
2160
|
-
children
|
|
2161
|
-
]
|
|
2162
|
-
});
|
|
2163
|
-
}
|
|
2164
|
-
function MenubarRadioGroup({ ...props }) {
|
|
2165
|
-
return /* @__PURE__ */ jsx19(DropdownMenuRadioGroup2, {
|
|
2166
|
-
"data-slot": "menubar-radio-group",
|
|
2167
|
-
...props
|
|
2168
|
-
});
|
|
2169
|
-
}
|
|
2170
|
-
function MenubarRadioItem({ density, className, children, inset, ...props }) {
|
|
2171
|
-
return /* @__PURE__ */ jsxs13(MenuPrimitive.RadioItem, {
|
|
2172
|
-
"data-density": density,
|
|
2173
|
-
"data-slot": "menubar-radio-item",
|
|
2174
|
-
"data-inset": inset,
|
|
2175
|
-
className: (state) => cn2("relative flex cursor-default items-center gap-control-gap rounded-md py-1 pe-1.5 ps-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
2176
|
-
...props,
|
|
2177
|
-
children: [
|
|
2178
|
-
/* @__PURE__ */ jsx19("span", {
|
|
2179
|
-
className: "pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
|
|
2180
|
-
children: /* @__PURE__ */ jsx19(MenuPrimitive.RadioItemIndicator, {
|
|
2181
|
-
children: /* @__PURE__ */ jsx19(CheckIcon4, {})
|
|
2182
|
-
})
|
|
2183
|
-
}),
|
|
2184
|
-
children
|
|
2185
|
-
]
|
|
2186
|
-
});
|
|
2187
|
-
}
|
|
2188
|
-
function MenubarLabel({ density, className, inset, ...props }) {
|
|
2189
|
-
return /* @__PURE__ */ jsx19(DropdownMenuLabel2, {
|
|
2190
|
-
density,
|
|
2191
|
-
"data-slot": "menubar-label",
|
|
2192
|
-
inset,
|
|
2193
|
-
className: (state) => cn2("px-1.5 py-1 text-sm font-medium data-inset:ps-7", typeof className === "function" ? className(state) : className),
|
|
2194
|
-
...props
|
|
2195
|
-
});
|
|
2196
|
-
}
|
|
2197
|
-
function MenubarSeparator({ density, className, ...props }) {
|
|
2198
|
-
return /* @__PURE__ */ jsx19(DropdownMenuSeparator2, {
|
|
2199
|
-
density,
|
|
2200
|
-
"data-slot": "menubar-separator",
|
|
2201
|
-
className: (state) => cn2("-mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
|
|
2202
|
-
...props
|
|
2203
|
-
});
|
|
2204
|
-
}
|
|
2205
|
-
function MenubarShortcut({ density, className, ...props }) {
|
|
2206
|
-
return /* @__PURE__ */ jsx19(DropdownMenuShortcut2, {
|
|
2207
|
-
"data-density": density,
|
|
2208
|
-
"data-slot": "menubar-shortcut",
|
|
2209
|
-
className: cn2("ms-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground", className),
|
|
2210
|
-
...props
|
|
2211
|
-
});
|
|
2212
|
-
}
|
|
2213
|
-
function MenubarSub({ ...props }) {
|
|
2214
|
-
return /* @__PURE__ */ jsx19(DropdownMenuSub2, {
|
|
2215
|
-
"data-slot": "menubar-sub",
|
|
2216
|
-
...props
|
|
2217
|
-
});
|
|
2218
|
-
}
|
|
2219
|
-
function MenubarSubTrigger({ density, className, inset, ...props }) {
|
|
2220
|
-
return /* @__PURE__ */ jsx19(DropdownMenuSubTrigger2, {
|
|
2221
|
-
density,
|
|
2222
|
-
"data-slot": "menubar-sub-trigger",
|
|
2223
|
-
inset,
|
|
2224
|
-
className: (state) => cn2("gap-control-gap rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
2225
|
-
...props
|
|
2226
|
-
});
|
|
2227
|
-
}
|
|
2228
|
-
function MenubarSubContent({ density, className, ...props }) {
|
|
2229
|
-
return /* @__PURE__ */ jsx19(DropdownMenuSubContent2, {
|
|
2230
|
-
density,
|
|
2231
|
-
"data-slot": "menubar-sub-content",
|
|
2232
|
-
className: (state) => cn2(" min-w-32 rounded-sm bg-popover p-1 text-popover-foreground shadow-frame border border-frame-edge border border-frame-edge shadow-frame duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 ", typeof className === "function" ? className(state) : className),
|
|
2233
|
-
...props
|
|
2234
|
-
});
|
|
2235
|
-
}
|
|
2236
|
-
// src/components/NavigationMenu.tsx
|
|
2237
|
-
import { ChevronDownIcon as ChevronDownIcon4 } from "lucide-react";
|
|
2238
|
-
import { NavigationMenu as NavigationMenuPrimitive } from "@base-ui/react/navigation-menu";
|
|
2239
|
-
import { cva as cva3 } from "class-variance-authority";
|
|
2240
|
-
import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2241
|
-
function NavigationMenu({
|
|
2242
|
-
density,
|
|
2243
|
-
align = "start",
|
|
2244
|
-
className,
|
|
2245
|
-
children,
|
|
2246
|
-
...props
|
|
2247
|
-
}) {
|
|
2248
|
-
const resolvedDensity = useDensity(density);
|
|
2249
|
-
return /* @__PURE__ */ jsxs14(NavigationMenuPrimitive.Root, {
|
|
2250
|
-
"data-density": resolvedDensity,
|
|
2251
|
-
"data-slot": "navigation-menu",
|
|
2252
|
-
className: (state) => cn2("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", typeof className === "function" ? className(state) : className),
|
|
2253
|
-
...props,
|
|
2254
|
-
children: [
|
|
2255
|
-
children,
|
|
2256
|
-
/* @__PURE__ */ jsx20(NavigationMenuPositioner, {
|
|
2257
|
-
density: resolvedDensity,
|
|
2258
|
-
align
|
|
2259
|
-
})
|
|
2260
|
-
]
|
|
2261
|
-
});
|
|
2262
|
-
}
|
|
2263
|
-
function NavigationMenuList({ density, className, ...props }) {
|
|
2264
|
-
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.List, {
|
|
2265
|
-
"data-density": density,
|
|
2266
|
-
"data-slot": "navigation-menu-list",
|
|
2267
|
-
className: (state) => cn2("group flex flex-1 list-none items-center justify-center gap-0", typeof className === "function" ? className(state) : className),
|
|
2268
|
-
...props
|
|
2269
|
-
});
|
|
2270
|
-
}
|
|
2271
|
-
function NavigationMenuItem({ density, className, ...props }) {
|
|
2272
|
-
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Item, {
|
|
2273
|
-
"data-density": density,
|
|
2274
|
-
"data-slot": "navigation-menu-item",
|
|
2275
|
-
className: (state) => cn2("relative", typeof className === "function" ? className(state) : className),
|
|
2276
|
-
...props
|
|
2277
|
-
});
|
|
2278
|
-
}
|
|
2279
|
-
var navigationMenuTriggerStyle = cva3("group/navigation-menu-trigger inline-flex h-control-lg w-max items-center justify-center rounded-sm px-control-x py-1.5 text-sm font-medium transition-colors outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted");
|
|
2280
|
-
function NavigationMenuTrigger({ density, className, children, ...props }) {
|
|
2281
|
-
return /* @__PURE__ */ jsxs14(NavigationMenuPrimitive.Trigger, {
|
|
2282
|
-
"data-density": density,
|
|
2283
|
-
"data-slot": "navigation-menu-trigger",
|
|
2284
|
-
className: (state) => cn2(navigationMenuTriggerStyle(), "group", typeof className === "function" ? className(state) : className),
|
|
2285
|
-
...props,
|
|
2286
|
-
children: [
|
|
2287
|
-
children,
|
|
2288
|
-
" ",
|
|
2289
|
-
/* @__PURE__ */ jsx20(NavigationMenuIndicator, {})
|
|
2290
|
-
]
|
|
2291
|
-
});
|
|
2292
|
-
}
|
|
2293
|
-
function NavigationMenuContent({ density, className, ...props }) {
|
|
2294
|
-
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Content, {
|
|
2295
|
-
"data-density": density,
|
|
2296
|
-
"data-slot": "navigation-menu-content",
|
|
2297
|
-
className: (state) => cn2("data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-1 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-ending-style:opacity-0 data-starting-style:opacity-0 ", typeof className === "function" ? className(state) : className),
|
|
2298
|
-
...props
|
|
2299
|
-
});
|
|
2300
|
-
}
|
|
2301
|
-
function NavigationMenuPositioner({
|
|
2302
|
-
density,
|
|
2303
|
-
className,
|
|
2304
|
-
side = "bottom",
|
|
2305
|
-
sideOffset = 8,
|
|
2306
|
-
align = "start",
|
|
2307
|
-
alignOffset = 0,
|
|
2308
|
-
...props
|
|
2309
|
-
}) {
|
|
2310
|
-
const resolvedDensity = useDensity(density);
|
|
2311
|
-
const direction = useDirection2();
|
|
2312
|
-
const container = usePortalContainer2();
|
|
2313
|
-
const portal = usePortalNode();
|
|
2314
|
-
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Portal, {
|
|
2315
|
-
container,
|
|
2316
|
-
ref: portal.ref,
|
|
2317
|
-
children: /* @__PURE__ */ jsx20(PortalProvider2, {
|
|
2318
|
-
container: portal.node,
|
|
2319
|
-
children: /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Positioner, {
|
|
2320
|
-
dir: direction,
|
|
2321
|
-
side,
|
|
2322
|
-
sideOffset,
|
|
2323
|
-
align,
|
|
2324
|
-
alignOffset,
|
|
2325
|
-
className: (state) => cn2("isolate h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0", typeof className === "function" ? className(state) : className),
|
|
2326
|
-
...props,
|
|
2327
|
-
children: /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Popup, {
|
|
2328
|
-
"data-density": resolvedDensity,
|
|
2329
|
-
"data-slot": "navigation-menu-popup",
|
|
2330
|
-
className: "data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-sm bg-popover text-popover-foreground border border-frame-edge shadow-frame transition-[opacity,transform,width,height,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:opacity-0",
|
|
2331
|
-
children: /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Viewport, {
|
|
2332
|
-
className: "relative size-full overflow-hidden"
|
|
2333
|
-
})
|
|
2334
|
-
})
|
|
2335
|
-
})
|
|
2336
|
-
})
|
|
2337
|
-
});
|
|
2338
|
-
}
|
|
2339
|
-
function NavigationMenuLink({ density, className, ...props }) {
|
|
2340
|
-
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Link, {
|
|
2341
|
-
"data-density": density,
|
|
2342
|
-
"data-slot": "navigation-menu-link",
|
|
2343
|
-
className: (state) => cn2("flex items-center gap-2 rounded-sm p-2 text-sm transition-colors outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
|
|
2344
|
-
...props
|
|
2345
|
-
});
|
|
2346
|
-
}
|
|
2347
|
-
function NavigationMenuIndicator({
|
|
2348
|
-
density,
|
|
2349
|
-
className,
|
|
2350
|
-
children,
|
|
2351
|
-
...props
|
|
2352
|
-
}) {
|
|
2353
|
-
return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Icon, {
|
|
2354
|
-
"data-density": density,
|
|
2355
|
-
"data-slot": "navigation-menu-indicator",
|
|
2356
|
-
className: (state) => cn2("ms-1 inline-flex size-3 shrink-0 items-center justify-center transition-transform duration-120 data-popup-open:rotate-180 [&_svg]:size-full", typeof className === "function" ? className(state) : className),
|
|
2357
|
-
...props,
|
|
2358
|
-
children: children ?? /* @__PURE__ */ jsx20(ChevronDownIcon4, {})
|
|
2359
|
-
});
|
|
2360
|
-
}
|
|
2361
|
-
// src/components/Toast.tsx
|
|
2362
|
-
import { Toast as ToastPrimitive } from "@base-ui/react/toast";
|
|
2363
|
-
import { CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, LoaderCircleIcon, XIcon as XIcon2 } from "lucide-react";
|
|
2364
|
-
import { jsx as jsx21, jsxs as jsxs15, Fragment } from "react/jsx-runtime";
|
|
2365
|
-
function ToastProvider(props) {
|
|
2366
|
-
return /* @__PURE__ */ jsx21(ToastPrimitive.Provider, {
|
|
2367
|
-
...props
|
|
2368
|
-
});
|
|
2369
|
-
}
|
|
2370
|
-
function ToastPortal({ container, ref, children, ...props }) {
|
|
2371
|
-
const resolvedContainer = usePortalContainer2(container);
|
|
2372
|
-
const portal = usePortalNode(ref);
|
|
2373
|
-
return /* @__PURE__ */ jsx21(ToastPrimitive.Portal, {
|
|
2374
|
-
"data-slot": "toast-portal",
|
|
2375
|
-
container: resolvedContainer,
|
|
2376
|
-
ref: portal.ref,
|
|
2377
|
-
...props,
|
|
2378
|
-
children: /* @__PURE__ */ jsx21(PortalProvider2, {
|
|
2379
|
-
container: portal.node,
|
|
2380
|
-
children
|
|
2381
|
-
})
|
|
2382
|
-
});
|
|
2383
|
-
}
|
|
2384
|
-
function ToastViewport({ density, dir, className, ...props }) {
|
|
2385
|
-
const resolvedDensity = useDensity(density);
|
|
2386
|
-
const inheritedDirection = useDirection2();
|
|
2387
|
-
return /* @__PURE__ */ jsx21(ToastPrimitive.Viewport, {
|
|
2388
|
-
dir: dir ?? inheritedDirection,
|
|
2389
|
-
"data-density": resolvedDensity,
|
|
2390
|
-
"data-slot": "toast-viewport",
|
|
2391
|
-
className: (state) => cn2("pointer-events-none fixed inset-x-4 bottom-4 isolate mx-auto max-w-sm outline-none sm:right-4 sm:left-auto sm:mx-0 sm:w-full", typeof className === "function" ? className(state) : className),
|
|
2392
|
-
...props
|
|
2393
|
-
});
|
|
2394
|
-
}
|
|
2395
|
-
function Toast({ density, className, ...props }) {
|
|
2396
|
-
return /* @__PURE__ */ jsx21(ToastPrimitive.Root, {
|
|
2397
|
-
"data-density": density,
|
|
2398
|
-
"data-slot": "toast",
|
|
2399
|
-
className: (state) => cn2("group/toast pointer-events-auto absolute right-0 bottom-0 w-full rounded-md border border-frame-edge bg-popover text-popover-foreground shadow-frame outline-none select-none focus-visible:ring-1 focus-visible:ring-ring [--offset-y:calc(var(--toast-offset-y)*-1-var(--toast-index)*var(--spacing-panel))] [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--offset-y)+var(--toast-swipe-movement-y)))] transition-[transform,opacity] duration-120 ease-out data-limited:opacity-0 data-starting-style:opacity-0 data-ending-style:opacity-0 motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
|
|
2400
|
-
...props
|
|
2401
|
-
});
|
|
2402
|
-
}
|
|
2403
|
-
function ToastContent({ className, ...props }) {
|
|
2404
|
-
return /* @__PURE__ */ jsx21(ToastPrimitive.Content, {
|
|
2405
|
-
"data-slot": "toast-content",
|
|
2406
|
-
className: (state) => cn2("flex items-center gap-control-gap p-panel", typeof className === "function" ? className(state) : className),
|
|
2407
|
-
...props
|
|
2408
|
-
});
|
|
2409
|
-
}
|
|
2410
|
-
function ToastTitle({ className, ...props }) {
|
|
2411
|
-
return /* @__PURE__ */ jsx21(ToastPrimitive.Title, {
|
|
2412
|
-
"data-slot": "toast-title",
|
|
2413
|
-
className: (state) => cn2("text-sm font-medium", typeof className === "function" ? className(state) : className),
|
|
2414
|
-
...props
|
|
2415
|
-
});
|
|
2416
|
-
}
|
|
2417
|
-
function ToastDescription({ className, ...props }) {
|
|
2418
|
-
return /* @__PURE__ */ jsx21(ToastPrimitive.Description, {
|
|
2419
|
-
"data-slot": "toast-description",
|
|
2420
|
-
className: (state) => cn2("text-sm text-muted-foreground", typeof className === "function" ? className(state) : className),
|
|
2421
|
-
...props
|
|
2422
|
-
});
|
|
2423
|
-
}
|
|
2424
|
-
function ToastAction({
|
|
2425
|
-
className,
|
|
2426
|
-
render = /* @__PURE__ */ jsx21(Button2, {
|
|
2427
|
-
variant: "outline",
|
|
2428
|
-
size: "sm"
|
|
2429
|
-
}),
|
|
2430
|
-
...props
|
|
2431
|
-
}) {
|
|
2432
|
-
return /* @__PURE__ */ jsx21(ToastPrimitive.Action, {
|
|
2433
|
-
"data-slot": "toast-action",
|
|
2434
|
-
render,
|
|
2435
|
-
className: (state) => cn2("shrink-0", typeof className === "function" ? className(state) : className),
|
|
2436
|
-
...props
|
|
2437
|
-
});
|
|
2438
|
-
}
|
|
2439
|
-
function ToastClose({
|
|
2440
|
-
className,
|
|
2441
|
-
children,
|
|
2442
|
-
render = /* @__PURE__ */ jsx21(Button2, {
|
|
2443
|
-
variant: "ghost",
|
|
2444
|
-
size: "icon-sm"
|
|
2445
|
-
}),
|
|
2446
|
-
...props
|
|
2447
|
-
}) {
|
|
2448
|
-
return /* @__PURE__ */ jsx21(ToastPrimitive.Close, {
|
|
2449
|
-
"data-slot": "toast-close",
|
|
2450
|
-
"aria-label": "Close toast",
|
|
2451
|
-
render,
|
|
2452
|
-
className: (state) => cn2("relative shrink-0 text-muted-foreground hover:text-foreground", typeof className === "function" ? className(state) : className),
|
|
2453
|
-
...props,
|
|
2454
|
-
children: children ?? /* @__PURE__ */ jsx21(XIcon2, {
|
|
2455
|
-
"aria-hidden": "true"
|
|
2456
|
-
})
|
|
2457
|
-
});
|
|
2458
|
-
}
|
|
2459
|
-
function ToastIcon({ type }) {
|
|
2460
|
-
switch (type) {
|
|
2461
|
-
case "success":
|
|
2462
|
-
return /* @__PURE__ */ jsx21(CircleCheckIcon, {
|
|
2463
|
-
"aria-hidden": "true"
|
|
2464
|
-
});
|
|
2465
|
-
case "info":
|
|
2466
|
-
return /* @__PURE__ */ jsx21(InfoIcon, {
|
|
2467
|
-
"aria-hidden": "true"
|
|
2468
|
-
});
|
|
2469
|
-
case "warning":
|
|
2470
|
-
return /* @__PURE__ */ jsx21(TriangleAlertIcon, {
|
|
2471
|
-
"aria-hidden": "true"
|
|
2472
|
-
});
|
|
2473
|
-
case "error":
|
|
2474
|
-
return /* @__PURE__ */ jsx21(OctagonXIcon, {
|
|
2475
|
-
"aria-hidden": "true",
|
|
2476
|
-
className: "text-destructive"
|
|
2477
|
-
});
|
|
2478
|
-
case "loading":
|
|
2479
|
-
return /* @__PURE__ */ jsx21(LoaderCircleIcon, {
|
|
2480
|
-
"aria-hidden": "true",
|
|
2481
|
-
className: "animate-spin motion-reduce:animate-none"
|
|
2482
|
-
});
|
|
2483
|
-
default:
|
|
2484
|
-
return null;
|
|
2485
|
-
}
|
|
2486
|
-
}
|
|
2487
|
-
function ToastList() {
|
|
2488
|
-
const { toasts } = ToastPrimitive.useToastManager();
|
|
2489
|
-
return /* @__PURE__ */ jsx21(Fragment, {
|
|
2490
|
-
children: toasts.map((toastItem) => /* @__PURE__ */ jsx21(Toast, {
|
|
2491
|
-
toast: toastItem,
|
|
2492
|
-
children: /* @__PURE__ */ jsxs15(ToastContent, {
|
|
2493
|
-
children: [
|
|
2494
|
-
/* @__PURE__ */ jsx21("span", {
|
|
2495
|
-
"data-slot": "toast-icon",
|
|
2496
|
-
className: "shrink-0 empty:hidden [&_svg]:size-4",
|
|
2497
|
-
children: /* @__PURE__ */ jsx21(ToastIcon, {
|
|
2498
|
-
type: toastItem.type
|
|
2499
|
-
})
|
|
2500
|
-
}),
|
|
2501
|
-
/* @__PURE__ */ jsxs15("div", {
|
|
2502
|
-
className: "flex min-w-0 flex-1 flex-col gap-1",
|
|
2503
|
-
children: [
|
|
2504
|
-
/* @__PURE__ */ jsx21(ToastTitle, {}),
|
|
2505
|
-
/* @__PURE__ */ jsx21(ToastDescription, {})
|
|
2506
|
-
]
|
|
2507
|
-
}),
|
|
2508
|
-
/* @__PURE__ */ jsx21(ToastAction, {}),
|
|
2509
|
-
/* @__PURE__ */ jsx21(ToastClose, {})
|
|
2510
|
-
]
|
|
2511
|
-
})
|
|
2512
|
-
}, toastItem.id))
|
|
2513
|
-
});
|
|
2514
|
-
}
|
|
2515
|
-
function ToastToaster({ children, density, ...props }) {
|
|
2516
|
-
return /* @__PURE__ */ jsxs15(ToastProvider, {
|
|
2517
|
-
...props,
|
|
2518
|
-
children: [
|
|
2519
|
-
children,
|
|
2520
|
-
/* @__PURE__ */ jsx21(ToastPortal, {
|
|
2521
|
-
children: /* @__PURE__ */ jsx21(ToastViewport, {
|
|
2522
|
-
density,
|
|
2523
|
-
children: /* @__PURE__ */ jsx21(ToastList, {})
|
|
2524
|
-
})
|
|
2525
|
-
})
|
|
2526
|
-
]
|
|
2527
|
-
});
|
|
2528
|
-
}
|
|
2529
|
-
var createToastManager = ToastPrimitive.createToastManager;
|
|
2530
|
-
// src/hooks/useToastManager.ts
|
|
2531
|
-
import { Toast as Toast2 } from "@base-ui/react/toast";
|
|
2532
|
-
function useToastManager() {
|
|
2533
|
-
return Toast2.useToastManager();
|
|
2534
|
-
}
|
|
2535
|
-
// src/components/Marker.tsx
|
|
2536
|
-
import { mergeProps as mergeProps6 } from "@base-ui/react/merge-props";
|
|
2537
|
-
import { useRender as useRender6 } from "@base-ui/react/use-render";
|
|
2538
|
-
import { cva as cva4 } from "class-variance-authority";
|
|
2539
|
-
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
2540
|
-
var markerVariants = cva4("group/marker relative flex min-h-4 w-full items-center gap-control-gap text-start text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [a]:underline [a]:underline-offset-3 [a]:hover:text-foreground [&:is(a,button)]:outline-none [&:is(a,button)]:focus-visible:outline-1 [&:is(a,button)]:focus-visible:outline-ring", {
|
|
2541
|
-
variants: {
|
|
2542
|
-
variant: {
|
|
2543
|
-
default: "",
|
|
2544
|
-
separator: "before:me-1 before:h-px before:min-w-0 before:flex-1 before:bg-border after:ms-1 after:h-px after:min-w-0 after:flex-1 after:bg-border",
|
|
2545
|
-
border: "border-b border-border pb-control-gap"
|
|
2546
|
-
}
|
|
2547
|
-
}
|
|
2548
|
-
});
|
|
2549
|
-
function Marker({ density, className, variant = "default", render, ...props }) {
|
|
2550
|
-
return useRender6({
|
|
2551
|
-
defaultTagName: "div",
|
|
2552
|
-
props: mergeProps6({ className: cn2(markerVariants({ variant, className })) }, props),
|
|
2553
|
-
render,
|
|
2554
|
-
state: { slot: "marker", variant, density }
|
|
2555
|
-
});
|
|
2556
|
-
}
|
|
2557
|
-
function MarkerIcon({ density, className, ...props }) {
|
|
2558
|
-
return /* @__PURE__ */ jsx22("span", {
|
|
2559
|
-
"data-density": density,
|
|
2560
|
-
"data-slot": "marker-icon",
|
|
2561
|
-
"aria-hidden": "true",
|
|
2562
|
-
className: cn2("size-4 shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
2563
|
-
...props
|
|
2564
|
-
});
|
|
2565
|
-
}
|
|
2566
|
-
function MarkerContent({ density, className, ...props }) {
|
|
2567
|
-
return /* @__PURE__ */ jsx22("span", {
|
|
2568
|
-
"data-density": density,
|
|
2569
|
-
"data-slot": "marker-content",
|
|
2570
|
-
className: cn2("min-w-0 wrap-break-word group-data-[variant=separator]/marker:text-center [&>a]:underline [&>a]:underline-offset-3 [&>a:hover]:text-foreground", className),
|
|
2571
|
-
...props
|
|
2572
|
-
});
|
|
2573
|
-
}
|
|
2574
|
-
// src/components/Bubble.tsx
|
|
2575
|
-
import { mergeProps as mergeProps7 } from "@base-ui/react/merge-props";
|
|
2576
|
-
import { useRender as useRender7 } from "@base-ui/react/use-render";
|
|
2577
|
-
import { cva as cva5 } from "class-variance-authority";
|
|
2578
|
-
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
2579
|
-
function BubbleGroup({ density, className, ...props }) {
|
|
2580
|
-
return /* @__PURE__ */ jsx23("div", {
|
|
2581
|
-
"data-density": density,
|
|
2582
|
-
"data-slot": "bubble-group",
|
|
2583
|
-
className: cn2("flex min-w-0 flex-col gap-control-gap", className),
|
|
2584
|
-
...props
|
|
2585
|
-
});
|
|
2586
|
-
}
|
|
2587
|
-
var bubbleVariants = cva5("group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full", {
|
|
2588
|
-
variants: {
|
|
2589
|
-
variant: {
|
|
2590
|
-
default: "*:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80",
|
|
2591
|
-
secondary: "*:data-[slot=bubble-content]:bg-secondary *:data-[slot=bubble-content]:text-secondary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)]",
|
|
2592
|
-
muted: "*:data-[slot=bubble-content]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--muted),var(--foreground)_5%)]",
|
|
2593
|
-
tinted: "*:data-[slot=bubble-content]:bg-primary/10 *:data-[slot=bubble-content]:text-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/20",
|
|
2594
|
-
outline: "*:data-[slot=bubble-content]:border-border *:data-[slot=bubble-content]:bg-background [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground",
|
|
2595
|
-
ghost: "border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground",
|
|
2596
|
-
destructive: "*:data-[slot=bubble-content]:bg-destructive/10 *:data-[slot=bubble-content]:text-destructive [&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/20"
|
|
2597
|
-
}
|
|
2598
|
-
},
|
|
2599
|
-
defaultVariants: { variant: "default" }
|
|
2600
|
-
});
|
|
2601
|
-
function Bubble({ density, variant = "default", align = "start", className, ...props }) {
|
|
2602
|
-
return /* @__PURE__ */ jsx23("div", {
|
|
2603
|
-
"data-density": density,
|
|
2604
|
-
"data-slot": "bubble",
|
|
2605
|
-
"data-variant": variant,
|
|
2606
|
-
"data-align": align,
|
|
2607
|
-
className: cn2(bubbleVariants({ variant }), className),
|
|
2608
|
-
...props
|
|
2609
|
-
});
|
|
2610
|
-
}
|
|
2611
|
-
function BubbleContent({ density, className, render, ...props }) {
|
|
2612
|
-
return useRender7({
|
|
2613
|
-
defaultTagName: "div",
|
|
2614
|
-
props: mergeProps7({
|
|
2615
|
-
className: cn2("w-fit max-w-full min-w-0 overflow-hidden rounded-sm border border-transparent px-control-x py-control-gap text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [&:is(button)]:text-start [&:is(button,a)]:transition-colors motion-reduce:transition-none [&:is(button,a)]:outline-none [&:is(button,a)]:focus-visible:border-ring [&:is(button,a)]:focus-visible:ring-1 [&:is(button,a)]:focus-visible:ring-ring", className)
|
|
2616
|
-
}, props),
|
|
2617
|
-
render,
|
|
2618
|
-
state: { slot: "bubble-content", density }
|
|
2619
|
-
});
|
|
2620
|
-
}
|
|
2621
|
-
var bubbleReactionsVariants = cva5("absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-sm border border-border bg-muted px-1.5 py-0.5 text-sm ring-2 ring-card has-[button]:p-0", {
|
|
2622
|
-
variants: {
|
|
2623
|
-
side: { top: "top-0 -translate-y-3/4", bottom: "bottom-0 translate-y-3/4" },
|
|
2624
|
-
align: { start: "start-3", end: "end-3" }
|
|
2625
|
-
},
|
|
2626
|
-
defaultVariants: { side: "bottom", align: "end" }
|
|
2627
|
-
});
|
|
2628
|
-
function BubbleReactions({
|
|
2629
|
-
density,
|
|
2630
|
-
side = "bottom",
|
|
2631
|
-
align = "end",
|
|
2632
|
-
className,
|
|
2633
|
-
...props
|
|
2634
|
-
}) {
|
|
2635
|
-
return /* @__PURE__ */ jsx23("div", {
|
|
2636
|
-
"data-density": density,
|
|
2637
|
-
"data-slot": "bubble-reactions",
|
|
2638
|
-
"data-align": align,
|
|
2639
|
-
"data-side": side,
|
|
2640
|
-
className: cn2(bubbleReactionsVariants({ side, align }), className),
|
|
2641
|
-
...props
|
|
2642
|
-
});
|
|
2643
|
-
}
|
|
2644
|
-
// src/components/Message.tsx
|
|
2645
|
-
import { useContext as useContext2, useLayoutEffect, useMemo as useMemo3, useRef as useRef2, useState } from "react";
|
|
2646
|
-
import { useRender as useRender8 } from "@base-ui/react/use-render";
|
|
2647
|
-
|
|
2648
|
-
// src/message/MessageContext.ts
|
|
2649
|
-
import { createContext as createContext2 } from "react";
|
|
2650
|
-
var MessageContext = createContext2(null);
|
|
2651
|
-
|
|
2652
|
-
// src/components/Message.tsx
|
|
2653
|
-
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
2654
|
-
function MessageGroup({ density, className, ...props }) {
|
|
2655
|
-
return /* @__PURE__ */ jsx24("div", {
|
|
2656
|
-
"data-density": density,
|
|
2657
|
-
"data-slot": "message-group",
|
|
2658
|
-
className: cn2("flex min-w-0 flex-col gap-control-gap", className),
|
|
2659
|
-
...props
|
|
2660
|
-
});
|
|
2661
|
-
}
|
|
2662
|
-
function Message({ density, className, align = "start", style, ...props }) {
|
|
2663
|
-
const [footerOffset, setFooterOffset] = useState(0);
|
|
2664
|
-
const context = useMemo3(() => ({ setFooterOffset }), []);
|
|
2665
|
-
const messageStyle = { ...style, "--message-footer-offset": `${footerOffset}px` };
|
|
2666
|
-
return /* @__PURE__ */ jsx24(MessageContext.Provider, {
|
|
2667
|
-
value: context,
|
|
2668
|
-
children: /* @__PURE__ */ jsx24("div", {
|
|
2669
|
-
"data-density": density,
|
|
2670
|
-
"data-slot": "message",
|
|
2671
|
-
"data-align": align,
|
|
2672
|
-
style: messageStyle,
|
|
2673
|
-
className: cn2("group/message relative flex w-full min-w-0 items-end gap-control-gap text-sm data-[align=end]:flex-row-reverse", className),
|
|
2674
|
-
...props
|
|
2675
|
-
})
|
|
2676
|
-
});
|
|
2677
|
-
}
|
|
2678
|
-
function MessageAvatar({ density, className, ...props }) {
|
|
2679
|
-
return /* @__PURE__ */ jsx24("div", {
|
|
2680
|
-
"data-density": density,
|
|
2681
|
-
"data-slot": "message-avatar",
|
|
2682
|
-
className: cn2("flex w-fit min-w-8 shrink-0 items-center justify-center self-end overflow-hidden rounded-full bg-muted group-has-data-[slot=message-footer]/message:-translate-y-(--message-footer-offset)", className),
|
|
2683
|
-
...props
|
|
2684
|
-
});
|
|
2685
|
-
}
|
|
2686
|
-
function MessageContent({ density, className, ...props }) {
|
|
2687
|
-
return /* @__PURE__ */ jsx24("div", {
|
|
2688
|
-
"data-density": density,
|
|
2689
|
-
"data-slot": "message-content",
|
|
2690
|
-
className: cn2("flex w-full min-w-0 flex-col gap-control-gap wrap-break-word group-data-[align=end]/message:[&>[data-slot]:not([data-slot=message-header])]:self-end", className),
|
|
2691
|
-
...props
|
|
2692
|
-
});
|
|
2693
|
-
}
|
|
2694
|
-
function MessageHeader({ density, className, ...props }) {
|
|
2695
|
-
return /* @__PURE__ */ jsx24("div", {
|
|
2696
|
-
"data-density": density,
|
|
2697
|
-
"data-slot": "message-header",
|
|
2698
|
-
className: cn2("flex max-w-full min-w-0 items-center px-control-x text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0", className),
|
|
2699
|
-
...props
|
|
2700
|
-
});
|
|
2701
|
-
}
|
|
2702
|
-
function MessageFooter({ density, className, ...props }) {
|
|
2703
|
-
const context = useContext2(MessageContext);
|
|
2704
|
-
const footerRef = useRef2(null);
|
|
2705
|
-
useLayoutEffect(() => {
|
|
2706
|
-
const footer = footerRef.current;
|
|
2707
|
-
const content = footer?.parentElement;
|
|
2708
|
-
if (!context || !footer || !content)
|
|
2709
|
-
return;
|
|
2710
|
-
const measure = () => {
|
|
2711
|
-
const surface = footer.previousElementSibling;
|
|
2712
|
-
context.setFooterOffset(surface ? content.getBoundingClientRect().bottom - surface.getBoundingClientRect().bottom : 0);
|
|
2713
|
-
};
|
|
2714
|
-
measure();
|
|
2715
|
-
const observer = new ResizeObserver(measure);
|
|
2716
|
-
observer.observe(footer, { box: "border-box" });
|
|
2717
|
-
observer.observe(content, { box: "border-box" });
|
|
2718
|
-
return () => {
|
|
2719
|
-
observer.disconnect();
|
|
2720
|
-
context.setFooterOffset(0);
|
|
2721
|
-
};
|
|
2722
|
-
}, [context]);
|
|
2723
|
-
return useRender8({
|
|
2724
|
-
defaultTagName: "div",
|
|
2725
|
-
ref: footerRef,
|
|
2726
|
-
state: { slot: "message-footer", density },
|
|
2727
|
-
props: {
|
|
2728
|
-
...props,
|
|
2729
|
-
className: cn2("flex max-w-full min-w-0 items-center px-control-x text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0 group-data-[align=end]/message:justify-end", className)
|
|
2730
|
-
}
|
|
2731
|
-
});
|
|
2732
|
-
}
|
|
2733
|
-
// src/components/Attachment.tsx
|
|
2734
|
-
import { mergeProps as mergeProps8 } from "@base-ui/react/merge-props";
|
|
2735
|
-
import { useRender as useRender9 } from "@base-ui/react/use-render";
|
|
2736
|
-
import { cva as cva6 } from "class-variance-authority";
|
|
2737
|
-
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
2738
|
-
var attachmentVariants = cva6("group/attachment relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-md border bg-card text-card-foreground transition-colors motion-reduce:transition-none focus-within:ring-1 focus-within:ring-ring has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive data-[state=idle]:border-dashed", {
|
|
2739
|
-
variants: {
|
|
2740
|
-
size: {
|
|
2741
|
-
default: "gap-control-gap text-sm has-data-[slot=attachment-content]:px-control-x has-data-[slot=attachment-content]:py-control-gap has-data-[slot=attachment-media]:p-control-gap",
|
|
2742
|
-
sm: "gap-control-gap text-xs has-data-[slot=attachment-content]:px-2 has-data-[slot=attachment-content]:py-1.5 has-data-[slot=attachment-media]:p-1.5",
|
|
2743
|
-
xs: "gap-1.5 text-xs has-data-[slot=attachment-content]:px-1.5 has-data-[slot=attachment-content]:py-1 has-data-[slot=attachment-media]:p-1"
|
|
2744
|
-
},
|
|
2745
|
-
orientation: {
|
|
2746
|
-
horizontal: "min-w-40 items-center",
|
|
2747
|
-
vertical: "w-24 flex-col has-data-[slot=attachment-content]:w-30"
|
|
2748
|
-
}
|
|
2749
|
-
}
|
|
2750
|
-
});
|
|
2751
|
-
function Attachment({
|
|
2752
|
-
density,
|
|
2753
|
-
className,
|
|
2754
|
-
state = "done",
|
|
2755
|
-
size = "default",
|
|
2756
|
-
orientation = "horizontal",
|
|
2757
|
-
...props
|
|
2758
|
-
}) {
|
|
2759
|
-
return /* @__PURE__ */ jsx25("div", {
|
|
2760
|
-
"data-slot": "attachment",
|
|
2761
|
-
"data-density": density,
|
|
2762
|
-
"data-state": state,
|
|
2763
|
-
"data-size": size,
|
|
2764
|
-
"data-orientation": orientation,
|
|
2765
|
-
className: cn2(attachmentVariants({ size, orientation }), className),
|
|
2766
|
-
...props
|
|
2767
|
-
});
|
|
2768
|
-
}
|
|
2769
|
-
var attachmentMediaVariants = cva6("relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-sm bg-muted text-foreground group-data-[orientation=vertical]/attachment:w-full group-data-[orientation=horizontal]/attachment:group-data-[size=sm]/attachment:w-8 group-data-[orientation=horizontal]/attachment:group-data-[size=xs]/attachment:w-7 group-data-[state=error]/attachment:bg-destructive/10 group-data-[state=error]/attachment:text-destructive group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5", {
|
|
2770
|
-
variants: {
|
|
2771
|
-
variant: {
|
|
2772
|
-
icon: "",
|
|
2773
|
-
image: "opacity-60 group-data-[state=done]/attachment:opacity-100 group-data-[state=idle]/attachment:opacity-100 *:[img]:aspect-square *:[img]:w-full *:[img]:object-cover"
|
|
2774
|
-
}
|
|
2775
|
-
},
|
|
2776
|
-
defaultVariants: { variant: "icon" }
|
|
2777
|
-
});
|
|
2778
|
-
function AttachmentMedia({ density, className, variant = "icon", ...props }) {
|
|
2779
|
-
return /* @__PURE__ */ jsx25("div", {
|
|
2780
|
-
"data-slot": "attachment-media",
|
|
2781
|
-
"data-density": density,
|
|
2782
|
-
"data-variant": variant,
|
|
2783
|
-
className: cn2(attachmentMediaVariants({ variant }), className),
|
|
2784
|
-
...props
|
|
2785
|
-
});
|
|
2786
|
-
}
|
|
2787
|
-
function AttachmentContent({ density, className, ...props }) {
|
|
2788
|
-
return /* @__PURE__ */ jsx25("div", {
|
|
2789
|
-
"data-slot": "attachment-content",
|
|
2790
|
-
"data-density": density,
|
|
2791
|
-
className: cn2("max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1", className),
|
|
2792
|
-
...props
|
|
2793
|
-
});
|
|
2794
|
-
}
|
|
2795
|
-
function AttachmentTitle({ density, className, ...props }) {
|
|
2796
|
-
return /* @__PURE__ */ jsx25("span", {
|
|
2797
|
-
"data-slot": "attachment-title",
|
|
2798
|
-
"data-density": density,
|
|
2799
|
-
className: cn2("block max-w-full min-w-0 truncate font-medium group-data-[state=processing]/attachment:shimmer group-data-[state=uploading]/attachment:shimmer", className),
|
|
2800
|
-
...props
|
|
2801
|
-
});
|
|
2802
|
-
}
|
|
2803
|
-
function AttachmentDescription({ density, className, ...props }) {
|
|
2804
|
-
return /* @__PURE__ */ jsx25("span", {
|
|
2805
|
-
"data-slot": "attachment-description",
|
|
2806
|
-
"data-density": density,
|
|
2807
|
-
className: cn2("mt-0.5 block max-w-full min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-destructive", className),
|
|
2808
|
-
...props
|
|
2809
|
-
});
|
|
2810
|
-
}
|
|
2811
|
-
function AttachmentActions({ density, className, ...props }) {
|
|
2812
|
-
return /* @__PURE__ */ jsx25("div", {
|
|
2813
|
-
"data-slot": "attachment-actions",
|
|
2814
|
-
"data-density": density,
|
|
2815
|
-
className: cn2("relative z-20 flex shrink-0 items-center group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:end-3 group-data-[orientation=vertical]/attachment:gap-1", className),
|
|
2816
|
-
...props
|
|
2817
|
-
});
|
|
2818
|
-
}
|
|
2819
|
-
function AttachmentAction({
|
|
2820
|
-
className,
|
|
2821
|
-
variant = "ghost",
|
|
2822
|
-
size = "icon-xs",
|
|
2823
|
-
...props
|
|
2824
|
-
}) {
|
|
2825
|
-
return /* @__PURE__ */ jsx25(Button2, {
|
|
2826
|
-
"data-slot": "attachment-action",
|
|
2827
|
-
variant,
|
|
2828
|
-
size,
|
|
2829
|
-
className,
|
|
2830
|
-
...props
|
|
2831
|
-
});
|
|
2832
|
-
}
|
|
2833
|
-
function AttachmentTrigger({ density, className, render, type, ...props }) {
|
|
2834
|
-
return useRender9({
|
|
2835
|
-
defaultTagName: "button",
|
|
2836
|
-
props: mergeProps8({ type: render ? type : type ?? "button", className: cn2("absolute inset-0 z-10 outline-none", className) }, props),
|
|
2837
|
-
render,
|
|
2838
|
-
state: { slot: "attachment-trigger", density }
|
|
2839
|
-
});
|
|
2840
|
-
}
|
|
2841
|
-
function AttachmentGroup({ density, className, ...props }) {
|
|
2842
|
-
return /* @__PURE__ */ jsx25("div", {
|
|
2843
|
-
"data-slot": "attachment-group",
|
|
2844
|
-
"data-density": density,
|
|
2845
|
-
className: cn2("flex min-w-0 scroll-fade-x snap-x snap-mandatory scroll-px-1 no-scrollbar gap-3 overflow-x-auto overscroll-x-contain py-1 *:data-[slot=attachment]:flex-none *:data-[slot=attachment]:snap-start", className),
|
|
2846
|
-
...props
|
|
2847
|
-
});
|
|
2848
|
-
}
|
|
2849
|
-
// src/components/InlineEdit.tsx
|
|
2850
|
-
import { useEffect as useEffect2, useRef as useRef3, useState as useState2 } from "react";
|
|
2851
|
-
import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2852
|
-
function InlineEdit({
|
|
2853
|
-
label,
|
|
2854
|
-
value,
|
|
2855
|
-
density,
|
|
2856
|
-
isDisabled = false,
|
|
2857
|
-
shouldSelectOnMount = true,
|
|
2858
|
-
onValueChange,
|
|
2859
|
-
onCommit,
|
|
2860
|
-
onCancel
|
|
2861
|
-
}) {
|
|
2862
|
-
const input = useRef3(null);
|
|
2863
|
-
const isFinished = useRef3(false);
|
|
2864
|
-
const shouldCancel = useRef3(false);
|
|
2865
|
-
const [isSaving, setSaving] = useState2(false);
|
|
2866
|
-
const [error, setError] = useState2("");
|
|
2867
|
-
useEffect2(() => {
|
|
2868
|
-
input.current?.focus();
|
|
2869
|
-
if (shouldSelectOnMount)
|
|
2870
|
-
input.current?.select();
|
|
2871
|
-
}, [shouldSelectOnMount]);
|
|
2872
|
-
const save = async () => {
|
|
2873
|
-
if (isFinished.current || isDisabled)
|
|
2874
|
-
return;
|
|
2875
|
-
isFinished.current = true;
|
|
2876
|
-
setSaving(true);
|
|
2877
|
-
setError("");
|
|
2878
|
-
try {
|
|
2879
|
-
await onCommit(value);
|
|
2880
|
-
} catch (error) {
|
|
2881
|
-
isFinished.current = false;
|
|
2882
|
-
setError(error instanceof Error ? error.message : "Could not save this edit.");
|
|
2883
|
-
} finally {
|
|
2884
|
-
setSaving(false);
|
|
2885
|
-
}
|
|
2886
|
-
};
|
|
2887
|
-
return /* @__PURE__ */ jsxs16("form", {
|
|
2888
|
-
className: "flex min-w-0 flex-col gap-1",
|
|
2889
|
-
onSubmit: (event) => {
|
|
2890
|
-
event.preventDefault();
|
|
2891
|
-
save();
|
|
2892
|
-
},
|
|
2893
|
-
children: [
|
|
2894
|
-
/* @__PURE__ */ jsx26(Input2, {
|
|
2895
|
-
ref: input,
|
|
2896
|
-
density,
|
|
2897
|
-
"aria-label": label,
|
|
2898
|
-
"aria-invalid": Boolean(error),
|
|
2899
|
-
"aria-description": "Enter saves. Escape cancels.",
|
|
2900
|
-
value,
|
|
2901
|
-
disabled: isDisabled || isSaving,
|
|
2902
|
-
onChange: (event) => onValueChange(event.target.value),
|
|
2903
|
-
onBlur: () => {
|
|
2904
|
-
if (shouldCancel.current && !isFinished.current) {
|
|
2905
|
-
isFinished.current = true;
|
|
2906
|
-
onCancel();
|
|
2907
|
-
} else
|
|
2908
|
-
save();
|
|
2909
|
-
},
|
|
2910
|
-
onKeyDown: (event) => {
|
|
2911
|
-
if (event.key === "Escape") {
|
|
2912
|
-
event.preventDefault();
|
|
2913
|
-
event.stopPropagation();
|
|
2914
|
-
shouldCancel.current = true;
|
|
2915
|
-
event.currentTarget.blur();
|
|
2916
|
-
} else if (event.key === "Enter") {
|
|
2917
|
-
event.preventDefault();
|
|
2918
|
-
event.currentTarget.blur();
|
|
2919
|
-
}
|
|
2920
|
-
}
|
|
2921
|
-
}),
|
|
2922
|
-
error && /* @__PURE__ */ jsx26("p", {
|
|
2923
|
-
role: "alert",
|
|
2924
|
-
className: "text-xs text-destructive",
|
|
2925
|
-
children: error
|
|
2926
|
-
})
|
|
2927
|
-
]
|
|
2928
|
-
});
|
|
2929
|
-
}
|
|
2930
|
-
// src/components/StarRating.tsx
|
|
2931
|
-
import { Radio } from "@base-ui/react/radio";
|
|
2932
|
-
import { RadioGroup } from "@base-ui/react/radio-group";
|
|
2933
|
-
import { StarIcon, CircleOffIcon } from "lucide-react";
|
|
2934
|
-
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
2935
|
-
function StarRating({ label, value, disabled, density, onValueChange }) {
|
|
2936
|
-
return /* @__PURE__ */ jsx27(RadioGroup, {
|
|
2937
|
-
"aria-label": label,
|
|
2938
|
-
value,
|
|
2939
|
-
disabled,
|
|
2940
|
-
"data-density": density,
|
|
2941
|
-
className: "inline-flex w-fit shrink-0 items-center gap-0.5",
|
|
2942
|
-
onValueChange,
|
|
2943
|
-
children: [1, 2, 3, 4, 5, 0].map((star) => /* @__PURE__ */ jsx27(Radio.Root, {
|
|
2944
|
-
value: star,
|
|
2945
|
-
nativeButton: true,
|
|
2946
|
-
render: /* @__PURE__ */ jsx27("button", {
|
|
2947
|
-
type: "button"
|
|
2948
|
-
}),
|
|
2949
|
-
"aria-label": star === 0 ? "Unrated" : `${star} ${star === 1 ? "star" : "stars"}`,
|
|
2950
|
-
title: star === 0 ? "Clear rating" : `${star} stars`,
|
|
2951
|
-
className: "inline-flex size-5 shrink-0 items-center justify-center rounded-sm text-muted-foreground outline-none hover:text-primary focus-visible:ring-1 focus-visible:ring-ring data-disabled:cursor-not-allowed data-disabled:opacity-50",
|
|
2952
|
-
children: star === 0 ? /* @__PURE__ */ jsx27(CircleOffIcon, {
|
|
2953
|
-
"aria-hidden": "true",
|
|
2954
|
-
className: "size-3"
|
|
2955
|
-
}) : /* @__PURE__ */ jsx27(StarIcon, {
|
|
2956
|
-
"aria-hidden": "true",
|
|
2957
|
-
className: star <= value ? "size-3.5 fill-primary text-primary" : "size-3.5"
|
|
2958
|
-
})
|
|
2959
|
-
}, star))
|
|
2960
|
-
});
|
|
2961
|
-
}
|
|
2962
|
-
// src/components/ConfirmationDialog.tsx
|
|
2963
|
-
import { useState as useState3 } from "react";
|
|
2964
|
-
import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2965
|
-
function ConfirmationDialog({
|
|
2966
|
-
open,
|
|
2967
|
-
title,
|
|
2968
|
-
description,
|
|
2969
|
-
confirmLabel,
|
|
2970
|
-
onOpenChange,
|
|
2971
|
-
onConfirm
|
|
2972
|
-
}) {
|
|
2973
|
-
const [isPending, setPending] = useState3(false);
|
|
2974
|
-
const [error, setError] = useState3("");
|
|
2975
|
-
return /* @__PURE__ */ jsx28(AlertDialog, {
|
|
2976
|
-
open,
|
|
2977
|
-
onOpenChange: (next) => {
|
|
2978
|
-
if (!isPending) {
|
|
2979
|
-
setError("");
|
|
2980
|
-
onOpenChange(next);
|
|
2981
|
-
}
|
|
2982
|
-
},
|
|
2983
|
-
children: /* @__PURE__ */ jsxs17(AlertDialogContent, {
|
|
2984
|
-
children: [
|
|
2985
|
-
/* @__PURE__ */ jsxs17(AlertDialogHeader, {
|
|
2986
|
-
children: [
|
|
2987
|
-
/* @__PURE__ */ jsx28(AlertDialogTitle, {
|
|
2988
|
-
children: title
|
|
2989
|
-
}),
|
|
2990
|
-
/* @__PURE__ */ jsx28(AlertDialogDescription, {
|
|
2991
|
-
children: description
|
|
2992
|
-
})
|
|
2993
|
-
]
|
|
2994
|
-
}),
|
|
2995
|
-
error && /* @__PURE__ */ jsx28(Alert2, {
|
|
2996
|
-
variant: "destructive",
|
|
2997
|
-
children: /* @__PURE__ */ jsx28(AlertDescription2, {
|
|
2998
|
-
children: error
|
|
2999
|
-
})
|
|
3000
|
-
}),
|
|
3001
|
-
/* @__PURE__ */ jsxs17(AlertDialogFooter, {
|
|
3002
|
-
children: [
|
|
3003
|
-
/* @__PURE__ */ jsx28(AlertDialogCancel, {
|
|
3004
|
-
disabled: isPending,
|
|
3005
|
-
children: "Cancel"
|
|
3006
|
-
}),
|
|
3007
|
-
/* @__PURE__ */ jsx28(Button2, {
|
|
3008
|
-
variant: "destructive",
|
|
3009
|
-
disabled: isPending,
|
|
3010
|
-
onClick: async () => {
|
|
3011
|
-
setPending(true);
|
|
3012
|
-
setError("");
|
|
3013
|
-
try {
|
|
3014
|
-
await onConfirm();
|
|
3015
|
-
onOpenChange(false);
|
|
3016
|
-
} catch (error) {
|
|
3017
|
-
setError(error instanceof Error ? error.message : "The action could not be completed.");
|
|
3018
|
-
} finally {
|
|
3019
|
-
setPending(false);
|
|
3020
|
-
}
|
|
3021
|
-
},
|
|
3022
|
-
children: isPending ? "Working…" : confirmLabel
|
|
3023
|
-
})
|
|
3024
|
-
]
|
|
3025
|
-
})
|
|
3026
|
-
]
|
|
3027
|
-
})
|
|
3028
|
-
});
|
|
3029
|
-
}
|
|
3030
|
-
// src/components/ImagePicker.tsx
|
|
3031
|
-
import { useRef as useRef4 } from "react";
|
|
3032
|
-
import { ImageIcon, UploadIcon } from "lucide-react";
|
|
3033
|
-
|
|
3034
|
-
// src/hooks/useObjectURL.ts
|
|
3035
|
-
import { useEffect as useEffect3, useState as useState4 } from "react";
|
|
3036
|
-
function useObjectURL(file) {
|
|
3037
|
-
const [url, setURL] = useState4();
|
|
3038
|
-
useEffect3(() => {
|
|
3039
|
-
if (!file) {
|
|
3040
|
-
setURL(undefined);
|
|
3041
|
-
return;
|
|
3042
|
-
}
|
|
3043
|
-
const next = URL.createObjectURL(file);
|
|
3044
|
-
setURL(next);
|
|
3045
|
-
return () => URL.revokeObjectURL(next);
|
|
3046
|
-
}, [file]);
|
|
3047
|
-
return url;
|
|
3048
|
-
}
|
|
3049
|
-
|
|
3050
|
-
// src/components/ImagePicker.tsx
|
|
3051
|
-
import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
3052
|
-
function ImagePicker({ src, file, label, disabled, onFileChange, onClear }) {
|
|
3053
|
-
const input = useRef4(null);
|
|
3054
|
-
const preview = useObjectURL(file);
|
|
3055
|
-
const image = file === null ? undefined : preview ?? src;
|
|
3056
|
-
return /* @__PURE__ */ jsxs18("figure", {
|
|
3057
|
-
className: "flex min-w-0 flex-col items-center gap-3",
|
|
3058
|
-
"aria-label": label,
|
|
3059
|
-
children: [
|
|
3060
|
-
/* @__PURE__ */ jsxs18(Avatar2, {
|
|
3061
|
-
size: "preview",
|
|
3062
|
-
shape: "square",
|
|
3063
|
-
children: [
|
|
3064
|
-
/* @__PURE__ */ jsx29(AvatarImage2, {
|
|
3065
|
-
src: image,
|
|
3066
|
-
alt: label
|
|
3067
|
-
}),
|
|
3068
|
-
/* @__PURE__ */ jsx29(AvatarFallback2, {
|
|
3069
|
-
children: /* @__PURE__ */ jsx29(ImageIcon, {
|
|
3070
|
-
className: "size-12",
|
|
3071
|
-
"aria-hidden": "true"
|
|
3072
|
-
})
|
|
3073
|
-
})
|
|
3074
|
-
]
|
|
3075
|
-
}),
|
|
3076
|
-
/* @__PURE__ */ jsx29("input", {
|
|
3077
|
-
ref: input,
|
|
3078
|
-
hidden: true,
|
|
3079
|
-
type: "file",
|
|
3080
|
-
accept: "image/png,image/jpeg,image/gif",
|
|
3081
|
-
"aria-label": "Choose image file",
|
|
3082
|
-
disabled,
|
|
3083
|
-
onChange: (event) => {
|
|
3084
|
-
const selected = event.currentTarget.files?.[0];
|
|
3085
|
-
if (selected)
|
|
3086
|
-
onFileChange(selected);
|
|
3087
|
-
event.currentTarget.value = "";
|
|
3088
|
-
}
|
|
3089
|
-
}),
|
|
3090
|
-
/* @__PURE__ */ jsxs18("div", {
|
|
3091
|
-
className: "flex flex-wrap justify-center gap-2",
|
|
3092
|
-
children: [
|
|
3093
|
-
/* @__PURE__ */ jsxs18(Button2, {
|
|
3094
|
-
type: "button",
|
|
3095
|
-
variant: "outline",
|
|
3096
|
-
disabled,
|
|
3097
|
-
onClick: () => input.current?.click(),
|
|
3098
|
-
children: [
|
|
3099
|
-
/* @__PURE__ */ jsx29(UploadIcon, {
|
|
3100
|
-
"data-icon": "inline-start"
|
|
3101
|
-
}),
|
|
3102
|
-
"Upload image"
|
|
3103
|
-
]
|
|
3104
|
-
}),
|
|
3105
|
-
/* @__PURE__ */ jsx29(Button2, {
|
|
3106
|
-
type: "button",
|
|
3107
|
-
variant: "outline",
|
|
3108
|
-
disabled: disabled || !image,
|
|
3109
|
-
onClick: onClear,
|
|
3110
|
-
children: "Unset image"
|
|
3111
|
-
})
|
|
3112
|
-
]
|
|
3113
|
-
})
|
|
3114
|
-
]
|
|
3115
|
-
});
|
|
3116
|
-
}
|
|
3117
|
-
// src/components/NumberField.tsx
|
|
3118
|
-
import { NumberField as NumberFieldPrimitive } from "@base-ui/react/number-field";
|
|
3119
|
-
import { MinusIcon, PlusIcon, MoveHorizontalIcon } from "lucide-react";
|
|
3120
|
-
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
3121
|
-
function NumberField({ density, className, ...props }) {
|
|
3122
|
-
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Root, {
|
|
3123
|
-
"data-density": density,
|
|
3124
|
-
"data-slot": "number-field",
|
|
3125
|
-
className: (state) => cn2("flex min-w-0 flex-col gap-field-gap", typeof className === "function" ? className(state) : className),
|
|
3126
|
-
...props
|
|
3127
|
-
});
|
|
3128
|
-
}
|
|
3129
|
-
function NumberFieldGroup({
|
|
3130
|
-
density,
|
|
3131
|
-
className,
|
|
3132
|
-
...props
|
|
3133
|
-
}) {
|
|
3134
|
-
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Group, {
|
|
3135
|
-
"data-density": density,
|
|
3136
|
-
"data-slot": "number-field-group",
|
|
3137
|
-
className: (state) => cn2("flex h-control min-w-0 items-stretch rounded-sm border border-input bg-secondary text-foreground transition-colors focus-within:border-ring focus-within:ring-1 focus-within:ring-ring data-disabled:opacity-50 motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
|
|
3138
|
-
...props
|
|
3139
|
-
});
|
|
3140
|
-
}
|
|
3141
|
-
function NumberFieldInput({
|
|
3142
|
-
density,
|
|
3143
|
-
className,
|
|
3144
|
-
...props
|
|
3145
|
-
}) {
|
|
3146
|
-
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Input, {
|
|
3147
|
-
"data-density": density,
|
|
3148
|
-
"data-slot": "number-field-input",
|
|
3149
|
-
className: (state) => cn2("min-w-0 flex-1 bg-transparent px-control-x text-center text-sm tabular-nums outline-none disabled:cursor-not-allowed", typeof className === "function" ? className(state) : className),
|
|
3150
|
-
...props
|
|
3151
|
-
});
|
|
3152
|
-
}
|
|
3153
|
-
function NumberFieldDecrement({
|
|
3154
|
-
density,
|
|
3155
|
-
className,
|
|
3156
|
-
children = /* @__PURE__ */ jsx30(MinusIcon, {}),
|
|
3157
|
-
...props
|
|
3158
|
-
}) {
|
|
3159
|
-
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Decrement, {
|
|
3160
|
-
"data-density": density,
|
|
3161
|
-
"data-slot": "number-field-decrement",
|
|
3162
|
-
className: (state) => cn2("flex w-control shrink-0 items-center justify-center rounded-s-sm outline-none hover:bg-muted focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-3.5", typeof className === "function" ? className(state) : className),
|
|
3163
|
-
...props,
|
|
3164
|
-
children
|
|
3165
|
-
});
|
|
3166
|
-
}
|
|
3167
|
-
function NumberFieldIncrement({
|
|
3168
|
-
density,
|
|
3169
|
-
className,
|
|
3170
|
-
children = /* @__PURE__ */ jsx30(PlusIcon, {}),
|
|
3171
|
-
...props
|
|
3172
|
-
}) {
|
|
3173
|
-
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Increment, {
|
|
3174
|
-
"data-density": density,
|
|
3175
|
-
"data-slot": "number-field-increment",
|
|
3176
|
-
className: (state) => cn2("flex w-control shrink-0 items-center justify-center rounded-e-sm outline-none hover:bg-muted focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-3.5", typeof className === "function" ? className(state) : className),
|
|
3177
|
-
...props,
|
|
3178
|
-
children
|
|
3179
|
-
});
|
|
3180
|
-
}
|
|
3181
|
-
function NumberFieldScrubArea({
|
|
3182
|
-
density,
|
|
3183
|
-
className,
|
|
3184
|
-
...props
|
|
3185
|
-
}) {
|
|
3186
|
-
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.ScrubArea, {
|
|
3187
|
-
"data-density": density,
|
|
3188
|
-
"data-slot": "number-field-scrub-area",
|
|
3189
|
-
className: (state) => cn2("flex w-fit cursor-ew-resize items-center gap-control-gap text-sm font-medium", typeof className === "function" ? className(state) : className),
|
|
3190
|
-
...props
|
|
3191
|
-
});
|
|
3192
|
-
}
|
|
3193
|
-
function NumberFieldScrubAreaCursor({
|
|
3194
|
-
density,
|
|
3195
|
-
className,
|
|
3196
|
-
children = /* @__PURE__ */ jsx30(MoveHorizontalIcon, {}),
|
|
3197
|
-
...props
|
|
3198
|
-
}) {
|
|
3199
|
-
const resolvedDensity = useDensity(density);
|
|
3200
|
-
return /* @__PURE__ */ jsx30(NumberFieldPrimitive.ScrubAreaCursor, {
|
|
3201
|
-
"data-density": resolvedDensity,
|
|
3202
|
-
"data-slot": "number-field-scrub-area-cursor",
|
|
3203
|
-
className: (state) => cn2("z-50 font-sans text-sm text-foreground [&_svg]:size-5", typeof className === "function" ? className(state) : className),
|
|
3204
|
-
...props,
|
|
3205
|
-
children
|
|
3206
|
-
});
|
|
3207
|
-
}
|
|
3208
|
-
// src/components/Meter.tsx
|
|
3209
|
-
import { Meter as MeterPrimitive } from "@base-ui/react/meter";
|
|
3210
|
-
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
3211
|
-
function Meter({ density, className, ...props }) {
|
|
3212
|
-
return /* @__PURE__ */ jsx31(MeterPrimitive.Root, {
|
|
3213
|
-
"data-density": density,
|
|
3214
|
-
"data-slot": "meter",
|
|
3215
|
-
className: (state) => cn2("flex min-w-0 flex-wrap items-center gap-field-gap", typeof className === "function" ? className(state) : className),
|
|
3216
|
-
...props
|
|
3217
|
-
});
|
|
3218
|
-
}
|
|
3219
|
-
function MeterLabel({ density, className, ...props }) {
|
|
3220
|
-
return /* @__PURE__ */ jsx31(MeterPrimitive.Label, {
|
|
3221
|
-
"data-density": density,
|
|
3222
|
-
"data-slot": "meter-label",
|
|
3223
|
-
className: (state) => cn2("text-sm font-medium", typeof className === "function" ? className(state) : className),
|
|
3224
|
-
...props
|
|
3225
|
-
});
|
|
3226
|
-
}
|
|
3227
|
-
function MeterValue({ density, className, ...props }) {
|
|
3228
|
-
return /* @__PURE__ */ jsx31(MeterPrimitive.Value, {
|
|
3229
|
-
"data-density": density,
|
|
3230
|
-
"data-slot": "meter-value",
|
|
3231
|
-
className: (state) => cn2("ms-auto text-sm text-muted-foreground tabular-nums", typeof className === "function" ? className(state) : className),
|
|
3232
|
-
...props
|
|
3233
|
-
});
|
|
3234
|
-
}
|
|
3235
|
-
function MeterTrack({ density, className, ...props }) {
|
|
3236
|
-
return /* @__PURE__ */ jsx31(MeterPrimitive.Track, {
|
|
3237
|
-
"data-density": density,
|
|
3238
|
-
"data-slot": "meter-track",
|
|
3239
|
-
className: (state) => cn2("h-1 w-full overflow-hidden rounded-sm bg-muted", typeof className === "function" ? className(state) : className),
|
|
3240
|
-
...props
|
|
3241
|
-
});
|
|
3242
|
-
}
|
|
3243
|
-
function MeterIndicator({
|
|
3244
|
-
density,
|
|
3245
|
-
className,
|
|
3246
|
-
...props
|
|
3247
|
-
}) {
|
|
3248
|
-
return /* @__PURE__ */ jsx31(MeterPrimitive.Indicator, {
|
|
3249
|
-
"data-density": density,
|
|
3250
|
-
"data-slot": "meter-indicator",
|
|
3251
|
-
className: (state) => cn2("h-full bg-primary transition-[width] motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
|
|
3252
|
-
...props
|
|
3253
|
-
});
|
|
3254
|
-
}
|
|
3255
|
-
// src/components/Stepper.tsx
|
|
3256
|
-
import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
|
|
3257
|
-
import { CheckIcon as CheckIcon5 } from "lucide-react";
|
|
3258
|
-
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
3259
|
-
function Stepper({ density, className, ...props }) {
|
|
3260
|
-
return /* @__PURE__ */ jsx32(TabsPrimitive.Root, {
|
|
3261
|
-
"data-density": density,
|
|
3262
|
-
"data-slot": "stepper",
|
|
3263
|
-
className: (state) => cn2("group/stepper flex min-w-0 flex-col gap-panel data-[orientation=vertical]:flex-row", typeof className === "function" ? className(state) : className),
|
|
3264
|
-
...props
|
|
3265
|
-
});
|
|
3266
|
-
}
|
|
3267
|
-
function StepperList({
|
|
3268
|
-
density,
|
|
3269
|
-
className,
|
|
3270
|
-
activateOnFocus = false,
|
|
3271
|
-
...props
|
|
3272
|
-
}) {
|
|
3273
|
-
return /* @__PURE__ */ jsx32(TabsPrimitive.List, {
|
|
3274
|
-
"data-density": density,
|
|
3275
|
-
"data-slot": "stepper-list",
|
|
3276
|
-
activateOnFocus,
|
|
3277
|
-
className: (state) => cn2("flex min-w-0 gap-panel group-data-[orientation=vertical]/stepper:flex-col", typeof className === "function" ? className(state) : className),
|
|
3278
|
-
...props
|
|
3279
|
-
});
|
|
3280
|
-
}
|
|
3281
|
-
function StepperTrigger({ density, className, ...props }) {
|
|
3282
|
-
return /* @__PURE__ */ jsx32(TabsPrimitive.Tab, {
|
|
3283
|
-
"data-density": density,
|
|
3284
|
-
"data-slot": "stepper-trigger",
|
|
3285
|
-
className: (state) => cn2("group/step flex min-h-control items-center gap-control-gap rounded-sm text-sm text-muted-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring data-active:text-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:opacity-50", typeof className === "function" ? className(state) : className),
|
|
3286
|
-
...props
|
|
3287
|
-
});
|
|
3288
|
-
}
|
|
3289
|
-
function StepperIndicator({ completed = false, children, className, ...props }) {
|
|
3290
|
-
return /* @__PURE__ */ jsx32("span", {
|
|
3291
|
-
"aria-hidden": "true",
|
|
3292
|
-
"data-slot": "stepper-indicator",
|
|
3293
|
-
"data-completed": completed || undefined,
|
|
3294
|
-
className: cn2("flex size-control shrink-0 items-center justify-center rounded-sm border border-input bg-secondary text-sm tabular-nums group-data-active/step:border-primary group-data-active/step:bg-primary group-data-active/step:text-primary-foreground data-completed:border-primary data-completed:text-primary [&_svg]:size-3.5", className),
|
|
3295
|
-
...props,
|
|
3296
|
-
children: completed ? /* @__PURE__ */ jsx32(CheckIcon5, {}) : children
|
|
3297
|
-
});
|
|
3298
|
-
}
|
|
3299
|
-
function StepperContent({ density, className, ...props }) {
|
|
3300
|
-
return /* @__PURE__ */ jsx32(TabsPrimitive.Panel, {
|
|
3301
|
-
"data-density": density,
|
|
3302
|
-
"data-slot": "stepper-content",
|
|
3303
|
-
className: (state) => cn2("min-w-0 flex-1 outline-none focus-visible:ring-1 focus-visible:ring-ring", typeof className === "function" ? className(state) : className),
|
|
3304
|
-
...props
|
|
3305
|
-
});
|
|
3306
|
-
}
|
|
3307
|
-
// src/components/AppShell.tsx
|
|
3308
|
-
import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
3309
|
-
function AppShell({
|
|
3310
|
-
navigation,
|
|
3311
|
-
brand,
|
|
3312
|
-
children,
|
|
3313
|
-
header,
|
|
3314
|
-
sidebarFooter,
|
|
3315
|
-
footer,
|
|
3316
|
-
height = "100dvh",
|
|
3317
|
-
defaultSidebarOpen = true,
|
|
3318
|
-
label = "Application",
|
|
3319
|
-
density
|
|
3320
|
-
}) {
|
|
3321
|
-
return /* @__PURE__ */ jsxs19(SidebarProvider2, {
|
|
3322
|
-
density,
|
|
3323
|
-
defaultOpen: defaultSidebarOpen,
|
|
3324
|
-
className: "relative min-h-0",
|
|
3325
|
-
style: { height },
|
|
3326
|
-
"data-scroll": "none",
|
|
3327
|
-
children: [
|
|
3328
|
-
/* @__PURE__ */ jsxs19(Sidebar2, {
|
|
3329
|
-
collapsible: "icon",
|
|
3330
|
-
position: "container",
|
|
3331
|
-
children: [
|
|
3332
|
-
/* @__PURE__ */ jsx33(SidebarHeader2, {
|
|
3333
|
-
children: brand
|
|
3334
|
-
}),
|
|
3335
|
-
/* @__PURE__ */ jsx33(SidebarContent2, {
|
|
3336
|
-
children: /* @__PURE__ */ jsx33("nav", {
|
|
3337
|
-
"aria-label": "Primary navigation",
|
|
3338
|
-
children: /* @__PURE__ */ jsx33(SidebarGroup2, {
|
|
3339
|
-
children: /* @__PURE__ */ jsx33(SidebarMenu2, {
|
|
3340
|
-
children: navigation.map((item) => /* @__PURE__ */ jsx33(SidebarMenuItem2, {
|
|
3341
|
-
children: /* @__PURE__ */ jsxs19(SidebarMenuButton2, {
|
|
3342
|
-
render: /* @__PURE__ */ jsx33("a", {
|
|
3343
|
-
href: item.href,
|
|
3344
|
-
"aria-current": item.active ? "page" : undefined
|
|
3345
|
-
}),
|
|
3346
|
-
isActive: item.active,
|
|
3347
|
-
tooltip: item.label,
|
|
3348
|
-
children: [
|
|
3349
|
-
item.icon,
|
|
3350
|
-
/* @__PURE__ */ jsx33("span", {
|
|
3351
|
-
children: item.label
|
|
3352
|
-
})
|
|
3353
|
-
]
|
|
3354
|
-
})
|
|
3355
|
-
}, item.id))
|
|
3356
|
-
})
|
|
3357
|
-
})
|
|
3358
|
-
})
|
|
3359
|
-
}),
|
|
3360
|
-
sidebarFooter && /* @__PURE__ */ jsx33(SidebarFooter2, {
|
|
3361
|
-
children: sidebarFooter
|
|
3362
|
-
})
|
|
3363
|
-
]
|
|
3364
|
-
}),
|
|
3365
|
-
/* @__PURE__ */ jsxs19(SidebarInset2, {
|
|
3366
|
-
"aria-label": label,
|
|
3367
|
-
className: "min-h-0 min-w-0",
|
|
3368
|
-
"data-scroll": "none",
|
|
3369
|
-
children: [
|
|
3370
|
-
/* @__PURE__ */ jsxs19("header", {
|
|
3371
|
-
"data-scroll": "none",
|
|
3372
|
-
className: "flex shrink-0 items-center gap-control-gap border-b border-border p-panel",
|
|
3373
|
-
children: [
|
|
3374
|
-
/* @__PURE__ */ jsx33(SidebarTrigger2, {}),
|
|
3375
|
-
/* @__PURE__ */ jsx33(Separator2, {
|
|
3376
|
-
orientation: "vertical",
|
|
3377
|
-
className: "h-control"
|
|
3378
|
-
}),
|
|
3379
|
-
header
|
|
3380
|
-
]
|
|
3381
|
-
}),
|
|
3382
|
-
/* @__PURE__ */ jsx33(ScrollArea, {
|
|
3383
|
-
className: "min-h-0 flex-1",
|
|
3384
|
-
children: /* @__PURE__ */ jsx33("div", {
|
|
3385
|
-
className: "flex min-w-0 flex-col gap-panel p-panel",
|
|
3386
|
-
children
|
|
3387
|
-
})
|
|
3388
|
-
}),
|
|
3389
|
-
footer && /* @__PURE__ */ jsx33("footer", {
|
|
3390
|
-
className: "shrink-0 border-t border-border p-panel",
|
|
3391
|
-
"data-scroll": "none",
|
|
3392
|
-
children: footer
|
|
3393
|
-
})
|
|
3394
|
-
]
|
|
3395
|
-
})
|
|
3396
|
-
]
|
|
3397
|
-
});
|
|
3398
|
-
}
|
|
3399
|
-
// src/components/PageHeader.tsx
|
|
3400
|
-
import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3401
|
-
function PageHeader({ title, description, breadcrumbs, actions, density }) {
|
|
3402
|
-
return /* @__PURE__ */ jsxs20("header", {
|
|
3403
|
-
"data-density": density,
|
|
3404
|
-
"data-slot": "page-header",
|
|
3405
|
-
"data-scroll": "none",
|
|
3406
|
-
className: "flex min-w-0 flex-col gap-field-gap",
|
|
3407
|
-
children: [
|
|
3408
|
-
breadcrumbs,
|
|
3409
|
-
/* @__PURE__ */ jsxs20("div", {
|
|
3410
|
-
className: "flex min-w-0 flex-wrap items-start justify-between gap-panel",
|
|
3411
|
-
children: [
|
|
3412
|
-
/* @__PURE__ */ jsxs20("div", {
|
|
3413
|
-
className: "min-w-0",
|
|
3414
|
-
children: [
|
|
3415
|
-
/* @__PURE__ */ jsx34("h1", {
|
|
3416
|
-
className: "text-xl font-semibold text-foreground",
|
|
3417
|
-
children: title
|
|
3418
|
-
}),
|
|
3419
|
-
description && /* @__PURE__ */ jsx34("div", {
|
|
3420
|
-
className: "mt-1 text-sm text-muted-foreground",
|
|
3421
|
-
children: description
|
|
3422
|
-
})
|
|
3423
|
-
]
|
|
3424
|
-
}),
|
|
3425
|
-
actions && /* @__PURE__ */ jsx34("div", {
|
|
3426
|
-
className: "flex shrink-0 flex-wrap items-center gap-control-gap",
|
|
3427
|
-
children: actions
|
|
3428
|
-
})
|
|
3429
|
-
]
|
|
3430
|
-
})
|
|
3431
|
-
]
|
|
3432
|
-
});
|
|
3433
|
-
}
|
|
3434
|
-
// src/components/WorkspaceSwitcher.tsx
|
|
3435
|
-
import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3436
|
-
function WorkspaceSwitcher({
|
|
3437
|
-
workspaces,
|
|
3438
|
-
value,
|
|
3439
|
-
defaultValue,
|
|
3440
|
-
onValueChange,
|
|
3441
|
-
disabled,
|
|
3442
|
-
label = "Workspace",
|
|
3443
|
-
density
|
|
3444
|
-
}) {
|
|
3445
|
-
return /* @__PURE__ */ jsxs21(Select, {
|
|
3446
|
-
items: workspaces,
|
|
3447
|
-
value,
|
|
3448
|
-
defaultValue: defaultValue ?? workspaces[0]?.value,
|
|
3449
|
-
onValueChange: (next) => {
|
|
3450
|
-
if (next !== null)
|
|
3451
|
-
onValueChange?.(next);
|
|
3452
|
-
},
|
|
3453
|
-
disabled,
|
|
3454
|
-
children: [
|
|
3455
|
-
/* @__PURE__ */ jsx35(SelectTrigger, {
|
|
3456
|
-
"aria-label": label,
|
|
3457
|
-
density,
|
|
3458
|
-
children: /* @__PURE__ */ jsx35(SelectValue, {})
|
|
3459
|
-
}),
|
|
3460
|
-
/* @__PURE__ */ jsx35(SelectContent, {
|
|
3461
|
-
density,
|
|
3462
|
-
children: /* @__PURE__ */ jsx35(SelectGroup, {
|
|
3463
|
-
children: workspaces.map((workspace) => /* @__PURE__ */ jsx35(SelectItem, {
|
|
3464
|
-
value: workspace.value,
|
|
3465
|
-
children: workspace.label
|
|
3466
|
-
}, workspace.value))
|
|
3467
|
-
})
|
|
3468
|
-
})
|
|
3469
|
-
]
|
|
3470
|
-
});
|
|
3471
|
-
}
|
|
3472
|
-
// src/components/AccountMenu.tsx
|
|
3473
|
-
import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
3474
|
-
function AccountMenu({ name, email, image, onAction, density }) {
|
|
3475
|
-
return /* @__PURE__ */ jsxs22(DropdownMenu2, {
|
|
3476
|
-
children: [
|
|
3477
|
-
/* @__PURE__ */ jsxs22(DropdownMenuTrigger2, {
|
|
3478
|
-
render: /* @__PURE__ */ jsx36(Button2, {
|
|
3479
|
-
variant: "ghost",
|
|
3480
|
-
density
|
|
3481
|
-
}),
|
|
3482
|
-
"aria-label": `Account menu for ${name}`,
|
|
3483
|
-
children: [
|
|
3484
|
-
/* @__PURE__ */ jsxs22(Avatar2, {
|
|
3485
|
-
className: "size-control",
|
|
3486
|
-
children: [
|
|
3487
|
-
/* @__PURE__ */ jsx36(AvatarImage2, {
|
|
3488
|
-
src: image,
|
|
3489
|
-
alt: ""
|
|
3490
|
-
}),
|
|
3491
|
-
/* @__PURE__ */ jsx36(AvatarFallback2, {
|
|
3492
|
-
children: name.slice(0, 2).toUpperCase()
|
|
3493
|
-
})
|
|
3494
|
-
]
|
|
3495
|
-
}),
|
|
3496
|
-
/* @__PURE__ */ jsx36("span", {
|
|
3497
|
-
children: name
|
|
3498
|
-
})
|
|
3499
|
-
]
|
|
3500
|
-
}),
|
|
3501
|
-
/* @__PURE__ */ jsx36(DropdownMenuContent2, {
|
|
3502
|
-
density,
|
|
3503
|
-
align: "end",
|
|
3504
|
-
children: /* @__PURE__ */ jsxs22(DropdownMenuGroup2, {
|
|
3505
|
-
children: [
|
|
3506
|
-
/* @__PURE__ */ jsx36(DropdownMenuLabel2, {
|
|
3507
|
-
children: email ?? name
|
|
3508
|
-
}),
|
|
3509
|
-
/* @__PURE__ */ jsx36(DropdownMenuItem2, {
|
|
3510
|
-
onClick: () => onAction("profile"),
|
|
3511
|
-
children: "Profile"
|
|
3512
|
-
}),
|
|
3513
|
-
/* @__PURE__ */ jsx36(DropdownMenuItem2, {
|
|
3514
|
-
onClick: () => onAction("settings"),
|
|
3515
|
-
children: "Settings"
|
|
3516
|
-
}),
|
|
3517
|
-
/* @__PURE__ */ jsx36(DropdownMenuSeparator2, {}),
|
|
3518
|
-
/* @__PURE__ */ jsx36(DropdownMenuItem2, {
|
|
3519
|
-
onClick: () => onAction("sign-out"),
|
|
3520
|
-
children: "Sign out"
|
|
3521
|
-
})
|
|
3522
|
-
]
|
|
3523
|
-
})
|
|
3524
|
-
})
|
|
3525
|
-
]
|
|
3526
|
-
});
|
|
3527
|
-
}
|
|
3528
|
-
// src/components/StatCard.tsx
|
|
3529
|
-
import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3530
|
-
function StatCard({
|
|
3531
|
-
label,
|
|
3532
|
-
value,
|
|
3533
|
-
change,
|
|
3534
|
-
changeIntent = "neutral",
|
|
3535
|
-
description,
|
|
3536
|
-
children,
|
|
3537
|
-
loading = false,
|
|
3538
|
-
density
|
|
3539
|
-
}) {
|
|
3540
|
-
return /* @__PURE__ */ jsxs23(Card2, {
|
|
3541
|
-
density,
|
|
3542
|
-
"aria-label": label,
|
|
3543
|
-
"aria-busy": loading,
|
|
3544
|
-
children: [
|
|
3545
|
-
/* @__PURE__ */ jsxs23(CardHeader2, {
|
|
3546
|
-
children: [
|
|
3547
|
-
/* @__PURE__ */ jsx37(CardTitle2, {
|
|
3548
|
-
children: label
|
|
3549
|
-
}),
|
|
3550
|
-
description && /* @__PURE__ */ jsx37(CardDescription2, {
|
|
3551
|
-
children: description
|
|
3552
|
-
})
|
|
3553
|
-
]
|
|
3554
|
-
}),
|
|
3555
|
-
/* @__PURE__ */ jsx37(CardContent2, {
|
|
3556
|
-
children: /* @__PURE__ */ jsxs23("div", {
|
|
3557
|
-
className: "flex flex-wrap items-center justify-between gap-control-gap",
|
|
3558
|
-
children: [
|
|
3559
|
-
loading ? /* @__PURE__ */ jsx37(Skeleton2, {
|
|
3560
|
-
className: "h-8 w-24",
|
|
3561
|
-
"aria-label": `Loading ${label}`
|
|
3562
|
-
}) : /* @__PURE__ */ jsx37("div", {
|
|
3563
|
-
className: "text-2xl font-semibold tabular-nums",
|
|
3564
|
-
children: value
|
|
3565
|
-
}),
|
|
3566
|
-
change && /* @__PURE__ */ jsx37(Badge2, {
|
|
3567
|
-
variant: changeIntent === "positive" ? "success" : changeIntent === "negative" ? "destructive" : "secondary",
|
|
3568
|
-
children: change
|
|
3569
|
-
})
|
|
3570
|
-
]
|
|
3571
|
-
})
|
|
3572
|
-
}),
|
|
3573
|
-
children && /* @__PURE__ */ jsx37(CardFooter2, {
|
|
3574
|
-
children
|
|
3575
|
-
})
|
|
3576
|
-
]
|
|
3577
|
-
});
|
|
3578
|
-
}
|
|
3579
|
-
// src/components/AuthForm.tsx
|
|
3580
|
-
import { useId as useId2, useState as useState5 } from "react";
|
|
3581
|
-
import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3582
|
-
function AuthForm({
|
|
3583
|
-
mode = "sign-in",
|
|
3584
|
-
onSubmit,
|
|
3585
|
-
footer,
|
|
3586
|
-
alternativeActions,
|
|
3587
|
-
disabled = false,
|
|
3588
|
-
density
|
|
3589
|
-
}) {
|
|
3590
|
-
const id = useId2();
|
|
3591
|
-
const [pending, setPending] = useState5(false);
|
|
3592
|
-
const [error, setError] = useState5("");
|
|
3593
|
-
const title = mode === "sign-up" ? "Create an account" : mode === "reset-password" ? "Reset your password" : "Sign in";
|
|
3594
|
-
async function submit(event) {
|
|
3595
|
-
event.preventDefault();
|
|
3596
|
-
const data = new FormData(event.currentTarget);
|
|
3597
|
-
setError("");
|
|
3598
|
-
setPending(true);
|
|
3599
|
-
try {
|
|
3600
|
-
await onSubmit({
|
|
3601
|
-
email: String(data.get("email") ?? ""),
|
|
3602
|
-
password: String(data.get("password") ?? ""),
|
|
3603
|
-
name: String(data.get("name") ?? "")
|
|
3604
|
-
});
|
|
3605
|
-
} catch (error) {
|
|
3606
|
-
setError(error instanceof Error ? error.message : "Unable to submit. Please try again.");
|
|
3607
|
-
} finally {
|
|
3608
|
-
setPending(false);
|
|
3609
|
-
}
|
|
3610
|
-
}
|
|
3611
|
-
return /* @__PURE__ */ jsxs24(Card2, {
|
|
3612
|
-
density,
|
|
3613
|
-
children: [
|
|
3614
|
-
/* @__PURE__ */ jsxs24(CardHeader2, {
|
|
3615
|
-
children: [
|
|
3616
|
-
/* @__PURE__ */ jsx38(CardTitle2, {
|
|
3617
|
-
children: title
|
|
3618
|
-
}),
|
|
3619
|
-
/* @__PURE__ */ jsx38(CardDescription2, {
|
|
3620
|
-
children: mode === "reset-password" ? "Enter your email to request a password reset." : "Enter your details to continue."
|
|
3621
|
-
})
|
|
3622
|
-
]
|
|
3623
|
-
}),
|
|
3624
|
-
/* @__PURE__ */ jsx38(CardContent2, {
|
|
3625
|
-
children: /* @__PURE__ */ jsx38("form", {
|
|
3626
|
-
onSubmit: submit,
|
|
3627
|
-
"aria-label": title,
|
|
3628
|
-
"aria-busy": pending,
|
|
3629
|
-
children: /* @__PURE__ */ jsxs24(FieldGroup2, {
|
|
3630
|
-
children: [
|
|
3631
|
-
mode === "sign-up" && /* @__PURE__ */ jsxs24(Field2, {
|
|
3632
|
-
children: [
|
|
3633
|
-
/* @__PURE__ */ jsx38(FieldLabel2, {
|
|
3634
|
-
htmlFor: id + "-name",
|
|
3635
|
-
children: "Name"
|
|
3636
|
-
}),
|
|
3637
|
-
/* @__PURE__ */ jsx38(Input2, {
|
|
3638
|
-
id: id + "-name",
|
|
3639
|
-
name: "name",
|
|
3640
|
-
autoComplete: "name",
|
|
3641
|
-
required: true,
|
|
3642
|
-
disabled: disabled || pending
|
|
3643
|
-
})
|
|
3644
|
-
]
|
|
3645
|
-
}),
|
|
3646
|
-
/* @__PURE__ */ jsxs24(Field2, {
|
|
3647
|
-
children: [
|
|
3648
|
-
/* @__PURE__ */ jsx38(FieldLabel2, {
|
|
3649
|
-
htmlFor: id + "-email",
|
|
3650
|
-
children: "Email"
|
|
3651
|
-
}),
|
|
3652
|
-
/* @__PURE__ */ jsx38(Input2, {
|
|
3653
|
-
id: id + "-email",
|
|
3654
|
-
name: "email",
|
|
3655
|
-
type: "email",
|
|
3656
|
-
autoComplete: "email",
|
|
3657
|
-
required: true,
|
|
3658
|
-
disabled: disabled || pending
|
|
3659
|
-
})
|
|
3660
|
-
]
|
|
3661
|
-
}),
|
|
3662
|
-
mode !== "reset-password" && /* @__PURE__ */ jsxs24(Field2, {
|
|
3663
|
-
children: [
|
|
3664
|
-
/* @__PURE__ */ jsx38(FieldLabel2, {
|
|
3665
|
-
htmlFor: id + "-password",
|
|
3666
|
-
children: "Password"
|
|
3667
|
-
}),
|
|
3668
|
-
/* @__PURE__ */ jsx38(Input2, {
|
|
3669
|
-
id: id + "-password",
|
|
3670
|
-
name: "password",
|
|
3671
|
-
type: "password",
|
|
3672
|
-
autoComplete: mode === "sign-up" ? "new-password" : "current-password",
|
|
3673
|
-
minLength: mode === "sign-up" ? 8 : undefined,
|
|
3674
|
-
required: true,
|
|
3675
|
-
disabled: disabled || pending
|
|
3676
|
-
}),
|
|
3677
|
-
mode === "sign-up" && /* @__PURE__ */ jsx38(FieldDescription2, {
|
|
3678
|
-
children: "Use at least eight characters."
|
|
3679
|
-
})
|
|
3680
|
-
]
|
|
3681
|
-
}),
|
|
3682
|
-
error && /* @__PURE__ */ jsxs24(Alert2, {
|
|
3683
|
-
variant: "destructive",
|
|
3684
|
-
children: [
|
|
3685
|
-
/* @__PURE__ */ jsx38(AlertTitle2, {
|
|
3686
|
-
children: "Request failed"
|
|
3687
|
-
}),
|
|
3688
|
-
/* @__PURE__ */ jsx38(AlertDescription2, {
|
|
3689
|
-
children: error
|
|
3690
|
-
})
|
|
3691
|
-
]
|
|
3692
|
-
}),
|
|
3693
|
-
/* @__PURE__ */ jsxs24(Button2, {
|
|
3694
|
-
type: "submit",
|
|
3695
|
-
disabled: disabled || pending,
|
|
3696
|
-
children: [
|
|
3697
|
-
pending && /* @__PURE__ */ jsx38(Spinner2, {
|
|
3698
|
-
"data-icon": "inline-start"
|
|
3699
|
-
}),
|
|
3700
|
-
mode === "reset-password" ? "Send reset link" : title
|
|
3701
|
-
]
|
|
3702
|
-
}),
|
|
3703
|
-
alternativeActions
|
|
3704
|
-
]
|
|
3705
|
-
})
|
|
3706
|
-
})
|
|
3707
|
-
}),
|
|
3708
|
-
footer && /* @__PURE__ */ jsx38(CardFooter2, {
|
|
3709
|
-
children: footer
|
|
3710
|
-
})
|
|
3711
|
-
]
|
|
3712
|
-
});
|
|
3713
|
-
}
|
|
3714
|
-
// src/components/SettingsSection.tsx
|
|
3715
|
-
import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3716
|
-
function SettingsSection({
|
|
3717
|
-
title,
|
|
3718
|
-
description,
|
|
3719
|
-
children,
|
|
3720
|
-
onSubmit,
|
|
3721
|
-
saveLabel = "Save changes",
|
|
3722
|
-
pending = false,
|
|
3723
|
-
disabled = false,
|
|
3724
|
-
footer,
|
|
3725
|
-
destructive = false,
|
|
3726
|
-
density
|
|
3727
|
-
}) {
|
|
3728
|
-
return /* @__PURE__ */ jsx39("form", {
|
|
3729
|
-
"aria-label": title,
|
|
3730
|
-
onSubmit,
|
|
3731
|
-
"aria-busy": pending,
|
|
3732
|
-
children: /* @__PURE__ */ jsxs25(Card2, {
|
|
3733
|
-
density,
|
|
3734
|
-
children: [
|
|
3735
|
-
/* @__PURE__ */ jsxs25(CardHeader2, {
|
|
3736
|
-
children: [
|
|
3737
|
-
/* @__PURE__ */ jsx39(CardTitle2, {
|
|
3738
|
-
children: title
|
|
3739
|
-
}),
|
|
3740
|
-
description && /* @__PURE__ */ jsx39(CardDescription2, {
|
|
3741
|
-
children: description
|
|
3742
|
-
})
|
|
3743
|
-
]
|
|
3744
|
-
}),
|
|
3745
|
-
/* @__PURE__ */ jsx39(CardContent2, {
|
|
3746
|
-
children: /* @__PURE__ */ jsxs25("fieldset", {
|
|
3747
|
-
disabled: disabled || pending,
|
|
3748
|
-
className: "min-w-0 border-0 p-0",
|
|
3749
|
-
children: [
|
|
3750
|
-
/* @__PURE__ */ jsx39("legend", {
|
|
3751
|
-
className: "sr-only",
|
|
3752
|
-
children: title
|
|
3753
|
-
}),
|
|
3754
|
-
/* @__PURE__ */ jsx39(FieldGroup2, {
|
|
3755
|
-
children
|
|
3756
|
-
})
|
|
3757
|
-
]
|
|
3758
|
-
})
|
|
3759
|
-
}),
|
|
3760
|
-
/* @__PURE__ */ jsxs25(CardFooter2, {
|
|
3761
|
-
className: "flex flex-wrap items-center justify-between gap-control-gap",
|
|
3762
|
-
children: [
|
|
3763
|
-
footer,
|
|
3764
|
-
/* @__PURE__ */ jsxs25(Button2, {
|
|
3765
|
-
type: "submit",
|
|
3766
|
-
variant: destructive ? "destructive" : "default",
|
|
3767
|
-
disabled: disabled || pending,
|
|
3768
|
-
children: [
|
|
3769
|
-
pending && /* @__PURE__ */ jsx39(Spinner2, {
|
|
3770
|
-
"data-icon": "inline-start"
|
|
3771
|
-
}),
|
|
3772
|
-
saveLabel
|
|
3773
|
-
]
|
|
3774
|
-
})
|
|
3775
|
-
]
|
|
3776
|
-
})
|
|
3777
|
-
]
|
|
3778
|
-
})
|
|
3779
|
-
});
|
|
3780
|
-
}
|
|
3781
|
-
// src/components/TagInput.tsx
|
|
3782
|
-
import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3783
|
-
function TagInput({
|
|
3784
|
-
label,
|
|
3785
|
-
options,
|
|
3786
|
-
value,
|
|
3787
|
-
defaultValue,
|
|
3788
|
-
onValueChange,
|
|
3789
|
-
disabled,
|
|
3790
|
-
name,
|
|
3791
|
-
placeholder = "Add tags",
|
|
3792
|
-
density
|
|
3793
|
-
}) {
|
|
3794
|
-
const anchor = useComboboxAnchor();
|
|
3795
|
-
return /* @__PURE__ */ jsxs26(Combobox, {
|
|
3796
|
-
items: options,
|
|
3797
|
-
multiple: true,
|
|
3798
|
-
value,
|
|
3799
|
-
defaultValue,
|
|
3800
|
-
onValueChange,
|
|
3801
|
-
disabled,
|
|
3802
|
-
name,
|
|
3803
|
-
children: [
|
|
3804
|
-
/* @__PURE__ */ jsxs26(ComboboxChips, {
|
|
3805
|
-
ref: anchor,
|
|
3806
|
-
density,
|
|
3807
|
-
children: [
|
|
3808
|
-
/* @__PURE__ */ jsx40(ComboboxValue, {
|
|
3809
|
-
children: (values) => values.map((item) => /* @__PURE__ */ jsx40(ComboboxChip, {
|
|
3810
|
-
removeLabel: `Remove ${item}`,
|
|
3811
|
-
children: item
|
|
3812
|
-
}, item))
|
|
3813
|
-
}),
|
|
3814
|
-
/* @__PURE__ */ jsx40(ComboboxChipsInput, {
|
|
3815
|
-
"aria-label": label,
|
|
3816
|
-
placeholder
|
|
3817
|
-
})
|
|
3818
|
-
]
|
|
3819
|
-
}),
|
|
3820
|
-
/* @__PURE__ */ jsxs26(ComboboxContent, {
|
|
3821
|
-
anchor,
|
|
3822
|
-
density,
|
|
3823
|
-
children: [
|
|
3824
|
-
/* @__PURE__ */ jsx40(ComboboxEmpty, {
|
|
3825
|
-
children: "No matching tags."
|
|
3826
|
-
}),
|
|
3827
|
-
/* @__PURE__ */ jsx40(ComboboxList, {
|
|
3828
|
-
children: /* @__PURE__ */ jsx40(ComboboxGroup, {
|
|
3829
|
-
children: /* @__PURE__ */ jsx40(ComboboxCollection, {
|
|
3830
|
-
children: (item) => /* @__PURE__ */ jsx40(ComboboxItem, {
|
|
3831
|
-
value: item,
|
|
3832
|
-
children: item
|
|
3833
|
-
}, item)
|
|
3834
|
-
})
|
|
3835
|
-
})
|
|
3836
|
-
})
|
|
3837
|
-
]
|
|
3838
|
-
})
|
|
3839
|
-
]
|
|
3840
|
-
});
|
|
3841
|
-
}
|
|
3842
|
-
// src/components/FilterBar.tsx
|
|
3843
|
-
import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3844
|
-
function FilterBar({
|
|
3845
|
-
label,
|
|
3846
|
-
search,
|
|
3847
|
-
onSearchChange,
|
|
3848
|
-
filters,
|
|
3849
|
-
value,
|
|
3850
|
-
onValueChange,
|
|
3851
|
-
disabled,
|
|
3852
|
-
density
|
|
3853
|
-
}) {
|
|
3854
|
-
return /* @__PURE__ */ jsxs27("fieldset", {
|
|
3855
|
-
"aria-label": label,
|
|
3856
|
-
disabled,
|
|
3857
|
-
"data-density": density,
|
|
3858
|
-
className: "flex min-w-0 flex-wrap items-center gap-2",
|
|
3859
|
-
children: [
|
|
3860
|
-
/* @__PURE__ */ jsx41(Input2, {
|
|
3861
|
-
"aria-label": `Search ${label}`,
|
|
3862
|
-
type: "search",
|
|
3863
|
-
value: search,
|
|
3864
|
-
onChange: (event) => onSearchChange(event.target.value),
|
|
3865
|
-
className: "min-w-40 flex-1"
|
|
3866
|
-
}),
|
|
3867
|
-
filters.map((filter) => /* @__PURE__ */ jsxs27(NativeSelect2, {
|
|
3868
|
-
"aria-label": filter.label,
|
|
3869
|
-
value: value[filter.id] ?? "",
|
|
3870
|
-
onChange: (event) => onValueChange({ ...value, [filter.id]: event.target.value }),
|
|
3871
|
-
children: [
|
|
3872
|
-
/* @__PURE__ */ jsxs27(NativeSelectOption2, {
|
|
3873
|
-
value: "",
|
|
3874
|
-
children: [
|
|
3875
|
-
"All ",
|
|
3876
|
-
filter.label.toLowerCase()
|
|
3877
|
-
]
|
|
3878
|
-
}),
|
|
3879
|
-
filter.options.map((option) => /* @__PURE__ */ jsx41(NativeSelectOption2, {
|
|
3880
|
-
value: option.value,
|
|
3881
|
-
children: option.label
|
|
3882
|
-
}, option.value))
|
|
3883
|
-
]
|
|
3884
|
-
}, filter.id)),
|
|
3885
|
-
/* @__PURE__ */ jsx41(Button2, {
|
|
3886
|
-
type: "button",
|
|
3887
|
-
variant: "ghost",
|
|
3888
|
-
disabled: !search && !Object.values(value).some(Boolean),
|
|
3889
|
-
onClick: () => {
|
|
3890
|
-
onSearchChange("");
|
|
3891
|
-
onValueChange({});
|
|
3892
|
-
},
|
|
3893
|
-
children: "Clear filters"
|
|
3894
|
-
})
|
|
3895
|
-
]
|
|
3896
|
-
});
|
|
3897
|
-
}
|
|
3898
|
-
// src/components/BarList.tsx
|
|
3899
|
-
import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3900
|
-
function BarList({
|
|
3901
|
-
label,
|
|
3902
|
-
items,
|
|
3903
|
-
onItemSelect,
|
|
3904
|
-
valueFormatter = (value) => value.toLocaleString(),
|
|
3905
|
-
density
|
|
3906
|
-
}) {
|
|
3907
|
-
const max = Math.max(1, ...items.map((item) => item.value));
|
|
3908
|
-
return /* @__PURE__ */ jsxs28("section", {
|
|
3909
|
-
"aria-label": label,
|
|
3910
|
-
"data-density": density,
|
|
3911
|
-
children: [
|
|
3912
|
-
/* @__PURE__ */ jsx42("ul", {
|
|
3913
|
-
className: "grid gap-3",
|
|
3914
|
-
children: items.map((item) => /* @__PURE__ */ jsx42("li", {
|
|
3915
|
-
children: /* @__PURE__ */ jsxs28(Meter, {
|
|
3916
|
-
min: 0,
|
|
3917
|
-
max,
|
|
3918
|
-
value: item.value,
|
|
3919
|
-
"aria-label": item.label,
|
|
3920
|
-
format: { maximumFractionDigits: 2 },
|
|
3921
|
-
children: [
|
|
3922
|
-
/* @__PURE__ */ jsxs28("div", {
|
|
3923
|
-
className: "mb-1 flex items-center justify-between gap-3 text-sm",
|
|
3924
|
-
children: [
|
|
3925
|
-
/* @__PURE__ */ jsx42(MeterLabel, {
|
|
3926
|
-
children: onItemSelect ? /* @__PURE__ */ jsx42(Button2, {
|
|
3927
|
-
type: "button",
|
|
3928
|
-
variant: "link",
|
|
3929
|
-
className: "h-auto p-0",
|
|
3930
|
-
onClick: () => onItemSelect(item),
|
|
3931
|
-
children: item.label
|
|
3932
|
-
}) : item.label
|
|
3933
|
-
}),
|
|
3934
|
-
/* @__PURE__ */ jsx42(MeterValue, {
|
|
3935
|
-
children: () => valueFormatter(item.value)
|
|
3936
|
-
})
|
|
3937
|
-
]
|
|
3938
|
-
}),
|
|
3939
|
-
/* @__PURE__ */ jsx42(MeterTrack, {
|
|
3940
|
-
children: /* @__PURE__ */ jsx42(MeterIndicator, {})
|
|
3941
|
-
})
|
|
3942
|
-
]
|
|
3943
|
-
})
|
|
3944
|
-
}, item.id))
|
|
3945
|
-
}),
|
|
3946
|
-
!items.length && /* @__PURE__ */ jsx42("p", {
|
|
3947
|
-
role: "status",
|
|
3948
|
-
className: "text-sm text-muted-foreground",
|
|
3949
|
-
children: "No data available."
|
|
3950
|
-
})
|
|
3951
|
-
]
|
|
3952
|
-
});
|
|
3953
|
-
}
|
|
3954
|
-
// src/components/StatusTracker.tsx
|
|
3955
|
-
import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3956
|
-
var statusClasses = { success: "bg-success", warning: "bg-warning", error: "bg-destructive", unknown: "bg-muted" };
|
|
3957
|
-
function StatusTracker({ label, items, onItemSelect, density }) {
|
|
3958
|
-
return /* @__PURE__ */ jsx43(TooltipProvider2, {
|
|
3959
|
-
children: /* @__PURE__ */ jsx43("div", {
|
|
3960
|
-
role: "group",
|
|
3961
|
-
"aria-label": label,
|
|
3962
|
-
"data-density": density,
|
|
3963
|
-
className: "flex min-w-0 gap-1",
|
|
3964
|
-
children: items.map((item) => /* @__PURE__ */ jsxs29(Tooltip2, {
|
|
3965
|
-
children: [
|
|
3966
|
-
/* @__PURE__ */ jsx43(TooltipTrigger2, {
|
|
3967
|
-
"aria-label": `${item.label}: ${item.status}`,
|
|
3968
|
-
onClick: () => onItemSelect?.(item),
|
|
3969
|
-
className: cn2("h-8 min-w-2 flex-1 rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", statusClasses[item.status])
|
|
3970
|
-
}),
|
|
3971
|
-
/* @__PURE__ */ jsxs29(TooltipContent2, {
|
|
3972
|
-
children: [
|
|
3973
|
-
item.label,
|
|
3974
|
-
": ",
|
|
3975
|
-
item.description ?? item.status
|
|
3976
|
-
]
|
|
3977
|
-
})
|
|
3978
|
-
]
|
|
3979
|
-
}, item.id))
|
|
3980
|
-
})
|
|
3981
|
-
});
|
|
3982
|
-
}
|
|
3983
|
-
// src/components/DashboardLayout.tsx
|
|
3984
|
-
import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3985
|
-
function DashboardLayout({
|
|
3986
|
-
title,
|
|
3987
|
-
description,
|
|
3988
|
-
actions,
|
|
3989
|
-
filters,
|
|
3990
|
-
stats,
|
|
3991
|
-
children,
|
|
3992
|
-
footer,
|
|
3993
|
-
density
|
|
3994
|
-
}) {
|
|
3995
|
-
return /* @__PURE__ */ jsxs30("div", {
|
|
3996
|
-
"data-density": density,
|
|
3997
|
-
"data-scroll": "none",
|
|
3998
|
-
className: "grid min-w-0 gap-6",
|
|
3999
|
-
children: [
|
|
4000
|
-
/* @__PURE__ */ jsx44(PageHeader, {
|
|
4001
|
-
title,
|
|
4002
|
-
description,
|
|
4003
|
-
actions
|
|
4004
|
-
}),
|
|
4005
|
-
filters,
|
|
4006
|
-
stats.length > 0 && /* @__PURE__ */ jsx44("div", {
|
|
4007
|
-
className: "grid gap-4 sm:grid-cols-2 xl:grid-cols-4",
|
|
4008
|
-
children: stats.map(({ id, ...stat }) => /* @__PURE__ */ jsx44(StatCard, {
|
|
4009
|
-
...stat
|
|
4010
|
-
}, id))
|
|
4011
|
-
}),
|
|
4012
|
-
/* @__PURE__ */ jsx44("div", {
|
|
4013
|
-
className: "grid min-w-0 gap-4",
|
|
4014
|
-
children
|
|
4015
|
-
}),
|
|
4016
|
-
footer
|
|
4017
|
-
]
|
|
4018
|
-
});
|
|
4019
|
-
}
|
|
4020
|
-
// src/components/BillingUsage.tsx
|
|
4021
|
-
import { jsx as jsx45, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
4022
|
-
function BillingUsage({ plan, price, period, metrics, onManage, pending, density }) {
|
|
4023
|
-
return /* @__PURE__ */ jsxs31(Card2, {
|
|
4024
|
-
density,
|
|
4025
|
-
"aria-label": "Billing and usage",
|
|
4026
|
-
children: [
|
|
4027
|
-
/* @__PURE__ */ jsxs31(CardHeader2, {
|
|
4028
|
-
children: [
|
|
4029
|
-
/* @__PURE__ */ jsx45(CardTitle2, {
|
|
4030
|
-
children: plan
|
|
4031
|
-
}),
|
|
4032
|
-
/* @__PURE__ */ jsxs31(CardDescription2, {
|
|
4033
|
-
children: [
|
|
4034
|
-
price,
|
|
4035
|
-
" · ",
|
|
4036
|
-
period
|
|
4037
|
-
]
|
|
4038
|
-
})
|
|
4039
|
-
]
|
|
4040
|
-
}),
|
|
4041
|
-
/* @__PURE__ */ jsx45(CardContent2, {
|
|
4042
|
-
className: "grid gap-4",
|
|
4043
|
-
children: metrics.map((metric) => /* @__PURE__ */ jsxs31(Meter, {
|
|
4044
|
-
value: metric.used,
|
|
4045
|
-
max: metric.limit,
|
|
4046
|
-
"aria-label": metric.label,
|
|
4047
|
-
children: [
|
|
4048
|
-
/* @__PURE__ */ jsxs31("div", {
|
|
4049
|
-
className: "mb-2 flex items-center justify-between gap-3 text-sm",
|
|
4050
|
-
children: [
|
|
4051
|
-
/* @__PURE__ */ jsx45(MeterLabel, {
|
|
4052
|
-
children: metric.label
|
|
4053
|
-
}),
|
|
4054
|
-
/* @__PURE__ */ jsx45(MeterValue, {
|
|
4055
|
-
children: () => `${metric.used.toLocaleString()} / ${metric.limit.toLocaleString()}${metric.unit ? ` ${metric.unit}` : ""}`
|
|
4056
|
-
})
|
|
4057
|
-
]
|
|
4058
|
-
}),
|
|
4059
|
-
/* @__PURE__ */ jsx45(MeterTrack, {
|
|
4060
|
-
children: /* @__PURE__ */ jsx45(MeterIndicator, {})
|
|
4061
|
-
})
|
|
4062
|
-
]
|
|
4063
|
-
}, metric.id))
|
|
4064
|
-
}),
|
|
4065
|
-
/* @__PURE__ */ jsx45(CardFooter2, {
|
|
4066
|
-
children: /* @__PURE__ */ jsx45(Button2, {
|
|
4067
|
-
type: "button",
|
|
4068
|
-
variant: "outline",
|
|
4069
|
-
onClick: onManage,
|
|
4070
|
-
disabled: pending,
|
|
4071
|
-
children: "Manage billing"
|
|
4072
|
-
})
|
|
4073
|
-
})
|
|
4074
|
-
]
|
|
4075
|
-
});
|
|
4076
|
-
}
|
|
365
|
+
Avatar2,
|
|
366
|
+
AvatarImage2,
|
|
367
|
+
AvatarFallback2,
|
|
368
|
+
AvatarBadge2,
|
|
369
|
+
AvatarGroup2,
|
|
370
|
+
AvatarGroupCount2
|
|
371
|
+
} from "./chunk-hyq4nwg2.js";
|
|
372
|
+
import {
|
|
373
|
+
TooltipProvider2,
|
|
374
|
+
Tooltip2,
|
|
375
|
+
TooltipTrigger2,
|
|
376
|
+
TooltipContent2
|
|
377
|
+
} from "./chunk-mz3e810d.js";
|
|
378
|
+
import {
|
|
379
|
+
HoverCard2,
|
|
380
|
+
HoverCardTrigger2,
|
|
381
|
+
HoverCardContent2
|
|
382
|
+
} from "./chunk-hh43wg05.js";
|
|
383
|
+
import {
|
|
384
|
+
Skeleton2
|
|
385
|
+
} from "./chunk-d70rcwk7.js";
|
|
386
|
+
import {
|
|
387
|
+
Label2
|
|
388
|
+
} from "./chunk-jcxxjkqx.js";
|
|
389
|
+
import {
|
|
390
|
+
badgeVariants2,
|
|
391
|
+
Badge2
|
|
392
|
+
} from "./chunk-wjx6zf94.js";
|
|
393
|
+
import {
|
|
394
|
+
Collapsible2,
|
|
395
|
+
CollapsibleTrigger2,
|
|
396
|
+
CollapsibleContent2
|
|
397
|
+
} from "./chunk-24d68cjp.js";
|
|
398
|
+
import {
|
|
399
|
+
DirectionProvider2,
|
|
400
|
+
useDirection2
|
|
401
|
+
} from "./chunk-jpvw9xqy.js";
|
|
402
|
+
import {
|
|
403
|
+
Popover2,
|
|
404
|
+
PopoverTrigger2,
|
|
405
|
+
PopoverContent2,
|
|
406
|
+
PopoverHeader2,
|
|
407
|
+
PopoverTitle2,
|
|
408
|
+
PopoverDescription2
|
|
409
|
+
} from "./chunk-4djw71cv.js";
|
|
410
|
+
import {
|
|
411
|
+
Dialog2,
|
|
412
|
+
DialogTrigger2,
|
|
413
|
+
DialogPortal2,
|
|
414
|
+
DialogClose2,
|
|
415
|
+
DialogOverlay2,
|
|
416
|
+
DialogContent2,
|
|
417
|
+
DialogHeader2,
|
|
418
|
+
DialogFooter2,
|
|
419
|
+
DialogTitle2,
|
|
420
|
+
DialogDescription2
|
|
421
|
+
} from "./chunk-ex1zk6ta.js";
|
|
422
|
+
import {
|
|
423
|
+
InputGroup2,
|
|
424
|
+
InputGroupAddon2,
|
|
425
|
+
InputGroupButton2,
|
|
426
|
+
InputGroupText2,
|
|
427
|
+
InputGroupInput2,
|
|
428
|
+
InputGroupTextarea2
|
|
429
|
+
} from "./chunk-57jj9v64.js";
|
|
430
|
+
import {
|
|
431
|
+
Input2
|
|
432
|
+
} from "./chunk-59p19t57.js";
|
|
433
|
+
import {
|
|
434
|
+
Textarea2
|
|
435
|
+
} from "./chunk-hz9azhzx.js";
|
|
436
|
+
import {
|
|
437
|
+
PortalProvider2
|
|
438
|
+
} from "./chunk-aa7m22zj.js";
|
|
439
|
+
import {
|
|
440
|
+
usePortalContainer2
|
|
441
|
+
} from "./chunk-j89xg1ak.js";
|
|
442
|
+
import"./chunk-k99h6evz.js";
|
|
443
|
+
import {
|
|
444
|
+
Separator2
|
|
445
|
+
} from "./chunk-rajgnfbr.js";
|
|
446
|
+
import {
|
|
447
|
+
useTheme2
|
|
448
|
+
} from "./chunk-1j2hz3w9.js";
|
|
449
|
+
import"./chunk-e6hk39ev.js";
|
|
450
|
+
import {
|
|
451
|
+
buttonVariants2,
|
|
452
|
+
Button2
|
|
453
|
+
} from "./chunk-q7p28b89.js";
|
|
454
|
+
import {
|
|
455
|
+
cn2
|
|
456
|
+
} from "./chunk-cp2m7y7v.js";
|
|
4077
457
|
export {
|
|
4078
|
-
Accordion,
|
|
4079
|
-
AccordionContent,
|
|
4080
|
-
AccordionItem,
|
|
4081
|
-
AccordionTrigger,
|
|
4082
|
-
AccountMenu,
|
|
458
|
+
Accordion2 as Accordion,
|
|
459
|
+
AccordionContent2 as AccordionContent,
|
|
460
|
+
AccordionItem2 as AccordionItem,
|
|
461
|
+
AccordionTrigger2 as AccordionTrigger,
|
|
462
|
+
AccountMenu2 as AccountMenu,
|
|
4083
463
|
Alert2 as Alert,
|
|
4084
464
|
AlertAction2 as AlertAction,
|
|
4085
465
|
AlertDescription2 as AlertDescription,
|
|
4086
|
-
AlertDialog,
|
|
4087
|
-
AlertDialogAction,
|
|
4088
|
-
AlertDialogCancel,
|
|
4089
|
-
AlertDialogContent,
|
|
4090
|
-
AlertDialogDescription,
|
|
4091
|
-
AlertDialogFooter,
|
|
4092
|
-
AlertDialogHeader,
|
|
4093
|
-
AlertDialogMedia,
|
|
4094
|
-
AlertDialogOverlay,
|
|
4095
|
-
AlertDialogPortal,
|
|
4096
|
-
AlertDialogTitle,
|
|
4097
|
-
AlertDialogTrigger,
|
|
466
|
+
AlertDialog2 as AlertDialog,
|
|
467
|
+
AlertDialogAction2 as AlertDialogAction,
|
|
468
|
+
AlertDialogCancel2 as AlertDialogCancel,
|
|
469
|
+
AlertDialogContent2 as AlertDialogContent,
|
|
470
|
+
AlertDialogDescription2 as AlertDialogDescription,
|
|
471
|
+
AlertDialogFooter2 as AlertDialogFooter,
|
|
472
|
+
AlertDialogHeader2 as AlertDialogHeader,
|
|
473
|
+
AlertDialogMedia2 as AlertDialogMedia,
|
|
474
|
+
AlertDialogOverlay2 as AlertDialogOverlay,
|
|
475
|
+
AlertDialogPortal2 as AlertDialogPortal,
|
|
476
|
+
AlertDialogTitle2 as AlertDialogTitle,
|
|
477
|
+
AlertDialogTrigger2 as AlertDialogTrigger,
|
|
4098
478
|
AlertTitle2 as AlertTitle,
|
|
4099
|
-
AppShell,
|
|
4100
|
-
AspectRatio,
|
|
4101
|
-
Attachment,
|
|
4102
|
-
AttachmentAction,
|
|
4103
|
-
AttachmentActions,
|
|
4104
|
-
AttachmentContent,
|
|
4105
|
-
AttachmentDescription,
|
|
4106
|
-
AttachmentGroup,
|
|
4107
|
-
AttachmentMedia,
|
|
4108
|
-
AttachmentTitle,
|
|
4109
|
-
AttachmentTrigger,
|
|
4110
|
-
AuthForm,
|
|
479
|
+
AppShell2 as AppShell,
|
|
480
|
+
AspectRatio2 as AspectRatio,
|
|
481
|
+
Attachment2 as Attachment,
|
|
482
|
+
AttachmentAction2 as AttachmentAction,
|
|
483
|
+
AttachmentActions2 as AttachmentActions,
|
|
484
|
+
AttachmentContent2 as AttachmentContent,
|
|
485
|
+
AttachmentDescription2 as AttachmentDescription,
|
|
486
|
+
AttachmentGroup2 as AttachmentGroup,
|
|
487
|
+
AttachmentMedia2 as AttachmentMedia,
|
|
488
|
+
AttachmentTitle2 as AttachmentTitle,
|
|
489
|
+
AttachmentTrigger2 as AttachmentTrigger,
|
|
490
|
+
AuthForm2 as AuthForm,
|
|
4111
491
|
Avatar2 as Avatar,
|
|
4112
492
|
AvatarBadge2 as AvatarBadge,
|
|
4113
493
|
AvatarFallback2 as AvatarFallback,
|
|
@@ -4115,24 +495,24 @@ export {
|
|
|
4115
495
|
AvatarGroupCount2 as AvatarGroupCount,
|
|
4116
496
|
AvatarImage2 as AvatarImage,
|
|
4117
497
|
Badge2 as Badge,
|
|
4118
|
-
BarList,
|
|
4119
|
-
BillingUsage,
|
|
4120
|
-
Breadcrumb,
|
|
4121
|
-
BreadcrumbEllipsis,
|
|
4122
|
-
BreadcrumbItem,
|
|
4123
|
-
BreadcrumbLink,
|
|
4124
|
-
BreadcrumbList,
|
|
4125
|
-
BreadcrumbPage,
|
|
4126
|
-
BreadcrumbSeparator,
|
|
4127
|
-
Bubble,
|
|
4128
|
-
BubbleContent,
|
|
4129
|
-
BubbleGroup,
|
|
4130
|
-
BubbleReactions,
|
|
498
|
+
BarList2 as BarList,
|
|
499
|
+
BillingUsage2 as BillingUsage,
|
|
500
|
+
Breadcrumb2 as Breadcrumb,
|
|
501
|
+
BreadcrumbEllipsis2 as BreadcrumbEllipsis,
|
|
502
|
+
BreadcrumbItem2 as BreadcrumbItem,
|
|
503
|
+
BreadcrumbLink2 as BreadcrumbLink,
|
|
504
|
+
BreadcrumbList2 as BreadcrumbList,
|
|
505
|
+
BreadcrumbPage2 as BreadcrumbPage,
|
|
506
|
+
BreadcrumbSeparator2 as BreadcrumbSeparator,
|
|
507
|
+
Bubble2 as Bubble,
|
|
508
|
+
BubbleContent2 as BubbleContent,
|
|
509
|
+
BubbleGroup2 as BubbleGroup,
|
|
510
|
+
BubbleReactions2 as BubbleReactions,
|
|
4131
511
|
Button2 as Button,
|
|
4132
|
-
ButtonGroup,
|
|
4133
|
-
ButtonGroupSeparator,
|
|
4134
|
-
ButtonGroupText,
|
|
4135
|
-
ButtonLink,
|
|
512
|
+
ButtonGroup2 as ButtonGroup,
|
|
513
|
+
ButtonGroupSeparator2 as ButtonGroupSeparator,
|
|
514
|
+
ButtonGroupText2 as ButtonGroupText,
|
|
515
|
+
ButtonLink2 as ButtonLink,
|
|
4136
516
|
Card2 as Card,
|
|
4137
517
|
CardAction2 as CardAction,
|
|
4138
518
|
CardContent2 as CardContent,
|
|
@@ -4144,39 +524,39 @@ export {
|
|
|
4144
524
|
Collapsible2 as Collapsible,
|
|
4145
525
|
CollapsibleContent2 as CollapsibleContent,
|
|
4146
526
|
CollapsibleTrigger2 as CollapsibleTrigger,
|
|
4147
|
-
Combobox,
|
|
4148
|
-
ComboboxChip,
|
|
4149
|
-
ComboboxChips,
|
|
4150
|
-
ComboboxChipsInput,
|
|
4151
|
-
ComboboxCollection,
|
|
4152
|
-
ComboboxContent,
|
|
4153
|
-
ComboboxEmpty,
|
|
4154
|
-
ComboboxGroup,
|
|
4155
|
-
ComboboxInput,
|
|
4156
|
-
ComboboxItem,
|
|
4157
|
-
ComboboxLabel,
|
|
4158
|
-
ComboboxList,
|
|
4159
|
-
ComboboxSeparator,
|
|
4160
|
-
ComboboxTrigger,
|
|
4161
|
-
ComboboxValue,
|
|
4162
|
-
ConfirmationDialog,
|
|
4163
|
-
ContextMenu,
|
|
4164
|
-
ContextMenuCheckboxItem,
|
|
4165
|
-
ContextMenuContent,
|
|
4166
|
-
ContextMenuGroup,
|
|
4167
|
-
ContextMenuItem,
|
|
4168
|
-
ContextMenuLabel,
|
|
4169
|
-
ContextMenuPortal,
|
|
4170
|
-
ContextMenuRadioGroup,
|
|
4171
|
-
ContextMenuRadioItem,
|
|
4172
|
-
ContextMenuSeparator,
|
|
4173
|
-
ContextMenuShortcut,
|
|
4174
|
-
ContextMenuSub,
|
|
4175
|
-
ContextMenuSubContent,
|
|
4176
|
-
ContextMenuSubTrigger,
|
|
4177
|
-
ContextMenuTrigger,
|
|
4178
|
-
DashboardLayout,
|
|
4179
|
-
DensityProvider,
|
|
527
|
+
Combobox2 as Combobox,
|
|
528
|
+
ComboboxChip2 as ComboboxChip,
|
|
529
|
+
ComboboxChips2 as ComboboxChips,
|
|
530
|
+
ComboboxChipsInput2 as ComboboxChipsInput,
|
|
531
|
+
ComboboxCollection2 as ComboboxCollection,
|
|
532
|
+
ComboboxContent2 as ComboboxContent,
|
|
533
|
+
ComboboxEmpty2 as ComboboxEmpty,
|
|
534
|
+
ComboboxGroup2 as ComboboxGroup,
|
|
535
|
+
ComboboxInput2 as ComboboxInput,
|
|
536
|
+
ComboboxItem2 as ComboboxItem,
|
|
537
|
+
ComboboxLabel2 as ComboboxLabel,
|
|
538
|
+
ComboboxList2 as ComboboxList,
|
|
539
|
+
ComboboxSeparator2 as ComboboxSeparator,
|
|
540
|
+
ComboboxTrigger2 as ComboboxTrigger,
|
|
541
|
+
ComboboxValue2 as ComboboxValue,
|
|
542
|
+
ConfirmationDialog2 as ConfirmationDialog,
|
|
543
|
+
ContextMenu2 as ContextMenu,
|
|
544
|
+
ContextMenuCheckboxItem2 as ContextMenuCheckboxItem,
|
|
545
|
+
ContextMenuContent2 as ContextMenuContent,
|
|
546
|
+
ContextMenuGroup2 as ContextMenuGroup,
|
|
547
|
+
ContextMenuItem2 as ContextMenuItem,
|
|
548
|
+
ContextMenuLabel2 as ContextMenuLabel,
|
|
549
|
+
ContextMenuPortal2 as ContextMenuPortal,
|
|
550
|
+
ContextMenuRadioGroup2 as ContextMenuRadioGroup,
|
|
551
|
+
ContextMenuRadioItem2 as ContextMenuRadioItem,
|
|
552
|
+
ContextMenuSeparator2 as ContextMenuSeparator,
|
|
553
|
+
ContextMenuShortcut2 as ContextMenuShortcut,
|
|
554
|
+
ContextMenuSub2 as ContextMenuSub,
|
|
555
|
+
ContextMenuSubContent2 as ContextMenuSubContent,
|
|
556
|
+
ContextMenuSubTrigger2 as ContextMenuSubTrigger,
|
|
557
|
+
ContextMenuTrigger2 as ContextMenuTrigger,
|
|
558
|
+
DashboardLayout2 as DashboardLayout,
|
|
559
|
+
DensityProvider2 as DensityProvider,
|
|
4180
560
|
Dialog2 as Dialog,
|
|
4181
561
|
DialogClose2 as DialogClose,
|
|
4182
562
|
DialogContent2 as DialogContent,
|
|
@@ -4191,17 +571,17 @@ export {
|
|
|
4191
571
|
DragDropPreview2 as DragDropPreview,
|
|
4192
572
|
DragDropProvider2 as DragDropProvider,
|
|
4193
573
|
DragSource2 as DragSource,
|
|
4194
|
-
Drawer,
|
|
4195
|
-
DrawerClose,
|
|
4196
|
-
DrawerContent,
|
|
4197
|
-
DrawerDescription,
|
|
4198
|
-
DrawerFooter,
|
|
4199
|
-
DrawerHeader,
|
|
4200
|
-
DrawerOverlay,
|
|
4201
|
-
DrawerPortal,
|
|
4202
|
-
DrawerSwipeHandle,
|
|
4203
|
-
DrawerTitle,
|
|
4204
|
-
DrawerTrigger,
|
|
574
|
+
Drawer2 as Drawer,
|
|
575
|
+
DrawerClose2 as DrawerClose,
|
|
576
|
+
DrawerContent2 as DrawerContent,
|
|
577
|
+
DrawerDescription2 as DrawerDescription,
|
|
578
|
+
DrawerFooter2 as DrawerFooter,
|
|
579
|
+
DrawerHeader2 as DrawerHeader,
|
|
580
|
+
DrawerOverlay2 as DrawerOverlay,
|
|
581
|
+
DrawerPortal2 as DrawerPortal,
|
|
582
|
+
DrawerSwipeHandle2 as DrawerSwipeHandle,
|
|
583
|
+
DrawerTitle2 as DrawerTitle,
|
|
584
|
+
DrawerTrigger2 as DrawerTrigger,
|
|
4205
585
|
DropTarget2 as DropTarget,
|
|
4206
586
|
DropdownMenu2 as DropdownMenu,
|
|
4207
587
|
DropdownMenuCheckboxItem2 as DropdownMenuCheckboxItem,
|
|
@@ -4223,7 +603,7 @@ export {
|
|
|
4223
603
|
EmptyDescription2 as EmptyDescription,
|
|
4224
604
|
EmptyHeader2 as EmptyHeader,
|
|
4225
605
|
EmptyMedia2 as EmptyMedia,
|
|
4226
|
-
EmptyState,
|
|
606
|
+
EmptyState3 as EmptyState,
|
|
4227
607
|
EmptyTitle2 as EmptyTitle,
|
|
4228
608
|
Field2 as Field,
|
|
4229
609
|
FieldContent2 as FieldContent,
|
|
@@ -4235,12 +615,12 @@ export {
|
|
|
4235
615
|
FieldSeparator2 as FieldSeparator,
|
|
4236
616
|
FieldSet2 as FieldSet,
|
|
4237
617
|
FieldTitle2 as FieldTitle,
|
|
4238
|
-
FilterBar,
|
|
618
|
+
FilterBar2 as FilterBar,
|
|
4239
619
|
HoverCard2 as HoverCard,
|
|
4240
620
|
HoverCardContent2 as HoverCardContent,
|
|
4241
621
|
HoverCardTrigger2 as HoverCardTrigger,
|
|
4242
|
-
ImagePicker,
|
|
4243
|
-
InlineEdit,
|
|
622
|
+
ImagePicker2 as ImagePicker,
|
|
623
|
+
InlineEdit2 as InlineEdit,
|
|
4244
624
|
Input2 as Input,
|
|
4245
625
|
InputGroup2 as InputGroup,
|
|
4246
626
|
InputGroupAddon2 as InputGroupAddon,
|
|
@@ -4248,79 +628,79 @@ export {
|
|
|
4248
628
|
InputGroupInput2 as InputGroupInput,
|
|
4249
629
|
InputGroupText2 as InputGroupText,
|
|
4250
630
|
InputGroupTextarea2 as InputGroupTextarea,
|
|
4251
|
-
Item,
|
|
4252
|
-
ItemActions,
|
|
4253
|
-
ItemContent,
|
|
4254
|
-
ItemDescription,
|
|
4255
|
-
ItemFooter,
|
|
4256
|
-
ItemGroup,
|
|
4257
|
-
ItemHeader,
|
|
4258
|
-
ItemMedia,
|
|
4259
|
-
ItemSeparator,
|
|
4260
|
-
ItemTitle,
|
|
4261
|
-
JsonViewer,
|
|
631
|
+
Item2 as Item,
|
|
632
|
+
ItemActions2 as ItemActions,
|
|
633
|
+
ItemContent2 as ItemContent,
|
|
634
|
+
ItemDescription2 as ItemDescription,
|
|
635
|
+
ItemFooter2 as ItemFooter,
|
|
636
|
+
ItemGroup2 as ItemGroup,
|
|
637
|
+
ItemHeader2 as ItemHeader,
|
|
638
|
+
ItemMedia2 as ItemMedia,
|
|
639
|
+
ItemSeparator2 as ItemSeparator,
|
|
640
|
+
ItemTitle2 as ItemTitle,
|
|
641
|
+
JsonViewer2 as JsonViewer,
|
|
4262
642
|
Kanban2 as Kanban,
|
|
4263
643
|
Kbd2 as Kbd,
|
|
4264
644
|
KbdGroup2 as KbdGroup,
|
|
4265
645
|
Label2 as Label,
|
|
4266
|
-
LayoutGuard,
|
|
4267
|
-
Marker,
|
|
4268
|
-
MarkerContent,
|
|
4269
|
-
MarkerIcon,
|
|
4270
|
-
Menubar,
|
|
4271
|
-
MenubarCheckboxItem,
|
|
4272
|
-
MenubarContent,
|
|
4273
|
-
MenubarGroup,
|
|
4274
|
-
MenubarItem,
|
|
4275
|
-
MenubarLabel,
|
|
4276
|
-
MenubarMenu,
|
|
4277
|
-
MenubarPortal,
|
|
4278
|
-
MenubarRadioGroup,
|
|
4279
|
-
MenubarRadioItem,
|
|
4280
|
-
MenubarSeparator,
|
|
4281
|
-
MenubarShortcut,
|
|
4282
|
-
MenubarSub,
|
|
4283
|
-
MenubarSubContent,
|
|
4284
|
-
MenubarSubTrigger,
|
|
4285
|
-
MenubarTrigger,
|
|
4286
|
-
Message,
|
|
4287
|
-
MessageAvatar,
|
|
4288
|
-
MessageContent,
|
|
4289
|
-
MessageFooter,
|
|
4290
|
-
MessageGroup,
|
|
4291
|
-
MessageHeader,
|
|
4292
|
-
Meter,
|
|
4293
|
-
MeterIndicator,
|
|
4294
|
-
MeterLabel,
|
|
4295
|
-
MeterTrack,
|
|
4296
|
-
MeterValue,
|
|
646
|
+
LayoutGuard2 as LayoutGuard,
|
|
647
|
+
Marker2 as Marker,
|
|
648
|
+
MarkerContent2 as MarkerContent,
|
|
649
|
+
MarkerIcon2 as MarkerIcon,
|
|
650
|
+
Menubar2 as Menubar,
|
|
651
|
+
MenubarCheckboxItem2 as MenubarCheckboxItem,
|
|
652
|
+
MenubarContent2 as MenubarContent,
|
|
653
|
+
MenubarGroup2 as MenubarGroup,
|
|
654
|
+
MenubarItem2 as MenubarItem,
|
|
655
|
+
MenubarLabel2 as MenubarLabel,
|
|
656
|
+
MenubarMenu2 as MenubarMenu,
|
|
657
|
+
MenubarPortal2 as MenubarPortal,
|
|
658
|
+
MenubarRadioGroup2 as MenubarRadioGroup,
|
|
659
|
+
MenubarRadioItem2 as MenubarRadioItem,
|
|
660
|
+
MenubarSeparator2 as MenubarSeparator,
|
|
661
|
+
MenubarShortcut2 as MenubarShortcut,
|
|
662
|
+
MenubarSub2 as MenubarSub,
|
|
663
|
+
MenubarSubContent2 as MenubarSubContent,
|
|
664
|
+
MenubarSubTrigger2 as MenubarSubTrigger,
|
|
665
|
+
MenubarTrigger2 as MenubarTrigger,
|
|
666
|
+
Message2 as Message,
|
|
667
|
+
MessageAvatar2 as MessageAvatar,
|
|
668
|
+
MessageContent2 as MessageContent,
|
|
669
|
+
MessageFooter2 as MessageFooter,
|
|
670
|
+
MessageGroup2 as MessageGroup,
|
|
671
|
+
MessageHeader2 as MessageHeader,
|
|
672
|
+
Meter2 as Meter,
|
|
673
|
+
MeterIndicator2 as MeterIndicator,
|
|
674
|
+
MeterLabel2 as MeterLabel,
|
|
675
|
+
MeterTrack2 as MeterTrack,
|
|
676
|
+
MeterValue2 as MeterValue,
|
|
4297
677
|
NativeSelect2 as NativeSelect,
|
|
4298
678
|
NativeSelectOptGroup2 as NativeSelectOptGroup,
|
|
4299
679
|
NativeSelectOption2 as NativeSelectOption,
|
|
4300
|
-
NavigationMenu,
|
|
4301
|
-
NavigationMenuContent,
|
|
4302
|
-
NavigationMenuIndicator,
|
|
4303
|
-
NavigationMenuItem,
|
|
4304
|
-
NavigationMenuLink,
|
|
4305
|
-
NavigationMenuList,
|
|
4306
|
-
NavigationMenuPositioner,
|
|
4307
|
-
NavigationMenuTrigger,
|
|
4308
|
-
NumberField,
|
|
4309
|
-
NumberFieldDecrement,
|
|
4310
|
-
NumberFieldGroup,
|
|
4311
|
-
NumberFieldIncrement,
|
|
4312
|
-
NumberFieldInput,
|
|
4313
|
-
NumberFieldScrubArea,
|
|
4314
|
-
NumberFieldScrubAreaCursor,
|
|
4315
|
-
PageHeader,
|
|
4316
|
-
PageMessage,
|
|
4317
|
-
Pagination,
|
|
4318
|
-
PaginationContent,
|
|
4319
|
-
PaginationEllipsis,
|
|
4320
|
-
PaginationItem,
|
|
4321
|
-
PaginationLink,
|
|
4322
|
-
PaginationNext,
|
|
4323
|
-
PaginationPrevious,
|
|
680
|
+
NavigationMenu2 as NavigationMenu,
|
|
681
|
+
NavigationMenuContent2 as NavigationMenuContent,
|
|
682
|
+
NavigationMenuIndicator2 as NavigationMenuIndicator,
|
|
683
|
+
NavigationMenuItem2 as NavigationMenuItem,
|
|
684
|
+
NavigationMenuLink2 as NavigationMenuLink,
|
|
685
|
+
NavigationMenuList2 as NavigationMenuList,
|
|
686
|
+
NavigationMenuPositioner2 as NavigationMenuPositioner,
|
|
687
|
+
NavigationMenuTrigger2 as NavigationMenuTrigger,
|
|
688
|
+
NumberField2 as NumberField,
|
|
689
|
+
NumberFieldDecrement2 as NumberFieldDecrement,
|
|
690
|
+
NumberFieldGroup2 as NumberFieldGroup,
|
|
691
|
+
NumberFieldIncrement2 as NumberFieldIncrement,
|
|
692
|
+
NumberFieldInput2 as NumberFieldInput,
|
|
693
|
+
NumberFieldScrubArea2 as NumberFieldScrubArea,
|
|
694
|
+
NumberFieldScrubAreaCursor2 as NumberFieldScrubAreaCursor,
|
|
695
|
+
PageHeader2 as PageHeader,
|
|
696
|
+
PageMessage2 as PageMessage,
|
|
697
|
+
Pagination2 as Pagination,
|
|
698
|
+
PaginationContent2 as PaginationContent,
|
|
699
|
+
PaginationEllipsis2 as PaginationEllipsis,
|
|
700
|
+
PaginationItem2 as PaginationItem,
|
|
701
|
+
PaginationLink2 as PaginationLink,
|
|
702
|
+
PaginationNext2 as PaginationNext,
|
|
703
|
+
PaginationPrevious2 as PaginationPrevious,
|
|
4324
704
|
Popover2 as Popover,
|
|
4325
705
|
PopoverContent2 as PopoverContent,
|
|
4326
706
|
PopoverDescription2 as PopoverDescription,
|
|
@@ -4335,21 +715,21 @@ export {
|
|
|
4335
715
|
ProgressValue2 as ProgressValue,
|
|
4336
716
|
RadioGroup2 as RadioGroup,
|
|
4337
717
|
RadioGroupItem2 as RadioGroupItem,
|
|
4338
|
-
ScrollArea,
|
|
4339
|
-
ScrollBar,
|
|
4340
|
-
ScrollGuard,
|
|
4341
|
-
Select,
|
|
4342
|
-
SelectContent,
|
|
4343
|
-
SelectGroup,
|
|
4344
|
-
SelectItem,
|
|
4345
|
-
SelectLabel,
|
|
4346
|
-
SelectScrollDownButton,
|
|
4347
|
-
SelectScrollUpButton,
|
|
4348
|
-
SelectSeparator,
|
|
4349
|
-
SelectTrigger,
|
|
4350
|
-
SelectValue,
|
|
718
|
+
ScrollArea2 as ScrollArea,
|
|
719
|
+
ScrollBar2 as ScrollBar,
|
|
720
|
+
ScrollGuard2 as ScrollGuard,
|
|
721
|
+
Select2 as Select,
|
|
722
|
+
SelectContent2 as SelectContent,
|
|
723
|
+
SelectGroup2 as SelectGroup,
|
|
724
|
+
SelectItem2 as SelectItem,
|
|
725
|
+
SelectLabel2 as SelectLabel,
|
|
726
|
+
SelectScrollDownButton2 as SelectScrollDownButton,
|
|
727
|
+
SelectScrollUpButton2 as SelectScrollUpButton,
|
|
728
|
+
SelectSeparator2 as SelectSeparator,
|
|
729
|
+
SelectTrigger2 as SelectTrigger,
|
|
730
|
+
SelectValue2 as SelectValue,
|
|
4351
731
|
Separator2 as Separator,
|
|
4352
|
-
SettingsSection,
|
|
732
|
+
SettingsSection2 as SettingsSection,
|
|
4353
733
|
Sheet2 as Sheet,
|
|
4354
734
|
SheetClose2 as SheetClose,
|
|
4355
735
|
SheetContent2 as SheetContent,
|
|
@@ -4384,14 +764,14 @@ export {
|
|
|
4384
764
|
Skeleton2 as Skeleton,
|
|
4385
765
|
Slider2 as Slider,
|
|
4386
766
|
Spinner2 as Spinner,
|
|
4387
|
-
StarRating,
|
|
4388
|
-
StatCard,
|
|
4389
|
-
StatusTracker,
|
|
4390
|
-
Stepper,
|
|
4391
|
-
StepperContent,
|
|
4392
|
-
StepperIndicator,
|
|
4393
|
-
StepperList,
|
|
4394
|
-
StepperTrigger,
|
|
767
|
+
StarRating2 as StarRating,
|
|
768
|
+
StatCard2 as StatCard,
|
|
769
|
+
StatusTracker2 as StatusTracker,
|
|
770
|
+
Stepper2 as Stepper,
|
|
771
|
+
StepperContent2 as StepperContent,
|
|
772
|
+
StepperIndicator2 as StepperIndicator,
|
|
773
|
+
StepperList2 as StepperList,
|
|
774
|
+
StepperTrigger2 as StepperTrigger,
|
|
4395
775
|
Switch2 as Switch,
|
|
4396
776
|
Table2 as Table,
|
|
4397
777
|
TableBody2 as TableBody,
|
|
@@ -4407,19 +787,19 @@ export {
|
|
|
4407
787
|
TabsContent2 as TabsContent,
|
|
4408
788
|
TabsList2 as TabsList,
|
|
4409
789
|
TabsTrigger2 as TabsTrigger,
|
|
4410
|
-
TagInput,
|
|
790
|
+
TagInput2 as TagInput,
|
|
4411
791
|
Textarea2 as Textarea,
|
|
4412
|
-
ThemeProvider,
|
|
4413
|
-
Toast,
|
|
4414
|
-
ToastAction,
|
|
4415
|
-
ToastClose,
|
|
4416
|
-
ToastContent,
|
|
4417
|
-
ToastDescription,
|
|
4418
|
-
ToastPortal,
|
|
4419
|
-
ToastProvider,
|
|
4420
|
-
ToastTitle,
|
|
4421
|
-
ToastToaster,
|
|
4422
|
-
ToastViewport,
|
|
792
|
+
ThemeProvider2 as ThemeProvider,
|
|
793
|
+
Toast2 as Toast,
|
|
794
|
+
ToastAction2 as ToastAction,
|
|
795
|
+
ToastClose2 as ToastClose,
|
|
796
|
+
ToastContent2 as ToastContent,
|
|
797
|
+
ToastDescription2 as ToastDescription,
|
|
798
|
+
ToastPortal2 as ToastPortal,
|
|
799
|
+
ToastProvider2 as ToastProvider,
|
|
800
|
+
ToastTitle2 as ToastTitle,
|
|
801
|
+
ToastToaster2 as ToastToaster,
|
|
802
|
+
ToastViewport2 as ToastViewport,
|
|
4423
803
|
Toggle2 as Toggle,
|
|
4424
804
|
ToggleGroup2 as ToggleGroup,
|
|
4425
805
|
ToggleGroupItem2 as ToggleGroupItem,
|
|
@@ -4433,18 +813,18 @@ export {
|
|
|
4433
813
|
TooltipContent2 as TooltipContent,
|
|
4434
814
|
TooltipProvider2 as TooltipProvider,
|
|
4435
815
|
TooltipTrigger2 as TooltipTrigger,
|
|
4436
|
-
WorkspaceSwitcher,
|
|
816
|
+
WorkspaceSwitcher2 as WorkspaceSwitcher,
|
|
4437
817
|
badgeVariants2 as badgeVariants,
|
|
4438
|
-
buttonGroupVariants,
|
|
818
|
+
buttonGroupVariants2 as buttonGroupVariants,
|
|
4439
819
|
buttonVariants2 as buttonVariants,
|
|
4440
820
|
cn2 as cn,
|
|
4441
|
-
collectLayoutViolations,
|
|
4442
|
-
createToastManager,
|
|
4443
|
-
markerVariants,
|
|
4444
|
-
navigationMenuTriggerStyle,
|
|
821
|
+
collectLayoutViolations2 as collectLayoutViolations,
|
|
822
|
+
createToastManager2 as createToastManager,
|
|
823
|
+
markerVariants2 as markerVariants,
|
|
824
|
+
navigationMenuTriggerStyle2 as navigationMenuTriggerStyle,
|
|
4445
825
|
tabsListVariants2 as tabsListVariants,
|
|
4446
826
|
toggleVariants2 as toggleVariants,
|
|
4447
|
-
useComboboxAnchor,
|
|
827
|
+
useComboboxAnchor2 as useComboboxAnchor,
|
|
4448
828
|
useDirection2 as useDirection,
|
|
4449
829
|
useDragDrop2 as useDragDrop,
|
|
4450
830
|
useDragSource2 as useDragSource,
|
|
@@ -4452,5 +832,5 @@ export {
|
|
|
4452
832
|
usePortalContainer2 as usePortalContainer,
|
|
4453
833
|
useSidebar2 as useSidebar,
|
|
4454
834
|
useTheme2 as useTheme,
|
|
4455
|
-
useToastManager
|
|
835
|
+
useToastManager2 as useToastManager
|
|
4456
836
|
};
|