Foundation
A consistent icon system that provides visual clarity and reinforces meaning across the interface.
The Thrive Design System uses Material Design Icons via the react-icons/md package as its primary icon set. These icons are used throughout components for actions, navigation, status indicators, and visual cues.
| Source | Package | Usage |
|---|---|---|
| Material Design | react-icons/md | Primary icon set for actions, navigation, and UI elements |
| Custom Icons | @thrivecart/ui/icons | Product-specific icons for branding and specialized features |
The design system includes a set of custom product icons for Thrive-specific features:
| Icon | Name | Usage |
|---|---|---|
| Automation | AutomationIcon | Automation workflows |
| Builder | BuilderIcon | Page/funnel builder |
| Campaign | CampaignDuotoneIcon | Campaign management |
| Chatbot | ChatbotIcon | Chatbot features |
| Contacts | ContactsIcon | Contact management |
| Content Manager | ContentManagerIcon | Content management |
| Dashboard | DashboardIcon | Dashboard views |
MailIcon | Email features | |
| Settings | SettingsDuotoneIcon | Settings and configuration |
| Social | SocialIcon | Social media features |
Icon wrapper component for consistent sizing and alignment.text-icon, text-icon-primary).Icons follow a consistent sizing scale that aligns with the component size system:
| Size | Dimensions | Use Case |
|---|---|---|
xs | 12px | Compact elements, inline indicators |
sm | 16px | Small buttons, form fields, table cells |
md | 20px | Default size, most UI contexts |
lg | 24px | Prominent actions, headers |
xl | 32px | Feature highlights, empty states |
Icons use semantic color tokens to ensure proper contrast and meaning:
| Token | CSS Variable | Usage |
|---|---|---|
| Default | --color-icon | Standard icon color |
| Light | --color-icon-light | Subtle, secondary icons |
| Primary | --color-icon-primary | Primary action icons |
| Destructive | --color-icon-destructive | Destructive action icons |
aria-label or aria-hidden="true" on icon elements.aria-hidden="true".