Negation Select
Open in playgroundStrike-through elimination. Pick what you definitely don't want — often easier than choosing what you do. Remaining scope is counted as you eliminate.
Preview
Usage
import { NegationSelect } from "@/components/socratic-ui/negation-select";
<NegationSelect
question="What do you definitely NOT need?"
options={[
{ title: "Complex onboarding" },
{ title: "Social features" },
]}
value={eliminated}
onChange={setEliminated}
/>
API Reference
| Prop | Type | Default |
|---|---|---|
questionrequiredThe headline shown above the options. | string | — |
subtitleOptional supporting copy beneath the question. | string | — |
optionsrequiredThe list of options the user can eliminate. | { title: string; subtitle?: string }[] | — |
valuerequiredTitles of the options the user has eliminated. | string[] | — |
onChangerequiredCalled when eliminations change. Tap a crossed-out item to restore it. | (value: string[]) => void | — |
numberOptional leading question number. | string | — |
iconLayoutHow icons align relative to their label. `vertical` stacks icon above label for a tile-style layout. | "horizontal" | "vertical" | "horizontal" |
iconAlignmentHorizontal alignment of the icon within its slot. Only applies when `iconLayout` is `"vertical"`. | "left" | "center" | "left" |
motionOpt-in entrance animation config. Omit for static rendering; pass `{ enabled: true }` (or a preset from `motion.ts`) to animate in on mount. | SocraticMotion | — |