App frame
ProThe shell every screen sits in: workspace, navigation with counts, the plan's seats and search; a bottom tab bar under 760px.
pnpm dlx shadcn@latest add @caliper/app-frameToday
Choose a place in the sidebar, or in the tab bar under 760px.
When to use #
Use it for
- A product with five to nine top-level places.
- You want screens to share one frame and one search.
Skip it when
- Marketing pages; use the blocks.
- Two or three places; a top bar with tabs is lighter.
Installation #
pnpm dlx shadcn@latest add @caliper/app-frame
Adds its 3 files to components/ui/, each with its own stylesheet, and installs their packages. Pro installs with your access token, set up once per project. See Pro access. The first part also adds Caliper UI’s tokens; import them once as in Installation.
Usage #
Import it from your copy of the source. The example behind the preview comes with the source. It is built from AppFrame, ScreenHeader and ScreenPanel.
import { AppFrame, ScreenHeader, ScreenPanel } from "@/components/ui/app-frame"
The worked example comes with Pro
The 46-line example behind the preview opens here with a Pro or Team licence.
API reference #
AppFrame
component
ScreenHeader
component
ScreenPanel
component
Also accepts the native props of its root element and a ref.
Accessibility #
It exposes meter semantics, with aria-hidden, aria-label, aria-valuemin, aria-valuemax, aria-valuenow and aria-valuetext kept in step with state.
Motion #
It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.