Skip to content
LuoForge/Tungsten
← All recipes

Price-range filter

A two-thumb Slider for selecting a bounded range — the canonical price/value filter, with both ends echoed in a live readout.

Preview

Price$25 – $75

Source

apps/docs/app/recipes/slider-range/recipe.tsx
'use client';

import { useState } from 'react';
import { Slider } from '@hey-mike/tungsten';

export default function SliderRangeRecipe() {
  const [range, setRange] = useState<[number, number]>([25, 75]);
  return (
    <div className="w-72">
      <div className="mb-2 flex items-baseline justify-between">
        <span className="text-ink-1 text-sm font-medium">Price</span>
        <span className="text-ink-2 text-sm tabular-nums">
          ${range[0]} – ${range[1]}
        </span>
      </div>
      <Slider
        label="Price"
        value={range}
        min={0}
        max={100}
        onValueChange={(v) => setRange(v as [number, number])}
      />
    </div>
  );
}
'use client';

import { useState } from 'react';
import { Slider } from '@hey-mike/tungsten';

export default function SliderRangeRecipe() {
  const [range, setRange] = useState<[number, number]>([25, 75]);
  return (
    <div className="w-72">
      <div className="mb-2 flex items-baseline justify-between">
        <span className="text-ink-1 text-sm font-medium">Price</span>
        <span className="text-ink-2 text-sm tabular-nums">
          ${range[0]} – ${range[1]}
        </span>
      </div>
      <Slider
        label="Price"
        value={range}
        min={0}
        max={100}
        onValueChange={(v) => setRange(v as [number, number])}
      />
    </div>
  );
}