Slider
Data Input
최솟값~최댓값 사이에서 단일 값을 선택하는 범용 슬라이더.
Usage
볼륨·밝기·굵기처럼 하나의 수치를 연속 구간에서 고를 때 라벨·값 표시·눈금·범위(thumb 2개)처럼 자유 조립이 필요하면 compound API(Slider.Root ~ Slider.Thumb)
import
import
Slider 하나만 가져오면 Slider.Root · Slider.Label · Slider.Control · Slider.Track · Slider.Range · Slider.Thumb · Slider.ValueText · Slider.MarkerGroup · Slider.Marker · Slider.HiddenInput 를 그 아래에서 쓸 수 있다.
예제를 복사해 쓸 때 필요한 준비
• @mildang/styled-system 은 이 저장소에서 Panda 가 생성하는 산출물이다. 저장소 안에서는 turbo run ship 이후 쓸 수 있고, 패키지 소비자는 자기 Panda 산출물이나 다른 레이아웃 수단으로 바꿔야 한다.
Anatomy
tsx
부품
필수 여부
반복
위치
SliderRoot
SliderLabel
SliderRoot 안에 둔다.
SliderControl
SliderRoot 안에 둔다.
SliderTrack
SliderControl 안에 둔다.
SliderRange
SliderTrack 안에 둔다.
SliderThumb
여러 개 가능
SliderControl 안에 둔다 — 범위는 index 0·1로 두 개 둔다.
SliderHiddenInput
SliderThumb 안에 둔다.
SliderMarkerGroup
SliderControl 안에 둔다.
SliderMarker
여러 개 가능
SliderMarkerGroup 안에 둔다.
SliderValueText
SliderRoot 안에 자유롭게 둔다.
- SliderControl 안에는 SliderTrack(+SliderRange)과 SliderThumb(+SliderHiddenInput)를 둔다.
- 범위(두 값)를 표현하려면 SliderThumb를 index 0·1로 두 개 둔다.
- 값 포맷을 직접 구성하려면 Slider.Context로 api.value를 읽어 SliderValueText children에 넣는다.
API Reference
Slider Props
Prop
Type
Default
string
지정 안 함
"primary.fill.base" | "neutral.fill.base" | "neutral.fill.high" | "warning.fill.base" | "info.fill.base" | "positive.fill.base" | "critical.fill.base" | "brand.fill.low" | "brand.fill.base" | "chip.fill.bg.brand" | "chip.fill.bg.neutral" | "chip.fill.bg.green" | "chip.fill.bg.orange" | "chip.fill.bg.blue" | "chip.fill.bg.red" | "chip.fill.fg.default" | "chip.fill.fg.icon" | "chip.fill.fg.text" | "chip.fill.fg.orange" | "primary.fill.low" | "colorPalette.fill.base" | "colorPalette.fill.high" | "colorPalette.fill.low" | "colorPalette.fill.bg.brand" | "colorPalette.fill.bg.neutral" | "colorPalette.fill.bg.green" | "colorPalette.fill.bg.orange" | "colorPalette.fill.bg.blue" | "colorPalette.fill.bg.red" | "colorPalette.fill.fg.default" | "colorPalette.fill.fg.icon" | "colorPalette.fill.fg.text" | "colorPalette.fill.fg.orange"
지정 안 함
number
지정 안 함
boolean
지정 안 함
string
지정 안 함
(value: number) => string
지정 안 함
string
지정 안 함
SliderMark[]
지정 안 함
number
100
number
0
string
지정 안 함
(value: number) => void
지정 안 함
(value: number) => void
지정 안 함
"horizontal" | "vertical"
지정 안 함
"end" | "start" | "center"
지정 안 함
boolean
지정 안 함
number
지정 안 함
boolean
지정 안 함
number
지정 안 함
SliderRoot
값 상태와 ark-ui 컨텍스트를 관리하는 최상위 컨테이너다.
공개 Props 없음
SliderLabel
슬라이더 이름을 보여주는 라벨이다.
공개 Props 없음
SliderControl
트랙과 thumb를 감싸는 상호작용 영역이다.
공개 Props 없음
SliderTrack
값 범위를 시각화하는 배경 막대다.
공개 Props 없음
SliderRange
현재 값(범위면 두 thumb 사이)만큼 채워지는 활성 구간이다.
공개 Props 없음
SliderThumb
드래그·키보드(↑↓←→)로 값을 바꾸는 손잡이다.
공개 Props 없음
SliderHiddenInput
폼 제출용 hidden input이다.
공개 Props 없음
SliderMarkerGroup
값 눈금(marker)을 감싸는 컨테이너다.
공개 Props 없음
SliderMarker
특정 값 위치의 눈금 하나다.
공개 Props 없음
SliderValueText
현재 값을 텍스트로 보여준다. children으로 포맷을 직접 구성할 수 있다.
공개 Props 없음
예제
기본 사용
value·onValueChange로 상태를 직접 들고 있는 제어 모드 기본형이다.
색상
color로 활성 구간·thumb 색을 fill 토큰 경로로 바꾼다. 미지정 시 neutral이다.
눈금(marks)
marks로 값 위치마다 점과 라벨을 표시한다.
Origin
origin이 range 채움 기준점을 정한다. center는 중앙부터 채워 밸런스·팬(-100~100)처럼 음수 구간에 적합하다.
값 툴팁
tooltip을 주면 드래그·포커스 중 thumb 위에 DS Tooltip으로 현재 값을 보여준다.
비활성
비활성 상태는 상호작용과 값 변경이 모두 막힌다.
읽기 전용
값 변경(키보드·드래그)만 막고 포커스·hover는 허용한다.
Step
step으로 증가 단위를 조정한다. 소수 step은 표시 자리수를 step에 맞춰 함께 보여준다.
세로 방향
orientation="vertical"이면 세로 트랙에 값 툴팁이 오른쪽으로 표시된다.
세로 + 눈금
세로 슬라이더의 값 눈금(dot)은 track 가로 중앙, 라벨은 오른쪽에 표시되며 아래(min)에서 위(max) 순으로 읽힌다.
세로 채널 여러 개
값·슬라이더·라벨을 세로로 쌓은 채널을 나란히 배치하는 믹서 형태 패턴이다.
앞뒤 라벨 + 값
슬라이더 앞뒤에 라벨과 현재 값을 함께 배치하는 실사용 패턴이다.
Compound — 라벨 + 값 표시
compound API로 Label(왼쪽)·ValueText(오른쪽) 헤더를 조립하고 아래 Control을 둔다.
코드
Compound — 범위(thumb 2개)
SliderThumb 2개로 범위를 표현한다. Range가 두 thumb 사이를 채우고, Slider.Context로 값 포맷(구분자·단위)을 자유롭게 구성한다. minStepsBetweenThumbs로 최소 간격을 줄 수 있다.
코드