Media

Screenshot Plate

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.

Installation

pnpm dlx shadcn add @01orbital/screenshot-plate
npx shadcn add @01orbital/screenshot-plate
yarn shadcn add @01orbital/screenshot-plate
bunx --bun shadcn add @01orbital/screenshot-plate

Part 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/section
npx shadcn add @01orbital/heading @01orbital/section
yarn shadcn add @01orbital/heading @01orbital/section
bunx --bun shadcn add @01orbital/heading @01orbital/section

Usage

import { 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>
  )
}

API reference

It accepts the HTML attributes of the element it renders.

Dependencies

npm: cn. The CLI installs them for you.

Registry pieces it installs with it: