No.367 · Feedback· New
Gradient Progress
A colourful bar whose full gradient spans the track, revealed as the bar grows so the colours arrive in order, with a soft glow leading its end.
The prompt
Written for the variant you picked above: Light
Build a gradient progress indicator with a label and a value (0–100). Inter 500 at 14px. Above the bar: the label on the left and the value on the right in muted tabular figures (the rounded percentage, or a detail such as '7.2 GB of 10 GB'). Bars come in three sizes (4, 8 and 12px tall) with fully rounded tracks; value changes ease over 0.45s. The fill is a cyan #06b6d4 → blue #3b82f6 → violet #a855f7 → pink #ec4899 gradient spanning the whole track, revealed by clip-path as the value grows (so the colours arrive in order), with an 18px blurred violet glow leading its end (fading in from zero). In forced-colours mode use Highlight. Semantics: role=progressbar on the track, labelled by the label, with aria-valuemin/max/now and aria-valuetext set to the detail when there is one. Palette (light / dark): ink and fill #18181b / #ececef, muted #6b6b73 / #a1a1aa, track #ececef / #232327.. Show three examples on a white / #0b0b0c page. Examples: 'Generating your video' climbing (large), 'Monthly goal' at 68% reading '6,800 of 10,000 visits', 'Training run' (small). Selected variant — Light (light): Palette for this theme (Light): --gpbr-done #15803d; --gpbr-fill #18181b; --gpbr-ink #18181b; --gpbr-soft #6b6b73; --gpbr-track #ececef. Treat these as the root colour tokens, one value per role, and name them to suit your code. Select it with the theme option set to "light". Keep every dimension, spacing value, state and motion from the brief unchanged, and keep text at 4.5:1 contrast or better on these surfaces. 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: None; it reports progress. Motion: The reveal and the glow ease over 0.45s. Reduced motion jumps straight to the value. Accessibility: role=progressbar with a label, min, max, now and a human value text. Responsive behavior: Bars fill their container. Touch: Nothing to tap. 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
- None; it reports progress.
- Motion
- The reveal and the glow ease over 0.45s. Reduced motion jumps straight to the value.
- Accessibility
- role=progressbar with a label, min, max, now and a human value text.
- Responsive
- Bars fill their container.
- On touch
- Nothing to tap.