@akira-io/ui 1.1.0 → 1.1.1

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 (58) hide show
  1. package/dist/blocks.d.ts +25 -25
  2. package/dist/blocks.js +74 -59
  3. package/dist/blocks.js.map +1 -1
  4. package/dist/{button-B6wQRe7p.d.ts → button-Bj6My68b.d.ts} +2 -1
  5. package/dist/{chunk-JAHTUAQL.js → chunk-2WIIRDHT.js} +5 -4
  6. package/dist/chunk-2WIIRDHT.js.map +1 -0
  7. package/dist/{chunk-KYWA5UYN.js → chunk-4SOQAVUP.js} +5 -5
  8. package/dist/{chunk-KYWA5UYN.js.map → chunk-4SOQAVUP.js.map} +1 -1
  9. package/dist/{chunk-UUTXPPRN.js → chunk-CFDDAFPJ.js} +125 -82
  10. package/dist/chunk-CFDDAFPJ.js.map +1 -0
  11. package/dist/{chunk-LKSM3WLK.js → chunk-FWQFB37J.js} +6 -5
  12. package/dist/chunk-FWQFB37J.js.map +1 -0
  13. package/dist/{chunk-DSD7MVLL.js → chunk-ODYCBCKS.js} +10 -7
  14. package/dist/chunk-ODYCBCKS.js.map +1 -0
  15. package/dist/{chunk-MNGNBEYN.js → chunk-QHZWW55M.js} +245 -156
  16. package/dist/chunk-QHZWW55M.js.map +1 -0
  17. package/dist/{chunk-SA5LM2GD.js → chunk-RPCL7VFQ.js} +41 -20
  18. package/dist/chunk-RPCL7VFQ.js.map +1 -0
  19. package/dist/{chunk-6QM5BA7B.js → chunk-T2INZOCM.js} +40 -23
  20. package/dist/chunk-T2INZOCM.js.map +1 -0
  21. package/dist/{chunk-UUEWFCKT.js → chunk-TGF54WAO.js} +6 -5
  22. package/dist/chunk-TGF54WAO.js.map +1 -0
  23. package/dist/{chunk-6X4TKSF6.js → chunk-XZCC6MTE.js} +11 -6
  24. package/dist/chunk-XZCC6MTE.js.map +1 -0
  25. package/dist/code.d.ts +5 -2
  26. package/dist/code.js +51 -52
  27. package/dist/code.js.map +1 -1
  28. package/dist/{context-VgHq4U98.d.ts → context-YWbxMH0C.d.ts} +26 -27
  29. package/dist/editor.d.ts +8 -6
  30. package/dist/editor.js +32 -18
  31. package/dist/editor.js.map +1 -1
  32. package/dist/index.d.ts +229 -229
  33. package/dist/index.js +431 -325
  34. package/dist/index.js.map +1 -1
  35. package/dist/inertia.d.ts +1 -1
  36. package/dist/inertia.js +5 -5
  37. package/dist/input-Dpi7pXeR.d.ts +6 -0
  38. package/dist/{json-viewer-BTHBACj9.d.ts → json-viewer-BARA2RCW.d.ts} +3 -2
  39. package/dist/locales/pt.d.ts +8 -8
  40. package/dist/{password-input-r39y2pCT.d.ts → password-input-DcXX7SG9.d.ts} +8 -7
  41. package/dist/shells.d.ts +7 -7
  42. package/dist/shells.js +10 -9
  43. package/dist/shells.js.map +1 -1
  44. package/dist/sidebar-DqkFRUxQ.d.ts +81 -0
  45. package/dist/{types-CT0rBsFc.d.ts → types-B-eGPoFD.d.ts} +3 -2
  46. package/dist/{types-B4QS3h5p.d.ts → types-cmBL8zOc.d.ts} +4 -1
  47. package/package.json +3 -3
  48. package/dist/chunk-6QM5BA7B.js.map +0 -1
  49. package/dist/chunk-6X4TKSF6.js.map +0 -1
  50. package/dist/chunk-DSD7MVLL.js.map +0 -1
  51. package/dist/chunk-JAHTUAQL.js.map +0 -1
  52. package/dist/chunk-LKSM3WLK.js.map +0 -1
  53. package/dist/chunk-MNGNBEYN.js.map +0 -1
  54. package/dist/chunk-SA5LM2GD.js.map +0 -1
  55. package/dist/chunk-UUEWFCKT.js.map +0 -1
  56. package/dist/chunk-UUTXPPRN.js.map +0 -1
  57. package/dist/input-4uxAHW6y.d.ts +0 -5
  58. package/dist/sidebar-BhOIlSjt.d.ts +0 -80
package/dist/index.js CHANGED
@@ -1,21 +1,21 @@
1
- import { Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, Select, SelectTrigger, SelectContent, SelectItem, Calendar, FieldContext, FieldError, useField, ConfirmDialog } from './chunk-UUTXPPRN.js';
2
- export { Alert, AlertDescription, AlertTitle, Calendar, CalendarDayButton, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, FieldError, FloatingSheet, FloatingSheetBody, FloatingSheetFooter, FloatingSheetStack, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, confirmDialogDefaultLabels, floatingSheetDefaultLabels, useField } from './chunk-UUTXPPRN.js';
3
- export { CopyButton, copyButtonLabels } from './chunk-JAHTUAQL.js';
4
- import { toggleVariants } from './chunk-LKSM3WLK.js';
5
- export { Toggle, toggleVariants } from './chunk-LKSM3WLK.js';
6
- import { Label } from './chunk-6QM5BA7B.js';
7
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Label } from './chunk-6QM5BA7B.js';
1
+ import { Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, Select, SelectTrigger, SelectContent, SelectItem, Calendar, FieldContext, FieldError, useField, ConfirmDialog } from './chunk-CFDDAFPJ.js';
2
+ export { Alert, AlertDescription, AlertTitle, Calendar, CalendarDayButton, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, FieldError, FloatingSheet, FloatingSheetBody, FloatingSheetFooter, FloatingSheetStack, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, confirmDialogDefaultLabels, floatingSheetDefaultLabels, useField } from './chunk-CFDDAFPJ.js';
3
+ export { CopyButton, copyButtonLabels } from './chunk-2WIIRDHT.js';
4
+ import { toggleVariants } from './chunk-FWQFB37J.js';
5
+ export { Toggle, toggleVariants } from './chunk-FWQFB37J.js';
6
+ import { Label } from './chunk-T2INZOCM.js';
7
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Label } from './chunk-T2INZOCM.js';
8
8
  import { useAppearance } from './chunk-IQMRJXEO.js';
9
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cardVariants } from './chunk-SA5LM2GD.js';
9
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cardVariants } from './chunk-RPCL7VFQ.js';
10
10
  import { useUiLabels } from './chunk-5AJFQ6C4.js';
11
11
  export { UiLocaleProvider, useUiLabels, useUiLocale } from './chunk-5AJFQ6C4.js';
12
- import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuItem } from './chunk-MNGNBEYN.js';
13
- export { Avatar, AvatarFallback, AvatarImage, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Collapsible, CollapsibleContent, CollapsibleTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Icon, 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, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, useSidebar } from './chunk-MNGNBEYN.js';
14
- export { Separator } from './chunk-UUEWFCKT.js';
15
- import { Input } from './chunk-6X4TKSF6.js';
16
- export { Input } from './chunk-6X4TKSF6.js';
17
- import { cn, focusRing, nestedRadius, nestedSurfaceReset, nestedEdgeToEdge, elevatedSurface, modalSurface, Button, menuSurface, fieldSurface, floatingSurface, panelSurface, buttonVariants, Spinner } from './chunk-DSD7MVLL.js';
18
- export { Button, Spinner, buttonVariants, cn, controlFill, elevatedSurface, focusRing, menuHighlight, nestedEdgeToEdge, nestedRadius, nestedSurfaceReset, recessedSurface, spinnerVariants, surface } from './chunk-DSD7MVLL.js';
12
+ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuItem } from './chunk-QHZWW55M.js';
13
+ export { Avatar, AvatarFallback, AvatarImage, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Collapsible, CollapsibleContent, CollapsibleTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Icon, 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, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, useSidebar } from './chunk-QHZWW55M.js';
14
+ export { Separator } from './chunk-TGF54WAO.js';
15
+ import { Input } from './chunk-XZCC6MTE.js';
16
+ export { Input } from './chunk-XZCC6MTE.js';
17
+ import { cn, focusRing, nestedRadius, nestedSurfaceReset, nestedEdgeToEdge, elevatedSurface, modalSurface, Button, menuSurface, quietFocus, fieldSurface, floatingSurface, panelSurface, buttonVariants, Spinner } from './chunk-ODYCBCKS.js';
18
+ export { Button, Spinner, buttonVariants, cn, controlFill, elevatedSurface, focusRing, menuHighlight, nestedEdgeToEdge, nestedRadius, nestedSurfaceReset, recessedSurface, spinnerVariants, surface } from './chunk-ODYCBCKS.js';
19
19
  import * as React3 from 'react';
20
20
  import { useState, useRef, useCallback, useEffect, useMemo, useId } from 'react';
21
21
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -160,37 +160,38 @@ function useConfirmDialog() {
160
160
  }
161
161
  function Accordion({
162
162
  className,
163
+ slotName = "accordion",
163
164
  ...props
164
165
  }) {
165
166
  return /* @__PURE__ */ jsx(
166
167
  AccordionPrimitive.Root,
167
168
  {
168
- "data-slot": "accordion",
169
169
  className: cn(elevatedSurface, "px-5 bg-card", className),
170
- ...props
170
+ ...props,
171
+ "data-slot": slotName
171
172
  }
172
173
  );
173
174
  }
174
- var AccordionItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
175
+ var AccordionItem = React3.forwardRef(({ className, slotName = "accordion-item", ...props }, ref) => /* @__PURE__ */ jsx(
175
176
  AccordionPrimitive.Item,
176
177
  {
177
- "data-slot": "accordion-item",
178
178
  ref,
179
179
  className: cn("border-b border-border last:border-b-0", className),
180
- ...props
180
+ ...props,
181
+ "data-slot": slotName
181
182
  }
182
183
  ));
183
184
  AccordionItem.displayName = "AccordionItem";
