토스트 (Toast)

토스트는 사용자의 동작 결과나 시스템 상태를 화면 한쪽에 잠깐 띄웠다 사라지는 짧은 알림으로, 저장 완료나 오류처럼 흐름을 방해하지 않으면서 즉시 결과를 알려야 할 때 사용해요.

Usage

import { Button, Toaster, toast } from "podo-ui/react";import "podo-ui/styles.css";
export function App() {  return (    <>      {/* 앱 루트에 한 번 */}      <Toaster />      <Button onPress={() => toast.success("저장됐어요")}>저장</Button>    </>  );}

상태 (state)

토스트는 상황의 성격에 따라 다섯 가지 상태로 색과 톤을 나눠 전달해요. normal은 강조가 필요 없는 기본 안내에, success는 저장·전송처럼 작업이 정상 처리됐을 때, danger는 오류나 실패로 즉시 확인이 필요할 때 사용해요. info는 참고하면 좋은 부가 정보를 알릴 때, warning은 위험까지는 아니지만 사용자의 주의가 필요할 때 사용해요. 상태마다 색을 의미와 일관되게 맞춰, 메시지를 읽기 전에도 성격을 직관적으로 파악할 수 있게 해요.

토스트 메시지 타이틀 영역
토스트 메시지 타이틀 영역
토스트 메시지 타이틀 영역
토스트 메시지 타이틀 영역
propertiesnormalsuccessdangerinfowarning

응용 (composition)

메시지에 맥락과 동작을 더하기 위해 prefix-icon, suffix-text, suffix-icon, caption을 조합해 구성해요. prefix-icon은 상태 아이콘을 활용해 메시지 성격을 직관적으로 알리고, suffix-text와 suffix-icon은 실행 취소나 닫기 같은 후속 동작을 뒤에 배치해요. caption은 타이틀에서 다 전달하지 못한 추가적인 정보를 전달해요.

토스트 메시지 타이틀 영역
토스트 메시지 타이틀 영역실행 취소
토스트 메시지 타이틀 영역
토스트 메시지 캡션 영역
propertiesprefix-iconsuffix-textsuffix-iconcaption

토스터 (toaster)

토스트를 화면에 쌓고 자동으로 정리하는 행동 레이어예요. 앱 루트에 Toaster를 한 번 두면 어디서든 toast()로 띄울 수 있어요. 기본값은 상단 중앙(top-center), 3초 자동 소멸, 최대 3개이며 위치는 여섯 모서리 중 선택할 수 있어요. 여러 개가 뜨면 최신 토스트가 앞에 원래 크기로 보이고 이전 것들은 살짝 작아지며 겹쳐 쌓여요. 스택에 마우스를 올리거나 포커스하면 모두 원래 크기로 펼쳐지고, 그동안은 자동 소멸이 멈춰서 손을 뗄 때까지 사라지지 않아요. 넘치면 오래된 것부터 정리되고, manual 토스트는 X를 눌러야 닫혀요. 아래 '3개 연속' 버튼으로 쌓임을, 스택에 호버해서 펼침을 확인해 보세요. 이 동작 규칙은 시안에 없어 기본값으로 구현돼 있어요.

propertiestop-center (기본)3000msmax 3manual쌓임/펼침

Toast 속성 (props)

podo-ui/react의 Toast — 카드 하나의 생김새를 정하는 속성이에요. Toast를 직접 놓거나 web·hono·native에서 카드를 배치할 때 써요. danger일 때 role=alert, 나머지는 role=status로 안내되고 포커스를 뺏지 않아요. 시안의 suffix-icon 기본값은 닫기 X라 코드에서는 onClose로 표현돼요.

PropTypeDefault설명
state"normal" | "success" | "danger" | "info" | "warning""normal"상황의 성격에 따른 색·톤 (시안 state)
childrenReactNode— (필수)타이틀 (16px SemiBold)
captionReactNode타이틀 아래 추가 정보 (14px)
prefixReactNode타이틀 앞 상태 아이콘 (시안 prefix-icon)
suffixTextReactNode타이틀 뒤 후속 동작 텍스트, 예: 실행 취소 (시안 suffix-text)
suffixIconReactNode타이틀 뒤 커스텀 아이콘 (시안 suffix-icon)
onClose() => void닫기 X를 렌더하고 누르면 호출돼요 (시안 suffix-icon 기본값)

Toaster 속성 (props)

toast()로 띄운 알림이 화면에 쌓이는 방식을 정하는 전역 설정이에요. 앱 루트에 <Toaster /> 하나만 두면 돼요.

PropTypeDefault설명
position"top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right""top-center"스택이 붙는 화면 모서리 (6곳)
durationnumber3000자동 소멸 시간(ms). toast마다 개별 지정으로 덮을 수 있어요
maxnumber3동시 표시 최대 개수. 넘치면 오래된 것부터 정리돼요

toast() 호출 API

알림을 띄우는 함수예요. 컴포넌트가 아니라 어디서든 부르면 돼요. 반환값은 알림 id로, toast.dismiss(id)에 넘겨 코드에서 특정 알림을 닫을 수 있어요.

호출반환설명
toast(title, options?)number알림을 띄우고 id를 돌려줘요
toast.success(title, options?)numberstate를 success로 고정한 단축 (danger·info·warning·normal도 동일)
toast.dismiss(id?)voidid를 주면 그 알림을, 없으면 전부 제거해요

options = { state?, caption?, duration?, manual? }

옵션Type설명
stateToastState색·톤 (단축 호출 toast.success 등을 쓰면 불필요)
captionReactNode타이틀 아래 추가 정보
durationnumber이 알림만의 소멸 시간(ms). Toaster 기본값을 덮어요
manualbooleantrue면 자동 소멸 없이 X로만 닫혀요