Sheet primitives
Anatomy
The primitive tree separates state, trigger, portal, view, backdrop, content, and accessible labels.
The parts are separate so styling and composition can change without rewriting gesture, focus, and modality behavior.
Primitive tree
tsx
<Sheet.Root>
<Sheet.Trigger>Open</Sheet.Trigger>
<Sheet.Portal>
<Sheet.View side="bottom">
<Sheet.Backdrop />
<Sheet.Content>
<Sheet.Handle />
<Sheet.Title>Account</Sheet.Title>
<Sheet.Description>Manage your profile.</Sheet.Description>
<Sheet.Close>Done</Sheet.Close>
</Sheet.Content>
</Sheet.View>
</Sheet.Portal>
</Sheet.Root>Rootowns open and snap state.Trigger,Close, andStepexpress actions.Viewowns tracks, gestures, modality, and travel.Backdrophandles dimming and outside interaction.Contentis the authored surface.Outletanimates UI outside the portal.
What must remain intact
Forward refs through custom children, keep the real scroll element identifiable, and render Title even when it is visually hidden. Those three details prevent most integration failures.