# Segmented Control URL: /react/components/segmented-control Source: https://github.com/daangn/seed-design/blob/dev/docs/content/react/components/segmented-control.mdx 여러 옵션 중 하나를 선택하여 관련 콘텐츠를 즉시 필터링하거나 전환할 때 사용하는 컴포넌트입니다. 사용 가능 버전: @seed-design/react@0.0.1, @seed-design/css@0.0.1 ## Preview ```tsx import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control"; export default function SegmentedControlPreview() { return ( Hot New ); } ``` ## Installation - npm: npx @seed-design/cli@latest add ui:segmented-control - pnpm: pnpm dlx @seed-design/cli@latest add ui:segmented-control - yarn: yarn dlx @seed-design/cli@latest add ui:segmented-control - bun: bun x @seed-design/cli@latest add ui:segmented-control ## Props ### `SegmentedControl` `value`와 `defaultValue` 중 적어도 하나를 제공해야 합니다. ### `SegmentedControlItem` ## Examples ### Disabled ```tsx import { VStack } from "@seed-design/react"; import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control"; export default function SegmentedControlPreview() { return ( Hot New Marinara Alfredo Pesto Carbonara Bolognese ); } ``` ### Notification ```tsx import { ActionButton, VStack } from "@seed-design/react"; import { useState } from "react"; import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control"; export default function SegmentedControlNotification() { const [sortBy, setSortBy] = useState("monthly"); const [hasSeenAnnual, setHasSeenAnnual] = useState(false); return ( { setSortBy(value); if (value === "annual") setHasSeenAnnual(true); }} > Monthly Annual Enterprise Custom setHasSeenAnnual(false)} > Reset Notification ); } ``` ### Long Label ```tsx import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control"; export default function SegmentedControlLongLabel() { return ( 가격 높은 순 할인율 높은 순 인기 많은 순 ); } ``` ### Fixed Width `SegmentedControl`의 `style` prop에 `width`를 제공해서 직접 너비를 설정할 수 있습니다. ```tsx import { VStack } from "@seed-design/react"; import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control"; export default function SegmentedControlFixedWidth() { return ( New Hot One Way Trip Round Trip Multi-City Journey ); } ``` ### Listening to Value Changes `SegmentedControl`의 `onValueChange` prop을 사용하여 선택 값 변경을 감지할 수 있습니다. 이벤트를 활용해야 하는 경우 `SegmentedControlItem`의 `inputProps`를 통해 내부 `` 요소에 직접 이벤트 핸들러를 추가할 수 있습니다. ```tsx import { VStack, Text } from "@seed-design/react"; import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control"; import { useState } from "react"; export default function SegmentedControlValueChanges() { const [count, setCount] = useState(0); const [lastValue, setLastValue] = useState(null); return ( { setCount((prev) => prev + 1); setLastValue(value); }} > Hot New onValueChange called: {count} times, last value: {lastValue ?? "-"} ); } ```