Groo Design

Page Banner

페이지 맨 위(머리 바로 아래)에 화면 폭 전체로 놓이는 띠 — 그 페이지 전체의 상태를 알린다(증권 연결 끊김 · Pro 만료 예정 · 새 버전). 한 화면에 하나. 그 기능 가까이의 안내는 Callout, 잠깐 알릴 결과는 Snackbar 다.

구조는 당근 SEED Page Banner(Apache-2.0)를 따른다 — 화면 폭 띠 · 아이콘 · 제목 · 본문 · 버튼, 옅은(weak) · 짙은(solid) 바탕, 상호작용 셋. 값은 groo 토큰이고, SEED 와 다른 자리는 맨 아래 "SEED 와 다른 점" 에 적었다(2026-10-02 사용자 결정). groo 에 처음 두는 컴포넌트다.

수치 원본은 page-banner.yaml이다. 수치 표 자리([표: …])와 그림 자리([그림: …])는 사이트가 그 파일로 그린다 — GitHub 에서는 그 파일 · 그림 코드로 가는 링크로 보인다.

9:41
증권
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.다시 연결
삼삼성전자10주, 국내712,000원
SSK하이닉스2주, 국내452,000원
AApple3주, 해외1,021,500원
9:41
설정
곧 만료 Pro 이용이 10월 31일에 끝나요.구독 보기
구독 · Pro
알림
화면 · 글자
데이터 내보내기
9:41
증권
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.다시 연결
삼삼성전자10주, 국내712,000원
SSK하이닉스2주, 국내452,000원
AApple3주, 해외1,021,500원
9:41
설정
곧 만료 Pro 이용이 10월 31일에 끝나요.구독 보기
구독 · Pro
알림
화면 · 글자
데이터 내보내기
desk.groo.app
그루 담다대시보드가계부자산캘린더
새 버전 1.24.0을 받을 수 있어요.업데이트
대시보드
증권 연결 끊김 · 새 버전 · Pro 만료 예정 — 라이트 · 다크

직접 골라 보기

톤 · 바탕 · 상호작용 · 제목 · 버튼을 고르면 스펙대로 그린 띠와 그 코드가 바뀐다.

증권
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.
  • 점심 식사식비 · 생활비 카드−12,000원
  • 골목커피카페 · 생활비 카드−5,600원
페이지 머리 바로 아래 · 한 화면에 하나
톤 tone
바탕 variant
상호작용 interaction
제목 title
버튼 button
모드
브랜드
import { PageBanner } from "@/components/ui/page-banner"

<PageBanner tone="critical" title="연결 끊김" button={{ label: "다시 연결", onClick: handle }}>
  증권 연결 키가 만료돼 시세를 받지 못해요.
</PageBanner>

Anatomy

연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.다시 연결
증권 계좌를 연결하면 보유 주식이 자산에 더해져요.
새 기능 반복 거래를 자동으로 기록할 수 있어요.
ⓐ Containerⓑ Iconⓒ Titleⓓ Descriptionⓔ Buttonⓕ Chevron · Close
위는 1.5배 — 본문과 버튼이 한 줄에 안 들어가 버튼이 다음 줄로 내려갔다. 아래는 실제 크기 — 띠 전체를 누르는 띠의 뒤 화살표, 닫을 수 있는 띠의 닫기
띠는 아이콘 · 제목 · 본문 · 버튼, 뒤 화살표나 닫기
부위설명
ⓐ Container띠 — 화면 폭 전체, 모서리 없음.
ⓑ Icon앞 아이콘 — 첫 줄 가운데.
ⓒ Title제목 — 상태를 나타내는 짧은 말(연결 끊김 · 곧 만료). 꼭 필요할 때만.
ⓓ Description본문 — 제목 뒤에 이어진다.
ⓔ Button버튼 — 하나, 글 버튼. 자리가 모자라면 다음 줄로.
ⓕ Chevron · Close띠 전체를 누르면 뒤 화살표, 닫을 수 있으면 닫기.

부위

부위설명
root띠 — 화면 폭 전체, 모서리 없음
icon앞 아이콘 — 첫 줄 가운데
content제목 · 본문과 버튼 — 한 줄에 안 들어가면 버튼이 다음 줄로
title제목 — 상태를 나타내는 짧은 말(연결 끊김 · 곧 만료)
description본문 — 제목을 되풀이하지 않는다
button버튼 — 하나, 글 버튼
suffixIcon뒤 화살표 — 띠 전체를 누르는 Actionable 에만
closeButton닫기 — Dismissible 에만. 이름 "닫기"
focusRing키보드 포커스 링(웹)

Properties

띠

좌우 화면 여백 24 · 위아래 10 · 최소 40 · 모서리 없음. 아이콘 16(첫 줄 가운데), 제목 14 / 19 · 700, 본문 14 / 19 · 500(사이 띄어쓰기 두 칸), 버튼 13 / 18 · 700(누르는 높이 40). 본문과 버튼이 한 줄에 안 들어가면 버튼이 다음 줄 본문 시작선으로 내려간다.

