Glow

Edge Scrim

Overlay that darkens and progressively blurs one edge of the art beneath it so text can sit on images. Direction, strength, reach, blur and an optional tint color are adjustable.

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/edge-scrim
npx shadcn add @01orbital/edge-scrim
yarn shadcn add @01orbital/edge-scrim
bunx --bun shadcn add @01orbital/edge-scrim

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/glow/edge-scrim.tsx, as source you own and edit.

The example also uses card and celestograph-cover. Install them too:

pnpm dlx shadcn add @01orbital/card @01orbital/celestograph-cover
npx shadcn add @01orbital/card @01orbital/celestograph-cover
yarn shadcn add @01orbital/card @01orbital/celestograph-cover
bunx --bun shadcn add @01orbital/card @01orbital/celestograph-cover

Usage

import { CelestographCover } from "@/components/celestograph/celestograph-cover"
import { EdgeScrim } from "@/components/glow/edge-scrim"
import { CardDescription, CardTitle } from "@/components/ui/card"

// Every word on the page. Change copy here, not in the markup.
const COPY = {
  title: "Tethys, from the Cassini flyby",
  body: "An icy moon, photographed on the way past Saturn.",
} as const

// The scrim darkens the foot of a picture so a caption can sit on it.
export default function Demo() {
  return (
    <div className="dark relative isolate grid min-h-full w-full flex-1 place-items-center overflow-hidden bg-background text-foreground">
      <div className="relative isolate grid aspect-4/3 w-full max-w-lg content-end overflow-hidden rounded-2xl p-8">
        <CelestographCover from="tethys" palette="warmth" />
        <EdgeScrim />
        <CardTitle className="relative">{COPY.title}</CardTitle>
        <CardDescription className="relative">{COPY.body}</CardDescription>
      </div>
    </div>
  )
}

API reference

Prop

Type

It also accepts the HTML attributes of the element it renders.

Dependencies

npm: cn. The CLI installs them for you.

No other registry pieces.