React

Accordion

여러 개의 관련된 콘텐츠 섹션을 수직으로 나열하고, 각 섹션을 펼치거나 접어 정보를 탐색할 수 있는 컴포넌트입니다.

Installation

npx @seed-design/cli@latest add ui:accordion

Props

Accordion

Prop

Type

values?string[] | undefined
defaultValues?string[] | undefined
onValuesChange?((values: string[]) => void) | undefined
disabled?boolean | undefined
multiple?boolean | undefined

AccordionItem

Prop

Type

valuestring
disabled?boolean | undefined

AccordionTrigger

Prop

Type

titleReact.ReactNode
description?React.ReactNode
prefix?React.ReactNode
suffixIcon?React.ReactNode
headingLevel?1 | 2 | 3 | 4 | 5 | 6 | undefined

AccordionContent

Prop

Type

Examples

Inline Variant

기본 variant입니다. 아이템이 연속된 흐름으로 제공되며, 아이템 사이에 구분선이 표시됩니다.

Separated

variant="separated" 를 사용하면 각 항목이 분리된 카드 형태로 표시됩니다.

Multiple

기본적으로 한 번에 하나의 항목만 펼칠 수 있습니다. multiple prop을 사용하면 여러 항목을 동시에 펼칠 수 있습니다.

Always one open

valuesonValuesChange를 사용해 controlled 패턴으로 운영하면, 빈 배열이 들어올 때 setter를 호출하지 않는 가드만 추가하여 항상 하나의 항목이 열려 있도록 강제할 수 있습니다.

Size

size로 Accordion의 크기를 정합니다. (default: medium)

responsive는 화면 너비에 따라 size가 자동으로 전환되는 값입니다. 여러 화면 너비를 함께 지원하는 제품에서 size=responsive를 사용하여 대응합니다.

Prefix

prefix prop에 아이콘 같은 앞쪽 요소를 전달할 수 있습니다.

Description

description prop으로 트리거에 부가 설명을 추가할 수 있습니다.

Disabled

disabled prop으로 전체 또는 개별 항목을 비활성화할 수 있습니다.

  • Accordiondisabled를 설정하면 모든 항목이 비활성화됩니다.
  • AccordionItemdisabled를 설정하면 해당 항목만 비활성화됩니다.

Controlled

valuesonValuesChange를 사용하여 열림 상태를 직접 제어할 수 있습니다.

Value Array Changes

controlled 모드에서는 현재 열려 있는 항목이 values 배열로 전달됩니다. 아래 예시는 트리거를 누를 때마다 최신 values와 최근 onValuesChange 결과를 함께 보여줍니다.

Default Expanded

defaultValues를 사용하여 초기 열림 상태를 지정할 수 있습니다.

Custom Content

AccordionContent는 열림/닫힘 애니메이션 컨테이너 역할만 합니다. 기본 패딩, 배경색, 테두리, 타이포그래피 스타일은 제공하지 않으므로 내부 콘텐츠에서 직접 구성해야 합니다. 아래 예시처럼 Box로 패딩과 배경을 명시적으로 주는 패턴을 권장합니다.

Accessibility

WAI-ARIA Accordion Pattern을 따릅니다.

AccordionTrigger는 내부적으로 heading > button 구조를 구성합니다. 기본 heading level은 h3이며, 문서 구조에 맞춰 다른 level이 필요하면 headingLevel prop으로 조정할 수 있습니다. WAI-ARIA APG 예시에서도 상위 섹션 구조에 맞춰 h3를 사용합니다.

Heading Level Escape Hatch

상위 섹션 heading이 이미 존재한다면 headingLevel로 accordion header의 level을 맞춰 주세요. 예를 들어 accordion이 h3 섹션 안에 들어간다면 각 항목 header는 h4로 내리는 식으로 문서 outline을 유지할 수 있습니다.

키보드 인터랙션

동작
Enter / Space포커스된 트리거의 패널을 펼치거나 접습니다.
Tab다음 포커스 가능한 요소로 이동합니다.
Shift + Tab이전 포커스 가능한 요소로 이동합니다.
ArrowDown다음 트리거로 포커스를 이동합니다. 마지막이면 첫 번째로 순환합니다.
ArrowUp이전 트리거로 포커스를 이동합니다. 첫 번째이면 마지막으로 순환합니다.
Home첫 번째 트리거로 포커스를 이동합니다.
End마지막 트리거로 포커스를 이동합니다.

Last updated on

On this page