ComponentsData display

Gradient Banner

Soft gradient art for prompt cards, onboarding, and showcase panels. Put text on a panel so it stays readable on every color.

ExampleHow agents work in TulipFarm

aurora · lg · texture · light panel

Usage

Gradient banner usageTSX
import {
  GradientBanner,
  GradientBannerBadge,
  GradientBannerPanel,
} from "@tulipfarm/sprout/gradient-banner";

<GradientBanner variant="iris" size="md">
  <GradientBannerPanel tone="dark">
    <GradientBannerBadge>Example</GradientBannerBadge>
    <span>How agents work in TulipFarm</span>
  </GradientBannerPanel>
</GradientBanner>

variant picks the colors and defaults to "aurora". size sets the minimum height, padding, and corner radius: sm 96px, md 160px, lg 240px (default), and xl 360px. Children sit centered on the art; a banner without children draws only the art.

Variants

Six color stories. Text placed straight on cobalt turns pearl so it stays readable on deep blue; the other variants use dark ink.

aurora

citrus

lagoon

iris

cobalt

mint

Sizes and texture

A film grain sits over the art by default. Set texture={false} for flat color, for example when many banners share a screen.

sm · no texture

md · no texture

lg · no texture

xl · no texture

Each size with the content it is made for:

sm · citrus
Label every invoice email
md · lagoon
Find the latest pricing sheet
lg · mint
ExampleHow agents work in TulipFarm
xl · iris
Fix ready for reviewEngineering agent · Fix checkout timeout
Art only · texture
Art only · no texture

Panels and badges

Prompt cardTSX
<GradientBanner variant="lagoon" size="md">
  <GradientBannerPanel>
    <BrandIcon brand="slack" size="glyph" />
    <span>Post the weekly update in #team</span>
  </GradientBannerPanel>
</GradientBanner>

GradientBannerPanel is a solid "light" (default) or"dark" surface. Badges and progress inside a dark panel switch to dark fills on their own. Long words wrap instead of overflowing.

Light panel
WorkingQualify new leads
Dark panel
ExampleHow agents work in TulipFarm
Long content
Investigate this bug across related repositories and summarize_the_failing_checkout_timeout_trace

Progress

ProgressTSX
<GradientBannerProgress value={percent} aria-label="Spring launch email progress" />

A 4px progressbar in the current text color. value is a percent; values outside 0–100 are clamped. Give it a name with aria-label.

Not started · value 0
Spring launch emailQueued
Working · value 37.5
Spring launch emailWorking
Done · value 100
Spring launch emailDone
Out of range · value 140
Spring launch emailClamped to 100

Prompt carousel

An integration sheet suggests things to ask. Each card rotates through the variants from a stable start per app, so the same app always gets the same colors. The row scrolls sideways and snaps; focus it and use the arrow keys.

Integration sheet
  • Post the weekly update in #team
  • Answer questions in #support
  • DM me when a big order lands

Showcase

The sign-in page fills half the screen with an xl banner that plays scripted agent runs: a dark example label, a panel with avatar, badge, progress, and steps, then a result badge. It starts paused when reduced motion is on; Pause stops it at any time.

Sign-in page
Marketing agent · step 1 of 4
ExampleHow agents work in TulipFarm
M

Marketing agent

Spring launch email

Working
  1. Reading last campaign results
MLE

Agent runs, app prompts, and timing in these examples are sample code. The package only draws the banner, panels, badges, and progress.

Accessibility

The art and its texture are aria-hidden; only children are announced. Banners are not interactive, so focus goes to the controls you put inside. Progress has role="progressbar" with rounded aria-valuenow. Its fill eases over 180ms; reduced motion turns that off.