Switch

Switch

체크박스의 대안으로 사용하는 토글 스위치 컴포넌트예요.

출처: 문서

본문

켜짐/꺼짐 같은 이진 상태를 토글할 때 사용하는 스위치예요.

<Switch defaultChecked />

이 컴포넌트는 Switch primitive의 props를 상속받으며, 공통 margin props를 지원해요.

Prop Type Default
size Responsive<"1" | "2" | "3"> "2"
variant "classic" | "surface" | "soft" "surface"
color enum No default value
highContrast boolean No default value
radius "none" | "small" | "medium" | "large" | "full" No default value

예시 (Examples)

Size

size prop으로 스위치의 크기를 제어할 수 있어요.

<Flex align="center" gap="2">
  <Switch size="1" defaultChecked />

  <Switch size="2" defaultChecked />

  <Switch size="3" defaultChecked />
</Flex>

Variant

variant prop으로 스위치의 시각적 스타일을 제어할 수 있어요.

<Flex gap="2">
  <Flex direction="column" gap="3">
    <Switch variant="surface" />

    <Switch variant="classic" />

    <Switch variant="soft" />
  </Flex>

  <Flex direction="column" gap="3">
    <Switch variant="surface" defaultChecked />

    <Switch variant="classic" defaultChecked />

    <Switch variant="soft" defaultChecked />
  </Flex>
</Flex>

Color

color prop으로 특정 색상을 지정할 수 있어요.

<Flex gap="2">
  <Switch color="indigo" defaultChecked />

  <Switch color="cyan" defaultChecked />

  <Switch color="orange" defaultChecked />

  <Switch color="crimson" defaultChecked />
</Flex>

High-contrast

highContrast prop으로 라이트 모드에서 색 대비를 높일 수 있어요.

<Grid rows="2" gapX="2" gapY="3" display="inline-grid" flow="column">
  <Switch color="indigo" defaultChecked />

  <Switch color="indigo" defaultChecked highContrast />

  <Switch color="cyan" defaultChecked />

  <Switch color="cyan" defaultChecked highContrast />

  <Switch color="orange" defaultChecked />

  <Switch color="orange" defaultChecked highContrast />

  <Switch color="crimson" defaultChecked />

  <Switch color="crimson" defaultChecked highContrast />

  <Switch color="gray" defaultChecked />

  <Switch color="gray" defaultChecked highContrast />
</Grid>

Radius

radius prop으로 특정 둥근 모서리 값을 지정할 수 있어요.

<Flex gap="3">
  <Switch radius="none" defaultChecked />

  <Switch radius="small" defaultChecked />

  <Switch radius="full" defaultChecked />
</Flex>

Alignment

Switch를 Text 안에 구성하면 첫 번째 텍스트 줄과 자동으로 수직 가운데 정렬돼요.

<Flex direction="column" gap="3">
  <Text as="label" size="2">
    <Flex gap="2">
      <Switch size="1" defaultChecked /> Sync settings
    </Flex>
  </Text>

  <Text as="label" size="3">
    <Flex gap="2">
      <Switch size="2" defaultChecked /> Sync settings
    </Flex>
  </Text>

  <Text as="label" size="4">
    <Flex gap="2">
      <Switch size="3" defaultChecked /> Sync settings
    </Flex>
  </Text>
</Flex>

여러 줄 텍스트와도 자동으로 잘 정렬돼요.

Disabled

기본 disabled 속성을 사용해 비활성화된 스위치를 만들 수 있어요.

<Flex direction="column" gap="2">
  <Text as="label" size="2">
    <Flex gap="2">
      <Switch size="1" />
      Off
    </Flex>
  </Text>

  <Text as="label" size="2">
    <Flex gap="2">
      <Switch size="1" defaultChecked />
      On
    </Flex>
  </Text>

  <Text as="label" size="2" color="gray">
    <Flex gap="2">
      <Switch size="1" disabled />
      On
    </Flex>
  </Text>

  <Text as="label" size="2" color="gray">
    <Flex gap="2">
      <Switch size="1" disabled defaultChecked />
      Off
    </Flex>
  </Text>
</Flex>

더 알아보기 (Learn more)

  • 체크박스와 비슷한 이진 선택이지만, 시각적으로 토글 스위치 형태가 필요한 설정 UI에 잘 어울려요.