AI agents
Prompt input
A chat input that grows with the text, takes files, and turns into a stop button while the agent writes.
prompt-input
Manniche UI · open source
React components for interfaces where an AI agent does the work, and small effects that stay quiet. You own the code: shadcn copies it into your project.
Add one component directly, or add the registry to components.json and use short names.
npx shadcn@latest add https://mikkelmanniche.dk/lab/r/prompt-input.jsonAdd the registry
{
"registries": {
"@manniche": "https://mikkelmanniche.dk/lab/r/{name}.json"
}
}AI agents
A chat input that grows with the text, takes files, and turns into a stop button while the agent writes.
prompt-input
AI agents
Asks the person before the agent runs a tool, with the arguments in full and a clear mark on risky calls.
tool-approval
AI agents
The agent's steps as a list: waiting, running, done or failed, with timings.
agent-activity
AI agents
Shows a reply as it is written. New words fade in and a caret marks the end.
streaming-response
AI agents
The model's thinking, folded away. Open while it thinks, closed when the answer starts.
reasoning
AI agents
Code with a file name and a copy button. Bring your own highlighting, or none.
code-block
AI agents
Numbered citations after a claim and the list of sources they point to.
sources
AI agents
A change to one file as a coding agent proposes it, from a unified diff.
file-diff
AI agents
A toolbar that morphs into a one-line prompt for the agent, and back.
ai-action-bar
Motion
Counts up to a number when it scrolls into view. Screen readers hear only the final number.
number-ticker
Motion
Fades an element up out of a soft blur the first time it enters the view.
blur-fade
Motion
A marker stroke draws behind a phrase the first time it scrolls into view.
highlighter
Motion
Words go from faint to full as the reader scrolls through a paragraph.
text-reveal
Motion
Items scroll sideways in an endless loop and pause on hover or focus. Static under reduced motion.
marquee
Motion
A number whose changed digits roll up or down, read once by screen readers.
rolling-number
Surfaces
A card with a soft light that follows the mouse pointer.
spotlight-card
Surfaces
A quiet dot grid behind content, drawn with CSS only.
dot-pattern
Surfaces
A primary button with a slow sheen, and an optional lean towards the pointer.
shimmer-button
Overlays
Short messages that stack in a corner and leave on their own. Call toast() from anywhere.
toast
Overlays
A searchable list of commands in a modal, opened with Cmd+K. Built on the native dialog.
command-palette
Overlays
A panel that slides up from the bottom and can be dragged down to close.
sheet
Controls
A plus and minus counter with rolling digits that also works with the arrow keys.
stepper
Controls
An on and off switch whose knob stretches when pressed and springs across.
switch
Controls
Copies a value, and the icon and label roll over to say it worked, or that the browser said no.
copy-button
Controls
A delete button that counts down a few seconds and can be undone before anything happens.
timed-undo
Controls
A button for actions that must not happen by accident: it fills while held and fires when full.
hold-to-confirm
Controls
Pick tags from a pool, and each one flies into the box and back out when removed.
tag-picker
Controls
Draw a signature with mouse, finger or pen, or type it, and get a sharp PNG back.
signature-pad
Navigation
Tabs where a pill slides to the one you pick, with arrow keys like a proper tab list.
continuous-tabs
Navigation
Previous and next with a page number that rolls digit by digit.
pagination
Widgets
A collapsible getting-started card with a progress meter and the next step marked.
onboarding-checklist
Widgets
Set when and how people are reminded of an event, by notification or email.
event-reminders
Widgets
Opening hours or availability per weekday, with more than one range a day.
opening-hours
Hooks
True when the visitor has asked the system for less motion.
use-reduced-motion