Loading AgentsKit ecosystem navigation…
AgentsKit Chat

Styling

Semantic theme tokens and native composition slots for every AgentsKit Chat shell.

View canonical Markdown

Styling

Pass the same semantic theme to any application shell. Input is runtime-validated; unknown tokens fail early; missing tokens use accessible defaults.

Theme object

code
import { resolveChatTheme } from '@agentskit/chat'

const theme = resolveChatTheme({
  colors: {
    accent: '#6157ff',
    background: '#0d1117',
    surface: '#161b22',
    text: '#e6edf3',
    muted: '#8b949e',
    border: '#30363d',
    onAccent: '#ffffff',
    danger: '#f85149',
  },
  spacing: { small: 8, medium: 12, large: 16 },
  radius: { medium: 8, large: 12 },
})
code
import { AgentChat } from '@agentskit/chat/react'
import '@agentskit/react/theme'

<AgentChat definition={chat} theme={theme} placeholder="Ask…" />

Live: Basic chat example uses a dark theme on this site.

Capability map

IntentReact / Vue / Svelte / Solid / AngularReact NativeInk
colorsCSS variableswrapper / text stylesInkTheme
spacingCSS variablesnumeric stylesunsupported
radiusCSS variablesborder radiusunsupported
fontCSS stacknative / custom familyunsupported

Helpers: toChatCssVariables (DOM), toChatNativeStyles (RN), toChatInkTheme (terminal).

Native slots

ShellComposition API
React / RN / Inkslots map (Message, Input, …)
Vuenamed scoped slots
Sveltetyped snippets
Solidrender props
Angularnamed content templates

Slots: container, message, input, thinking, confirmation, choiceList (and standard component slot where available). Composition is never serialized into ChatDefinition.

code
<AgentChat
  definition={chat}
  theme={theme}
  slots={{ Message: BrandedMessage }}
/>

Defaults provide live regions, labeled controls, alerts, and one active Ink keyboard owner. Replacements must keep equivalent a11y.

Fully headless

code
import { useChat } from '@agentskit/react' // or @agentskit/vue, etc.
const state = useChat(definition.chat)

Streaming, tools, memory, retry/edit/regenerate, and cancel stay on AgentsKit. Chat does not wrap that hook.