Burned text using svg filter
Classic SVG burned edges plus layered thermal glows. Tone follows the canvas; type size scales the filter.
Install
Requires a project with shadcn/ui initialized. Installs all 1 file and any listed registry dependencies.
npx shadcn@latest add https://manglekuo.com/showcase/r/burned-text.jsonDocumentation
Burned Text Effect
Two SVG engines in one component: the classic char-edge burn, plus glow with two constructions — soft nested bloom (thermal) and chromatic rings (VHS). Tone follows the surface behind the text — light or dark — not the page theme.
Usage
import { BurnedText, CLASSIC_BURN_SETTINGS, THERMAL_PRESET, VHS_PRESET,} from '@/components/ui/burned-text' {/* Classic burn — original color-matrix char */}<BurnedText text="Burned Text" engine="classic" tone="light" classic={CLASSIC_BURN_SETTINGS}/> {/* Thermal — soft nested heat bloom */}<BurnedText text="HOT" engine="glow" glowStyle="bloom" core={THERMAL_PRESET.core} layers={THERMAL_PRESET.layers}/> {/* VHS — chromatic offset rings */}<BurnedText text="PRO" engine="glow" glowStyle="rings" core={VHS_PRESET.core} layers={VHS_PRESET.layers}/>Language: jsxProps
BurnedText
text(string): Text to render.fontSize(number, default:64): Font size in pixels. Classic blur and glow spreads scale with this value.fontFamily/fontWeight/tracking: Type controls. Non-generic families load from Google Fonts.engine("classic" | "glow", default:"classic"): Classic = original burn filter; glow = stacked color layers.glowStyle("bloom" | "rings", default:"bloom"): Bloom = thermal inset bands (erode → punch → soften); rings = annular outward blurs (VHS).tone("light" | "dark", default:"light"): Pick from the canvas behind the glyphs. Light classic multiplies into paper; dark classic inverts to ash and screens so char blacks dissolve on slate/ink.classic(ClassicBurnSettings): contrast, brightness, secondBlurAmount, secondBrightness, optional filterValues matrix.core/layers: Used whenengine="glow". Layers are outer-first. For thermal bloom,spreadis inset depth from the glyph edge (larger = hotter / further in).className(string, optional): Extra classes on the SVG.
Helpers: toneFromCanvas(hex), CLASSIC_BURN_SETTINGS, THERMAL_PRESET, VHS_PRESET.
How It Works
- Classic — blur → dilate → contrast/brightness → second blur → color matrix (dark: invert + hue-rotate, luminance-key the char fringe, then CSS
screen). - Glow bloom — each thermal band shrinks in from the glyph edge (erode → alpha punch → soften blur), stacked cold→hot like burn’s bite.
- Glow rings — soft outer fringe plus annular mid/inner bands with chromatic offsets (VHS tracking).
- Type — after
document.fonts.load,getBBox()sizes the SVG; the demo stage stays fixed and scales the SVG with CSS so the canvas does not grow with font size.
DialKit on this page is demo-only: Look picks Burn / Thermal / VHS, the Version dropdown + + save snapshots to localStorage, and canvas swatches drive tone from background luminance. The clipboard control is Copy prompt — it pastes an agent-ready install (npx shadcn@latest add …/r/burned-text.json) plus the exact BurnedText props for the look you dialed, not DialKit’s “update useDialKit” scaffold.