Skip to content

bash
npm install @hua-labs/hua
tsx
import { ConfirmModal } from "@hua-labs/hua";

isOpen*boolean-docs:components.confirmModal.props.isOpen
onClose*() => void-docs:components.confirmModal.props.onClose
onConfirm*() => void-docs:components.confirmModal.props.onConfirm
title*string-docs:components.confirmModal.props.title
message*string-docs:components.confirmModal.props.message
type"danger" | "warning" | "info" | "success" | "error""danger"docs:components.confirmModal.props.type
warningstring-docs:components.confirmModal.props.warning
confirmTextstring"확인"docs:components.confirmModal.props.confirmText
cancelTextstring"취소"docs:components.confirmModal.props.cancelText
loadingbooleanfalsedocs:components.confirmModal.props.loading
showInputbooleanfalsedocs:components.confirmModal.props.showInput
size"sm" | "md" | "lg" | "xl" | "2xl""md"Modal size
confirmButtonTextstring-Confirm button text (alias for confirmText)
disabledbooleanfalseDisable confirm button
showCancelbooleantrueShow cancel button
inputValuestring-Input value when showInput is true
onInputChange(value: string) => void-Input change handler
inputPlaceholderstring-Input placeholder text
inputLabelstring-Input label text
requiredInputValuestring-docs:components.confirmModal.props.requiredInputValue

docs:common.basicUsagetsx
1// Via framework (recommended)
2import { ConfirmModal, Button } from '@hua-labs/hua';
3// Or direct import
4// import { ConfirmModal } from '@hua-labs/ui/overlay';
5import { useState } from 'react';
6 
7const [isOpen, setIsOpen] = useState(false);
8 
9<Button onClick={() => setIsOpen(true)}>Delete</Button>
10 
11<ConfirmModal
12 isOpen={isOpen}
13 onClose={() => setIsOpen(false)}
14 onConfirm={() => {
15 console.log('Confirmed!');
16 setIsOpen(false);
17 }}
18 title="Delete Item"
19 message="Are you sure you want to delete this item?"
20/>
docs:common.warningtsx
1<ConfirmModal
2 isOpen={isOpen}
3 onClose={() => setIsOpen(false)}
4 onConfirm={handleConfirm}
5 type="warning"
6 title="Warning"
7 message="This action may affect other items."
8 warning="Proceed with caution."
9/>
docs:components.confirmModal.demo.withInputConfirmationtsx
1const [inputValue, setInputValue] = useState('');
2 
3<ConfirmModal
4 isOpen={isOpen}
5 onClose={() => setIsOpen(false)}
6 onConfirm={handleDelete}
7 title="Delete Account"
8 message="Type 'DELETE' to confirm."
9 showInput
10 inputLabel="Confirmation"
11 inputPlaceholder="Type DELETE"
12 requiredInputValue="DELETE"
13 inputValue={inputValue}
14 onInputChange={setInputValue}
15/>
docs:common.loadingStatetsx
1const [isLoading, setIsLoading] = useState(false);
2 
3<ConfirmModal
4 isOpen={isOpen}
5 onClose={() => setIsOpen(false)}
6 onConfirm={async () => {
7 setIsLoading(true);
8 await performAction();
9 setIsLoading(false);
10 setIsOpen(false);
11 }}
12 title="Processing"
13 message="Please wait..."
14 loading={isLoading}
15/>

  • danger -
  • warning -
  • info -
  • success -
  • error -

  • docs:components.confirmModal.accessibility.focusTrap: docs:components.confirmModal.accessibility.focusTrapDesc
  • docs:components.confirmModal.accessibility.escapeKey: docs:components.confirmModal.accessibility.escapeKeyDesc
  • docs:components.confirmModal.accessibility.inputValidation: docs:components.confirmModal.accessibility.inputValidationDesc