Kanshō

Docs / Tool calls /

ConversationRich

Rich conversation thread rendering mixed message types — user, assistant, and tool calls — in a single scrollable view.

Preview

Research session

Claude · sonnet-4-5

Based on the codebase analysis, the authentication flow uses 1 and short-lived JWTs refreshed via 2. The refresh logic lives in src/lib/auth/refresh.ts.

Variants

With sources

Web research

claude-sonnet-4-5 · 3 sources

Tailwind v4 introduces a new CSS-first configuration approach — no more tailwind.config.js. Design tokens are declared directly in CSS using @theme.

Compact tool list

Image attachment

Image analysis

The screenshot shows the dashboard with the metrics panel open. The layout uses a two-column grid with a sticky sidebar.

Dashboard screenshot
Dashboard · metrics panel open
dashboard-screenshot.png · 184 KB

Props

PropTypeDescription
titlestringOptional heading rendered in the card's header bar.
subtitlestringOptional secondary line below the title — useful for model name or session info.
metaReact.ReactNodeSlot for right-aligned header content (e.g. action buttons or a status pill).
children*React.ReactNodeChat body content — prose, tool call rows, source pills, attachments, etc.
density"comfortable" | "compact""comfortable" (default) uses larger padding and gap; "compact" tightens spacing for tool-call lists.
classNamestringExtra classes for the outer section element.

* required.

Usage

import {
  ChatContainer,
  SourcePillGroup,
  InlineCopyButton,
} from "@/components/agent/conversation-rich";

<ChatContainer
  title="Research session"
  subtitle="claude-sonnet-4-5"
  density="comfortable"
>
  <p>Your response text here.</p>
  <SourcePillGroup
    sources={[
      { domain: "tailwindcss.com", label: "Tailwind v4 docs" },
    ]}
  />
  <InlineCopyButton label="Copy response" />
</ChatContainer>