데스크톱 — 한 줄에 양 끝
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.다시 연결
분홍 칸 — 버튼의 누르는 영역(글 + 사방 11 = 높이 40, 바깥 −11 로 띠 높이는 그대로)
폰(360) — 버튼이 다음 줄로
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.다시 연결
본문과 버튼이 한 줄에 안 들어가면 버튼이 다음 줄 본문 시작선으로 — 줄 사이 6. 아이콘은 첫 줄 가운데(위 2)
닫기
새 기능 반복 거래를 자동으로 기록할 수 있어요.
투명 상자 40(분홍) · 바깥 -12 — 아이콘 16 은 오른쪽 끝에서 24, 글과 8
포커스 — 안쪽 링
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.다시 연결
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.다시 연결
증권 계좌를 연결하면 보유 주식이 자산에 더해져요.
링 2 · 안쪽 2(화면 끝까지 차는 띠라 바깥 링은 잘린다) — 옅은 바탕은 stroke-focus-ring, 짙은 바탕은 띠 글자색(static-white). 버튼 링의 모서리 4
  • 좌우 24(화면 여백) · 위아래 10 · 최소 40 · 모서리 0
  • 아이콘 16 · 제목 14 / 19 · 700 · 본문 500 · 버튼 13 / 18 · 700
띠의 여백 · 버튼이 다음 줄로

공통

부위속성값비고
root너비100%화면 폭 전체 — 페이지 머리 바로 아래(위에 사진이 있으면 그 아래), 한 화면에 하나
root최소 높이40px
root좌우 여백spacing-global-gutter 24pxSEED 16 → 화면 여백 24
root상하 여백spacing-x2_5 10px
root간격spacing-x2 8px아이콘 ↔ 글
root모서리0px모서리 없음
root세로 맞춤flex-start아이콘은 첫 줄에 붙는다 — 화살표 · 닫기는 띠 가운데
icon아이콘16pxlucide 선 아이콘 — 위 2(첫 줄 가운데). 톤마다 기본은 Callout 과 같다(info · info · circle-check · triangle-alert · circle-alert)
icon위 바깥 여백spacing-x0_5 2px
content간격spacing-x1_5 6px본문과 버튼이 한 줄에 안 들어가면 버튼이 다음 줄 본문 시작선으로
content가로 맞춤space-between한 줄에 들어가면 버튼은 오른쪽 끝(SEED 와 같다)
title글자text-t4 14px / 19px본문과 한 문단 — 사이는 띄어쓰기 두 칸
title굵기700
description글자text-t4 14px / 19px단어 단위 줄바꿈(v114)
description굵기500
button글자text-t3 13px / 18px
button굵기700
button터치 영역글 + 사방 11 × 40바깥 여백 −11 로 띠 높이를 늘리지 않는다
button모서리radius-r1 4px바탕이 없어 포커스 링에만 보인다
suffixIcon뒤 아이콘16pxchevron-right — 글과 8
closeButton크기40px투명 상자 — 바깥 여백 −12 로 띠 높이를 늘리지 않는다. 아이콘은 오른쪽 끝에서 24, 글과 8
closeButton아이콘 크기16px
closeButton모서리radius-r2 8px

Tone · Variant

톤 다섯(neutral · informative · positive · warning · critical) × 바탕 둘. 옅은 바탕(weak, 기본)은 Callout 과 같은 짝(bg-*-weak + fg-*-contrast)이고, 짙은 바탕(solid)은 bg-*-solid + 흰 글이다 — 더 강하게 알려야 할 때(연결 끊김 · 거절 · 편집 불가).

