@fanvue/ui 1.17.2 → 1.18.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.
Files changed (79) hide show
  1. package/dist/cjs/components/Accordion/Accordion.cjs +29 -0
  2. package/dist/cjs/components/Accordion/Accordion.cjs.map +1 -0
  3. package/dist/cjs/components/Accordion/AccordionContent.cjs +44 -0
  4. package/dist/cjs/components/Accordion/AccordionContent.cjs.map +1 -0
  5. package/dist/cjs/components/Accordion/AccordionItem.cjs +40 -0
  6. package/dist/cjs/components/Accordion/AccordionItem.cjs.map +1 -0
  7. package/dist/cjs/components/Accordion/AccordionTrigger.cjs +55 -0
  8. package/dist/cjs/components/Accordion/AccordionTrigger.cjs.map +1 -0
  9. package/dist/cjs/components/Autocomplete/Autocomplete.cjs +239 -0
  10. package/dist/cjs/components/Autocomplete/Autocomplete.cjs.map +1 -0
  11. package/dist/cjs/components/Autocomplete/AutocompleteDropdownContent.cjs +52 -0
  12. package/dist/cjs/components/Autocomplete/AutocompleteDropdownContent.cjs.map +1 -0
  13. package/dist/cjs/components/Autocomplete/AutocompleteOptionItem.cjs +53 -0
  14. package/dist/cjs/components/Autocomplete/AutocompleteOptionItem.cjs.map +1 -0
  15. package/dist/cjs/components/Autocomplete/AutocompleteTag.cjs +36 -0
  16. package/dist/cjs/components/Autocomplete/AutocompleteTag.cjs.map +1 -0
  17. package/dist/cjs/components/Autocomplete/constants.cjs +15 -0
  18. package/dist/cjs/components/Autocomplete/constants.cjs.map +1 -0
  19. package/dist/cjs/components/Autocomplete/useAutocomplete.cjs +284 -0
  20. package/dist/cjs/components/Autocomplete/useAutocomplete.cjs.map +1 -0
  21. package/dist/cjs/components/Avatar/Avatar.cjs +7 -7
  22. package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
  23. package/dist/cjs/components/BottomNavigation/BottomNavigation.cjs +68 -0
  24. package/dist/cjs/components/BottomNavigation/BottomNavigation.cjs.map +1 -0
  25. package/dist/cjs/components/BottomNavigation/BottomNavigationAction.cjs +79 -0
  26. package/dist/cjs/components/BottomNavigation/BottomNavigationAction.cjs.map +1 -0
  27. package/dist/cjs/components/Chip/Chip.cjs +1 -8
  28. package/dist/cjs/components/Chip/Chip.cjs.map +1 -1
  29. package/dist/cjs/components/Dialog/Dialog.cjs +170 -0
  30. package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -0
  31. package/dist/cjs/components/Drawer/Drawer.cjs +151 -0
  32. package/dist/cjs/components/Drawer/Drawer.cjs.map +1 -0
  33. package/dist/cjs/components/MobileStepper/MobileStepper.cjs +136 -0
  34. package/dist/cjs/components/MobileStepper/MobileStepper.cjs.map +1 -0
  35. package/dist/cjs/components/ProgressBar/ProgressBar.cjs +2 -0
  36. package/dist/cjs/components/ProgressBar/ProgressBar.cjs.map +1 -1
  37. package/dist/cjs/index.cjs +37 -0
  38. package/dist/cjs/index.cjs.map +1 -1
  39. package/dist/components/Accordion/Accordion.mjs +11 -0
  40. package/dist/components/Accordion/Accordion.mjs.map +1 -0
  41. package/dist/components/Accordion/AccordionContent.mjs +26 -0
  42. package/dist/components/Accordion/AccordionContent.mjs.map +1 -0
  43. package/dist/components/Accordion/AccordionItem.mjs +22 -0
  44. package/dist/components/Accordion/AccordionItem.mjs.map +1 -0
  45. package/dist/components/Accordion/AccordionTrigger.mjs +37 -0
  46. package/dist/components/Accordion/AccordionTrigger.mjs.map +1 -0
  47. package/dist/components/Autocomplete/Autocomplete.mjs +221 -0
  48. package/dist/components/Autocomplete/Autocomplete.mjs.map +1 -0
  49. package/dist/components/Autocomplete/AutocompleteDropdownContent.mjs +52 -0
  50. package/dist/components/Autocomplete/AutocompleteDropdownContent.mjs.map +1 -0
  51. package/dist/components/Autocomplete/AutocompleteOptionItem.mjs +53 -0
  52. package/dist/components/Autocomplete/AutocompleteOptionItem.mjs.map +1 -0
  53. package/dist/components/Autocomplete/AutocompleteTag.mjs +36 -0
  54. package/dist/components/Autocomplete/AutocompleteTag.mjs.map +1 -0
  55. package/dist/components/Autocomplete/constants.mjs +15 -0
  56. package/dist/components/Autocomplete/constants.mjs.map +1 -0
  57. package/dist/components/Autocomplete/useAutocomplete.mjs +267 -0
  58. package/dist/components/Autocomplete/useAutocomplete.mjs.map +1 -0
  59. package/dist/components/Avatar/Avatar.mjs +7 -7
  60. package/dist/components/Avatar/Avatar.mjs.map +1 -1
  61. package/dist/components/BottomNavigation/BottomNavigation.mjs +51 -0
  62. package/dist/components/BottomNavigation/BottomNavigation.mjs.map +1 -0
  63. package/dist/components/BottomNavigation/BottomNavigationAction.mjs +62 -0
  64. package/dist/components/BottomNavigation/BottomNavigationAction.mjs.map +1 -0
  65. package/dist/components/Chip/Chip.mjs +1 -8
  66. package/dist/components/Chip/Chip.mjs.map +1 -1
  67. package/dist/components/Dialog/Dialog.mjs +152 -0
  68. package/dist/components/Dialog/Dialog.mjs.map +1 -0
  69. package/dist/components/Drawer/Drawer.mjs +133 -0
  70. package/dist/components/Drawer/Drawer.mjs.map +1 -0
  71. package/dist/components/MobileStepper/MobileStepper.mjs +119 -0
  72. package/dist/components/MobileStepper/MobileStepper.mjs.map +1 -0
  73. package/dist/components/ProgressBar/ProgressBar.mjs +2 -0
  74. package/dist/components/ProgressBar/ProgressBar.mjs.map +1 -1
  75. package/dist/index.d.ts +510 -0
  76. package/dist/index.mjs +37 -0
  77. package/dist/index.mjs.map +1 -1
  78. package/dist/styles/theme.css +26 -0
  79. package/package.json +5 -2
