DocumentationInterest Picker

Interest Picker

An interactive interest selection component with animated marquee rows of tags. Users can select interests that animate and fly to the selection area. Perfect for onboarding flows and user preference screens.

Tell us about your interests

Select atleast 5 interests

0

Install using CLI

npx shadcn@latest add "https://obsidianui.dev/r/interest-picker.json"

Install Manually

1

Install dependencies

npm install framer-motion lucide-react clsx tailwind-merge
2

Copy the source code

Copy into components/ui/interest-picker.tsx

Note: This is a large component (370+ lines). Install via CLI for the full source code with all animations and marquee logic.

Props

Prop NameTypeDefaultDescription
interestsInterest[][...defaults]Array of interest items with id, name, and icon
showEmptySlotbooleanfalseShow empty slots for selected items
onSubmit(interests) => Promise<void>-Callback when interests are submitted

Features

  • 🎯 Animated Selection - Items fly to selection area with spring physics
  • 📜 5-Row Marquee - Scrollable rows with gradient fade edges
  • 35+ Built-in Interests - Pre-configured options with Lucide icons
  • 🔄 Deselect Support - Click selected items to remove them
  • Validation - Requires minimum 5 selections before submit