docs/briefs/directory.md

Module brief: DirectoryModule

Slug / tier / group / category: directory · advanced · features · Community One-liner: Member directory with 1:1 DM threads. Closest references: CollectionModule (rows + chevron), TicketModule (expandable detail state). Built from shared chat primitives (ThreadRow, PresenceDot, MessageList, MessageInput).

Anatomy (top → bottom)

  • ModuleShell, title default "Members"
  • Search field (soft TextField)
  • Body: ThreadRow list — avatar + PresenceDot, name, last-message snippet, time, unread count
  • Tapping a row swaps to the DM thread view: back row (‹ name + presence), MessageList, MessageInput

Content model (props)

prop type sample value
members {id, name, online?, snippet?, time?, unread?, messages?}[] Alex Rivera, Sam Okafor…
onSend (memberId, text) => void host-driven; mock in studio

Client-editable fields

key label type
title Module title text
header Show header toggle

States & interactions

List ↔ thread view is internal state; back arrow returns. Presence dot = seed accent when online. Unread count badge from the seed scale. Empty search → "No members match".

Out of scope

Realtime, profiles/blocking, group creation (GroupChatsModule covers groups).