184
- var AccordionTrigger = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
185
+ var AccordionTrigger = React3.forwardRef(({ className, children, slotName = "accordion-trigger", ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
185
186
  AccordionPrimitive.Trigger,
186
187
  {
187
- "data-slot": "accordion-trigger",
188
188
  ref,
189
189
  className: cn(
190
190
  `text-base py-4 font-medium rounded-xl data-[state=open]:font-semibold flex flex-1 items-center justify-between transition-all [&[data-state=open]>svg]:rotate-180 ${focusRing}`,
191
191
  className
192
192
  ),
193
193
  ...props,
194
+ "data-slot": slotName,
194
195
  children: [
195
196
  children,
196
197
  /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
@@ -198,63 +199,56 @@ var AccordionTrigger = React3.forwardRef(({ className, children, ...props }, ref
198
199
  }
199
200
  ) }));
200
201
  AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
201
- var AccordionContent = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
202
+ var AccordionContent = React3.forwardRef(({ className, children, slotName = "accordion-content", ...props }, ref) => /* @__PURE__ */ jsx(
202
203
  AccordionPrimitive.Content,
203
204
  {
204
- "data-slot": "accordion-content",
205
205
  ref,
206
206
  className: "text-md data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden transition-all",
207
207
  ...props,
208
+ "data-slot": slotName,
208
209
  children: /* @__PURE__ */ jsx("div", { className: cn("pb-4 pt-0", className), children })
209
210
  }
210
211
  ));
211
212
  AccordionContent.displayName = AccordionPrimitive.Content.displayName;
212
213
  function AlertDialog({
214
+ slotName = "alert-dialog",
213
215
  ...props
214
216
  }) {
215
- return /* @__PURE__ */ jsx(AlertDialog$1.Root, { "data-slot": "alert-dialog", ...props });
217
+ return /* @__PURE__ */ jsx(AlertDialog$1.Root, { ...props, "data-slot": slotName });
216
218
  }
217
219
  function AlertDialogTrigger({
220
+ slotName = "alert-dialog-trigger",
218
221
  ...props
219
222
  }) {
220
- return /* @__PURE__ */ jsx(
221
- AlertDialog$1.Trigger,
222
- {
223
- "data-slot": "alert-dialog-trigger",
224
- ...props
225
- }
226
- );
223
+ return /* @__PURE__ */ jsx(AlertDialog$1.Trigger, { ...props, "data-slot": slotName });
227
224
  }
228
225
  function AlertDialogPortal({
226
+ slotName = "alert-dialog-portal",
229
227
  ...props
230
228
  }) {
231
- return /* @__PURE__ */ jsx(
232
- AlertDialog$1.Portal,
233
- {
234
- "data-slot": "alert-dialog-portal",
235
- ...props
236
- }
237
- );
229
+ return /* @__PURE__ */ jsx(AlertDialog$1.Portal, { ...props, "data-slot": slotName });
238
230
  }
239
231
  function AlertDialogOverlay({
240
232
  className,
233
+ slotName = "alert-dialog-overlay",
241
234
  ...props
242
235
  }) {
243
236
  return /* @__PURE__ */ jsx(
244
237
  AlertDialog$1.Overlay,
245
238
  {
246
- "data-slot": "alert-dialog-overlay",
247
239
  className: cn(
248
240
  "inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50",
249
241
  className
250
242
  ),
251
- ...props
243
+ ...props,
244
+ "data-slot": slotName
252
245
  }
253
246
  );
254
247
  }
255
248
  function AlertDialogContent({
256
249
  className,
257
250
  size = "default",
251
+ slotName = "alert-dialog-content",
258
252
  ...props
259
253
  }) {
260
254
  return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
@@ -262,91 +256,96 @@ function AlertDialogContent({
262
256
  /* @__PURE__ */ jsx(
263
257
  AlertDialog$1.Content,
264
258
  {
265
- "data-slot": "alert-dialog-content",
266
259
  "data-size": size,
267
260
  className: cn(
268
261
  `${modalSurface} group/alert-dialog-content gap-4 p-6 md:p-8 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] duration-200`,
269
262
  className
270
263
  ),
271
- ...props
264
+ ...props,
265
+ "data-slot": slotName
272
266
  }
273
267
  )
274
268
  ] });
275
269
  }
276
270
  function AlertDialogHeader({
277
271
  className,
272
+ slotName = "alert-dialog-header",
278
273
  ...props
279
274
  }) {
280
275
  return /* @__PURE__ */ jsx(
281
276
  "div",
282
277
  {
283
- "data-slot": "alert-dialog-header",
284
278
  className: cn(
285
279
  "gap-1.5 has-data-[slot=alert-dialog-media]:gap-x-6 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] grid grid-rows-[auto_1fr] place-items-center text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr]",
286
280
  className
287
281
  ),
288
- ...props
282
+ ...props,
283
+ "data-slot": slotName
289
284
  }
290
285
  );
291
286
  }
292
287
  function AlertDialogFooter({
293
288
  className,
289
+ slotName = "alert-dialog-footer",
294
290
  ...props
295
291
  }) {
296
292
  return /* @__PURE__ */ jsx(
297
293
  "div",
298
294
  {
299
- "data-slot": "alert-dialog-footer",
300
295
  className: cn(
301
296
  "gap-2 sm:flex-row sm:justify-end flex flex-col-reverse group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2",
302
297
  className
303
298
  ),
304
- ...props
299
+ ...props,
300
+ "data-slot": slotName
305
301
  }
306
302
  );
307
303
  }
308
304
  function AlertDialogTitle({
309
305
  className,
306
+ slotName = "alert-dialog-title",
310
307
  ...props
311
308
  }) {
312
309
  return /* @__PURE__ */ jsx(
313
310
  AlertDialog$1.Title,
314
311
  {
315
- "data-slot": "alert-dialog-title",
316
312
  className: cn(
317
313
  "text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
318
314
  className
319
315
  ),
320
- ...props
316
+ ...props,
317
+ "data-slot": slotName
321
318
  }
322
319
  );
323
320
  }
324
321
  function AlertDialogDescription({
325
322
  className,
323
+ slotName = "alert-dialog-description",
326
324
  ...props
327
325
  }) {
328
326
  return /* @__PURE__ */ jsx(
329
327
  AlertDialog$1.Description,
330
328
  {
331
- "data-slot": "alert-dialog-description",
332
329
  className: cn("text-sm text-muted-foreground", className),
333
- ...props
330
+ ...props,
331
+ "data-slot": slotName
334
332
  }
335
333
  );
336
334
  }
337
335
  function AlertDialogMedia({
338
336
  className,
337
+ slotName = "alert-dialog-media",
339
338
  ...props
340
339
  }) {
341
340
  return /* @__PURE__ */ jsx(
342
341
  "div",
343
342
  {
344
- "data-slot": "alert-dialog-media",
345
343
  className: cn(
346
344
  "mb-2 size-16 sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8 rounded-2xl inline-flex items-center justify-center bg-muted",
347
345
  className
348
346
  ),
349
- ...props
347
+ ...props,
348
+ "data-slot": slotName
350
349
  }
351
350
  );
352
351
  }
@@ -354,14 +353,15 @@ function AlertDialogAction({
354
353
  className,
355
354
  variant = "default",
356
355
  size = "default",
356
+ slotName = "alert-dialog-action",
357
357
  ...props
358
358
  }) {
359
359
  return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
360
360
  AlertDialog$1.Action,
361
361
  {
362
- "data-slot": "alert-dialog-action",
363
362
  className: cn(className),
364
- ...props
363
+ ...props,
364
+ "data-slot": slotName
365
365
  }
366
366
  ) });
367
367
  }
@@ -369,14 +369,15 @@ function AlertDialogCancel({
369
369
  className,
370
370
  variant = "outline",
371
371
  size = "default",
372
+ slotName = "alert-dialog-cancel",
372
373
  ...props
373
374
  }) {
374
375
  return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
375
376
  AlertDialog$1.Cancel,
376
377
  {
377
- "data-slot": "alert-dialog-cancel",
378
378
  className: cn(className),
379
- ...props
379
+ ...props,
380
+ "data-slot": slotName
380
381
  }
381
382
  ) });
382
383
  }
@@ -389,12 +390,12 @@ function ToggleGroup({
389
390
  variant,
390
391
  size,
391
392
  children,
393
+ slotName = "toggle-group",
392
394
  ...props
393
395
  }) {
394
396
  return /* @__PURE__ */ jsx(
395
397
  ToggleGroupPrimitive.Root,
396
398
  {
397
- "data-slot": "toggle-group",
398
399
  "data-variant": variant,
399
400
  "data-size": size,
400
401
  className: cn(
@@ -402,6 +403,7 @@ function ToggleGroup({
402
403
  className
403
404
  ),
404
405
  ...props,
406
+ "data-slot": slotName,
405
407
  children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size }, children })
406
408
  }
407
409
  );
