Components

Accordion

<Accordion type='single' collapsible>
<AccordionItem value='item-1'>
<AccordionTrigger>할인서비스 제외 대상</AccordionTrigger>
<AccordionContent>
<ul>
<li>
무이자할부 이용금액, 단기카드대출(현금서비스), 장기카드대출(카드론),
상품권 및 선불카드(선불전자지급수단 포함) 구입·충전금액, 아파트관리비,
초·중·고등학교 납입금 전체, 정부지원금(보육료/유치원보조비/바우처 이용금액
등), 대학(대학원)등록금, 각종 세금, 공과금(전기/수도 등),
4대 사회보험료(건강/연금/고용/산재), 각종 수수료 및 이자, 연체료, 연회비,
교통요금, 무승인전표(자판기, 터널통행료, 항공기내 이용 등), 취소금액
</li>
</ul>
</AccordionContent>
</AccordionItem>
<AccordionItem value='item-2'>
<AccordionTrigger>전월 이용실적 기준</AccordionTrigger>
<AccordionContent>
<ul>
<li>
전월 1일 ~ 말일(승인시점 기준) 'KB국민 My WE:SH 카드' 일시불 및
할부 승인금액 기준
</li>
<li>해외 이용금액은 전월 1일 ~ 말일까지 일시불 매입완료 기준</li>
<li>취소금액은 취소전표가 KB국민카드에 접수된 월의 실적에서 차감</li>
</ul>
</AccordionContent>
</AccordionItem>
<AccordionItem value='item-3'>
<AccordionTrigger>선택서비스 안내사항</AccordionTrigger>
<AccordionContent>
<ul>
<li>선택서비스 변경 시 신청일 기준 다음달 1일부터 적용(월 단위 제공)</li>
<li>변경 방법 : 모바일앱/홈페이지/고객센터(☎1588-1688)</li>
</ul>
</AccordionContent>
</AccordionItem>
</Accordion>

API Reference

Accordion

아코디언의 전체를 포함하는 부분입니다.

PropTypeDefault
asChild
boolean
false
type*
enum
No default value
value
string
No default value
defaultValue
string
No default value
onValueChange
function
No default value
value
string[]
[]
defaultValue
string[]
[]
onValueChange
function
No default value
collapsible
boolean
false
disabled
boolean
false
dir
enum
"ltr"
orientation
enum
"vertical"
Data attributeValues
[data-orientation]"vertical" | "horizontal"

AccordionItem

접을 수 있는 섹션의 모든 부분을 포함합니다.

PropTypeDefault
asChild
boolean
false
disabled
boolean
false
value*
string
No default value
Data attributeValues
[data-state]"open" | "closed"
[data-disabled]

비활성화 여부

[data-orientation]"vertical" | "horizontal"

Accordion.Trigger를 감쌉니다. 페이지에 적합한 제목 레벨로 업데이트하려면 asChild 속성을 사용하세요.

PropTypeDefault
asChild
boolean
false
Data attributeValues
[data-state]"open" | "closed"
[data-disabled]

비활성화 여부

[data-orientation]"vertical" | "horizontal"

Trigger

연결된 항목의 접힘 상태를 전환합니다. 반드시 Accordion.Header 안에 중첩되어야 합니다.

PropTypeDefault
asChild
boolean
false
Data attributeValues
[data-state]"open" | "closed"
[data-disabled]

비활성화 여부

[data-orientation]"vertical" | "horizontal"

Content

항목의 접을 수 있는 콘텐츠를 포함합니다.

PropTypeDefault
asChild
boolean
false
forceMount
boolean
No default value
Data attributeValues
[data-state]"open" | "closed"
[data-disabled]

비활성화 여부

[data-orientation]"vertical" | "horizontal"
CSS VariableDescription
--radix-accordion-content-width컨텐츠가 열리거나 닫힐 때의 너비
--radix-accordion-content-height컨텐츠가 열리거나 닫힐 때의 높이

예제

기본적으로 확장된 상태

defaultValue 속성을 사용하여 기본적으로 열려 있는 항목을 정의합니다.

<Accordion.Root type="single" defaultValue="item-2">
<Accordion.Item value="item-1"></Accordion.Item>
<Accordion.Item value="item-2"></Accordion.Item>
</Accordion.Root>

