Thrive Design System

Components

Select Multi Category

A categorized multi-select dropdown that organizes options into groups for structured selection.

Installation

npm install @thrivecart/ui
yarn add @thrivecart/ui
pnpm add @thrivecart/ui
bun add @thrivecart/ui

Usage

import { SelectMultiCategory } from '@thrivecart/ui';

Examples

Basic Categorized Select

Default

Multi-select with categorized options

Select recipients...
0 items selected
<SelectMultiCategory
			categories={[
				{
					name: 'Lists',
					items: [
						{ label: 'Newsletter Subscribers', value: 'newsletter', description: '5,234 contacts' },
						{ label: 'Customers', value: 'customers', description: '12,891 contacts' },
						{ label: 'New Leads', value: 'leads', description: '2,456 contacts' },
					],
				},
				{
					name: 'Segments',
					items: [
						{ label: 'Highly Engaged', value: 'engaged', description: '3,456 contacts' },
						{ label: 'Inactive Users', value: 'inactive', description: '1,234 contacts' },
						{ label: 'VIP Customers', value: 'vip', description: '123 contacts' },
					],
				},
				{
					name: 'Tags',
					items: [
						{ label: 'Purchased Last 30 Days', value: 'recent-purchase' },
						{ label: 'Abandoned Cart', value: 'abandoned-cart' },
						{ label: 'Referred a Friend', value: 'referral' },
					],
				},
			]}
			value={selected}
			placeholder="Select recipients..."
			searchPlaceholder="Search..."
			onChange={setSelected}
		/>

Best Practices

Use meaningful categories

Category labels should help users quickly locate relevant options.

Show category counts

Display how many items from each category are selected.

Don't create single-item categories

If a category has only one item, merge it with a related category.

Don't nest categories

Keep categories flat. Sub-categories should use a different pattern.

Props

Props

Accessibility

  • Categories are announced as groups by screen readers.
  • Items within categories are navigable with Arrow keys.
  • Search filters across all categories.
  • Selected items are clearly indicated.