Slider
Genel görünümimport { Slider, SliderValue } from '@nili/ui';Bu, kütüphanenin kendi genel görünüm sayfası — canlı olarak render ediliyor. Üstten dili veya temayı değiştirin, o da değişir.
Tek tutamak ve aralık
Değerin biçimi türün kendisidir: bir sayı tek tutamak, bir [number, number] bir aralık çizer. Aralık kaydırıcısına yanlışlıkla tek sayı verilemez.
import { Slider } from "@nili/ui"
export function Example() {
const [value, setValue] = useState(40)
const [range, setRange] = useState([20, 70])
return (
<>
<Slider
label="Volume"
value={value}
onValueChange={setValue}
showValue
/>
<Slider
label="Price"
value={range}
onValueChange={setRange}
showValue
/>
</>
)
}Etiket, alt etiket ve değer
label ray üzerinde görünmenin yanı sıra tutamakları da adlandırır. showValue geçerli sayıyı yanına koyar; sublabel soluk bir ikinci satır ekler.
import { Slider } from "@nili/ui"
export function Example() {
return (
<>
<Slider label={t('brightness')} defaultValue={60} />
<Slider label="Brightness" sublabel="Screen only" defaultValue={60} showValue />
{/* no visible label — name the thumbs instead */}
<Slider defaultValue={60} thumbLabels={["Brightness"]} />
</>
)
}İpucu balonu
tooltip sürüklerken değeri tutamağın üstünde bir baloncukta gösterir — kalıcı bir gösterge için yer yokken işe yarar.
import { Slider } from "@nili/ui"
export function Example() {
return <Slider label={t('opacity')} defaultValue={75} tooltip />
}Adımlar ve sınırlar
min, max ve step beklediğiniz gibi davranır. minStepsBetweenThumbs aralığın iki ucunun kesişmesini engeller.
import { Slider } from "@nili/ui"
export function Example() {
return (
<>
<Slider label="Rating" min={1} max={5} step={1} defaultValue={3} showValue />
<Slider label="Temperature" min={-20} max={50} step={5} defaultValue={20} showValue />
<Slider
label="Budget"
min={0}
max={1000}
step={50}
defaultValue={[200, 600]}
minStepsBetweenThumbs={2}
showValue
/>
</>
)
}Biçimlendirme
formatValue kullanıcının gördüğü ya da duyduğu her sayıyı değiştirir, yalnızca görüneni değil. Rakamlar varsayılan olarak ortam yerel ayarını izler; böylece Farsça bir arayüz Farsça rakamları bedavaya alır.
import { Slider } from "@nili/ui"
export function Example() {
return (
<>
<Slider
label="Storage"
max={500}
defaultValue={120}
showValue
formatValue={(value) => `${value} GB`}
/>
<Slider
label="Discount"
defaultValue={25}
showValue
formatValue={(value) => `${value}%`}
/>
</>
)
}Kesinleştirme ve devre dışı
onValueChange sürüklerken her adımda tetiklenir; onValueCommit yalnızca bir kez, işaretçi ya da tuş bırakıldığında. Pahalı her şey için ikincisini kullanın — sürüklemenin her pikseli için bir istek, bir kaydırıcının sunucuyu düşürmesinin olağan yoludur.
import { Slider } from "@nili/ui"
export function Example() {
return (
<>
<Slider
label="Results per page"
defaultValue={20}
max={100}
step={10}
showValue
onValueCommit={(value) => refetch(value)}
/>
<Slider label="Disabled" defaultValue={40} disabled />
</>
)
}Slider
extends Omit< ComponentPropsWithoutRef<'div'>, 'onChange' | 'defaultValue' | 'color' >
Diğer proplar
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| value | SliderValue | — | Controlled value. A `number` renders one thumb, a `[number, number]` renders a range — the shape of the value *is* Figma's "Type", so a range slider cannot be handed a single number by accident. |
| defaultValue | SliderValue | 0 | |
| onValueChange | (value: SliderValue) => void | — | Fires on every step while dragging. |
| onValueCommit | (value: SliderValue) => void | — | Fires once, when the pointer or key is released. Use this for anything expensive — a request per pixel of drag is the usual way a slider takes a server down. |
| min | number | 0 | |
| max | number | 100 | |
| step | number | 1 | |
| minStepsBetweenThumbs | number | 0 | Smallest allowed gap between the two thumbs of a range. |
| disabled | boolean | false | |
| label | ReactNode | — | Visible label above the track. Also names the thumbs. Figma's "Label". |
| sublabel | ReactNode | — | Muted second line under the label. Figma's "Sublabel". |
| showValue | boolean | false | Shows the current value beside the label. Figma's "Edit Amount". |
| tooltip | boolean | false | Value bubble above the thumb while dragging. Figma's "Tooltip". |
| formatValue | (value: number) => string | — | Formats every number the user sees or hears. Defaults to localized digits. |
| locale | string | — | BCP-47 tag driving the digits (`'fa'` → Persian). Defaults to the ambient locale from `NiliProvider`. |
| dir | ltr | rtl | — | Forces the drag direction, overriding the ambient locale. Needed for a track whose axis is not the reading axis — a video timeline runs from the video's start to its end, which is not a sentence, so it is pinned `ltr` even in a Persian UI. Without this the CSS renders one way and the pointer maths mirrors the other, and the playhead jumps backwards. |
| thumbLabels | [string, string?] | — | Accessible names for the thumbs, when there is no visible `label`. |
| name | string | — | `name` for the hidden inputs, when the form is submitted natively. |
SliderHeader
dahiliSliderRange
dahiliSliderRoot
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| disabled | 'true' | 'false' | false |
SliderThumb
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| disabled | 'true' | 'false' | false |
SliderTooltip
dahiliSliderTrack
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| disabled | 'true' | 'false' | false |