# Chip URL: /react/components/chip Source: https://github.com/daangn/seed-design/blob/dev/docs/content/react/components/chip.mdx 사용자가 선택하거나 입력하는 값을 표시하는 컴포넌트입니다. 사용 가능 버전: @seed-design/react@0.1.4, @seed-design/css@0.1.4 ## Preview ```tsx import { HStack, VStack } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; export default function ChipPreview() { return ( Button Chip Toggle Chip Radio Chip 1 Radio Chip 2 ); } ``` ## Installation - npm: npx @seed-design/cli@latest add ui:chip - pnpm: pnpm dlx @seed-design/cli@latest add ui:chip - yarn: yarn dlx @seed-design/cli@latest add ui:chip - bun: bun x @seed-design/cli@latest add ui:chip ## Props ### `Chip.Button` ### `Chip.Toggle` ### `Chip.RadioRoot` ### `Chip.RadioItem` ## Examples ### Sizes #### Small ```tsx import { HStack, VStack } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; export default function ChipSmall() { return ( Small Button Small Toggle Small Radio 1 Small Radio 2 ); } ``` #### Medium ```tsx import { HStack, VStack } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; export default function ChipMedium() { return ( Medium Button Medium Toggle Medium Radio 1 Medium Radio 2 ); } ``` #### Large ```tsx import { HStack, VStack } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; export default function ChipLarge() { return ( Large Button Large Toggle Large Radio 1 Large Radio 2 ); } ``` ### Variants #### Solid ```tsx import { HStack, VStack } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; export default function ChipSolid() { return ( Solid Button Solid Toggle Solid Radio 1 Solid Radio 2 ); } ``` #### Outline Strong ```tsx import { HStack, VStack } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; export default function ChipOutlineStrong() { return ( Outline Strong Button Outline Strong Toggle Outline Strong Radio 1 Outline Strong Radio 2 ); } ``` #### Outline Weak ```tsx import { HStack, VStack } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; export default function ChipOutlineWeak() { return ( Outline Weak Button Outline Weak Toggle Outline Weak Radio 1 Outline Weak Radio 2 ); } ``` ### Prefix Icon ```tsx import { HStack, VStack, Icon } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; import { IconHeartFill } from "@karrotmarket/react-monochrome-icon"; export default function ChipPrefixIcon() { return ( } /> With Icon Button } /> With Icon Toggle } /> With Icon Radio 1 } /> With Icon Radio 2 ); } ``` ### Suffix Icon ```tsx import { HStack, VStack, Icon } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; import { IconChevronDownLine } from "@karrotmarket/react-monochrome-icon"; export default function ChipSuffixIcon() { return ( Button with Suffix } /> Toggle with Suffix } /> Radio with Suffix 1 } /> Radio with Suffix 2 } /> ); } ``` ### Icon Only ```tsx import { HStack, VStack, Icon } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; import { IconArrowClockwiseCircularLine, IconBellLine, IconBellSlashLine, IconTimer_10Line, IconTimer_3Line, } from "@karrotmarket/react-monochrome-icon"; import { useState } from "react"; export default function ChipIconOnly() { const [checked, setChecked] = useState(false); return ( } /> : } /> } /> } /> ); } ``` ### Prefix Avatar [Avatar](/react/components/avatar)와 함께 사용할 수 있습니다. ```tsx import { HStack, VStack } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; import { Avatar } from "seed-design/ui/avatar"; import { IdentityPlaceholder } from "seed-design/ui/identity-placeholder"; export default function ChipPrefixAvatar() { return ( } /> With Avatar Button } /> With Avatar Toggle } /> With Avatar Radio 1 } /> With Avatar Radio 2 ); } ``` ### Listening to Value Changes - `Chip.Toggle` - `onCheckedChange`를 사용하여 토글 상태 변경을 감지할 수 있습니다. - 이벤트를 활용해야 하는 경우 `inputProps`를 통해 내부 `` 요소에 직접 이벤트 핸들러를 추가할 수 있습니다. - `Chip.RadioRoot` / `Chip.RadioItem` - `Chip.RadioRoot`의 `onValueChange`를 사용하여 라디오 버튼의 선택 값 변경을 감지할 수 있습니다. - 이벤트를 활용해야 하는 경우 `Chip.RadioItem`의 `inputProps`를 통해 내부 `` 요소에 직접 이벤트 핸들러를 추가할 수 있습니다. ```tsx import { HStack, VStack, Text } from "@seed-design/react"; import { Chip } from "seed-design/ui/chip"; import { useState } from "react"; export default function ChipValueChanges() { const [toggleCount, setToggleCount] = useState(0); const [toggleLastValue, setToggleLastValue] = useState(null); const [radioCount, setRadioCount] = useState(0); const [radioLastValue, setRadioLastValue] = useState(null); return ( { setToggleCount((prev) => prev + 1); setToggleLastValue(checked); }} > Toggle Chip onCheckedChange called: {toggleCount} times, last value: {`${toggleLastValue ?? "-"}`} { setRadioCount((prev) => prev + 1); setRadioLastValue(value); }} > Radio 1 Radio 2 onValueChange called: {radioCount} times, last value: {radioLastValue ?? "-"} ); } ``` ## Migrating from ActionChip/ControlChip [Action Chip](/react/components/action-chip)과 [Control Chip](/react/components/control-chip)을 대체합니다. ### ActionChip → Chip.Button ```tsx // Before import { ActionChip } from "@seed-design/react"; Label // After import { Chip } from "@seed-design/react"; Label ``` ### ControlChip → Chip.Toggle ```tsx // Before import { ControlChip } from "@seed-design/react"; Label // After import { Chip } from "@seed-design/react"; Label ```