Design System

Interactive Organisms

ImportCC

Available via @stackmates/ui-interactive/organisms

DataTable

Full-featured data table with TanStack Table. Sorting, pagination, row selection, bulk actions.

TaskStatusPriorityDue Date
Follow up on Acme proposalnot startedhigh1/21/2026
Prepare demo for TechStartin progressurgent1/22/2026
Schedule intro call with Global Venturesnot startedmedium1/25/2026
Rows per page
Page 1 of 2

DataTableProps

PropTypeDefaultDescription
data*TData[]Array of row data
columns*ColumnDef<TData>[]TanStack Table column definitions
getRowId(row: TData) => stringRow ID accessor
enableSortingbooleanfalseEnable column sorting
enablePaginationbooleanfalseEnable pagination controls
enableRowSelectionbooleanfalseEnable row selection checkboxes

Installation

typescript
import { DataTable } from '@stackmates/ui-interactive/organisms';

Accessibility

  • Table uses <table> semantics
  • Sort controls keyboard accessible
  • Row selection uses checkbox pattern

CRUDTable

DataTable with built-in CRUD actions and confirmation dialogs.

NameEmailCompanyStatusActions
Sarah Chensarah.chen@acme.comAcme CorpActive
Marcus Johnsonmarcus@techstart.ioTechStartActive
Elena Rodriguezelena@globalventures.comGlobal VenturesActive
Showing 1 to 3 of 4 results
Rows per page
Page 1 of 2

CRUDTableProps

PropTypeDefaultDescription
entityNamestringEntity name for UI labels
onView(row: TData) => voidView action handler
onEdit(row: TData) => voidEdit action handler
onDelete(row: TData) => Promise<void>Delete action handler
onCreateNew() => voidCreate new handler
onBulkDelete(rows: TData[]) => Promise<void>Bulk delete handler

Installation

typescript
import { CRUDTable } from '@stackmates/ui-interactive/organisms';

Accessibility

  • Action buttons labeled with entity name
  • Delete uses AlertDialog
  • Bulk actions toolbar on selection

MessageThread

Scrollable message list with auto-scroll and loading states.

Analyze our sales pipeline.

OR
Orchestrator

I'll analyze using the optimal-stopping algorithm and SPCL scoring.

Run the sales-rfp workflow for Acme.

MessageThreadProps

PropTypeDefaultDescription
messages*MessageRowData[]Array of messages to display
isLoadingbooleanfalseShow typing indicator
classNamestringAdditional CSS classes

Installation

typescript
import { MessageThread } from '@stackmates/ui-interactive/organisms';

Accessibility

  • Auto-scrolls to newest message
  • Loading state shows TypingIndicator

ConversationPanel

Full conversation area: header + message thread + composer.

Orchestrator

Analyze our sales pipeline.

OR
Orchestrator

I'll analyze using the optimal-stopping algorithm and SPCL scoring.

Run the sales-rfp workflow for Acme.

ConversationPanelProps

PropTypeDefaultDescription
messages*MessageRowData[]Array of messages
onSend*(content: string) => voidSend message handler
isLoadingbooleanfalseLoading state
headerTitlestringHeader title text
classNamestringAdditional CSS classes

Installation

typescript
import { ConversationPanel } from '@stackmates/ui-interactive/organisms';

Accessibility

  • Header provides context
  • Composer auto-resizes
  • Enter submits, Shift+Enter newline

StageTimeline

Vertical timeline of workflow stages with connecting dots and cost summary.

Research & Discovery
Knowledge Architect
8.5s92%completed
Needs Analysis
Navigator
12.3s87%completed
Proposal Generation
Orchestrator
running
Quality Review
Knowledge Architect
pending
Total Cost
$0.12579,600in / 16,500out

StageTimelineProps

PropTypeDefaultDescription
stages*StageCardData[]Array of workflow stages
totalCostUsdnumberTotal cost for summary
totalTokens{ input: number; output: number }Total token counts
classNamestringAdditional CSS classes

Installation

typescript
import { StageTimeline } from '@stackmates/ui-interactive/organisms';

Accessibility

  • Semantic list structure
  • Stage status via icon + text, not color alone