weak(기본) — 옅은 바탕
점검 예정 10월 5일 새벽 2시부터 30분 동안 점검해요.
neutral — bg-neutral-weak #F5F6FA · fg-neutral #1A1F2E
새 버전 1.24.0을 받을 수 있어요.
informative — bg-informative-weak #EAF3FE · fg-informative-contrast #0F5FB3
연결됨 증권 시세를 다시 받아요.
positive — bg-positive-weak #EAF5EC · fg-positive-contrast #026E33
곧 만료 Pro 이용이 10월 31일에 끝나요.
warning — bg-warning-weak #FFEFE8 · fg-warning-contrast #A53E0A
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.
critical — bg-critical-weak #FFEFEC · fg-critical-contrast #C01016
solid — 짙은 바탕, 무거운 상태에만
점검 예정 10월 5일 새벽 2시부터 30분 동안 점검해요.
neutral — bg-neutral-inverted #1A1F2E · fg-neutral-inverted #FFFFFF
새 버전 1.24.0을 받을 수 있어요.
informative — bg-informative-solid #1D6EC9 · static-white #FFFFFF
연결됨 증권 시세를 다시 받아요.
positive — bg-positive-solid #167F3F · static-white #FFFFFF
곧 만료 Pro 이용이 10월 31일에 끝나요.
warning — bg-warning-solid #BE490D · static-white #FFFFFF
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.
critical — bg-critical-solid #D72323 · static-white #FFFFFF
라이트옅은 바탕은 Callout 과 같은 짝, 짙은 바탕은 흰 글(neutral 은 반전 짝)
weak(기본) — 옅은 바탕
점검 예정 10월 5일 새벽 2시부터 30분 동안 점검해요.
neutral — bg-neutral-weak #353B4D · fg-neutral #F5F6FA
새 버전 1.24.0을 받을 수 있어요.
informative — bg-informative-weak #21344D · fg-informative-contrast #ACCEFB
연결됨 증권 시세를 다시 받아요.
positive — bg-positive-weak #223927 · fg-positive-contrast #AED6B6
곧 만료 Pro 이용이 10월 31일에 끝나요.
warning — bg-warning-weak #4B2B1F · fg-warning-contrast #F9BFA9
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.
critical — bg-critical-weak #532722 · fg-critical-contrast #FFBCB3
solid — 짙은 바탕, 무거운 상태에만
점검 예정 10월 5일 새벽 2시부터 30분 동안 점검해요.
neutral — bg-neutral-inverted #F5F6FA · fg-neutral-inverted #242938
새 버전 1.24.0을 받을 수 있어요.
informative — bg-informative-solid #0F65BF · static-white #FFFFFF
연결됨 증권 시세를 다시 받아요.
positive — bg-positive-solid #117539 · static-white #FFFFFF
곧 만료 Pro 이용이 10월 31일에 끝나요.
warning — bg-warning-solid #B04209 · static-white #FFFFFF
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.
critical — bg-critical-solid #CC0E17 · static-white #FFFFFF
다크옅은 바탕은 Callout 과 같은 짝, 짙은 바탕은 흰 글(neutral 은 반전 짝)
톤 다섯 × 옅음 · 짙음 — 라이트 · 다크

바탕 · 톤

조합상태속성값
variant=weak + tone=neutralenabled배경color-bg-neutral-weak #F5F6FA · 다크 #353B4D
variant=weak + tone=neutralenabled글자·아이콘color-fg-neutral #1A1F2E · 다크 #F5F6FA
variant=weak + tone=informativeenabled배경color-bg-informative-weak #EAF3FE · 다크 #21344D
variant=weak + tone=informativeenabled글자·아이콘color-fg-informative-contrast #0F5FB3 · 다크 #ACCEFB — 글 · 아이콘 · 버튼 · 화살표 · 닫기가 모두 이 색
variant=weak + tone=positiveenabled배경color-bg-positive-weak #EAF5EC · 다크 #223927
variant=weak + tone=positiveenabled글자·아이콘color-fg-positive-contrast #026E33 · 다크 #AED6B6
variant=weak + tone=warningenabled배경color-bg-warning-weak #FFEFE8 · 다크 #4B2B1F
variant=weak + tone=warningenabled글자·아이콘color-fg-warning-contrast #A53E0A · 다크 #F9BFA9
variant=weak + tone=criticalenabled배경color-bg-critical-weak #FFEFEC · 다크 #532722
variant=weak + tone=criticalenabled글자·아이콘color-fg-critical-contrast #C01016 · 다크 #FFBCB3
variant=solid + tone=neutralenabled배경color-bg-neutral-inverted #1A1F2E · 다크 #F5F6FA
variant=solid + tone=neutralenabled글자·아이콘color-fg-neutral-inverted #FFFFFF · 다크 #242938
variant=solid + tone=neutralfocused링 색color-fg-neutral-inverted #FFFFFF · 다크 #242938
variant=solid + tone=informativeenabled배경color-bg-informative-solid #1D6EC9 · 다크 #0F65BF
variant=solid + tone=informativeenabled글자·아이콘color-static-white #FFFFFF — 5.09 · 다크 5.78
variant=solid + tone=informativefocused링 색color-static-white #FFFFFF
variant=solid + tone=positiveenabled배경color-bg-positive-solid #167F3F · 다크 #117539
variant=solid + tone=positiveenabled글자·아이콘color-static-white #FFFFFF — 5.07 · 5.79
variant=solid + tone=positivefocused링 색color-static-white #FFFFFF
variant=solid + tone=warningenabled배경color-bg-warning-solid #BE490D · 다크 #B04209
variant=solid + tone=warningenabled글자·아이콘color-static-white #FFFFFF — 5.06 · 5.79
variant=solid + tone=warningfocused링 색color-static-white #FFFFFF
variant=solid + tone=criticalenabled배경color-bg-critical-solid #D72323 · 다크 #CC0E17
variant=solid + tone=criticalenabled글자·아이콘color-static-white #FFFFFF — 5.06 · 5.77
variant=solid + tone=criticalfocused링 색color-static-white #FFFFFF
interaction=actionable + variant=weak + tone=neutralhovered배경color-bg-neutral-weak-pressed #EDEFF3 · 다크 #404757
interaction=actionable + variant=weak + tone=neutralpressed배경color-bg-neutral-weak-pressed #EDEFF3 · 다크 #404757
interaction=actionable + variant=weak + tone=informativehovered배경color-bg-informative-weak-pressed #D7E6FB · 다크 #204069
interaction=actionable + variant=weak + tone=informativepressed배경color-bg-informative-weak-pressed #D7E6FB · 다크 #204069
interaction=actionable + variant=weak + tone=positivehovered배경color-bg-positive-weak-pressed #D8EADB · 다크 #20482B
interaction=actionable + variant=weak + tone=positivepressed배경color-bg-positive-weak-pressed #D8EADB · 다크 #20482B
interaction=actionable + variant=weak + tone=warninghovered배경color-bg-warning-weak-pressed #FAE0D5 · 다크 #65321D
interaction=actionable + variant=weak + tone=warningpressed배경color-bg-warning-weak-pressed #FAE0D5 · 다크 #65321D
interaction=actionable + variant=weak + tone=criticalhovered배경color-bg-critical-weak-pressed #FFDEDA · 다크 #722722
interaction=actionable + variant=weak + tone=criticalpressed배경color-bg-critical-weak-pressed #FFDEDA · 다크 #722722
interaction=actionable + variant=solid + tone=neutralhovered배경color-bg-neutral-inverted-pressed #535866 · 다크 #B7BDCC
interaction=actionable + variant=solid + tone=neutralpressed배경color-bg-neutral-inverted-pressed #535866 · 다크 #B7BDCC
interaction=actionable + variant=solid + tone=informativehovered배경color-bg-informative-solid-pressed #0F5FB3 · 다크 #1F70CB
interaction=actionable + variant=solid + tone=informativepressed배경color-bg-informative-solid-pressed #0F5FB3 · 다크 #1F70CB
interaction=actionable + variant=solid + tone=positivehovered배경color-bg-positive-solid-pressed #026E33 · 다크 #198140
interaction=actionable + variant=solid + tone=positivepressed배경color-bg-positive-solid-pressed #026E33 · 다크 #198140
interaction=actionable + variant=solid + tone=warninghovered배경color-bg-warning-solid-pressed #A53E0A · 다크 #BF4A10
interaction=actionable + variant=solid + tone=warningpressed배경color-bg-warning-solid-pressed #A53E0A · 다크 #BF4A10
interaction=actionable + variant=solid + tone=criticalhovered배경color-bg-critical-solid-pressed #C01016 · 다크 #D82424
interaction=actionable + variant=solid + tone=criticalpressed배경color-bg-critical-solid-pressed #C01016 · 다크 #D82424

