@squadbase/vantage 0.6.1 → 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 (183) 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-PLST5Q7T.js → chunk-AG6RZ2RR.js} +1010 -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-MXI3PZFT.js → chunk-OB6UBJXF.js} +156 -200
  16. package/dist/chunk-OB6UBJXF.js.map +1 -0
  17. package/dist/{chunk-BCE22JSM.js → chunk-P7W4LR3Z.js} +32 -13
  18. package/dist/chunk-P7W4LR3Z.js.map +1 -0
  19. package/dist/chunk-PXRX5PEC.js +54 -0
  20. package/dist/chunk-PXRX5PEC.js.map +1 -0
  21. package/dist/{chunk-3G43C6OL.js → chunk-QI3XQKHS.js} +39 -3
  22. package/dist/chunk-QI3XQKHS.js.map +1 -0
  23. package/dist/{chunk-QDZA5JSL.js → chunk-U2M6HGKQ.js} +3 -3
  24. package/dist/{chunk-QDZA5JSL.js.map → chunk-U2M6HGKQ.js.map} +1 -1
  25. package/dist/{chunk-T3FLAGI6.js → chunk-VA776YE5.js} +3 -3
  26. package/dist/{chunk-T3FLAGI6.js.map → chunk-VA776YE5.js.map} +1 -1
  27. package/dist/cli.js +14 -11
  28. package/dist/cli.js.map +1 -1
  29. package/dist/components/index.d.ts +223 -1
  30. package/dist/components/index.js +3 -2
  31. package/dist/{dev-NZRLOQCL.js → dev-GDKATCC7.js} +22 -11
  32. package/dist/dev-GDKATCC7.js.map +1 -0
  33. package/dist/doc/index.d.ts +4 -0
  34. package/dist/doc/index.js +107 -11
  35. package/dist/doc/index.js.map +1 -1
  36. package/dist/{docs-ZGDJUHJI.js → docs-EJJ3BECT.js} +3 -3
  37. package/dist/{docs-ZGDJUHJI.js.map → docs-EJJ3BECT.js.map} +1 -1
  38. package/dist/{doctor-VFKEMR54.js → doctor-WQXPXP6K.js} +7 -7
  39. package/dist/doctor-WQXPXP6K.js.map +1 -0
  40. package/dist/{preview-QDCIVVSR.js → preview-OGMCNQUO.js} +12 -4
  41. package/dist/preview-OGMCNQUO.js.map +1 -0
  42. package/dist/{routes-RHP5FVGD.js → routes-MWBWWOJ2.js} +5 -5
  43. package/dist/{routes-RHP5FVGD.js.map → routes-MWBWWOJ2.js.map} +1 -1
  44. package/dist/{search-RFBELGY7.js → search-6Y422SV6.js} +3 -3
  45. package/dist/{search-RFBELGY7.js.map → search-6Y422SV6.js.map} +1 -1
  46. package/dist/slide/index.js +61 -15
  47. package/dist/slide/index.js.map +1 -1
  48. package/dist/table/index.js +7 -5
  49. package/dist/table/index.js.map +1 -1
  50. package/dist/ui/index.d.ts +140 -10
  51. package/dist/ui/index.js +1406 -63
  52. package/dist/ui/index.js.map +1 -1
  53. package/dist/{upgrade-GF2P67M6.js → upgrade-HCANX4GQ.js} +6 -6
  54. package/dist/{upgrade-GF2P67M6.js.map → upgrade-HCANX4GQ.js.map} +1 -1
  55. package/dist/vite/index.js +3 -3
  56. package/docs/en/changelog.md +24 -0
  57. package/docs/en/cli-reference.md +30 -0
  58. package/docs/en/parts/page-shell.md +1 -1
  59. package/docs/en/routing.md +4 -2
  60. package/docs/index.json +291 -61
  61. package/docs/ja/changelog.md +50 -0
  62. package/docs/ja/cli-reference.md +29 -0
  63. package/docs/ja/components.md +33 -89
  64. package/docs/ja/page-types/csv.md +83 -0
  65. package/docs/ja/page-types/doc.md +83 -0
  66. package/docs/ja/page-types/excel.md +82 -0
  67. package/docs/ja/page-types/slide.md +132 -0
  68. package/docs/ja/page-types.md +47 -0
  69. package/docs/ja/parts/area-chart.md +61 -0
  70. package/docs/ja/parts/bar-chart.md +69 -0
  71. package/docs/ja/parts/bar-list.md +35 -0
  72. package/docs/ja/parts/category-bar.md +36 -0
  73. package/docs/ja/parts/donut-chart.md +47 -0
  74. package/docs/ja/parts/echart.md +3 -0
  75. package/docs/ja/parts/line-chart.md +58 -0
  76. package/docs/ja/parts/page-shell.md +1 -1
  77. package/docs/ja/parts/progress-circle.md +34 -0
  78. package/docs/ja/parts/sparkline.md +1 -1
  79. package/docs/ja/parts/tracker.md +32 -0
  80. package/docs/ja/routing.md +8 -84
  81. package/docs/ja/ui/alert-dialog.md +41 -0
  82. package/docs/ja/ui/avatar.md +31 -0
  83. package/docs/ja/ui/combobox.md +74 -0
  84. package/docs/ja/ui/drawer.md +41 -0
  85. package/docs/ja/ui/field.md +42 -0
  86. package/docs/ja/ui/hover-card.md +21 -0
  87. package/docs/ja/ui/kbd.md +16 -0
  88. package/docs/ja/ui/pagination.md +36 -0
  89. package/docs/ja/ui/radio-group.md +21 -0
  90. package/docs/ja/ui/toast.md +46 -0
  91. package/docs/ja/ui-and-theming.md +14 -7
  92. package/package.json +18 -12
  93. package/registry/ui/accordion.tsx +74 -0
  94. package/registry/ui/alert-dialog.tsx +189 -0
  95. package/registry/ui/alert.tsx +78 -0
  96. package/registry/ui/app-shell.tsx +281 -0
  97. package/registry/ui/area-chart.tsx +1015 -0
  98. package/registry/ui/avatar.tsx +110 -0
  99. package/registry/ui/badge.tsx +54 -0
  100. package/registry/ui/bar-chart.tsx +1013 -0
  101. package/registry/ui/bar-list.tsx +302 -0
  102. package/registry/ui/breadcrumb.tsx +126 -0
  103. package/registry/ui/button.tsx +60 -0
  104. package/registry/ui/calendar.tsx +221 -0
  105. package/registry/ui/card.tsx +105 -0
  106. package/registry/ui/category-bar.tsx +281 -0
  107. package/registry/ui/checkbox.tsx +28 -0
  108. package/registry/ui/collapsible.tsx +21 -0
  109. package/registry/ui/combobox.tsx +310 -0
  110. package/registry/ui/command.tsx +196 -0
  111. package/registry/ui/dashboard-card.tsx +174 -0
  112. package/registry/ui/data-table.tsx +16 -91
  113. package/registry/ui/date-range-picker.tsx +209 -0
  114. package/registry/ui/dialog.tsx +159 -0
  115. package/registry/ui/donut-chart.tsx +1004 -0
  116. package/registry/ui/drawer.tsx +229 -0
  117. package/registry/ui/dropdown-menu.tsx +272 -0
  118. package/registry/ui/echart.tsx +486 -0
  119. package/registry/ui/field.tsx +240 -0
  120. package/registry/ui/filter-bar.tsx +365 -0
  121. package/registry/ui/funnel-steps.tsx +274 -0
  122. package/registry/ui/hover-card.tsx +52 -0
  123. package/registry/ui/input-group.tsx +158 -0
  124. package/registry/ui/input.tsx +22 -0
  125. package/registry/ui/kbd.tsx +28 -0
  126. package/registry/ui/label.tsx +20 -0
  127. package/registry/ui/line-chart.tsx +1007 -0
  128. package/registry/ui/metric-value.tsx +54 -0
  129. package/registry/ui/multi-select.tsx +226 -0
  130. package/registry/ui/page-shell.tsx +227 -0
  131. package/registry/ui/pagination.tsx +138 -0
  132. package/registry/ui/placeholder.tsx +30 -0
  133. package/registry/ui/popover.tsx +90 -0
  134. package/registry/ui/progress-circle.tsx +272 -0
  135. package/registry/ui/progress.tsx +83 -0
  136. package/registry/ui/radio-group.tsx +39 -0
  137. package/registry/ui/scroll-area.tsx +55 -0
  138. package/registry/ui/searchable-select.tsx +209 -0
  139. package/registry/ui/section-header.tsx +41 -0
  140. package/registry/ui/segmented-control.tsx +71 -0
  141. package/registry/ui/select.tsx +253 -0
  142. package/registry/ui/separator.tsx +25 -0
  143. package/registry/ui/sheet.tsx +137 -0
  144. package/registry/ui/sidebar.tsx +723 -0
  145. package/registry/ui/skeleton.tsx +15 -0
  146. package/registry/ui/slider.tsx +54 -0
  147. package/registry/ui/sparkline.tsx +155 -0
  148. package/registry/ui/spinner.tsx +12 -0
  149. package/registry/ui/states.tsx +61 -0
  150. package/registry/ui/status-badge.tsx +79 -0
  151. package/registry/ui/switch.tsx +32 -0
  152. package/registry/ui/table.tsx +116 -0
  153. package/registry/ui/tabs.tsx +82 -0
  154. package/registry/ui/textarea.tsx +20 -0
  155. package/registry/ui/toast.tsx +250 -0
  156. package/registry/ui/toggle-group.tsx +89 -0
  157. package/registry/ui/toggle.tsx +45 -0
  158. package/registry/ui/tooltip.tsx +66 -0
  159. package/registry/ui/tracker.tsx +236 -0
  160. package/registry/ui/trend-indicator.tsx +62 -0
  161. package/skills/vantage-add-feature/SKILL.md +9 -7
  162. package/skills/vantage-design/SKILL.md +3 -1
  163. package/skills/vantage-design/references/format.md +1 -1
  164. package/skills/vantage-pitfalls/SKILL.md +5 -1
  165. package/skills/vantage-slide/SKILL.md +17 -0
  166. package/templates/AGENTS.md +10 -1
  167. package/templates/agents/api.md +29 -0
  168. package/templates/agents/csv.md +2 -1
  169. package/templates/agents/doc.md +6 -3
  170. package/templates/agents/page.md +22 -8
  171. package/templates/agents/slide.md +13 -1
  172. package/templates/agents/xlsx.md +2 -1
  173. package/theme.css +51 -1
  174. package/dist/add-EISGSZAH.js +0 -6
  175. package/dist/add-EISGSZAH.js.map +0 -1
  176. package/dist/chunk-3G43C6OL.js.map +0 -1
  177. package/dist/chunk-BCE22JSM.js.map +0 -1
  178. package/dist/chunk-KLEIVDUV.js.map +0 -1
  179. package/dist/chunk-MXI3PZFT.js.map +0 -1
  180. package/dist/chunk-PLST5Q7T.js.map +0 -1
  181. package/dist/dev-NZRLOQCL.js.map +0 -1
  182. package/dist/doctor-VFKEMR54.js.map +0 -1
  183. package/dist/preview-QDCIVVSR.js.map +0 -1
