{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "nexui-agentic-ui-components", "homepage": "https://github.com/Eldergenix/NexUI-Agentic-UI-Components", "items": [ { "name": "surfaces", "type": "registry:theme", "title": "Surfaces", "description": "Eight-level surface and shadow ladder for elevation. Light: two color steps then flat white, differentiated by shadow. Dark: additive white-opacity ladder with layered inset highlights and drops.", "cssVars": { "theme": { "color-surface-1": "var(--surface-1)", "color-surface-2": "var(--surface-2)", "color-surface-3": "var(--surface-3)", "color-surface-4": "var(--surface-4)", "color-surface-5": "var(--surface-5)", "color-surface-6": "var(--surface-6)", "color-surface-7": "var(--surface-7)", "color-surface-8": "var(--surface-8)", "shadow-surface-1": "var(--shadow-1)", "shadow-surface-2": "var(--shadow-2)", "shadow-surface-3": "var(--shadow-3)", "shadow-surface-4": "var(--shadow-4)", "shadow-surface-5": "var(--shadow-5)", "shadow-surface-6": "var(--shadow-6)", "shadow-surface-7": "var(--shadow-7)", "shadow-surface-8": "var(--shadow-8)" }, "light": { "surface-1": "#FAFAFA", "surface-2": "#FCFCFC", "surface-3": "#FFFFFF", "surface-4": "#FFFFFF", "surface-5": "#FFFFFF", "surface-6": "#FFFFFF", "surface-7": "#FFFFFF", "surface-8": "#FFFFFF", "shadow-color": "rgb(0 0 0 / 0.06)", "shadow-1": "0 0 0 1px var(--shadow-color)", "shadow-2": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color)", "shadow-3": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color)", "shadow-4": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color)", "shadow-5": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color)", "shadow-6": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color)", "shadow-7": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color), 0 48px 48px -24px var(--shadow-color)", "shadow-8": "0 0 0 1px var(--shadow-color), 0 1px 1px -0.5px var(--shadow-color), 0 3px 3px -1.5px var(--shadow-color), 0 6px 6px -3px var(--shadow-color), 0 12px 12px -6px var(--shadow-color), 0 24px 24px -12px var(--shadow-color), 0 48px 48px -24px var(--shadow-color), 0 96px 96px -48px var(--shadow-color)" }, "dark": { "surface-1": "#171717", "surface-2": "#1E1E1E", "surface-3": "#252525", "surface-4": "#2C2C2C", "surface-5": "#333333", "surface-6": "#3A3A3A", "surface-7": "#414141", "surface-8": "#484848", "dm-hi-base": "rgba(255,255,255,0.02)", "dm-hi-mid": "rgba(255,255,255,0.05)", "dm-hi-high": "rgba(255,255,255,0.08)", "dm-hi-peak": "rgba(255,255,255,0.11)", "dm-ring-base": "rgba(255,255,255,0.02)", "dm-ring-mid": "rgba(255,255,255,0.04)", "dm-ring-high": "rgba(255,255,255,0.06)", "dm-drop": "rgba(0,0,0,0.18)", "shadow-1": "inset 0 0 0 1px var(--dm-ring-base)", "shadow-2": "inset 0 1px 0 0 var(--dm-hi-base), inset 0 0 0 1px var(--dm-ring-base), 0 1px 1px -0.5px var(--dm-drop)", "shadow-3": "inset 0 1px 0 0 var(--dm-hi-mid), inset 0 0 0 1px var(--dm-ring-base), 0 0 0 1px rgba(0,0,0,0.12), 0 1px 1px -0.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop)", "shadow-4": "inset 0 1px 0 0 var(--dm-hi-mid), inset 0 0 0 1px var(--dm-ring-mid), 0 0 0 1px rgba(0,0,0,0.14), 0 1px 1px -0.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop)", "shadow-5": "inset 0 1px 0 0 var(--dm-hi-high), inset 0 0 0 1px var(--dm-ring-mid), 0 0 0 1px rgba(0,0,0,0.16), 0 1px 1px -0.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop)", "shadow-6": "inset 0 1px 0 0 var(--dm-hi-high), inset 0 0 0 1px var(--dm-ring-high), 0 0 0 1px rgba(0,0,0,0.18), 0 1px 1px -0.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop), 0 24px 24px -12px var(--dm-drop)", "shadow-7": "inset 0 1px 0 0 var(--dm-hi-peak), inset 0 0 0 1px var(--dm-ring-high), 0 0 0 1px rgba(0,0,0,0.20), 0 1px 1px -0.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop), 0 24px 24px -12px var(--dm-drop), 0 48px 48px -24px var(--dm-drop)", "shadow-8": "inset 0 1px 0 0 var(--dm-hi-peak), inset 0 0 0 1px var(--dm-ring-high), 0 0 0 1px rgba(0,0,0,0.22), 0 1px 1px -0.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop), 0 24px 24px -12px var(--dm-drop), 0 48px 48px -24px var(--dm-drop), 0 96px 96px -48px var(--dm-drop)" } } }, { "name": "utils", "type": "registry:lib", "title": "Utilities", "description": "Utility function for merging Tailwind CSS classes with clsx and tailwind-merge.", "dependencies": ["clsx", "tailwind-merge"], "files": [ { "path": "registry/default/lib/utils.ts", "type": "registry:lib" } ] }, { "name": "springs", "type": "registry:lib", "title": "Spring Animations", "description": "Spring animation token presets for Framer Motion (fast, moderate, slow).", "files": [ { "path": "registry/default/lib/springs.ts", "type": "registry:lib" } ] }, { "name": "font-weight", "type": "registry:lib", "title": "Font Weight Tokens", "description": "Variable font weight tokens for Inter (normal, medium, semibold, bold) using font-variation-settings.", "files": [ { "path": "registry/default/lib/font-weight.ts", "type": "registry:lib" } ] }, { "name": "surface-context", "type": "registry:lib", "title": "Surface Context", "description": "React context that tracks the current substrate elevation level. Elevated components (Dropdown, Select, etc.) read it via useSurface() and render at substrate + offset, then re-provide a new substrate so further nesting elevates further.", "files": [ { "path": "registry/default/lib/surface-context.tsx", "type": "registry:lib" } ] }, { "name": "surface-classes", "type": "registry:lib", "title": "Surface Class Lookup", "description": "Static lookup tables for bg-surface-N and shadow-surface-N utilities. Required because Tailwind v4 cannot detect template-literal class names.", "files": [ { "path": "registry/default/lib/surface-classes.ts", "type": "registry:lib" } ] }, { "name": "elevated", "type": "registry:lib", "title": "Elevated", "description": "Elevation primitive. Wraps the read-substrate / compute-level / apply-classes / re-provide-context pattern into one component. Pulls in the surface theme tokens, substrate context, and class lookup so a single install drops in the whole elevation system.", "registryDependencies": ["surfaces", "utils", "surface-context", "surface-classes"], "files": [ { "path": "registry/default/lib/elevated.tsx", "type": "registry:lib" } ] }, { "name": "shape-context", "type": "registry:lib", "title": "Shape Context", "description": "React context provider for runtime shape variant switching (pill or rounded). Controls border-radius across all Fluid Functionalism components.", "files": [ { "path": "registry/default/lib/shape-context.tsx", "type": "registry:lib" } ] }, { "name": "icon-context", "type": "registry:lib", "title": "Icon Context", "description": "React context provider for runtime icon library switching with Lucide fallback.", "dependencies": ["lucide-react"], "registryDependencies": ["icon-map"], "files": [ { "path": "registry/default/lib/icon-context.tsx", "type": "registry:lib" } ] }, { "name": "icon-map", "type": "registry:lib", "title": "Icon Map", "description": "Canonical icon name mapping across Lucide, Tabler, Phosphor, and HugeIcons.", "dependencies": ["lucide-react", "@tabler/icons-react", "@phosphor-icons/react", "@hugeicons/react", "@hugeicons/core-free-icons"], "files": [ { "path": "registry/default/lib/icon-map.tsx", "type": "registry:lib" } ] }, { "name": "use-proximity-hover", "type": "registry:hook", "title": "useProximityHover", "description": "React hook for proximity-based hover detection. Tracks the closest item to the mouse cursor within a container, enabling smooth animated background indicators.", "files": [ { "path": "registry/default/hooks/use-proximity-hover.ts", "type": "registry:hook" } ] }, { "name": "accordion", "type": "registry:ui", "title": "Accordion", "description": "Collapsible accordion with animated height transitions, spring-animated chevron, and proximity hover in grouped mode. Built on Radix UI Accordion.", "dependencies": [ "framer-motion", "@radix-ui/react-accordion", "lucide-react" ], "registryDependencies": [ "utils", "springs", "font-weight", "shape-context", "icon-context", "use-proximity-hover" ], "files": [ { "path": "registry/default/accordion.tsx", "type": "registry:ui" } ] }, { "name": "badge", "type": "registry:ui", "title": "Badge", "description": "Compact label with solid and dot variants, Tailwind color palette, and three sizes.", "dependencies": ["class-variance-authority"], "registryDependencies": ["utils", "shape-context"], "files": [ { "path": "registry/default/badge.tsx", "type": "registry:ui" } ] }, { "name": "button", "type": "registry:ui", "title": "Button", "description": "Animated button with variants (primary, secondary, tertiary, ghost), icon support, loading spinner, and fluid font-weight transitions on hover.", "dependencies": [ "framer-motion", "@radix-ui/react-slot", "class-variance-authority", "lucide-react" ], "registryDependencies": ["utils", "font-weight", "shape-context", "icon-context"], "files": [ { "path": "registry/default/button.tsx", "type": "registry:ui" } ], "css": { "@keyframes spinner-move": { "to": { "stroke-dashoffset": "-100" } }, "@keyframes spinner-dash": { "0%, 100%": { "stroke-dasharray": "15 85" }, "50%": { "stroke-dasharray": "40 60" } } } }, { "name": "dropdown", "type": "registry:ui", "title": "Dropdown", "description": "Dropdown menu with proximity-based hover tracking, animated selection indicator, and animated focus ring. Includes MenuItem sub-component.", "dependencies": ["framer-motion"], "registryDependencies": [ "utils", "springs", "font-weight", "shape-context", "surface-context", "surface-classes", "use-proximity-hover" ], "files": [ { "path": "registry/default/dropdown.tsx", "type": "registry:ui" }, { "path": "registry/default/menu-item.tsx", "type": "registry:ui" } ] }, { "name": "checkbox-group", "type": "registry:ui", "title": "Checkbox Group", "description": "Animated checkbox group with proximity hover, contiguous selection merging, and spring-animated check marks. Built on Radix UI Checkbox.", "dependencies": ["framer-motion", "@radix-ui/react-checkbox"], "registryDependencies": [ "utils", "springs", "font-weight", "shape-context", "use-proximity-hover" ], "files": [ { "path": "registry/default/checkbox-group.tsx", "type": "registry:ui" } ] }, { "name": "radio-group", "type": "registry:ui", "title": "Radio Group", "description": "Animated radio group with proximity hover, spring-animated selection dot, and optional Radix UI integration. Supports both controlled index and value-based APIs.", "dependencies": ["framer-motion", "@radix-ui/react-radio-group"], "registryDependencies": [ "utils", "springs", "font-weight", "shape-context", "use-proximity-hover" ], "files": [ { "path": "registry/default/radio-group.tsx", "type": "registry:ui" } ] }, { "name": "dialog", "type": "registry:ui", "title": "Dialog", "description": "Animated modal dialog with spring-based scale and opacity transitions. Built on Radix UI Dialog with overlay, header, footer, title, and description sub-components.", "dependencies": ["framer-motion", "@radix-ui/react-dialog", "lucide-react"], "registryDependencies": [ "utils", "springs", "shape-context", "surface-context", "surface-classes", "icon-context", "button" ], "files": [ { "path": "registry/default/dialog.tsx", "type": "registry:ui" } ] }, { "name": "input-copy", "type": "registry:ui", "title": "Input Copy", "description": "Read-only input with a copy-to-clipboard button and animated check feedback. Supports optional label and shape context.", "dependencies": ["framer-motion", "lucide-react"], "registryDependencies": ["utils", "springs", "font-weight", "shape-context", "icon-context"], "files": [ { "path": "registry/default/input-copy.tsx", "type": "registry:ui" } ] }, { "name": "input-group", "type": "registry:ui", "title": "Input Group", "description": "Grouped input fields with proximity-based highlighting, animated label transitions, optional icons, and error states.", "dependencies": ["lucide-react"], "registryDependencies": ["utils", "font-weight", "shape-context", "icon-context"], "files": [ { "path": "registry/default/input-group.tsx", "type": "registry:ui" } ] }, { "name": "tabs-subtle", "type": "registry:ui", "title": "Tabs Subtle", "description": "Horizontal tab navigation with proximity hover, animated pill selection indicator, and fluid font-weight transitions. Supports icons and keyboard navigation.", "dependencies": ["framer-motion", "lucide-react"], "registryDependencies": [ "utils", "springs", "font-weight", "icon-context", "use-proximity-hover" ], "files": [ { "path": "registry/default/tabs-subtle.tsx", "type": "registry:ui" } ] }, { "name": "switch", "type": "registry:ui", "title": "Switch", "description": "Animated toggle switch with spring-based thumb animation and fluid font-weight label transitions. Built on Radix UI Switch.", "dependencies": ["framer-motion", "@radix-ui/react-switch"], "registryDependencies": ["utils", "springs", "font-weight"], "files": [ { "path": "registry/default/switch.tsx", "type": "registry:ui" } ] }, { "name": "table", "type": "registry:ui", "title": "Table", "description": "Animated table with proximity-based row hover highlighting and fluid border transitions. Includes TableHeader, TableBody, TableRow, TableHead, and TableCell sub-components.", "dependencies": ["framer-motion"], "registryDependencies": [ "utils", "springs", "font-weight", "use-proximity-hover" ], "files": [ { "path": "registry/default/table.tsx", "type": "registry:ui" } ] }, { "name": "slider", "type": "registry:ui", "title": "Slider", "description": "Animated slider with spring-snapped thumb, step dots, range mode, and click-to-edit value display. Built on Radix UI Slider.", "dependencies": ["framer-motion", "@radix-ui/react-slider"], "registryDependencies": ["utils", "springs", "font-weight", "shape-context"], "files": [ { "path": "registry/default/slider.tsx", "type": "registry:ui" } ] }, { "name": "tabs", "type": "registry:ui", "title": "Tabs", "description": "Segmented control tabs with sliding active indicator, proximity hover, and spring animations. Built on Radix UI Tabs.", "dependencies": ["framer-motion", "@radix-ui/react-tabs", "lucide-react"], "registryDependencies": [ "utils", "springs", "font-weight", "shape-context", "icon-context", "use-proximity-hover" ], "files": [ { "path": "registry/default/tabs.tsx", "type": "registry:ui" } ] }, { "name": "thinking-indicator", "type": "registry:ui", "title": "Thinking Indicator", "description": "Animated loading indicator with morphing SVG path (circle to infinity loop) and shimmer text rotation. Cycles through customizable status words.", "dependencies": ["framer-motion"], "registryDependencies": ["utils", "font-weight"], "files": [ { "path": "registry/default/thinking-indicator.tsx", "type": "registry:ui" } ], "css": { "@keyframes shimmer": { "0%": { "background-position": "0% 0" }, "100%": { "background-position": "100% 0" } }, ".shimmer-text": { "color": "transparent", "background": "linear-gradient(90deg, #a3a3a3 0%, #a3a3a3 35%, #525252 50%, #a3a3a3 65%, #a3a3a3 100%)", "background-size": "300% 100%", "background-clip": "text", "-webkit-background-clip": "text", "animation": "shimmer 1.5s ease-in-out infinite" } } }, { "name": "select", "type": "registry:ui", "title": "Select", "description": "Animated select menu with proximity hover, bordered/borderless variants, optional leading icons, spring-animated popover, and animated checkmark indicator.", "dependencies": [ "framer-motion", "class-variance-authority", "lucide-react" ], "registryDependencies": [ "utils", "springs", "shape-context", "surface-context", "surface-classes", "icon-context", "use-proximity-hover" ], "files": [ { "path": "registry/default/select.tsx", "type": "registry:ui" } ] }, { "name": "tooltip", "type": "registry:ui", "title": "Tooltip", "description": "Floating tooltip with spring-based animations, configurable placement, and rich content support.", "dependencies": ["framer-motion", "@radix-ui/react-tooltip"], "registryDependencies": ["utils", "springs", "font-weight", "shape-context"], "files": [ { "path": "registry/default/tooltip.tsx", "type": "registry:ui" } ] }, { "name": "thinking-steps", "type": "registry:ui", "title": "Thinking Steps", "description": "Chain-of-thought reasoning display with collapsible steps, sequential animation, source badges, and image support.", "dependencies": ["framer-motion", "lucide-react"], "registryDependencies": ["utils", "springs", "font-weight", "shape-context", "icon-context", "accordion", "badge"], "files": [ { "path": "registry/default/thinking-steps.tsx", "type": "registry:ui" } ] }, { "name": "color-picker", "type": "registry:ui", "title": "Color Picker", "description": "Color picker with HEX, RGB, HSL, and OKLCH formats, alpha channel, optional swatches, and a popover trigger. Built on the Slider component with native EyeDropper support.", "dependencies": ["framer-motion"], "registryDependencies": ["utils", "springs", "font-weight", "shape-context", "surface-context", "surface-classes", "slider", "dropdown"], "files": [ { "path": "registry/default/color-picker.tsx", "type": "registry:ui" } ] }, { "name": "border-beam", "type": "registry:ui", "title": "Border Beam", "description": "Animated traveling glow border for cards, buttons, and AI surfaces. Web port of the React Native original. Sizes (sm/md/line), 4 color variants (colorful/mono/ocean/sunset), dark/light themes, configurable duration, brightness, saturation, and hue range.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "registry/default/border-beam.tsx", "type": "registry:ui" } ] }, { "name": "agent-chat", "type": "registry:ui", "title": "Agent Chat", "description": "Drop-in agent chat shell combining MessageList + InputBar. Designed for Vercel AI SDK useChat(). Bundles the complete agent-ui kit (utils, types, hooks, theme, tool renderers).", "dependencies": ["@ai-sdk/react", "ai", "@tabler/icons-react", "@base-ui/react", "streamdown", "@streamdown/code", "@pierre/diffs", "lottie-react", "next-themes", "clsx", "tailwind-merge"], "registryDependencies": [], "files": [ { "path": "registry/default/agent-ui/agent-ui.css", "type": "registry:style" }, { "path": "registry/default/agent-ui/utils/cn.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/utils/contrast.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/utils/format-tool.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/utils/load-google-font.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/utils/tool-adapters.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/utils/tool-part-normalizer.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/hooks/use-streaming-text.ts", "type": "registry:hook" }, { "path": "registry/default/agent-ui/hooks/use-tool-complete.ts", "type": "registry:hook" }, { "path": "registry/default/agent-ui/types/timeline.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/types.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/theme.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/models.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/icons.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/icons/file-ext-icon.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/icons/mode-icons.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/icons/source-icons.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/components/agent-chat.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/message-list.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/input-bar.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/user-message.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/error-message.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/markdown.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/text-shimmer.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/spiral-loader.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/spiral-loader-data.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/components/image-lightbox.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/input/suggestions.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/input/model-picker.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/input/mode-selector.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/input/send-button.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/input/attachment-button.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/input/file-attachment.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/input/input-typing.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/input/popover.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/question/question-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/question/question-prompt.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/tool-renderer.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/tool-router.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/components/tools/tool-registry.ts", "type": "registry:lib" }, { "path": "registry/default/agent-ui/components/tools/tool-row-base.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/tool-approval-footer.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/tool-group.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/action-row.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/bash-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/edit-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/search-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/todo-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/plan-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/subagent-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/mcp-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/thinking-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/tools/generic-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-message-list", "type": "registry:ui", "title": "Agent Message List", "description": "Streaming message list for Vercel AI SDK UIMessage[]. Renders user + assistant messages, tool calls, copy actions.", "dependencies": ["@ai-sdk/react", "ai", "@tabler/icons-react", "streamdown", "@streamdown/code", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/message-list.tsx", "type": "registry:ui" } ] }, { "name": "agent-input-bar", "type": "registry:ui", "title": "Agent Input Bar", "description": "Composable input bar with suggestions, attachments, model picker, mode selector, and send/stop toggle.", "dependencies": ["@base-ui/react", "@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/input-bar.tsx", "type": "registry:ui" } ] }, { "name": "agent-user-message", "type": "registry:ui", "title": "Agent User Message", "description": "User-side chat bubble component with custom theme tokens and contrast-aware text color.", "dependencies": ["clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/user-message.tsx", "type": "registry:ui" } ] }, { "name": "agent-error-message", "type": "registry:ui", "title": "Agent Error Message", "description": "Error state component for failed tool calls or model responses.", "dependencies": ["@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/error-message.tsx", "type": "registry:ui" } ] }, { "name": "agent-markdown", "type": "registry:ui", "title": "Agent Markdown", "description": "Streaming-optimized markdown via Streamdown with Shiki syntax highlighting and safe HTML.", "dependencies": ["streamdown", "@streamdown/code", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/markdown.tsx", "type": "registry:ui" } ] }, { "name": "agent-text-shimmer", "type": "registry:ui", "title": "Agent Text Shimmer", "description": "Animated text shimmer/skeleton for streaming-token placeholders.", "dependencies": ["motion", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/text-shimmer.tsx", "type": "registry:ui" } ] }, { "name": "agent-spiral-loader", "type": "registry:ui", "title": "Agent Spiral Loader", "description": "Lottie-driven spiral spinner for agent-thinking states.", "dependencies": ["lottie-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/spiral-loader.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/spiral-loader-data.ts", "type": "registry:lib" } ] }, { "name": "agent-bash-tool", "type": "registry:ui", "title": "Agent Bash Tool", "description": "Terminal-style tool renderer for bash command output with ANSI color support.", "dependencies": ["@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/bash-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-edit-tool", "type": "registry:ui", "title": "Agent Edit Tool", "description": "File diff viewer with approval row, powered by @pierre/diffs.", "dependencies": ["@pierre/diffs", "@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/edit-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-search-tool", "type": "registry:ui", "title": "Agent Search Tool", "description": "Web search results grid for agent search tool calls.", "dependencies": ["@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/search-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-todo-tool", "type": "registry:ui", "title": "Agent Todo Tool", "description": "Checklist component with animated state transitions for todo tools.", "dependencies": ["@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/todo-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-plan-tool", "type": "registry:ui", "title": "Agent Plan Tool", "description": "Task/step breakdown UI for agent planning tools.", "dependencies": ["@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/plan-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-subagent-tool", "type": "registry:ui", "title": "Agent Subagent Tool", "description": "Nested agent invocation card.", "dependencies": ["@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/subagent-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-mcp-tool", "type": "registry:ui", "title": "Agent MCP Tool", "description": "Model Context Protocol tool renderer.", "dependencies": ["@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/mcp-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-thinking-tool", "type": "registry:ui", "title": "Agent Thinking Tool", "description": "Collapsible reasoning panel for chain-of-thought tokens.", "dependencies": ["@base-ui/react", "@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/thinking-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-generic-tool", "type": "registry:ui", "title": "Agent Generic Tool", "description": "Fallback renderer for unknown tool types.", "dependencies": ["clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/generic-tool.tsx", "type": "registry:ui" } ] }, { "name": "agent-tool-group", "type": "registry:ui", "title": "Agent Tool Group", "description": "Groups multiple tool calls into a single collapsible card.", "dependencies": ["@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/tools/tool-group.tsx", "type": "registry:ui" } ] }, { "name": "agent-question-tool", "type": "registry:ui", "title": "Agent Question Tool", "description": "Clarifying questions UI supporting single, multi, and free-text variants.", "dependencies": ["@tabler/icons-react", "clsx", "tailwind-merge"], "registryDependencies": ["agent-chat"], "files": [ { "path": "registry/default/agent-ui/components/question/question-tool.tsx", "type": "registry:ui" }, { "path": "registry/default/agent-ui/components/question/question-prompt.tsx", "type": "registry:ui" } ] }, { "name": "claude-input", "type": "registry:ui", "title": "Claude Input", "description": "Claude-style landing composer: rounded prompt surface, model menu with extended thinking, attachment trigger, voice control, and category chips. From aisdkagents.com pro blocks.", "dependencies": ["motion", "lucide-react", "react-use-measure", "@radix-ui/react-dialog", "@radix-ui/react-switch"], "registryDependencies": ["utils"], "files": [ { "path": "components/ai-components/claude-input.tsx", "type": "registry:ui" }, { "path": "components/ui/dialog.tsx", "type": "registry:ui" }, { "path": "components/ui/switch.tsx", "type": "registry:ui" } ] }, { "name": "claude-email-tool", "type": "registry:ui", "title": "Claude Email Tool", "description": "Animated email draft tool card with subject, recipient chips, body preview, and approval actions. From aisdkagents.com pro blocks.", "dependencies": ["motion", "lucide-react", "@radix-ui/react-scroll-area"], "registryDependencies": ["utils"], "files": [ { "path": "components/ai-components/claude-email-tool.tsx", "type": "registry:ui" }, { "path": "components/ui/scroll-area.tsx", "type": "registry:ui" } ] }, { "name": "claude-recommend-apps-tool", "type": "registry:ui", "title": "Claude Recommend Apps Tool", "description": "Recommendation grid for Claude apps with categorized presets. From aisdkagents.com pro blocks.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/ai-components/claude-recommend-claude-apps-tool.tsx", "type": "registry:ui" }, { "path": "components/ui/button.tsx", "type": "registry:ui" } ] }, { "name": "claude-recipe-tool", "type": "registry:ui", "title": "Claude Recipe Tool", "description": "Recipe card tool with unit conversion (us/metric), ingredient list, and step-by-step instructions. From aisdkagents.com pro blocks.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/ai-components/claude-recipe-tool.tsx", "type": "registry:ui" } ] }, { "name": "claude-map-itinerary-tool", "type": "registry:ui", "title": "Claude Map Itinerary Tool", "description": "Multi-day itinerary tool with Leaflet map, stop markers, and travel modes. From aisdkagents.com pro blocks. (Source filename retains the upstream 'itenerary' typo: claude-map-itenerary-tool.tsx)", "dependencies": ["leaflet", "react-leaflet"], "registryDependencies": ["utils"], "files": [ { "path": "components/ai-components/claude-map-itenerary-tool.tsx", "type": "registry:ui" }, { "path": "components/ui/button.tsx", "type": "registry:ui" } ] }, { "name": "cursor-questions-panel", "type": "registry:ui", "title": "Cursor Questions Panel", "description": "Cursor-style clarifying questions dialog with progress, multi-step Q&A, and free-text option. From aisdkagents.com pro blocks.", "dependencies": ["motion"], "registryDependencies": ["utils"], "files": [ { "path": "components/ai-components/cursor-questions-panel.tsx", "type": "registry:ui" } ] }, { "name": "openai-chat-image", "type": "registry:ui", "title": "OpenAI Chat Image", "description": "OpenAI-style chat image preview with attachments and idea suggestions. From aisdkagents.com pro blocks.", "dependencies": ["react-use-measure"], "registryDependencies": ["utils"], "files": [ { "path": "components/ai-components/openai-chat-image.tsx", "type": "registry:ui" } ] }, { "name": "theme-card-radio", "type": "registry:ui", "title": "Theme Card Radio", "description": "Visual theme selector (System / Light / Dark) with image-card previews and native radio inputs styled via peer selectors. Adapted from coss.com p-radio-group-6.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "registry/default/theme-card-radio.tsx", "type": "registry:ui" } ] }, { "name": "popover", "type": "registry:ui", "title": "Popover", "description": "Radix-based popover themed with nexUI surface and shadow tokens. Includes a PopoverPopup alias for coss-compatible usage.", "dependencies": ["@radix-ui/react-popover"], "registryDependencies": ["utils"], "files": [ { "path": "registry/default/popover.tsx", "type": "registry:ui" } ] }, { "name": "calendar", "type": "registry:ui", "title": "Calendar", "description": "react-day-picker v10 wrapped with nexUI tokens. Supports classNames + components overrides for custom DayButton patterns.", "dependencies": ["react-day-picker", "date-fns", "lucide-react"], "registryDependencies": ["utils"], "files": [ { "path": "registry/default/calendar.tsx", "type": "registry:ui" } ] }, { "name": "calendar-pricing", "type": "registry:ui", "title": "Calendar (Pricing)", "description": "Two-month pricing calendar with custom day buttons showing prices below the date. Good-price highlighting via emerald-500. Adapted from coss.com p-calendar-24.", "dependencies": ["date-fns", "react-day-picker"], "registryDependencies": ["utils", "calendar"], "files": [ { "path": "registry/default/calendar-pricing.tsx", "type": "registry:ui" } ] }, { "name": "calendar-with-date-input", "type": "registry:ui", "title": "Calendar (With Date Input)", "description": "Calendar synced with a linked ISO yyyy-MM-dd text input. Adapted from coss.com p-calendar-17.", "dependencies": ["date-fns", "lucide-react"], "registryDependencies": ["utils", "calendar"], "files": [ { "path": "registry/default/calendar-with-date-input.tsx", "type": "registry:ui" } ] }, { "name": "calendar-with-time", "type": "registry:ui", "title": "Calendar (With Time)", "description": "Calendar paired with a time input. Adapted from coss.com p-calendar-18.", "dependencies": ["lucide-react"], "registryDependencies": ["utils", "calendar"], "files": [ { "path": "registry/default/calendar-with-time.tsx", "type": "registry:ui" } ] }, { "name": "date-picker-presets", "type": "registry:ui", "title": "Date Picker (With Presets)", "description": "Popover date picker with Today / Tomorrow / In 3 days / In a week quick presets next to the calendar. Adapted from coss.com p-date-picker-4.", "dependencies": ["date-fns", "lucide-react"], "registryDependencies": ["utils", "button", "calendar", "popover"], "files": [ { "path": "registry/default/date-picker-presets.tsx", "type": "registry:ui" } ] }, { "name": "avatar", "type": "registry:ui", "title": "Avatar", "description": "Radix-based avatar with image + fallback. Themed via --muted / --muted-foreground tokens.", "dependencies": ["@radix-ui/react-avatar"], "registryDependencies": ["utils"], "files": [ { "path": "registry/default/avatar.tsx", "type": "registry:ui" } ] }, { "name": "avatar-generators", "type": "registry:ui", "title": "Avatar Generators", "description": "Three deterministic SVG avatar backends: DiceBear (7 styles), MetaMask Jazzicon (crypto address patterns), and spell.sh-style HSL fallback. All seed-based.", "dependencies": [ "@dicebear/core", "@dicebear/avataaars", "@dicebear/bottts", "@dicebear/glass", "@dicebear/identicon", "@dicebear/icons", "@dicebear/initials", "@dicebear/pixel-art", "@metamask/jazzicon" ], "registryDependencies": ["utils"], "files": [ { "path": "registry/default/avatar-generators.tsx", "type": "registry:ui" } ] }, { "name": "avatar-group", "type": "registry:ui", "title": "Avatar Group", "description": "Overlapping avatar stack with ring separator and +N overflow pill. Adapted from coss.com p-avatar-13.", "dependencies": [], "registryDependencies": ["utils", "avatar"], "files": [ { "path": "registry/default/avatar-group.tsx", "type": "registry:ui" } ] }, { "name": "avatar-button", "type": "registry:ui", "title": "Avatar Button", "description": "Pill button with leading avatar. Adapted from coss.com p-button-28.", "dependencies": [], "registryDependencies": ["utils", "avatar", "button"], "files": [ { "path": "registry/default/avatar-button.tsx", "type": "registry:ui" } ] }, { "name": "avatar-select", "type": "registry:ui", "title": "Avatar Select", "description": "Single-select dropdown showing avatar+name rows. Adapted from coss.com p-select-19.", "dependencies": ["lucide-react"], "registryDependencies": ["utils", "avatar", "popover"], "files": [ { "path": "registry/default/avatar-select.tsx", "type": "registry:ui" } ] }, { "name": "member-filter", "type": "registry:ui", "title": "Member Filter", "description": "Segmented filter pill with searchable multi-select member combobox in a popover. Adapted from coss.com p-group-23.", "dependencies": ["lucide-react"], "registryDependencies": ["utils", "avatar", "badge", "popover"], "files": [ { "path": "registry/default/member-filter.tsx", "type": "registry:ui" } ] }, { "name": "p-card-11", "type": "registry:ui", "title": "PCard11 — Empty State", "description": "Empty-state card with folder icon, title, description, and primary action. From coss.com.", "dependencies": ["lucide-react"], "registryDependencies": ["utils"], "files": [ { "path": "components/p-card-11.tsx", "type": "registry:ui" }, { "path": "components/ui/card.tsx", "type": "registry:ui" }, { "path": "components/ui/button.tsx", "type": "registry:ui" }, { "path": "components/ui/empty.tsx", "type": "registry:ui" } ] }, { "name": "p-table-2", "type": "registry:ui", "title": "PTable2", "description": "Compact data table with row hover, status badges, and frame wrapper. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-table-2.tsx", "type": "registry:ui" }, { "path": "components/ui/table.tsx", "type": "registry:ui" }, { "path": "components/ui/frame.tsx", "type": "registry:ui" }, { "path": "components/ui/badge.tsx", "type": "registry:ui" } ] }, { "name": "p-table-3", "type": "registry:ui", "title": "PTable3", "description": "Selectable table with checkboxes, sorting, pagination, and frame wrapper. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-table-3.tsx", "type": "registry:ui" }, { "path": "components/ui/table.tsx", "type": "registry:ui" }, { "path": "components/ui/frame.tsx", "type": "registry:ui" }, { "path": "components/ui/badge.tsx", "type": "registry:ui" }, { "path": "components/ui/checkbox.tsx", "type": "registry:ui" }, { "path": "components/ui/pagination.tsx", "type": "registry:ui" } ] }, { "name": "p-table-4", "type": "registry:ui", "title": "PTable4", "description": "Table variant with extended column controls. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-table-4.tsx", "type": "registry:ui" }, { "path": "components/ui/table.tsx", "type": "registry:ui" } ] }, { "name": "p-table-6", "type": "registry:ui", "title": "PTable6", "description": "Table with grouped headers and filter affordances. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-table-6.tsx", "type": "registry:ui" }, { "path": "components/ui/table.tsx", "type": "registry:ui" } ] }, { "name": "p-table-8", "type": "registry:ui", "title": "PTable8", "description": "Advanced table with multi-state row actions. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-table-8.tsx", "type": "registry:ui" }, { "path": "components/ui/table.tsx", "type": "registry:ui" } ] }, { "name": "p-input-11", "type": "registry:ui", "title": "PInput11", "description": "Input with keyboard shortcut hint (Kbd) suffix. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-input-11.tsx", "type": "registry:ui" }, { "path": "components/ui/input.tsx", "type": "registry:ui" }, { "path": "components/ui/kbd.tsx", "type": "registry:ui" } ] }, { "name": "p-input-group-20", "type": "registry:ui", "title": "PInputGroup20", "description": "Input group with search icon prefix. From coss.com.", "dependencies": ["lucide-react"], "registryDependencies": ["utils"], "files": [ { "path": "components/p-input-group-20.tsx", "type": "registry:ui" }, { "path": "components/ui/input-group.tsx", "type": "registry:ui" } ] }, { "name": "p-input-group-23", "type": "registry:ui", "title": "PInputGroup23", "description": "Search input group with loader and microphone affordance. From coss.com.", "dependencies": ["lucide-react"], "registryDependencies": ["utils"], "files": [ { "path": "components/p-input-group-23.tsx", "type": "registry:ui" }, { "path": "components/ui/input-group.tsx", "type": "registry:ui" }, { "path": "components/ui/button.tsx", "type": "registry:ui" } ] }, { "name": "p-autocomplete-12", "type": "registry:ui", "title": "PAutocomplete12", "description": "Async-loading autocomplete combobox with Spinner. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-autocomplete-12.tsx", "type": "registry:ui" }, { "path": "components/ui/autocomplete.tsx", "type": "registry:ui" }, { "path": "components/ui/spinner.tsx", "type": "registry:ui" } ] }, { "name": "p-sheet-2", "type": "registry:ui", "title": "PSheet2", "description": "Form-driven side sheet (Field + Form + Input) with submit and cancel. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-sheet-2.tsx", "type": "registry:ui" }, { "path": "components/ui/sheet.tsx", "type": "registry:ui" }, { "path": "components/ui/field.tsx", "type": "registry:ui" }, { "path": "components/ui/form.tsx", "type": "registry:ui" }, { "path": "components/ui/input.tsx", "type": "registry:ui" }, { "path": "components/ui/button.tsx", "type": "registry:ui" } ] }, { "name": "p-command-1", "type": "registry:ui", "title": "PCommand1", "description": "Command palette with grouped suggestions/commands and keyboard shortcut hints. From coss.com.", "dependencies": ["lucide-react"], "registryDependencies": ["utils"], "files": [ { "path": "components/p-command-1.tsx", "type": "registry:ui" }, { "path": "components/ui/command.tsx", "type": "registry:ui" }, { "path": "components/ui/button.tsx", "type": "registry:ui" }, { "path": "components/ui/kbd.tsx", "type": "registry:ui" } ] }, { "name": "p-command-2", "type": "registry:ui", "title": "PCommand2", "description": "Command palette with autocomplete filter, empty-state, and external commandHandle for programmatic control. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-command-2.tsx", "type": "registry:ui" }, { "path": "components/ui/command.tsx", "type": "registry:ui" }, { "path": "components/ui/autocomplete.tsx", "type": "registry:ui" }, { "path": "components/ui/input.tsx", "type": "registry:ui" }, { "path": "components/ui/empty.tsx", "type": "registry:ui" }, { "path": "components/ui/button.tsx", "type": "registry:ui" } ] }, { "name": "p-frame-1", "type": "registry:ui", "title": "PFrame1", "description": "Basic Frame primitive with rounded surface and shadow. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-frame-1.tsx", "type": "registry:ui" }, { "path": "components/ui/frame.tsx", "type": "registry:ui" } ] }, { "name": "p-frame-2", "type": "registry:ui", "title": "PFrame2", "description": "Frame with header (FrameHeader) and content panel (FramePanel). From coss.com.", "dependencies": ["lucide-react"], "registryDependencies": ["utils"], "files": [ { "path": "components/p-frame-2.tsx", "type": "registry:ui" }, { "path": "components/ui/frame.tsx", "type": "registry:ui" }, { "path": "components/ui/button.tsx", "type": "registry:ui" } ] }, { "name": "p-frame-3", "type": "registry:ui", "title": "PFrame3", "description": "Frame with split panels. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-frame-3.tsx", "type": "registry:ui" }, { "path": "components/ui/frame.tsx", "type": "registry:ui" } ] }, { "name": "p-frame-4", "type": "registry:ui", "title": "PFrame4", "description": "Frame with separator and stacked sections. From coss.com.", "dependencies": [], "registryDependencies": ["utils"], "files": [ { "path": "components/p-frame-4.tsx", "type": "registry:ui" }, { "path": "components/ui/frame.tsx", "type": "registry:ui" }, { "path": "components/ui/separator.tsx", "type": "registry:ui" } ] }, { "name": "linear-shell", "type": "registry:ui", "title": "Linear Shell", "description": "Application shell layout inspired by Linear.app — 244px scrollable sidebar with grouped sections, 32px top action bar, framed content card, floating help button. Compound API. Built entirely on nexUI semantic tokens (bg-background, bg-card, bg-accent, text-muted-foreground, border-border) for automatic light + dark adaptation.", "dependencies": ["lucide-react"], "registryDependencies": ["utils"], "files": [ { "path": "registry/default/linear-shell.tsx", "type": "registry:ui" } ] }, { "name": "linear-agent-shell", "type": "registry:ui", "title": "Linear Agent Shell", "description": "Example block composing LinearShell + GlassAvatar + ThinkingSteps + ThinkingIndicator + Markdown + ClaudeInput. A complete user↔agent conversation surface (turn-taking, completed chain-of-thought, live thinking indicator, Claude-style composer) ready to drop into a Next.js page or layout. Theme-adaptive via nexUI tokens.", "dependencies": ["lucide-react"], "registryDependencies": [ "utils", "linear-shell", "thinking-indicator", "thinking-steps", "agent-markdown", "claude-input" ], "files": [ { "path": "registry/default/linear-agent-shell.tsx", "type": "registry:ui" } ] } ] }