No.271 · Pricing· New
Glow Base Pricing
A three-plan pricing section on black where each card's base glows in its own colour, so its button sits in a pool of light, with rims tinted to match and a monthly/yearly switch that rolls the prices.
The prompt
Written for the variant you picked above: Sunset
Build a three-plan pricing section on pure black (React + CSS, no libraries) where each card glows from its base in its own colour. Header, centred: a wide eyebrow "PRICING" (Archivo at width 112, 400, 2.1em), a 1.13em subtitle, a two-line grey intro (max 30em) and a billing row: "Monthly", a switch (role switch; outlined pill 2.75em × 1.55em with a white knob that slides with a slight overshoot and a dark fill when on), "Yearly" and a small pink "Save 20%" chip. The active word is white, the other grey. Yearly takes 20% off and the prices roll in from above; a polite live line says which prices are shown. Cards: three columns of up to 18.6em with a 0.95em gap (one column of 22em under 900px), min-height 32em, radius 1.4em, #050505, a 1px border mixed 45% from the card's colour into near-black. The base glow is two radials anchored at the bottom centre: a hot core (68% × 25%, the colour lifted 12% toward white, fading by 45%) over a wider wash (95% × 40%), stretching 12% taller on hover. Content: the plan name (Archivo width 108, 500, 1.65em), a two-line description, the price (2.35em) with "/ mo", a list of five to seven features with green check marks (0.8em, 0.95em gap) and, pushed to the bottom and centred, a white rounded button sitting in the glow (it lifts and picks up a halo of the card colour on hover). Default plans: Starter $19 (orange #ff6a1f), Pro $49 (magenta #d62ee0), Scale $129 (blue #1f7bff), all copy original. Reduced motion stops the roll and the transitions. Props: eyebrow, title, intro, plans [{id, name, blurb, monthly, features[], cta, glow}], currency, defaultYearly, onChoose(plan, yearly). Selected variant — Sunset (sunset): Glows #ff6a1f (orange), #d62ee0 (magenta) and #1f7bff (blue), left to 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: Flip the switch (click, Space or Enter) to show yearly prices; each plan's button reports its plan and billing. Hovering a card stretches its glow. Motion: Knob slides in 0.28s with overshoot; prices roll in over 0.4s; glows stretch over 0.6s on hover; buttons lift 1px. Accessibility: A labelled section with a real heading; billing is a native button with role switch and aria-checked, announced politely; each plan is an article with a heading and a native button. Text sits in the dark upper part of each card, above 12:1. Reduced motion stops the roll and transitions. Responsive behavior: Three columns down to 900px, then a single column of up to 22em; the header stays centred. Touch: Tap the switch and buttons; the glow simply stays at rest without hover. 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
- Flip the switch (click, Space or Enter) to show yearly prices; each plan's button reports its plan and billing. Hovering a card stretches its glow.
- Motion
- Knob slides in 0.28s with overshoot; prices roll in over 0.4s; glows stretch over 0.6s on hover; buttons lift 1px.
- Accessibility
- A labelled section with a real heading; billing is a native button with role switch and aria-checked, announced politely; each plan is an article with a heading and a native button. Text sits in the dark upper part of each card, above 12:1. Reduced motion stops the roll and transitions.
- Responsive
- Three columns down to 900px, then a single column of up to 22em; the header stays centred.
- On touch
- Tap the switch and buttons; the glow simply stays at rest without hover.