Featuring Design System
Legacy

CoreSelect

레거시 셀렉트 컴포넌트. Select로 마이그레이션을 권장합니다.

개요

마이그레이션 안내 — 이 컴포넌트는 레거시입니다. 신규 프로젝트에서는 Select를 사용하세요.

CoreSelect는 label, helper text, validation 상태를 내장한 단일 컴포넌트 기반 드롭다운 셀렉트입니다.

  • 3가지 sizesm, md, lg
  • 3가지 statusnone, warning, error
  • CoreSelect.Item — 자식 컴포넌트로 옵션 구성
  • leadingElement / secondaryLabel — 입력 영역 앞뒤 커스텀 요소
  • 다중 선택 — 체크박스 Item 조합으로 구현
  • dropdownZIndex — 드롭다운 레이어 순서 제어

Usage

기본 사용법

<CoreSelect size="lg" width="240px">
<CoreSelect.Item value="1">옵션 1</CoreSelect.Item>
<CoreSelect.Item value="2">옵션 2</CoreSelect.Item>
<CoreSelect.Item value="3">옵션 3</CoreSelect.Item>
</CoreSelect>

Label과 Helper Text

<VStack $css={{ gap: '16px' }}>
<CoreSelect label="카테고리" size="lg" width="240px">
  <CoreSelect.Item value="1">옵션 1</CoreSelect.Item>
  <CoreSelect.Item value="2">옵션 2</CoreSelect.Item>
</CoreSelect>
<CoreSelect label="카테고리" size="lg" width="240px" helperText="항목을 선택하세요">
  <CoreSelect.Item value="1">옵션 1</CoreSelect.Item>
  <CoreSelect.Item value="2">옵션 2</CoreSelect.Item>
</CoreSelect>
</VStack>

Status와 Validation Text

<VStack $css={{ gap: '16px' }}>
<CoreSelect size="lg" width="240px" status="warning" validationText="선택을 확인하세요">
  <CoreSelect.Item value="1">옵션 1</CoreSelect.Item>
  <CoreSelect.Item value="2">옵션 2</CoreSelect.Item>
</CoreSelect>
<CoreSelect size="lg" width="240px" status="error" validationText="필수 항목입니다">
  <CoreSelect.Item value="1">옵션 1</CoreSelect.Item>
  <CoreSelect.Item value="2">옵션 2</CoreSelect.Item>
</CoreSelect>
</VStack>

Leading Element

<CoreSelect size="lg" width="240px" leadingElement={<IconSearchOutline />}>
<CoreSelect.Item value="1">옵션 1</CoreSelect.Item>
<CoreSelect.Item value="2">옵션 2</CoreSelect.Item>
</CoreSelect>

비활성화 및 읽기 전용

<VStack $css={{ gap: '16px' }}>
<CoreSelect label="비활성" size="lg" width="240px" disabled>
  <CoreSelect.Item value="1">옵션 1</CoreSelect.Item>
</CoreSelect>
<CoreSelect label="읽기 전용" size="lg" width="240px" readOnly>
  <CoreSelect.Item value="1">옵션 1</CoreSelect.Item>
</CoreSelect>
</VStack>

Checkbox 다중 선택

<CoreSelect size="lg" width="240px">
<CoreSelect.Item value="react">
  <CoreCheckbox label="React" />
</CoreSelect.Item>
<CoreSelect.Item value="vue">
  <CoreCheckbox label="Vue" />
</CoreSelect.Item>
<CoreSelect.Item value="svelte">
  <CoreCheckbox label="Svelte" />
</CoreSelect.Item>
</CoreSelect>

Props

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

Prop

Type

CoreSelectSize

Prop

Type

CoreSelectStatus

Prop

Type

스타일

Size Variants — 트리거 컨테이너

SizeMin HeightTypography
sm28pxbody[1]
md32pxbody[2]
lg40pxbody[2]

Status — 테두리 색상

StatusBorder Color
noneborder[1] (포커스 시 primary[50])
warningsupport-warning[3]
errorsupport-error[3]

States — 상태별 토큰

상태배경색커서
Defaultbackground-1pointer
Hoverbackground-2pointer
Readonlybackground[4]auto
Disabledbackground[4]not-allowed

마이그레이션 가이드

Select는 Dropdown visual layer와 분리된 Compound composition 구조입니다.

Before / After

// Before (CoreSelect)
<CoreSelect
  label="카테고리"
  size="lg"
  width="240px"
  status="error"
  validationText="필수 항목입니다"
  setValue={setValue}
>
  <CoreSelect.Item value="1">옵션 1</CoreSelect.Item>
  <CoreSelect.Item value="2">옵션 2</CoreSelect.Item>
</CoreSelect>
// After (Select)
<Select.Root value={value} onValueChange={setValue}>
  <Select.Trigger size="lg" style={{ width: 240 }}>
    <Select.Value placeholder="선택하세요" />
  </Select.Trigger>
  <Select.Popup>
    <Select.Item value="1">옵션 1</Select.Item>
    <Select.Item value="2">옵션 2</Select.Item>
  </Select.Popup>
</Select.Root>

라벨과 유효성 메시지는 Field 컴포넌트와 조합해서 사용하세요.

변경 사항

CoreSelectSelect + Field
label propField.Label
status + validationTextField.Message (status에 따라 error/warning 색상 자동 적용)
helperTextField.HelperText
setValueSelect.RootonValueChange
CoreSelect.ItemSelect.Item
optionHeight / optionWidthSelect.Popupstyle