Sonarist project

Sonarist / Design system

Documentation v1.0.0 · Work in progress · UI prototype with separate server foundations

Design system contents

Components

Thread participants and teammate selection

Show customer and internal teammate context without conflating conversation assignment with copied recipients.

On this page

Purpose and composition

Show customer and internal teammate context without conflating conversation assignment with copied recipients.

Use for internal thread involvement, not customer relationship ownership.

Anatomy

Anatomy
PartResponsibility
StackContact, assignee, message senders and added teammates
PopoverSelected identity and profile action
Add/removeSeparate round actions
DialogAvailable teammates and multi-selection

Configuration and variants

Configuration and variants
Input / variantContract
participantIdsExplicit added teammates
fixed IDsAssignee and existing message senders excluded from add options
add optionsActive users not already included
remove optionsExplicitly added users only

States and feedback

States and feedback
StateVisible / behavioral result
Popover openDetails attached to avatar
Empty optionsNamed explanatory state
SelectedCheck indicator and enabled submit
RemoveDanger submit variant

Interaction and responsive behavior

  • Duplicate teammate IDs collapse in displayed stack.
  • Escape/outside pointer closes popover.
  • Submit emits partial Conversation with new participantIds.
  • Composer remounts when participantIds change.

Accessibility contract

  • Avatar buttons have View [name] and aria-expanded.
  • Selection rows visually show checks but do not expose aria-pressed.
  • Document that missing selection semantics needs correction before release.

Known implementation limits

Frontend Cc is a simulation. Server model separates internal recipients from external delivery; do not assume the source demo implements that full boundary.

Composition example

<ThreadParticipants conversation={thread} contact={person} onUpdate={update} onContactOpen={open} onToast={notify} />

Source references

Source references
FileResponsibility
components/inbox/thread-participants.tsxThreadParticipants and internal participant dialog

Examples from the app

Actual Sonarist components with fictional conversations, people, example.com addresses and simulated operational states. Captured at 2× resolution or higher. Select an image to inspect it full size.

Thread Participants · Component detail · Light · Desktop · 1792 × 368 px
Participant Editor · Component detail · Light · Desktop · Add · 1152 × 840 px

Source audit: 2026-10-08 · Revision 10f45d1377b5 · Documentation v1.0.0