package/dist/index.d.ts CHANGED
@@ -1,7 +1,10 @@
1
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
1
2
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
2
3
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
3
4
  import { ClassValue } from 'clsx';
4
5
  import { default as default_2 } from 'react';
6
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
7
+ import { JSX } from 'react/jsx-runtime';
5
8
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
6
9
  import * as React_2 from 'react';
7
10
  import * as SelectPrimitive from '@radix-ui/react-select';
@@ -12,6 +15,61 @@ import * as TabsPrimitive from '@radix-ui/react-tabs';
12
15
  import * as ToastPrimitive from '@radix-ui/react-toast';
13
16
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
14
17
 
18
+ /**
19
+ * Root container for an accordion interface. Manages the expand/collapse state
20
+ * and coordinates {@link AccordionItem}, {@link AccordionTrigger}, and {@link AccordionContent}.
21
+ *
22
+ * Built on Radix UI `Accordion`.
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * <Accordion type="single" collapsible>
27
+ * <AccordionItem value="item-1">
28
+ * <AccordionTrigger>Section 1</AccordionTrigger>
29
+ * <AccordionContent>Content 1</AccordionContent>
30
+ * </AccordionItem>
31
+ * <AccordionItem value="item-2">
32
+ * <AccordionTrigger>Section 2</AccordionTrigger>
33
+ * <AccordionContent>Content 2</AccordionContent>
34
+ * </AccordionItem>
35
+ * </Accordion>
36
+ * ```
37
+ */
38
+ export declare const Accordion: React_2.ForwardRefExoticComponent<AccordionProps & React_2.RefAttributes<HTMLDivElement>>;
39
+
40
+ /** Renders the collapsible content panel for an {@link AccordionItem}. Animates open and closed. */
41
+ export declare const AccordionContent: React_2.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & {
42
+ /** Remove the default inner padding (`px-3 pb-3`). Useful when you need custom content layout. */
43
+ noPadding?: boolean;
44
+ } & React_2.RefAttributes<HTMLDivElement>>;
45
+
46
+ /** Props for the {@link AccordionContent} panel component. */
47
+ export declare type AccordionContentProps = React_2.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> & {
48
+ /** Remove the default inner padding (`px-3 pb-3`). Useful when you need custom content layout. */
49
+ noPadding?: boolean;
50
+ };
51
+
52
+ /** A single collapsible section within an {@link Accordion}. Contains an {@link AccordionTrigger} and {@link AccordionContent}. */
53
+ export declare const AccordionItem: React_2.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;
54
+
55
+ /** Props for the {@link AccordionItem} component. */
56
+ export declare type AccordionItemProps = React_2.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>;
57
+
58
+ /** Props for the {@link Accordion} root component. Extends Radix `Accordion.Root` props. */
59
+ export declare type AccordionProps = React_2.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;
60
+
61
+ /** An interactive button that toggles the visibility of its associated {@link AccordionContent} panel. */
62
+ export declare const AccordionTrigger: React_2.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React_2.RefAttributes<HTMLButtonElement>, "ref"> & {
63
+ /** Custom icon element. Defaults to `ChevronDownIcon`. Pass `null` to suppress the icon entirely. */
64
+ icon?: React_2.ReactNode | null;
65
+ } & React_2.RefAttributes<HTMLButtonElement>>;
66
+
67
+ /** Props for the {@link AccordionTrigger} button component. */
68
+ export declare type AccordionTriggerProps = React_2.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> & {
69
+ /** Custom icon element. Defaults to `ChevronDownIcon`. Pass `null` to suppress the icon entirely. */
70
+ icon?: React_2.ReactNode | null;
71
+ };
72
+
15
73
  export declare const AddIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
