@moul-dev/ui 2026.9.16 → 2026.9.23

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.
@@ -1,8 +1,17 @@
1
1
  import { StyleXStyles } from '@stylexjs/stylex';
2
+ import { DragControls } from 'motion/react';
2
3
  import { ButtonProps as AriaButtonProps, DialogProps as AriaDialogProps, HeadingProps as AriaHeadingProps, ModalOverlayProps as AriaModalOverlayProps } from 'react-aria-components';
3
4
  import * as React from 'react';
4
5
  export type DrawerPlacement = 'top' | 'bottom' | 'left' | 'right';
5
6
  export type DrawerSize = 'sm' | 'md' | 'lg' | 'full';
7
+ export interface DrawerContextValue {
8
+ placement: DrawerPlacement;
9
+ size: DrawerSize;
10
+ onClose?: () => void;
11
+ onOpenChange?: (isOpen: boolean) => void;
12
+ dragControls?: DragControls;
13
+ }
14
+ export declare function useDrawer(): DrawerContextValue;
6
15
  export interface DrawerOverlayProps extends Omit<AriaModalOverlayProps, 'style' | 'className'> {
7
16
  style?: StyleXStyles;
8
17
  className?: string;
@@ -15,8 +24,24 @@ export interface DrawerProps extends Omit<AriaModalOverlayProps, 'style' | 'clas
15
24
  className?: string;
16
25
  placement?: DrawerPlacement;
17
26
  size?: DrawerSize;
27
+ /**
28
+ * Whether to enable drag-to-dismiss gesture on bottom drawers.
29
+ * @default true for placement="bottom"
30
+ */
31
+ dragToClose?: boolean;
18
32
  }
19
33
  export declare const Drawer: React.ForwardRefExoticComponent<DrawerProps & React.RefAttributes<HTMLDivElement>>;
