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>
You 4m ago
Are there any restrictive covenants on this property?
You
A
AI 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?
You
A
AI AI just now
The predicted completion is 15 Aug 2026.

Layout

TwoSided (default) is the chat convention — your turns on the right, the other party's on the left. Linear is the Slack convention — every turn sits left-aligned, and identity is carried by the source name plus BubbleTone. Enquiry threads use Linear, because more than two parties speak.

<koala-thread> (TwoSided, default)

Priya Shah 2d ago
Please confirm the boundary responsibility for the north-east fence.
Priya Shah
Jane Carter
Jane Carter 1d ago
The fence on the left as you face the house is ours — we replaced it in 2021.
Hardy & Marsh LLP 3h ago
The seller confirms the north-east fence is their responsibility, per the TP1 plan.

<koala-thread layout="Linear">

Priya Shah
Priya Shah 2d ago
Please confirm the boundary responsibility for the north-east fence.
Jane Carter
Jane Carter 1d ago
The fence on the left as you face the house is ours — we replaced it in 2021.
Hardy & Marsh LLP 3h ago
The seller confirms the north-east fence is their responsibility, per the TP1 plan.

Direction

Direction only affects the TwoSided layout — in Linear every message sits left regardless, so pass the honest direction and let the layout decide.

A
AI 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.
You

Bubble tones

An optional BubbleTone overrides the direction-based bubble colour — the author-colour convention for Linear threads: our turns are Primary, the client's are Info, and external parties (the other side) are Neutral.

Priya Shah
Priya Shah 15m ago
Our own turns render in the primary container.
Jane Carter
Jane Carter 10m ago
The client's turns render in the info container.
Hardy & Marsh LLP 5m ago
External parties — the other side's solicitor — stay on the neutral surface.

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

Contextual tag

An optional Tag rides in the meta row as a neutral outlined pill — used where a turn carries context beyond its channel, like an enquiry's audience ("Other side" / "Client only").

You Other side 40m ago
Please confirm the boundary responsibility for the north-east fence.
You
Client
Client Client only 35m ago
The fence on the left as you face the house is ours.

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

Footnote

An optional Footnote renders as a hint-text line under the bubble — provenance for turns entered on someone's behalf, like an enquiry reply logged by a colleague.

Hardy & Marsh LLP 1h ago
The property has had no alterations requiring building regulations approval.

Logged by Sarah Mitchell

3 helpers
Helper / attribute Notes
&lt;koala-thread&gt; Conversation container. Stacks <koala-message> children vertically and hands them the layout.
layout Optional ThreadLayout: TwoSided (default) or Linear. Inherited by the <koala-message> and <koala-thread-aside> children.
empty-text Centered placeholder shown when the thread has no messages.
&lt;koala-message message="…"&gt; One message. Takes a MessageView (source, channel, direction, timestamp, body, optional subject, status, tag, bubble tone, footnote).
&lt;koala-thread-aside label="…" icon="…"&gt; Labelled, indented side conversation nested inside a thread. icon defaults to MessageSquare.
MessageView.BodyHtml Rendered as raw HTML — the caller must sanitise it first.
MessageView.Tag Optional contextual chip in the meta row (neutral outlined pill) — e.g. an enquiry's audience.
MessageView.BubbleTone Optional MessageBubbleTone: Neutral, Primary, Info. Overrides the direction-based bubble colour — carries author identity in Linear threads.
MessageView.Footnote Optional hint-text line under the bubble — e.g. "Logged by Sarah Mitchell" for turns entered on someone's behalf.
KoalaMessageTagHelper.RenderHtml(message, layout) Static renderer for callers outside the Razor pipeline (client-side pending-message templates, other tag helpers) — emits identical markup. The bubble body carries a data-message-body hook so scripts can inject text into a cloned template.
message.BodyHtml = sanitiser.Sanitize(email.Html)
Do Sanitise BodyHtml in the adapter before building a MessageView — email bodies through the HTML sanitiser, AI output through Markdig then sanitise.
message.BodyHtml = email.Html
Don't Don't pass raw email or model output straight into BodyHtml. It renders unescaped, so unsanitised input is an XSS hole.
Priya Shah
Priya Shah 2d ago
Please confirm the boundary responsibility for the north-east fence.
Hardy & Marsh LLP 3h ago
The seller confirms the north-east fence is their responsibility, per the TP1 plan.
Do Let the thread own the layout — pass honest Direction data and set layout="Linear" for Slack-style.
Priya Shah
Priya Shah 50m ago
Please confirm the boundary responsibility for the north-east fence.
Hardy & Marsh LLP 45m ago
The seller confirms the fence is their responsibility.
Don't Don't force every message's Direction to Inbound to fake a left-aligned layout — the author identity disappears with the honest data.

Thread aside

<koala-thread-aside> is a labelled, indented side conversation nested inside a thread — a rail-marked run of messages that belong to the thread but not to its main exchange, like an enquiry's client-only turns.

Priya Shah
Priya Shah 2d ago
Please confirm the boundary responsibility for the north-east fence.
Client thread
Priya Shah
Priya Shah 6h ago
Do you know who has maintained the north-east fence since you moved in?
Jane Carter
Jane Carter 4h ago
We have — we replaced the panels in 2021 and painted it last spring.

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.