Result Card
Shows something an agent made or did in chat. It names the apps used, shows a live status, and offers one action, such as opening the result in a canvas. ResultAppActions lists what each app did.
Investor pitch
Local sample. Nothing is opened or sent.
Usage
import { ResultCard } from "@tulipfarm/sprout/result-card";
<ResultCard
title="Investor pitch"
kind="File"
status="Saved in Google Slides"
state="success"
apps={[
{
brand: "google-slides",
name: "Google Slides",
actions: [
{ label: "Created the investor pitch presentation", state: "completed" },
{ label: "Added the two pitch slides", state: "completed" },
],
},
]}
action={{ label: "View slides", onClick: openInCanvas }}
/>kind:"File","Plan","Workflow","Action","Calendar","Table","Activity","Agent", or"Skill". It shows before the status and names the card “Kind: title”.status: short text, such as “Waiting for review” or “Action not confirmed”.action: one outline button. It sits beside the text when the card is at least 28rem wide, and below it when narrower. Passdisabledto turn it off.icon: shown in a tile whenappsis empty, such as a file, table, plan, or workflow icon.children: extra content under the header, such as plan progress and controls.
States
Default
Investor pitch
Loading
Investor pitch
Running
Investor pitch
Unavailable
Investor pitch
Error
Investor pitch
Success
Investor pitch
Local sample. Nothing is opened or sent.
"default": a muted status."loading": a spinner andaria-busy; the action is disabled while the card checks."running": a spinner andaria-busy; the action stays available."disabled": the action and app tiles are disabled."error": a red status with a warning icon."success": a green status with a check.
Apps used
One app
Investor pitch
Two apps
Prepare the investor update
Five apps fold into +3
Weekly team update
Repeated app merges into one tile
Supplier follow-up
Apps without a brand
Ticket triage
No recorded actions
GitHub changes
No apps, icon tile
Supplier price sheet.xlsx
No apps, no icon, no action
Quarterly planning notes with a long title that wraps onto a second line in narrow chats
Local sample. Nothing is opened or sent.
Each app is a tile. Entries with the same brand (or the same name when brand is null) merge into one tile. Two tiles show; the rest fold into a “+N” tile. A tile opens its actions after 800ms of hover, or on click, Enter, or Space. An app with brand: null shows a plug icon.
Actions by app
Actions by app
Google Slides
- Completed:Created the investor pitch presentation
- Pending:Send the investor update email
- In progress:Saving the weekly update document
- Failed:Post to #investors
Google Sheets
- Unconfirmed:Append rows to Q4 forecast
- Blocked:Reply in the supplier thread
- Cancelled:Delete the draft event
- Skipped:Notify the on-call channel
Connected apps
No action details were recorded.
Slack actions
- Completed:Posted the weekly update
- Pending:Reply to a thread
import { ResultAppActions } from "@tulipfarm/sprout/result-card";
<h3>Actions by app</h3>
<ResultAppActions apps={result.apps} />
// One app, without its name above the list
<ResultAppActions apps={[slackApp]} showAppNames={false} />A check marks "completed". Other states are spelled out: “Pending:”, “In progress:”, “Failed:” (red), “Unconfirmed:”, “Blocked:”, “Cancelled:”, and “Skipped:”. An app with no actions says “No action details were recorded.”
In TulipFarm
Each sample below uses local data shaped like a TulipFarm screen. Pick an outcome to see how its status, state, and app actions change.
Chat card
Slack reply
Review canvas, no action
Slack reply
Local sample. Nothing is opened or sent.
Create issue on Acme Jira
Recorded activity
Calendar read · 3 events
Calendar result unavailable
Local sample. Nothing is opened or sent.
Price comparison.xlsx
Local sample. Nothing is opened or sent.
GitHub changes
Local sample. Nothing is opened or sent.
Prepare the board summary
Local sample. Nothing is opened or sent.
Supplier contacts
Supplier contacts
Local sample. Nothing is opened or sent.
1 app
Investor pitch
2 apps
Prepare the investor update
5 apps
Weekly team update
Weekly team update
Weekly team update
Weekly team update
Local sample. Nothing is opened or sent.
Investor pitch
Local sample. Nothing is opened or sent.
Weekly team update
Accessibility
The card is a section named “Kind: title”, with the title as anh3. The status is a live status, so changes are announced. Busy cards set aria-busy. App tiles sit in a group named “Apps used”; each is a button named “Slack actions” or “3 more apps”. Opening one by keyboard moves focus into the panel; Escape closes it and returns focus. Icons are hidden from assistive tech, and completed actions read “Completed:”.
On touch screens the action button and tiles grow to 44px. Status colors fade in 180ms; with reduced motion the fade and spinner stop.
Theme tokens
The card uses --sprout-surface,--sprout-input for its border, --sprout-muted,--sprout-success, and --sprout-danger. App tiles use the Brand Icon tokens.