{"name":"easeUI","description":"Open-source React components with natural motion, installable as source.","site":"https://easeui.dev","endpoints":{"llms":"https://easeui.dev/llms.txt","index":"https://easeui.dev/r","shadcn_registry":"https://easeui.dev/r/registry.json","shadcn_item":"https://easeui.dev/r/{slug}.json","directory_registry":"https://easeui.dev/registry.json","directory_item":"https://easeui.dev/{slug}.json","detail":"https://easeui.dev/r/{slug}","raw":"https://easeui.dev/r/{slug}/raw","markdown":"https://easeui.dev/components/{category}/{slug}.md"},"categories":[{"slug":"motion","name":"Components","description":"Animated React components with quick, simple motion. Add any of them to your project with the shadcn CLI."},{"slug":"agents","name":"Agents","description":"React components for AI interfaces, covering conversations, streaming answers, progress, and tool activity."}],"components":[{"slug":"accordion","name":"Accordion","description":"Expanding sections that grow to their natural height with no measuring, with arrow key navigation and closed panels skipped by Tab.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/accordion","raw_url":"https://easeui.dev/r/accordion/raw","page_url":"https://easeui.dev/components/motion/accordion","markdown_url":"https://easeui.dev/components/motion/accordion.md"},{"slug":"alert","name":"Alert","description":"Banner with a colored accent stripe. Body text stays neutral so contrast never depends on the variant.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/alert","raw_url":"https://easeui.dev/r/alert/raw","page_url":"https://easeui.dev/components/motion/alert","markdown_url":"https://easeui.dev/components/motion/alert.md"},{"slug":"avatar","name":"Avatar","description":"Round avatar in three sizes with an optional status dot. The image fades in on load and falls back to initials, and a group stacks them and fans them out on hover.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-29","detail_url":"https://easeui.dev/r/avatar","raw_url":"https://easeui.dev/r/avatar/raw","page_url":"https://easeui.dev/components/motion/avatar","markdown_url":"https://easeui.dev/components/motion/avatar.md"},{"slug":"badge","name":"Badge","description":"Small status pill in five colors, with a crossfade for when its variant changes.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/badge","raw_url":"https://easeui.dev/r/badge/raw","page_url":"https://easeui.dev/components/motion/badge","markdown_url":"https://easeui.dev/components/motion/badge.md"},{"slug":"button","name":"Button","description":"Button with a quick press, hairline rings instead of borders, four variants, and a 44px tap area even at small sizes.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/button","raw_url":"https://easeui.dev/r/button/raw","page_url":"https://easeui.dev/components/motion/button","markdown_url":"https://easeui.dev/components/motion/button.md"},{"slug":"card","name":"Card","description":"Bordered surface with header, content, and footer parts for grouping related content.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/card","raw_url":"https://easeui.dev/r/card/raw","page_url":"https://easeui.dev/components/motion/card","markdown_url":"https://easeui.dev/components/motion/card.md"},{"slug":"checkbox","name":"Checkbox","description":"Checkbox on a real checkbox input, with a check mark that pops in rather than just appearing.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/checkbox","raw_url":"https://easeui.dev/r/checkbox/raw","page_url":"https://easeui.dev/components/motion/checkbox","markdown_url":"https://easeui.dev/components/motion/checkbox.md"},{"slug":"command-palette","name":"Command Palette","description":"Command-K style search overlay that filters as you type, with arrow keys to move the highlight and Enter to select.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/command-palette","raw_url":"https://easeui.dev/r/command-palette/raw","page_url":"https://easeui.dev/components/motion/command-palette","markdown_url":"https://easeui.dev/components/motion/command-palette.md"},{"slug":"copy-button","name":"Copy Button","description":"Copies text to the clipboard and trades its icon for a check for a moment, with a label or as a single icon.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/copy-button","raw_url":"https://easeui.dev/r/copy-button/raw","page_url":"https://easeui.dev/components/motion/copy-button","markdown_url":"https://easeui.dev/components/motion/copy-button.md"},{"slug":"diff-view","name":"Diff View","description":"A line-by-line diff with an added or removed mark in the gutter and a tinted row for each side. Renders a diff, doesn't compute one.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/diff-view","raw_url":"https://easeui.dev/r/diff-view/raw","page_url":"https://easeui.dev/components/motion/diff-view","markdown_url":"https://easeui.dev/components/motion/diff-view.md"},{"slug":"drawer","name":"Drawer","description":"Sheet that slides up from the bottom edge on the native dialog element. Drag the handle down, or flick it, to dismiss.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/drawer","raw_url":"https://easeui.dev/r/drawer/raw","page_url":"https://easeui.dev/components/motion/drawer","markdown_url":"https://easeui.dev/components/motion/drawer.md"},{"slug":"dropdown-menu","name":"Dropdown Menu","description":"Action menu that opens from a trigger, flips upward when there is no room below, and supports a destructive item.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/dropdown-menu","raw_url":"https://easeui.dev/r/dropdown-menu/raw","page_url":"https://easeui.dev/components/motion/dropdown-menu","markdown_url":"https://easeui.dev/components/motion/dropdown-menu.md"},{"slug":"dynamic-island","name":"Dynamic Island","description":"A pill that morphs between a compact status line and any number of named live-activity views, the same element reshaping via layout animation each time.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/dynamic-island","raw_url":"https://easeui.dev/r/dynamic-island/raw","page_url":"https://easeui.dev/components/motion/dynamic-island","markdown_url":"https://easeui.dev/components/motion/dynamic-island.md"},{"slug":"expandable-tabs","name":"Expandable Tabs","description":"A row of icon tabs where the selected one expands to reveal its label, sliding a shared background pill to match.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/expandable-tabs","raw_url":"https://easeui.dev/r/expandable-tabs/raw","page_url":"https://easeui.dev/components/motion/expandable-tabs","markdown_url":"https://easeui.dev/components/motion/expandable-tabs.md"},{"slug":"file-upload","name":"File Upload","description":"Dropzone that also opens the native file picker, with a list below it that pops each file in and collapses smoothly on remove.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/file-upload","raw_url":"https://easeui.dev/r/file-upload/raw","page_url":"https://easeui.dev/components/motion/file-upload","markdown_url":"https://easeui.dev/components/motion/file-upload.md"},{"slug":"gradient-text","name":"Gradient Text","description":"Text filled with a slowly drifting rainbow. It pauses while off screen and holds still when reduced motion is on.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/gradient-text","raw_url":"https://easeui.dev/r/gradient-text/raw","page_url":"https://easeui.dev/components/motion/gradient-text","markdown_url":"https://easeui.dev/components/motion/gradient-text.md"},{"slug":"hold-to-confirm","name":"Hold to Confirm","description":"Button for destructive actions that fills while you hold it and only fires once the fill completes. Letting go early drains it back quickly.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/hold-to-confirm","raw_url":"https://easeui.dev/r/hold-to-confirm/raw","page_url":"https://easeui.dev/components/motion/hold-to-confirm","markdown_url":"https://easeui.dev/components/motion/hold-to-confirm.md"},{"slug":"input","name":"Input","description":"Text input whose focus ring grows from a hairline to two px, with a destructive ring for aria-invalid.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/input","raw_url":"https://easeui.dev/r/input/raw","page_url":"https://easeui.dev/components/motion/input","markdown_url":"https://easeui.dev/components/motion/input.md"},{"slug":"insight-card","name":"Insight Card","description":"A stat tile: a label, a headline value, and an optional trend pill. Pass a Number Ticker as the value to have it roll in on change.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/insight-card","raw_url":"https://easeui.dev/r/insight-card/raw","page_url":"https://easeui.dev/components/motion/insight-card","markdown_url":"https://easeui.dev/components/motion/insight-card.md"},{"slug":"modal","name":"Modal","description":"Centered dialog on the native dialog element that fades and scales in, leaves faster than it arrives, and keeps focus inside while open.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/modal","raw_url":"https://easeui.dev/r/modal/raw","page_url":"https://easeui.dev/components/motion/modal","markdown_url":"https://easeui.dev/components/motion/modal.md"},{"slug":"morphing-search","name":"Morphing Search","description":"A circular search button that morphs into a text field: the same element grows and reshapes via a layout animation, rather than a new one popping in beside it.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/morphing-search","raw_url":"https://easeui.dev/r/morphing-search/raw","page_url":"https://easeui.dev/components/motion/morphing-search","markdown_url":"https://easeui.dev/components/motion/morphing-search.md"},{"slug":"notification-stack","name":"Notification Stack","description":"A deck of notification cards: collapsed to the top card with peeking edges behind it, fanning into a readable list on hover or focus.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/notification-stack","raw_url":"https://easeui.dev/r/notification-stack/raw","page_url":"https://easeui.dev/components/motion/notification-stack","markdown_url":"https://easeui.dev/components/motion/notification-stack.md"},{"slug":"number-ticker","name":"Number Ticker","description":"Number that rolls to a new value like an odometer, one changed digit at a time.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/number-ticker","raw_url":"https://easeui.dev/r/number-ticker/raw","page_url":"https://easeui.dev/components/motion/number-ticker","markdown_url":"https://easeui.dev/components/motion/number-ticker.md"},{"slug":"otp-input","name":"OTP Input","description":"One box per digit for a verification code, with paste and SMS autofill support and a shake for a wrong code.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/otp-input","raw_url":"https://easeui.dev/r/otp-input/raw","page_url":"https://easeui.dev/components/motion/otp-input","markdown_url":"https://easeui.dev/components/motion/otp-input.md"},{"slug":"popover","name":"Popover","description":"A panel of arbitrary content anchored to a trigger, opening on click and flipping above it when there's no room below.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/popover","raw_url":"https://easeui.dev/r/popover/raw","page_url":"https://easeui.dev/components/motion/popover","markdown_url":"https://easeui.dev/components/motion/popover.md"},{"slug":"progress","name":"Progress","description":"Progress bar that fills with scale instead of width, plus an indeterminate state for unknown durations.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/progress","raw_url":"https://easeui.dev/r/progress/raw","page_url":"https://easeui.dev/components/motion/progress","markdown_url":"https://easeui.dev/components/motion/progress.md"},{"slug":"pull-to-refresh","name":"Pull to Refresh","description":"A pull-down gesture over scrollable content: the indicator tracks the finger 1:1, then resists past the trigger distance and spins while refreshing.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/pull-to-refresh","raw_url":"https://easeui.dev/r/pull-to-refresh/raw","page_url":"https://easeui.dev/components/motion/pull-to-refresh","markdown_url":"https://easeui.dev/components/motion/pull-to-refresh.md"},{"slug":"range-slider","name":"Range Slider","description":"Native range input with a filled track and tick dots, so keyboard and screen reader support come built in.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/range-slider","raw_url":"https://easeui.dev/r/range-slider/raw","page_url":"https://easeui.dev/components/motion/range-slider","markdown_url":"https://easeui.dev/components/motion/range-slider.md"},{"slug":"rating","name":"Rating","description":"A row of stars that previews the score on hover, fills up to the pick in a quick wave, and moves one star at a time with the arrow keys.","category":"motion","published_at":"2026-09-29","updated_at":"2026-09-29","detail_url":"https://easeui.dev/r/rating","raw_url":"https://easeui.dev/r/rating/raw","page_url":"https://easeui.dev/components/motion/rating","markdown_url":"https://easeui.dev/components/motion/rating.md"},{"slug":"select","name":"Select","description":"Composable select whose menu fades and scales out of the trigger, and opens upward when there is no room below.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/select","raw_url":"https://easeui.dev/r/select/raw","page_url":"https://easeui.dev/components/motion/select","markdown_url":"https://easeui.dev/components/motion/select.md"},{"slug":"selection-actions","name":"Selection Actions","description":"A floating bar of bulk actions that fades and rises in once a selection leaves zero, for pairing with Table or any selectable list.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/selection-actions","raw_url":"https://easeui.dev/r/selection-actions/raw","page_url":"https://easeui.dev/components/motion/selection-actions","markdown_url":"https://easeui.dev/components/motion/selection-actions.md"},{"slug":"skeleton","name":"Skeleton","description":"Loading placeholder with one shimmer shared across the page. Wrap real content and it takes the same shape, then crossfades away.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/skeleton","raw_url":"https://easeui.dev/r/skeleton/raw","page_url":"https://easeui.dev/components/motion/skeleton","markdown_url":"https://easeui.dev/components/motion/skeleton.md"},{"slug":"stepper","name":"Stepper","description":"Numbered steps joined by a line that fills as you move forward. Finished steps trade their number for a check and can be clicked to go back.","category":"motion","published_at":"2026-09-29","updated_at":"2026-09-29","detail_url":"https://easeui.dev/r/stepper","raw_url":"https://easeui.dev/r/stepper/raw","page_url":"https://easeui.dev/components/motion/stepper","markdown_url":"https://easeui.dev/components/motion/stepper.md"},{"slug":"switch","name":"Switch","description":"On and off switch with a quick slide and no bounce. Inside a label, the whole row is the tap target.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/switch","raw_url":"https://easeui.dev/r/switch/raw","page_url":"https://easeui.dev/components/motion/switch","markdown_url":"https://easeui.dev/components/motion/switch.md"},{"slug":"table","name":"Table","description":"A plain, composable data table: sortable headers with an arrow that only shows on hover until active, and rows that tint when selected.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-16","detail_url":"https://easeui.dev/r/table","raw_url":"https://easeui.dev/r/table/raw","page_url":"https://easeui.dev/components/motion/table","markdown_url":"https://easeui.dev/components/motion/table.md"},{"slug":"tabs","name":"Tabs","description":"Pill, segment, or underline tabs with an indicator that slides to the selected tab.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/tabs","raw_url":"https://easeui.dev/r/tabs/raw","page_url":"https://easeui.dev/components/motion/tabs","markdown_url":"https://easeui.dev/components/motion/tabs.md"},{"slug":"tag-input","name":"Tag Input","description":"A field that turns what you type into tags. Enter or a comma adds one, Backspace marks then removes the last, and a duplicate shakes the tag that already exists.","category":"motion","published_at":"2026-09-29","updated_at":"2026-09-29","detail_url":"https://easeui.dev/r/tag-input","raw_url":"https://easeui.dev/r/tag-input/raw","page_url":"https://easeui.dev/components/motion/tag-input","markdown_url":"https://easeui.dev/components/motion/tag-input.md"},{"slug":"text-animation","name":"Text Animation","description":"One component, three ways to animate text: a scramble that resolves into place, a word or character reveal out of a blur, and a loading shimmer sweep.","category":"motion","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/text-animation","raw_url":"https://easeui.dev/r/text-animation/raw","page_url":"https://easeui.dev/components/motion/text-animation","markdown_url":"https://easeui.dev/components/motion/text-animation.md"},{"slug":"textarea","name":"Textarea","description":"Textarea that grows with its content instead of scrolling, down to three rows and up to a scrollable cap.","category":"motion","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/textarea","raw_url":"https://easeui.dev/r/textarea/raw","page_url":"https://easeui.dev/components/motion/textarea","markdown_url":"https://easeui.dev/components/motion/textarea.md"},{"slug":"theme-toggle","name":"Theme Toggle","description":"Light and dark switch that reveals the new theme as a circle growing from the center of the screen or from the button itself.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/theme-toggle","raw_url":"https://easeui.dev/r/theme-toggle/raw","page_url":"https://easeui.dev/components/motion/theme-toggle","markdown_url":"https://easeui.dev/components/motion/theme-toggle.md"},{"slug":"toast","name":"Toast","description":"Toasts that stay long enough to read based on their word count, and pause while hovered or while the tab is in the background.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/toast","raw_url":"https://easeui.dev/r/toast/raw","page_url":"https://easeui.dev/components/motion/toast","markdown_url":"https://easeui.dev/components/motion/toast.md"},{"slug":"tooltip","name":"Tooltip","description":"Tooltip that shows a label with its keyboard shortcut, using Command on Mac and Ctrl elsewhere. Moving along a toolbar crossfades to the next tooltip with no delay.","category":"motion","published_at":"2026-09-13","updated_at":"2026-09-13","detail_url":"https://easeui.dev/r/tooltip","raw_url":"https://easeui.dev/r/tooltip/raw","page_url":"https://easeui.dev/components/motion/tooltip","markdown_url":"https://easeui.dev/components/motion/tooltip.md"},{"slug":"agent-loading-states","name":"Agent Loading States","description":"Three loading states for AI interfaces: shimmering status text, live agent progress, and cycling reasoning phrases.","category":"agents","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/agent-loading-states","raw_url":"https://easeui.dev/r/agent-loading-states/raw","page_url":"https://easeui.dev/components/agents/agent-loading-states","markdown_url":"https://easeui.dev/components/agents/agent-loading-states.md"},{"slug":"code-block","name":"Code Block","description":"A code block with a label, a copy button, and light coloring for keywords, strings, comments and numbers, with no highlighter dependency.","category":"agents","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/code-block","raw_url":"https://easeui.dev/r/code-block/raw","page_url":"https://easeui.dev/components/agents/code-block","markdown_url":"https://easeui.dev/components/agents/code-block.md"},{"slug":"flowchart","name":"Flowchart","description":"A sequence of steps on a dotted canvas, connected by curves that measure the actual cards and follow as you drag one. Click a step to light up its connectors, or edit an if/else step's chips with real dropdowns.","category":"agents","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/flowchart","raw_url":"https://easeui.dev/r/flowchart/raw","page_url":"https://easeui.dev/components/agents/flowchart","markdown_url":"https://easeui.dev/components/agents/flowchart.md"},{"slug":"message-bubble","name":"Message Bubble","description":"A focused conversational surface with visual tones, independent alignment, and a speech-bubble tail that pops in on arrival.","category":"agents","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/message-bubble","raw_url":"https://easeui.dev/r/message-bubble/raw","page_url":"https://easeui.dev/components/agents/message-bubble","markdown_url":"https://easeui.dev/components/agents/message-bubble.md"},{"slug":"pixel-loader","name":"Pixel Loader","description":"A 3x3 grid of cells that twinkle on independent, randomized cycles, paired with a shimmering label and an optional live elapsed timer.","category":"agents","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/pixel-loader","raw_url":"https://easeui.dev/r/pixel-loader/raw","page_url":"https://easeui.dev/components/agents/pixel-loader","markdown_url":"https://easeui.dev/components/agents/pixel-loader.md"},{"slug":"prompt-input","name":"Prompt Input","description":"A chat composer that grows with its content, submits on Enter, and crossfades its send button into a stop button while a reply streams.","category":"agents","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/prompt-input","raw_url":"https://easeui.dev/r/prompt-input/raw","page_url":"https://easeui.dev/components/agents/prompt-input","markdown_url":"https://easeui.dev/components/agents/prompt-input.md"},{"slug":"reasoning-disclosure","name":"Reasoning Disclosure","description":"A model's reasoning, shimmering \"Thinking\" while it streams and folding into \"Thought for 8s\" once the answer starts. Reopen it any time.","category":"agents","published_at":"2026-10-21","updated_at":"2026-10-21","detail_url":"https://easeui.dev/r/reasoning-disclosure","raw_url":"https://easeui.dev/r/reasoning-disclosure/raw","page_url":"https://easeui.dev/components/agents/reasoning-disclosure","markdown_url":"https://easeui.dev/components/agents/reasoning-disclosure.md"},{"slug":"streaming-response","name":"Streaming Response","description":"Wraps a response with the actions people expect once it settles: copy, replay, share, a thumbs up or down, and a list of suggested follow-up prompts. No card or border, so the answer reads as part of the page.","category":"agents","published_at":"2026-09-14","updated_at":"2026-09-16","detail_url":"https://easeui.dev/r/streaming-response","raw_url":"https://easeui.dev/r/streaming-response/raw","page_url":"https://easeui.dev/components/agents/streaming-response","markdown_url":"https://easeui.dev/components/agents/streaming-response.md"},{"slug":"streaming-text","name":"Streaming Text","description":"Reveals a model response as it streams in, fading each newly arrived word in on its own without replaying what's already on screen.","category":"agents","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/streaming-text","raw_url":"https://easeui.dev/r/streaming-text/raw","page_url":"https://easeui.dev/components/agents/streaming-text","markdown_url":"https://easeui.dev/components/agents/streaming-text.md"},{"slug":"todo-list","name":"Todo List","description":"A collapsible agent task plan with morphing status marks and a completion count.","category":"agents","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/todo-list","raw_url":"https://easeui.dev/r/todo-list/raw","page_url":"https://easeui.dev/components/agents/todo-list","markdown_url":"https://easeui.dev/components/agents/todo-list.md"},{"slug":"tool-approval","name":"Tool Approval","description":"A card for an agent action waiting on approval, with Approve and Deny that collapse into a single status pill once resolved.","category":"agents","published_at":"2026-09-14","updated_at":"2026-09-14","detail_url":"https://easeui.dev/r/tool-approval","raw_url":"https://easeui.dev/r/tool-approval/raw","page_url":"https://easeui.dev/components/agents/tool-approval","markdown_url":"https://easeui.dev/components/agents/tool-approval.md"},{"slug":"tool-chip","name":"Tool Chip","description":"A small pill naming a tool an agent used, with a spinner, check, or error mark that crossfades in place as its status changes.","category":"agents","published_at":"2026-09-15","updated_at":"2026-09-15","detail_url":"https://easeui.dev/r/tool-chip","raw_url":"https://easeui.dev/r/tool-chip/raw","page_url":"https://easeui.dev/components/agents/tool-chip","markdown_url":"https://easeui.dev/components/agents/tool-chip.md"}]}