16
74
  className?: string;
17
75
  } & React_2.RefAttributes<SVGSVGElement>>;
@@ -150,6 +208,75 @@ export declare interface AudioValidationError {
150
208
  message: string;
151
209
  }
152
210
 
211
+ export declare const Autocomplete: React_2.ForwardRefExoticComponent<AutocompleteProps & React_2.RefAttributes<HTMLInputElement>>;
212
+
213
+ declare interface AutocompleteBaseProps {
214
+ label?: string;
215
+ "aria-label"?: string;
216
+ "aria-labelledby"?: string;
217
+ helperText?: string;
218
+ /** @default "48" */
219
+ size?: AutocompleteSize;
220
+ /** @default false */
221
+ error?: boolean;
222
+ errorMessage?: string;
223
+ placeholder?: string;
224
+ leftIcon?: React_2.ReactNode;
225
+ /** @default false */
226
+ fullWidth?: boolean;
227
+ /** @default false */
228
+ disabled?: boolean;
229
+ /** @default false */
230
+ clearable?: boolean;
231
+ clearAriaLabel?: string;
232
+ id?: string;
233
+ className?: string;
234
+ options: AutocompleteOption[];
235
+ inputValue?: string;
236
+ onInputChange?: (value: string) => void;
237
+ filterFn?: (option: AutocompleteOption, query: string) => boolean;
238
+ /** @default false */
239
+ creatable?: boolean;
240
+ creatableLabel?: (inputValue: string) => string;
241
+ onCreate?: (inputValue: string) => void;
242
+ /** @default false */
243
+ loading?: boolean;
244
+ loadingText?: string;
245
+ emptyText?: string;
246
+ renderOption?: (option: AutocompleteOption, state: {
247
+ selected: boolean;
248
+ active: boolean;
249
+ }) => React_2.ReactNode;
250
+ renderTag?: (option: AutocompleteOption, onRemove: () => void) => React_2.ReactNode;
251
+ open?: boolean;
252
+ defaultOpen?: boolean;
253
+ onOpenChange?: (open: boolean) => void;
254
+ }
255
+
256
+ declare interface AutocompleteMultiProps extends AutocompleteBaseProps {
257
+ multiple: true;
258
+ value?: string[];
259
+ defaultValue?: string[];
260
+ onChange?: (values: string[]) => void;
261
+ }
262
+
263
+ export declare interface AutocompleteOption {
264
+ value: string;
265
+ label?: string;
266
+ disabled?: boolean;
267
+ }
268
+
269
+ export declare type AutocompleteProps = AutocompleteSingleProps | AutocompleteMultiProps;
270
+
271
+ declare interface AutocompleteSingleProps extends AutocompleteBaseProps {
272
+ multiple?: false;
273
+ value?: string | null;
274
+ defaultValue?: string | null;
275
+ onChange?: (value: string | null) => void;
276
+ }
277
+
278
+ export declare type AutocompleteSize = "48" | "40" | "32";
279
+
153
280
  /**
154
281
  * Displays a user avatar with optional online indicator, platinum border, and
155
282
  * NSFW blur. Pass `src` and `fallback` for the simple API, or compose your own
@@ -254,6 +381,36 @@ export declare const BoltIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttr
254
381
  className?: string;
255
382
  } & React_2.RefAttributes<SVGSVGElement>>;
256
383
 
384
+ export declare const BottomNavigation: React_2.ForwardRefExoticComponent<BottomNavigationProps & React_2.RefAttributes<HTMLElement>>;
385
+
386
+ export declare const BottomNavigationAction: React_2.ForwardRefExoticComponent<BottomNavigationActionProps & React_2.RefAttributes<HTMLButtonElement>>;
387
+
388
+ export declare interface BottomNavigationActionProps extends Omit<React_2.ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
389
+ /** Unique value that identifies this action. */
390
+ value: string;
391
+ /** Icon element displayed above the label. */
392
+ icon: React_2.ReactElement;
393
+ /** Text label displayed below the icon. */
394
+ label?: string;
395
+ /** Optional badge element (e.g. {@link Count}) rendered at the top-end corner of the icon. */
396
+ badge?: React_2.ReactNode;
397
+ /** Merge props onto a child element instead of rendering a `<button>`. @default false */
398
+ asChild?: boolean;
399
+ }
400
+
401
+ export declare interface BottomNavigationProps extends React_2.HTMLAttributes<HTMLElement> {
402
+ /** The currently selected action value. */
403
+ value?: string;
404
+ /** Called when the selected action changes. */
405
+ onValueChange?: (value: string) => void;
406
+ /** When `true`, labels are only shown on the active action. @default false */
407
+ showLabelsOnlyWhenActive?: boolean;
408
+ /** When `true`, all labels are hidden. @default false */
409
+ hideLabels?: boolean;
410
+ /** When `true`, the navigation bar is hidden on viewports wider than `md` (768 px). @default false */
411
+ hideOnDesktop?: boolean;
412
+ }
413
+
257
414
  /**
258
415
  * Root navigation wrapper for the breadcrumb trail.
259
416
  *
@@ -617,6 +774,147 @@ export declare const CrownIcon: React_2.ForwardRefExoticComponent<React_2.SVGAtt
617
774
  className?: string;
618
775
  } & React_2.RefAttributes<SVGSVGElement>>;
619
776
 
777
+ /** Root component that manages open/close state for a dialog. */
778
+ export declare const Dialog: React_2.FC<DialogPrimitive.DialogProps>;
779
+
780
+ /**
781
+ * Scrollable content area (slot) between the header and footer.
782
+ * Grows to fill available space and scrolls when content overflows.
783
+ */
784
+ export declare const DialogBody: React_2.ForwardRefExoticComponent<DialogBodyProps & React_2.RefAttributes<HTMLDivElement>>;
785
+
786
+ export declare interface DialogBodyProps extends React_2.HTMLAttributes<HTMLDivElement> {
787
+ }
788
+
789
+ /** Convenience alias for Radix `Dialog.Close`. Closes the dialog when clicked. */
790
+ export declare const DialogClose: React_2.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React_2.RefAttributes<HTMLButtonElement>>;
791
+
792
+ /** Props for the {@link DialogClose} component. */
793
+ export declare type DialogCloseProps = React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>;
794
+
795
+ /**
796
+ * The dialog panel rendered inside a portal. Includes the overlay by default.
797
+ *
798
+ * On mobile viewports (<640px), the dialog slides up from the bottom as a sheet
799
+ * with top-only border radius. On larger viewports it renders centered with
800
+ * full border radius.
801
+ *
802
+ * @example
803
+ * ```tsx
804
+ * <Dialog>
805
+ * <DialogTrigger asChild>
806
+ * <Button>Open</Button>
807
+ * </DialogTrigger>
808
+ * <DialogContent>
809
+ * <DialogHeader>
810
+ * <DialogTitle>Title</DialogTitle>
811
+ * </DialogHeader>
812
+ * <DialogBody>Content here</DialogBody>
813
+ * <DialogFooter>
814
+ * <DialogClose asChild>
815
+ * <Button variant="secondary">Cancel</Button>
816
+ * </DialogClose>
817
+ * <Button>Accept</Button>
818
+ * </DialogFooter>
819
+ * </DialogContent>
820
+ * </Dialog>
821
+ * ```
822
+ */
823
+ export declare const DialogContent: React_2.ForwardRefExoticComponent<DialogContentProps & React_2.RefAttributes<HTMLDivElement>>;
824
+
825
+ export declare interface DialogContentProps extends React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {
826
+ /**
827
+ * Width preset for the dialog.
828
+ * - `"sm"` — 400px max-width (confirmations, simple forms)
829
+ * - `"md"` — 440px max-width (default, standard dialogs)
830
+ * - `"lg"` — 600px max-width (complex content, tables)
831
+ *
832
+ * @default "md"
833
+ */
834
+ size?: "sm" | "md" | "lg";
835
+ /** When true, renders overlay automatically. @default true */
836
+ overlay?: boolean;
837
+ }
838
+
839
+ /** Accessible description for the dialog. Rendered as secondary text. */
840
+ export declare const DialogDescription: React_2.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React_2.RefAttributes<HTMLParagraphElement>, "ref"> & React_2.RefAttributes<HTMLParagraphElement>>;
841
+
842
+ /** Props for the {@link DialogDescription} component. */
843
+ export declare type DialogDescriptionProps = React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>;
844
+
845
+ /**
846
+ * Footer bar for the dialog. Typically contains action buttons.
847
+ * Children are laid out in a horizontal row with equal flex-basis.
848
+ */
849
+ export declare const DialogFooter: React_2.ForwardRefExoticComponent<DialogFooterProps & React_2.RefAttributes<HTMLDivElement>>;
850
+
851
+ export declare interface DialogFooterProps extends React_2.HTMLAttributes<HTMLDivElement> {
852
+ }
853
+
854
+ /**
855
+ * Header bar for the dialog. Renders the title with an optional back arrow
856
+ * and close button.
857
+ *
858
+ * @example
859
+ * ```tsx
860
+ * <DialogHeader>
861
+ * <DialogTitle>Settings</DialogTitle>
862
+ * </DialogHeader>
863
+ *
864
+ * <DialogHeader showBack onBack={() => setStep(0)}>
865
+ * <DialogTitle>Step 2</DialogTitle>
866
+ * </DialogHeader>
867
+ * ```
868
+ */
869
+ export declare const DialogHeader: React_2.ForwardRefExoticComponent<DialogHeaderProps & React_2.RefAttributes<HTMLDivElement>>;
870
+
871
+ export declare interface DialogHeaderProps extends React_2.HTMLAttributes<HTMLDivElement> {
872
+ /** Show the close (X) button in the header. @default true */
873
+ showClose?: boolean;
874
+ /** Show a back arrow button on the left side. Defaults to `true` when `onBack` is provided. */
875
+ showBack?: boolean;
876
+ /** Called when the back button is clicked. */
877
+ onBack?: () => void;
878
+ /** Accessible label for the back button. @default "Go back" */
879
+ backLabel?: string;
880
+ /** Accessible label for the close button. @default "Close" */
881
+ closeLabel?: string;
882
+ }
883
+
884
+ /**
885
+ * Semi-transparent backdrop rendered behind the dialog content.
886
+ * Rendered inside a portal automatically by {@link DialogContent}.
887
+ */
888
+ export declare const DialogOverlay: React_2.ForwardRefExoticComponent<DialogOverlayProps & React_2.RefAttributes<HTMLDivElement>>;
889
+
890
+ export declare interface DialogOverlayProps extends React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay> {
891
+ }
892
+
893
+ /** Props for the {@link Dialog} root component. */
894
+ export declare interface DialogProps extends React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Root> {
895
+ /** Controlled open state. When provided, you must also supply `onOpenChange`. */
896
+ open?: boolean;
897
+ /** Called when the open state changes. Required when `open` is controlled. */
898
+ onOpenChange?: (open: boolean) => void;
899
+ /** The open state of the dialog when it is initially rendered (uncontrolled). */
900
+ defaultOpen?: boolean;
901
+ }
902
+
903
+ /**
904
+ * Accessible title for the dialog. Must be rendered inside {@link DialogHeader}
905
+ * or directly within {@link DialogContent}.
906
+ */
907
+ export declare const DialogTitle: React_2.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React_2.RefAttributes<HTMLHeadingElement>, "ref"> & React_2.RefAttributes<HTMLHeadingElement>>;
908
+
909
+ /** Props for the {@link DialogTitle} component. */
910
+ export declare type DialogTitleProps = React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>;
911
+
912
+ /** The element that opens the dialog when clicked. */
913
+ export declare const DialogTrigger: React_2.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React_2.RefAttributes<HTMLButtonElement>>;
914
+
915
+ /** Props for the {@link DialogTrigger} component. */
916
+ export declare type DialogTriggerProps = React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger>;
917
+
620
918
  export declare const DiamondIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
