@squadbase/vantage 0.6.2-dev1.b332e5a → 0.6.2-dev1.d7c0911

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 (212) hide show
  1. package/dist/add-4GHF2TX2.js +6 -0
  2. package/dist/add-4GHF2TX2.js.map +1 -0
  3. package/dist/{build-TVKFIVFQ.js → build-X5NVCQKT.js} +7 -7
  4. package/dist/{build-TVKFIVFQ.js.map → build-X5NVCQKT.js.map} +1 -1
  5. package/dist/{check-3KHZXZMQ.js → check-ZBIH422T.js} +5 -5
  6. package/dist/{check-3KHZXZMQ.js.map → check-ZBIH422T.js.map} +1 -1
  7. package/dist/chunk-2ICNHUG6.js +1820 -0
  8. package/dist/chunk-2ICNHUG6.js.map +1 -0
  9. package/dist/{chunk-5ZOP4SQR.js → chunk-2N72FKLB.js} +12 -7
  10. package/dist/chunk-2N72FKLB.js.map +1 -0
  11. package/dist/{chunk-P7W4LR3Z.js → chunk-7DZGJQ3P.js} +3 -3
  12. package/dist/{chunk-P7W4LR3Z.js.map → chunk-7DZGJQ3P.js.map} +1 -1
  13. package/dist/{chunk-U2M6HGKQ.js → chunk-AABMKHEU.js} +4 -4
  14. package/dist/{chunk-U2M6HGKQ.js.map → chunk-AABMKHEU.js.map} +1 -1
  15. package/dist/{chunk-QI3XQKHS.js → chunk-GNXCX4WE.js} +10 -3
  16. package/dist/chunk-GNXCX4WE.js.map +1 -0
  17. package/dist/{chunk-PXRX5PEC.js → chunk-PDOBHMUQ.js} +3 -3
  18. package/dist/chunk-PDOBHMUQ.js.map +1 -0
  19. package/dist/{chunk-ZVANIULZ.js → chunk-RNTDBX6S.js} +4 -4
  20. package/dist/{chunk-ZVANIULZ.js.map → chunk-RNTDBX6S.js.map} +1 -1
  21. package/dist/{chunk-A2UUGASH.js → chunk-U736PVHY.js} +2 -2
  22. package/dist/chunk-U736PVHY.js.map +1 -0
  23. package/dist/{chunk-PVTHHV7X.js → chunk-V3LF7BE7.js} +27 -5
  24. package/dist/chunk-V3LF7BE7.js.map +1 -0
  25. package/dist/{chunk-LMUACBMA.js → chunk-WAMZWZJB.js} +53 -8
  26. package/dist/chunk-WAMZWZJB.js.map +1 -0
  27. package/dist/chunk-WRSX2MDK.js +7866 -0
  28. package/dist/chunk-WRSX2MDK.js.map +1 -0
  29. package/dist/{chunk-RPZAALCX.js → chunk-XPQSTZUU.js} +254 -164
  30. package/dist/chunk-XPQSTZUU.js.map +1 -0
  31. package/dist/{chunk-DTDVSFRY.js → chunk-XQUSGIDG.js} +17 -3
  32. package/dist/chunk-XQUSGIDG.js.map +1 -0
  33. package/dist/cli.js +12 -11
  34. package/dist/cli.js.map +1 -1
  35. package/dist/client/index.d.ts +32 -3
  36. package/dist/client/index.js +205 -12
  37. package/dist/client/index.js.map +1 -1
  38. package/dist/components/index.d.ts +1975 -28
  39. package/dist/components/index.js +4 -4
  40. package/dist/{dev-GDKATCC7.js → dev-4XEDTELV.js} +8 -8
  41. package/dist/dev-4XEDTELV.js.map +1 -0
  42. package/dist/doc/index.js +2 -2
  43. package/dist/doc/index.js.map +1 -1
  44. package/dist/{docs-EJJ3BECT.js → docs-JVP4RPKT.js} +3 -3
  45. package/dist/{docs-EJJ3BECT.js.map → docs-JVP4RPKT.js.map} +1 -1
  46. package/dist/{doctor-WQXPXP6K.js → doctor-5E2VEZPK.js} +5 -5
  47. package/dist/{doctor-WQXPXP6K.js.map → doctor-5E2VEZPK.js.map} +1 -1
  48. package/dist/markdown/index.js +1 -1
  49. package/dist/markdown/index.js.map +1 -1
  50. package/dist/{preview-OGMCNQUO.js → preview-T6CLSQVX.js} +3 -3
  51. package/dist/{preview-OGMCNQUO.js.map → preview-T6CLSQVX.js.map} +1 -1
  52. package/dist/query/index.d.ts +0 -11
  53. package/dist/query/index.js +2 -2
  54. package/dist/{routes-MWBWWOJ2.js → routes-3SGAFDMC.js} +4 -4
  55. package/dist/{routes-MWBWWOJ2.js.map → routes-3SGAFDMC.js.map} +1 -1
  56. package/dist/{search-6Y422SV6.js → search-5LC4XPB5.js} +3 -3
  57. package/dist/{search-6Y422SV6.js.map → search-5LC4XPB5.js.map} +1 -1
  58. package/dist/table/index.js +10 -9
  59. package/dist/table/index.js.map +1 -1
  60. package/dist/ui/index.d.ts +144 -11
  61. package/dist/ui/index.js +1339 -87
  62. package/dist/ui/index.js.map +1 -1
  63. package/dist/{upgrade-HCANX4GQ.js → upgrade-JHXZBGQS.js} +6 -6
  64. package/dist/{upgrade-HCANX4GQ.js.map → upgrade-JHXZBGQS.js.map} +1 -1
  65. package/dist/vite/index.d.ts +10 -0
  66. package/dist/vite/index.js +3 -3
  67. package/docs/en/components.md +29 -15
  68. package/docs/en/parts/data-table.md +22 -0
  69. package/docs/en/parts/delta.md +50 -0
  70. package/docs/en/parts/format.md +43 -0
  71. package/docs/en/parts/kpi-card.md +57 -0
  72. package/docs/en/parts/metric-value.md +3 -2
  73. package/docs/en/parts/sparkline.md +1 -1
  74. package/docs/en/parts/trend-indicator.md +17 -1
  75. package/docs/en/ui-and-theming.md +1 -1
  76. package/docs/index.json +366 -76
  77. package/docs/ja/changelog.md +31 -0
  78. package/docs/ja/components.md +57 -101
  79. package/docs/ja/page-types/csv.md +83 -0
  80. package/docs/ja/page-types/doc.md +83 -0
  81. package/docs/ja/page-types/excel.md +82 -0
  82. package/docs/ja/page-types/slide.md +132 -0
  83. package/docs/ja/page-types.md +47 -0
  84. package/docs/ja/parts/area-chart.md +61 -0
  85. package/docs/ja/parts/bar-chart.md +69 -0
  86. package/docs/ja/parts/bar-list.md +35 -0
  87. package/docs/ja/parts/category-bar.md +36 -0
  88. package/docs/ja/parts/data-table.md +22 -0
  89. package/docs/ja/parts/delta.md +50 -0
  90. package/docs/ja/parts/donut-chart.md +47 -0
  91. package/docs/ja/parts/echart.md +3 -0
  92. package/docs/ja/parts/format.md +44 -0
  93. package/docs/ja/parts/kpi-card.md +55 -0
  94. package/docs/ja/parts/line-chart.md +58 -0
  95. package/docs/ja/parts/metric-value.md +3 -2
  96. package/docs/ja/parts/progress-circle.md +34 -0
  97. package/docs/ja/parts/sparkline.md +2 -2
  98. package/docs/ja/parts/tracker.md +32 -0
  99. package/docs/ja/parts/trend-indicator.md +17 -1
  100. package/docs/ja/routing.md +8 -86
  101. package/docs/ja/ui/alert-dialog.md +41 -0
  102. package/docs/ja/ui/avatar.md +31 -0
  103. package/docs/ja/ui/combobox.md +74 -0
  104. package/docs/ja/ui/drawer.md +41 -0
  105. package/docs/ja/ui/field.md +42 -0
  106. package/docs/ja/ui/hover-card.md +21 -0
  107. package/docs/ja/ui/kbd.md +16 -0
  108. package/docs/ja/ui/pagination.md +36 -0
  109. package/docs/ja/ui/radio-group.md +21 -0
  110. package/docs/ja/ui/toast.md +46 -0
  111. package/docs/ja/ui-and-theming.md +14 -7
  112. package/package.json +13 -4
  113. package/registry/ui/accordion.tsx +76 -0
  114. package/registry/ui/alert-dialog.tsx +189 -0
  115. package/registry/ui/alert.tsx +80 -0
  116. package/registry/ui/app-shell.tsx +287 -0
  117. package/registry/ui/area-chart.tsx +3639 -0
  118. package/registry/ui/avatar.tsx +110 -0
  119. package/registry/ui/badge.tsx +56 -0
  120. package/registry/ui/bar-chart.tsx +3636 -0
  121. package/registry/ui/bar-list.tsx +3680 -0
  122. package/registry/ui/breadcrumb.tsx +128 -0
  123. package/registry/ui/button.tsx +62 -0
  124. package/registry/ui/calendar.tsx +223 -0
  125. package/registry/ui/card.tsx +107 -0
  126. package/registry/ui/category-bar.tsx +1255 -0
  127. package/registry/ui/chart-frame.tsx +1358 -0
  128. package/registry/ui/checkbox.tsx +30 -0
  129. package/registry/ui/collapsible.tsx +23 -0
  130. package/registry/ui/combobox.tsx +310 -0
  131. package/registry/ui/command.tsx +198 -0
  132. package/registry/ui/dashboard-card.tsx +217 -0
  133. package/registry/ui/data-table.tsx +693 -146
  134. package/registry/ui/date-range-picker.tsx +390 -0
  135. package/registry/ui/delta.tsx +188 -0
  136. package/registry/ui/dialog.tsx +161 -0
  137. package/registry/ui/donut-chart.tsx +3688 -0
  138. package/registry/ui/drawer.tsx +229 -0
  139. package/registry/ui/dropdown-menu.tsx +274 -0
  140. package/registry/ui/echart.tsx +890 -0
  141. package/registry/ui/field.tsx +240 -0
  142. package/registry/ui/filter-bar.tsx +392 -0
  143. package/registry/ui/funnel-steps.tsx +3541 -0
  144. package/registry/ui/heatmap.tsx +1752 -0
  145. package/registry/ui/hover-card.tsx +52 -0
  146. package/registry/ui/input-group.tsx +160 -0
  147. package/registry/ui/input.tsx +24 -0
  148. package/registry/ui/kbd.tsx +30 -0
  149. package/registry/ui/kpi-card.tsx +677 -0
  150. package/registry/ui/label.tsx +22 -0
  151. package/registry/ui/legend.tsx +3500 -0
  152. package/registry/ui/line-chart.tsx +3637 -0
  153. package/registry/ui/metric-value.tsx +62 -0
  154. package/registry/ui/multi-select.tsx +232 -0
  155. package/registry/ui/page-shell.tsx +282 -0
  156. package/registry/ui/pagination.tsx +140 -0
  157. package/registry/ui/placeholder.tsx +36 -0
  158. package/registry/ui/popover.tsx +92 -0
  159. package/registry/ui/progress-circle.tsx +867 -0
  160. package/registry/ui/progress.tsx +85 -0
  161. package/registry/ui/radio-group.tsx +39 -0
  162. package/registry/ui/sample-data.tsx +86 -0
  163. package/registry/ui/scatter-chart.tsx +4150 -0
  164. package/registry/ui/scroll-area.tsx +56 -0
  165. package/registry/ui/searchable-select.tsx +214 -0
  166. package/registry/ui/section-header.tsx +43 -0
  167. package/registry/ui/segmented-control.tsx +76 -0
  168. package/registry/ui/select.tsx +255 -0
  169. package/registry/ui/separator.tsx +27 -0
  170. package/registry/ui/sheet.tsx +139 -0
  171. package/registry/ui/sidebar.tsx +725 -0
  172. package/registry/ui/skeleton.tsx +17 -0
  173. package/registry/ui/slider.tsx +56 -0
  174. package/registry/ui/sparkline.tsx +230 -0
  175. package/registry/ui/spinner.tsx +14 -0
  176. package/registry/ui/states.tsx +90 -0
  177. package/registry/ui/status-badge.tsx +121 -0
  178. package/registry/ui/switch.tsx +34 -0
  179. package/registry/ui/table.tsx +118 -0
  180. package/registry/ui/tabs.tsx +84 -0
  181. package/registry/ui/textarea.tsx +22 -0
  182. package/registry/ui/toast.tsx +250 -0
  183. package/registry/ui/toggle-group.tsx +91 -0
  184. package/registry/ui/toggle.tsx +47 -0
  185. package/registry/ui/tooltip.tsx +68 -0
  186. package/registry/ui/tracker.tsx +843 -0
  187. package/registry/ui/trend-indicator.tsx +74 -0
  188. package/registry/ui/updated-at.tsx +122 -0
  189. package/registry/ui/waterfall-chart.tsx +4186 -0
  190. package/skills/vantage-add-feature/SKILL.md +9 -7
  191. package/skills/vantage-pitfalls/SKILL.md +5 -1
  192. package/templates/AGENTS.md +22 -1
  193. package/templates/agents/csv.md +2 -1
  194. package/templates/agents/doc.md +4 -3
  195. package/templates/agents/page.md +20 -6
  196. package/templates/agents/xlsx.md +2 -1
  197. package/theme.css +237 -136
  198. package/dist/add-DY4AXANK.js +0 -6
  199. package/dist/add-DY4AXANK.js.map +0 -1
  200. package/dist/chunk-5ZOP4SQR.js.map +0 -1
  201. package/dist/chunk-A2UUGASH.js.map +0 -1
  202. package/dist/chunk-DTDVSFRY.js.map +0 -1
  203. package/dist/chunk-LMUACBMA.js.map +0 -1
  204. package/dist/chunk-NKFBFDRZ.js +0 -2241
  205. package/dist/chunk-NKFBFDRZ.js.map +0 -1
  206. package/dist/chunk-PVTHHV7X.js.map +0 -1
  207. package/dist/chunk-PXRX5PEC.js.map +0 -1
  208. package/dist/chunk-QI3XQKHS.js.map +0 -1
  209. package/dist/chunk-RPZAALCX.js.map +0 -1
  210. package/dist/chunk-VA776YE5.js +0 -316
  211. package/dist/chunk-VA776YE5.js.map +0 -1
  212. package/dist/dev-GDKATCC7.js.map +0 -1
