@codapet/design-system 0.8.6 → 0.8.8

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/AGENTS.md CHANGED
@@ -103,8 +103,11 @@ These are the foot-guns. Knowing them prevents most "why does my Button look wro
103
103
  ### Accordion
104
104
 
105
105
  - Adds a `variant` prop on `<Accordion>`: `default` (shadcn-equivalent, bottom-stripe items) or `outlined` (each item is its own bordered card with taller trigger and roomier padding). Reach for `variant="outlined"` on FAQ sections, settings panels, or any "stacked cards" pattern.
106
- - Variant propagates to children via context — set it once on the root, not on every `AccordionItem`/`Trigger`/`Content`.
107
- - Plus/Minus (or any custom) icons are opt-in via `collapsedIcon`/`expandedIcon` on `AccordionTrigger`. The default remains a rotating `ChevronDown`.
106
+ - Variant propagates to children via context — set it once on the root, not on every `AccordionItem`/`AccordionTrigger`/`AccordionContent`.
107
+ - `outlined` cards warm their border to `primary-stroke-default` on pointer hover, and their `AccordionContent` fades while it grows (250ms, soft ease). The `default` variant keeps the shadcn height-only motion. Both respect `prefers-reduced-motion`.
108
+ - `staggerReveal` on `<Accordion>` fades-and-rises every item in on mount, 80ms apart. Items only stagger if you pass `revealIndex={i}` to each `AccordionItem` — without it they all arrive together.
109
+ - Icons on `AccordionTrigger`: the default is a rotating `ChevronDown`; `icon="plus-minus"` switches to a two-bar + that morphs into a −; `iconClassName` resizes or recolours either built-in icon. `collapsedIcon`/`expandedIcon` still take any React node and win over `icon`. In the `outlined` variant a collapsed/expanded pair cross-rotates instead of hard-swapping.
110
+ - For a plain question/answer list, don't assemble these by hand — use `FaqAccordion` (see the components table).
108
111
 
109
112
  ### Dialog vs SmartDialog
110
113
 
@@ -152,6 +155,7 @@ These don't exist in shadcn — reach for them instead of building your own:
152
155
  | `AutoResizeTextarea` | Textarea that grows with content; `maxHeight` enables scroll. Handles RHF `setValue`/`reset` correctly. |
153
156
  | `ProgressBar` | Step-based bar; pass `currentStep` + `totalSteps`, or `value` (0–100) directly. |
154
157
  | `SmartDialog*` | Responsive Dialog↔Drawer (see above). |
158
+ | `FaqAccordion` | Data-driven FAQ list: pass `faqs` (`{ question, answer }[]`) and get the outlined Accordion with one item open at a time, a +/− morph icon, fade-while-growing answers and optional `staggerReveal`. `defaultOpenQuestion` opens a question on mount and re-opens whenever it changes. `questionClassName` / `answerClassName` / `itemClassName` restyle each slot. A string `answer` renders as a paragraph; pass a node for rich text. Prefer it over hand-assembling `Accordion*` for any question/answer array. |
155
159
  | `Typography`: `DisplayHeading`, `HeadingXL` … `HeadingXXS` (+ `*Medium` variants), `Body` | Use these instead of raw `<h1>`/`<p>` to inherit the right tokens (`font-serif italic` for display, `text-vibrant-text-heading` for headings, `text-vibrant-text-body` for body). Sizes are responsive (md: breakpoint baked in). |
156
160
  | `ThemeToggle` | Drop-in light/dark toggle. |
157
161
 
@@ -344,7 +348,8 @@ rather than reimplementing the classes: `buttonVariants`, `badgeVariants`,
344
348
  `progressBarVariants`, `tabsTriggerVariants`, `toggleVariants`,
345
349
  `bodyTextVariants`, `displayTextVariants`, `navigationMenuTriggerStyle`.
346
350
 
347
- **Exported types** — import with `import type`: `InputProps`, `TextareaProps`,
351
+ **Exported types** — import with `import type`: `AccordionProps`, `AccordionItemProps`,
352
+ `AccordionTriggerProps`, `FaqAccordionProps`, `FaqItem`, `InputProps`, `TextareaProps`,
348
353
  `SearchInputProps`, `SearchSuggestion`, `AlertBannerProps`,
349
354
  `BadgeActionableProps`, `BadgeInformativeProps`, `BadgeNumberProps`,
350
355
  `OptionCardProps`, `ProgressBarProps`, `TabsTriggerProps`, `TooltipContentProps`,
