Callout
화면 안, 그 기능 · 내용 가까이에 늘 보이는 안내 상자 — 팁 · 제약 · 주의, 그리고 그 자리에서 난 오류(저장 실패). 페이지 전체의 상태는 Page Banner, 잠깐 알릴 결과는 Snackbar, 눌러서 여는 도움말은 Help Bubble 이다.
구조는 당근 SEED Callout(Apache-2.0)을 따른다 — 옅은 톤 바탕 · 아이콘 · 제목 · 본문 · 링크가 한 문단, 상호작용 셋(보이기 · 전체 누르기 · 닫기). 값은 groo 토큰이고, SEED 와 다른 자리는 맨 아래 "SEED 와 다른 점" 에 적었다(2026-10-02 사용자 결정). 옛 Alert(왼쪽 4px 막대) 스펙을 대신한다 — "Alert" 라는 이름은 모달(Alert Dialog)에만 쓴다.
수치 원본은 callout.yaml이다. 수치 표 자리([표: …])와 그림 자리([그림: …])는 사이트가 그 파일로 그린다 — GitHub 에서는 그 파일 · 그림 코드로 가는 링크로 보인다.
안내 가져온 데이터는 기존 거래에 더해지고 덮어쓰지 않아요. 자세히
총액이 바뀌어 분할 합계와 1,200원 달라요.
저장하지 못했어요. 입력한 내용은 그대로 있어요. 잠시 뒤 다시 저장해 주세요.
안내 가져온 데이터는 기존 거래에 더해지고 덮어쓰지 않아요. 자세히
총액이 바뀌어 분할 합계와 1,200원 달라요.
저장하지 못했어요. 입력한 내용은 그대로 있어요. 잠시 뒤 다시 저장해 주세요.
직접 골라 보기
톤 · 상호작용 · 제목 · 링크를 고르면 스펙대로 그린 상자와 그 코드가 바뀐다. 실제로 누르고 닫을 수 있다.
안내 국내 주식은 15분 늦은 시세예요. 자세히
import { Callout } from "@/components/ui/callout"
<Callout tone="informative" title="안내" link={{ label: "자세히", href: "/guide" }}>
국내 주식은 15분 늦은 시세예요.
</Callout>Anatomy
안내 국내 주식은 15분 늦은 시세예요. 자세히
새 기능 반복 거래를 자동으로 기록할 수 있어요.
| 부위 | 설명 |
|---|---|
| ⓐ Container | 상자 — 콘텐츠 폭 전체, 옅은 톤 바탕 · 모서리 10. |
| ⓑ Icon | 앞 아이콘 — 톤 색, 16. |
| ⓒ Title | 제목 — 성격을 나타내는 짧은 말(안내 · 주의 · 새 기능). 없어도 된다. |
| ⓓ Description | 본문 — 제목 뒤에 한 문단으로 이어진다. |
| ⓔ Link | 링크 — 보조 내용으로 갈 때만. |
| ⓕ Chevron · Close | 상자 전체를 누르면 뒤 화살표, 닫을 수 있으면 닫기. |
부위
| 부위 | 설명 |
|---|---|
root | 상자 — 콘텐츠 폭 전체 |
icon | 앞 아이콘 — 톤 색 |
content | 제목 · 본문 · 링크 — 한 문단으로 흐른다 |
title | 제목 — 성격을 나타내는 짧은 말(안내 · 주의 · 새 기능) |
description | 본문 — 제목을 되풀이하지 않는다 |
link | 링크 — 보조 내용으로 갈 때만(밑줄) |
suffixIcon | 뒤 화살표 — 상자 전체를 누르는 Actionable 에만 |
closeButton | 닫기 — Dismissible 에만. 이름 "닫기" |
focusRing | 키보드 포커스 링(웹) |
Properties
상자
안쪽 14 · 최소 50 · 모서리 10 · 아이콘 16 · 사이 12. 제목 · 본문 · 링크는 모두 14 / 19 이고 한 문단으로 흐른다 — 제목은 700, 사이는 띄어쓰기 두 칸, 링크는 밑줄. 여러 줄이면 아이콘 · 화살표 · 닫기는 상자 가운데에 선다.
안내 국내 주식은 15분 늦은 시세예요. 자세히
새 기능 반복 거래를 자동으로 기록할 수 있어요.
- 안쪽 14 · 최소 50 · 모서리 10 · 아이콘 16 · 사이 12
- 제목 · 본문 · 링크는 모두 14 / 19 — 제목 700, 사이는 띄어쓰기 두 칸(분홍), 링크는 밑줄(글과 2)
- 닫기는 투명 상자 40(분홍) — 바깥 여백 -12 로 줄 높이를 늘리지 않고, 아이콘 16 은 오른쪽 끝에서 14
공통
| 부위 | 속성 | 값 | 비고 |
|---|---|---|---|
root | 너비 | 100% | |
root | 최소 높이 | 50px | |
root | 여백 | spacing-x3_5 14px | |
root | 간격 | spacing-x3 12px | 아이콘 ↔ 글 ↔ 뒤 화살표 · 닫기 |
root | 모서리 | radius-r2_5 10px | |
root | 세로 맞춤 | center | 여러 줄이면 아이콘 · 화살표 · 닫기가 상자 가운데 |
icon | 아이콘 | 16px | lucide 선 아이콘 — 톤마다 기본: neutral · informative info, positive circle-check, warning triangle-alert, critical circle-alert(바꾸거나 뺄 수 있다) |
title | 글자 | text-t4 14px / 19px | 본문과 한 문단 — 사이는 띄어쓰기 두 칸 |
title | 굵기 | 700 | |
description | 글자 | text-t4 14px / 19px | 단어 단위 줄바꿈(v114) |
description | 굵기 | 400 | |
link | 글자 | text-t4 14px / 19px | |
link | 굵기 | 400 | |
link | 밑줄 | underline | 밑줄과 2 띄움 — 본문과 사이 띄어쓰기 두 칸 |
suffixIcon | 뒤 아이콘 | 16px | chevron-right |
closeButton | 크기 | 40px | 투명 상자 — 바깥 여백 −12 로 줄 높이를 늘리지 않는다. 아이콘은 오른쪽 끝에서 14 |
closeButton | 아이콘 크기 | 16px | |
closeButton | 모서리 | radius-r2 8px | |
closeButton | 터치 영역 | 40 × 40 |
Tone
다섯 — neutral(일반) · informative(정보 · 가이드 · 팁) · positive(성공 · 혜택) · warning(주의 · 미리 알릴 문제) · critical(오류 · 바로 조치할 일). 바탕은 옅은 톤(bg-*-weak), 글 · 아이콘 · 링크 · 화살표 · 닫기는 모두 같은 fg-*-contrast 색이다.
가져온 데이터는 기존 거래에 더해지고 덮어쓰지 않아요.
안내 국내 주식은 15분 늦은 시세예요. 자세히
분할 합계가 총액과 같아요.
카테고리 한도 합이 전체 상한을 12,000원 넘었어요.
주의 토큰은 지금만 볼 수 있어요. 닫기 전에 복사해 두세요.
가져온 데이터는 기존 거래에 더해지고 덮어쓰지 않아요.
안내 국내 주식은 15분 늦은 시세예요. 자세히
분할 합계가 총액과 같아요.
카테고리 한도 합이 전체 상한을 12,000원 넘었어요.
주의 토큰은 지금만 볼 수 있어요. 닫기 전에 복사해 두세요.
톤
| tone | 배경 | 글자·아이콘 | 설명 |
|---|---|---|---|
neutral (기본) | color-bg-neutral-weak #F5F6FA · 다크 #353B4D | color-fg-neutral #1A1F2E · 다크 #F5F6FA | 일반 안내 |
informative | color-bg-informative-weak #EAF3FE · 다크 #21344D | color-fg-informative-contrast #0F5FB3 · 다크 #ACCEFB — 글 · 아이콘 · 링크 · 화살표 · 닫기가 모두 이 색 | 이해를 돕는 정보 · 가이드 · 팁 |
positive | color-bg-positive-weak #EAF5EC · 다크 #223927 | color-fg-positive-contrast #026E33 · 다크 #AED6B6 | 성공 · 혜택 같은 좋은 소식 |
warning | color-bg-warning-weak #FFEFE8 · 다크 #4B2B1F | color-fg-warning-contrast #A53E0A · 다크 #F9BFA9 | 주의가 필요한 상태 · 미리 알릴 문제 |
critical | color-bg-critical-weak #FFEFEC · 다크 #532722 | color-fg-critical-contrast #C01016 · 다크 #FFBCB3 | 오류 · 바로 조치해야 할 일 |
Interaction
display(보이기만 — 링크를 둘 수 있다) · actionable(상자 전체가 버튼 — 뒤 화살표, 링크는 두지 않는다) · dismissible(닫기 버튼 — 한 번 보면 되는 안내에만).
안내 국내 주식은 15분 늦은 시세예요. 자세히
안내 국내 주식은 15분 늦은 시세예요. 자세히
새 기능 반복 거래를 자동으로 기록할 수 있어요.
새 기능 반복 거래를 자동으로 기록할 수 있어요.
새 기능 반복 거래를 자동으로 기록할 수 있어요.
새 기능 반복 거래를 자동으로 기록할 수 있어요.
상호작용
| interaction | 설명 |
|---|---|
display (기본) | 보이기만 — 링크를 둘 수 있다 |
actionable | 상자 전체가 버튼 — 뒤 화살표, 링크는 두지 않는다 |
dismissible | 닫기 버튼 — 한 번 보면 되는 안내에만(경고 · 오류는 닫지 못한다) |
State
| 상태 | 모습 |
|---|---|
enabled | 옅은 톤 바탕 |
hovered | 웹 — Actionable 은 톤의 누름 바탕, 닫기 버튼도 |
pressed | Actionable 은 누름 바탕 + 상자 전체 2px 거리 축소, 닫기는 축소 |
focused | 웹 — 키보드 포커스에만 링(상자 · 링크 · 닫기 둘레) |
상태
| 상태 | 링 두께 | 링 간격 | 링 색 |
|---|---|---|---|
enabled 기본 | — | — | — |
hovered 웹 — Actionable 은 누름 바탕(축소 없음), 닫기 버튼은 누름 바탕 | — | — | — |
pressed Actionable 은 누름 바탕 + 상자 전체 2px 거리 축소, 닫기 버튼은 축소 | — | — | — |
focused 웹 — 키보드 포커스에만 링 | 2px | 2px — Actionable 은 상자 둘레, 링크 · 닫기는 그 둘레(모서리 4 · 8) | color-stroke-focus-ring #1A1F2E · 다크 #F5F6FA |
모션
| 전환 | 시간 | 곡선 | 대상 | 비고 |
|---|---|---|---|---|
누름 | motion-duration-pressed-scale 150ms | motion-ease-pressed-scale cubic-bezier(0, 0, 0.15, 1) | scale | |
바탕 | motion-duration-color-transition 150ms | motion-ease-easing cubic-bezier(0.35, 0, 0.35, 1) | background-color | |
닫힘 | 0ms | — | 바로 사라짐 | 닫으면 바로 걷는다(SEED) — 초점은 다음 요소로 |
Guidelines
어디에 두나
| 이런 안내 | 쓰는 것 |
|---|---|
| 그 기능 · 내용 가까이의 팁 · 제약 · 주의 | Callout — 본문 안, 그 내용 바로 위 |
| 그 자리에서 난 오류(저장 · 제출 실패) | Callout critical — 폼 맨 위, 폼은 연 채로 |
| 시트 · 대화상자가 열린 채 봐야 할 결과(저장 실패 · 계산 결과) | Callout — 그 안 폼 맨 위. 창을 닫으며 끝나는 일은 닫힌 뒤 Snackbar |
다른 알림(Snackbar · Page Banner · Result Section · Alert Dialog)과 고르는 표 · 다섯 부품 견주기는 Snackbar 의 "무엇으로 알리나" 한 벌이다(2026-10-22 사용자 결정 3B · 2B — https://claude.ai/artifact/NuEPiLRH2fJidXdKzcDsCX). 몰라도 일은 할 수 있는 긴 설명은 Help Bubble(ⓘ), 입력값 하나가 틀리면 Field 의 오류 문구(칸 아래)다.
국내 주식은 15분 늦은 시세예요.
- ①Page Banner페이지 맨 위 · 화면 폭 — 그 페이지 전체의 상태(연결 끊김). 한 화면에 하나
- ②Callout본문 안, 그 내용 바로 위 · 콘텐츠 폭 — 그 기능의 안내 · 주의 · 그 자리의 오류
- ③Snackbar잠깐 — 방금 한 일의 결과. 화면 아래 가운데, 탭 바 위 8
닫기는 한 번 보면 되는 안내에만
새 기능 소개처럼 한 번 읽으면 되는 안내만 닫을 수 있게 한다 — 닫은 뒤 같은 안내를 다시 띄우지 않는다(닫음을 기억한다). 경고 · 오류는 닫지 못한다 — 문제가 남아 있는 동안 보여야 한다.
새 기능 반복 거래를 자동으로 기록할 수 있어요.
카테고리 한도 합이 전체 상한을 12,000원 넘었어요.
링크와 전체 누르기
링크는 보조 내용(자세히 · 약관)으로 갈 때만 쓴다 — 행동을 이끌려고 링크를 두지 않는다. 눌러서 어딘가로 가는 게 상자의 목적이면 상자 전체를 누르게(actionable) 하고 링크는 두지 않는다.
본문 아래 버튼
되돌릴 수 있는 할 일이 있는 안내(환불 취소 · 다시 받기)는 본문 아래에 버튼 줄을 둔다(interaction: display 그대로). 본문 ↔ 버튼 8 · 버튼 사이 8 · neutralOutline small. 본문이 여러 줄이면 앞 아이콘은 가운데에 맞춘다. 폼 저장 실패 Callout 은 본문 맨 위에 두고 아래 20 을 띄우며, 끝 흐림을 켠 시트에서는 흐림 아래로 오게 스크롤한다.
글
제목은 성격을 나타내는 짧은 말 — "안내" · "주의" · "새 기능". 본문은 제목을 되풀이하지 않고 해요체 문장에 마침표. 오류는 무엇이 안 됐는지와 할 수 있는 일까지 — "저장하지 못했어요. 입력한 내용은 그대로 있어요. 잠시 뒤 다시 저장해 주세요." 서버가 보낸 글 · 영어 · 코드를 그대로 쓰지 않는다.
코드
레시피 recipes/shadcn/components/ui/callout.tsx 를 쓴다. 아래 미리보기는 스펙 값으로 그린 모습이다.
보이기 — 안내 · 링크
링크는 Tab 으로 닿고, 키보드 초점에만 링이 보인다.
import { Callout } from "@/components/ui/callout"
<Callout tone="informative" title="안내" link={{ label: "자세히", href: "/guide/import" }}>
가져온 데이터는 기존 거래에 더해지고 덮어쓰지 않아요.
</Callout>저장 실패 — 폼 맨 위
첫 저장은 실패하게 해 두었다 — 폼 맨 위에 Callout 이 나타나고 입력은 그대로다. 다시 저장하면 폼이 닫히고 목록 위에 스낵바가 뜬다.
{/* 나중에 나타나는 경고 · 위험은 보조 기술에 알린다(role="alert") */}
{saveError && (
<Callout tone="critical" role="alert">
저장하지 못했어요. 입력한 내용은 그대로 있어요. 잠시 뒤 다시 저장해 주세요.
</Callout>
)}전체 누르기 · 닫기
회색 상자는 전체가 버튼이라 누르면 증권 연결로 간다. 새 기능 안내는 닫으면 다시 뜨지 않고, 초점은 다음 요소로 간다.
<Callout tone="neutral" interaction="actionable" onClick={openBrokerConnect}>
토스증권을 연결하면 보유 주식이 자산에 더해져요.
</Callout>
{/* 한 번 보면 되는 안내 — 닫으면 다시 띄우지 않는다 */}
<Callout tone="informative" title="새 기능" interaction="dismissible" open={!seen} onDismiss={markSeen}>
반복 거래를 자동으로 기록할 수 있어요.
</Callout>Behavior
| 인터랙션 | 동작 |
|---|---|
Actionable 누르기 · Enter · Space | 상자의 동작을 한다 |
| 링크 누르기 | 그 곳으로 간다 |
| 닫기 | 바로 사라진다. 초점은 다음 요소로 가고, 닫은 것을 기억해 다시 띄우지 않는다 |
| 나중에 나타남(저장 실패) | role="alert" 로 보조 기술에 알린다 — 처음부터 있던 안내는 알리지 않는다 |
Accessibility
| 기준 | 검증 |
|---|---|
| WCAG 1.4.3 Color contrast(글자 ≥ 4.5:1) | fg-*-contrast 옅은 톤 바탕 위 5.65 ~ 5.72 · 다크 7.78 ~ 7.84, neutral 15.20 · 10.32 ✓ — 누름 바탕 위에서도 4.5 이상 |
| WCAG 1.4.11 Non-text contrast(≥ 3:1) | 상자 면은 장식 — 뜻은 아이콘 · 글이 말한다. 포커스 링 ✓ |
| WCAG 2.5.8 Target Size — Minimum(AA ≥ 24×24) | 닫기 40 ✓ · 링크는 글 높이 19 ⚠(본문 속 링크는 예외) |
| WCAG 4.1.3 Status messages | 나중에 나타나는 경고 · 위험은 role="alert" |
| ARIA | Display · Dismissible 은 문단. Actionable 은 <button type="button">(이름은 글 전체). 닫기 이름 "닫기", 버튼은 모두 type="button"(폼 안에서 제출되지 않게). 아이콘 · 화살표는 장식 |
Do / Don't
✅ Do
- 그 내용 바로 위에, 그 기능의 안내만.
- 저장 실패는 폼 맨 위
critical— 폼은 연 채로. - 눌러서 가는 안내는 상자 전체를 누르게.
❌ Don't
- 경고 · 오류를 닫을 수 있게.
- 링크로 행동을 이끌기.
- 페이지 전체의 상태를 Callout 으로 — Page Banner.
- 한 화면에 Callout 여럿을 쌓기 — 되도록 가장 중요한 하나를 두고, 나머지는 그 내용 옆(칸 설명 · 줄 설명)으로.
Specification
callout.yaml 의 규칙을 하나도 빼지 않고 조건마다 그린다 — 웹 · 앱이 Callout 을 만들 때 이 값을 그대로 쓴다. 조건이 없는 Base 가 모든 조합에 걸리고, 뒤의 규칙이 앞의 같은 값을 덮는다. 상태는 enabled 에서 바뀌는 값만 적었다.
Base
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | enabled | 최소 높이minHeight | 50px |
| 너비width | 100% | ||
| 여백padding | spacing-x3_514px | ||
| 간격gap | spacing-x312px아이콘 ↔ 글 ↔ 뒤 화살표 · 닫기 | ||
| 세로 맞춤alignItems | center여러 줄이면 아이콘 · 화살표 · 닫기가 상자 가운데 | ||
| 모서리radius | radius-r2_510px | ||
icon | enabled | 아이콘size | 16pxlucide 선 아이콘 — 톤마다 기본: neutral · informative info, positive circle-check, warning triangle-alert, critical circle-alert(바꾸거나 뺄 수 있다) |
title | enabled | 글자typography | text-t414px / 19px본문과 한 문단 — 사이는 띄어쓰기 두 칸 |
| 굵기fontWeight | 700 | ||
description | enabled | 글자typography | text-t414px / 19px단어 단위 줄바꿈(v114) |
| 굵기fontWeight | 400 | ||
link | enabled | 글자typography | text-t414px / 19px |
| 굵기fontWeight | 400 | ||
| 밑줄textDecoration | underline밑줄과 2 띄움 — 본문과 사이 띄어쓰기 두 칸 | ||
suffixIcon | enabled | 뒤 아이콘size | 16pxchevron-right |
closeButton | enabled | 크기size | 40px투명 상자 — 바깥 여백 −12 로 줄 높이를 늘리지 않는다. 아이콘은 오른쪽 끝에서 14 |
| 아이콘 크기iconSize | 16px | ||
| 모서리radius | radius-r28px | ||
| 터치 영역touchTarget | 40 × 40 | ||
focusRing | focused | 링 두께width | 2px |
| 링 색color | stroke-focus-ringDesk#0147AD다크 #7AA9F6HR#075B3C다크 #2ABE84 | ||
| 링 간격offset | 2pxActionable 은 상자 둘레, 링크 · 닫기는 그 둘레(모서리 4 · 8) |
tone=neutral
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | enabled | 배경background | bg-neutral-weak#F5F6FA다크 #353B4D |
| 글자·아이콘foreground | fg-neutral#1A1F2E다크 #F5F6FA |
tone=informative
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | enabled | 배경background | bg-informative-weak#EAF3FE다크 #21344D |
| 글자·아이콘foreground | fg-informative-contrast#0F5FB3다크 #ACCEFB글 · 아이콘 · 링크 · 화살표 · 닫기가 모두 이 색 |
tone=positive
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | enabled | 배경background | bg-positive-weak#EAF5EC다크 #223927 |
| 글자·아이콘foreground | fg-positive-contrast#026E33다크 #AED6B6 |
tone=warning
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | enabled | 배경background | bg-warning-weak#FFEFE8다크 #4B2B1F |
| 글자·아이콘foreground | fg-warning-contrast#A53E0A다크 #F9BFA9 |
tone=critical
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | enabled | 배경background | bg-critical-weak#FFEFEC다크 #532722 |
| 글자·아이콘foreground | fg-critical-contrast#C01016다크 #FFBCB3 |
interaction=actionable
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | pressed | 배율scale | 2px 거리 축소상자 전체(SEED scaleScope: self) — 모션 줄이기면 하지 않는다 |
| 축소 시간scaleDuration | motion-duration-pressed-scale150ms | ||
| 축소 곡선scaleEasing | motion-ease-pressed-scalecubic-bezier(0, 0, 0.15, 1) |
tone=neutral, interaction=actionable
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | hovered | 배경background | bg-neutral-weak-pressed#EDEFF3다크 #404757 |
root | pressed | 배경background | bg-neutral-weak-pressed#EDEFF3다크 #404757 |
tone=informative, interaction=actionable
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | hovered | 배경background | bg-informative-weak-pressed#D7E6FB다크 #204069 |
root | pressed | 배경background | bg-informative-weak-pressed#D7E6FB다크 #204069 |
tone=positive, interaction=actionable
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | hovered | 배경background | bg-positive-weak-pressed#D8EADB다크 #20482B |
root | pressed | 배경background | bg-positive-weak-pressed#D8EADB다크 #20482B |
tone=warning, interaction=actionable
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | hovered | 배경background | bg-warning-weak-pressed#FAE0D5다크 #65321D |
root | pressed | 배경background | bg-warning-weak-pressed#FAE0D5다크 #65321D |
tone=critical, interaction=actionable
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
root | hovered | 배경background | bg-critical-weak-pressed#FFDEDA다크 #722722 |
root | pressed | 배경background | bg-critical-weak-pressed#FFDEDA다크 #722722 |
interaction=dismissible
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
closeButton | pressed | 배율scale | 2px 거리 축소기준 40 — 모션 줄이기면 하지 않는다 |
| 축소 시간scaleDuration | motion-duration-pressed-scale150ms | ||
| 축소 곡선scaleEasing | motion-ease-pressed-scalecubic-bezier(0, 0, 0.15, 1) |
tone=neutral, interaction=dismissible
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
closeButton | hovered | 배경background | bg-neutral-weak-pressed#EDEFF3다크 #404757톤의 누름 바탕 — SEED 투명 누름 색의 불투명 짝 |
closeButton | pressed | 배경background | bg-neutral-weak-pressed#EDEFF3다크 #404757 |
tone=informative, interaction=dismissible
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
closeButton | hovered | 배경background | bg-informative-weak-pressed#D7E6FB다크 #204069 |
closeButton | pressed | 배경background | bg-informative-weak-pressed#D7E6FB다크 #204069 |
tone=positive, interaction=dismissible
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
closeButton | hovered | 배경background | bg-positive-weak-pressed#D8EADB다크 #20482B |
closeButton | pressed | 배경background | bg-positive-weak-pressed#D8EADB다크 #20482B |
tone=warning, interaction=dismissible
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
closeButton | hovered | 배경background | bg-warning-weak-pressed#FAE0D5다크 #65321D |
closeButton | pressed | 배경background | bg-warning-weak-pressed#FAE0D5다크 #65321D |
tone=critical, interaction=dismissible
| 부위 | 상태 | 속성 | 값 |
|---|---|---|---|
closeButton | hovered | 배경background | bg-critical-weak-pressed#FFDEDA다크 #722722 |
closeButton | pressed | 배경background | bg-critical-weak-pressed#FFDEDA다크 #722722 |
SEED 와 다른 점
- 톤은 다섯 — magic(AI)은 groo 에 AI 기능이 없어 두지 않는다.
- 아이콘은 lucide 선 아이콘(v106) — SEED 는 채운 아이콘을 권한다.
- 나중에 나타나는 경고 · 위험은
role="alert"— SEED 는 역할이 없어 알리지 않는다. - 버튼은 모두
type="button"— SEED 링크 · 닫기에는 없어 폼 안에서 제출된다. - 닫기 버튼의 누름 바탕은 톤의 누름 색(
bg-*-weak-pressed) — SEED 투명 누름 색의 불투명 짝.
Migration notes
2026-10-22 — 여럿을 쌓지 않도록 — 갈 곳을 붙였다
Don't "한 화면에 Callout 여럿을 쌓기"(420ae4e — 10-02 알림 비교 페이지에 없다)에 대안을 붙여 권장으로 낮췄다 — 가장 중요한 하나를 두고 나머지는 칸 설명 · 줄 설명으로(남은 규칙 R10). 사용자 결정 — https://claude.ai/artifact/Mag1tEv51MdQHdy1o8hY3L. 값 변경 없음.
2026-10-22 — 알림 고르는 표는 한 벌
"어디에 두나" 표의 다른 부품 줄(Page Banner · Snackbar · Help Bubble · Field)을 걷고 Callout 줄만 남겨, 고르는 표 · 다섯 부품 견주기는 Snackbar 문서 한 벌로 링크한다(3B). 시트 · 대화상자가 열린 채 봐야 할 결과는 그 안 Callout 이라는 줄을 더했다(2B) — 사용자 결정 https://claude.ai/artifact/NuEPiLRH2fJidXdKzcDsCX. 값 변경 없음.
2026-10-02 — SEED Callout 으로 새로 둔다(옛 Alert 를 대신)
사용자가 비교 페이지에서 정했다 — 옅은 톤 바탕 · 모서리 10 · 한 문단 · 톤 다섯 · 닫기는 한 번 보면 되는 안내만, 저장 실패는 폼 맨 위 Callout. 옛 Alert(왼쪽 4px 막대 · 8% 바탕 · 제목 블록)는 걷었다 — 옛 스펙은 alert.history/v-pre-seed-feedback.*.
제품은 앱 적용 단계에서 옮긴다(2026-10-02 조사).
- Desk 웹 — 공용 Alert 2곳 + 손으로 만든 안내 상자 31(경고 · 위험을 일곱 가지로 그린다). 정의 없는 색 토큰(
--fg-danger·--bg-danger-subtle…) 11곳이 회색으로 보이고, 저축 목표 오류 상자는 다크 값이 없다. 화면 소개 카드 넷이 바로 위 머리와 같은 말을 되풀이한다. 만료된 "2026.6까지" 수수료 안내. - Desk 앱 — PAlert 5(왼쪽 4px 막대) + 손 상자 20여. 예산 한도 초과를 위험 색으로, 같은 카드 유의사항을 두 모양으로 그린다. 인라인 상자에 보조 기술 알림이 없다.
- HR 웹 — shadcn Alert 2 + 손 상자 10여. 결재 안내 상자 셋이 번역 키를 그대로 보인다(
application.autoApprovalMessage…), 반복 부여 안내에 영어 코드(YEARLY · MONTHLY).