Interaction

display(보이기만 — 버튼 하나를 둘 수 있다) · actionable(띠 전체가 버튼 — 뒤 화살표) · dismissible(닫기 — 한 번 보면 되는 안내에만).

상호작용

interaction설명
display (기본)보이기만 — 버튼 하나를 둘 수 있다
actionable띠 전체가 버튼 — 뒤 화살표, 버튼은 두지 않는다
dismissible닫기 버튼 — 한 번 보면 되는 안내에만(경고 · 오류는 닫지 못한다)

State

상태모습
enabled기본
hovered웹 — Actionable 은 누름 바탕
pressedActionable 은 누름 바탕 + 안의 내용만 2px 거리 축소(바탕은 그대로), 버튼 · 닫기는 각자 축소
focused웹 — 키보드 포커스에만 안쪽 링(화면 끝까지 차는 띠라 바깥 링이 잘린다). 짙은 바탕에서는 링을 띠 글자색으로 — 브랜드 링은 짙은 띠 위에서 1.61 ~ 2.44 라 보이지 않는다

상태

상태button 배율button 축소 시간button 축소 곡선링 두께링 간격링 색
enabled 기본——————
hovered 웹 — Actionable 은 누름 바탕——————
pressed Actionable 은 누름 바탕 + 안의 내용만 2px 거리 축소, 버튼 · 닫기는 각자 축소2px 거리 축소 — 글 버튼만 — 바탕 없음motion-duration-pressed-scale 150msmotion-ease-pressed-scale cubic-bezier(0, 0, 0.15, 1)———
focused 웹 — 키보드 포커스에만 안쪽 링———2px-2px — 화면 끝까지 차는 띠라 안쪽에 — 버튼 · 닫기도 같다color-stroke-focus-ring #1A1F2E · 다크 #F5F6FA — 옅은 바탕 위 3.90 이상. 짙은 바탕은 띠 글자색(아래 solid 규칙) — 브랜드 링은 짙은 띠 위 1.61 ~ 2.44 다

모션

전환시간곡선대상비고
누름motion-duration-pressed-scale 150msmotion-ease-pressed-scale cubic-bezier(0, 0, 0.15, 1)scale
바탕motion-duration-color-transition 150msmotion-ease-easing cubic-bezier(0.35, 0, 0.35, 1)background-color
닫힘0ms—바로 사라짐닫으면 바로 걷고 다시 띄우지 않는다(닫음을 기억한다) — 초점은 다음 요소로