34
+ export interface DrawerHandleProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> {
35
+ style?: StyleXStyles;
36
+ className?: string;
37
+ /**
38
+ * Accessible label for screen readers.
39
+ * @default 'Drag down or press to close drawer'
40
+ */
41
+ 'aria-label'?: string;
42
+ }
43
+ export declare const DrawerHandle: React.ForwardRefExoticComponent<DrawerHandleProps & React.RefAttributes<HTMLDivElement>>;
44
+ export declare const DrawerGrabHandle: React.ForwardRefExoticComponent<DrawerHandleProps & React.RefAttributes<HTMLDivElement>>;
20
45
  export interface DrawerDialogProps extends Omit<AriaDialogProps, 'style' | 'className'> {
21
46
  style?: StyleXStyles;
22
47
  className?: string;
@@ -25,6 +50,11 @@ export declare const DrawerDialog: React.ForwardRefExoticComponent<DrawerDialogP
25
50
  export interface DrawerHeaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> {
26
51
  style?: StyleXStyles;
27
52
  className?: string;
53
+ /**
54
+ * Whether to render the drag handle on top when placement="bottom".
55
+ * @default true for placement="bottom"
56
+ */
57
+ showHandle?: boolean;
28
58
  }
29
59
  export declare const DrawerHeader: React.ForwardRefExoticComponent<DrawerHeaderProps & React.RefAttributes<HTMLDivElement>>;
30
60
  export interface DrawerTitleProps extends Omit<AriaHeadingProps, 'style' | 'className'> {
@@ -35,6 +65,12 @@ export declare const DrawerTitle: React.ForwardRefExoticComponent<DrawerTitlePro
35
65
  export interface DrawerCloseButtonProps extends Omit<AriaButtonProps, 'style' | 'className'> {
36
66
  style?: StyleXStyles;
37
67
  className?: string;
68
+ /**
69
+ * Whether to hide the close button when placed inside a bottom drawer.
70
+ * Bottom drawers use the top drag handle to dismiss by default.
71
+ * @default true
72
+ */
73
+ hiddenOnBottom?: boolean;
38
74
  }
39
75
  export declare const DrawerCloseButton: React.ForwardRefExoticComponent<DrawerCloseButtonProps & React.RefAttributes<HTMLButtonElement>>;
40
76
  export interface DrawerBodyProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> {
@@ -81,17 +81,50 @@ export declare const styles: Readonly<{
81
81
  readonly borderColor: stylex.StyleXClassNameFor<"borderColor", string>;
82
82
  readonly animationName: stylex.StyleXClassNameFor<"animationName", string>;
83
83
  }>;
84
+ readonly modalReset: Readonly<{
85
+ readonly outline: stylex.StyleXClassNameFor<"outline", "none">;
86
+ readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0>;
87
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", "transparent">;
88
+ readonly boxShadow: stylex.StyleXClassNameFor<"boxShadow", "none">;
89
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
90
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
91
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
92
+ readonly overflow: stylex.StyleXClassNameFor<"overflow", "visible">;
93
+ readonly margin: stylex.StyleXClassNameFor<"margin", 0>;
94
+ readonly padding: stylex.StyleXClassNameFor<"padding", 0>;
95
+ }>;
84
96
  readonly placementBottom: Readonly<{
85
97
  readonly width: stylex.StyleXClassNameFor<"width", `calc(100vw - ${stylex.StyleXVar<string>} * 2)` | "100vw">;
86
98
  readonly maxWidth: stylex.StyleXClassNameFor<"maxWidth", `calc(100vw - ${stylex.StyleXVar<string>} * 2)` | "100vw">;
87
99
  readonly marginBlockEnd: stylex.StyleXClassNameFor<"marginBlockEnd", string | 0>;
88
100
  readonly marginBlockStart: stylex.StyleXClassNameFor<"marginBlockStart", 0>;
89
101
  readonly marginInline: stylex.StyleXClassNameFor<"marginInline", string | 0>;
90
- readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string>;
91
- readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0 | "1px">;
102
+ readonly borderTopLeftRadius: stylex.StyleXClassNameFor<"borderTopLeftRadius", string>;
103
+ readonly borderTopRightRadius: stylex.StyleXClassNameFor<"borderTopRightRadius", string>;
104
+ readonly borderBottomLeftRadius: stylex.StyleXClassNameFor<"borderBottomLeftRadius", 0>;
105
+ readonly borderBottomRightRadius: stylex.StyleXClassNameFor<"borderBottomRightRadius", 0>;
106
+ readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", "1px">;
92
107
  readonly borderStyle: stylex.StyleXClassNameFor<"borderStyle", "solid">;
93
108
  readonly borderColor: stylex.StyleXClassNameFor<"borderColor", string>;
94
- readonly animationName: stylex.StyleXClassNameFor<"animationName", string>;
109
+ }>;
110
+ readonly handleWrapper: Readonly<{
111
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
112
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
113
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
114
+ readonly width: stylex.StyleXClassNameFor<"width", "100%">;
115
+ readonly paddingBlock: stylex.StyleXClassNameFor<"paddingBlock", string>;
116
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", "transparent">;
117
+ readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0>;
118
+ readonly outline: stylex.StyleXClassNameFor<"outline", "none">;
119
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
120
+ readonly userSelect: stylex.StyleXClassNameFor<"userSelect", "none">;
121
+ readonly touchAction: stylex.StyleXClassNameFor<"touchAction", "none">;
122
+ }>;
123
+ readonly handleBar: Readonly<{
124
+ readonly width: stylex.StyleXClassNameFor<"width", "36px">;
125
+ readonly height: stylex.StyleXClassNameFor<"height", "4px">;
126
+ readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string>;
127
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
95
128
  }>;
96
129
  readonly sideSm: Readonly<{
97
130
  readonly width: stylex.StyleXClassNameFor<"width", "100vw" | "400px">;
@@ -138,7 +171,7 @@ export declare const styles: Readonly<{
138
171
  }>;
139
172
  readonly header: Readonly<{
140
173
  readonly position: stylex.StyleXClassNameFor<"position", "sticky">;
141
- readonly top: stylex.StyleXClassNameFor<"top", 0>;
174
+ readonly insetBlockStart: stylex.StyleXClassNameFor<"insetBlockStart", 0>;
142
175
  readonly zIndex: stylex.StyleXClassNameFor<"zIndex", 10>;
143
176
  readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
144
177
  readonly paddingBlock: stylex.StyleXClassNameFor<"paddingBlock", string>;
@@ -153,6 +186,14 @@ export declare const styles: Readonly<{
153
186
  readonly flexShrink: stylex.StyleXClassNameFor<"flexShrink", 0>;
154
187
  readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
155
188
  }>;
189
+ readonly headerBottom: Readonly<{
190
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
191
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
192
+ readonly paddingBlockStart: stylex.StyleXClassNameFor<"paddingBlockStart", string>;
193
+ readonly paddingBlockEnd: stylex.StyleXClassNameFor<"paddingBlockEnd", string>;
194
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
195
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
196
+ }>;
156
197
  readonly title: Readonly<{
157
198
  readonly fontSize: stylex.StyleXClassNameFor<"fontSize", string>;
158
199
  readonly fontWeight: stylex.StyleXClassNameFor<"fontWeight", string>;
@@ -173,7 +214,7 @@ export declare const styles: Readonly<{
173
214
  }>;
174
215
  readonly footer: Readonly<{
175
216
  readonly position: stylex.StyleXClassNameFor<"position", "sticky">;
176
- readonly bottom: stylex.StyleXClassNameFor<"bottom", 0>;
217
+ readonly insetBlockEnd: stylex.StyleXClassNameFor<"insetBlockEnd", 0>;
177
218
  readonly zIndex: stylex.StyleXClassNameFor<"zIndex", 10>;
178
219
  readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
179
220
  readonly paddingBlock: stylex.StyleXClassNameFor<"paddingBlock", string>;
@@ -1,2 +1,2 @@
1
- export type { DrawerBodyProps, DrawerCloseButtonProps, DrawerDialogProps, DrawerFooterProps, DrawerHeaderProps, DrawerOverlayProps, DrawerPlacement, DrawerProps, DrawerSize, DrawerTitleProps, } from './Drawer';
2
- export { Drawer, DrawerBody, DrawerCloseButton, DrawerDialog, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerTitle, } from './Drawer';
1
+ export type { DrawerBodyProps, DrawerCloseButtonProps, DrawerDialogProps, DrawerFooterProps, DrawerHandleProps, DrawerHeaderProps, DrawerOverlayProps, DrawerPlacement, DrawerProps, DrawerSize, DrawerTitleProps, } from './Drawer';
2
+ export { Drawer, DrawerBody, DrawerCloseButton, DrawerDialog, DrawerFooter, DrawerGrabHandle, DrawerHandle, DrawerHeader, DrawerOverlay, DrawerTitle, useDrawer, } from './Drawer';
@@ -11,8 +11,21 @@ interface SidebarContextValue {
11
11
  onCollapseToggle: () => void;
12
12
  showCollapseToggle?: boolean;
13
13
  dense?: boolean;
14
+ isMobile: boolean;
15
+ enableMobileNav: boolean;
16
+ mobileBreakpoint?: number;
17
+ mobileNavScaleOnScroll: boolean;
18
+ maxMobileItems: number;
19
+ isScrolledDown: boolean;
20
+ setIsScrolledDown: React.Dispatch<React.SetStateAction<boolean>>;
21
+ isMoreOpen: boolean;
22
+ setIsMoreOpen: React.Dispatch<React.SetStateAction<boolean>>;
23
+ hasMobileHeader: boolean;
24
+ setHasMobileHeader: React.Dispatch<React.SetStateAction<boolean>>;
25
+ registerScrollContainer?: (node: HTMLElement | null) => void;
14
26
  }
15
27
  export declare function useSidebar(): SidebarContextValue;
28
+ export declare function useIsMobile(breakpoint?: number): boolean;
16
29
  export interface SidebarProps {
17
30
  isCollapsed?: boolean;
18
31
  defaultCollapsed?: boolean;
@@ -24,6 +37,11 @@ export interface SidebarProps {
24
37
  layout?: SidebarLayout;
25
38
  showCollapseToggle?: boolean;
26
39
  dense?: boolean;
40
+ isMobile?: boolean;
41
+ enableMobileNav?: boolean;
42
+ mobileBreakpoint?: number;
43
+ mobileNavScaleOnScroll?: boolean;
44
+ maxMobileItems?: number;
27
45
  style?: React.CSSProperties;
28
46
  className?: string;
29
47
  children?: React.ReactNode;
@@ -4,9 +4,6 @@ export declare const styles: Readonly<{
4
4
  readonly display: stylex.StyleXClassNameFor<"display", "flex">;
5
5
  readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
6
6
  readonly flexShrink: stylex.StyleXClassNameFor<"flexShrink", 0>;
7
- readonly transitionProperty: stylex.StyleXClassNameFor<"transitionProperty", "width, background-color, border-color, box-shadow, margin, border-radius">;
8
- readonly transitionDuration: stylex.StyleXClassNameFor<"transitionDuration", "0.25s">;
9
- readonly transitionTimingFunction: stylex.StyleXClassNameFor<"transitionTimingFunction", "cubic-bezier(0.4, 0, 0.2, 1)">;
10
7
  readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
11
8
  readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
12
9
  readonly position: stylex.StyleXClassNameFor<"position", "relative">;
@@ -14,18 +11,18 @@ export declare const styles: Readonly<{
14
11
  readonly color: stylex.StyleXClassNameFor<"color", string>;
15
12
  }>;
16
13
  readonly sidebarFramed: Readonly<{
17
- readonly height: stylex.StyleXClassNameFor<"height", `calc(100% - ${stylex.StyleXVar<string>} * 2)`>;
18
- readonly marginBlock: stylex.StyleXClassNameFor<"marginBlock", string>;
19
- readonly marginInlineStart: stylex.StyleXClassNameFor<"marginInlineStart", string>;
14
+ readonly height: stylex.StyleXClassNameFor<"height", "auto" | `calc(100% - ${stylex.StyleXVar<string>} * 2)`>;
15
+ readonly marginBlock: stylex.StyleXClassNameFor<"marginBlock", string | 0>;
16
+ readonly marginInlineStart: stylex.StyleXClassNameFor<"marginInlineStart", string | 0>;
20
17
  readonly marginInlineEnd: stylex.StyleXClassNameFor<"marginInlineEnd", 0>;
21
- readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string>;
18
+ readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string | 0>;
22
19
  readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", "1px">;
23
20
  readonly borderStyle: stylex.StyleXClassNameFor<"borderStyle", "solid">;
24
21
  }>;
25
22
  readonly sidebarUnframed: Readonly<{
26
- readonly height: stylex.StyleXClassNameFor<"height", `calc(100% - ${stylex.StyleXVar<string>} * 2)`>;
27
- readonly marginBlock: stylex.StyleXClassNameFor<"marginBlock", string>;
28
- readonly marginInlineStart: stylex.StyleXClassNameFor<"marginInlineStart", string>;
23
+ readonly height: stylex.StyleXClassNameFor<"height", "auto" | `calc(100% - ${stylex.StyleXVar<string>} * 2)`>;
24
+ readonly marginBlock: stylex.StyleXClassNameFor<"marginBlock", string | 0>;
25
+ readonly marginInlineStart: stylex.StyleXClassNameFor<"marginInlineStart", string | 0>;
29
26
  readonly marginInlineEnd: stylex.StyleXClassNameFor<"marginInlineEnd", 0>;
30
27
  readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", 0>;
31
28
  readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0>;
@@ -509,6 +506,7 @@ export declare const styles: Readonly<{
509
506
  }>;
510
507
  readonly layout: Readonly<{
511
508
  readonly display: stylex.StyleXClassNameFor<"display", "flex">;
509
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column" | "row">;
512
510
  readonly height: stylex.StyleXClassNameFor<"height", "100%">;
513
511
  readonly maxHeight: stylex.StyleXClassNameFor<"maxHeight", "100%">;
514
512
  readonly width: stylex.StyleXClassNameFor<"width", "100%">;
@@ -517,25 +515,36 @@ export declare const styles: Readonly<{
517
515
  readonly fontFamily: stylex.StyleXClassNameFor<"fontFamily", string>;
518
516
  readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
519
517
  readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
518
+ readonly gap: stylex.StyleXClassNameFor<"gap", string | 0>;
519
+ }>;
520
+ readonly layoutStatic: Readonly<{
521
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "row">;
520
522
  readonly gap: stylex.StyleXClassNameFor<"gap", string>;
521
523
  }>;
524
+ readonly layoutMobile: Readonly<{
525
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
526
+ readonly gap: stylex.StyleXClassNameFor<"gap", 0>;
527
+ }>;
522
528
  readonly mainContent: Readonly<{
523
529
  readonly flex: stylex.StyleXClassNameFor<"flex", 1>;
524
530
  readonly display: stylex.StyleXClassNameFor<"display", "flex">;
525
531
  readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
526
532
  readonly overflowY: stylex.StyleXClassNameFor<"overflowY", "auto">;
527
533
  readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
528
- readonly transitionProperty: stylex.StyleXClassNameFor<"transitionProperty", "background-color, border-color, box-shadow, margin, border-radius">;
529
- readonly transitionDuration: stylex.StyleXClassNameFor<"transitionDuration", "0.25s">;
530
- readonly transitionTimingFunction: stylex.StyleXClassNameFor<"transitionTimingFunction", "cubic-bezier(0.4, 0, 0.2, 1)">;
531
534
  readonly fontFamily: stylex.StyleXClassNameFor<"fontFamily", string>;
532
535
  readonly color: stylex.StyleXClassNameFor<"color", string>;
533
536
  readonly minWidth: stylex.StyleXClassNameFor<"minWidth", 0>;
534
537
  }>;
538
+ readonly mainContentMobileNav: Readonly<{
539
+ readonly paddingBlockEnd: stylex.StyleXClassNameFor<"paddingBlockEnd", `calc(env(safe-area-inset-bottom, 0px) + ${stylex.StyleXVar<string>} * 2.5)`>;
540
+ }>;
541
+ readonly mainContentMobileWithHeader: Readonly<{
542
+ readonly paddingBlockStart: stylex.StyleXClassNameFor<"paddingBlockStart", `calc(${stylex.StyleXVar<string>} * 2)`>;
543
+ }>;
535
544
  readonly mainUnframed: Readonly<{
536
545
  readonly height: stylex.StyleXClassNameFor<"height", "100%">;
537
546
  readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", "transparent">;
538
- readonly paddingBlockStart: stylex.StyleXClassNameFor<"paddingBlockStart", string>;
547
+ readonly paddingBlockStart: stylex.StyleXClassNameFor<"paddingBlockStart", string | 0>;
539
548
  readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0>;
540
549
  readonly borderStyle: stylex.StyleXClassNameFor<"borderStyle", "none">;
541
550
  readonly borderColor: stylex.StyleXClassNameFor<"borderColor", "transparent">;
@@ -543,12 +552,12 @@ export declare const styles: Readonly<{
543
552
  readonly margin: stylex.StyleXClassNameFor<"margin", 0>;
544
553
  }>;
545
554
  readonly mainFramed: Readonly<{
546
- readonly height: stylex.StyleXClassNameFor<"height", `calc(100% - ${stylex.StyleXVar<string>} * 2)`>;
547
- readonly marginBlock: stylex.StyleXClassNameFor<"marginBlock", string>;
548
- readonly marginInlineEnd: stylex.StyleXClassNameFor<"marginInlineEnd", string>;
555
+ readonly height: stylex.StyleXClassNameFor<"height", "100%" | `calc(100% - ${stylex.StyleXVar<string>} * 2)`>;
556
+ readonly marginBlock: stylex.StyleXClassNameFor<"marginBlock", string | 0>;
557
+ readonly marginInlineEnd: stylex.StyleXClassNameFor<"marginInlineEnd", string | 0>;
549
558
  readonly marginInlineStart: stylex.StyleXClassNameFor<"marginInlineStart", 0>;
550
- readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string>;
551
- readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", "1px">;
559
+ readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string | 0>;
560
+ readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0 | "1px">;
552
561
  readonly borderStyle: stylex.StyleXClassNameFor<"borderStyle", "solid">;
553
562
  readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
554
563
  }>;
@@ -566,4 +575,243 @@ export declare const styles: Readonly<{
566
575
  readonly WebkitBackdropFilter: "blur(20px)";
567
576
  }>;
568
577
  }>;
578
+ readonly mobileTopBar: Readonly<{
579
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
580
+ readonly position: stylex.StyleXClassNameFor<"position", "absolute">;
581
+ readonly insetBlockStart: stylex.StyleXClassNameFor<"insetBlockStart", 0>;
582
+ readonly insetInline: stylex.StyleXClassNameFor<"insetInline", 0>;
583
+ readonly zIndex: stylex.StyleXClassNameFor<"zIndex", 40>;
584
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
585
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "space-between">;
586
+ readonly paddingBlock: stylex.StyleXClassNameFor<"paddingBlock", string>;
587
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
588
+ readonly minHeight: stylex.StyleXClassNameFor<"minHeight", "56px">;
589
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
590
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
591
+ readonly borderBlockEndWidth: stylex.StyleXClassNameFor<"borderBlockEndWidth", "1px">;
592
+ readonly borderBlockEndStyle: stylex.StyleXClassNameFor<"borderBlockEndStyle", "solid">;
593
+ readonly borderBlockEndColor: stylex.StyleXClassNameFor<"borderBlockEndColor", string>;
594
+ readonly '@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))': stylex.StyleXClassNameFor<"@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))", {
595
+ readonly backgroundColor: stylex.StyleXVar<string>;
596
+ readonly borderBlockEndColor: stylex.StyleXVar<string>;
597
+ readonly backdropFilter: "blur(20px)";
598
+ readonly WebkitBackdropFilter: "blur(20px)";
599
+ }>;
600
+ }>;
601
+ readonly mobileTopBarContent: Readonly<{
602
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
603
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
604
+ readonly width: stylex.StyleXClassNameFor<"width", "100%">;
605
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "space-between">;
606
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
607
+ }>;
608
+ readonly mobileBottomNavContainer: Readonly<{
609
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
610
+ readonly position: stylex.StyleXClassNameFor<"position", "fixed">;
611
+ readonly insetBlockEnd: stylex.StyleXClassNameFor<"insetBlockEnd", `calc(env(safe-area-inset-bottom, 0px) + ${stylex.StyleXVar<string>})`>;
612
+ readonly insetInline: stylex.StyleXClassNameFor<"insetInline", 0>;
613
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
614
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
615
+ readonly pointerEvents: stylex.StyleXClassNameFor<"pointerEvents", "none">;
616
+ readonly zIndex: stylex.StyleXClassNameFor<"zIndex", 50>;
617
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
618
+ }>;
619
+ readonly mobileBottomNav: Readonly<{
620
+ readonly pointerEvents: stylex.StyleXClassNameFor<"pointerEvents", "auto">;
621
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
622
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
623
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "space-around">;
624
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
625
+ readonly paddingBlock: stylex.StyleXClassNameFor<"paddingBlock", string>;
626
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
627
+ readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string>;
628
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
629
+ readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", "1px">;
630
+ readonly borderStyle: stylex.StyleXClassNameFor<"borderStyle", "solid">;
631
+ readonly borderColor: stylex.StyleXClassNameFor<"borderColor", string>;
632
+ readonly boxShadow: stylex.StyleXClassNameFor<"boxShadow", string>;
633
+ readonly maxWidth: stylex.StyleXClassNameFor<"maxWidth", "420px">;
634
+ readonly width: stylex.StyleXClassNameFor<"width", "auto">;
635
+ readonly minWidth: stylex.StyleXClassNameFor<"minWidth", "240px">;
636
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
637
+ readonly transformOrigin: stylex.StyleXClassNameFor<"transformOrigin", "bottom center">;
638
+ readonly '@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))': stylex.StyleXClassNameFor<"@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))", {
639
+ readonly backgroundColor: stylex.StyleXVar<string>;
640
+ readonly borderColor: stylex.StyleXVar<string>;
641
+ readonly backdropFilter: "blur(24px)";
642
+ readonly WebkitBackdropFilter: "blur(24px)";
643
+ }>;
644
+ }>;
645
+ readonly mobileNavItem: Readonly<{
646
+ readonly position: stylex.StyleXClassNameFor<"position", "relative">;
647
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
648
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
649
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
650
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
651
+ readonly gap: stylex.StyleXClassNameFor<"gap", "2px">;
652
+ readonly minWidth: stylex.StyleXClassNameFor<"minWidth", "52px">;
653
+ readonly minHeight: stylex.StyleXClassNameFor<"minHeight", "44px">;
654
+ readonly paddingBlock: stylex.StyleXClassNameFor<"paddingBlock", string>;
655
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
656
+ readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string>;
657
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
658
+ readonly textDecoration: stylex.StyleXClassNameFor<"textDecoration", "none">;
659
+ readonly cursor: stylex.StyleXClassNameFor<"cursor", "pointer">;
660
+ readonly userSelect: stylex.StyleXClassNameFor<"userSelect", "none">;
661
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
662
+ readonly zIndex: stylex.StyleXClassNameFor<"zIndex", 1>;
663
+ readonly borderStyle: stylex.StyleXClassNameFor<"borderStyle", "none">;
664
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", "transparent">;
665
+ readonly outline: stylex.StyleXClassNameFor<"outline", "none">;
666
+ }>;
667
+ readonly mobileNavItemActive: Readonly<{
668
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
669
+ readonly fontWeight: stylex.StyleXClassNameFor<"fontWeight", string>;
670
+ }>;
671
+ readonly mobileNavActivePill: Readonly<{
672
+ readonly position: stylex.StyleXClassNameFor<"position", "absolute">;
673
+ readonly insetBlock: stylex.StyleXClassNameFor<"insetBlock", 0>;
674
+ readonly insetInline: stylex.StyleXClassNameFor<"insetInline", 0>;
675
+ readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string>;
676
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
677
+ readonly zIndex: stylex.StyleXClassNameFor<"zIndex", -1>;
678
+ }>;
679
+ readonly mobileNavIcon: Readonly<{
680
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
681
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
682
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
683
+ readonly width: stylex.StyleXClassNameFor<"width", "22px">;
684
+ readonly height: stylex.StyleXClassNameFor<"height", "22px">;
685
+ readonly flexShrink: stylex.StyleXClassNameFor<"flexShrink", 0>;
686
+ }>;
687
+ readonly mobileNavLabel: Readonly<{
688
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", string>;
689
+ readonly lineHeight: stylex.StyleXClassNameFor<"lineHeight", string>;
690
+ readonly textAlign: stylex.StyleXClassNameFor<"textAlign", "center">;
691
+ readonly whiteSpace: stylex.StyleXClassNameFor<"whiteSpace", "nowrap">;
692
+ readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
693
+ readonly textOverflow: stylex.StyleXClassNameFor<"textOverflow", "ellipsis">;
694
+ readonly maxWidth: stylex.StyleXClassNameFor<"maxWidth", "64px">;
695
+ readonly display: stylex.StyleXClassNameFor<"display", "block">;
696
+ }>;
697
+ readonly mobileNavMoreButton: Readonly<{
698
+ readonly position: stylex.StyleXClassNameFor<"position", "relative">;
699
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
700
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
701
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
702
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
703
+ readonly gap: stylex.StyleXClassNameFor<"gap", "2px">;
704
+ readonly minWidth: stylex.StyleXClassNameFor<"minWidth", "52px">;
705
+ readonly minHeight: stylex.StyleXClassNameFor<"minHeight", "44px">;
706
+ readonly paddingBlock: stylex.StyleXClassNameFor<"paddingBlock", string>;
707
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
708
+ readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", string>;
709
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
710
+ readonly cursor: stylex.StyleXClassNameFor<"cursor", "pointer">;
711
+ readonly userSelect: stylex.StyleXClassNameFor<"userSelect", "none">;
712
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
713
+ readonly zIndex: stylex.StyleXClassNameFor<"zIndex", 1>;
714
+ readonly borderStyle: stylex.StyleXClassNameFor<"borderStyle", "none">;
715
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", "transparent">;
716
+ readonly outline: stylex.StyleXClassNameFor<"outline", "none">;
717
+ }>;
718
+ readonly mobileDrawerOverlay: Readonly<{
719
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
720
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
721
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "flex-end">;
722
+ }>;
723
+ readonly mobileDrawerModal: Readonly<{
724
+ readonly width: stylex.StyleXClassNameFor<"width", "100vw">;
725
+ readonly maxWidth: stylex.StyleXClassNameFor<"maxWidth", "100vw">;
726
+ readonly marginBlockEnd: stylex.StyleXClassNameFor<"marginBlockEnd", 0>;
727
+ readonly marginBlockStart: stylex.StyleXClassNameFor<"marginBlockStart", "auto">;
728
+ readonly marginInline: stylex.StyleXClassNameFor<"marginInline", 0>;
729
+ readonly borderTopLeftRadius: stylex.StyleXClassNameFor<"borderTopLeftRadius", string>;
730
+ readonly borderTopRightRadius: stylex.StyleXClassNameFor<"borderTopRightRadius", string>;
731
+ readonly borderBottomLeftRadius: stylex.StyleXClassNameFor<"borderBottomLeftRadius", 0>;
732
+ readonly borderBottomRightRadius: stylex.StyleXClassNameFor<"borderBottomRightRadius", 0>;
733
+ readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0>;
734
+ readonly borderBlockStartWidth: stylex.StyleXClassNameFor<"borderBlockStartWidth", "1px">;
735
+ readonly borderBlockStartStyle: stylex.StyleXClassNameFor<"borderBlockStartStyle", "solid">;
736
+ readonly borderBlockStartColor: stylex.StyleXClassNameFor<"borderBlockStartColor", string>;
737
+ readonly maxHeight: stylex.StyleXClassNameFor<"maxHeight", "85dvh">;
738
+ readonly height: stylex.StyleXClassNameFor<"height", "auto">;
739
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
740
+ readonly boxShadow: stylex.StyleXClassNameFor<"boxShadow", string>;
741
+ readonly outline: stylex.StyleXClassNameFor<"outline", "none">;
742
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
743
+ readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
744
+ }>;
745
+ readonly mobileDrawerDialog: Readonly<{
746
+ readonly outline: stylex.StyleXClassNameFor<"outline", "none">;
747
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
748
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
749
+ readonly width: stylex.StyleXClassNameFor<"width", "100%">;
750
+ readonly maxHeight: stylex.StyleXClassNameFor<"maxHeight", "85dvh">;
751
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
752
+ readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
753
+ }>;
754
+ readonly mobileDrawerHeader: Readonly<{
755
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
756
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
757
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
758
+ readonly paddingBlockStart: stylex.StyleXClassNameFor<"paddingBlockStart", string>;
759
+ readonly paddingBlockEnd: stylex.StyleXClassNameFor<"paddingBlockEnd", string>;
760
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
761
+ readonly borderBlockEndWidth: stylex.StyleXClassNameFor<"borderBlockEndWidth", "1px">;
762
+ readonly borderBlockEndStyle: stylex.StyleXClassNameFor<"borderBlockEndStyle", "solid">;
763
+ readonly borderBlockEndColor: stylex.StyleXClassNameFor<"borderBlockEndColor", string>;
764
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
765
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
766
+ readonly flexShrink: stylex.StyleXClassNameFor<"flexShrink", 0>;
767
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
768
+ }>;
769
+ readonly mobileDrawerHeaderRow: Readonly<{
770
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
771
+ readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
772
+ readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
773
+ readonly width: stylex.StyleXClassNameFor<"width", "100%">;
774
+ }>;
775
+ readonly mobileDrawerTitle: Readonly<{
776
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", string>;
777
+ readonly fontWeight: stylex.StyleXClassNameFor<"fontWeight", string>;
778
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
779
+ readonly margin: stylex.StyleXClassNameFor<"margin", 0>;
780
+ }>;
781
+ readonly mobileDrawerBody: Readonly<{
782
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
783
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
784
+ readonly flexGrow: stylex.StyleXClassNameFor<"flexGrow", 1>;
785
+ readonly paddingBlockStart: stylex.StyleXClassNameFor<"paddingBlockStart", string>;
786
+ readonly paddingBlockEnd: stylex.StyleXClassNameFor<"paddingBlockEnd", `calc(max(${stylex.StyleXVar<string>}, env(safe-area-inset-bottom, ${stylex.StyleXVar<string>})) + ${stylex.StyleXVar<string>})`>;
787
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
788
+ readonly overflowY: stylex.StyleXClassNameFor<"overflowY", "auto">;
789
+ readonly boxSizing: stylex.StyleXClassNameFor<"boxSizing", "border-box">;
790
+ }>;
791
+ readonly mobileDrawerContent: Readonly<{
792
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
793
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
794
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
795
+ }>;
796
+ readonly mobileDrawerGroup: Readonly<{
797
+ readonly display: stylex.StyleXClassNameFor<"display", "flex">;
798
+ readonly flexDirection: stylex.StyleXClassNameFor<"flexDirection", "column">;
799
+ readonly gap: stylex.StyleXClassNameFor<"gap", string>;
800
+ }>;
801
+ readonly mobileDrawerGroupTitle: Readonly<{
802
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", string>;
803
+ readonly fontWeight: stylex.StyleXClassNameFor<"fontWeight", string>;
804
+ readonly color: stylex.StyleXClassNameFor<"color", string>;
805
+ readonly paddingBlock: stylex.StyleXClassNameFor<"paddingBlock", string>;
806
+ readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
807
+ readonly textTransform: stylex.StyleXClassNameFor<"textTransform", "uppercase">;
808
+ readonly letterSpacing: stylex.StyleXClassNameFor<"letterSpacing", "0.05em">;
809
+ }>;
810
+ readonly mobileDrawerFooter: Readonly<{
811
+ readonly paddingBlockStart: stylex.StyleXClassNameFor<"paddingBlockStart", string>;
812
+ readonly borderBlockStartWidth: stylex.StyleXClassNameFor<"borderBlockStartWidth", "1px">;
813
+ readonly borderBlockStartStyle: stylex.StyleXClassNameFor<"borderBlockStartStyle", "solid">;
814
+ readonly borderBlockStartColor: stylex.StyleXClassNameFor<"borderBlockStartColor", string>;
815
+ readonly marginBlockStart: stylex.StyleXClassNameFor<"marginBlockStart", string>;
816
+ }>;
569
817
  }>;
@@ -1,4 +1,4 @@
1
- export declare const version = "2026.09.16";
1
+ export declare const version = "2026.09.23";
2
2
  export { Alert } from './components/Alert';
3
3
  export type { AlertProps, AlertVariant } from './components/Alert/Alert';
4
4
  export { AlertDialog, AlertDialogBody, AlertDialogFooter, AlertDialogHeader, } from './components/AlertDialog';
@@ -43,8 +43,8 @@ export { Description } from './components/Description';
43
43
  export type { DescriptionProps } from './components/Description/Description';
44
44
  export type { DoughnutChartProps } from './components/DoughnutChart';
45
45
  export { DoughnutChart } from './components/DoughnutChart';
46
- export type { DrawerBodyProps, DrawerCloseButtonProps, DrawerDialogProps, DrawerFooterProps, DrawerHeaderProps, DrawerOverlayProps, DrawerPlacement, DrawerProps, DrawerSize, DrawerTitleProps, } from './components/Drawer';
47
- export { Drawer, DrawerBody, DrawerCloseButton, DrawerDialog, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerTitle, } from './components/Drawer';
46
+ export type { DrawerBodyProps, DrawerCloseButtonProps, DrawerDialogProps, DrawerFooterProps, DrawerHandleProps, DrawerHeaderProps, DrawerOverlayProps, DrawerPlacement, DrawerProps, DrawerSize, DrawerTitleProps, } from './components/Drawer';
47
+ export { Drawer, DrawerBody, DrawerCloseButton, DrawerDialog, DrawerFooter, DrawerGrabHandle, DrawerHandle, DrawerHeader, DrawerOverlay, DrawerTitle, useDrawer, } from './components/Drawer';
48
48
  export type { EmptyStateActionsProps, EmptyStateAlign, EmptyStateDescriptionProps, EmptyStateIconProps, EmptyStateProps, EmptyStateSize, EmptyStateTitleProps, EmptyStateVariant, } from './components/EmptyState';
49
49
  export { EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, } from './components/EmptyState';
50
50
  export { ErrorMessage } from './components/ErrorMessage';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moul-dev/ui",
3
- "version": "2026.09.16",
3
+ "version": "2026.09.23",
4
4
  "description": "Accessible, zero-runtime React component library built on React Aria and StyleX",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -74,6 +74,7 @@
74
74
  "@phosphor-icons/react": "^2.1.10",
75
75
  "@stylexjs/stylex": "^0.19.0",
76
76
  "input-otp": "^1.4.2",
77
+ "motion": "^13.4.1",
77
78
  "react-aria": "^3.50.0",
78
79
  "react-aria-components": "^1.19.0",
79
80
  "recharts": "^3.9.2"