# @vertesia/ui Component Library for LLMs > React component library for building Vertesia UI plugins and applications. > This file documents component APIs and usage patterns for AI assistants. ## Installation ```bash npm install @vertesia/ui # or pnpm add @vertesia/ui ``` ## Import Paths ```tsx // Core components (buttons, cards, inputs, modals, tabs) import { Button, Card, Input, VModal, VTabs } from '@vertesia/ui/core'; // Hooks (data fetching, toasts) import { useFetch, useToast } from '@vertesia/ui/core'; // Router (navigation, nested routing for plugins) import { useNavigate, useParams, NavLink, NestedRouterProvider } from '@vertesia/ui/router'; // Session (authentication, Vertesia client access) import { useUserSession } from '@vertesia/ui/session'; // Layout components (sidebar, full-height containers) import { Sidebar, SidebarSection, SidebarItem, useSidebarToggle, FullHeightLayout } from '@vertesia/ui/layout'; // Feature components (headers, navigation, agent conversation) import { GenericPageNavHeader, ModernAgentConversation } from '@vertesia/ui/features'; // Shell (app wrapper with auth, routing, sidebar) import { VertesiaShell, StandaloneApp } from '@vertesia/ui/shell'; ``` --- # Component API Reference ## Input (Simplified API) **IMPORTANT:** Input passes the value directly to onChange, NOT an event object. ```tsx interface InputProps { value?: string; onChange?: (value: string) => void; // Value directly, not event! placeholder?: string; disabled?: boolean; clearable?: boolean; // Shows X button to clear (default: true) size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'; variant?: 'default' | 'unstyled' | 'noPadding' | 'legacy'; } // Usage - pass setState directly // Or with transformation setName(value.trim())} /> // WRONG - this will NOT work: setName(e.target.value)} /> // ❌ Error! ``` ## Textarea (Standard React API) Textarea uses standard React event handling. ```tsx // Standard React event object