62

ASCII Logo

An interactive ASCII wordmark — glyphs shove away from the cursor, then scatter, fall, and gather back on click.

A logo sampled onto a grid of letters and numbers. Move over it and the characters drift aside. Click to scatter them, click again to drop them under gravity, click once more to gather them back. Theme-aware. Press d to toggle theme.

ASCII Logo

Move around it · click to scatter

Props
Source
#3F3F46
#FAFAFA
Cell size
11
Hover push
2.60
Gravity
0.14
Bounce
0.28

Hover shove and click cycle

Installation

pnpm dlx shadcn@latest add @23rd/ascii-logo

Or install straight from the public GitHub source registry:

pnpm dlx shadcn@latest add radiumcoders/23rd.dev/ascii-logo

Usage

Place it in a sized container. The canvas fills the parent.

"use client"

import { AsciiLogo } from "@/components/ui/ascii-logo"

export function FooterMark() {
  return (
    <div className="relative h-64 w-full overflow-hidden bg-background">
      <AsciiLogo text="23rd" />
    </div>
  )
}

Pass src to sample an image instead of text — any raster, or a same-origin SVG.

<AsciiLogo src="/logo.svg" />

Clicks cycle logo → scattered → fallen → returning → logo. Hover repulsion only runs in the resting logo phase.

Props

PropTypeDefault
textstring"23rd"
srcstring
fitnumber0.82
cellSizenumber11
cellGapnumber2
charsetstringletters, numbers, a few symbols
thresholdnumber0.2
invertbooleantrue when src is set
colorstringtheme ink
backgroundColorstringtheme paper
hoverRadiusnumber7
hoverPushnumber2.6
hoverEasenumber0.18
scatterRangenumber16
scatterEasenumber0.055
gravitynumber0.14
bouncenumber0.28
resetEasenumber0.08
staggerFramesnumber18
interactivebooleantrue
theme"light" | "dark" | "auto"auto
labelstringtext or "ASCII logo"
onPhaseChange(phase) => void
classNamestringReact only
classstringSvelte only