Guidelines

페이지 맨 위에 하나

페이지 머리 바로 아래(위에 사진이 있으면 그 아래)에 하나만 둔다. 그 페이지 전체에 걸린 상태만 — 증권 연결이 끊긴 증권 페이지, Pro 만료가 다가온 설정, 새 버전이 나온 웹. 그 기능 가까이의 안내는 Callout 이다. 스크롤해도 맨 위에 붙여 둘 수 있다(붙일 때는 화면마다 정한다).

자리가 머리 바로 아래 화면 폭이라 Desk 폰 · 데스크톱 모두 회색 바닥(bg-layer-basement) 위에 놓인다. 옅은 neutral(weak · neutral)은 bg-neutral-weak 그대로 둔다 — 라이트에서 바닥과 같은 gray-200 이라 띠 모양이 보이지 않고 아이콘 · 글 · 버튼만 보인다(다크는 1.47:1 로 갈린다). 이것을 받아들인다(2026-10-17 사용자 결정 — 03-F 결정 3 — "지금 구현 그대로", https://claude.ai/artifact/F5SKUbGEWDG82F7B5RRjQB). 투명 짝 · 흰 띠 · 아래 선은 고르지 않았다. 띠가 보여야 하는 안내라면 neutral 이 아닌 톤(informative · warning …)을 쓴다.

Page BannerCallout
자리페이지 맨 위본문 안, 그 내용 바로 위
폭화면 폭 전체콘텐츠 폭
용도페이지 상태 · 제재 · 기능 켜짐 안내(연결 끊김 · 만료 예정 · 새 버전)팁 · 기능 설명 · 위험 주의
범위페이지 전체그 기능 · 내용
수한 화면에 하나필요한 만큼(쌓지 않는다)
스크롤(Sticky)맨 위에 붙일 수 있다(화면마다 정한다)없다 — 내용과 함께 움직인다

"용도" · "Sticky" 두 줄은 SEED Page Banner 문서의 "Page Banner, Callout 비교" 에서 옮겼다(2026-10-22 사용자 결정 3B — https://claude.ai/artifact/NuEPiLRH2fJidXdKzcDsCX). 다른 알림과 고르는 표는 Snackbar 의 "무엇으로 알리나" 한 벌이다.

9:41
증권
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.다시 연결

국내 주식은 15분 늦은 시세예요.

삼삼성전자10주, 국내712,000원
SSK하이닉스2주, 국내452,000원
이렇게 — 페이지 머리 바로 아래에 하나 — 페이지 전체의 상태만. 그 기능 가까이의 안내는 본문 안 Callout
9:41
증권
연결 끊김 증권 연결 키가 만료돼 시세를 받지 못해요.다시 연결
새 기능 관심 종목에 알림을 걸 수 있어요.
삼삼성전자10주, 국내712,000원
SSK하이닉스2주, 국내452,000원
이렇게 하지 않는다 — 한 화면에 배너 둘 — 무엇이 이 페이지의 상태인지 흐려진다. 새 기능 · 팁은 배너가 아니다
자리 — 머리 바로 아래 · 한 화면 하나

짙은 바탕은 더 강하게 알릴 때

기본은 옅은 바탕이다. 짙은 바탕은 더 강하게 알려야 할 때 쓴다 — 예: 연결 끊김 · 거절 · 편집 불가처럼 지금 그 페이지를 제대로 쓸 수 없는 상태(SEED 는 Tone 마다 Weak · Solid 를 두고 쓰임을 제한하지 않는다).

닫기는 한 번 보면 되는 안내에만

새 기능 · 새 버전처럼 한 번 보면 되는 안내만 닫을 수 있게 한다 — 닫은 것을 기억해 다시 띄우지 않는다. 경고 · 오류 배너는 닫지 못한다.

글

제목은 상태를 나타내는 짧은 말 — "연결 끊김" · "곧 만료". 본문은 제목을 되풀이하지 않고 해요체 문장에 마침표. 버튼은 동작 이름 — "다시 연결" · "업데이트" · "구독 보기".

코드

레시피 recipes/shadcn/components/ui/page-banner.tsx 를 쓴다. 아래 미리보기는 스펙 값으로 그린 모습이다.

연결 끊김 — 버튼 하나

증권
연결 끊김 토스증권 키가 만료돼 시세를 받지 못해요.
    10월 1일 (목) 오후 3:30 시세
  • 삼성전자10주 · 국내712,000원
  • SK하이닉스2주 · 국내452,000원
  • Apple3주 · 해외1,021,500원

띠는 페이지 머리 바로 아래 화면 폭 전체다. 다시 연결하면 띠를 걷고 결과는 스낵바로 알린다.

import { PageBanner } from "@/components/ui/page-banner"

<PageBanner tone="critical" title="연결 끊김" button={{ label: "다시 연결", onClick: reconnect }}>
  증권 연결 키가 만료돼 시세를 받지 못해요.
</PageBanner>

새 기능 · 곧 만료

가계부
새 기능 반복 거래를 자동으로 기록할 수 있어요.
설정
곧 만료 Pro 이용이 10월 31일에 끝나요.

닫으면 바로 사라지고 다시 띄우지 않는다(닫음을 기억한다) — 초점은 다음 요소로. 짙은 바탕은 무거운 상태에만 쓴다.

{/* 한 번 보면 되는 안내 — 닫으면 다시 띄우지 않는다 */}
<PageBanner tone="informative" title="새 기능" interaction="dismissible" open={!seen} onDismiss={markSeen}>
  반복 거래를 자동으로 기록할 수 있어요.
</PageBanner>

<PageBanner tone="warning" variant="solid" title="곧 만료" button={{ label: "구독 보기", onClick: openSubscription }}>
  Pro 이용이 10월 31일에 끝나요.
</PageBanner>

Behavior

인터랙션동작
버튼 · Actionable 누르기그 동작을 한다
닫기바로 사라진다 — 닫은 것을 기억해 다시 띄우지 않는다. 초점은 다음 요소로
스크롤기본은 같이 올라간다. 맨 위에 붙일 때는 머리 아래에 붙는다
나중에 나타남(연결이 끊김)경고 · 위험이면 보조 기술에 알린다(role="alert")

Accessibility

기준검증
WCAG 1.4.3 Color contrast(글자 ≥ 4.5:1)옅은 바탕 fg-*-contrast 5.65 ~ 5.72 · 7.78 ~ 7.84, 짙은 바탕 흰 글 5.06 ~ 5.09 · 5.77 ~ 5.79, neutral 짙음 16.41 · 13.42 ✓
WCAG 1.4.11 Non-text contrast(≥ 3:1)포커스 링(안쪽) — 옅은 바탕은 stroke-focus-ring 3.91 이상 ✓, 짙은 바탕은 띠 글자색 4.93 이상 ✓(누름 바탕 포함). 띠 면은 장식
WCAG 2.5.8 Target Size — Minimum(AA ≥ 24×24)버튼 높이 40 · 닫기 40 ✓
ARIA띠는 문단(role 없음), Actionable 은 <button type="button">. 나중에 나타나는 경고 · 위험은 role="alert". 닫기 이름 "닫기"

Do / Don't

✅ Do

  • 페이지 맨 위에 하나, 그 페이지 전체의 상태만.
  • 기본은 옅은 바탕, 짙은 바탕은 더 강하게 알릴 때.
  • 버튼은 동작 이름 하나.

❌ Don't

  • 한 화면에 배너 둘 이상.
  • 그 기능의 팁을 배너로 — Callout.
  • 경고 · 오류 배너를 닫을 수 있게.

Specification

page-banner.yaml 의 규칙을 하나도 빼지 않고 조건마다 그린다 — 웹 · 앱이 Page Banner 를 만들 때 이 값을 그대로 쓴다. 조건이 없는 Base 가 모든 조합에 걸리고, 뒤의 규칙이 앞의 같은 값을 덮는다. 상태는 enabled 에서 바뀌는 값만 적었다.

Base

부위상태속성값
rootenabled최소 높이minHeight40px
너비width100%화면 폭 전체 — 페이지 머리 바로 아래(위에 사진이 있으면 그 아래), 한 화면에 하나
상하 여백paddingYspacing-x2_510px
좌우 여백paddingXspacing-global-gutter24pxSEED 16 → 화면 여백 24
간격gapspacing-x28px아이콘 ↔ 글
세로 맞춤alignItemsflex-start아이콘은 첫 줄에 붙는다 — 화살표 · 닫기는 띠 가운데
모서리radius0px모서리 없음
iconenabled아이콘size16pxlucide 선 아이콘 — 위 2(첫 줄 가운데). 톤마다 기본은 Callout 과 같다(info · info · circle-check · triangle-alert · circle-alert)
위 바깥 여백marginTopspacing-x0_52px
contentenabled간격gapspacing-x1_56px본문과 버튼이 한 줄에 안 들어가면 버튼이 다음 줄 본문 시작선으로
가로 맞춤justifyContentspace-between한 줄에 들어가면 버튼은 오른쪽 끝(SEED 와 같다)
titleenabled글자typographytext-t414px / 19px본문과 한 문단 — 사이는 띄어쓰기 두 칸
굵기fontWeight700
descriptionenabled글자typographytext-t414px / 19px단어 단위 줄바꿈(v114)
굵기fontWeight500
buttonenabled모서리radiusradius-r14px바탕이 없어 포커스 링에만 보인다
글자typographytext-t313px / 18px
굵기fontWeight700
터치 영역touchTarget글 + 사방 11 × 40바깥 여백 −11 로 띠 높이를 늘리지 않는다
suffixIconenabled뒤 아이콘size16pxchevron-right — 글과 8
closeButtonenabled크기size40px투명 상자 — 바깥 여백 −12 로 띠 높이를 늘리지 않는다. 아이콘은 오른쪽 끝에서 24, 글과 8
아이콘 크기iconSize16px
모서리radiusradius-r28px
focusRingfocused링 두께width2px
링 색colorstroke-focus-ringDesk#0147AD다크 #7AA9F6HR#075B3C다크 #2ABE84옅은 바탕 위 3.90 이상. 짙은 바탕은 띠 글자색(아래 solid 규칙) — 브랜드 링은 짙은 띠 위 1.61 ~ 2.44 다
링 간격offset-2px화면 끝까지 차는 띠라 안쪽에 — 버튼 · 닫기도 같다

variant=weak, tone=neutral

부위상태속성값
rootenabled배경backgroundbg-neutral-weak#F5F6FA다크 #353B4D
글자·아이콘foregroundfg-neutral#1A1F2E다크 #F5F6FA

variant=weak, tone=informative

부위상태속성값
rootenabled배경backgroundbg-informative-weak#EAF3FE다크 #21344D
글자·아이콘foregroundfg-informative-contrast#0F5FB3다크 #ACCEFB글 · 아이콘 · 버튼 · 화살표 · 닫기가 모두 이 색

variant=weak, tone=positive

부위상태속성값
rootenabled배경backgroundbg-positive-weak#EAF5EC다크 #223927
글자·아이콘foregroundfg-positive-contrast#026E33다크 #AED6B6

variant=weak, tone=warning

부위상태속성값
rootenabled배경backgroundbg-warning-weak#FFEFE8다크 #4B2B1F
글자·아이콘foregroundfg-warning-contrast#A53E0A다크 #F9BFA9

variant=weak, tone=critical

부위상태속성값
rootenabled배경backgroundbg-critical-weak#FFEFEC다크 #532722
글자·아이콘foregroundfg-critical-contrast#C01016다크 #FFBCB3

variant=solid, tone=neutral

부위상태속성값
rootenabled배경backgroundbg-neutral-inverted#1A1F2E다크 #F5F6FA
글자·아이콘foregroundfg-neutral-inverted#FFFFFF다크 #242938
focusRingfocused링 색colorfg-neutral-inverted#FFFFFF다크 #242938

variant=solid, tone=informative

부위상태속성값
rootenabled배경backgroundbg-informative-solid#1D6EC9다크 #0F65BF
글자·아이콘foregroundstatic-white#FFFFFF5.09 · 다크 5.78
focusRingfocused링 색colorstatic-white#FFFFFF

variant=solid, tone=positive

부위상태속성값
rootenabled배경backgroundbg-positive-solid#167F3F다크 #117539
글자·아이콘foregroundstatic-white#FFFFFF5.07 · 5.79
focusRingfocused링 색colorstatic-white#FFFFFF

variant=solid, tone=warning

부위상태속성값
rootenabled배경backgroundbg-warning-solid#BE490D다크 #B04209
글자·아이콘foregroundstatic-white#FFFFFF5.06 · 5.79
focusRingfocused링 색colorstatic-white#FFFFFF

variant=solid, tone=critical

부위상태속성값
rootenabled배경backgroundbg-critical-solid#D72323다크 #CC0E17
글자·아이콘foregroundstatic-white#FFFFFF5.06 · 5.77
focusRingfocused링 색colorstatic-white#FFFFFF

interaction=actionable

부위상태속성값
contentpressed배율scale2px 거리 축소안의 내용만(SEED scaleScope: content) — 바탕은 그대로. 모션 줄이기면 하지 않는다
축소 시간scaleDurationmotion-duration-pressed-scale150ms
축소 곡선scaleEasingmotion-ease-pressed-scalecubic-bezier(0, 0, 0.15, 1)

interaction=actionable, variant=weak, tone=neutral

부위상태속성값
roothovered배경backgroundbg-neutral-weak-pressed#EDEFF3다크 #404757
rootpressed배경backgroundbg-neutral-weak-pressed#EDEFF3다크 #404757

interaction=actionable, variant=weak, tone=informative

부위상태속성값
roothovered배경backgroundbg-informative-weak-pressed#D7E6FB다크 #204069
rootpressed배경backgroundbg-informative-weak-pressed#D7E6FB다크 #204069

interaction=actionable, variant=weak, tone=positive

부위상태속성값
roothovered배경backgroundbg-positive-weak-pressed#D8EADB다크 #20482B
rootpressed배경backgroundbg-positive-weak-pressed#D8EADB다크 #20482B

interaction=actionable, variant=weak, tone=warning

부위상태속성값
roothovered배경backgroundbg-warning-weak-pressed#FAE0D5다크 #65321D
rootpressed배경backgroundbg-warning-weak-pressed#FAE0D5다크 #65321D

interaction=actionable, variant=weak, tone=critical

부위상태속성값
roothovered배경backgroundbg-critical-weak-pressed#FFDEDA다크 #722722
rootpressed배경backgroundbg-critical-weak-pressed#FFDEDA다크 #722722

interaction=actionable, variant=solid, tone=neutral

부위상태속성값
roothovered배경backgroundbg-neutral-inverted-pressed#535866다크 #B7BDCC
rootpressed배경backgroundbg-neutral-inverted-pressed#535866다크 #B7BDCC

interaction=actionable, variant=solid, tone=informative

부위상태속성값
roothovered배경backgroundbg-informative-solid-pressed#0F5FB3다크 #1F70CB
rootpressed배경backgroundbg-informative-solid-pressed#0F5FB3다크 #1F70CB

interaction=actionable, variant=solid, tone=positive

부위상태속성값
roothovered배경backgroundbg-positive-solid-pressed#026E33다크 #198140
rootpressed배경backgroundbg-positive-solid-pressed#026E33다크 #198140

interaction=actionable, variant=solid, tone=warning

부위상태속성값
roothovered배경backgroundbg-warning-solid-pressed#A53E0A다크 #BF4A10
rootpressed배경backgroundbg-warning-solid-pressed#A53E0A다크 #BF4A10

interaction=actionable, variant=solid, tone=critical

부위상태속성값
roothovered배경backgroundbg-critical-solid-pressed#C01016다크 #D82424
rootpressed배경backgroundbg-critical-solid-pressed#C01016다크 #D82424

interaction=display

부위상태속성값
buttonpressed배율scale2px 거리 축소글 버튼만 — 바탕 없음
축소 시간scaleDurationmotion-duration-pressed-scale150ms
축소 곡선scaleEasingmotion-ease-pressed-scalecubic-bezier(0, 0, 0.15, 1)

interaction=dismissible

부위상태속성값
closeButtonpressed배율scale2px 거리 축소기준 40 — 바탕 없음
축소 시간scaleDurationmotion-duration-pressed-scale150ms
축소 곡선scaleEasingmotion-ease-pressed-scalecubic-bezier(0, 0, 0.15, 1)

SEED 와 다른 점

  • 좌우 여백은 화면 여백 24 — SEED 16. 띠 안 글이 페이지 글과 같은 선에서 시작한다.
  • 톤은 다섯 — magic(AI)은 두지 않는다.
  • 짙은 바탕의 글은 흰색 — groo bg-*-solid 위 5.06 이상(SEED warning 은 노랑 위 검정 글).
  • 아이콘은 lucide 선 아이콘(v106).
  • 나중에 나타나는 경고 · 위험은 role="alert", 버튼은 모두 type="button".

Migration notes

2026-10-22 — 짙은 바탕은 더 강하게 알릴 때

"짙은 바탕은 무거운 상태에만" 은 10-02 알림 비교 페이지의 그림 꼬리표("짙음(solid) — 무거운 상태에만")가 규칙이 된 것이다 — 같은 페이지 글은 "짙은 바탕을 고르는 기준 문장은 없다" 였다. 예시(연결 끊김 · 거절 · 편집 불가)는 그대로 두고 금지를 권장으로 낮췄다(남은 규칙 R14). 사용자 결정 — https://claude.ai/artifact/Mag1tEv51MdQHdy1o8hY3L. 값 변경 없음.

2026-10-22 — Callout 견주기에 용도 · Sticky

Page Banner ↔ Callout 표에 SEED 의 "용도" · "Sticky" 두 줄을 더하고, 다른 알림과 고르는 표는 Snackbar 문서 한 벌로 링크한다(사용자 결정 3B — https://claude.ai/artifact/NuEPiLRH2fJidXdKzcDsCX). 코드 예시 · 사이트 그림 · 레시피 예제 · 미리보기의 실제 증권사 이름을 걷었다("증권 연결 키가 만료돼 …"). 값 변경 없음.

2026-10-02 — 새로 둔다(SEED Page Banner)

사용자가 비교 페이지에서 Page Banner 를 두기로 정했다. 세 제품에는 지금 페이지 배너가 없다 — 앱 적용 때 화면마다 정할 자리:

  • Desk 웹 · 앱 증권 — 불러오기에 실패해도 "증권 계정을 연결해 주세요" 화면이 페이지를 대신한다(연결돼 있는데도). 연결 끊김은 Page Banner + 지난 값, 연결이 없을 때만 Result Section.
  • Desk 앱 업데이트 — 업데이트는 화면 전체, 결제 문자 안내는 홈 맨 위 PAlert(iOS 만).
  • HR 공지 — 로그인할 때마다 공지 대화상자가 차례로 뜬다("오늘 하루 보지 않기" 는 모든 공지를 하루 숨긴다).
  • 환경 표시(DEVELOPMENT 워터마크 · DEV 배지) — 배너가 아니다. 보조 기술에 숨긴다(aria-hidden).

이 페이지