package/dist/ui/index.js CHANGED
@@ -1,20 +1,31 @@
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';
3
- export { Button, buttonVariants } from '../chunk-PXRX5PEC.js';
4
- import { cn } from '../chunk-A2UUGASH.js';
5
- export { cn } from '../chunk-A2UUGASH.js';
1
+ export { Empty, ErrorState, Loading } from '../chunk-2N72FKLB.js';
2
+ import { InputGroup, InputGroupInput, InputGroupAddon, InputGroupButton, Separator } from '../chunk-XPQSTZUU.js';
3
+ export { Badge, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, 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-XPQSTZUU.js';
4
+ import { Button } from '../chunk-PDOBHMUQ.js';
5
+ export { Button, buttonVariants } from '../chunk-PDOBHMUQ.js';
6
+ import { cn } from '../chunk-U736PVHY.js';
7
+ export { cn } from '../chunk-U736PVHY.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 React6 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 }) {
@@ -68,7 +79,7 @@ function AccordionContent({
68
79
  Accordion$1.Panel,
69
80
  {
70
81
  "data-slot": "accordion-content",
71
- className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up",
82
+ className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up motion-reduce:animate-none",
72
83
  ...props,
73
84
  children: /* @__PURE__ */ jsx(
74
85
  "div",
@@ -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 motion-reduce:animate-none! 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 motion-reduce:animate-none! 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",
@@ -208,154 +466,913 @@ function BreadcrumbPage({ className, ...props }) {
208
466
  return /* @__PURE__ */ jsx(
209
467
  "span",
210
468
  {
211
- "data-slot": "breadcrumb-page",
212
- role: "link",
213
- "aria-disabled": "true",
214
- "aria-current": "page",
215
- className: cn("font-normal text-foreground", className),
469
+ "data-slot": "breadcrumb-page",
470
+ role: "link",
471
+ "aria-disabled": "true",
472
+ "aria-current": "page",
473
+ className: cn("font-normal text-foreground", className),
474
+ ...props
475
+ }
476
+ );
477
+ }
478
+ function BreadcrumbSeparator({
479
+ children,
480
+ className,
481
+ ...props
482
+ }) {
483
+ return /* @__PURE__ */ jsx(
484
+ "li",
485
+ {
486
+ "data-slot": "breadcrumb-separator",
487
+ role: "presentation",
488
+ "aria-hidden": "true",
489
+ className: cn("[&>svg]:size-3.5", className),
490
+ ...props,
491
+ children: children ?? /* @__PURE__ */ jsx(ChevronRightIcon, { className: "cn-rtl-flip" })
492
+ }
493
+ );
494
+ }
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
+ var Combobox = Combobox$1.Root;
518
+ function ComboboxValue({ ...props }) {
519
+ return /* @__PURE__ */ jsx(Combobox$1.Value, { "data-slot": "combobox-value", ...props });
520
+ }
521
+ function ComboboxTrigger({
522
+ className,
523
+ children,
524
+ ...props
525
+ }) {
526
+ return /* @__PURE__ */ jsxs(
527
+ Combobox$1.Trigger,
528
+ {
529
+ "data-slot": "combobox-trigger",
530
+ className: cn("[&_svg:not([class*='size-'])]:size-4", className),
531
+ ...props,
532
+ children: [
533
+ children,
534
+ /* @__PURE__ */ jsx(
535
+ ChevronDownIcon,
536
+ {
537
+ className: "pointer-events-none size-4 text-muted-foreground"
538
+ }
539
+ )
540
+ ]
541
+ }
542
+ );
543
+ }
544
+ function ComboboxClear({ className, ...props }) {
545
+ return /* @__PURE__ */ jsx(
546
+ Combobox$1.Clear,
547
+ {
548
+ "data-slot": "combobox-clear",
549
+ render: /* @__PURE__ */ jsx(InputGroupButton, { variant: "ghost", size: "icon-xs" }),
550
+ className: cn(className),
551
+ ...props,
552
+ children: /* @__PURE__ */ jsx(
553
+ XIcon,
554
+ {
555
+ className: "pointer-events-none"
556
+ }
557
+ )
558
+ }
559
+ );
560
+ }
561
+ function ComboboxInput({
562
+ className,
563
+ children,
564
+ disabled = false,
565
+ showTrigger = true,
566
+ showClear = false,
567
+ ...props
568
+ }) {
569
+ return /* @__PURE__ */ jsxs(InputGroup, { className: cn("w-auto", className), children: [
570
+ /* @__PURE__ */ jsx(
571
+ Combobox$1.Input,
572
+ {
573
+ render: /* @__PURE__ */ jsx(InputGroupInput, { disabled }),
574
+ ...props
575
+ }
576
+ ),
577
+ /* @__PURE__ */ jsxs(InputGroupAddon, { align: "inline-end", children: [
578
+ showTrigger && /* @__PURE__ */ jsx(
579
+ InputGroupButton,
580
+ {
581
+ size: "icon-xs",
582
+ variant: "ghost",
583
+ render: /* @__PURE__ */ jsx(ComboboxTrigger, {}),
584
+ "data-slot": "input-group-button",
585
+ className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent",
586
+ disabled
587
+ }
588
+ ),
589
+ showClear && /* @__PURE__ */ jsx(ComboboxClear, { disabled })
590
+ ] }),
591
+ children
592
+ ] });
593
+ }
594
+ function ComboboxContent({
595
+ className,
596
+ side = "bottom",
597
+ sideOffset = 6,
598
+ align = "start",
599
+ alignOffset = 0,
600
+ anchor,
601
+ ...props
602
+ }) {
603
+ return /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(
604
+ Combobox$1.Positioner,
605
+ {
606
+ side,
607
+ sideOffset,
608
+ align,
609
+ alignOffset,
610
+ anchor,
611
+ className: "isolate z-50",
612
+ children: /* @__PURE__ */ jsx(
613
+ Combobox$1.Popup,
614
+ {
615
+ "data-slot": "combobox-content",
616
+ "data-chips": !!anchor,
617
+ className: cn(
618
+ "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 motion-reduce:animate-none! data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
619
+ className
620
+ ),
621
+ ...props
622
+ }
623
+ )
624
+ }
625
+ ) });
626
+ }
627
+ function ComboboxList({ className, ...props }) {
628
+ return /* @__PURE__ */ jsx(
629
+ Combobox$1.List,
630
+ {
631
+ "data-slot": "combobox-list",
632
+ className: cn(
633
+ "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",
634
+ className
635
+ ),
636
+ ...props
637
+ }
638
+ );
639
+ }
640
+ function ComboboxItem({
641
+ className,
642
+ children,
643
+ ...props
644
+ }) {
645
+ return /* @__PURE__ */ jsxs(
646
+ Combobox$1.Item,
647
+ {
648
+ "data-slot": "combobox-item",
649
+ className: cn(
650
+ "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",
651
+ className
652
+ ),
653
+ ...props,
654
+ children: [
655
+ children,
656
+ /* @__PURE__ */ jsx(
657
+ Combobox$1.ItemIndicator,
658
+ {
659
+ render: /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
660
+ children: /* @__PURE__ */ jsx(
661
+ CheckIcon,
662
+ {
663
+ className: "pointer-events-none"
664
+ }
665
+ )
666
+ }
667
+ )
668
+ ]
669
+ }
670
+ );
671
+ }
672
+ function ComboboxGroup({ className, ...props }) {
673
+ return /* @__PURE__ */ jsx(
674
+ Combobox$1.Group,
675
+ {
676
+ "data-slot": "combobox-group",
677
+ className: cn(className),
678
+ ...props
679
+ }
680
+ );
681
+ }
682
+ function ComboboxLabel({
683
+ className,
684
+ ...props
685
+ }) {
686
+ return /* @__PURE__ */ jsx(
687
+ Combobox$1.GroupLabel,
688
+ {
689
+ "data-slot": "combobox-label",
690
+ className: cn("px-2 py-1.5 text-xs text-muted-foreground", className),
691
+ ...props
692
+ }
693
+ );
694
+ }
695
+ function ComboboxCollection({ ...props }) {
696
+ return /* @__PURE__ */ jsx(Combobox$1.Collection, { "data-slot": "combobox-collection", ...props });
697
+ }
698
+ function ComboboxEmpty({ className, ...props }) {
699
+ return /* @__PURE__ */ jsx(
700
+ Combobox$1.Empty,
701
+ {
702
+ "data-slot": "combobox-empty",
703
+ className: cn(
704
+ "hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex",
705
+ className
706
+ ),
707
+ ...props
708
+ }
709
+ );
710
+ }
711
+ function ComboboxSeparator({
712
+ className,
713
+ ...props
714
+ }) {
715
+ return /* @__PURE__ */ jsx(
716
+ Combobox$1.Separator,
717
+ {
718
+ "data-slot": "combobox-separator",
719
+ className: cn("-mx-1 my-1 h-px bg-border", className),
720
+ ...props
721
+ }
722
+ );
723
+ }
724
+ function ComboboxChips({
725
+ className,
726
+ ...props
727
+ }) {
728
+ return /* @__PURE__ */ jsx(
729
+ Combobox$1.Chips,
730
+ {
731
+ "data-slot": "combobox-chips",
732
+ className: cn(
733
+ "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",
734
+ className
735
+ ),
736
+ ...props
737
+ }
738
+ );
739
+ }
740
+ function ComboboxChip({
741
+ className,
742
+ children,
743
+ showRemove = true,
744
+ ...props
745
+ }) {
746
+ return /* @__PURE__ */ jsxs(
747
+ Combobox$1.Chip,
748
+ {
749
+ "data-slot": "combobox-chip",
750
+ className: cn(
751
+ "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",
752
+ className
753
+ ),
754
+ ...props,
755
+ children: [
756
+ children,
757
+ showRemove && /* @__PURE__ */ jsx(
758
+ Combobox$1.ChipRemove,
759
+ {
760
+ render: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-xs" }),
761
+ className: "-ml-1 opacity-50 hover:opacity-100",
762
+ "data-slot": "combobox-chip-remove",
763
+ children: /* @__PURE__ */ jsx(
764
+ XIcon,
765
+ {
766
+ className: "pointer-events-none"
767
+ }
768
+ )
769
+ }
770
+ )
771
+ ]
772
+ }
773
+ );
774
+ }
775
+ function ComboboxChipsInput({
776
+ className,
777
+ ...props
778
+ }) {
779
+ return /* @__PURE__ */ jsx(
780
+ Combobox$1.Input,
781
+ {
782
+ "data-slot": "combobox-chip-input",
783
+ className: cn("min-w-16 flex-1 outline-none", className),
784
+ ...props
785
+ }
786
+ );
787
+ }
788
+ function useComboboxAnchor() {
789
+ return React6.useRef(null);
790
+ }
791
+ var DrawerContext = React6.createContext(null);
792
+ function useDrawer() {
793
+ const context = React6.useContext(DrawerContext);
794
+ if (!context) {
795
+ throw new Error("useDrawer must be used within a Drawer.");
796
+ }
797
+ return context;
798
+ }
799
+ function Drawer({
800
+ modal = true,
801
+ showSwipeHandle = false,
802
+ snapPoints,
803
+ swipeDirection = "down",
804
+ ...props
805
+ }) {
806
+ const hasSnapPoints = snapPoints != null && snapPoints.length > 0;
807
+ const contextValue = React6.useMemo(
808
+ () => ({ hasSnapPoints, modal, showSwipeHandle, swipeDirection }),
809
+ [hasSnapPoints, modal, showSwipeHandle, swipeDirection]
810
+ );
811
+ return /* @__PURE__ */ jsx(DrawerContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
812
+ Drawer$1.Root,
813
+ {
814
+ "data-slot": "drawer",
815
+ modal,
816
+ snapPoints,
817
+ swipeDirection,
818
+ ...props
819
+ }
820
+ ) });
821
+ }
822
+ function DrawerTrigger({ ...props }) {
823
+ return /* @__PURE__ */ jsx(Drawer$1.Trigger, { "data-slot": "drawer-trigger", ...props });
824
+ }
825
+ function DrawerPortal({ ...props }) {
826
+ return /* @__PURE__ */ jsx(Drawer$1.Portal, { "data-slot": "drawer-portal", ...props });
827
+ }
828
+ function DrawerClose({ ...props }) {
829
+ return /* @__PURE__ */ jsx(Drawer$1.Close, { "data-slot": "drawer-close", ...props });
830
+ }
831
+ function DrawerOverlay({
832
+ className,
833
+ ...props
834
+ }) {
835
+ return /* @__PURE__ */ jsx(
836
+ Drawer$1.Backdrop,
837
+ {
838
+ "data-slot": "drawer-overlay",
839
+ className: cn(
840
+ "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",
841
+ className
842
+ ),
843
+ ...props
844
+ }
845
+ );
846
+ }
847
+ function DrawerSwipeHandle({
848
+ className,
849
+ ...props
850
+ }) {
851
+ return /* @__PURE__ */ jsx(
852
+ "div",
853
+ {
854
+ "data-slot": "drawer-swipe-handle",
855
+ "aria-hidden": "true",
856
+ className: cn(
857
+ "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",
858
+ className
859
+ ),
860
+ ...props
861
+ }
862
+ );
863
+ }
864
+ function DrawerContent({
865
+ className,
866
+ children,
867
+ ...props
868
+ }) {
869
+ const { hasSnapPoints, modal, showSwipeHandle, swipeDirection } = useDrawer();
870
+ const swipeAxis = swipeDirection === "down" || swipeDirection === "up" ? "y" : "x";
871
+ return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
872
+ modal === true && /* @__PURE__ */ jsx(DrawerOverlay, { "data-snap-points": hasSnapPoints ? "" : void 0 }),
873
+ /* @__PURE__ */ jsx(
874
+ Drawer$1.Viewport,
875
+ {
876
+ "data-slot": "drawer-viewport",
877
+ "data-modal": modal,
878
+ className: "pointer-events-none fixed inset-0 z-50 select-none data-[modal=true]:pointer-events-auto",
879
+ children: /* @__PURE__ */ jsxs(
880
+ Drawer$1.Popup,
881
+ {
882
+ "data-slot": "drawer-popup",
883
+ "data-swipe-axis": swipeAxis,
884
+ "data-snap-points": hasSnapPoints ? "" : void 0,
885
+ className: cn(
886
+ // Base.
887
+ "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",
888
+ // Nested.
889
+ "data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95",
890
+ // Bleed.
891
+ "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",
892
+ // Sizing.
893
+ "[--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]",
894
+ // Stack.
895
+ "[--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]",
896
+ // Transitions.
897
+ "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)]",
898
+ // Axis: y.
899
+ "data-[swipe-axis=y]:inset-x-0 data-[swipe-axis=y]:data-nested-drawer-open:h-(--stack-height)",
900
+ // Axis: x.
901
+ "data-[swipe-axis=x]:inset-y-0 data-[swipe-axis=x]:flex-row",
902
+ // Direction: down.
903
+ "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)))]",
904
+ // Direction: up.
905
+ "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)))]",
906
+ // Direction: left.
907
+ "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%))]",
908
+ // Direction: right.
909
+ "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%))]",
910
+ className
911
+ ),
912
+ ...props,
913
+ children: [
914
+ showSwipeHandle && /* @__PURE__ */ jsx(DrawerSwipeHandle, {}),
915
+ /* @__PURE__ */ jsx(
916
+ Drawer$1.Content,
917
+ {
918
+ "data-slot": "drawer-content",
919
+ className: cn(
920
+ "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"
921
+ ),
922
+ children
923
+ }
924
+ )
925
+ ]
926
+ }
927
+ )
928
+ }
929
+ )
930
+ ] });
931
+ }
932
+ function DrawerHeader({ className, ...props }) {
933
+ return /* @__PURE__ */ jsx(
934
+ "div",
935
+ {
936
+ "data-slot": "drawer-header",
937
+ className: cn(
938
+ "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",
939
+ className
940
+ ),
941
+ ...props
942
+ }
943
+ );
944
+ }
945
+ function DrawerFooter({ className, ...props }) {
946
+ return /* @__PURE__ */ jsx(
947
+ "div",
948
+ {
949
+ "data-slot": "drawer-footer",
950
+ className: cn("mt-auto flex shrink-0 flex-col gap-2 p-4 pt-0", className),
951
+ ...props
952
+ }
953
+ );
954
+ }
955
+ function DrawerTitle({ className, ...props }) {
956
+ return /* @__PURE__ */ jsx(
957
+ Drawer$1.Title,
958
+ {
959
+ "data-slot": "drawer-title",
960
+ className: cn(
961
+ "cn-font-heading text-base font-medium text-foreground",
962
+ className
963
+ ),
964
+ ...props
965
+ }
966
+ );
967
+ }
968
+ function DrawerDescription({
969
+ className,
970
+ ...props
971
+ }) {
972
+ return /* @__PURE__ */ jsx(
973
+ Drawer$1.Description,
974
+ {
975
+ "data-slot": "drawer-description",
976
+ className: cn("text-sm text-balance text-muted-foreground", className),
977
+ ...props
978
+ }
979
+ );
980
+ }
981
+ function Label({ className, ...props }) {
982
+ return /* @__PURE__ */ jsx(
983
+ "label",
984
+ {
985
+ "data-slot": "label",
986
+ className: cn(
987
+ "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",
988
+ className
989
+ ),
990
+ ...props
991
+ }
992
+ );
993
+ }
994
+ function FieldSet({ className, ...props }) {
995
+ return /* @__PURE__ */ jsx(
996
+ "fieldset",
997
+ {
998
+ "data-slot": "field-set",
999
+ className: cn(
1000
+ "flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
1001
+ className
1002
+ ),
1003
+ ...props
1004
+ }
1005
+ );
1006
+ }
1007
+ function FieldLegend({
1008
+ className,
1009
+ variant = "legend",
1010
+ ...props
1011
+ }) {
1012
+ return /* @__PURE__ */ jsx(
1013
+ "legend",
1014
+ {
1015
+ "data-slot": "field-legend",
1016
+ "data-variant": variant,
1017
+ className: cn(
1018
+ "mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base",
1019
+ className
1020
+ ),
1021
+ ...props
1022
+ }
1023
+ );
1024
+ }
1025
+ function FieldGroup({ className, ...props }) {
1026
+ return /* @__PURE__ */ jsx(
1027
+ "div",
1028
+ {
1029
+ "data-slot": "field-group",
1030
+ className: cn(
1031
+ "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",
1032
+ className
1033
+ ),
1034
+ ...props
1035
+ }
1036
+ );
1037
+ }
1038
+ var fieldVariants = cva(
1039
+ "group/field flex w-full gap-2 data-[invalid=true]:text-destructive",
1040
+ {
1041
+ variants: {
1042
+ orientation: {
1043
+ vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
1044
+ 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",
1045
+ 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"
1046
+ }
1047
+ },
1048
+ defaultVariants: {
1049
+ orientation: "vertical"
1050
+ }
1051
+ }
1052
+ );
1053
+ function Field({
1054
+ className,
1055
+ orientation = "vertical",
1056
+ ...props
1057
+ }) {
1058
+ return /* @__PURE__ */ jsx(
1059
+ "div",
1060
+ {
1061
+ role: "group",
1062
+ "data-slot": "field",
1063
+ "data-orientation": orientation,
1064
+ className: cn(fieldVariants({ orientation }), className),
1065
+ ...props
1066
+ }
1067
+ );
1068
+ }
1069
+ function FieldContent({ className, ...props }) {
1070
+ return /* @__PURE__ */ jsx(
1071
+ "div",
1072
+ {
1073
+ "data-slot": "field-content",
1074
+ className: cn(
1075
+ "group/field-content flex flex-1 flex-col gap-0.5 leading-snug",
1076
+ className
1077
+ ),
1078
+ ...props
1079
+ }
1080
+ );
1081
+ }
1082
+ function FieldLabel({
1083
+ className,
1084
+ ...props
1085
+ }) {
1086
+ return /* @__PURE__ */ jsx(
1087
+ Label,
1088
+ {
1089
+ "data-slot": "field-label",
1090
+ className: cn(
1091
+ "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",
1092
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col",
1093
+ className
1094
+ ),
1095
+ ...props
1096
+ }
1097
+ );
1098
+ }
1099
+ function FieldTitle({ className, ...props }) {
1100
+ return /* @__PURE__ */ jsx(
1101
+ "div",
1102
+ {
1103
+ "data-slot": "field-label",
1104
+ className: cn(
1105
+ "flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50",
1106
+ className
1107
+ ),
216
1108
  ...props
217
1109
  }
218
1110
  );
219
1111
  }
