Slider Field

PreviousNext

A component for Wandry UI

Docs
wandry-uicomponent

Preview

Loading preview…
registry/wandry-ui/slider-field.tsx
"use client";
import * as React from "react";
import { useField } from "@wandry/inertia-form";

import { Root as SliderPrimitiveRoot } from "@radix-ui/react-slider";

import { Field, FieldDescription, FieldLabel } from "@/components/ui/field";
import { Slider } from "@/components/ui/slider";

export type SliderFieldProps = Omit<
  React.ComponentProps<typeof SliderPrimitiveRoot>,
  "onValueChange" | "value"
> & {
  name: string;
  label?: string;
  description?: string;
  errorName?: string;
  defaultValue?: number[];
};

const SliderField: React.FC<SliderFieldProps> = ({
  name,
  label,
  description,
  errorName,
  defaultValue = [0],
  ...props
}) => {
  const field = useField(name, { defaultValue, errorName });

  return (
    <Field>
      <FieldLabel>{label}</FieldLabel>

      <Slider
        {...props}
        aria-label={label}
        onValueChange={field.onChange}
        value={field.value}
      />
      <FieldDescription>{description}</FieldDescription>
    </Field>
  );
};

export default SliderField;

Installation

npx shadcn@latest add @wandry-ui/slider-field

Usage

import { SliderField } from "@/components/slider-field"
<SliderField />