@wow-two-beta/ui 0.0.46 → 0.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.js +2 -2
- package/dist/actions/toggleButton/ToggleButton.d.ts +8 -6
- package/dist/actions/toggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/actions/toggleButton/ToggleButton.variants.d.ts +79 -44
- package/dist/actions/toggleButton/ToggleButton.variants.d.ts.map +1 -1
- package/dist/{chunk-XTAFNWLG.js → chunk-2SIB3MZL.js} +4 -4
- package/dist/{chunk-XTAFNWLG.js.map → chunk-2SIB3MZL.js.map} +1 -1
- package/dist/chunk-34TLJSEH.js +462 -0
- package/dist/chunk-34TLJSEH.js.map +1 -0
- package/dist/{chunk-K2TZTSNQ.js → chunk-5V7FBKKL.js} +3 -3
- package/dist/{chunk-K2TZTSNQ.js.map → chunk-5V7FBKKL.js.map} +1 -1
- package/dist/{chunk-4YMU5MVC.js → chunk-6URHYLVG.js} +74 -30
- package/dist/chunk-6URHYLVG.js.map +1 -0
- package/dist/{chunk-CBMPWDRA.js → chunk-BLXE2RCC.js} +3 -3
- package/dist/{chunk-CBMPWDRA.js.map → chunk-BLXE2RCC.js.map} +1 -1
- package/dist/{chunk-VDE5B3IY.js → chunk-C6XVQ5TW.js} +22 -10
- package/dist/chunk-C6XVQ5TW.js.map +1 -0
- package/dist/{chunk-WJGJNSNP.js → chunk-CMBKBLJE.js} +165 -36
- package/dist/chunk-CMBKBLJE.js.map +1 -0
- package/dist/{chunk-2AS5ZKBF.js → chunk-EUA2TRKE.js} +6 -6
- package/dist/{chunk-2AS5ZKBF.js.map → chunk-EUA2TRKE.js.map} +1 -1
- package/dist/{chunk-PA5WBMY5.js → chunk-JYP2HIG3.js} +11 -11
- package/dist/{chunk-PA5WBMY5.js.map → chunk-JYP2HIG3.js.map} +1 -1
- package/dist/{chunk-R643N32M.js → chunk-NTUKGLIQ.js} +3 -3
- package/dist/{chunk-R643N32M.js.map → chunk-NTUKGLIQ.js.map} +1 -1
- package/dist/{chunk-D3CGJMKB.js → chunk-SGMG6NZB.js} +4 -4
- package/dist/{chunk-D3CGJMKB.js.map → chunk-SGMG6NZB.js.map} +1 -1
- package/dist/{chunk-CN7IOF3B.js → chunk-UPSN6NFK.js} +32 -9
- package/dist/chunk-UPSN6NFK.js.map +1 -0
- package/dist/{chunk-YYY5WBR2.js → chunk-WPC3KBRU.js} +4 -4
- package/dist/chunk-WPC3KBRU.js.map +1 -0
- package/dist/{chunk-35VQ7QBG.js → chunk-ZJJ4KW6G.js} +10 -10
- package/dist/chunk-ZJJ4KW6G.js.map +1 -0
- package/dist/display/index.js +3 -3
- package/dist/feedback/index.js +4 -4
- package/dist/forms/InputStyles.d.ts +9 -2
- package/dist/forms/InputStyles.d.ts.map +1 -1
- package/dist/forms/combobox/Combobox.d.ts +3 -2
- package/dist/forms/combobox/Combobox.d.ts.map +1 -1
- package/dist/forms/index.js +8 -8
- package/dist/forms/listbox/Listbox.d.ts +8 -1
- package/dist/forms/listbox/Listbox.d.ts.map +1 -1
- package/dist/forms/listbox/Listbox.variants.d.ts +1 -1
- package/dist/forms/listbox/Listbox.variants.d.ts.map +1 -1
- package/dist/forms/listbox/index.d.ts +1 -1
- package/dist/forms/listbox/index.d.ts.map +1 -1
- package/dist/forms/multiSelect/MultiSelect.d.ts +3 -2
- package/dist/forms/multiSelect/MultiSelect.d.ts.map +1 -1
- package/dist/forms/select/Select.d.ts +3 -2
- package/dist/forms/select/Select.d.ts.map +1 -1
- package/dist/forms/select/Select.variants.d.ts +9 -2
- package/dist/forms/select/Select.variants.d.ts.map +1 -1
- package/dist/icons/index.js +1 -1
- package/dist/index.css +19 -0
- package/dist/index.js +14 -14
- package/dist/layout/index.d.ts +1 -0
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +5 -5
- package/dist/layout/surface/Surface.d.ts +19 -0
- package/dist/layout/surface/Surface.d.ts.map +1 -0
- package/dist/layout/surface/index.d.ts +2 -0
- package/dist/layout/surface/index.d.ts.map +1 -0
- package/dist/nav/index.js +5 -5
- package/dist/overlays/index.js +5 -5
- package/dist/overlays/popover/Popover.d.ts +8 -5
- package/dist/overlays/popover/Popover.d.ts.map +1 -1
- package/dist/utils/Layers.d.ts +34 -0
- package/dist/utils/Layers.d.ts.map +1 -0
- package/dist/utils/SurfaceStyles.d.ts +324 -0
- package/dist/utils/SurfaceStyles.d.ts.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-35VQ7QBG.js.map +0 -1
- package/dist/chunk-4YMU5MVC.js.map +0 -1
- package/dist/chunk-CN7IOF3B.js.map +0 -1
- package/dist/chunk-MUUFERDO.js +0 -216
- package/dist/chunk-MUUFERDO.js.map +0 -1
- package/dist/chunk-VDE5B3IY.js.map +0 -1
- package/dist/chunk-WJGJNSNP.js.map +0 -1
- package/dist/chunk-YYY5WBR2.js.map +0 -1
package/dist/actions/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, Link, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, linkVariants, toggleButtonVariants } from '../chunk-
|
|
1
|
+
export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, Link, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, linkVariants, toggleButtonVariants } from '../chunk-6URHYLVG.js';
|
|
2
2
|
import '../chunk-NUMFGKPY.js';
|
|
3
3
|
import '../chunk-F227LKWK.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-34TLJSEH.js';
|
|
5
5
|
import '../chunk-BMABNEZX.js';
|
|
6
6
|
import '../chunk-KDXJQNB6.js';
|
|
7
7
|
import '../chunk-LDRFQG44.js';
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type ButtonProps } from '../button/Button';
|
|
2
3
|
import { type ToggleButtonVariants } from './ToggleButton.variants';
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
type ToggleButtonChildren = ReactNode | ((args: {
|
|
5
|
+
pressed: boolean;
|
|
6
|
+
}) => ReactNode);
|
|
7
|
+
export interface ToggleButtonProps extends Omit<ButtonProps, 'variant' | 'tone' | 'children'>, ToggleButtonVariants {
|
|
5
8
|
pressed?: boolean;
|
|
6
|
-
/** Uncontrolled initial state. */
|
|
7
9
|
defaultPressed?: boolean;
|
|
8
|
-
/** Fires whenever pressed state changes. */
|
|
9
10
|
onPressedChange?: (pressed: boolean) => void;
|
|
11
|
+
children?: ToggleButtonChildren;
|
|
10
12
|
}
|
|
11
|
-
/** Two-state button (on/off) — sets `aria-pressed` + `data-state="on|off"`. */
|
|
12
13
|
export declare const ToggleButton: import("react").ForwardRefExoticComponent<ToggleButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
14
|
+
export {};
|
|
13
15
|
//# sourceMappingURL=ToggleButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleButton.d.ts","sourceRoot":"","sources":["../../../src/actions/toggleButton/ToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,
|
|
1
|
+
{"version":3,"file":"ToggleButton.d.ts","sourceRoot":"","sources":["../../../src/actions/toggleButton/ToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAK1F,KAAK,oBAAoB,GACrB,SAAS,GACT,CAAC,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,KAAK,SAAS,CAAC,CAAC;AAEhD,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC,EACxD,oBAAoB;IAEtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,cAAc,CAAC,EAAE,OAAO,CAAC;IAGzB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAG7C,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAGD,eAAO,MAAM,YAAY,iHA2CxB,CAAC"}
|
|
@@ -1,80 +1,115 @@
|
|
|
1
1
|
import { type VariantProps } from '../../utils';
|
|
2
2
|
export declare const toggleButtonVariants: import("tailwind-variants").TVReturnType<{
|
|
3
3
|
variant: {
|
|
4
|
-
solid: string;
|
|
5
|
-
outline: string;
|
|
6
4
|
ghost: string;
|
|
5
|
+
soft: string;
|
|
6
|
+
outline: string;
|
|
7
|
+
solid: string;
|
|
8
|
+
glass: string;
|
|
9
|
+
'glass-surface': string;
|
|
7
10
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
tone: {
|
|
12
|
+
primary: string;
|
|
13
|
+
neutral: string;
|
|
14
|
+
danger: string;
|
|
15
|
+
success: string;
|
|
16
|
+
warning: string;
|
|
12
17
|
};
|
|
13
|
-
}, undefined, "
|
|
18
|
+
}, undefined, "", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
14
19
|
variant: {
|
|
15
|
-
solid: string;
|
|
16
|
-
outline: string;
|
|
17
20
|
ghost: string;
|
|
21
|
+
soft: string;
|
|
22
|
+
outline: string;
|
|
23
|
+
solid: string;
|
|
24
|
+
glass: string;
|
|
25
|
+
'glass-surface': string;
|
|
18
26
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
tone: {
|
|
28
|
+
primary: string;
|
|
29
|
+
neutral: string;
|
|
30
|
+
danger: string;
|
|
31
|
+
success: string;
|
|
32
|
+
warning: string;
|
|
23
33
|
};
|
|
24
34
|
}, {
|
|
25
35
|
variant: {
|
|
26
|
-
solid: string;
|
|
27
|
-
outline: string;
|
|
28
36
|
ghost: string;
|
|
37
|
+
soft: string;
|
|
38
|
+
outline: string;
|
|
39
|
+
solid: string;
|
|
40
|
+
glass: string;
|
|
41
|
+
'glass-surface': string;
|
|
29
42
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
43
|
+
tone: {
|
|
44
|
+
primary: string;
|
|
45
|
+
neutral: string;
|
|
46
|
+
danger: string;
|
|
47
|
+
success: string;
|
|
48
|
+
warning: string;
|
|
34
49
|
};
|
|
35
50
|
}>, {
|
|
36
51
|
variant: {
|
|
37
|
-
solid: string;
|
|
38
|
-
outline: string;
|
|
39
52
|
ghost: string;
|
|
53
|
+
soft: string;
|
|
54
|
+
outline: string;
|
|
55
|
+
solid: string;
|
|
56
|
+
glass: string;
|
|
57
|
+
'glass-surface': string;
|
|
40
58
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
59
|
+
tone: {
|
|
60
|
+
primary: string;
|
|
61
|
+
neutral: string;
|
|
62
|
+
danger: string;
|
|
63
|
+
success: string;
|
|
64
|
+
warning: string;
|
|
45
65
|
};
|
|
46
66
|
}, undefined, import("tailwind-variants").TVReturnType<{
|
|
47
67
|
variant: {
|
|
48
|
-
solid: string;
|
|
49
|
-
outline: string;
|
|
50
68
|
ghost: string;
|
|
69
|
+
soft: string;
|
|
70
|
+
outline: string;
|
|
71
|
+
solid: string;
|
|
72
|
+
glass: string;
|
|
73
|
+
'glass-surface': string;
|
|
51
74
|
};
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
75
|
+
tone: {
|
|
76
|
+
primary: string;
|
|
77
|
+
neutral: string;
|
|
78
|
+
danger: string;
|
|
79
|
+
success: string;
|
|
80
|
+
warning: string;
|
|
56
81
|
};
|
|
57
|
-
}, undefined, "
|
|
82
|
+
}, undefined, "", import("tailwind-variants/dist/config.js").TVConfig<{
|
|
58
83
|
variant: {
|
|
59
|
-
solid: string;
|
|
60
|
-
outline: string;
|
|
61
84
|
ghost: string;
|
|
85
|
+
soft: string;
|
|
86
|
+
outline: string;
|
|
87
|
+
solid: string;
|
|
88
|
+
glass: string;
|
|
89
|
+
'glass-surface': string;
|
|
62
90
|
};
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
91
|
+
tone: {
|
|
92
|
+
primary: string;
|
|
93
|
+
neutral: string;
|
|
94
|
+
danger: string;
|
|
95
|
+
success: string;
|
|
96
|
+
warning: string;
|
|
67
97
|
};
|
|
68
98
|
}, {
|
|
69
99
|
variant: {
|
|
70
|
-
solid: string;
|
|
71
|
-
outline: string;
|
|
72
100
|
ghost: string;
|
|
101
|
+
soft: string;
|
|
102
|
+
outline: string;
|
|
103
|
+
solid: string;
|
|
104
|
+
glass: string;
|
|
105
|
+
'glass-surface': string;
|
|
73
106
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
107
|
+
tone: {
|
|
108
|
+
primary: string;
|
|
109
|
+
neutral: string;
|
|
110
|
+
danger: string;
|
|
111
|
+
success: string;
|
|
112
|
+
warning: string;
|
|
78
113
|
};
|
|
79
114
|
}>, unknown, unknown, undefined>>;
|
|
80
115
|
export type ToggleButtonVariants = VariantProps<typeof toggleButtonVariants>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleButton.variants.d.ts","sourceRoot":"","sources":["../../../src/actions/toggleButton/ToggleButton.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ToggleButton.variants.d.ts","sourceRoot":"","sources":["../../../src/actions/toggleButton/ToggleButton.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAkE/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OverlayChromeProvider, OverlayBody, OverlayCloseButton, OverlayDescription, OverlayFooter, OverlayHeader, OverlayTitle } from './chunk-526AMQXZ.js';
|
|
2
|
-
import { Backdrop } from './chunk-
|
|
2
|
+
import { Backdrop } from './chunk-BLXE2RCC.js';
|
|
3
3
|
import { useControlled } from './chunk-NUMFGKPY.js';
|
|
4
4
|
import { Slot, Portal, ScrollLockProvider, DismissableLayer } from './chunk-BMABNEZX.js';
|
|
5
5
|
import { composeRefs, cn } from './chunk-LDRFQG44.js';
|
|
@@ -114,7 +114,7 @@ var DrawerContent = forwardRef(
|
|
|
114
114
|
"data-state": "open",
|
|
115
115
|
"data-side": ctx.side,
|
|
116
116
|
className: cn(
|
|
117
|
-
"fixed z-
|
|
117
|
+
"fixed z-modal flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none",
|
|
118
118
|
SIDE_CLASSES[ctx.side],
|
|
119
119
|
className
|
|
120
120
|
),
|
|
@@ -143,5 +143,5 @@ Drawer.Footer = DrawerFooter;
|
|
|
143
143
|
Drawer.Close = DrawerClose;
|
|
144
144
|
|
|
145
145
|
export { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger };
|
|
146
|
-
//# sourceMappingURL=chunk-
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
146
|
+
//# sourceMappingURL=chunk-2SIB3MZL.js.map
|
|
147
|
+
//# sourceMappingURL=chunk-2SIB3MZL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/overlays/drawer/Drawer.tsx"],"names":["DrawerTrigger","DrawerContent"],"mappings":";;;;;;;;;AAyCA,IAAM,aAAA,GAAgB,cAAyC,IAAI,CAAA;AAEnE,SAAS,gBAAA,GAAmB;AAC1B,EAAA,MAAM,GAAA,GAAM,WAAW,aAAa,CAAA;AACpC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,uCAAuC,CAAA;AACjE,EAAA,OAAO,GAAA;AACT;AAYO,SAAS,MAAA,CAAO;AAAA,EACrB,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,GAAc,KAAA;AAAA,EACd,YAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,qBAAA,GAAwB,IAAA;AAAA,EACxB,eAAA,GAAkB,IAAA;AAAA,EAClB;AACF,CAAA,EAAgB;AACd,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,aAAA,CAAc;AAAA,IACpC,UAAA,EAAY,QAAA;AAAA,IACZ,OAAA,EAAS,WAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,MAAM,UAAA,GAAa,OAA2B,IAAI,CAAA;AAClD,EAAA,MAAM,UAAU,KAAA,EAAM;AACtB,EAAA,MAAM,gBAAgB,KAAA,EAAM;AAE5B,EAAA,MAAM,GAAA,GAAM,OAAA;AAAA,IACV,OAAO;AAAA,MACL,IAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,IAAA,EAAM,OAAA,EAAS,SAAS,aAAA,EAAe,IAAA,EAAM,uBAAuB,eAAe;AAAA,GACtF;AAEA,EAAA,2BAAQ,aAAA,CAAc,QAAA,EAAd,EAAuB,KAAA,EAAO,KAAM,QAAA,EAAS,CAAA;AACvD;AAQO,IAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,SAASA,eAAc,EAAE,OAAA,EAAS,SAAS,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,YAAA,EAAc;AAC5E,IAAA,MAAM,MAAM,gBAAA,EAAiB;AAC7B,IAAA,MAAM,SAAA,GAAY,UAAU,IAAA,GAAO,QAAA;AACnC,IAAA,uBACE,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA,CAAY,YAAA,EAAc,GAAA,CAAI,UAA8D,CAAA;AAAA,QACjG,IAAA,EAAK,QAAA;AAAA,QACL,eAAA,EAAc,QAAA;AAAA,QACd,iBAAe,GAAA,CAAI,IAAA;AAAA,QACnB,YAAA,EAAY,GAAA,CAAI,IAAA,GAAO,MAAA,GAAS,QAAA;AAAA,QAChC,OAAA,EAAS,CAAC,CAAA,KAA2C;AACnD,UAAA,OAAA,GAAU,CAAC,CAAA;AACX,UAAA,IAAI,EAAE,gBAAA,EAAkB;AACxB,UAAA,GAAA,CAAI,QAAQ,IAAI,CAAA;AAAA,QAClB,CAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,IAAM,YAAA,GAA2C;AAAA,EAC/C,KAAA,EACE,qFAAA;AAAA,EACF,IAAA,EAAM,mFAAA;AAAA,EACN,GAAA,EAAK,2EAAA;AAAA,EACL,MAAA,EAAQ;AACV,CAAA;AAQO,IAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,SAASC,cAAAA,CACP,EAAE,YAAA,EAAc,IAAA,EAAM,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EACnD,YAAA,EACA;AACA,IAAA,MAAM,MAAM,gBAAA,EAAiB;AAE7B,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,MAAA,GAAA,CAAI,QAAQ,KAAK,CAAA;AACjB,MAAA,qBAAA,CAAsB,MAAM,GAAA,CAAI,UAAA,CAAW,OAAA,EAAS,OAAO,CAAA;AAAA,IAC7D,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,IAAA,MAAM,SAAA,GAAY,OAAA;AAAA,MAChB,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,SAAS,aAAA,EAAe,GAAA,CAAI,eAAe,KAAA,EAAM,CAAA;AAAA,MACvE,CAAC,GAAA,CAAI,OAAA,EAAS,GAAA,CAAI,eAAe,KAAK;AAAA,KACxC;AAEA,IAAA,IAAI,CAAC,GAAA,CAAI,IAAA,EAAM,OAAO,IAAA;AACtB,IAAA,uBACE,GAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,kBAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,CAAC,YAAA,oBACA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,MAAA,EAAM,IAAA;AAAA,UACN,IAAA;AAAA,UACA,SAAS,MAAM;AACb,YAAA,IAAI,GAAA,CAAI,qBAAA,EAAuB,GAAA,CAAI,OAAA,CAAQ,KAAK,CAAA;AAAA,UAClD;AAAA;AAAA,OACF;AAAA,0BAED,UAAA,EAAA,EAAW,OAAA,EAAO,MAAC,OAAA,EAAO,IAAA,EAAC,MAAI,IAAA,EAC9B,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,CAAC,GAAA,CAAI,eAAA;AAAA,UACpB,QAAA,EAAU,MAAM,GAAA,CAAI,OAAA,CAAQ,KAAK,CAAA;AAAA,UACjC,mBAAA,EAAmB,IAAA;AAAA,UAEnB,QAAA,kBAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,YAAA;AAAA,cACL,IAAA,EAAK,QAAA;AAAA,cACL,YAAA,EAAW,MAAA;AAAA,cACX,mBAAiB,GAAA,CAAI,OAAA;AAAA,cACrB,oBAAkB,GAAA,CAAI,aAAA;AAAA,cACtB,YAAA,EAAW,MAAA;AAAA,cACX,aAAW,GAAA,CAAI,IAAA;AAAA,cACf,SAAA,EAAW,EAAA;AAAA,gBACT,uFAAA;AAAA,gBACA,YAAA,CAAa,IAAI,IAAI,CAAA;AAAA,gBACrB;AAAA,eACF;AAAA,cACC,GAAG,IAAA;AAAA,cAEJ,QAAA,kBAAA,GAAA,CAAC,qBAAA,EAAA,EAAsB,KAAA,EAAO,SAAA,EAAY,QAAA,EAAS;AAAA;AAAA;AACrD;AAAA,OACF,EACF;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAGO,IAAM,YAAA,GAAe;AACrB,IAAM,WAAA,GAAc;AACpB,IAAM,iBAAA,GAAoB;AAC1B,IAAM,UAAA,GAAa;AACnB,IAAM,YAAA,GAAe;AACrB,IAAM,WAAA,GAAc;AAa1B,MAAA,CAA2B,OAAA,GAAU,aAAA;AACrC,MAAA,CAA2B,OAAA,GAAU,aAAA;AACrC,MAAA,CAA2B,MAAA,GAAS,YAAA;AACpC,MAAA,CAA2B,KAAA,GAAQ,WAAA;AACnC,MAAA,CAA2B,WAAA,GAAc,iBAAA;AACzC,MAAA,CAA2B,IAAA,GAAO,UAAA;AAClC,MAAA,CAA2B,MAAA,GAAS,YAAA;AACpC,MAAA,CAA2B,KAAA,GAAQ,WAAA","file":"chunk-XTAFNWLG.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { DismissableLayer, Portal, ScrollLockProvider, Slot } from '../../primitives';\nimport { Backdrop } from '../backdrop';\nimport {\n OverlayBody,\n OverlayChromeProvider,\n OverlayCloseButton,\n OverlayDescription,\n OverlayFooter,\n OverlayHeader,\n OverlayTitle,\n type OverlayChromeContextValue,\n} from '../OverlayChrome';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\ninterface DrawerContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n titleId: string;\n descriptionId: string;\n side: DrawerSide;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nfunction useDrawerContext() {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error('Drawer.* must be used inside <Drawer>');\n return ctx;\n}\n\nexport interface DrawerProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: DrawerSide;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n side = 'right',\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: DrawerProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const titleId = useId();\n const descriptionId = useId();\n\n const ctx = useMemo<DrawerContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n titleId,\n descriptionId,\n side,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, titleId, descriptionId, side, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>;\n}\n\nexport interface DrawerTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n function DrawerTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = useDrawerContext();\n const Component = asChild ? Slot : 'button';\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef as React.MutableRefObject<HTMLButtonElement | null>) as never}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(true);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nconst SIDE_CLASSES: Record<DrawerSide, string> = {\n right:\n 'inset-y-0 right-0 h-full w-full sm:max-w-sm border-l animate-in slide-in-from-right',\n left: 'inset-y-0 left-0 h-full w-full sm:max-w-sm border-r animate-in slide-in-from-left',\n top: 'inset-x-0 top-0 w-full max-h-[85vh] border-b animate-in slide-in-from-top',\n bottom: 'inset-x-0 bottom-0 w-full max-h-[85vh] border-t animate-in slide-in-from-bottom',\n};\n\nexport interface DrawerContentProps extends HTMLAttributes<HTMLDivElement> {\n hideBackdrop?: boolean;\n blur?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n function DrawerContent(\n { hideBackdrop, blur, className, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useDrawerContext();\n\n const close = useCallback(() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }, [ctx]);\n\n const chromeCtx = useMemo<OverlayChromeContextValue>(\n () => ({ titleId: ctx.titleId, descriptionId: ctx.descriptionId, close }),\n [ctx.titleId, ctx.descriptionId, close],\n );\n\n if (!ctx.open) return null;\n return (\n <Portal>\n <ScrollLockProvider>\n {!hideBackdrop && (\n <Backdrop\n inline\n blur={blur}\n onClick={() => {\n if (ctx.dismissOnOutsideClick) ctx.setOpen(false);\n }}\n />\n )}\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!ctx.dismissOnEscape}\n onEscape={() => ctx.setOpen(false)}\n disableOutsideClick\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ctx.titleId}\n aria-describedby={ctx.descriptionId}\n data-state=\"open\"\n data-side={ctx.side}\n className={cn(\n 'fixed z-50 flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none',\n SIDE_CLASSES[ctx.side],\n className,\n )}\n {...rest}\n >\n <OverlayChromeProvider value={chromeCtx}>{children}</OverlayChromeProvider>\n </div>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n );\n },\n);\n\n// Re-export shared chrome subcomponents under the Drawer namespace.\nexport const DrawerHeader = OverlayHeader;\nexport const DrawerTitle = OverlayTitle;\nexport const DrawerDescription = OverlayDescription;\nexport const DrawerBody = OverlayBody;\nexport const DrawerFooter = OverlayFooter;\nexport const DrawerClose = OverlayCloseButton;\n\ntype DrawerComponent = typeof Drawer & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n Header: typeof DrawerHeader;\n Title: typeof DrawerTitle;\n Description: typeof DrawerDescription;\n Body: typeof DrawerBody;\n Footer: typeof DrawerFooter;\n Close: typeof DrawerClose;\n};\n\n(Drawer as DrawerComponent).Trigger = DrawerTrigger;\n(Drawer as DrawerComponent).Content = DrawerContent;\n(Drawer as DrawerComponent).Header = DrawerHeader;\n(Drawer as DrawerComponent).Title = DrawerTitle;\n(Drawer as DrawerComponent).Description = DrawerDescription;\n(Drawer as DrawerComponent).Body = DrawerBody;\n(Drawer as DrawerComponent).Footer = DrawerFooter;\n(Drawer as DrawerComponent).Close = DrawerClose;\n\nexport default Drawer as DrawerComponent;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/overlays/drawer/Drawer.tsx"],"names":["DrawerTrigger","DrawerContent"],"mappings":"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","file":"chunk-2SIB3MZL.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { DismissableLayer, Portal, ScrollLockProvider, Slot } from '../../primitives';\nimport { Backdrop } from '../backdrop';\nimport {\n OverlayBody,\n OverlayChromeProvider,\n OverlayCloseButton,\n OverlayDescription,\n OverlayFooter,\n OverlayHeader,\n OverlayTitle,\n type OverlayChromeContextValue,\n} from '../OverlayChrome';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\ninterface DrawerContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n titleId: string;\n descriptionId: string;\n side: DrawerSide;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nfunction useDrawerContext() {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error('Drawer.* must be used inside <Drawer>');\n return ctx;\n}\n\nexport interface DrawerProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: DrawerSide;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n side = 'right',\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: DrawerProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const titleId = useId();\n const descriptionId = useId();\n\n const ctx = useMemo<DrawerContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n titleId,\n descriptionId,\n side,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, titleId, descriptionId, side, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>;\n}\n\nexport interface DrawerTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n function DrawerTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = useDrawerContext();\n const Component = asChild ? Slot : 'button';\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef as React.MutableRefObject<HTMLButtonElement | null>) as never}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(true);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nconst SIDE_CLASSES: Record<DrawerSide, string> = {\n right:\n 'inset-y-0 right-0 h-full w-full sm:max-w-sm border-l animate-in slide-in-from-right',\n left: 'inset-y-0 left-0 h-full w-full sm:max-w-sm border-r animate-in slide-in-from-left',\n top: 'inset-x-0 top-0 w-full max-h-[85vh] border-b animate-in slide-in-from-top',\n bottom: 'inset-x-0 bottom-0 w-full max-h-[85vh] border-t animate-in slide-in-from-bottom',\n};\n\nexport interface DrawerContentProps extends HTMLAttributes<HTMLDivElement> {\n hideBackdrop?: boolean;\n blur?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n function DrawerContent(\n { hideBackdrop, blur, className, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useDrawerContext();\n\n const close = useCallback(() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }, [ctx]);\n\n const chromeCtx = useMemo<OverlayChromeContextValue>(\n () => ({ titleId: ctx.titleId, descriptionId: ctx.descriptionId, close }),\n [ctx.titleId, ctx.descriptionId, close],\n );\n\n if (!ctx.open) return null;\n return (\n <Portal>\n <ScrollLockProvider>\n {!hideBackdrop && (\n <Backdrop\n inline\n blur={blur}\n onClick={() => {\n if (ctx.dismissOnOutsideClick) ctx.setOpen(false);\n }}\n />\n )}\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!ctx.dismissOnEscape}\n onEscape={() => ctx.setOpen(false)}\n disableOutsideClick\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ctx.titleId}\n aria-describedby={ctx.descriptionId}\n data-state=\"open\"\n data-side={ctx.side}\n className={cn(\n 'fixed z-modal flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none',\n SIDE_CLASSES[ctx.side],\n className,\n )}\n {...rest}\n >\n <OverlayChromeProvider value={chromeCtx}>{children}</OverlayChromeProvider>\n </div>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n );\n },\n);\n\n// Re-export shared chrome subcomponents under the Drawer namespace.\nexport const DrawerHeader = OverlayHeader;\nexport const DrawerTitle = OverlayTitle;\nexport const DrawerDescription = OverlayDescription;\nexport const DrawerBody = OverlayBody;\nexport const DrawerFooter = OverlayFooter;\nexport const DrawerClose = OverlayCloseButton;\n\ntype DrawerComponent = typeof Drawer & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n Header: typeof DrawerHeader;\n Title: typeof DrawerTitle;\n Description: typeof DrawerDescription;\n Body: typeof DrawerBody;\n Footer: typeof DrawerFooter;\n Close: typeof DrawerClose;\n};\n\n(Drawer as DrawerComponent).Trigger = DrawerTrigger;\n(Drawer as DrawerComponent).Content = DrawerContent;\n(Drawer as DrawerComponent).Header = DrawerHeader;\n(Drawer as DrawerComponent).Title = DrawerTitle;\n(Drawer as DrawerComponent).Description = DrawerDescription;\n(Drawer as DrawerComponent).Body = DrawerBody;\n(Drawer as DrawerComponent).Footer = DrawerFooter;\n(Drawer as DrawerComponent).Close = DrawerClose;\n\nexport default Drawer as DrawerComponent;\n"]}
|