@yarvelle/ui 0.0.0-stage → 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/bin/yarvelle-ui-codegen.js +115 -0
- package/dist/index-DLbrj3Po.d.ts +90 -0
- package/dist/index.d.ts +706 -0
- package/dist/index.js +4418 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api/index.d.ts +99 -0
- package/dist/lib/api/index.js +113 -0
- package/dist/lib/api/index.js.map +1 -0
- package/dist/lib/auth/index.d.ts +21 -0
- package/dist/lib/auth/index.js +37 -0
- package/dist/lib/auth/index.js.map +1 -0
- package/dist/lib/cn.d.ts +5 -0
- package/dist/lib/cn.js +10 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/i18n/index.d.ts +7 -0
- package/dist/lib/i18n/index.js +45 -0
- package/dist/lib/i18n/index.js.map +1 -0
- package/dist/lib/index.d.ts +8 -0
- package/dist/lib/index.js +272 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/sse/index.d.ts +11 -0
- package/dist/lib/sse/index.js +43 -0
- package/dist/lib/sse/index.js.map +1 -0
- package/dist/lib/storage-namespace.d.ts +6 -0
- package/dist/lib/storage-namespace.js +34 -0
- package/dist/lib/storage-namespace.js.map +1 -0
- package/dist/slots/index.d.ts +12 -0
- package/dist/slots/index.js +86 -0
- package/dist/slots/index.js.map +1 -0
- package/dist/styles.css +270 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.js +36 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tokens/index.d.ts +37 -0
- package/dist/tokens/index.js +155 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/tailwind-preset.d.ts +5 -0
- package/dist/tokens/tailwind-preset.js +155 -0
- package/dist/tokens/tailwind-preset.js.map +1 -0
- package/dist/types-CP_CDg6G.d.ts +51 -0
- package/package.json +69 -4
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/tailwind-preset.ts","../src/primitives/Button.tsx","../src/lib/cn.ts","../src/primitives/Dialog.tsx","../src/primitives/Sheet.tsx","../src/primitives/Card.tsx","../src/primitives/Badge.tsx","../src/primitives/Avatar.tsx","../src/primitives/Chip.tsx","../src/primitives/Menu.tsx","../src/primitives/Popover.tsx","../src/primitives/Tabs.tsx","../src/primitives/Segmented.tsx","../src/primitives/EmptyState.tsx","../src/primitives/Skeleton.tsx","../src/primitives/InlineError.tsx","../src/primitives/Toaster.tsx","../src/chat/Chat.tsx","../src/chat/ChatMarkdown.tsx","../src/chat/CodeBlock.tsx","../src/chat/MermaidDiagram.tsx","../src/chat/MessageToolbar.tsx","../src/chat/ThinkingIndicator.tsx","../src/chat/ApprovalCard.tsx","../src/chat/ToolTraceCard.tsx","../src/chat/ExecutionPlanCard.tsx","../src/chat/ChatConnected.tsx","../src/chat/ActivityLogDrawer.tsx","../src/chat/ModelSelector.tsx","../src/notes/RecordSearch.tsx","../src/notes/NotesList.tsx","../src/notes/NoteView.tsx","../src/calendar/Calendar.tsx","../src/calendar/ScheduleAgenda.tsx","../src/calendar/Reminders.tsx","../src/calendar/Routines.tsx","../src/calendar/ActivityTimeline.tsx","../src/profiles/ProfileSwitcher.tsx","../src/profiles/MemberCard.tsx","../src/profiles/ProfileEditModal.tsx","../src/profiles/RoleMatrix.tsx","../src/profiles/ViewerInvite.tsx","../src/profiles/ShareBundle.tsx","../src/profiles/TeenHandoverBanner.tsx","../src/tasks/TaskItem.tsx","../src/tasks/TaskList.tsx","../src/notifications/NotificationCenter.tsx","../src/settings/SettingsLayout.tsx","../src/slots/SlotRenderer.tsx","../src/settings/SettingsSectionSlotRenderer.tsx","../src/shell/AppRail.tsx","../src/shell/MobileTopBar.tsx","../src/shell/MobileTabBar.tsx","../src/shell/AppLayout.tsx","../src/slots/types.ts","../src/provider/UiProvider.tsx","../src/testing/index.ts","../src/lib/storage-namespace.ts"],"sourcesContent":["// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\n// Emitted automatically by scripts/build-tokens.mjs — DO NOT EDIT DIRECTLY\nimport type { Config } from 'tailwindcss';\n\nexport const yarvellePreset: Config = {\n content: [],\n darkMode: ['class', '[data-theme=\"dark\"]'],\n theme: {\n colors: {\n transparent: 'transparent',\n current: 'currentColor',\n canvas: 'var(--ui-canvas)',\n surface: {\n DEFAULT: 'var(--ui-surface)',\n 2: 'var(--ui-surface-2)',\n 3: 'var(--ui-surface-3)',\n },\n rail: 'var(--ui-rail)',\n overlay: 'var(--ui-overlay)',\n fg: {\n DEFAULT: 'var(--ui-fg)',\n muted: 'var(--ui-fg-muted)',\n subtle: 'var(--ui-fg-subtle)',\n 'on-primary': 'var(--ui-fg-on-primary)',\n link: 'var(--ui-fg-link)',\n },\n border: {\n DEFAULT: 'var(--ui-border)',\n strong: 'var(--ui-border-strong)',\n },\n primary: {\n DEFAULT: 'var(--ui-primary)',\n hover: 'var(--ui-primary-hover)',\n fg: 'var(--ui-primary-fg)',\n soft: 'var(--ui-primary-soft)',\n 'soft-fg': 'var(--ui-primary-soft-fg)',\n },\n info: {\n bg: 'var(--ui-info-bg)',\n fg: 'var(--ui-info-fg)',\n border: 'var(--ui-info-border)',\n },\n warn: {\n bg: 'var(--ui-warn-bg)',\n fg: 'var(--ui-warn-fg)',\n border: 'var(--ui-warn-border)',\n },\n danger: {\n bg: 'var(--ui-danger-bg)',\n fg: 'var(--ui-danger-fg)',\n border: 'var(--ui-danger-border)',\n },\n success: {\n bg: 'var(--ui-success-bg)',\n fg: 'var(--ui-success-fg)',\n border: 'var(--ui-success-border)',\n },\n emergency: {\n DEFAULT: 'var(--ui-emergency)',\n fg: 'var(--ui-emergency-fg)',\n },\n focus: {\n DEFAULT: 'var(--ui-focus)',\n offset: 'var(--ui-focus-offset)',\n },\n member: {\n 1: { bg: 'var(--ui-member-1-bg)', fg: 'var(--ui-member-1-fg)' },\n 2: { bg: 'var(--ui-member-2-bg)', fg: 'var(--ui-member-2-fg)' },\n 3: { bg: 'var(--ui-member-3-bg)', fg: 'var(--ui-member-3-fg)' },\n 4: { bg: 'var(--ui-member-4-bg)', fg: 'var(--ui-member-4-fg)' },\n 5: { bg: 'var(--ui-member-5-bg)', fg: 'var(--ui-member-5-fg)' },\n },\n scope: {\n health: { bg: 'var(--ui-scope-health-bg)', fg: 'var(--ui-scope-health-fg)' },\n finance: { bg: 'var(--ui-scope-finance-bg)', fg: 'var(--ui-scope-finance-fg)' },\n education: { bg: 'var(--ui-scope-education-bg)', fg: 'var(--ui-scope-education-fg)' },\n household: { bg: 'var(--ui-scope-household-bg)', fg: 'var(--ui-scope-household-fg)' },\n },\n risk: {\n low: { bg: 'var(--ui-risk-low-bg)', fg: 'var(--ui-risk-low-fg)', border: 'var(--ui-risk-low-border)' },\n medium: { bg: 'var(--ui-risk-medium-bg)', fg: 'var(--ui-risk-medium-fg)', border: 'var(--ui-risk-medium-border)' },\n high: { bg: 'var(--ui-risk-high-bg)', fg: 'var(--ui-risk-high-fg)', border: 'var(--ui-risk-high-border)' },\n critical: { bg: 'var(--ui-risk-critical-bg)', fg: 'var(--ui-risk-critical-fg)', border: 'var(--ui-risk-critical-border)' },\n },\n },\n spacing: {\n 0: 'var(--ui-space-0)',\n 1: 'var(--ui-space-1)',\n 2: 'var(--ui-space-2)',\n 3: 'var(--ui-space-3)',\n 4: 'var(--ui-space-4)',\n 5: 'var(--ui-space-5)',\n 6: 'var(--ui-space-6)',\n 8: 'var(--ui-space-8)',\n 10: 'var(--ui-space-10)',\n 12: 'var(--ui-space-12)',\n 16: 'var(--ui-space-16)',\n },\n fontFamily: {\n sans: ['var(--ui-font-sans)'],\n display: ['var(--ui-font-display)'],\n mono: ['var(--ui-font-mono)'],\n },\n fontSize: {\n xs: ['var(--ui-text-xs)', { lineHeight: 'var(--ui-leading-xs)' }],\n sm: ['var(--ui-text-sm)', { lineHeight: 'var(--ui-leading-sm)' }],\n base: ['var(--ui-text-md)', { lineHeight: 'var(--ui-leading-md)' }],\n md: ['var(--ui-text-md)', { lineHeight: 'var(--ui-leading-md)' }],\n lg: ['var(--ui-text-lg)', { lineHeight: 'var(--ui-leading-lg)' }],\n xl: ['var(--ui-text-xl)', { lineHeight: 'var(--ui-leading-xl)' }],\n '2xl': ['var(--ui-text-2xl)', { lineHeight: 'var(--ui-leading-2xl)' }],\n '3xl': ['var(--ui-text-3xl)', { lineHeight: 'var(--ui-leading-3xl)' }],\n '4xl': ['var(--ui-text-4xl)', { lineHeight: 'var(--ui-leading-4xl)' }],\n },\n borderRadius: {\n none: '0px',\n sm: 'var(--ui-radius-sm)',\n md: 'var(--ui-radius-md)',\n lg: 'var(--ui-radius-lg)',\n xl: 'var(--ui-radius-xl)',\n full: 'var(--ui-radius-full)',\n },\n boxShadow: {\n 0: 'var(--ui-shadow-0)',\n 1: 'var(--ui-shadow-1)',\n 2: 'var(--ui-shadow-2)',\n 3: 'var(--ui-shadow-3)',\n },\n minHeight: {\n tap: 'var(--ui-tap)',\n },\n minWidth: {\n tap: 'var(--ui-tap)',\n },\n transitionTimingFunction: {\n ui: 'var(--ui-ease)',\n },\n transitionDuration: {\n fast: 'var(--ui-duration-fast)',\n base: 'var(--ui-duration-base)',\n slow: 'var(--ui-duration-slow)',\n },\n zIndex: {\n rail: 'var(--ui-z-rail)',\n sticky: 'var(--ui-z-sticky)',\n popover: 'var(--ui-z-popover)',\n modal: 'var(--ui-z-modal)',\n toast: 'var(--ui-z-toast)',\n skip: 'var(--ui-z-skip)',\n },\n },\n};\n\nexport default yarvellePreset;\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'outline';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nconst variantStyles: Record<ButtonVariant, string> = {\n primary:\n 'bg-primary hover:bg-primary-hover active:bg-primary-hover text-primary-fg border border-transparent shadow-1',\n secondary:\n 'bg-surface hover:bg-surface-2 active:bg-surface-3 text-fg border border-border-strong shadow-1',\n ghost:\n 'bg-transparent hover:bg-surface-2 active:bg-surface-3 text-fg-muted hover:text-fg border border-transparent',\n outline:\n 'bg-transparent hover:bg-surface-2 active:bg-surface-3 text-fg border border-border-strong',\n danger:\n 'bg-danger-bg hover:bg-danger-fg text-danger-fg hover:text-white border border-danger-border',\n};\n\nconst sizeStyles: Record<ButtonSize, string> = {\n sm: 'h-[34px] px-3 text-sm rounded-md relative before:absolute before:-inset-y-1.5 before:inset-x-0 before:content-[\\'\\']',\n md: 'min-h-[44px] h-10 px-4 text-sm rounded-md',\n lg: 'min-h-[48px] h-12 px-5 text-base rounded-md',\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n loading = false,\n disabled = false,\n leftIcon,\n rightIcon,\n children,\n className,\n type = 'button',\n ...props\n },\n ref\n ) => {\n const isDisabled = disabled || loading;\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={isDisabled}\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n data-loading={loading ? 'true' : undefined}\n className={cn(\n 'yc-Button-root inline-flex items-center justify-center font-medium select-none',\n 'transition-colors duration-fast ease-ui',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none',\n variantStyles[variant],\n sizeStyles[size],\n className\n )}\n {...props}\n >\n {loading ? (\n <span\n className=\"yc-Button-spinner me-2 inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\"\n data-slot=\"spinner\"\n role=\"status\"\n aria-label=\"Loading\"\n />\n ) : leftIcon ? (\n <span className=\"yc-Button-icon yc-Button-icon-start me-2 inline-flex shrink-0 items-center\" data-slot=\"icon-start\">\n {leftIcon}\n </span>\n ) : null}\n\n <span className=\"yc-Button-label truncate\" data-slot=\"label\">\n {children}\n </span>\n\n {!loading && rightIcon ? (\n <span className=\"yc-Button-icon yc-Button-icon-end ms-2 inline-flex shrink-0 items-center\" data-slot=\"icon-end\">\n {rightIcon}\n </span>\n ) : null}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\ninterface DialogContextValue {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n dialogId: string;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n}\n\nconst DialogContext = React.createContext<DialogContextValue | null>(null);\n\nfunction useDialogContext() {\n const context = React.useContext(DialogContext);\n if (!context) {\n throw new Error('Dialog compound components must be rendered within a <Dialog>');\n }\n return context;\n}\n\nexport interface DialogProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n}\n\nexport function Dialog({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n children,\n}: DialogProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const dialogId = React.useId();\n\n const handleOpenChange = React.useCallback(\n (newOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [isControlled, onOpenChange]\n );\n\n return (\n <DialogContext.Provider\n value={{\n open: isOpen,\n onOpenChange: handleOpenChange,\n dialogId,\n triggerRef,\n }}\n >\n {children}\n </DialogContext.Provider>\n );\n}\n\nexport interface DialogTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n}\n\nexport const DialogTrigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n ({ children, className, onClick, asChild = false, ...props }, ref) => {\n const { open, onOpenChange, dialogId, triggerRef } = useDialogContext();\n\n const setRef = React.useCallback(\n (node: HTMLButtonElement | null) => {\n (triggerRef as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref, triggerRef]\n );\n\n return (\n <button\n ref={setRef}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-controls={dialogId}\n data-slot=\"trigger\"\n className={cn('yc-Dialog-trigger', className)}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n onOpenChange(!open);\n }\n }}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nDialogTrigger.displayName = 'DialogTrigger';\n\nexport interface DialogContentProps extends React.HTMLAttributes<HTMLDivElement> {\n onCloseAutoFocus?: (event: Event) => void;\n}\n\nexport const DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ children, className, ...props }, ref) => {\n const { open, onOpenChange, dialogId, triggerRef } = useDialogContext();\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (!open) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n onOpenChange(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [open, onOpenChange, triggerRef]);\n\n if (!open) return null;\n\n return (\n <div\n className=\"yc-Dialog-portal fixed inset-0 z-50 flex items-center justify-center p-4\"\n data-slot=\"portal\"\n >\n <div\n className=\"yc-Dialog-overlay fixed inset-0 bg-overlay transition-opacity\"\n data-slot=\"overlay\"\n onClick={() => onOpenChange(false)}\n aria-hidden=\"true\"\n />\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n id={dialogId}\n role=\"dialog\"\n aria-modal=\"true\"\n data-slot=\"content\"\n className={cn(\n 'yc-Dialog-content relative z-10 w-full max-w-lg rounded-xl bg-surface p-6 text-fg shadow-3 border border-border',\n 'focus:outline-none',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </div>\n );\n }\n);\nDialogContent.displayName = 'DialogContent';\n\nexport const DialogHeader: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div\n className={cn('yc-Dialog-header flex flex-col space-y-1.5 text-start pb-4', className)}\n data-slot=\"header\"\n {...props}\n />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nexport const DialogFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div\n className={cn('yc-Dialog-footer flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 pt-4', className)}\n data-slot=\"footer\"\n {...props}\n />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nexport const DialogTitle: React.FC<React.HTMLAttributes<HTMLHeadingElement>> = ({\n className,\n ...props\n}) => (\n <h2\n className={cn('yc-Dialog-title text-lg font-semibold leading-none tracking-tight text-fg', className)}\n data-slot=\"title\"\n {...props}\n />\n);\nDialogTitle.displayName = 'DialogTitle';\n\nexport const DialogDescription: React.FC<React.HTMLAttributes<HTMLParagraphElement>> = ({\n className,\n ...props\n}) => (\n <p\n className={cn('yc-Dialog-description text-sm text-fg-muted', className)}\n data-slot=\"description\"\n {...props}\n />\n);\nDialogDescription.displayName = 'DialogDescription';\n\nexport interface DialogCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n}\n\nexport const DialogClose: React.FC<DialogCloseProps> = ({\n className,\n children,\n onClick,\n asChild = false,\n ...props\n}) => {\n const { onOpenChange } = useDialogContext();\n return (\n <button\n type=\"button\"\n className={cn('yc-Dialog-close', className)}\n data-slot=\"close\"\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) onOpenChange(false);\n }}\n {...props}\n >\n {children || 'Close'}\n </button>\n );\n};\nDialogClose.displayName = 'DialogClose';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport type SheetSide = 'bottom' | 'start' | 'end';\n\ninterface SheetContextValue {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n side: SheetSide;\n sheetId: string;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n}\n\nconst SheetContext = React.createContext<SheetContextValue | null>(null);\n\nfunction useSheetContext() {\n const context = React.useContext(SheetContext);\n if (!context) {\n throw new Error('Sheet compound components must be rendered within a <Sheet>');\n }\n return context;\n}\n\nexport interface SheetProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: SheetSide;\n children: React.ReactNode;\n}\n\nexport function Sheet({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n side = 'end',\n children,\n}: SheetProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const sheetId = React.useId();\n\n const handleOpenChange = React.useCallback(\n (newOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [isControlled, onOpenChange]\n );\n\n return (\n <SheetContext.Provider\n value={{\n open: isOpen,\n onOpenChange: handleOpenChange,\n side,\n sheetId,\n triggerRef,\n }}\n >\n {children}\n </SheetContext.Provider>\n );\n}\n\nexport interface SheetTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n}\n\nexport const SheetTrigger = React.forwardRef<HTMLButtonElement, SheetTriggerProps>(\n ({ children, className, onClick, asChild = false, ...props }, ref) => {\n const { open, onOpenChange, sheetId, triggerRef } = useSheetContext();\n\n return (\n <button\n ref={(node) => {\n (triggerRef as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-controls={sheetId}\n data-slot=\"trigger\"\n className={cn('yc-Sheet-trigger', className)}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) onOpenChange(!open);\n }}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nSheetTrigger.displayName = 'SheetTrigger';\n\nconst sideStyles: Record<SheetSide, string> = {\n end: 'inset-y-0 end-0 h-full w-3/4 max-w-md border-s border-border',\n start: 'inset-y-0 start-0 h-full w-3/4 max-w-md border-e border-border',\n bottom: 'inset-x-0 bottom-0 max-h-[85vh] border-t border-border rounded-t-xl',\n};\n\nexport interface SheetContentProps extends React.HTMLAttributes<HTMLDivElement> {\n side?: SheetSide;\n}\n\nexport const SheetContent = React.forwardRef<HTMLDivElement, SheetContentProps>(\n ({ children, className, side: propSide, ...props }, ref) => {\n const { open, onOpenChange, side: contextSide, sheetId, triggerRef } = useSheetContext();\n const side = propSide || contextSide;\n\n React.useEffect(() => {\n if (!open) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n onOpenChange(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [open, onOpenChange, triggerRef]);\n\n if (!open) return null;\n\n return (\n <div className=\"yc-Sheet-portal fixed inset-0 z-50 flex\" data-slot=\"portal\">\n <div\n className=\"yc-Sheet-overlay fixed inset-0 bg-overlay transition-opacity\"\n data-slot=\"overlay\"\n onClick={() => onOpenChange(false)}\n aria-hidden=\"true\"\n />\n <div\n ref={ref}\n id={sheetId}\n role=\"dialog\"\n aria-modal=\"true\"\n data-slot=\"content\"\n data-side={side}\n className={cn(\n 'yc-Sheet-content fixed z-10 bg-surface p-6 shadow-3 text-fg transition-transform',\n sideStyles[side],\n className\n )}\n {...props}\n >\n {children}\n </div>\n </div>\n );\n }\n);\nSheetContent.displayName = 'SheetContent';\n\nexport const SheetHeader: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div\n className={cn('yc-Sheet-header flex flex-col space-y-2 text-start pb-4', className)}\n data-slot=\"header\"\n {...props}\n />\n);\nSheetHeader.displayName = 'SheetHeader';\n\nexport const SheetFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div\n className={cn('yc-Sheet-footer flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 pt-4', className)}\n data-slot=\"footer\"\n {...props}\n />\n);\nSheetFooter.displayName = 'SheetFooter';\n\nexport const SheetTitle: React.FC<React.HTMLAttributes<HTMLHeadingElement>> = ({\n className,\n ...props\n}) => (\n <h2\n className={cn('yc-Sheet-title text-lg font-semibold text-fg', className)}\n data-slot=\"title\"\n {...props}\n />\n);\nSheetTitle.displayName = 'SheetTitle';\n\nexport const SheetDescription: React.FC<React.HTMLAttributes<HTMLParagraphElement>> = ({\n className,\n ...props\n}) => (\n <p\n className={cn('yc-Sheet-description text-sm text-fg-muted', className)}\n data-slot=\"description\"\n {...props}\n />\n);\nSheetDescription.displayName = 'SheetDescription';\n\nexport const SheetClose: React.FC<React.ButtonHTMLAttributes<HTMLButtonElement>> = ({\n className,\n children,\n onClick,\n ...props\n}) => {\n const { onOpenChange } = useSheetContext();\n return (\n <button\n type=\"button\"\n className={cn('yc-Sheet-close', className)}\n data-slot=\"close\"\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) onOpenChange(false);\n }}\n {...props}\n >\n {children || 'Close'}\n </button>\n );\n};\nSheetClose.displayName = 'SheetClose';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'muted' | 'interactive';\n}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant = 'default', ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"card\"\n data-variant={variant}\n className={cn(\n 'yc-Card-root rounded-lg border border-border bg-surface text-fg shadow-1',\n variant === 'muted' && 'bg-surface-2',\n variant === 'interactive' &&\n 'hover:border-border-strong hover:bg-surface-2 transition-colors duration-fast cursor-pointer',\n className\n )}\n {...props}\n />\n )\n);\nCard.displayName = 'Card';\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"header\"\n className={cn('yc-Card-header flex flex-col space-y-1.5 p-6 text-start', className)}\n {...props}\n />\n )\n);\nCardHeader.displayName = 'CardHeader';\n\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n data-slot=\"title\"\n className={cn('yc-Card-title text-lg font-semibold leading-none tracking-tight text-fg', className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = 'CardTitle';\n\nexport const CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n data-slot=\"description\"\n className={cn('yc-Card-description text-sm text-fg-muted', className)}\n {...props}\n />\n));\nCardDescription.displayName = 'CardDescription';\n\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"content\" className={cn('yc-Card-content p-6 pt-0 text-start', className)} {...props} />\n )\n);\nCardContent.displayName = 'CardContent';\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"footer\"\n className={cn('yc-Card-footer flex items-center p-6 pt-0', className)}\n {...props}\n />\n )\n);\nCardFooter.displayName = 'CardFooter';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport type BadgeVariant =\n | 'default'\n | 'primary'\n | 'neutral'\n | 'info'\n | 'warn'\n | 'danger'\n | 'success'\n | 'outline';\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n}\n\nconst variantStyles: Record<BadgeVariant, string> = {\n default: 'bg-primary-soft text-primary-soft-fg border-transparent',\n primary: 'bg-primary text-primary-fg border-transparent',\n neutral: 'bg-surface-2 text-fg-muted border-border',\n info: 'bg-info-bg text-info-fg border-info-border',\n warn: 'bg-warn-bg text-warn-fg border-warn-border',\n danger: 'bg-danger-bg text-danger-fg border-danger-border',\n success: 'bg-success-bg text-success-fg border-success-border',\n outline: 'bg-transparent text-fg border-border-strong',\n};\n\nexport const Badge: React.FC<BadgeProps> = ({\n className,\n variant = 'default',\n children,\n ...props\n}) => {\n return (\n <span\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(\n 'yc-Badge-root inline-flex items-center rounded-sm border px-2.5 py-0.5 text-xs font-medium transition-colors',\n variantStyles[variant],\n className\n )}\n {...props}\n >\n {children}\n </span>\n );\n};\nBadge.displayName = 'Badge';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type MemberColorSlot = '1' | '2' | '3' | '4' | '5';\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n src?: string | null;\n alt?: string;\n name?: string;\n size?: AvatarSize;\n colorSlot?: MemberColorSlot;\n children?: React.ReactNode;\n}\n\nconst sizeStyles: Record<AvatarSize, string> = {\n sm: 'h-8 w-8 text-xs',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n xl: 'h-16 w-16 text-lg',\n};\n\nconst memberColorStyles: Record<MemberColorSlot, string> = {\n '1': 'bg-member-1-bg text-member-1-fg',\n '2': 'bg-member-2-bg text-member-2-fg',\n '3': 'bg-member-3-bg text-member-3-fg',\n '4': 'bg-member-4-bg text-member-4-fg',\n '5': 'bg-member-5-bg text-member-5-fg',\n};\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = '',\n name,\n size = 'md',\n colorSlot = '1',\n children,\n className,\n ...props\n}) => {\n const [hasError, setHasError] = React.useState(false);\n\n const initials = React.useMemo(() => {\n if (!name) return '?';\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n }, [name]);\n\n const showImage = src && !hasError;\n\n return (\n <div\n data-slot=\"avatar\"\n data-size={size}\n data-color-slot={colorSlot}\n className={cn(\n 'yc-Avatar-root relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full font-medium select-none border border-border',\n sizeStyles[size],\n memberColorStyles[colorSlot],\n className\n )}\n {...props}\n >\n {children ? (\n children\n ) : showImage ? (\n <img\n src={src}\n alt={alt || name || 'Avatar'}\n onError={() => setHasError(true)}\n data-slot=\"avatar-image\"\n className=\"yc-Avatar-image h-full w-full object-cover\"\n />\n ) : (\n <span data-slot=\"avatar-fallback\" className=\"yc-Avatar-fallback leading-none\">\n {initials}\n </span>\n )}\n </div>\n );\n};\nAvatar.displayName = 'Avatar';\n\nexport interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {}\n\nexport const AvatarImage: React.FC<AvatarImageProps> = ({ className, alt = '', ...props }) => (\n <img\n data-slot=\"avatar-image\"\n alt={alt}\n className={cn('yc-Avatar-image h-full w-full object-cover', className)}\n {...props}\n />\n);\nAvatarImage.displayName = 'AvatarImage';\n\nexport interface AvatarFallbackProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nexport const AvatarFallback: React.FC<AvatarFallbackProps> = ({ className, children, ...props }) => (\n <span\n data-slot=\"avatar-fallback\"\n className={cn('yc-Avatar-fallback leading-none font-medium', className)}\n {...props}\n >\n {children}\n </span>\n);\nAvatarFallback.displayName = 'AvatarFallback';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport type ChipScope = 'health' | 'finance' | 'education' | 'household' | 'default';\n\nexport interface ChipProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n selected?: boolean;\n scope?: ChipScope;\n onRemove?: () => void;\n startIcon?: React.ReactNode;\n}\n\nconst scopeStyles: Record<ChipScope, { default: string; selected: string }> = {\n default: {\n default: 'bg-surface text-fg border-border hover:bg-surface-2',\n selected: 'bg-primary text-primary-fg border-primary',\n },\n health: {\n default: 'bg-scope-health-bg text-scope-health-fg border-transparent hover:opacity-90',\n selected: 'bg-primary text-primary-fg border-primary',\n },\n finance: {\n default: 'bg-scope-finance-bg text-scope-finance-fg border-transparent hover:opacity-90',\n selected: 'bg-primary text-primary-fg border-primary',\n },\n education: {\n default: 'bg-scope-education-bg text-scope-education-fg border-transparent hover:opacity-90',\n selected: 'bg-primary text-primary-fg border-primary',\n },\n household: {\n default: 'bg-scope-household-bg text-scope-household-fg border-transparent hover:opacity-90',\n selected: 'bg-primary text-primary-fg border-primary',\n },\n};\n\nexport const Chip: React.FC<ChipProps> = ({\n children,\n selected = false,\n scope = 'default',\n onRemove,\n startIcon,\n className,\n onClick,\n disabled = false,\n ...props\n}) => {\n return (\n <button\n type=\"button\"\n data-slot=\"chip\"\n data-selected={selected ? 'true' : undefined}\n data-scope={scope}\n disabled={disabled}\n onClick={onClick}\n className={cn(\n 'yc-Chip-root inline-flex items-center rounded-sm border px-3 py-1 text-xs font-medium transition-colors select-none',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n selected ? scopeStyles[scope].selected : scopeStyles[scope].default,\n className\n )}\n {...props}\n >\n {startIcon && (\n <span className=\"yc-Chip-icon me-1.5 inline-flex shrink-0 items-center\" data-slot=\"icon\">\n {startIcon}\n </span>\n )}\n <span className=\"yc-Chip-label truncate\" data-slot=\"label\">\n {children}\n </span>\n {onRemove && (\n <span\n role=\"button\"\n tabIndex={0}\n aria-label=\"Remove\"\n data-slot=\"remove\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n className=\"yc-Chip-remove ms-1.5 inline-flex items-center justify-center rounded-full p-0.5 hover:bg-black/10 focus:outline-none\"\n >\n <svg className=\"h-3 w-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </span>\n )}\n </button>\n );\n};\nChip.displayName = 'Chip';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\ninterface MenuContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n menuId: string;\n}\n\nconst MenuContext = React.createContext<MenuContextValue | null>(null);\n\nfunction useMenuContext() {\n const ctx = React.useContext(MenuContext);\n if (!ctx) throw new Error('Menu compound components must be rendered inside <Menu>');\n return ctx;\n}\n\nexport interface MenuProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n}\n\nexport function Menu({ open: controlledOpen, defaultOpen = false, onOpenChange, children }: MenuProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const menuId = React.useId();\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n return (\n <MenuContext.Provider value={{ open: isOpen, setOpen, triggerRef, menuId }}>\n <div className=\"yc-Menu-root relative inline-block text-start\" data-slot=\"root\">\n {children}\n </div>\n </MenuContext.Provider>\n );\n}\n\nexport interface MenuTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const MenuTrigger = React.forwardRef<HTMLButtonElement, MenuTriggerProps>(\n ({ children, className, onClick, ...props }, ref) => {\n const { open, setOpen, menuId, triggerRef } = useMenuContext();\n\n return (\n <button\n ref={(node) => {\n (triggerRef as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={menuId}\n data-slot=\"trigger\"\n className={cn('yc-Menu-trigger inline-flex items-center justify-center', className)}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) setOpen(!open);\n }}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nMenuTrigger.displayName = 'MenuTrigger';\n\nexport interface MenuContentProps extends React.HTMLAttributes<HTMLDivElement> {\n align?: 'start' | 'end' | 'center';\n}\n\nexport const MenuContent = React.forwardRef<HTMLDivElement, MenuContentProps>(\n ({ children, className, align = 'start', ...props }, ref) => {\n const { open, setOpen, menuId, triggerRef } = useMenuContext();\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (!open) return;\n const handleClickOutside = (e: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(e.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const alignClass =\n align === 'end' ? 'end-0' : align === 'center' ? 'start-1/2 -translate-x-1/2' : 'start-0';\n\n return (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n id={menuId}\n role=\"menu\"\n aria-orientation=\"vertical\"\n tabIndex={-1}\n data-slot=\"content\"\n className={cn(\n 'yc-Menu-content absolute z-50 mt-1 min-w-[12rem] rounded-md bg-surface p-1 text-fg shadow-2 border border-border focus:outline-none',\n alignClass,\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nMenuContent.displayName = 'MenuContent';\n\nexport interface MenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n destructive?: boolean;\n}\n\nexport const MenuItem = React.forwardRef<HTMLButtonElement, MenuItemProps>(\n ({ children, className, destructive = false, onClick, disabled = false, ...props }, ref) => {\n const { setOpen } = useMenuContext();\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"menuitem\"\n tabIndex={-1}\n disabled={disabled}\n data-slot=\"item\"\n data-destructive={destructive ? 'true' : undefined}\n className={cn(\n 'yc-Menu-item group relative flex w-full cursor-pointer select-none items-center rounded-sm px-2.5 py-1.5 text-sm outline-none transition-colors duration-fast',\n 'hover:bg-surface-2 focus:bg-surface-2',\n destructive\n ? 'text-danger-fg hover:bg-danger-bg focus:bg-danger-bg'\n : 'text-fg hover:text-fg',\n 'disabled:pointer-events-none disabled:opacity-50',\n className\n )}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) setOpen(false);\n }}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nMenuItem.displayName = 'MenuItem';\n\nexport const MenuSeparator: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({ className, ...props }) => (\n <div\n role=\"separator\"\n data-slot=\"separator\"\n className={cn('yc-Menu-separator my-1 h-px bg-border', className)}\n {...props}\n />\n);\nMenuSeparator.displayName = 'MenuSeparator';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n popoverId: string;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | null>(null);\n\nfunction usePopoverContext() {\n const ctx = React.useContext(PopoverContext);\n if (!ctx) throw new Error('Popover compound components must be rendered inside <Popover>');\n return ctx;\n}\n\nexport interface PopoverProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n}\n\nexport function Popover({ open: controlledOpen, defaultOpen = false, onOpenChange, children }: PopoverProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const popoverId = React.useId();\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n return (\n <PopoverContext.Provider value={{ open: isOpen, setOpen, triggerRef, popoverId }}>\n <div className=\"yc-Popover-root relative inline-block text-start\" data-slot=\"root\">\n {children}\n </div>\n </PopoverContext.Provider>\n );\n}\n\nexport interface PopoverTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ children, className, onClick, ...props }, ref) => {\n const { open, setOpen, popoverId, triggerRef } = usePopoverContext();\n\n return (\n <button\n ref={(node) => {\n (triggerRef as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-controls={popoverId}\n data-slot=\"trigger\"\n className={cn('yc-Popover-trigger inline-flex items-center justify-center', className)}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) setOpen(!open);\n }}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nPopoverTrigger.displayName = 'PopoverTrigger';\n\nexport interface PopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {\n align?: 'start' | 'end' | 'center';\n}\n\nexport const PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n ({ children, className, align = 'start', ...props }, ref) => {\n const { open, setOpen, popoverId, triggerRef } = usePopoverContext();\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (!open) return;\n const handleClickOutside = (e: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(e.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const alignClass =\n align === 'end' ? 'end-0' : align === 'center' ? 'start-1/2 -translate-x-1/2' : 'start-0';\n\n return (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n id={popoverId}\n role=\"dialog\"\n data-slot=\"content\"\n className={cn(\n 'yc-Popover-content absolute z-50 mt-1 min-w-[14rem] rounded-lg bg-surface p-4 text-fg shadow-2 border border-border focus:outline-none',\n alignClass,\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nPopoverContent.displayName = 'PopoverContent';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\ninterface TabsContextValue {\n value: string;\n onValueChange: (val: string) => void;\n baseId: string;\n}\n\nconst TabsContext = React.createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext() {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error('Tabs compound components must be rendered inside <Tabs>');\n return ctx;\n}\n\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n}\n\nexport function Tabs({\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n children,\n className,\n ...props\n}: TabsProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const activeValue = isControlled ? controlledValue : uncontrolledValue;\n const baseId = React.useId();\n\n const handleValueChange = React.useCallback(\n (newVal: string) => {\n if (!isControlled) setUncontrolledValue(newVal);\n onValueChange?.(newVal);\n },\n [isControlled, onValueChange]\n );\n\n return (\n <TabsContext.Provider value={{ value: activeValue, onValueChange: handleValueChange, baseId }}>\n <div className={cn('yc-Tabs-root flex flex-col', className)} data-slot=\"root\" {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ children, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"tablist\"\n data-slot=\"list\"\n className={cn(\n 'yc-Tabs-list inline-flex h-10 items-center justify-start rounded-lg bg-surface-2 p-1 text-fg-muted',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nTabsList.displayName = 'TabsList';\n\nexport interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ value, children, className, disabled = false, ...props }, ref) => {\n const { value: activeValue, onValueChange, baseId } = useTabsContext();\n const isSelected = activeValue === value;\n const tabId = `${baseId}-tab-${value}`;\n const panelId = `${baseId}-panel-${value}`;\n\n return (\n <button\n ref={ref}\n id={tabId}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={panelId}\n tabIndex={isSelected ? 0 : -1}\n disabled={disabled}\n data-slot=\"trigger\"\n data-state={isSelected ? 'active' : 'inactive'}\n className={cn(\n 'yc-Tabs-trigger inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium transition-all duration-fast',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n isSelected\n ? 'bg-surface text-fg shadow-1'\n : 'text-fg-muted hover:text-fg hover:bg-surface-3',\n className\n )}\n onClick={() => onValueChange(value)}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\nTabsTrigger.displayName = 'TabsTrigger';\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ value, children, className, ...props }, ref) => {\n const { value: activeValue, baseId } = useTabsContext();\n const isSelected = activeValue === value;\n const tabId = `${baseId}-tab-${value}`;\n const panelId = `${baseId}-panel-${value}`;\n\n if (!isSelected) return null;\n\n return (\n <div\n ref={ref}\n id={panelId}\n role=\"tabpanel\"\n aria-labelledby={tabId}\n tabIndex={0}\n data-slot=\"content\"\n className={cn(\n 'yc-Tabs-content mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-2',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nTabsContent.displayName = 'TabsContent';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface SegmentedOption {\n value: string;\n label: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedControlProps {\n options: SegmentedOption[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n className?: string;\n size?: 'sm' | 'md';\n}\n\nexport function SegmentedControl({\n options,\n value: controlledValue,\n defaultValue,\n onChange,\n className,\n size = 'md',\n}: SegmentedControlProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(\n defaultValue || (options.length > 0 ? options[0].value : '')\n );\n const isControlled = controlledValue !== undefined;\n const activeValue = isControlled ? controlledValue : uncontrolledValue;\n\n const handleClick = (optValue: string) => {\n if (!isControlled) {\n setUncontrolledValue(optValue);\n }\n onChange?.(optValue);\n };\n\n const sizeClasses = size === 'sm' ? 'h-8 p-0.5 text-xs' : 'min-h-[44px] h-10 p-1 text-sm';\n\n return (\n <div\n role=\"radiogroup\"\n data-slot=\"segmented-control\"\n data-size={size}\n className={cn(\n 'yc-Segmented-root inline-flex items-center rounded-lg bg-surface-2 text-fg-muted border border-border select-none',\n sizeClasses,\n className\n )}\n >\n {options.map((opt) => {\n const isSelected = opt.value === activeValue;\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n disabled={opt.disabled}\n data-slot=\"item\"\n data-state={isSelected ? 'checked' : 'unchecked'}\n onClick={() => handleClick(opt.value)}\n className={cn(\n 'yc-Segmented-item inline-flex h-full items-center justify-center gap-1.5 rounded-md px-3 font-medium transition-all duration-fast',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus',\n 'disabled:pointer-events-none disabled:opacity-50',\n isSelected\n ? 'bg-surface text-fg shadow-1'\n : 'text-fg-muted hover:text-fg hover:bg-surface-3'\n )}\n >\n {opt.icon && (\n <span className=\"yc-Segmented-icon inline-flex shrink-0 items-center\" data-slot=\"icon\">\n {opt.icon}\n </span>\n )}\n <span className=\"yc-Segmented-label truncate\" data-slot=\"label\">\n {opt.label}\n </span>\n </button>\n );\n })}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n action?: React.ReactNode;\n}\n\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ icon, title, description, action, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"empty-state\"\n className={cn(\n 'yc-EmptyState-root flex flex-col items-center justify-center p-8 text-center',\n className\n )}\n {...props}\n >\n {icon && (\n <div\n className=\"yc-EmptyState-icon mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-surface-2 text-fg-muted\"\n data-slot=\"icon\"\n >\n {icon}\n </div>\n )}\n <h3 className=\"yc-EmptyState-title text-base font-medium text-fg\" data-slot=\"title\">\n {title}\n </h3>\n {description && (\n <p\n className=\"yc-EmptyState-description mt-1.5 max-w-sm text-sm text-fg-muted\"\n data-slot=\"description\"\n >\n {description}\n </p>\n )}\n {action && (\n <div className=\"yc-EmptyState-action mt-5\" data-slot=\"action\">\n {action}\n </div>\n )}\n </div>\n );\n }\n);\nEmptyState.displayName = 'EmptyState';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"skeleton\"\n className={cn('yc-Skeleton-root animate-pulse rounded-md bg-surface-3', className)}\n {...props}\n />\n );\n }\n);\nSkeleton.displayName = 'Skeleton';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface InlineErrorProps extends React.HTMLAttributes<HTMLDivElement> {\n message?: React.ReactNode;\n icon?: React.ReactNode;\n}\n\nexport const InlineError = React.forwardRef<HTMLDivElement, InlineErrorProps>(\n ({ message, icon, children, className, ...props }, ref) => {\n const content = message || children;\n if (!content) return null;\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n data-slot=\"inline-error\"\n className={cn(\n 'yc-InlineError-root flex items-center gap-1.5 text-xs font-medium text-danger-fg',\n className\n )}\n {...props}\n >\n {icon && (\n <span className=\"yc-InlineError-icon inline-flex shrink-0 items-center\" data-slot=\"icon\">\n {icon}\n </span>\n )}\n <span className=\"yc-InlineError-message\" data-slot=\"message\">\n {content}\n </span>\n </div>\n );\n }\n);\nInlineError.displayName = 'InlineError';\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface ToastItem {\n id: string;\n title: React.ReactNode;\n description?: React.ReactNode;\n variant?: 'info' | 'success' | 'warn' | 'danger';\n duration?: number;\n}\n\ninterface ToastContextValue {\n toasts: ToastItem[];\n addToast: (toast: Omit<ToastItem, 'id'>) => string;\n removeToast: (id: string) => void;\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null);\n\nexport function useToast() {\n const ctx = React.useContext(ToastContext);\n if (!ctx) {\n throw new Error('useToast must be used within a ToastProvider or Toaster');\n }\n return ctx;\n}\n\nexport function ToastProvider({ children }: { children: React.ReactNode }) {\n const [toasts, setToasts] = React.useState<ToastItem[]>([]);\n\n const removeToast = React.useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const addToast = React.useCallback(\n (toast: Omit<ToastItem, 'id'>) => {\n const id = Math.random().toString(36).substring(2, 9);\n const newToast: ToastItem = { ...toast, id };\n setToasts((prev) => [...prev, newToast]);\n\n const duration = toast.duration ?? 5000;\n if (duration > 0) {\n setTimeout(() => {\n removeToast(id);\n }, duration);\n }\n return id;\n },\n [removeToast]\n );\n\n return (\n <ToastContext.Provider value={{ toasts, addToast, removeToast }}>\n {children}\n </ToastContext.Provider>\n );\n}\n\nconst variantStyles: Record<NonNullable<ToastItem['variant']>, string> = {\n info: 'border-info-border bg-surface text-fg',\n success: 'border-success-border bg-surface text-fg',\n warn: 'border-warn-border bg-surface text-fg',\n danger: 'border-danger-border bg-surface text-fg',\n};\n\nexport interface ToasterProps {\n className?: string;\n position?: 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';\n}\n\nexport function Toaster({ className, position = 'bottom-end' }: ToasterProps) {\n const ctx = React.useContext(ToastContext);\n const toasts = ctx ? ctx.toasts : [];\n const removeToast = ctx ? ctx.removeToast : () => {};\n\n const positionClass =\n position === 'bottom-end'\n ? 'bottom-4 end-4'\n : position === 'bottom-start'\n ? 'bottom-4 start-4'\n : position === 'top-end'\n ? 'top-4 end-4'\n : 'top-4 start-4';\n\n return (\n <div\n data-slot=\"toaster\"\n role=\"region\"\n aria-live=\"polite\"\n aria-label=\"Notifications\"\n className={cn('yc-Toaster-root fixed z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none', positionClass, className)}\n >\n {toasts.map((toast) => (\n <div\n key={toast.id}\n role=\"status\"\n data-slot=\"toast\"\n data-variant={toast.variant || 'info'}\n className={cn(\n 'yc-Toaster-toast pointer-events-auto flex w-full items-start justify-between rounded-lg p-3 shadow-2 border transition-all duration-normal',\n variantStyles[toast.variant || 'info']\n )}\n >\n <div className=\"flex-1 pe-2\">\n <h4 className=\"yc-Toaster-title text-sm font-medium\" data-slot=\"title\">\n {toast.title}\n </h4>\n {toast.description && (\n <p className=\"yc-Toaster-description mt-0.5 text-xs text-fg-muted\" data-slot=\"description\">\n {toast.description}\n </p>\n )}\n </div>\n <button\n type=\"button\"\n data-slot=\"close\"\n className=\"yc-Toaster-close text-fg-muted hover:text-fg text-xs p-1\"\n onClick={() => removeToast(toast.id)}\n aria-label=\"Dismiss\"\n >\n ✕\n </button>\n </div>\n ))}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Button } from '../primitives/Button.js';\nimport { Avatar, AvatarFallback, AvatarImage } from '../primitives/Avatar.js';\nimport { EmptyState } from '../primitives/EmptyState.js';\nimport { ChatMarkdown } from './ChatMarkdown.js';\nimport { MessageToolbar } from './MessageToolbar.js';\nimport { ThinkingIndicator } from './ThinkingIndicator.js';\nimport { ApprovalCard } from './ApprovalCard.js';\nimport { ToolTraceCard } from './ToolTraceCard.js';\nimport { ExecutionPlanCard } from './ExecutionPlanCard.js';\nimport type {\n ChatMessage,\n ChatAttachment,\n ChatSlotHooks,\n} from './types.js';\n\ninterface ChatContextValue {\n messages: ChatMessage[];\n onSendMessage: (content: string, attachments?: ChatAttachment[]) => Promise<void> | void;\n loading: boolean;\n activeAttachments: ChatAttachment[];\n setActiveAttachments: React.Dispatch<React.SetStateAction<ChatAttachment[]>>;\n slotHooks?: ChatSlotHooks;\n}\n\nconst ChatContext = React.createContext<ChatContextValue | null>(null);\n\nexport function useChatContext() {\n const ctx = React.useContext(ChatContext);\n if (!ctx) throw new Error('Chat compound components must be rendered inside <Chat.Root>');\n return ctx;\n}\n\n// 1. Root\nexport interface ChatRootProps {\n messages: ChatMessage[];\n onSendMessage: (content: string, attachments?: ChatAttachment[]) => Promise<void> | void;\n loading?: boolean;\n slotHooks?: ChatSlotHooks;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function ChatRoot({\n messages,\n onSendMessage,\n loading = false,\n slotHooks,\n children,\n className,\n}: ChatRootProps) {\n const [activeAttachments, setActiveAttachments] = React.useState<ChatAttachment[]>([]);\n\n return (\n <ChatContext.Provider\n value={{\n messages,\n onSendMessage,\n loading,\n activeAttachments,\n setActiveAttachments,\n slotHooks,\n }}\n >\n <div\n data-slot=\"chat-root\"\n className={cn('yc-Chat-root flex flex-col h-full w-full bg-surface text-fg', className)}\n >\n {children}\n </div>\n </ChatContext.Provider>\n );\n}\n\n// 2. Thread\nexport interface ChatThreadProps {\n className?: string;\n emptyTitle?: string;\n emptyDescription?: string;\n}\n\nexport function ChatThread({\n className,\n emptyTitle = 'How can I assist you today?',\n emptyDescription = 'Start a conversation by typing a message below.',\n}: ChatThreadProps) {\n const { messages } = useChatContext();\n const threadEndRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n threadEndRef.current?.scrollIntoView({ behavior: 'smooth' });\n }, [messages]);\n\n return (\n <div\n data-slot=\"chat-thread\"\n className={cn('yc-Chat-thread flex-1 overflow-y-auto p-4 space-y-4', className)}\n >\n {messages.length === 0 ? (\n <EmptyState title={emptyTitle} description={emptyDescription} className=\"h-full\" />\n ) : (\n messages.map((msg) => <ChatMessageItem key={msg.id} message={msg} />)\n )}\n <div ref={threadEndRef} />\n </div>\n );\n}\n\n// 3. Message\nexport interface ChatMessageProps {\n message: ChatMessage;\n className?: string;\n}\n\nexport function ChatMessageItem({ message, className }: ChatMessageProps) {\n const { slotHooks } = useChatContext();\n const isUser = message.role === 'user';\n const isSystem = message.role === 'system';\n\n if (slotHooks?.messageRenderer) {\n const custom = slotHooks.messageRenderer(message);\n if (custom) return <>{custom}</>;\n }\n\n return (\n <div\n data-slot=\"chat-message\"\n data-role={message.role}\n className={cn(\n 'yc-Chat-message group flex w-full gap-3',\n isUser ? 'justify-end' : 'justify-start',\n className\n )}\n >\n {!isUser && (\n <Avatar size=\"sm\" className=\"mt-1\">\n {message.avatarUrl ? (\n <AvatarImage src={message.avatarUrl} alt={message.authorName || 'Assistant'} />\n ) : (\n <AvatarFallback>{(message.authorName || 'AI').substring(0, 2).toUpperCase()}</AvatarFallback>\n )}\n </Avatar>\n )}\n\n <div\n className={cn(\n 'flex flex-col max-w-[80%] gap-1.5',\n isUser ? 'items-end' : 'items-start'\n )}\n >\n <div className=\"flex items-center gap-2 text-xs text-fg-muted\">\n <span className=\"font-semibold\">{message.authorName || (isUser ? 'You' : 'Assistant')}</span>\n <span>{message.createdAt}</span>\n </div>\n\n <div\n data-slot=\"message-bubble\"\n className={cn(\n 'yc-Chat-bubble rounded-2xl px-4 py-2.5 shadow-1 text-sm leading-relaxed',\n isUser\n ? 'bg-primary text-primary-fg rounded-be-sm'\n : isSystem\n ? 'bg-surface-2 text-fg-muted border border-border'\n : 'bg-surface-2 text-fg rounded-bs-sm border border-border'\n )}\n >\n {message.reasoning && (\n <div className=\"mb-2\">\n <ThinkingIndicator reasoning={message.reasoning} />\n </div>\n )}\n\n {isUser ? (\n <div className=\"whitespace-pre-wrap\">{message.content}</div>\n ) : (\n <ChatMarkdown content={message.content} />\n )}\n\n {message.executionPlan && message.executionPlan.length > 0 && (\n <ExecutionPlanCard steps={message.executionPlan} />\n )}\n\n {message.toolTraces && message.toolTraces.length > 0 && (\n <div className=\"mt-2 space-y-1\">\n {message.toolTraces.map((trace) => (\n <ToolTraceCard key={trace.id} trace={trace} />\n ))}\n </div>\n )}\n\n {message.approval && (\n <div className=\"mt-2\">\n <ApprovalCard\n id={message.approval.id}\n level={message.approval.level}\n label={message.approval.label}\n details={message.approval.details}\n status={message.approval.status}\n />\n </div>\n )}\n </div>\n\n {!isUser && (\n <div className=\"opacity-0 group-hover:opacity-100 transition-opacity duration-fast\">\n <MessageToolbar content={message.content} />\n </div>\n )}\n </div>\n\n {isUser && (\n <Avatar size=\"sm\" className=\"mt-1\">\n {message.avatarUrl ? (\n <AvatarImage src={message.avatarUrl} alt=\"User\" />\n ) : (\n <AvatarFallback>ME</AvatarFallback>\n )}\n </Avatar>\n )}\n </div>\n );\n}\n\n// 4. Attachments Bar\nexport function ChatAttachments({ className }: { className?: string }) {\n const { activeAttachments, setActiveAttachments } = useChatContext();\n\n if (activeAttachments.length === 0) return null;\n\n return (\n <div\n data-slot=\"chat-attachments\"\n className={cn('yc-Chat-attachments flex flex-wrap gap-2 px-4 py-2 bg-surface-2 border-t border-border', className)}\n >\n {activeAttachments.map((att) => (\n <div\n key={att.id}\n data-slot=\"attachment-item\"\n className=\"yc-Chat-attachment flex items-center gap-1.5 rounded-md bg-surface px-2.5 py-1 text-xs border border-border shadow-1\"\n >\n <span className=\"truncate max-w-[150px]\">{att.name}</span>\n <button\n type=\"button\"\n className=\"text-fg-muted hover:text-danger-fg\"\n onClick={() =>\n setActiveAttachments((prev) => prev.filter((a) => a.id !== att.id))\n }\n aria-label={`Remove ${att.name}`}\n >\n ✕\n </button>\n </div>\n ))}\n </div>\n );\n}\n\n// 5. Composer\nexport interface ChatComposerProps {\n placeholder?: string;\n className?: string;\n}\n\nexport function ChatComposer({\n placeholder = 'Type a message...',\n className,\n}: ChatComposerProps) {\n const { onSendMessage, loading, activeAttachments, setActiveAttachments, slotHooks } =\n useChatContext();\n const [text, setText] = React.useState('');\n const fileInputRef = React.useRef<HTMLInputElement | null>(null);\n\n const handleSubmit = async (e?: React.FormEvent) => {\n e?.preventDefault();\n const trimmed = text.trim();\n if (!trimmed && activeAttachments.length === 0) return;\n if (loading) return;\n\n if (slotHooks?.beforeSend) {\n const result = await slotHooks.beforeSend(trimmed, activeAttachments);\n if (result === false) return;\n if (typeof result === 'string') {\n // Updated content\n await onSendMessage(result, activeAttachments);\n setText('');\n setActiveAttachments([]);\n return;\n }\n }\n\n await onSendMessage(trimmed, activeAttachments);\n setText('');\n setActiveAttachments([]);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (!files) return;\n const newAttachments: ChatAttachment[] = Array.from(files).map((f) => ({\n id: Math.random().toString(36).substring(2, 9),\n name: f.name,\n mimeType: f.type,\n sizeBytes: f.size,\n }));\n setActiveAttachments((prev) => [...prev, ...newAttachments]);\n };\n\n return (\n <form\n data-slot=\"chat-composer\"\n onSubmit={handleSubmit}\n className={cn(\n 'yc-Chat-composer flex flex-col gap-2 p-3 border-t border-border bg-surface',\n className\n )}\n >\n <ChatAttachments />\n\n <div className=\"flex items-end gap-2\">\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n className=\"hidden\"\n onChange={handleFileChange}\n />\n\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => fileInputRef.current?.click()}\n aria-label=\"Attach file\"\n className=\"h-10 px-2.5 text-fg-muted\"\n >\n 📎\n </Button>\n\n {slotHooks?.composerAction}\n\n <textarea\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={1}\n className=\"flex-1 max-h-32 min-h-[44px] resize-none rounded-lg border border-border bg-surface-2 p-2.5 text-sm text-fg placeholder:text-fg-muted focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary\"\n data-slot=\"input\"\n />\n\n <Button\n type=\"submit\"\n variant=\"primary\"\n size=\"sm\"\n disabled={loading || (!text.trim() && activeAttachments.length === 0)}\n loading={loading}\n className=\"h-10 px-4\"\n >\n Send\n </Button>\n </div>\n </form>\n );\n}\n\n// Compound Export\nexport const Chat = {\n Root: ChatRoot,\n Thread: ChatThread,\n Message: ChatMessageItem,\n Composer: ChatComposer,\n Attachments: ChatAttachments,\n};\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { CodeBlock } from './CodeBlock.js';\nimport { MermaidDiagram } from './MermaidDiagram.js';\n\nexport interface ChatMarkdownProps {\n content: string;\n className?: string;\n}\n\nexport function ChatMarkdown({ content, className }: ChatMarkdownProps) {\n // Parse blocks: code fences ```lang ... ``` vs normal markdown paragraphs\n const blocks = React.useMemo(() => {\n const lines = content.split('\\n');\n const result: Array<{ type: 'text' | 'code' | 'mermaid'; content: string; lang?: string }> = [];\n let currentCode: string[] = [];\n let currentLang = '';\n let inCode = false;\n let currentText: string[] = [];\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (line.startsWith('```')) {\n if (inCode) {\n // Closing fence\n const codeString = currentCode.join('\\n');\n if (currentLang === 'mermaid') {\n result.push({ type: 'mermaid', content: codeString });\n } else {\n result.push({ type: 'code', content: codeString, lang: currentLang });\n }\n currentCode = [];\n currentLang = '';\n inCode = false;\n } else {\n // Opening fence\n if (currentText.length > 0) {\n result.push({ type: 'text', content: currentText.join('\\n') });\n currentText = [];\n }\n inCode = true;\n currentLang = line.replace('```', '').trim();\n }\n } else if (inCode) {\n currentCode.push(line);\n } else {\n currentText.push(line);\n }\n }\n\n if (inCode && currentCode.length > 0) {\n result.push({ type: 'code', content: currentCode.join('\\n'), lang: currentLang });\n } else if (currentText.length > 0) {\n result.push({ type: 'text', content: currentText.join('\\n') });\n }\n\n return result;\n }, [content]);\n\n return (\n <div\n data-slot=\"chat-markdown\"\n className={cn('yc-ChatMarkdown-root text-sm text-fg space-y-2 leading-relaxed', className)}\n >\n {blocks.map((b, idx) => {\n if (b.type === 'code') {\n return <CodeBlock key={idx} code={b.content} language={b.lang} />;\n }\n if (b.type === 'mermaid') {\n return <MermaidDiagram key={idx} chart={b.content} />;\n }\n return (\n <div key={idx} className=\"whitespace-pre-wrap\">\n {b.content}\n </div>\n );\n })}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface CodeBlockProps {\n code: string;\n language?: string;\n className?: string;\n}\n\nexport function CodeBlock({ code, language = 'text', className }: CodeBlockProps) {\n const [copied, setCopied] = React.useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch {\n // Fallback\n }\n };\n\n return (\n <div\n data-slot=\"code-block\"\n className={cn(\n 'yc-CodeBlock-root my-2 overflow-hidden rounded-lg border border-border bg-surface-2 text-xs font-mono shadow-1',\n className\n )}\n >\n <div className=\"flex items-center justify-between border-b border-border bg-surface-3 px-3 py-1.5 text-fg-muted\">\n <span className=\"font-semibold uppercase tracking-wider text-[11px]\">{language}</span>\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"rounded px-2 py-0.5 text-[11px] transition-colors hover:bg-surface hover:text-fg\"\n aria-label=\"Copy code to clipboard\"\n >\n {copied ? 'Copied!' : 'Copy'}\n </button>\n </div>\n <pre className=\"overflow-x-auto p-3 text-fg leading-relaxed\">\n <code>{code}</code>\n </pre>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface MermaidDiagramProps {\n chart: string;\n className?: string;\n}\n\nexport function MermaidDiagram({ chart, className }: MermaidDiagramProps) {\n const [showSource, setShowSource] = React.useState(false);\n\n return (\n <div\n data-slot=\"mermaid-diagram\"\n className={cn(\n 'yc-MermaidDiagram-root my-3 rounded-lg border border-border bg-surface p-3 text-xs shadow-1',\n className\n )}\n >\n <div className=\"flex items-center justify-between border-b border-border pb-2 mb-2 text-fg-muted font-mono\">\n <span className=\"font-semibold text-fg\">Diagram</span>\n <button\n type=\"button\"\n onClick={() => setShowSource(!showSource)}\n className=\"text-[11px] underline hover:text-fg\"\n >\n {showSource ? 'View rendering' : 'View syntax'}\n </button>\n </div>\n\n {showSource ? (\n <pre className=\"overflow-x-auto rounded bg-surface-2 p-3 font-mono text-fg\">\n <code>{chart}</code>\n </pre>\n ) : (\n <div\n data-slot=\"diagram-viewport\"\n className=\"yc-MermaidDiagram-viewport flex items-center justify-center p-4 bg-surface-2 rounded overflow-x-auto\"\n >\n {/* Render diagram text representation / SVG placeholder */}\n <pre className=\"font-mono text-xs text-fg leading-relaxed\">{chart}</pre>\n </div>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface MessageToolbarProps {\n content: string;\n onRetry?: () => void;\n onFeedback?: (rating: 'positive' | 'negative') => void;\n className?: string;\n}\n\nexport function MessageToolbar({\n content,\n onRetry,\n onFeedback,\n className,\n}: MessageToolbarProps) {\n const [copied, setCopied] = React.useState(false);\n const [rated, setRated] = React.useState<'positive' | 'negative' | null>(null);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(content);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch {\n // Ignore\n }\n };\n\n const handleRate = (rating: 'positive' | 'negative') => {\n setRated(rating);\n onFeedback?.(rating);\n };\n\n return (\n <div\n data-slot=\"message-toolbar\"\n className={cn(\n 'yc-MessageToolbar-root inline-flex items-center gap-1 rounded-md bg-surface-2 p-0.5 text-xs text-fg-muted border border-border shadow-1',\n className\n )}\n >\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"rounded px-1.5 py-0.5 hover:bg-surface hover:text-fg\"\n aria-label=\"Copy message text\"\n >\n {copied ? 'Copied' : 'Copy'}\n </button>\n\n {onRetry && (\n <button\n type=\"button\"\n onClick={onRetry}\n className=\"rounded px-1.5 py-0.5 hover:bg-surface hover:text-fg\"\n aria-label=\"Retry message generation\"\n >\n Retry\n </button>\n )}\n\n {onFeedback && (\n <>\n <button\n type=\"button\"\n onClick={() => handleRate('positive')}\n className={cn(\n 'rounded px-1.5 py-0.5 hover:bg-surface hover:text-fg',\n rated === 'positive' && 'text-primary font-bold'\n )}\n aria-label=\"Helpful\"\n >\n 👍\n </button>\n <button\n type=\"button\"\n onClick={() => handleRate('negative')}\n className={cn(\n 'rounded px-1.5 py-0.5 hover:bg-surface hover:text-fg',\n rated === 'negative' && 'text-danger-fg font-bold'\n )}\n aria-label=\"Not helpful\"\n >\n 👎\n </button>\n </>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface ThinkingIndicatorProps {\n label?: string;\n reasoning?: string;\n className?: string;\n}\n\nexport function ThinkingIndicator({\n label = 'Thinking...',\n reasoning,\n className,\n}: ThinkingIndicatorProps) {\n const [open, setOpen] = React.useState(false);\n\n return (\n <div\n data-slot=\"thinking-indicator\"\n className={cn(\n 'yc-ThinkingIndicator-root inline-flex flex-col gap-1 text-xs text-fg-muted',\n className\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"flex gap-1 items-center\">\n <span className=\"h-1.5 w-1.5 animate-bounce rounded-full bg-fg-muted\" />\n <span className=\"h-1.5 w-1.5 animate-bounce [animation-delay:0.2s] rounded-full bg-fg-muted\" />\n <span className=\"h-1.5 w-1.5 animate-bounce [animation-delay:0.4s] rounded-full bg-fg-muted\" />\n </span>\n <span className=\"font-medium\">{label}</span>\n {reasoning && (\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className=\"text-[11px] underline hover:text-fg\"\n >\n {open ? 'Hide details' : 'Show details'}\n </button>\n )}\n </div>\n\n {open && reasoning && (\n <div className=\"mt-1 rounded border border-border bg-surface-2 p-2 font-mono text-[11px] text-fg whitespace-pre-wrap\">\n {reasoning}\n </div>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Button } from '../primitives/Button.js';\nimport { Badge } from '../primitives/Badge.js';\nimport type { RiskLevel, ApprovalRequest } from './types.js';\n\nexport interface ApprovalCardProps {\n id: string;\n level: RiskLevel;\n label: string;\n details?: Record<string, unknown>;\n onDecide?: (id: string, decision: 'approved' | 'rejected') => Promise<void> | void;\n status?: 'pending' | 'approved' | 'rejected';\n className?: string;\n}\n\nconst levelBadgeVariant: Record<RiskLevel, 'info' | 'warn' | 'danger'> = {\n info: 'info',\n warn: 'warn',\n danger: 'danger',\n};\n\nconst levelBorderStyles: Record<RiskLevel, string> = {\n info: 'border-info-border bg-info-bg/30',\n warn: 'border-warn-border bg-warn-bg/30',\n danger: 'border-danger-border bg-danger-bg/30',\n};\n\nexport function ApprovalCard({\n id,\n level,\n label,\n details,\n onDecide,\n status = 'pending',\n className,\n}: ApprovalCardProps) {\n const [loading, setLoading] = React.useState(false);\n const [currentStatus, setCurrentStatus] = React.useState(status);\n\n const handleDecision = async (decision: 'approved' | 'rejected') => {\n try {\n setLoading(true);\n if (onDecide) {\n await onDecide(id, decision);\n } else {\n // Default API call to Yarvelle Core approvals endpoint\n await fetch(`/api/v1/approvals/${encodeURIComponent(id)}/decide`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ decision }),\n });\n }\n setCurrentStatus(decision);\n } catch (err) {\n console.error('Failed to submit approval decision:', err);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <div\n data-slot=\"approval-card\"\n data-risk-level={level}\n className={cn(\n 'yc-ApprovalCard-root rounded-lg border p-4 shadow-1 transition-colors duration-fast',\n levelBorderStyles[level],\n className\n )}\n >\n <div className=\"flex items-center justify-between gap-2 pb-2\">\n <div className=\"flex items-center gap-2\">\n <Badge variant={levelBadgeVariant[level]}>\n {level.toUpperCase()}\n </Badge>\n <span className=\"yc-ApprovalCard-title text-sm font-semibold text-fg\" data-slot=\"title\">\n {label}\n </span>\n </div>\n {currentStatus !== 'pending' && (\n <Badge variant={currentStatus === 'approved' ? 'success' : 'danger'}>\n {currentStatus === 'approved' ? 'Approved' : 'Rejected'}\n </Badge>\n )}\n </div>\n\n {details && Object.keys(details).length > 0 && (\n <div className=\"yc-ApprovalCard-details mt-2 rounded bg-surface/80 p-2.5 text-xs text-fg-muted font-mono\" data-slot=\"details\">\n <pre className=\"overflow-x-auto whitespace-pre-wrap\">\n {JSON.stringify(details, null, 2)}\n </pre>\n </div>\n )}\n\n {currentStatus === 'pending' && (\n <div className=\"yc-ApprovalCard-actions mt-3 flex items-center justify-end gap-2\" data-slot=\"actions\">\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={loading}\n onClick={() => handleDecision('rejected')}\n >\n Reject\n </Button>\n <Button\n size=\"sm\"\n variant={level === 'danger' ? 'danger' : 'primary'}\n loading={loading}\n onClick={() => handleDecision('approved')}\n >\n Approve & Continue\n </Button>\n </div>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Badge } from '../primitives/Badge.js';\nimport type { ToolCallTrace } from './types.js';\n\nexport interface ToolTraceCardProps {\n trace: ToolCallTrace;\n className?: string;\n defaultExpanded?: boolean;\n}\n\nexport function ToolTraceCard({\n trace,\n className,\n defaultExpanded = false,\n}: ToolTraceCardProps) {\n const [expanded, setExpanded] = React.useState(defaultExpanded);\n\n const statusVariant: Record<ToolCallTrace['status'], 'info' | 'success' | 'danger'> = {\n running: 'info',\n success: 'success',\n error: 'danger',\n };\n\n return (\n <div\n data-slot=\"tool-trace-card\"\n className={cn(\n 'yc-ToolTraceCard-root my-1.5 rounded-lg border border-border bg-surface text-fg shadow-1 text-xs',\n className\n )}\n >\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n data-slot=\"header\"\n className=\"yc-ToolTraceCard-header flex w-full items-center justify-between p-2.5 text-start font-mono transition-colors hover:bg-surface-2\"\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"font-semibold text-fg\">{trace.toolName}</span>\n <Badge variant={statusVariant[trace.status]}>{trace.status}</Badge>\n {trace.durationMs !== undefined && (\n <span className=\"text-fg-muted\">({trace.durationMs}ms)</span>\n )}\n </div>\n <span className=\"text-fg-muted\">{expanded ? '▲' : '▼'}</span>\n </button>\n\n {expanded && (\n <div data-slot=\"details\" className=\"yc-ToolTraceCard-details border-t border-border p-2.5 font-mono space-y-2\">\n {trace.input !== undefined && (\n <div>\n <div className=\"text-fg-muted text-[10px] uppercase font-semibold\">Input</div>\n <pre className=\"mt-1 max-h-40 overflow-auto rounded bg-surface-2 p-2 text-fg\">\n {typeof trace.input === 'string'\n ? trace.input\n : JSON.stringify(trace.input, null, 2)}\n </pre>\n </div>\n )}\n {trace.output !== undefined && (\n <div>\n <div className=\"text-fg-muted text-[10px] uppercase font-semibold\">Output</div>\n <pre className=\"mt-1 max-h-40 overflow-auto rounded bg-surface-2 p-2 text-fg\">\n {typeof trace.output === 'string'\n ? trace.output\n : JSON.stringify(trace.output, null, 2)}\n </pre>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport type { ExecutionPlanStep } from './types.js';\n\nexport interface ExecutionPlanCardProps {\n steps: ExecutionPlanStep[];\n className?: string;\n title?: string;\n}\n\nexport function ExecutionPlanCard({\n steps,\n className,\n title = 'Execution Plan',\n}: ExecutionPlanCardProps) {\n if (!steps || steps.length === 0) return null;\n\n return (\n <div\n data-slot=\"execution-plan-card\"\n className={cn(\n 'yc-ExecutionPlanCard-root my-2 rounded-lg border border-border bg-surface p-3 text-xs shadow-1',\n className\n )}\n >\n <div className=\"font-semibold text-fg pb-2 flex items-center justify-between\">\n <span>{title}</span>\n <span className=\"text-fg-muted\">\n {steps.filter((s) => s.status === 'completed').length}/{steps.length}\n </span>\n </div>\n <div className=\"space-y-1.5\">\n {steps.map((step, idx) => {\n const isDone = step.status === 'completed';\n const isRunning = step.status === 'running';\n const isFailed = step.status === 'failed';\n\n return (\n <div\n key={step.id || idx}\n data-slot=\"step\"\n data-status={step.status}\n className=\"yc-ExecutionPlanCard-step flex items-start gap-2\"\n >\n <span\n className={cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold',\n isDone\n ? 'bg-success-fg text-white'\n : isRunning\n ? 'animate-spin border-2 border-primary border-t-transparent'\n : isFailed\n ? 'bg-danger-fg text-white'\n : 'bg-surface-3 text-fg-muted'\n )}\n >\n {isDone ? '✓' : isFailed ? '✕' : isRunning ? '' : idx + 1}\n </span>\n <span\n className={cn(\n 'flex-1 text-fg',\n isDone && 'line-through text-fg-muted',\n isRunning && 'font-medium text-primary'\n )}\n >\n {step.description}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { Chat, ChatRoot, ChatThread, ChatComposer } from './Chat.js';\nimport type { ChatMessage, ChatAttachment, ChatSlotHooks } from './types.js';\n\nexport interface ChatConnectedProps {\n threadId: string;\n initialMessages?: ChatMessage[];\n slotHooks?: ChatSlotHooks;\n className?: string;\n onMessageSent?: (msg: ChatMessage) => void;\n}\n\nexport function ChatConnected({\n threadId,\n initialMessages = [],\n slotHooks,\n className,\n onMessageSent,\n}: ChatConnectedProps) {\n const [messages, setMessages] = React.useState<ChatMessage[]>(initialMessages);\n const [loading, setLoading] = React.useState(false);\n\n const handleSendMessage = async (content: string, attachments?: ChatAttachment[]) => {\n const userMessage: ChatMessage = {\n id: Math.random().toString(36).substring(2, 9),\n role: 'user',\n content,\n createdAt: new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n attachments,\n };\n\n setMessages((prev) => [...prev, userMessage]);\n onMessageSent?.(userMessage);\n setLoading(true);\n\n try {\n const res = await fetch(`/api/v1/threads/${encodeURIComponent(threadId)}/messages`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ content, attachments }),\n });\n\n if (!res.ok) {\n throw new Error(`Server returned status ${res.status}`);\n }\n\n const data = await res.json();\n const assistantMessage: ChatMessage = {\n id: data.id || Math.random().toString(36).substring(2, 9),\n role: 'assistant',\n content: data.content || data.reply || '',\n createdAt: new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n toolTraces: data.toolTraces,\n executionPlan: data.executionPlan,\n approval: data.approval,\n };\n\n setMessages((prev) => [...prev, assistantMessage]);\n } catch (err) {\n console.error('Failed to send message:', err);\n const errorMessage: ChatMessage = {\n id: Math.random().toString(36).substring(2, 9),\n role: 'system',\n content: 'Unable to connect to the assistant. Please try again.',\n createdAt: new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n status: 'error',\n };\n setMessages((prev) => [...prev, errorMessage]);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <ChatRoot\n messages={messages}\n onSendMessage={handleSendMessage}\n loading={loading}\n slotHooks={slotHooks}\n className={className}\n >\n <ChatThread />\n <ChatComposer />\n </ChatRoot>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription } from '../primitives/Sheet.js';\nimport { ToolTraceCard } from './ToolTraceCard.js';\nimport type { ToolCallTrace } from './types.js';\n\nexport interface ActivityLogDrawerProps {\n traces: ToolCallTrace[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: React.ReactNode;\n}\n\nexport function ActivityLogDrawer({\n traces,\n open,\n onOpenChange,\n trigger,\n}: ActivityLogDrawerProps) {\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n {trigger && <SheetTrigger asChild>{trigger}</SheetTrigger>}\n <SheetContent side=\"end\" className=\"yc-ActivityLogDrawer-content flex flex-col gap-4\">\n <SheetHeader>\n <SheetTitle>Activity Log</SheetTitle>\n <SheetDescription>\n Audit log of agent execution traces and tool calls.\n </SheetDescription>\n </SheetHeader>\n\n <div\n data-slot=\"activity-log-drawer\"\n className=\"yc-ActivityLogDrawer-root flex-1 overflow-y-auto space-y-2 pe-1\"\n >\n {traces.length === 0 ? (\n <div className=\"text-center text-xs text-fg-muted py-8\">\n No activity recorded for this session.\n </div>\n ) : (\n traces.map((trace) => (\n <ToolTraceCard key={trace.id} trace={trace} defaultExpanded={false} />\n ))\n )}\n </div>\n </SheetContent>\n </Sheet>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Menu, MenuTrigger, MenuContent, MenuItem } from '../primitives/Menu.js';\n\nexport interface ModelOption {\n id: string;\n name: string;\n description?: string;\n provider?: string;\n}\n\nexport interface ModelSelectorProps {\n models: ModelOption[];\n selectedModelId?: string;\n onSelectModel?: (modelId: string) => void;\n className?: string;\n}\n\nexport function ModelSelector({\n models,\n selectedModelId,\n onSelectModel,\n className,\n}: ModelSelectorProps) {\n const currentModel = models.find((m) => m.id === selectedModelId) || models[0];\n\n return (\n <div\n data-slot=\"model-selector\"\n className={cn('yc-ModelSelector-root inline-block', className)}\n >\n <Menu>\n <MenuTrigger className=\"rounded-md border border-border bg-surface px-2.5 py-1 text-xs font-medium text-fg shadow-1 hover:bg-surface-2\">\n <span className=\"me-1 text-fg-muted font-normal\">Model:</span>\n <span>{currentModel ? currentModel.name : 'Select model'}</span>\n <span className=\"ms-1.5 text-fg-muted\">▾</span>\n </MenuTrigger>\n <MenuContent align=\"start\">\n {models.map((m) => (\n <MenuItem\n key={m.id}\n onClick={() => onSelectModel?.(m.id)}\n className={cn(m.id === currentModel?.id && 'font-semibold text-primary')}\n >\n <div className=\"flex flex-col text-start\">\n <span>{m.name}</span>\n {m.provider && (\n <span className=\"text-[10px] text-fg-muted font-normal\">{m.provider}</span>\n )}\n </div>\n </MenuItem>\n ))}\n </MenuContent>\n </Menu>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Chip } from '../primitives/Chip.js';\nimport type { NoteFilterOption } from './types.js';\n\nexport interface RecordSearchProps {\n searchQuery: string;\n onSearchChange: (query: string) => void;\n selectedFilter: string;\n onFilterChange: (filterId: string) => void;\n filterOptions?: NoteFilterOption[];\n placeholder?: string;\n className?: string;\n}\n\nexport function RecordSearch({\n searchQuery,\n onSearchChange,\n selectedFilter,\n onFilterChange,\n filterOptions = [\n { id: 'all', label: 'All Records' },\n { id: 'pinned', label: 'Pinned' },\n { id: 'recent', label: 'Recent' },\n ],\n placeholder = 'Search records...',\n className,\n}: RecordSearchProps) {\n return (\n <div\n data-slot=\"record-search\"\n className={cn('yc-RecordSearch-root flex flex-col gap-2.5', className)}\n >\n <div className=\"relative flex items-center\">\n <span className=\"absolute start-3 text-fg-muted text-sm\">🔍</span>\n <input\n type=\"text\"\n value={searchQuery}\n onChange={(e) => onSearchChange(e.target.value)}\n placeholder={placeholder}\n className=\"w-full rounded-lg border border-border bg-surface-2 py-2 ps-9 pe-3 text-sm text-fg placeholder:text-fg-muted focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary\"\n data-slot=\"search-input\"\n />\n {searchQuery && (\n <button\n type=\"button\"\n onClick={() => onSearchChange('')}\n className=\"absolute end-3 text-fg-muted hover:text-fg text-xs\"\n aria-label=\"Clear search\"\n >\n ✕\n </button>\n )}\n </div>\n\n <div\n data-slot=\"filter-chips\"\n className=\"yc-RecordSearch-chips flex flex-wrap gap-1.5\"\n >\n {filterOptions.map((opt) => {\n const isSelected = opt.id === selectedFilter;\n return (\n <Chip\n key={opt.id}\n selected={isSelected}\n onClick={() => onFilterChange(opt.id)}\n >\n {opt.label}\n {opt.count !== undefined && (\n <span className=\"ms-1.5 text-xs text-fg-muted font-normal\">\n ({opt.count})\n </span>\n )}\n </Chip>\n );\n })}\n </div>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Badge } from '../primitives/Badge.js';\nimport { EmptyState } from '../primitives/EmptyState.js';\nimport type { NoteItem } from './types.js';\n\nexport interface NotesListProps {\n notes: NoteItem[];\n selectedNoteId?: string;\n onSelectNote: (note: NoteItem) => void;\n className?: string;\n emptyTitle?: string;\n emptyDescription?: string;\n}\n\nexport function NotesList({\n notes,\n selectedNoteId,\n onSelectNote,\n className,\n emptyTitle = 'No notes found',\n emptyDescription = 'Create a new note or adjust your search filter.',\n}: NotesListProps) {\n if (notes.length === 0) {\n return <EmptyState title={emptyTitle} description={emptyDescription} className={className} />;\n }\n\n return (\n <div\n data-slot=\"notes-list\"\n className={cn('yc-NotesList-root flex flex-col gap-2 overflow-y-auto', className)}\n >\n {notes.map((note) => {\n const isSelected = note.id === selectedNoteId;\n return (\n <button\n key={note.id}\n type=\"button\"\n onClick={() => onSelectNote(note)}\n data-slot=\"note-item\"\n data-selected={isSelected ? 'true' : undefined}\n className={cn(\n 'yc-NotesList-item flex flex-col text-start rounded-lg border p-3 transition-colors duration-fast shadow-1',\n isSelected\n ? 'border-primary bg-primary-subtle/20'\n : 'border-border bg-surface hover:bg-surface-2'\n )}\n >\n <div className=\"flex items-center justify-between gap-2 pb-1\">\n <span className=\"font-semibold text-sm text-fg truncate\">\n {note.pinned && <span className=\"me-1 text-primary\">📌</span>}\n {note.title || 'Untitled Note'}\n </span>\n <span className=\"text-[11px] text-fg-muted shrink-0\">{note.updatedAt}</span>\n </div>\n\n <p className=\"text-xs text-fg-muted line-clamp-2 leading-relaxed\">\n {note.content || 'No content'}\n </p>\n\n {note.tags && note.tags.length > 0 && (\n <div className=\"mt-2 flex flex-wrap gap-1\">\n {note.tags.map((tag) => (\n <Badge key={tag} variant=\"neutral\">\n {tag}\n </Badge>\n ))}\n </div>\n )}\n </button>\n );\n })}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Button } from '../primitives/Button.js';\nimport { Badge } from '../primitives/Badge.js';\nimport type { NoteItem } from './types.js';\n\nexport interface NoteViewProps {\n note: NoteItem;\n onEdit?: (note: NoteItem) => void;\n onDelete?: (noteId: string) => void;\n onTogglePin?: (noteId: string) => void;\n className?: string;\n}\n\nexport function NoteView({\n note,\n onEdit,\n onDelete,\n onTogglePin,\n className,\n}: NoteViewProps) {\n return (\n <div\n data-slot=\"note-view\"\n className={cn(\n 'yc-NoteView-root flex flex-col h-full rounded-lg border border-border bg-surface p-6 shadow-1',\n className\n )}\n >\n <div className=\"flex items-start justify-between gap-4 border-b border-border pb-4\">\n <div>\n <h2 className=\"yc-NoteView-title text-xl font-bold text-fg flex items-center gap-2\">\n {note.pinned && <span className=\"text-primary text-base\">📌</span>}\n {note.title || 'Untitled Note'}\n </h2>\n <div className=\"mt-1 flex items-center gap-3 text-xs text-fg-muted\">\n <span>Updated {note.updatedAt}</span>\n <span>Created {note.createdAt}</span>\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {onTogglePin && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => onTogglePin(note.id)}\n aria-label={note.pinned ? 'Unpin note' : 'Pin note'}\n >\n {note.pinned ? 'Unpin' : 'Pin'}\n </Button>\n )}\n {onEdit && (\n <Button size=\"sm\" variant=\"secondary\" onClick={() => onEdit(note)}>\n Edit\n </Button>\n )}\n {onDelete && (\n <Button size=\"sm\" variant=\"danger\" onClick={() => onDelete(note.id)}>\n Delete\n </Button>\n )}\n </div>\n </div>\n\n {note.tags && note.tags.length > 0 && (\n <div className=\"mt-3 flex flex-wrap gap-1.5 pb-2\">\n {note.tags.map((tag) => (\n <Badge key={tag} variant=\"neutral\">\n {tag}\n </Badge>\n ))}\n </div>\n )}\n\n <div\n data-slot=\"note-content\"\n className=\"yc-NoteView-content mt-4 flex-1 overflow-y-auto text-sm text-fg leading-relaxed whitespace-pre-wrap\"\n >\n {note.content}\n </div>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Button } from '../primitives/Button.js';\nimport { Badge } from '../primitives/Badge.js';\nimport { SegmentedControl } from '../primitives/Segmented.js';\nimport type { CalendarEvent, CalendarViewMode } from './types.js';\n\nexport interface CalendarProps {\n events: CalendarEvent[];\n selectedDate?: Date;\n onSelectDate?: (date: Date) => void;\n onSelectEvent?: (event: CalendarEvent) => void;\n viewMode?: CalendarViewMode;\n onViewModeChange?: (view: CalendarViewMode) => void;\n className?: string;\n}\n\nexport function Calendar({\n events,\n selectedDate = new Date(),\n onSelectDate,\n onSelectEvent,\n viewMode = 'month',\n onViewModeChange,\n className,\n}: CalendarProps) {\n const [currentDate, setCurrentDate] = React.useState<Date>(selectedDate);\n const [currentView, setCurrentView] = React.useState<CalendarViewMode>(viewMode);\n\n const activeView = onViewModeChange ? viewMode : currentView;\n const setView = (v: CalendarViewMode) => {\n setCurrentView(v);\n onViewModeChange?.(v);\n };\n\n const handlePrev = () => {\n const next = new Date(currentDate);\n if (activeView === 'month') {\n next.setMonth(next.getMonth() - 1);\n } else if (activeView === 'week') {\n next.setDate(next.getDate() - 7);\n } else {\n next.setDate(next.getDate() - 1);\n }\n setCurrentDate(next);\n onSelectDate?.(next);\n };\n\n const handleNext = () => {\n const next = new Date(currentDate);\n if (activeView === 'month') {\n next.setMonth(next.getMonth() + 1);\n } else if (activeView === 'week') {\n next.setDate(next.getDate() + 7);\n } else {\n next.setDate(next.getDate() + 1);\n }\n setCurrentDate(next);\n onSelectDate?.(next);\n };\n\n const handleToday = () => {\n const today = new Date();\n setCurrentDate(today);\n onSelectDate?.(today);\n };\n\n const monthName = currentDate.toLocaleString('default', { month: 'long', year: 'numeric' });\n\n // Generate days in month for month view\n const monthDays = React.useMemo(() => {\n const year = currentDate.getFullYear();\n const month = currentDate.getMonth();\n const firstDayIndex = new Date(year, month, 1).getDay();\n const daysCount = new Date(year, month + 1, 0).getDate();\n\n const days: Array<{ dayNumber: number; date: Date; isCurrentMonth: boolean }> = [];\n\n // Leading days from previous month\n const prevMonthDaysCount = new Date(year, month, 0).getDate();\n for (let i = firstDayIndex - 1; i >= 0; i--) {\n days.push({\n dayNumber: prevMonthDaysCount - i,\n date: new Date(year, month - 1, prevMonthDaysCount - i),\n isCurrentMonth: false,\n });\n }\n\n // Days in current month\n for (let i = 1; i <= daysCount; i++) {\n days.push({\n dayNumber: i,\n date: new Date(year, month, i),\n isCurrentMonth: true,\n });\n }\n\n return days;\n }, [currentDate]);\n\n return (\n <div\n data-slot=\"calendar\"\n data-view={activeView}\n className={cn(\n 'yc-Calendar-root flex flex-col rounded-xl border border-border bg-surface p-4 shadow-1',\n className\n )}\n >\n {/* Header toolbar */}\n <div className=\"flex flex-wrap items-center justify-between gap-3 pb-4 border-b border-border\">\n <div className=\"flex items-center gap-2\">\n <h2 className=\"text-lg font-bold text-fg\">{monthName}</h2>\n <Button size=\"sm\" variant=\"outline\" onClick={handleToday}>\n Today\n </Button>\n <div className=\"flex items-center gap-1\">\n <Button size=\"sm\" variant=\"ghost\" onClick={handlePrev} aria-label=\"Previous\">\n ‹\n </Button>\n <Button size=\"sm\" variant=\"ghost\" onClick={handleNext} aria-label=\"Next\">\n ›\n </Button>\n </div>\n </div>\n\n <SegmentedControl\n size=\"sm\"\n value={activeView}\n onChange={(v) => setView(v as CalendarViewMode)}\n options={[\n { value: 'month', label: 'Month' },\n { value: 'week', label: 'Week' },\n { value: 'agenda', label: 'Agenda' },\n ]}\n />\n </div>\n\n {/* Main views */}\n {activeView === 'month' && (\n <div data-slot=\"month-view\" className=\"mt-4 flex flex-col\">\n {/* Weekday headers */}\n <div className=\"grid grid-cols-7 text-center text-xs font-semibold text-fg-muted pb-2\">\n {['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].map((d) => (\n <div key={d} className=\"py-1\">\n {d}\n </div>\n ))}\n </div>\n\n {/* Month grid */}\n <div className=\"grid grid-cols-7 gap-px bg-border rounded-lg overflow-hidden border border-border\">\n {monthDays.map((d, idx) => {\n const dateStr = d.date.toISOString().split('T')[0];\n const dayEvents = events.filter((e) => {\n const s = typeof e.start === 'string' ? e.start : e.start.toISOString();\n return s.startsWith(dateStr);\n });\n const hasConflict = dayEvents.some((e) => e.conflict);\n\n return (\n <div\n key={idx}\n onClick={() => onSelectDate?.(d.date)}\n className={cn(\n 'min-h-[80px] p-1.5 flex flex-col justify-between cursor-pointer transition-colors',\n d.isCurrentMonth ? 'bg-surface hover:bg-surface-2' : 'bg-surface-2/50 text-fg-muted'\n )}\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium\">{d.dayNumber}</span>\n {hasConflict && (\n <Badge variant=\"danger\" className=\"text-[10px] px-1 py-0\">\n Conflict\n </Badge>\n )}\n </div>\n\n <div className=\"flex flex-col gap-1 mt-1\">\n {dayEvents.slice(0, 2).map((ev) => (\n <button\n key={ev.id}\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onSelectEvent?.(ev);\n }}\n className={cn(\n 'truncate rounded px-1 text-[11px] text-start font-medium',\n ev.conflict ? 'bg-danger-bg text-danger-fg' : 'bg-primary-subtle text-primary'\n )}\n >\n {ev.title}\n </button>\n ))}\n {dayEvents.length > 2 && (\n <span className=\"text-[10px] text-fg-muted ps-1\">\n +{dayEvents.length - 2} more\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n\n {activeView === 'week' && (\n <div data-slot=\"week-view\" className=\"mt-4 p-4 text-center text-sm text-fg-muted\">\n <div className=\"grid grid-cols-7 gap-2\">\n {['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].map((dayName, idx) => (\n <div key={idx} className=\"rounded-lg border border-border p-2 bg-surface-2\">\n <div className=\"font-semibold text-fg text-xs pb-1\">{dayName}</div>\n <div className=\"space-y-1 mt-2\">\n {events.slice(0, 2).map((ev) => (\n <div\n key={ev.id}\n onClick={() => onSelectEvent?.(ev)}\n className={cn(\n 'cursor-pointer rounded p-1 text-[11px] truncate text-start',\n ev.conflict ? 'bg-danger-bg text-danger-fg' : 'bg-surface text-fg shadow-1'\n )}\n >\n {ev.title}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {activeView === 'agenda' && (\n <div data-slot=\"agenda-view\" className=\"mt-4 flex flex-col gap-2\">\n {events.length === 0 ? (\n <div className=\"py-8 text-center text-sm text-fg-muted\">No scheduled events.</div>\n ) : (\n events.map((ev) => (\n <div\n key={ev.id}\n onClick={() => onSelectEvent?.(ev)}\n className={cn(\n 'flex items-center justify-between rounded-lg border p-3 cursor-pointer hover:bg-surface-2 transition-colors',\n ev.conflict ? 'border-danger-border bg-danger-bg/20' : 'border-border bg-surface'\n )}\n >\n <div>\n <h4 className=\"text-sm font-semibold text-fg\">{ev.title}</h4>\n <p className=\"text-xs text-fg-muted\">\n {String(ev.start)} {ev.location && `• ${ev.location}`}\n </p>\n </div>\n {ev.conflict && <Badge variant=\"danger\">Conflict</Badge>}\n </div>\n ))\n )}\n </div>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Badge } from '../primitives/Badge.js';\nimport type { CalendarEvent } from './types.js';\n\nexport interface ScheduleAgendaProps {\n events: CalendarEvent[];\n onSelectEvent?: (event: CalendarEvent) => void;\n className?: string;\n}\n\nexport function ScheduleAgenda({\n events,\n onSelectEvent,\n className,\n}: ScheduleAgendaProps) {\n return (\n <div\n data-slot=\"schedule-agenda\"\n className={cn('yc-ScheduleAgenda-root flex flex-col gap-3', className)}\n >\n {events.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-fg-muted\">No scheduled agenda items.</div>\n ) : (\n events.map((event) => (\n <div\n key={event.id}\n onClick={() => onSelectEvent?.(event)}\n data-slot=\"agenda-item\"\n className={cn(\n 'yc-ScheduleAgenda-item flex items-center justify-between rounded-lg border p-3 shadow-1 cursor-pointer transition-colors',\n event.conflict\n ? 'border-danger-border bg-danger-bg/20'\n : 'border-border bg-surface hover:bg-surface-2'\n )}\n >\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-sm font-semibold text-fg\">{event.title}</span>\n <span className=\"text-xs text-fg-muted\">\n {String(event.start)} {event.location && `• ${event.location}`}\n </span>\n </div>\n {event.conflict && <Badge variant=\"danger\">Conflict</Badge>}\n </div>\n ))\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Button } from '../primitives/Button.js';\nimport { Badge } from '../primitives/Badge.js';\nimport type { ReminderItem } from './types.js';\n\nexport interface RemindersProps {\n reminders: ReminderItem[];\n onComplete?: (id: string, completed: boolean) => void;\n onSnooze?: (id: string, minutes: number) => void;\n className?: string;\n}\n\nexport function Reminders({\n reminders,\n onComplete,\n onSnooze,\n className,\n}: RemindersProps) {\n return (\n <div\n data-slot=\"reminders\"\n className={cn('yc-Reminders-root flex flex-col gap-2', className)}\n >\n {reminders.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-fg-muted\">No reminders pending.</div>\n ) : (\n reminders.map((reminder) => {\n const isDone = reminder.completed;\n return (\n <div\n key={reminder.id}\n data-slot=\"reminder-item\"\n data-completed={isDone ? 'true' : undefined}\n className={cn(\n 'yc-Reminders-item flex items-center justify-between rounded-lg border border-border bg-surface p-3 shadow-1 transition-opacity',\n isDone && 'opacity-60'\n )}\n >\n <div className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={isDone}\n onChange={(e) => onComplete?.(reminder.id, e.target.checked)}\n className=\"h-4 w-4 rounded border-border text-primary focus:ring-primary\"\n aria-label={`Mark ${reminder.title} as completed`}\n />\n <div className=\"flex flex-col\">\n <span\n className={cn(\n 'text-sm font-medium text-fg',\n isDone && 'line-through text-fg-muted'\n )}\n >\n {reminder.title}\n </span>\n <div className=\"flex items-center gap-2 text-xs text-fg-muted\">\n <span>Due: {reminder.dueAt}</span>\n {reminder.rrule && (\n <Badge variant=\"neutral\" className=\"text-[10px] px-1 py-0\">\n 🔄 {reminder.rrule}\n </Badge>\n )}\n {reminder.snoozedUntil && (\n <span className=\"text-warn-fg\">Snoozed until {reminder.snoozedUntil}</span>\n )}\n </div>\n </div>\n </div>\n\n {!isDone && onSnooze && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => onSnooze(reminder.id, 15)}\n className=\"text-xs\"\n >\n Snooze 15m\n </Button>\n )}\n </div>\n );\n })\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Badge } from '../primitives/Badge.js';\nimport type { RoutineItem } from './types.js';\n\nexport interface RoutinesProps {\n routines: RoutineItem[];\n onToggleActive?: (id: string, active: boolean) => void;\n className?: string;\n}\n\nexport function Routines({\n routines,\n onToggleActive,\n className,\n}: RoutinesProps) {\n return (\n <div\n data-slot=\"routines\"\n className={cn('yc-Routines-root flex flex-col gap-2.5', className)}\n >\n {routines.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-fg-muted\">No active routines configured.</div>\n ) : (\n routines.map((routine) => (\n <div\n key={routine.id}\n data-slot=\"routine-item\"\n className=\"yc-Routines-item flex items-center justify-between rounded-lg border border-border bg-surface p-3 shadow-1\"\n >\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-sm font-semibold text-fg\">{routine.title}</span>\n <div className=\"flex items-center gap-2 text-xs text-fg-muted\">\n <Badge variant=\"neutral\">{routine.frequency}</Badge>\n <span>{routine.timeOfDay}</span>\n {routine.durationMinutes && (\n <span>({routine.durationMinutes} mins)</span>\n )}\n </div>\n </div>\n\n <label className=\"relative inline-flex cursor-pointer items-center\">\n <input\n type=\"checkbox\"\n checked={routine.active}\n onChange={(e) => onToggleActive?.(routine.id, e.target.checked)}\n className=\"sr-only peer\"\n aria-label={`Toggle ${routine.title} routine`}\n />\n <div className=\"h-6 w-11 rounded-full bg-surface-3 peer peer-checked:bg-primary peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-border after:border after:rounded-full after:h-5 after:w-5 after:transition-all\" />\n </label>\n </div>\n ))\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport type { TimelineEvent } from './types.js';\n\nexport interface ActivityTimelineProps {\n events: TimelineEvent[];\n className?: string;\n}\n\nconst statusColors: Record<NonNullable<TimelineEvent['status']>, string> = {\n info: 'bg-info-fg',\n success: 'bg-success-fg',\n warn: 'bg-warn-fg',\n danger: 'bg-danger-fg',\n};\n\nexport function ActivityTimeline({ events, className }: ActivityTimelineProps) {\n return (\n <div\n data-slot=\"activity-timeline\"\n className={cn('yc-ActivityTimeline-root flex flex-col', className)}\n >\n {events.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-fg-muted\">No timeline activities.</div>\n ) : (\n <div className=\"relative border-s border-border ms-3.5 space-y-6 my-2\">\n {events.map((ev) => (\n <div\n key={ev.id}\n data-slot=\"timeline-item\"\n className=\"yc-ActivityTimeline-item relative ps-6\"\n >\n {/* Dot */}\n <span\n className={cn(\n 'absolute -start-1.5 top-1 h-3 w-3 rounded-full border-2 border-surface',\n statusColors[ev.status || 'info']\n )}\n />\n\n <div className=\"flex flex-col\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold text-fg\">{ev.title}</span>\n <span className=\"text-xs text-fg-muted\">{ev.timestamp}</span>\n </div>\n {ev.description && (\n <p className=\"mt-1 text-xs text-fg-muted leading-relaxed\">\n {ev.description}\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Avatar, AvatarFallback, AvatarImage } from '../primitives/Avatar.js';\nimport { Menu, MenuTrigger, MenuContent, MenuItem } from '../primitives/Menu.js';\nimport type { ProfileMember } from './types.js';\n\nexport interface ProfileSwitcherProps {\n members: ProfileMember[];\n activeMemberId: string;\n onSelectMember: (memberId: string) => void;\n className?: string;\n}\n\nexport function ProfileSwitcher({\n members,\n activeMemberId,\n onSelectMember,\n className,\n}: ProfileSwitcherProps) {\n const activeMember = members.find((m) => m.id === activeMemberId) || members[0];\n\n return (\n <div\n data-slot=\"profile-switcher\"\n className={cn('yc-ProfileSwitcher-root inline-block', className)}\n >\n <Menu>\n <MenuTrigger className=\"flex items-center gap-2 rounded-lg border border-border bg-surface px-2.5 py-1.5 shadow-1 hover:bg-surface-2 transition-colors\">\n <Avatar size=\"sm\">\n {activeMember?.avatarUrl ? (\n <AvatarImage src={activeMember.avatarUrl} alt={activeMember.displayName} />\n ) : (\n <AvatarFallback>\n {activeMember ? activeMember.displayName.substring(0, 2).toUpperCase() : 'ME'}\n </AvatarFallback>\n )}\n </Avatar>\n <div className=\"flex flex-col text-start\">\n <span className=\"text-xs font-semibold text-fg\">\n {activeMember ? activeMember.displayName : 'Select Profile'}\n </span>\n {activeMember?.relationship && (\n <span className=\"text-[10px] text-fg-muted\">{activeMember.relationship}</span>\n )}\n </div>\n <span className=\"ms-1 text-xs text-fg-muted\">▾</span>\n </MenuTrigger>\n\n <MenuContent align=\"start\">\n {members.map((member) => (\n <MenuItem\n key={member.id}\n onClick={() => onSelectMember(member.id)}\n className={cn(\n 'flex items-center gap-2.5 py-2',\n member.id === activeMemberId && 'bg-surface-2 font-semibold'\n )}\n >\n <Avatar size=\"sm\">\n {member.avatarUrl ? (\n <AvatarImage src={member.avatarUrl} alt={member.displayName} />\n ) : (\n <AvatarFallback>\n {member.displayName.substring(0, 2).toUpperCase()}\n </AvatarFallback>\n )}\n </Avatar>\n <div className=\"flex flex-col text-start\">\n <span className=\"text-xs text-fg\">{member.displayName}</span>\n <span className=\"text-[10px] text-fg-muted\">\n {member.relationship || member.role}\n </span>\n </div>\n </MenuItem>\n ))}\n </MenuContent>\n </Menu>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Avatar, AvatarFallback, AvatarImage } from '../primitives/Avatar.js';\nimport { Badge } from '../primitives/Badge.js';\nimport { Button } from '../primitives/Button.js';\nimport type { ProfileMember } from './types.js';\n\nexport interface MemberCardProps {\n member: ProfileMember;\n onEdit?: (member: ProfileMember) => void;\n className?: string;\n}\n\nconst roleBadgeVariant: Record<ProfileMember['role'], 'primary' | 'neutral' | 'info' | 'warn'> = {\n owner: 'primary',\n steward: 'info',\n member: 'neutral',\n viewer: 'warn',\n};\n\nexport function MemberCard({ member, onEdit, className }: MemberCardProps) {\n return (\n <div\n data-slot=\"member-card\"\n className={cn(\n 'yc-MemberCard-root flex items-center justify-between rounded-xl border border-border bg-surface p-4 shadow-1',\n className\n )}\n >\n <div className=\"flex items-center gap-3\">\n <Avatar size=\"md\">\n {member.avatarUrl ? (\n <AvatarImage src={member.avatarUrl} alt={member.displayName} />\n ) : (\n <AvatarFallback>\n {member.displayName.substring(0, 2).toUpperCase()}\n </AvatarFallback>\n )}\n </Avatar>\n\n <div className=\"flex flex-col\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-bold text-fg\">{member.displayName}</span>\n <Badge variant={roleBadgeVariant[member.role]}>{member.role}</Badge>\n </div>\n {member.relationship && (\n <span className=\"text-xs text-fg-muted\">{member.relationship}</span>\n )}\n {member.scopes && member.scopes.length > 0 && (\n <div className=\"mt-1 flex flex-wrap gap-1\">\n {member.scopes.map((scope) => (\n <span\n key={scope}\n className=\"rounded bg-surface-2 px-1.5 py-0.5 text-[10px] text-fg-muted\"\n >\n {scope}\n </span>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {onEdit && (\n <Button size=\"sm\" variant=\"ghost\" onClick={() => onEdit(member)}>\n Edit\n </Button>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogClose } from '../primitives/Dialog.js';\nimport { Button } from '../primitives/Button.js';\nimport type { ProfileMember, ProfileRole } from './types.js';\n\nexport interface ProfileEditModalProps {\n member?: ProfileMember | null;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onSave: (updated: ProfileMember) => void;\n}\n\nexport function ProfileEditModal({\n member,\n open,\n onOpenChange,\n onSave,\n}: ProfileEditModalProps) {\n const [displayName, setDisplayName] = React.useState(member?.displayName || '');\n const [relationship, setRelationship] = React.useState(member?.relationship || '');\n const [role, setRole] = React.useState<ProfileRole>(member?.role || 'member');\n\n React.useEffect(() => {\n if (member) {\n setDisplayName(member.displayName);\n setRelationship(member.relationship || '');\n setRole(member.role);\n }\n }, [member]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!member) return;\n onSave({\n ...member,\n displayName,\n relationship,\n role,\n });\n onOpenChange(false);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"yc-ProfileEditModal-content max-w-md\">\n <form onSubmit={handleSubmit} data-slot=\"profile-edit-modal\">\n <DialogHeader>\n <DialogTitle>Edit Profile</DialogTitle>\n </DialogHeader>\n\n <div className=\"space-y-4 py-4 text-xs\">\n <div>\n <label className=\"block font-medium text-fg mb-1\">Display Name</label>\n <input\n type=\"text\"\n required\n value={displayName}\n onChange={(e) => setDisplayName(e.target.value)}\n className=\"w-full rounded-md border border-border bg-surface-2 p-2 text-sm text-fg focus:border-primary focus:outline-none\"\n />\n </div>\n\n <div>\n <label className=\"block font-medium text-fg mb-1\">Relationship</label>\n <input\n type=\"text\"\n value={relationship}\n onChange={(e) => setRelationship(e.target.value)}\n placeholder=\"e.g. Self, Spouse, Child, Ward\"\n className=\"w-full rounded-md border border-border bg-surface-2 p-2 text-sm text-fg focus:border-primary focus:outline-none\"\n />\n </div>\n\n <div>\n <label className=\"block font-medium text-fg mb-1\">Role</label>\n <select\n value={role}\n onChange={(e) => setRole(e.target.value as ProfileRole)}\n className=\"w-full rounded-md border border-border bg-surface-2 p-2 text-sm text-fg focus:border-primary focus:outline-none\"\n >\n <option value=\"owner\">Owner</option>\n <option value=\"steward\">Steward</option>\n <option value=\"member\">Member</option>\n <option value=\"viewer\">Viewer</option>\n </select>\n </div>\n </div>\n\n <DialogFooter className=\"gap-2\">\n <DialogClose asChild>\n <Button type=\"button\" variant=\"ghost\" size=\"sm\">\n Cancel\n </Button>\n </DialogClose>\n <Button type=\"submit\" variant=\"primary\" size=\"sm\">\n Save Changes\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport type { ScopePermission } from './types.js';\n\nexport interface RoleMatrixProps {\n permissions: ScopePermission[];\n onChange?: (permissions: ScopePermission[]) => void;\n readOnly?: boolean;\n className?: string;\n}\n\nexport function RoleMatrix({\n permissions,\n onChange,\n readOnly = false,\n className,\n}: RoleMatrixProps) {\n const handleToggle = (\n domainIndex: number,\n field: 'read' | 'write' | 'approve',\n val: boolean\n ) => {\n if (readOnly || !onChange) return;\n const next = [...permissions];\n next[domainIndex] = {\n ...next[domainIndex],\n [field]: val,\n };\n onChange(next);\n };\n\n return (\n <div\n data-slot=\"role-matrix\"\n className={cn(\n 'yc-RoleMatrix-root overflow-x-auto rounded-xl border border-border bg-surface text-fg shadow-1',\n className\n )}\n >\n <table className=\"w-full text-start text-xs\">\n <thead className=\"border-b border-border bg-surface-2 text-fg-muted font-semibold\">\n <tr>\n <th className=\"p-3 text-start\">Domain Scope</th>\n <th className=\"p-3 text-center\">Read</th>\n <th className=\"p-3 text-center\">Write</th>\n <th className=\"p-3 text-center\">Approve</th>\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {permissions.map((perm, idx) => (\n <tr key={perm.domain} className=\"hover:bg-surface-2/50 transition-colors\">\n <td className=\"p-3 font-medium text-fg capitalize\">{perm.domain}</td>\n <td className=\"p-3 text-center\">\n <input\n type=\"checkbox\"\n checked={perm.read}\n disabled={readOnly}\n onChange={(e) => handleToggle(idx, 'read', e.target.checked)}\n className=\"h-4 w-4 rounded border-border text-primary focus:ring-primary disabled:opacity-50\"\n aria-label={`Read permission for ${perm.domain}`}\n />\n </td>\n <td className=\"p-3 text-center\">\n <input\n type=\"checkbox\"\n checked={perm.write}\n disabled={readOnly}\n onChange={(e) => handleToggle(idx, 'write', e.target.checked)}\n className=\"h-4 w-4 rounded border-border text-primary focus:ring-primary disabled:opacity-50\"\n aria-label={`Write permission for ${perm.domain}`}\n />\n </td>\n <td className=\"p-3 text-center\">\n <input\n type=\"checkbox\"\n checked={perm.approve}\n disabled={readOnly}\n onChange={(e) => handleToggle(idx, 'approve', e.target.checked)}\n className=\"h-4 w-4 rounded border-border text-primary focus:ring-primary disabled:opacity-50\"\n aria-label={`Approve permission for ${perm.domain}`}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Button } from '../primitives/Button.js';\nimport { Chip } from '../primitives/Chip.js';\nimport type { ViewerInviteData } from './types.js';\n\nexport interface ViewerInviteProps {\n availableScopes?: string[];\n onSendInvite?: (data: ViewerInviteData) => Promise<void> | void;\n className?: string;\n}\n\nexport function ViewerInvite({\n availableScopes = ['general', 'notes', 'calendar', 'finances', 'records'],\n onSendInvite,\n className,\n}: ViewerInviteProps) {\n const [email, setEmail] = React.useState('');\n const [selectedScopes, setSelectedScopes] = React.useState<string[]>(['general']);\n const [expiresInDays, setExpiresInDays] = React.useState(7);\n const [sent, setSent] = React.useState(false);\n const [loading, setLoading] = React.useState(false);\n\n const toggleScope = (scope: string) => {\n setSelectedScopes((prev) =>\n prev.includes(scope) ? prev.filter((s) => s !== scope) : [...prev, scope]\n );\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!email) return;\n setLoading(true);\n try {\n await onSendInvite?.({\n email,\n role: 'viewer',\n scopes: selectedScopes,\n expiresInDays,\n });\n setSent(true);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <div\n data-slot=\"viewer-invite\"\n className={cn(\n 'yc-ViewerInvite-root rounded-xl border border-border bg-surface p-6 shadow-1 text-xs',\n className\n )}\n >\n <h3 className=\"text-base font-bold text-fg\">Invite Viewer</h3>\n <p className=\"mt-1 text-fg-muted leading-relaxed\">\n Grant time-limited, read-only access to selected record scopes.\n </p>\n\n {sent ? (\n <div className=\"mt-4 rounded-lg bg-success-bg/30 border border-success-border p-4 text-center\">\n <span className=\"font-semibold text-success-fg\">Invitation Sent!</span>\n <p className=\"mt-1 text-fg-muted\">An invitation link has been dispatched to {email}.</p>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"mt-3\"\n onClick={() => {\n setSent(false);\n setEmail('');\n }}\n >\n Invite Another\n </Button>\n </div>\n ) : (\n <form onSubmit={handleSubmit} className=\"mt-4 space-y-4\">\n <div>\n <label className=\"block font-medium text-fg mb-1\">Viewer Email Address</label>\n <input\n type=\"email\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder=\"e.g. viewer@example.com\"\n className=\"w-full rounded-md border border-border bg-surface-2 p-2 text-sm text-fg focus:border-primary focus:outline-none\"\n />\n </div>\n\n <div>\n <label className=\"block font-medium text-fg mb-1\">Allowed Scopes</label>\n <div className=\"flex flex-wrap gap-1.5 mt-1\">\n {availableScopes.map((scope) => (\n <Chip\n key={scope}\n selected={selectedScopes.includes(scope)}\n onClick={() => toggleScope(scope)}\n >\n {scope}\n </Chip>\n ))}\n </div>\n </div>\n\n <div>\n <label className=\"block font-medium text-fg mb-1\">Access Expiration</label>\n <select\n value={expiresInDays}\n onChange={(e) => setExpiresInDays(Number(e.target.value))}\n className=\"w-full rounded-md border border-border bg-surface-2 p-2 text-sm text-fg focus:border-primary focus:outline-none\"\n >\n <option value={1}>24 hours</option>\n <option value={7}>7 days</option>\n <option value={30}>30 days</option>\n <option value={90}>90 days</option>\n </select>\n </div>\n\n <Button type=\"submit\" variant=\"primary\" size=\"sm\" loading={loading} className=\"w-full\">\n Send Secure Invitation\n </Button>\n </form>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Button } from '../primitives/Button.js';\nimport { Chip } from '../primitives/Chip.js';\nimport type { ShareBundleData } from './types.js';\n\nexport interface ShareBundleProps {\n availableScopes?: string[];\n onCreateBundle?: (bundle: Omit<ShareBundleData, 'id'>) => Promise<string> | void;\n className?: string;\n}\n\nexport function ShareBundle({\n availableScopes = ['general', 'notes', 'calendar', 'finances', 'records'],\n onCreateBundle,\n className,\n}: ShareBundleProps) {\n const [name, setName] = React.useState('');\n const [selectedScopes, setSelectedScopes] = React.useState<string[]>(['general']);\n const [requiresPasscode, setRequiresPasscode] = React.useState(false);\n const [bundleLink, setBundleLink] = React.useState<string | null>(null);\n const [loading, setLoading] = React.useState(false);\n\n const toggleScope = (scope: string) => {\n setSelectedScopes((prev) =>\n prev.includes(scope) ? prev.filter((s) => s !== scope) : [...prev, scope]\n );\n };\n\n const handleCreate = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!name) return;\n setLoading(true);\n try {\n const link = await onCreateBundle?.({\n name,\n scopes: selectedScopes,\n requiresPasscode,\n });\n setBundleLink(typeof link === 'string' ? link : 'https://yarvelle.local/bundles/b7a9c3');\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <div\n data-slot=\"share-bundle\"\n className={cn(\n 'yc-ShareBundle-root rounded-xl border border-border bg-surface p-6 shadow-1 text-xs',\n className\n )}\n >\n <h3 className=\"text-base font-bold text-fg\">Create Share Bundle</h3>\n <p className=\"mt-1 text-fg-muted leading-relaxed\">\n Package records into an encrypted export bundle.\n </p>\n\n {bundleLink ? (\n <div className=\"mt-4 rounded-lg bg-surface-2 border border-border p-4 text-center\">\n <span className=\"font-semibold text-fg\">Bundle Created!</span>\n <p className=\"mt-1 text-fg-muted\">Shareable bundle link:</p>\n <div className=\"mt-2 rounded bg-surface p-2 font-mono text-xs text-primary border border-border\">\n {bundleLink}\n </div>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"mt-3\"\n onClick={() => {\n setBundleLink(null);\n setName('');\n }}\n >\n Create Another\n </Button>\n </div>\n ) : (\n <form onSubmit={handleCreate} className=\"mt-4 space-y-4\">\n <div>\n <label className=\"block font-medium text-fg mb-1\">Bundle Name</label>\n <input\n type=\"text\"\n required\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"e.g. Annual Record Dossier\"\n className=\"w-full rounded-md border border-border bg-surface-2 p-2 text-sm text-fg focus:border-primary focus:outline-none\"\n />\n </div>\n\n <div>\n <label className=\"block font-medium text-fg mb-1\">Included Scopes</label>\n <div className=\"flex flex-wrap gap-1.5 mt-1\">\n {availableScopes.map((scope) => (\n <Chip\n key={scope}\n selected={selectedScopes.includes(scope)}\n onClick={() => toggleScope(scope)}\n >\n {scope}\n </Chip>\n ))}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <input\n id=\"passcode-opt\"\n type=\"checkbox\"\n checked={requiresPasscode}\n onChange={(e) => setRequiresPasscode(e.target.checked)}\n className=\"h-4 w-4 rounded border-border text-primary focus:ring-primary\"\n />\n <label htmlFor=\"passcode-opt\" className=\"font-medium text-fg cursor-pointer\">\n Protect bundle with passkey / PIN\n </label>\n </div>\n\n <Button type=\"submit\" variant=\"primary\" size=\"sm\" loading={loading} className=\"w-full\">\n Generate Secure Bundle\n </Button>\n </form>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Button } from '../primitives/Button.js';\n\nexport interface TeenHandoverBannerProps {\n memberName: string;\n handoverDate: string;\n onInitiateHandover?: () => void;\n onDismiss?: () => void;\n className?: string;\n}\n\nexport function TeenHandoverBanner({\n memberName,\n handoverDate,\n onInitiateHandover,\n onDismiss,\n className,\n}: TeenHandoverBannerProps) {\n return (\n <div\n data-slot=\"teen-handover-banner\"\n className={cn(\n 'yc-TeenHandoverBanner-root flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 rounded-xl border border-warn-border bg-warn-bg/30 p-4 text-xs text-fg shadow-1',\n className\n )}\n >\n <div className=\"flex items-start gap-3\">\n <span className=\"text-warn-fg text-lg leading-none\">⚠️</span>\n <div>\n <h4 className=\"font-semibold text-fg\">Privacy & Age-of-Majority Transition</h4>\n <p className=\"mt-0.5 text-fg-muted\">\n <span className=\"font-medium text-fg\">{memberName}</span> reaches transition age on{' '}\n <span className=\"font-medium text-fg\">{handoverDate}</span>. Account stewardship and record privacy settings should be reviewed.\n </p>\n </div>\n </div>\n\n <div className=\"flex items-center gap-2 shrink-0\">\n {onDismiss && (\n <Button size=\"sm\" variant=\"ghost\" onClick={onDismiss}>\n Dismiss\n </Button>\n )}\n {onInitiateHandover && (\n <Button size=\"sm\" variant=\"outline\" onClick={onInitiateHandover}>\n Review Privacy\n </Button>\n )}\n </div>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Badge } from '../primitives/Badge.js';\nimport type { TaskItemData, TaskPriority } from './types.js';\n\nexport interface TaskItemProps {\n task: TaskItemData;\n onToggleComplete?: (id: string, completed: boolean) => void;\n onDelete?: (id: string) => void;\n className?: string;\n}\n\nconst priorityBadgeVariant: Record<TaskPriority, 'neutral' | 'warn' | 'danger'> = {\n low: 'neutral',\n medium: 'warn',\n high: 'danger',\n};\n\nexport function TaskItem({\n task,\n onToggleComplete,\n onDelete,\n className,\n}: TaskItemProps) {\n const isDone = task.completed;\n\n return (\n <div\n data-slot=\"task-item\"\n data-completed={isDone ? 'true' : undefined}\n className={cn(\n 'yc-TaskItem-root flex items-center justify-between rounded-lg border border-border bg-surface p-3 shadow-1 transition-all',\n isDone && 'opacity-60',\n className\n )}\n >\n <div className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n checked={isDone}\n onChange={(e) => onToggleComplete?.(task.id, e.target.checked)}\n className=\"h-4 w-4 rounded border-border text-primary focus:ring-primary\"\n aria-label={`Mark task ${task.title} as ${isDone ? 'incomplete' : 'complete'}`}\n />\n\n <div className=\"flex flex-col\">\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n 'text-sm font-medium text-fg',\n isDone && 'line-through text-fg-muted'\n )}\n >\n {task.title}\n </span>\n {task.priority && (\n <Badge variant={priorityBadgeVariant[task.priority]} className=\"text-[10px] px-1 py-0\">\n {task.priority}\n </Badge>\n )}\n </div>\n\n {(task.description || task.dueAt) && (\n <div className=\"mt-0.5 flex items-center gap-2 text-xs text-fg-muted\">\n {task.description && <span>{task.description}</span>}\n {task.dueAt && <span>Due: {task.dueAt}</span>}\n </div>\n )}\n </div>\n </div>\n\n {onDelete && (\n <button\n type=\"button\"\n onClick={() => onDelete(task.id)}\n className=\"text-fg-muted hover:text-danger-fg text-xs p-1\"\n aria-label={`Delete task ${task.title}`}\n >\n ✕\n </button>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Button } from '../primitives/Button.js';\nimport { EmptyState } from '../primitives/EmptyState.js';\nimport { SegmentedControl } from '../primitives/Segmented.js';\nimport { TaskItem } from './TaskItem.js';\nimport type { TaskItemData } from './types.js';\n\nexport interface TaskListProps {\n tasks: TaskItemData[];\n onToggleComplete?: (id: string, completed: boolean) => void;\n onAddTask?: (title: string) => void;\n onDeleteTask?: (id: string) => void;\n className?: string;\n emptyTitle?: string;\n emptyDescription?: string;\n}\n\nexport function TaskList({\n tasks,\n onToggleComplete,\n onAddTask,\n onDeleteTask,\n className,\n emptyTitle = 'No tasks',\n emptyDescription = 'You have no tasks in this view.',\n}: TaskListProps) {\n const [filter, setFilter] = React.useState<'all' | 'active' | 'completed'>('all');\n const [newTitle, setNewTitle] = React.useState('');\n\n const filtered = tasks.filter((t) => {\n if (filter === 'active') return !t.completed;\n if (filter === 'completed') return t.completed;\n return true;\n });\n\n const handleAdd = (e: React.FormEvent) => {\n e.preventDefault();\n const trimmed = newTitle.trim();\n if (!trimmed) return;\n onAddTask?.(trimmed);\n setNewTitle('');\n };\n\n return (\n <div\n data-slot=\"task-list\"\n className={cn('yc-TaskList-root flex flex-col gap-3', className)}\n >\n <div className=\"flex items-center justify-between gap-3\">\n <SegmentedControl\n size=\"sm\"\n value={filter}\n onChange={(v) => setFilter(v as typeof filter)}\n options={[\n { value: 'all', label: 'All' },\n { value: 'active', label: 'Active' },\n { value: 'completed', label: 'Completed' },\n ]}\n />\n <span className=\"text-xs text-fg-muted\">\n {tasks.filter((t) => !t.completed).length} remaining\n </span>\n </div>\n\n {onAddTask && (\n <form onSubmit={handleAdd} className=\"flex gap-2\">\n <input\n type=\"text\"\n value={newTitle}\n onChange={(e) => setNewTitle(e.target.value)}\n placeholder=\"Add a new task...\"\n className=\"flex-1 rounded-lg border border-border bg-surface-2 p-2 text-sm text-fg placeholder:text-fg-muted focus:border-primary focus:outline-none\"\n />\n <Button type=\"submit\" variant=\"primary\" size=\"sm\">\n Add\n </Button>\n </form>\n )}\n\n {filtered.length === 0 ? (\n <EmptyState title={emptyTitle} description={emptyDescription} />\n ) : (\n <div className=\"flex flex-col gap-2\">\n {filtered.map((task) => (\n <TaskItem\n key={task.id}\n task={task}\n onToggleComplete={onToggleComplete}\n onDelete={onDeleteTask}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { Popover, PopoverTrigger, PopoverContent } from '../primitives/Popover.js';\nimport { Badge } from '../primitives/Badge.js';\nimport { Button } from '../primitives/Button.js';\nimport type { NotificationMessage, NotificationLevel } from './types.js';\n\nexport interface NotificationCenterProps {\n notifications: NotificationMessage[];\n onMarkAllRead?: () => void;\n onDismiss?: (id: string) => void;\n onSelectNotification?: (notification: NotificationMessage) => void;\n className?: string;\n}\n\nconst levelBadgeVariant: Record<NotificationLevel, 'info' | 'warn' | 'danger' | 'success'> = {\n info: 'info',\n warn: 'warn',\n danger: 'danger',\n success: 'success',\n};\n\nexport function NotificationCenter({\n notifications,\n onMarkAllRead,\n onDismiss,\n onSelectNotification,\n className,\n}: NotificationCenterProps) {\n const unreadCount = notifications.filter((n) => !n.read).length;\n\n return (\n <div\n data-slot=\"notification-center\"\n className={cn('yc-NotificationCenter-root inline-block', className)}\n >\n <Popover>\n <PopoverTrigger className=\"relative flex items-center justify-center p-2 rounded-lg border border-border bg-surface hover:bg-surface-2 transition-colors\">\n <span className=\"text-base\" role=\"img\" aria-label=\"Notifications\">\n 🔔\n </span>\n {unreadCount > 0 && (\n <span className=\"absolute -top-1 -end-1 flex h-4 w-4 items-center justify-center rounded-full bg-danger-fg text-[10px] font-bold text-white\">\n {unreadCount > 9 ? '9+' : unreadCount}\n </span>\n )}\n </PopoverTrigger>\n\n <PopoverContent align=\"end\" className=\"w-80 p-0 shadow-3\">\n <div className=\"flex items-center justify-between border-b border-border p-3\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-semibold text-sm text-fg\">Notifications</span>\n {unreadCount > 0 && <Badge variant=\"primary\">{unreadCount} new</Badge>}\n </div>\n {unreadCount > 0 && onMarkAllRead && (\n <button\n type=\"button\"\n onClick={onMarkAllRead}\n className=\"text-xs text-primary hover:underline font-medium\"\n >\n Mark all read\n </button>\n )}\n </div>\n\n <div className=\"max-h-80 overflow-y-auto divide-y divide-border\">\n {notifications.length === 0 ? (\n <div className=\"p-6 text-center text-xs text-fg-muted\">\n No notifications right now.\n </div>\n ) : (\n notifications.map((n) => (\n <div\n key={n.id}\n onClick={() => onSelectNotification?.(n)}\n data-slot=\"notification-item\"\n data-read={n.read ? 'true' : undefined}\n className={cn(\n 'flex items-start justify-between p-3 transition-colors text-start cursor-pointer',\n n.read ? 'bg-surface opacity-75' : 'bg-surface-2/60'\n )}\n >\n <div className=\"flex flex-col gap-0.5 flex-1 pe-2\">\n <div className=\"flex items-center gap-1.5\">\n {n.level && (\n <Badge variant={levelBadgeVariant[n.level]} className=\"text-[9px] px-1 py-0\">\n {n.level}\n </Badge>\n )}\n <span className=\"font-medium text-xs text-fg\">{n.title}</span>\n </div>\n {n.description && (\n <p className=\"text-[11px] text-fg-muted line-clamp-2\">{n.description}</p>\n )}\n <span className=\"text-[10px] text-fg-muted mt-1\">{n.timestamp}</span>\n </div>\n\n {onDismiss && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDismiss(n.id);\n }}\n className=\"text-fg-muted hover:text-fg text-xs p-1\"\n aria-label=\"Dismiss notification\"\n >\n ✕\n </button>\n )}\n </div>\n ))\n )}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { SlotRenderer } from '../slots/SlotRenderer.js';\nimport type { SlotContribution, SlotProps } from '../slots/types.js';\nimport type { SettingsSection } from './types.js';\n\nexport interface SettingsLayoutProps {\n sections: SettingsSection[];\n activeSectionId?: string;\n onSelectSection?: (id: string) => void;\n contributions?: SlotContribution[];\n slotProps?: SlotProps;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport function SettingsLayout({\n sections,\n activeSectionId,\n onSelectSection,\n contributions = [],\n slotProps,\n children,\n className,\n}: SettingsLayoutProps) {\n // Merge static sections with pack-contributed settings.section slots\n const mergedSections: SettingsSection[] = React.useMemo(() => {\n const list = [...sections];\n const slotSections = contributions\n .filter((c) => c.slot === 'settings.section')\n .map((c) => ({\n id: c.id,\n title: c.title,\n order: c.order ?? 50,\n slotContribution: c,\n }));\n list.push(...slotSections);\n return list.sort((a, b) => (a.order ?? 50) - (b.order ?? 50));\n }, [sections, contributions]);\n\n const [selectedId, setSelectedId] = React.useState(\n activeSectionId || (mergedSections[0]?.id ?? '')\n );\n\n const currentId = activeSectionId !== undefined ? activeSectionId : selectedId;\n const currentSection = mergedSections.find((s) => s.id === currentId) || mergedSections[0];\n\n const handleSelect = (id: string) => {\n setSelectedId(id);\n onSelectSection?.(id);\n };\n\n return (\n <div\n data-slot=\"settings-layout\"\n className={cn(\n 'yc-SettingsLayout-root flex flex-col md:flex-row gap-6 w-full max-w-6xl mx-auto p-4 md:p-6',\n className\n )}\n >\n {/* Sidebar nav */}\n <nav\n data-slot=\"nav\"\n className=\"yc-SettingsLayout-nav w-full md:w-64 shrink-0 flex flex-col gap-1\"\n aria-label=\"Settings navigation\"\n >\n <h2 className=\"text-lg font-bold text-fg px-3 pb-3\">Settings</h2>\n {mergedSections.map((sec) => {\n const isActive = sec.id === currentId;\n return (\n <button\n key={sec.id}\n type=\"button\"\n onClick={() => handleSelect(sec.id)}\n data-slot=\"nav-item\"\n data-active={isActive ? 'true' : undefined}\n className={cn(\n 'flex items-center gap-2.5 rounded-lg px-3 py-2 text-sm font-medium transition-colors text-start',\n isActive\n ? 'bg-surface-2 text-fg font-semibold shadow-1'\n : 'text-fg-muted hover:bg-surface-2/60 hover:text-fg'\n )}\n >\n {sec.icon && <span className=\"inline-flex shrink-0\">{sec.icon}</span>}\n <span className=\"truncate\">{sec.title}</span>\n </button>\n );\n })}\n </nav>\n\n {/* Content panel */}\n <main\n data-slot=\"content\"\n className=\"yc-SettingsLayout-content flex-1 rounded-xl border border-border bg-surface p-6 shadow-1\"\n >\n {currentSection && (\n <div>\n <div className=\"border-b border-border pb-4 mb-6\">\n <h3 className=\"text-xl font-bold text-fg\">{currentSection.title}</h3>\n {currentSection.description && (\n <p className=\"mt-1 text-sm text-fg-muted\">{currentSection.description}</p>\n )}\n </div>\n\n {currentSection.slotContribution && slotProps ? (\n <SlotRenderer\n contribution={currentSection.slotContribution}\n slotProps={slotProps}\n />\n ) : currentSection.component ? (\n <currentSection.component />\n ) : (\n children\n )}\n </div>\n )}\n </main>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport React, { useEffect, useState } from 'react';\nimport type { ComponentType } from 'react';\nimport type { SlotContribution, SlotProps } from './types.js';\n\nexport interface SlotRendererProps {\n contribution: SlotContribution;\n slotProps: SlotProps;\n fallback?: React.ReactNode;\n}\n\nexport const SlotRenderer: React.FC<SlotRendererProps> = ({\n contribution,\n slotProps,\n fallback = null,\n}) => {\n const [LoadedComp, setLoadedComp] = useState<ComponentType<SlotProps> | null>(() => contribution.component ?? null);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n if (contribution.component) {\n setLoadedComp(() => contribution.component ?? null);\n return;\n }\n if (contribution.load) {\n contribution\n .load()\n .then((mod) => {\n if (!cancelled) {\n setLoadedComp(() => mod.default);\n }\n })\n .catch((err) => {\n if (!cancelled) {\n setError(err instanceof Error ? err : new Error(String(err)));\n }\n });\n }\n return () => {\n cancelled = true;\n };\n }, [contribution]);\n\n if (error) {\n return (\n <div className=\"yc-SlotRenderer-error text-danger text-sm p-4\" data-slot=\"error\">\n Failed to load slot: {contribution.id}\n </div>\n );\n }\n\n if (!LoadedComp) {\n return <>{fallback}</>;\n }\n\n return (\n <div className=\"yc-SlotRenderer-root\" data-slot=\"root\" data-pack={contribution.pack} data-contribution={contribution.id}>\n <LoadedComp {...slotProps} />\n </div>\n );\n};\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { SlotRenderer } from '../slots/SlotRenderer.js';\nimport type { SlotContribution, SlotProps } from '../slots/types.js';\n\nexport interface SettingsSectionSlotRendererProps {\n contributions: SlotContribution[];\n slotProps: SlotProps;\n className?: string;\n}\n\nexport function SettingsSectionSlotRenderer({\n contributions,\n slotProps,\n className,\n}: SettingsSectionSlotRendererProps) {\n const sectionSlots = contributions.filter((c) => c.slot === 'settings.section');\n\n return (\n <div\n data-slot=\"settings-section-slot-renderer\"\n className={cn('yc-SettingsSectionSlotRenderer-root space-y-6', className)}\n >\n {sectionSlots.map((c) => (\n <div\n key={c.id}\n className=\"rounded-xl border border-border bg-surface p-6 shadow-1\"\n data-slot=\"slot-section\"\n >\n <div className=\"border-b border-border pb-3 mb-4\">\n <h3 className=\"text-base font-semibold text-fg\">{c.title}</h3>\n </div>\n <SlotRenderer contribution={c} slotProps={slotProps} />\n </div>\n ))}\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport type { SlotContribution } from '../slots/types.js';\nimport type { RailItem } from './types.js';\n\nexport interface AppRailProps {\n items: RailItem[];\n contributions?: SlotContribution[];\n activeItemId?: string;\n onSelectItem?: (item: RailItem) => void;\n brand?: React.ReactNode;\n footer?: React.ReactNode;\n collapsed?: boolean;\n className?: string;\n}\n\nexport function AppRail({\n items,\n contributions = [],\n activeItemId,\n onSelectItem,\n brand,\n footer,\n collapsed = false,\n className,\n}: AppRailProps) {\n // Merge items with sidebar.item slot contributions\n const allItems: RailItem[] = React.useMemo(() => {\n const list = [...items];\n const slotItems = contributions\n .filter((c) => c.slot === 'sidebar.item')\n .map((c) => ({\n id: c.id,\n label: c.title,\n route: c.route,\n slotContribution: c,\n }));\n list.push(...slotItems);\n return list;\n }, [items, contributions]);\n\n return (\n <aside\n data-slot=\"app-rail\"\n data-collapsed={collapsed ? 'true' : undefined}\n className={cn(\n 'yc-AppRail-root flex flex-col justify-between border-e border-border bg-surface text-fg transition-all duration-normal',\n collapsed ? 'w-16' : 'w-64',\n className\n )}\n >\n <div className=\"flex flex-col\">\n {brand && (\n <div className=\"flex items-center gap-3 border-b border-border p-4\" data-slot=\"brand\">\n {brand}\n </div>\n )}\n\n <nav className=\"flex flex-col gap-1 p-2\" aria-label=\"Main Navigation\">\n {allItems.map((item) => {\n const isActive = item.active || item.id === activeItemId;\n return (\n <button\n key={item.id}\n type=\"button\"\n onClick={() => {\n item.onClick?.();\n onSelectItem?.(item);\n }}\n data-slot=\"rail-item\"\n data-active={isActive ? 'true' : undefined}\n className={cn(\n 'flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-colors text-start',\n collapsed && 'justify-center px-2',\n isActive\n ? 'bg-surface-2 text-primary font-semibold shadow-1'\n : 'text-fg-muted hover:bg-surface-2/60 hover:text-fg'\n )}\n title={collapsed ? item.label : undefined}\n >\n {item.icon && <span className=\"inline-flex shrink-0\">{item.icon}</span>}\n {!collapsed && <span className=\"truncate flex-1\">{item.label}</span>}\n {!collapsed && item.badge !== undefined && (\n <span className=\"rounded-full bg-primary-subtle px-1.5 py-0.5 text-[10px] font-bold text-primary\">\n {item.badge}\n </span>\n )}\n </button>\n );\n })}\n </nav>\n </div>\n\n {footer && (\n <div className=\"border-t border-border p-3\" data-slot=\"footer\">\n {footer}\n </div>\n )}\n </aside>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\n\nexport interface MobileTopBarProps {\n title?: React.ReactNode;\n startSlot?: React.ReactNode;\n endSlot?: React.ReactNode;\n leftSlot?: React.ReactNode;\n rightSlot?: React.ReactNode;\n className?: string;\n}\n\nexport function MobileTopBar({\n title,\n startSlot,\n endSlot,\n leftSlot,\n rightSlot,\n className,\n}: MobileTopBarProps) {\n const leading = startSlot || leftSlot;\n const trailing = endSlot || rightSlot;\n\n return (\n <header\n data-slot=\"mobile-top-bar\"\n className={cn(\n 'yc-MobileTopBar-root flex items-center justify-between border-b border-border bg-surface px-4 py-2.5 text-fg md:hidden z-30 sticky top-0',\n className\n )}\n >\n <div className=\"flex items-center gap-2\" data-slot=\"start-slot\">\n {leading}\n </div>\n\n {title && (\n <h1 className=\"text-base font-bold text-fg truncate text-center flex-1 px-2\" data-slot=\"title\">\n {title}\n </h1>\n )}\n\n <div className=\"flex items-center gap-2\" data-slot=\"end-slot\">\n {trailing}\n </div>\n </header>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport type { RailItem } from './types.js';\n\nexport interface MobileTabBarProps {\n items: RailItem[];\n activeItemId?: string;\n onSelectItem?: (item: RailItem) => void;\n className?: string;\n}\n\nexport function MobileTabBar({\n items,\n activeItemId,\n onSelectItem,\n className,\n}: MobileTabBarProps) {\n return (\n <nav\n data-slot=\"mobile-tab-bar\"\n className={cn(\n 'yc-MobileTabBar-root fixed bottom-0 inset-x-0 z-30 flex items-center justify-around border-t border-border bg-surface px-2 py-1 md:hidden',\n className\n )}\n aria-label=\"Mobile Navigation\"\n >\n {items.map((item) => {\n const isActive = item.active || item.id === activeItemId;\n return (\n <button\n key={item.id}\n type=\"button\"\n onClick={() => {\n item.onClick?.();\n onSelectItem?.(item);\n }}\n data-slot=\"tab-item\"\n data-active={isActive ? 'true' : undefined}\n className={cn(\n 'flex flex-col items-center justify-center flex-1 py-1.5 px-1 text-[11px] font-medium transition-colors min-h-[44px]',\n isActive ? 'text-primary font-bold' : 'text-fg-muted hover:text-fg'\n )}\n >\n {item.icon && <span className=\"text-lg leading-none mb-0.5\">{item.icon}</span>}\n <span className=\"truncate max-w-[64px]\">{item.label}</span>\n </button>\n );\n })}\n </nav>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport { cn } from '../lib/cn.js';\nimport { AppRail } from './AppRail.js';\nimport { MobileTopBar } from './MobileTopBar.js';\nimport { MobileTabBar } from './MobileTabBar.js';\nimport type { SlotContribution } from '../slots/types.js';\nimport type { RailItem } from './types.js';\n\nexport interface AppLayoutProps {\n items: RailItem[];\n contributions?: SlotContribution[];\n activeItemId?: string;\n onSelectItem?: (item: RailItem) => void;\n brand?: React.ReactNode;\n railFooter?: React.ReactNode;\n mobileTopLeft?: React.ReactNode;\n mobileTopRight?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function AppLayout({\n items,\n contributions = [],\n activeItemId,\n onSelectItem,\n brand,\n railFooter,\n mobileTopLeft,\n mobileTopRight,\n children,\n className,\n}: AppLayoutProps) {\n const activeItem = items.find((i) => i.id === activeItemId) || items[0];\n\n return (\n <div\n data-slot=\"app-layout\"\n className={cn(\n 'yc-AppLayout-root flex h-screen w-screen overflow-hidden bg-bg text-fg',\n className\n )}\n >\n {/* Desktop sidebar rail */}\n <div className=\"hidden md:flex h-full shrink-0\">\n <AppRail\n items={items}\n contributions={contributions}\n activeItemId={activeItemId}\n onSelectItem={onSelectItem}\n brand={brand}\n footer={railFooter}\n />\n </div>\n\n {/* Main app canvas */}\n <div className=\"flex flex-1 flex-col h-full overflow-hidden\">\n {/* Mobile top bar */}\n <MobileTopBar\n title={activeItem?.label}\n leftSlot={mobileTopLeft}\n rightSlot={mobileTopRight}\n />\n\n {/* Scrollable content container with mobile bottom pad */}\n <main\n data-slot=\"main-content\"\n className=\"yc-AppLayout-content flex-1 overflow-y-auto pb-16 md:pb-0\"\n >\n {children}\n </main>\n\n {/* Mobile bottom tab bar */}\n <MobileTabBar\n items={items.slice(0, 5)}\n activeItemId={activeItemId}\n onSelectItem={onSelectItem}\n />\n </div>\n </div>\n );\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport type { ComponentType } from 'react';\n\nexport type SlotId =\n | 'dashboard.card'\n | 'sidebar.item'\n | 'profile.detail'\n | 'chat.messageRenderer'\n | 'chat.composerAction'\n | 'chat.beforeSend'\n | 'settings.section'\n | 'onboarding.step';\n\nexport type AudienceBand = 'adult' | 'teen' | 'child' | 'viewer';\nexport type ScopeId = string;\nexport type MessageId = string;\nexport type IconId = string;\n\nexport interface SlotProps<P = Record<string, unknown>> {\n profileId: string;\n scopes: ScopeId[];\n density?: 'compact' | 'comfortable';\n extra?: P;\n}\n\nexport interface SlotContribution<P = Record<string, unknown>> {\n id: string;\n pack: string;\n slot: SlotId;\n title: MessageId;\n icon?: IconId;\n order?: number;\n route?: string;\n requiredScopes: ScopeId[];\n audiences?: AudienceBand[];\n messageKind?: string;\n component?: ComponentType<SlotProps<P>>;\n load?: () => Promise<{ default: ComponentType<SlotProps<P>> }>;\n}\n\nexport interface PackUi {\n pack: string;\n contributions: SlotContribution[];\n messages?: Record<string, Record<string, string>>;\n}\n\nexport function definePackUi(def: {\n pack: string;\n contributions: SlotContribution[];\n messages?: Record<string, Record<string, string>>;\n}): PackUi {\n return {\n pack: def.pack,\n contributions: def.contributions,\n messages: def.messages,\n };\n}\n\nexport interface FilterSlotsOptions {\n slot?: SlotId;\n enabledPacks?: string[];\n activeScopes?: string[];\n hiddenPanels?: string[];\n audience?: AudienceBand;\n}\n\nexport function matchesScopePattern(pattern: string, target: string): boolean {\n if (pattern === '*' || pattern === target) return true;\n if (pattern.endsWith('.*')) {\n const prefix = pattern.slice(0, -2);\n return target === prefix || target.startsWith(`${prefix}.`);\n }\n return false;\n}\n\nexport function isScopeSatisfied(requiredScope: string, activeScopes: string[]): boolean {\n return activeScopes.some((active) => matchesScopePattern(active, requiredScope));\n}\n\nexport function filterSlotContributions(\n contributions: SlotContribution[],\n options: FilterSlotsOptions = {}\n): SlotContribution[] {\n const { slot, enabledPacks, activeScopes, hiddenPanels = [], audience } = options;\n\n return contributions\n .filter((c) => {\n if (slot && c.slot !== slot) return false;\n if (enabledPacks && !enabledPacks.includes(c.pack)) return false;\n if (hiddenPanels.includes(c.id)) return false;\n if (audience && c.audiences && c.audiences.length > 0 && !c.audiences.includes(audience)) {\n return false;\n }\n if (activeScopes && c.requiredScopes && c.requiredScopes.length > 0) {\n const allSatisfied = c.requiredScopes.every((req) => isScopeSatisfied(req, activeScopes));\n if (!allSatisfied) return false;\n }\n return true;\n })\n .sort((a, b) => (a.order ?? 100) - (b.order ?? 100));\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\nexport type ThemeMode = 'light' | 'dark' | 'system';\n\nexport interface ProductConfig {\n name: string;\n logo?: React.ReactNode;\n}\n\nexport interface I18nContextValue {\n locale: string;\n t: (id: string, defaultText?: string) => string;\n}\n\nexport interface UiContextValue {\n theme: ThemeMode;\n resolvedTheme: 'light' | 'dark';\n setTheme: (mode: ThemeMode) => void;\n product: ProductConfig;\n storageNamespace: string;\n i18n: I18nContextValue;\n}\n\nconst defaultI18n: I18nContextValue = {\n locale: 'en-US',\n t: (_id: string, defaultText?: string) => defaultText || _id,\n};\n\nconst UiContext = createContext<UiContextValue>({\n theme: 'system',\n resolvedTheme: 'light',\n setTheme: () => {},\n product: { name: 'Yarvelle' },\n storageNamespace: 'yarvelle',\n i18n: defaultI18n,\n});\n\nexport interface UiProviderProps {\n children: React.ReactNode;\n defaultTheme?: ThemeMode;\n product?: ProductConfig;\n storageNamespace?: string;\n locale?: string;\n messages?: Record<string, string>;\n}\n\nexport const UiProvider: React.FC<UiProviderProps> = ({\n children,\n defaultTheme = 'system',\n product = { name: 'Yarvelle' },\n storageNamespace = 'yarvelle',\n locale = 'en-US',\n messages = {},\n}) => {\n const [theme, setThemeState] = useState<ThemeMode>(defaultTheme);\n const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>('light');\n\n useEffect(() => {\n const root = document.documentElement;\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n const updateTheme = () => {\n let isDark = false;\n if (theme === 'dark') {\n isDark = true;\n } else if (theme === 'system') {\n isDark = mediaQuery.matches;\n }\n\n setResolvedTheme(isDark ? 'dark' : 'light');\n root.setAttribute('data-theme', isDark ? 'dark' : 'light');\n if (isDark) {\n root.classList.add('dark');\n } else {\n root.classList.remove('dark');\n }\n };\n\n updateTheme();\n mediaQuery.addEventListener('change', updateTheme);\n return () => mediaQuery.removeEventListener('change', updateTheme);\n }, [theme]);\n\n const t = (id: string, defaultText?: string): string => {\n if (messages[id]) {\n return messages[id];\n }\n return defaultText || id;\n };\n\n const value: UiContextValue = {\n theme,\n resolvedTheme,\n setTheme: setThemeState,\n product,\n storageNamespace,\n i18n: { locale, t },\n };\n\n return <UiContext.Provider value={value}>{children}</UiContext.Provider>;\n};\n\nexport const useUi = (): UiContextValue => useContext(UiContext);\nexport const useTheme = () => {\n const { theme, resolvedTheme, setTheme } = useUi();\n return { theme, resolvedTheme, setTheme };\n};\nexport const useProduct = () => useUi().product;\nexport const useStorageNamespace = () => useUi().storageNamespace;\nexport const useI18n = () => useUi().i18n;\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nimport * as React from 'react';\nimport type { SlotContribution, SlotProps } from '../slots/types.js';\nimport type { ProfileMember } from '../profiles/types.js';\nimport type { ChatMessage } from '../chat/types.js';\n\nexport function createMockSlotContribution(\n overrides?: Partial<SlotContribution>\n): SlotContribution {\n return {\n id: 'test-slot-1',\n pack: 'test-pack',\n slot: 'dashboard.card',\n title: 'Test Card',\n requiredScopes: ['general'],\n order: 10,\n ...overrides,\n };\n}\n\nexport function createMockProfile(\n overrides?: Partial<ProfileMember>\n): ProfileMember {\n return {\n id: 'profile-1',\n displayName: 'Primary User',\n role: 'owner',\n scopes: ['general', 'notes', 'calendar'],\n ...overrides,\n };\n}\n\nexport function createMockChatMessage(\n overrides?: Partial<ChatMessage>\n): ChatMessage {\n return {\n id: 'msg-1',\n role: 'user',\n content: 'Hello, world!',\n createdAt: '12:00 PM',\n ...overrides,\n };\n}\n","// Yarvelle Core — Domain-Neutral AI Agent Runtime & Execution Engine\n// Copyright 2026 Spectrayan (https://spectrayan.com)\n//\n// Licensed under the PolyForm Noncommercial License 1.0.0 and the\n// Yarvelle Core Additional Terms (see LICENSE and ADDITIONAL-TERMS.md).\n// Personal and household local use only. Commercial use, hosted service\n// offering, rebranding, white-labeling, and redistribution of modified\n// forks are prohibited without a written commercial license from Spectrayan.\n//\n// Required Notice: Copyright 2026 Spectrayan (https://spectrayan.com)\n\nexport function getStorageKey(namespace: string, key: string, suffix?: string): string {\n const base = `${namespace}_${key}`;\n return suffix ? `${base}_${suffix}` : base;\n}\n\nexport function getScopedItem(namespace: string, key: string, suffix?: string): string | null {\n if (typeof window === 'undefined') return null;\n try {\n return localStorage.getItem(getStorageKey(namespace, key, suffix));\n } catch {\n return null;\n }\n}\n\nexport function setScopedItem(namespace: string, key: string, value: string, suffix?: string): void {\n if (typeof window === 'undefined') return;\n try {\n localStorage.setItem(getStorageKey(namespace, key, suffix), value);\n } catch {\n // Ignore storage quota errors in sandboxed environments\n }\n}\n\nexport function removeScopedItem(namespace: string, key: string, suffix?: string): void {\n if (typeof window === 'undefined') return;\n try {\n localStorage.removeItem(getStorageKey(namespace, key, suffix));\n } catch {\n // Ignore errors\n }\n}\n"],"mappings":"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","names":["React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsx","variantStyles","React","jsx","sizeStyles","jsx","jsxs","React","jsx","React","jsx","React","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","React","jsx","jsxs","React","jsx","jsxs","variantStyles","React","React","React","jsx","jsxs","React","jsx","jsxs","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","Fragment","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","levelBadgeVariant","React","useEffect","useState","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","createContext","useContext","useEffect","useState","jsx"]}
|