import type { Meta, StoryObj } from '@storybook/react' import * as React from 'react' import { Button } from '../Button' import { Field, FieldLabel, FieldControl } from '../Field' import { Input } from '../Input' import { Typography } from '../Typography' import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, DrawerHandle, } from './Drawer' const meta = { title: 'Blocks/Drawer', component: Drawer, argTypes: { defaultOpen: { control: 'boolean', description: 'The open state of the drawer when it is initially rendered.', table: { type: { summary: 'boolean', }, }, }, open: { control: 'boolean', description: 'The controlled open state of the drawer.', table: { type: { summary: 'boolean', }, }, }, onOpenChange: { control: false, description: 'Event handler called when the open state of the drawer changes.', table: { type: { summary: 'function', }, }, }, onAnimationEnd: { control: false, description: 'Event handler called when the drawer animation ends.', table: { type: { summary: 'function', }, }, }, snapPoints: { control: false, description: 'Array of snap points for the drawer. Each point is a number between 0 and 1 representing the percentage of the viewport height.', table: { type: { summary: 'array', }, }, }, activeSnapPoint: { control: false, description: 'The currently active snap point.', table: { type: { summary: 'number | string | null', }, }, }, setActiveSnapPoint: { control: false, description: 'Function to set the active snap point.', table: { type: { summary: 'function', }, }, }, fadeFromIndex: { control: { type: 'number' }, description: 'The index of the snap point from which to fade out the drawer.', table: { type: { summary: 'number', }, }, }, snapToSequentialPoint: { control: 'boolean', description: 'Whether to snap to sequential points when dragging.', table: { type: { summary: 'boolean', }, }, }, }, } satisfies Meta export default meta type Story = StoryObj export const Default: Story = { render: (args, context) => { const openProp = context.viewMode === 'story' ? { defaultOpen: true } : {} return ( Move Goal Set your daily activity goal.
350 CAL/DAY
) }, } export const SnapPoints: Story = { render: (_args, context) => { const open = context.viewMode === 'story' const SnapPointsExample = () => { const snapPoints = ['500px', 0.8, 1] const [snapPoint, setSnapPoint] = React.useState( snapPoints[0], ) return ( Snap Points Example Drag the drawer to snap to different heights.
Current snap point: {snapPoint ?? 'none'}
) } return }, } export const Inputs: Story = { render: (_args, context) => { const open = context.viewMode === 'story' const InputsExample = () => { const [email, setEmail] = React.useState('') const [name, setName] = React.useState('') return ( Contact Information Enter your details below. The drawer will automatically adjust when the keyboard appears.
Name setName(e.target.value)} /> Email setEmail(e.target.value)} />
) } return }, } export const NonModal: Story = { render: (_args, context) => { const openProp = context.viewMode === 'story' ? { defaultOpen: true } : {} return ( Non-Modal Drawer This drawer is non-modal, so you can interact with the background content.
Try clicking outside the drawer - you can still interact with the page behind it.
) }, } export const LongContent: Story = { render: (_args, context) => { const openProp = context.viewMode === 'story' ? { defaultOpen: true } : {} return (
Terms and Conditions Please read our terms and conditions carefully.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
) }, }