SproutOS Design System
Every visual value in this plugin references a token from
:root
in admin-design-system.css.
This page renders the live tokens and every shipping component.
Color strategy is Restrained — tinted neutrals plus the brand
purple used as a ≤10% accent. Status signals use colored text on
neutral chips, never colored backgrounds. Depth is borders-only
(the one ambient shadow is --so-shadow-xs on cards).
Colors
Every neutral is tinted toward the brand hue. Semantic states (success/warning/error) have a full 4-step ramp. The brand palette is purple; one accent, used ≤10%. Status colors (blue/green/amber) are reserved for the Setup Guide's environment-health UI — distinct from the brand-aligned --so-info alias.
Brand
Backgrounds
Text
Borders
Semantic — Success
Semantic — Warning
Semantic — Error / Destructive
Status sub-palette (Setup guide)
Tag (slate sub-palette)
Code block sub-palette
Admin bar sub-palette (frontend toolbar)
Typography
System font stack (no web fonts). Hierarchy through size + weight contrast.
Font sizes
Weights
Spacing
4px base scale. Use multiples — don't introduce ad-hoc values.
Border radii
Shadows
Borders-only depth strategy. Ambient shadows are rare and intentional.
Focus rings
Icon sizes
Motion
Z-index hierarchy
Buttons
Form controls
One canonical pattern: 36px height, --so-radius-md, --so-border-weak at rest → --so-border-default on hover → --so-border-strong + faint neutral ring on focus. Placeholder always --so-text-weaker in --so-font.
Custom dropdown
The canonical dropdown component. Use this instead of native <select> so the menu and trigger styling stay identical across pages. Closed state matches form controls.
.so-dropdown--block — full-width variant for form fields.
Toggle switch
Badges
Status pills used in the Request Details modal and similar. All badges share the same neutral chip background — only the text color signals state.
Tags & filter pills
Used for risk categorization on AI abilities. Same muted treatment: neutral chip + colored text.
Filter pills
Stat cards
Summary metrics. Both the older modifier pattern (.error, .success) and the custom-property override pattern (--stat-value-color) work — they compose.
Status pills (Analytics log rows)
Cards
Card title
Card description text — used for sub-titles and explanations inside cards.
Memory card
White body + grey footer strip with bottom-rounded corners. The footer uses a small grey dot separator.
Code block
add_action( 'wp_dashboard_setup', function () {
wp_add_dashboard_widget(
'hi_dashboard_widget',
'Hi (from sandbox)',
function () { echo '<p>hi</p>'; }
);
} );
Modal
Header with bottom border, body, footer with gray bg + bottom-rounded corners. z-index: 100001 sits above the WP admin bar.
Setup status cards
The blue/green/amber palette used in the Setup Guide. Distinct from semantic success/warning to keep the brand-aligned states separate from environment-health UI.