@wow-two-beta/ui 0.0.17 → 0.0.19
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/backToTopButton/BackToTopButton.d.ts +19 -0
- package/dist/actions/backToTopButton/BackToTopButton.d.ts.map +1 -0
- package/dist/actions/backToTopButton/index.d.ts +2 -0
- package/dist/actions/backToTopButton/index.d.ts.map +1 -0
- package/dist/actions/index.d.ts +1 -0
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +2 -2
- package/dist/{chunk-XHGWBSIR.js → chunk-25CGSOXZ.js} +5 -87
- package/dist/chunk-25CGSOXZ.js.map +1 -0
- package/dist/{chunk-SM2TOB4U.js → chunk-3KPILWVX.js} +268 -4
- package/dist/chunk-3KPILWVX.js.map +1 -0
- package/dist/{chunk-3IN5ULKY.js → chunk-45SFQEMP.js} +417 -37
- package/dist/chunk-45SFQEMP.js.map +1 -0
- package/dist/{chunk-2VAZKEQD.js → chunk-DSA7L7PD.js} +256 -141
- package/dist/chunk-DSA7L7PD.js.map +1 -0
- package/dist/{chunk-NRAJPSEK.js → chunk-GRJBIGUD.js} +72 -6
- package/dist/chunk-GRJBIGUD.js.map +1 -0
- package/dist/chunk-NKADHZMX.js +39 -0
- package/dist/chunk-NKADHZMX.js.map +1 -0
- package/dist/chunk-NTW7SDAP.js +92 -0
- package/dist/chunk-NTW7SDAP.js.map +1 -0
- package/dist/chunk-O6UUYPTB.js +148 -0
- package/dist/chunk-O6UUYPTB.js.map +1 -0
- package/dist/{chunk-ILYL6ROC.js → chunk-WRPLV6H2.js} +807 -6
- package/dist/chunk-WRPLV6H2.js.map +1 -0
- package/dist/{chunk-4ESR253U.js → chunk-XRTXK5Y4.js} +119 -7
- package/dist/chunk-XRTXK5Y4.js.map +1 -0
- package/dist/{chunk-W7LQZKTH.js → chunk-ZP4CBWO2.js} +256 -4
- package/dist/chunk-ZP4CBWO2.js.map +1 -0
- package/dist/display/diffViewer/DiffViewer.d.ts +17 -0
- package/dist/display/diffViewer/DiffViewer.d.ts.map +1 -0
- package/dist/display/diffViewer/index.d.ts +2 -0
- package/dist/display/diffViewer/index.d.ts.map +1 -0
- package/dist/display/index.d.ts +2 -0
- package/dist/display/index.d.ts.map +1 -1
- package/dist/display/index.js +2 -2
- package/dist/display/swipeActions/SwipeActions.d.ts +17 -0
- package/dist/display/swipeActions/SwipeActions.d.ts.map +1 -0
- package/dist/display/swipeActions/index.d.ts +2 -0
- package/dist/display/swipeActions/index.d.ts.map +1 -0
- package/dist/feedback/index.d.ts +3 -0
- package/dist/feedback/index.d.ts.map +1 -1
- package/dist/feedback/index.js +3 -1
- package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts +33 -0
- package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts.map +1 -0
- package/dist/feedback/onboardingChecklist/index.d.ts +3 -0
- package/dist/feedback/onboardingChecklist/index.d.ts.map +1 -0
- package/dist/feedback/tour/Tour.d.ts +25 -0
- package/dist/feedback/tour/Tour.d.ts.map +1 -0
- package/dist/feedback/tour/index.d.ts +2 -0
- package/dist/feedback/tour/index.d.ts.map +1 -0
- package/dist/feedback/undoBar/UndoBar.d.ts +22 -0
- package/dist/feedback/undoBar/UndoBar.d.ts.map +1 -0
- package/dist/feedback/undoBar/index.d.ts +2 -0
- package/dist/feedback/undoBar/index.d.ts.map +1 -0
- package/dist/forms/codeEditor/CodeEditor.d.ts +20 -0
- package/dist/forms/codeEditor/CodeEditor.d.ts.map +1 -0
- package/dist/forms/codeEditor/index.d.ts +2 -0
- package/dist/forms/codeEditor/index.d.ts.map +1 -0
- package/dist/forms/index.d.ts +4 -0
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +6 -4
- package/dist/forms/jsonEditor/JSONEditor.d.ts +22 -0
- package/dist/forms/jsonEditor/JSONEditor.d.ts.map +1 -0
- package/dist/forms/jsonEditor/index.d.ts +2 -0
- package/dist/forms/jsonEditor/index.d.ts.map +1 -0
- package/dist/forms/markdownEditor/MarkdownEditor.d.ts +20 -0
- package/dist/forms/markdownEditor/MarkdownEditor.d.ts.map +1 -0
- package/dist/forms/markdownEditor/index.d.ts +2 -0
- package/dist/forms/markdownEditor/index.d.ts.map +1 -0
- package/dist/forms/wizard/Wizard.d.ts +58 -0
- package/dist/forms/wizard/Wizard.d.ts.map +1 -0
- package/dist/forms/wizard/index.d.ts +3 -0
- package/dist/forms/wizard/index.d.ts.map +1 -0
- package/dist/index.js +12 -9
- package/dist/layout/appShell/AppShell.d.ts +50 -0
- package/dist/layout/appShell/AppShell.d.ts.map +1 -0
- package/dist/layout/appShell/index.d.ts +3 -0
- package/dist/layout/appShell/index.d.ts.map +1 -0
- package/dist/layout/index.d.ts +2 -0
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +7 -2
- package/dist/layout/pullToRefresh/PullToRefresh.d.ts +15 -0
- package/dist/layout/pullToRefresh/PullToRefresh.d.ts.map +1 -0
- package/dist/layout/pullToRefresh/index.d.ts +2 -0
- package/dist/layout/pullToRefresh/index.d.ts.map +1 -0
- package/dist/nav/index.d.ts +2 -0
- package/dist/nav/index.d.ts.map +1 -1
- package/dist/nav/index.js +4 -3
- package/dist/nav/scrollSpy/ScrollSpy.d.ts +25 -0
- package/dist/nav/scrollSpy/ScrollSpy.d.ts.map +1 -0
- package/dist/nav/scrollSpy/index.d.ts +2 -0
- package/dist/nav/scrollSpy/index.d.ts.map +1 -0
- package/dist/nav/tableOfContents/TableOfContents.d.ts +24 -0
- package/dist/nav/tableOfContents/TableOfContents.d.ts.map +1 -0
- package/dist/nav/tableOfContents/index.d.ts +2 -0
- package/dist/nav/tableOfContents/index.d.ts.map +1 -0
- package/dist/overlays/actionSheet/ActionSheet.d.ts +29 -0
- package/dist/overlays/actionSheet/ActionSheet.d.ts.map +1 -0
- package/dist/overlays/actionSheet/index.d.ts +3 -0
- package/dist/overlays/actionSheet/index.d.ts.map +1 -0
- package/dist/overlays/bottomSheet/BottomSheet.d.ts +29 -0
- package/dist/overlays/bottomSheet/BottomSheet.d.ts.map +1 -0
- package/dist/overlays/bottomSheet/index.d.ts +2 -0
- package/dist/overlays/bottomSheet/index.d.ts.map +1 -0
- package/dist/overlays/index.d.ts +2 -0
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/overlays/index.js +5 -3
- package/package.json +2 -1
- package/dist/chunk-2VAZKEQD.js.map +0 -1
- package/dist/chunk-3IN5ULKY.js.map +0 -1
- package/dist/chunk-4ESR253U.js.map +0 -1
- package/dist/chunk-ILYL6ROC.js.map +0 -1
- package/dist/chunk-NRAJPSEK.js.map +0 -1
- package/dist/chunk-SM2TOB4U.js.map +0 -1
- package/dist/chunk-W7LQZKTH.js.map +0 -1
- package/dist/chunk-XHGWBSIR.js.map +0 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { OverlayChromeProvider, OverlayBody, OverlayCloseButton, OverlayDescription, OverlayFooter, OverlayHeader, OverlayTitle } from './chunk-NTW7SDAP.js';
|
|
2
|
+
import { Backdrop } from './chunk-ASIHQQDQ.js';
|
|
3
|
+
import { useControlled } from './chunk-4P2TFUVW.js';
|
|
4
|
+
import { Slot, Portal, ScrollLockProvider, DismissableLayer } from './chunk-NC2CBGX2.js';
|
|
5
|
+
import { composeRefs } from './chunk-DN7WBRIV.js';
|
|
6
|
+
import { cn } from './chunk-KZ4VFY2T.js';
|
|
7
|
+
import { createContext, forwardRef, useCallback, useMemo, useContext, useRef, useId } from 'react';
|
|
8
|
+
import { FocusScope } from '@radix-ui/react-focus-scope';
|
|
9
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
10
|
+
|
|
11
|
+
var DrawerContext = createContext(null);
|
|
12
|
+
function useDrawerContext() {
|
|
13
|
+
const ctx = useContext(DrawerContext);
|
|
14
|
+
if (!ctx) throw new Error("Drawer.* must be used inside <Drawer>");
|
|
15
|
+
return ctx;
|
|
16
|
+
}
|
|
17
|
+
function Drawer({
|
|
18
|
+
open: openProp,
|
|
19
|
+
defaultOpen = false,
|
|
20
|
+
onOpenChange,
|
|
21
|
+
side = "right",
|
|
22
|
+
dismissOnOutsideClick = true,
|
|
23
|
+
dismissOnEscape = true,
|
|
24
|
+
children
|
|
25
|
+
}) {
|
|
26
|
+
const [open, setOpen] = useControlled({
|
|
27
|
+
controlled: openProp,
|
|
28
|
+
default: defaultOpen,
|
|
29
|
+
onChange: onOpenChange
|
|
30
|
+
});
|
|
31
|
+
const triggerRef = useRef(null);
|
|
32
|
+
const titleId = useId();
|
|
33
|
+
const descriptionId = useId();
|
|
34
|
+
const ctx = useMemo(
|
|
35
|
+
() => ({
|
|
36
|
+
open,
|
|
37
|
+
setOpen,
|
|
38
|
+
triggerRef,
|
|
39
|
+
titleId,
|
|
40
|
+
descriptionId,
|
|
41
|
+
side,
|
|
42
|
+
dismissOnOutsideClick,
|
|
43
|
+
dismissOnEscape
|
|
44
|
+
}),
|
|
45
|
+
[open, setOpen, titleId, descriptionId, side, dismissOnOutsideClick, dismissOnEscape]
|
|
46
|
+
);
|
|
47
|
+
return /* @__PURE__ */ jsx(DrawerContext.Provider, { value: ctx, children });
|
|
48
|
+
}
|
|
49
|
+
var DrawerTrigger = forwardRef(
|
|
50
|
+
function DrawerTrigger2({ asChild, onClick, children, ...rest }, forwardedRef) {
|
|
51
|
+
const ctx = useDrawerContext();
|
|
52
|
+
const Component = asChild ? Slot : "button";
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
Component,
|
|
55
|
+
{
|
|
56
|
+
ref: composeRefs(forwardedRef, ctx.triggerRef),
|
|
57
|
+
type: "button",
|
|
58
|
+
"aria-haspopup": "dialog",
|
|
59
|
+
"aria-expanded": ctx.open,
|
|
60
|
+
"data-state": ctx.open ? "open" : "closed",
|
|
61
|
+
onClick: (e) => {
|
|
62
|
+
onClick?.(e);
|
|
63
|
+
if (e.defaultPrevented) return;
|
|
64
|
+
ctx.setOpen(true);
|
|
65
|
+
},
|
|
66
|
+
...rest,
|
|
67
|
+
children
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
var SIDE_CLASSES = {
|
|
73
|
+
right: "inset-y-0 right-0 h-full w-full sm:max-w-sm border-l animate-in slide-in-from-right",
|
|
74
|
+
left: "inset-y-0 left-0 h-full w-full sm:max-w-sm border-r animate-in slide-in-from-left",
|
|
75
|
+
top: "inset-x-0 top-0 w-full max-h-[85vh] border-b animate-in slide-in-from-top",
|
|
76
|
+
bottom: "inset-x-0 bottom-0 w-full max-h-[85vh] border-t animate-in slide-in-from-bottom"
|
|
77
|
+
};
|
|
78
|
+
var DrawerContent = forwardRef(
|
|
79
|
+
function DrawerContent2({ hideBackdrop, blur, className, children, ...rest }, forwardedRef) {
|
|
80
|
+
const ctx = useDrawerContext();
|
|
81
|
+
const close = useCallback(() => {
|
|
82
|
+
ctx.setOpen(false);
|
|
83
|
+
requestAnimationFrame(() => ctx.triggerRef.current?.focus());
|
|
84
|
+
}, [ctx]);
|
|
85
|
+
const chromeCtx = useMemo(
|
|
86
|
+
() => ({ titleId: ctx.titleId, descriptionId: ctx.descriptionId, close }),
|
|
87
|
+
[ctx.titleId, ctx.descriptionId, close]
|
|
88
|
+
);
|
|
89
|
+
if (!ctx.open) return null;
|
|
90
|
+
return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsxs(ScrollLockProvider, { children: [
|
|
91
|
+
!hideBackdrop && /* @__PURE__ */ jsx(
|
|
92
|
+
Backdrop,
|
|
93
|
+
{
|
|
94
|
+
inline: true,
|
|
95
|
+
blur,
|
|
96
|
+
onClick: () => {
|
|
97
|
+
if (ctx.dismissOnOutsideClick) ctx.setOpen(false);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
),
|
|
101
|
+
/* @__PURE__ */ jsx(FocusScope, { asChild: true, trapped: true, loop: true, children: /* @__PURE__ */ jsx(
|
|
102
|
+
DismissableLayer,
|
|
103
|
+
{
|
|
104
|
+
disableEscape: !ctx.dismissOnEscape,
|
|
105
|
+
onEscape: () => ctx.setOpen(false),
|
|
106
|
+
disableOutsideClick: true,
|
|
107
|
+
children: /* @__PURE__ */ jsx(
|
|
108
|
+
"div",
|
|
109
|
+
{
|
|
110
|
+
ref: forwardedRef,
|
|
111
|
+
role: "dialog",
|
|
112
|
+
"aria-modal": "true",
|
|
113
|
+
"aria-labelledby": ctx.titleId,
|
|
114
|
+
"aria-describedby": ctx.descriptionId,
|
|
115
|
+
"data-state": "open",
|
|
116
|
+
"data-side": ctx.side,
|
|
117
|
+
className: cn(
|
|
118
|
+
"fixed z-50 flex flex-col gap-4 border-border bg-background p-6 shadow-lg outline-none",
|
|
119
|
+
SIDE_CLASSES[ctx.side],
|
|
120
|
+
className
|
|
121
|
+
),
|
|
122
|
+
...rest,
|
|
123
|
+
children: /* @__PURE__ */ jsx(OverlayChromeProvider, { value: chromeCtx, children })
|
|
124
|
+
}
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
) })
|
|
128
|
+
] }) });
|
|
129
|
+
}
|
|
130
|
+
);
|
|
131
|
+
var DrawerHeader = OverlayHeader;
|
|
132
|
+
var DrawerTitle = OverlayTitle;
|
|
133
|
+
var DrawerDescription = OverlayDescription;
|
|
134
|
+
var DrawerBody = OverlayBody;
|
|
135
|
+
var DrawerFooter = OverlayFooter;
|
|
136
|
+
var DrawerClose = OverlayCloseButton;
|
|
137
|
+
Drawer.Trigger = DrawerTrigger;
|
|
138
|
+
Drawer.Content = DrawerContent;
|
|
139
|
+
Drawer.Header = DrawerHeader;
|
|
140
|
+
Drawer.Title = DrawerTitle;
|
|
141
|
+
Drawer.Description = DrawerDescription;
|
|
142
|
+
Drawer.Body = DrawerBody;
|
|
143
|
+
Drawer.Footer = DrawerFooter;
|
|
144
|
+
Drawer.Close = DrawerClose;
|
|
145
|
+
|
|
146
|
+
export { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger };
|
|
147
|
+
//# sourceMappingURL=chunk-O6UUYPTB.js.map
|
|
148
|
+
//# sourceMappingURL=chunk-O6UUYPTB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/overlays/drawer/Drawer.tsx"],"names":["DrawerTrigger","DrawerContent"],"mappings":"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","file":"chunk-O6UUYPTB.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"]}
|