Ask
On the sheet
Done. Two sentences, same claim.
Frames an assistant exchange with a user message, reply, suggestion, and input row.
Done. Two sentences, same claim.
On the sheet
Done. Two sentences, same claim.
Three ways in. They share one source, so the pixels match whichever you pick.
npm install @noorddev/vlak-react
// once, next to your app's root
import "@noorddev/vlak-react/css";
import { Assistant, AssistantHead, AssistantInput, AssistantMsg, AssistantReply, AssistantSend, AssistantStatus, AssistantTitle, AssistantUserBlock } from "@noorddev/vlak-react";Precompiled React and one stylesheet. No compiler to configure. Per-component imports work too: @noorddev/vlak-react/components/assistant.
npx @noorddev/vlak-cli add assistant
The StyleX leaf lands in components/vlak/, for your own compiler to own. See StyleX.
npx shadcn add https://vlak.dev/r/assistant.json
The same registry item, installed by shadcn's CLI.
<link rel="stylesheet" href="node_modules/@noorddev/vlak/css/vlak.css" />
No React. Link vlak.css and use the markup and classes below.
import { Assistant, AssistantHead, AssistantInput, AssistantMsg, AssistantReply, AssistantSend, AssistantStatus, AssistantTitle, AssistantUserBlock } from "@noorddev/vlak-react";
<Assistant>
<AssistantHead>
<AssistantTitle>Assistant</AssistantTitle>
<AssistantStatus>Ready</AssistantStatus>
</AssistantHead>
<AssistantMsg user>
<AssistantUserBlock>Make the intro tighter.</AssistantUserBlock>
</AssistantMsg>
<AssistantReply>Done. Two sentences, same claim.</AssistantReply>
<AssistantInput>
<input aria-label="Message" placeholder="Ask anything" />
<AssistantSend>Send</AssistantSend>
</AssistantInput>
</Assistant>Chat panel: user block, reply, suggestion card, input row.
Also accepts HTMLAttributes<HTMLDivElement>.
Also accepts HTMLAttributes<HTMLDivElement>.
Also accepts HTMLAttributes<HTMLDivElement>.
Also accepts HTMLAttributes<HTMLDivElement>.
Also accepts HTMLAttributes<HTMLDivElement>.
| Prop | Type | Default | Description |
|---|---|---|---|
user | boolean |
Also accepts HTMLAttributes<HTMLDivElement>.
Also accepts HTMLAttributes<HTMLParagraphElement>.
Also accepts HTMLAttributes<HTMLSpanElement>.
Also accepts HTMLAttributes<HTMLSpanElement>.
Also accepts HTMLAttributes<HTMLSpanElement>.
Also accepts HTMLAttributes<HTMLParagraphElement>.
Also accepts HTMLAttributes<HTMLSpanElement>.
Also accepts HTMLAttributes<HTMLDivElement>.
<div class="rs-ai"><div class="rs-ai-msg rs-ai-user"><div class="rs-ai-user-block">Make the intro tighter.</div></div><p class="rs-ai-reply">Done. Two sentences, same claim.</p></div>