{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "slider",
  "type": "registry:ui",
  "title": "Slider",
  "description": "Slider built on Base UI; the thumb swells when grabbed.",
  "dependencies": [
    "@base-ui/react",
    "motion"
  ],
  "registryDependencies": [
    "https://seamui.dev/r/utils.json",
    "https://seamui.dev/r/motion.json",
    "https://seamui.dev/r/haptics.json"
  ],
  "files": [
    {
      "path": "registry/seam/ui/slider.tsx",
      "content": "\"use client\"\n\nimport type * as React from \"react\"\nimport { Slider as BaseSlider } from \"@base-ui/react/slider\"\nimport { motion } from \"motion/react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { springs, fades, depth, reduced, useReducedMotion } from \"@/lib/motion\"\nimport { useHaptics } from \"@/lib/haptics\"\n\nconst MotionThumb = motion.create(BaseSlider.Thumb)\n\nfunction Slider({\n  className,\n  onValueCommitted,\n  ...props\n}: React.ComponentProps<typeof BaseSlider.Root>) {\n  const reduceMotion = useReducedMotion()\n  const { trigger } = useHaptics()\n\n  return (\n    <BaseSlider.Root\n      data-slot=\"slider\"\n      className={cn(\"relative w-full touch-none select-none\", className)}\n      // tactile feedback: a tick as the value lands (no-op sans provider).\n      onValueCommitted={(\n        ...args: Parameters<NonNullable<typeof onValueCommitted>>\n      ) => {\n        trigger(\"tick\")\n        onValueCommitted?.(...args)\n      }}\n      {...props}\n    >\n      <BaseSlider.Control className=\"flex w-full items-center py-2\">\n        <BaseSlider.Track\n          data-slot=\"slider-track\"\n          className=\"bg-muted relative h-1.5 w-full grow overflow-hidden rounded-full\"\n        >\n          <BaseSlider.Indicator\n            data-slot=\"slider-indicator\"\n            className=\"bg-primary absolute h-full rounded-full\"\n          />\n        </BaseSlider.Track>\n        <MotionThumb\n          data-slot=\"slider-thumb\"\n          className=\"bg-card block size-4 rounded-full border border-primary/60 shadow-resting outline-none focus-visible:ring-2 focus-visible:ring-ring/50\"\n          // seam motion: the thumb swells slightly when grabbed.\n          whileTap={reduceMotion ? reduced.pressed : depth.raised}\n          transition={reduceMotion ? fades.fast : springs.snappy}\n        />\n      </BaseSlider.Control>\n    </BaseSlider.Root>\n  )\n}\n\nexport { Slider }\n",
      "type": "registry:ui",
      "target": "components/ui/slider.tsx"
    }
  ]
}