package/dist/ui/index.js CHANGED
@@ -1,19 +1,31 @@
1
1
  export { Empty, ErrorState, Loading } from '../chunk-5ZOP4SQR.js';
2
- export { Badge, Button, Calendar, CalendarDayButton, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, toggleVariants, useIsMobile, useSidebar } from '../chunk-MXI3PZFT.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';
5
+ export { Button, buttonVariants } from '../chunk-PXRX5PEC.js';
3
6
  import { cn } from '../chunk-A2UUGASH.js';
4
7
  export { cn } from '../chunk-A2UUGASH.js';
5
8
  import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
6
- 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';
7
10
  import { jsx, jsxs } from 'react/jsx-runtime';
8
- import 'react';
11
+ import * as React7 from 'react';
12
+ import { useMemo } from 'react';
9
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';
10
16
  import { mergeProps } from '@base-ui/react/merge-props';
11
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';
12
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';
13
24
  import { ScrollArea as ScrollArea$1 } from '@base-ui/react/scroll-area';
14
25
  import { Slider as Slider$1 } from '@base-ui/react/slider';
15
26
  import { Switch as Switch$1 } from '@base-ui/react/switch';
16
27
  import { Tabs as Tabs$1 } from '@base-ui/react/tabs';
28
+ import { Toast as Toast$1 } from '@base-ui/react/toast';
17
29
 
