@squadbase/vantage 0.6.1-dev2.5f947f1 → 0.6.2-dev1.31accb1

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.
Files changed (178) hide show
  1. package/dist/add-DY4AXANK.js +6 -0
  2. package/dist/add-DY4AXANK.js.map +1 -0
  3. package/dist/{build-O5TVNH4E.js → build-TVKFIVFQ.js} +8 -8
  4. package/dist/{build-O5TVNH4E.js.map → build-TVKFIVFQ.js.map} +1 -1
  5. package/dist/{check-WFBEDHDR.js → check-3KHZXZMQ.js} +6 -6
  6. package/dist/{check-WFBEDHDR.js.map → check-3KHZXZMQ.js.map} +1 -1
  7. package/dist/{chunk-LSRMRIXA.js → chunk-AG6RZ2RR.js} +1004 -23
  8. package/dist/chunk-AG6RZ2RR.js.map +1 -0
  9. package/dist/{chunk-KLEIVDUV.js → chunk-CEXAQQ5W.js} +150 -11
  10. package/dist/chunk-CEXAQQ5W.js.map +1 -0
  11. package/dist/{chunk-JGRMRXXZ.js → chunk-JKLLFVEU.js} +3 -3
  12. package/dist/{chunk-JGRMRXXZ.js.map → chunk-JKLLFVEU.js.map} +1 -1
  13. package/dist/{chunk-EP6JHXSR.js → chunk-LMUACBMA.js} +3 -3
  14. package/dist/{chunk-EP6JHXSR.js.map → chunk-LMUACBMA.js.map} +1 -1
  15. package/dist/{chunk-RPZAALCX.js → chunk-OB6UBJXF.js} +153 -153
  16. package/dist/{chunk-RPZAALCX.js.map → chunk-OB6UBJXF.js.map} +1 -1
  17. package/dist/{chunk-BCE22JSM.js → chunk-P7W4LR3Z.js} +32 -13
  18. package/dist/chunk-P7W4LR3Z.js.map +1 -0
  19. package/dist/{chunk-3G43C6OL.js → chunk-QI3XQKHS.js} +39 -3
  20. package/dist/chunk-QI3XQKHS.js.map +1 -0
  21. package/dist/{chunk-QDZA5JSL.js → chunk-U2M6HGKQ.js} +3 -3
  22. package/dist/{chunk-QDZA5JSL.js.map → chunk-U2M6HGKQ.js.map} +1 -1
  23. package/dist/{chunk-T3FLAGI6.js → chunk-VA776YE5.js} +3 -3
  24. package/dist/{chunk-T3FLAGI6.js.map → chunk-VA776YE5.js.map} +1 -1
  25. package/dist/cli.js +14 -11
  26. package/dist/cli.js.map +1 -1
  27. package/dist/components/index.d.ts +223 -1
  28. package/dist/components/index.js +2 -2
  29. package/dist/{dev-NZRLOQCL.js → dev-GDKATCC7.js} +22 -11
  30. package/dist/dev-GDKATCC7.js.map +1 -0
  31. package/dist/doc/index.js +2 -0
  32. package/dist/doc/index.js.map +1 -1
  33. package/dist/{docs-ZGDJUHJI.js → docs-EJJ3BECT.js} +3 -3
  34. package/dist/{docs-ZGDJUHJI.js.map → docs-EJJ3BECT.js.map} +1 -1
  35. package/dist/{doctor-VFKEMR54.js → doctor-WQXPXP6K.js} +7 -7
  36. package/dist/doctor-WQXPXP6K.js.map +1 -0
  37. package/dist/{preview-QDCIVVSR.js → preview-OGMCNQUO.js} +12 -4
  38. package/dist/preview-OGMCNQUO.js.map +1 -0
  39. package/dist/{routes-RHP5FVGD.js → routes-MWBWWOJ2.js} +5 -5
  40. package/dist/{routes-RHP5FVGD.js.map → routes-MWBWWOJ2.js.map} +1 -1
  41. package/dist/{search-RFBELGY7.js → search-6Y422SV6.js} +3 -3
  42. package/dist/{search-RFBELGY7.js.map → search-6Y422SV6.js.map} +1 -1
  43. package/dist/slide/index.js +61 -15
  44. package/dist/slide/index.js.map +1 -1
  45. package/dist/table/index.js +6 -5
  46. package/dist/table/index.js.map +1 -1
  47. package/dist/ui/index.d.ts +140 -10
  48. package/dist/ui/index.js +1405 -63
  49. package/dist/ui/index.js.map +1 -1
  50. package/dist/{upgrade-GF2P67M6.js → upgrade-HCANX4GQ.js} +6 -6
  51. package/dist/{upgrade-GF2P67M6.js.map → upgrade-HCANX4GQ.js.map} +1 -1
  52. package/dist/vite/index.js +3 -3
  53. package/docs/en/changelog.md +24 -0
  54. package/docs/en/cli-reference.md +30 -0
  55. package/docs/en/parts/page-shell.md +1 -1
  56. package/docs/index.json +291 -61
  57. package/docs/ja/changelog.md +50 -0
  58. package/docs/ja/cli-reference.md +29 -0
  59. package/docs/ja/components.md +33 -89
  60. package/docs/ja/page-types/csv.md +83 -0
  61. package/docs/ja/page-types/doc.md +83 -0
  62. package/docs/ja/page-types/excel.md +82 -0
  63. package/docs/ja/page-types/slide.md +132 -0
  64. package/docs/ja/page-types.md +47 -0
  65. package/docs/ja/parts/area-chart.md +61 -0
  66. package/docs/ja/parts/bar-chart.md +69 -0
  67. package/docs/ja/parts/bar-list.md +35 -0
  68. package/docs/ja/parts/category-bar.md +36 -0
  69. package/docs/ja/parts/donut-chart.md +47 -0
  70. package/docs/ja/parts/echart.md +3 -0
  71. package/docs/ja/parts/line-chart.md +58 -0
  72. package/docs/ja/parts/page-shell.md +1 -1
  73. package/docs/ja/parts/progress-circle.md +34 -0
  74. package/docs/ja/parts/sparkline.md +1 -1
  75. package/docs/ja/parts/tracker.md +32 -0
  76. package/docs/ja/routing.md +8 -86
  77. package/docs/ja/ui/alert-dialog.md +41 -0
  78. package/docs/ja/ui/avatar.md +31 -0
  79. package/docs/ja/ui/combobox.md +74 -0
  80. package/docs/ja/ui/drawer.md +41 -0
  81. package/docs/ja/ui/field.md +42 -0
  82. package/docs/ja/ui/hover-card.md +21 -0
  83. package/docs/ja/ui/kbd.md +16 -0
  84. package/docs/ja/ui/pagination.md +36 -0
  85. package/docs/ja/ui/radio-group.md +21 -0
  86. package/docs/ja/ui/toast.md +46 -0
  87. package/docs/ja/ui-and-theming.md +14 -7
  88. package/package.json +18 -12
  89. package/registry/ui/accordion.tsx +74 -0
  90. package/registry/ui/alert-dialog.tsx +189 -0
  91. package/registry/ui/alert.tsx +78 -0
  92. package/registry/ui/app-shell.tsx +281 -0
  93. package/registry/ui/area-chart.tsx +1015 -0
  94. package/registry/ui/avatar.tsx +110 -0
  95. package/registry/ui/badge.tsx +54 -0
  96. package/registry/ui/bar-chart.tsx +1013 -0
  97. package/registry/ui/bar-list.tsx +302 -0
  98. package/registry/ui/breadcrumb.tsx +126 -0
  99. package/registry/ui/button.tsx +60 -0
  100. package/registry/ui/calendar.tsx +221 -0
  101. package/registry/ui/card.tsx +105 -0
  102. package/registry/ui/category-bar.tsx +281 -0
  103. package/registry/ui/checkbox.tsx +28 -0
  104. package/registry/ui/collapsible.tsx +21 -0
  105. package/registry/ui/combobox.tsx +310 -0
  106. package/registry/ui/command.tsx +196 -0
  107. package/registry/ui/dashboard-card.tsx +174 -0
  108. package/registry/ui/data-table.tsx +16 -91
  109. package/registry/ui/date-range-picker.tsx +209 -0
  110. package/registry/ui/dialog.tsx +159 -0
  111. package/registry/ui/donut-chart.tsx +1004 -0
  112. package/registry/ui/drawer.tsx +229 -0
  113. package/registry/ui/dropdown-menu.tsx +272 -0
  114. package/registry/ui/echart.tsx +486 -0
  115. package/registry/ui/field.tsx +240 -0
  116. package/registry/ui/filter-bar.tsx +365 -0
  117. package/registry/ui/funnel-steps.tsx +274 -0
  118. package/registry/ui/hover-card.tsx +52 -0
  119. package/registry/ui/input-group.tsx +158 -0
  120. package/registry/ui/input.tsx +22 -0
  121. package/registry/ui/kbd.tsx +28 -0
  122. package/registry/ui/label.tsx +20 -0
  123. package/registry/ui/line-chart.tsx +1007 -0
  124. package/registry/ui/metric-value.tsx +54 -0
  125. package/registry/ui/multi-select.tsx +226 -0
  126. package/registry/ui/page-shell.tsx +227 -0
  127. package/registry/ui/pagination.tsx +138 -0
  128. package/registry/ui/placeholder.tsx +30 -0
  129. package/registry/ui/popover.tsx +90 -0
  130. package/registry/ui/progress-circle.tsx +272 -0
  131. package/registry/ui/progress.tsx +83 -0
  132. package/registry/ui/radio-group.tsx +39 -0
  133. package/registry/ui/scroll-area.tsx +55 -0
  134. package/registry/ui/searchable-select.tsx +209 -0
  135. package/registry/ui/section-header.tsx +41 -0
  136. package/registry/ui/segmented-control.tsx +71 -0
  137. package/registry/ui/select.tsx +253 -0
  138. package/registry/ui/separator.tsx +25 -0
  139. package/registry/ui/sheet.tsx +137 -0
  140. package/registry/ui/sidebar.tsx +723 -0
  141. package/registry/ui/skeleton.tsx +15 -0
  142. package/registry/ui/slider.tsx +54 -0
  143. package/registry/ui/sparkline.tsx +155 -0
  144. package/registry/ui/spinner.tsx +12 -0
  145. package/registry/ui/states.tsx +61 -0
  146. package/registry/ui/status-badge.tsx +79 -0
  147. package/registry/ui/switch.tsx +32 -0
  148. package/registry/ui/table.tsx +116 -0
  149. package/registry/ui/tabs.tsx +82 -0
  150. package/registry/ui/textarea.tsx +20 -0
  151. package/registry/ui/toast.tsx +250 -0
  152. package/registry/ui/toggle-group.tsx +89 -0
  153. package/registry/ui/toggle.tsx +45 -0
  154. package/registry/ui/tooltip.tsx +66 -0
  155. package/registry/ui/tracker.tsx +236 -0
  156. package/registry/ui/trend-indicator.tsx +62 -0
  157. package/skills/vantage-add-feature/SKILL.md +9 -7
  158. package/skills/vantage-design/SKILL.md +3 -1
  159. package/skills/vantage-design/references/format.md +1 -1
  160. package/skills/vantage-pitfalls/SKILL.md +5 -1
  161. package/skills/vantage-slide/SKILL.md +17 -0
  162. package/templates/AGENTS.md +10 -1
  163. package/templates/agents/api.md +29 -0
  164. package/templates/agents/csv.md +2 -1
  165. package/templates/agents/doc.md +4 -3
  166. package/templates/agents/page.md +22 -8
  167. package/templates/agents/slide.md +13 -1
  168. package/templates/agents/xlsx.md +2 -1
  169. package/theme.css +15 -1
  170. package/dist/add-EISGSZAH.js +0 -6
  171. package/dist/add-EISGSZAH.js.map +0 -1
  172. package/dist/chunk-3G43C6OL.js.map +0 -1
  173. package/dist/chunk-BCE22JSM.js.map +0 -1
  174. package/dist/chunk-KLEIVDUV.js.map +0 -1
  175. package/dist/chunk-LSRMRIXA.js.map +0 -1
  176. package/dist/dev-NZRLOQCL.js.map +0 -1
  177. package/dist/doctor-VFKEMR54.js.map +0 -1
  178. package/dist/preview-QDCIVVSR.js.map +0 -1
