Featuring Design System
Legacy

CoreSegmentedControlGroup

세그먼트 컨트롤 그룹 컴포넌트

Usage

기본 사용법 (단일 선택)

import { useState } from 'react';
import { CoreSegmentedControlGroup, CoreSegmentedControl } from '@featuring-corp/components';

const [selected, setSelected] = useState('0');

<CoreSegmentedControlGroup 
  size="md"
  value={selected}
  onChange={(e, value) => setSelected(value)}
>
  <CoreSegmentedControl selected={selected === '0'} onClick={() => setSelected('0')}>
    Tab1
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected === '1'} onClick={() => setSelected('1')}>
    Tab2
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected === '2'} onClick={() => setSelected('2')} disabled>
    Tab3 (disabled)
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected === '3'} onClick={() => setSelected('3')}>
    Tab4
  </CoreSegmentedControl>
</CoreSegmentedControlGroup>

다중 선택

import { useState } from 'react';
import { CoreSegmentedControlGroup, CoreSegmentedControl } from '@featuring-corp/components';

const [selected, setSelected] = useState<string[]>([]);

const handleChange = (value: string) => {
  if (selected.includes(value)) {
    setSelected(selected.filter((item) => item !== value));
  } else {
    setSelected([...selected, value]);
  }
};

<CoreSegmentedControlGroup 
  size="md"
  multiple
  value={selected}
  onChange={(e, value) => handleChange(value)}
>
  <CoreSegmentedControl selected={selected.includes('0')} onClick={() => handleChange('0')}>
    Tab1
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected.includes('1')} onClick={() => handleChange('1')}>
    Tab2
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected.includes('2')} onClick={() => handleChange('2')} disabled>
    Tab3 (disabled)
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected.includes('3')} onClick={() => handleChange('3')}>
    Tab4
  </CoreSegmentedControl>
</CoreSegmentedControlGroup>

크기 설정

import { useState } from 'react';
import { CoreSegmentedControlGroup, CoreSegmentedControl } from '@featuring-corp/components';

const [selected, setSelected] = useState('0');

// Small
<CoreSegmentedControlGroup 
  size="sm"
  value={selected}
  onChange={(e, value) => setSelected(value)}
>
  <CoreSegmentedControl selected={selected === '0'} onClick={() => setSelected('0')}>
    Tab1
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected === '1'} onClick={() => setSelected('1')}>
    Tab2
  </CoreSegmentedControl>
</CoreSegmentedControlGroup>

// Medium
<CoreSegmentedControlGroup 
  size="md"
  value={selected}
  onChange={(e, value) => setSelected(value)}
>
  <CoreSegmentedControl selected={selected === '0'} onClick={() => setSelected('0')}>
    Tab1
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected === '1'} onClick={() => setSelected('1')}>
    Tab2
  </CoreSegmentedControl>
</CoreSegmentedControlGroup>

// Large
<CoreSegmentedControlGroup 
  size="lg"
  value={selected}
  onChange={(e, value) => setSelected(value)}
>
  <CoreSegmentedControl selected={selected === '0'} onClick={() => setSelected('0')}>
    Tab1
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected === '1'} onClick={() => setSelected('1')}>
    Tab2
  </CoreSegmentedControl>
</CoreSegmentedControlGroup>

세로 방향

import { useState } from 'react';
import { CoreSegmentedControlGroup, CoreSegmentedControl } from '@featuring-corp/components';

const [selected, setSelected] = useState('0');

<CoreSegmentedControlGroup 
  size="md"
  orientation="vertical"
  value={selected}
  onChange={(e, value) => setSelected(value)}
>
  <CoreSegmentedControl selected={selected === '0'} onClick={() => setSelected('0')}>
    Tab1
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected === '1'} onClick={() => setSelected('1')}>
    Tab2
  </CoreSegmentedControl>
  <CoreSegmentedControl selected={selected === '2'} onClick={() => setSelected('2')}>
    Tab3
  </CoreSegmentedControl>
</CoreSegmentedControlGroup>

Props

ComponentPropsWithoutRef<'div'> 타입을 확장한 컴포넌트입니다.

Prop

Type

CoreSegmentedControlGroupOrientation

Prop

Type

SegmentedControlSizeType

Prop

Type

스타일

기본 스타일 속성

Segmented Control Group:

  • display: flex
  • gap: spacing-100 (4px)
  • padding: spacing-100 (4px)
  • border-radius: radius-100
  • background-color: background-1
  • box-shadow: inset 0 0 0 1px border[1]
  • transition: 0.2s

Size Variants (Group)

  • sm: height: 26px
  • md: height: 32px
  • lg: height: 40px

Orientation Variants (Group)

  • horizontal: flex-direction: row (기본값)
  • vertical: flex-direction: column