220
- function BreadcrumbSeparator({
221
- children,
222
- className,
223
- ...props
224
- }) {
1112
+ function FieldDescription({ className, ...props }) {
225
1113
  return /* @__PURE__ */ jsx(
226
- "li",
1114
+ "p",
227
1115
  {
228
- "data-slot": "breadcrumb-separator",
229
- role: "presentation",
230
- "aria-hidden": "true",
231
- className: cn("[&>svg]:size-3.5", className),
232
- ...props,
233
- children: children ?? /* @__PURE__ */ jsx(ChevronRightIcon, { className: "cn-rtl-flip" })
1116
+ "data-slot": "field-description",
1117
+ className: cn(
1118
+ "text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5",
1119
+ "last:mt-0 nth-last-2:-mt-1",
1120
+ "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
1121
+ className
1122
+ ),
1123
+ ...props
234
1124
  }
235
1125
  );
236
1126
  }
237
- function BreadcrumbEllipsis({
1127
+ function FieldSeparator({
1128
+ children,
238
1129
  className,
239
1130
  ...props
240
1131
  }) {
241
1132
  return /* @__PURE__ */ jsxs(
242
- "span",
1133
+ "div",
243
1134
  {
244
- "data-slot": "breadcrumb-ellipsis",
245
- role: "presentation",
246
- "aria-hidden": "true",
1135
+ "data-slot": "field-separator",
1136
+ "data-content": !!children,
247
1137
  className: cn(
248
- "flex size-5 items-center justify-center [&>svg]:size-4",
1138
+ "relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
249
1139
  className
250
1140
  ),
251
1141
  ...props,
252
1142
  children: [
253
- /* @__PURE__ */ jsx(MoreHorizontalIcon, {}),
254
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
1143
+ /* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }),
1144
+ children && /* @__PURE__ */ jsx(
1145
+ "span",
1146
+ {
1147
+ className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
1148
+ "data-slot": "field-separator-content",
1149
+ children
1150
+ }
1151
+ )
255
1152
  ]
256
1153
  }
257
1154
  );
258
1155
  }
259
- function Card({
1156
+ function FieldError({
260
1157
  className,
261
- size = "default",
1158
+ children,
1159
+ errors,
262
1160
  ...props
263
1161
  }) {
1162
+ const content = useMemo(() => {
1163
+ if (children) {
1164
+ return children;
1165
+ }
1166
+ if (!errors?.length) {
1167
+ return null;
1168
+ }
1169
+ const uniqueErrors = [
1170
+ ...new Map(errors.map((error) => [error?.message, error])).values()
1171
+ ];
1172
+ if (uniqueErrors?.length == 1) {
1173
+ return uniqueErrors[0]?.message;
1174
+ }
1175
+ return /* @__PURE__ */ jsx("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
1176
+ (error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index)
1177
+ ) });
1178
+ }, [children, errors]);
1179
+ if (!content) {
1180
+ return null;
1181
+ }
264
1182
  return /* @__PURE__ */ jsx(
265
1183
  "div",
266
1184
  {
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
1185
+ role: "alert",
1186
+ "data-slot": "field-error",
1187
+ className: cn("text-sm font-normal text-destructive", className),
1188
+ ...props,
1189
+ children: content
274
1190
  }
275
1191
  );
276
1192
  }
277
- function CardHeader({ className, ...props }) {
1193
+ function HoverCard({ ...props }) {
1194
+ return /* @__PURE__ */ jsx(PreviewCard.Root, { "data-slot": "hover-card", ...props });
1195
+ }
1196
+ function HoverCardTrigger({ ...props }) {
1197
+ return /* @__PURE__ */ jsx(PreviewCard.Trigger, { "data-slot": "hover-card-trigger", ...props });
1198
+ }
1199
+ function HoverCardContent({
1200
+ className,
1201
+ side = "bottom",
1202
+ sideOffset = 4,
1203
+ align = "center",
1204
+ alignOffset = 4,
1205
+ ...props
1206
+ }) {
1207
+ return /* @__PURE__ */ jsx(PreviewCard.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx(
1208
+ PreviewCard.Positioner,
1209
+ {
1210
+ align,
1211
+ alignOffset,
1212
+ side,
1213
+ sideOffset,
1214
+ className: "isolate z-50",
1215
+ children: /* @__PURE__ */ jsx(
1216
+ PreviewCard.Popup,
1217
+ {
1218
+ "data-slot": "hover-card-content",
1219
+ className: cn(
1220
+ "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 motion-reduce:animate-none! data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
1221
+ className
1222
+ ),
1223
+ ...props
1224
+ }
1225
+ )
1226
+ }
1227
+ ) });
1228
+ }
1229
+ function Kbd({ className, ...props }) {
278
1230
  return /* @__PURE__ */ jsx(
279
- "div",
1231
+ "kbd",
280
1232
  {
281
- "data-slot": "card-header",
1233
+ "data-slot": "kbd",
282
1234
  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)",
1235
+ "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
1236
  className
285
1237
  ),
286
1238
  ...props
287
1239
  }
288
1240
  );
289
1241
  }
290
- function CardTitle({ className, ...props }) {
1242
+ function KbdGroup({ className, ...props }) {
291
1243
  return /* @__PURE__ */ jsx(
292
- "div",
1244
+ "kbd",
293
1245
  {
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
- ),
1246
+ "data-slot": "kbd-group",
1247
+ className: cn("inline-flex items-center gap-1", className),
299
1248
  ...props
300
1249
  }
301
1250
  );
302
1251
  }
303
- function CardDescription({ className, ...props }) {
1252
+ function Pagination({ className, ...props }) {
304
1253
  return /* @__PURE__ */ jsx(
305
- "div",
1254
+ "nav",
306
1255
  {
307
- "data-slot": "card-description",
308
- className: cn("text-sm text-muted-foreground", className),
1256
+ role: "navigation",
1257
+ "aria-label": "pagination",
1258
+ "data-slot": "pagination",
1259
+ className: cn("mx-auto flex w-full justify-center", className),
309
1260
  ...props
310
1261
  }
311
1262
  );
312
1263
  }
313
- function CardAction({ className, ...props }) {
1264
+ function PaginationContent({
1265
+ className,
1266
+ ...props
1267
+ }) {
314
1268
  return /* @__PURE__ */ jsx(
315
- "div",
1269
+ "ul",
316
1270
  {
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
- ),
1271
+ "data-slot": "pagination-content",
1272
+ className: cn("flex items-center gap-0.5", className),
322
1273
  ...props
323
1274
  }
324
1275
  );
325
1276
  }
326
- function CardContent({ className, ...props }) {
1277
+ function PaginationItem({ ...props }) {
1278
+ return /* @__PURE__ */ jsx("li", { "data-slot": "pagination-item", ...props });
1279
+ }
1280
+ function PaginationLink({
1281
+ className,
1282
+ isActive,
1283
+ size = "icon",
1284
+ ...props
1285
+ }) {
327
1286
  return /* @__PURE__ */ jsx(
328
- "div",
1287
+ Button,
329
1288
  {
330
- "data-slot": "card-content",
331
- className: cn("px-(--card-spacing)", className),
332
- ...props
1289
+ variant: isActive ? "outline" : "ghost",
1290
+ size,
1291
+ className: cn(className),
1292
+ nativeButton: false,
1293
+ render: /* @__PURE__ */ jsx(
1294
+ "a",
1295
+ {
1296
+ "aria-current": isActive ? "page" : void 0,
1297
+ "data-slot": "pagination-link",
1298
+ "data-active": isActive,
1299
+ ...props
1300
+ }
1301
+ )
333
1302
  }
334
1303
  );
335
1304
  }
336
- function CardFooter({ className, ...props }) {
337
- return /* @__PURE__ */ jsx(
338
- "div",
1305
+ function PaginationPrevious({
1306
+ className,
1307
+ text = "Previous",
1308
+ ...props
1309
+ }) {
1310
+ return /* @__PURE__ */ jsxs(
1311
+ PaginationLink,
339
1312
  {
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
1313
+ "aria-label": "Go to previous page",
1314
+ size: "default",
1315
+ className: cn("pl-1.5!", className),
1316
+ ...props,
1317
+ children: [
1318
+ /* @__PURE__ */ jsx(
1319
+ ChevronLeftIcon,
1320
+ {
1321
+ "data-icon": "inline-start",
1322
+ className: "cn-rtl-flip"
1323
+ }
1324
+ ),
1325
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: text })
1326
+ ]
346
1327
  }
347
1328
  );
348
1329
  }
349
- function Label({ className, ...props }) {
350
- return /* @__PURE__ */ jsx(
351
- "label",
1330
+ function PaginationNext({
1331
+ className,
1332
+ text = "Next",
1333
+ ...props
1334
+ }) {
1335
+ return /* @__PURE__ */ jsxs(
1336
+ PaginationLink,
352
1337
  {
353
- "data-slot": "label",
1338
+ "aria-label": "Go to next page",
1339
+ size: "default",
1340
+ className: cn("pr-1.5!", className),
1341
+ ...props,
1342
+ children: [
1343
+ /* @__PURE__ */ jsx("span", { className: "hidden sm:block", children: text }),
1344
+ /* @__PURE__ */ jsx(
1345
+ ChevronRightIcon,
1346
+ {
1347
+ "data-icon": "inline-end",
1348
+ className: "cn-rtl-flip"
1349
+ }
1350
+ )
1351
+ ]
1352
+ }
1353
+ );
1354
+ }
1355
+ function PaginationEllipsis({
1356
+ className,
1357
+ ...props
1358
+ }) {
1359
+ return /* @__PURE__ */ jsxs(
1360
+ "span",
1361
+ {
1362
+ "aria-hidden": true,
1363
+ "data-slot": "pagination-ellipsis",
354
1364
  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",
1365
+ "flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
356
1366
  className
357
1367
  ),
358
- ...props
1368
+ ...props,
1369
+ children: [
1370
+ /* @__PURE__ */ jsx(
1371
+ MoreHorizontalIcon,
1372
+ {}
1373
+ ),
1374
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
1375
+ ]
359
1376
  }
360
1377
  );
361
1378
  }
@@ -428,6 +1445,37 @@ function ProgressValue({ className, ...props }) {
428
1445
  }
429
1446
  );
430
1447
  }
1448
+ function RadioGroup({ className, ...props }) {
1449
+ return /* @__PURE__ */ jsx(
1450
+ RadioGroup$1,
1451
+ {
1452
+ "data-slot": "radio-group",
1453
+ className: cn("grid w-full gap-2", className),
1454
+ ...props
1455
+ }
1456
+ );
1457
+ }
1458
+ function RadioGroupItem({ className, ...props }) {
1459
+ return /* @__PURE__ */ jsx(
1460
+ Radio.Root,
1461
+ {
1462
+ "data-slot": "radio-group-item",
1463
+ className: cn(
1464
+ "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",
1465
+ className
1466
+ ),
1467
+ ...props,
1468
+ children: /* @__PURE__ */ jsx(
1469
+ Radio.Indicator,
1470
+ {
1471
+ "data-slot": "radio-group-indicator",
1472
+ className: "flex size-4 items-center justify-center",
1473
+ 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" })
1474
+ }
1475
+ )
1476
+ }
1477
+ );
1478
+ }
431
1479
  function ScrollArea({
432
1480
  className,
433
1481
  children,
@@ -608,7 +1656,7 @@ function TabsTrigger({ className, ...props }) {
608
1656
  {
609
1657
  "data-slot": "tabs-trigger",
610
1658
  className: cn(
611
- "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1659
+ "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-[color,background-color,border-color,box-shadow] group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
612
1660
  "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent",
613
1661
  "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground",
614
1662
  "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",
@@ -623,12 +1671,216 @@ function TabsContent({ className, ...props }) {
623
1671
  Tabs$1.Panel,
624
1672
  {
625
1673
  "data-slot": "tabs-content",
626
- className: cn("flex-1 text-sm outline-none", className),
1674
+ className: cn("flex-1 text-sm outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50", className),
1675
+ ...props
1676
+ }
1677
+ );
1678
+ }
1679
+ var toast = Toast$1.createToastManager();
1680
+ function ToastProvider({ ...props }) {
1681
+ return /* @__PURE__ */ jsx(Toast$1.Provider, { ...props });
1682
+ }
1683
+ function ToastPortal({ ...props }) {
1684
+ return /* @__PURE__ */ jsx(Toast$1.Portal, { "data-slot": "toast-portal", ...props });
1685
+ }
1686
+ function ToastViewport({ className, ...props }) {
1687
+ return /* @__PURE__ */ jsx(
1688
+ Toast$1.Viewport,
1689
+ {
1690
+ "data-slot": "toast-viewport",
1691
+ className: cn(
1692
+ "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",
1693
+ className
1694
+ ),
1695
+ ...props
1696
+ }
1697
+ );
1698
+ }
1699
+ function Toast({ className, ...props }) {
1700
+ return /* @__PURE__ */ jsx(
1701
+ Toast$1.Root,
1702
+ {
1703
+ "data-slot": "toast",
1704
+ className: cn(
1705
+ "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",
1706
+ "[--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))]",
1707
+ "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_400ms_cubic-bezier(0.22,1,0.36,1),opacity_400ms,height_150ms] data-ending-style:[transition-duration:200ms] motion-reduce:[transition:opacity_150ms]",
1708
+ "after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']",
1709
+ "data-expanded:h-(--toast-height) data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]",
1710
+ "data-limited:opacity-0 data-starting-style:[transform:translateY(150%)]",
1711
+ "[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]",
1712
+ "data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
1713
+ "data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]",
1714
+ "data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]",
1715
+ "data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
1716
+ "data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]",
1717
+ "data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]",
1718
+ "data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]",
1719
+ "data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",
1720
+ className
1721
+ ),
1722
+ ...props
1723
+ }
1724
+ );
1725
+ }
1726
+ function ToastContent({ className, ...props }) {
1727
+ return /* @__PURE__ */ jsx(
1728
+ Toast$1.Content,
1729
+ {
1730
+ "data-slot": "toast-content",
1731
+ className: cn(
1732
+ "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",
1733
+ className
1734
+ ),
1735
+ ...props
1736
+ }
1737
+ );
1738
+ }
1739
+ function ToastTitle({ className, ...props }) {
1740
+ return /* @__PURE__ */ jsx(
1741
+ Toast$1.Title,
1742
+ {
1743
+ "data-slot": "toast-title",
1744
+ className: cn("text-sm font-medium", className),
1745
+ ...props
1746
+ }
1747
+ );
1748
+ }
1749
+ function ToastDescription({
1750
+ className,
1751
+ ...props
1752
+ }) {
1753
+ return /* @__PURE__ */ jsx(
1754
+ Toast$1.Description,
1755
+ {
1756
+ "data-slot": "toast-description",
1757
+ className: cn("text-sm text-muted-foreground", className),
1758
+ ...props
1759
+ }
1760
+ );
1761
+ }
1762
+ function ToastAction({
1763
+ className,
1764
+ render = /* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm" }),
1765
+ ...props
1766
+ }) {
1767
+ return /* @__PURE__ */ jsx(
1768
+ Toast$1.Action,
1769
+ {
1770
+ "data-slot": "toast-action",
1771
+ render,
1772
+ className: cn("shrink-0", className),
627
1773
  ...props
628
1774
  }
629
1775
  );
630
1776
  }
1777
+ function ToastClose({
1778
+ className,
1779
+ children,
1780
+ render = /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-sm" }),
1781
+ ...props
1782
+ }) {
1783
+ return /* @__PURE__ */ jsx(
1784
+ Toast$1.Close,
1785
+ {
1786
+ "data-slot": "toast-close",
1787
+ "aria-label": "Close toast",
1788
+ render,
1789
+ className: cn(
1790
+ "relative shrink-0 text-muted-foreground after:absolute after:-inset-2 after:content-[''] hover:text-foreground",
1791
+ className
1792
+ ),
1793
+ ...props,
1794
+ children: children ?? /* @__PURE__ */ jsx(
1795
+ XIcon,
1796
+ {
1797
+ "aria-hidden": "true"
1798
+ }
1799
+ )
1800
+ }
1801
+ );
1802
+ }
1803
+ function ToastIcon({ type }) {
1804
+ let icon = null;
1805
+ if (type === "success") {
1806
+ icon = /* @__PURE__ */ jsx(
1807
+ CircleCheckIcon,
1808
+ {
1809
+ "aria-hidden": "true"
1810
+ }
1811
+ );
1812
+ }
1813
+ if (type === "info") {
1814
+ icon = /* @__PURE__ */ jsx(
1815
+ InfoIcon,
1816
+ {
1817
+ "aria-hidden": "true"
1818
+ }
1819
+ );
1820
+ }
1821
+ if (type === "warning") {
1822
+ icon = /* @__PURE__ */ jsx(
1823
+ TriangleAlertIcon,
1824
+ {
1825
+ "aria-hidden": "true"
1826
+ }
1827
+ );
1828
+ }
1829
+ if (type === "error") {
1830
+ icon = /* @__PURE__ */ jsx(
1831
+ OctagonXIcon,
1832
+ {
1833
+ className: "text-destructive",
1834
+ "aria-hidden": "true"
1835
+ }
1836
+ );
1837
+ }
1838
+ if (type === "loading") {
1839
+ icon = /* @__PURE__ */ jsx(
1840
+ Loader2Icon,
1841
+ {
1842
+ className: "animate-spin",
1843
+ "aria-hidden": "true"
1844
+ }
1845
+ );
1846
+ }
1847
+ if (!icon) {
1848
+ return null;
1849
+ }
1850
+ return /* @__PURE__ */ jsx(
1851
+ "span",
1852
+ {
1853
+ "data-slot": "toast-icon",
1854
+ className: "shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
1855
+ children: icon
1856
+ }
1857
+ );
1858
+ }
1859
+ function ToastList() {
1860
+ const { toasts } = Toast$1.useToastManager();
1861
+ return toasts.map((toastItem) => /* @__PURE__ */ jsx(Toast, { toast: toastItem, children: /* @__PURE__ */ jsxs(ToastContent, { children: [
1862
+ /* @__PURE__ */ jsx(ToastIcon, { type: toastItem.type }),
1863
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
1864
+ /* @__PURE__ */ jsx(ToastTitle, {}),
1865
+ /* @__PURE__ */ jsx(ToastDescription, {})
1866
+ ] }),
1867
+ /* @__PURE__ */ jsx(ToastAction, {}),
1868
+ /* @__PURE__ */ jsx(ToastClose, {})
1869
+ ] }) }, toastItem.id));
1870
+ }
1871
+ function Toaster({
1872
+ children,
1873
+ toastManager = toast,
1874
+ ...props
1875
+ }) {
1876
+ return /* @__PURE__ */ jsxs(ToastProvider, { toastManager, ...props, children: [
1877
+ children,
1878
+ /* @__PURE__ */ jsx(ToastPortal, { children: /* @__PURE__ */ jsx(ToastViewport, { children: /* @__PURE__ */ jsx(ToastList, {}) }) })
1879
+ ] });
1880
+ }
1881
+ var createToastManager = Toast$1.createToastManager;
1882
+ var useToastManager = Toast$1.useToastManager;
631
1883
 
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 };
1884
+ 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, 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
1885
  //# sourceMappingURL=index.js.map
634
1886
  //# sourceMappingURL=index.js.map