package/dist/ui/index.js CHANGED
@@ -1,20 +1,31 @@
1
1
  export { Empty, ErrorState, Loading } from '../chunk-5ZOP4SQR.js';
2
- export { Badge, Calendar, CalendarDayButton, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, toggleVariants, useIsMobile, useSidebar } from '../chunk-RPZAALCX.js';
2
+ import { InputGroup, InputGroupInput, InputGroupAddon, InputGroupButton, Separator } from '../chunk-OB6UBJXF.js';
3
+ export { Badge, Calendar, CalendarDayButton, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, toggleVariants, useIsMobile, useSidebar } from '../chunk-OB6UBJXF.js';
4
+ import { Button } from '../chunk-PXRX5PEC.js';
3
5
  export { Button, buttonVariants } from '../chunk-PXRX5PEC.js';
4
6
  import { cn } from '../chunk-A2UUGASH.js';
5
7
  export { cn } from '../chunk-A2UUGASH.js';
6
8
  import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
7
- import { ChevronDownIcon, ChevronUpIcon, ChevronRightIcon, MoreHorizontalIcon, Loader2Icon } from 'lucide-react';
9
+ import { ChevronDownIcon, ChevronUpIcon, ChevronRightIcon, MoreHorizontalIcon, CheckIcon, XIcon, ChevronLeftIcon, Loader2Icon, CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon } from 'lucide-react';
8
10
  import { jsx, jsxs } from 'react/jsx-runtime';
9
- import 'react';
11
+ import * as React7 from 'react';
12
+ import { useMemo } from 'react';
10
13
  import { cva } from 'class-variance-authority';
14
+ import { AlertDialog as AlertDialog$1 } from '@base-ui/react/alert-dialog';
15
+ import { Avatar as Avatar$1 } from '@base-ui/react/avatar';
11
16
  import { mergeProps } from '@base-ui/react/merge-props';
12
17
  import { useRender } from '@base-ui/react/use-render';
18
+ import { Combobox as Combobox$1 } from '@base-ui/react/combobox';
19
+ import { Drawer as Drawer$1 } from '@base-ui/react/drawer';
20
+ import { PreviewCard } from '@base-ui/react/preview-card';
13
21
  import { Progress as Progress$1 } from '@base-ui/react/progress';
22
+ import { Radio } from '@base-ui/react/radio';
23
+ import { RadioGroup as RadioGroup$1 } from '@base-ui/react/radio-group';
14
24
  import { ScrollArea as ScrollArea$1 } from '@base-ui/react/scroll-area';
15
25
  import { Slider as Slider$1 } from '@base-ui/react/slider';
16
26
  import { Switch as Switch$1 } from '@base-ui/react/switch';
17
27
  import { Tabs as Tabs$1 } from '@base-ui/react/tabs';
28
+ import { Toast as Toast$1 } from '@base-ui/react/toast';
18
29
 
19
30
  // @squadbase/vantage — generated build. Do not edit.
20
31
  function Accordion({ className, ...props }) {
@@ -151,6 +162,253 @@ function AlertAction({ className, ...props }) {
151
162
  }
152
163
  );
153
164
  }
