Min/Max 듀얼-레인지 슬라이더 for DaisyUI (테마 인식)
Source: Dev.to
Problem
DaisyUI는 range 컴포넌트를 제공하지만 듀얼‑핸들(최소/최대) 슬라이더를 지원하지 않습니다.
이 제한은 다음과 같은 경우에 눈에 띕니다:
- 가격 필터
- 파싯 검색 인터페이스
- 대시보드
- 관리자 도구
진정한 최소/최대 슬라이더는 JavaScript가 필요합니다:
- 다중 썸(thumb)
- 값 제약
- 키보드 및 터치 인터랙션
- 접근성
Typical (Repetitive) Approach
- 슬라이더 라이브러리(보통 noUiSlider)를 도입한다.
- 생성된 DOM을 검사한다.
- DaisyUI와 일치하도록 스타일을 오버라이드한다.
- 설정을 다음 프로젝트에 복사한다(대부분 약간의 변형이 있음).
이 패턴은 동작하지만 반복적이며 프로젝트 간 재사용이 어렵습니다.
Solution: daisy-dual-range
DaisyUI 스타일링과 noUiSlider를 결합한 작은 통합 레이어입니다.
- 동작: noUiSlider에 의해 구동됩니다.
- 스타일링: DaisyUI CSS 변수(primary, accent, error 등)를 사용합니다.
- 범위: 스타일이 로컬에 스코프되어 전역 오버라이드가 없습니다.
- 특징:
- 기본적으로 듀얼‑핸들 슬라이더 제공.
- DaisyUI 토큰을 통해 테마 인식.
- 기본 DaisyUI range 입력과 시각적 일치.
- 테마가 변경될 때 자동으로 적용.
직접 컴포넌트를 연결할 수도 있지만, 패키지화된 솔루션을 사용하면 매번 통합을 새로 만들 필요가 없습니다.
Why This Matters
- DaisyUI 프로젝트에 적합한 슬라이더 라이브러리를 선택하기가 쉽지 않습니다.
- noUiSlider와 DaisyUI를 통합하려면 복잡한 CSS 작업이 필요합니다.
- 동일한 설정을 프로젝트마다 다시 구현하면 중복 작업이 발생합니다.
패턴을 한 번만 패키징하면 중복을 줄이고 일관된 테마‑인식 듀얼‑레인지 슬라이더를 제공할 수 있습니다.
Getting Started
<!-- Add your HTML markup for the range input here -->
// Initialize daisy-dual-range (pseudo‑code)
import { initDualRange } from 'daisy-dual-range';
initDualRange('#price-range', {
min: 0,
max: 1000,
start: [100, 900],
});
(Import 경로와 옵션은 라이브러리 문서에 제공된 대로 교체하세요.)
Conclusion
DaisyUI를 사용하면서 최소/최대 슬라이더가 필요할 때, daisy-dual-range 패키지는 간결하고 재사용 가능하며 테마‑인식 솔루션을 제공합니다.