Cipher Button
buttonProA button that scrambles its label into cipher and decrypts it letter by letter on hover or focus, lit by a sweeping band of light you can colour, speed up, multiply and give a trail.
Opening soon
Pro cannot be bought yet. The page opens when payment is ready.
Preview
The preview could not load.
Live demo. The theme switches the demo itself.
Code
cipher-button.tsxPro
The code is locked
Cipher Button is part of Manniche UI Pro. A key unlocks the source of all 60 effects.
Opening soon€49 · Introductory price until 31 December 2026. €79 after that.
- One-off payment
- One developer
- Your key arrives by email straight away
- No VAT (§ 19 UStG)
Have a key? Get the code with the CLI or MCP.
The key lives in MANNICHE_PRO_KEY, never in your code or a URL. How to set it up
CLI
npx shadcn@latest add @manniche-pro/cipher-buttonMCP
claude mcp add --transport http manniche-ui https://mikkelmanniche.dk/api/mcp --header "Authorization: Bearer $MANNICHE_PRO_KEY"Props
CipherButtonProps
| Prop | Type | Default | What it does |
|---|---|---|---|
label required | string | – | The button label. It is also the accessible name, whatever the letters look like mid-animation. |
charset | CipherSetName | (string & {}) | 'symbols' | Cipher characters: a preset name (symbols, glyphs, binary, blocks, katakana, hex) or your own string. |
cycles | number | 4 | How many times each letter changes glyph before it locks in. |
stagger | number | 55 | Milliseconds between one letter locking in and the next. |
frame | number | 42 | Milliseconds between glyph changes of a scrambling letter. |
textColor | string | – | Label colour at rest. Defaults to the button's own text colour. |
hoverTextColor | string | – | Label colour while hovered or focused. |
background | string | – | Fill of the button, any CSS background. |
border | boolean | false | Draws a hairline border in borderColor. |
borderColor | string | – | Colour of the border. Defaults to the label colour at low opacity. |
lightColor | string | '#ff6a3d' | Colour of the sweeping light. |
lightSpeed | number | 2.4 | Seconds the light takes for one full turn around the button. |
lightCount | number | 1 | Number of light bands sweeping at once (1 to 4). |
lightTrail | number | 0.75 | Length of each band's fading tail, 0 (a sharp dash) to 1 (a long comet). |
lightWidth | number | 1.5 | Thickness of the light on the edge, in pixels. |
glow | number | 0.22 | How strongly the light washes over the button face, 0 to 1. |
Also takes every prop from Omit<ComponentPropsWithRef<'button'>, 'children'>.
A11y
No accessibility notes written yet.
The notes come with the source when Pro opens.