621
919
  className?: string;
622
920
  } & React_2.RefAttributes<SVGSVGElement>>;
@@ -654,6 +952,161 @@ export declare const DownloadIcon: React_2.ForwardRefExoticComponent<React_2.SVG
654
952
  className?: string;
655
953
  } & React_2.RefAttributes<SVGSVGElement>>;
656
954
 
955
+ /**
956
+ * Root component that manages open/close state for a drawer.
957
+ * Wraps Radix Dialog.Root.
958
+ *
959
+ * @example
960
+ * ```tsx
961
+ * <Drawer>
962
+ * <DrawerTrigger>Open</DrawerTrigger>
963
+ * <DrawerContent position="right">
964
+ * <DrawerHeader>
965
+ * <DrawerTitle>Settings</DrawerTitle>
966
+ * <DrawerDescription>Adjust your preferences.</DrawerDescription>
967
+ * </DrawerHeader>
968
+ * <p>Content goes here.</p>
969
+ * <DrawerFooter>
970
+ * <DrawerClose>Done</DrawerClose>
971
+ * </DrawerFooter>
972
+ * </DrawerContent>
973
+ * </Drawer>
974
+ * ```
975
+ */
976
+ export declare function Drawer({ overlay, modal, children, ...props }: DrawerProps): JSX.Element;
977
+
978
+ export declare namespace Drawer {
979
+ var displayName: string;
980
+ }
981
+
982
+ /** Closes the drawer when clicked. Can be placed anywhere inside the drawer. */
983
+ export declare const DrawerClose: React_2.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React_2.RefAttributes<HTMLButtonElement>>;
984
+
985
+ /** Props for the {@link DrawerClose} component. */
986
+ export declare type DrawerCloseProps = React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>;
987
+
988
+ /**
989
+ * The panel that slides in from the chosen edge. Renders inside a portal with
990
+ * an overlay backdrop by default.
991
+ *
992
+ * Includes focus-trap, `aria-describedby`, and Escape-to-close from Radix Dialog.
993
+ */
994
+ export declare const DrawerContent: React_2.ForwardRefExoticComponent<DrawerContentProps & React_2.RefAttributes<HTMLDivElement>>;
995
+
996
+ /** Props for the {@link DrawerContent} component. */
997
+ export declare interface DrawerContentProps extends React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {
998
+ /**
999
+ * The edge from which the drawer slides in.
1000
+ *
1001
+ * Named `position` (rather than `side`) to avoid confusion with the CSS
1002
+ * `side` concept used by Radix Popover/Tooltip and to better convey the
1003
+ * spatial relationship of the drawer to the viewport.
1004
+ *
1005
+ * @default "right"
1006
+ */
1007
+ position?: DrawerPosition;
1008
+ /**
1009
+ * Controls the maximum extent of the drawer panel.
1010
+ * For left/right drawers this sets `max-width`; for top/bottom it sets `max-height`.
1011
+ * @default "sm"
1012
+ */
1013
+ size?: DrawerSize;
1014
+ /**
1015
+ * Whether to render the default {@link DrawerOverlay} behind the content.
1016
+ * Set to `false` to provide your own overlay or omit it entirely.
1017
+ *
1018
+ * Prefer setting `overlay` on the {@link Drawer} root instead so that
1019
+ * `modal` is also adjusted automatically.
1020
+ *
1021
+ * @default true
1022
+ */
1023
+ overlay?: boolean;
1024
+ /** Props forwarded to the default {@link DrawerOverlay} when `overlay` is `true`. */
1025
+ overlayProps?: DrawerOverlayProps;
1026
+ }
1027
+
1028
+ /** An accessible description for the drawer, providing supplementary context. */
1029
+ export declare const DrawerDescription: React_2.ForwardRefExoticComponent<DrawerDescriptionProps & React_2.RefAttributes<HTMLParagraphElement>>;
1030
+
1031
+ /** Props for the {@link DrawerDescription} component. */
1032
+ export declare interface DrawerDescriptionProps extends React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {
1033
+ }
1034
+
1035
+ /** A semantic footer area for the drawer, typically containing action buttons. */
1036
+ export declare const DrawerFooter: React_2.ForwardRefExoticComponent<DrawerFooterProps & React_2.RefAttributes<HTMLDivElement>>;
1037
+
1038
+ /** Props for the {@link DrawerFooter} component. */
1039
+ export declare interface DrawerFooterProps extends React_2.HTMLAttributes<HTMLDivElement> {
1040
+ }
1041
+
1042
+ /**
1043
+ * A semantic header area for the drawer, typically containing a title and description.
1044
+ * Renders a built-in close button by default.
1045
+ */
1046
+ export declare const DrawerHeader: React_2.ForwardRefExoticComponent<DrawerHeaderProps & React_2.RefAttributes<HTMLDivElement>>;
1047
+
1048
+ /** Props for the {@link DrawerHeader} component. */
1049
+ export declare interface DrawerHeaderProps extends React_2.HTMLAttributes<HTMLDivElement> {
1050
+ /** Whether to show a built-in close (X) button. @default true */
1051
+ showClose?: boolean;
1052
+ /** Accessible label for the close button. @default "Close drawer" */
1053
+ closeLabel?: string;
1054
+ }
1055
+
1056
+ /**
1057
+ * A translucent backdrop rendered behind the drawer content.
1058
+ * Clicking the overlay closes the drawer by default.
1059
+ */
1060
+ export declare const DrawerOverlay: React_2.ForwardRefExoticComponent<DrawerOverlayProps & React_2.RefAttributes<HTMLDivElement>>;
1061
+
1062
+ /** Props for the {@link DrawerOverlay} component. */
1063
+ export declare interface DrawerOverlayProps extends React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay> {
1064
+ }
1065
+
1066
+ /** The side from which the drawer slides in. */
1067
+ export declare type DrawerPosition = "left" | "right" | "top" | "bottom";
1068
+
1069
+ /**
1070
+ * Props for the {@link Drawer} root component.
1071
+ *
1072
+ * Inherits `open`, `onOpenChange`, and `defaultOpen` from Radix Dialog.Root.
1073
+ *
1074
+ * The Radix `modal` prop (default `true`) can also be passed to create a
1075
+ * non-modal drawer — useful for persistent side navigation that does not
1076
+ * block interaction with the rest of the page.
1077
+ *
1078
+ * **`overlay` behaviour:** When `overlay` is `false`, the component
1079
+ * automatically sets `modal={false}` on the underlying Radix Dialog.Root.
1080
+ * A modal dialog without a visible overlay is confusing because focus is
1081
+ * still trapped and scroll is blocked even though the page appears
1082
+ * interactive. Passing `modal={true}` explicitly will override this.
1083
+ */
1084
+ export declare interface DrawerProps extends React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Root> {
1085
+ /**
1086
+ * Whether the default {@link DrawerOverlay} is rendered.
1087
+ * When `false`, `modal` is automatically set to `false` as well
1088
+ * (unless explicitly overridden) so focus-trap and scroll-lock are disabled.
1089
+ * @default true
1090
+ */
1091
+ overlay?: boolean;
1092
+ }
1093
+
1094
+ /** Size presets for the drawer panel. Maps to max-width (left/right) or max-height (top/bottom). */
1095
+ export declare type DrawerSize = "sm" | "md" | "lg" | "full";
1096
+
1097
+ /** An accessible title for the drawer. Required for screen readers. */
1098
+ export declare const DrawerTitle: React_2.ForwardRefExoticComponent<DrawerTitleProps & React_2.RefAttributes<HTMLHeadingElement>>;
1099
+
1100
+ /** Props for the {@link DrawerTitle} component. */
1101
+ export declare interface DrawerTitleProps extends React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {
1102
+ }
1103
+
1104
+ /** The element that opens the drawer when clicked. */
1105
+ export declare const DrawerTrigger: React_2.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React_2.RefAttributes<HTMLButtonElement>>;
1106
+
1107
+ /** Props for the {@link DrawerTrigger} component. */
1108
+ export declare type DrawerTriggerProps = React_2.ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger>;
1109
+
657
1110
  export declare const EditIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
