Basic
Use a sheet for contextual controls that should appear beside the current page instead of replacing it.
Icons by @ng-icons/tabler-icons
The component library does not provide icons.
Edge-mounted dialog panels with sides, headers, descriptions, footers, scrollable content, programmatic opening, and RTL support.
Preview
TS
import { FrButtonModule } from '@frame-ui-ng/components/button';
import { FrInputModule } from '@frame-ui-ng/components/input';
import { FrSheetModule } from '@frame-ui-ng/components/sheet';HTML
<button frButton type="button" [frSheetTrigger]="sheet">
<span frButtonLabel>Open sheet</span>
</button>
<ng-template #sheet="frSheetContent" frSheetContent aria-label="Workspace settings">
<div frSheetPanel>
<div frSheetHeader>
<h2 frSheetTitle>Workspace settings</h2>
<p frSheetDescription>Keep related controls close without leaving the page.</p>
</div>
<div frSheetBody>
<label>
<span>Workspace name</span>
<input frInput value="Component library" />
</label>
</div>
<div frSheetFooter>
<button frButton appearance="outline" type="button" frSheetClose>
<span frButtonLabel>Cancel</span>
</button>
<button frButton type="button" [frSheetClose]="'saved'">
<span frButtonLabel>Save changes</span>
</button>
</div>
</div>
</ng-template>Use a sheet for contextual controls that should appear beside the current page instead of replacing it.
Use the side input to choose whether the sheet enters from the top, right, bottom, or left edge.
Hide the default close icon when the flow should resolve through explicit footer actions.
Set scrollable when a sheet contains long content but should keep the panel dimensions stable.
Open a sheet from code and let FrSheetConfig provide the shell title, description, footer actions, side, and body component inputs.
Pass the CDK direction through the sheet content and use logical placement for RTL layouts.
Override sheet tokens on a trigger, the panel, or an ancestor to tune the sheet surface, size, border, shadow, and spacing.
Open the sheet, then hover the trigger, panel, header, title, description, body, or footer to inspect the tokens behind each part.
Use these CSS custom properties to tune sheet backdrop, surface, sizing, spacing, close button states, and overlay layering.
SCSS
--frame-sheet-backdrop-blur: 2px;
--frame-sheet-backdrop-bg: rgb(0 0 0 / 0.5);
--frame-sheet-bg: var(--frame-background, #fff);
--frame-sheet-border: var(--frame-border, #e5e7eb);
--frame-sheet-color: var(--frame-foreground, #09090b);
--frame-sheet-muted-color: var(--frame-muted-foreground, #71717a);
--frame-sheet-shadow: 0 24px 80px rgb(0 0 0 / 0.2), 0 8px 24px rgb(0 0 0 / 0.14);
--frame-sheet-padding: 1.5rem;
--frame-sheet-gap: 1rem;
--frame-sheet-inline-size: min(100vw, 28rem);
--frame-sheet-block-size: min(100dvh, 28rem);
--frame-sheet-close-bg: transparent;
--frame-sheet-close-color: var(--frame-muted-foreground, #71717a);
--frame-sheet-close-hover-bg: var(--frame-muted, #f4f4f5);
--frame-sheet-close-hover-color: var(--frame-foreground, #09090b);
--frame-sheet-z-index: 1000;