Sheet
Sheet
A secondary surface that animates over primary content from a specific edge.
$ npx verticallyworks add sheetShould a sheet animate from screen geometry (edges) or reading direction (where the reader came from)?
DecisionAnimation origin communicates spatial relationship. Bottom feels like a new layer. Right (in RTL) travels against reading direction. Left follows reading direction.
Edge comparison
Screen geometry. Feels like a new layer · natural on horizontal phones, ambiguous in vertical context.
Source
The exact file npx verticallyworks add sheet copies into your project · yours to edit. Styling comes entirely from the design tokens.
Guidance
- Choose animation direction based on semantic relationship to content
- Use spring easing with slightly higher stiffness than horizontal equivalents
- Always provide a visible dismiss handle and Escape key support
- Animate from the right in an RTL interface · it travels against reading flow
- Open sheets with fade only · directional entry communicates spatial relationship
- Use sheets for content that needs to be compared with what's behind it
Accessibility
role='dialog', aria-modal='true'. Focus trapped. Dismiss via Escape. Focus returns to trigger on close.
Should chapter-level navigation sheets enter from the right (where the next chapter is) or the bottom (new layer)? Both are defensible.