@olundot/ui · Feedback
Toast
작업 결과나 짧은 시스템 알림을 화면 가장자리에서 일시적으로 표시합니다.
- Provider
- ToastProvider가 viewport와 목록 상태를 소유합니다.
- helper
- toast.success, toast.error, toast.info, toast.warning으로 알림을 생성합니다.
- duration
- 기본 3000ms, error는 7000ms이며 duration으로 직접 지정할 수 있습니다.
- action
- 재시도처럼 하나의 보조 action이 필요할 때 ToastAction을 제공합니다.
상태별 토스트
성공, 오류, 안내, 경고 토스트의 시각 상태 비교저장되었습니다
저장에 실패했습니다
새 알림이 도착했습니다
마감 시간이 가까워졌습니다
코드 보기tsx
import { ToastProvider, ToastRoot } from "@olundot/ui";
export function ToastStaticVariants() {
return (
<ToastProvider>
<div style={{ display: "grid", gap: "8px" }}>
<ToastRoot id="toast-success" variant="success" message="저장되었습니다" />
<ToastRoot id="toast-error" variant="error" message="저장에 실패했습니다" />
<ToastRoot id="toast-info" variant="info" message="새 알림이 도착했습니다" />
<ToastRoot id="toast-warning" variant="warning" message="마감 시간이 가까워졌습니다" />
</div>
</ToastProvider>
);
}Provider 트리거
Provider 안에서 helper를 호출해 토스트를 생성코드 보기tsx
import { Button, ToastProvider, toast } from "@olundot/ui";
export function ToastLiveTriggers() {
return (
<ToastProvider maxToasts={3}>
<div style={{ display: "flex", gap: "8px", flexWrap: "wrap" }}>
<Button size="sm" onClick={() => toast.success("저장되었습니다")}>성공</Button>
<Button size="sm" variant="outline" onClick={() => toast.info("검토 요청을 보냈습니다")}>안내</Button>
<Button size="sm" variant="outline" onClick={() => toast.warning("마감 시간이 가까워졌습니다")}>경고</Button>
<Button
size="sm"
variant="destructive"
onClick={() =>
toast.error("저장에 실패했습니다", {
action: { label: "재시도", onClick: () => toast.info("재시도 요청됨") },
})
}
>
오류
</Button>
</div>
</ToastProvider>
);
}지속 시간과 action
긴 확인 시간이 필요한 알림과 보조 action동기화가 중단되었습니다
코드 보기tsx
import { ToastProvider, ToastRoot } from "@olundot/ui";
export function ToastDurationAction() {
return (
<ToastProvider>
<ToastRoot
id="toast-duration-action"
variant="error"
message="동기화가 중단되었습니다"
duration={9000}
action={{ label: "재시도", onClick: () => undefined }}
/>
</ToastProvider>
);
}