18
30
  // @squadbase/vantage — generated build. Do not edit.
19
31
  function Accordion({ className, ...props }) {
@@ -150,6 +162,253 @@ function AlertAction({ className, ...props }) {
150
162
  }
151
163
  );
152
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
+ }
153
412
  function Breadcrumb({ className, ...props }) {
154
413
  return /* @__PURE__ */ jsx(
155
414
  "nav",
@@ -233,128 +492,977 @@ function BreadcrumbSeparator({
233
492
  }
234
493
  );
235
494
  }
236
- 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,
237
1219
  className,
238
1220
  ...props
239
1221
  }) {
240
1222
  return /* @__PURE__ */ jsxs(
241
- "span",
1223
+ "div",
242
1224
  {
243
- "data-slot": "breadcrumb-ellipsis",
244
- role: "presentation",
245
- "aria-hidden": "true",
1225
+ "data-slot": "field-separator",
1226
+ "data-content": !!children,
246
1227
  className: cn(
247
- "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",
248
1229
  className
249
1230
  ),
250
1231
  ...props,
251
1232
  children: [
252
- /* @__PURE__ */ jsx(MoreHorizontalIcon, {}),
253
- /* @__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
+ )
254
1242
  ]
255
1243
  }
256
1244
  );
257
1245
  }
258
- function Card({
1246
+ function FieldError({
259
1247
  className,
260
- size = "default",
1248
+ children,
1249
+ errors,
261
1250
  ...props
262
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
+ }
263
1272
  return /* @__PURE__ */ jsx(
264
1273
  "div",
265
1274
  {
266
- "data-slot": "card",
267
- "data-size": size,
268
- className: cn(
269
- "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",
270
- className
271
- ),
272
- ...props
1275
+ role: "alert",
1276
+ "data-slot": "field-error",
1277
+ className: cn("text-sm font-normal text-destructive", className),
1278
+ ...props,
1279
+ children: content
273
1280
  }
274
1281
  );
275
1282
  }
276
- 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 }) {
277
1320
  return /* @__PURE__ */ jsx(
278
- "div",
1321
+ "kbd",
279
1322
  {
280
- "data-slot": "card-header",
1323
+ "data-slot": "kbd",
281
1324
  className: cn(
282
- "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",
283
1326
  className
284
1327
  ),
285
1328
  ...props
286
1329
  }
287
1330
  );
288
1331
  }
289
- function CardTitle({ className, ...props }) {
1332
+ function KbdGroup({ className, ...props }) {
290
1333
  return /* @__PURE__ */ jsx(
291
- "div",
1334
+ "kbd",
292
1335
  {
293
- "data-slot": "card-title",
294
- className: cn(
295
- "cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",
296
- className
297
- ),
1336
+ "data-slot": "kbd-group",
1337
+ className: cn("inline-flex items-center gap-1", className),
298
1338
  ...props
299
1339
  }
300
1340
  );
301
1341
  }
302
- function CardDescription({ className, ...props }) {
1342
+ function Pagination({ className, ...props }) {
303
1343
  return /* @__PURE__ */ jsx(
304
- "div",
1344
+ "nav",
305
1345
  {
306
- "data-slot": "card-description",
307
- 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),
308
1350
  ...props
309
1351
  }
310
1352
  );
311
1353
  }
312
- function CardAction({ className, ...props }) {
1354
+ function PaginationContent({
1355
+ className,
1356
+ ...props
1357
+ }) {
313
1358
  return /* @__PURE__ */ jsx(
314
- "div",
1359
+ "ul",
315
1360
  {
316
- "data-slot": "card-action",
317
- className: cn(
318
- "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
319
- className
320
- ),
1361
+ "data-slot": "pagination-content",
1362
+ className: cn("flex items-center gap-0.5", className),
321
1363
  ...props
322
1364
  }
323
1365
  );
324
1366
  }
325
- 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
+ }) {
326
1376
  return /* @__PURE__ */ jsx(
327
- "div",
1377
+ Button,
328
1378
  {
329
- "data-slot": "card-content",
330
- className: cn("px-(--card-spacing)", className),
331
- ...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
+ )
332
1392
  }
333
1393
  );
334
1394
  }
