Draws a small picture of a page once it has content. Pass it to an empty State Panel so people see what they will get before they add anything.
No files yet
Upload the documents your work depends on, like price lists, contracts, and policies. Files stay private until you share them.
Files/My files···Example
Supplier contractsFolder · Shared with PurchasingYou
Month-end closeFolderYou
Price list 2026.xlsxSpreadsheet · 48 KBYou
Returns policy.pdfPDF · 212 KBYou
Onboarding checklist.docxDocument · 31 KBYou
List · folder tiles and file glyphs · two-part trail
Usage
State sample usageTSX
import { SampleIconTile, SampleList, SampleText, SampleWindow,} from "@tulipfarm/sprout/state-sample";<StatePanel kind="empty" icon={ChatRound} title="No chats yet" description="Every private conversation is saved here." sample={ <SampleWindow icon={ChatRound} trail={["Chats"]} tabs={["Active", "Archived"]}> <SampleList items={[ { leading: <SampleIconTile icon={ChatRound} />, title: "Draft a follow-up for Northwind", detail: "Draft ready for your review", trailing: <SampleText tone="muted">1h ago</SampleText>, }, ]} /> </SampleWindow> }> <Button>Start a chat</Button></StatePanel>
SampleWindow draws a title bar with icon, a breadcrumb trail, and an “Example” chip. Change the chip with label. The last trail part is the current page. Add tabs for a tab row; the first tab is selected. Put a list, a table, or your own content inside.
Every sample
These are the samples TulipFarm shows on its empty pages. Data, avatars, and file glyphs here are sample adapters; the package only draws the frame, rows, and placeholders.
ChatsList · icon tiles · two tabs · muted times
Chats···Example
ActiveArchived
Which invoices are overdue this week?Found 7 invoices across 4 customers2m ago
Draft a follow-up for NorthwindDraft ready for your review1h ago
Add a Suppliers tableName, contact, payment terms, regionYesterday
Summarize last month’s orders312 orders, up 18% on SeptemberSep 30
Who owns the Acme renewal?Assigned to the Sales teamSep 28
FilesList · folder tiles and file glyphs · two-part trail
Files/My files···Example
Supplier contractsFolder · Shared with PurchasingYou
Month-end closeFolderYou
Price list 2026.xlsxSpreadsheet · 48 KBYou
Returns policy.pdfPDF · 212 KBYou
Onboarding checklist.docxDocument · 31 KBYou
AgentsList · agent avatars · status badges
Agents···Example
CCollections assistantFollows up on overdue invoicesActive
OOnboarding guideWelcomes new customers and books kickoffsActive
SampleList takes items. Each item has a title and optional detail, leading, and trailing content. Rows are at least 56px tall.
SampleTable takes columns and rows. A column size is "wide" (1.6 shares), "default" (1 share), or "narrow" (a fixed 96px). Each row starts with a decorative checkbox. Long text truncates with an ellipsis.
One-part trail, two tabs
Chats···Example
ActiveArchived
Draft a follow-up for NorthwindDraft ready for your review1h ago
Prepare a quarterly review for every regional supplierPull revenue, churn, open risks, and delivery delaysNeeds attention
Parts
For SampleText, tone is "default", "strong", "muted", "link", or "mono". A SampleMark is a colored square. Its tone is red, orange, green, blue, violet, or teal, and its size is "sm" (14px) or "md" (28px). A SampleBar stands in for a value. Its width is "sm", "md", or "lg". A SampleIconTile puts an icon in a 28px tile.
Text tones
default1,248
strongCustomers
mutedDelivered
linkmaya@northwind.co
monoINV-2041
Marks: six tones, two sizes
sm
md
Bars: three widths
sm
md
lg
Leading slots
SampleIconTile
SampleMark md
BrandIcon sm
AgentAvatar smC
File glyph
Accessibility
Samples are pictures, not controls. Nothing in them can be focused. Marks, bars, icon tiles, checkboxes, and trail separators are hidden from assistive technology. Inside a State Panel the whole sample is hidden and inert, so screen readers hear only the panel text.
Theme tokens
Lines use --sprout-line, text uses --sprout-text and--sprout-muted, links use --sprout-info, and bars use --sprout-active. Mark gradients have light and dark values set by the component.