165
+ function AlertDialog({ ...props }) {
166
+ return /* @__PURE__ */ jsx(AlertDialog$1.Root, { "data-slot": "alert-dialog", ...props });
167
+ }
168
+ function AlertDialogTrigger({ ...props }) {
169
+ return /* @__PURE__ */ jsx(AlertDialog$1.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
170
+ }
171
+ function AlertDialogPortal({ ...props }) {
172
+ return /* @__PURE__ */ jsx(AlertDialog$1.Portal, { "data-slot": "alert-dialog-portal", ...props });
173
+ }
174
+ function AlertDialogOverlay({
175
+ className,
176
+ ...props
177
+ }) {
178
+ return /* @__PURE__ */ jsx(
179
+ AlertDialog$1.Backdrop,
180
+ {
181
+ "data-slot": "alert-dialog-overlay",
182
+ className: cn(
183
+ "fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
184
+ className
185
+ ),
186
+ ...props
187
+ }
188
+ );
189
+ }
190
+ function AlertDialogContent({
191
+ className,
192
+ size = "default",
193
+ ...props
194
+ }) {
195
+ return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
196
+ /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
197
+ /* @__PURE__ */ jsx(
198
+ AlertDialog$1.Popup,
199
+ {
200
+ "data-slot": "alert-dialog-content",
201
+ "data-size": size,
202
+ className: cn(
203
+ "group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 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-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
204
+ className
205
+ ),
206
+ ...props
207
+ }
208
+ )
209
+ ] });
210
+ }
211
+ function AlertDialogHeader({
212
+ className,
213
+ ...props
214
+ }) {
215
+ return /* @__PURE__ */ jsx(
216
+ "div",
217
+ {
218
+ "data-slot": "alert-dialog-header",
219
+ className: cn(
220
+ "grid grid-rows-[auto_1fr] place-items-center gap-1.5 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-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",
221
+ className
222
+ ),
223
+ ...props
224
+ }
225
+ );
226
+ }
227
+ function AlertDialogFooter({
228
+ className,
229
+ ...props
230
+ }) {
231
+ return /* @__PURE__ */ jsx(
232
+ "div",
233
+ {
234
+ "data-slot": "alert-dialog-footer",
235
+ className: cn(
236
+ "-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",
237
+ className
238
+ ),
239
+ ...props
240
+ }
241
+ );
242
+ }
243
+ function AlertDialogMedia({
244
+ className,
245
+ ...props
246
+ }) {
247
+ return /* @__PURE__ */ jsx(
248
+ "div",
249
+ {
250
+ "data-slot": "alert-dialog-media",
251
+ className: cn(
252
+ "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-6",
253
+ className
254
+ ),
255
+ ...props
256
+ }
257
+ );
258
+ }
259
+ function AlertDialogTitle({
260
+ className,
261
+ ...props
262
+ }) {
263
+ return /* @__PURE__ */ jsx(
264
+ AlertDialog$1.Title,
265
+ {
266
+ "data-slot": "alert-dialog-title",
267
+ className: cn(
268
+ "cn-font-heading 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",
269
+ className
270
+ ),
271
+ ...props
272
+ }
273
+ );
274
+ }
275
+ function AlertDialogDescription({
276
+ className,
277
+ ...props
278
+ }) {
279
+ return /* @__PURE__ */ jsx(
280
+ AlertDialog$1.Description,
281
+ {
282
+ "data-slot": "alert-dialog-description",
283
+ className: cn(
284
+ "text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
285
+ className
286
+ ),
287
+ ...props
288
+ }
289
+ );
290
+ }
291
+ function AlertDialogAction({
292
+ className,
293
+ ...props
294
+ }) {
295
+ return /* @__PURE__ */ jsx(
296
+ Button,
297
+ {
298
+ "data-slot": "alert-dialog-action",
299
+ className: cn(className),
300
+ ...props
301
+ }
302
+ );
303
+ }
304
+ function AlertDialogCancel({
305
+ className,
306
+ variant = "outline",
307
+ size = "default",
308
+ ...props
309
+ }) {
310
+ return /* @__PURE__ */ jsx(
311
+ AlertDialog$1.Close,
312
+ {
313
+ "data-slot": "alert-dialog-cancel",
314
+ className: cn(className),
315
+ render: /* @__PURE__ */ jsx(Button, { variant, size }),
316
+ ...props
317
+ }
318
+ );
319
+ }
320
+ function Avatar({
321
+ className,
322
+ size = "default",
323
+ ...props
324
+ }) {
325
+ return /* @__PURE__ */ jsx(
326
+ Avatar$1.Root,
327
+ {
328
+ "data-slot": "avatar",
329
+ "data-size": size,
330
+ className: cn(
331
+ "group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",
332
+ className
333
+ ),
334
+ ...props
335
+ }
336
+ );
337
+ }
338
+ function AvatarImage({ className, ...props }) {
339
+ return /* @__PURE__ */ jsx(
340
+ Avatar$1.Image,
341
+ {
342
+ "data-slot": "avatar-image",
343
+ className: cn(
344
+ "aspect-square size-full rounded-full object-cover",
345
+ className
346
+ ),
347
+ ...props
348
+ }
349
+ );
350
+ }
351
+ function AvatarFallback({
352
+ className,
353
+ ...props
354
+ }) {
355
+ return /* @__PURE__ */ jsx(
356
+ Avatar$1.Fallback,
357
+ {
358
+ "data-slot": "avatar-fallback",
359
+ className: cn(
360
+ "flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",
361
+ className
362
+ ),
363
+ ...props
364
+ }
365
+ );
366
+ }
367
+ function AvatarBadge({ className, ...props }) {
368
+ return /* @__PURE__ */ jsx(
369
+ "span",
370
+ {
371
+ "data-slot": "avatar-badge",
372
+ className: cn(
373
+ "absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none",
374
+ "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
375
+ "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
376
+ "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2",
377
+ className
378
+ ),
379
+ ...props
380
+ }
381
+ );
382
+ }
383
+ function AvatarGroup({ className, ...props }) {
384
+ return /* @__PURE__ */ jsx(
385
+ "div",
386
+ {
387
+ "data-slot": "avatar-group",
388
+ className: cn(
389
+ "group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
390
+ className
391
+ ),
392
+ ...props
393
+ }
394
+ );
395
+ }
396
+ function AvatarGroupCount({
397
+ className,
398
+ ...props
399
+ }) {
400
+ return /* @__PURE__ */ jsx(
401
+ "div",
402
+ {
403
+ "data-slot": "avatar-group-count",
404
+ className: cn(
405
+ "relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",
406
+ className
407
+ ),
408
+ ...props
409
+ }
410
+ );
411
+ }
154
412
  function Breadcrumb({ className, ...props }) {
155
413
  return /* @__PURE__ */ jsx(
156
414
  "nav",
@@ -234,128 +492,977 @@ function BreadcrumbSeparator({
234
492
  }
235
493
  );
236
494
  }
237
- function BreadcrumbEllipsis({
495
+ function BreadcrumbEllipsis({
496
+ className,
497
+ ...props
498
+ }) {
499
+ return /* @__PURE__ */ jsxs(
500
+ "span",
501
+ {
502
+ "data-slot": "breadcrumb-ellipsis",
503
+ role: "presentation",
504
+ "aria-hidden": "true",
505
+ className: cn(
506
+ "flex size-5 items-center justify-center [&>svg]:size-4",
507
+ className
508
+ ),
509
+ ...props,
510
+ children: [
511
+ /* @__PURE__ */ jsx(MoreHorizontalIcon, {}),
512
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
513
+ ]
514
+ }
515
+ );
516
+ }
517
+ function Card({
518
+ className,
519
+ size = "default",
520
+ ...props
521
+ }) {
522
+ return /* @__PURE__ */ jsx(
523
+ "div",
524
+ {
525
+ "data-slot": "card",
526
+ "data-size": size,
527
+ className: cn(
528
+ "group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",
529
+ className
530
+ ),
531
+ ...props
532
+ }
533
+ );
534
+ }
535
+ function CardHeader({ className, ...props }) {
536
+ return /* @__PURE__ */ jsx(
537
+ "div",
538
+ {
539
+ "data-slot": "card-header",
540
+ className: cn(
541
+ "group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",
542
+ className
543
+ ),
544
+ ...props
545
+ }
546
+ );
547
+ }
548
+ function CardTitle({ className, ...props }) {
549
+ return /* @__PURE__ */ jsx(
550
+ "div",
551
+ {
552
+ "data-slot": "card-title",
553
+ className: cn(
554
+ "cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",
555
+ className
556
+ ),
557
+ ...props
558
+ }
559
+ );
560
+ }
561
+ function CardDescription({ className, ...props }) {
562
+ return /* @__PURE__ */ jsx(
563
+ "div",
564
+ {
565
+ "data-slot": "card-description",
566
+ className: cn("text-sm text-muted-foreground", className),
567
+ ...props
568
+ }
569
+ );
570
+ }
571
+ function CardAction({ className, ...props }) {
572
+ return /* @__PURE__ */ jsx(
573
+ "div",
574
+ {
575
+ "data-slot": "card-action",
576
+ className: cn(
577
+ "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
578
+ className
579
+ ),
580
+ ...props
581
+ }
582
+ );
583
+ }
584
+ function CardContent({ className, ...props }) {
585
+ return /* @__PURE__ */ jsx(
586
+ "div",
587
+ {
588
+ "data-slot": "card-content",
589
+ className: cn("px-(--card-spacing)", className),
590
+ ...props
591
+ }
592
+ );
593
+ }
594
+ function CardFooter({ className, ...props }) {
595
+ return /* @__PURE__ */ jsx(
596
+ "div",
597
+ {
598
+ "data-slot": "card-footer",
599
+ className: cn(
600
+ "flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)",
601
+ className
602
+ ),
603
+ ...props
604
+ }
605
+ );
606
+ }
607
+ var Combobox = Combobox$1.Root;
608
+ function ComboboxValue({ ...props }) {
609
+ return /* @__PURE__ */ jsx(Combobox$1.Value, { "data-slot": "combobox-value", ...props });
610
+ }
611
+ function ComboboxTrigger({
612
+ className,
613
+ children,
614
+ ...props
615
+ }) {
616
+ return /* @__PURE__ */ jsxs(
617
+ Combobox$1.Trigger,
618
+ {
619
+ "data-slot": "combobox-trigger",
620
+ className: cn("[&_svg:not([class*='size-'])]:size-4", className),
621
+ ...props,
622
+ children: [
623
+ children,
624
+ /* @__PURE__ */ jsx(
625
+ ChevronDownIcon,
626
+ {
627
+ className: "pointer-events-none size-4 text-muted-foreground"
628
+ }
629
+ )
630
+ ]
631
+ }
632
+ );
633
+ }
634
+ function ComboboxClear({ className, ...props }) {
635
+ return /* @__PURE__ */ jsx(
636
+ Combobox$1.Clear,
637
+ {
638
+ "data-slot": "combobox-clear",
639
+ render: /* @__PURE__ */ jsx(InputGroupButton, { variant: "ghost", size: "icon-xs" }),
640
+ className: cn(className),
641
+ ...props,
642
+ children: /* @__PURE__ */ jsx(
643
+ XIcon,
644
+ {
645
+ className: "pointer-events-none"
646
+ }
647
+ )
648
+ }
649
+ );
650
+ }
651
+ function ComboboxInput({
652
+ className,
653
+ children,
654
+ disabled = false,
655
+ showTrigger = true,
656
+ showClear = false,
657
+ ...props
658
+ }) {
659
+ return /* @__PURE__ */ jsxs(InputGroup, { className: cn("w-auto", className), children: [
660
+ /* @__PURE__ */ jsx(
661
+ Combobox$1.Input,
662
+ {
663
+ render: /* @__PURE__ */ jsx(InputGroupInput, { disabled }),
664
+ ...props
665
+ }
666
+ ),
667
+ /* @__PURE__ */ jsxs(InputGroupAddon, { align: "inline-end", children: [
668
+ showTrigger && /* @__PURE__ */ jsx(
669
+ InputGroupButton,
670
+ {
671
+ size: "icon-xs",
672
+ variant: "ghost",
673
+ render: /* @__PURE__ */ jsx(ComboboxTrigger, {}),
674
+ "data-slot": "input-group-button",
675
+ className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent",
676
+ disabled
677
+ }
678
+ ),
679
+ showClear && /* @__PURE__ */ jsx(ComboboxClear, { disabled })
680
+ ] }),
681
+ children
682
+ ] });
683
+ }
684
+ function ComboboxContent({
685
+ className,
686
+ side = "bottom",
687
+ sideOffset = 6,
688
+ align = "start",
689
+ alignOffset = 0,
690
+ anchor,
691
+ ...props
692
+ }) {
693
+ return /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(
694
+ Combobox$1.Positioner,
695
+ {
696
+ side,
697
+ sideOffset,
698
+ align,
699
+ alignOffset,
700
+ anchor,
701
+ className: "isolate z-50",
702
+ children: /* @__PURE__ */ jsx(
703
+ Combobox$1.Popup,
704
+ {
705
+ "data-slot": "combobox-content",
706
+ "data-chips": !!anchor,
707
+ className: cn(
708
+ "cn-menu-target cn-menu-translucent 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-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *: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-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
709
+ className
710
+ ),
711
+ ...props
712
+ }
713
+ )
714
+ }
715
+ ) });
716
+ }
717
+ function ComboboxList({ className, ...props }) {
718
+ return /* @__PURE__ */ jsx(
719
+ Combobox$1.List,
720
+ {
721
+ "data-slot": "combobox-list",
722
+ className: cn(
723
+ "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",
724
+ className
725
+ ),
726
+ ...props
727
+ }
728
+ );
729
+ }
730
+ function ComboboxItem({
731
+ className,
732
+ children,
733
+ ...props
734
+ }) {
735
+ return /* @__PURE__ */ jsxs(
736
+ Combobox$1.Item,
737
+ {
738
+ "data-slot": "combobox-item",
739
+ className: cn(
740
+ "relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-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",
741
+ className
742
+ ),
743
+ ...props,
744
+ children: [
745
+ children,
746
+ /* @__PURE__ */ jsx(
747
+ Combobox$1.ItemIndicator,
748
+ {
749
+ render: /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
750
+ children: /* @__PURE__ */ jsx(
751
+ CheckIcon,
752
+ {
753
+ className: "pointer-events-none"
754
+ }
755
+ )
756
+ }
757
+ )
758
+ ]
759
+ }
760
+ );
761
+ }
762
+ function ComboboxGroup({ className, ...props }) {
763
+ return /* @__PURE__ */ jsx(
764
+ Combobox$1.Group,
765
+ {
766
+ "data-slot": "combobox-group",
767
+ className: cn(className),
768
+ ...props
769
+ }
770
+ );
771
+ }
772
+ function ComboboxLabel({
773
+ className,
774
+ ...props
775
+ }) {
776
+ return /* @__PURE__ */ jsx(
777
+ Combobox$1.GroupLabel,
778
+ {
779
+ "data-slot": "combobox-label",
780
+ className: cn("px-2 py-1.5 text-xs text-muted-foreground", className),
781
+ ...props
782
+ }
783
+ );
784
+ }
785
+ function ComboboxCollection({ ...props }) {
786
+ return /* @__PURE__ */ jsx(Combobox$1.Collection, { "data-slot": "combobox-collection", ...props });
787
+ }
788
+ function ComboboxEmpty({ className, ...props }) {
789
+ return /* @__PURE__ */ jsx(
790
+ Combobox$1.Empty,
791
+ {
792
+ "data-slot": "combobox-empty",
793
+ className: cn(
794
+ "hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex",
795
+ className
796
+ ),
797
+ ...props
798
+ }
799
+ );
800
+ }
801
+ function ComboboxSeparator({
802
+ className,
803
+ ...props
804
+ }) {
805
+ return /* @__PURE__ */ jsx(
806
+ Combobox$1.Separator,
807
+ {
808
+ "data-slot": "combobox-separator",
809
+ className: cn("-mx-1 my-1 h-px bg-border", className),
810
+ ...props
811
+ }
812
+ );
813
+ }
814
+ function ComboboxChips({
815
+ className,
816
+ ...props
817
+ }) {
818
+ return /* @__PURE__ */ jsx(
819
+ Combobox$1.Chips,
820
+ {
821
+ "data-slot": "combobox-chips",
822
+ className: cn(
823
+ "flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40",
824
+ className
825
+ ),
826
+ ...props
827
+ }
828
+ );
829
+ }
830
+ function ComboboxChip({
831
+ className,
832
+ children,
833
+ showRemove = true,
834
+ ...props
835
+ }) {
836
+ return /* @__PURE__ */ jsxs(
837
+ Combobox$1.Chip,
838
+ {
839
+ "data-slot": "combobox-chip",
840
+ className: cn(
841
+ "flex h-[calc(--spacing(5.25))] 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]:pr-0",
842
+ className
843
+ ),
844
+ ...props,
845
+ children: [
846
+ children,
847
+ showRemove && /* @__PURE__ */ jsx(
848
+ Combobox$1.ChipRemove,
849
+ {
850
+ render: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-xs" }),
851
+ className: "-ml-1 opacity-50 hover:opacity-100",
852
+ "data-slot": "combobox-chip-remove",
853
+ children: /* @__PURE__ */ jsx(
854
+ XIcon,
855
+ {
856
+ className: "pointer-events-none"
857
+ }
858
+ )
859
+ }
860
+ )
861
+ ]
862
+ }
863
+ );
864
+ }
865
+ function ComboboxChipsInput({
866
+ className,
867
+ ...props
868
+ }) {
869
+ return /* @__PURE__ */ jsx(
870
+ Combobox$1.Input,
871
+ {
872
+ "data-slot": "combobox-chip-input",
873
+ className: cn("min-w-16 flex-1 outline-none", className),
874
+ ...props
875
+ }
876
+ );
877
+ }
878
+ function useComboboxAnchor() {
879
+ return React7.useRef(null);
880
+ }
881
+ var DrawerContext = React7.createContext(null);
882
+ function useDrawer() {
883
+ const context = React7.useContext(DrawerContext);
884
+ if (!context) {
885
+ throw new Error("useDrawer must be used within a Drawer.");
886
+ }
887
+ return context;
888
+ }
889
+ function Drawer({
890
+ modal = true,
891
+ showSwipeHandle = false,
892
+ snapPoints,
893
+ swipeDirection = "down",
894
+ ...props
895
+ }) {
896
+ const hasSnapPoints = snapPoints != null && snapPoints.length > 0;
897
+ const contextValue = React7.useMemo(
898
+ () => ({ hasSnapPoints, modal, showSwipeHandle, swipeDirection }),
899
+ [hasSnapPoints, modal, showSwipeHandle, swipeDirection]
900
+ );
901
+ return /* @__PURE__ */ jsx(DrawerContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
902
+ Drawer$1.Root,
903
+ {
904
+ "data-slot": "drawer",
905
+ modal,
906
+ snapPoints,
907
+ swipeDirection,
908
+ ...props
909
+ }
910
+ ) });
911
+ }
912
+ function DrawerTrigger({ ...props }) {
913
+ return /* @__PURE__ */ jsx(Drawer$1.Trigger, { "data-slot": "drawer-trigger", ...props });
914
+ }
915
+ function DrawerPortal({ ...props }) {
916
+ return /* @__PURE__ */ jsx(Drawer$1.Portal, { "data-slot": "drawer-portal", ...props });
917
+ }
918
+ function DrawerClose({ ...props }) {
919
+ return /* @__PURE__ */ jsx(Drawer$1.Close, { "data-slot": "drawer-close", ...props });
920
+ }
921
+ function DrawerOverlay({
922
+ className,
923
+ ...props
924
+ }) {
925
+ return /* @__PURE__ */ jsx(
926
+ Drawer$1.Backdrop,
927
+ {
928
+ "data-slot": "drawer-overlay",
929
+ className: cn(
930
+ "fixed inset-0 z-50 min-h-dvh bg-black/10 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-backdrop-filter:backdrop-blur-xs supports-[-webkit-touch-callout:none]:absolute",
931
+ className
932
+ ),
933
+ ...props
934
+ }
935
+ );
936
+ }
937
+ function DrawerSwipeHandle({
938
+ className,
939
+ ...props
940
+ }) {
941
+ return /* @__PURE__ */ jsx(
942
+ "div",
943
+ {
944
+ "data-slot": "drawer-swipe-handle",
945
+ "aria-hidden": "true",
946
+ className: cn(
947
+ "relative z-10 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",
948
+ className
949
+ ),
950
+ ...props
951
+ }
952
+ );
953
+ }
954
+ function DrawerContent({
955
+ className,
956
+ children,
957
+ ...props
958
+ }) {
959
+ const { hasSnapPoints, modal, showSwipeHandle, swipeDirection } = useDrawer();
960
+ const swipeAxis = swipeDirection === "down" || swipeDirection === "up" ? "y" : "x";
961
+ return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
962
+ modal === true && /* @__PURE__ */ jsx(DrawerOverlay, { "data-snap-points": hasSnapPoints ? "" : void 0 }),
963
+ /* @__PURE__ */ jsx(
964
+ Drawer$1.Viewport,
965
+ {
966
+ "data-slot": "drawer-viewport",
967
+ "data-modal": modal,
968
+ className: "pointer-events-none fixed inset-0 z-50 select-none data-[modal=true]:pointer-events-auto",
969
+ children: /* @__PURE__ */ jsxs(
970
+ Drawer$1.Popup,
971
+ {
972
+ "data-slot": "drawer-popup",
973
+ "data-swipe-axis": swipeAxis,
974
+ "data-snap-points": hasSnapPoints ? "" : void 0,
975
+ className: cn(
976
+ // Base.
977
+ "group/drawer-popup pointer-events-auto fixed z-50 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)_scale(var(--stack-scale))] flex-col 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-xl data-[swipe-direction=down]:border-t data-[swipe-direction=left]:rounded-r-xl data-[swipe-direction=left]:border-r data-[swipe-direction=right]:rounded-l-xl data-[swipe-direction=right]:border-l data-[swipe-direction=up]:rounded-b-xl data-[swipe-direction=up]:border-b",
978
+ // Nested.
979
+ "data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95",
980
+ // Bleed.
981
+ "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",
982
+ // Sizing.
983
+ "[--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]",
984
+ // Stack.
985
+ "[--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-scale-base:max(0,calc(1-(var(--nested-drawers)*var(--stack-step))))] [--stack-scale:clamp(0,calc(var(--stack-scale-base)+(var(--stack-step)*var(--stack-progress))),1)] [--stack-shrink:calc(1-var(--stack-scale))] [--stack-step:0.05]",
986
+ // Transitions.
987
+ "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)]",
988
+ // Axis: y.
989
+ "data-[swipe-axis=y]:inset-x-0 data-[swipe-axis=y]:data-nested-drawer-open:h-(--stack-height)",
990
+ // Axis: x.
991
+ "data-[swipe-axis=x]:inset-y-0 data-[swipe-axis=x]:flex-row",
992
+ // Direction: down.
993
+ "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)))]",
994
+ // Direction: up.
995
+ "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)))]",
996
+ // Direction: left.
997
+ "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%))]",
998
+ // Direction: right.
999
+ "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%))]",
1000
+ className
1001
+ ),
1002
+ ...props,
1003
+ children: [
1004
+ showSwipeHandle && /* @__PURE__ */ jsx(DrawerSwipeHandle, {}),
1005
+ /* @__PURE__ */ jsx(
1006
+ Drawer$1.Content,
1007
+ {
1008
+ "data-slot": "drawer-content",
1009
+ className: cn(
1010
+ "flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-300 ease-[cubic-bezier(0.45,1.005,0,1.005)] 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"
1011
+ ),
1012
+ children
1013
+ }
1014
+ )
1015
+ ]
1016
+ }
1017
+ )
1018
+ }
1019
+ )
1020
+ ] });
1021
+ }
1022
+ function DrawerHeader({ className, ...props }) {
1023
+ return /* @__PURE__ */ jsx(
1024
+ "div",
1025
+ {
1026
+ "data-slot": "drawer-header",
1027
+ className: cn(
1028
+ "flex shrink-0 flex-col gap-0.5 p-4 pb-0 group-data-[swipe-axis=y]/drawer-popup:text-center md:gap-0.5 md:text-left",
1029
+ className
1030
+ ),
1031
+ ...props
1032
+ }
1033
+ );
1034
+ }
1035
+ function DrawerFooter({ className, ...props }) {
1036
+ return /* @__PURE__ */ jsx(
1037
+ "div",
1038
+ {
1039
+ "data-slot": "drawer-footer",
1040
+ className: cn("mt-auto flex shrink-0 flex-col gap-2 p-4 pt-0", className),
1041
+ ...props
1042
+ }
1043
+ );
1044
+ }
1045
+ function DrawerTitle({ className, ...props }) {
1046
+ return /* @__PURE__ */ jsx(
1047
+ Drawer$1.Title,
1048
+ {
1049
+ "data-slot": "drawer-title",
1050
+ className: cn(
1051
+ "cn-font-heading text-base font-medium text-foreground",
1052
+ className
1053
+ ),
1054
+ ...props
1055
+ }
1056
+ );
1057
+ }
1058
+ function DrawerDescription({
1059
+ className,
1060
+ ...props
1061
+ }) {
1062
+ return /* @__PURE__ */ jsx(
1063
+ Drawer$1.Description,
1064
+ {
1065
+ "data-slot": "drawer-description",
1066
+ className: cn("text-sm text-balance text-muted-foreground", className),
1067
+ ...props
1068
+ }
1069
+ );
1070
+ }
1071
+ function Label({ className, ...props }) {
1072
+ return /* @__PURE__ */ jsx(
1073
+ "label",
1074
+ {
1075
+ "data-slot": "label",
1076
+ className: cn(
1077
+ "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
1078
+ className
1079
+ ),
1080
+ ...props
1081
+ }
1082
+ );
1083
+ }
1084
+ function FieldSet({ className, ...props }) {
1085
+ return /* @__PURE__ */ jsx(
1086
+ "fieldset",
1087
+ {
1088
+ "data-slot": "field-set",
1089
+ className: cn(
1090
+ "flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
1091
+ className
1092
+ ),
1093
+ ...props
1094
+ }
1095
+ );
1096
+ }
1097
+ function FieldLegend({
1098
+ className,
1099
+ variant = "legend",
1100
+ ...props
1101
+ }) {
1102
+ return /* @__PURE__ */ jsx(
1103
+ "legend",
1104
+ {
1105
+ "data-slot": "field-legend",
1106
+ "data-variant": variant,
1107
+ className: cn(
1108
+ "mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base",
1109
+ className
1110
+ ),
1111
+ ...props
1112
+ }
1113
+ );
1114
+ }
1115
+ function FieldGroup({ className, ...props }) {
1116
+ return /* @__PURE__ */ jsx(
1117
+ "div",
1118
+ {
1119
+ "data-slot": "field-group",
1120
+ className: cn(
1121
+ "group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4",
1122
+ className
1123
+ ),
1124
+ ...props
1125
+ }
1126
+ );
1127
+ }
1128
+ var fieldVariants = cva(
1129
+ "group/field flex w-full gap-2 data-[invalid=true]:text-destructive",
1130
+ {
1131
+ variants: {
1132
+ orientation: {
1133
+ vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
1134
+ horizontal: "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
1135
+ responsive: "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
1136
+ }
1137
+ },
1138
+ defaultVariants: {
1139
+ orientation: "vertical"
1140
+ }
1141
+ }
1142
+ );
1143
+ function Field({
1144
+ className,
1145
+ orientation = "vertical",
1146
+ ...props
1147
+ }) {
1148
+ return /* @__PURE__ */ jsx(
1149
+ "div",
1150
+ {
1151
+ role: "group",
1152
+ "data-slot": "field",
1153
+ "data-orientation": orientation,
1154
+ className: cn(fieldVariants({ orientation }), className),
1155
+ ...props
1156
+ }
1157
+ );
1158
+ }
1159
+ function FieldContent({ className, ...props }) {
1160
+ return /* @__PURE__ */ jsx(
1161
+ "div",
1162
+ {
1163
+ "data-slot": "field-content",
1164
+ className: cn(
1165
+ "group/field-content flex flex-1 flex-col gap-0.5 leading-snug",
1166
+ className
1167
+ ),
1168
+ ...props
1169
+ }
1170
+ );
1171
+ }
1172
+ function FieldLabel({
1173
+ className,
1174
+ ...props
1175
+ }) {
1176
+ return /* @__PURE__ */ jsx(
1177
+ Label,
1178
+ {
1179
+ "data-slot": "field-label",
1180
+ className: cn(
1181
+ "group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border has-[>[data-slot=field]]:not-has-[:disabled,[data-disabled]]:hover:bg-muted/50 has-[>[data-slot=field]]:has-[:focus-visible]:border-ring has-[>[data-slot=field]]:has-[:focus-visible]:ring-3 has-[>[data-slot=field]]:has-[:focus-visible]:ring-ring/50 *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10",
1182
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
1183
+ className
1184
+ ),
1185
+ ...props
1186
+ }
1187
+ );
1188
+ }
1189
+ function FieldTitle({ className, ...props }) {
1190
+ return /* @__PURE__ */ jsx(
1191
+ "div",
1192
+ {
1193
+ "data-slot": "field-label",
1194
+ className: cn(
1195
+ "flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50",
1196
+ className
1197
+ ),
1198
+ ...props
1199
+ }
1200
+ );
1201
+ }
1202
+ function FieldDescription({ className, ...props }) {
1203
+ return /* @__PURE__ */ jsx(
1204
+ "p",
1205
+ {
1206
+ "data-slot": "field-description",
1207
+ className: cn(
1208
+ "text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
1209
+ "last:mt-0 nth-last-2:-mt-1",
1210
+ "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
1211
+ className
1212
+ ),
1213
+ ...props
1214
+ }
1215
+ );
1216
+ }
1217
+ function FieldSeparator({
1218
+ children,
238
1219
  className,
239
1220
  ...props
240
1221
  }) {
241
1222
  return /* @__PURE__ */ jsxs(
242
- "span",
1223
+ "div",
243
1224
  {
244
- "data-slot": "breadcrumb-ellipsis",
245
- role: "presentation",
246
- "aria-hidden": "true",
1225
+ "data-slot": "field-separator",
1226
+ "data-content": !!children,
247
1227
  className: cn(
248
- "flex size-5 items-center justify-center [&>svg]:size-4",
1228
+ "relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
249
1229
  className
250
1230
  ),
251
1231
  ...props,
252
1232
  children: [
253
- /* @__PURE__ */ jsx(MoreHorizontalIcon, {}),
254
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
1233
+ /* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }),
1234
+ children && /* @__PURE__ */ jsx(
1235
+ "span",
1236
+ {
1237
+ className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
1238
+ "data-slot": "field-separator-content",
1239
+ children
1240
+ }
1241
+ )
255
1242
  ]
256
1243
  }
257
1244
  );
258
1245
  }
