Skip to content
Sign in
FramesMonitor frameMenu

Monitor framePro

Studio monitor and all-in-one desktop mockups with a stand, rendering a full app at a real desktop viewport.

ProA full chatcn app on a studio display: the thread sidebar and the chatbot block.

Installation

$ pnpm dlx shadcn@latest add @chatcn-pro/monitor-frame

Usage

tsx
import { MonitorFrame } from "@/components/ui/chatcn/pro/monitor-frame"

<MonitorFrame width={800} variant="all-in-one">
  <YourApp />
</MonitorFrame>

The screen shows a real 2560 x 1440 layout, the way a 5K display runs at 2x, so a full app fills it at true density. Pass a smaller viewport to make the UI larger. The stand is one bent sheet: the neck sits in the display's shadow and turns into a foot drawn from slightly above, with a floor shadow.

A screen scaled far below 1x shrinks its controls under the 24 px minimum target. When a frame is a picture (a hero, a gallery card), pass inert to the frame: the content stays visible but leaves the tab order and the accessibility tree. Leave it off and the screen stays fully live.

Examples

All-in-one and no stand

ProThe all-in-one silhouette with its chin, next to a black display without a stand.

Props

PropTypeNotes
widthnumberRendered width in px. Everything scales from it. Capped at the container
finish"auto" | "silver" | "graphite" | "black" | "white"Hardware material. auto is silver in light, graphite in dark. light and dark still work as aliases for silver and graphite
shadingbooleanMetal sheen, specular edges, chamfer and glass reflection. false draws flat tones. Default true
shadowbooleanLayered contact shadow, plus a floor shadow under upright devices. Default true
glarebooleanA soft diagonal reflection on the screen glass. Default false
viewportnumberCSS width the content renders at before it scales. Smaller makes the UI larger
screenClassNamestringClass names for the screen, for example dark
variant"monitor" | "all-in-one"A thin display, or a chin under the glass
standbooleanDefault true

Keyboard

The frame adds nothing to the tab order.

Accessibility

  • Hardware and stand are aria-hidden.

Motion

  • Frames are static. Nothing animates on hover.
  • Under forced-colors: active, the shell and the screen get a system color outline, so the silhouette survives without fills.