@olundot/ui · Feedback
NotificationBadge
읽지 않은 알림이나 대기 항목 수를 숫자로 표시하는 compact count indicator입니다.
- Badge와 차이
- Badge는 범용 짧은 메타데이터·상태·카테고리·수량 라벨이고, NotificationBadge는 읽지 않은 항목 수처럼 숫자 count에만 사용합니다.
- 0 숨김
- count가 0 이하이면 렌더링하지 않아 불필요한 노이즈를 만들지 않습니다.
- max
- 큰 숫자는 max 기준으로 `99+`처럼 cap 처리합니다.
- placement
- corner는 아이콘·버튼 모서리에 절대 배치하고, inline은 메뉴 행 끝 정렬에 사용합니다.
0일 때 숨김
읽지 않은 항목이 없으면 배지를 렌더링하지 않습니다읽지 않은 알림 없음
코드 보기tsx
import { NotificationBadge } from "@olundot/ui";
export function NotificationBadgeHiddenZero() {
return (
<div style={{ display: "flex", gap: "16px", alignItems: "center" }}>
<span className="text-xs font-medium text-text-tertiary">읽지 않은 알림 없음</span>
<NotificationBadge count={0} />
</div>
);
}모서리 배치
아이콘 버튼이나 아바타 모서리에 새 알림 수를 고정7
코드 보기tsx
import { Button, NotificationBadge } from "@olundot/ui";
export function NotificationBadgeCorner() {
return (
<div style={{ position: "relative", display: "inline-flex" }}>
<Button size="sm" variant="outline">알림</Button>
<NotificationBadge count={7} placement="corner" />
</div>
);
}인라인 배치
사이드바와 메뉴 행의 오른쪽 끝에 수량을 정렬공지사항12
검토 요청3
코드 보기tsx
import { NotificationBadge } from "@olundot/ui";
export function NotificationBadgeInline() {
return (
<div style={{ display: "grid", gap: "8px", width: "220px" }}>
<div style={{ display: "flex", alignItems: "center", gap: "8px" }}>
<span>공지사항</span>
<NotificationBadge count={12} placement="inline" size="md" />
</div>
<div style={{ display: "flex", alignItems: "center", gap: "8px" }}>
<span>검토 요청</span>
<NotificationBadge count={3} placement="inline" />
</div>
</div>
);
}최대값 cap
큰 수량은 max 기준으로 줄여 표시99+9+
코드 보기tsx
import { NotificationBadge } from "@olundot/ui";
export function NotificationBadgeMaxCap() {
return (
<div style={{ display: "flex", gap: "12px", alignItems: "center" }}>
<NotificationBadge count={150} max={99} />
<NotificationBadge count={24} max={9} size="md" />
</div>
);
}