259
- function Card({
1246
+ function FieldError({
260
1247
  className,
261
- size = "default",
1248
+ children,
1249
+ errors,
262
1250
  ...props
263
1251
  }) {
1252
+ const content = useMemo(() => {
1253
+ if (children) {
1254
+ return children;
1255
+ }
1256
+ if (!errors?.length) {
1257
+ return null;
1258
+ }
1259
+ const uniqueErrors = [
1260
+ ...new Map(errors.map((error) => [error?.message, error])).values()
1261
+ ];
1262
+ if (uniqueErrors?.length == 1) {
1263
+ return uniqueErrors[0]?.message;
1264
+ }
1265
+ return /* @__PURE__ */ jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
1266
+ (error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index)
1267
+ ) });
1268
+ }, [children, errors]);
1269
+ if (!content) {
1270
+ return null;
1271
+ }
264
1272
  return /* @__PURE__ */ jsx(
265
1273
  "div",
266
1274
  {
267
- "data-slot": "card",
268
- "data-size": size,
269
- className: cn(
270
- "group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",
271
- className
272
- ),
273
- ...props
1275
+ role: "alert",
1276
+ "data-slot": "field-error",
1277
+ className: cn("text-sm font-normal text-destructive", className),
1278
+ ...props,
1279
+ children: content
274
1280
  }
275
1281
  );
