<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>
아코디언의 전체를 포함하는 부분입니다.
| Prop | Type | Default |
|---|---|---|
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 attribute | Values |
|---|---|
[data-orientation] | "vertical" | "horizontal" |
접을 수 있는 섹션의 모든 부분을 포함합니다.
| Prop | Type | Default |
|---|---|---|
asChild | boolean | false |
disabled | boolean | false |
value* | string | No default value |
| Data attribute | Values |
|---|---|
[data-state] | "open" | "closed" |
[data-disabled] | 비활성화 여부 |
[data-orientation] | "vertical" | "horizontal" |
Accordion.Trigger를 감쌉니다. 페이지에 적합한 제목 레벨로 업데이트하려면 asChild 속성을 사용하세요.
| Prop | Type | Default |
|---|---|---|
asChild | boolean | false |
| Data attribute | Values |
|---|---|
[data-state] | "open" | "closed" |
[data-disabled] | 비활성화 여부 |
[data-orientation] | "vertical" | "horizontal" |
연결된 항목의 접힘 상태를 전환합니다. 반드시 Accordion.Header 안에 중첩되어야 합니다.
| Prop | Type | Default |
|---|---|---|
asChild | boolean | false |
| Data attribute | Values |
|---|---|
[data-state] | "open" | "closed" |
[data-disabled] | 비활성화 여부 |
[data-orientation] | "vertical" | "horizontal" |
항목의 접을 수 있는 콘텐츠를 포함합니다.
| Prop | Type | Default |
|---|---|---|
asChild | boolean | false |
forceMount | boolean | No default value |
| Data attribute | Values |
|---|---|
[data-state] | "open" | "closed" |
[data-disabled] | 비활성화 여부 |
[data-orientation] | "vertical" | "horizontal" |
| CSS Variable | Description |
|---|---|
--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 디자인 패턴을 준수합니다.
| Key | Description |
|---|---|
Space | 포커스가 접힌 섹션의 Accordion.Trigger에 있을 때, 섹션을 엽니다. |
Enter | 포커스가 접힌 섹션의 Accordion.Trigger에 있을 때, 섹션을 엽니다. |
Tab | 다음 포커스 가능한 요소로 이동합니다. |
Shift + Tab | 이전 포커스 가능한 요소로 이동합니다. |
ArrowDown | orientation이 vertical일 때, 다음 Accordion.Trigger로 포커스를 이동합니다. |
ArrowUp | orientation이 vertical일 때, 이전 Accordion.Trigger로 포커스를 이동합니다. |
ArrowRight | orientation이 horizontal일 때, 다음 Accordion.Trigger로 포커스를 이동합니다. |
ArrowLeft | orientation이 horizontal일 때, 이전 Accordion.Trigger로 포커스를 이동합니다. |
Home | Accordion.Trigger에 포커스가 있을 때, 첫 번째 Accordion.Trigger로 포커스를 이동합니다. |
End | Accordion.Trigger에 포커스가 있을 때, 마지막 Accordion.Trigger로 포커스를 이동합니다. |