diff --git a/packages/docs/examples/drawer-controlled.tsx b/packages/docs/examples/drawer-controlled.tsx new file mode 100644 index 000000000..1033c20a7 --- /dev/null +++ b/packages/docs/examples/drawer-controlled.tsx @@ -0,0 +1,64 @@ +import { + DrawerProvider, + Button, + DrawerPopover, + DrawerHeader, + DrawerHeading, + DrawerDismiss, + DrawerContent, + DrawerFooter, +} from '@vtex/shoreline' +import { DecorativeBox } from '../components/decorative-box' +import { useState } from 'react' + +export default function Example() { + const [open, setOpen] = useState(false) + const [loading, setLoading] = useState(false) + + async function someServerAction() { + if (open) { + setOpen(false) + + return + } + + setLoading(true) + + // This promise simulates a call to an API. + // Using the controlled apporach of the Drawer + // is particullary useful in programmatic dispatch scenarios. + await new Promise((resolve) => { + setTimeout(resolve, 3000) + }) + + setLoading(false) + setOpen(true) + } + + return ( + <> + + + + + Controlled Drawer + + + + + + + + + + + + + ) +} diff --git a/packages/docs/examples/drawer-long-content.tsx b/packages/docs/examples/drawer-long-content.tsx new file mode 100644 index 000000000..33965b119 --- /dev/null +++ b/packages/docs/examples/drawer-long-content.tsx @@ -0,0 +1,39 @@ +import { + DrawerProvider, + DrawerTrigger, + Button, + DrawerPopover, + DrawerHeader, + DrawerHeading, + DrawerDismiss, + DrawerContent, + DrawerFooter, +} from '@vtex/shoreline' +import { DecorativeBox } from '../components/decorative-box' + +export default function Example() { + return ( + + + + + + + Drawer Heading + + + + + + + + + + + + ) +} diff --git a/packages/docs/examples/drawer-small.tsx b/packages/docs/examples/drawer-small.tsx new file mode 100644 index 000000000..1fb2903f6 --- /dev/null +++ b/packages/docs/examples/drawer-small.tsx @@ -0,0 +1,39 @@ +import { + DrawerProvider, + DrawerTrigger, + Button, + DrawerPopover, + DrawerHeader, + DrawerHeading, + DrawerDismiss, + DrawerContent, + DrawerFooter, +} from '@vtex/shoreline' +import { DecorativeBox } from '../components/decorative-box' + +export default function Example() { + return ( + + + + + + + Small Drawer + + + + + + + + + + + + ) +} diff --git a/packages/docs/examples/drawer.tsx b/packages/docs/examples/drawer.tsx index 413fd5d1b..1482ce654 100644 --- a/packages/docs/examples/drawer.tsx +++ b/packages/docs/examples/drawer.tsx @@ -15,15 +15,15 @@ export default function Example() { return ( - + - + Drawer Heading - + + + + + Drawer Heading + + + + Content goes here + + + + + + + + ) +} +``` + +## Examples + +### Controlled + +The `open` and `onChangeOpen` props of [DrawerProvider](/components/drawer/drawer-provider) are used to control the [DrawerPopover](/components/drawer/drawer-popover) open state. + + + +### Long content + +The [DrawerContent](/components/drawer/drawer-content) adds a scrollbar for long content. + + + +### Small size + +The [DrawerPopover](/components/drawer/drawer-popover) has either a `small` or `medium`(default) size. - + ## Related components - - */} + diff --git a/packages/docs/pages/components/drawer/drawer-content.mdx b/packages/docs/pages/components/drawer/drawer-content.mdx new file mode 100644 index 000000000..1127105f9 --- /dev/null +++ b/packages/docs/pages/components/drawer/drawer-content.mdx @@ -0,0 +1,9 @@ +# DrawerContent + + + + + +## Optional props + + diff --git a/packages/docs/pages/components/drawer/drawer-dismiss.mdx b/packages/docs/pages/components/drawer/drawer-dismiss.mdx new file mode 100644 index 000000000..83253de0a --- /dev/null +++ b/packages/docs/pages/components/drawer/drawer-dismiss.mdx @@ -0,0 +1,9 @@ +# DrawerDismiss + + + + + +## Optional props + + diff --git a/packages/docs/pages/components/drawer/drawer-footer.mdx b/packages/docs/pages/components/drawer/drawer-footer.mdx new file mode 100644 index 000000000..8c3c3f077 --- /dev/null +++ b/packages/docs/pages/components/drawer/drawer-footer.mdx @@ -0,0 +1,9 @@ +# DrawerFooter + + + + + +## Optional props + +All props of `