276
1282
  }
277
- function CardHeader({ className, ...props }) {
1283
+ function HoverCard({ ...props }) {
1284
+ return /* @__PURE__ */ jsx(PreviewCard.Root, { "data-slot": "hover-card", ...props });
1285
+ }
1286
+ function HoverCardTrigger({ ...props }) {
1287
+ return /* @__PURE__ */ jsx(PreviewCard.Trigger, { "data-slot": "hover-card-trigger", ...props });
1288
+ }
1289
+ function HoverCardContent({
1290
+ className,
1291
+ side = "bottom",
1292
+ sideOffset = 4,
1293
+ align = "center",
1294
+ alignOffset = 4,
1295
+ ...props
1296
+ }) {
1297
+ return /* @__PURE__ */ jsx(PreviewCard.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx(
1298
+ PreviewCard.Positioner,
1299
+ {
1300
+ align,
1301
+ alignOffset,
1302
+ side,
1303
+ sideOffset,
1304
+ className: "isolate z-50",
1305
+ children: /* @__PURE__ */ jsx(
1306
+ PreviewCard.Popup,
1307
+ {
1308
+ "data-slot": "hover-card-content",
1309
+ className: cn(
1310
+ "z-50 w-64 origin-(--transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
1311
+ className
1312
+ ),
1313
+ ...props
1314
+ }
1315
+ )
1316
+ }
1317
+ ) });
1318
+ }
1319
+ function Kbd({ className, ...props }) {
278
1320
  return /* @__PURE__ */ jsx(
279
- "div",
1321
+ "kbd",
280
1322
  {
281
- "data-slot": "card-header",
1323
+ "data-slot": "kbd",
282
1324
  className: cn(
283
- "group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",
1325
+ "pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3",
284
1326
  className
285
1327
  ),
286
1328
  ...props
287
1329
  }
288
1330
  );
289
1331
  }
