Skip to content

No.34 · Buttons· New

Frost Bloom Button

A frosted pill tinted from inside by soft blobs of colour, with a white glow rising from under its bottom edge; the colour drifts, leans toward the pointer, and the paper plane lifts off on hover.

The prompt

Copy this text

Automatic copying is unavailable. Copy the selected text using your device’s copy command.

Written for the variant you picked above: Azure

Build a large call-to-action pill (React + CSS, no libraries) that looks like frosted glass lit from inside by soft colour. Geometry in em so one font-size scales it: min-width 16.2em, height 4em, padding 0 2em, fully rounded, overflow hidden. Default font-size 20px (a 324×80 pill). Label "Get Started" in Poppins 500 (fallback Inter), near-black #12141c, followed 0.8em later by a filled paper-plane icon (1.05em, two triangles with a hairline fold between them, pointing up-right). Surface: a pale base colour, a rim drawn as an inset 0.075em shadow in a near-white, and an inset top highlight. Inside, an absolutely positioned paint layer (inset −10%, blur 0.55em) holds five elliptical blobs, each a radial-gradient(closest-side, colour, colour 35%, transparent) placed by centre and size in percent of the pill: a strong blob on the left, a lighter wash next to it, a soft blob toward the right, the right-hand colour, and a white ellipse centred about 112% down so a white-hot glow rises from under the bottom edge. Blobs may be taller than the pill so colour fills it top to bottom like soft vertical bands. Motion: each blob drifts on its own 11–15s alternate loop (translate up to 6%, scale to 1.08) and the under-glow breathes over 6s. On a fine pointer the paint layer leans up to ±6% toward the pointer (eased 0.8s); on hover the plane hops 0.14em up-right with a slight overshoot and the glow brightens; press scales to 0.98. Focus-visible draws a 0.1em ink outline offset 0.2em. Reduced motion stops the drift and the transitions. Props: palette {base, ink, rim, blobs[]}, size, icon (or false), plus native button props. Selected variant — Azure (azure): Base #e9ecf6. Blobs: #2f86ff at (12%, 58%) 40×160, #8fbcff wash at (36%, 40%) 46×140 at 75%, #dcd8f2 at (66%, 30%) 40×120 at 60%, #f7d4ba at (91%, 50%) 28×150, white glow at (54%, 112%) 34×76. Vivid blue on the left fading to warm apricot on the right. This selection takes precedence over references to other themes or options in the general brief. Implement this selected appearance; do not add a variant picker or alternative appearances unless requested. Implementation requirements: Use React and TypeScript. Keep the component self-contained, with uniquely scoped CSS and no animation libraries. Include required imports, styles and font setup in the result. Interaction: Hover leans the colour toward the pointer and lifts the paper plane; press scales the pill down slightly. Works as a native button. Motion: Blobs drift on 11–15s alternate loops; the under-glow breathes over 6s; pointer lean eases over 0.8s; the plane hops with a 0.45s overshoot. Accessibility: A native button with its visible label as the name; the icon and paint layers are aria-hidden. Near-black text on a pale surface stays above 7:1. Visible focus outline. Reduced motion stops all drift. Responsive behavior: Sized in em from one font-size; at 20px it is 324px wide, which fits a 360px phone. Pass a smaller size for compact layouts. Touch: No pointer lean on touch; the colour keeps drifting on its own and the press feedback still shows. Preserve keyboard access, visible focus and reduced-motion behavior. Keep fictional demo data and simulated service calls in a separate usage example; expose callbacks for real actions and recover from rejected requests. Keep usage-example links inside the demo: use local buttons or prevent navigation. Demonstration links must not navigate to Vitrine routes or open other pages; preserve real URL support in the reusable component itself. Verify the result at narrow and wide viewport sizes, with keyboard input and reduced motion enabled.

Notes

Interaction
Hover leans the colour toward the pointer and lifts the paper plane; press scales the pill down slightly. Works as a native button.
Motion
Blobs drift on 11–15s alternate loops; the under-glow breathes over 6s; pointer lean eases over 0.8s; the plane hops with a 0.45s overshoot.
Accessibility
A native button with its visible label as the name; the icon and paint layers are aria-hidden. Near-black text on a pale surface stays above 7:1. Visible focus outline. Reduced motion stops all drift.
Responsive
Sized in em from one font-size; at 20px it is 324px wide, which fits a 360px phone. Pass a smaller size for compact layouts.
On touch
No pointer lean on touch; the colour keeps drifting on its own and the press feedback still shows.

Featured

442 components