Skip to Content

Sonner

화면 모서리에 표시되는 토스트 알림 컴포넌트


개요

Sonner 컴포넌트는 sonner  라이브러리를 기반으로 한 토스트 알림 시스템입니다. Toaster를 앱 루트에 한 번 배치하고, toast() 함수를 호출해 알림을 표시합니다. 성공/정보/경고/에러/로딩 타입별 아이콘이 기본 매핑되어 있고, next-themes와 연동되어 테마를 자동으로 따라갑니다.

주요 특징

  • 5가지 타입: success, info, warning, error, loading 아이콘 기본 제공
  • richColors: 타입별 강조 색상 기본 적용
  • 테마 연동: next-themes 기반 라이트/다크 모드 자동 대응
  • 위치 지정: 9개 position 옵션 (top-left ~ bottom-right)
  • 액션 버튼: 실행 취소 등 액션 버튼 포함 가능
  • 디자인 토큰: 테마 커스터마이징 지원

토스트 타입

toast() 함수의 타입별 메서드로 다양한 알림을 표시합니다. 아래는 각 타입의 스타일 미리보기입니다.

성공적으로 저장되었습니다.
새로운 업데이트가 있습니다.
저장되지 않은 변경사항이 있습니다.
삭제에 실패했습니다.
업로드 중…

설명과 액션

description으로 부가 설명을, action으로 실행 버튼을 추가할 수 있습니다.

이벤트가 생성되었습니다

2023년 12월 3일 일요일 오전 9:00

이벤트가 삭제되었습니다

API Reference

Toaster Props

sonner의 ToasterProps를 그대로 지원합니다. 주요 props는 다음과 같습니다.

PropTypeDefaultDescription
position"top-left" | "top-center" | "top-right" | "center-left" | "center" | "center-right" | "bottom-left" | "bottom-center" | "bottom-right""bottom-right"토스트 표시 위치
richColorsbooleantrue타입별 강조 색상 적용 여부
durationnumber4000토스트 표시 시간 (ms)
visibleToastsnumber3동시에 표시할 최대 개수
closeButtonbooleanfalse닫기 버튼 표시 여부
expandbooleanfalse토스트 스택 확장 여부
theme"light" | "dark" | "system""system"테마 (next-themes 연동)

타입별 아이콘(success/info/warning/error/loading)과 toastOptions.classNames는 기본 설정되어 있으며, props로 덮어쓸 수 있습니다.

기본 사용법

// 앱 루트에 Toaster 배치 (1회) import { Toaster } from "@vortex/ui-foundation" export default function RootLayout({ children }) { return ( <> {children} <Toaster position="top-right" /> </> ) } // 컴포넌트에서 toast 호출 import { toast } from "sonner" <Button onClick={() => toast("저장되었습니다.")}>저장</Button>

접근성

스크린 리더

  • 토스트가 aria-live 영역에 렌더링되어 스크린 리더에 자동으로 알림
  • 타입별 아이콘은 장식 요소이며 메시지 텍스트가 핵심 정보를 전달

권장 사항

  • ✅ Toaster는 앱 루트에 한 번만 배치
  • ✅ 중요한 작업 실패에는 toast.error와 복구 액션 버튼 함께 제공
  • ❌ 짧은 시간에 다수의 토스트를 연속 호출하지 않기

관련 컴포넌트

  • Spinner: 로딩 상태 인라인 표시
  • OverlayLoading: 전체 화면 로딩 오버레이
  • Modal: 사용자 확인이 필요한 중요 알림
Last updated on