doksam-ui
홈ProfilesTokensIconsComponentsPatternsTemplatesRules
Patterns

페이스티드 필터 패턴

2단계 카테고리 칩 + 카운트 배지 + 그룹 컬러로 구성하는 다면 필터입니다.

#1

2-depth 칩 + 카운트 + 그룹컬러

1depth 그룹 칩을 고르면 2depth 서브카테고리 칩이 드러나는 다면(faceted) 필터입니다. 칩마다 건수 배지를 붙이고, 활성 칩은 그룹 고유 색으로 강조합니다.

  • 컬러 시스템 v2디자인 · 토큰
  • 아이콘 가이드라인디자인 · 아이콘
  • 컴포넌트 스펙 정리디자인 · 컴포넌트
  • API 게이트웨이 마이그레이션엔지니어링 · 인프라
  • 테스트 커버리지 개선엔지니어링 · QA
  • 타입 안정성 강화엔지니어링 · QA
  • 배포 파이프라인 개편엔지니어링 · 인프라
  • 온콜 로테이션 정책오퍼레이션 · 운영정책
  • 장애 보고서 템플릿오퍼레이션 · 운영정책
  • 비용 모니터링 대시보드오퍼레이션 · 모니터링
function selectGroup(next: string) {
  setGroup(next)
  setSub("") // depth0을 바꾸면 depth1 선택은 더 이상 유효하지 않다.
}

<button
  aria-pressed={group === g.key}
  style={group === g.key ? { backgroundColor: g.color, borderColor: g.color } : undefined}
  onClick={() => selectGroup(g.key)}
>
  {g.label}
  <span className="font-mono text-[10px]">{countBy(g.key)}</span>
</button>
  • 카운트는 하드코딩하지 않고 실제 아이템 배열에서 파생시켜, 필터 칩과 데이터가 항상 일치하게 한다.
  • 그룹 색은 활성 칩 배경뿐 아니라 depth1 영역의 border-left, 리스트 아이템의 좌측 스트라이프에도 재사용해 그룹 소속을 한눈에 드러낸다.
  • depth0을 바꾸면 depth1(서브카테고리) 선택은 자동으로 초기화한다 — 이전 그룹의 서브카테고리가 새 그룹에 존재하지 않을 수 있기 때문이다.
  • 칩 button에는 aria-pressed를 달아 토글 상태를 스크린리더에도 전달한다.