Sonarist project

Sonarist / Design system

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

Design system contents

Components

Message cards and layered history

Prioritize the latest message while retaining earlier content in an expandable stack.

On this page

Purpose and composition

Prioritize the latest message while retaining earlier content in an expandable stack.

Use through ConversationDetail; message cards are internal helpers rather than standalone exports.

Anatomy

Anatomy
PartResponsibility
HeaderSender avatar/name and sent time
BodyParagraph array
AttachmentsNamed source attachment metadata
Quoted textNative details disclosure
History stackEarlier previews overlapping behind latest card

Configuration and variants

Configuration and variants
Input / variantContract
conversation.messagesOrder determines earlier versus latest message
expansion statePer-conversation array of message IDs
deliveryStatusBadge/details and failure feedback where supplied
previewCanvas measures source font and fits whole words

States and feedback

States and feedback
StateVisible / behavioral result
CollapsedFixed-height preview with computed ellipsis
ExpandedFull message and collapse affordance
LatestAlways readable full card
QuotedCollapsed or expanded native disclosure

Interaction and responsive behavior

  • Click an earlier message to expand.
  • ResizeObserver and font readiness update one-line preview.
  • Preserve 62/68px native stack overlap; do not elongate cards to remove it.
  • Latest message remains layered above earlier cards.

Accessibility contract

  • Earlier-message button has a sender-specific accessible label.
  • Native details exposes quoted text.
  • Check that overlap does not obscure focused content.

Known implementation limits

Message order comes from supplied array. Local merge sorts display strings, not canonical timestamps; production chronology needs a real time model.

Composition example

<ConversationDetail conversation={thread} {...callbacks} />

Source references

Source references
FileResponsibility
components/inbox/conversation-detail.tsxInternal MessageCard, CollapsedMessage, OneLineMessagePreview

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.

Message Stack · Component detail · Light · Desktop · Expanded · 1680 × 1332 px
Conversation · Screen · Light · Desktop · 2880 × 2000 px
Conversation · Screen · Light · Desktop · Full Page · 2880 × 2382 px

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