Обзор
Компоненты
- Accordion
- Alert
- Alert Dialog
- Autocomplete
- Auth Surface
- Avatar
- Badge
- Browse Catalog Dialog
- Button
- Card
- Checkbox
- Checkbox Group
- Collapsible
- Combobox
- Command
- Connector Setup Dialog
- Cookie Banner
- Dialog
- Directory Card
- Directory Detail
- Directory Skeleton
- DrawerНовое
- Token Parts Input
- Empty
- Field
- Fieldset
- File Preview Modal
- File Preview Skeleton
- Form
- Frame
- Group
- Icon
- Input
- Input Group
- Kbd
- Label
- Legal Shell
- Menu
- Mermaid Diagram
- Mind Map Diagram
- Not Found Screen
- Onboarding Frame
- Popover
- PDF Thumbnail
- Personalization Landing
- Preview Card
- Pricing Page
- Progress
- Radio Group
- Ring Spinner
- Scroll Area
- Select
- Separator
- Settings Page
- Settings Skills
- Settings Connectors
- Settings Capabilities
- Settings Usage
- Settings Account
- Settings Billing
- Sheet
- Sidebar
- Skeleton
- Skill Create Dialog
- Slider
- Spinner
- Stat
- Switch
- Table
- Tabs
- Textarea
- Toast
- Toggle
- Tooltip
AI-компоненты
- Компоненты AI
- Chat Conversation
- Chat Message
- Chat Response
- Chat Suggestion
- Chat Prompt Input
- Slash Highlighted Textarea
- Chat Search Dialog
- Chat Skill Doc
- Chat Connector Detail
- Chat Attachments
- Chat File Card
- Chat Token Chip
- Chat Code Block
- Chat Image
- Chat Inline Citation
- Chat Sources
- Chat Web Search
- Chat Research
- Chat Source
- Chat Actions
- Chat Context
- Chat Loader
- Chat Compaction
- Chat Timeline
- Chat Snippet
- Chat Terminal
- Chat Stack Trace
- Chat Test Results
- Chat File Tree
- Chat Environment Variables
- Chat Audio Player
- Chat Transcription
- Chat Speech Input
- Chat Mic Selector
- Chat Voice Selector
- Chat Agent
- Chat Persona
- Chat Connection
- Chat Connector Suggestion
- Chat Queue
- Chat Checkpoint
- Chat Confirmation
- Chat Artifact
- Chat JSX Preview
- Chat Schema Display
- Chat Package Info
- Chat Commit
- Chat Plan
- Chat Open In Chat
- Chat Sandbox
- Chat Model Selector
- Chat Canvas
- Chat Node
- Chat Edge
Ресурсы
Slider
Элемент ввода, в котором пользователь выбирает значение из заданного диапазона.
import { Slider } from "@/components/ui/slider";
export default function Particle() {
return <Slider defaultValue={50} />;
}
Установка
pnpm dlx shadcn@latest add @oracul/slider
Использование
import { Slider, SliderValue } from "@/components/ui/slider"<Slider />Справочник API
Slider
Корневой компонент. Стилизованная обёртка для Slider.Root из Base UI со значениями min/max по умолчанию и ползунками, выровненными по краю.
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
min | number | 0 | Минимальное значение слайдера |
max | number | 100 | Максимальное значение слайдера |
Примечание: По умолчанию компонент задаёт thumbAlignment="edge", что выравнивает ползунки по краю дорожки, а не центрирует их.
SliderValue
Отображает текущее значение. Стилизованная обёртка для Slider.Value из Base UI.
Примеры
Для доступной разметки и валидации предпочтительно использовать компонент Field для обёртки чекбоксов. См. соответствующий пример: Поле слайдера.
С меткой и значением
import { Field, FieldLabel } from "@/components/ui/field";
import { Slider, SliderValue } from "@/components/ui/slider";
export default function Particle() {
return (
<Field>
<Slider defaultValue={50}>
<div className="mb-2 flex items-center justify-between gap-1">
<FieldLabel className="font-medium text-sm">
Непрозрачность
</FieldLabel>
<SliderValue />
</div>
</Slider>
</Field>
);
}
Слайдер диапазона
import { Slider } from "@/components/ui/slider";
export default function Particle() {
return <Slider defaultValue={50} disabled />;
}
Вертикальный
5 ГБ20 ГБ35 ГБ
import { Slider } from "@/components/ui/slider";
export default function Particle() {
return (
<div>
<Slider
aria-label="Объём хранилища в ГБ"
defaultValue={15}
max={35}
min={5}
/>
<div
aria-label="Опорные значения объёма хранилища"
className="mt-4 flex w-full items-center justify-between gap-1 font-medium text-muted-foreground text-xs"
role="group"
>
<span>5 ГБ</span>
<span>20 ГБ</span>
<span>35 ГБ</span>
</div>
</div>
);
}
Интеграция с формой
0123456789101112
import { cn } from "@/lib/utils";
import { Slider } from "@/components/ui/slider";
const max = 12;
const skipInterval = 2;
const ticks = [...Array(max + 1)].map((_, i) => i);
export default function Particle() {
return (
<div>
<Slider aria-label="Выбор значения" defaultValue={5} max={max} />
<div
aria-label="Шкала значений от 0 до 12"
className="mt-3 flex w-full items-center justify-between gap-1 px-2.5 font-medium text-muted-foreground text-xs"
role="group"
>
{ticks.map((_, i) => (
<span
className="flex w-0 flex-col items-center justify-center gap-2"
key={String(i)}
>
<span
className={cn(
"h-1 w-px bg-muted-foreground/72",
i % skipInterval !== 0 && "h-0.5",
)}
/>
<span className={cn(i % skipInterval !== 0 && "opacity-0")}>
{i}
</span>
</span>
))}
</div>
</div>
);
}