# Koten UI — full documentation
> Generated from the catalog and internal guides. Prefer the per-page Markdown when you need one component; use this file to load the whole system. Japanese labels in the documentation are internal styling; do not add Japanese text or decoration to a consumer UI unless requested (R-031, D-057).
---
---
title: "Accordion"
description: "Groups secondary content into sections that open and close. It can keep a single section open or several at once."
kind: component
id: C-030
registry: "accordion"
docs: "https://koten.codehive.com.co/components/accordion"
markdown: "https://koten.codehive.com.co/md/components/accordion.md"
install: "npx shadcn@latest add https://koten.codehive.com.co/r/accordion.json"
language: en
---
# Accordion · アコーディオン
> Component C-030 in the Koten UI catalog.
Groups secondary content into sections that open and close. It can keep a single section open or several at once.
> Japanese labels in this page are documentation metadata. Keep the consumer UI in the product's language and do not add Japanese decoration unless the user asks (R-031).
## Install
Install `koten-theme` first when the project does not have Koten tokens yet. Use the runner of your project.
```bash
# Node
npx shadcn@latest add https://koten.codehive.com.co/r/accordion.json
# Bun
bunx shadcn@latest add https://koten.codehive.com.co/r/accordion.json
```
## Files
- `@/components/ui/accordion.tsx`
- `@/lib/koten/cn.ts`
- `@/lib/koten/format.ts`
- `@/lib/koten/intl.ts`
- `@/lib/koten/labels.ts`
- `@/lib/koten/provider.tsx`
## Reference
- Upstream primitive: https://base-ui.com/react/components/accordion
## Examples
### One section at a time
defaultValue opens shipping; opening another section closes the previous one.
```tsx
The order leaves the Tokyo warehouse on 22 Oct.
``` ### Without actions Without a footer the dialog only informs; the header button still closes it. ```tsx ``` ## Props | Prop | Type | Default | Notes | | --- | --- | --- | --- | | `trigger` | `ReactElement` | `—` | The element that opens the dialog; Base UI merges its props with the trigger. | | `title` | `ReactNode` | `—` | Required: BaseDialog.Title provides the accessible name. | | `description` | `ReactNode` | `—` | Optional; it is associated with the dialog as its description. | | `children` | `ReactNode` | `—` | The dialog body, inside the scrollable area. | | `footer` | `ReactNode` | `—` | Footer actions; the close button using closeLabel is appended at the end. | | `closeLabel` | `string` | `—` | Accessible text for the close control in the header and footer. | | `className` | `string` | `—` | Merged with the default max width and border. | ## Accessibility - The name comes from title and the context from description; in practice both are required. - Focus stays trapped in the popup; Escape, the close button and the backdrop close it. - On close, focus returns to the element that opened the dialog. - While open, the rest of the page is removed from the keyboard order. ## Sources - Catalog page: https://koten.codehive.com.co/components/dialog - Markdown: https://koten.codehive.com.co/md/components/dialog.md - Repository: https://github.com/codehive-colombia/koten --- --- title: "Drawer" description: "A side panel for editing or filtering without losing the table behind it. It keeps context, enters from one side and returns focus on close." kind: component id: C-032 registry: "drawer" docs: "https://koten.codehive.com.co/components/drawer" markdown: "https://koten.codehive.com.co/md/components/drawer.md" install: "npx shadcn@latest add https://koten.codehive.com.co/r/drawer.json" language: en --- # Drawer · ドロワー > Component C-032 in the Koten UI catalog. A side panel for editing or filtering without losing the table behind it. It keeps context, enters from one side and returns focus on close. > Japanese labels in this page are documentation metadata. Keep the consumer UI in the product's language and do not add Japanese decoration unless the user asks (R-031). ## Install Install `koten-theme` first when the project does not have Koten tokens yet. Use the runner of your project. ```bash # Node npx shadcn@latest add https://koten.codehive.com.co/r/drawer.json # Bun bunx shadcn@latest add https://koten.codehive.com.co/r/drawer.json ``` ## Files - `@/components/ui/drawer.tsx` - `@/lib/koten/cn.ts` - `@/lib/koten/format.ts` - `@/lib/koten/intl.ts` - `@/lib/koten/labels.ts` - `@/lib/koten/provider.tsx` ## Requirements - **portal** — Portaled popup: The panel mounts inside BaseDrawer.Portal with its backdrop. Do not nest it in overflowing containers or it will be clipped. ## Reference - Upstream primitive: https://base-ui.com/react/components/dialog ## Examples ### Side filters Enters from the right with a description and a footer action; the maximum width is 480 px. ```tsxThe drawer keeps the table context and is meant for side editing.