Design System

Interactive Organisms

ImportCC

Available via @stackmates/ui-interactive/organisms

DataTable

Full-featured data table with TanStack Table. Supports sorting, pagination, row selection, and 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';

Usage

Basic with sorting and pagination

tsx
<DataTable
  data={tasks}
  columns={columns}
  getRowId={(row) => row.id}
  enableSorting
  enablePagination
  enableRowSelection
/>

Accessibility

  • Table uses <table> semantics with proper headers
  • Sort controls keyboard accessible
  • Pagination announced to screen readers
  • Row selection uses checkbox pattern

CRUDTable

DataTable with built-in CRUD actions (view, edit, delete) and confirmation dialogs. Extends all DataTable features.

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 (extends DataTableProps)

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';

Usage

With all CRUD actions

tsx
<CRUDTable
  data={contacts}
  columns={columns}
  entityName="contact"
  onView={handleView}
  onEdit={handleEdit}
  onDelete={handleDelete}
  onBulkDelete={handleBulkDelete}
  onCreateNew={handleCreate}
/>

Accessibility

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

MessageThread

Scrollable message list with auto-scroll and loading states. Composes MessageRow + TypingIndicator.

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
  • Messages use semantic list structure

ConversationPanel

Full conversation area: header + message thread + composer. Manages local input state internally.

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 title provides context for screen readers
  • Composer textarea auto-resizes
  • Enter submits, Shift+Enter newline

StageTimeline

Vertical timeline of workflow stages with connecting dots and cost summary. Composes StageCard + CostDisplay.

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

  • Timeline uses semantic list structure
  • Stage status conveyed via icon + text (not color alone)
  • Cost display uses formatted numbers