@@ -369,6 +374,8 @@ There are no other public exports, and no subpath imports: only
369
374
  - **Wrong default Button look** → you forgot `variant="primary"`/`size="md"` are not the same as shadcn's defaults; passing nothing gives you `primary` + `lg`.
370
375
  - **Toast looks generic** → you imported `toast` from `'sonner'` instead of from `@codapet/design-system`.
371
376
  - **Modal doesn't bottom-sheet on mobile** → you used `Dialog` instead of `SmartDialog`.
377
+ - **`AsyncAutocomplete` keeps stale results while refetching** → `loading` only replaces the list when there is nothing else to show. Once results are visible, a further keystroke leaves them in place and marks the listbox `aria-busy` plus `data-busy`, so the panel does not flash back to the spinner on every character. Style the refresh with `classNames={{ listbox: 'data-[busy=true]:opacity-60' }}` if you want visible feedback.
378
+ - **`AsyncAutocomplete` warns about a missing accessible name** → a combobox must be named, and a `placeholder` does not name one (ARIA practices are explicit about this). Pass `label` for a visible label — it renders a real `<label htmlFor>`, unlike `SearchInput`/`MultiSelectFreeText`, whose `label` prop is a styled `<div>` and is *not* programmatically associated — or pass `inputProps={{ 'aria-label': '…' }}` when the design has no visible label. `mandatory` sets `aria-required` and hides the asterisk from assistive tech.
372
379
  - **`AsyncAutocomplete` fires a request per keystroke** → it deliberately does not debounce. Debounce in your fetch layer (`usePlacesService({ debounce: 300 })`, your own hook) so cancellation and out-of-order responses stay with the code that owns them.
373
380
  - **`AsyncAutocomplete` shows results that don't match what you typed** → it renders `options` verbatim by design, because the server already filtered. If your list is static, use `SearchableSelect`/`DropdownSelect`, which filter client-side.
374
381
  - **Styling `AsyncAutocomplete`** → it does **not** follow the flat `*ClassName` convention that `DateInput`/`TimeInput` use, because it has twenty-odd stylable slots. `className` is the root wrapper; everything else lives in one `classNames` object: `field`, `input`, `leftIcon`, `clearButton`, `content`, `listbox`, `option`, `optionHighlighted`, `optionDisabled`, `optionIcon`, `optionLabel`, `optionDescription`, `loading`, `loadingSpinner`, `empty`, plus `sheetOverlay`, `sheetContent`, `sheetHeader`, `sheetCloseButton`, `sheetInput`, `sheetList`. All merge through `cn`, so `{ content: 'max-h-[420px]' }` replaces the built-in max-height rather than stacking with it. A single row can also carry its own `className` via the option object, and rows expose `data-highlighted` / `data-disabled` for parent-level selectors. Use `renderOption` to change row *structure*, `classNames` to change its *look*.
package/dist/index.d.mts CHANGED
@@ -45,14 +45,34 @@ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
45
45
  import { ClassValue } from 'clsx';
46
46
 
47
47
  type AccordionVariant = 'default' | 'outlined';
48
- declare function Accordion({ variant, className, ...props }: React$1.ComponentProps<typeof AccordionPrimitive.Root> & {
48
+ type AccordionProps = React$1.ComponentProps<typeof AccordionPrimitive.Root> & {
49
49
  variant?: AccordionVariant;
50
- }): react_jsx_runtime.JSX.Element;
51
- declare function AccordionItem({ className, ...props }: React$1.ComponentProps<typeof AccordionPrimitive.Item>): react_jsx_runtime.JSX.Element;
52
- declare function AccordionTrigger({ className, children, expandedIcon, collapsedIcon, ...props }: React$1.ComponentProps<typeof AccordionPrimitive.Trigger> & {
50
+ /**
51
+ * Fade-and-rise every item in on mount. Give each `AccordionItem` a
52
+ * `revealIndex` so they land 80ms apart; without it they arrive together.
53
+ * Skipped entirely under `prefers-reduced-motion`.
54
+ */
55
+ staggerReveal?: boolean;
56
+ };
57
+ declare function Accordion({ variant, staggerReveal, className, ...props }: AccordionProps): react_jsx_runtime.JSX.Element;
58
+ type AccordionItemProps = React$1.ComponentProps<typeof AccordionPrimitive.Item> & {
59
+ /** Position in the list; sets this item's delay when the root has `staggerReveal`. */
60
+ revealIndex?: number;
61
+ };
62
+ declare function AccordionItem({ className, style, revealIndex, ...props }: AccordionItemProps): react_jsx_runtime.JSX.Element;
63
+ type AccordionTriggerIcon = 'chevron' | 'plus-minus';
64
+ type AccordionTriggerProps = React$1.ComponentProps<typeof AccordionPrimitive.Trigger> & {
53
65
  expandedIcon?: React$1.ReactNode;
54
66
  collapsedIcon?: React$1.ReactNode;
55
- }): react_jsx_runtime.JSX.Element;
67
+ /**
68
+ * Built-in indicator, used when no custom icons are given. `chevron`
69
+ * rotates; `plus-minus` morphs a + into a − as the item opens.
70
+ */
71
+ icon?: AccordionTriggerIcon;
72
+ /** Merged onto the built-in indicator to resize or recolour it. */
73
+ iconClassName?: string;
74
+ };
75
+ declare function AccordionTrigger({ className, children, expandedIcon, collapsedIcon, icon, iconClassName, ...props }: AccordionTriggerProps): react_jsx_runtime.JSX.Element;
56
76
  declare function AccordionContent({ className, children, ...props }: React$1.ComponentProps<typeof AccordionPrimitive.Content>): react_jsx_runtime.JSX.Element;
