@llamaindex/ui
Version:
A comprehensive UI component library built with React, TypeScript, and Tailwind CSS for LlamaIndex applications
71 lines (68 loc) • 2.39 kB
JavaScript
import { cn } from './chunk-MG2ARK3A.mjs';
import { __objRest, __spreadProps, __spreadValues } from './chunk-FWCSY2DS.mjs';
import * as React from 'react';
import * as SliderPrimitive from '@radix-ui/react-slider';
import { jsxs, jsx } from 'react/jsx-runtime';
function Slider(_a) {
var _b = _a, {
className,
defaultValue,
value,
min = 0,
max = 100
} = _b, props = __objRest(_b, [
"className",
"defaultValue",
"value",
"min",
"max"
]);
const _values = React.useMemo(
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
[value, defaultValue, min, max]
);
return /* @__PURE__ */ jsxs(
SliderPrimitive.Root,
__spreadProps(__spreadValues({
"data-slot": "slider",
defaultValue,
value,
min,
max,
className: cn(
"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
className
)
}, props), {
children: [
/* @__PURE__ */ jsx(
SliderPrimitive.Track,
{
"data-slot": "slider-track",
className: cn(
"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
),
children: /* @__PURE__ */ jsx(
SliderPrimitive.Range,
{
"data-slot": "slider-range",
className: cn(
"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
)
}
)
}
),
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
SliderPrimitive.Thumb,
{
"data-slot": "slider-thumb",
className: "border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
},
index
))
]
})
);
}
export { Slider };