@mcp-elements/react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/index.d.ts +592 -0
- package/dist/index.js +1793 -0
- package/dist/index.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/button.tsx","../src/badge.tsx","../src/card.tsx","../src/input.tsx","../src/textarea.tsx","../src/avatar.tsx","../src/separator.tsx","../src/skeleton.tsx","../src/dialog.tsx","../src/hooks/use-dialog.ts","../src/tabs.tsx","../src/hooks/use-tabs.ts","../src/accordion.tsx","../src/hooks/use-accordion.ts","../src/select.tsx","../src/hooks/use-select.ts","../src/tooltip.tsx","../src/hooks/use-tooltip.ts","../src/popover.tsx","../src/hooks/use-popover.ts","../src/toast.tsx","../src/hooks/use-toast.ts","../src/drawer.tsx","../src/hooks/use-drawer.ts","../src/dropdown-menu.tsx","../src/hooks/use-dropdown-menu.ts","../src/switch.tsx","../src/progress.tsx","../src/loader.tsx","../src/chips.tsx","../src/password-input.tsx","../src/counter.tsx","../src/alert.tsx","../src/prompt-input.tsx","../src/chat-bubble.tsx","../src/ai-badge.tsx","../src/suggestion-chips.tsx","../src/source-card.tsx","../src/streaming-text.tsx","../src/feedback.tsx","../src/mcp/mcp-server-status.tsx","../src/mcp/mcp-tool-call.tsx","../src/mcp/mcp-tool-form.tsx","../src/mcp/mcp-consent-dialog.tsx","../src/mcp/mcp-scope-inspector.tsx","../src/mcp/mcp-resource-browser.tsx","../src/mcp/mcp-app-frame.tsx","../src/hooks/use-mcp-tool-state.ts","../src/hooks/use-mcp-oauth.ts","../src/hooks/use-mcp-app-bridge.ts","../src/hooks/use-mcp-schema-form.ts"],"sourcesContent":["import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link'\n size?: 'sm' | 'md' | 'lg' | 'icon'\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = 'primary', size = 'md', className, ...props }, ref) => (\n <button\n ref={ref}\n className={cn('mcpe-btn', `mcpe-btn-${variant}`, `mcpe-btn-${size}`, className)}\n {...props}\n />\n )\n)\nButton.displayName = 'Button'\n","import { cn } from '@mcp-elements/core'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'secondary' | 'outline' | 'destructive'\n}\n\nexport function Badge({ variant = 'default', className, ...props }: BadgeProps) {\n return <div className={cn('mcpe-badge', `mcpe-badge-${variant}`, className)} {...props} />\n}\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport const Card = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-card', className)} {...props} />\n )\n)\nCard.displayName = 'Card'\n\nexport const CardHeader = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-card-header', className)} {...props} />\n )\n)\nCardHeader.displayName = 'CardHeader'\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn('mcpe-card-title', className)} {...props} />\n )\n)\nCardTitle.displayName = 'CardTitle'\n\nexport const CardDescription = forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn('mcpe-card-description', className)} {...props} />\n )\n)\nCardDescription.displayName = 'CardDescription'\n\nexport const CardContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-card-content', className)} {...props} />\n )\n)\nCardContent.displayName = 'CardContent'\n\nexport const CardFooter = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-card-footer', className)} {...props} />\n )\n)\nCardFooter.displayName = 'CardFooter'\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, type = 'text', ...props }, ref) => (\n <input ref={ref} type={type} className={cn('mcpe-input', className)} {...props} />\n )\n)\nInput.displayName = 'Input'\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea ref={ref} className={cn('mcpe-textarea', className)} {...props} />\n )\n)\nTextarea.displayName = 'Textarea'\n","import { forwardRef, useState } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n src?: string\n alt?: string\n fallback?: string\n}\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n ({ src, alt, fallback, className, ...props }, ref) => {\n const [hasError, setHasError] = useState(false)\n\n return (\n <div ref={ref} className={cn('mcpe-avatar', className)} {...props}>\n {src && !hasError ? (\n <img src={src} alt={alt} className=\"mcpe-avatar-image\" onError={() => setHasError(true)} />\n ) : (\n <span className=\"mcpe-avatar-fallback\">{fallback}</span>\n )}\n </div>\n )\n }\n)\nAvatar.displayName = 'Avatar'\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical'\n}\n\nexport const Separator = forwardRef<HTMLDivElement, SeparatorProps>(\n ({ orientation = 'horizontal', className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn('mcpe-separator', `mcpe-separator-${orientation}`, className)}\n {...props}\n />\n )\n)\nSeparator.displayName = 'Separator'\n","import { cn } from '@mcp-elements/core'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport function Skeleton({ className, ...props }: SkeletonProps) {\n return <div className={cn('mcpe-skeleton', className)} {...props} />\n}\n","import { useEffect, useRef, useId, createContext, useContext } from 'react'\nimport { cn, trapFocus, lockScroll } from '@mcp-elements/core'\nimport { useDialog } from './hooks/use-dialog'\n\nconst DialogIdContext = createContext<string>('')\n\nexport interface DialogProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n modal?: boolean\n children: React.ReactNode\n}\n\nexport function Dialog({ open: controlledOpen, onOpenChange, modal = true, children }: DialogProps) {\n const dialog = useDialog({ modal })\n const isOpen = controlledOpen ?? dialog.open\n const setOpen = onOpenChange ?? dialog.setOpen\n const contentRef = useRef<HTMLDivElement>(null)\n const dialogId = useId()\n\n useEffect(() => {\n if (!isOpen || !modal) return\n const unlock = lockScroll()\n return unlock\n }, [isOpen, modal])\n\n useEffect(() => {\n if (!isOpen || !contentRef.current) return\n const el = contentRef.current\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setOpen(false)\n return\n }\n trapFocus(el, e)\n }\n el.addEventListener('keydown', handler)\n return () => el.removeEventListener('keydown', handler)\n }, [isOpen])\n\n if (!isOpen) return null\n\n return (\n <DialogIdContext.Provider value={dialogId}>\n <div className=\"mcpe-dialog-overlay\" onClick={() => setOpen(false)} />\n <div ref={contentRef} className=\"mcpe-dialog-content\" role=\"dialog\" aria-modal={modal} aria-labelledby={`${dialogId}-title`} aria-describedby={`${dialogId}-description`}>\n {children}\n <button\n className=\"mcpe-dialog-close\"\n aria-label=\"Close\"\n onClick={() => setOpen(false)}\n type=\"button\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n <span className=\"sr-only\">Close</span>\n </button>\n </div>\n </DialogIdContext.Provider>\n )\n}\n\nexport function DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mcpe-dialog-header', className)} {...props} />\n}\n\nexport function DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mcpe-dialog-footer', className)} {...props} />\n}\n\nexport function DialogTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n const dialogId = useContext(DialogIdContext)\n return <h2 id={`${dialogId}-title`} className={cn('mcpe-dialog-title', className)} {...props} />\n}\n\nexport function DialogDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n const dialogId = useContext(DialogIdContext)\n return <p id={`${dialogId}-description`} className={cn('mcpe-dialog-description', className)} {...props} />\n}\n\nexport { useDialog } from './hooks/use-dialog'\n","import { useState, useMemo } from 'react'\nimport { createDialog, type DialogConfig } from '@mcp-elements/core'\n\nexport function useDialog(config: Omit<DialogConfig, 'onOpenChange'> = {}) {\n const [open, setOpen] = useState(false)\n\n const api = useMemo(\n () => createDialog({ ...config, onOpenChange: setOpen }),\n [config.modal]\n )\n\n return { open, setOpen, ...api }\n}\n","import { useRef, useEffect } from 'react'\nimport { cn } from '@mcp-elements/core'\nimport { useTabs } from './hooks/use-tabs'\nimport type { TabItem } from '@mcp-elements/core'\n\nexport interface TabsProps {\n items: TabItem[]\n defaultValue?: string\n children: (api: ReturnType<typeof useTabs>) => React.ReactNode\n className?: string\n}\n\nexport function Tabs({ items, defaultValue, children, className }: TabsProps) {\n const api = useTabs(items, { defaultValue })\n return <div className={className}>{children(api)}</div>\n}\n\nexport function TabsList({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div role=\"tablist\" className={cn('mcpe-tabs-list', className)} {...props} />\n}\n\nexport interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isActive?: boolean\n}\n\nexport function TabsTrigger({ isActive, className, ...props }: TabsTriggerProps) {\n const ref = useRef<HTMLButtonElement>(null)\n\n useEffect(() => {\n if (isActive && ref.current) {\n ref.current.focus()\n }\n }, [isActive])\n\n return (\n <button\n ref={ref}\n role=\"tab\"\n aria-selected={isActive}\n tabIndex={isActive ? 0 : -1}\n className={cn('mcpe-tabs-trigger', isActive && 'mcpe-tabs-trigger-active', className)}\n {...props}\n />\n )\n}\n\nexport function TabsContent({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div role=\"tabpanel\" className={cn('mcpe-tabs-content', className)} {...props} />\n}\n\nexport { useTabs } from './hooks/use-tabs'\n","import { useState, useMemo } from 'react'\nimport { createTabs, type TabItem, type TabsConfig } from '@mcp-elements/core'\n\nexport function useTabs(items: TabItem[], config: Omit<TabsConfig, 'onValueChange'> = {}) {\n const [value, setValue] = useState(config.defaultValue ?? items[0]?.value ?? '')\n\n const api = useMemo(\n () => createTabs(items, { ...config, onValueChange: setValue }),\n [items, config.defaultValue]\n )\n\n return { value, setValue, ...api }\n}\n","import { cn } from '@mcp-elements/core'\nimport { useAccordion } from './hooks/use-accordion'\nimport type { AccordionItemConfig, AccordionConfig } from '@mcp-elements/core'\n\nexport interface AccordionProps {\n items: AccordionItemConfig[]\n type?: AccordionConfig['type']\n collapsible?: boolean\n children: (api: ReturnType<typeof useAccordion>) => React.ReactNode\n className?: string\n}\n\nexport function Accordion({ items, type, collapsible, children, className }: AccordionProps) {\n const api = useAccordion(items, { type, collapsible })\n return <div className={className}>{children(api)}</div>\n}\n\nexport function AccordionItem({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mcpe-accordion-item', className)} {...props} />\n}\n\nexport interface AccordionTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n isExpanded?: boolean\n}\n\nexport function AccordionTrigger({ isExpanded, className, children, ...props }: AccordionTriggerProps) {\n return (\n <h3>\n <button\n aria-expanded={isExpanded}\n className={cn('mcpe-accordion-trigger', className)}\n {...props}\n >\n {children}\n <svg className=\"mcpe-accordion-chevron\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n </h3>\n )\n}\n\nexport function AccordionContent({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div role=\"region\" className={cn('mcpe-accordion-content', className)} {...props} />\n}\n\nexport { useAccordion } from './hooks/use-accordion'\n","import { useState, useMemo } from 'react'\nimport { createAccordion, type AccordionItemConfig, type AccordionConfig } from '@mcp-elements/core'\n\nexport function useAccordion(items: AccordionItemConfig[], config: Omit<AccordionConfig, 'onValueChange'> = {}) {\n const [expandedValues, setExpandedValues] = useState<string[]>([])\n\n const api = useMemo(\n () => createAccordion(items, { ...config, onValueChange: setExpandedValues }),\n [items, config.type, config.collapsible]\n )\n\n return { expandedValues, setExpandedValues, ...api }\n}\n","import { useRef, useEffect } from 'react'\nimport { cn, createClickOutsideHandler } from '@mcp-elements/core'\nimport { useSelect } from './hooks/use-select'\nimport type { SelectOption } from '@mcp-elements/core'\n\nexport interface SelectProps {\n options: SelectOption[]\n placeholder?: string\n className?: string\n onChange?: (value: string) => void\n}\n\nexport function Select({ options, placeholder = 'Select...', className, onChange }: SelectProps) {\n const select = useSelect(options)\n const containerRef = useRef<HTMLDivElement>(null)\n\n const selectedLabel = options.find(o => o.value === select.selectedValue)?.label\n\n useEffect(() => {\n if (!select.isOpen || !containerRef.current) return\n return createClickOutsideHandler(containerRef.current, () => select.setIsOpen(false))\n }, [select.isOpen])\n\n useEffect(() => {\n if (select.selectedValue && onChange) {\n onChange(select.selectedValue)\n }\n }, [select.selectedValue])\n\n return (\n <div ref={containerRef} className={cn('relative', className)}>\n <button\n className=\"mcpe-select-trigger\"\n aria-expanded={select.isOpen}\n aria-haspopup=\"listbox\"\n aria-activedescendant={select.isOpen && select.highlightedIndex >= 0 ? `select-option-${options[select.highlightedIndex]?.value}` : undefined}\n onClick={() => select.setIsOpen(!select.isOpen)}\n onKeyDown={select.handleKeyDown}\n type=\"button\"\n >\n <span className={cn(!selectedLabel && 'text-muted-foreground')}>\n {selectedLabel || placeholder}\n </span>\n <svg\n className={cn('h-4 w-4 opacity-50 transition-transform', select.isOpen && 'rotate-180')}\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\"\n stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n {select.isOpen && (\n <div className=\"mcpe-select-content absolute top-full mt-1 w-full\">\n <div className=\"mcpe-select-viewport\" role=\"listbox\">\n {options.map((option, index) => (\n <div\n key={option.value}\n role=\"option\"\n aria-selected={option.value === select.selectedValue}\n aria-disabled={option.disabled || undefined}\n className={cn(\n 'mcpe-select-item',\n index === select.highlightedIndex && !option.disabled && 'mcpe-select-item-active',\n option.value === select.selectedValue && 'mcpe-select-item-selected',\n option.disabled && 'opacity-50 pointer-events-none'\n )}\n onClick={() => {\n if (!option.disabled) {\n select.setSelectedValue(option.value)\n select.setIsOpen(false)\n }\n }}\n onMouseEnter={() => {\n if (!option.disabled) select.setHighlightedIndex(index)\n }}\n >\n {option.value === select.selectedValue && (\n <svg className=\"absolute right-2 h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n )}\n {option.label}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport { useSelect } from './hooks/use-select'\n","import { useState, useMemo, useCallback } from 'react'\nimport { createSelect, type SelectOption, type SelectConfig } from '@mcp-elements/core'\n\nexport function useSelect(options: SelectOption[], config: Omit<SelectConfig, 'onValueChange' | 'onOpenChange'> = {}) {\n const [isOpen, setIsOpen] = useState(false)\n const [selectedValue, setSelectedValue] = useState<string | null>(null)\n const [highlightedIndex, setHighlightedIndex] = useState(0)\n\n const api = useMemo(\n () => createSelect(options, {\n ...config,\n onValueChange: setSelectedValue,\n onOpenChange: setIsOpen,\n }),\n [options]\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n api.handleKeyDown(e.nativeEvent, isOpen, highlightedIndex, setHighlightedIndex)\n },\n [api, isOpen, highlightedIndex]\n )\n\n const { handleKeyDown: _coreHandleKeyDown, ...restApi } = api\n\n return {\n isOpen,\n setIsOpen,\n selectedValue,\n setSelectedValue,\n highlightedIndex,\n setHighlightedIndex,\n handleKeyDown,\n ...restApi,\n }\n}\n","import { cn } from '@mcp-elements/core'\nimport { useTooltip } from './hooks/use-tooltip'\n\nexport interface TooltipProps {\n content: React.ReactNode\n delay?: number\n children: React.ReactElement\n className?: string\n side?: 'top' | 'bottom'\n}\n\nexport function Tooltip({ content, delay, children, className, side = 'top' }: TooltipProps) {\n const tooltip = useTooltip({ delay })\n\n const positionClasses = side === 'top'\n ? 'bottom-full left-1/2 -translate-x-1/2 mb-2'\n : 'top-full left-1/2 -translate-x-1/2 mt-2'\n\n const triggerProps = tooltip.getTriggerProps()\n const contentProps = tooltip.getContentProps(tooltip.open)\n\n return (\n <div className=\"relative inline-flex\" {...triggerProps}>\n {children}\n {tooltip.open && (\n <div\n {...contentProps}\n className={cn('mcpe-tooltip-content absolute', positionClasses, className)}\n >\n {content}\n </div>\n )}\n </div>\n )\n}\n\nexport { useTooltip } from './hooks/use-tooltip'\n","import { useState, useMemo, useEffect } from 'react'\nimport { createTooltip, type TooltipConfig } from '@mcp-elements/core'\n\nexport function useTooltip(config: Omit<TooltipConfig, 'onOpenChange'> = {}) {\n const [open, setOpen] = useState(false)\n\n const api = useMemo(\n () => createTooltip({ ...config, onOpenChange: setOpen }),\n [config.delay]\n )\n\n useEffect(() => {\n return () => api.destroy()\n }, [api])\n\n return { open, setOpen, ...api }\n}\n","import { useRef, useEffect } from 'react'\nimport { cn, createClickOutsideHandler } from '@mcp-elements/core'\nimport { usePopover } from './hooks/use-popover'\n\nexport interface PopoverProps {\n trigger: React.ReactNode\n children: React.ReactNode\n className?: string\n}\n\nexport function Popover({ trigger, children, className }: PopoverProps) {\n const popover = usePopover()\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!popover.open || !containerRef.current) return\n return createClickOutsideHandler(containerRef.current, () => popover.setOpen(false))\n }, [popover.open])\n\n return (\n <div ref={containerRef} className=\"relative inline-block\">\n <div onClick={() => popover.setOpen(!popover.open)}>{trigger}</div>\n {popover.open && (\n <div\n className={cn('mcpe-popover-content absolute top-full mt-2', className)}\n role=\"dialog\"\n onKeyDown={(e) => { if (e.key === 'Escape') popover.setOpen(false) }}\n >\n {children}\n </div>\n )}\n </div>\n )\n}\n\nexport { usePopover } from './hooks/use-popover'\n","import { useState, useMemo } from 'react'\nimport { createPopover, type PopoverConfig } from '@mcp-elements/core'\n\nexport function usePopover(config: Omit<PopoverConfig, 'onOpenChange'> = {}) {\n const [open, setOpen] = useState(false)\n\n const api = useMemo(\n () => createPopover({ ...config, onOpenChange: setOpen }),\n []\n )\n\n return { open, setOpen, ...api }\n}\n","import { cn } from '@mcp-elements/core'\nimport { useToast } from './hooks/use-toast'\n\nexport interface ToasterProps {\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n className?: string\n}\n\nexport function Toaster({ position = 'bottom-right', className }: ToasterProps) {\n const { toasts, dismiss } = useToast()\n\n return (\n <div className={cn('mcpe-toaster', `mcpe-toaster-${position}`, className)}>\n {toasts.map((t) => (\n <div\n key={t.id}\n className={cn(\n 'mcpe-toast group',\n t.variant === 'destructive' && 'mcpe-toast-destructive',\n t.variant === 'success' && 'mcpe-toast-success'\n )}\n >\n <div className=\"flex-1\">\n {t.title && <div className=\"mcpe-toast-title\">{t.title}</div>}\n {t.description && <div className=\"mcpe-toast-description\">{t.description}</div>}\n </div>\n {t.action && (\n <button className=\"mcpe-toast-action\" onClick={t.action.onClick} type=\"button\">\n {t.action.label}\n </button>\n )}\n <button\n className=\"mcpe-toast-close\"\n onClick={() => dismiss(t.id)}\n type=\"button\"\n aria-label=\"Close\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </div>\n ))}\n </div>\n )\n}\n\nexport { useToast } from './hooks/use-toast'\n","import { useState, useEffect, useCallback } from 'react'\nimport { toast as toastManager, type Toast } from '@mcp-elements/core'\n\nexport function useToast() {\n const [toasts, setToasts] = useState<Toast[]>([])\n\n useEffect(() => {\n return toastManager.subscribe((state) => {\n setToasts([...state.toasts])\n })\n }, [])\n\n const dismiss = useCallback((id: string) => {\n toastManager.dismiss(id)\n }, [])\n\n return { toasts, dismiss, toast: toastManager }\n}\n","import { useEffect, useRef } from 'react'\nimport { cn, trapFocus, lockScroll } from '@mcp-elements/core'\nimport { useDrawer } from './hooks/use-drawer'\n\nexport interface DrawerProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n side?: 'left' | 'right' | 'top' | 'bottom'\n children: React.ReactNode\n}\n\nexport function Drawer({ open: controlledOpen, onOpenChange, side = 'right', children }: DrawerProps) {\n const drawer = useDrawer({ side })\n const isOpen = controlledOpen ?? drawer.open\n const setOpen = onOpenChange ?? drawer.setOpen\n const contentRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!isOpen) return\n const unlock = lockScroll()\n return unlock\n }, [isOpen])\n\n useEffect(() => {\n if (!isOpen || !contentRef.current) return\n const el = contentRef.current\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') { setOpen(false); return }\n trapFocus(el, e)\n }\n el.addEventListener('keydown', handler)\n return () => el.removeEventListener('keydown', handler)\n }, [isOpen])\n\n if (!isOpen) return null\n\n return (\n <>\n <div className=\"mcpe-drawer-overlay\" onClick={() => setOpen(false)} />\n <div\n ref={contentRef}\n className={cn('mcpe-drawer-content', `mcpe-drawer-content-${side}`)}\n role=\"dialog\"\n aria-modal={true}\n >\n {children}\n <button className=\"mcpe-drawer-close\" aria-label=\"Close\" onClick={() => setOpen(false)} type=\"button\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </div>\n </>\n )\n}\n\nexport function DrawerHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mcpe-drawer-header', className)} {...props} />\n}\nexport function DrawerFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mcpe-drawer-footer', className)} {...props} />\n}\nexport function DrawerTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n return <h2 className={cn('mcpe-drawer-title', className)} {...props} />\n}\nexport function DrawerDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('mcpe-drawer-description', className)} {...props} />\n}\nexport function DrawerBody({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mcpe-drawer-body', className)} {...props} />\n}\n\nexport { useDrawer } from './hooks/use-drawer'\n","import { useState, useMemo } from 'react'\nimport { createDrawer, type DrawerConfig } from '@mcp-elements/core'\n\nexport function useDrawer(config: Omit<DrawerConfig, 'onOpenChange'> = {}) {\n const [open, setOpen] = useState(false)\n const api = useMemo(\n () => createDrawer({ ...config, onOpenChange: setOpen }),\n [config.side]\n )\n return { open, setOpen, ...api }\n}\n","import { useRef, useEffect } from 'react'\nimport { cn, createClickOutsideHandler } from '@mcp-elements/core'\nimport { useDropdownMenu } from './hooks/use-dropdown-menu'\nimport type { DropdownMenuItem } from '@mcp-elements/core'\n\nexport interface DropdownMenuProps {\n trigger: React.ReactNode\n items: DropdownMenuItem[]\n className?: string\n align?: 'start' | 'end'\n}\n\nexport function DropdownMenu({ trigger, items, className, align = 'end' }: DropdownMenuProps) {\n const menu = useDropdownMenu(items)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!menu.isOpen || !containerRef.current) return\n return createClickOutsideHandler(containerRef.current, () => menu.setIsOpen(false))\n }, [menu.isOpen])\n\n const actionItems = items.filter(i => i.type !== 'separator' && i.type !== 'label' && !i.disabled)\n\n return (\n <div ref={containerRef} className=\"relative inline-block\" onKeyDown={menu.handleKeyDown}>\n <div\n onClick={() => menu.setIsOpen(!menu.isOpen)}\n aria-haspopup=\"menu\"\n aria-expanded={menu.isOpen}\n >\n {trigger}\n </div>\n {menu.isOpen && (\n <div\n className={cn(\n 'mcpe-dropdown-menu-content absolute top-full mt-1',\n align === 'end' ? 'right-0' : 'left-0',\n className\n )}\n role=\"menu\"\n >\n {items.map((item) => {\n if (item.type === 'separator') {\n return <div key={item.id} className=\"mcpe-dropdown-menu-separator\" role=\"separator\" />\n }\n if (item.type === 'label') {\n return <div key={item.id} className=\"mcpe-dropdown-menu-label\">{item.label}</div>\n }\n const actionIndex = actionItems.findIndex(ai => ai.id === item.id)\n return (\n <div\n key={item.id}\n role=\"menuitem\"\n aria-disabled={item.disabled || undefined}\n className={cn(\n 'mcpe-dropdown-menu-item',\n actionIndex === menu.highlightedIndex && !item.disabled && 'mcpe-dropdown-menu-item-active',\n item.disabled && 'opacity-50 pointer-events-none'\n )}\n onClick={() => {\n if (!item.disabled) {\n item.onSelect?.()\n menu.setIsOpen(false)\n }\n }}\n onMouseEnter={() => {\n if (!item.disabled) menu.setHighlightedIndex(actionIndex)\n }}\n >\n <span className=\"flex-1\">{item.label}</span>\n {item.shortcut && (\n <span className=\"mcpe-dropdown-menu-shortcut\">{item.shortcut}</span>\n )}\n </div>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\nexport { useDropdownMenu } from './hooks/use-dropdown-menu'\n","import { useState, useMemo, useCallback } from 'react'\nimport { createDropdownMenu, type DropdownMenuItem, type DropdownMenuConfig } from '@mcp-elements/core'\n\nexport function useDropdownMenu(items: DropdownMenuItem[], config: Omit<DropdownMenuConfig, 'onOpenChange'> = {}) {\n const [isOpen, setIsOpen] = useState(false)\n const [highlightedIndex, setHighlightedIndex] = useState(0)\n\n const api = useMemo(\n () => createDropdownMenu(items, { ...config, onOpenChange: setIsOpen }),\n [items]\n )\n\n const { handleKeyDown: _coreHandleKeyDown, ...restApi } = api\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n api.handleKeyDown(e.nativeEvent, isOpen, highlightedIndex, setHighlightedIndex)\n },\n [api, isOpen, highlightedIndex]\n )\n\n return {\n isOpen,\n setIsOpen,\n highlightedIndex,\n setHighlightedIndex,\n handleKeyDown,\n ...restApi,\n }\n}\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface SwitchProps {\n checked?: boolean\n onCheckedChange?: (checked: boolean) => void\n disabled?: boolean\n className?: string\n id?: string\n name?: string\n}\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n ({ checked = false, onCheckedChange, disabled, className, id, name }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n id={id}\n aria-checked={checked}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n className={cn('mcpe-switch', className)}\n onClick={() => onCheckedChange?.(!checked)}\n onKeyDown={(e) => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault()\n onCheckedChange?.(!checked)\n }\n }}\n >\n <span className=\"mcpe-switch-thumb\" />\n {name && <input type=\"hidden\" name={name} value={checked ? 'on' : 'off'} />}\n </button>\n )\n)\nSwitch.displayName = 'Switch'\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: number\n max?: number\n}\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n ({ value = 0, max = 100, className, ...props }, ref) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100)\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n className={cn('mcpe-progress', className)}\n {...props}\n >\n <div\n className=\"mcpe-progress-indicator\"\n style={{ transform: `translateX(-${100 - percentage}%)` }}\n />\n </div>\n )\n }\n)\nProgress.displayName = 'Progress'\n","import { cn } from '@mcp-elements/core'\n\nexport interface LoaderProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'md' | 'lg' | 'xl'\n variant?: 'primary' | 'muted'\n}\n\nexport function Loader({ size = 'md', variant = 'primary', className, ...props }: LoaderProps) {\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n className={cn('mcpe-loader', `mcpe-loader-${size}`, `mcpe-loader-${variant}`, className)}\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n )\n}\n","import { cn } from '@mcp-elements/core'\n\nexport interface ChipProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: 'default' | 'primary' | 'outline' | 'destructive'\n onRemove?: () => void\n}\n\nexport function Chip({ variant = 'default', onRemove, className, children, ...props }: ChipProps) {\n return (\n <span\n className={cn('mcpe-chip', `mcpe-chip-${variant}`, onRemove && 'mcpe-chip-removable', className)}\n {...props}\n >\n {children}\n {onRemove && (\n <button\n type=\"button\"\n className=\"mcpe-chip-remove\"\n onClick={(e) => { e.stopPropagation(); onRemove() }}\n aria-label=\"Remove\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n </button>\n )}\n </span>\n )\n}\n\nexport interface ChipsProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport function Chips({ className, ...props }: ChipsProps) {\n return <div className={cn('mcpe-chips', className)} {...props} />\n}\n","import { forwardRef, useState } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface PasswordInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {}\n\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(\n ({ className, ...props }, ref) => {\n const [showPassword, setShowPassword] = useState(false)\n\n return (\n <div className=\"mcpe-password-input-wrapper\">\n <input\n ref={ref}\n type={showPassword ? 'text' : 'password'}\n className={cn('mcpe-password-input', className)}\n {...props}\n />\n <button\n type=\"button\"\n className=\"mcpe-password-toggle\"\n onClick={() => setShowPassword(!showPassword)}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n\n >\n {showPassword ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </button>\n </div>\n )\n }\n)\nPasswordInput.displayName = 'PasswordInput'\n","import { cn } from '@mcp-elements/core'\n\nexport interface CounterProps {\n value: number\n onChange: (value: number) => void\n min?: number\n max?: number\n step?: number\n disabled?: boolean\n className?: string\n}\n\nexport function Counter({ value, onChange, min = 0, max = 99, step = 1, disabled, className }: CounterProps) {\n const decrement = () => onChange(Math.max(min, value - step))\n const increment = () => onChange(Math.min(max, value + step))\n\n return (\n <div className={cn('mcpe-counter', className)}>\n <button\n type=\"button\"\n className=\"mcpe-counter-button\"\n onClick={decrement}\n disabled={disabled || value <= min}\n aria-label=\"Decrease\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M5 12h14\" />\n </svg>\n </button>\n <input\n type=\"text\"\n inputMode=\"numeric\"\n className=\"mcpe-counter-input\"\n value={value}\n onChange={(e) => {\n const num = parseInt(e.target.value, 10)\n if (!isNaN(num)) onChange(Math.max(min, Math.min(max, num)))\n }}\n disabled={disabled}\n aria-label=\"Count\"\n />\n <button\n type=\"button\"\n className=\"mcpe-counter-button\"\n onClick={increment}\n disabled={disabled || value >= max}\n aria-label=\"Increase\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M5 12h14\" /><path d=\"M12 5v14\" />\n </svg>\n </button>\n </div>\n )\n}\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'destructive' | 'success' | 'warning'\n}\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\n ({ variant = 'default', className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn('mcpe-alert', `mcpe-alert-${variant}`, className)}\n {...props}\n />\n )\n)\nAlert.displayName = 'Alert'\n\nexport function AlertTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n return <h5 className={cn('mcpe-alert-title', className)} {...props} />\n}\n\nexport function AlertDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return <div className={cn('mcpe-alert-description', className)} {...props} />\n}\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport const PromptInput = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-prompt-input', className)} {...props} />\n )\n)\nPromptInput.displayName = 'PromptInput'\n\nexport interface PromptInputTextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport const PromptInputTextarea = forwardRef<HTMLTextAreaElement, PromptInputTextareaProps>(\n ({ className, ...props }, ref) => (\n <textarea ref={ref} className={cn('mcpe-prompt-input-textarea', className)} rows={3} {...props} />\n )\n)\nPromptInputTextarea.displayName = 'PromptInputTextarea'\n\nexport const PromptInputFooter = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-prompt-input-footer', className)} {...props} />\n )\n)\nPromptInputFooter.displayName = 'PromptInputFooter'\n\nexport const PromptInputActions = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-prompt-input-actions', className)} {...props} />\n )\n)\nPromptInputActions.displayName = 'PromptInputActions'\n\nexport interface PromptInputCharCountProps {\n count: number\n max?: number\n className?: string\n}\n\nexport function PromptInputCharCount({ count, max, className }: PromptInputCharCountProps) {\n return (\n <span className={cn('mcpe-prompt-input-char-count', className)}>\n {count}{max != null && `/${max}`}\n </span>\n )\n}\n\nexport const PromptInputAttachments = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-prompt-input-attachments', className)} {...props} />\n )\n)\nPromptInputAttachments.displayName = 'PromptInputAttachments'\n\nexport interface PromptInputAttachmentProps extends React.HTMLAttributes<HTMLSpanElement> {\n onRemove?: () => void\n}\n\nexport function PromptInputAttachment({ onRemove, className, children, ...props }: PromptInputAttachmentProps) {\n return (\n <span className={cn('mcpe-prompt-input-attachment', className)} {...props}>\n {children}\n {onRemove && (\n <button\n type=\"button\"\n className=\"mcpe-prompt-input-attachment-remove\"\n onClick={(e) => { e.stopPropagation(); onRemove() }}\n aria-label=\"Remove\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n </button>\n )}\n </span>\n )\n}\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface ChatBubbleProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'user' | 'ai'\n}\n\nexport const ChatBubble = forwardRef<HTMLDivElement, ChatBubbleProps>(\n ({ variant = 'ai', className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-chat-bubble', `mcpe-chat-bubble-${variant}`, className)} {...props} />\n )\n)\nChatBubble.displayName = 'ChatBubble'\n\nexport interface ChatBubbleAvatarProps {\n src: string\n alt: string\n className?: string\n}\n\nexport function ChatBubbleAvatar({ src, alt, className }: ChatBubbleAvatarProps) {\n return <img src={src} alt={alt} className={cn('mcpe-chat-bubble-avatar', className)} />\n}\n\nexport const ChatBubbleContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-chat-bubble-content', className)} {...props} />\n )\n)\nChatBubbleContent.displayName = 'ChatBubbleContent'\n\nexport const ChatBubbleTimestamp = forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={cn('mcpe-chat-bubble-timestamp', className)} {...props} />\n )\n)\nChatBubbleTimestamp.displayName = 'ChatBubbleTimestamp'\n\nexport function ChatBubbleTyping({ className }: { className?: string }) {\n return (\n <div className={cn('mcpe-chat-bubble-typing', className)}>\n <span className=\"mcpe-chat-bubble-typing-dot\" />\n <span className=\"mcpe-chat-bubble-typing-dot\" />\n <span className=\"mcpe-chat-bubble-typing-dot\" />\n </div>\n )\n}\n","import { cn } from '@mcp-elements/core'\n\nexport interface AiBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: 'default' | 'prominent' | 'subtle'\n showIcon?: boolean\n}\n\nexport function AiBadge({ variant = 'default', showIcon = true, className, children, ...props }: AiBadgeProps) {\n return (\n <span className={cn('mcpe-ai-badge', `mcpe-ai-badge-${variant}`, className)} {...props}>\n {showIcon && (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 3l1.912 5.813a2 2 0 0 0 1.275 1.275L21 12l-5.813 1.912a2 2 0 0 0-1.275 1.275L12 21l-1.912-5.813a2 2 0 0 1-1.275-1.275L3 12l5.813-1.912a2 2 0 0 1 1.275-1.275L12 3z\" />\n </svg>\n )}\n {children}\n </span>\n )\n}\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface SuggestionChipsProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const SuggestionChips = forwardRef<HTMLDivElement, SuggestionChipsProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-suggestion-chips', className)} {...props} />\n )\n)\nSuggestionChips.displayName = 'SuggestionChips'\n\nexport interface SuggestionChipProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'default' | 'primary' | 'outline'\n}\n\nexport const SuggestionChip = forwardRef<HTMLButtonElement, SuggestionChipProps>(\n ({ variant = 'default', className, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n className={cn('mcpe-suggestion-chip', `mcpe-suggestion-chip-${variant}`, className)}\n {...props}\n />\n )\n)\nSuggestionChip.displayName = 'SuggestionChip'\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface SourceCardsProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const SourceCards = forwardRef<HTMLDivElement, SourceCardsProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-source-cards', className)} {...props} />\n )\n)\nSourceCards.displayName = 'SourceCards'\n\nexport interface SourceCardProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n favicon?: string\n title: string\n domain: string\n index?: number\n}\n\nexport const SourceCard = forwardRef<HTMLAnchorElement, SourceCardProps>(\n ({ favicon, title, domain, index, className, ...props }, ref) => (\n <a\n ref={ref}\n className={cn('mcpe-source-card', className)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n {...props}\n >\n {favicon && <img className=\"mcpe-source-card-favicon\" src={favicon} alt={domain} />}\n <div className=\"mcpe-source-card-body\">\n <p className=\"mcpe-source-card-title\">{title}</p>\n <p className=\"mcpe-source-card-domain\">{domain}</p>\n </div>\n {index != null && <span className=\"mcpe-source-card-index\">{index}</span>}\n </a>\n )\n)\nSourceCard.displayName = 'SourceCard'\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport interface StreamingTextProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const StreamingText = forwardRef<HTMLDivElement, StreamingTextProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-streaming-text-cursor', className)} {...props} />\n )\n)\nStreamingText.displayName = 'StreamingText'\n\nexport const StreamingTextFadeIn = forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={cn('mcpe-streaming-text-fade-in', className)} {...props} />\n )\n)\nStreamingTextFadeIn.displayName = 'StreamingTextFadeIn'\n\nexport const StreamingTextWord = forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={cn('mcpe-streaming-text-word', className)} {...props} />\n )\n)\nStreamingTextWord.displayName = 'StreamingTextWord'\n\nexport const StreamingTextLine = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-streaming-text-line', className)} {...props} />\n )\n)\nStreamingTextLine.displayName = 'StreamingTextLine'\n\nexport const StreamingTextSkeleton = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-streaming-text-skeleton', className)} {...props} />\n )\n)\nStreamingTextSkeleton.displayName = 'StreamingTextSkeleton'\n\nexport const StreamingTextSkeletonLine = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-streaming-text-skeleton-line', className)} {...props} />\n )\n)\nStreamingTextSkeletonLine.displayName = 'StreamingTextSkeletonLine'\n","import { forwardRef } from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport const Feedback = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-feedback', className)} {...props} />\n )\n)\nFeedback.displayName = 'Feedback'\n\nexport interface FeedbackButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n type: 'up' | 'down'\n selected?: boolean\n}\n\nexport function FeedbackButton({ type, selected = false, className, ...props }: FeedbackButtonProps) {\n return (\n <button\n type=\"button\"\n className={cn(\n 'mcpe-feedback-btn',\n `mcpe-feedback-btn-${type}`,\n selected && 'mcpe-feedback-btn-selected',\n className\n )}\n {...props}\n >\n {type === 'up' ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M7 10v12\" /><path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" />\n </svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M17 14V2\" /><path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" />\n </svg>\n )}\n </button>\n )\n}\n\nexport function FeedbackSeparator({ className }: { className?: string }) {\n return <span className={cn('mcpe-feedback-separator', className)} />\n}\n\nexport const FeedbackForm = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('mcpe-feedback-form', className)} {...props} />\n )\n)\nFeedbackForm.displayName = 'FeedbackForm'\n\nexport const FeedbackInput = forwardRef<HTMLInputElement, React.InputHTMLAttributes<HTMLInputElement>>(\n ({ className, ...props }, ref) => (\n <input ref={ref} className={cn('mcpe-feedback-input', className)} placeholder=\"Add a comment...\" {...props} />\n )\n)\nFeedbackInput.displayName = 'FeedbackInput'\n\nexport const FeedbackSubmit = forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\n ({ className, children = 'Submit', ...props }, ref) => (\n <button ref={ref} className={cn('mcpe-feedback-submit', className)} {...props}>\n {children}\n </button>\n )\n)\nFeedbackSubmit.displayName = 'FeedbackSubmit'\n","import type React from 'react'\nimport { cn } from '@mcp-elements/core'\n\nexport type McpConnectionStatus = 'connected' | 'connecting' | 'disconnected' | 'error'\n\nexport interface McpServerStatusProps extends React.HTMLAttributes<HTMLSpanElement> {\n status: McpConnectionStatus\n serverName?: string\n}\n\nconst STATUS_LABELS: Record<McpConnectionStatus, string> = {\n connected: 'Connected',\n connecting: 'Connecting',\n disconnected: 'Disconnected',\n error: 'Error',\n}\n\nexport function McpServerStatus({ status, serverName, className, ...props }: McpServerStatusProps) {\n return (\n <span\n role=\"status\"\n aria-live=\"polite\"\n aria-label={serverName ? `${serverName}: ${STATUS_LABELS[status]}` : STATUS_LABELS[status]}\n {...props}\n className={cn(\n 'mcpe-mcp-server-status',\n `mcpe-mcp-server-status-${status}`,\n className,\n )}\n >\n <span className=\"mcpe-mcp-server-status-dot\" aria-hidden=\"true\" />\n {serverName ? `${serverName} · ${STATUS_LABELS[status]}` : STATUS_LABELS[status]}\n </span>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { cn } from '@mcp-elements/core'\nimport type { ToolStateApi, ToolStateSnapshot } from '@mcp-elements/core'\n\nexport interface McpToolCallProps {\n state: ToolStateApi\n toolName?: string\n args?: Record<string, unknown>\n onRetry?: () => void\n className?: string\n}\n\nconst STATUS_LABELS: Record<string, string> = {\n idle: 'idle',\n pending: 'pending',\n running: 'running',\n done: 'done',\n error: 'error',\n cancelled: 'cancelled',\n}\n\nfunction snapFromState(state: ToolStateApi): ToolStateSnapshot {\n return {\n status: state.status,\n tool: state.tool,\n args: state.args,\n result: state.result,\n error: state.error,\n startedAt: state.startedAt,\n endedAt: state.endedAt,\n }\n}\n\nexport function McpToolCall({ state, toolName, args, onRetry, className }: McpToolCallProps) {\n const [snap, setSnap] = useState<ToolStateSnapshot>(() => snapFromState(state))\n\n useEffect(() => {\n setSnap(snapFromState(state))\n return state.subscribe((s) => setSnap({ ...s }))\n }, [state])\n\n const displayName = snap.tool ?? toolName ?? 'unknown'\n const displayArgs = snap.args ?? args\n\n return (\n <div className={cn('mcpe-mcp-tool-call', className)}>\n {/* Header */}\n <div className=\"mcpe-mcp-tool-call-header\">\n <div className=\"mcpe-mcp-tool-call-name\">\n <span className=\"mcpe-mcp-tool-call-icon\" aria-hidden=\"true\">fn</span>\n <span className=\"mcpe-mcp-tool-call-title\">{displayName}</span>\n </div>\n <span className={cn('mcpe-mcp-tool-call-badge', `mcpe-mcp-tool-call-badge-${snap.status}`)}>\n {snap.status === 'running' && (\n <svg className=\"animate-spin h-3 w-3\" fill=\"none\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\n </svg>\n )}\n {STATUS_LABELS[snap.status]}\n </span>\n </div>\n\n {/* Args */}\n {displayArgs && (\n <pre className=\"mcpe-mcp-tool-call-args\">\n {JSON.stringify(displayArgs, null, 2)}\n </pre>\n )}\n\n {/* Progress bar (running) */}\n {snap.status === 'running' && (\n <div className=\"mcpe-mcp-tool-call-progress\" role=\"progressbar\" aria-label=\"Tool running\">\n <div className=\"mcpe-mcp-tool-call-progress-bar\" style={{ width: '60%' }} />\n </div>\n )}\n\n {/* Result (done) */}\n {snap.status === 'done' && snap.result && (\n <div className=\"mcpe-mcp-tool-call-result mcpe-mcp-tool-call-result-done\">\n {snap.result.content\n .filter((c) => c.type === 'text')\n .map((c, i) => (\n <p key={i} className=\"whitespace-pre-wrap text-sm\">\n {'text' in c ? c.text : null}\n </p>\n ))}\n </div>\n )}\n\n {/* Error */}\n {snap.status === 'error' && snap.error && (\n <div className=\"mcpe-mcp-tool-call-result mcpe-mcp-tool-call-result-error\">\n <p className=\"text-sm\">{snap.error.message}</p>\n {onRetry && (\n <div className=\"mcpe-mcp-tool-call-footer mt-2\">\n <button\n onClick={onRetry}\n className=\"text-xs underline underline-offset-2 hover:no-underline\"\n >\n Retry\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n","import { useState } from 'react'\nimport { cn, schemaToFields } from '@mcp-elements/core'\nimport type { JsonSchema, FieldDescriptor } from '@mcp-elements/core'\n\nexport interface McpToolFormProps {\n schema: JsonSchema\n onSubmit: (args: Record<string, unknown>) => void\n loading?: boolean\n submitLabel?: string\n className?: string\n}\n\nfunction FieldInput({\n field,\n value,\n onChange,\n}: {\n field: FieldDescriptor\n value: unknown\n onChange: (v: unknown) => void\n}) {\n const str = typeof value === 'string' ? value : value == null ? '' : String(value)\n\n switch (field.kind) {\n case 'switch':\n return (\n <input\n type=\"checkbox\"\n id={field.key}\n checked={Boolean(value)}\n onChange={(e) => onChange(e.target.checked)}\n className=\"mcpe-switch\"\n aria-label={field.label}\n />\n )\n\n case 'select':\n return (\n <select\n id={field.key}\n value={str}\n onChange={(e) => onChange(e.target.value)}\n className=\"mcpe-select\"\n required={field.required}\n >\n <option value=\"\">Select…</option>\n {field.options?.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n )\n\n case 'multiselect':\n return (\n <select\n id={field.key}\n multiple\n value={Array.isArray(value) ? value.map(String) : []}\n onChange={(e) => {\n const selected = Array.from(e.target.selectedOptions).map((o) => o.value)\n onChange(selected)\n }}\n className=\"mcpe-select\"\n required={field.required}\n >\n {field.options?.map((opt) => (\n <option key={opt.value} value={opt.value}>{opt.label}</option>\n ))}\n </select>\n )\n\n case 'textarea':\n return (\n <textarea\n id={field.key}\n value={str}\n onChange={(e) => onChange(e.target.value)}\n className=\"mcpe-textarea\"\n required={field.required}\n minLength={field.minLength}\n maxLength={field.maxLength}\n rows={4}\n />\n )\n\n case 'number':\n return (\n <input\n type=\"number\"\n id={field.key}\n value={str}\n onChange={(e) => onChange(e.target.valueAsNumber)}\n className=\"mcpe-input\"\n required={field.required}\n min={field.min}\n max={field.max}\n />\n )\n\n case 'unknown':\n return (\n <input\n type=\"text\"\n id={field.key}\n value={str}\n onChange={(e) => onChange(e.target.value)}\n className=\"mcpe-input\"\n disabled\n placeholder=\"(unsupported field type)\"\n />\n )\n\n default:\n return (\n <input\n type={field.kind === 'email' ? 'email' : field.kind === 'url' ? 'url' : field.kind === 'date' ? 'date' : 'text'}\n id={field.key}\n value={str}\n onChange={(e) => onChange(e.target.value)}\n className=\"mcpe-input\"\n required={field.required}\n pattern={field.pattern}\n minLength={field.minLength}\n maxLength={field.maxLength}\n />\n )\n }\n}\n\nexport function McpToolForm({\n schema,\n onSubmit,\n loading = false,\n submitLabel = 'Run',\n className,\n}: McpToolFormProps) {\n const fields = schemaToFields(schema)\n const [values, setValues] = useState<Record<string, unknown>>(() => {\n const defaults: Record<string, unknown> = {}\n for (const f of fields) {\n if (f.defaultValue !== undefined) defaults[f.key] = f.defaultValue\n }\n return defaults\n })\n\n function setValue(key: string, value: unknown) {\n setValues((prev) => ({ ...prev, [key]: value }))\n }\n\n function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n onSubmit(values)\n }\n\n if (fields.length === 0) {\n return (\n <form onSubmit={handleSubmit} className={cn('mcpe-mcp-tool-form', className)}>\n <p className=\"text-sm text-muted-foreground\">This tool takes no inputs.</p>\n <div className=\"mcpe-mcp-tool-form-submit\">\n <button type=\"submit\" className=\"mcpe-btn mcpe-btn-primary mcpe-btn-sm\" disabled={loading}>\n {loading ? 'Running…' : submitLabel}\n </button>\n </div>\n </form>\n )\n }\n\n return (\n <form onSubmit={handleSubmit} className={cn('mcpe-mcp-tool-form', className)}>\n {fields.map((field) => (\n <div key={field.key} className=\"mcpe-mcp-tool-form-field\">\n <label\n htmlFor={field.key}\n className={cn('mcpe-mcp-tool-form-label', field.required && 'mcpe-mcp-tool-form-label-required')}\n >\n {field.label}\n </label>\n <FieldInput field={field} value={values[field.key]} onChange={(v) => setValue(field.key, v)} />\n {field.help && <p className=\"mcpe-mcp-tool-form-help\">{field.help}</p>}\n </div>\n ))}\n <div className=\"mcpe-mcp-tool-form-submit\">\n <button type=\"submit\" className=\"mcpe-btn mcpe-btn-primary mcpe-btn-sm\" disabled={loading}>\n {loading ? 'Running…' : submitLabel}\n </button>\n </div>\n </form>\n )\n}\n","import { cn, parseScopes } from '@mcp-elements/core'\nimport { Dialog, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from '../dialog'\nimport { Button } from '../button'\n\nexport interface McpConsentDialogProps {\n open: boolean\n serverName: string\n serverIcon?: string\n scopes: string[]\n onApprove: () => void\n onDeny: () => void\n className?: string\n}\n\nexport function McpConsentDialog({\n open,\n serverName,\n serverIcon,\n scopes,\n onApprove,\n onDeny,\n className,\n}: McpConsentDialogProps) {\n const parsed = parseScopes(scopes.join(' '))\n\n return (\n <Dialog open={open} onOpenChange={(o) => { if (!o) onDeny() }}>\n <div className={cn(className)}>\n <DialogHeader>\n <DialogTitle>Permission Request</DialogTitle>\n <DialogDescription>\n Review and approve the permissions this server is requesting.\n </DialogDescription>\n </DialogHeader>\n\n {/* Server info */}\n <div className=\"mcpe-mcp-consent-dialog-server\">\n <div className=\"mcpe-mcp-consent-dialog-icon\" aria-hidden=\"true\">\n {serverIcon ? (\n <img src={serverIcon} alt=\"\" className=\"h-full w-full object-cover\" />\n ) : (\n serverName[0]?.toUpperCase() ?? '?'\n )}\n </div>\n <div>\n <p className=\"mcpe-mcp-consent-dialog-server-name\">{serverName}</p>\n <p className=\"mcpe-mcp-consent-dialog-server-meta\">is requesting access to</p>\n </div>\n </div>\n\n {/* Scopes list */}\n <div\n className=\"mcpe-mcp-consent-dialog-scopes\"\n role=\"list\"\n aria-label=\"Requested permissions\"\n >\n {parsed.map((s) => (\n <div key={s.raw} className=\"mcpe-mcp-consent-dialog-scope-item\" role=\"listitem\">\n <div className=\"flex-1 min-w-0\">\n <p className=\"mcpe-mcp-consent-dialog-scope-resource\">{s.resource}</p>\n <div className=\"mcpe-mcp-consent-dialog-scope-perms\">\n {s.permissions.map((p) => (\n <span key={p} className=\"mcpe-mcp-consent-dialog-scope-perm\">{p}</span>\n ))}\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Actions */}\n <DialogFooter>\n <div className=\"mcpe-mcp-consent-dialog-actions\">\n <Button variant=\"outline\" onClick={onDeny} className=\"flex-1\">\n Deny\n </Button>\n <Button variant=\"primary\" onClick={onApprove} className=\"flex-1\">\n Allow\n </Button>\n </div>\n </DialogFooter>\n </div>\n </Dialog>\n )\n}\n","import { useState } from 'react'\nimport { cn, parseScopes } from '@mcp-elements/core'\nimport type { ScopeDescriptor } from '@mcp-elements/core'\n\nexport interface McpScopeInspectorProps {\n /** Space-separated scope string OR pre-parsed array */\n scopes: string | ScopeDescriptor[]\n /** Human-readable descriptions keyed by scope raw string or resource */\n descriptions?: Record<string, string>\n className?: string\n}\n\nfunction ChevronIcon({ className }: { className?: string }) {\n return (\n <svg\n className={cn('mcpe-mcp-scope-inspector-chevron', className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n )\n}\n\nexport function McpScopeInspector({ scopes, descriptions = {}, className }: McpScopeInspectorProps) {\n const parsed: ScopeDescriptor[] = typeof scopes === 'string' ? parseScopes(scopes) : scopes\n const [openKeys, setOpenKeys] = useState<Set<string>>(new Set())\n\n function toggle(key: string) {\n setOpenKeys((prev) => {\n const next = new Set(prev)\n if (next.has(key)) next.delete(key)\n else next.add(key)\n return next\n })\n }\n\n return (\n <div className={cn('mcpe-mcp-scope-inspector', className)} role=\"list\">\n {parsed.map((s) => {\n const rawKey = s.raw\n const isOpen = openKeys.has(rawKey)\n const description = descriptions[rawKey] ?? descriptions[s.resource] ?? s.description\n const safeKey = rawKey.replace(/[^a-zA-Z0-9]/g, '-')\n const triggerId = `scope-trigger-${safeKey}`\n const bodyId = `scope-body-${safeKey}`\n\n return (\n <div key={rawKey} className=\"mcpe-mcp-scope-inspector-item\" role=\"listitem\">\n <button\n id={triggerId}\n className=\"mcpe-mcp-scope-inspector-trigger\"\n aria-expanded={isOpen}\n aria-controls={bodyId}\n onClick={() => toggle(rawKey)}\n type=\"button\"\n >\n <div className=\"flex items-center gap-3\">\n <span className=\"mcpe-mcp-scope-inspector-resource\">{s.resource}</span>\n <div className=\"mcpe-mcp-scope-inspector-perms\">\n {s.permissions.map((p) => (\n <span key={p} className=\"mcpe-mcp-scope-inspector-perm\">{p}</span>\n ))}\n </div>\n </div>\n <ChevronIcon className={isOpen ? 'mcpe-mcp-scope-inspector-chevron-open' : undefined} />\n </button>\n\n {isOpen && description && (\n <div\n id={bodyId}\n role=\"region\"\n aria-labelledby={triggerId}\n className=\"mcpe-mcp-scope-inspector-body\"\n >\n {description}\n </div>\n )}\n </div>\n )\n })}\n </div>\n )\n}\n","import { cn } from '@mcp-elements/core'\nimport { Skeleton } from '../skeleton'\n\nexport interface McpResource {\n uri: string\n name: string\n mimeType?: string\n description?: string\n}\n\nexport interface McpResourceBrowserProps {\n resources: McpResource[]\n selectedUri?: string\n onSelect?: (resource: McpResource) => void\n loading?: boolean\n className?: string\n}\n\nfunction mimeTypeLabel(mimeType?: string): string {\n if (!mimeType) return 'res'\n if (mimeType.includes('json')) return 'json'\n if (mimeType.includes('text')) return 'txt'\n if (mimeType.includes('image')) return 'img'\n if (mimeType.includes('pdf')) return 'pdf'\n return mimeType.split('/')[1]?.slice(0, 4) ?? 'res'\n}\n\nexport function McpResourceBrowser({\n resources,\n selectedUri,\n onSelect,\n loading = false,\n className,\n}: McpResourceBrowserProps) {\n if (loading) {\n return (\n <div className={cn('mcpe-mcp-resource-browser', className)}>\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"flex items-center gap-3 px-3 py-2.5\">\n <Skeleton className=\"h-8 w-8 rounded-md\" />\n <Skeleton className=\"h-4 flex-1\" />\n <Skeleton className=\"h-3 w-10\" />\n </div>\n ))}\n </div>\n )\n }\n\n if (resources.length === 0) {\n return (\n <div className={cn('mcpe-mcp-resource-browser', className)}>\n <p className=\"mcpe-mcp-resource-browser-empty\">No resources available</p>\n </div>\n )\n }\n\n return (\n <div className={cn('mcpe-mcp-resource-browser', className)} role=\"list\">\n {resources.map((r) => (\n <button\n key={r.uri}\n type=\"button\"\n role=\"listitem\"\n className={cn(\n 'mcpe-mcp-resource-browser-item w-full text-left',\n selectedUri === r.uri && 'mcpe-mcp-resource-browser-item-selected',\n )}\n onClick={() => onSelect?.(r)}\n aria-selected={selectedUri === r.uri}\n aria-label={r.name}\n >\n <span className=\"mcpe-mcp-resource-browser-icon\" aria-hidden=\"true\">\n {mimeTypeLabel(r.mimeType)}\n </span>\n <span className=\"mcpe-mcp-resource-browser-name\">{r.name}</span>\n {r.mimeType && (\n <span className=\"mcpe-mcp-resource-browser-type\">{r.mimeType.split('/')[0]}</span>\n )}\n </button>\n ))}\n </div>\n )\n}\n","import { useEffect, useRef, useCallback } from 'react'\nimport { cn, createAppBridge } from '@mcp-elements/core'\nimport type { AppMessageEnvelope } from '@mcp-elements/core'\n\nexport interface McpAppFrameProps {\n /** URL of the MCP App to load */\n src: string\n /** Called when the app sends a message via postMessage */\n onMessage?: (envelope: AppMessageEnvelope) => void\n /** Height of the iframe in pixels */\n height?: number\n /** Additional iframe sandbox flags */\n sandbox?: string\n className?: string\n}\n\nexport function McpAppFrame({\n src,\n onMessage,\n height = 480,\n sandbox = 'allow-scripts allow-same-origin',\n className,\n}: McpAppFrameProps) {\n const frameRef = useRef<HTMLIFrameElement>(null)\n\n const postToFrame = useCallback((msg: AppMessageEnvelope) => {\n frameRef.current?.contentWindow?.postMessage(msg, '*')\n }, [])\n\n useEffect(() => {\n if (!onMessage) return\n\n // createAppBridge only accepts postMessage in config;\n // listeners are registered via bridge.onMessage(fn)\n const bridge = createAppBridge({ postMessage: postToFrame })\n const unsub = bridge.onMessage(onMessage)\n\n const handler = (e: MessageEvent) => {\n bridge.receive(e.data)\n }\n\n window.addEventListener('message', handler)\n return () => {\n window.removeEventListener('message', handler)\n unsub()\n }\n }, [onMessage, postToFrame])\n\n return (\n <div className={cn('mcpe-mcp-app-frame', className)}>\n <iframe\n ref={frameRef}\n src={src}\n sandbox={sandbox as React.IframeHTMLAttributes<HTMLIFrameElement>['sandbox']}\n style={{ height }}\n title=\"MCP App\"\n aria-label=\"MCP App frame\"\n />\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { createToolState } from '@mcp-elements/core'\nimport type { ToolStateApi, ToolStateSnapshot } from '@mcp-elements/core'\n\n/**\n * React hook that wraps a ToolStateApi instance.\n * Provides reactive access to tool call state.\n */\nexport function useMcpToolState(): ToolStateSnapshot & ToolStateApi {\n const [api] = useState<ToolStateApi>(() => createToolState())\n const [snap, setSnap] = useState<ToolStateSnapshot>({\n status: api.status,\n tool: api.tool,\n args: api.args,\n result: api.result,\n error: api.error,\n startedAt: api.startedAt,\n endedAt: api.endedAt,\n })\n\n useEffect(() => {\n return api.subscribe((s) => setSnap({ ...s }))\n }, [api])\n\n return { ...snap, ...api }\n}\n","import { useEffect, useState } from 'react'\nimport { createOAuthFlow } from '@mcp-elements/core'\nimport type { OAuthFlowApi, OAuthFlowSnapshot } from '@mcp-elements/core'\n\n/**\n * React hook that wraps an OAuthFlowApi instance.\n * Manages PKCE OAuth 2.1 flow state.\n */\nexport function useMcpOAuth(): OAuthFlowSnapshot & OAuthFlowApi {\n const [api] = useState<OAuthFlowApi>(() => createOAuthFlow())\n const [snap, setSnap] = useState<OAuthFlowSnapshot>({\n status: api.status,\n verifier: api.verifier,\n state: api.state,\n tokens: api.tokens,\n error: api.error,\n })\n\n useEffect(() => {\n return api.subscribe((s) => setSnap({ ...s }))\n }, [api])\n\n return { ...snap, ...api }\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { createAppBridge } from '@mcp-elements/core'\nimport type { AppMessageEnvelope } from '@mcp-elements/core'\n\nexport interface UseMcpAppBridgeOptions {\n /** Called when a message arrives from the iframe */\n onMessage?: (envelope: AppMessageEnvelope) => void\n}\n\nexport interface UseMcpAppBridgeReturn {\n /** Send a message to the iframe */\n send: (envelope: AppMessageEnvelope) => void\n /** Assign to <iframe ref={...}> */\n frameRef: React.RefObject<HTMLIFrameElement | null>\n}\n\n/**\n * React hook that sets up a postMessage bridge with an MCP App iframe.\n * Wire it up: <iframe ref={frameRef} src={...} />\n *\n * onMessage is stored in a ref so inline callbacks don't recreate the bridge.\n */\nexport function useMcpAppBridge(options: UseMcpAppBridgeOptions = {}): UseMcpAppBridgeReturn {\n const { onMessage } = options\n const frameRef = useRef<HTMLIFrameElement | null>(null)\n const onMessageRef = useRef(onMessage)\n\n // Sync ref each render without adding to effect deps\n useEffect(() => {\n onMessageRef.current = onMessage\n })\n\n const postToFrame = useCallback((env: AppMessageEnvelope) => {\n frameRef.current?.contentWindow?.postMessage(env, '*')\n }, [])\n\n const sendRef = useRef<(env: AppMessageEnvelope) => void>(() => {})\n\n useEffect(() => {\n const bridge = createAppBridge({ postMessage: postToFrame })\n sendRef.current = (env) => bridge.send(env)\n\n const handler = (e: MessageEvent) => bridge.receive(e.data)\n window.addEventListener('message', handler)\n\n // Route all messages through the ref so inline callbacks don't trigger re-creation\n const unsub = bridge.onMessage((env) => onMessageRef.current?.(env))\n\n return () => {\n window.removeEventListener('message', handler)\n unsub()\n }\n }, [postToFrame]) // postToFrame is stable (useCallback with no deps)\n\n const send = useCallback((env: AppMessageEnvelope) => {\n sendRef.current(env)\n }, [])\n\n return { send, frameRef }\n}\n","import { useCallback, useMemo, useState } from 'react'\nimport { schemaToFields } from '@mcp-elements/core'\nimport type { JsonSchema, FieldDescriptor } from '@mcp-elements/core'\n\nexport interface UseMcpSchemaFormReturn {\n /** Derived field descriptors from the JSON Schema */\n fields: FieldDescriptor[]\n /** Current form values */\n values: Record<string, unknown>\n /** Update a single field value (stable reference) */\n setValue: (key: string, value: unknown) => void\n /** Reset values to defaults (stable when fields are unchanged) */\n reset: () => void\n}\n\nfunction buildDefaults(fs: FieldDescriptor[]): Record<string, unknown> {\n const defaults: Record<string, unknown> = {}\n for (const f of fs) {\n if (f.defaultValue !== undefined) defaults[f.key] = f.defaultValue\n }\n return defaults\n}\n\n/**\n * React hook that converts a JSON Schema into form field descriptors\n * and manages form state.\n */\nexport function useMcpSchemaForm(schema: JsonSchema): UseMcpSchemaFormReturn {\n const fields = useMemo(() => schemaToFields(schema), [schema])\n const [values, setValues] = useState<Record<string, unknown>>(() => buildDefaults(fields))\n\n const setValue = useCallback((key: string, value: unknown) => {\n setValues((prev) => ({ ...prev, [key]: value }))\n }, [])\n\n const reset = useCallback(() => {\n setValues(buildDefaults(fields))\n }, [fields])\n\n return { fields, values, setValue, reset }\n}\n"],"mappings":"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","names":["cn","jsx","forwardRef","cn","jsx","forwardRef","cn","jsx","forwardRef","cn","jsx","forwardRef","cn","jsx","forwardRef","cn","jsx","cn","jsx","cn","useState","jsx","cn","useRef","useEffect","cn","useState","useMemo","jsx","cn","useRef","useEffect","cn","useState","useMemo","jsx","jsxs","cn","useRef","useEffect","cn","useState","useMemo","jsx","jsxs","useRef","useEffect","cn","cn","useState","useMemo","useEffect","jsx","jsxs","cn","useRef","useEffect","cn","createClickOutsideHandler","useState","useMemo","jsx","jsxs","useRef","useEffect","createClickOutsideHandler","cn","cn","useState","useEffect","useCallback","jsx","jsxs","cn","useEffect","useRef","cn","trapFocus","lockScroll","useState","useMemo","jsx","jsxs","useRef","useEffect","lockScroll","trapFocus","cn","useRef","useEffect","cn","createClickOutsideHandler","useState","useMemo","useCallback","jsx","jsxs","useRef","useEffect","createClickOutsideHandler","cn","forwardRef","cn","jsx","jsxs","forwardRef","cn","jsx","cn","jsx","cn","jsx","jsxs","forwardRef","useState","cn","jsx","jsxs","cn","jsx","jsxs","forwardRef","cn","jsx","forwardRef","cn","jsx","jsxs","forwardRef","cn","jsx","jsxs","cn","jsx","jsxs","forwardRef","cn","jsx","forwardRef","cn","jsx","jsxs","forwardRef","cn","jsx","forwardRef","cn","jsx","jsxs","cn","jsx","jsxs","useEffect","useState","cn","jsx","jsxs","STATUS_LABELS","useState","cn","jsx","jsxs","cn","jsx","jsxs","cn","useState","cn","parseScopes","jsx","jsxs","cn","jsx","jsxs","cn","useEffect","useRef","useCallback","cn","jsx","useEffect","useState","useEffect","useState","useCallback","useEffect","useRef","createAppBridge","useCallback","useMemo","useState","schemaToFields"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mcp-elements/react",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@mcp-elements/core": "0.1.0"
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
18
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/react": "^19.0.0",
|
|
22
|
+
"@types/react-dom": "^19.0.0",
|
|
23
|
+
"react": "^19.0.0",
|
|
24
|
+
"react-dom": "^19.0.0",
|
|
25
|
+
"tsup": "^8.3.0",
|
|
26
|
+
"vitest": "^2.1.0"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsup",
|
|
33
|
+
"dev": "tsup --watch",
|
|
34
|
+
"test": "vitest run --passWithNoTests",
|
|
35
|
+
"test:watch": "vitest",
|
|
36
|
+
"clean": "rm -rf dist"
|
|
37
|
+
}
|
|
38
|
+
}
|