A black hero where any word is drawn as extruded 3D letters made of tiny dots. The word swings like a pendulum, a scan band sweeps across it from left to right, the signal flickers now and then, and the dots part around the pointer.
Any word becomes a hologram of extruded dots that sways, scans and leans toward the pointer. One canvas, zero dependencies.
Any word · 5 depth layers · MIT licensed
npx hyperblur add hero-dot-textnpx shadcn@latest add https://hyperblur.dev/r/hero-dot-text.jsonWorks in any React project set up with the shadcn CLI. The file lands in components/hyperblur/hero-dot-text.tsx.
import { HeroDotText } from "@/components/hyperblur/hero-dot-text"
<HeroDotText word="LAUNCH" title="Ship words that glow." accent="#7fb3ff" />| Prop | Type | Default | Description |
|---|---|---|---|
| title | string | "Type that floats off the page." | Headline at the bottom left. |
| subtitle | string | "Any word becomes a hologram of extruded dots that sways, scans and leans toward the pointer. One canvas, zero dependencies." | Gray paragraph under the headline. Empty hides it. |
| caption | string | "Any word · 5 depth layers · MIT licensed" | Small mono line above the install row. Empty hides it. |
| command | string | "npx hyperblur add hero-dot-text" | Shell command in the box with a copy button. Empty hides the box. |
| primaryCta | { label: string; href: string } | null | { label: "Try it free", href: "#" } | Solid accent button with a chevron next to the command. Pass null to hide it. |
| brand | string | "Glyphwork" | Wordmark next to the logo mark in the top bar. |
| nav | { label: string; href: string }[] | [{ label: "Fonts", href: "#" }, { label: "Showcase", href: "#" }, { label: "Pricing", href: "#" }] | Centered mono links in the top bar. Hidden below 640px of container width. |
| navCta | { label: string; href: string } | null | { label: "Sign in", href: "#" } | Outlined mono button at the right of the top bar. Pass null to hide it. |
| learnMore | { label: string; href: string } | null | { label: "Learn more", href: "#" } | Small cue with a bobbing chevron at the bottom center. Pass null to hide it. |
| accent | string | "#5ee7ff" | Rim color of the hologram, the scan line, the glow and the primary button. The button text switches between dark and white for contrast when a hex color is given. |
| density | number | 1 | Multiplier for the point budget (up to about 18,000 points at 1 on wide screens, half that below 640px). The letters are re-sampled to fit the size of the hero. Kept between 0.2 and 2. |
| speed | number | 1 | Multiplier for the swing, the scan sweep and the floating motes. 0 holds the word still while it keeps leaning toward the pointer. |
| word | string | "HYPERBLUR" | The word to draw. It is rendered with the section font at weight 800 once the fonts have loaded, and re-sampled when it changes. Short words read best; an empty string draws nothing. |
| depth | number | 0.18 | Extrusion depth as a share of the glyph height, from 0.02 to 1. |
| swing | number | 32 | Pendulum amplitude around the vertical axis in degrees, from 0 to 80. |
| headingAs | "h1" | "h2" | "h1" | Heading level of the title. Use h2 when the page already has an h1. |
| onSearch | () => void | undefined | Called when the search icon button in the top bar is pressed. |
| className | string | "" | Extra classes on the section. |
| style | React.CSSProperties | undefined | Inline styles on the section. |