@@ -411,13 +413,13 @@ function ToggleGroupItem({
411
413
  children,
412
414
  variant,
413
415
  size,
416
+ slotName = "toggle-group-item",
414
417
  ...props
415
418
  }) {
416
419
  const context = React3.useContext(ToggleGroupContext);
417
420
  return /* @__PURE__ */ jsx(
418
421
  ToggleGroupPrimitive.Item,
419
422
  {
420
- "data-slot": "toggle-group-item",
421
423
  "data-variant": context.variant || variant,
422
424
  "data-size": context.size || size,
423
425
  className: cn(
@@ -429,6 +431,7 @@ function ToggleGroupItem({
429
431
  className
430
432
  ),
431
433
  ...props,
434
+ "data-slot": slotName,
432
435
  children
433
436
  }
434
437
  );
@@ -452,6 +455,7 @@ function AppearanceToggle({
452
455
  className,
453
456
  variant = "segmented",
454
457
  labels: labelOverrides,
458
+ slotName = "appearance-toggle",
455
459
  ...props
456
460
  }) {
457
461
  const labels = useUiLabels(
@@ -466,15 +470,15 @@ function AppearanceToggle({
466
470
  return /* @__PURE__ */ jsx(
467
471
  "div",
468
472
  {
469
- "data-slot": "appearance-toggle",
470
473
  "data-variant": "menu",
471
474
  className: cn("inline-flex", className),
472
475
  ...props,
476
+ "data-slot": slotName,
473
477
  children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [
474
478
  /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
475
479
  Button,
476
480
  {
477
- "data-slot": "appearance-toggle-trigger",
481
+ slotName: "appearance-toggle-trigger",
478
482
  variant: "ghost",
479
483
  size: "icon-sm",
480
484
  "aria-label": labels.groupLabel,
@@ -489,7 +493,7 @@ function AppearanceToggle({
489
493
  children: OPTIONS.map((option) => /* @__PURE__ */ jsxs(
490
494
  DropdownMenuRadioItem,
491
495
  {
492
- "data-slot": "appearance-toggle-item",
496
+ slotName: "appearance-toggle-item",
493
497
  value: option.value,
494
498
  children: [
495
499
  /* @__PURE__ */ jsx(option.icon, { "aria-hidden": "true" }),
@@ -507,10 +511,10 @@ function AppearanceToggle({
507
511
  return /* @__PURE__ */ jsx(
508
512
  "div",
509
513
  {
510
- "data-slot": "appearance-toggle",
511
514
  "data-variant": "segmented",
512
515
  className: cn("inline-flex", className),
513
516
  ...props,
517
+ "data-slot": slotName,
514
518
  children: /* @__PURE__ */ jsx(
515
519
  ToggleGroup,
516
520
  {
@@ -526,7 +530,7 @@ function AppearanceToggle({
526
530
  children: OPTIONS.map((option) => /* @__PURE__ */ jsxs(
527
531
  ToggleGroupItem,
528
532
  {
529
- "data-slot": "appearance-toggle-item",
533
+ slotName: "appearance-toggle-item",
530
534
  value: option.value,
531
535
  "aria-label": option.label(labels),
532
536
  children: [
@@ -542,9 +546,10 @@ function AppearanceToggle({
542
546
  );
543
547
  }
544
548
  function AspectRatio({
549
+ slotName = "aspect-ratio",
545
550
  ...props
546
551
  }) {
547
- return /* @__PURE__ */ jsx(AspectRatio$1.Root, { "data-slot": "aspect-ratio", ...props });
552
+ return /* @__PURE__ */ jsx(AspectRatio$1.Root, { ...props, "data-slot": slotName });
548
553
  }
549
554
  var badgeVariants = cva(
550
555
  "inline-flex items-center justify-center rounded-full border px-2.5 py-1 text-xs font-semibold w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
@@ -566,15 +571,16 @@ function Badge({
566
571
  className,
567
572
  variant,
568
573
  asChild = false,
574
+ slotName = "badge",
569
575
  ...props
570
576
  }) {
571
577
  const Comp = asChild ? Slot : "span";
572
578
  return /* @__PURE__ */ jsx(
573
579
  Comp,
574
580
  {
575
- "data-slot": "badge",
576
581
  className: cn(badgeVariants({ variant }), className),
577
- ...props
582
+ ...props,
583
+ "data-slot": slotName
578
584
  }
579
585
  );
580
586
  }
@@ -593,6 +599,7 @@ function Carousel({
593
599
  plugins,
594
600
  className,
595
601
  children,
602
+ slotName = "carousel",
596
603
  ...props
597
604
  }) {
598
605
  const [carouselRef, api] = useEmblaCarousel(
@@ -667,22 +674,26 @@ function Carousel({
667
674
  ),
668
675
  role: "region",
669
676
  "aria-roledescription": "carousel",
670
- "data-slot": "carousel",
671
677
  ...props,
678
+ "data-slot": slotName,
672
679
  children
673
680
  }
674
681
  )
675
682
  }
676
683
  );
677
684
  }
678
- function CarouselContent({ className, ...props }) {
685
+ function CarouselContent({
686
+ className,
687
+ slotName = "carousel-content",
688
+ ...props
689
+ }) {
679
690
  const { carouselRef, orientation } = useCarousel();
680
691
  return /* @__PURE__ */ jsx(
681
692
  "div",
682
693
  {
683
694
  ref: carouselRef,
684
695
  className: cn(nestedRadius, "overflow-hidden"),
685
- "data-slot": "carousel-content",
696
+ "data-slot": slotName,
686
697
  children: /* @__PURE__ */ jsx(
687
698
  "div",
688
699
  {
@@ -697,20 +708,24 @@ function CarouselContent({ className, ...props }) {
697
708
  }
698
709
  );
699
710
  }
700
- function CarouselItem({ className, ...props }) {
711
+ function CarouselItem({
712
+ className,
713
+ slotName = "carousel-item",
714
+ ...props
715
+ }) {
701
716
  const { orientation } = useCarousel();
702
717
  return /* @__PURE__ */ jsx(
703
718
  "div",
704
719
  {
705
720
  role: "group",
706
721
  "aria-roledescription": "slide",
707
- "data-slot": "carousel-item",
708
722
  className: cn(
709
723
  "min-w-0 shrink-0 grow-0 basis-full",
710
724
  orientation === "horizontal" ? "pl-4" : "pt-4",
711
725
  className
712
726
  ),
713
- ...props
727
+ ...props,
728
+ "data-slot": slotName
714
729
  }
715
730
  );
716
731
  }
@@ -718,13 +733,13 @@ function CarouselPrevious({
718
733
  className,
719
734
  variant = "outline",
720
735
  size = "icon",
736
+ slotName = "carousel-previous",
721
737
  ...props
722
738
  }) {
723
739
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
724
740
  return /* @__PURE__ */ jsxs(
725
741
  Button,
726
742
  {
727
- "data-slot": "carousel-previous",
728
743
  variant,
729
744
  size,
730
745
  className: cn(
@@ -735,6 +750,7 @@ function CarouselPrevious({
735
750
  disabled: !canScrollPrev,
736
751
  onClick: scrollPrev,
737
752
  ...props,
753
+ slotName,
738
754
  children: [
739
755
  /* @__PURE__ */ jsx(ArrowLeft, {}),
740
756
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Previous slide" })
@@ -746,13 +762,13 @@ function CarouselNext({
746
762
  className,
747
763
  variant = "outline",
748
764
  size = "icon",
765
+ slotName = "carousel-next",
749
766
  ...props
750
767
  }) {
751
768
  const { orientation, scrollNext, canScrollNext } = useCarousel();
752
769
  return /* @__PURE__ */ jsxs(
753
770
  Button,
754
771
  {
755
- "data-slot": "carousel-next",
756
772
  variant,
757
773
  size,
758
774
  className: cn(
@@ -763,6 +779,7 @@ function CarouselNext({
763
779
  disabled: !canScrollNext,
764
780
  onClick: scrollNext,
765
781
  ...props,
782
+ slotName,
766
783
  children: [
767
784
  /* @__PURE__ */ jsx(ArrowRight, {}),
768
785
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Next slide" })
@@ -786,6 +803,7 @@ function ChartContainer({
786
803
  children,
787
804
  config,
788
805
  initialDimension = INITIAL_DIMENSION,
806
+ slotName = "chart",
789
807
  ...props
790
808
  }) {
791
809
  const uniqueId = React3.useId();
@@ -793,7 +811,6 @@ function ChartContainer({
793
811
  return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
794
812
  "div",
795
813
  {
796
- "data-slot": "chart",
797
814
  "data-chart": chartId,
798
815
  className: cn(
799
816
  elevatedSurface,
@@ -803,6 +820,7 @@ function ChartContainer({
803
820
  className
804
821
  ),
805
822
  ...props,
823
+ "data-slot": slotName,
806
824
  children: [
807
825
  /* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
808
826
  /* @__PURE__ */ jsx(
@@ -1029,17 +1047,18 @@ function getPayloadConfigFromPayload(config, payload, key) {
1029
1047
  }
1030
1048
  function Checkbox({
1031
1049
  className,
1050
+ slotName = "checkbox",
1032
1051
  ...props
1033
1052
  }) {
1034
1053
  return /* @__PURE__ */ jsx(
1035
1054
  CheckboxPrimitive.Root,
1036
1055
  {
1037
- "data-slot": "checkbox",
1038
1056
  className: cn(
1039
1057
  `peer size-5 shadow-xs shrink-0 rounded-md border border-border transition-all disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground ${focusRing}`,
1040
1058
  className
1041
1059
  ),
1042
1060
  ...props,
1061
+ "data-slot": slotName,
1043
1062
  children: /* @__PURE__ */ jsx(
1044
1063
  CheckboxPrimitive.Indicator,
1045
1064
  {
@@ -1057,7 +1076,6 @@ var comboboxDefaultLabels = {
1057
1076
  emptyText: "No results."
1058
1077
  };
1059
1078
  function Combobox({
1060
- id,
1061
1079
  value,
1062
1080
  options,
1063
1081
  onChange,
@@ -1065,7 +1083,12 @@ function Combobox({
1065
1083
  searchPlaceholder,
1066
1084
  emptyText,
1067
1085
  disabled = false,
1068
- invalid = false
1086
+ invalid = false,
1087
+ required,
1088
+ className,
1089
+ "aria-invalid": ariaInvalid,
1090
+ slotName = "combobox",
1091
+ ...trigger
1069
1092
  }) {
1070
1093
  const labels = useUiLabels("combobox", comboboxDefaultLabels, {
1071
1094
  placeholder,
@@ -1078,17 +1101,20 @@ function Combobox({
1078
1101
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
1079
1102
  Button,
1080
1103
  {
1081
- "data-slot": "combobox",
1082
- id,
1083
1104
  variant: "outline",
1105
+ ...trigger,
1084
1106
  role: "combobox",
1085
1107
  "aria-expanded": open,
1108
+ "aria-required": required || void 0,
1109
+ "aria-invalid": ariaInvalid ?? (invalid || void 0),
1086
1110
  disabled,
1087
1111
  className: cn(
1088
1112
  "h-11 rounded-2xl w-full justify-between border-border bg-muted/40 hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50",
1089
1113
  !selected && "text-muted-foreground",
1090
- invalid && "border-destructive ring-destructive"
1114
+ invalid && "border-destructive ring-destructive",
1115
+ className
1091
1116
  ),
1117
+ slotName,
1092
1118
  children: [
1093
1119
  selected ? selected.label : labels.placeholder,
1094
1120
  /* @__PURE__ */ jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
@@ -1141,69 +1167,58 @@ function Combobox({
1141
1167
  ] });
1142
1168
  }
1143
1169
  function ContextMenu({
1170
+ slotName = "context-menu",
1144
1171
  ...props
1145
1172
  }) {
1146
- return /* @__PURE__ */ jsx(ContextMenu$1.Root, { "data-slot": "context-menu", ...props });
1173
+ return /* @__PURE__ */ jsx(ContextMenu$1.Root, { ...props, "data-slot": slotName });
1147
1174
  }
1148
1175
  function ContextMenuTrigger({
1176
+ slotName = "context-menu-trigger",
1149
1177
  ...props
1150
1178
  }) {
1151
- return /* @__PURE__ */ jsx(
1152
- ContextMenu$1.Trigger,
1153
- {
1154
- "data-slot": "context-menu-trigger",
1155
- ...props
1156
- }
1157
- );
1179
+ return /* @__PURE__ */ jsx(ContextMenu$1.Trigger, { ...props, "data-slot": slotName });
1158
1180
  }
1159
1181
  function ContextMenuGroup({
1182
+ slotName = "context-menu-group",
1160
1183
  ...props
1161
1184
  }) {
1162
- return /* @__PURE__ */ jsx(ContextMenu$1.Group, { "data-slot": "context-menu-group", ...props });
1185
+ return /* @__PURE__ */ jsx(ContextMenu$1.Group, { ...props, "data-slot": slotName });
1163
1186
  }
1164
1187
  function ContextMenuPortal({
1188
+ slotName = "context-menu-portal",
1165
1189
  ...props
1166
1190
  }) {
1167
- return /* @__PURE__ */ jsx(
1168
- ContextMenu$1.Portal,
1169
- {
1170
- "data-slot": "context-menu-portal",
1171
- ...props
1172
- }
1173
- );
1191
+ return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { ...props, "data-slot": slotName });
1174
1192
  }
1175
1193
  function ContextMenuSub({
1194
+ slotName = "context-menu-sub",
1176
1195
  ...props
1177
1196
  }) {
1178
- return /* @__PURE__ */ jsx(ContextMenu$1.Sub, { "data-slot": "context-menu-sub", ...props });
1197
+ return /* @__PURE__ */ jsx(ContextMenu$1.Sub, { ...props, "data-slot": slotName });
1179
1198
  }
1180
1199
  function ContextMenuRadioGroup({
1200
+ slotName = "context-menu-radio-group",
1181
1201
  ...props
1182
1202
  }) {
1183
- return /* @__PURE__ */ jsx(
1184
- ContextMenu$1.RadioGroup,
1185
- {
1186
- "data-slot": "context-menu-radio-group",
1187
- ...props
1188
- }
1189
- );
1203
+ return /* @__PURE__ */ jsx(ContextMenu$1.RadioGroup, { ...props, "data-slot": slotName });
1190
1204
  }
1191
1205
  function ContextMenuSubTrigger({
1192
1206
  className,
1193
1207
  inset,
1194
1208
  children,
1209
+ slotName = "context-menu-sub-trigger",
1195
1210
  ...props
1196
1211
  }) {
1197
1212
  return /* @__PURE__ */ jsxs(
1198
1213
  ContextMenu$1.SubTrigger,
1199
1214
  {
1200
- "data-slot": "context-menu-sub-trigger",
1201
1215
  "data-inset": inset,
1202
1216
  className: cn(
1203
1217
  "px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground",
1204
1218
  className
1205
1219
  ),
1206
1220
  ...props,
1221
+ "data-slot": slotName,
1207
1222
  children: [
1208
1223
  children,
1209
1224
  /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })
@@ -1213,33 +1228,35 @@ function ContextMenuSubTrigger({
1213
1228
  }
1214
1229
  function ContextMenuSubContent({
1215
1230
  className,
1231
+ slotName = "context-menu-sub-content",
1216
1232
  ...props
1217
1233
  }) {
1218
1234
  return /* @__PURE__ */ jsx(
1219
1235
  ContextMenu$1.SubContent,
1220
1236
  {
1221
- "data-slot": "context-menu-sub-content",
1222
1237
  className: cn(
1223
1238
  `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden`,
1224
1239
  className
1225
1240
  ),
1226
- ...props
1241
+ ...props,
1242
+ "data-slot": slotName
1227
1243
  }
1228
1244
  );
1229
1245
  }
1230
1246
  function ContextMenuContent({
1231
1247
  className,
1248
+ slotName = "context-menu-content",
1232
1249
  ...props
1233
1250
  }) {
1234
1251
  return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { children: /* @__PURE__ */ jsx(
1235
1252
  ContextMenu$1.Content,
1236
1253
  {
1237
- "data-slot": "context-menu-content",
1238
1254
  className: cn(
1239
1255
  `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto`,
1240
1256
  className
1241
1257
  ),
1242
- ...props
1258
+ ...props,
1259
+ "data-slot": slotName
1243
1260
  }
1244
1261
  ) });
1245
1262
  }
@@ -1247,19 +1264,20 @@ function ContextMenuItem({
1247
1264
  className,
1248
1265
  inset,
1249
1266
  variant = "default",
1267
+ slotName = "context-menu-item",
1250
1268
  ...props
1251
1269
  }) {
1252
1270
  return /* @__PURE__ */ jsx(
1253
1271
  ContextMenu$1.Item,
1254
1272
  {
1255
- "data-slot": "context-menu-item",
1256
1273
  "data-inset": inset,
1257
1274
  "data-variant": variant,
1258
1275
  className: cn(
1259
1276
  "gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!",
1260
1277
  className
1261
1278
  ),
1262
- ...props
1279
+ ...props,
1280
+ "data-slot": slotName
1263
1281
  }
1264
1282
  );
1265
1283
  }
@@ -1267,18 +1285,19 @@ function ContextMenuCheckboxItem({
1267
1285
  className,
1268
1286
  children,
1269
1287
  checked,
1288
+ slotName = "context-menu-checkbox-item",
1270
1289
  ...props
1271
1290
  }) {
1272
1291
  return /* @__PURE__ */ jsxs(
1273
1292
  ContextMenu$1.CheckboxItem,
1274
1293
  {
1275
- "data-slot": "context-menu-checkbox-item",
1276
1294
  className: cn(
1277
1295
  "gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1278
1296
  className
1279
1297
  ),
1280
1298
  checked,
1281
1299
  ...props,
1300
+ "data-slot": slotName,
1282
1301
  children: [
1283
1302
  /* @__PURE__ */ jsx("span", { className: "left-2 size-3.5 pointer-events-none absolute flex items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
1284
1303
  children
@@ -1289,17 +1308,18 @@ function ContextMenuCheckboxItem({
1289
1308
  function ContextMenuRadioItem({
1290
1309
  className,
1291
1310
  children,
1311
+ slotName = "context-menu-radio-item",
1292
1312
  ...props
1293
1313
  }) {
1294
1314
  return /* @__PURE__ */ jsxs(
1295
1315
  ContextMenu$1.RadioItem,
1296
1316
  {
1297
- "data-slot": "context-menu-radio-item",
1298
1317
  className: cn(
1299
1318
  "gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1300
1319
  className
1301
1320
  ),
1302
1321
  ...props,
1322
+ "data-slot": slotName,
1303
1323
  children: [
1304
1324
  /* @__PURE__ */ jsx("span", { className: "left-2 size-3.5 pointer-events-none absolute flex items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
1305
1325
  children
@@ -1310,47 +1330,50 @@ function ContextMenuRadioItem({
1310
1330
  function ContextMenuLabel({
1311
1331
  className,
1312
1332
  inset,
1333
+ slotName = "context-menu-label",
1313
1334
  ...props
1314
1335
  }) {
1315
1336
  return /* @__PURE__ */ jsx(
1316
1337
  ContextMenu$1.Label,
1317
1338
  {
1318
- "data-slot": "context-menu-label",
1319
1339
  "data-inset": inset,
1320
1340
  className: cn(
1321
1341
  "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8 text-foreground",
1322
1342
  className
1323
1343
  ),
1324
- ...props
1344
+ ...props,
1345
+ "data-slot": slotName
1325
1346
  }
1326
1347
  );
1327
1348
  }
1328
1349
  function ContextMenuSeparator({
1329
1350
  className,
1351
+ slotName = "context-menu-separator",
1330
1352
  ...props
1331
1353
  }) {
1332
1354
  return /* @__PURE__ */ jsx(
1333
1355
  ContextMenu$1.Separator,
1334
1356
  {
1335
- "data-slot": "context-menu-separator",
1336
1357
  className: cn("-mx-1 my-1 h-px bg-border", className),
1337
- ...props
1358
+ ...props,
1359
+ "data-slot": slotName
1338
1360
  }
1339
1361
  );
1340
1362
  }
1341
1363
  function ContextMenuShortcut({
1342
1364
  className,
1365
+ slotName = "context-menu-shortcut",
1343
1366
  ...props
1344
1367
  }) {
1345
1368
  return /* @__PURE__ */ jsx(
1346
1369
  "span",
1347
1370
  {
1348
- "data-slot": "context-menu-shortcut",
1349
1371
  className: cn(
1350
1372
  "text-xs tracking-widest ml-auto text-muted-foreground",
1351
1373
  className
1352
1374
  ),
1353
- ...props
1375
+ ...props,
1376
+ "data-slot": slotName
1354
1377
  }
1355
1378
  );
1356
1379
  }
@@ -1363,15 +1386,16 @@ function FilterPopover({
1363
1386
  selected,
1364
1387
  onToggle,
1365
1388
  width,
1366
- noOptionsLabel
1389
+ noOptionsLabel,
1390
+ slotName = "data-table-faceted-filter"
1367
1391
  }) {
1368
1392
  return /* @__PURE__ */ jsxs(Popover, { children: [
1369
1393
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
1370
1394
  Button,
1371
1395
  {
1372
1396
  variant: "outline",
1373
- "data-slot": "data-table-faceted-filter",
1374
1397
  className: "h-11 rounded-2xl border-dashed border-border",
1398
+ slotName,
1375
1399
  children: [
1376
1400
  /* @__PURE__ */ jsx(PlusCircle, { className: "mr-2 size-4" }),
1377
1401
  label,
@@ -1481,14 +1505,15 @@ function ServerFacetedFilter({
1481
1505
  }
1482
1506
  function RowActionsMenu({
1483
1507
  row,
1484
- actions
1508
+ actions,
1509
+ slotName = "data-table-row-actions"
1485
1510
  }) {
1486
1511
  return /* @__PURE__ */ jsx(
1487
1512
  "div",
1488
1513
  {
1489
1514
  className: "flex justify-end",
1490
- "data-slot": "data-table-row-actions",
1491
1515
  onClick: (event) => event.stopPropagation(),
1516
+ "data-slot": slotName,
1492
1517
  children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [
1493
1518
  /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
1494
1519
  Button,
@@ -1524,18 +1549,19 @@ function EmptyState({
1524
1549
  description,
1525
1550
  actions,
1526
1551
  compact = false,
1527
- className
1552
+ className,
1553
+ slotName = "empty-state"
1528
1554
  }) {
1529
1555
  return /* @__PURE__ */ jsxs(
1530
1556
  "div",
1531
1557
  {
1532
- "data-slot": "empty-state",
1533
1558
  "data-compact": compact || void 0,
1534
1559
  className: cn(
1535
1560
  "flex h-full w-full flex-col items-center justify-center text-center",
1536
1561
  compact ? "gap-2 px-4 py-6" : "gap-3 px-6 py-12",
1537
1562
  className
1538
1563
  ),
1564
+ "data-slot": slotName,
1539
1565
  children: [
1540
1566
  /* @__PURE__ */ jsx(
1541
1567
  "span",
@@ -1593,16 +1619,16 @@ function EmptyState({
1593
1619
  }
1594
1620
  );
1595
1621
  }
1596
- var Table = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1622
+ var Table = React3.forwardRef(({ className, slotName = "table-container", ...props }, ref) => /* @__PURE__ */ jsx(
1597
1623
  "div",
1598
1624
  {
1599
- "data-slot": "table-container",
1600
1625
  className: cn(
1601
1626
  elevatedSurface,
1602
1627
  nestedSurfaceReset,
1603
1628
  nestedEdgeToEdge,
1604
1629
  "relative w-full overflow-hidden bg-card"
1605
1630
  ),
1631
+ "data-slot": slotName,
1606
1632
  children: /* @__PURE__ */ jsx(
1607
1633
  "div",
1608
1634
  {
@@ -1751,7 +1777,8 @@ function DataTable({
1751
1777
  total,
1752
1778
  onPageChange,
1753
1779
  onCreate,
1754
- createLabel
1780
+ createLabel,
1781
+ slotName = "data-table"
1755
1782
  }) {
1756
1783
  const labels = useUiLabels("dataTable", dataTableDefaultLabels, {
1757
1784
  searchPlaceholder,
@@ -1817,8 +1844,8 @@ function DataTable({
1817
1844
  return /* @__PURE__ */ jsxs(
1818
1845
  "div",
1819
1846
  {
1820
- "data-slot": "data-table",
1821
1847
  className: cn(elevatedSurface, "space-y-4 p-5 bg-card"),
1848
+ "data-slot": slotName,
1822
1849
  children: [
1823
1850
  hasToolbar && /* @__PURE__ */ jsxs("div", { className: "gap-2 flex flex-wrap items-center", children: [
1824
1851
  searchKey !== void 0 && /* @__PURE__ */ jsxs("div", { className: "relative min-w-[200px] flex-1", children: [
@@ -1829,7 +1856,7 @@ function DataTable({
1829
1856
  value: serverSearch ? searchValue ?? "" : globalFilter,
1830
1857
  onChange: (e) => serverSearch ? onSearchChange?.(e.target.value) : setGlobalFilter(e.target.value),
1831
1858
  placeholder: labels.searchPlaceholder,
1832
- className: "h-11 rounded-2xl pl-11 font-medium focus:shadow-lg border-none bg-muted/50 focus:bg-muted"
1859
+ className: `h-11 rounded-2xl pl-11 font-medium border-none bg-muted/50 focus:bg-muted ${quietFocus}`
1833
1860
  }
1834
1861
  )
1835
1862
  ] }),
@@ -2034,18 +2061,19 @@ function CalendarPopover({
2034
2061
  trigger,
2035
2062
  align = "start",
2036
2063
  className,
2037
- children
2064
+ children,
2065
+ slotName = "calendar-popover"
2038
2066
  }) {
2039
2067
  return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange, children: [
2040
2068
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: trigger }),
2041
2069
  /* @__PURE__ */ jsx(
2042
2070
  PopoverContent,
2043
2071
  {
2044
- "data-slot": "calendar-popover",
2045
2072
  className: cn("p-2 w-auto", className),
2046
2073
  align,
2047
2074
  sideOffset: 4,
2048
2075
  collisionPadding: 16,
2076
+ slotName,
2049
2077
  children
2050
2078
  }
2051
2079
  )
@@ -2072,7 +2100,6 @@ function boundaries(minDate, maxDate, disabledDays) {
2072
2100
  }
2073
2101
  function DatePicker(props) {
2074
2102
  const {
2075
- id,
2076
2103
  value,
2077
2104
  defaultValue,
2078
2105
  onChange,
@@ -2082,11 +2109,15 @@ function DatePicker(props) {
2082
2109
  disabled = false,
2083
2110
  clearable = true,
2084
2111
  invalid = false,
2112
+ required,
2085
2113
  formatDate,
2086
2114
  placeholder,
2087
2115
  dateFormat,
2088
2116
  clearLabel,
2089
- className
2117
+ className,
2118
+ "aria-invalid": ariaInvalid,
2119
+ slotName = "date-picker",
2120
+ ...trigger
2090
2121
  } = props;
2091
2122
  const labels = useUiLabels("datePicker", datePickerDefaultLabels, {
2092
2123
  placeholder,
@@ -2105,77 +2136,71 @@ function DatePicker(props) {
2105
2136
  }
2106
2137
  onChange?.(next);
2107
2138
  }
2108
- return /* @__PURE__ */ jsxs(
2109
- "div",
2110
- {
2111
- "data-slot": "date-picker",
2112
- className: cn("relative w-full", className),
2113
- children: [
2114
- /* @__PURE__ */ jsx(
2115
- CalendarPopover,
2139
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative w-full", className), "data-slot": slotName, children: [
2140
+ /* @__PURE__ */ jsx(
2141
+ CalendarPopover,
2142
+ {
2143
+ open,
2144
+ onOpenChange: setOpen,
2145
+ trigger: /* @__PURE__ */ jsxs(
2146
+ "button",
2116
2147
  {
2117
- open,
2118
- onOpenChange: setOpen,
2119
- trigger: /* @__PURE__ */ jsxs(
2120
- "button",
2121
- {
2122
- type: "button",
2123
- id,
2124
- "data-slot": "date-picker-trigger",
2125
- disabled,
2126
- "aria-invalid": invalid || void 0,
2127
- className: cn(triggerClasses, showClear && "pr-11"),
2128
- children: [
2129
- /* @__PURE__ */ jsx(CalendarIcon, { className: "size-4 shrink-0 opacity-60" }),
2130
- /* @__PURE__ */ jsx(
2131
- "span",
2132
- {
2133
- className: cn(
2134
- "truncate",
2135
- !selected && "text-muted-foreground"
2136
- ),
2137
- children: label
2138
- }
2139
- )
2140
- ]
2141
- }
2142
- ),
2143
- children: /* @__PURE__ */ jsx(
2144
- Calendar,
2145
- {
2146
- mode: "single",
2147
- autoFocus: true,
2148
- selected,
2149
- defaultMonth: selected ?? minDate,
2150
- startMonth: minDate,
2151
- endMonth: maxDate,
2152
- disabled: boundaries(minDate, maxDate, disabledDays),
2153
- onSelect: (date) => {
2154
- if (!date) {
2155
- return;
2156
- }
2157
- commit(date);
2158
- setOpen(false);
2159
- },
2160
- className: "rounded-2xl bg-transparent"
2161
- }
2162
- )
2148
+ ...trigger,
2149
+ type: "button",
2150
+ "data-slot": "date-picker-trigger",
2151
+ disabled,
2152
+ "aria-required": required || void 0,
2153
+ "aria-invalid": ariaInvalid ?? (invalid || void 0),
2154
+ className: cn(triggerClasses, showClear && "pr-11"),
2155
+ children: [
2156
+ /* @__PURE__ */ jsx(CalendarIcon, { className: "size-4 shrink-0 opacity-60" }),
2157
+ /* @__PURE__ */ jsx(
2158
+ "span",
2159
+ {
2160
+ className: cn(
2161
+ "truncate",
2162
+ !selected && "text-muted-foreground"
2163
+ ),
2164
+ children: label
2165
+ }
2166
+ )
2167
+ ]
2163
2168
  }
2164
2169
  ),
2165
- showClear && /* @__PURE__ */ jsx(
2166
- "button",
2170
+ children: /* @__PURE__ */ jsx(
2171
+ Calendar,
2167
2172
  {
2168
- type: "button",
2169
- "data-slot": "date-picker-clear",
2170
- "aria-label": labels.clearLabel,
2171
- onClick: () => commit(void 0),
2172
- className: `size-7 rounded-xl right-2 absolute top-1/2 inline-flex -translate-y-1/2 cursor-pointer items-center justify-center text-muted-foreground hover:text-foreground ${focusRing}`,
2173
- children: /* @__PURE__ */ jsx(X, { className: "size-3.5" })
2173
+ mode: "single",
2174
+ autoFocus: true,
2175
+ selected,
2176
+ defaultMonth: selected ?? minDate,
2177
+ startMonth: minDate,
2178
+ endMonth: maxDate,
2179
+ disabled: boundaries(minDate, maxDate, disabledDays),
2180
+ onSelect: (date) => {
2181
+ if (!date) {
2182
+ return;
2183
+ }
2184
+ commit(date);
2185
+ setOpen(false);
2186
+ },
2187
+ className: "rounded-2xl bg-transparent"
2174
2188
  }
2175
2189
  )
2176
- ]
2177
- }
2178
- );
2190
+ }
2191
+ ),
2192
+ showClear && /* @__PURE__ */ jsx(
2193
+ "button",
2194
+ {
2195
+ type: "button",
2196
+ "data-slot": "date-picker-clear",
2197
+ "aria-label": labels.clearLabel,
2198
+ onClick: () => commit(void 0),
2199
+ className: `size-7 rounded-xl right-2 absolute top-1/2 inline-flex -translate-y-1/2 cursor-pointer items-center justify-center text-muted-foreground hover:text-foreground ${focusRing}`,
2200
+ children: /* @__PURE__ */ jsx(X, { className: "size-3.5" })
2201
+ }
2202
+ )
2203
+ ] });
2179
2204
  }
2180
2205
  function parse(value) {
2181
2206
  return value ? /* @__PURE__ */ new Date(`${value}T00:00:00`) : void 0;
@@ -2189,7 +2214,10 @@ function DateRangeFilter({
2189
2214
  to,
2190
2215
  onChange,
2191
2216
  emptyLabel,
2192
- dateFormat
2217
+ dateFormat,
2218
+ className,
2219
+ slotName = "date-range-filter",
2220
+ ...trigger
2193
2221
  }) {
2194
2222
  const labels = useUiLabels(
2195
2223
  "dateRangeFilter",
@@ -2209,8 +2237,12 @@ function DateRangeFilter({
2209
2237
  Button,
2210
2238
  {
2211
2239
  variant: "outline",
2212
- "data-slot": "date-range-filter",
2213
- className: "h-11 rounded-2xl cursor-pointer border-dashed border-border",
2240
+ ...trigger,
2241
+ className: cn(
2242
+ "h-11 rounded-2xl cursor-pointer border-dashed border-border",
2243
+ className
2244
+ ),
2245
+ slotName,
2214
2246
  children: [
2215
2247
  /* @__PURE__ */ jsx(CalendarRange, { className: "mr-2 size-4" }),
2216
2248
  label,
@@ -2248,52 +2280,57 @@ function DateRangeFilter({
2248
2280
  );
2249
2281
  }
2250
2282
  function Drawer({
2283
+ slotName = "drawer",
2251
2284
  ...props
2252
2285
  }) {
2253
- return /* @__PURE__ */ jsx(Drawer$1.Root, { "data-slot": "drawer", ...props });
2286
+ return /* @__PURE__ */ jsx(Drawer$1.Root, { ...props, "data-slot": slotName });
2254
2287
  }
2255
2288
  function DrawerTrigger({
2289
+ slotName = "drawer-trigger",
2256
2290
  ...props
2257
2291
  }) {
2258
- return /* @__PURE__ */ jsx(Drawer$1.Trigger, { "data-slot": "drawer-trigger", ...props });
2292
+ return /* @__PURE__ */ jsx(Drawer$1.Trigger, { ...props, "data-slot": slotName });
2259
2293
  }
2260
2294
  function DrawerPortal({
2295
+ slotName = "drawer-portal",
2261
2296
  ...props
2262
2297
  }) {
2263
- return /* @__PURE__ */ jsx(Drawer$1.Portal, { "data-slot": "drawer-portal", ...props });
2298
+ return /* @__PURE__ */ jsx(Drawer$1.Portal, { ...props, "data-slot": slotName });
2264
2299
  }
2265
2300
  function DrawerClose({
2301
+ slotName = "drawer-close",
2266
2302
  ...props
2267
2303
  }) {
2268
- return /* @__PURE__ */ jsx(Drawer$1.Close, { "data-slot": "drawer-close", ...props });
2304
+ return /* @__PURE__ */ jsx(Drawer$1.Close, { ...props, "data-slot": slotName });
2269
2305
  }
2270
2306
  function DrawerOverlay({
2271
2307
  className,
2308
+ slotName = "drawer-overlay",
2272
2309
  ...props
2273
2310
  }) {
2274
2311
  return /* @__PURE__ */ jsx(
2275
2312
  Drawer$1.Overlay,
2276
2313
  {
2277
- "data-slot": "drawer-overlay",
2278
2314
  className: cn(
2279
2315
  "inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50",
2280
2316
  className
2281
2317
  ),
2282
- ...props
2318
+ ...props,
2319
+ "data-slot": slotName
2283
2320
  }
2284
2321
  );
2285
2322
  }
2286
2323
  function DrawerContent({
2287
2324
  className,
2288
2325
  children,
2326
+ slotName = "drawer-content",
2289
2327
  ...props
2290
2328
  }) {
2291
- return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
2329
+ return /* @__PURE__ */ jsxs(DrawerPortal, { slotName: "drawer-portal", children: [
2292
2330
  /* @__PURE__ */ jsx(DrawerOverlay, {}),
2293
2331
  /* @__PURE__ */ jsxs(
2294
2332
  Drawer$1.Content,
2295
2333
  {
2296
- "data-slot": "drawer-content",
2297
2334
  className: cn(
2298
2335
  `${floatingSurface} group/drawer-content fixed z-50 flex h-auto flex-col border-border`,
2299
2336
  "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:rounded-b-3xl data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:border-b",
@@ -2303,6 +2340,7 @@ function DrawerContent({
2303
2340
  className
2304
2341
  ),
2305
2342
  ...props,
2343
+ "data-slot": slotName,
2306
2344
  children: [
2307
2345
  /* @__PURE__ */ jsx("div", { className: "mt-4 h-2 mx-auto hidden w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
2308
2346
  children
@@ -2311,52 +2349,62 @@ function DrawerContent({
2311
2349
  )
2312
2350
  ] });
2313
2351
  }
2314
- function DrawerHeader({ className, ...props }) {
2352
+ function DrawerHeader({
2353
+ className,
2354
+ slotName = "drawer-header",
2355
+ ...props
2356
+ }) {
2315
2357
  return /* @__PURE__ */ jsx(
2316
2358
  "div",
2317
2359
  {
2318
- "data-slot": "drawer-header",
2319
2360
  className: cn(
2320
2361
  "gap-0.5 p-4 md:gap-1.5 md:text-left flex flex-col group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center",
2321
2362
  className
2322
2363
  ),
2323
- ...props
2364
+ ...props,
2365
+ "data-slot": slotName
2324
2366
  }
2325
2367
  );
2326
2368
  }
2327
- function DrawerFooter({ className, ...props }) {
2369
+ function DrawerFooter({
2370
+ className,
2371
+ slotName = "drawer-footer",
2372
+ ...props
2373
+ }) {
2328
2374
  return /* @__PURE__ */ jsx(
2329
2375
  "div",
2330
2376
  {
2331
- "data-slot": "drawer-footer",
2332
2377
  className: cn("gap-2 p-4 mt-auto flex flex-col", className),
2333
- ...props
2378
+ ...props,
2379
+ "data-slot": slotName
2334
2380
  }
2335
2381
  );
2336
2382
  }
2337
2383
  function DrawerTitle({
2338
2384
  className,
2385
+ slotName = "drawer-title",
2339
2386
  ...props
2340
2387
  }) {
2341
2388
  return /* @__PURE__ */ jsx(
2342
2389
  Drawer$1.Title,
2343
2390
  {
2344
- "data-slot": "drawer-title",
2345
2391
  className: cn("font-semibold text-foreground", className),
2346
- ...props
2392
+ ...props,
2393
+ "data-slot": slotName
2347
2394
  }
2348
2395
  );
2349
2396
  }
2350
2397
  function DrawerDescription({
2351
2398
  className,
2399
+ slotName = "drawer-description",
2352
2400
  ...props
2353
2401
  }) {
2354
2402
  return /* @__PURE__ */ jsx(
2355
2403
  Drawer$1.Description,
2356
2404
  {
2357
- "data-slot": "drawer-description",
2358
2405
  className: cn("text-sm text-muted-foreground", className),
2359
- ...props
2406
+ ...props,
2407
+ "data-slot": slotName
2360
2408
  }
2361
2409
  );
2362
2410
  }
@@ -2368,6 +2416,7 @@ function Field({
2368
2416
  error,
2369
2417
  invalid,
2370
2418
  required = false,
2419
+ slotName = "field",
2371
2420
  ...props
2372
2421
  }) {
2373
2422
  const generatedId = React3.useId();
@@ -2390,7 +2439,6 @@ function Field({
2390
2439
  return /* @__PURE__ */ jsx(FieldContext.Provider, { value: field, children: /* @__PURE__ */ jsxs(
2391
2440
  "div",
2392
2441
  {
2393
- "data-slot": "field",
2394
2442
  "data-orientation": orientation,
2395
2443
  "data-invalid": isInvalid ? "true" : void 0,
2396
2444
  className: cn(
@@ -2399,6 +2447,7 @@ function Field({
2399
2447
  className
2400
2448
  ),
2401
2449
  ...props,
2450
+ "data-slot": slotName,
2402
2451
  children: [
2403
2452
  children,
2404
2453
  /* @__PURE__ */ jsx(FieldError, { message: error })
@@ -2408,14 +2457,15 @@ function Field({
2408
2457
  }
2409
2458
  function FieldGroup({
2410
2459
  className,
2460
+ slotName = "field-group",
2411
2461
  ...props
2412
2462
  }) {
2413
2463
  return /* @__PURE__ */ jsx(
2414
2464
  "div",
2415
2465
  {
2416
- "data-slot": "field-group",
2417
2466
  className: cn("gap-6 flex w-full flex-col", className),
2418
- ...props
2467
+ ...props,
2468
+ "data-slot": slotName
2419
2469
  }
2420
2470
  );
2421
2471
  }
@@ -2423,13 +2473,13 @@ function FieldLabel({
2423
2473
  className,
2424
2474
  children,
2425
2475
  requiredLabel = "Required",
2476
+ slotName = "field-label",
2426
2477
  ...props
2427
2478
  }) {
2428
2479
  const { controlId, invalid, required } = useField();
2429
2480
  return /* @__PURE__ */ jsxs(
2430
2481
  Label,
2431
2482
  {
2432
- "data-slot": "field-label",
2433
2483
  htmlFor: controlId,
2434
2484
  className: cn(
2435
2485
  "gap-1 flex items-center group-data-[orientation=horizontal]/field:col-start-1 group-data-[orientation=horizontal]/field:row-start-1",
@@ -2437,6 +2487,7 @@ function FieldLabel({
2437
2487
  className
2438
2488
  ),
2439
2489
  ...props,
2490
+ slotName,
2440
2491
  children: [
2441
2492
  children,
2442
2493
  required ? /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -2457,6 +2508,7 @@ function FieldLabel({
2457
2508
  }
2458
2509
  function FieldDescription({
2459
2510
  className,
2511
+ slotName = "field-description",
2460
2512
  ...props
2461
2513
  }) {
2462
2514
  const { descriptionId, setHasDescription } = useField();
@@ -2468,12 +2520,12 @@ function FieldDescription({
2468
2520
  "p",
2469
2521
  {
2470
2522
  id: descriptionId,
2471
- "data-slot": "field-description",
2472
2523
  className: cn(
2473
2524
  "ml-1 text-xs font-medium text-muted-foreground group-data-[orientation=horizontal]/field:col-start-1 group-data-[orientation=horizontal]/field:row-start-2",
2474
2525
  className
2475
2526
  ),
2476
- ...props
2527
+ ...props,
2528
+ "data-slot": slotName
2477
2529
  }
2478
2530
  );
2479
2531
  }
@@ -2497,7 +2549,7 @@ function FieldControl({
2497
2549
  return /* @__PURE__ */ jsx(
2498
2550
  Slot,
2499
2551
  {
2500
- "data-slot": "field-control",
2552
+ "data-field-control": "true",
2501
2553
  id: controlId,
2502
2554
  "aria-describedby": describedBy || void 0,
2503
2555
  "aria-invalid": invalid ? true : void 0,
@@ -2540,15 +2592,15 @@ var useFormField = () => {
2540
2592
  var FormItemContext = React3.createContext(
2541
2593
  {}
2542
2594
  );
2543
- var FormItem = React3.forwardRef(({ className, ...props }, ref) => {
2595
+ var FormItem = React3.forwardRef(({ className, slotName = "form-item", ...props }, ref) => {
2544
2596
  const id = React3.useId();
2545
2597
  return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx(
2546
2598
  "div",
2547
2599
  {
2548
2600
  ref,
2549
2601
  className: cn("space-y-2", className),
2550
- "data-slot": "form-item",
2551
- ...props
2602
+ ...props,
2603
+ "data-slot": slotName
2552
2604
  }
2553
2605
  ) });
2554
2606
  });
@@ -2615,90 +2667,93 @@ var FormMessage = React3.forwardRef(({ className, children, ...props }, ref) =>
2615
2667
  });
2616
2668
  FormMessage.displayName = "FormMessage";
2617
2669
  function HoverCard({
2670
+ slotName = "hover-card",
2618
2671
  ...props
2619
2672
  }) {
2620
- return /* @__PURE__ */ jsx(HoverCard$1.Root, { "data-slot": "hover-card", ...props });
2673
+ return /* @__PURE__ */ jsx(HoverCard$1.Root, { ...props, "data-slot": slotName });
2621
2674
  }
2622
2675
  function HoverCardTrigger({
2676
+ slotName = "hover-card-trigger",
2623
2677
  ...props
2624
2678
  }) {
2625
- return /* @__PURE__ */ jsx(HoverCard$1.Trigger, { "data-slot": "hover-card-trigger", ...props });
2679
+ return /* @__PURE__ */ jsx(HoverCard$1.Trigger, { ...props, "data-slot": slotName });
2626
2680
  }
2627
2681
  function HoverCardContent({
2628
2682
  className,
2629
2683
  align = "center",
2630
2684
  sideOffset = 4,
2685
+ slotName = "hover-card-content",
2631
2686
  ...props
2632
2687
  }) {
2633
2688
  return /* @__PURE__ */ jsx(HoverCard$1.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx(
2634
2689
  HoverCard$1.Content,
2635
2690
  {
2636
- "data-slot": "hover-card-content",
2637
2691
  align,
2638
2692
  sideOffset,
2639
2693
  className: cn(
2640
2694
  `${panelSurface} w-64 p-4 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 origin-(--radix-hover-card-content-transform-origin) bg-popover/90 outline-hidden`,
2641
2695
  className
2642
2696
  ),
2643
- ...props
2697
+ ...props,
2698
+ "data-slot": slotName
2644
2699
  }
2645
2700
  ) });
2646
2701
  }
2647
2702
  function Menubar({
2648
2703
  className,
2704
+ slotName = "menubar",
2649
2705
  ...props
2650
2706
  }) {
2651
2707
  return /* @__PURE__ */ jsx(
2652
2708
  Menubar$1.Root,
2653
2709
  {
2654
- "data-slot": "menubar",
2655
2710
  className: cn(
2656
2711
  "h-9 gap-1 p-1 shadow-sm backdrop-blur-xl rounded-2xl flex items-center border border-border bg-card/60",
2657
2712
  className
2658
2713
  ),
2659
- ...props
2714
+ ...props,
2715
+ "data-slot": slotName
2660
2716
  }
2661
2717
  );
2662
2718
  }
2663
2719
  function MenubarMenu({
2720
+ slotName = "menubar-menu",
2664
2721
  ...props
2665
2722
  }) {
2666
- return /* @__PURE__ */ jsx(Menubar$1.Menu, { "data-slot": "menubar-menu", ...props });
2723
+ return /* @__PURE__ */ jsx(Menubar$1.Menu, { ...props, "data-slot": slotName });
2667
2724
  }
2668
2725
  function MenubarGroup({
2726
+ slotName = "menubar-group",
2669
2727
  ...props
2670
2728
  }) {
2671
- return /* @__PURE__ */ jsx(Menubar$1.Group, { "data-slot": "menubar-group", ...props });
2729
+ return /* @__PURE__ */ jsx(Menubar$1.Group, { ...props, "data-slot": slotName });
2672
2730
  }
2673
2731
  function MenubarPortal({
2732
+ slotName = "menubar-portal",
2674
2733
  ...props
2675
2734
  }) {
2676
- return /* @__PURE__ */ jsx(Menubar$1.Portal, { "data-slot": "menubar-portal", ...props });
2735
+ return /* @__PURE__ */ jsx(Menubar$1.Portal, { ...props, "data-slot": slotName });
2677
2736
  }
2678
2737
  function MenubarRadioGroup({
2738
+ slotName = "menubar-radio-group",
2679
2739
  ...props
2680
2740
  }) {
2681
- return /* @__PURE__ */ jsx(
2682
- Menubar$1.RadioGroup,
2683
- {
2684
- "data-slot": "menubar-radio-group",
2685
- ...props
2686
- }
2687
- );
2741
+ return /* @__PURE__ */ jsx(Menubar$1.RadioGroup, { ...props, "data-slot": slotName });
2688
2742
  }
2689
2743
  function MenubarTrigger({
2690
2744
  className,
2745
+ slotName = "menubar-trigger",
2691
2746
  ...props
2692
2747
  }) {
2693
2748
  return /* @__PURE__ */ jsx(
2694
2749
  Menubar$1.Trigger,
2695
2750
  {
2696
- "data-slot": "menubar-trigger",
2697
2751
  className: cn(
2698
2752
  "px-2 py-1 text-sm font-medium rounded-xl flex items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
2699
2753
  className
2700
2754
  ),
2701
- ...props
2755
+ ...props,
2756
+ "data-slot": slotName
2702
2757
  }
2703
2758
  );
2704
2759
  }
@@ -2707,12 +2762,12 @@ function MenubarContent({
2707
2762
  align = "start",
2708
2763
  alignOffset = -4,
2709
2764
  sideOffset = 8,
2765
+ slotName = "menubar-content",
2710
2766
  ...props
2711
2767
  }) {
2712
2768
  return /* @__PURE__ */ jsx(MenubarPortal, { children: /* @__PURE__ */ jsx(
2713
2769
  Menubar$1.Content,
2714
2770
  {
2715
- "data-slot": "menubar-content",
2716
2771
  align,
2717
2772
  alignOffset,
2718
2773
  sideOffset,
@@ -2720,7 +2775,8 @@ function MenubarContent({
2720
2775
  `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,
2721
2776
  className
2722
2777
  ),
2723
- ...props
2778
+ ...props,
2779
+ "data-slot": slotName
2724
2780
  }
2725
2781
  ) });
2726
2782
  }
@@ -2728,19 +2784,20 @@ function MenubarItem({
2728
2784
  className,
2729
2785
  inset,
2730
2786
  variant = "default",
2787
+ slotName = "menubar-item",
2731
2788
  ...props
2732
2789
  }) {
2733
2790
  return /* @__PURE__ */ jsx(
2734
2791
  Menubar$1.Item,
2735
2792
  {
2736
- "data-slot": "menubar-item",
2737
2793
  "data-inset": inset,
2738
2794
  "data-variant": variant,
2739
2795
  className: cn(
2740
2796
  "gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!",
2741
2797
  className
2742
2798
  ),
2743
- ...props
2799
+ ...props,
2800
+ "data-slot": slotName
2744
2801
  }
2745
2802
  );
2746
2803
  }
@@ -2748,18 +2805,19 @@ function MenubarCheckboxItem({
2748
2805
  className,
2749
2806
  children,
2750
2807
  checked,
2808
+ slotName = "menubar-checkbox-item",
2751
2809
  ...props
2752
2810
  }) {
2753
2811
  return /* @__PURE__ */ jsxs(
2754
2812
  Menubar$1.CheckboxItem,
2755
2813
  {
2756
- "data-slot": "menubar-checkbox-item",
2757
2814
  className: cn(
2758
2815
  "gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
2759
2816
  className
2760
2817
  ),
2761
2818
  checked,
2762
2819
  ...props,
2820
+ "data-slot": slotName,
2763
2821
  children: [
2764
2822
  /* @__PURE__ */ jsx("span", { className: "left-2 size-3.5 pointer-events-none absolute flex items-center justify-center", children: /* @__PURE__ */ jsx(Menubar$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
2765
2823
  children
@@ -2770,17 +2828,18 @@ function MenubarCheckboxItem({
2770
2828
  function MenubarRadioItem({
2771
2829
  className,
2772
2830
  children,
2831
+ slotName = "menubar-radio-item",
2773
2832
  ...props
2774
2833
  }) {
2775
2834
  return /* @__PURE__ */ jsxs(
2776
2835
  Menubar$1.RadioItem,
2777
2836
  {
2778
- "data-slot": "menubar-radio-item",
2779
2837
  className: cn(
2780
2838
  "gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
2781
2839
  className
2782
2840
  ),
2783
2841
  ...props,
2842
+ "data-slot": slotName,
2784
2843
  children: [
2785
2844
  /* @__PURE__ */ jsx("span", { className: "left-2 size-3.5 pointer-events-none absolute flex items-center justify-center", children: /* @__PURE__ */ jsx(Menubar$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
2786
2845
  children
@@ -2791,71 +2850,76 @@ function MenubarRadioItem({
2791
2850
  function MenubarLabel({
2792
2851
  className,
2793
2852
  inset,
2853
+ slotName = "menubar-label",
2794
2854
  ...props
2795
2855
  }) {
2796
2856
  return /* @__PURE__ */ jsx(
2797
2857
  Menubar$1.Label,
2798
2858
  {
2799
- "data-slot": "menubar-label",
2800
2859
  "data-inset": inset,
2801
2860
  className: cn(
2802
2861
  "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
2803
2862
  className
2804
2863
  ),
2805
- ...props
2864
+ ...props,
2865
+ "data-slot": slotName
2806
2866
  }
2807
2867
  );
2808
2868
  }
2809
2869
  function MenubarSeparator({
2810
2870
  className,
2871
+ slotName = "menubar-separator",
2811
2872
  ...props
2812
2873
  }) {
2813
2874
  return /* @__PURE__ */ jsx(
2814
2875
  Menubar$1.Separator,
2815
2876
  {
2816
- "data-slot": "menubar-separator",
2817
2877
  className: cn("-mx-1 my-1 h-px bg-border", className),
2818
- ...props
2878
+ ...props,
2879
+ "data-slot": slotName
2819
2880
  }
2820
2881
  );
2821
2882
  }
2822
2883
  function MenubarShortcut({
2823
2884
  className,
2885
+ slotName = "menubar-shortcut",
2824
2886
  ...props
2825
2887
  }) {
2826
2888
  return /* @__PURE__ */ jsx(
2827
2889
  "span",
2828
2890
  {
2829
- "data-slot": "menubar-shortcut",
2830
2891
  className: cn(
2831
2892
  "text-xs tracking-widest ml-auto text-muted-foreground",
2832
2893
  className
2833
2894
  ),
2834
- ...props
2895
+ ...props,
2896
+ "data-slot": slotName
2835
2897
  }
2836
2898
  );
2837
2899
  }
2838
2900
  function MenubarSub({
2901
+ slotName = "menubar-sub",
2839
2902
  ...props
2840
2903
  }) {
2841
- return /* @__PURE__ */ jsx(Menubar$1.Sub, { "data-slot": "menubar-sub", ...props });
2904
+ return /* @__PURE__ */ jsx(Menubar$1.Sub, { ...props, "data-slot": slotName });
2842
2905
  }
2843
2906
  function MenubarSubTrigger({
2844
2907
  className,
2845
2908
  inset,
2846
2909
  children,
2910
+ slotName = "menubar-sub-trigger",
2847
2911
  ...props
2848
2912
  }) {
2849
2913
  return /* @__PURE__ */ jsxs(
2850
2914
  Menubar$1.SubTrigger,
2851
2915
  {
2852
- "data-slot": "menubar-sub-trigger",
2853
2916
  "data-inset": inset,
2854
2917
  className: cn(
2855
2918
  "px-2 py-1.5 text-sm data-[inset]:pl-8 rounded-xl flex cursor-default items-center outline-none select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
2856
2919
  className
2857
2920
  ),
2858
2921
  ...props,
2922
+ "data-slot": slotName,
2859
2923
  children: [
2860
2924
  children,
2861
2925
  /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-4 w-4 ml-auto" })
@@ -2865,17 +2929,18 @@ function MenubarSubTrigger({
2865
2929
  }
2866
2930
  function MenubarSubContent({
2867
2931
  className,
2932
+ slotName = "menubar-sub-content",
2868
2933
  ...props
2869
2934
  }) {
2870
2935
  return /* @__PURE__ */ jsx(
2871
2936
  Menubar$1.SubContent,
2872
2937
  {
2873
- "data-slot": "menubar-sub-content",
2874
2938
  className: cn(
2875
2939
  `${menuSurface} p-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,
2876
2940
  className
2877
2941
  ),
2878
- ...props
2942
+ ...props,
2943
+ "data-slot": slotName
2879
2944
  }
2880
2945
  );
2881
2946
  }
@@ -2883,18 +2948,19 @@ function NavigationMenu({
2883
2948
  className,
2884
2949
  children,
2885
2950
  viewport = true,
2951
+ slotName = "navigation-menu",
2886
2952
  ...props
2887
2953
  }) {
2888
2954
  return /* @__PURE__ */ jsxs(
2889
2955
  NavigationMenuPrimitive.Root,
2890
2956
  {
2891
- "data-slot": "navigation-menu",
2892
2957
  "data-viewport": viewport,
2893
2958
  className: cn(
2894
2959
  "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
2895
2960
  className
2896
2961
  ),
2897
2962
  ...props,
2963
+ "data-slot": slotName,
2898
2964
  children: [
2899
2965
  children,
2900
2966
  viewport && /* @__PURE__ */ jsx(NavigationMenuViewport, {})
@@ -2904,30 +2970,32 @@ function NavigationMenu({
2904
2970
  }
2905
2971
  function NavigationMenuList({
2906
2972
  className,
2973
+ slotName = "navigation-menu-list",
2907
2974
  ...props
2908
2975
  }) {
2909
2976
  return /* @__PURE__ */ jsx(
2910
2977
  NavigationMenuPrimitive.List,
2911
2978
  {
2912
- "data-slot": "navigation-menu-list",
2913
2979
  className: cn(
2914
2980
  "group gap-1 flex flex-1 list-none items-center justify-center",
2915
2981
  className
2916
2982
  ),
2917
- ...props
2983
+ ...props,
2984
+ "data-slot": slotName
2918
2985
  }
2919
2986
  );
2920
2987
  }
2921
2988
  function NavigationMenuItem({
2922
2989
  className,
2990
+ slotName = "navigation-menu-item",
2923
2991
  ...props
2924
2992
  }) {
2925
2993
  return /* @__PURE__ */ jsx(
2926
2994
  NavigationMenuPrimitive.Item,
2927
2995
  {
2928
- "data-slot": "navigation-menu-item",
2929
2996
  className: cn("relative", className),
2930
- ...props
2997
+ ...props,
2998
+ "data-slot": slotName
2931
2999
  }
2932
3000
  );
2933
3001
  }
@@ -2937,14 +3005,15 @@ var navigationMenuTriggerStyle = cva(
2937
3005
  function NavigationMenuTrigger({
2938
3006
  className,
2939
3007
  children,
3008
+ slotName = "navigation-menu-trigger",
2940
3009
  ...props
2941
3010
  }) {
2942
3011
  return /* @__PURE__ */ jsxs(
2943
3012
  NavigationMenuPrimitive.Trigger,
2944
3013
  {
2945
- "data-slot": "navigation-menu-trigger",
2946
3014
  className: cn(navigationMenuTriggerStyle(), "group", className),
2947
3015
  ...props,
3016
+ "data-slot": slotName,
2948
3017
  children: [
2949
3018
  children,
2950
3019
  " ",
@@ -2961,23 +3030,25 @@ function NavigationMenuTrigger({
2961
3030
  }
2962
3031
  function NavigationMenuContent({
2963
3032
  className,
3033
+ slotName = "navigation-menu-content",
2964
3034
  ...props
2965
3035
  }) {
2966
3036
  return /* @__PURE__ */ jsx(
2967
3037
  NavigationMenuPrimitive.Content,
2968
3038
  {
2969
- "data-slot": "navigation-menu-content",
2970
3039
  className: cn(
2971
3040
  "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 p-2 pr-2.5 md:absolute md:w-auto w-full",
2972
3041
  "group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:backdrop-blur-xl group-data-[viewport=false]/navigation-menu:rounded-2xl group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border group-data-[viewport=false]/navigation-menu:bg-popover/90 group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
2973
3042
  className
2974
3043
  ),
2975
- ...props
3044
+ ...props,
3045
+ "data-slot": slotName
2976
3046
  }
2977
3047
  );
2978
3048
  }
2979
3049
  function NavigationMenuViewport({
2980
3050
  className,
3051
+ slotName = "navigation-menu-viewport",
2981
3052
  ...props
2982
3053
  }) {
2983
3054
  return /* @__PURE__ */ jsx(
@@ -2989,12 +3060,12 @@ function NavigationMenuViewport({
2989
3060
  children: /* @__PURE__ */ jsx(
2990
3061
  NavigationMenuPrimitive.Viewport,
2991
3062
  {
2992
- "data-slot": "navigation-menu-viewport",
2993
3063
  className: cn(
2994
3064
  `${panelSurface} origin-top-center data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 mt-1.5 md:w-[var(--radix-navigation-menu-viewport-width)] relative h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden bg-popover/90`,
2995
3065
  className
2996
3066
  ),
2997
- ...props
3067
+ ...props,
3068
+ "data-slot": slotName
2998
3069
  }
2999
3070
  )
3000
3071
  }
@@ -3002,76 +3073,86 @@ function NavigationMenuViewport({
3002
3073
  }
3003
3074
  function NavigationMenuLink({
3004
3075
  className,
3076
+ slotName = "navigation-menu-link",
3005
3077
  ...props
3006
3078
  }) {
3007
3079
  return /* @__PURE__ */ jsx(
3008
3080
  NavigationMenuPrimitive.Link,
3009
3081
  {
3010
- "data-slot": "navigation-menu-link",
3011
3082
  className: cn(
3012
3083
  "gap-1 p-2 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl data-[active=true]:font-semibold flex flex-col transition-[color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground",
3013
3084
  className
3014
3085
  ),
3015
- ...props
3086
+ ...props,
3087
+ "data-slot": slotName
3016
3088
  }
3017
3089
  );
3018
3090
  }
3019
3091
  function NavigationMenuIndicator({
3020
3092
  className,
3093
+ slotName = "navigation-menu-indicator",
3021
3094
  ...props
3022
3095
  }) {
3023
3096
  return /* @__PURE__ */ jsx(
3024
3097
  NavigationMenuPrimitive.Indicator,
3025
3098
  {
3026
- "data-slot": "navigation-menu-indicator",
3027
3099
  className: cn(
3028
3100
  "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in h-1.5 top-full z-[1] flex items-end justify-center overflow-hidden",
3029
3101
  className
3030
3102
  ),
3031
3103
  ...props,
3104
+ "data-slot": slotName,
3032
3105
  children: /* @__PURE__ */ jsx("div", { className: "h-2 w-2 shadow-md rounded-tl-xs relative top-[60%] rotate-45 bg-border" })
3033
3106
  }
3034
3107
  );
3035
3108
  }
3036
- function Pagination({ className, ...props }) {
3109
+ function Pagination({
3110
+ className,
3111
+ slotName = "pagination",
3112
+ ...props
3113
+ }) {
3037
3114
  return /* @__PURE__ */ jsx(
3038
3115
  "nav",
3039
3116
  {
3040
3117
  role: "navigation",
3041
3118
  "aria-label": "pagination",
3042
- "data-slot": "pagination",
3043
3119
  className: cn("mx-auto flex w-full justify-center", className),
3044
- ...props
3120
+ ...props,
3121
+ "data-slot": slotName
3045
3122
  }
3046
3123
  );
3047
3124
  }
3048
3125
  function PaginationContent({
3049
3126
  className,
3127
+ slotName = "pagination-content",
3050
3128
  ...props
3051
3129
  }) {
3052
3130
  return /* @__PURE__ */ jsx(
3053
3131
  "ul",
3054
3132
  {
3055
- "data-slot": "pagination-content",
3056
3133
  className: cn("gap-1 flex flex-row items-center", className),
3057
- ...props
3134
+ ...props,
3135
+ "data-slot": slotName
3058
3136
  }
3059
3137
  );
3060
3138
  }
3061
- function PaginationItem({ ...props }) {
3062
- return /* @__PURE__ */ jsx("li", { "data-slot": "pagination-item", ...props });
3139
+ function PaginationItem({
3140
+ slotName = "pagination-item",
3141
+ ...props
3142
+ }) {
3143
+ return /* @__PURE__ */ jsx("li", { ...props, "data-slot": slotName });
3063
3144
  }
3064
3145
  function PaginationLink({
3065
3146
  className,
3066
3147
  isActive,
3067
3148
  size = "icon",
3149
+ slotName = "pagination-link",
3068
3150
  ...props
3069
3151
  }) {
3070
3152
  return /* @__PURE__ */ jsx(
3071
3153
  "a",
3072
3154
  {
3073
3155
  "aria-current": isActive ? "page" : void 0,
3074
- "data-slot": "pagination-link",
3075
3156
  "data-active": isActive,
3076
3157
  className: cn(
3077
3158
  buttonVariants({
@@ -3080,7 +3161,8 @@ function PaginationLink({
3080
3161
  }),
3081
3162
  className
3082
3163
  ),
3083
- ...props
3164
+ ...props,
3165
+ "data-slot": slotName
3084
3166
  }
3085
3167
  );
3086
3168
  }
@@ -3122,18 +3204,19 @@ function PaginationNext({
3122
3204
  }
3123
3205
  function PaginationEllipsis({
3124
3206
  className,
3207
+ slotName = "pagination-ellipsis",
3125
3208
  ...props
3126
3209
  }) {
3127
3210
  return /* @__PURE__ */ jsxs(
3128
3211
  "span",
3129
3212
  {
3130
3213
  "aria-hidden": true,
3131
- "data-slot": "pagination-ellipsis",
3132
3214
  className: cn(
3133
3215
  "size-9 rounded-xl flex items-center justify-center",
3134
3216
  className
3135
3217
  ),
3136
3218
  ...props,
3219
+ "data-slot": slotName,
3137
3220
  children: [
3138
3221
  /* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "size-4" }),
3139
3222
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
@@ -3146,10 +3229,11 @@ function PasswordInput({
3146
3229
  revealable = true,
3147
3230
  showLabel = "Show password",
3148
3231
  hideLabel = "Hide password",
3232
+ slotName = "password-input",
3149
3233
  ...props
3150
3234
  }) {
3151
3235
  const [visible, setVisible] = React3.useState(false);
3152
- return /* @__PURE__ */ jsxs("div", { "data-slot": "password-input", className: "relative w-full", children: [
3236
+ return /* @__PURE__ */ jsxs("div", { className: "relative w-full", "data-slot": slotName, children: [
3153
3237
  /* @__PURE__ */ jsx(
3154
3238
  Input,
3155
3239
  {
@@ -3164,7 +3248,7 @@ function PasswordInput({
3164
3248
  type: "button",
3165
3249
  variant: "ghost",
3166
3250
  size: "icon-sm",
3167
- "data-slot": "password-input-toggle",
3251
+ slotName: "password-input-toggle",
3168
3252
  "aria-label": visible ? hideLabel : showLabel,
3169
3253
  "aria-pressed": visible,
3170
3254
  disabled: props.disabled,
@@ -3176,9 +3260,12 @@ function PasswordInput({
3176
3260
  ) : null
3177
3261
  ] });
3178
3262
  }
3179
- function PlaceholderPattern({ className }) {
3263
+ function PlaceholderPattern({
3264
+ className,
3265
+ slotName = "placeholder-pattern"
3266
+ }) {
3180
3267
  const patternId = useId();
3181
- return /* @__PURE__ */ jsxs("svg", { "data-slot": "placeholder-pattern", className, fill: "none", children: [
3268
+ return /* @__PURE__ */ jsxs("svg", { className, fill: "none", "data-slot": slotName, children: [
3182
3269
  /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
3183
3270
  "pattern",
3184
3271
  {
@@ -3211,17 +3298,18 @@ function PlaceholderPattern({ className }) {
3211
3298
  function Progress({
3212
3299
  className,
3213
3300
  value,
3301
+ slotName = "progress",
3214
3302
  ...props
3215
3303
  }) {
3216
3304
  return /* @__PURE__ */ jsx(
3217
3305
  Progress$1.Root,
3218
3306
  {
3219
- "data-slot": "progress",
3220
3307
  className: cn(
3221
3308
  "h-2 relative w-full overflow-hidden rounded-full bg-primary/20",
3222
3309
  className
3223
3310
  ),
3224
3311
  ...props,
3312
+ "data-slot": slotName,
3225
3313
  children: /* @__PURE__ */ jsx(
3226
3314
  Progress$1.Indicator,
3227
3315
  {
@@ -3235,30 +3323,32 @@ function Progress({
3235
3323
  }
3236
3324
  function RadioGroup({
3237
3325
  className,
3326
+ slotName = "radio-group",
3238
3327
  ...props
3239
3328
  }) {
3240
3329
  return /* @__PURE__ */ jsx(
3241
3330
  RadioGroup$1.Root,
3242
3331
  {
3243
- "data-slot": "radio-group",
3244
3332
  className: cn("gap-3 grid", className),
3245
- ...props
3333
+ ...props,
3334
+ "data-slot": slotName
3246
3335
  }
3247
3336
  );
3248
3337
  }
3249
3338
  function RadioGroupItem({
3250
3339
  className,
3340
+ slotName = "radio-group-item",
3251
3341
  ...props
3252
3342
  }) {
3253
3343
  return /* @__PURE__ */ jsx(
3254
3344
  RadioGroup$1.Item,
3255
3345
  {
3256
- "data-slot": "radio-group-item",
3257
3346
  className: cn(
3258
3347
  `size-5 shadow-xs aspect-square shrink-0 rounded-full border border-border text-primary transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 ${focusRing}`,
3259
3348
  className
3260
3349
  ),
3261
3350
  ...props,
3351
+ "data-slot": slotName,
3262
3352
  children: /* @__PURE__ */ jsx(
3263
3353
  RadioGroup$1.Indicator,
3264
3354
  {
@@ -3272,39 +3362,44 @@ function RadioGroupItem({
3272
3362
  }
3273
3363
  function ResizablePanelGroup({
3274
3364
  className,
3365
+ slotName = "resizable-panel-group",
3275
3366
  ...props
3276
3367
  }) {
3277
3368
  return /* @__PURE__ */ jsx(
3278
3369
  ResizablePrimitive.Group,
3279
3370
  {
3280
- "data-slot": "resizable-panel-group",
3281
3371
  className: cn(
3282
3372
  elevatedSurface,
3283
3373
  nestedSurfaceReset,
3284
3374
  "flex h-full w-full overflow-hidden bg-card aria-[orientation=vertical]:flex-col",
3285
3375
  className
3286
3376
  ),
3287
- ...props
3377
+ ...props,
3378
+ "data-slot": slotName
3288
3379
  }
3289
3380
  );
3290
3381
  }
3291
- function ResizablePanel({ ...props }) {
3292
- return /* @__PURE__ */ jsx(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
3382
+ function ResizablePanel({
3383
+ slotName = "resizable-panel",
3384
+ ...props
3385
+ }) {
3386
+ return /* @__PURE__ */ jsx(ResizablePrimitive.Panel, { ...props, "data-slot": slotName });
3293
3387
  }
3294
3388
  function ResizableHandle({
3295
3389
  withHandle,
3296
3390
  className,
3391
+ slotName = "resizable-handle",
3297
3392
  ...props
3298
3393
  }) {
3299
3394
  return /* @__PURE__ */ jsx(
3300
3395
  ResizablePrimitive.Separator,
3301
3396
  {
3302
- "data-slot": "resizable-handle",
3303
3397
  className: cn(
3304
3398
  "after:inset-y-0 after:w-1 aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:translate-x-0 relative flex w-px items-center justify-center bg-border after:absolute after:left-1/2 after:-translate-x-1/2 focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90",
3305
3399
  className
3306
3400
  ),
3307
3401
  ...props,
3402
+ "data-slot": slotName,
3308
3403
  children: withHandle && /* @__PURE__ */ jsx("div", { className: "h-8 w-1.5 z-10 rounded-full bg-muted-foreground/40 transition-colors group-hover:bg-muted-foreground/60" })
3309
3404
  }
3310
3405
  );
@@ -3323,6 +3418,7 @@ function SaveStatus({
3323
3418
  savedDuration = SAVED_DURATION,
3324
3419
  labels,
3325
3420
  className,
3421
+ slotName = "save-status",
3326
3422
  ...props
3327
3423
  }) {
3328
3424
  const text = useUiLabels("saveStatus", saveStatusLabels, labels);
@@ -3341,7 +3437,6 @@ function SaveStatus({
3341
3437
  "div",
3342
3438
  {
3343
3439
  ...props,
3344
- "data-slot": "save-status",
3345
3440
  "data-state": status,
3346
3441
  "data-faded": hidden || void 0,
3347
3442
  role: "status",
@@ -3352,6 +3447,7 @@ function SaveStatus({
3352
3447
  hidden ? "opacity-0" : "opacity-100",
3353
3448
  className
3354
3449
  ),
3450
+ "data-slot": slotName,
3355
3451
  children: [
3356
3452
  status === "idle" && showIdle && /* @__PURE__ */ jsx(
3357
3453
  "span",
@@ -3398,10 +3494,9 @@ function SaveStatus({
3398
3494
  }
3399
3495
  );
3400
3496
  }
3401
- var ScrollArea = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
3497
+ var ScrollArea = React3.forwardRef(({ className, children, slotName = "scroll-area", ...props }, ref) => /* @__PURE__ */ jsxs(
3402
3498
  ScrollAreaPrimitive.Root,
3403
3499
  {
3404
- "data-slot": "scroll-area",
3405
3500
  ref,
3406
3501
  className: cn(
3407
3502
  elevatedSurface,
@@ -3411,6 +3506,7 @@ var ScrollArea = React3.forwardRef(({ className, children, ...props }, ref) => /
3411
3506
  className
3412
3507
  ),
3413
3508
  ...props,
3509
+ "data-slot": slotName,
3414
3510
  children: [
3415
3511
  /* @__PURE__ */ jsx(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
3416
3512
  /* @__PURE__ */ jsx(ScrollBar, {}),
@@ -3419,22 +3515,29 @@ var ScrollArea = React3.forwardRef(({ className, children, ...props }, ref) => /
3419
3515
  }
3420
3516
  ));
3421
3517
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
3422
- var ScrollBar = React3.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
3423
- ScrollAreaPrimitive.ScrollAreaScrollbar,
3424
- {
3425
- "data-slot": "scroll-area-scrollbar",
3426
- ref,
3427
- orientation,
3428
- className: cn(
3429
- "flex touch-none transition-colors select-none",
3430
- orientation === "vertical" && "w-2.5 h-full border-l border-l-transparent p-[1px]",
3431
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
3432
- className
3433
- ),
3434
- ...props,
3435
- children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
3436
- }
3437
- ));
3518
+ var ScrollBar = React3.forwardRef(
3519
+ ({
3520
+ className,
3521
+ orientation = "vertical",
3522
+ slotName = "scroll-area-scrollbar",
3523
+ ...props
3524
+ }, ref) => /* @__PURE__ */ jsx(
3525
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
3526
+ {
3527
+ ref,
3528
+ orientation,
3529
+ className: cn(
3530
+ "flex touch-none transition-colors select-none",
3531
+ orientation === "vertical" && "w-2.5 h-full border-l border-l-transparent p-[1px]",
3532
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
3533
+ className
3534
+ ),
3535
+ ...props,
3536
+ "data-slot": slotName,
3537
+ children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
3538
+ }
3539
+ )
3540
+ );
3438
3541
  ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
3439
3542
  function Slider({
3440
3543
  className,
@@ -3442,6 +3545,7 @@ function Slider({
3442
3545
  value,
3443
3546
  min = 0,
3444
3547
  max = 100,
3548
+ slotName = "slider",
3445
3549
  ...props
3446
3550
  }) {
3447
3551
  const _values = React3.useMemo(
@@ -3451,7 +3555,6 @@ function Slider({
3451
3555
  return /* @__PURE__ */ jsxs(
3452
3556
  Slider$1.Root,
3453
3557
  {
3454
- "data-slot": "slider",
3455
3558
  defaultValue,
3456
3559
  value,
3457
3560
  min,
@@ -3461,6 +3564,7 @@ function Slider({
3461
3564
  className
3462
3565
  ),
3463
3566
  ...props,
3567
+ "data-slot": slotName,
3464
3568
  children: [
3465
3569
  /* @__PURE__ */ jsx(
3466
3570
  Slider$1.Track,
@@ -3553,6 +3657,7 @@ function StatusBadge({
3553
3657
  status = "neutral",
3554
3658
  dot = false,
3555
3659
  children,
3660
+ slotName = "status-badge",
3556
3661
  ...props
3557
3662
  }) {
3558
3663
  const resolvedStatus = status ?? "neutral";
@@ -3560,13 +3665,13 @@ function StatusBadge({
3560
3665
  Badge,
3561
3666
  {
3562
3667
  variant: "outline",
3563
- "data-slot": "status-badge",
3564
3668
  "data-status": resolvedStatus,
3565
3669
  className: cn(
3566
3670
  statusBadgeVariants({ status: resolvedStatus }),
3567
3671
  className
3568
3672
  ),
3569
3673
  ...props,
3674
+ slotName,
3570
3675
  children: [
3571
3676
  dot && /* @__PURE__ */ jsx(
3572
3677
  "span",
@@ -3599,16 +3704,17 @@ function TextLink({
3599
3704
  className,
3600
3705
  variant = "default",
3601
3706
  asChild = false,
3707
+ slotName = "text-link",
3602
3708
  ...props
3603
3709
  }) {
3604
3710
  const Comp = asChild ? Slot : "a";
3605
3711
  return /* @__PURE__ */ jsx(
3606
3712
  Comp,
3607
3713
  {
3608
- "data-slot": "text-link",
3609
3714
  "data-variant": variant,
3610
3715
  className: cn(textLinkVariants({ variant }), className),
3611
- ...props
3716
+ ...props,
3717
+ "data-slot": slotName
3612
3718
  }
3613
3719
  );
3614
3720
  }