About this set
An AI assistant chat with the details people expect from assistant tools, without calling any model. The conversation variant shows a question, an answer with paragraphs and a code block, and a composer with suggested prompts above it. The code block has a language label and a Copy button that uses the Clipboard API and confirms with Copied. Each answer has a Regenerate button and Good response and Bad response buttons that work as a pressed or unpressed pair. Sending or picking a prompt adds your message, shows a Quill is thinking indicator with three pulsing dots, then streams a canned reply word by word; under prefers-reduced-motion the dots hold still and the reply appears at once. The new chat variant starts on a serif greeting with four prompt cards that disappear once the first message is sent. While a reply streams, the log carries aria-busy so screen readers can wait for the finished text, and Send and Regenerate are disabled. Swap the list of canned replies in the script for a call to your own model.
What’s included
- Word-by-word streaming that is instant under reduced motion
- Code block with a language label and a Copy button
- Regenerate plus Good and Bad response toggle buttons
- Suggested prompt chips and an empty state with prompt cards
- No API calls; canned replies stand in for a model
Accessibility
The conversation is a role="log" region with aria-live="polite", and aria-busy is set while a reply streams so the finished answer is read once. The feedback buttons use aria-pressed and have hidden labels; copying and feedback are confirmed in a visually hidden role="status" line, and the code block is a focusable, named scroll region. Every control shows a focus outline, and the thinking dots and the streaming stop under prefers-reduced-motion.
Customise it
Change --ai-accent, --ai-user, --ai-bg and --ai-code-bg on .ai, and the token colours .k, .s and .f inside the code block. In Tailwind edit the --color-ai-* theme colours; in Bootstrap the same --ai-* variables sit on the .card.






