Search
๐Ÿ’ก

Collapsible

Created
2026/01/21 13:34
Tags
2026/01/22 07:23

Context

shadcn/ui์—์„œ๋Š” ์–ด๋А ์•„์ดํ…œ์„ ์ ‘์—ˆ๋‹ค ํˆ๋‹ค ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ๋•Œ Collapsible ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ทธ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜์˜€๋‹ค.

Agenda

โ€ข
Collapsible ์ปดํฌ๋„ŒํŠธ ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•จ

Contents

shadcn/ui์˜ Sidebar ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” Group์˜ Sub Item์„ ์ ‘์—ˆ๋‹ค ํˆ๋‹ค ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ Collapsible์ด๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ์™€ ๊ทธ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๊ตฌํ˜„๋œ๋‹ค.
function Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) { return <CollapsiblePrimitive.Root data-slot='collapsible' {...props} />; }
TypeScript
๋ณต์‚ฌ
Collapsible ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. radix-ui์˜ Collapsible.Root์„ ๊ฐ์‹ธ๋Š” ํ˜•์‹์œผ๋กœ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ๋‹ค. ๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” ์ปจํ…์ธ ์˜ ํŽผ์ณ์ง๊ณผ ์ ‘ํžˆ๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ•˜์œ„ Trigger์™€ Content์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
function CollapsibleTrigger({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) { return ( <CollapsiblePrimitive.CollapsibleTrigger data-slot='collapsible-trigger' {...props} /> ); }
TypeScript
๋ณต์‚ฌ
CollapsibleTrigger ๋˜ํ•œ radix-ui์˜ Collapsible Trigger๋ฅผ ๊ฐ์‹ธ๋Š” wrapper ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. ๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” Collapsible Root์˜ ํŽผ์นจ ์ ‘ํž˜ ์ƒํƒœ๋ฅผ ํ† ๊ธ€ํ•˜๋Š” ๋ฒ„ํŠผ์ด๋‹ค.
function CollapsibleContent({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) { return ( <CollapsiblePrimitive.CollapsibleContent data-slot='collapsible-content' {...props} /> ); }
TypeScript
๋ณต์‚ฌ
CollapsibleContent๋Š” radix-ui์˜ Collapsible Content๋ฅผ ๊ฐ์‹ธ๋Š” wrapper ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. ์•ž์˜ Collapsible ์ปดํฌ๋„ŒํŠธ์™€ CollapsibleTrigger ์ปดํฌ๋„ŒํŠธ์™€ ์ฐจ์ด์  ์—†์ด ๋ชจ๋‘ radix-ui์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ์‹ธ๋Š” wrapper ํ˜•ํƒœ์ด๋‹ค.
๋ฐฐ์น˜ ํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
Collapsible (Root) โ”œโ”€โ”€ CollapsibleTrigger (์—ด๊ณ  ๋‹ซ๋Š” ๋ฒ„ํŠผ) โ””โ”€โ”€ CollapsibleContent (ํŽผ์ณ์งˆ ๋‚ด์šฉ)
Plain Text
๋ณต์‚ฌ
<Collapsible> <CollapsibleTrigger> ์—ด๊ธฐ / ๋‹ซ๊ธฐ </CollapsibleTrigger> <CollapsibleContent> ๋‚ด์šฉ </CollapsibleContent> </Collapsible>
JavaScript
๋ณต์‚ฌ
Collapsible์ด ์ตœ์ƒ๋‹จ์—์„œ CollapsibleTrigger์™€ CollapsibleContent๋ฅผ ๊ฐ์‹ผ๋‹ค. CollapsibleTrigger์™€ CollapsibleContent๋Š” ํ˜•์ œ depth์— ์œ„์น˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ„์— ์„ค๋ช…ํ•œ๊ฒƒ ์ฒ˜๋Ÿผ CollapsibleTrigger๋ฅผ ํ†ตํ•ด CollapsibleContent๋ฅผ ํŽผ์น˜๊ฑฐ๋‚˜ ์ ‘์„ ์ˆ˜ ์žˆ๋‹ค.