Get startedFoundationsComponentsPatternsRules

Flag

플래그는 확인·알림·안내처럼 최소한의 상호작용만 필요한 메시지를 화면 좌하단에 띄워요.

설치

pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/steel/flag.json

Examples

Default

title 은 필수예요. 기본(normal) 플래그는 FlagGroup 의 맨 위에 있을 때 닫기 버튼이 생겨요.

Actions

actions 배열로 하단 액션을 넣어요. normal 은 가운뎃점으로 구분된 링크, 그 밖의 appearance 는 반투명 배경의 버튼으로 보여요. 두 개까지만 써요.

Icons

아이콘을 넣지 않으면 appearance 에 맞는 기본 아이콘을 써요. 메시지 의도에 맞게 다른 아이콘으로 바꿀 수 있고, 사람의 활동이라면 아바타를 넣어도 돼요.

Appearance

normal 이 아닌 appearance 는 진한 배경(bold)으로 바뀌고, 닫기 대신 펼치기 버튼이 생겨요. 설명과 액션은 펼쳤을 때만 보여요. 펼치고 접을 때 높이가 250ms 동안 바뀌고, 접힐 때는 내용이 페이드 아웃된 뒤 사라져요.

Appearance배경 토큰용도
normalelevation.surface.overlay활동 알림처럼 일반적인 이벤트 메시지. 닫을 수 있어요.
infocolor.background.neutral.bold행동이 필요 없는 추가 정보, 로딩 중 상태
warningcolor.background.warning.bold큰 변화가 일어나기 전 미리 알림
errorcolor.background.danger.bold실패나 연결 문제
successcolor.background.success.bold작업 완료 확인

Flag group

FlagGroup 은 플래그를 화면 왼쪽 아래(왼쪽 80px, 아래 48px)에 고정해요. 화면 너비가 560px 이하면 화면 아래에 꽉 차게 붙어요. 새 플래그는 왼쪽에서 밀려 들어오며 맨 위에 쌓이고, 맨 위 플래그만 닫을 수 있어요. 닫으면 왼쪽으로 사라지고 다음 플래그가 올라와요. Esc 로도 맨 위 플래그를 닫을 수 있어요.

Auto dismiss

AutoDismissFlag 는 8초 뒤 자동으로 닫혀요. 마우스를 올리거나 포커스를 주면 타이머가 멈춰요. autoDismissSeconds 로 시간을 바꿀 수 있지만, 읽을 시간을 고려해 8초보다 짧게 하지 않아요.

Flags provider

FlagsProvider 로 감싸면 하위 어디서든 useFlags() 의 showFlag 로 플래그를 띄울 수 있어요. showFlag 는 닫는 함수를 돌려주고, 같은 id 로 다시 호출하면 새로 쌓이지 않고 교체돼요. isAutoDismiss: true 면 자동으로 닫혀요.

const { showFlag, hideFlag } = useFlags();

const dismiss = showFlag({
  title: '이슈 링크를 복사했어요',
  isAutoDismiss: true,
});

Usage guidelines

플래그는 이벤트 뒤에 보여주는 확인·알림·안내 메시지예요. 보통 플래그 그룹 안에서 쓰이고, 다른 콘텐츠 위에 겹쳐 보여요. 모달이 열려 있어도 그 위에 보여야 해요.

기본 플래그Bold 플래그
용도활동 알림 같은 일반 이벤트 메시지성공·로딩·경고·오류
닫기닫을 수 있어요문제가 해결되거나 성공 메시지가 만료될 때까지 남아요
시각 단서사람의 활동이면 아이콘 대신 아바타색으로 심각도를 표현
상태하나접힘·펼침
Do· 짧고 분명하게
제목이 대부분의 의미를 전달하게 쓰고, 경고·오류에는 다음 단계를 함께 줘요.
Don't· 중요한 메시지 자동 닫기
놓치면 안 되는 경고·오류에는 자동 닫기를 쓰지 마세요.
  • 닫을 수 있는 플래그와 닫을 수 없는 플래그를 한 그룹에 섞지 않아요. 자동으로 닫히는 플래그가 다른 플래그를 가릴 수 있어요.
  • 쌓이는 순서가 곧 읽는 순서예요. 어떤 플래그를 먼저 보여줄지 정해요.
  • 설명은 다섯 줄을 넘으면 스크롤돼요. 긴 내용은 별도 페이지로 연결하거나 Banner, Section Message 를 써요.
  • 정보는 짧게 전하고 하던 일로 돌려보내요. 경고는 이미 일어난 일이 아니라 앞으로 일어날 일을 알리고 대안을 줘요. 오류는 원인과 다음 단계를 쉬운 말로, 사용자를 탓하지 않고 써요. 성공은 결과를 확인시키고, 무언가를 만들었다면 볼 수 있는 링크를 줘요.

Accessibility

  • 플래그는 role="alert" 라 나타나면 스크린 리더가 바로 읽어요. 다른 알림과 겹치면 delayAnnouncement 로 늦춰요.
  • 제목은 기본 h2 라 heading 으로 이동할 수 있어요. 문서 구조에 맞게 headingLevel 로 바꿔요.
  • 그룹에는 스크린 리더용 제목("플래그 알림")이 들어가요. Esc 로 맨 위 플래그를 닫을 수 있어요.
  • Bold 플래그의 펼치기 버튼은 aria-expanded 로 상태를 알려요. 접힌 내용은 aria-hidden 으로 숨겨져요.
  • 색만으로 심각도를 전달하지 말고 문구로도 분명히 써요. 링크 문구는 이동할 곳을 설명해요.

Props

Flag

Prop

Type

AutoDismissFlag

Flag props 와 같고 아래가 추가돼요.

Prop

Type

FlagGroup

Prop

Type

useFlags

Prop

Type

On this page