Koala logo Design
No matches for “
↑↓ navigate open Esc close
Components Messages

Messages

A single message surface — source, channel, time and body — that reads the same whether it's an AI reply, an email, or (later) WhatsApp / SMS. <koala-thread> stacks them into a conversation.

<koala-message>

Canonical

You 4m ago
Are there any restrictive covenants on this property?
Y
AI 4m ago
The dossier doesn't mention covenants — those live in the title register, which I'd check against the case documents.
You 1m ago
What's the agreed completion date?
Y
AI just now
The predicted completion is 15 Aug 2026.

Variants

Direction

AI 2m ago
Inbound messages sit on the left with the sender's glyph.
You 2m ago
Outbound messages sit on the right, in the plum container.
Y

Channels

The same surface labels its source channel. Only AI is wired today; email, WhatsApp and SMS render the frame ready for when their data lands.

Koala Conveyancing Email 2d ago
Your completion date
Hi Jane, your completion date is confirmed. Please review the attached statement.
Delivered
KC
Koala Conveyancing WhatsApp 5h ago
Quick reminder that your ID check is still outstanding.
Sent
KC
Koala Conveyancing SMS 1d ago
Your searches have come back. We'll be in touch shortly.
Failed
KC

Status tones

The optional status badge carries a tone: Neutral, Success, Warning, Danger — for delivery state or the answering model.

Koala Conveyancing Email 30m ago
A sent message — neutral tone.
Sent
KC
Koala Conveyancing Email 25m ago
A delivered message — success tone.
Delivered
KC
Koala Conveyancing Email 20m ago
A bounced message — danger tone.
Failed
KC

Props

2 helpers
Helper / attribute Notes
<koala-thread>Conversation container. Stacks <koala-message> children vertically.
empty-textCentered placeholder shown when the thread has no messages.
<koala-message message="…">One message. Takes a MessageView (source, channel, direction, timestamp, body, optional subject + status).
MessageView.BodyHtmlRendered as raw HTML — the caller must sanitise it first.

Do & don't

Do

Sanitise BodyHtml in the adapter before building a MessageView — email bodies through the HTML sanitiser, AI output through Markdig then sanitise.

Don't

Pass raw email or model output straight into BodyHtml. It renders unescaped, so unsanitised input is an XSS hole.

Empty thread

empty-text renders a centered placeholder when a thread has no messages yet.

Ask a question to get started.

Message input

<koala-message-input> is the composer: a text area with a send button seamlessly attached at the foot. Enter sends; Shift+Enter adds a line. Drop it inside a form whose submit posts the message.