57
77
 
58
78
  declare const alertVariants: (props?: ({
@@ -140,6 +160,8 @@ type AsyncAutocompleteInputProps = Omit<React$1.ComponentPropsWithoutRef<'input'
140
160
  interface AsyncAutocompleteClassNames {
141
161
  /** Wrapper around the input — also the popover's anchor. */
142
162
  field?: string;
163
+ /** The visible label element. */
164
+ label?: string;
143
165
  /** The text input itself. */
144
166
  input?: string;
145
167
  /** Left icon wrapper inside the input. */
@@ -202,7 +224,14 @@ interface AsyncAutocompleteProps<TData = unknown> {
202
224
  * `formatted_address`) or clear the field. Drive `value` yourself.
203
225
  */
204
226
  onSelect: (option: AsyncAutocompleteOption<TData>) => void;
205
- /** In-flight request. Replaces the rows with a spinner. */
227
+ /**
228
+ * A request is in flight.
229
+ *
230
+ * The spinner row only replaces the list when there is nothing else to show.
231
+ * If results are already on screen they stay put and the listbox is marked
232
+ * `aria-busy` / `data-busy` instead — so typing another character does not
233
+ * flash the panel back to "Searching…".
234
+ */
206
235
  loading?: boolean;
207
236
  /** Controlled input text. */
208
237
  value?: string;
@@ -217,6 +246,17 @@ interface AsyncAutocompleteProps<TData = unknown> {
217
246
  */
218
247
  onClear?: () => void;
219
248
  placeholder?: string;
249
+ /**
250
+ * Visible label, rendered above the field and wired to it with `htmlFor`.
251
+ *
252
+ * A combobox **must** have an accessible name — the ARIA practices are
253
+ * explicit that a placeholder is not one. Provide either this, or an
254
+ * `aria-label`/`aria-labelledby` through `inputProps`. In development the
255
+ * component warns when neither is present.
256
+ */
257
+ label?: string;
258
+ /** Appends a red asterisk to `label`. */
259
+ mandatory?: boolean;
220
260
  /** Decorative leading icon — `<MapPin />`, `<Stethoscope />`, … */
221
261
  leftIcon?: React$1.ReactNode;
222
262
  /** Fixed height: `sm` 40px · `md` 48px (default) · `lg` 56px. */
@@ -241,6 +281,10 @@ interface AsyncAutocompleteProps<TData = unknown> {
241
281
  * for stacked two-line rows, avatars, or bold match highlighting — the
242
282
  * wrapper, `role="option"`, ids, highlight background and click/keyboard
243
283
  * wiring stay with the component.
284
+ *
285
+ * Keep the content non-interactive: it renders inside `role="option"`, and a
286
+ * nested button or link there is both invalid and unreachable by keyboard,
287
+ * since the row is driven by `aria-activedescendant` rather than focus.
244
288
  */
245
289
  renderOption?: (option: AsyncAutocompleteOption<TData>, state: AsyncAutocompleteOptionState) => React$1.ReactNode;
246
290
  /** Default leading icon for rows without their own `option.icon`. */
@@ -280,7 +324,7 @@ interface AsyncAutocompleteProps<TData = unknown> {
280
324
  /** Per-slot class overrides. See `AsyncAutocompleteClassNames`. */
281
325
  classNames?: AsyncAutocompleteClassNames;
282
326
  }
283
- declare function AsyncAutocomplete<TData = unknown>({ options, onSearch, onSelect, loading, value: valueProp, defaultValue, onValueChange, onClear, placeholder, leftIcon, size, error, disabled, inputRef, inputProps, mobileVariant, renderOption, optionIcon, emptyMessage, emptyState, loadingMessage, clearIcon, clearLabel, sheetTitle, sheetCloseIcon, sheetCloseLabel, open: openProp, defaultOpen, onOpenChange, idPrefix, className, classNames }: AsyncAutocompleteProps<TData>): react_jsx_runtime.JSX.Element;
327
+ declare function AsyncAutocomplete<TData = unknown>({ options, onSearch, onSelect, loading, value: valueProp, defaultValue, onValueChange, onClear, placeholder, label, mandatory, leftIcon, size, error, disabled, inputRef, inputProps, mobileVariant, renderOption, optionIcon, emptyMessage, emptyState, loadingMessage, clearIcon, clearLabel, sheetTitle, sheetCloseIcon, sheetCloseLabel, open: openProp, defaultOpen, onOpenChange, idPrefix, className, classNames }: AsyncAutocompleteProps<TData>): react_jsx_runtime.JSX.Element;
284
328
 
285
329
  interface TextareaProps extends Omit<React$1.ComponentProps<'textarea'>, 'size'> {
286
330
  error?: boolean;
@@ -647,6 +691,33 @@ interface DropdownSelectOptionProps extends React$1.ComponentProps<'div'> {
647
691
  }
648
692
  declare function DropdownSelectOption({ className, value: optionValue, label, disabled: optionDisabled, children, ...props }: DropdownSelectOptionProps): react_jsx_runtime.JSX.Element;
649
693
 
694
+ interface FaqItem {
695
+ question: string;
696
+ /** A plain string renders as one paragraph; pass a node for rich text. */
697
+ answer: React$1.ReactNode;
698
+ }
699
+ interface FaqAccordionProps {
700
+ faqs: FaqItem[];
701
+ className?: string;
702
+ /** Fade-and-rise the questions in on mount, 80ms apart. */
703
+ staggerReveal?: boolean;
704
+ /** Question text to open on mount, and again whenever this value changes. */
705
+ defaultOpenQuestion?: string;
706
+ /** Merged onto every question label. */
707
+ questionClassName?: string;
708
+ /** Merged onto every answer body. */
709
+ answerClassName?: string;
710
+ /** Merged onto every item card. */
711
+ itemClassName?: string;
712
+ }
713
+ /**
714
+ * Data-driven FAQ list on the outlined Accordion: one question open at a
715
+ * time, a + that morphs into a −, and a fade-while-growing answer. Reach for
716
+ * this over hand-assembling `Accordion*` whenever the content is a plain
717
+ * question/answer array.
718
+ */
719
+ declare function FaqAccordion({ faqs, className, staggerReveal, defaultOpenQuestion, questionClassName, answerClassName, itemClassName }: FaqAccordionProps): react_jsx_runtime.JSX.Element;
720
+
650
721
  declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: react_hook_form.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React$1.JSX.Element;
651
722
  declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
652
723
  declare const useFormField: () => {
@@ -1154,4 +1225,4 @@ declare function cn(...inputs: ClassValue[]): string;
1154
1225
 
1155
1226
  declare function useIsMobile(): boolean;
1156
1227
 
1157
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertBanner, type AlertBannerProps, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, AsyncAutocomplete, type AsyncAutocompleteClassNames, type AsyncAutocompleteInputProps, type AsyncAutocompleteOption, type AsyncAutocompleteOptionState, type AsyncAutocompleteProps, AutoResizeTextarea, Avatar, AvatarFallback, AvatarImage, Badge, BadgeActionable, type BadgeActionableProps, BadgeInformative, BadgeInformativeGroup, BadgeInformativeItem, type BadgeInformativeProps, BadgeNumber, type BadgeNumberProps, Body, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type DateFormat, DateInput, type DateInputProps, DateRangeInput, type DateRangeInputProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DisplayHeading, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownSelect, DropdownSelectContent, type DropdownSelectContentProps, DropdownSelectLabel, type DropdownSelectLabelProps, DropdownSelectOption, type DropdownSelectOptionProps, type DropdownSelectProps, DropdownSelectTrigger, type DropdownSelectTriggerProps, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HeadingL, HeadingLMedium, HeadingM, HeadingMMedium, HeadingS, HeadingSMedium, HeadingXL, HeadingXLMedium, HeadingXS, HeadingXSMedium, HeadingXXS, HeadingXXSMedium, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MultiSelectFreeText, type MultiSelectFreeTextOption, type MultiSelectFreeTextProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, OptionCard, type OptionCardProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, ProgressBar, type ProgressBarProps, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichTooltipContent, type RichTooltipContentProps, type RichTooltipVariant, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SearchSuggestion, SearchableSelect, SearchableSelectContent, SearchableSelectEmpty, SearchableSelectGroup, SearchableSelectItem, type SearchableSelectOption, type SearchableSelectProps, SearchableSelectTrigger, 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, SmartDialog, SmartDialogClose, SmartDialogContent, SmartDialogDescription, SmartDialogFooter, SmartDialogHeader, SmartDialogTitle, SmartDialogTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, type TabsTriggerProps, Textarea, type TextareaProps, ThemeProvider, ThemeToggle, type TimeFormat, TimeInput, type TimeInputProps, type TimeValue, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, type TooltipContentProps, TooltipProvider, TooltipTrigger, alertBannerVariants, badgeActionableVariants, badgeInformativeVariants, badgeNumberVariants, badgeVariants, bodyTextVariants, buttonVariants, cn, displayTextVariants, inputVariants, labelTextVariants, navigationMenuTriggerStyle, optionCardVariants, progressBarVariants, tabsTriggerVariants, toggleVariants, useFormField, useIsMobile, useSidebar };
1228
+ export { Accordion, AccordionContent, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, AlertBanner, type AlertBannerProps, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, AsyncAutocomplete, type AsyncAutocompleteClassNames, type AsyncAutocompleteInputProps, type AsyncAutocompleteOption, type AsyncAutocompleteOptionState, type AsyncAutocompleteProps, AutoResizeTextarea, Avatar, AvatarFallback, AvatarImage, Badge, BadgeActionable, type BadgeActionableProps, BadgeInformative, BadgeInformativeGroup, BadgeInformativeItem, type BadgeInformativeProps, BadgeNumber, type BadgeNumberProps, Body, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type DateFormat, DateInput, type DateInputProps, DateRangeInput, type DateRangeInputProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DisplayHeading, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownSelect, DropdownSelectContent, type DropdownSelectContentProps, DropdownSelectLabel, type DropdownSelectLabelProps, DropdownSelectOption, type DropdownSelectOptionProps, type DropdownSelectProps, DropdownSelectTrigger, type DropdownSelectTriggerProps, FaqAccordion, type FaqAccordionProps, type FaqItem, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HeadingL, HeadingLMedium, HeadingM, HeadingMMedium, HeadingS, HeadingSMedium, HeadingXL, HeadingXLMedium, HeadingXS, HeadingXSMedium, HeadingXXS, HeadingXXSMedium, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MultiSelectFreeText, type MultiSelectFreeTextOption, type MultiSelectFreeTextProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, OptionCard, type OptionCardProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, ProgressBar, type ProgressBarProps, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichTooltipContent, type RichTooltipContentProps, type RichTooltipVariant, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SearchSuggestion, SearchableSelect, SearchableSelectContent, SearchableSelectEmpty, SearchableSelectGroup, SearchableSelectItem, type SearchableSelectOption, type SearchableSelectProps, SearchableSelectTrigger, 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, SmartDialog, SmartDialogClose, SmartDialogContent, SmartDialogDescription, SmartDialogFooter, SmartDialogHeader, SmartDialogTitle, SmartDialogTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, type TabsTriggerProps, Textarea, type TextareaProps, ThemeProvider, ThemeToggle, type TimeFormat, TimeInput, type TimeInputProps, type TimeValue, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, type TooltipContentProps, TooltipProvider, TooltipTrigger, alertBannerVariants, badgeActionableVariants, badgeInformativeVariants, badgeNumberVariants, badgeVariants, bodyTextVariants, buttonVariants, cn, displayTextVariants, inputVariants, labelTextVariants, navigationMenuTriggerStyle, optionCardVariants, progressBarVariants, tabsTriggerVariants, toggleVariants, useFormField, useIsMobile, useSidebar };