Rebar UI

1.0

synthetic

ChatThread

A conversation with citations.

Project assistantStreaming, citations, composer
JW

What slipped on the mobile release this week?

TL

Two things. Offline sync is in review and the crew-interview notes are late.

Task · Offline syncDoc · Interview log
JW

Can you draft a note for the crew?

Streaming

Drafting a note for the crew

Empty
Try “What is due this week?”
Error

What slipped on the mobile release this week?

Failed to send

In context

Assistant on a phoneThread above, composer pinned below
Assistant

What is due on 24 Oct?

Harbour launch at 09:00. The launch checklist is still open.

Event · Harbour launch

Bubbles variant

Classic messenger bubblesvariant="bubbles": 22px bubbles with a squared tail, citation cards, a round scroll-to-latest button

What does the Church teach about grace?

Grace is the free and undeserved help that God gives us.

CCC 1996 — Grace and Justification
Grace is favor, the free and undeserved help…
1 more citations
CCC 2006 — Merit
The term merit refers in general to the recompense owed…
Streaming

What is grace?

Crisis
Retry on a bubble

One more question please

No citation

The Eucharist is the source and summit.

No Catechism citation

Chip

Pill buttons beside contenttonal, outline (toggle) and floating
Tonal
Tonal sm
Outline
Outline pressed
Outline disabled
Floating

Footer, Latest pill, crisis tone

Catechist chatScroll up to bring the Latest pill; crisis and blocked replies drop the footer
Catechist

Why do we confess our sins to a priest and not straight to God?

Because Jesus gave the Apostles that ministry: ΓÇ£Whose sins you shall forgive, they are forgiven themΓÇ¥ (John 20:23). The priest acts in the person of Christ, and you are also free to speak to God directly at any time.

John 20:23CCC 1461

Can I just tell God and skip it?

You can and should speak to God directly, but Christ also instituted the sacrament of Reconciliation for mortal sin (CCC 1456).

CCC 1461

What do I say at the start?

“Bless me, Father, for I have sinned. It has been [time] since my last confession.” Then name your sins plainly.

Catechist

I feel like I can’t go on.

I can’t help with that request, but I can point you to what the Church teaches.

Reached the latest message 0 times.

Props

PropTypeRequiredDefault
messagesChatMessage[]Yes—
isTypingboolean | undefinedNo—
onRetry((message: ChatMessage) => void) | undefinedNo—
emptyMessagestring | undefinedNo—
markdownboolean | undefinedNotrue
bionicboolean | undefinedNo—
bionicOptionsBionicOptions | undefinedNo—
align"sides" | "start" | undefinedNosides
scrollToLatestboolean | { label: string; threshold?: number | undefined; icon?: ReactNode; } | undefinedNo—
variant"default" | "bubbles" | undefinedNodefault
moreCitationsLabel((count: number) => string) | undefinedNo—
afterMessagesReactNodeNo—
onReachLatest(() => void) | undefinedNo—

Accessibility

The transcript auto-scrolls only while the reader is already at the bottom; otherwise a "new messages" button appears instead of yanking them down. With sender, role: "system" or align="start" the thread becomes a labelled role="list" so a screen reader hears each speaker in order. The retry affordance on an errored message is a real button.

data-rebar-* attributes

data-rebar-component="chat-thread"; each message carries data-rebar-role and data-rebar-status (and data-rebar-tone="highlight" when tinted); the thread carries data-rebar-align="start" when set; parts include bubble, meta, byline, sender, header, actions, retry-button and typing-indicator.

Migrating to Ant Design

Not codemod-covered: AntD ships no chat transcript. A migration composes List + Avatar + Spin, or adopts Ant Design X.

afterMessages slot

afterMessages renders inside the scroller below the last message and the typing indicator (suggested replies, a follow-up row, a help card), so it scrolls with the transcript.

<ChatThread messages={messages} afterMessages={<SuggestedReplies />} />