# Chip
URL: /lynx/components/chip
Source: https://github.com/daangn/seed-design/blob/dev/docs/content/lynx/components/chip.mdx
사용자가 선택하거나 실행할 수 있는 짧은 값을 표시하는 컴포넌트입니다.
사용 가능 버전: @seed-design/lynx-react@0.5.0, @seed-design/lynx-css@0.9.0
## Preview
```tsx
import "./styles";
import { root } from "@lynx-js/react";
import { Chip, useSeedClassName } from "@seed-design/lynx-react";
function Root() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
Button Chip
Toggle Chip
Radio 1
Radio 2
);
}
root.render();
```
## Installation
- npm: npm install @seed-design/lynx-react @seed-design/lynx-css
- pnpm: pnpm add @seed-design/lynx-react @seed-design/lynx-css
- yarn: yarn add @seed-design/lynx-react @seed-design/lynx-css
- bun: bun add @seed-design/lynx-react @seed-design/lynx-css
Lynx `Chip`은 별도 `ui:chip` snippet 없이 `@seed-design/lynx-react` 패키지에서 직접 제공합니다.
## Props
### `Chip.Button`
### `Chip.Toggle`
### `Chip.RadioRoot`
### `Chip.RadioItem`
### Slots
## Examples
### Button
일반 액션은 `Chip.Button`을 사용하고 `bindtap`으로 탭 이벤트를 처리합니다.
```tsx
import "./styles";
import { root } from "@lynx-js/react";
import { Chip, useSeedClassName } from "@seed-design/lynx-react";
function Root() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
console.log("필터 열기")}>
필터 열기
);
}
root.render();
```
### Toggle
독립적인 선택 상태는 `Chip.Toggle`을 사용합니다. `checked`와 `onCheckedChange`를 함께 전달하면 controlled 상태로 사용할 수 있습니다.
```tsx
import "./styles";
import { root } from "@lynx-js/react";
import { Chip, useSeedClassName } from "@seed-design/lynx-react";
function Root() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
console.log("거래 가능", checked)}
>
거래 가능
);
}
root.render();
```
### Radio Group
한 항목만 선택해야 하면 `Chip.RadioRoot`와 `Chip.RadioItem`을 조합합니다.
```tsx
import "./styles";
import { root } from "@lynx-js/react";
import { Chip, useSeedClassName } from "@seed-design/lynx-react";
function Root() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
console.log("정렬", value)}>
최신순
가까운 순
);
}
root.render();
```
### Sizes and Variants
React 버전과 동일하게 `size="small" | "medium" | "large"`와 `variant="solid" | "outlineStrong" | "outlineWeak"`를 지원합니다.
```tsx
import "./styles";
import { root } from "@lynx-js/react";
import { Chip, useSeedClassName } from "@seed-design/lynx-react";
function Root() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
Small
Medium
Large
Solid
Outline Strong
Outline Weak
);
}
root.render();
```
### Affixes and Icon Only
`Chip.PrefixIcon`, `Chip.PrefixAvatar`, `Chip.SuffixIcon` 슬롯으로 앞뒤 콘텐츠를 배치할 수 있습니다. Lynx 아이콘은 `@seed-design/lynx-react`의 `Icon`, `PrefixIcon`, `SuffixIcon`과 `@karrotmarket/lynx-monochrome-icon` 요소를 사용합니다. `layout="iconOnly"`에서는 `Icon` 자식과 `accessibility-label`을 함께 전달해야 합니다.
```tsx
import "./styles";
import IconChevronRightFill from "@karrotmarket/lynx-monochrome-icon/IconChevronRightFill";
import IconPlusFill from "@karrotmarket/lynx-monochrome-icon/IconPlusFill";
import { root } from "@lynx-js/react";
import { Chip, Icon, useSeedClassName } from "@seed-design/lynx-react";
function Root() {
const seedClassName = useSeedClassName({ colorMode: "system" });
return (
} />
추가
A
프로필
다음
} />
} />
);
}
root.render();
```
## 웹 버전과의 차이
Lynx `Chip`은 React `Chip`과 같은 Button, Toggle, Radio 구성과 size/variant 이름을 사용하지만 다음 차이가 있습니다.
- **렌더링 요소**: HTML `
## Lynx 미지원 기능
현재 Lynx 런타임 모델 차이로 다음 기능은 지원하지 않습니다.
| 기능 | 설명 |
| --------------------------------------- | -------------------------------------------- |
| HiddenInput / `inputProps` | Lynx에 HTML input과 form 제출 모델이 없습니다. |
| `name` / `required` / native form value | HTML form 속성을 연결할 대상이 없습니다. |
| raw DOM `onChange` | `onCheckedChange` 또는 `onValueChange`로 대체합니다. |
| 키보드 focus / `focusVisible` | Lynx에는 웹과 같은 키보드 focus 모델이 없습니다. |
| `asChild` | Lynx는 웹 Slot 기반 다형 렌더링을 지원하지 않습니다. |