@aircall/ds 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ import { Separator as Separator$1 } from "@base-ui/react/separator";
15
15
  import { DayPicker, getDefaultClassNames } from "react-day-picker";
16
16
  import useEmblaCarousel from "embla-carousel-react";
17
17
  import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
18
+ import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area";
18
19
  import { Collapsible as Collapsible$1 } from "@base-ui/react/collapsible";
19
20
  import { Combobox as Combobox$1 } from "@base-ui/react";
20
21
  import { Command as Command$1 } from "cmdk";
@@ -23,7 +24,6 @@ import { flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-tabl
23
24
  import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer";
24
25
  import { Radio } from "@base-ui/react/radio";
25
26
  import { RadioGroup as RadioGroup$1 } from "@base-ui/react/radio-group";
26
- import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area";
27
27
  import { Menu } from "@base-ui/react/menu";
28
28
  import EmojiReactPicker, { Categories, EmojiStyle, SuggestionMode, Theme } from "emoji-picker-react";
29
29
  import { Popover as Popover$1 } from "@base-ui/react/popover";
@@ -151,7 +151,7 @@ function AccordionContent({ className, children, ...props }) {
151
151
 
152
152
  //#endregion
153
153
  //#region src/components/button.tsx
154
- const buttonVariants = cva("group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px active:not-aria-[haspopup]:opacity-60 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
154
+ const buttonVariants = cva("group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px active:not-aria-[haspopup]:opacity-60 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
155
155
  variants: {
156
156
  variant: {
157
157
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
@@ -177,9 +177,10 @@ const buttonVariants = cva("group/button inline-flex shrink-0 items-center justi
177
177
  block: false
178
178
  }
179
179
  });
180
- const Button = React$1.forwardRef(({ className, variant = "default", size = "default", block = false, ...props }, ref) => {
180
+ const Button = React$1.forwardRef((componentProps, forwardRef) => {
181
+ const { className, variant = "default", size = "default", block = false, ...props } = componentProps;
181
182
  return /* @__PURE__ */ jsx(Button$1, {
182
- ref,
183
+ ref: forwardRef,
183
184
  "data-slot": "button",
184
185
  "data-variant": variant,
185
186
  className: cn(buttonVariants({
@@ -346,7 +347,7 @@ function AvatarImage({ className, ...props }) {
346
347
  function AvatarFallback({ className, ...props }) {
347
348
  return /* @__PURE__ */ jsx(Avatar$1.Fallback, {
348
349
  "data-slot": "avatar-fallback",
349
- className: cn("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=xs]/avatar:text-xs group-data-[size=sm]/avatar:text-xs group-data-[size=xl]/avatar:text-base", className),
350
+ className: cn("flex size-full items-center justify-center rounded-full bg-background text-sm text-foreground group-data-[size=xs]/avatar:text-xs group-data-[size=sm]/avatar:text-xs group-data-[size=xl]/avatar:text-base", className),
350
351
  ...props
351
352
  });
352
353
  }
@@ -400,56 +401,305 @@ CounterBadge.displayName = "CounterBadge";
400
401
 
401
402
  //#endregion
402
403
  //#region src/components/badge.tsx
403
- const badgeVariants = cva("group/badge inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none", {
404
+ const COLOR_OVERLAY = "bg-[linear-gradient(0deg,var(--badge-color-overlay)_0%,var(--badge-color-overlay)_100%)]";
405
+ const badgeVariants = cva("group/badge inline-flex w-fit max-w-36 shrink-0 items-center justify-center gap-1 overflow-hidden rounded-md border border-transparent font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:shrink-0 [&>svg]:pointer-events-none", {
404
406
  variants: {
405
- variant: {
406
- default: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
407
- secondary: "bg-charcoal-500/30 text-foreground [a]:hover:bg-charcoal-500/20",
408
- outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground"
409
- },
410
407
  size: {
411
- sm: "h-5 px-2 py-0.5 text-xs [&>svg]:size-3!",
412
- lg: "h-7 px-3 py-1 text-sm [&>svg]:size-4!"
408
+ default: "h-5 px-2 py-0.5 text-xs [&>svg]:size-3!",
409
+ lg: "h-6 px-2 text-xs [&>svg]:size-4!"
410
+ },
411
+ color: {
412
+ charcoal: COLOR_OVERLAY,
413
+ red: COLOR_OVERLAY,
414
+ green: COLOR_OVERLAY,
415
+ blue: COLOR_OVERLAY,
416
+ purple: COLOR_OVERLAY,
417
+ yellow: COLOR_OVERLAY,
418
+ pink: COLOR_OVERLAY
419
+ },
420
+ tone: {
421
+ dark: "",
422
+ "medium-dark": "",
423
+ "medium-light": "",
424
+ light: ""
413
425
  }
414
426
  },
427
+ compoundVariants: [
428
+ {
429
+ color: "charcoal",
430
+ tone: "dark",
431
+ class: "bg-charcoal-900 text-charcoal-50"
432
+ },
433
+ {
434
+ color: "charcoal",
435
+ tone: "medium-dark",
436
+ class: "bg-charcoal-600 text-white"
437
+ },
438
+ {
439
+ color: "charcoal",
440
+ tone: "medium-light",
441
+ class: "bg-charcoal-300 text-charcoal-950"
442
+ },
443
+ {
444
+ color: "charcoal",
445
+ tone: "light",
446
+ class: "bg-charcoal-200 text-charcoal-950"
447
+ },
448
+ {
449
+ color: "red",
450
+ tone: "dark",
451
+ class: "bg-red-700 text-red-50"
452
+ },
453
+ {
454
+ color: "red",
455
+ tone: "medium-dark",
456
+ class: "bg-red-400 text-red-950"
457
+ },
458
+ {
459
+ color: "red",
460
+ tone: "medium-light",
461
+ class: "bg-red-300 text-red-950"
462
+ },
463
+ {
464
+ color: "red",
465
+ tone: "light",
466
+ class: "bg-red-200 text-red-800"
467
+ },
468
+ {
469
+ color: "green",
470
+ tone: "dark",
471
+ class: "bg-green-800 text-green-50"
472
+ },
473
+ {
474
+ color: "green",
475
+ tone: "medium-dark",
476
+ class: "bg-green-600 text-white"
477
+ },
478
+ {
479
+ color: "green",
480
+ tone: "medium-light",
481
+ class: "bg-green-300 text-green-950"
482
+ },
483
+ {
484
+ color: "green",
485
+ tone: "light",
486
+ class: "bg-green-200 text-green-950"
487
+ },
488
+ {
489
+ color: "blue",
490
+ tone: "dark",
491
+ class: "bg-blue-800 text-blue-50"
492
+ },
493
+ {
494
+ color: "blue",
495
+ tone: "medium-dark",
496
+ class: "bg-blue-600 text-white"
497
+ },
498
+ {
499
+ color: "blue",
500
+ tone: "medium-light",
501
+ class: "bg-blue-300 text-blue-950"
502
+ },
503
+ {
504
+ color: "blue",
505
+ tone: "light",
506
+ class: "bg-blue-200 text-blue-900"
507
+ },
508
+ {
509
+ color: "purple",
510
+ tone: "dark",
511
+ class: "bg-purple-800 text-purple-50"
512
+ },
513
+ {
514
+ color: "purple",
515
+ tone: "medium-dark",
516
+ class: "bg-purple-600 text-white"
517
+ },
518
+ {
519
+ color: "purple",
520
+ tone: "medium-light",
521
+ class: "bg-purple-300 text-purple-950"
522
+ },
523
+ {
524
+ color: "purple",
525
+ tone: "light",
526
+ class: "bg-purple-200 text-purple-900"
527
+ },
528
+ {
529
+ color: "yellow",
530
+ tone: "dark",
531
+ class: "bg-yellow-500 text-yellow-950"
532
+ },
533
+ {
534
+ color: "yellow",
535
+ tone: "medium-dark",
536
+ class: "bg-yellow-400 text-yellow-950"
537
+ },
538
+ {
539
+ color: "yellow",
540
+ tone: "medium-light",
541
+ class: "bg-yellow-300 text-black"
542
+ },
543
+ {
544
+ color: "yellow",
545
+ tone: "light",
546
+ class: "bg-yellow-200 text-yellow-900"
547
+ },
548
+ {
549
+ color: "pink",
550
+ tone: "dark",
551
+ class: "bg-pink-700 text-pink-50"
552
+ },
553
+ {
554
+ color: "pink",
555
+ tone: "medium-dark",
556
+ class: "bg-pink-500 text-pink-950"
557
+ },
558
+ {
559
+ color: "pink",
560
+ tone: "medium-light",
561
+ class: "bg-pink-300 text-pink-950"
562
+ },
563
+ {
564
+ color: "pink",
565
+ tone: "light",
566
+ class: "bg-pink-200 text-pink-900"
567
+ }
568
+ ],
415
569
  defaultVariants: {
416
- variant: "default",
417
- size: "sm"
570
+ size: "default",
571
+ color: "charcoal",
572
+ tone: "light"
418
573
  }
419
574
  });
420
- const Badge = React$1.forwardRef(({ className, variant = "default", size = "sm", render, ...props }, ref) => {
575
+ /**
576
+ * A standalone label badge. Read-only by default; render it as an anchor or
577
+ * button via `render` to make it hoverable / navigable. Never removable — for a
578
+ * removable token inside an input/combobox, use `Chip`.
579
+ *
580
+ * Pick a constrained DS `color` + `tone` (no freeform hex) — defaults to
581
+ * `charcoal` / `light` — or pass a stored hex via `legacyColor`. Icons are
582
+ * composed as children (auto-sized per `size`).
583
+ */
584
+ const Badge = React$1.forwardRef((componentProps, forwardRef) => {
585
+ const { className, size = "default", color, tone, legacyColor, render, children, ...props } = componentProps;
586
+ const resolved = legacyColor ? resolveTagColor(legacyColor) : {
587
+ color,
588
+ tone
589
+ };
590
+ const content = React$1.Children.map(children, (child) => typeof child === "string" || typeof child === "number" ? /* @__PURE__ */ jsx("span", {
591
+ className: "min-w-0 truncate",
592
+ children: child
593
+ }) : child);
421
594
  return useRender({
422
595
  defaultTagName: "span",
423
596
  props: mergeProps({
424
597
  className: cn(badgeVariants({
425
- variant,
426
- size
598
+ size,
599
+ color: resolved.color,
600
+ tone: resolved.tone
427
601
  }), className),
428
- ref
602
+ ref: forwardRef,
603
+ children: content
429
604
  }, props),
430
605
  render,
431
606
  state: {
432
607
  slot: "badge",
433
- variant,
434
608
  size
435
609
  }
436
610
  });
437
611
  });
438
612
  Badge.displayName = "Badge";
439
- function BadgeGroup({ className, ...props }) {
613
+ const BadgeGroup = React$1.forwardRef((componentProps, forwardRef) => {
614
+ const { className, ...props } = componentProps;
440
615
  return /* @__PURE__ */ jsx("div", {
616
+ ref: forwardRef,
441
617
  "data-slot": "badge-group",
442
618
  className: cn("flex flex-wrap items-center gap-2", className),
443
619
  ...props
444
620
  });
445
- }
446
- function BadgeGroupCount({ className, ...props }) {
621
+ });
622
+ BadgeGroup.displayName = "BadgeGroup";
623
+ const badgeGroupCountVariants = cva("rounded-md", {
624
+ variants: { size: {
625
+ default: "h-5 w-5",
626
+ lg: "h-6 w-6"
627
+ } },
628
+ defaultVariants: { size: "default" }
629
+ });
630
+ const BadgeGroupCount = React$1.forwardRef((componentProps, forwardRef) => {
631
+ const { className, size = "default", ...props } = componentProps;
447
632
  return /* @__PURE__ */ jsx(CounterBadge, {
633
+ ref: forwardRef,
448
634
  "data-slot": "badge-group-count",
449
635
  variant: "ghost",
450
- className,
636
+ className: cn(badgeGroupCountVariants({ size }), className),
451
637
  ...props
452
638
  });
639
+ });
640
+ BadgeGroupCount.displayName = "BadgeGroupCount";
641
+ const LEGACY_TAG_COLOR_MAP = {
642
+ "#003d4b": {
643
+ color: "charcoal",
644
+ tone: "dark"
645
+ },
646
+ "#bb2001": {
647
+ color: "red",
648
+ tone: "dark"
649
+ },
650
+ "#f92c00": {
651
+ color: "red",
652
+ tone: "medium-dark"
653
+ },
654
+ "#0761b5": {
655
+ color: "blue",
656
+ tone: "dark"
657
+ },
658
+ "#008f6c": {
659
+ color: "green",
660
+ tone: "medium-dark"
661
+ },
662
+ "#b285d1": {
663
+ color: "purple",
664
+ tone: "medium-light"
665
+ },
666
+ "#fcbb26": {
667
+ color: "yellow",
668
+ tone: "medium-light"
669
+ },
670
+ "#fe9d88": {
671
+ color: "red",
672
+ tone: "light"
673
+ },
674
+ "#ff844c": {
675
+ color: "red",
676
+ tone: "medium-light"
677
+ },
678
+ "#abccf2": {
679
+ color: "blue",
680
+ tone: "light"
681
+ },
682
+ "#49a0ff": {
683
+ color: "blue",
684
+ tone: "medium-light"
685
+ },
686
+ "#66d188": {
687
+ color: "green",
688
+ tone: "medium-light"
689
+ },
690
+ "#2ac8ff": {
691
+ color: "blue",
692
+ tone: "medium-dark"
693
+ }
694
+ };
695
+ /** Charcoal/dark — used when a stored hex is outside the known legacy palette. */
696
+ const FALLBACK_TAG_COLOR = {
697
+ color: "charcoal",
698
+ tone: "dark"
699
+ };
700
+ /** Resolve a legacy hard-coded tag hex to `color` + `tone`; unknown → charcoal/dark. */
701
+ function resolveTagColor(hex) {
702
+ return LEGACY_TAG_COLOR_MAP[hex.trim().toLowerCase()] ?? FALLBACK_TAG_COLOR;
453
703
  }
454
704
 
455
705
  //#endregion
@@ -982,6 +1232,211 @@ const Checkbox = React$1.forwardRef(({ className, ...props }, ref) => {
982
1232
  });
983
1233
  Checkbox.displayName = "Checkbox";
984
1234
 
1235
+ //#endregion
1236
+ //#region src/components/chip.tsx
1237
+ const chipGlowVariants = cva("", {
1238
+ variants: {
1239
+ color: {
1240
+ charcoal: "",
1241
+ red: "",
1242
+ green: "",
1243
+ blue: "",
1244
+ purple: "",
1245
+ yellow: "",
1246
+ pink: ""
1247
+ },
1248
+ glow: {
1249
+ true: "drop-shadow-[0px_0px_3px_var(--badge-glow)] animate-badge-glow motion-reduce:animate-none",
1250
+ false: ""
1251
+ }
1252
+ },
1253
+ compoundVariants: [
1254
+ {
1255
+ color: "charcoal",
1256
+ glow: true,
1257
+ class: "border-charcoal-600 [--badge-glow:var(--color-charcoal-600)]"
1258
+ },
1259
+ {
1260
+ color: "red",
1261
+ glow: true,
1262
+ class: "border-red-500 [--badge-glow:var(--color-red-500)]"
1263
+ },
1264
+ {
1265
+ color: "green",
1266
+ glow: true,
1267
+ class: "border-green-600 [--badge-glow:var(--color-green-600)]"
1268
+ },
1269
+ {
1270
+ color: "blue",
1271
+ glow: true,
1272
+ class: "border-blue-600 [--badge-glow:var(--color-blue-600)]"
1273
+ },
1274
+ {
1275
+ color: "purple",
1276
+ glow: true,
1277
+ class: "border-purple-600 [--badge-glow:var(--color-purple-600)]"
1278
+ },
1279
+ {
1280
+ color: "yellow",
1281
+ glow: true,
1282
+ class: "border-yellow-400 [--badge-glow:var(--color-yellow-400)]"
1283
+ },
1284
+ {
1285
+ color: "pink",
1286
+ glow: true,
1287
+ class: "border-pink-600 [--badge-glow:var(--color-pink-600)]"
1288
+ }
1289
+ ],
1290
+ defaultVariants: {
1291
+ color: "charcoal",
1292
+ glow: false
1293
+ }
1294
+ });
1295
+ /**
1296
+ * The trailing remove affordance for a `Chip` — a ghost icon button that
1297
+ * inherits the chip's text color and brightens on hover. Exported so the
1298
+ * combobox can reuse the exact treatment for its Base-UI-bound chips.
1299
+ */
1300
+ const ChipRemove = React$1.forwardRef((componentProps, forwardRef) => {
1301
+ const { className, children, ...props } = componentProps;
1302
+ return /* @__PURE__ */ jsx(Button, {
1303
+ ref: forwardRef,
1304
+ type: "button",
1305
+ variant: "ghost",
1306
+ size: "icon-sm",
1307
+ "data-slot": "chip-remove",
1308
+ className: cn("-ml-1 bg-transparent hover:bg-transparent dark:hover:bg-transparent text-inherit hover:text-inherit opacity-50 hover:opacity-100", className),
1309
+ ...props,
1310
+ children: children ?? /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none size-3.5" })
1311
+ });
1312
+ });
1313
+ ChipRemove.displayName = "ChipRemove";
1314
+ /**
1315
+ * A selected-value token for inputs / comboboxes. Composes `Badge` at the
1316
+ * fixed 24px size with a forced trailing remove (X) button. The chip body is
1317
+ * non-interactive — only the X reacts to hover. For combobox-bound chips that
1318
+ * must drive Base UI's selection state, see `ComboboxChip`.
1319
+ */
1320
+ const Chip = React$1.forwardRef((componentProps, forwardRef) => {
1321
+ const { className, children, color, tone, legacyColor, glow, ...props } = componentProps;
1322
+ const glowColor = legacyColor ? resolveTagColor(legacyColor).color : color;
1323
+ return /* @__PURE__ */ jsx(Badge, {
1324
+ ref: forwardRef,
1325
+ "data-slot": "chip",
1326
+ size: "lg",
1327
+ color,
1328
+ tone,
1329
+ legacyColor,
1330
+ className: cn("has-data-[slot=chip-remove]:pr-0 has-disabled:pointer-events-none has-disabled:opacity-50", chipGlowVariants({
1331
+ color: glowColor,
1332
+ glow
1333
+ }), className),
1334
+ ...props,
1335
+ children
1336
+ });
1337
+ });
1338
+ Chip.displayName = "Chip";
1339
+
1340
+ //#endregion
1341
+ //#region src/components/scroll-area.tsx
1342
+ function ScrollArea({ className, children, scrollFade = false, scrollbarGutter = false, ...props }) {
1343
+ return /* @__PURE__ */ jsxs(ScrollAreaPrimitive.Root, {
1344
+ className: cn("size-full min-h-0", className),
1345
+ ...props,
1346
+ children: [
1347
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Viewport, {
1348
+ className: cn("h-full rounded-[inherit] outline-none transition-shadows focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-has-overflow-y:overscroll-y-contain data-has-overflow-x:overscroll-x-contain", scrollFade && "mask-t-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-start)))] mask-b-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-end)))] mask-l-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-start)))] mask-r-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-end)))] [--fade-size:1.5rem]", scrollbarGutter && "data-has-overflow-y:pe-2.5 data-has-overflow-x:pb-2.5"),
1349
+ "data-slot": "scroll-area-viewport",
1350
+ children
1351
+ }),
1352
+ /* @__PURE__ */ jsx(ScrollBar, { orientation: "vertical" }),
1353
+ /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal" }),
1354
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, { "data-slot": "scroll-area-corner" })
1355
+ ]
1356
+ });
1357
+ }
1358
+ function ScrollBar({ className, orientation = "vertical", ...props }) {
1359
+ return /* @__PURE__ */ jsx(ScrollAreaPrimitive.Scrollbar, {
1360
+ className: cn("m-1 flex opacity-0 transition-opacity delay-300 data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 data-[orientation=horizontal]:flex-col data-hovering:opacity-100 data-scrolling:opacity-100 data-hovering:delay-0 data-scrolling:delay-0 data-hovering:duration-100 data-scrolling:duration-100", className),
1361
+ "data-slot": "scroll-area-scrollbar",
1362
+ orientation,
1363
+ ...props,
1364
+ children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.Thumb, {
1365
+ className: "relative flex-1 rounded-full bg-foreground/20",
1366
+ "data-slot": "scroll-area-thumb"
1367
+ })
1368
+ });
1369
+ }
1370
+
1371
+ //#endregion
1372
+ //#region src/components/filter.tsx
1373
+ /**
1374
+ * A removable active-filter token for a filter bar / toolbar — a dark charcoal
1375
+ * `Chip` with a trailing remove (X). Shows each applied filter above a
1376
+ * searchable data view (table / list); clicking the X clears that filter
1377
+ * (`onRemove`). Long values truncate with an ellipsis, capped at the Badge
1378
+ * `max-w-36` (144px). Compose inside a `FilterGroup` with a trailing
1379
+ * `FilterClearAllButton` (see the FilterBar story).
1380
+ */
1381
+ const Filter = React$1.forwardRef((componentProps, forwardRef) => {
1382
+ const { className, children, onRemove, removeLabel = "Remove filter" } = componentProps;
1383
+ return /* @__PURE__ */ jsxs(Chip, {
1384
+ ref: forwardRef,
1385
+ color: "charcoal",
1386
+ tone: "medium-dark",
1387
+ className,
1388
+ children: [children, /* @__PURE__ */ jsx(ChipRemove, {
1389
+ "aria-label": removeLabel,
1390
+ onClick: onRemove
1391
+ })]
1392
+ });
1393
+ });
1394
+ Filter.displayName = "Filter";
1395
+ /**
1396
+ * Layout container for a row of `Filter` chips (and a trailing
1397
+ * `FilterClearAllButton`). Always a single, non-wrapping row inside a
1398
+ * horizontal `ScrollArea` (inset scroll + edge fade) — it does not wrap onto
1399
+ * multiple lines.
1400
+ */
1401
+ const FilterGroup = React$1.forwardRef((componentProps, forwardRef) => {
1402
+ const { className, children, ...props } = componentProps;
1403
+ return /* @__PURE__ */ jsx("div", {
1404
+ "data-slot": "filter-group",
1405
+ className,
1406
+ children: /* @__PURE__ */ jsx(ScrollArea, {
1407
+ "data-slot": "filter-group-scroll-area",
1408
+ scrollFade: true,
1409
+ children: /* @__PURE__ */ jsx("div", {
1410
+ ref: forwardRef,
1411
+ "data-slot": "filter-group-container",
1412
+ className: "flex w-max items-center gap-2",
1413
+ ...props,
1414
+ children
1415
+ })
1416
+ })
1417
+ });
1418
+ });
1419
+ FilterGroup.displayName = "FilterGroup";
1420
+ /**
1421
+ * The trailing "Clear all filters" action for a `FilterGroup` — a ghost,
1422
+ * small `Button` with the styling pinned. Provide `onClick`; the label
1423
+ * defaults to "Clear all filters" (pass translated `children` to override).
1424
+ */
1425
+ const FilterClearAllButton = React$1.forwardRef((componentProps, forwardRef) => {
1426
+ const { className, children = "Clear all filters", ...props } = componentProps;
1427
+ return /* @__PURE__ */ jsx(Button, {
1428
+ ref: forwardRef,
1429
+ type: "button",
1430
+ variant: "ghost",
1431
+ size: "sm",
1432
+ "data-slot": "filter-clear-all",
1433
+ className,
1434
+ ...props,
1435
+ children
1436
+ });
1437
+ });
1438
+ FilterClearAllButton.displayName = "FilterClearAllButton";
1439
+
985
1440
  //#endregion
986
1441
  //#region src/components/collapsible.tsx
987
1442
  function Collapsible({ ...props }) {
@@ -1097,15 +1552,16 @@ function InputGroupTextarea({ className, ...props }) {
1097
1552
  //#endregion
1098
1553
  //#region src/components/combobox.tsx
1099
1554
  const Combobox = Combobox$1.Root;
1100
- function ComboboxValue({ ...props }) {
1555
+ function ComboboxValue(componentProps) {
1101
1556
  return /* @__PURE__ */ jsx(Combobox$1.Value, {
1102
1557
  "data-slot": "combobox-value",
1103
- ...props
1558
+ ...componentProps
1104
1559
  });
1105
1560
  }
1106
- const ComboboxTrigger = React$1.forwardRef(({ className, children, ...props }, ref) => {
1561
+ const ComboboxTrigger = React$1.forwardRef((componentProps, forwardRef) => {
1562
+ const { className, children, ...props } = componentProps;
1107
1563
  return /* @__PURE__ */ jsxs(Combobox$1.Trigger, {
1108
- ref,
1564
+ ref: forwardRef,
1109
1565
  "data-slot": "combobox-trigger",
1110
1566
  className: cn("[&_svg:not([class*='size-'])]:size-4", className),
1111
1567
  ...props,
@@ -1113,8 +1569,10 @@ const ComboboxTrigger = React$1.forwardRef(({ className, children, ...props }, r
1113
1569
  });
1114
1570
  });
1115
1571
  ComboboxTrigger.displayName = "ComboboxTrigger";
1116
- function ComboboxClear({ className, ...props }) {
1572
+ const ComboboxClear = React$1.forwardRef((componentProps, forwardRef) => {
1573
+ const { className, ...props } = componentProps;
1117
1574
  return /* @__PURE__ */ jsx(Combobox$1.Clear, {
1575
+ ref: forwardRef,
1118
1576
  "data-slot": "combobox-clear",
1119
1577
  render: /* @__PURE__ */ jsx(InputGroupButton, {
1120
1578
  variant: "ghost",
@@ -1124,10 +1582,12 @@ function ComboboxClear({ className, ...props }) {
1124
1582
  ...props,
1125
1583
  children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
1126
1584
  });
1127
- }
1128
- const ComboboxInput = React$1.forwardRef(({ className, children, disabled = false, showTrigger = true, showClear = false, ...props }, ref) => {
1585
+ });
1586
+ ComboboxClear.displayName = "ComboboxClear";
1587
+ const ComboboxInput = React$1.forwardRef((componentProps, forwardRef) => {
1588
+ const { className, children, disabled = false, showTrigger = true, showClear = false, ...props } = componentProps;
1129
1589
  return /* @__PURE__ */ jsxs(InputGroup, {
1130
- ref,
1590
+ ref: forwardRef,
1131
1591
  className: cn("w-auto", className),
1132
1592
  children: [
1133
1593
  /* @__PURE__ */ jsx(Combobox$1.Input, {
@@ -1150,7 +1610,8 @@ const ComboboxInput = React$1.forwardRef(({ className, children, disabled = fals
1150
1610
  });
1151
1611
  });
1152
1612
  ComboboxInput.displayName = "ComboboxInput";
1153
- function ComboboxContent({ className, side = "bottom", sideOffset = 6, align = "start", alignOffset = 0, anchor, ...props }) {
1613
+ const ComboboxContent = React$1.forwardRef((componentProps, forwardRef) => {
1614
+ const { className, side = "bottom", sideOffset = 6, align = "start", alignOffset = 0, anchor, ...props } = componentProps;
1154
1615
  return /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(Combobox$1.Positioner, {
1155
1616
  side,
1156
1617
  sideOffset,
@@ -1159,22 +1620,29 @@ function ComboboxContent({ className, side = "bottom", sideOffset = 6, align = "
1159
1620
  anchor,
1160
1621
  className: "isolate z-50",
1161
1622
  children: /* @__PURE__ */ jsx(Combobox$1.Popup, {
1623
+ ref: forwardRef,
1162
1624
  "data-slot": "combobox-content",
1163
1625
  "data-chips": !!anchor,
1164
1626
  className: cn("group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
1165
1627
  ...props
1166
1628
  })
1167
1629
  }) });
1168
- }
1169
- function ComboboxList({ className, ...props }) {
1630
+ });
1631
+ ComboboxContent.displayName = "ComboboxContent";
1632
+ const ComboboxList = React$1.forwardRef((componentProps, forwardRef) => {
1633
+ const { className, ...props } = componentProps;
1170
1634
  return /* @__PURE__ */ jsx(Combobox$1.List, {
1635
+ ref: forwardRef,
1171
1636
  "data-slot": "combobox-list",
1172
1637
  className: cn("no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 outline-hidden data-empty:p-0", className),
1173
1638
  ...props
1174
1639
  });
1175
- }
1176
- function ComboboxItem({ className, children, ...props }) {
1640
+ });
1641
+ ComboboxList.displayName = "ComboboxList";
1642
+ const ComboboxItem = React$1.forwardRef((componentProps, forwardRef) => {
1643
+ const { className, children, ...props } = componentProps;
1177
1644
  return /* @__PURE__ */ jsxs(Combobox$1.Item, {
1645
+ ref: forwardRef,
1178
1646
  "data-slot": "combobox-item",
1179
1647
  className: cn("relative flex w-full cursor-default items-center gap-2 rounded-md p-2 pr-8 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
1180
1648
  ...props,
@@ -1184,73 +1652,88 @@ function ComboboxItem({ className, children, ...props }) {
1184
1652
  children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" })
1185
1653
  })]
1186
1654
  });
1187
- }
1188
- function ComboboxGroup({ className, ...props }) {
1655
+ });
1656
+ ComboboxItem.displayName = "ComboboxItem";
1657
+ const ComboboxGroup = React$1.forwardRef((componentProps, forwardRef) => {
1658
+ const { className, ...props } = componentProps;
1189
1659
  return /* @__PURE__ */ jsx(Combobox$1.Group, {
1660
+ ref: forwardRef,
1190
1661
  "data-slot": "combobox-group",
1191
1662
  className: cn(className),
1192
1663
  ...props
1193
1664
  });
1194
- }
1195
- function ComboboxLabel({ className, ...props }) {
1665
+ });
1666
+ ComboboxGroup.displayName = "ComboboxGroup";
1667
+ const ComboboxLabel = React$1.forwardRef((componentProps, forwardRef) => {
1668
+ const { className, ...props } = componentProps;
1196
1669
  return /* @__PURE__ */ jsx(Combobox$1.GroupLabel, {
1670
+ ref: forwardRef,
1197
1671
  "data-slot": "combobox-label",
1198
1672
  className: cn("p-2 text-xs text-muted-foreground", className),
1199
1673
  ...props
1200
1674
  });
1201
- }
1202
- function ComboboxCollection({ ...props }) {
1675
+ });
1676
+ ComboboxLabel.displayName = "ComboboxLabel";
1677
+ function ComboboxCollection(componentProps) {
1203
1678
  return /* @__PURE__ */ jsx(Combobox$1.Collection, {
1204
1679
  "data-slot": "combobox-collection",
1205
- ...props
1680
+ ...componentProps
1206
1681
  });
1207
1682
  }
1208
- function ComboboxEmpty({ className, ...props }) {
1683
+ const ComboboxEmpty = React$1.forwardRef((componentProps, forwardRef) => {
1684
+ const { className, ...props } = componentProps;
1209
1685
  return /* @__PURE__ */ jsx(Combobox$1.Empty, {
1686
+ ref: forwardRef,
1210
1687
  "data-slot": "combobox-empty",
1211
1688
  className: cn("hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex", className),
1212
1689
  ...props
1213
1690
  });
1214
- }
1215
- function ComboboxSeparator({ className, ...props }) {
1691
+ });
1692
+ ComboboxEmpty.displayName = "ComboboxEmpty";
1693
+ const ComboboxSeparator = React$1.forwardRef((componentProps, forwardRef) => {
1694
+ const { className, ...props } = componentProps;
1216
1695
  return /* @__PURE__ */ jsx(Combobox$1.Separator, {
1696
+ ref: forwardRef,
1217
1697
  "data-slot": "combobox-separator",
1218
1698
  className: cn("-mx-1 my-1 h-px bg-border", className),
1219
1699
  ...props
1220
1700
  });
1221
- }
1222
- const ComboboxChips = React$1.forwardRef(({ className, ...props }, ref) => {
1701
+ });
1702
+ ComboboxSeparator.displayName = "ComboboxSeparator";
1703
+ const ComboboxChips = React$1.forwardRef((componentProps, forwardRef) => {
1704
+ const { className, ...props } = componentProps;
1223
1705
  return /* @__PURE__ */ jsx(Combobox$1.Chips, {
1224
- ref,
1706
+ ref: forwardRef,
1225
1707
  "data-slot": "combobox-chips",
1226
1708
  className: cn("flex min-h-10 flex-wrap items-center gap-1 rounded-md border border-input bg-transparent bg-clip-padding py-2 pl-3 pr-2 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40", className),
1227
1709
  ...props
1228
1710
  });
1229
1711
  });
1230
1712
  ComboboxChips.displayName = "ComboboxChips";
1231
- function ComboboxChip({ className, children, showRemove = true, ...props }) {
1713
+ const ComboboxChip = React$1.forwardRef(function ComboboxChip(componentProps, forwardRef) {
1714
+ const { className, children, showRemove = true, color, tone, legacyColor, ...props } = componentProps;
1232
1715
  return /* @__PURE__ */ jsxs(Combobox$1.Chip, {
1233
- "data-slot": "combobox-chip",
1234
- className: cn("flex h-6 w-fit items-center justify-center gap-1 rounded-md bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0", className),
1716
+ ref: forwardRef,
1717
+ render: /* @__PURE__ */ jsx(Chip, {
1718
+ color,
1719
+ tone,
1720
+ legacyColor
1721
+ }),
1722
+ className,
1235
1723
  ...props,
1236
- children: [children, showRemove && /* @__PURE__ */ jsx(Combobox$1.ChipRemove, {
1237
- render: /* @__PURE__ */ jsx(Button, {
1238
- variant: "ghost",
1239
- size: "icon-sm"
1240
- }),
1241
- className: "-ml-1 opacity-50 hover:opacity-100",
1242
- "data-slot": "combobox-chip-remove",
1243
- children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
1244
- })]
1724
+ children: [children, showRemove && /* @__PURE__ */ jsx(Combobox$1.ChipRemove, { render: /* @__PURE__ */ jsx(ChipRemove, {}) })]
1245
1725
  });
1246
- }
1247
- function ComboboxChipsInput({ className, ...props }) {
1726
+ });
1727
+ const ComboboxChipsInput = React$1.forwardRef(function ComboboxChipsInput(componentProps, forwardRef) {
1728
+ const { className, ...props } = componentProps;
1248
1729
  return /* @__PURE__ */ jsx(Combobox$1.Input, {
1730
+ ref: forwardRef,
1249
1731
  "data-slot": "combobox-chip-input",
1250
1732
  className: cn("min-w-16 flex-1 outline-none", className),
1251
1733
  ...props
1252
1734
  });
1253
- }
1735
+ });
1736
+ ComboboxChipsInput.displayName = "ComboboxChipsInput";
1254
1737
  function useComboboxAnchor() {
1255
1738
  return React$1.useRef(null);
1256
1739
  }
@@ -1515,37 +1998,6 @@ function DataTable({ columns, data, tableOptions, noResultsMessage = "No results
1515
1998
  }) }) })] });
1516
1999
  }
1517
2000
 
1518
- //#endregion
1519
- //#region src/components/scroll-area.tsx
1520
- function ScrollArea({ className, children, scrollFade = false, scrollbarGutter = false, ...props }) {
1521
- return /* @__PURE__ */ jsxs(ScrollAreaPrimitive.Root, {
1522
- className: cn("size-full min-h-0", className),
1523
- ...props,
1524
- children: [
1525
- /* @__PURE__ */ jsx(ScrollAreaPrimitive.Viewport, {
1526
- className: cn("h-full rounded-[inherit] outline-none transition-shadows focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background data-has-overflow-y:overscroll-y-contain data-has-overflow-x:overscroll-x-contain", scrollFade && "mask-t-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-start)))] mask-b-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-y-end)))] mask-l-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-start)))] mask-r-from-[calc(100%-min(var(--fade-size),var(--scroll-area-overflow-x-end)))] [--fade-size:1.5rem]", scrollbarGutter && "data-has-overflow-y:pe-2.5 data-has-overflow-x:pb-2.5"),
1527
- "data-slot": "scroll-area-viewport",
1528
- children
1529
- }),
1530
- /* @__PURE__ */ jsx(ScrollBar, { orientation: "vertical" }),
1531
- /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal" }),
1532
- /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, { "data-slot": "scroll-area-corner" })
1533
- ]
1534
- });
1535
- }
1536
- function ScrollBar({ className, orientation = "vertical", ...props }) {
1537
- return /* @__PURE__ */ jsx(ScrollAreaPrimitive.Scrollbar, {
1538
- className: cn("m-1 flex opacity-0 transition-opacity delay-300 data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 data-[orientation=horizontal]:flex-col data-hovering:opacity-100 data-scrolling:opacity-100 data-hovering:delay-0 data-scrolling:delay-0 data-hovering:duration-100 data-scrolling:duration-100", className),
1539
- "data-slot": "scroll-area-scrollbar",
1540
- orientation,
1541
- ...props,
1542
- children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.Thumb, {
1543
- className: "relative flex-1 rounded-full bg-foreground/20",
1544
- "data-slot": "scroll-area-thumb"
1545
- })
1546
- });
1547
- }
1548
-
1549
2001
  //#endregion
1550
2002
  //#region src/components/drawer.tsx
1551
2003
  const DrawerContext = createContext({ position: "bottom" });
@@ -3903,4 +4355,4 @@ function useAudioGauge(options = {}) {
3903
4355
  }
3904
4356
 
3905
4357
  //#endregion
3906
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertAction as BannerAction, AlertDescription, AlertDescription as BannerDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTitle as BannerTitle, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BadgeGroup, BadgeGroupCount, Banner, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CounterBadge, CountryFlag, DataTable, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBackdrop, DrawerBar, DrawerClose, DrawerContent, DrawerCreateHandle, DrawerDescription, DrawerFooter, DrawerHeader, DrawerMenu, DrawerMenuCheckboxItem, DrawerMenuGroup, DrawerMenuGroupLabel, DrawerMenuItem, DrawerMenuRadioGroup, DrawerMenuRadioItem, DrawerMenuSeparator, DrawerMenuTrigger, DrawerPanel, DrawerPopup, DrawerPortal, DrawerPrimitive, DrawerSwipeArea, DrawerTitle, DrawerTrigger, DrawerViewport, DropdownMenu, DropdownMenuAddon, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneActions, DropzoneContent, DropzoneDescription, DropzoneIcon, DropzoneTitle, DropzoneTrigger, EmojiPicker, EmojiPickerCategories, EmojiPickerContent, EmojiPickerTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FAB, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Gauge, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Label, List, ListCol, ListRow, NotificationQueueProvider, NotificationSlot, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RadioGroup, RadioGroupItem, ScrollArea, ScrollAreaPrimitive, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, badgeVariants, bannerVariants, buttonGroupVariants, buttonVariants, cn, counterBadgeVariants, fabVariants, selectTriggerVariants, spinnerVariants, toast, toggleVariants, useAudioGauge, useComboboxAnchor, useNotification, useNotificationQueue, useSidebar, useTheme };
4358
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertAction, AlertAction as BannerAction, AlertDescription, AlertDescription as BannerDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTitle as BannerTitle, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, BadgeGroup, BadgeGroupCount, Banner, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Chip, ChipRemove, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CounterBadge, CountryFlag, DataTable, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBackdrop, DrawerBar, DrawerClose, DrawerContent, DrawerCreateHandle, DrawerDescription, DrawerFooter, DrawerHeader, DrawerMenu, DrawerMenuCheckboxItem, DrawerMenuGroup, DrawerMenuGroupLabel, DrawerMenuItem, DrawerMenuRadioGroup, DrawerMenuRadioItem, DrawerMenuSeparator, DrawerMenuTrigger, DrawerPanel, DrawerPopup, DrawerPortal, DrawerPrimitive, DrawerSwipeArea, DrawerTitle, DrawerTrigger, DrawerViewport, DropdownMenu, DropdownMenuAddon, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneActions, DropzoneContent, DropzoneDescription, DropzoneIcon, DropzoneTitle, DropzoneTrigger, EmojiPicker, EmojiPickerCategories, EmojiPickerContent, EmojiPickerTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FAB, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Filter, FilterClearAllButton, FilterGroup, Gauge, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Label, List, ListCol, ListRow, NotificationQueueProvider, NotificationSlot, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RadioGroup, RadioGroupItem, ScrollArea, ScrollAreaPrimitive, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, bannerVariants, buttonGroupVariants, buttonVariants, cn, counterBadgeVariants, fabVariants, selectTriggerVariants, spinnerVariants, toast, toggleVariants, useAudioGauge, useComboboxAnchor, useNotification, useNotificationQueue, useSidebar, useTheme };