MicroClub Slider
mcoli-ui-registry/mc-sliderFreeComponent
A slider component for MicroClub UI
Live preview
live · rendered by the registry
Rendered by mcoli-ui-registry on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://mcoli-ui.microclub.info/r/mc-slider.jsonSource
1import * as React from 'react';2import { Slider as SliderPrimitive } from '@base-ui/react/slider';34import { cn } from '@/lib/utils';56function McSlider({7 className,8 defaultValue,9 value,10 min = 0,11 max = 100,12 showValue = true,13 border = false,14 unity,15 onValueChange,16 ...props17}: SliderPrimitive.Root.Props & {18 showValue?: boolean;19 border?: boolean;20 unity?: string;21}) {22 const isControlled = value !== undefined;2324 const [internalValues, setInternalValues] = React.useState<number[]>(25 Array.isArray(defaultValue) ? defaultValue : [min]26 );2728 const values = isControlled ? (Array.isArray(value) ? value : [value]) : internalValues;2930 return (31 <SliderPrimitive.Root32 className={cn('data-horizontal:w-full data-vertical:h-full mt-12', className)}33 data-slot="slider"34 defaultValue={defaultValue}35 value={value}36 min={min}37 max={max}38 thumbAlignment="edge-client-only"39 onValueChange={(newValues, event) => {40 if (!isControlled) {41 setInternalValues(Array.isArray(newValues) ? newValues : [newValues]);42 }43 onValueChange?.(newValues, event);44 }}45 {...props}46 >47 <SliderPrimitive.Control className="relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col">48 <SliderPrimitive.Track49 data-slot="slider-track"50 className="relative grow overflow-hidden rounded-full bg-muted ring-1 ring-inset ring-ring select-none data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1"51 >52 <SliderPrimitive.Indicator53 data-slot="slider-range"54 className="bg-primary select-none data-horizontal:h-full data-vertical:w-full"55 />56 </SliderPrimitive.Track>5758 {values.map((currentValue, index) => (59 <SliderPrimitive.Thumb60 key={index}61 data-slot="slider-thumb"62 className="group relative block size-3 shrink-0 rounded-full border-2 border-primary bg-muted ring-accent-foreground backdrop-blur-3xl transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 active:bg-primary disabled:pointer-events-none disabled:opacity-50 disabled:bg-blue-500"63 >64 {showValue && (65 <div66 className={cn(67// … truncated
What it pulls in
npm packages
Files it writes
More from mcoli-ui-registry
All 42 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| MicroClub Accordionmc-accordion | mcoli-ui-registry | Components | Free | 2 deps | |
| MicroClub Alertmc-alert | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Alert Dialogmc-alert-dialog | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Avatarmc-avatar | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Badgemc-badge | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Breadcrumbmc-breadcrumb | mcoli-ui-registry | Components | Free | 2 deps | |
| MicroClub Buttonmc-button | mcoli-ui-registry | Components | Free | 2 deps | |
| MicroClub Calendarmc-calendar | mcoli-ui-registry | Components | Free | 3 deps |