658
1111
  className?: string;
659
1112
  } & React_2.RefAttributes<SVGSVGElement>>;
@@ -896,6 +1349,61 @@ export declare const MinusIcon: React_2.ForwardRefExoticComponent<React_2.SVGAtt
896
1349
  className?: string;
897
1350
  } & React_2.RefAttributes<SVGSVGElement>>;
898
1351
 
1352
+ /**
1353
+ * A compact, mobile-friendly stepper that shows progress through a sequence of
1354
+ * steps. Supports three indicator variants: dots, a progress bar, or text.
1355
+ *
1356
+ * @example
1357
+ * ```tsx
1358
+ * <MobileStepper
1359
+ * steps={6}
1360
+ * activeStep={2}
1361
+ * variant="dots"
1362
+ * backButton={<Button size="sm" onClick={handleBack}>Back</Button>}
1363
+ * nextButton={<Button size="sm" onClick={handleNext}>Next</Button>}
1364
+ * />
1365
+ * ```
1366
+ */
1367
+ export declare const MobileStepper: React_2.ForwardRefExoticComponent<MobileStepperProps & React_2.RefAttributes<HTMLElement>>;
1368
+
1369
+ /** Positioning mode — `"static"` flows normally, `"bottom"` fixes to the viewport bottom. */
1370
+ export declare type MobileStepperPosition = "static" | "bottom";
1371
+
1372
+ export declare interface MobileStepperProps extends React_2.HTMLAttributes<HTMLElement> {
1373
+ /** Total number of steps. */
1374
+ steps: number;
1375
+ /** Zero-indexed active step, clamped to `0` – `steps - 1`. */
1376
+ activeStep: number;
1377
+ /** Step indicator style. @default "dots" */
1378
+ variant?: MobileStepperVariant;
1379
+ /** Content rendered on the left (typically a "Back" button). */
1380
+ backButton?: React_2.ReactNode;
1381
+ /** Content rendered on the right (typically a "Next" button). */
1382
+ nextButton?: React_2.ReactNode;
1383
+ /** Positioning mode. @default "static" */
1384
+ position?: MobileStepperPosition;
1385
+ /** Accessible label for the stepper region. @default "Progress" */
1386
+ ariaLabel?: string;
1387
+ /** Accessible label for the step progress indicator (dots/progress bar). @default "Step progress" */
1388
+ stepProgressLabel?: string;
1389
+ /**
1390
+ * Formatter for the `aria-valuetext` on dots and progress variants.
1391
+ * Receives `(activeStep, totalSteps)` where `activeStep` is 1-indexed.
1392
+ * @default (active, total) => \`Step ${active} of ${total}\`
1393
+ */
1394
+ formatStepLabel?: (activeStep: number, totalSteps: number) => string;
1395
+ /**
1396
+ * Custom formatter for the text variant.
1397
+ * Receives `(activeStep, steps)` where `activeStep` is 1-indexed for display.
1398
+ * Only used when `variant` is `"text"`.
1399
+ * @default (active, total) => \`${active} / ${total}\`
1400
+ */
1401
+ formatText?: (activeStep: number, totalSteps: number) => string;
1402
+ }
1403
+
1404
+ /** Display variant for the step indicator. */
1405
+ export declare type MobileStepperVariant = "dots" | "progress" | "text";
1406
+
899
1407
  export declare const MoonIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