모든 항목 접기 허용

collapsible 속성을 사용하여 모든 항목을 닫을 수 있도록 합니다.

<Accordion.Root type="single" collapsible>
<Accordion.Item value="item-1"></Accordion.Item>
<Accordion.Item value="item-2"></Accordion.Item>
</Accordion.Root>

여러 항목을 동시에 열기

type 속성을 multiple로 설정하여 여러 항목을 동시에 열 수 있도록 합니다.

<Accordion.Root type="multiple">
<Accordion.Item value="item-1"></Accordion.Item>
<Accordion.Item value="item-2"></Accordion.Item>
</Accordion.Root>

열린 상태에서 아이콘 회전

체브론 같은 장식 요소를 추가하고 항목이 열릴 때 회전시킬 수 있습니다.

// index.jsx
import { Accordion } from "@confy-ui/react/primitives";
import { ChevronDownIcon } from "@confy-ui/react/icons";
import "./styles.css";
export default () => (.
<Accordion.Root type="single">
<Accordion.Item value="item-1">
<Accordion.Header>
<Accordion.Trigger className="AccordionTrigger">
<span>트리거 텍스트</span>
<ChevronDownIcon className="AccordionChevron" aria-hidden />
</Accordion.Trigger>
</Accordion.Header>
<Accordion.Content></Accordion.Content>
</Accordion.Item>
</Accordion.Root>
);
/* styles.css */
.AccordionChevron {
transition: transform 300ms;
}
.AccordionTrigger[data-state="open"] > .AccordionChevron {
transform: rotate(180deg);
}

수평 방향

orientation 속성을 사용하여 수평 아코디언을 생성합니다.

<Accordion.Root orientation="horizontal">
<Accordion.Item value="item-1"></Accordion.Item>
<Accordion.Item value="item-2"></Accordion.Item>
</Accordion.Root>

콘텐츠 크기 애니메이션

--radix-accordion-content-width 및/또는 --radix-accordion-content-height CSS 변수를 사용하여 콘텐츠가 열리고 닫힐 때 크기를 애니메이션화할 수 있습니다.

// index.jsx
import { Accordion } from "@confy-ui/primitives";
import "./styles.css";
export default () => (
<Accordion.Root type="single">
<Accordion.Item value="item-1">
<Accordion.Header></Accordion.Header>
<Accordion.Content className="AccordionContent"></Accordion.Content>
</Accordion.Item>
</Accordion.Root>
);
/* styles.css */
.AccordionContent {
overflow: hidden;
}
.AccordionContent[data-state="open"] {
animation: slideDown 300ms ease-out;
}
.AccordionContent[data-state="closed"] {
animation: slideUp 300ms ease-out;
}
@keyframes slideDown {
from {
height: 0;
}
to {
height: var(--radix-accordion-content-height);
}
}
@keyframes slideUp {
from {
height: var(--radix-accordion-content-height);
}
to {
height: 0;
}
}

접근성

Accordion WAI-ARIA 디자인 패턴을 준수합니다.

키보드 상호작용

KeyDescription
Space
포커스가 접힌 섹션의 Accordion.Trigger에 있을 때, 섹션을 엽니다.
Enter
포커스가 접힌 섹션의 Accordion.Trigger에 있을 때, 섹션을 엽니다.
Tab
다음 포커스 가능한 요소로 이동합니다.
Shift + Tab
이전 포커스 가능한 요소로 이동합니다.
ArrowDown
orientationvertical일 때, 다음 Accordion.Trigger로 포커스를 이동합니다.
ArrowUp
orientationvertical일 때, 이전 Accordion.Trigger로 포커스를 이동합니다.
ArrowRight
orientationhorizontal일 때, 다음 Accordion.Trigger로 포커스를 이동합니다.
ArrowLeft
orientationhorizontal일 때, 이전 Accordion.Trigger로 포커스를 이동합니다.
Home
Accordion.Trigger에 포커스가 있을 때, 첫 번째 Accordion.Trigger로 포커스를 이동합니다.
End
Accordion.Trigger에 포커스가 있을 때, 마지막 Accordion.Trigger로 포커스를 이동합니다.
PreviousStrong