Skip to content
SproutAceve · v3.33.1
Overview What is your role? Connect to Sprout MCP reference Adopting Sprout
Brand & logos Color Typography Spacing & layout Elevation Iconography Accessibility
Overview Alert Avatar Badge Breadcrumb Buttons Cards Checkbox Data grid Dialog Dropdown button Fab button Floating tabs Inputs Menu Navigation Numeric input Progress bar Progress ring Radio button Ribbon toolbar Switch Tabs Tag Tooltip
Interaction & motion Voice & content Product patterns
AI patterns AI transparency & disclosure AI disclosure label AI labels in marketing
Design principles Personas Trust and ethics Meet the makers
Build the systemplay Tower of tokensplay Site runnerplay
How it works Changelogv3.33 Roadmap Contribute
Components

Inputs.

An input component lets users enter or edit text in a form or collection flow. It supports text, password, email and number types, and can carry helper text, inline validation, and leading or trailing icons.

Text inputs let users enter short, free-form content such as names, addresses, or search terms. Always pair an input with a visible label above it. Placeholder text is for examples only - never use it as a substitute for a label, since it disappears when the user starts typing.

Appears as the title in the Suite Header.
This field is required

Anatomy

LabelPlaceholder textLeadingicon / textTrailingicon / text10 pxHelper text or error appears here — 12px, 4px gap below input

Size

Three heights serve different UI densities. Medium (32px) is the Sprout default.

Small - 24px
Text input
Medium (default) - 32px
Text input
Large - 40px
Text input

Use of icons

A leading icon indicates the type of input and reinforces the label - for example a search icon in a search field. A trailing icon adds an interaction: clearing the field, toggling password visibility, or confirming valid data with a checkmark. Icons should never be used for decoration alone.

Textarea

A textarea is the multi-line counterpart to the text input, for longer free-form content - notes, descriptions, comments. It ships in the same three sizes as the text input, grows taller instead of wider, and carries a right-aligned character count alongside the usual helper or error text. It never resizes horizontally.

Small (56px) suits a single compact note; Medium (80px) is the default for most forms; Large (120px) is for the one field on the page that is meant to hold real paragraphs - a description, a work order, a detailed comment.

Notes - 56px
Add notes about this site visit...
Helper text0/200
Notes (default) - 80px
Add notes about this site visit...
Helper text0/200
Notes - 120px
Add notes about this site visit...
Helper text0/200

The full state set, shown at Medium:

Notes
Site visit went well, client approved the quote.
Helper text0/200
Default
Notes
Site visit went well, client approved the quote.
Helper text0/200
Hover
Notes
Site visit went well, client approved the quote.
Helper text0/200
Focus
Notes
Site visit went well, client approved the quote.
Helper text0/200
Disabled
Notes *
Site visit went well, client approved the quote.
Please shorten your note0/200
Error
Notes
Site visit went well, client approved the quote.
Helper text0/200
Read-only

Do's & Don'ts

Email address *
E.g. jane@doe.com
Do
Clearly label every input field above the control
Email address
Don't
Don't rely on placeholders as labels - they vanish on input
Street address *
E.g. Storgatan 12
Do
Keep inputs concise and ask for one piece of data per field
Your address *
Street name, no, zip code, city
Don't
Don't ask for too much info in a single field
Email address *
jane@doe.com
Please enter a valid email address
Do
Provide inline validation with a specific, helpful error message
Email address *
jane@doe.com
Don't
Don't show vague error signals without a message explaining what went wrong
Street address *
E.g. Storgatan 12
Zip *
123 45
City *
Stockholm
Do
Group related inputs logically - address fields together, not scattered
Password *
E.g. Storgatan 12
Zip *
123 45
Phone *
+46 70 123 45 67
Don't
Don't scatter inputs randomly without a clear order or logical grouping

Spec

Input height32px (medium), 24px (small), 40px (large)
Input horizontal padding10px (medium), 8px (small), 12px (large)
Border1px solid var(--line-strong)
Focus ring2px solid var(--accent), offset 1px
Error border1px solid var(--danger)
Radius4px
Label gap4px between label and input
Helper / error text12px, 4px below input
Textarea height80px (medium), 56px (small), 120px (large) - fixed, vertical resize only
Textarea padding8px on every side, all sizes
Character countRight-aligned under the box, e.g. 0/200 - counts toward the max, not a hard stop before it
← PreviousFloating tabsNext →Menu
Sprout · Aceve Design System · v3.33.1
Figma library GitLabReleases
On this page
Anatomy
Size
Use of icons
Textarea
Do's & Don'ts
Spec