900
1408
  className?: string;
901
1409
  } & React_2.RefAttributes<SVGSVGElement>>;
@@ -1052,6 +1560,8 @@ export declare interface ProgressBarProps extends Omit<React_2.HTMLAttributes<HT
1052
1560
  leftIcon?: React_2.ReactNode;
1053
1561
  /** Accessible label for the `progressbar` role. @default "Progress" */
1054
1562
  ariaLabel?: string;
1563
+ /** Human-readable text alternative for the current value (e.g. "Step 3 of 5"). */
1564
+ ariaValueText?: string;
1055
1565
  }
1056
1566
 
1057
1567
  /** Track height — `"default"` (12px) or `"small"` (6px). */
package/dist/index.mjs CHANGED
@@ -1,16 +1,25 @@
1
1
  "use client";
2
+ import { Accordion } from "./components/Accordion/Accordion.mjs";
3
+ import { AccordionContent } from "./components/Accordion/AccordionContent.mjs";
4
+ import { AccordionItem } from "./components/Accordion/AccordionItem.mjs";
5
+ import { AccordionTrigger } from "./components/Accordion/AccordionTrigger.mjs";
2
6
  import { Alert } from "./components/Alert/Alert.mjs";
3
7
  import { AudioUpload } from "./components/AudioUpload/AudioUpload.mjs";
