Skip to content
UI Brok

Loading…

No results

Browse catalog

Slider

Numeric range controls — a compact draggable track (single or two-thumb range), an angle dial, a two-handle compare slider, a discrete pip/scrubber selector for settings panels, or a springy elastic slider that stretches past its bounds.

Slider

Preview

Volume 40%

Controls

Theme
Surface
Direction
Viewport

Device view renders in an isolated frame so real responsive breakpoints apply. Switch to Full for overflowing popovers.

Installation

terminal
php artisan ui:add slider

Behavior layer (Alpine)

This component installs a self-registering Alpine module to resources/js/ui/slider.js. Import the behavior layer once from your bundle so it loads (it hooks alpine:init):

resources/js/ui/index.js JS
import './slider.js';

Registry contract

Install confidence

php artisan ui:add slider writes only the generated targets below. The CLI validates each file hash before writing and prompts before replacing local changes unless --force is used.

Version
1.2.0
License
open
Stability
stable
Contract
v2
Foundation
≥ 1.0.0
Type Generated target
blade resources/views/components/ui/slider.blade.php
js resources/js/ui/slider.js

Registry dependencies

None.

Package dependencies

composer: jml/brok:^1.0

npm: alpinejs

Guidance

Continuous value control

Adjust an intuitive continuous value.

Use when

  • Use when continuous adjustment or immediate visual feedback helps users choose a value. Do not use for precise values or broad ranges without good landmarks; direct entry is better when accuracy matters.

Avoid when

  • Only use when approximate continuous adjustment is meaningful; pair it with direct entry when precision matters.
Task length
micro
Interaction cost
medium
Interruptiveness
none
Input precision
approximate
Mobile / touch risk
medium
Accessibility risk
high
Needs background context
No
Comparison needed
No

Preferred alternatives

  • Number field for precise entry
  • Select for discrete values

Anti-patterns

  • Using sliders for precise or unbounded values

API

manifest knowledge + registry-derived coverage

Props

Prop Type / values Default Description
name mixed|null null Declared by @props in the registry Blade source.
min int 0 Declared by @props in the registry Blade source.
max int 100 Declared by @props in the registry Blade source.
step int 1 Declared by @props in the registry Blade source.
value int 0 Declared by @props in the registry Blade source.
valueEnd mixed|null null Declared by @props in the registry Blade source.
range bool false Declared by @props in the registry Blade source.
showValue bool false Declared by @props in the registry Blade source.
valuePosition string top Declared by @props in the registry Blade source.
showSteps bool false Declared by @props in the registry Blade source.
label mixed|null null Declared by @props in the registry Blade source.
prefix string Declared by @props in the registry Blade source.
suffix string Declared by @props in the registry Blade source.
decimals int 0 Declared by @props in the registry Blade source.

Slots

Components use the default Blade slot unless a documented subcomponent is installed by the registry item.

Data slots

slider slider-control slider-range slider-thumb slider-track

Capabilities

wcag-2.2-aa-target interactive responsive rtl darkMode localized

Behavior

  • Uses server-rendered Blade and semantic HTML.
  • Installs a JavaScript behavior module when the registry item includes resources/js/ui files.
  • Declares registry capability flags: a11y, interactive, responsive, rtl, darkMode, localized.

Usage

previews.components.slider.default.blade.php Blade
<div class="w-80 max-w-full space-y-6">
    <x-ui.slider
        name="volume"
        label="{{ __('Volume') }}"
        :value="40"
        :step="10"
        show-value
        show-steps
        suffix="%"
    />

    <x-ui.slider
        name="price"
        label="{{ __('Price range') }}"
        range
        :value="20"
        :value-end="80"
        show-value
        value-position="tooltip"
        prefix="$"
    />
</div>

Accessibility & localization

WCAG 2.2 AA RTL-ready data-slot Keyboard focus-visible Localized labels
  • Accessibility target: wcag-2.2-aa-target.
  • Uses semantic HTML and a stable data-slot attribute for styling/scripting hooks.
  • Focus-visible rings use the ring token so keyboard focus is always visible.
  • Disabled and invalid states are conveyed to assistive tech, not by color alone.
  • Targets WCAG 2.2 AA; verify contrast in light, dark, admin and customer surfaces above.
  • Labels go through __() and the component uses logical properties (ms-*, text-start, start-*) so it mirrors correctly — flip the preview to RTL to confirm.

Source

The exact, editable file ui:add writes into your app — copy it or own the whole thing. Previews render this same code; there are no preview-only components.

Changelog

Current version: v1.2.0. See the site changelog for the full release history.