Bottom Sheet
Bottom sheet는 화면 하단에 고정되어 이전 화면과 관련된 콘텐츠를 표시합니다. 사용자에게 추가적인 정보, 작업 또는 메뉴를 제공하는 데 사용됩니다.
import { ActionButton } from "seed-design/ui/action-button";
import {
BottomSheetBody,
BottomSheetContent,
BottomSheetFooter,
BottomSheetRoot,
BottomSheetTrigger,
} from "seed-design/ui/bottom-sheet";
const BottomSheetPreview = () => {
return (
<BottomSheetRoot>
<BottomSheetTrigger asChild>
<ActionButton>Open</ActionButton>
</BottomSheetTrigger>
<BottomSheetContent title="제목" description="설명을 작성할 수 있어요">
{/* If you need to omit padding, pass px={0}. */}
<BottomSheetBody minHeight="x16">Content</BottomSheetBody>
<BottomSheetFooter>
<ActionButton variant="neutralSolid">확인</ActionButton>
</BottomSheetFooter>
</BottomSheetContent>
</BottomSheetRoot>
);
};
export default BottomSheetPreview;
Installation
npx @seed-design/cli@latest add bottom-sheet
pnpm dlx @seed-design/cli@latest add bottom-sheet
yarn dlx @seed-design/cli@latest add bottom-sheet
bun x @seed-design/cli@latest add bottom-sheet
Props
Prop | Type | Default |
---|---|---|
onOpenChange? | ((open: boolean) => void) | - |
defaultOpen? | boolean | - |
open? | boolean | - |
unmountOnExit? | boolean | false |
lazyMount? | boolean | false |
closeOnEscape? | boolean | true |
closeOnInteractOutside? | boolean | true |
role? | "dialog" | "alertdialog" | "dialog" |
children? | ReactNode | - |
headerAlign? | "left" | "center" | left |
Examples
Trigger
<BottomSheetTrigger>
는 asChild
패턴을 사용해 자식 요소가 BottomSheet를 열 수 있도록 합니다.
<BottomSheetTrigger>
는 BottomSheet
의 open
상태에 따라 aria-expanded
속성을 자동으로 설정합니다. 이 속성은 스크린 리더와 같은 보조 기술에 유용합니다.
import { ActionButton } from "seed-design/ui/action-button";
import {
BottomSheetBody,
BottomSheetContent,
BottomSheetFooter,
BottomSheetRoot,
BottomSheetTrigger,
} from "seed-design/ui/bottom-sheet";
const BottomSheetTriggerExample = () => {
return (
<BottomSheetRoot>
<BottomSheetTrigger asChild>
<ActionButton>Open</ActionButton>
</BottomSheetTrigger>
<BottomSheetContent title="제목">
<BottomSheetBody minHeight="x16">Content</BottomSheetBody>
<BottomSheetFooter>
<ActionButton variant="neutralSolid">확인</ActionButton>
</BottomSheetFooter>
</BottomSheetContent>
</BottomSheetRoot>
);
};
export default BottomSheetTriggerExample;
Controlled
Trigger 외의 방식으로 BottomSheet를 열고 닫을 수 있습니다. 이 경우 open
prop을 사용하여 BottomSheet의 상태를 제어합니다.
import { useState } from "react";
import { ActionButton } from "seed-design/ui/action-button";
import {
BottomSheetBody,
BottomSheetContent,
BottomSheetFooter,
BottomSheetRoot,
} from "seed-design/ui/bottom-sheet";
const BottomSheetControlled = () => {
const [open, setOpen] = useState(false);
const scheduleOpen = () => {
setTimeout(() => {
setOpen(true);
}, 1000);
};
return (
<>
<ActionButton onClick={scheduleOpen}>1초 후 열기</ActionButton>
<BottomSheetRoot open={open} onOpenChange={setOpen}>
<BottomSheetContent title="제목" description="설명을 작성할 수 있어요">
{/* If you need to omit padding, pass px={0}. */}
<BottomSheetBody minHeight="x16">Content</BottomSheetBody>
<BottomSheetFooter>
<ActionButton variant="neutralSolid">확인</ActionButton>
</BottomSheetFooter>
</BottomSheetContent>
</BottomSheetRoot>
</>
);
};
export default BottomSheetControlled;
Last updated on