4
8
  import { useAudioRecorder } from "./components/AudioUpload/useAudioRecorder.mjs";
9
+ import { Autocomplete } from "./components/Autocomplete/Autocomplete.mjs";
5
10
  import { Avatar, AvatarFallback, AvatarImage, AvatarRoot } from "./components/Avatar/Avatar.mjs";
6
11
  import { Badge } from "./components/Badge/Badge.mjs";
12
+ import { BottomNavigation } from "./components/BottomNavigation/BottomNavigation.mjs";
13
+ import { BottomNavigationAction } from "./components/BottomNavigation/BottomNavigationAction.mjs";
7
14
  import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./components/Breadcrumb/Breadcrumb.mjs";
8
15
  import { Button } from "./components/Button/Button.mjs";
9
16
  import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "./components/Card/Card.mjs";
10
17
  import { Checkbox } from "./components/Checkbox/Checkbox.mjs";
11
18
  import { Chip } from "./components/Chip/Chip.mjs";
12
19
  import { Count } from "./components/Count/Count.mjs";
20
+ import { Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogTitle, DialogTrigger } from "./components/Dialog/Dialog.mjs";
13
21
  import { Divider } from "./components/Divider/Divider.mjs";
22
+ import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerTitle, DrawerTrigger } from "./components/Drawer/Drawer.mjs";
14
23
  import { IconButton } from "./components/IconButton/IconButton.mjs";