290
- function CardTitle({ className, ...props }) {
1332
+ function KbdGroup({ className, ...props }) {
291
1333
  return /* @__PURE__ */ jsx(
292
- "div",
1334
+ "kbd",
293
1335
  {
294
- "data-slot": "card-title",
295
- className: cn(
296
- "cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",
297
- className
298
- ),
1336
+ "data-slot": "kbd-group",
1337
+ className: cn("inline-flex items-center gap-1", className),
299
1338
  ...props
300
1339
  }
301
1340
  );
302
1341
  }
303
- function CardDescription({ className, ...props }) {
1342
+ function Pagination({ className, ...props }) {
304
1343
  return /* @__PURE__ */ jsx(
305
- "div",
1344
+ "nav",
306
1345
  {
307
- "data-slot": "card-description",
308
- className: cn("text-sm text-muted-foreground", className),
1346
+ role: "navigation",
1347
+ "aria-label": "pagination",
1348
+ "data-slot": "pagination",
1349
+ className: cn("mx-auto flex w-full justify-center", className),
309
1350
  ...props
310
1351
  }
311
1352
  );
312
1353
  }
313
- function CardAction({ className, ...props }) {
1354
+ function PaginationContent({
1355
+ className,
1356
+ ...props
1357
+ }) {
314
1358
  return /* @__PURE__ */ jsx(
315
- "div",
1359
+ "ul",
316
1360
  {
317
- "data-slot": "card-action",
318
- className: cn(
319
- "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
320
- className
321
- ),
1361
+ "data-slot": "pagination-content",
1362
+ className: cn("flex items-center gap-0.5", className),
322
1363
  ...props
323
1364
  }
324
1365
  );
325
1366
  }
326
- function CardContent({ className, ...props }) {
1367
+ function PaginationItem({ ...props }) {
1368
+ return /* @__PURE__ */ jsx("li", { "data-slot": "pagination-item", ...props });
1369
+ }
1370
+ function PaginationLink({
1371
+ className,
1372
+ isActive,
1373
+ size = "icon",
1374
+ ...props
1375
+ }) {
327
1376
  return /* @__PURE__ */ jsx(
328
- "div",
1377
+ Button,
329
1378
  {
330
- "data-slot": "card-content",
331
- className: cn("px-(--card-spacing)", className),
332
- ...props
1379
+ variant: isActive ? "outline" : "ghost",
1380
+ size,
1381
+ className: cn(className),
1382
+ nativeButton: false,
1383
+ render: /* @__PURE__ */ jsx(
1384
+ "a",
1385
+ {
1386
+ "aria-current": isActive ? "page" : void 0,
1387
+ "data-slot": "pagination-link",
1388
+ "data-active": isActive,
1389
+ ...props
1390
+ }
1391
+ )
333
1392
  }
334
1393
  );
335
1394
  }
336
- function CardFooter({ className, ...props }) {
337
- return /* @__PURE__ */ jsx(
338
- "div",
1395
+ function PaginationPrevious({
1396
+ className,
1397
+ text = "Previous",
1398
+ ...props
1399
+ }) {
1400
+ return /* @__PURE__ */ jsxs(
1401
+ PaginationLink,
339
1402
  {
340
- "data-slot": "card-footer",
341
- className: cn(
342
- "flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)",
343
- className
344
- ),
345
- ...props
1403
+ "aria-label": "Go to previous page",
1404
+ size: "default",
1405
+ className: cn("pl-1.5!", className),
1406
+ ...props,
1407
+ children: [
1408
+ /* @__PURE__ */ jsx(
1409
+ ChevronLeftIcon,
1410
+ {
1411
+ "data-icon": "inline-start",
1412
+ className: "cn-rtl-flip"
1413
+ }
1414
+ ),
1415
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: text })
1416
+ ]
346
1417
  }
347
1418
  );
348
1419
  }
349
- function Label({ className, ...props }) {
350
- return /* @__PURE__ */ jsx(
351
- "label",
1420
+ function PaginationNext({
1421
+ className,
1422
+ text = "Next",
1423
+ ...props
1424
+ }) {
1425
+ return /* @__PURE__ */ jsxs(
1426
+ PaginationLink,
352
1427
  {
353
- "data-slot": "label",
1428
+ "aria-label": "Go to next page",
1429
+ size: "default",
1430
+ className: cn("pr-1.5!", className),
1431
+ ...props,
1432
+ children: [
1433
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: text }),
1434
+ /* @__PURE__ */ jsx(
1435
+ ChevronRightIcon,
1436
+ {
1437
+ "data-icon": "inline-end",
1438
+ className: "cn-rtl-flip"
1439
+ }
1440
+ )
1441
+ ]
1442
+ }
1443
+ );
1444
+ }
1445
+ function PaginationEllipsis({
1446
+ className,
1447
+ ...props
1448
+ }) {
1449
+ return /* @__PURE__ */ jsxs(
1450
+ "span",
1451
+ {
1452
+ "aria-hidden": true,
1453
+ "data-slot": "pagination-ellipsis",
354
1454
  className: cn(
355
- "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
1455
+ "flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
356
1456
  className
357
1457
  ),
358
- ...props
1458
+ ...props,
1459
+ children: [
1460
+ /* @__PURE__ */ jsx(
1461
+ MoreHorizontalIcon,
1462
+ {}
1463
+ ),
1464
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
1465
+ ]
359
1466
  }
360
1467
  );
361
1468
  }
@@ -428,6 +1535,37 @@ function ProgressValue({ className, ...props }) {
428
1535
  }
429
1536
  );
430
1537
  }
1538
+ function RadioGroup({ className, ...props }) {
1539
+ return /* @__PURE__ */ jsx(
1540
+ RadioGroup$1,
1541
+ {
1542
+ "data-slot": "radio-group",
1543
+ className: cn("grid w-full gap-2", className),
1544
+ ...props
1545
+ }
1546
+ );
1547
+ }
1548
+ function RadioGroupItem({ className, ...props }) {
1549
+ return /* @__PURE__ */ jsx(
1550
+ Radio.Root,
1551
+ {
1552
+ "data-slot": "radio-group-item",
1553
+ className: cn(
1554
+ "group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary",
1555
+ className
1556
+ ),
1557
+ ...props,
1558
+ children: /* @__PURE__ */ jsx(
1559
+ Radio.Indicator,
1560
+ {
1561
+ "data-slot": "radio-group-indicator",
1562
+ className: "flex size-4 items-center justify-center",
1563
+ children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" })
1564
+ }
1565
+ )
1566
+ }
1567
+ );
1568
+ }
431
1569
  function ScrollArea({
432
1570
  className,
433
1571
  children,
@@ -628,7 +1766,211 @@ function TabsContent({ className, ...props }) {
628
1766
  }
629
1767
  );
630
1768
  }
1769
+ var toast = Toast$1.createToastManager();
1770
+ function ToastProvider({ ...props }) {
1771
+ return /* @__PURE__ */ jsx(Toast$1.Provider, { ...props });
1772
+ }
1773
+ function ToastPortal({ ...props }) {
1774
+ return /* @__PURE__ */ jsx(Toast$1.Portal, { "data-slot": "toast-portal", ...props });
1775
+ }
1776
+ function ToastViewport({ className, ...props }) {
1777
+ return /* @__PURE__ */ jsx(
1778
+ Toast$1.Viewport,
1779
+ {
1780
+ "data-slot": "toast-viewport",
1781
+ className: cn(
1782
+ "pointer-events-none fixed inset-x-4 bottom-4 z-50 mx-auto w-auto max-w-sm outline-none sm:right-4 sm:left-auto sm:mx-0 sm:w-full",
1783
+ className
1784
+ ),
1785
+ ...props
1786
+ }
1787
+ );
1788
+ }
1789
+ function Toast({ className, ...props }) {
1790
+ return /* @__PURE__ */ jsx(
1791
+ Toast$1.Root,
1792
+ {
1793
+ "data-slot": "toast",
1794
+ className: cn(
1795
+ "group/toast pointer-events-auto absolute right-0 bottom-0 z-[calc(1000-var(--toast-index))] w-full origin-bottom rounded-2xl border bg-popover text-popover-foreground shadow-lg will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
1796
+ "[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]",
1797
+ "h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]",
1798
+ "after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']",
1799
+ "data-expanded:h-(--toast-height) data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]",
1800
+ "data-limited:opacity-0 data-starting-style:[transform:translateY(150%)]",
1801
+ "[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]",
1802
+ "data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
1803
+ "data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]",
1804
+ "data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]",
1805
+ "data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
1806
+ "data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
1807
+ "data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]",
1808
+ "data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]",
1809
+ "data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
1810
+ className
1811
+ ),
1812
+ ...props
1813
+ }
1814
+ );
1815
+ }
1816
+ function ToastContent({ className, ...props }) {
1817
+ return /* @__PURE__ */ jsx(
1818
+ Toast$1.Content,
1819
+ {
1820
+ "data-slot": "toast-content",
1821
+ className: cn(
1822
+ "flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100",
1823
+ className
1824
+ ),
1825
+ ...props
1826
+ }
1827
+ );
1828
+ }
1829
+ function ToastTitle({ className, ...props }) {
1830
+ return /* @__PURE__ */ jsx(
1831
+ Toast$1.Title,
1832
+ {
1833
+ "data-slot": "toast-title",
1834
+ className: cn("text-sm font-medium", className),
1835
+ ...props
1836
+ }
1837
+ );
1838
+ }
1839
+ function ToastDescription({
1840
+ className,
1841
+ ...props
1842
+ }) {
1843
+ return /* @__PURE__ */ jsx(
1844
+ Toast$1.Description,
1845
+ {
1846
+ "data-slot": "toast-description",
1847
+ className: cn("text-sm text-muted-foreground", className),
1848
+ ...props
1849
+ }
1850
+ );
1851
+ }
1852
+ function ToastAction({
1853
+ className,
1854
+ render = /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm" }),
1855
+ ...props
1856
+ }) {
1857
+ return /* @__PURE__ */ jsx(
1858
+ Toast$1.Action,
1859
+ {
1860
+ "data-slot": "toast-action",
1861
+ render,
1862
+ className: cn("shrink-0", className),
1863
+ ...props
1864
+ }
1865
+ );
1866
+ }
1867
+ function ToastClose({
1868
+ className,
1869
+ children,
1870
+ render = /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-sm" }),
1871
+ ...props
1872
+ }) {
1873
+ return /* @__PURE__ */ jsx(
1874
+ Toast$1.Close,
1875
+ {
1876
+ "data-slot": "toast-close",
1877
+ "aria-label": "Close toast",
1878
+ render,
1879
+ className: cn(
1880
+ "relative shrink-0 text-muted-foreground after:absolute after:-inset-2 after:content-[''] hover:text-foreground",
1881
+ className
1882
+ ),
1883
+ ...props,
1884
+ children: children ?? /* @__PURE__ */ jsx(
1885
+ XIcon,
1886
+ {
1887
+ "aria-hidden": "true"
1888
+ }
1889
+ )
1890
+ }
1891
+ );
1892
+ }
1893
+ function ToastIcon({ type }) {
1894
+ let icon = null;
1895
+ if (type === "success") {
1896
+ icon = /* @__PURE__ */ jsx(
1897
+ CircleCheckIcon,
1898
+ {
1899
+ "aria-hidden": "true"
1900
+ }
1901
+ );
1902
+ }
1903
+ if (type === "info") {
1904
+ icon = /* @__PURE__ */ jsx(
1905
+ InfoIcon,
1906
+ {
1907
+ "aria-hidden": "true"
1908
+ }
1909
+ );
1910
+ }
1911
+ if (type === "warning") {
1912
+ icon = /* @__PURE__ */ jsx(
1913
+ TriangleAlertIcon,
1914
+ {
1915
+ "aria-hidden": "true"
1916
+ }
1917
+ );
1918
+ }
1919
+ if (type === "error") {
1920
+ icon = /* @__PURE__ */ jsx(
1921
+ OctagonXIcon,
1922
+ {
1923
+ className: "text-destructive",
1924
+ "aria-hidden": "true"
1925
+ }
1926
+ );
1927
+ }
1928
+ if (type === "loading") {
1929
+ icon = /* @__PURE__ */ jsx(
1930
+ Loader2Icon,
1931
+ {
1932
+ className: "animate-spin",
1933
+ "aria-hidden": "true"
1934
+ }
1935
+ );
1936
+ }
1937
+ if (!icon) {
1938
+ return null;
1939
+ }
1940
+ return /* @__PURE__ */ jsx(
1941
+ "span",
1942
+ {
1943
+ "data-slot": "toast-icon",
1944
+ className: "shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
1945
+ children: icon
1946
+ }
1947
+ );
1948
+ }
1949
+ function ToastList() {
1950
+ const { toasts } = Toast$1.useToastManager();
1951
+ return toasts.map((toastItem) => /* @__PURE__ */ jsx(Toast, { toast: toastItem, children: /* @__PURE__ */ jsxs(ToastContent, { children: [
1952
+ /* @__PURE__ */ jsx(ToastIcon, { type: toastItem.type }),
1953
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
1954
+ /* @__PURE__ */ jsx(ToastTitle, {}),
1955
+ /* @__PURE__ */ jsx(ToastDescription, {})
1956
+ ] }),
1957
+ /* @__PURE__ */ jsx(ToastAction, {}),
1958
+ /* @__PURE__ */ jsx(ToastClose, {})
1959
+ ] }) }, toastItem.id));
1960
+ }
1961
+ function Toaster({
1962
+ children,
1963
+ toastManager = toast,
1964
+ ...props
1965
+ }) {
1966
+ return /* @__PURE__ */ jsxs(ToastProvider, { toastManager, ...props, children: [
1967
+ children,
1968
+ /* @__PURE__ */ jsx(ToastPortal, { children: /* @__PURE__ */ jsx(ToastViewport, { children: /* @__PURE__ */ jsx(ToastList, {}) }) })
1969
+ ] });
1970
+ }
1971
+ var createToastManager = Toast$1.createToastManager;
1972
+ var useToastManager = Toast$1.useToastManager;
631
1973
 
632
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertTitle, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Label, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, ScrollArea, ScrollBar, Slider, Spinner, Switch, Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants };
1974
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSwipeHandle, DrawerTitle, DrawerTrigger, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, HoverCard, HoverCardContent, HoverCardTrigger, Kbd, KbdGroup, Label, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Slider, Spinner, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Toast, ToastAction, ToastClose, ToastContent, ToastDescription, ToastPortal, ToastProvider, ToastTitle, ToastViewport, Toaster, createToastManager, tabsListVariants, toast, useComboboxAnchor, useToastManager };
633
1975
  //# sourceMappingURL=index.js.map
634
1976
  //# sourceMappingURL=index.js.map