Modal
- 구성: Modal, ModalTrigger, ModalContent, ModalHeader, ModalTitle, ModalBody, ModalFooter, ModalClose, externalIsOpen(prop), onExternalChange(prop)
- ModalContent [variant]: default (default) | confirm
- ModalTrigger [asChild]: false (default) | true
- ModalClose [asChild]: false (default) | true
🧩 기본 사용 예시
<Modal> <ModalTrigger>모달 열기</ModalTrigger> <ModalContent> <ModalHeader> <ModalTitle>제목</ModalTitle> </ModalHeader> <ModalBody>본문</ModalBody> <ModalFooter> <ModalClose>닫기</ModalClose> </ModalFooter> </ModalContent> </Modal>
🧩 asChild 패턴 사용 예시
<Modal> <ModalTrigger asChild> <Button size='sm' variant='secondary'>열기</Button> </ModalTrigger> <ModalContent variant='confirm'> <ModalBody>정말 삭제하시겠습니까?</ModalBody> <ModalFooter> <ModalClose asChild> <Button variant='outline'>취소</Button> </ModalClose> <ModalClose asChild> <Button variant='primary'>확인</Button> </ModalClose> </ModalFooter> </ModalContent> </Modal>
🧩 제어 모달 사용 예시
<Modal externalIsOpen={isOpen} onExternalChange={setIsOpen}> <Modal.Trigger>열기</Modal.Trigger> <Modal.Content> <Modal.Header> <Modal.Title>제목</Modal.Title> </Modal.Header> <Modal.Body>본문</Modal.Body> <Modal.Footer> <Modal.Close>닫기</Modal.Close> </Modal.Footer> </Modal.Content> </Modal>
⚠️ 참고: asChild
를 사용하는 경우, 반드시 자식 요소를 단일 React 엘리먼트로 감싸야 합니다.