Select Dropdown Open
The list unfolds under the field, options a beat behind the panel, current choice already marked.
The animated component in this preview is rendered from the canonical file shown here. The surrounding demo shell only provides context and is not part of the copied code.
import { useEffect, useId, useRef, useState, type KeyboardEvent } from "react";
import { AnimatePresence, motion, useReducedMotion } from "motion/react";
/**
* Vibary · Select Dropdown Open
*
* The list unfolds under the field — panel first, options a beat behind
* it in a short cascade — with the current choice already marked, so theAbout this pattern
A replacement for the native select that keeps the native keyboard contract. The panel drops from just under the field and the rows follow it in a cascade short enough to feel like one movement, which gives the list a top and a bottom without anything having to scale — everything in a menu is text, and text that scales during an entrance smears. The current value is marked before the list settles, so the menu answers what the setting is now before it asks what it should be. Escape abandons, Enter commits, and focus returns to the field either way.
Where it shows up
Screens we drew to show where this motion usually sits. Illustrations, not captures of any product.
- Form
Opening onto the current value rather than onto the top of the list.
Related patterns
- Combobox Filter NarrowTyping fades out the options that no longer match while the survivors slide up.
- Inline Edit SwapA value becomes a field where it sits: the surface arrives around the words and the row never changes size.
- Search Input ExpandA search icon opens into a full field while the controls beside it give up the space.