15
24
  import { AddIcon } from "./components/Icons/AddIcon.mjs";
16
25
  import { AIIcon } from "./components/Icons/AIIcon.mjs";
@@ -132,6 +141,7 @@ import { WifiOnIcon } from "./components/Icons/WifiOnIcon.mjs";
132
141
  import { WrenchIcon } from "./components/Icons/WrenchIcon.mjs";
133
142
  import { Loader } from "./components/Loader/Loader.mjs";
134
143
  import { Logo } from "./components/Logo/Logo.mjs";
144
+ import { MobileStepper } from "./components/MobileStepper/MobileStepper.mjs";
135
145
  import { Pagination } from "./components/Pagination/Pagination.mjs";
136
146
  import { PasswordField } from "./components/PasswordField/PasswordField.mjs";
137
147
  import { Pill } from "./components/Pill/Pill.mjs";
@@ -157,6 +167,10 @@ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./comp
157
167
  import { cn } from "./utils/cn.mjs";
158
168
  export {
159
169
  AIIcon,
170
+ Accordion,
171
+ AccordionContent,
172
+ AccordionItem,
173
+ AccordionTrigger,
160
174
  AddIcon,
161
175
  Alert,
162
176
  AlertIcon,
@@ -166,6 +180,7 @@ export {
166
180
  ArrowUpIcon,
167
181
  ArrowUpRightIcon,
168
182
  AudioUpload,
183
+ Autocomplete,
169
184
  Avatar,
170
185
  AvatarFallback,
171
186
  AvatarImage,
@@ -175,6 +190,8 @@ export {
175
190
  BellIcon,
176
191
  BellOffIcon,
177
192
  BoltIcon,
193
+ BottomNavigation,
194
+ BottomNavigationAction,
178
195
  Breadcrumb,
179
196
  BreadcrumbItem,
180
197
  BreadcrumbLink,
@@ -211,12 +228,31 @@ export {
211
228
  Count,
212
229
  CrossIcon,
213
230
  CrownIcon,
231
+ Dialog,
232
+ DialogBody,
233
+ DialogClose,
234
+ DialogContent,
235
+ DialogDescription,
236
+ DialogFooter,
237
+ DialogHeader,
238
+ DialogOverlay,
239
+ DialogTitle,
240
+ DialogTrigger,
214
241
  DiamondIcon,
215
242
  DiscountIcon,
216
243
  Divider,
217
244
  DonateIcon,
218
245
  DoubleTickIcon,
219
246
  DownloadIcon,
247
+ Drawer,
248
+ DrawerClose,
249
+ DrawerContent,
250
+ DrawerDescription,
251
+ DrawerFooter,
252
+ DrawerHeader,
253
+ DrawerOverlay,
254
+ DrawerTitle,
255
+ DrawerTrigger,
220
256
  EditIcon,
221
257
  EmojiIcon,
222
258
  ErrorCircleIcon,
@@ -255,6 +291,7 @@ export {
255
291
  MessageIcon,
256
292
  MicrophoneIcon,
257
293
  MinusIcon,
294
+ MobileStepper,
258
295
  MoonIcon,
259
296
  MoreIcon,
260
297
  MoreVerticalIcon,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}