{"$schema":"https://ui.shadcn.com/schema/registry.json","name":"vllnt","homepage":"https://ui.vllnt.ai","items":[{"name":"accordion","type":"registry:component","title":"Accordion","description":"Collapsible content sections supporting single or multiple open items.","files":[{"path":"registry/default/accordion/accordion.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"activity-heatmap","type":"registry:component","title":"Activity Heatmap","description":"Contribution-style grid for visualizing operational activity over time.","files":[{"path":"registry/default/activity-heatmap/activity-heatmap.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"activity-log","type":"registry:component","title":"Activity Log","description":"Paginated activity feed for audit history and analytics changes.","files":[{"path":"registry/default/activity-log/activity-log.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"agent-activity","type":"registry:component","title":"Agent Activity","description":"Visual display of an AI agent's execution chain — steps, tools, decisions, progress.","files":[{"path":"registry/default/agent-activity/agent-activity.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"ai","version":"0.2.1","stability":"stable"},{"name":"ai-artifact","type":"registry:component","title":"AI Artifact","description":"Rendered output area for AI-generated content with toolbar, copy/edit/download/fullscreen actions, and version chips.","files":[{"path":"registry/default/ai-artifact/ai-artifact.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"ai","version":"0.2.1","stability":"stable"},{"name":"ai-chat-input","type":"registry:component","title":"AI Chat Input","description":"Prompt composer for conversational interfaces with helper text, toolbar actions, and submit states.","files":[{"path":"registry/default/ai-chat-input/ai-chat-input.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"ai-message-bubble","type":"registry:component","title":"AI Message Bubble","description":"Chat bubble for assistant, user, tool, and system messages using the current design system surfaces.","files":[{"path":"registry/default/ai-message-bubble/ai-message-bubble.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","class-variance-authority"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"ai-sidebar","type":"registry:component","title":"AI Sidebar","description":"Slide-out AI assistant panel with provider, header / content / footer slots, and a standalone trigger.","files":[{"path":"registry/default/ai-sidebar/ai-sidebar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"ai","version":"0.2.1","stability":"stable"},{"name":"ai-source-citation","type":"registry:component","title":"AI Source Citation","description":"Compact source reference card for AI answers with a title, origin label, and optional excerpt.","files":[{"path":"registry/default/ai-source-citation/ai-source-citation.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"ai-streaming-text","type":"registry:component","title":"AI Streaming Text","description":"Readable text block for partial assistant output with an optional live cursor while tokens stream in.","files":[{"path":"registry/default/ai-streaming-text/ai-streaming-text.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"ai-tool-call-display","type":"registry:component","title":"AI Tool Call Display","description":"Structured card for tool invocation traces, statuses, serialized input, and returned output.","files":[{"path":"registry/default/ai-tool-call-display/ai-tool-call-display.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","class-variance-authority","lucide-react"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"alert","type":"registry:component","title":"Alert","description":"Displays an alert message to the user.","files":[{"path":"registry/default/alert/alert.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"alert-dialog","type":"registry:component","title":"Alert Dialog","description":"Modal dialog for confirming destructive or important actions.","files":[{"path":"registry/default/alert-dialog/alert-dialog.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"alert-pulse","type":"registry:component","title":"Alert Pulse","description":"Pulsing ring overlay for alerting canvas objects, with severity tones.","files":[{"path":"registry/default/alert-pulse/alert-pulse.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"anchor-port","type":"registry:component","title":"Anchor Port","description":"Port marker for object inputs, outputs, and bidirectional links on the canvas.","files":[{"path":"registry/default/anchor-port/anchor-port.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"animated-text","type":"registry:component","title":"Animated Text","description":"Staggered text reveal for headings, pull quotes, and short supporting copy.","files":[{"path":"registry/default/animated-text/animated-text.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"annotation","type":"registry:component","title":"Annotation","description":"Inline highlight with an attached contextual note.","files":[{"path":"registry/default/annotation/annotation.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"area-chart","type":"registry:component","title":"Area Chart","description":"Renders an area chart for data visualization.","files":[{"path":"registry/default/area-chart/area-chart.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":[],"category":"data"},{"name":"aspect-ratio","type":"registry:component","title":"Aspect Ratio","description":"Constrains content to a specified aspect ratio.","files":[{"path":"registry/default/aspect-ratio/aspect-ratio.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"auto-reload","type":"registry:component","title":"Auto Reload","description":"Toggle + collapsible threshold/amount form for automatic credit reloading with locale-aware currency.","files":[{"path":"registry/default/auto-reload/auto-reload.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"billing","version":"0.2.1","stability":"stable"},{"name":"avatar","type":"registry:component","title":"Avatar","description":"Displays a user avatar image with fallback initials.","files":[{"path":"registry/default/avatar/avatar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"avatar-group","type":"registry:component","title":"Avatar Group","description":"Overlapping avatar stack for participants, assignees, and collaborative contexts.","files":[{"path":"registry/default/avatar-group/avatar-group.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"badge","type":"registry:component","title":"Badge","description":"Small status label with variant styles.","files":[{"path":"registry/default/badge/badge.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"banner","type":"registry:component","title":"Banner","description":"Full-width announcement bar with variants, dismissal, and an optional action slot.","files":[{"path":"registry/default/banner/banner.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react","class-variance-authority","@radix-ui/react-slot"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"bar-chart","type":"registry:component","title":"Bar Chart","description":"Renders a bar chart for data visualization.","files":[{"path":"registry/default/bar-chart/bar-chart.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":[],"category":"data"},{"name":"blog-card","type":"registry:component","title":"Blog Card","description":"Card layout for displaying blog post previews.","files":[{"path":"registry/default/blog-card/blog-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"border-beam","type":"registry:component","title":"Border Beam","description":"Animated accent beam that travels around the border of a highlighted surface.","files":[{"path":"registry/default/border-beam/border-beam.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"bottom-activity-strip","type":"registry:component","title":"Bottom Activity Strip","description":"Slim horizontally-scrolling row of recent canvas events for low-noise live activity.","files":[{"path":"registry/default/bottom-activity-strip/bottom-activity-strip.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"breadcrumb","type":"registry:component","title":"Breadcrumb","description":"Navigation breadcrumb trail showing the current page hierarchy.","files":[{"path":"registry/default/breadcrumb/breadcrumb.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"button","type":"registry:component","title":"Button","description":"Interactive button with multiple variants and sizes.","files":[{"path":"registry/default/button/button.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable","examples":[{"title":"Default","description":"Default button with primary variant.","code":"import { Button } from \"@vllnt/ui\";\n\nexport function Demo() {\n  return <Button>Click me</Button>;\n}\n","framework":"react"},{"title":"Variants","description":"All variant styles in one row.","code":"import { Button } from \"@vllnt/ui\";\n\nexport function Demo() {\n  return (\n    <div className=\"flex gap-2\">\n      <Button variant=\"default\">Default</Button>\n      <Button variant=\"secondary\">Secondary</Button>\n      <Button variant=\"outline\">Outline</Button>\n      <Button variant=\"ghost\">Ghost</Button>\n      <Button variant=\"destructive\">Delete</Button>\n    </div>\n  );\n}\n","framework":"react"},{"title":"Loading state","description":"Disabled button with a spinner — keeps width stable so layouts don't jump.","code":"import { Button, Spinner } from \"@vllnt/ui\";\n\nexport function Demo() {\n  return (\n    <Button disabled>\n      <Spinner className=\"h-4 w-4\" />\n      Saving…\n    </Button>\n  );\n}\n","framework":"react"}],"props":[{"name":"variant","type":"\"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\" | \"link\"","required":false,"defaultValue":"\"default\"","description":"Visual variant. Use \"destructive\" only for irreversible actions; \"link\" only inside text flow."},{"name":"size","type":"\"default\" | \"sm\" | \"lg\" | \"icon\"","required":false,"defaultValue":"\"default\"","description":"Size token. Use \"icon\" for icon-only buttons."},{"name":"asChild","type":"boolean","required":false,"defaultValue":"false","description":"If true, the underlying element is the first child (Radix Slot pattern). Use to render a Next.js Link or another routing element while keeping Button styles."},{"name":"disabled","type":"boolean","required":false,"defaultValue":"false","description":"Visually and functionally disabled. Pair with `aria-disabled` if you need event handlers to keep firing."},{"name":"type","type":"\"button\" | \"submit\" | \"reset\"","required":false,"defaultValue":"\"button\"","description":"HTML button type. Set explicitly to \"submit\" inside <form>, otherwise the implicit submit behaviour can surprise users."},{"name":"...rest","type":"ButtonHTMLAttributes<HTMLButtonElement>","required":false,"description":"All native <button> attributes are forwarded."}]},{"name":"calendar","type":"registry:component","title":"Calendar","description":"Date picker calendar for selecting dates.","files":[{"path":"registry/default/calendar/calendar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"callout","type":"registry:component","title":"Callout","description":"Highlighted content block with variant styles for info, warning, danger, and more.","files":[{"path":"registry/default/callout/callout.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"candlestick-chart","type":"registry:component","title":"Candlestick Chart","description":"OHLC financial chart for session-by-session price action.","files":[{"path":"registry/default/candlestick-chart/candlestick-chart.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"canvas-shell","type":"registry:component","title":"Canvas Shell","description":"Layout shell for canvas workspaces with top bar, left rail, right dock, and bottom slot regions.","files":[{"path":"registry/default/canvas-shell/canvas-shell.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"canvas-view","type":"registry:component","title":"Canvas View","description":"Interactive pan-and-zoom viewport for spatial surfaces with keyboard, wheel, and overlay support.","files":[{"path":"registry/default/canvas-view/canvas-view.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"card","type":"registry:component","title":"Card","description":"Container with header, content, and footer sections.","files":[{"path":"registry/default/card/card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"carousel","type":"registry:component","title":"Carousel","description":"Scrollable content carousel with navigation controls.","files":[{"path":"registry/default/carousel/carousel.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"category-filter","type":"registry:component","title":"Category Filter","description":"Filterable category selection for content lists.","files":[{"path":"registry/default/category-filter/category-filter.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"checkbox","type":"registry:component","title":"Checkbox","description":"Toggle control for boolean input.","files":[{"path":"registry/default/checkbox/checkbox.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"checklist","type":"registry:component","title":"Checklist","description":"Interactive checklist with progress tracking and toggleable items.","files":[{"path":"registry/default/checklist/checklist.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"choropleth-map","type":"registry:component","title":"Choropleth Map","description":"Standalone SVG choropleth — region polygons shaded by data value with tooltip, legend, and accessible data-table fallback.","files":[{"path":"registry/default/choropleth-map/choropleth-map.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"chronological-timeline","type":"registry:component","title":"Chronological Timeline","description":"Media-rich, scroll-driven chronological timeline with alternating cards, image/video/audio media, and a progress strip.","files":[{"path":"registry/default/chronological-timeline/chronological-timeline.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"civilization-card","type":"registry:component","title":"Civilization Card","description":"Civilization overview with hero band, BCE/CE era timeline, key stats, achievements, and notable leaders.","files":[{"path":"registry/default/civilization-card/civilization-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"educational","version":"0.2.1","stability":"stable"},{"name":"code-block","type":"registry:component","title":"Code Block","description":"Syntax-highlighted code display with copy support.","files":[{"path":"registry/default/code-block/code-block.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"code-playground","type":"registry:component","title":"Code Playground","description":"Interactive code editor with live preview.","files":[{"path":"registry/default/code-playground/code-playground.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"collapsible","type":"registry:component","title":"Collapsible","description":"Expandable and collapsible content section.","files":[{"path":"registry/default/collapsible/collapsible.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"combobox","type":"registry:component","title":"Combobox","description":"Searchable select input for choosing from a list of options.","files":[{"path":"registry/default/combobox/combobox.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable","a11y":{"role":"combobox","keyboard":[{"keys":"Enter / Space","action":"open the listbox"},{"keys":"ArrowDown","action":"open + move active option down"},{"keys":"ArrowUp","action":"move active option up"},{"keys":"Escape","action":"close the listbox"},{"keys":"Type-ahead","action":"filter options"}],"aria":["aria-controls","aria-expanded","aria-haspopup"],"focusManagement":"auto","notes":"Trigger button has role='combobox'. Listbox id is wired via React.useId() so consumers don't need to manage it."},"examples":[{"title":"Default","description":"Single-select combobox with type-ahead.","code":"import { Combobox } from \"@vllnt/ui\";\n\nconst options = [\n  { label: \"React\", value: \"react\" },\n  { label: \"Vue\", value: \"vue\" },\n  { label: \"Svelte\", value: \"svelte\" },\n  { label: \"Solid\", value: \"solid\" },\n];\n\nexport function Demo() {\n  return <Combobox options={options} placeholder=\"Pick a framework\" />;\n}\n","framework":"react"},{"title":"Controlled","description":"Pair Combobox with React.useState for full control over the selected value.","code":"\"use client\";\nimport * as React from \"react\";\nimport { Combobox } from \"@vllnt/ui\";\n\nconst options = [\n  { label: \"Pending\", value: \"pending\" },\n  { label: \"Approved\", value: \"approved\" },\n  { label: \"Rejected\", value: \"rejected\" },\n];\n\nexport function Demo() {\n  const [value, setValue] = React.useState(\"pending\");\n  return (\n    <Combobox\n      options={options}\n      value={value}\n      onValueChange={setValue}\n      placeholder=\"Status\"\n    />\n  );\n}\n","framework":"react"}],"props":[{"name":"options","type":"ComboboxOption[]","required":true,"description":"List of options. Each option must have a unique `value`. Optional `keywords` are added to the searchable haystack."},{"name":"value","type":"string","required":false,"description":"Controlled selected value. Pair with `onValueChange`. Omit for uncontrolled."},{"name":"onValueChange","type":"(value: string) => void","required":false,"description":"Called when the user picks an option (or clears by re-selecting the active one)."},{"name":"placeholder","type":"string","required":false,"defaultValue":"\"Select an option\"","description":"Trigger label when no option is selected."},{"name":"searchPlaceholder","type":"string","required":false,"defaultValue":"\"Search options...\"","description":"Placeholder for the type-ahead search input inside the listbox."},{"name":"emptyText","type":"string","required":false,"defaultValue":"\"No option found.\"","description":"Shown when the search yields zero matches."},{"name":"className","type":"string","required":false,"description":"Class applied to the popover content (the listbox container)."},{"name":"triggerClassName","type":"string","required":false,"description":"Class applied to the trigger button."},{"name":"commandClassName","type":"string","required":false,"description":"Class applied to the inner Command element."}]},{"name":"command","type":"registry:component","title":"Command","description":"Command palette with search, groups, and keyboard navigation.","files":[{"path":"registry/default/command/command.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"comment-pin","type":"registry:component","title":"Comment Pin","description":"Anchored discussion pin rendered at canvas coordinates with author + unread badge.","files":[{"path":"registry/default/comment-pin/comment-pin.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"comparison","type":"registry:component","title":"Comparison","description":"Side-by-side comparison layout for content or features.","files":[{"path":"registry/default/comparison/comparison.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"completion-dialog","type":"registry:component","title":"Completion Dialog","description":"Dialog displayed upon completing a task or workflow.","files":[{"path":"registry/default/completion-dialog/completion-dialog.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"connector-edge","type":"registry:component","title":"Connector Edge","description":"Curved edge between canvas objects with optional inline label state.","files":[{"path":"registry/default/connector-edge/connector-edge.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"content-intro","type":"registry:component","title":"Content Intro","description":"Introductory section for content pages with title and description.","files":[{"path":"registry/default/content-intro/content-intro.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"context-lens","type":"registry:component","title":"Context Lens","description":"Vignette overlay that dims the canvas outside a circular focus region.","files":[{"path":"registry/default/context-lens/context-lens.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"context-menu","type":"registry:component","title":"Context Menu","description":"Right-click context menu with items and submenus.","files":[{"path":"registry/default/context-menu/context-menu.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"copy-button","type":"registry:component","title":"Copy Button","description":"Click-to-copy utility with confirmation feedback and a useCopyToClipboard hook.","files":[{"path":"registry/default/copy-button/copy-button.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"countdown-timer","type":"registry:component","title":"Countdown Timer","description":"Countdown and SLA timer for deadlines, escalations, and response windows.","files":[{"path":"registry/default/countdown-timer/countdown-timer.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"credit-badge","type":"registry:component","title":"Credit Badge","description":"Balance status pill for credits, wallet states, and billing health.","files":[{"path":"registry/default/credit-badge/credit-badge.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"data-list","type":"registry:component","title":"Data List","description":"Semantic key-value metadata layout for displaying labels with values.","files":[{"path":"registry/default/data-list/data-list.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"data-table","type":"registry:component","title":"Data Table","description":"Enhanced data table with sorting, filtering, selection, and pagination controls.","files":[{"path":"registry/default/data-table/data-table.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","@tanstack/react-table"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"date-picker","type":"registry:component","title":"Date Picker","description":"Single-date picker built with the shared calendar and popover primitives.","files":[{"path":"registry/default/date-picker/date-picker.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"dialog","type":"registry:component","title":"Dialog","description":"Modal dialog overlay for focused content and actions.","files":[{"path":"registry/default/dialog/dialog.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable","a11y":{"role":"dialog","keyboard":[{"keys":"Escape","action":"close the dialog"},{"keys":"Tab / Shift+Tab","action":"cycle focus within the dialog (focus trap)"}],"aria":["aria-modal","aria-labelledby","aria-describedby"],"focusManagement":"auto","notes":"Built on Radix Dialog: focus trap + restore on close + scroll lock are automatic."}},{"name":"document-sibling-nav","type":"registry:component","title":"Document Sibling Nav","description":"Newer/older navigator: links to the previous and next item in an ordered series.","files":[{"path":"registry/default/document-sibling-nav/document-sibling-nav.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","class-variance-authority"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"drawer","type":"registry:component","title":"Drawer","description":"Slide-out panel anchored to the screen edge.","files":[{"path":"registry/default/drawer/drawer.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"dropdown-menu","type":"registry:component","title":"Dropdown Menu","description":"Accessible dropdown menu with items, checkboxes, radio groups, and submenus.","files":[{"path":"registry/default/dropdown-menu/dropdown-menu.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"edge-label","type":"registry:component","title":"Edge Label","description":"Inline edge label for relationship semantics such as streams, handoffs, or policies.","files":[{"path":"registry/default/edge-label/edge-label.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"empty-state","type":"registry:component","title":"Empty State","description":"Centered placeholder for empty lists, tables, and search results with sm/md/lg sizes.","files":[{"path":"registry/default/empty-state/empty-state.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","class-variance-authority"],"category":"core","version":"0.2.1","stability":"stable","examples":[{"title":"Default","description":"Empty state for an empty list — explain what's empty + offer a single primary action.","code":"import { Button, EmptyState } from \"@vllnt/ui\";\nimport { Inbox } from \"lucide-react\";\n\nexport function Demo() {\n  return (\n    <EmptyState\n      icon={<Inbox className=\"h-8 w-8\" />}\n      title=\"No tickets yet\"\n      description=\"Create your first support ticket to start tracking conversations.\"\n      action={<Button>Create ticket</Button>}\n    />\n  );\n}\n","framework":"react"}]},{"name":"era-comparison","type":"registry:component","title":"Era Comparison","description":"Side-by-side comparison of historical eras with domain rows, color-themed columns, highlights, and figure chips.","files":[{"path":"registry/default/era-comparison/era-comparison.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"educational","version":"0.2.1","stability":"stable"},{"name":"exercise","type":"registry:component","title":"Exercise","description":"Interactive exercise block for learning content.","files":[{"path":"registry/default/exercise/exercise.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"faq","type":"registry:component","title":"FAQ","description":"Frequently asked questions section with expandable answers.","files":[{"path":"registry/default/faq/faq.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"file-upload","type":"registry:component","title":"File Upload","description":"Dropzone-style file picker with previews for selected files.","files":[{"path":"registry/default/file-upload/file-upload.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"filter-bar","type":"registry:component","title":"Filter Bar","description":"Horizontal bar with filter controls for content lists.","files":[{"path":"registry/default/filter-bar/filter-bar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"flashcard","type":"registry:component","title":"Flashcard","description":"Study card for active recall with prompt and answer states.","files":[{"path":"registry/default/flashcard/flashcard.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"floating-action-button","type":"registry:component","title":"Floating Action Button","description":"Fixed-position action button for primary actions.","files":[{"path":"registry/default/floating-action-button/floating-action-button.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"floating-toolbar","type":"registry:component","title":"Floating Toolbar","description":"Compact action bar that floats above a selection — primary / ghost / destructive variants.","files":[{"path":"registry/default/floating-toolbar/floating-toolbar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"flow-diagram","type":"registry:component","title":"Flow Diagram","description":"Interactive flow diagram with nodes, edges, and controls.","files":[{"path":"registry/default/flow-diagram/flow-diagram.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"follow-mode","type":"registry:component","title":"Follow Mode","description":"Follow-mode chrome — outlines a region with a participant's color and surfaces a stop-following chip.","files":[{"path":"registry/default/follow-mode/follow-mode.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"form","type":"registry:component","title":"Form","description":"Validation wrapper for composing labels, descriptions, controls, and messages.","files":[{"path":"registry/default/form/form.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"gantt-chart","type":"registry:component","title":"Gantt Chart","description":"Project timeline with task bars, progress overlays, milestones, and a today indicator across day/week/month/quarter scales.","files":[{"path":"registry/default/gantt-chart/gantt-chart.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"geography-quiz-map","type":"registry:component","title":"Geography Quiz Map","description":"Interactive identify-mode map quiz — click the correct region per prompt with visual feedback, score, and results panel.","files":[{"path":"registry/default/geography-quiz-map/geography-quiz-map.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"globe-3d","type":"registry:component","title":"Globe 3D","description":"Standalone SVG pseudo-3D globe — orthographic projection with auto-rotation, drag interaction, lat/lng markers, and great-circle arcs.","files":[{"path":"registry/default/globe-3d/globe-3d.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"group-hull","type":"registry:component","title":"Group Hull","description":"Durable boundary wrapper for related runtime objects sharing context or ownership.","files":[{"path":"registry/default/group-hull/group-hull.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"handoff-beacon","type":"registry:component","title":"Handoff Beacon","description":"Attention-routing beacon with pulsing ring and optional source / message card for live canvases.","files":[{"path":"registry/default/handoff-beacon/handoff-beacon.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"heat-map-overlay","type":"registry:component","title":"Heat Map Overlay","description":"Standalone SVG geographic heat map — radial-gradient blobs with configurable radius, blur, gradient, and opacity.","files":[{"path":"registry/default/heat-map-overlay/heat-map-overlay.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"heat-overlay","type":"registry:component","title":"Heat Overlay","description":"Heatmap-style overlay drawing soft radial blobs for canvas activity samples.","files":[{"path":"registry/default/heat-overlay/heat-overlay.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"historic-timeline","type":"registry:component","title":"Historic Timeline","description":"Specialized timeline for historical events spanning centuries or millennia, with era bands, period bars, and BCE/CE point markers.","files":[{"path":"registry/default/historic-timeline/historic-timeline.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"historical-figure-card","type":"registry:component","title":"Historical Figure Card","description":"Profile card with portrait, lifespan timeline, fields, works, quote, connections, and an expandable biography section.","files":[{"path":"registry/default/historical-figure-card/historical-figure-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"educational","version":"0.2.1","stability":"stable"},{"name":"horizontal-scroll-row","type":"registry:component","title":"Horizontal Scroll Row","description":"Horizontal scroll container with snap scrolling, chevron navigation, and hidden scrollbar.","files":[{"path":"registry/default/horizontal-scroll-row/horizontal-scroll-row.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"hover-card","type":"registry:component","title":"Hover Card","description":"Card that appears on hover for previewing content.","files":[{"path":"registry/default/hover-card/hover-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"infinite-plane","type":"registry:component","title":"Infinite Plane","description":"Tiled pannable backdrop for the canvas with dot or grid pattern that drifts with the viewport.","files":[{"path":"registry/default/infinite-plane/infinite-plane.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"inline-input","type":"registry:component","title":"Inline Input","description":"Inline text input with keyboard commit and cancel support.","files":[{"path":"registry/default/inline-input/inline-input.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"input","type":"registry:component","title":"Input","description":"Text input field for forms.","files":[{"path":"registry/default/input/input.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"input-otp","type":"registry:component","title":"Input OTP","description":"One-time password input with segmented fields.","files":[{"path":"registry/default/input-otp/input-otp.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"interactive-timeline","type":"registry:component","title":"Interactive Timeline","description":"Zoomable, pannable, multi-track timeline with category filter, today marker, and click-to-select events.","files":[{"path":"registry/default/interactive-timeline/interactive-timeline.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"jarvis-dock","type":"registry:component","title":"Jarvis Dock","description":"Floating bottom dock with quick-action buttons + a command-palette trigger.","files":[{"path":"registry/default/jarvis-dock/jarvis-dock.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"kbd","type":"registry:component","title":"Kbd","description":"Keyboard key indicator with platform-aware modifier expansion via the shortcut prop.","files":[{"path":"registry/default/kbd/kbd.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","class-variance-authority"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"key-concept","type":"registry:component","title":"Key Concept","description":"Highlighted definition block for key terms and a glossary list.","files":[{"path":"registry/default/key-concept/key-concept.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"keyboard-shortcuts-help","type":"registry:component","title":"Keyboard Shortcuts Help","description":"Displays available keyboard shortcuts to the user.","files":[{"path":"registry/default/keyboard-shortcuts-help/keyboard-shortcuts-help.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"knowledge-check","type":"registry:component","title":"Knowledge Check","description":"Inline knowledge check with multiple-choice / true-false / fill-blank questions, per-answer feedback, and a final score summary.","files":[{"path":"registry/default/knowledge-check/knowledge-check.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"educational","version":"0.2.1","stability":"stable"},{"name":"lang-provider","type":"registry:component","title":"Lang Provider","description":"Context provider for language and internationalization.","files":[{"path":"registry/default/lang-provider/lang-provider.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"learning-objectives","type":"registry:component","title":"Learning Objectives","description":"Lists learning goals for educational content.","files":[{"path":"registry/default/learning-objectives/learning-objectives.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"left-rail","type":"registry:component","title":"Left Rail","description":"Compact vertical rail for canvas modes, tool actions, and secondary navigation controls.","files":[{"path":"registry/default/left-rail/left-rail.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"line-chart","type":"registry:component","title":"Line Chart","description":"Renders a line chart for data visualization.","files":[{"path":"registry/default/line-chart/line-chart.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":[],"category":"data"},{"name":"live-cursor","type":"registry:component","title":"Live Cursor","description":"Remote user's cursor rendered at canvas coordinates with name + status chip.","files":[{"path":"registry/default/live-cursor/live-cursor.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"live-feed","type":"registry:component","title":"Live Feed","description":"Rolling activity stream for surfacing incidents, deploys, and operational signals in real time.","files":[{"path":"registry/default/live-feed/live-feed.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"map-2d","type":"registry:component","title":"Map 2D","description":"Lightweight 2D map primitive — SVG canvas with equirectangular projection, markers, popups, GeoJSON polygon layers, zoom controls, and an optional backdrop image.","files":[{"path":"registry/default/map-2d/map-2d.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"map-timeline","type":"registry:component","title":"Map Timeline","description":"Standalone SVG map + time slider — era polygons and year-pinned events appear as the user scrubs the timeline.","files":[{"path":"registry/default/map-timeline/map-timeline.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"market-treemap","type":"registry:component","title":"Market Treemap","description":"Sector-style market heatmap using weighted tiles and signed performance colors.","files":[{"path":"registry/default/market-treemap/market-treemap.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"marquee","type":"registry:component","title":"Marquee","description":"Continuously scrolling content lane for badges, logos, and status chips.","files":[{"path":"registry/default/marquee/marquee.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"mdx-content","type":"registry:component","title":"MDX Content","description":"Renders MDX content with component mapping.","files":[{"path":"registry/default/mdx-content/mdx-content.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"menubar","type":"registry:component","title":"Menubar","description":"Horizontal menu bar with dropdown menus.","files":[{"path":"registry/default/menubar/menubar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"metric-cluster","type":"registry:component","title":"Metric Cluster","description":"Compact stack of related metrics pinned to a canvas object's corner.","files":[{"path":"registry/default/metric-cluster/metric-cluster.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"metric-gauge","type":"registry:component","title":"Metric Gauge","description":"Real-time arc and dial display for monitored percentages and utilization.","files":[{"path":"registry/default/metric-gauge/metric-gauge.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"mini-map-panel","type":"registry:component","title":"Mini Map Panel","description":"Viewport overview panel showing canvas bounds, markers, and the current zoom window.","files":[{"path":"registry/default/mini-map-panel/mini-map-panel.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"model-comparison","type":"registry:component","title":"Model Comparison","description":"Side-by-side comparison of AI model responses with optional blind mode, metadata stats, and a vote bar.","files":[{"path":"registry/default/model-comparison/model-comparison.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"ai","version":"0.2.1","stability":"stable"},{"name":"model-selector","type":"registry:component","title":"Model Selector","description":"Dropdown selector for choosing AI models.","files":[{"path":"registry/default/model-selector/model-selector.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"multi-select","type":"registry:component","title":"Multi Select","description":"Popover-based multi-selection input with selected-value badges and optional search.","files":[{"path":"registry/default/multi-select/multi-select.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"multi-select-lasso","type":"registry:component","title":"Multi Select Lasso","description":"Selection rectangle overlay for canvas multi-select gestures.","files":[{"path":"registry/default/multi-select-lasso/multi-select-lasso.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"navbar-saas","type":"registry:component","title":"Navbar SaaS","description":"SaaS-style navigation bar with branding and links.","files":[{"path":"registry/default/navbar-saas/navbar-saas.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"navigation-menu","type":"registry:component","title":"Navigation Menu","description":"Accessible navigation menu with links and sub-navigation.","files":[{"path":"registry/default/navigation-menu/navigation-menu.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"newsletter-signup","type":"registry:component","title":"Newsletter Signup","description":"Email-capture form with idle/sending/sent/error state machine, custom validators, and overridable labels.","files":[{"path":"registry/default/newsletter-signup/newsletter-signup.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"number-input","type":"registry:component","title":"Number Input","description":"Numeric input with increment and decrement controls.","files":[{"path":"registry/default/number-input/number-input.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"number-ticker","type":"registry:component","title":"Number Ticker","description":"Animated number transitions for stats, KPIs, and compact numeric callouts.","files":[{"path":"registry/default/number-ticker/number-ticker.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"object-card","type":"registry:component","title":"Object Card","description":"Durable object view for agents, runs, artifacts, and tasks inside the canvas.","files":[{"path":"registry/default/object-card/object-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"object-handle","type":"registry:component","title":"Object Handle","description":"Drag/reposition affordance for spatial objects that need a calm grab target.","files":[{"path":"registry/default/object-handle/object-handle.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"object-inspector","type":"registry:component","title":"Object Inspector","description":"Right-dock detail header — kind chip, status dot, title/subtitle, with property-section slots.","files":[{"path":"registry/default/object-inspector/object-inspector.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"order-book","type":"registry:component","title":"Order Book","description":"Level II bid/ask depth ladder with cumulative size bars and spread readout.","files":[{"path":"registry/default/order-book/order-book.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"pagination","type":"registry:component","title":"Pagination","description":"Page navigation controls with previous, next, and page links.","files":[{"path":"registry/default/pagination/pagination.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"parallel-timeline","type":"registry:component","title":"Parallel Timeline","description":"Multi-track timeline with shared time axis, BCE/CE event markers, and optional era bands for comparative history.","files":[{"path":"registry/default/parallel-timeline/parallel-timeline.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"educational","version":"0.2.1","stability":"stable"},{"name":"password-input","type":"registry:component","title":"Password Input","description":"Password field with a built-in visibility toggle.","files":[{"path":"registry/default/password-input/password-input.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"plan-badge","type":"registry:component","title":"Plan Badge","description":"Subscription tier indicator for pricing, billing, and account summaries.","files":[{"path":"registry/default/plan-badge/plan-badge.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"playback-ghost","type":"registry:component","title":"Playback Ghost","description":"Translucent overlay marking where a canvas object was at a previous timestamp during playback.","files":[{"path":"registry/default/playback-ghost/playback-ghost.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"policy-delivery-panel","type":"registry:component","title":"Policy Delivery Panel","description":"Right-dock panel listing policies / guardrails active for the route or run.","files":[{"path":"registry/default/policy-delivery-panel/policy-delivery-panel.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"popover","type":"registry:component","title":"Popover","description":"Floating content panel anchored to a trigger element.","files":[{"path":"registry/default/popover/popover.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"presence-stack","type":"registry:component","title":"Presence Stack","description":"Overlapping live-presence avatars with status dots and a sane overflow chip.","files":[{"path":"registry/default/presence-stack/presence-stack.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"presence-sync-indicator","type":"registry:component","title":"Presence Sync Indicator","description":"Compact pill that surfaces live connection + sync health for a collaborative canvas.","files":[{"path":"registry/default/presence-sync-indicator/presence-sync-indicator.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"pricing-table","type":"registry:component","title":"Pricing Table","description":"Plan comparison with feature checklist, tier highlighting, CTA, and an optional monthly/annual toggle.","files":[{"path":"registry/default/pricing-table/pricing-table.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"billing","version":"0.2.1","stability":"stable"},{"name":"primary-source-viewer","type":"registry:component","title":"Primary Source Viewer","description":"Document viewer for historical primary sources with zoom, rotate, region annotations, transcription panel, and metadata footer.","files":[{"path":"registry/default/primary-source-viewer/primary-source-viewer.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"pro-tip","type":"registry:component","title":"Pro Tip","description":"Highlighted tip block with variants for tips, best practices, gotchas, and more.","files":[{"path":"registry/default/pro-tip/pro-tip.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"profile-section","type":"registry:component","title":"Profile Section","description":"User profile display section with avatar and details.","files":[{"path":"registry/default/profile-section/profile-section.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"progress-bar","type":"registry:component","title":"Progress Bar","description":"Visual progress indicator with labels and completion state.","files":[{"path":"registry/default/progress-bar/progress-bar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"progress-card","type":"registry:component","title":"Progress Card","description":"Card displaying progress metrics and status.","files":[{"path":"registry/default/progress-card/progress-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"prompt-templates","type":"registry:component","title":"Prompt Templates","description":"Searchable prompt template gallery with category filter, variable fill-in form, and onSelect.","files":[{"path":"registry/default/prompt-templates/prompt-templates.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"ai","version":"0.2.1","stability":"stable"},{"name":"property-section","type":"registry:component","title":"Property Section","description":"Compact key/value grid for inspector panels — labels, sublabels, optional collapse.","files":[{"path":"registry/default/property-section/property-section.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"quiz","type":"registry:component","title":"Quiz","description":"Interactive multiple-choice quiz with hints, explanations, and scoring.","files":[{"path":"registry/default/quiz/quiz.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"radio-group","type":"registry:component","title":"Radio Group","description":"Group of radio buttons for single-selection input.","files":[{"path":"registry/default/radio-group/radio-group.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"rating","type":"registry:component","title":"Rating","description":"Inline star rating for lightweight learner feedback.","files":[{"path":"registry/default/rating/rating.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"relationship-inspector","type":"registry:component","title":"Relationship Inspector","description":"Right-dock panel listing inbound + outbound edges of the focused canvas object.","files":[{"path":"registry/default/relationship-inspector/relationship-inspector.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"resizable","type":"registry:component","title":"Resizable","description":"Resizable panel layout with draggable handles.","files":[{"path":"registry/default/resizable/resizable.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"right-dock","type":"registry:component","title":"Right Dock","description":"Context dock for inspectors, summaries, and secondary canvas panels.","files":[{"path":"registry/default/right-dock/right-dock.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"role-badge","type":"registry:component","title":"Role Badge","description":"Account role indicator for owners, admins, members, and billing contacts.","files":[{"path":"registry/default/role-badge/role-badge.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"route-map","type":"registry:component","title":"Route Map","description":"Standalone SVG map with animated route paths, waypoints, and progress indicator. For trade routes, voyages, migrations, delivery tracking.","files":[{"path":"registry/default/route-map/route-map.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"routing-assignment-panel","type":"registry:component","title":"Routing Assignment Panel","description":"Right-dock panel listing the agent slots an active route dispatches to.","files":[{"path":"registry/default/routing-assignment-panel/routing-assignment-panel.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"run-timeline","type":"registry:component","title":"Run Timeline","description":"Multi-lane execution timeline showing run phases over time, with optional cursor.","files":[{"path":"registry/default/run-timeline/run-timeline.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"runtime-overview-panel","type":"registry:component","title":"Runtime Overview Panel","description":"Top-of-dock summary tile grid for runtime health when no canvas object is selected.","files":[{"path":"registry/default/runtime-overview-panel/runtime-overview-panel.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"scope-selector","type":"registry:component","title":"Scope Selector","description":"Multi-level scope picker for nested environments, teams, and targets.","files":[{"path":"registry/default/scope-selector/scope-selector.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"scroll-area","type":"registry:component","title":"Scroll Area","description":"Custom scrollable area with styled scrollbars.","files":[{"path":"registry/default/scroll-area/scroll-area.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"search-bar","type":"registry:component","title":"Search Bar","description":"Text search input with icon and clear functionality.","files":[{"path":"registry/default/search-bar/search-bar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"search-dialog","type":"registry:component","title":"Search Dialog","description":"Full-screen search dialog with keyboard navigation.","files":[{"path":"registry/default/search-dialog/search-dialog.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"segmented-control","type":"registry:component","title":"Segmented Control","description":"Single-choice segmented selector for switching modes, views, or filters.","files":[{"path":"registry/default/segmented-control/segmented-control.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"select","type":"registry:component","title":"Select","description":"Dropdown select input for choosing from a list of options.","files":[{"path":"registry/default/select/select.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"selection-halo","type":"registry:component","title":"Selection Halo","description":"Local-user selection halo with corner handles + label slot for spatial canvases.","files":[{"path":"registry/default/selection-halo/selection-halo.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"selection-presence","type":"registry:component","title":"Selection Presence","description":"Dashed-border overlay marking what another user has selected on the canvas.","files":[{"path":"registry/default/selection-presence/selection-presence.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"separator","type":"registry:component","title":"Separator","description":"Visual divider between content sections.","files":[{"path":"registry/default/separator/separator.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"severity-badge","type":"registry:component","title":"Severity Badge","description":"Operational severity label with tone variants and optional pulse for critical incidents.","files":[{"path":"registry/default/severity-badge/severity-badge.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"share-section","type":"registry:component","title":"Share Section","description":"Social sharing buttons and link copy section.","files":[{"path":"registry/default/share-section/share-section.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"sheet","type":"registry:component","title":"Sheet","description":"Slide-over panel from the edge of the screen.","files":[{"path":"registry/default/sheet/sheet.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"sidebar","type":"registry:component","title":"Sidebar","description":"Collapsible sidebar navigation layout.","files":[{"path":"registry/default/sidebar/sidebar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"sidebar-provider","type":"registry:component","title":"Sidebar Provider","description":"Context provider for managing sidebar open/close state.","files":[{"path":"registry/default/sidebar-provider/sidebar-provider.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"sidebar-toggle","type":"registry:component","title":"Sidebar Toggle","description":"Responsive toggle button for opening and closing the sidebar.","files":[{"path":"registry/default/sidebar-toggle/sidebar-toggle.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"skeleton","type":"registry:component","title":"Skeleton","description":"Placeholder loading animation for content.","files":[{"path":"registry/default/skeleton/skeleton.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"slider","type":"registry:component","title":"Slider","description":"Range slider input for selecting numeric values.","files":[{"path":"registry/default/slider/slider.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"slideshow","type":"registry:component","title":"Slideshow","description":"Step-through slideshow for presenting content sequentially.","files":[{"path":"registry/default/slideshow/slideshow.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"snap-guides","type":"registry:component","title":"Snap Guides","description":"Alignment guide overlay — dashed vertical and horizontal lines that surface during a drag.","files":[{"path":"registry/default/snap-guides/snap-guides.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"sparkline-grid","type":"registry:component","title":"Sparkline Grid","description":"KPI grid of labeled value tiles each paired with a compact sparkline trend.","files":[{"path":"registry/default/sparkline-grid/sparkline-grid.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"spinner","type":"registry:component","title":"Spinner","description":"Animated loading spinner indicator.","files":[{"path":"registry/default/spinner/spinner.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"stat-card","type":"registry:component","title":"Stat Card","description":"Headline KPI card for metrics, trends, and supporting context.","files":[{"path":"registry/default/stat-card/stat-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"state-badge-overlay","type":"registry:component","title":"State Badge Overlay","description":"State chip pinned to a canvas object's corner — idle, queued, running, complete, failed, stopped.","files":[{"path":"registry/default/state-badge-overlay/state-badge-overlay.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"status-board","type":"registry:component","title":"Status Board","description":"Service health grid for surfacing infrastructure state, queue pressure, and incidents.","files":[{"path":"registry/default/status-board/status-board.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"status-indicator","type":"registry:component","title":"Status Indicator","description":"Compact status label with tone, variant, and activity dot options.","files":[{"path":"registry/default/status-indicator/status-indicator.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"step-by-step","type":"registry:component","title":"Step By Step","description":"Numbered step guide with optional interactive completion tracking.","files":[{"path":"registry/default/step-by-step/step-by-step.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"step-navigation","type":"registry:component","title":"Step Navigation","description":"Navigation controls for stepping through multi-page content.","files":[{"path":"registry/default/step-navigation/step-navigation.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"stepper","type":"registry:component","title":"Stepper","description":"Sequenced steps with complete, current, and upcoming states.","files":[{"path":"registry/default/stepper/stepper.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"sticky-metric","type":"registry:component","title":"Sticky Metric","description":"Pinned metric pill that sticks to a canvas object's corner.","files":[{"path":"registry/default/sticky-metric/sticky-metric.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"story-map","type":"registry:component","title":"Story Map","description":"Standalone SVG scroll-driven narrative map — IntersectionObserver tracks the active chapter and the map shifts to its center + zoom.","files":[{"path":"registry/default/story-map/story-map.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"subscription-card","type":"registry:component","title":"Subscription Card","description":"Subscription status and management card for plan, renewal, and usage details.","files":[{"path":"registry/default/subscription-card/subscription-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"table","type":"registry:component","title":"Table","description":"Styled data table with header, body, and footer sections.","files":[{"path":"registry/default/table/table.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"table-of-contents","type":"registry:component","title":"Table Of Contents","description":"Auto-generated table of contents from page headings.","files":[{"path":"registry/default/table-of-contents/table-of-contents.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"table-of-contents-panel","type":"registry:component","title":"Table Of Contents Panel","description":"Side panel rendering a table of contents for page navigation.","files":[{"path":"registry/default/table-of-contents-panel/table-of-contents-panel.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"tabs","type":"registry:component","title":"Tabs","description":"Tabbed content panels with keyboard-accessible tab triggers.","files":[{"path":"registry/default/tabs/tabs.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"tags-input","type":"registry:component","title":"Tags Input","description":"Keyboard-friendly tag editor for adding and removing string values.","files":[{"path":"registry/default/tags-input/tags-input.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"terminal","type":"registry:component","title":"Terminal","description":"Terminal-style display for command output.","files":[{"path":"registry/default/terminal/terminal.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"textarea","type":"registry:component","title":"Textarea","description":"Multi-line text input field.","files":[{"path":"registry/default/textarea/textarea.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"theme-provider","type":"registry:component","title":"Theme Provider","description":"Context provider for light/dark theme switching.","files":[{"path":"registry/default/theme-provider/theme-provider.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"theme-toggle","type":"registry:component","title":"Theme Toggle","description":"Button to toggle between light and dark themes.","files":[{"path":"registry/default/theme-toggle/theme-toggle.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"thinking-block","type":"registry:component","title":"Thinking Block","description":"Collapsible block showing AI thinking/reasoning with streaming support.","files":[{"path":"registry/default/thinking-block/thinking-block.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"thread-bubble","type":"registry:component","title":"Thread Bubble","description":"Expanded discussion bubble for an anchored canvas comment thread.","files":[{"path":"registry/default/thread-bubble/thread-bubble.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"utility","version":"0.2.1","stability":"stable"},{"name":"threshold-ring","type":"registry:component","title":"Threshold Ring","description":"Compact ring gauge expressing how close a value is to a threshold.","files":[{"path":"registry/default/threshold-ring/threshold-ring.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"ticker-tape","type":"registry:component","title":"Ticker Tape","description":"Marquee-style scrolling symbol tape with price and change badges.","files":[{"path":"registry/default/ticker-tape/ticker-tape.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"timeline","type":"registry:component","title":"Timeline","description":"Vertical or horizontal timeline of sequential events with completed/active/upcoming statuses and connector lines.","files":[{"path":"registry/default/timeline/timeline.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","class-variance-authority"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"timeline-scrubber","type":"registry:component","title":"Timeline Scrubber","description":"Range slider for scrubbing through canvas state playback, with optional milestone ticks.","files":[{"path":"registry/default/timeline-scrubber/timeline-scrubber.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"form","version":"0.2.1","stability":"stable"},{"name":"tldr-section","type":"registry:component","title":"TLDR Section","description":"Summary section for quick content overview.","files":[{"path":"registry/default/tldr-section/tldr-section.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"toast","type":"registry:component","title":"Toast","description":"Temporary notification messages with action support.","files":[{"path":"registry/default/toast/toast.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"toggle","type":"registry:component","title":"Toggle","description":"Two-state toggle button.","files":[{"path":"registry/default/toggle/toggle.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"toggle-group","type":"registry:component","title":"Toggle Group","description":"Group of toggle buttons for single or multiple selection.","files":[{"path":"registry/default/toggle-group/toggle-group.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"core","version":"0.2.1","stability":"stable"},{"name":"tooltip","type":"registry:component","title":"Tooltip","description":"Informational popup displayed on hover or focus.","files":[{"path":"registry/default/tooltip/tooltip.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"overlay","version":"0.2.1","stability":"stable"},{"name":"top-bar","type":"registry:component","title":"Top Bar","description":"Workspace header bar for titles, leading controls, centered navigation, and trailing actions.","files":[{"path":"registry/default/top-bar/top-bar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"tour","type":"registry:component","title":"Tour","description":"Guided onboarding flow for introducing content or interface patterns.","files":[{"path":"registry/default/tour/tour.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"transaction-list","type":"registry:component","title":"Transaction List","description":"Chronological credit/debit history with locale-aware currency formatting and a pinned subscription row.","files":[{"path":"registry/default/transaction-list/transaction-list.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"billing","version":"0.2.1","stability":"stable"},{"name":"tree-view","type":"registry:component","title":"Tree View","description":"Hierarchical tree component for nested data with controlled state, single/multi-select, and keyboard navigation.","files":[{"path":"registry/default/tree-view/tree-view.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data-display","version":"0.2.1","stability":"stable"},{"name":"tutorial-card","type":"registry:component","title":"Tutorial Card","description":"Card for displaying tutorial previews with metadata.","files":[{"path":"registry/default/tutorial-card/tutorial-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"tutorial-complete","type":"registry:component","title":"Tutorial Complete","description":"Completion screen displayed when a tutorial is finished.","files":[{"path":"registry/default/tutorial-complete/tutorial-complete.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"tutorial-filters","type":"registry:component","title":"Tutorial Filters","description":"Filter controls for browsing tutorials by category or difficulty.","files":[{"path":"registry/default/tutorial-filters/tutorial-filters.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"tutorial-intro-content","type":"registry:component","title":"Tutorial Intro Content","description":"Introduction section for tutorial pages with overview and prerequisites.","files":[{"path":"registry/default/tutorial-intro-content/tutorial-intro-content.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"tutorial-mdx","type":"registry:component","title":"Tutorial MDX","description":"MDX renderer tailored for tutorial content with custom components.","files":[{"path":"registry/default/tutorial-mdx/tutorial-mdx.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"learning","version":"0.2.1","stability":"stable"},{"name":"usage-breakdown","type":"registry:component","title":"Usage Breakdown","description":"Ranked resource consumption list with relative share and trend cues.","files":[{"path":"registry/default/usage-breakdown/usage-breakdown.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"video-embed","type":"registry:component","title":"Video Embed","description":"Responsive video embed for YouTube and other providers.","files":[{"path":"registry/default/video-embed/video-embed.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"view-switcher","type":"registry:component","title":"View Switcher","description":"URL param-based toggle between named views with pill/tab styling.","files":[{"path":"registry/default/view-switcher/view-switcher.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"viewport-bookmarks","type":"registry:component","title":"Viewport Bookmarks","description":"Saved-view list for the canvas — pinned spatial locations with optional active state.","files":[{"path":"registry/default/viewport-bookmarks/viewport-bookmarks.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"wallet-card","type":"registry:component","title":"Wallet Card","description":"Credit balance display card for available, pending, and refresh details.","files":[{"path":"registry/default/wallet-card/wallet-card.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"content","version":"0.2.1","stability":"stable"},{"name":"watchlist","type":"registry:component","title":"Watchlist","description":"Tracked-symbol list with price, change, and advancing/declining summary.","files":[{"path":"registry/default/watchlist/watchlist.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"workspace-switcher","type":"registry:component","title":"Workspace Switcher","description":"Segmented workspace picker for switching between canvas views and operational contexts.","files":[{"path":"registry/default/workspace-switcher/workspace-switcher.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"world-breadcrumbs","type":"registry:component","title":"World Breadcrumbs","description":"Spatial trail showing the canvas's current location in a hierarchy of worlds, groups, and runs.","files":[{"path":"registry/default/world-breadcrumbs/world-breadcrumbs.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"navigation","version":"0.2.1","stability":"stable"},{"name":"world-clock-bar","type":"registry:component","title":"World Clock Bar","description":"Multi-timezone display for follow-the-sun teams and operational handoffs.","files":[{"path":"registry/default/world-clock-bar/world-clock-bar.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1"],"category":"data","version":"0.2.1","stability":"stable"},{"name":"zoom-hud","type":"registry:component","title":"Zoom HUD","description":"Zoom controls with current percentage, increment buttons, and reset action for canvas views.","files":[{"path":"registry/default/zoom-hud/zoom-hud.tsx","type":"registry:component"}],"registryDependencies":[],"dependencies":["@vllnt/ui@^0.2.1","lucide-react"],"category":"overlay","version":"0.2.1","stability":"stable"}],"version":"0.2.1","generatedAt":"2026-05-10T19:24:47.533Z"}