335
- function CardFooter({ className, ...props }) {
336
- return /* @__PURE__ */ jsx(
337
- "div",
1395
+ function PaginationPrevious({
1396
+ className,
1397
+ text = "Previous",
1398
+ ...props
1399
+ }) {
1400
+ return /* @__PURE__ */ jsxs(
1401
+ PaginationLink,
338
1402
  {
339
- "data-slot": "card-footer",
340
- className: cn(
341
- "flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)",
342
- className
343
- ),
344
- ...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
+ ]
345
1417
  }
346
1418
  );
347
1419
  }
348
- function Label({ className, ...props }) {
349
- return /* @__PURE__ */ jsx(
350
- "label",
1420
+ function PaginationNext({
1421
+ className,
1422
+ text = "Next",
1423
+ ...props
1424
+ }) {
1425
+ return /* @__PURE__ */ jsxs(
1426
+ PaginationLink,
351
1427
  {
352
- "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",
353
1454
  className: cn(
354
- "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",
355
1456
  className
356
1457
  ),
357
- ...props
1458
+ ...props,
1459
+ children: [
1460
+ /* @__PURE__ */ jsx(
1461
+ MoreHorizontalIcon,
1462
+ {}
1463
+ ),
1464
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
1465
+ ]
358
1466
  }
359
1467
  );
360
1468
  }
@@ -427,6 +1535,37 @@ function ProgressValue({ className, ...props }) {
427
1535
  }
428
1536
  );
429
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
+ }
430
1569
  function ScrollArea({
431
1570
  className,
432
1571
  children,
@@ -627,7 +1766,211 @@ function TabsContent({ className, ...props }) {
627
1766
  }
628
1767
  );
629
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;
630
1973
 
631
- 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 };
632
1975
  //# sourceMappingURL=index.js.map
633
1976
  //# sourceMappingURL=index.js.map