Screenshot mounted on a painted mat: a delft ColorWash ground with a ScreenshotFrame bleeding the shot off the bottom. Pass a light and dark ScreenshotImage pair as children.
The source comes with full access.
One payment of $149 ($49 for now) opens the source right here and lets the CLI install every paid component, with lifetime updates.
pnpm dlx shadcn add @01orbital/screenshot-platenpx shadcn add @01orbital/screenshot-plateyarn shadcn add @01orbital/screenshot-platebunx --bun shadcn add @01orbital/screenshot-platePart of the 01orbital library. With a license, put ORBITAL_TOKEN in .env.local and the same command installs it (licensed install, pricing).
It lands at components/media/screenshot-plate.tsx, as source you own and edit.
The example also uses heading and section. Install them too:
pnpm dlx shadcn add @01orbital/heading @01orbital/sectionnpx shadcn add @01orbital/heading @01orbital/sectionyarn shadcn add @01orbital/heading @01orbital/sectionbunx --bun shadcn add @01orbital/heading @01orbital/sectionimport { Heading } from "@/components/editorial/heading"
import {
Section,
SectionContent,
SectionDescription,
SectionHeader,
SectionTitleGroup,
} from "@/components/editorial/section"
import { ScreenshotImage } from "@/components/media/screenshot-frame"
import { ScreenshotPlate } from "@/components/media/screenshot-plate"
const COPY = {
title: "Everything you need to answer well, in one place.",
body: "Reply faster and keep every customer conversation where the whole team can see it: one inbox, one queue, one record.",
alt: "The shared inbox, with a thread open and the suggested reply beside it.",
} as const
export default function ScreenshotPlateDemo() {
return (
<Section>
<SectionHeader>
<SectionTitleGroup>
<Heading>{COPY.title}</Heading>
</SectionTitleGroup>
<SectionDescription>{COPY.body}</SectionDescription>
</SectionHeader>
<SectionContent>
<ScreenshotPlate className="rounded-sm">
<ScreenshotImage
src="/screenshots/dashboard-light.webp"
alt={COPY.alt}
width={2880}
height={1666}
className="w-full dark:hidden"
/>
<ScreenshotImage
src="/screenshots/dashboard-dark.webp"
alt={COPY.alt}
width={2880}
height={1666}
className="w-full not-dark:hidden"
/>
</ScreenshotPlate>
</SectionContent>
</Section>
)
}It accepts the HTML attributes of the element it renders.
npm: cn. The CLI installs them for you.
Registry pieces it installs with it:
Screenshot Frame
Frame that bleeds a product screenshot off one edge of its ground, with six placements, a padded gutter and an optional ring. ScreenshotImage keeps the natural ratio and inherits the corner.
Compare
Every Motion component side by side: whether it follows the theme or stays dark, how many parts and custom props it has, and whether it is free. Open one for its preview, API and install.