@agentxjs/ui 1.7.0 → 1.8.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/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/hooks/useAgent/index.ts", "../src/hooks/useAgent/conversationReducer.ts", "../src/hooks/useAgentX.ts", "../src/hooks/useImages.ts", "../src/hooks/useIsMobile.ts", "../src/components/studio/Studio.tsx", "../src/components/container/AgentList.tsx", "../src/components/pane/NavBar.tsx", "../src/utils/utils.ts", "../src/components/layout/ActivityBar.tsx", "../src/components/pane/ListPane.tsx", "../src/components/element/ListItem.tsx", "../src/components/element/SearchInput.tsx", "../src/components/element/EmptyState.tsx", "../src/components/layout/Sidebar.tsx", "../src/components/pane/MessagePane.tsx", "../src/components/pane/InputPane.tsx", "../src/components/pane/InputToolBar.tsx", "../src/components/element/EmojiPicker.tsx", "../src/components/element/ImageAttachment.tsx", "../src/utils/eventBus.ts", "../src/utils/timeUtils.ts", "../src/components/container/Chat.tsx", "../src/components/entry/types.ts", "../src/components/entry/UserEntry.tsx", "../src/components/message/MessageAvatar.tsx", "../src/components/typography/MarkdownText.tsx", "../src/components/message/ImageBlock.tsx", "../src/components/message/FileBlock.tsx", "../src/components/message/MessageContent.tsx", "../src/components/entry/AssistantEntry.tsx", "../src/components/entry/blocks/TextBlock.tsx", "../src/components/entry/blocks/ToolBlock.tsx", "../src/components/entry/AssistantToolbar.tsx", "../src/components/entry/ErrorEntry.tsx", "../src/components/container/ChatHeader.tsx", "../src/components/element/Badge.tsx", "../src/components/element/Toast.tsx", "../src/components/studio/MobileStudio.tsx", "../src/components/mobile/MobileDrawer.tsx", "../src/components/mobile/MobileAgentList.tsx", "../src/components/mobile/MobileHeader.tsx", "../src/components/mobile/MobileMessagePane.tsx", "../src/components/mobile/MobileInputPane.tsx", "../src/components/mobile/MobileChat.tsx", "../src/components/studio/ResponsiveStudio.tsx", "../src/components/container/ToolCard.tsx", "../src/components/message/UserMessage.tsx", "../src/components/message/AssistantMessage.tsx", "../src/components/message/ToolMessage.tsx", "../src/components/message/ErrorMessage.tsx", "../src/components/layout/Header.tsx", "../src/components/layout/MainContent.tsx", "../src/components/layout/Panel.tsx", "../src/components/layout/RightSidebar.tsx", "../src/components/layout/StatusBar.tsx", "../src/components/element/ActionBar.tsx", "../src/components/element/Button.tsx", "../src/components/element/AgentLogo.tsx", "../src/components/element/AppHeader.tsx", "../src/components/element/Input.tsx", "../src/components/element/LoadingState.tsx", "../src/components/element/PageHeader.tsx", "../src/components/element/Popover.tsx", "../src/components/element/ScrollArea.tsx", "../src/components/element/TabNavigation.tsx", "../src/components/element/TimeAgo.tsx", "../src/components/element/TokenUsagePie.tsx", "../src/components/typography/DiffViewer.tsx", "../src/components/typography/JSONRenderer.tsx"],
3
+ "sources": ["../src/hooks/useAgent/index.ts", "../src/hooks/useAgent/conversationReducer.ts", "../src/hooks/useAgentX.ts", "../src/hooks/useImages.ts", "../src/hooks/useIsMobile.ts", "../src/components/studio/Studio.tsx", "../src/components/container/AgentList.tsx", "../src/components/pane/NavBar.tsx", "../src/utils/utils.ts", "../src/components/layout/ActivityBar.tsx", "../src/components/pane/ListPane.tsx", "../src/components/element/ListItem.tsx", "../src/components/element/SearchInput.tsx", "../src/components/element/EmptyState.tsx", "../src/components/layout/Sidebar.tsx", "../src/components/pane/MessagePane.tsx", "../src/components/pane/InputPane.tsx", "../src/components/pane/InputToolBar.tsx", "../src/components/element/EmojiPicker.tsx", "../src/components/element/ImageAttachment.tsx", "../src/components/ui/button.tsx", "../../../node_modules/@radix-ui/react-slot/dist/index.mjs", "../../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs", "../src/utils/eventBus.ts", "../src/utils/timeUtils.ts", "../src/components/ui/input.tsx", "../src/components/ui/badge.tsx", "../src/components/ui/dialog.tsx", "../../../node_modules/@radix-ui/react-dialog/dist/index.mjs", "../../../node_modules/@radix-ui/primitive/dist/index.mjs", "../../../node_modules/@radix-ui/react-context/dist/index.mjs", "../../../node_modules/@radix-ui/react-id/dist/index.mjs", "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs", "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs", "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs", "../../../node_modules/@radix-ui/react-primitive/dist/index.mjs", "../../../node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs", "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs", "../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs", "../../../node_modules/@radix-ui/react-focus-scope/dist/index.mjs", "../../../node_modules/@radix-ui/react-portal/dist/index.mjs", "../../../node_modules/@radix-ui/react-presence/dist/index.mjs", "../../../node_modules/@radix-ui/react-focus-guards/dist/index.mjs", "../../../node_modules/tslib/tslib.es6.mjs", "../../../node_modules/react-remove-scroll/dist/es2015/Combination.js", "../../../node_modules/react-remove-scroll/dist/es2015/UI.js", "../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js", "../../../node_modules/use-callback-ref/dist/es2015/assignRef.js", "../../../node_modules/use-callback-ref/dist/es2015/useRef.js", "../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js", "../../../node_modules/use-sidecar/dist/es2015/medium.js", "../../../node_modules/use-sidecar/dist/es2015/exports.js", "../../../node_modules/react-remove-scroll/dist/es2015/medium.js", "../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js", "../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js", "../../../node_modules/react-style-singleton/dist/es2015/hook.js", "../../../node_modules/get-nonce/dist/es2015/index.js", "../../../node_modules/react-style-singleton/dist/es2015/singleton.js", "../../../node_modules/react-style-singleton/dist/es2015/component.js", "../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js", "../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js", "../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js", "../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js", "../../../node_modules/aria-hidden/dist/es2015/index.js", "../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.mjs", "../src/components/ui/popover.tsx", "../../../node_modules/@radix-ui/react-popover/dist/index.mjs", "../../../node_modules/@radix-ui/react-popper/dist/index.mjs", "../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs", "../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs", "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs", "../../../node_modules/@radix-ui/react-arrow/dist/index.mjs", "../../../node_modules/@radix-ui/react-use-size/dist/index.mjs", "../../../node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.mjs", "../src/components/ui/scroll-area.tsx", "../../../node_modules/@radix-ui/react-scroll-area/dist/index.mjs", "../../../node_modules/@radix-ui/react-direction/dist/index.mjs", "../../../node_modules/@radix-ui/number/dist/index.mjs", "../src/components/ui/tabs.tsx", "../../../node_modules/@radix-ui/react-tabs/dist/index.mjs", "../../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs", "../../../node_modules/@radix-ui/react-collection/dist/index.mjs", "../../../node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs", "../../../node_modules/sonner/dist/index.mjs", "../src/components/ui/sonner.tsx", "../src/components/container/Chat.tsx", "../src/components/entry/types.ts", "../src/components/entry/UserEntry.tsx", "../src/components/message/MessageAvatar.tsx", "../src/components/typography/MarkdownText.tsx", "../src/components/message/ImageBlock.tsx", "../src/components/message/FileBlock.tsx", "../src/components/message/MessageContent.tsx", "../src/components/entry/AssistantEntry.tsx", "../src/components/entry/blocks/TextBlock.tsx", "../src/components/entry/blocks/ToolBlock.tsx", "../src/components/entry/AssistantToolbar.tsx", "../src/components/entry/ErrorEntry.tsx", "../src/components/container/ChatHeader.tsx", "../src/components/element/Toast.tsx", "../src/components/studio/MobileStudio.tsx", "../src/components/mobile/MobileDrawer.tsx", "../src/components/mobile/MobileAgentList.tsx", "../src/components/mobile/MobileHeader.tsx", "../src/components/mobile/MobileMessagePane.tsx", "../src/components/mobile/MobileInputPane.tsx", "../src/components/mobile/MobileChat.tsx", "../src/components/studio/ResponsiveStudio.tsx", "../src/components/container/ToolCard.tsx", "../src/components/message/UserMessage.tsx", "../src/components/message/AssistantMessage.tsx", "../src/components/message/ToolMessage.tsx", "../src/components/message/ErrorMessage.tsx", "../src/components/layout/Header.tsx", "../src/components/layout/MainContent.tsx", "../src/components/layout/Panel.tsx", "../src/components/layout/RightSidebar.tsx", "../src/components/layout/StatusBar.tsx", "../src/components/element/ActionBar.tsx", "../src/components/element/AgentLogo.tsx", "../src/components/element/AppHeader.tsx", "../src/components/element/LoadingState.tsx", "../src/components/element/PageHeader.tsx", "../src/components/element/TabNavigation.tsx", "../src/components/element/TimeAgo.tsx", "../src/components/element/TokenUsagePie.tsx", "../src/components/typography/DiffViewer.tsx", "../src/components/typography/JSONRenderer.tsx"],
4
4
  "sourcesContent": [
5
5
  "/**\n * useAgent - React hook for Agent event binding\n *\n * Conversation-first, Block-based design:\n * - Produces ConversationData[] for UI rendering\n * - AssistantConversation contains blocks (TextBlock, ToolBlock, etc.)\n * - Blocks are rendered in order\n *\n * @example\n * ```tsx\n * function ChatPage({ agentx, imageId }) {\n * const {\n * conversations,\n * streamingText,\n * currentTextBlockId,\n * status,\n * send,\n * } = useAgent(agentx, imageId);\n *\n * return (\n * <div>\n * {conversations.map(conv => {\n * switch (conv.type) {\n * case 'user':\n * return <UserEntry key={conv.id} entry={conv} />;\n * case 'assistant':\n * return (\n * <AssistantEntry\n * key={conv.id}\n * entry={conv}\n * streamingText={streamingText}\n * currentTextBlockId={currentTextBlockId}\n * />\n * );\n * case 'error':\n * return <ErrorEntry key={conv.id} entry={conv} />;\n * }\n * })}\n * </div>\n * );\n * }\n * ```\n */\n\nimport { useReducer, useCallback, useRef, useEffect } from \"react\";\nimport type { AgentX, Message, UserContentPart } from \"agentxjs\";\nimport { createLogger } from \"@agentxjs/common\";\nimport type { UserConversationData, UseAgentResult, UseAgentOptions, UIError } from \"./types\";\nimport { conversationReducer, initialConversationState } from \"./conversationReducer\";\n\nconst logger = createLogger(\"ui/useAgent\");\n\n/**\n * Generate unique ID\n */\nfunction generateId(prefix: string): string {\n return `${prefix}_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * React hook for binding to Agent events via AgentX\n */\nexport function useAgent(\n agentx: AgentX | null,\n imageId: string | null,\n options: UseAgentOptions = {}\n): UseAgentResult {\n const { onSend, onError, onStatusChange } = options;\n\n // Single reducer for all conversation state\n const [state, dispatch] = useReducer(conversationReducer, initialConversationState);\n\n // Track agent ID\n const agentIdRef = useRef<string | null>(null);\n\n // Derive isLoading from agent status\n const isLoading =\n state.agentStatus === \"thinking\" ||\n state.agentStatus === \"responding\" ||\n state.agentStatus === \"planning_tool\" ||\n state.agentStatus === \"awaiting_tool_result\";\n\n // Reset state when imageId changes\n useEffect(() => {\n dispatch({ type: \"RESET\" });\n agentIdRef.current = null;\n }, [imageId]);\n\n // Load message history\n useEffect(() => {\n if (!agentx || !imageId) return;\n\n let mounted = true;\n\n agentx\n .request(\"image_messages_request\", { imageId })\n .then((response) => {\n if (!mounted) return;\n const data = response.data as unknown as { messages: Message[] };\n if (data.messages && data.messages.length > 0) {\n dispatch({ type: \"LOAD_HISTORY\", messages: data.messages });\n logger.debug(\"Loaded messages from storage\", { imageId, count: data.messages.length });\n }\n })\n .catch((err) => {\n logger.error(\"Failed to load messages\", { imageId, error: err });\n });\n\n return () => {\n mounted = false;\n };\n }, [agentx, imageId]);\n\n // Subscribe to agent events\n useEffect(() => {\n if (!agentx || !imageId) return;\n\n const unsubscribes: Array<() => void> = [];\n\n // Helper to check if event is for this image\n const isForThisImage = (event: { context?: { imageId?: string } }): boolean => {\n return event.context?.imageId === imageId;\n };\n\n // Stream events - message_start (add messageId to conversation)\n unsubscribes.push(\n agentx.on(\"message_start\", (event) => {\n if (!isForThisImage(event)) return;\n const data = event.data as { messageId: string };\n dispatch({ type: \"ASSISTANT_CONVERSATION_MESSAGE_START\", messageId: data.messageId });\n })\n );\n\n // Stream events - text_delta (create/append to TextBlock)\n unsubscribes.push(\n agentx.on(\"text_delta\", (event) => {\n if (!isForThisImage(event)) return;\n const data = event.data as { text: string };\n dispatch({ type: \"TEXT_BLOCK_DELTA\", text: data.text });\n })\n );\n\n // State events - conversation lifecycle\n unsubscribes.push(\n agentx.on(\"conversation_start\", (event) => {\n if (!isForThisImage(event)) return;\n dispatch({ type: \"AGENT_STATUS\", status: \"thinking\" });\n dispatch({ type: \"ASSISTANT_CONVERSATION_STATUS\", status: \"processing\" });\n onStatusChange?.(\"thinking\");\n })\n );\n\n unsubscribes.push(\n agentx.on(\"conversation_thinking\", (event) => {\n if (!isForThisImage(event)) return;\n dispatch({ type: \"AGENT_STATUS\", status: \"thinking\" });\n dispatch({ type: \"ASSISTANT_CONVERSATION_STATUS\", status: \"thinking\" });\n onStatusChange?.(\"thinking\");\n })\n );\n\n unsubscribes.push(\n agentx.on(\"conversation_responding\", (event) => {\n if (!isForThisImage(event)) return;\n dispatch({ type: \"AGENT_STATUS\", status: \"responding\" });\n dispatch({ type: \"ASSISTANT_CONVERSATION_STATUS\", status: \"streaming\" });\n onStatusChange?.(\"responding\");\n })\n );\n\n unsubscribes.push(\n agentx.on(\"conversation_end\", (event) => {\n if (!isForThisImage(event)) return;\n // Finish the conversation - marks text block complete and conversation complete\n dispatch({ type: \"ASSISTANT_CONVERSATION_FINISH\" });\n dispatch({ type: \"AGENT_STATUS\", status: \"idle\" });\n onStatusChange?.(\"idle\");\n })\n );\n\n unsubscribes.push(\n agentx.on(\"tool_executing\", (event) => {\n if (!isForThisImage(event)) return;\n dispatch({ type: \"AGENT_STATUS\", status: \"planning_tool\" });\n onStatusChange?.(\"planning_tool\");\n })\n );\n\n // Stream events - tool_use_start (create planning ToolBlock)\n unsubscribes.push(\n agentx.on(\"tool_use_start\", (event) => {\n if (!isForThisImage(event)) return;\n const data = event.data as { toolCallId: string; toolName: string };\n dispatch({\n type: \"TOOL_BLOCK_PLANNING\",\n toolCallId: data.toolCallId,\n toolName: data.toolName,\n });\n })\n );\n\n // Message events - assistant_message finishes current TextBlock\n unsubscribes.push(\n agentx.on(\"assistant_message\", (event) => {\n if (!isForThisImage(event)) return;\n // Finish current text block (content was accumulated via text_delta)\n dispatch({ type: \"TEXT_BLOCK_FINISH\" });\n })\n );\n\n unsubscribes.push(\n agentx.on(\"tool_call_message\", (event) => {\n if (!isForThisImage(event)) return;\n const message = event.data as Message;\n dispatch({\n type: \"TOOL_BLOCK_ADD\",\n message: message as import(\"agentxjs\").ToolCallMessage,\n });\n })\n );\n\n unsubscribes.push(\n agentx.on(\"tool_result_message\", (event) => {\n if (!isForThisImage(event)) return;\n const message = event.data as Message;\n dispatch({\n type: \"TOOL_BLOCK_RESULT\",\n message: message as import(\"agentxjs\").ToolResultMessage,\n });\n })\n );\n\n unsubscribes.push(\n agentx.on(\"error_message\", (event) => {\n if (!isForThisImage(event)) return;\n const message = event.data as Message;\n dispatch({ type: \"ERROR_CONVERSATION_ADD\", message });\n })\n );\n\n // Error events\n unsubscribes.push(\n agentx.on(\"error_occurred\", (event) => {\n if (!isForThisImage(event)) return;\n const error = event.data as UIError;\n dispatch({ type: \"ERROR_ADD\", error });\n dispatch({ type: \"AGENT_STATUS\", status: \"error\" });\n dispatch({ type: \"USER_CONVERSATION_STATUS\", status: \"error\", errorCode: error.code });\n onError?.(error);\n onStatusChange?.(\"error\");\n })\n );\n\n logger.debug(\"Subscribed to agent events\", { imageId });\n\n return () => {\n unsubscribes.forEach((unsub) => unsub());\n logger.debug(\"Unsubscribed from agent events\", { imageId });\n };\n }, [agentx, imageId, onStatusChange, onError]);\n\n // Send message\n const send = useCallback(\n async (content: string | UserContentPart[]) => {\n if (!agentx || !imageId) return;\n\n // Clear errors\n dispatch({ type: \"ERRORS_CLEAR\" });\n onSend?.(content);\n\n // Add user conversation immediately\n const userConversation: UserConversationData = {\n type: \"user\",\n id: generateId(\"user\"),\n content: content,\n timestamp: Date.now(),\n status: \"pending\",\n };\n dispatch({ type: \"USER_CONVERSATION_ADD\", conversation: userConversation });\n\n try {\n // Send to agent\n const response = await agentx.request(\"message_send_request\", {\n imageId,\n content: content,\n });\n\n // Update agent ID\n if (response.data.agentId) {\n agentIdRef.current = response.data.agentId;\n logger.debug(\"Agent activated\", { imageId, agentId: response.data.agentId });\n }\n\n // Mark user conversation as success\n dispatch({ type: \"USER_CONVERSATION_STATUS\", status: \"success\" });\n\n // Create assistant conversation immediately (queued state)\n const assistantConversationId = generateId(\"assistant\");\n dispatch({ type: \"ASSISTANT_CONVERSATION_START\", id: assistantConversationId });\n } catch (error) {\n logger.error(\"Failed to send message\", { imageId, error });\n dispatch({ type: \"USER_CONVERSATION_STATUS\", status: \"error\", errorCode: \"SEND_FAILED\" });\n dispatch({ type: \"AGENT_STATUS\", status: \"error\" });\n onStatusChange?.(\"error\");\n }\n },\n [agentx, imageId, onSend, onStatusChange]\n );\n\n // Interrupt\n const interrupt = useCallback(() => {\n if (!agentx || !imageId) return;\n\n dispatch({ type: \"USER_CONVERSATION_STATUS\", status: \"interrupted\" });\n\n agentx.request(\"agent_interrupt_request\", { imageId }).catch((error) => {\n logger.error(\"Failed to interrupt agent\", { imageId, error });\n });\n }, [agentx, imageId]);\n\n // Clear conversations\n const clearConversations = useCallback(() => {\n dispatch({ type: \"RESET\" });\n }, []);\n\n // Clear errors\n const clearErrors = useCallback(() => {\n dispatch({ type: \"ERRORS_CLEAR\" });\n }, []);\n\n return {\n conversations: state.conversations,\n streamingText: state.streamingText,\n currentTextBlockId: state.currentTextBlockId,\n status: state.agentStatus,\n errors: state.errors,\n send,\n interrupt,\n isLoading,\n clearConversations,\n clearErrors,\n agentId: agentIdRef.current,\n };\n}\n\n// Re-export types\nexport type {\n AgentStatus,\n ConversationData,\n UserConversationData,\n AssistantConversationData,\n ErrorConversationData,\n BlockData,\n TextBlockData,\n ToolBlockData,\n UserConversationStatus,\n AssistantConversationStatus,\n UIError,\n UseAgentResult,\n UseAgentOptions,\n} from \"./types\";\n",
6
6
  "/**\n * Conversation Reducer\n *\n * Conversation-first, Block-based state management.\n * All AssistantConversation content is stored in blocks (TextBlock, ToolBlock, etc.)\n */\n\nimport type {\n Message,\n ToolCallMessage,\n ToolResultMessage,\n AssistantMessage,\n ErrorMessage,\n UserMessage,\n} from \"agentxjs\";\nimport type {\n ConversationState,\n ConversationAction,\n ConversationData,\n UserConversationData,\n AssistantConversationData,\n ErrorConversationData,\n BlockData,\n TextBlockData,\n ToolBlockData,\n} from \"./types\";\n\n/**\n * Generate unique ID\n */\nfunction generateId(prefix: string): string {\n return `${prefix}_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * Initial state\n */\nexport const initialConversationState: ConversationState = {\n conversations: [],\n conversationIds: new Set(),\n pendingToolCalls: new Map(),\n streamingConversationId: null,\n currentTextBlockId: null,\n streamingText: \"\",\n errors: [],\n agentStatus: \"idle\",\n};\n\n// ============================================================================\n// History Processing\n// ============================================================================\n\n/**\n * Convert history messages to conversations with blocks\n */\nfunction processHistoryMessages(messages: Message[]): {\n conversations: ConversationData[];\n conversationIds: Set<string>;\n pendingToolCalls: Map<string, string>;\n} {\n const conversations: ConversationData[] = [];\n const conversationIds = new Set<string>();\n const pendingToolCalls = new Map<string, string>();\n\n // First pass: collect tool results by toolCallId\n const toolResultMap = new Map<string, ToolResultMessage>();\n for (const msg of messages) {\n if (msg.subtype === \"tool-result\") {\n const toolResult = msg as ToolResultMessage;\n toolResultMap.set(toolResult.toolCallId, toolResult);\n conversationIds.add(msg.id);\n }\n }\n\n // Second pass: collect tool-calls by parentId\n const toolCallsByParent = new Map<string, ToolCallMessage[]>();\n for (const msg of messages) {\n if (msg.subtype === \"tool-call\") {\n const toolCall = msg as ToolCallMessage;\n const parentId = toolCall.parentId || \"orphan\";\n const existing = toolCallsByParent.get(parentId) || [];\n existing.push(toolCall);\n toolCallsByParent.set(parentId, existing);\n conversationIds.add(msg.id);\n }\n }\n\n // Third pass: build conversations with blocks\n let currentAssistantConversation: AssistantConversationData | null = null;\n\n for (const msg of messages) {\n if (msg.subtype === \"tool-call\" || msg.subtype === \"tool-result\") {\n continue;\n }\n\n conversationIds.add(msg.id);\n\n switch (msg.subtype) {\n case \"user\": {\n // Finalize any pending assistant conversation\n if (currentAssistantConversation) {\n conversations.push(currentAssistantConversation);\n currentAssistantConversation = null;\n }\n\n const userMsg = msg as UserMessage;\n const content =\n typeof userMsg.content === \"string\"\n ? userMsg.content\n : userMsg.content\n .filter((part) => part.type === \"text\")\n .map((part) => (part as { type: \"text\"; text: string }).text)\n .join(\"\");\n\n conversations.push({\n type: \"user\",\n id: msg.id,\n content,\n timestamp: msg.timestamp,\n status: \"success\",\n } as UserConversationData);\n break;\n }\n\n case \"assistant\": {\n const assistantMsg = msg as AssistantMessage;\n const textContent =\n typeof assistantMsg.content === \"string\"\n ? assistantMsg.content\n : assistantMsg.content\n .filter((part) => part.type === \"text\")\n .map((part) => (part as { type: \"text\"; text: string }).text)\n .join(\"\");\n\n // Create text block if there's content\n const textBlock: TextBlockData | null = textContent\n ? {\n type: \"text\",\n id: `text_${msg.id}`,\n content: textContent,\n timestamp: msg.timestamp,\n status: \"completed\",\n }\n : null;\n\n // Create tool blocks for this message\n const toolCalls = toolCallsByParent.get(msg.id) || [];\n const toolBlocks: ToolBlockData[] = toolCalls.map((tc) => {\n const result = toolResultMap.get(tc.toolCall.id);\n const hasResult = !!result;\n const isError =\n hasResult &&\n typeof result.toolResult.output === \"object\" &&\n result.toolResult.output !== null &&\n \"type\" in result.toolResult.output &&\n (result.toolResult.output as { type: string }).type === \"error-text\";\n\n return {\n type: \"tool\",\n id: tc.id,\n toolCallId: tc.toolCall.id,\n name: tc.toolCall.name,\n input: tc.toolCall.input,\n timestamp: tc.timestamp,\n status: hasResult ? (isError ? \"error\" : \"success\") : \"executing\",\n output: result?.toolResult.output,\n duration: result ? (result.timestamp - tc.timestamp) / 1000 : undefined,\n } as ToolBlockData;\n });\n\n // Combine blocks: text first, then tools\n const newBlocks: BlockData[] = [];\n if (textBlock) newBlocks.push(textBlock);\n newBlocks.push(...toolBlocks);\n\n // Accumulate into current conversation or create new one\n if (currentAssistantConversation !== null) {\n const existing: AssistantConversationData = currentAssistantConversation;\n currentAssistantConversation = {\n ...existing,\n messageIds: [...existing.messageIds, msg.id],\n blocks: [...existing.blocks, ...newBlocks],\n };\n } else {\n currentAssistantConversation = {\n type: \"assistant\",\n id: `assistant_${msg.id}`,\n messageIds: [msg.id],\n timestamp: msg.timestamp,\n status: \"completed\",\n blocks: newBlocks,\n };\n }\n break;\n }\n\n case \"error\": {\n // Finalize any pending assistant conversation\n if (currentAssistantConversation) {\n conversations.push(currentAssistantConversation);\n currentAssistantConversation = null;\n }\n\n const errorMsg = msg as ErrorMessage;\n conversations.push({\n type: \"error\",\n id: msg.id,\n content: errorMsg.content,\n timestamp: msg.timestamp,\n errorCode: errorMsg.errorCode,\n } as ErrorConversationData);\n break;\n }\n }\n }\n\n // Finalize any pending assistant conversation\n if (currentAssistantConversation) {\n conversations.push(currentAssistantConversation);\n }\n\n // Handle orphan tool-calls (no parentId)\n const orphanToolCalls = toolCallsByParent.get(\"orphan\") || [];\n if (orphanToolCalls.length > 0) {\n const blocks: ToolBlockData[] = orphanToolCalls.map((tc) => {\n const result = toolResultMap.get(tc.toolCall.id);\n const hasResult = !!result;\n const isError =\n hasResult &&\n typeof result.toolResult.output === \"object\" &&\n result.toolResult.output !== null &&\n \"type\" in result.toolResult.output &&\n (result.toolResult.output as { type: string }).type === \"error-text\";\n\n return {\n type: \"tool\",\n id: tc.id,\n toolCallId: tc.toolCall.id,\n name: tc.toolCall.name,\n input: tc.toolCall.input,\n timestamp: tc.timestamp,\n status: hasResult ? (isError ? \"error\" : \"success\") : \"executing\",\n output: result?.toolResult.output,\n duration: result ? (result.timestamp - tc.timestamp) / 1000 : undefined,\n } as ToolBlockData;\n });\n\n conversations.push({\n type: \"assistant\",\n id: `assistant_orphan_${Date.now()}`,\n messageIds: [],\n timestamp: orphanToolCalls[0].timestamp,\n status: \"completed\",\n blocks,\n } as AssistantConversationData);\n }\n\n return { conversations, conversationIds, pendingToolCalls };\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Find the index of the streaming assistant conversation\n */\nfunction findStreamingConversationIndex(state: ConversationState): number {\n if (!state.streamingConversationId) return -1;\n return state.conversations.findIndex(\n (c) => c.type === \"assistant\" && c.id === state.streamingConversationId\n );\n}\n\n/**\n * Finish current text block (set content from streamingText and mark as completed)\n */\nfunction finishCurrentTextBlock(state: ConversationState): ConversationState {\n if (!state.currentTextBlockId || !state.streamingConversationId) {\n return state;\n }\n\n const convIndex = findStreamingConversationIndex(state);\n if (convIndex === -1) return state;\n\n const conversations = [...state.conversations];\n const conv = conversations[convIndex] as AssistantConversationData;\n\n const blockIndex = conv.blocks.findIndex(\n (b) => b.type === \"text\" && b.id === state.currentTextBlockId\n );\n\n if (blockIndex === -1) return state;\n\n const textBlock = conv.blocks[blockIndex] as TextBlockData;\n const updatedBlock: TextBlockData = {\n ...textBlock,\n content: state.streamingText,\n status: \"completed\",\n };\n\n const newBlocks = [...conv.blocks];\n newBlocks[blockIndex] = updatedBlock;\n\n conversations[convIndex] = {\n ...conv,\n blocks: newBlocks,\n };\n\n return {\n ...state,\n conversations,\n currentTextBlockId: null,\n streamingText: \"\",\n };\n}\n\n// ============================================================================\n// Reducer\n// ============================================================================\n\n/**\n * Conversation reducer\n */\nexport function conversationReducer(\n state: ConversationState,\n action: ConversationAction\n): ConversationState {\n switch (action.type) {\n case \"RESET\":\n return initialConversationState;\n\n case \"LOAD_HISTORY\": {\n const { conversations, conversationIds, pendingToolCalls } = processHistoryMessages(\n action.messages\n );\n return {\n ...state,\n conversations,\n conversationIds,\n pendingToolCalls,\n streamingConversationId: null,\n currentTextBlockId: null,\n streamingText: \"\",\n };\n }\n\n // ========== User Conversation ==========\n\n case \"USER_CONVERSATION_ADD\": {\n if (state.conversationIds.has(action.conversation.id)) {\n return state;\n }\n\n const newConversationIds = new Set(state.conversationIds);\n newConversationIds.add(action.conversation.id);\n\n return {\n ...state,\n conversations: [...state.conversations, action.conversation],\n conversationIds: newConversationIds,\n };\n }\n\n case \"USER_CONVERSATION_STATUS\": {\n const conversations = [...state.conversations];\n for (let i = conversations.length - 1; i >= 0; i--) {\n const conv = conversations[i];\n if (conv.type === \"user\" && conv.status === \"pending\") {\n conversations[i] = {\n ...conv,\n status: action.status,\n errorCode: action.errorCode,\n };\n break;\n }\n }\n return { ...state, conversations };\n }\n\n // ========== Assistant Conversation ==========\n\n case \"ASSISTANT_CONVERSATION_START\": {\n if (state.conversationIds.has(action.id)) {\n return state;\n }\n\n const newConversation: AssistantConversationData = {\n type: \"assistant\",\n id: action.id,\n messageIds: [],\n timestamp: Date.now(),\n status: \"queued\",\n blocks: [],\n };\n\n const newConversationIds = new Set(state.conversationIds);\n newConversationIds.add(action.id);\n\n return {\n ...state,\n conversations: [...state.conversations, newConversation],\n conversationIds: newConversationIds,\n streamingConversationId: action.id,\n currentTextBlockId: null,\n streamingText: \"\",\n };\n }\n\n case \"ASSISTANT_CONVERSATION_STATUS\": {\n const index = findStreamingConversationIndex(state);\n if (index === -1) return state;\n\n const conversations = [...state.conversations];\n const conv = conversations[index] as AssistantConversationData;\n conversations[index] = { ...conv, status: action.status };\n\n return { ...state, conversations };\n }\n\n case \"ASSISTANT_CONVERSATION_MESSAGE_START\": {\n const index = findStreamingConversationIndex(state);\n if (index === -1) return state;\n\n const conversations = [...state.conversations];\n const conv = conversations[index] as AssistantConversationData;\n conversations[index] = {\n ...conv,\n messageIds: [...conv.messageIds, action.messageId],\n };\n\n return { ...state, conversations };\n }\n\n case \"ASSISTANT_CONVERSATION_FINISH\": {\n // First finish any current text block\n let newState = finishCurrentTextBlock(state);\n\n const index = findStreamingConversationIndex(newState);\n if (index === -1) return newState;\n\n const conversations = [...newState.conversations];\n const conv = conversations[index] as AssistantConversationData;\n\n conversations[index] = {\n ...conv,\n status: \"completed\",\n };\n\n return {\n ...newState,\n conversations,\n streamingConversationId: null,\n currentTextBlockId: null,\n streamingText: \"\",\n };\n }\n\n // ========== Text Block ==========\n\n case \"TEXT_BLOCK_DELTA\": {\n const convIndex = findStreamingConversationIndex(state);\n if (convIndex === -1) return state;\n\n // If no current text block, create one\n if (!state.currentTextBlockId) {\n const conversations = [...state.conversations];\n const conv = conversations[convIndex] as AssistantConversationData;\n\n const newTextBlock: TextBlockData = {\n type: \"text\",\n id: generateId(\"text\"),\n content: \"\",\n timestamp: Date.now(),\n status: \"streaming\",\n };\n\n conversations[convIndex] = {\n ...conv,\n blocks: [...conv.blocks, newTextBlock],\n };\n\n return {\n ...state,\n conversations,\n currentTextBlockId: newTextBlock.id,\n streamingText: action.text,\n };\n }\n\n // Append to existing streaming text\n return {\n ...state,\n streamingText: state.streamingText + action.text,\n };\n }\n\n case \"TEXT_BLOCK_FINISH\": {\n return finishCurrentTextBlock(state);\n }\n\n // ========== Tool Block ==========\n\n case \"TOOL_BLOCK_PLANNING\": {\n // First, finish any current text block\n let newState = state;\n if (state.currentTextBlockId) {\n newState = finishCurrentTextBlock(state);\n }\n\n const convIndex = findStreamingConversationIndex(newState);\n if (convIndex === -1) {\n // No streaming conversation, create one\n const newConversation: AssistantConversationData = {\n type: \"assistant\",\n id: generateId(\"assistant\"),\n messageIds: [],\n timestamp: Date.now(),\n status: \"streaming\",\n blocks: [\n {\n type: \"tool\",\n id: generateId(\"tool\"),\n toolCallId: action.toolCallId,\n name: action.toolName,\n input: {},\n timestamp: Date.now(),\n status: \"planning\",\n startTime: Date.now(),\n } as ToolBlockData,\n ],\n };\n\n const newConversationIds = new Set(newState.conversationIds);\n newConversationIds.add(newConversation.id);\n\n const newPendingToolCalls = new Map(newState.pendingToolCalls);\n newPendingToolCalls.set(action.toolCallId, newConversation.id);\n\n return {\n ...newState,\n conversations: [...newState.conversations, newConversation],\n conversationIds: newConversationIds,\n pendingToolCalls: newPendingToolCalls,\n streamingConversationId: newConversation.id,\n };\n }\n\n // Add planning block to existing streaming conversation\n const conversations = [...newState.conversations];\n const conv = conversations[convIndex] as AssistantConversationData;\n\n const newBlock: ToolBlockData = {\n type: \"tool\",\n id: generateId(\"tool\"),\n toolCallId: action.toolCallId,\n name: action.toolName,\n input: {},\n timestamp: Date.now(),\n status: \"planning\",\n startTime: Date.now(),\n };\n\n conversations[convIndex] = {\n ...conv,\n blocks: [...conv.blocks, newBlock],\n };\n\n const newPendingToolCalls = new Map(newState.pendingToolCalls);\n newPendingToolCalls.set(action.toolCallId, conv.id);\n\n return {\n ...newState,\n conversations,\n pendingToolCalls: newPendingToolCalls,\n };\n }\n\n case \"TOOL_BLOCK_ADD\": {\n const msg = action.message;\n\n // First, finish any current text block\n let newState = state;\n if (state.currentTextBlockId) {\n newState = finishCurrentTextBlock(state);\n }\n\n // Check if there's already a planning block for this toolCallId\n const parentConversationId = newState.pendingToolCalls.get(msg.toolCall.id);\n if (parentConversationId) {\n // Find the conversation and update the planning block to executing\n const parentIndex = newState.conversations.findIndex(\n (c) => c.type === \"assistant\" && c.id === parentConversationId\n );\n\n if (parentIndex !== -1) {\n const conversations = [...newState.conversations];\n const parentConv = conversations[parentIndex] as AssistantConversationData;\n\n const blockIndex = parentConv.blocks.findIndex(\n (b) => b.type === \"tool\" && (b as ToolBlockData).toolCallId === msg.toolCall.id\n );\n\n if (blockIndex !== -1) {\n // Update existing planning block to executing with full input\n const existingBlock = parentConv.blocks[blockIndex] as ToolBlockData;\n const updatedBlock: ToolBlockData = {\n ...existingBlock,\n input: msg.toolCall.input,\n status: \"executing\",\n };\n\n const newBlocks = [...parentConv.blocks];\n newBlocks[blockIndex] = updatedBlock;\n\n conversations[parentIndex] = {\n ...parentConv,\n blocks: newBlocks,\n };\n\n return {\n ...newState,\n conversations,\n };\n }\n }\n }\n\n // No planning block found, create new tool block (fallback)\n const parentMessageId = msg.parentId;\n\n // Find parent conversation by messageId\n let parentIndex = -1;\n if (parentMessageId) {\n parentIndex = newState.conversations.findIndex(\n (c) =>\n c.type === \"assistant\" &&\n (c as AssistantConversationData).messageIds.includes(parentMessageId)\n );\n }\n\n // If not found by messageId, try streaming conversation\n if (parentIndex === -1 && newState.streamingConversationId) {\n parentIndex = findStreamingConversationIndex(newState);\n }\n\n if (parentIndex === -1) {\n // No parent found, create orphan assistant conversation\n const orphanConversation: AssistantConversationData = {\n type: \"assistant\",\n id: `assistant_for_${msg.id}`,\n messageIds: parentMessageId ? [parentMessageId] : [],\n timestamp: msg.timestamp,\n status: \"streaming\",\n blocks: [\n {\n type: \"tool\",\n id: msg.id,\n toolCallId: msg.toolCall.id,\n name: msg.toolCall.name,\n input: msg.toolCall.input,\n timestamp: msg.timestamp,\n status: \"executing\",\n startTime: Date.now(),\n } as ToolBlockData,\n ],\n };\n\n const newConversationIds = new Set(newState.conversationIds);\n newConversationIds.add(orphanConversation.id);\n\n const newPendingToolCalls = new Map(newState.pendingToolCalls);\n newPendingToolCalls.set(msg.toolCall.id, orphanConversation.id);\n\n return {\n ...newState,\n conversations: [...newState.conversations, orphanConversation],\n conversationIds: newConversationIds,\n pendingToolCalls: newPendingToolCalls,\n streamingConversationId: orphanConversation.id,\n };\n }\n\n // Add block to parent conversation\n const conversations = [...newState.conversations];\n const parentConv = conversations[parentIndex] as AssistantConversationData;\n\n const newBlock: ToolBlockData = {\n type: \"tool\",\n id: msg.id,\n toolCallId: msg.toolCall.id,\n name: msg.toolCall.name,\n input: msg.toolCall.input,\n timestamp: msg.timestamp,\n status: \"executing\",\n startTime: Date.now(),\n };\n\n conversations[parentIndex] = {\n ...parentConv,\n blocks: [...parentConv.blocks, newBlock],\n };\n\n const newPendingToolCalls = new Map(newState.pendingToolCalls);\n newPendingToolCalls.set(msg.toolCall.id, parentConv.id);\n\n return {\n ...newState,\n conversations,\n pendingToolCalls: newPendingToolCalls,\n };\n }\n\n case \"TOOL_BLOCK_RESULT\": {\n const msg = action.message;\n const parentConversationId = state.pendingToolCalls.get(msg.toolCallId);\n\n if (!parentConversationId) {\n return state;\n }\n\n const parentIndex = state.conversations.findIndex(\n (c) => c.type === \"assistant\" && c.id === parentConversationId\n );\n\n if (parentIndex === -1) {\n return state;\n }\n\n const conversations = [...state.conversations];\n const parentConv = conversations[parentIndex] as AssistantConversationData;\n\n const blockIndex = parentConv.blocks.findIndex(\n (b) => b.type === \"tool\" && (b as ToolBlockData).toolCallId === msg.toolCallId\n );\n\n if (blockIndex === -1) {\n return state;\n }\n\n const block = parentConv.blocks[blockIndex] as ToolBlockData;\n const isError =\n typeof msg.toolResult.output === \"object\" &&\n msg.toolResult.output !== null &&\n \"type\" in msg.toolResult.output &&\n (msg.toolResult.output as { type: string }).type === \"error-text\";\n\n const now = Date.now();\n const duration = block.startTime ? (now - block.startTime) / 1000 : 0;\n\n const updatedBlock: ToolBlockData = {\n ...block,\n status: isError ? \"error\" : \"success\",\n output: msg.toolResult.output,\n duration,\n };\n\n const newBlocks = [...parentConv.blocks];\n newBlocks[blockIndex] = updatedBlock;\n\n conversations[parentIndex] = {\n ...parentConv,\n blocks: newBlocks,\n };\n\n const newPendingToolCalls = new Map(state.pendingToolCalls);\n newPendingToolCalls.delete(msg.toolCallId);\n\n return {\n ...state,\n conversations,\n pendingToolCalls: newPendingToolCalls,\n };\n }\n\n // ========== Error Conversation ==========\n\n case \"ERROR_CONVERSATION_ADD\": {\n const msg = action.message as ErrorMessage;\n\n if (state.conversationIds.has(msg.id)) {\n return state;\n }\n\n const newConversation: ErrorConversationData = {\n type: \"error\",\n id: msg.id,\n content: msg.content,\n timestamp: msg.timestamp,\n errorCode: msg.errorCode,\n };\n\n const newConversationIds = new Set(state.conversationIds);\n newConversationIds.add(msg.id);\n\n return {\n ...state,\n conversations: [...state.conversations, newConversation],\n conversationIds: newConversationIds,\n streamingConversationId: null,\n currentTextBlockId: null,\n streamingText: \"\",\n };\n }\n\n case \"ERROR_ADD\": {\n return {\n ...state,\n errors: [...state.errors, action.error],\n };\n }\n\n case \"ERRORS_CLEAR\": {\n return {\n ...state,\n errors: [],\n };\n }\n\n // ========== Agent Status ==========\n\n case \"AGENT_STATUS\": {\n return {\n ...state,\n agentStatus: action.status,\n };\n }\n\n default:\n return state;\n }\n}\n",
@@ -8,27 +8,92 @@
8
8
  "/**\n * useImages - React hook for Image (conversation) management\n *\n * In the Image-First model:\n * - Image is the persistent entity (conversation)\n * - Agent is a transient runtime instance\n * - Images can be online (🟢 has running Agent) or offline (⚫)\n *\n * @example\n * ```tsx\n * import { useImages } from \"@agentxjs/ui\";\n *\n * function ConversationList({ agentx }) {\n * const {\n * images,\n * isLoading,\n * refresh,\n * createImage,\n * runImage,\n * stopImage,\n * deleteImage,\n * } = useImages(agentx);\n *\n * return (\n * <div>\n * {images.map(img => (\n * <ConversationItem\n * key={img.imageId}\n * image={img}\n * online={img.online}\n * onRun={() => runImage(img.imageId)}\n * onStop={() => stopImage(img.imageId)}\n * onDelete={() => deleteImage(img.imageId)}\n * />\n * ))}\n * </div>\n * );\n * }\n * ```\n */\n\nimport { useState, useEffect, useCallback } from \"react\";\nimport type { AgentX, ImageListItem } from \"agentxjs\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"ui/useImages\");\n\n/**\n * Return type of useImages hook\n */\nexport interface UseImagesResult {\n /**\n * All images (conversations) with online status\n */\n images: ImageListItem[];\n\n /**\n * Loading state\n */\n isLoading: boolean;\n\n /**\n * Error state\n */\n error: Error | null;\n\n /**\n * Refresh images from server\n */\n refresh: () => Promise<void>;\n\n /**\n * Create a new image (conversation)\n * @returns The new image record\n */\n createImage: (config?: {\n name?: string;\n description?: string;\n systemPrompt?: string;\n }) => Promise<ImageListItem>;\n\n /**\n * Run an image - create or reuse an Agent\n * @returns The agent ID and whether it was reused\n */\n runImage: (imageId: string) => Promise<{ agentId: string; reused: boolean }>;\n\n /**\n * Stop an image - destroy the Agent but keep the Image\n */\n stopImage: (imageId: string) => Promise<void>;\n\n /**\n * Update image metadata\n */\n updateImage: (\n imageId: string,\n updates: { name?: string; description?: string }\n ) => Promise<ImageListItem>;\n\n /**\n * Delete an image\n */\n deleteImage: (imageId: string) => Promise<void>;\n}\n\n/**\n * Options for useImages hook\n */\nexport interface UseImagesOptions {\n /**\n * Container ID to filter images (optional)\n */\n containerId?: string;\n\n /**\n * Auto-load images on mount\n * @default true\n */\n autoLoad?: boolean;\n\n /**\n * Callback when an image is run\n */\n onRun?: (imageId: string, agentId: string, reused: boolean) => void;\n\n /**\n * Callback when images list changes\n */\n onImagesChange?: (images: ImageListItem[]) => void;\n}\n\n/**\n * React hook for Image management\n *\n * @param agentx - AgentX instance\n * @param options - Optional configuration\n * @returns Image state and operations\n */\nexport function useImages(agentx: AgentX | null, options: UseImagesOptions = {}): UseImagesResult {\n const { containerId, autoLoad = true, onRun, onImagesChange } = options;\n\n // State\n const [images, setImages] = useState<ImageListItem[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n // Load images from server\n const loadImages = useCallback(async () => {\n if (!agentx) return;\n\n setIsLoading(true);\n setError(null);\n\n try {\n const response = await agentx.request(\"image_list_request\", { containerId });\n if (response.data.error) {\n throw new Error(response.data.error);\n }\n const records = response.data.records ?? [];\n setImages(records);\n onImagesChange?.(records);\n logger.debug(\"Loaded images\", { count: records.length, containerId });\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n logger.error(\"Failed to load images\", { error });\n } finally {\n setIsLoading(false);\n }\n }, [agentx, containerId, onImagesChange]);\n\n // Auto-load on mount\n useEffect(() => {\n if (autoLoad && agentx) {\n loadImages();\n }\n }, [autoLoad, agentx, loadImages]);\n\n // Create a new image\n const createImage = useCallback(\n async (\n config: { name?: string; description?: string; systemPrompt?: string } = {}\n ): Promise<ImageListItem> => {\n if (!agentx) {\n throw new Error(\"AgentX not available\");\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // Use default container if not specified\n const targetContainerId = containerId ?? \"default\";\n const response = await agentx.request(\"image_create_request\", {\n containerId: targetContainerId,\n config,\n });\n if (response.data.error) {\n throw new Error(response.data.error);\n }\n\n const record = response.data.record as ImageListItem;\n if (!record) {\n throw new Error(\"No image record returned\");\n }\n\n // Add to list (record already has online: false from server)\n setImages((prev) => [record, ...prev]);\n onImagesChange?.([record, ...images]);\n logger.info(\"Created image\", { imageId: record.imageId, name: record.name });\n\n return record;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n logger.error(\"Failed to create image\", { error });\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [agentx, containerId, images, onImagesChange]\n );\n\n // Run an image\n const runImage = useCallback(\n async (imageId: string): Promise<{ agentId: string; reused: boolean }> => {\n if (!agentx) {\n throw new Error(\"AgentX not available\");\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const response = await agentx.request(\"image_run_request\", { imageId });\n if (response.data.error) {\n throw new Error(response.data.error);\n }\n\n const { agentId, reused } = response.data;\n if (!agentId) {\n throw new Error(\"Invalid run response\");\n }\n\n // Update image in list to show online\n setImages((prev) =>\n prev.map((img) => (img.imageId === imageId ? { ...img, online: true, agentId } : img))\n );\n\n logger.info(\"Image running\", { imageId, agentId, reused });\n onRun?.(imageId, agentId, reused);\n\n return { agentId, reused };\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n logger.error(\"Failed to run image\", { imageId, error });\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [agentx, onRun]\n );\n\n // Stop an image\n const stopImage = useCallback(\n async (imageId: string): Promise<void> => {\n if (!agentx) {\n throw new Error(\"AgentX not available\");\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const response = await agentx.request(\"image_stop_request\", { imageId });\n if (response.data.error) {\n throw new Error(response.data.error);\n }\n\n // Update image in list to show offline\n setImages((prev) =>\n prev.map((img) =>\n img.imageId === imageId ? { ...img, online: false, agentId: undefined } : img\n )\n );\n\n logger.info(\"Image stopped\", { imageId });\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n logger.error(\"Failed to stop image\", { imageId, error });\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [agentx]\n );\n\n // Update image metadata\n const updateImage = useCallback(\n async (\n imageId: string,\n updates: { name?: string; description?: string }\n ): Promise<ImageListItem> => {\n if (!agentx) {\n throw new Error(\"AgentX not available\");\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const response = await agentx.request(\"image_update_request\", { imageId, updates });\n if (response.data.error) {\n throw new Error(response.data.error);\n }\n\n const record = response.data.record as ImageListItem;\n if (!record) {\n throw new Error(\"No image record returned\");\n }\n\n // Update in list\n setImages((prev) => prev.map((img) => (img.imageId === imageId ? record : img)));\n\n logger.info(\"Image updated\", { imageId, updates });\n return record;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n logger.error(\"Failed to update image\", { imageId, error });\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [agentx]\n );\n\n // Delete an image\n const deleteImage = useCallback(\n async (imageId: string): Promise<void> => {\n if (!agentx) {\n throw new Error(\"AgentX not available\");\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const response = await agentx.request(\"image_delete_request\", { imageId });\n if (response.data.error) {\n throw new Error(response.data.error);\n }\n\n const newImages = images.filter((img) => img.imageId !== imageId);\n setImages(newImages);\n onImagesChange?.(newImages);\n logger.info(\"Deleted image\", { imageId });\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n logger.error(\"Failed to delete image\", { imageId, error });\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [agentx, images, onImagesChange]\n );\n\n return {\n images,\n isLoading,\n error,\n refresh: loadImages,\n createImage,\n runImage,\n stopImage,\n updateImage,\n deleteImage,\n };\n}\n",
9
9
  "/**\n * useIsMobile - Hook to detect mobile viewport\n *\n * Uses matchMedia for efficient viewport detection with automatic updates.\n *\n * @example\n * ```tsx\n * const isMobile = useIsMobile(); // default 768px\n * const isMobile = useIsMobile(640); // custom breakpoint\n * ```\n */\n\nimport * as React from \"react\";\n\n/**\n * Default mobile breakpoint (768px)\n */\nexport const MOBILE_BREAKPOINT = 768;\n\n/**\n * Hook to detect if viewport is mobile-sized\n *\n * @param breakpoint - Width threshold in pixels (default: 768)\n * @returns true if viewport width is less than breakpoint\n */\nexport function useIsMobile(breakpoint: number = MOBILE_BREAKPOINT): boolean {\n const [isMobile, setIsMobile] = React.useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return window.innerWidth < breakpoint;\n });\n\n React.useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const mediaQuery = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);\n\n // Set initial value\n setIsMobile(mediaQuery.matches);\n\n // Listen for changes\n const handleChange = () => {\n setIsMobile(mediaQuery.matches);\n };\n\n mediaQuery.addEventListener(\"change\", handleChange);\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, [breakpoint]);\n\n return isMobile;\n}\n",
10
10
  "/**\n * Studio - Complete chat workspace\n *\n * Top-level component that provides a ready-to-use chat interface.\n * Combines AgentList and Chat with coordinated state management.\n *\n * In the Image-First model:\n * - Image is the persistent conversation entity\n * - Agent is auto-activated on first message\n * - Messages are auto-saved (no manual save needed)\n *\n * Layout (WeChat style):\n * ```\n * ┌──────────────┬─────────────────────────────────────┐\n * │ │ │\n * │ AgentList │ Chat │\n * │ (sidebar) │ │\n * │ │ ┌─────────────────────────────────┐│\n * │ [Images] │ │ MessagePane ││\n * │ 🟢 Online │ └─────────────────────────────────┘│\n * │ ⚫ Offline │ ┌─────────────────────────────────┐│\n * │ [+ New] │ │ InputPane ││\n * │ │ └─────────────────────────────────┘│\n * └──────────────┴─────────────────────────────────────┘\n * ```\n *\n * @example\n * ```tsx\n * import { Studio, useAgentX } from \"@agentxjs/ui\";\n *\n * function App() {\n * const agentx = useAgentX(\"ws://localhost:5200\");\n * return <Studio agentx={agentx} />;\n * }\n * ```\n */\n\nimport * as React from \"react\";\nimport type { AgentX } from \"agentxjs\";\nimport { ChevronsRight } from \"lucide-react\";\nimport { AgentList } from \"~/components/container/AgentList\";\nimport { Chat } from \"~/components/container/Chat\";\nimport { ToastContainer, useToast } from \"~/components/element/Toast\";\nimport { useImages } from \"~/hooks\";\nimport { cn } from \"~/utils\";\n\nexport interface StudioProps {\n /**\n * AgentX instance\n */\n agentx: AgentX | null;\n /**\n * Container ID for user isolation\n * Each user should have their own container to isolate their conversations\n * @default \"default\"\n */\n containerId?: string;\n /**\n * Width of the sidebar (AgentList)\n * @default 280\n */\n sidebarWidth?: number;\n /**\n * Enable sidebar collapse functionality\n * @default true\n */\n collapsible?: boolean;\n /**\n * Enable search in AgentList\n * @default true\n */\n searchable?: boolean;\n /**\n * Show save button in Chat (not needed in Image-First model)\n * @default false\n */\n showSaveButton?: boolean;\n /**\n * Input height ratio for Chat\n * @default 0.25\n */\n inputHeightRatio?: number;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Studio component\n */\nexport function Studio({\n agentx,\n containerId = \"default\",\n sidebarWidth = 280,\n collapsible = true,\n searchable = true,\n showSaveButton = false, // Default to false in Image-First model\n inputHeightRatio = 0.25,\n className,\n}: StudioProps): React.ReactElement {\n // State - only track imageId now (agentId is managed by useAgent)\n const [currentImageId, setCurrentImageId] = React.useState<string | null>(null);\n const [currentImageName, setCurrentImageName] = React.useState<string | undefined>(undefined);\n const [sidebarCollapsed, setSidebarCollapsed] = React.useState(false);\n\n // Toast state\n const { toasts, showToast, dismissToast } = useToast();\n\n // Handle sidebar collapse toggle\n const handleCollapse = React.useCallback(() => {\n setSidebarCollapsed(true);\n }, []);\n\n const handleExpand = React.useCallback(() => {\n setSidebarCollapsed(false);\n }, []);\n\n // Images hook - pass containerId for user isolation\n const { images } = useImages(agentx, { containerId, autoLoad: true });\n\n // Handle selecting a conversation\n const handleSelect = React.useCallback(\n (imageId: string, _agentId: string | null) => {\n setCurrentImageId(imageId);\n\n // Set name from image\n const image = images.find((img) => img.imageId === imageId);\n setCurrentImageName(image?.name || \"Conversation\");\n },\n [images]\n );\n\n // Handle creating a new conversation\n const handleNew = React.useCallback((imageId: string) => {\n setCurrentImageId(imageId);\n setCurrentImageName(\"New Conversation\");\n }, []);\n\n // Listen to agentx system_error events\n React.useEffect(() => {\n if (!agentx) return;\n\n // Subscribe to system_error events\n const unsubscribe = agentx.on(\"system_error\", (event) => {\n const errorData = event.data as {\n message: string;\n severity?: \"info\" | \"warn\" | \"error\" | \"fatal\";\n };\n showToast(errorData.message, errorData.severity || \"error\");\n });\n\n return () => {\n unsubscribe();\n };\n }, [agentx, showToast]);\n\n return (\n <div className={cn(\"flex h-full bg-background\", className)}>\n {/* Sidebar - AgentList or Collapsed Button */}\n {sidebarCollapsed ? (\n /* Collapsed state - show expand button */\n <div className=\"flex-shrink-0 border-r border-border bg-muted/30\">\n <button\n className=\"w-10 h-10 flex items-center justify-center hover:bg-accent transition-colors\"\n onClick={handleExpand}\n title=\"Expand sidebar\"\n >\n <ChevronsRight className=\"w-4 h-4 text-muted-foreground\" />\n </button>\n </div>\n ) : (\n /* Expanded state - show AgentList */\n <div\n style={{ width: sidebarWidth }}\n className=\"flex-shrink-0 border-r border-border transition-all duration-200\"\n >\n <AgentList\n agentx={agentx}\n containerId={containerId}\n selectedId={currentImageId}\n onSelect={handleSelect}\n onNew={handleNew}\n searchable={searchable}\n showCollapseButton={collapsible}\n onCollapse={handleCollapse}\n />\n </div>\n )}\n\n {/* Main area - Chat */}\n <div className=\"flex-1 min-w-0\">\n <Chat\n key={currentImageId || \"empty\"}\n agentx={agentx}\n imageId={currentImageId}\n agentName={currentImageName}\n showSaveButton={showSaveButton}\n inputHeightRatio={inputHeightRatio}\n />\n </div>\n\n {/* Toast notifications */}\n <ToastContainer toasts={toasts} onDismiss={dismissToast} position=\"top-right\" />\n </div>\n );\n}\n",
11
- "/**\n * AgentList - Conversation list component\n *\n * Business component that combines ListPane with useImages hook.\n * Displays conversations (Images) with online/offline status.\n *\n * In the Image-First model:\n * - Image is the persistent conversation entity\n * - Agent is a transient runtime instance\n * - Online (🟢) = Agent is running for this Image\n * - Offline (⚫) = Image exists but no Agent running\n *\n * @example\n * ```tsx\n * <AgentList\n * agentx={agentx}\n * selectedId={currentImageId}\n * onSelect={(imageId, agentId) => {\n * setCurrentImageId(imageId);\n * }}\n * onNew={(imageId) => setCurrentImageId(imageId)}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport type { AgentX } from \"agentxjs\";\nimport { MessageSquare, Bot } from \"lucide-react\";\nimport { ListPane, type ListPaneItem } from \"~/components/pane\";\nimport { useImages } from \"~/hooks\";\nimport { cn } from \"~/utils\";\n\nexport interface AgentListProps {\n /**\n * AgentX instance\n */\n agentx: AgentX | null;\n /**\n * Container ID for creating new images\n * @default \"default\"\n */\n containerId?: string;\n /**\n * Currently selected image ID\n */\n selectedId?: string | null;\n /**\n * Callback when a conversation is selected\n * @param imageId - The selected image ID\n * @param agentId - The agent ID (if online)\n */\n onSelect?: (imageId: string, agentId: string | null) => void;\n /**\n * Callback when a new conversation is created\n * @param imageId - The new image ID\n */\n onNew?: (imageId: string) => void;\n /**\n * Title displayed in header\n * @default \"Conversations\"\n */\n title?: string;\n /**\n * Enable search functionality\n * @default true\n */\n searchable?: boolean;\n /**\n * Show collapse button in header\n * @default false\n */\n showCollapseButton?: boolean;\n /**\n * Callback when collapse button is clicked\n */\n onCollapse?: () => void;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * AgentList component\n */\nexport function AgentList({\n agentx,\n containerId = \"default\",\n selectedId,\n onSelect,\n onNew,\n title = \"Conversations\",\n searchable = true,\n showCollapseButton = false,\n onCollapse,\n className,\n}: AgentListProps): React.ReactElement {\n const { images, isLoading, createImage, runImage, deleteImage, refresh } = useImages(agentx, {\n containerId,\n });\n\n // Map images to ListPaneItem[]\n const items: ListPaneItem[] = React.useMemo(() => {\n return images.map((img) => ({\n id: img.imageId,\n title: img.name || \"Untitled\",\n leading: <Bot className=\"w-4 h-4 text-muted-foreground\" />,\n trailing: (\n <span\n className={cn(\"w-2 h-2 rounded-full\", img.online ? \"bg-green-500\" : \"bg-gray-400\")}\n title={img.online ? \"Online\" : \"Offline\"}\n />\n ),\n timestamp: img.updatedAt || img.createdAt,\n }));\n }, [images]);\n\n // Handle selecting an image\n const handleSelect = React.useCallback(\n async (imageId: string) => {\n if (!agentx) return;\n try {\n // Find the image\n const image = images.find((img) => img.imageId === imageId);\n if (!image) return;\n\n // If offline, run the image first\n if (!image.online) {\n const { agentId } = await runImage(imageId);\n onSelect?.(imageId, agentId);\n } else {\n // Already online, just select\n onSelect?.(imageId, image.agentId ?? null);\n }\n } catch (error) {\n console.error(\"Failed to select conversation:\", error);\n }\n },\n [agentx, images, runImage, onSelect]\n );\n\n // Handle creating a new conversation\n const handleNew = React.useCallback(async () => {\n console.log(\"[AgentList] handleNew called, agentx:\", !!agentx);\n if (!agentx) {\n console.warn(\"[AgentList] agentx is null, cannot create new conversation\");\n return;\n }\n try {\n console.log(\"[AgentList] Creating new image with containerId:\", containerId);\n // Create a new image\n const image = await createImage({ name: \"New Conversation\" });\n console.log(\"[AgentList] New image created:\", image.imageId);\n\n // Refresh list\n await refresh();\n onNew?.(image.imageId);\n } catch (error) {\n console.error(\"Failed to create new conversation:\", error);\n }\n }, [agentx, containerId, createImage, refresh, onNew]);\n\n // Handle deleting an image\n const handleDelete = React.useCallback(\n async (imageId: string) => {\n try {\n await deleteImage(imageId);\n } catch (error) {\n console.error(\"Failed to delete conversation:\", error);\n }\n },\n [deleteImage]\n );\n\n return (\n <ListPane\n title={title}\n items={items}\n selectedId={selectedId}\n isLoading={isLoading}\n searchable={searchable}\n searchPlaceholder=\"Search conversations...\"\n showNewButton\n newButtonLabel=\"New conversation\"\n showCollapseButton={showCollapseButton}\n onCollapse={onCollapse}\n emptyState={{\n icon: <MessageSquare className=\"w-6 h-6\" />,\n title: \"No conversations yet\",\n description: \"Start a new conversation to begin\",\n actionLabel: \"New conversation\",\n }}\n onSelect={handleSelect}\n onDelete={handleDelete}\n onNew={handleNew}\n className={className}\n />\n );\n}\n",
11
+ "/**\n * AgentList - Conversation list component\n *\n * Business component that combines ListPane with useImages hook.\n * Displays conversations (Images) with online/offline status.\n *\n * In the Image-First model:\n * - Image is the persistent conversation entity\n * - Agent is a transient runtime instance\n * - Online (🟢) = Agent is running for this Image\n * - Offline (⚫) = Image exists but no Agent running\n *\n * @example\n * ```tsx\n * <AgentList\n * agentx={agentx}\n * selectedId={currentImageId}\n * onSelect={(imageId, agentId) => {\n * setCurrentImageId(imageId);\n * }}\n * onNew={(imageId) => setCurrentImageId(imageId)}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport type { AgentX } from \"agentxjs\";\nimport { MessageSquare, Bot } from \"lucide-react\";\nimport { ListPane, type ListPaneItem } from \"~/components/pane\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogFooter,\n Button,\n Input,\n} from \"~/components/ui\";\nimport { useImages } from \"~/hooks\";\nimport { cn } from \"~/utils\";\n\nexport interface AgentListProps {\n /**\n * AgentX instance\n */\n agentx: AgentX | null;\n /**\n * Container ID for creating new images\n * @default \"default\"\n */\n containerId?: string;\n /**\n * Currently selected image ID\n */\n selectedId?: string | null;\n /**\n * Callback when a conversation is selected\n * @param imageId - The selected image ID\n * @param agentId - The agent ID (if online)\n */\n onSelect?: (imageId: string, agentId: string | null) => void;\n /**\n * Callback when a new conversation is created\n * @param imageId - The new image ID\n */\n onNew?: (imageId: string) => void;\n /**\n * Title displayed in header\n * @default \"Conversations\"\n */\n title?: string;\n /**\n * Enable search functionality\n * @default true\n */\n searchable?: boolean;\n /**\n * Show collapse button in header\n * @default false\n */\n showCollapseButton?: boolean;\n /**\n * Callback when collapse button is clicked\n */\n onCollapse?: () => void;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * AgentList component\n */\nexport function AgentList({\n agentx,\n containerId = \"default\",\n selectedId,\n onSelect,\n onNew,\n title = \"Conversations\",\n searchable = true,\n showCollapseButton = false,\n onCollapse,\n className,\n}: AgentListProps): React.ReactElement {\n const { images, isLoading, createImage, runImage, deleteImage, updateImage, refresh } = useImages(\n agentx,\n {\n containerId,\n }\n );\n\n // Rename dialog state\n const [renameDialogOpen, setRenameDialogOpen] = React.useState(false);\n const [editingImageId, setEditingImageId] = React.useState<string | null>(null);\n const [editingName, setEditingName] = React.useState(\"\");\n const [isRenaming, setIsRenaming] = React.useState(false);\n\n // Map images to ListPaneItem[]\n const items: ListPaneItem[] = React.useMemo(() => {\n return images.map((img) => ({\n id: img.imageId,\n title: img.name || \"Untitled\",\n leading: <Bot className=\"w-4 h-4 text-muted-foreground\" />,\n trailing: (\n <span\n className={cn(\"w-2 h-2 rounded-full\", img.online ? \"bg-green-500\" : \"bg-gray-400\")}\n title={img.online ? \"Online\" : \"Offline\"}\n />\n ),\n timestamp: img.updatedAt || img.createdAt,\n }));\n }, [images]);\n\n // Handle selecting an image\n const handleSelect = React.useCallback(\n async (imageId: string) => {\n if (!agentx) return;\n try {\n // Find the image\n const image = images.find((img) => img.imageId === imageId);\n if (!image) return;\n\n // If offline, run the image first\n if (!image.online) {\n const { agentId } = await runImage(imageId);\n onSelect?.(imageId, agentId);\n } else {\n // Already online, just select\n onSelect?.(imageId, image.agentId ?? null);\n }\n } catch (error) {\n console.error(\"Failed to select conversation:\", error);\n }\n },\n [agentx, images, runImage, onSelect]\n );\n\n // Handle creating a new conversation\n const handleNew = React.useCallback(async () => {\n console.log(\"[AgentList] handleNew called, agentx:\", !!agentx);\n if (!agentx) {\n console.warn(\"[AgentList] agentx is null, cannot create new conversation\");\n return;\n }\n try {\n console.log(\"[AgentList] Creating new image with containerId:\", containerId);\n // Create a new image\n const image = await createImage({ name: \"New Conversation\" });\n console.log(\"[AgentList] New image created:\", image.imageId);\n\n // Refresh list\n await refresh();\n onNew?.(image.imageId);\n } catch (error) {\n console.error(\"Failed to create new conversation:\", error);\n }\n }, [agentx, containerId, createImage, refresh, onNew]);\n\n // Handle deleting an image\n const handleDelete = React.useCallback(\n async (imageId: string) => {\n try {\n await deleteImage(imageId);\n } catch (error) {\n console.error(\"Failed to delete conversation:\", error);\n }\n },\n [deleteImage]\n );\n\n // Handle edit button click - open rename dialog\n const handleEdit = React.useCallback((imageId: string, currentTitle: string) => {\n setEditingImageId(imageId);\n setEditingName(currentTitle);\n setRenameDialogOpen(true);\n }, []);\n\n // Handle rename confirmation\n const handleRename = React.useCallback(async () => {\n if (!editingImageId || !editingName.trim()) return;\n\n setIsRenaming(true);\n try {\n await updateImage(editingImageId, { name: editingName.trim() });\n setRenameDialogOpen(false);\n setEditingImageId(null);\n setEditingName(\"\");\n } catch (error) {\n console.error(\"Failed to rename conversation:\", error);\n } finally {\n setIsRenaming(false);\n }\n }, [editingImageId, editingName, updateImage]);\n\n // Handle dialog close\n const handleDialogClose = React.useCallback((open: boolean) => {\n if (!open) {\n setRenameDialogOpen(false);\n setEditingImageId(null);\n setEditingName(\"\");\n }\n }, []);\n\n // Handle Enter key in input\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !isRenaming) {\n handleRename();\n }\n },\n [handleRename, isRenaming]\n );\n\n return (\n <>\n <ListPane\n title={title}\n items={items}\n selectedId={selectedId}\n isLoading={isLoading}\n searchable={searchable}\n searchPlaceholder=\"Search conversations...\"\n showNewButton\n newButtonLabel=\"New conversation\"\n showCollapseButton={showCollapseButton}\n onCollapse={onCollapse}\n emptyState={{\n icon: <MessageSquare className=\"w-6 h-6\" />,\n title: \"No conversations yet\",\n description: \"Start a new conversation to begin\",\n actionLabel: \"New conversation\",\n }}\n onSelect={handleSelect}\n onEdit={handleEdit}\n onDelete={handleDelete}\n onNew={handleNew}\n className={className}\n />\n\n {/* Rename Dialog */}\n <Dialog open={renameDialogOpen} onOpenChange={handleDialogClose}>\n <DialogContent className=\"sm:max-w-[425px]\">\n <DialogHeader>\n <DialogTitle>Rename Conversation</DialogTitle>\n </DialogHeader>\n <div className=\"py-4\">\n <Input\n value={editingName}\n onChange={(e) => setEditingName(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder=\"Enter conversation name\"\n autoFocus\n />\n </div>\n <DialogFooter>\n <Button\n variant=\"outline\"\n onClick={() => handleDialogClose(false)}\n disabled={isRenaming}\n >\n Cancel\n </Button>\n <Button onClick={handleRename} disabled={isRenaming || !editingName.trim()}>\n {isRenaming ? \"Saving...\" : \"Save\"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n",
12
12
  "/**\n * NavBar - Icon navigation bar component\n *\n * A simplified wrapper around ActivityBar for common navigation patterns.\n * Pure UI component with no business logic.\n *\n * @example\n * ```tsx\n * <NavBar\n * items={[\n * { id: 'chat', icon: <MessageSquare />, label: 'Chat' },\n * { id: 'settings', icon: <Settings />, label: 'Settings' },\n * ]}\n * activeId=\"chat\"\n * onSelect={(id) => setActiveId(id)}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\nimport { ActivityBar, type ActivityBarItem } from \"~/components/layout/ActivityBar\";\n\n/**\n * Item data for NavBar\n */\nexport interface NavBarItem {\n /**\n * Unique identifier\n */\n id: string;\n /**\n * Icon element\n */\n icon: React.ReactNode;\n /**\n * Tooltip label\n */\n label: string;\n /**\n * Optional badge (notification count, etc.)\n */\n badge?: string | number;\n}\n\nexport interface NavBarProps {\n /**\n * Main navigation items (top section)\n */\n items: NavBarItem[];\n /**\n * Bottom navigation items (settings, account, etc.)\n */\n bottomItems?: NavBarItem[];\n /**\n * Currently active item ID\n */\n activeId?: string;\n /**\n * Callback when an item is selected\n */\n onSelect?: (id: string) => void;\n /**\n * Position of the nav bar\n * @default 'left'\n */\n position?: \"left\" | \"right\";\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * NavBar component\n */\nexport const NavBar: React.ForwardRefExoticComponent<\n NavBarProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, NavBarProps>(\n ({ items, bottomItems, activeId, onSelect, position = \"left\", className }, ref) => {\n // Convert NavBarItem to ActivityBarItem (they're compatible)\n const activityItems: ActivityBarItem[] = items;\n const activityBottomItems: ActivityBarItem[] | undefined = bottomItems;\n\n return (\n <ActivityBar\n ref={ref}\n items={activityItems}\n bottomItems={activityBottomItems}\n activeId={activeId}\n onItemClick={onSelect}\n position={position}\n className={cn(className)}\n />\n );\n }\n);\n\nNavBar.displayName = \"NavBar\";\n",
13
13
  "import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge Tailwind CSS classes with conflict resolution\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n\n/**\n * Decode HTML entities in text\n */\nexport function decodeHtmlEntities(text: string): string {\n if (!text) return text;\n return text\n .replace(/&lt;/g, \"<\")\n .replace(/&gt;/g, \">\")\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&amp;/g, \"&\");\n}\n\n/**\n * Format \"Agent AI usage limit reached|<epoch>\" into a local time string\n */\nexport function formatUsageLimitText(text: string): string {\n try {\n if (typeof text !== \"string\") return text;\n return text.replace(/Agent AI usage limit reached\\|(\\d{10,13})/g, (match, ts) => {\n let timestampMs = parseInt(ts, 10);\n if (!Number.isFinite(timestampMs)) return match;\n if (timestampMs < 1e12) timestampMs *= 1000;\n const reset = new Date(timestampMs);\n\n const timeStr = new Intl.DateTimeFormat(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n }).format(reset);\n\n const offsetMinutesLocal = -reset.getTimezoneOffset();\n const sign = offsetMinutesLocal >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(offsetMinutesLocal);\n const offH = Math.floor(abs / 60);\n const offM = abs % 60;\n const gmt = `GMT${sign}${offH}${offM ? \":\" + String(offM).padStart(2, \"0\") : \"\"}`;\n const tzId = Intl.DateTimeFormat().resolvedOptions().timeZone || \"\";\n const cityRaw = tzId.split(\"/\").pop() || \"\";\n const city = cityRaw\n .replace(/_/g, \" \")\n .toLowerCase()\n .replace(/\\b\\w/g, (c) => c.toUpperCase());\n const tzHuman = city ? `${gmt} (${city})` : gmt;\n\n const months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n const dateReadable = `${reset.getDate()} ${months[reset.getMonth()]} ${reset.getFullYear()}`;\n\n return `Agent usage limit reached. Your limit will reset at **${timeStr} ${tzHuman}** - ${dateReadable}`;\n });\n } catch {\n return text;\n }\n}\n",
14
14
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface ActivityBarItem {\n /**\n * Unique identifier\n */\n id: string;\n /**\n * Icon element\n */\n icon: React.ReactNode;\n /**\n * Tooltip text\n */\n label: string;\n /**\n * Badge content (e.g., notification count)\n */\n badge?: string | number;\n}\n\nexport interface ActivityBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Top activity bar items (main features)\n */\n items: ActivityBarItem[];\n /**\n * Bottom activity bar items (settings, account, etc.)\n */\n bottomItems?: ActivityBarItem[];\n /**\n * Currently active item ID\n */\n activeId?: string;\n /**\n * Callback when item is clicked\n */\n onItemClick?: (id: string) => void;\n /**\n * Position of the activity bar\n * @default 'left'\n */\n position?: \"left\" | \"right\";\n}\n\n/**\n * ActivityBar - VSCode-style activity bar with icon buttons\n *\n * A vertical bar with icon buttons, typically used for switching between\n * different views/panels. Inspired by VSCode's activity bar.\n *\n * @example\n * ```tsx\n * <ActivityBar\n * items={[\n * { id: 'explorer', icon: <FileIcon />, label: 'Explorer' },\n * { id: 'search', icon: <SearchIcon />, label: 'Search' },\n * { id: 'git', icon: <GitIcon />, label: 'Git', badge: 3 },\n * ]}\n * activeId=\"explorer\"\n * onItemClick={setActiveView}\n * />\n * ```\n */\nexport const ActivityBar: React.ForwardRefExoticComponent<\n ActivityBarProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, ActivityBarProps>(\n ({ items, bottomItems, activeId, onItemClick, position = \"left\", className, ...props }, ref) => {\n const renderItem = (item: ActivityBarItem) => {\n const isActive = item.id === activeId;\n\n return (\n <button\n key={item.id}\n type=\"button\"\n onClick={() => onItemClick?.(item.id)}\n className={cn(\n \"relative w-12 h-12 flex items-center justify-center\",\n \"text-muted-foreground hover:text-foreground\",\n \"transition-colors duration-200\",\n \"group\",\n isActive && [\n \"text-foreground\",\n position === \"left\" ? \"border-l-2 border-primary\" : \"border-r-2 border-primary\",\n ]\n )}\n title={item.label}\n aria-label={item.label}\n aria-current={isActive ? \"page\" : undefined}\n >\n {/* Icon */}\n <div className=\"w-6 h-6 flex items-center justify-center\">{item.icon}</div>\n\n {/* Badge */}\n {item.badge && (\n <span\n className={cn(\n \"absolute top-1 right-1\",\n \"min-w-[16px] h-4 px-1\",\n \"flex items-center justify-center\",\n \"text-[10px] font-semibold\",\n \"bg-primary text-primary-foreground\",\n \"rounded-full\"\n )}\n >\n {item.badge}\n </span>\n )}\n\n {/* Hover indicator */}\n <div\n className={cn(\n \"absolute inset-0 bg-accent/0 group-hover:bg-accent/50\",\n \"transition-colors duration-200\"\n )}\n />\n </button>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col bg-muted/30 border-border\",\n position === \"left\" ? \"border-r\" : \"border-l\",\n className\n )}\n {...props}\n >\n {/* Top Activity Items */}\n <div className=\"flex-1 flex flex-col\">{items.map(renderItem)}</div>\n\n {/* Bottom Activity Items */}\n {bottomItems && bottomItems.length > 0 && (\n <div className=\"flex flex-col border-t border-border\">{bottomItems.map(renderItem)}</div>\n )}\n </div>\n );\n }\n);\n\nActivityBar.displayName = \"ActivityBar\";\n",
15
- "/**\n * ListPane - Generic list panel component\n *\n * A pure UI component for displaying lists with:\n * - Header with title and action button\n * - Optional search input\n * - Scrollable list of items\n * - Empty state handling\n * - Loading state\n *\n * This component knows nothing about business concepts like\n * \"Agent\", \"Image\", \"Session\", etc. It only deals with generic\n * \"items\" that have id, title, subtitle, etc.\n *\n * @example\n * ```tsx\n * <ListPane\n * title=\"Conversations\"\n * items={items}\n * selectedId={selectedId}\n * onSelect={(id) => setSelectedId(id)}\n * onDelete={(id) => handleDelete(id)}\n * onNew={() => handleNew()}\n * searchable\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { Plus, Trash2, ChevronsLeft } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\nimport { ListItem } from \"~/components/element/ListItem\";\nimport { SearchInput } from \"~/components/element/SearchInput\";\nimport { EmptyState } from \"~/components/element/EmptyState\";\nimport { Sidebar } from \"~/components/layout/Sidebar\";\n\n/**\n * Item data for ListPane\n */\nexport interface ListPaneItem {\n /**\n * Unique identifier\n */\n id: string;\n /**\n * Main title\n */\n title: string;\n /**\n * Optional subtitle or description\n */\n subtitle?: React.ReactNode;\n /**\n * Optional leading content (icon, avatar, etc.)\n */\n leading?: React.ReactNode;\n /**\n * Optional trailing content (badge, status, etc.)\n */\n trailing?: React.ReactNode;\n /**\n * Whether this item is currently active\n */\n active?: boolean;\n /**\n * Timestamp for display\n */\n timestamp?: number;\n}\n\nexport interface ListPaneProps {\n /**\n * Panel title displayed in header\n */\n title?: string;\n /**\n * List of items to display\n */\n items: ListPaneItem[];\n /**\n * Currently selected item ID\n */\n selectedId?: string | null;\n /**\n * Whether the list is loading\n */\n isLoading?: boolean;\n /**\n * Enable search functionality\n */\n searchable?: boolean;\n /**\n * Placeholder for search input\n */\n searchPlaceholder?: string;\n /**\n * Show new item button\n */\n showNewButton?: boolean;\n /**\n * Label for new button (tooltip)\n */\n newButtonLabel?: string;\n /**\n * Show collapse button in header\n * @default false\n */\n showCollapseButton?: boolean;\n /**\n * Callback when collapse button is clicked\n */\n onCollapse?: () => void;\n /**\n * Empty state configuration\n */\n emptyState?: {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n actionLabel?: string;\n };\n /**\n * Callback when an item is selected\n */\n onSelect?: (id: string) => void;\n /**\n * Callback when delete is clicked on an item\n */\n onDelete?: (id: string) => void;\n /**\n * Callback when new button is clicked\n */\n onNew?: () => void;\n /**\n * Custom render function for item actions\n */\n renderItemActions?: (item: ListPaneItem) => React.ReactNode;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Format timestamp to relative time string\n */\nfunction formatRelativeTime(timestamp: number): string {\n const now = Date.now();\n const diff = now - timestamp;\n const seconds = Math.floor(diff / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (days > 0) return `${days}d ago`;\n if (hours > 0) return `${hours}h ago`;\n if (minutes > 0) return `${minutes}m ago`;\n return \"Just now\";\n}\n\n/**\n * ListPane component\n */\nexport const ListPane: React.ForwardRefExoticComponent<\n ListPaneProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, ListPaneProps>(\n (\n {\n title = \"Items\",\n items,\n selectedId,\n isLoading = false,\n searchable = false,\n searchPlaceholder = \"Search...\",\n showNewButton = true,\n newButtonLabel = \"New item\",\n showCollapseButton = false,\n onCollapse,\n emptyState = {\n title: \"No items\",\n description: \"Get started by creating a new item\",\n actionLabel: \"Create new\",\n },\n onSelect,\n onDelete,\n onNew,\n renderItemActions,\n className,\n },\n ref\n ) => {\n const [searchQuery, setSearchQuery] = React.useState(\"\");\n\n // Filter items by search query\n const filteredItems = React.useMemo(() => {\n if (!searchQuery.trim()) return items;\n const query = searchQuery.toLowerCase();\n return items.filter(\n (item) =>\n item.title.toLowerCase().includes(query) ||\n (typeof item.subtitle === \"string\" && item.subtitle.toLowerCase().includes(query))\n );\n }, [items, searchQuery]);\n\n // Default delete action renderer\n const defaultRenderActions = (item: ListPaneItem) => {\n if (!onDelete) return null;\n return (\n <button\n className=\"w-6 h-6 bg-red-50 hover:bg-red-100 dark:bg-red-900/20 dark:hover:bg-red-900/40 rounded flex items-center justify-center transition-colors\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete(item.id);\n }}\n title=\"Delete\"\n >\n <Trash2 className=\"w-3 h-3 text-red-600 dark:text-red-400\" />\n </button>\n );\n };\n\n const actionsRenderer = renderItemActions || defaultRenderActions;\n\n return (\n <Sidebar ref={ref} className={cn(\"flex flex-col\", className)}>\n {/* Header */}\n <div className=\"flex items-center gap-2 px-3 py-2 border-b border-border\">\n {showCollapseButton && onCollapse && (\n <button\n className=\"p-1 rounded hover:bg-accent transition-colors\"\n onClick={onCollapse}\n title=\"Collapse sidebar\"\n >\n <ChevronsLeft className=\"w-4 h-4 text-muted-foreground\" />\n </button>\n )}\n <h2 className=\"text-sm font-semibold text-foreground flex-1\">{title}</h2>\n </div>\n\n {/* Search + New Button */}\n {(searchable || showNewButton) && (\n <div className=\"flex items-center gap-2 px-3 py-2 border-b border-border\">\n {searchable && (\n <div className=\"flex-1\">\n <SearchInput\n value={searchQuery}\n onChange={setSearchQuery}\n placeholder={searchPlaceholder}\n />\n </div>\n )}\n {showNewButton && onNew && (\n <button\n className=\"p-1.5 rounded hover:bg-accent transition-colors flex-shrink-0\"\n onClick={onNew}\n title={newButtonLabel}\n >\n <Plus className=\"w-5 h-5 text-muted-foreground\" />\n </button>\n )}\n </div>\n )}\n\n {/* List content */}\n <div className=\"flex-1 overflow-y-auto p-2\">\n {isLoading ? (\n <div className=\"flex items-center justify-center py-8\">\n <div className=\"animate-spin rounded-full h-6 w-6 border-b-2 border-primary\" />\n </div>\n ) : filteredItems.length === 0 ? (\n <EmptyState\n icon={emptyState.icon}\n title={emptyState.title}\n description={emptyState.description}\n action={\n emptyState.actionLabel && onNew ? (\n <button\n className=\"text-sm text-primary hover:text-primary/80 transition-colors\"\n onClick={onNew}\n >\n {emptyState.actionLabel}\n </button>\n ) : undefined\n }\n spacing=\"sm\"\n />\n ) : (\n <div className=\"space-y-1\">\n {filteredItems.map((item) => (\n <ListItem\n key={item.id}\n leading={item.leading}\n title={item.title}\n subtitle={\n item.subtitle ||\n (item.timestamp ? (\n <span className=\"text-xs text-muted-foreground\">\n {formatRelativeTime(item.timestamp)}\n </span>\n ) : undefined)\n }\n trailing={item.trailing}\n actions={actionsRenderer(item)}\n selected={selectedId === item.id}\n active={item.active}\n showActiveIndicator={item.active}\n onClick={() => onSelect?.(item.id)}\n />\n ))}\n </div>\n )}\n </div>\n </Sidebar>\n );\n }\n);\n\nListPane.displayName = \"ListPane\";\n",
15
+ "/**\n * ListPane - Generic list panel component\n *\n * A pure UI component for displaying lists with:\n * - Header with title and action button\n * - Optional search input\n * - Scrollable list of items\n * - Empty state handling\n * - Loading state\n *\n * This component knows nothing about business concepts like\n * \"Agent\", \"Image\", \"Session\", etc. It only deals with generic\n * \"items\" that have id, title, subtitle, etc.\n *\n * @example\n * ```tsx\n * <ListPane\n * title=\"Conversations\"\n * items={items}\n * selectedId={selectedId}\n * onSelect={(id) => setSelectedId(id)}\n * onDelete={(id) => handleDelete(id)}\n * onNew={() => handleNew()}\n * searchable\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { Plus, Trash2, Pencil, ChevronsLeft } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\nimport { ListItem } from \"~/components/element/ListItem\";\nimport { SearchInput } from \"~/components/element/SearchInput\";\nimport { EmptyState } from \"~/components/element/EmptyState\";\nimport { Sidebar } from \"~/components/layout/Sidebar\";\n\n/**\n * Item data for ListPane\n */\nexport interface ListPaneItem {\n /**\n * Unique identifier\n */\n id: string;\n /**\n * Main title\n */\n title: string;\n /**\n * Optional subtitle or description\n */\n subtitle?: React.ReactNode;\n /**\n * Optional leading content (icon, avatar, etc.)\n */\n leading?: React.ReactNode;\n /**\n * Optional trailing content (badge, status, etc.)\n */\n trailing?: React.ReactNode;\n /**\n * Whether this item is currently active\n */\n active?: boolean;\n /**\n * Timestamp for display\n */\n timestamp?: number;\n}\n\nexport interface ListPaneProps {\n /**\n * Panel title displayed in header\n */\n title?: string;\n /**\n * List of items to display\n */\n items: ListPaneItem[];\n /**\n * Currently selected item ID\n */\n selectedId?: string | null;\n /**\n * Whether the list is loading\n */\n isLoading?: boolean;\n /**\n * Enable search functionality\n */\n searchable?: boolean;\n /**\n * Placeholder for search input\n */\n searchPlaceholder?: string;\n /**\n * Show new item button\n */\n showNewButton?: boolean;\n /**\n * Label for new button (tooltip)\n */\n newButtonLabel?: string;\n /**\n * Show collapse button in header\n * @default false\n */\n showCollapseButton?: boolean;\n /**\n * Callback when collapse button is clicked\n */\n onCollapse?: () => void;\n /**\n * Empty state configuration\n */\n emptyState?: {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n actionLabel?: string;\n };\n /**\n * Callback when an item is selected\n */\n onSelect?: (id: string) => void;\n /**\n * Callback when edit is clicked on an item\n */\n onEdit?: (id: string, currentTitle: string) => void;\n /**\n * Callback when delete is clicked on an item\n */\n onDelete?: (id: string) => void;\n /**\n * Callback when new button is clicked\n */\n onNew?: () => void;\n /**\n * Custom render function for item actions\n */\n renderItemActions?: (item: ListPaneItem) => React.ReactNode;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Format timestamp to relative time string\n */\nfunction formatRelativeTime(timestamp: number): string {\n const now = Date.now();\n const diff = now - timestamp;\n const seconds = Math.floor(diff / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (days > 0) return `${days}d ago`;\n if (hours > 0) return `${hours}h ago`;\n if (minutes > 0) return `${minutes}m ago`;\n return \"Just now\";\n}\n\n/**\n * ListPane component\n */\nexport const ListPane: React.ForwardRefExoticComponent<\n ListPaneProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, ListPaneProps>(\n (\n {\n title = \"Items\",\n items,\n selectedId,\n isLoading = false,\n searchable = false,\n searchPlaceholder = \"Search...\",\n showNewButton = true,\n newButtonLabel = \"New item\",\n showCollapseButton = false,\n onCollapse,\n emptyState = {\n title: \"No items\",\n description: \"Get started by creating a new item\",\n actionLabel: \"Create new\",\n },\n onSelect,\n onEdit,\n onDelete,\n onNew,\n renderItemActions,\n className,\n },\n ref\n ) => {\n const [searchQuery, setSearchQuery] = React.useState(\"\");\n\n // Filter items by search query\n const filteredItems = React.useMemo(() => {\n if (!searchQuery.trim()) return items;\n const query = searchQuery.toLowerCase();\n return items.filter(\n (item) =>\n item.title.toLowerCase().includes(query) ||\n (typeof item.subtitle === \"string\" && item.subtitle.toLowerCase().includes(query))\n );\n }, [items, searchQuery]);\n\n // Default action buttons renderer\n const defaultRenderActions = (item: ListPaneItem) => {\n if (!onEdit && !onDelete) return null;\n return (\n <div className=\"flex items-center gap-1\">\n {onEdit && (\n <button\n className=\"w-6 h-6 bg-blue-50 hover:bg-blue-100 dark:bg-blue-900/20 dark:hover:bg-blue-900/40 rounded flex items-center justify-center transition-colors\"\n onClick={(e) => {\n e.stopPropagation();\n onEdit(item.id, item.title);\n }}\n title=\"Rename\"\n >\n <Pencil className=\"w-3 h-3 text-blue-600 dark:text-blue-400\" />\n </button>\n )}\n {onDelete && (\n <button\n className=\"w-6 h-6 bg-red-50 hover:bg-red-100 dark:bg-red-900/20 dark:hover:bg-red-900/40 rounded flex items-center justify-center transition-colors\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete(item.id);\n }}\n title=\"Delete\"\n >\n <Trash2 className=\"w-3 h-3 text-red-600 dark:text-red-400\" />\n </button>\n )}\n </div>\n );\n };\n\n const actionsRenderer = renderItemActions || defaultRenderActions;\n\n return (\n <Sidebar ref={ref} className={cn(\"flex flex-col\", className)}>\n {/* Header */}\n <div className=\"flex items-center gap-2 px-3 py-2 border-b border-border\">\n {showCollapseButton && onCollapse && (\n <button\n className=\"p-1 rounded hover:bg-accent transition-colors\"\n onClick={onCollapse}\n title=\"Collapse sidebar\"\n >\n <ChevronsLeft className=\"w-4 h-4 text-muted-foreground\" />\n </button>\n )}\n <h2 className=\"text-sm font-semibold text-foreground flex-1\">{title}</h2>\n </div>\n\n {/* Search + New Button */}\n {(searchable || showNewButton) && (\n <div className=\"flex items-center gap-2 px-3 py-2 border-b border-border\">\n {searchable && (\n <div className=\"flex-1\">\n <SearchInput\n value={searchQuery}\n onChange={setSearchQuery}\n placeholder={searchPlaceholder}\n />\n </div>\n )}\n {showNewButton && onNew && (\n <button\n className=\"p-1.5 rounded hover:bg-accent transition-colors flex-shrink-0\"\n onClick={onNew}\n title={newButtonLabel}\n >\n <Plus className=\"w-5 h-5 text-muted-foreground\" />\n </button>\n )}\n </div>\n )}\n\n {/* List content */}\n <div className=\"flex-1 overflow-y-auto p-2\">\n {isLoading ? (\n <div className=\"flex items-center justify-center py-8\">\n <div className=\"animate-spin rounded-full h-6 w-6 border-b-2 border-primary\" />\n </div>\n ) : filteredItems.length === 0 ? (\n <EmptyState\n icon={emptyState.icon}\n title={emptyState.title}\n description={emptyState.description}\n action={\n emptyState.actionLabel && onNew ? (\n <button\n className=\"text-sm text-primary hover:text-primary/80 transition-colors\"\n onClick={onNew}\n >\n {emptyState.actionLabel}\n </button>\n ) : undefined\n }\n spacing=\"sm\"\n />\n ) : (\n <div className=\"space-y-1\">\n {filteredItems.map((item) => (\n <ListItem\n key={item.id}\n leading={item.leading}\n title={item.title}\n subtitle={\n item.subtitle ||\n (item.timestamp ? (\n <span className=\"text-xs text-muted-foreground\">\n {formatRelativeTime(item.timestamp)}\n </span>\n ) : undefined)\n }\n trailing={item.trailing}\n actions={actionsRenderer(item)}\n selected={selectedId === item.id}\n active={item.active}\n showActiveIndicator={item.active}\n onClick={() => onSelect?.(item.id)}\n />\n ))}\n </div>\n )}\n </div>\n </Sidebar>\n );\n }\n);\n\nListPane.displayName = \"ListPane\";\n",
16
16
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface ListItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /**\n * Whether the item is selected\n */\n selected?: boolean;\n /**\n * Whether the item is active (within last 10 minutes, etc.)\n */\n active?: boolean;\n /**\n * Whether to show active indicator dot\n */\n showActiveIndicator?: boolean;\n /**\n * Left side content (icon, avatar, logo, etc.)\n */\n leading?: React.ReactNode;\n /**\n * Main title content\n */\n title: React.ReactNode;\n /**\n * Subtitle content (timestamp, description, etc.)\n */\n subtitle?: React.ReactNode;\n /**\n * Trailing content (badge, actions, etc.)\n */\n trailing?: React.ReactNode;\n /**\n * Action buttons (show on hover for desktop)\n */\n actions?: React.ReactNode;\n /**\n * Layout variant\n */\n variant?: \"default\" | \"compact\";\n /**\n * Whether in mobile mode\n */\n isMobile?: boolean;\n /**\n * Click handler\n */\n onClick?: () => void;\n}\n\n/**\n * ListItem - Generic list item component with flexible slots\n *\n * A highly flexible list item component for building various list UIs.\n * Supports leading icons, titles, subtitles, trailing content, and hover actions.\n * Can be used for sessions, messages, users, files, etc.\n *\n * @example\n * ```tsx\n * // Session item\n * <ListItem\n * leading={<AgentLogo />}\n * title=\"Project Planning Session\"\n * subtitle={\n * <div className=\"flex items-center gap-1\">\n * <Clock className=\"w-3 h-3\" />\n * <TimeAgo date={session.lastActivity} />\n * </div>\n * }\n * trailing={<Badge>5</Badge>}\n * actions={\n * <button><Trash2 className=\"w-3 h-3\" /></button>\n * }\n * selected={isSelected}\n * onClick={handleSelect}\n * />\n *\n * // User item\n * <ListItem\n * leading={<Avatar src={user.avatar} />}\n * title={user.name}\n * subtitle={user.email}\n * trailing={<Badge variant=\"success\">Online</Badge>}\n * />\n *\n * // File item\n * <ListItem\n * leading={<File className=\"w-5 h-5\" />}\n * title=\"document.pdf\"\n * subtitle=\"2.4 MB\"\n * actions={\n * <>\n * <button><Download /></button>\n * <button><Trash2 /></button>\n * </>\n * }\n * />\n *\n * // With active indicator\n * <ListItem\n * active\n * showActiveIndicator\n * leading={<MessageSquare />}\n * title=\"Live Session\"\n * subtitle=\"Active now\"\n * />\n * ```\n */\nexport const ListItem: React.ForwardRefExoticComponent<\n ListItemProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, ListItemProps>(\n (\n {\n selected = false,\n active = false,\n showActiveIndicator = false,\n leading,\n title,\n subtitle,\n trailing,\n actions,\n variant = \"default\",\n isMobile = false,\n onClick,\n className,\n ...props\n },\n ref\n ) => {\n const isCompact = variant === \"compact\";\n const isClickable = !!onClick;\n\n return (\n <div ref={ref} className={cn(\"group relative\", className)} {...props}>\n {/* Active indicator dot */}\n {showActiveIndicator && active && (\n <div className=\"absolute left-2 top-1/2 transform -translate-y-1/2 z-10\">\n <div className=\"w-2 h-2 bg-green-500 rounded-full animate-pulse\" />\n </div>\n )}\n\n {/* Mobile layout */}\n {isMobile && (\n <div\n className={cn(\n \"p-3 mx-3 my-1 rounded-lg bg-card border border-border/50 active:scale-[0.98] transition-all duration-150\",\n selected && \"bg-primary/5 border-primary/20\",\n active && !selected && \"border-green-500/30 bg-green-50/5 dark:bg-green-900/5\",\n isClickable && \"cursor-pointer\"\n )}\n onClick={onClick}\n >\n <div className=\"flex items-center gap-2\">\n {/* Leading */}\n {leading && <div className=\"flex-shrink-0\">{leading}</div>}\n\n {/* Content */}\n <div className=\"min-w-0 flex-1\">\n <div\n className={cn(\n \"font-medium truncate text-foreground\",\n isCompact ? \"text-xs\" : \"text-xs\"\n )}\n >\n {title}\n </div>\n {subtitle && <div className=\"flex items-center gap-1 mt-0.5\">{subtitle}</div>}\n </div>\n\n {/* Trailing */}\n {trailing && <div className=\"flex-shrink-0\">{trailing}</div>}\n\n {/* Actions (always visible on mobile) */}\n {actions && <div className=\"flex items-center gap-1 ml-1\">{actions}</div>}\n </div>\n </div>\n )}\n\n {/* Desktop layout */}\n {!isMobile && (\n <>\n <div\n className={cn(\n \"w-full p-2 rounded-md transition-colors duration-200\",\n isClickable && \"cursor-pointer hover:bg-accent/50\",\n selected && \"bg-blue-50 dark:bg-blue-900/30\",\n !isClickable && !selected && \"pointer-events-none\"\n )}\n onClick={onClick}\n >\n <div className=\"flex items-start gap-2 min-w-0 w-full\">\n {/* Leading */}\n {leading && <div className=\"flex-shrink-0 mt-0.5\">{leading}</div>}\n\n {/* Content */}\n <div className=\"min-w-0 flex-1\">\n <div\n className={cn(\n \"font-medium truncate text-foreground\",\n isCompact ? \"text-xs\" : \"text-xs\"\n )}\n >\n {title}\n </div>\n {subtitle && <div className=\"flex items-center gap-1 mt-0.5\">{subtitle}</div>}\n </div>\n\n {/* Trailing */}\n {trailing && <div className=\"flex-shrink-0 ml-auto\">{trailing}</div>}\n </div>\n </div>\n\n {/* Desktop hover actions */}\n {actions && (\n <div className=\"absolute right-2 top-1/2 transform -translate-y-1/2 flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-all duration-200\">\n {actions}\n </div>\n )}\n </>\n )}\n </div>\n );\n }\n);\n\nListItem.displayName = \"ListItem\";\n",
17
17
  "import * as React from \"react\";\nimport { Search, X } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface SearchInputProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"onChange\"\n> {\n /**\n * Current search value (controlled)\n */\n value: string;\n /**\n * Callback when value changes\n */\n onChange: (value: string) => void;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Show search icon on the left\n * @default true\n */\n showSearchIcon?: boolean;\n /**\n * Show clear button when input has value\n * @default true\n */\n showClearButton?: boolean;\n /**\n * Custom search icon element\n */\n searchIcon?: React.ReactNode;\n /**\n * Custom clear icon element\n */\n clearIcon?: React.ReactNode;\n}\n\n/**\n * SearchInput - Input field with search icon and clear button\n *\n * A specialized input component for search functionality with built-in\n * search icon and clear button. Fully controlled with onChange callback.\n *\n * @example\n * ```tsx\n * // Basic usage\n * const [search, setSearch] = useState(\"\");\n * <SearchInput\n * value={search}\n * onChange={setSearch}\n * placeholder=\"Search sessions...\"\n * />\n *\n * // With custom clear handler\n * <SearchInput\n * value={searchFilter}\n * onChange={setSearchFilter}\n * onClear={() => {\n * setSearchFilter(\"\");\n * resetResults();\n * }}\n * />\n *\n * // Without search icon\n * <SearchInput\n * value={query}\n * onChange={setQuery}\n * showSearchIcon={false}\n * />\n *\n * // Custom styling\n * <SearchInput\n * value={search}\n * onChange={setSearch}\n * className=\"bg-muted/50 focus:bg-background\"\n * />\n * ```\n */\nexport const SearchInput: React.ForwardRefExoticComponent<\n SearchInputProps & React.RefAttributes<HTMLInputElement>\n> = React.forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n value,\n onChange,\n onClear,\n showSearchIcon = true,\n showClearButton = true,\n searchIcon,\n clearIcon,\n placeholder = \"Search...\",\n className,\n ...props\n },\n ref\n ) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.target.value);\n };\n\n const handleClear = () => {\n if (onClear) {\n onClear();\n } else {\n onChange(\"\");\n }\n };\n\n const hasValue = value && value.length > 0;\n\n return (\n <div className=\"relative\">\n {/* Search Icon */}\n {showSearchIcon && (\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground pointer-events-none\">\n {searchIcon || <Search className=\"w-4 h-4\" />}\n </div>\n )}\n\n {/* Input Field */}\n <input\n ref={ref}\n type=\"text\"\n value={value}\n onChange={handleChange}\n placeholder={placeholder}\n className={cn(\n \"w-full h-9 rounded-md border border-input bg-background px-3 py-2 text-sm\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-0\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"transition-colors\",\n showSearchIcon && \"pl-9\",\n hasValue && showClearButton && \"pr-9\",\n className\n )}\n {...props}\n />\n\n {/* Clear Button */}\n {hasValue && showClearButton && (\n <button\n type=\"button\"\n onClick={handleClear}\n className={cn(\n \"absolute right-2 top-1/2 transform -translate-y-1/2\",\n \"p-1 rounded hover:bg-accent transition-colors\",\n \"text-muted-foreground hover:text-foreground\"\n )}\n aria-label=\"Clear search\"\n >\n {clearIcon || <X className=\"w-3 h-3\" />}\n </button>\n )}\n </div>\n );\n }\n);\n\nSearchInput.displayName = \"SearchInput\";\n",
18
18
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Icon element to display\n */\n icon?: React.ReactNode;\n /**\n * Title text\n */\n title: string;\n /**\n * Description text\n */\n description?: string;\n /**\n * Action button or element\n */\n action?: React.ReactNode;\n /**\n * Vertical spacing size\n */\n spacing?: \"sm\" | \"md\" | \"lg\";\n}\n\n/**\n * EmptyState - Display empty state with icon, title, description, and optional action\n *\n * A flexible component for showing empty states in lists, tables, search results, etc.\n * Supports custom icons, descriptions, and action buttons.\n *\n * @example\n * ```tsx\n * // Basic empty state\n * <EmptyState\n * icon={<MessageSquare className=\"w-6 h-6\" />}\n * title=\"No sessions found\"\n * description=\"Create a new session to get started\"\n * />\n *\n * // With action button\n * <EmptyState\n * icon={<Inbox className=\"w-6 h-6\" />}\n * title=\"No messages\"\n * description=\"Your inbox is empty\"\n * action={<Button>Compose Message</Button>}\n * />\n *\n * // Search results empty state\n * <EmptyState\n * icon={<Search className=\"w-6 h-6\" />}\n * title=\"No matching results\"\n * description=\"Try adjusting your search term\"\n * spacing=\"sm\"\n * />\n * ```\n */\nexport const EmptyState: React.ForwardRefExoticComponent<\n EmptyStateProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ icon, title, description, action, spacing = \"md\", className, ...props }, ref) => {\n const spacingClasses = {\n sm: \"py-8\",\n md: \"py-12\",\n lg: \"py-16\",\n };\n\n const iconSpacingClasses = {\n sm: \"mb-3\",\n md: \"mb-4\",\n lg: \"mb-6\",\n };\n\n const titleSpacingClasses = {\n sm: \"mb-1\",\n md: \"mb-2\",\n lg: \"mb-3\",\n };\n\n const actionSpacingClasses = {\n sm: \"mt-3\",\n md: \"mt-4\",\n lg: \"mt-6\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"text-center px-4\", spacingClasses[spacing], className)}\n {...props}\n >\n {icon && (\n <div\n className={cn(\n \"w-12 h-12 bg-muted rounded-lg flex items-center justify-center mx-auto text-muted-foreground\",\n iconSpacingClasses[spacing]\n )}\n >\n {icon}\n </div>\n )}\n <h3 className={cn(\"text-base font-medium text-foreground\", titleSpacingClasses[spacing])}>\n {title}\n </h3>\n {description && (\n <p className=\"text-sm text-muted-foreground max-w-md mx-auto\">{description}</p>\n )}\n {action && <div className={cn(actionSpacingClasses[spacing])}>{action}</div>}\n </div>\n );\n }\n);\n\nEmptyState.displayName = \"EmptyState\";\n",
19
19
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Position of the sidebar\n * @default 'left'\n */\n position?: \"left\" | \"right\";\n /**\n * Sidebar content\n */\n children: React.ReactNode;\n}\n\n/**\n * Sidebar - Sidebar container\n *\n * A container for sidebar content with consistent styling.\n * Should be used with Allotment for resizing functionality.\n * Width is controlled by Allotment.Pane, not by this component.\n *\n * @example\n * ```tsx\n * <Allotment>\n * <Allotment.Pane minSize={200} maxSize={600} preferredSize={256}>\n * <Sidebar>\n * <SessionList sessions={sessions} />\n * </Sidebar>\n * </Allotment.Pane>\n * <Allotment.Pane>\n * <MainContent />\n * </Allotment.Pane>\n * </Allotment>\n * ```\n */\nexport const Sidebar: React.ForwardRefExoticComponent<\n SidebarProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, SidebarProps>(\n ({ position = \"left\", className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"h-full w-full flex flex-col\",\n \"bg-muted/30 border-border\",\n position === \"left\" ? \"border-r\" : \"border-l\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nSidebar.displayName = \"Sidebar\";\n",
20
20
  "/**\n * MessagePane - Pure UI scrollable container for messages\n *\n * A pure UI component that provides:\n * - Scrollable container with auto-scroll\n * - Empty state display\n * - Flexible content (accepts any React children)\n *\n * This component knows NOTHING about:\n * - Message types or structure\n * - Business logic\n * - Rendering logic for specific message types\n *\n * It's purely a layout/container component.\n *\n * @example\n * ```tsx\n * <MessagePane>\n * {messages.map(msg => (\n * msg.role === 'assistant' ? (\n * <AssistantMessage\n * key={msg.id}\n * message={msg}\n * status={msg.metadata?.status}\n * streamingText={streaming}\n * />\n * ) : (\n * <MessageRenderer key={msg.id} message={msg} />\n * )\n * ))}\n * </MessagePane>\n * ```\n */\n\nimport * as React from \"react\";\nimport { MessageSquare } from \"lucide-react\";\nimport { EmptyState } from \"~/components/element/EmptyState\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface MessagePaneProps {\n /**\n * Content to display (messages, indicators, etc.)\n */\n children?: React.ReactNode;\n /**\n * Empty state configuration\n * Shows when children is empty\n */\n emptyState?: {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n };\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * MessagePane Component\n *\n * Pure UI container with auto-scroll functionality.\n */\nexport const MessagePane: React.ForwardRefExoticComponent<\n MessagePaneProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, MessagePaneProps>(\n (\n {\n children,\n emptyState = {\n icon: <MessageSquare className=\"w-6 h-6\" />,\n title: \"No messages yet\",\n description: \"Start the conversation by sending a message\",\n },\n className,\n },\n ref\n ) => {\n const scrollRef = React.useRef<HTMLDivElement>(null);\n\n // Auto-scroll to bottom when children change\n React.useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTop = scrollRef.current.scrollHeight;\n }\n }, [children]);\n\n // Check if empty\n const isEmpty =\n !children ||\n React.Children.count(children) === 0 ||\n (React.isValidElement(children) &&\n children.type === React.Fragment &&\n !children.props.children);\n\n return (\n <div ref={ref} className={cn(\"flex flex-col h-full bg-background\", className)}>\n <div ref={scrollRef} className=\"flex-1 overflow-y-auto px-4 py-2\">\n {isEmpty ? (\n <div className=\"h-full flex items-center justify-center\">\n <EmptyState\n icon={emptyState.icon}\n title={emptyState.title}\n description={emptyState.description}\n />\n </div>\n ) : (\n children\n )}\n </div>\n </div>\n );\n }\n);\n\nMessagePane.displayName = \"MessagePane\";\n",
21
- "/**\n * InputPane - Full-height input area with attachment support (WeChat style)\n *\n * A pure UI component where the entire pane is an input area:\n * - Toolbar at the top\n * - Attachment preview area (when attachments exist)\n * - Full-height textarea filling the space\n * - Send button at bottom right corner\n *\n * Supports:\n * - Text input\n * - Image/file attachments via toolbar buttons\n * - Drag & drop files\n * - Paste images (Ctrl+V)\n *\n * @example\n * ```tsx\n * <InputPane\n * onSend={(content) => handleSend(content)}\n * placeholder=\"Type a message...\"\n * toolbarItems={[\n * { id: 'emoji', icon: <Smile />, label: 'Emoji' },\n * { id: 'image', icon: <Image />, label: 'Add image' },\n * { id: 'attach', icon: <Paperclip />, label: 'Attach file' },\n * ]}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { Send, Square, X } from \"lucide-react\";\nimport type { UserContentPart, ImagePart, FilePart } from \"agentxjs\";\nimport { cn } from \"~/utils/utils\";\nimport { InputToolBar, type ToolBarItem } from \"./InputToolBar\";\nimport { EmojiPicker, type Emoji } from \"../element/EmojiPicker\";\nimport { ImageAttachment } from \"../element/ImageAttachment\";\n\n/**\n * Internal attachment representation\n */\ninterface Attachment {\n id: string;\n file: File;\n type: \"image\" | \"file\";\n preview?: string;\n error?: string;\n}\n\nexport interface InputPaneProps {\n /**\n * Callback when user sends a message\n * Returns string for text-only, or ContentPart[] for multimodal\n */\n onSend?: (content: string | UserContentPart[]) => void;\n /**\n * Callback when stop button is clicked (during loading)\n */\n onStop?: () => void;\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether currently loading/processing\n */\n isLoading?: boolean;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Toolbar items (left side)\n */\n toolbarItems?: ToolBarItem[];\n /**\n * Toolbar items (right side)\n */\n toolbarRightItems?: ToolBarItem[];\n /**\n * Callback when a toolbar item is clicked\n */\n onToolbarItemClick?: (id: string) => void;\n /**\n * Show toolbar\n * @default true when toolbarItems provided\n */\n showToolbar?: boolean;\n /**\n * Additional class name\n */\n className?: string;\n /**\n * Enable built-in emoji picker for toolbar item with id='emoji'\n * @default true\n */\n enableEmojiPicker?: boolean;\n /**\n * Enable attachment support for toolbar items with id='image', 'attach', 'folder'\n * @default true\n */\n enableAttachments?: boolean;\n /**\n * Maximum number of attachments\n * @default 10\n */\n maxAttachments?: number;\n /**\n * Maximum file size in bytes\n * @default 5242880 (5MB)\n */\n maxFileSize?: number;\n /**\n * Accepted image types\n * @default ['image/jpeg', 'image/png', 'image/gif', 'image/webp']\n */\n acceptedImageTypes?: string[];\n /**\n * Accepted file types (for non-image attachments)\n * @default ['application/pdf']\n */\n acceptedFileTypes?: string[];\n /**\n * Accept all file types without validation\n * @default true\n */\n acceptAllFileTypes?: boolean;\n /**\n * Files dropped from parent component (for full-area drag & drop)\n */\n droppedFiles?: File[];\n /**\n * Callback when dropped files have been processed\n */\n onDroppedFilesProcessed?: () => void;\n}\n\n/**\n * Convert File to base64\n */\nasync function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result as string;\n // Remove data URL prefix to get raw base64\n const base64 = result.split(\",\")[1];\n resolve(base64);\n };\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * Generate unique ID\n */\nfunction generateId(): string {\n return `${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * InputPane component - WeChat style full-height input with attachments\n */\nexport const InputPane: React.ForwardRefExoticComponent<\n InputPaneProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, InputPaneProps>(\n (\n {\n onSend,\n onStop,\n disabled = false,\n isLoading = false,\n placeholder = \"Type a message...\",\n toolbarItems,\n toolbarRightItems,\n onToolbarItemClick,\n showToolbar,\n className,\n enableEmojiPicker = true,\n enableAttachments = true,\n maxAttachments = 10,\n maxFileSize = 5 * 1024 * 1024, // 5MB\n acceptedImageTypes = [\"image/jpeg\", \"image/png\", \"image/gif\", \"image/webp\"],\n acceptedFileTypes = [\"application/pdf\"],\n acceptAllFileTypes = true,\n droppedFiles,\n onDroppedFilesProcessed,\n },\n ref\n ) => {\n const [text, setText] = React.useState(\"\");\n const [attachments, setAttachments] = React.useState<Attachment[]>([]);\n const [showEmojiPicker, setShowEmojiPicker] = React.useState(false);\n const [isDragging, setIsDragging] = React.useState(false);\n\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const emojiPickerRef = React.useRef<HTMLDivElement>(null);\n const imageInputRef = React.useRef<HTMLInputElement>(null);\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n // All accepted types\n const allAcceptedTypes = React.useMemo(\n () => [...acceptedImageTypes, ...acceptedFileTypes],\n [acceptedImageTypes, acceptedFileTypes]\n );\n\n // Close emoji picker when clicking outside\n React.useEffect(() => {\n if (!showEmojiPicker) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (emojiPickerRef.current && !emojiPickerRef.current.contains(e.target as Node)) {\n setShowEmojiPicker(false);\n }\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setShowEmojiPicker(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [showEmojiPicker]);\n\n /**\n * Add files as attachments\n */\n const addFiles = React.useCallback(\n async (files: Iterable<File>) => {\n const fileArray = Array.from(files);\n\n for (const file of fileArray) {\n // Check max attachments\n if (attachments.length >= maxAttachments) {\n console.warn(`Maximum ${maxAttachments} attachments allowed`);\n break;\n }\n\n // Check file type (skip if acceptAllFileTypes is true)\n if (!acceptAllFileTypes && !allAcceptedTypes.includes(file.type)) {\n console.warn(`File type ${file.type} not accepted`);\n continue;\n }\n\n // Check file size\n if (file.size > maxFileSize) {\n console.warn(`File ${file.name} exceeds maximum size of ${maxFileSize} bytes`);\n continue;\n }\n\n const isImage = acceptedImageTypes.includes(file.type);\n const attachment: Attachment = {\n id: generateId(),\n file,\n type: isImage ? \"image\" : \"file\",\n };\n\n // Generate preview for images\n if (isImage) {\n const reader = new FileReader();\n reader.onload = () => {\n setAttachments((prev) =>\n prev.map((a) =>\n a.id === attachment.id ? { ...a, preview: reader.result as string } : a\n )\n );\n };\n reader.readAsDataURL(file);\n }\n\n setAttachments((prev) => [...prev, attachment]);\n }\n },\n [\n attachments.length,\n maxAttachments,\n maxFileSize,\n allAcceptedTypes,\n acceptedImageTypes,\n acceptAllFileTypes,\n ]\n );\n\n /**\n * Remove attachment\n */\n const removeAttachment = React.useCallback((id: string) => {\n setAttachments((prev) => prev.filter((a) => a.id !== id));\n }, []);\n\n /**\n * Handle send\n */\n const handleSend = React.useCallback(async () => {\n const trimmedText = text.trim();\n if ((!trimmedText && attachments.length === 0) || disabled || isLoading) return;\n\n // Text only - send as string\n if (attachments.length === 0) {\n onSend?.(trimmedText);\n setText(\"\");\n return;\n }\n\n // With attachments - build ContentPart[]\n const parts: UserContentPart[] = [];\n\n // Add text part if present\n if (trimmedText) {\n parts.push({ type: \"text\", text: trimmedText });\n }\n\n // Add attachment parts\n for (const attachment of attachments) {\n try {\n const base64 = await fileToBase64(attachment.file);\n\n if (attachment.type === \"image\") {\n parts.push({\n type: \"image\",\n data: base64,\n mediaType: attachment.file.type as ImagePart[\"mediaType\"],\n name: attachment.file.name,\n });\n } else {\n parts.push({\n type: \"file\",\n data: base64,\n mediaType: attachment.file.type as FilePart[\"mediaType\"],\n filename: attachment.file.name,\n });\n }\n } catch (error) {\n console.error(`Failed to read file ${attachment.file.name}:`, error);\n }\n }\n\n if (parts.length > 0) {\n onSend?.(parts);\n setText(\"\");\n setAttachments([]);\n }\n }, [text, attachments, disabled, isLoading, onSend]);\n\n /**\n * Handle keyboard\n */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault();\n handleSend();\n }\n };\n\n /**\n * Handle paste (for images)\n */\n const handlePaste = React.useCallback(\n (e: React.ClipboardEvent) => {\n if (!enableAttachments) return;\n\n const items = e.clipboardData?.items;\n if (!items) return;\n\n const imageFiles: File[] = [];\n for (const item of Array.from(items)) {\n if (item.type.startsWith(\"image/\")) {\n const file = item.getAsFile();\n if (file) {\n imageFiles.push(file);\n }\n }\n }\n\n if (imageFiles.length > 0) {\n e.preventDefault();\n addFiles(imageFiles);\n }\n },\n [enableAttachments, addFiles]\n );\n\n /**\n * Handle drag events\n */\n const handleDragOver = React.useCallback(\n (e: React.DragEvent) => {\n if (!enableAttachments) return;\n e.preventDefault();\n setIsDragging(true);\n },\n [enableAttachments]\n );\n\n const handleDragLeave = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n }, []);\n\n const handleDrop = React.useCallback(\n (e: React.DragEvent) => {\n if (!enableAttachments) return;\n e.preventDefault();\n setIsDragging(false);\n\n const files = e.dataTransfer?.files;\n if (files && files.length > 0) {\n addFiles(files);\n }\n },\n [enableAttachments, addFiles]\n );\n\n // Stable ref for addFiles to avoid useEffect re-running\n const addFilesRef = React.useRef(addFiles);\n addFilesRef.current = addFiles;\n\n // Process files dropped from parent component (full-area drag & drop)\n React.useEffect(() => {\n if (droppedFiles && droppedFiles.length > 0) {\n addFilesRef.current(droppedFiles);\n onDroppedFilesProcessed?.();\n }\n }, [droppedFiles, onDroppedFilesProcessed]);\n\n /**\n * Handle emoji select\n */\n const handleEmojiSelect = (emoji: Emoji) => {\n setText((prev) => prev + emoji.native);\n setShowEmojiPicker(false);\n textareaRef.current?.focus();\n };\n\n /**\n * Handle toolbar item click\n */\n const handleToolbarItemClick = (id: string) => {\n if (id === \"emoji\" && enableEmojiPicker) {\n setShowEmojiPicker((prev) => !prev);\n }\n\n // Handle attachment buttons\n if (enableAttachments) {\n if (id === \"image\") {\n imageInputRef.current?.click();\n } else if (id === \"attach\" || id === \"folder\") {\n fileInputRef.current?.click();\n }\n }\n\n onToolbarItemClick?.(id);\n };\n\n /**\n * Handle file input change\n */\n const handleFileInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n addFiles(files);\n }\n // Reset input so same file can be selected again\n e.target.value = \"\";\n };\n\n // Check if toolbar has emoji item\n const hasEmojiItem =\n toolbarItems?.some((item) => item.id === \"emoji\") ||\n toolbarRightItems?.some((item) => item.id === \"emoji\");\n\n const shouldShowToolbar = showToolbar ?? (toolbarItems && toolbarItems.length > 0);\n\n const canSend = (text.trim().length > 0 || attachments.length > 0) && !disabled && !isLoading;\n\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col h-full border-t border-border bg-muted/30\", className)}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n {/* Hidden file inputs */}\n <input\n ref={imageInputRef}\n type=\"file\"\n accept={acceptedImageTypes.join(\",\")}\n multiple\n className=\"hidden\"\n onChange={handleFileInputChange}\n />\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptAllFileTypes ? \"*/*\" : allAcceptedTypes.join(\",\")}\n multiple\n className=\"hidden\"\n onChange={handleFileInputChange}\n />\n\n {/* Toolbar at top */}\n {shouldShowToolbar && (\n <div className=\"flex-shrink-0 border-b border-border relative\">\n <InputToolBar\n items={toolbarItems || []}\n rightItems={toolbarRightItems}\n onItemClick={handleToolbarItemClick}\n />\n {/* Emoji Picker Popover */}\n {enableEmojiPicker && hasEmojiItem && showEmojiPicker && (\n <div ref={emojiPickerRef} className=\"absolute left-0 bottom-full z-50 mb-1\">\n <div\n className=\"bg-popover rounded-lg shadow-lg border border-border\"\n onClick={(e) => e.stopPropagation()}\n >\n <EmojiPicker onEmojiSelect={handleEmojiSelect} theme=\"auto\" perLine={8} />\n </div>\n </div>\n )}\n </div>\n )}\n\n {/* Attachment preview area */}\n {attachments.length > 0 && (\n <div className=\"flex-shrink-0 px-3 py-2 border-b border-border\">\n <div className=\"flex flex-wrap gap-2\">\n {attachments.map((attachment) =>\n attachment.type === \"image\" ? (\n <ImageAttachment\n key={attachment.id}\n file={attachment.file}\n onRemove={() => removeAttachment(attachment.id)}\n error={attachment.error}\n />\n ) : (\n <div\n key={attachment.id}\n className=\"relative group flex items-center gap-2 px-3 py-2 rounded-lg border border-border bg-muted/50\"\n >\n <span className=\"text-sm truncate max-w-32\">{attachment.file.name}</span>\n <button\n onClick={() => removeAttachment(attachment.id)}\n className=\"p-0.5 rounded-full bg-destructive text-white hover:bg-destructive/90\"\n title=\"Remove\"\n >\n <X className=\"w-3 h-3\" />\n </button>\n </div>\n )\n )}\n </div>\n </div>\n )}\n\n {/* Drag overlay - dark mask style */}\n {isDragging && (\n <div className=\"absolute inset-0 z-40 flex flex-col items-center justify-center bg-black/60 rounded-lg\">\n <div className=\"w-16 h-16 mb-3 rounded-xl bg-primary flex items-center justify-center\">\n <svg\n className=\"w-8 h-8 text-primary-foreground\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\"\n />\n </svg>\n </div>\n <p className=\"text-white text-base\">Drop to send</p>\n </div>\n )}\n\n {/* Full-height textarea area */}\n <div className=\"flex-1 relative min-h-0\">\n <textarea\n ref={textareaRef}\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(\n \"w-full h-full resize-none bg-transparent\",\n \"px-3 py-3 pr-14 text-sm\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n \"overflow-y-auto\"\n )}\n />\n\n {/* Send/Stop button at bottom right */}\n <div className=\"absolute bottom-3 right-3\">\n {isLoading && onStop ? (\n <button\n type=\"button\"\n onClick={onStop}\n className={cn(\n \"p-2 rounded-lg transition-all duration-150\",\n \"bg-destructive text-destructive-foreground\",\n \"hover:bg-destructive/90\",\n \"active:scale-95\"\n )}\n title=\"Stop\"\n >\n <Square className=\"w-4 h-4\" />\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSend}\n disabled={!canSend}\n className={cn(\n \"p-2 rounded-lg transition-all duration-150\",\n \"bg-primary text-primary-foreground\",\n \"hover:bg-primary/90\",\n \"active:scale-95\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\"\n )}\n title=\"Send (Enter)\"\n >\n <Send className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nInputPane.displayName = \"InputPane\";\n",
21
+ "/**\n * InputPane - Full-height input area with attachment support (WeChat style)\n *\n * A pure UI component where the entire pane is an input area:\n * - Toolbar at the top\n * - Attachment preview area (when attachments exist)\n * - Full-height textarea filling the space\n * - Send button at bottom right corner\n *\n * Supports:\n * - Text input\n * - Image/file attachments via toolbar buttons\n * - Drag & drop files\n * - Paste images (Ctrl+V)\n *\n * @example\n * ```tsx\n * <InputPane\n * onSend={(content) => handleSend(content)}\n * placeholder=\"Type a message...\"\n * toolbarItems={[\n * { id: 'emoji', icon: <Smile />, label: 'Emoji' },\n * { id: 'image', icon: <Image />, label: 'Add image' },\n * { id: 'attach', icon: <Paperclip />, label: 'Attach file' },\n * ]}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { Send, Square, X } from \"lucide-react\";\nimport type { UserContentPart, ImagePart, FilePart } from \"agentxjs\";\nimport { cn } from \"~/utils/utils\";\nimport { InputToolBar, type ToolBarItem } from \"./InputToolBar\";\nimport { EmojiPicker, type Emoji } from \"../element/EmojiPicker\";\nimport { ImageAttachment } from \"../element/ImageAttachment\";\n\n/**\n * Internal attachment representation\n */\ninterface Attachment {\n id: string;\n file: File;\n type: \"image\" | \"file\";\n preview?: string;\n error?: string;\n}\n\nexport interface InputPaneProps {\n /**\n * Callback when user sends a message\n * Returns string for text-only, or ContentPart[] for multimodal\n */\n onSend?: (content: string | UserContentPart[]) => void;\n /**\n * Callback when stop button is clicked (during loading)\n */\n onStop?: () => void;\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether currently loading/processing\n */\n isLoading?: boolean;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Toolbar items (left side)\n */\n toolbarItems?: ToolBarItem[];\n /**\n * Toolbar items (right side)\n */\n toolbarRightItems?: ToolBarItem[];\n /**\n * Callback when a toolbar item is clicked\n */\n onToolbarItemClick?: (id: string) => void;\n /**\n * Show toolbar\n * @default true when toolbarItems provided\n */\n showToolbar?: boolean;\n /**\n * Additional class name\n */\n className?: string;\n /**\n * Enable built-in emoji picker for toolbar item with id='emoji'\n * @default true\n */\n enableEmojiPicker?: boolean;\n /**\n * Enable attachment support for toolbar items with id='image', 'attach', 'folder'\n * @default true\n */\n enableAttachments?: boolean;\n /**\n * Maximum number of attachments\n * @default 10\n */\n maxAttachments?: number;\n /**\n * Maximum file size in bytes\n * @default 104857600 (100MB)\n */\n maxFileSize?: number;\n /**\n * Accepted image types\n * @default ['image/jpeg', 'image/png', 'image/gif', 'image/webp']\n */\n acceptedImageTypes?: string[];\n /**\n * Accepted file types (for non-image attachments)\n * @default ['application/pdf']\n */\n acceptedFileTypes?: string[];\n /**\n * Accept all file types without validation\n * @default true\n */\n acceptAllFileTypes?: boolean;\n /**\n * Files dropped from parent component (for full-area drag & drop)\n */\n droppedFiles?: File[];\n /**\n * Callback when dropped files have been processed\n */\n onDroppedFilesProcessed?: () => void;\n}\n\n/**\n * Convert File to base64\n */\nasync function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result as string;\n // Remove data URL prefix to get raw base64\n const base64 = result.split(\",\")[1];\n resolve(base64);\n };\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * Generate unique ID\n */\nfunction generateId(): string {\n return `${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * InputPane component - WeChat style full-height input with attachments\n */\nexport const InputPane: React.ForwardRefExoticComponent<\n InputPaneProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, InputPaneProps>(\n (\n {\n onSend,\n onStop,\n disabled = false,\n isLoading = false,\n placeholder = \"Type a message...\",\n toolbarItems,\n toolbarRightItems,\n onToolbarItemClick,\n showToolbar,\n className,\n enableEmojiPicker = true,\n enableAttachments = true,\n maxAttachments = 10,\n maxFileSize = 100 * 1024 * 1024, // 100MB\n acceptedImageTypes = [\"image/jpeg\", \"image/png\", \"image/gif\", \"image/webp\"],\n acceptedFileTypes = [\"application/pdf\"],\n acceptAllFileTypes = true,\n droppedFiles,\n onDroppedFilesProcessed,\n },\n ref\n ) => {\n const [text, setText] = React.useState(\"\");\n const [attachments, setAttachments] = React.useState<Attachment[]>([]);\n const [showEmojiPicker, setShowEmojiPicker] = React.useState(false);\n const [isDragging, setIsDragging] = React.useState(false);\n\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const emojiPickerRef = React.useRef<HTMLDivElement>(null);\n const imageInputRef = React.useRef<HTMLInputElement>(null);\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n // All accepted types\n const allAcceptedTypes = React.useMemo(\n () => [...acceptedImageTypes, ...acceptedFileTypes],\n [acceptedImageTypes, acceptedFileTypes]\n );\n\n // Close emoji picker when clicking outside\n React.useEffect(() => {\n if (!showEmojiPicker) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (emojiPickerRef.current && !emojiPickerRef.current.contains(e.target as Node)) {\n setShowEmojiPicker(false);\n }\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setShowEmojiPicker(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [showEmojiPicker]);\n\n /**\n * Add files as attachments\n */\n const addFiles = React.useCallback(\n async (files: Iterable<File>) => {\n const fileArray = Array.from(files);\n\n for (const file of fileArray) {\n // Check max attachments\n if (attachments.length >= maxAttachments) {\n console.warn(`Maximum ${maxAttachments} attachments allowed`);\n break;\n }\n\n // Check file type (skip if acceptAllFileTypes is true)\n if (!acceptAllFileTypes && !allAcceptedTypes.includes(file.type)) {\n console.warn(`File type ${file.type} not accepted`);\n continue;\n }\n\n // Check file size\n if (file.size > maxFileSize) {\n console.warn(`File ${file.name} exceeds maximum size of ${maxFileSize} bytes`);\n continue;\n }\n\n const isImage = acceptedImageTypes.includes(file.type);\n const attachment: Attachment = {\n id: generateId(),\n file,\n type: isImage ? \"image\" : \"file\",\n };\n\n // Generate preview for images\n if (isImage) {\n const reader = new FileReader();\n reader.onload = () => {\n setAttachments((prev) =>\n prev.map((a) =>\n a.id === attachment.id ? { ...a, preview: reader.result as string } : a\n )\n );\n };\n reader.readAsDataURL(file);\n }\n\n setAttachments((prev) => [...prev, attachment]);\n }\n },\n [\n attachments.length,\n maxAttachments,\n maxFileSize,\n allAcceptedTypes,\n acceptedImageTypes,\n acceptAllFileTypes,\n ]\n );\n\n /**\n * Remove attachment\n */\n const removeAttachment = React.useCallback((id: string) => {\n setAttachments((prev) => prev.filter((a) => a.id !== id));\n }, []);\n\n /**\n * Handle send\n */\n const handleSend = React.useCallback(async () => {\n const trimmedText = text.trim();\n if ((!trimmedText && attachments.length === 0) || disabled || isLoading) return;\n\n // Text only - send as string\n if (attachments.length === 0) {\n onSend?.(trimmedText);\n setText(\"\");\n return;\n }\n\n // With attachments - build ContentPart[]\n const parts: UserContentPart[] = [];\n\n // Add text part if present\n if (trimmedText) {\n parts.push({ type: \"text\", text: trimmedText });\n }\n\n // Add attachment parts\n for (const attachment of attachments) {\n try {\n const base64 = await fileToBase64(attachment.file);\n\n if (attachment.type === \"image\") {\n parts.push({\n type: \"image\",\n data: base64,\n mediaType: attachment.file.type as ImagePart[\"mediaType\"],\n name: attachment.file.name,\n });\n } else {\n parts.push({\n type: \"file\",\n data: base64,\n mediaType: attachment.file.type as FilePart[\"mediaType\"],\n filename: attachment.file.name,\n });\n }\n } catch (error) {\n console.error(`Failed to read file ${attachment.file.name}:`, error);\n }\n }\n\n if (parts.length > 0) {\n onSend?.(parts);\n setText(\"\");\n setAttachments([]);\n }\n }, [text, attachments, disabled, isLoading, onSend]);\n\n /**\n * Handle keyboard\n */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault();\n handleSend();\n }\n };\n\n /**\n * Handle paste (for images)\n */\n const handlePaste = React.useCallback(\n (e: React.ClipboardEvent) => {\n if (!enableAttachments) return;\n\n const items = e.clipboardData?.items;\n if (!items) return;\n\n const imageFiles: File[] = [];\n for (const item of Array.from(items)) {\n if (item.type.startsWith(\"image/\")) {\n const file = item.getAsFile();\n if (file) {\n imageFiles.push(file);\n }\n }\n }\n\n if (imageFiles.length > 0) {\n e.preventDefault();\n addFiles(imageFiles);\n }\n },\n [enableAttachments, addFiles]\n );\n\n /**\n * Handle drag events\n */\n const handleDragOver = React.useCallback(\n (e: React.DragEvent) => {\n if (!enableAttachments) return;\n e.preventDefault();\n setIsDragging(true);\n },\n [enableAttachments]\n );\n\n const handleDragLeave = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n }, []);\n\n const handleDrop = React.useCallback(\n (e: React.DragEvent) => {\n if (!enableAttachments) return;\n e.preventDefault();\n setIsDragging(false);\n\n const files = e.dataTransfer?.files;\n if (files && files.length > 0) {\n addFiles(files);\n }\n },\n [enableAttachments, addFiles]\n );\n\n // Stable ref for addFiles to avoid useEffect re-running\n const addFilesRef = React.useRef(addFiles);\n addFilesRef.current = addFiles;\n\n // Process files dropped from parent component (full-area drag & drop)\n React.useEffect(() => {\n if (droppedFiles && droppedFiles.length > 0) {\n addFilesRef.current(droppedFiles);\n onDroppedFilesProcessed?.();\n }\n }, [droppedFiles, onDroppedFilesProcessed]);\n\n /**\n * Handle emoji select\n */\n const handleEmojiSelect = (emoji: Emoji) => {\n setText((prev) => prev + emoji.native);\n setShowEmojiPicker(false);\n textareaRef.current?.focus();\n };\n\n /**\n * Handle toolbar item click\n */\n const handleToolbarItemClick = (id: string) => {\n if (id === \"emoji\" && enableEmojiPicker) {\n setShowEmojiPicker((prev) => !prev);\n }\n\n // Handle attachment buttons\n if (enableAttachments) {\n if (id === \"image\") {\n imageInputRef.current?.click();\n } else if (id === \"attach\" || id === \"folder\") {\n fileInputRef.current?.click();\n }\n }\n\n onToolbarItemClick?.(id);\n };\n\n /**\n * Handle file input change\n */\n const handleFileInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n addFiles(files);\n }\n // Reset input so same file can be selected again\n e.target.value = \"\";\n };\n\n // Check if toolbar has emoji item\n const hasEmojiItem =\n toolbarItems?.some((item) => item.id === \"emoji\") ||\n toolbarRightItems?.some((item) => item.id === \"emoji\");\n\n const shouldShowToolbar = showToolbar ?? (toolbarItems && toolbarItems.length > 0);\n\n const canSend = (text.trim().length > 0 || attachments.length > 0) && !disabled && !isLoading;\n\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col h-full border-t border-border bg-muted/30\", className)}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n {/* Hidden file inputs */}\n <input\n ref={imageInputRef}\n type=\"file\"\n accept={acceptedImageTypes.join(\",\")}\n multiple\n className=\"hidden\"\n onChange={handleFileInputChange}\n />\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptAllFileTypes ? \"*/*\" : allAcceptedTypes.join(\",\")}\n multiple\n className=\"hidden\"\n onChange={handleFileInputChange}\n />\n\n {/* Toolbar at top */}\n {shouldShowToolbar && (\n <div className=\"flex-shrink-0 border-b border-border relative\">\n <InputToolBar\n items={toolbarItems || []}\n rightItems={toolbarRightItems}\n onItemClick={handleToolbarItemClick}\n />\n {/* Emoji Picker Popover */}\n {enableEmojiPicker && hasEmojiItem && showEmojiPicker && (\n <div ref={emojiPickerRef} className=\"absolute left-0 bottom-full z-50 mb-1\">\n <div\n className=\"bg-popover rounded-lg shadow-lg border border-border\"\n onClick={(e) => e.stopPropagation()}\n >\n <EmojiPicker onEmojiSelect={handleEmojiSelect} theme=\"auto\" perLine={8} />\n </div>\n </div>\n )}\n </div>\n )}\n\n {/* Attachment preview area */}\n {attachments.length > 0 && (\n <div className=\"flex-shrink-0 px-3 py-2 border-b border-border\">\n <div className=\"flex flex-wrap gap-2\">\n {attachments.map((attachment) =>\n attachment.type === \"image\" ? (\n <ImageAttachment\n key={attachment.id}\n file={attachment.file}\n onRemove={() => removeAttachment(attachment.id)}\n error={attachment.error}\n />\n ) : (\n <div\n key={attachment.id}\n className=\"relative group flex items-center gap-2 px-3 py-2 rounded-lg border border-border bg-muted/50\"\n >\n <span className=\"text-sm truncate max-w-32\">{attachment.file.name}</span>\n <button\n onClick={() => removeAttachment(attachment.id)}\n className=\"p-0.5 rounded-full bg-destructive text-white hover:bg-destructive/90\"\n title=\"Remove\"\n >\n <X className=\"w-3 h-3\" />\n </button>\n </div>\n )\n )}\n </div>\n </div>\n )}\n\n {/* Drag overlay - dark mask style */}\n {isDragging && (\n <div className=\"absolute inset-0 z-40 flex flex-col items-center justify-center bg-black/60 rounded-lg\">\n <div className=\"w-16 h-16 mb-3 rounded-xl bg-primary flex items-center justify-center\">\n <svg\n className=\"w-8 h-8 text-primary-foreground\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\"\n />\n </svg>\n </div>\n <p className=\"text-white text-base\">Drop to send</p>\n </div>\n )}\n\n {/* Full-height textarea area */}\n <div className=\"flex-1 relative min-h-0\">\n <textarea\n ref={textareaRef}\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(\n \"w-full h-full resize-none bg-transparent\",\n \"px-3 py-3 pr-14 text-sm\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n \"overflow-y-auto\"\n )}\n />\n\n {/* Send/Stop button at bottom right */}\n <div className=\"absolute bottom-3 right-3\">\n {isLoading && onStop ? (\n <button\n type=\"button\"\n onClick={onStop}\n className={cn(\n \"p-2 rounded-lg transition-all duration-150\",\n \"bg-destructive text-destructive-foreground\",\n \"hover:bg-destructive/90\",\n \"active:scale-95\"\n )}\n title=\"Stop\"\n >\n <Square className=\"w-4 h-4\" />\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSend}\n disabled={!canSend}\n className={cn(\n \"p-2 rounded-lg transition-all duration-150\",\n \"bg-primary text-primary-foreground\",\n \"hover:bg-primary/90\",\n \"active:scale-95\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\"\n )}\n title=\"Send (Enter)\"\n >\n <Send className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nInputPane.displayName = \"InputPane\";\n",
22
22
  "/**\n * InputToolBar - Toolbar buttons for input area\n *\n * A pure UI component for displaying toolbar buttons above or below\n * an input area. Supports icon buttons, toggles, and dropdowns.\n *\n * @example\n * ```tsx\n * <InputToolBar\n * items={[\n * { id: 'attach', icon: <Paperclip />, label: 'Attach file' },\n * { id: 'emoji', icon: <Smile />, label: 'Add emoji' },\n * ]}\n * onItemClick={(id) => handleAction(id)}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\n/**\n * Toolbar item data\n */\nexport interface ToolBarItem {\n /**\n * Unique identifier\n */\n id: string;\n /**\n * Icon element\n */\n icon: React.ReactNode;\n /**\n * Tooltip label\n */\n label: string;\n /**\n * Whether the item is currently active/toggled\n */\n active?: boolean;\n /**\n * Whether the item is disabled\n */\n disabled?: boolean;\n /**\n * Visual variant\n */\n variant?: \"default\" | \"primary\" | \"danger\";\n}\n\nexport interface InputToolBarProps {\n /**\n * Toolbar items to display\n */\n items: ToolBarItem[];\n /**\n * Items to display on the right side\n */\n rightItems?: ToolBarItem[];\n /**\n * Callback when an item is clicked\n */\n onItemClick?: (id: string) => void;\n /**\n * Size of the toolbar buttons\n * @default 'sm'\n */\n size?: \"xs\" | \"sm\" | \"md\";\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Single toolbar button\n */\nconst ToolBarButton = ({\n item,\n size,\n onClick,\n}: {\n item: ToolBarItem;\n size: \"xs\" | \"sm\" | \"md\";\n onClick?: () => void;\n}) => {\n const sizeClasses = {\n xs: \"w-6 h-6\",\n sm: \"w-7 h-7\",\n md: \"w-8 h-8\",\n };\n\n const iconSizeClasses = {\n xs: \"[&>svg]:w-3 [&>svg]:h-3\",\n sm: \"[&>svg]:w-3.5 [&>svg]:h-3.5\",\n md: \"[&>svg]:w-4 [&>svg]:h-4\",\n };\n\n const variantClasses = {\n default: cn(\n \"text-muted-foreground hover:text-foreground hover:bg-accent\",\n item.active && \"text-foreground bg-accent\"\n ),\n primary: cn(\n \"text-primary hover:text-primary hover:bg-primary/10\",\n item.active && \"bg-primary/10\"\n ),\n danger: cn(\n \"text-destructive hover:text-destructive hover:bg-destructive/10\",\n item.active && \"bg-destructive/10\"\n ),\n };\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={item.disabled}\n title={item.label}\n className={cn(\n \"rounded flex items-center justify-center transition-colors\",\n sizeClasses[size],\n iconSizeClasses[size],\n variantClasses[item.variant || \"default\"],\n item.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n {item.icon}\n </button>\n );\n};\n\n/**\n * InputToolBar component\n */\nexport const InputToolBar: React.ForwardRefExoticComponent<\n InputToolBarProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, InputToolBarProps>(\n ({ items, rightItems, onItemClick, size = \"sm\", className }, ref) => {\n return (\n <div ref={ref} className={cn(\"flex items-center justify-between px-2 py-1\", className)}>\n {/* Left items */}\n <div className=\"flex items-center gap-0.5\">\n {items.map((item) => (\n <ToolBarButton\n key={item.id}\n item={item}\n size={size}\n onClick={() => onItemClick?.(item.id)}\n />\n ))}\n </div>\n\n {/* Right items */}\n {rightItems && rightItems.length > 0 && (\n <div className=\"flex items-center gap-0.5\">\n {rightItems.map((item) => (\n <ToolBarButton\n key={item.id}\n item={item}\n size={size}\n onClick={() => onItemClick?.(item.id)}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nInputToolBar.displayName = \"InputToolBar\";\n",
23
23
  "/**\n * EmojiPicker - Emoji selection component using emoji-mart\n *\n * A wrapper component around emoji-mart picker with theme support.\n *\n * @example\n * ```tsx\n * <EmojiPicker onEmojiSelect={(emoji) => console.log(emoji)} />\n * ```\n */\n\nimport * as React from \"react\";\nimport Picker from \"@emoji-mart/react\";\nimport data from \"@emoji-mart/data\";\n\nexport interface Emoji {\n id: string;\n name: string;\n native: string;\n unified: string;\n keywords: string[];\n shortcodes: string;\n}\n\nexport interface EmojiPickerProps {\n /**\n * Callback when an emoji is selected\n */\n onEmojiSelect?: (emoji: Emoji) => void;\n /**\n * Theme mode\n * @default 'auto'\n */\n theme?: \"auto\" | \"light\" | \"dark\";\n /**\n * Locale for emoji names\n * @default 'en'\n */\n locale?: string;\n /**\n * Number of emojis per row\n * @default 9\n */\n perLine?: number;\n /**\n * Show preview of selected emoji\n * @default false\n */\n preview?: boolean;\n /**\n * Show search input\n * @default true\n */\n searchPosition?: \"sticky\" | \"static\" | \"none\";\n /**\n * Show skin tone selector\n * @default true\n */\n skinTonePosition?: \"preview\" | \"search\" | \"none\";\n /**\n * Maximum frequently used emojis\n * @default 16\n */\n maxFrequentRows?: number;\n}\n\n/**\n * EmojiPicker component\n */\nexport const EmojiPicker: React.FC<EmojiPickerProps> = ({\n onEmojiSelect,\n theme = \"auto\",\n locale = \"en\",\n perLine = 9,\n preview = false,\n searchPosition = \"sticky\",\n skinTonePosition = \"search\",\n maxFrequentRows = 4,\n}) => {\n return (\n <Picker\n data={data}\n onEmojiSelect={onEmojiSelect}\n theme={theme}\n locale={locale}\n perLine={perLine}\n previewPosition={preview ? \"bottom\" : \"none\"}\n searchPosition={searchPosition}\n skinTonePosition={skinTonePosition}\n maxFrequentRows={maxFrequentRows}\n navPosition=\"bottom\"\n set=\"native\"\n />\n );\n};\n\nEmojiPicker.displayName = \"EmojiPicker\";\n",
24
24
  "import * as React from \"react\";\nimport { X, AlertCircle, Image as ImageIcon } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface ImageAttachmentProps {\n /**\n * The image file to display\n */\n file: File;\n /**\n * Callback when remove button is clicked\n */\n onRemove: () => void;\n /**\n * Upload progress (0-100). Shows progress overlay when < 100\n */\n uploadProgress?: number;\n /**\n * Error message. Shows error overlay when provided\n */\n error?: string;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * ImageAttachment - Display image preview with upload progress and remove button\n *\n * Single Responsibility: Display a single image attachment with its upload state\n *\n * Used in input area for previewing images before sending\n *\n * @example\n * ```tsx\n * <ImageAttachment\n * file={imageFile}\n * onRemove={() => handleRemove(index)}\n * />\n *\n * <ImageAttachment\n * file={imageFile}\n * uploadProgress={75}\n * onRemove={() => handleRemove(index)}\n * />\n *\n * <ImageAttachment\n * file={imageFile}\n * error=\"Upload failed\"\n * onRemove={() => handleRemove(index)}\n * />\n * ```\n */\nexport function ImageAttachment({\n file,\n onRemove,\n uploadProgress,\n error,\n className,\n}: ImageAttachmentProps): React.ReactElement {\n const [preview, setPreview] = React.useState<string>(\"\");\n\n React.useEffect(() => {\n const reader = new FileReader();\n reader.onloadend = () => {\n setPreview(reader.result as string);\n };\n reader.readAsDataURL(file);\n // Data URLs don't need cleanup (unlike Object URLs)\n }, [file]);\n\n return (\n <div className={cn(\"relative group\", className)}>\n {/* Image container */}\n <div className=\"w-20 h-20 rounded-lg overflow-hidden border-2 border-slate-200 dark:border-slate-700 bg-slate-100 dark:bg-slate-800 transition-colors\">\n {preview ? (\n <img src={preview} alt={file.name} className=\"w-full h-full object-cover\" />\n ) : (\n <div className=\"w-full h-full flex items-center justify-center\">\n <ImageIcon className=\"w-8 h-8 text-slate-400\" />\n </div>\n )}\n\n {/* Upload progress overlay */}\n {uploadProgress !== undefined && uploadProgress < 100 && (\n <div className=\"absolute inset-0 bg-slate-900/60 flex items-center justify-center backdrop-blur-sm\">\n <div className=\"text-center\">\n <div className=\"text-white text-sm font-semibold\">{uploadProgress}%</div>\n <div className=\"w-12 h-1 bg-slate-700 rounded-full mt-1 overflow-hidden\">\n <div\n className=\"h-full bg-blue-500 transition-all duration-300\"\n style={{ width: `${uploadProgress}%` }}\n />\n </div>\n </div>\n </div>\n )}\n\n {/* Error overlay */}\n {error && (\n <div className=\"absolute inset-0 bg-destructive/90 flex items-center justify-center\">\n <AlertCircle className=\"w-6 h-6 text-white\" />\n </div>\n )}\n </div>\n\n {/* Remove button */}\n <button\n onClick={onRemove}\n className={cn(\n \"absolute -top-2 -right-2 w-6 h-6\",\n \"bg-destructive hover:bg-destructive/90 text-white\",\n \"rounded-full flex items-center justify-center\",\n \"shadow-lg transition-all duration-200\",\n \"opacity-0 group-hover:opacity-100\",\n \"focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-destructive focus:ring-offset-2\"\n )}\n title=\"Remove image\"\n type=\"button\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n\n {/* Error message tooltip */}\n {error && (\n <div className=\"absolute top-full mt-1 left-0 right-0 text-xs text-destructive text-center px-1 animate-fade-in\">\n {error}\n </div>\n )}\n </div>\n );\n}\n",
25
+ "import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"~/utils/index\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button: React.ForwardRefExoticComponent<\n ButtonProps & React.RefAttributes<HTMLButtonElement>\n> = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n",
26
+ "// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n",
27
+ "// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n",
25
28
  "/**\n * EventBus - Lightweight event system using mitt\n * Replaces heavy RxJS dependency with a simple, type-safe event emitter\n */\n\nimport mitt, { type Emitter } from \"mitt\";\n\n/**\n * Application Events\n * Define all possible events with their payload types\n */\nexport type AppEvents = {\n // Session events\n \"session:created\": { sessionId: string; name?: string };\n \"session:selected\": { sessionId: string };\n \"session:deleted\": { sessionId: string };\n \"session:updated\": { sessionId: string; updates: Record<string, unknown> };\n\n // Message events\n \"message:received\": { sessionId: string; content: string; role: string };\n \"message:sent\": { sessionId: string; content: string };\n \"message:streaming\": { sessionId: string; delta: string };\n\n // UI events\n \"notification:show\": { message: string; type: \"success\" | \"error\" | \"info\" };\n \"notification:hide\": { id: string };\n\n // System events\n error: { error: Error; context?: string };\n \"loading:start\": { source: string };\n \"loading:end\": { source: string };\n};\n\n/**\n * EventBus class wrapper\n * Provides debugging and convenience methods\n */\nclass EventBus {\n private emitter: Emitter<AppEvents>;\n private debugMode: boolean = false;\n\n constructor() {\n this.emitter = mitt<AppEvents>();\n }\n\n /**\n * Emit an event\n */\n emit<K extends keyof AppEvents>(type: K, data: AppEvents[K]): void {\n if (this.debugMode) {\n console.log(\"[EventBus]\", type, data);\n }\n this.emitter.emit(type, data);\n }\n\n /**\n * Subscribe to an event\n */\n on<K extends keyof AppEvents>(type: K, handler: (data: AppEvents[K]) => void): void {\n this.emitter.on(type, handler);\n }\n\n /**\n * Unsubscribe from an event\n */\n off<K extends keyof AppEvents>(type: K, handler: (data: AppEvents[K]) => void): void {\n this.emitter.off(type, handler);\n }\n\n /**\n * Subscribe to all events (use sparingly)\n */\n onAll(handler: (type: keyof AppEvents, data: unknown) => void): void {\n this.emitter.on(\"*\", handler as any);\n }\n\n /**\n * Clear all event handlers\n */\n clear(): void {\n this.emitter.all.clear();\n }\n\n /**\n * Enable debug logging\n */\n enableDebug(): void {\n this.debugMode = true;\n if (typeof console !== \"undefined\") {\n console.log(\"[EventBus] Debug mode enabled\");\n }\n }\n\n /**\n * Disable debug logging\n */\n disableDebug(): void {\n this.debugMode = false;\n if (typeof console !== \"undefined\") {\n console.log(\"[EventBus] Debug mode disabled\");\n }\n }\n}\n\n// Export singleton instance\nexport const eventBus: EventBus = new EventBus();\n\n// Enable debug in development (lazy initialization to avoid SSR issues)\n// Will be called when first used in browser environment\nif (typeof window !== \"undefined\") {\n // Use setTimeout to defer execution until after module initialization\n setTimeout(() => {\n if (import.meta.env?.DEV) {\n eventBus.enableDebug();\n }\n }, 0);\n}\n",
26
29
  "/**\n * Format a date as relative time (e.g., \"Just now\", \"5 mins ago\", \"2 hours ago\")\n *\n * @param dateString - ISO date string or Date object\n * @param currentTime - Current time for comparison (defaults to now)\n * @returns Formatted relative time string\n *\n * @example\n * ```ts\n * formatTimeAgo(\"2025-01-14T10:30:00Z\") // \"5 mins ago\"\n * formatTimeAgo(new Date()) // \"Just now\"\n * ```\n */\nexport function formatTimeAgo(dateString: string | Date, currentTime: Date = new Date()): string {\n const date = typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Unknown\";\n }\n\n const diffInMs = currentTime.getTime() - date.getTime();\n const diffInSeconds = Math.floor(diffInMs / 1000);\n const diffInMinutes = Math.floor(diffInMs / (1000 * 60));\n const diffInHours = Math.floor(diffInMs / (1000 * 60 * 60));\n const diffInDays = Math.floor(diffInMs / (1000 * 60 * 60 * 24));\n\n if (diffInSeconds < 60) return \"Just now\";\n if (diffInMinutes === 1) return \"1 min ago\";\n if (diffInMinutes < 60) return `${diffInMinutes} mins ago`;\n if (diffInHours === 1) return \"1 hour ago\";\n if (diffInHours < 24) return `${diffInHours} hours ago`;\n if (diffInDays === 1) return \"1 day ago\";\n if (diffInDays < 7) return `${diffInDays} days ago`;\n return date.toLocaleDateString();\n}\n",
30
+ "import * as React from \"react\";\n\nimport { cn } from \"~/utils/index\";\n\nexport type InputProps = React.ComponentProps<\"input\">;\n\nconst Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>> =\n React.forwardRef<HTMLInputElement, InputProps>(({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n });\nInput.displayName = \"Input\";\n\nexport { Input };\n",
31
+ "import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"~/utils/index\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps): React.ReactElement {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n",
32
+ "import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"~/utils/index\";\n\nconst Dialog: typeof DialogPrimitive.Root = DialogPrimitive.Root;\n\nconst DialogTrigger: typeof DialogPrimitive.Trigger = DialogPrimitive.Trigger;\n\nconst DialogPortal: typeof DialogPrimitive.Portal = DialogPrimitive.Portal;\n\nconst DialogClose: typeof DialogPrimitive.Close = DialogPrimitive.Close;\n\nconst DialogOverlay: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay> &\n React.RefAttributes<React.ElementRef<typeof DialogPrimitive.Overlay>>\n> = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> &\n React.RefAttributes<React.ElementRef<typeof DialogPrimitive.Content>>\n> = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nfunction DialogHeader({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>): React.ReactElement {\n return (\n <div\n className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\nDialogHeader.displayName = \"DialogHeader\";\n\nfunction DialogFooter({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>): React.ReactElement {\n return (\n <div\n className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)}\n {...props}\n />\n );\n}\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> &\n React.RefAttributes<React.ElementRef<typeof DialogPrimitive.Title>>\n> = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description> &\n React.RefAttributes<React.ElementRef<typeof DialogPrimitive.Description>>\n> = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n",
33
+ "\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n",
34
+ "// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n",
35
+ "// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n",
36
+ "// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n",
37
+ "// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n",
38
+ "// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n",
39
+ "\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n",
40
+ "// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n",
41
+ "// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n",
42
+ "// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n",
43
+ "// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n",
44
+ "\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n",
45
+ "\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n",
46
+ "\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n",
47
+ "\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n",
48
+ "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n",
49
+ "import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n",
50
+ "import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n",
51
+ "export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n",
52
+ "/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n",
53
+ "import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n",
54
+ "import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n",
55
+ "import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n",
56
+ "import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n",
57
+ "import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n",
58
+ "import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n",
59
+ "import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n",
60
+ "import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n",
61
+ "var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n",
62
+ "import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n",
63
+ "import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n",
64
+ "export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n",
65
+ "var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n",
66
+ "var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n",
67
+ "import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n",
68
+ "var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n",
69
+ "// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n",
70
+ "import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"~/utils/index\";\n\nconst Popover: typeof PopoverPrimitive.Root = PopoverPrimitive.Root;\n\nconst PopoverTrigger: typeof PopoverPrimitive.Trigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor: typeof PopoverPrimitive.Anchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> &\n React.RefAttributes<React.ElementRef<typeof PopoverPrimitive.Content>>\n> = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n",
71
+ "\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n",
72
+ "\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n",
73
+ "/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n",
74
+ "import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n",
75
+ "function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n",
76
+ "import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n",
77
+ "import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n",
78
+ "// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n",
79
+ "// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n",
80
+ "// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n",
81
+ "\"use client\";\n\nimport * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"~/utils/index\";\n\nconst ScrollBar: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar> &\n React.RefAttributes<React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>>\n> = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" && \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" && \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nconst ScrollArea: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> &\n React.RefAttributes<React.ElementRef<typeof ScrollAreaPrimitive.Root>>\n> = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nexport { ScrollArea, ScrollBar };\n",
82
+ "\"use client\";\n\n// src/scroll-area.tsx\nimport * as React2 from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\n\n// src/use-state-machine.ts\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/scroll-area.tsx\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar SCROLL_AREA_NAME = \"ScrollArea\";\nvar [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\nvar [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME);\nvar ScrollArea = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeScrollArea,\n type = \"hover\",\n dir,\n scrollHideDelay = 600,\n ...scrollAreaProps\n } = props;\n const [scrollArea, setScrollArea] = React2.useState(null);\n const [viewport, setViewport] = React2.useState(null);\n const [content, setContent] = React2.useState(null);\n const [scrollbarX, setScrollbarX] = React2.useState(null);\n const [scrollbarY, setScrollbarY] = React2.useState(null);\n const [cornerWidth, setCornerWidth] = React2.useState(0);\n const [cornerHeight, setCornerHeight] = React2.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = React2.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = React2.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setScrollArea(node));\n const direction = useDirection(dir);\n return /* @__PURE__ */ jsx(\n ScrollAreaProvider,\n {\n scope: __scopeScrollArea,\n type,\n dir: direction,\n scrollHideDelay,\n scrollArea,\n viewport,\n onViewportChange: setViewport,\n content,\n onContentChange: setContent,\n scrollbarX,\n onScrollbarXChange: setScrollbarX,\n scrollbarXEnabled,\n onScrollbarXEnabledChange: setScrollbarXEnabled,\n scrollbarY,\n onScrollbarYChange: setScrollbarY,\n scrollbarYEnabled,\n onScrollbarYEnabledChange: setScrollbarYEnabled,\n onCornerWidthChange: setCornerWidth,\n onCornerHeightChange: setCornerHeight,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n ...scrollAreaProps,\n ref: composedRefs,\n style: {\n position: \"relative\",\n // Pass corner sizes as CSS vars to reduce re-renders of context consumers\n [\"--radix-scroll-area-corner-width\"]: cornerWidth + \"px\",\n [\"--radix-scroll-area-corner-height\"]: cornerHeight + \"px\",\n ...props.style\n }\n }\n )\n }\n );\n }\n);\nScrollArea.displayName = SCROLL_AREA_NAME;\nvar VIEWPORT_NAME = \"ScrollAreaViewport\";\nvar ScrollAreaViewport = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeScrollArea, children, nonce, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-scroll-area-viewport\": \"\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n /**\n * We don't support `visible` because the intention is to have at least one scrollbar\n * if this component is used and `visible` will behave like `auto` in that case\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow#description\n *\n * We don't handle `auto` because the intention is for the native implementation\n * to be hidden if using this component. We just want to ensure the node is scrollable\n * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent\n * the browser from having to work out whether to render native scrollbars or not,\n * we tell it to with the intention of hiding them in CSS.\n */\n overflowX: context.scrollbarXEnabled ? \"scroll\" : \"hidden\",\n overflowY: context.scrollbarYEnabled ? \"scroll\" : \"hidden\",\n ...props.style\n },\n children: /* @__PURE__ */ jsx(\"div\", { ref: context.onContentChange, style: { minWidth: \"100%\", display: \"table\" }, children })\n }\n )\n ] });\n }\n);\nScrollAreaViewport.displayName = VIEWPORT_NAME;\nvar SCROLLBAR_NAME = \"ScrollAreaScrollbar\";\nvar ScrollAreaScrollbar = React2.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;\n const isHorizontal = props.orientation === \"horizontal\";\n React2.useEffect(() => {\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return () => {\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n return context.type === \"hover\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"scroll\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"auto\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"always\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, { ...scrollbarProps, ref: forwardedRef }) : null;\n }\n);\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\nvar ScrollAreaScrollbarHover = React2.forwardRef((props, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = React2.useState(false);\n React2.useEffect(() => {\n const scrollArea = context.scrollArea;\n let hideTimer = 0;\n if (scrollArea) {\n const handlePointerEnter = () => {\n window.clearTimeout(hideTimer);\n setVisible(true);\n };\n const handlePointerLeave = () => {\n hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);\n };\n scrollArea.addEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.addEventListener(\"pointerleave\", handlePointerLeave);\n return () => {\n window.clearTimeout(hideTimer);\n scrollArea.removeEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.removeEventListener(\"pointerleave\", handlePointerLeave);\n };\n }\n }, [context.scrollArea, context.scrollHideDelay]);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarAuto,\n {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n }\n ) });\n});\nvar ScrollAreaScrollbarScroll = React2.forwardRef((props, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const isHorizontal = props.orientation === \"horizontal\";\n const debounceScrollEnd = useDebounceCallback(() => send(\"SCROLL_END\"), 100);\n const [state, send] = useStateMachine(\"hidden\", {\n hidden: {\n SCROLL: \"scrolling\"\n },\n scrolling: {\n SCROLL_END: \"idle\",\n POINTER_ENTER: \"interacting\"\n },\n interacting: {\n SCROLL: \"interacting\",\n POINTER_LEAVE: \"idle\"\n },\n idle: {\n HIDE: \"hidden\",\n SCROLL: \"scrolling\",\n POINTER_ENTER: \"interacting\"\n }\n });\n React2.useEffect(() => {\n if (state === \"idle\") {\n const hideTimer = window.setTimeout(() => send(\"HIDE\"), context.scrollHideDelay);\n return () => window.clearTimeout(hideTimer);\n }\n }, [state, context.scrollHideDelay, send]);\n React2.useEffect(() => {\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? \"scrollLeft\" : \"scrollTop\";\n if (viewport) {\n let prevScrollPos = viewport[scrollDirection];\n const handleScroll = () => {\n const scrollPos = viewport[scrollDirection];\n const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n if (hasScrollInDirectionChanged) {\n send(\"SCROLL\");\n debounceScrollEnd();\n }\n prevScrollPos = scrollPos;\n };\n viewport.addEventListener(\"scroll\", handleScroll);\n return () => viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [context.viewport, isHorizontal, send, debounceScrollEnd]);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || state !== \"hidden\", children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarVisible,\n {\n \"data-state\": state === \"hidden\" ? \"hidden\" : \"visible\",\n ...scrollbarProps,\n ref: forwardedRef,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, () => send(\"POINTER_ENTER\")),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => send(\"POINTER_LEAVE\"))\n }\n ) });\n});\nvar ScrollAreaScrollbarAuto = React2.forwardRef((props, forwardedRef) => {\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = React2.useState(false);\n const isHorizontal = props.orientation === \"horizontal\";\n const handleResize = useDebounceCallback(() => {\n if (context.viewport) {\n const isOverflowX = context.viewport.offsetWidth < context.viewport.scrollWidth;\n const isOverflowY = context.viewport.offsetHeight < context.viewport.scrollHeight;\n setVisible(isHorizontal ? isOverflowX : isOverflowY);\n }\n }, 10);\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarVisible,\n {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n }\n ) });\n});\nvar ScrollAreaScrollbarVisible = React2.forwardRef((props, forwardedRef) => {\n const { orientation = \"vertical\", ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = React2.useRef(null);\n const pointerOffsetRef = React2.useRef(0);\n const [sizes, setSizes] = React2.useState({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 }\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n const commonProps = {\n ...scrollbarProps,\n sizes,\n onSizesChange: setSizes,\n hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),\n onThumbChange: (thumb) => thumbRef.current = thumb,\n onThumbPointerUp: () => pointerOffsetRef.current = 0,\n onThumbPointerDown: (pointerPos) => pointerOffsetRef.current = pointerPos\n };\n function getScrollPosition(pointerPos, dir) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n if (orientation === \"horizontal\") {\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarX,\n {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: () => {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollLeft;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes, context.dir);\n thumbRef.current.style.transform = `translate3d(${offset}px, 0, 0)`;\n }\n },\n onWheelScroll: (scrollPos) => {\n if (context.viewport) context.viewport.scrollLeft = scrollPos;\n },\n onDragScroll: (pointerPos) => {\n if (context.viewport) {\n context.viewport.scrollLeft = getScrollPosition(pointerPos, context.dir);\n }\n }\n }\n );\n }\n if (orientation === \"vertical\") {\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarY,\n {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: () => {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollTop;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes);\n thumbRef.current.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n },\n onWheelScroll: (scrollPos) => {\n if (context.viewport) context.viewport.scrollTop = scrollPos;\n },\n onDragScroll: (pointerPos) => {\n if (context.viewport) context.viewport.scrollTop = getScrollPosition(pointerPos);\n }\n }\n );\n }\n return null;\n});\nvar ScrollAreaScrollbarX = React2.forwardRef((props, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React2.useState();\n const ref = React2.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n React2.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarImpl,\n {\n \"data-orientation\": \"horizontal\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n bottom: 0,\n left: context.dir === \"rtl\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n right: context.dir === \"ltr\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n [\"--radix-scroll-area-thumb-width\"]: getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.x),\n onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.x),\n onWheelScroll: (event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollLeft + event.deltaX;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: () => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollWidth,\n viewport: context.viewport.offsetWidth,\n scrollbar: {\n size: ref.current.clientWidth,\n paddingStart: toInt(computedStyle.paddingLeft),\n paddingEnd: toInt(computedStyle.paddingRight)\n }\n });\n }\n }\n }\n );\n});\nvar ScrollAreaScrollbarY = React2.forwardRef((props, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React2.useState();\n const ref = React2.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n React2.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarImpl,\n {\n \"data-orientation\": \"vertical\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n top: 0,\n right: context.dir === \"ltr\" ? 0 : void 0,\n left: context.dir === \"rtl\" ? 0 : void 0,\n bottom: \"var(--radix-scroll-area-corner-height)\",\n [\"--radix-scroll-area-thumb-height\"]: getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.y),\n onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.y),\n onWheelScroll: (event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollTop + event.deltaY;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: () => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollHeight,\n viewport: context.viewport.offsetHeight,\n scrollbar: {\n size: ref.current.clientHeight,\n paddingStart: toInt(computedStyle.paddingTop),\n paddingEnd: toInt(computedStyle.paddingBottom)\n }\n });\n }\n }\n }\n );\n});\nvar [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);\nvar ScrollAreaScrollbarImpl = React2.forwardRef((props, forwardedRef) => {\n const {\n __scopeScrollArea,\n sizes,\n hasThumb,\n onThumbChange,\n onThumbPointerUp,\n onThumbPointerDown,\n onThumbPositionChange,\n onDragScroll,\n onWheelScroll,\n onResize,\n ...scrollbarProps\n } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, __scopeScrollArea);\n const [scrollbar, setScrollbar] = React2.useState(null);\n const composeRefs = useComposedRefs(forwardedRef, (node) => setScrollbar(node));\n const rectRef = React2.useRef(null);\n const prevWebkitUserSelectRef = React2.useRef(\"\");\n const viewport = context.viewport;\n const maxScrollPos = sizes.content - sizes.viewport;\n const handleWheelScroll = useCallbackRef(onWheelScroll);\n const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);\n const handleResize = useDebounceCallback(onResize, 10);\n function handleDragScroll(event) {\n if (rectRef.current) {\n const x = event.clientX - rectRef.current.left;\n const y = event.clientY - rectRef.current.top;\n onDragScroll({ x, y });\n }\n }\n React2.useEffect(() => {\n const handleWheel = (event) => {\n const element = event.target;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);\n };\n document.addEventListener(\"wheel\", handleWheel, { passive: false });\n return () => document.removeEventListener(\"wheel\", handleWheel, { passive: false });\n }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n React2.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ jsx(\n ScrollbarProvider,\n {\n scope: __scopeScrollArea,\n scrollbar,\n hasThumb,\n onThumbChange: useCallbackRef(onThumbChange),\n onThumbPointerUp: useCallbackRef(onThumbPointerUp),\n onThumbPositionChange: handleThumbPositionChange,\n onThumbPointerDown: useCallbackRef(onThumbPointerDown),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...scrollbarProps,\n ref: composeRefs,\n style: { position: \"absolute\", ...scrollbarProps.style },\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n const mainPointer = 0;\n if (event.button === mainPointer) {\n const element = event.target;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar.getBoundingClientRect();\n prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;\n document.body.style.webkitUserSelect = \"none\";\n if (context.viewport) context.viewport.style.scrollBehavior = \"auto\";\n handleDragScroll(event);\n }\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, handleDragScroll),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const element = event.target;\n if (element.hasPointerCapture(event.pointerId)) {\n element.releasePointerCapture(event.pointerId);\n }\n document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;\n if (context.viewport) context.viewport.style.scrollBehavior = \"\";\n rectRef.current = null;\n })\n }\n )\n }\n );\n});\nvar THUMB_NAME = \"ScrollAreaThumb\";\nvar ScrollAreaThumb = React2.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || scrollbarContext.hasThumb, children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, { ref: forwardedRef, ...thumbProps }) });\n }\n);\nvar ScrollAreaThumbImpl = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeScrollArea, style, ...thumbProps } = props;\n const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);\n const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);\n const { onThumbPositionChange } = scrollbarContext;\n const composedRef = useComposedRefs(\n forwardedRef,\n (node) => scrollbarContext.onThumbChange(node)\n );\n const removeUnlinkedScrollListenerRef = React2.useRef(void 0);\n const debounceScrollEnd = useDebounceCallback(() => {\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = void 0;\n }\n }, 100);\n React2.useEffect(() => {\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n const handleScroll = () => {\n debounceScrollEnd();\n if (!removeUnlinkedScrollListenerRef.current) {\n const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);\n removeUnlinkedScrollListenerRef.current = listener;\n onThumbPositionChange();\n }\n };\n onThumbPositionChange();\n viewport.addEventListener(\"scroll\", handleScroll);\n return () => viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [scrollAreaContext.viewport, debounceScrollEnd, onThumbPositionChange]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": scrollbarContext.hasThumb ? \"visible\" : \"hidden\",\n ...thumbProps,\n ref: composedRef,\n style: {\n width: \"var(--radix-scroll-area-thumb-width)\",\n height: \"var(--radix-scroll-area-thumb-height)\",\n ...style\n },\n onPointerDownCapture: composeEventHandlers(props.onPointerDownCapture, (event) => {\n const thumb = event.target;\n const thumbRect = thumb.getBoundingClientRect();\n const x = event.clientX - thumbRect.left;\n const y = event.clientY - thumbRect.top;\n scrollbarContext.onThumbPointerDown({ x, y });\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, scrollbarContext.onThumbPointerUp)\n }\n );\n }\n);\nScrollAreaThumb.displayName = THUMB_NAME;\nvar CORNER_NAME = \"ScrollAreaCorner\";\nvar ScrollAreaCorner = React2.forwardRef(\n (props, forwardedRef) => {\n const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);\n const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);\n const hasCorner = context.type !== \"scroll\" && hasBothScrollbarsVisible;\n return hasCorner ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, { ...props, ref: forwardedRef }) : null;\n }\n);\nScrollAreaCorner.displayName = CORNER_NAME;\nvar ScrollAreaCornerImpl = React2.forwardRef((props, forwardedRef) => {\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = React2.useState(0);\n const [height, setHeight] = React2.useState(0);\n const hasSize = Boolean(width && height);\n useResizeObserver(context.scrollbarX, () => {\n const height2 = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height2);\n setHeight(height2);\n });\n useResizeObserver(context.scrollbarY, () => {\n const width2 = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width2);\n setWidth(width2);\n });\n return hasSize ? /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...cornerProps,\n ref: forwardedRef,\n style: {\n width,\n height,\n position: \"absolute\",\n right: context.dir === \"ltr\" ? 0 : void 0,\n left: context.dir === \"rtl\" ? 0 : void 0,\n bottom: 0,\n ...props.style\n }\n }\n ) : null;\n});\nfunction toInt(value) {\n return value ? parseInt(value, 10) : 0;\n}\nfunction getThumbRatio(viewportSize, contentSize) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\nfunction getThumbSize(sizes) {\n const ratio = getThumbRatio(sizes.viewport, sizes.content);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;\n return Math.max(thumbSize, 18);\n}\nfunction getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const thumbCenter = thumbSizePx / 2;\n const offset = pointerOffset || thumbCenter;\n const thumbOffsetFromEnd = thumbSizePx - offset;\n const minPointerPos = sizes.scrollbar.paddingStart + offset;\n const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;\n const maxScrollPos = sizes.content - sizes.viewport;\n const scrollRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange);\n return interpolate(pointerPos);\n}\nfunction getThumbOffsetFromScroll(scrollPos, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const scrollbar = sizes.scrollbar.size - scrollbarPadding;\n const maxScrollPos = sizes.content - sizes.viewport;\n const maxThumbPos = scrollbar - thumbSizePx;\n const scrollClampRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const scrollWithoutMomentum = clamp(scrollPos, scrollClampRange);\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\nfunction linearScale(input, output) {\n return (value) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\nfunction isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\nvar addUnlinkedScrollListener = (node, handler = () => {\n}) => {\n let prevPosition = { left: node.scrollLeft, top: node.scrollTop };\n let rAF = 0;\n (function loop() {\n const position = { left: node.scrollLeft, top: node.scrollTop };\n const isHorizontalScroll = prevPosition.left !== position.left;\n const isVerticalScroll = prevPosition.top !== position.top;\n if (isHorizontalScroll || isVerticalScroll) handler();\n prevPosition = position;\n rAF = window.requestAnimationFrame(loop);\n })();\n return () => window.cancelAnimationFrame(rAF);\n};\nfunction useDebounceCallback(callback, delay) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = React2.useRef(0);\n React2.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return React2.useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\nfunction useResizeObserver(element, onResize) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n const resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return () => {\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [element, handleResize]);\n}\nvar Root = ScrollArea;\nvar Viewport = ScrollAreaViewport;\nvar Scrollbar = ScrollAreaScrollbar;\nvar Thumb = ScrollAreaThumb;\nvar Corner = ScrollAreaCorner;\nexport {\n Corner,\n Root,\n ScrollArea,\n ScrollAreaCorner,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaViewport,\n Scrollbar,\n Thumb,\n Viewport,\n createScrollAreaScope\n};\n//# sourceMappingURL=index.mjs.map\n",
83
+ "// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n",
84
+ "// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n",
85
+ "import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"~/utils/index\";\n\nconst Tabs: typeof TabsPrimitive.Root = TabsPrimitive.Root;\n\nconst TabsList: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> &\n React.RefAttributes<React.ElementRef<typeof TabsPrimitive.List>>\n> = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> &\n React.RefAttributes<React.ElementRef<typeof TabsPrimitive.Trigger>>\n> = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content> &\n React.RefAttributes<React.ElementRef<typeof TabsPrimitive.Content>>\n> = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n",
86
+ "\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n",
87
+ "\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n",
88
+ "\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n",
89
+ "// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n",
90
+ "'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nconst getAsset = (type)=>{\n switch(type){\n case 'success':\n return SuccessIcon;\n case 'info':\n return InfoIcon;\n case 'warning':\n return WarningIcon;\n case 'error':\n return ErrorIcon;\n default:\n return null;\n }\n};\nconst bars = Array(12).fill(0);\nconst Loader = ({ visible, className })=>{\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: [\n 'sonner-loading-wrapper',\n className\n ].filter(Boolean).join(' '),\n \"data-visible\": visible\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-spinner\"\n }, bars.map((_, i)=>/*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-loading-bar\",\n key: `spinner-bar-${i}`\n }))));\n};\nconst SuccessIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",\n clipRule: \"evenodd\"\n}));\nconst WarningIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",\n clipRule: \"evenodd\"\n}));\nconst InfoIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",\n clipRule: \"evenodd\"\n}));\nconst ErrorIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",\n clipRule: \"evenodd\"\n}));\nconst CloseIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}, /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"18\",\n y1: \"6\",\n x2: \"6\",\n y2: \"18\"\n}), /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"18\",\n y2: \"18\"\n}));\n\nconst useIsDocumentHidden = ()=>{\n const [isDocumentHidden, setIsDocumentHidden] = React.useState(document.hidden);\n React.useEffect(()=>{\n const callback = ()=>{\n setIsDocumentHidden(document.hidden);\n };\n document.addEventListener('visibilitychange', callback);\n return ()=>window.removeEventListener('visibilitychange', callback);\n }, []);\n return isDocumentHidden;\n};\n\nlet toastsCounter = 1;\nclass Observer {\n constructor(){\n // We use arrow functions to maintain the correct `this` reference\n this.subscribe = (subscriber)=>{\n this.subscribers.push(subscriber);\n return ()=>{\n const index = this.subscribers.indexOf(subscriber);\n this.subscribers.splice(index, 1);\n };\n };\n this.publish = (data)=>{\n this.subscribers.forEach((subscriber)=>subscriber(data));\n };\n this.addToast = (data)=>{\n this.publish(data);\n this.toasts = [\n ...this.toasts,\n data\n ];\n };\n this.create = (data)=>{\n var _data_id;\n const { message, ...rest } = data;\n const id = typeof (data == null ? void 0 : data.id) === 'number' || ((_data_id = data.id) == null ? void 0 : _data_id.length) > 0 ? data.id : toastsCounter++;\n const alreadyExists = this.toasts.find((toast)=>{\n return toast.id === id;\n });\n const dismissible = data.dismissible === undefined ? true : data.dismissible;\n if (this.dismissedToasts.has(id)) {\n this.dismissedToasts.delete(id);\n }\n if (alreadyExists) {\n this.toasts = this.toasts.map((toast)=>{\n if (toast.id === id) {\n this.publish({\n ...toast,\n ...data,\n id,\n title: message\n });\n return {\n ...toast,\n ...data,\n id,\n dismissible,\n title: message\n };\n }\n return toast;\n });\n } else {\n this.addToast({\n title: message,\n ...rest,\n dismissible,\n id\n });\n }\n return id;\n };\n this.dismiss = (id)=>{\n if (id) {\n this.dismissedToasts.add(id);\n requestAnimationFrame(()=>this.subscribers.forEach((subscriber)=>subscriber({\n id,\n dismiss: true\n })));\n } else {\n this.toasts.forEach((toast)=>{\n this.subscribers.forEach((subscriber)=>subscriber({\n id: toast.id,\n dismiss: true\n }));\n });\n }\n return id;\n };\n this.message = (message, data)=>{\n return this.create({\n ...data,\n message\n });\n };\n this.error = (message, data)=>{\n return this.create({\n ...data,\n message,\n type: 'error'\n });\n };\n this.success = (message, data)=>{\n return this.create({\n ...data,\n type: 'success',\n message\n });\n };\n this.info = (message, data)=>{\n return this.create({\n ...data,\n type: 'info',\n message\n });\n };\n this.warning = (message, data)=>{\n return this.create({\n ...data,\n type: 'warning',\n message\n });\n };\n this.loading = (message, data)=>{\n return this.create({\n ...data,\n type: 'loading',\n message\n });\n };\n this.promise = (promise, data)=>{\n if (!data) {\n // Nothing to show\n return;\n }\n let id = undefined;\n if (data.loading !== undefined) {\n id = this.create({\n ...data,\n promise,\n type: 'loading',\n message: data.loading,\n description: typeof data.description !== 'function' ? data.description : undefined\n });\n }\n const p = Promise.resolve(promise instanceof Function ? promise() : promise);\n let shouldDismiss = id !== undefined;\n let result;\n const originalPromise = p.then(async (response)=>{\n result = [\n 'resolve',\n response\n ];\n const isReactElementResponse = React.isValidElement(response);\n if (isReactElementResponse) {\n shouldDismiss = false;\n this.create({\n id,\n type: 'default',\n message: response\n });\n } else if (isHttpResponse(response) && !response.ok) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(`HTTP error! status: ${response.status}`) : data.error;\n const description = typeof data.description === 'function' ? await data.description(`HTTP error! status: ${response.status}`) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (response instanceof Error) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(response) : data.error;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (data.success !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.success === 'function' ? await data.success(response) : data.success;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'success',\n description,\n ...toastSettings\n });\n }\n }).catch(async (error)=>{\n result = [\n 'reject',\n error\n ];\n if (data.error !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(error) : data.error;\n const description = typeof data.description === 'function' ? await data.description(error) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n }\n }).finally(()=>{\n if (shouldDismiss) {\n // Toast is still in load state (and will be indefinitely — dismiss it)\n this.dismiss(id);\n id = undefined;\n }\n data.finally == null ? void 0 : data.finally.call(data);\n });\n const unwrap = ()=>new Promise((resolve, reject)=>originalPromise.then(()=>result[0] === 'reject' ? reject(result[1]) : resolve(result[1])).catch(reject));\n if (typeof id !== 'string' && typeof id !== 'number') {\n // cannot Object.assign on undefined\n return {\n unwrap\n };\n } else {\n return Object.assign(id, {\n unwrap\n });\n }\n };\n this.custom = (jsx, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n this.create({\n jsx: jsx(id),\n id,\n ...data\n });\n return id;\n };\n this.getActiveToasts = ()=>{\n return this.toasts.filter((toast)=>!this.dismissedToasts.has(toast.id));\n };\n this.subscribers = [];\n this.toasts = [];\n this.dismissedToasts = new Set();\n }\n}\nconst ToastState = new Observer();\n// bind this to the toast function\nconst toastFunction = (message, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n ToastState.addToast({\n title: message,\n ...data,\n id\n });\n return id;\n};\nconst isHttpResponse = (data)=>{\n return data && typeof data === 'object' && 'ok' in data && typeof data.ok === 'boolean' && 'status' in data && typeof data.status === 'number';\n};\nconst basicToast = toastFunction;\nconst getHistory = ()=>ToastState.toasts;\nconst getToasts = ()=>ToastState.getActiveToasts();\n// We use `Object.assign` to maintain the correct types as we would lose them otherwise\nconst toast = Object.assign(basicToast, {\n success: ToastState.success,\n info: ToastState.info,\n warning: ToastState.warning,\n error: ToastState.error,\n custom: ToastState.custom,\n message: ToastState.message,\n promise: ToastState.promise,\n dismiss: ToastState.dismiss,\n loading: ToastState.loading\n}, {\n getHistory,\n getToasts\n});\n\n__insertCSS(\"[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\");\n\nfunction isAction(action) {\n return action.label !== undefined;\n}\n\n// Visible toasts amount\nconst VISIBLE_TOASTS_AMOUNT = 3;\n// Viewport padding\nconst VIEWPORT_OFFSET = '24px';\n// Mobile viewport padding\nconst MOBILE_VIEWPORT_OFFSET = '16px';\n// Default lifetime of a toasts (in ms)\nconst TOAST_LIFETIME = 4000;\n// Default toast width\nconst TOAST_WIDTH = 356;\n// Default gap between toasts\nconst GAP = 14;\n// Threshold to dismiss a toast\nconst SWIPE_THRESHOLD = 45;\n// Equal to exit animation duration\nconst TIME_BEFORE_UNMOUNT = 200;\nfunction cn(...classes) {\n return classes.filter(Boolean).join(' ');\n}\nfunction getDefaultSwipeDirections(position) {\n const [y, x] = position.split('-');\n const directions = [];\n if (y) {\n directions.push(y);\n }\n if (x) {\n directions.push(x);\n }\n return directions;\n}\nconst Toast = (props)=>{\n var _toast_classNames, _toast_classNames1, _toast_classNames2, _toast_classNames3, _toast_classNames4, _toast_classNames5, _toast_classNames6, _toast_classNames7, _toast_classNames8;\n const { invert: ToasterInvert, toast, unstyled, interacting, setHeights, visibleToasts, heights, index, toasts, expanded, removeToast, defaultRichColors, closeButton: closeButtonFromToaster, style, cancelButtonStyle, actionButtonStyle, className = '', descriptionClassName = '', duration: durationFromToaster, position, gap, expandByDefault, classNames, icons, closeButtonAriaLabel = 'Close toast' } = props;\n const [swipeDirection, setSwipeDirection] = React.useState(null);\n const [swipeOutDirection, setSwipeOutDirection] = React.useState(null);\n const [mounted, setMounted] = React.useState(false);\n const [removed, setRemoved] = React.useState(false);\n const [swiping, setSwiping] = React.useState(false);\n const [swipeOut, setSwipeOut] = React.useState(false);\n const [isSwiped, setIsSwiped] = React.useState(false);\n const [offsetBeforeRemove, setOffsetBeforeRemove] = React.useState(0);\n const [initialHeight, setInitialHeight] = React.useState(0);\n const remainingTime = React.useRef(toast.duration || durationFromToaster || TOAST_LIFETIME);\n const dragStartTime = React.useRef(null);\n const toastRef = React.useRef(null);\n const isFront = index === 0;\n const isVisible = index + 1 <= visibleToasts;\n const toastType = toast.type;\n const dismissible = toast.dismissible !== false;\n const toastClassname = toast.className || '';\n const toastDescriptionClassname = toast.descriptionClassName || '';\n // Height index is used to calculate the offset as it gets updated before the toast array, which means we can calculate the new layout faster.\n const heightIndex = React.useMemo(()=>heights.findIndex((height)=>height.toastId === toast.id) || 0, [\n heights,\n toast.id\n ]);\n const closeButton = React.useMemo(()=>{\n var _toast_closeButton;\n return (_toast_closeButton = toast.closeButton) != null ? _toast_closeButton : closeButtonFromToaster;\n }, [\n toast.closeButton,\n closeButtonFromToaster\n ]);\n const duration = React.useMemo(()=>toast.duration || durationFromToaster || TOAST_LIFETIME, [\n toast.duration,\n durationFromToaster\n ]);\n const closeTimerStartTimeRef = React.useRef(0);\n const offset = React.useRef(0);\n const lastCloseTimerStartTimeRef = React.useRef(0);\n const pointerStartRef = React.useRef(null);\n const [y, x] = position.split('-');\n const toastsHeightBefore = React.useMemo(()=>{\n return heights.reduce((prev, curr, reducerIndex)=>{\n // Calculate offset up until current toast\n if (reducerIndex >= heightIndex) {\n return prev;\n }\n return prev + curr.height;\n }, 0);\n }, [\n heights,\n heightIndex\n ]);\n const isDocumentHidden = useIsDocumentHidden();\n const invert = toast.invert || ToasterInvert;\n const disabled = toastType === 'loading';\n offset.current = React.useMemo(()=>heightIndex * gap + toastsHeightBefore, [\n heightIndex,\n toastsHeightBefore\n ]);\n React.useEffect(()=>{\n remainingTime.current = duration;\n }, [\n duration\n ]);\n React.useEffect(()=>{\n // Trigger enter animation without using CSS animation\n setMounted(true);\n }, []);\n React.useEffect(()=>{\n const toastNode = toastRef.current;\n if (toastNode) {\n const height = toastNode.getBoundingClientRect().height;\n // Add toast height to heights array after the toast is mounted\n setInitialHeight(height);\n setHeights((h)=>[\n {\n toastId: toast.id,\n height,\n position: toast.position\n },\n ...h\n ]);\n return ()=>setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n }\n }, [\n setHeights,\n toast.id\n ]);\n React.useLayoutEffect(()=>{\n // Keep height up to date with the content in case it updates\n if (!mounted) return;\n const toastNode = toastRef.current;\n const originalHeight = toastNode.style.height;\n toastNode.style.height = 'auto';\n const newHeight = toastNode.getBoundingClientRect().height;\n toastNode.style.height = originalHeight;\n setInitialHeight(newHeight);\n setHeights((heights)=>{\n const alreadyExists = heights.find((height)=>height.toastId === toast.id);\n if (!alreadyExists) {\n return [\n {\n toastId: toast.id,\n height: newHeight,\n position: toast.position\n },\n ...heights\n ];\n } else {\n return heights.map((height)=>height.toastId === toast.id ? {\n ...height,\n height: newHeight\n } : height);\n }\n });\n }, [\n mounted,\n toast.title,\n toast.description,\n setHeights,\n toast.id,\n toast.jsx,\n toast.action,\n toast.cancel\n ]);\n const deleteToast = React.useCallback(()=>{\n // Save the offset for the exit swipe animation\n setRemoved(true);\n setOffsetBeforeRemove(offset.current);\n setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n setTimeout(()=>{\n removeToast(toast);\n }, TIME_BEFORE_UNMOUNT);\n }, [\n toast,\n removeToast,\n setHeights,\n offset\n ]);\n React.useEffect(()=>{\n if (toast.promise && toastType === 'loading' || toast.duration === Infinity || toast.type === 'loading') return;\n let timeoutId;\n // Pause the timer on each hover\n const pauseTimer = ()=>{\n if (lastCloseTimerStartTimeRef.current < closeTimerStartTimeRef.current) {\n // Get the elapsed time since the timer started\n const elapsedTime = new Date().getTime() - closeTimerStartTimeRef.current;\n remainingTime.current = remainingTime.current - elapsedTime;\n }\n lastCloseTimerStartTimeRef.current = new Date().getTime();\n };\n const startTimer = ()=>{\n // setTimeout(, Infinity) behaves as if the delay is 0.\n // As a result, the toast would be closed immediately, giving the appearance that it was never rendered.\n // See: https://github.com/denysdovhan/wtfjs?tab=readme-ov-file#an-infinite-timeout\n if (remainingTime.current === Infinity) return;\n closeTimerStartTimeRef.current = new Date().getTime();\n // Let the toast know it has started\n timeoutId = setTimeout(()=>{\n toast.onAutoClose == null ? void 0 : toast.onAutoClose.call(toast, toast);\n deleteToast();\n }, remainingTime.current);\n };\n if (expanded || interacting || isDocumentHidden) {\n pauseTimer();\n } else {\n startTimer();\n }\n return ()=>clearTimeout(timeoutId);\n }, [\n expanded,\n interacting,\n toast,\n toastType,\n isDocumentHidden,\n deleteToast\n ]);\n React.useEffect(()=>{\n if (toast.delete) {\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n }\n }, [\n deleteToast,\n toast.delete\n ]);\n function getLoadingIcon() {\n var _toast_classNames;\n if (icons == null ? void 0 : icons.loading) {\n var _toast_classNames1;\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1.loader, 'sonner-loader'),\n \"data-visible\": toastType === 'loading'\n }, icons.loading);\n }\n return /*#__PURE__*/ React.createElement(Loader, {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.loader),\n visible: toastType === 'loading'\n });\n }\n const icon = toast.icon || (icons == null ? void 0 : icons[toastType]) || getAsset(toastType);\n var _toast_richColors, _icons_close;\n return /*#__PURE__*/ React.createElement(\"li\", {\n tabIndex: 0,\n ref: toastRef,\n className: cn(className, toastClassname, classNames == null ? void 0 : classNames.toast, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.toast, classNames == null ? void 0 : classNames.default, classNames == null ? void 0 : classNames[toastType], toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1[toastType]),\n \"data-sonner-toast\": \"\",\n \"data-rich-colors\": (_toast_richColors = toast.richColors) != null ? _toast_richColors : defaultRichColors,\n \"data-styled\": !Boolean(toast.jsx || toast.unstyled || unstyled),\n \"data-mounted\": mounted,\n \"data-promise\": Boolean(toast.promise),\n \"data-swiped\": isSwiped,\n \"data-removed\": removed,\n \"data-visible\": isVisible,\n \"data-y-position\": y,\n \"data-x-position\": x,\n \"data-index\": index,\n \"data-front\": isFront,\n \"data-swiping\": swiping,\n \"data-dismissible\": dismissible,\n \"data-type\": toastType,\n \"data-invert\": invert,\n \"data-swipe-out\": swipeOut,\n \"data-swipe-direction\": swipeOutDirection,\n \"data-expanded\": Boolean(expanded || expandByDefault && mounted),\n \"data-testid\": toast.testId,\n style: {\n '--index': index,\n '--toasts-before': index,\n '--z-index': toasts.length - index,\n '--offset': `${removed ? offsetBeforeRemove : offset.current}px`,\n '--initial-height': expandByDefault ? 'auto' : `${initialHeight}px`,\n ...style,\n ...toast.style\n },\n onDragEnd: ()=>{\n setSwiping(false);\n setSwipeDirection(null);\n pointerStartRef.current = null;\n },\n onPointerDown: (event)=>{\n if (event.button === 2) return; // Return early on right click\n if (disabled || !dismissible) return;\n dragStartTime.current = new Date();\n setOffsetBeforeRemove(offset.current);\n // Ensure we maintain correct pointer capture even when going outside of the toast (e.g. when swiping)\n event.target.setPointerCapture(event.pointerId);\n if (event.target.tagName === 'BUTTON') return;\n setSwiping(true);\n pointerStartRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n },\n onPointerUp: ()=>{\n var _toastRef_current, _toastRef_current1, _dragStartTime_current;\n if (swipeOut || !dismissible) return;\n pointerStartRef.current = null;\n const swipeAmountX = Number(((_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.getPropertyValue('--swipe-amount-x').replace('px', '')) || 0);\n const swipeAmountY = Number(((_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.getPropertyValue('--swipe-amount-y').replace('px', '')) || 0);\n const timeTaken = new Date().getTime() - ((_dragStartTime_current = dragStartTime.current) == null ? void 0 : _dragStartTime_current.getTime());\n const swipeAmount = swipeDirection === 'x' ? swipeAmountX : swipeAmountY;\n const velocity = Math.abs(swipeAmount) / timeTaken;\n if (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > 0.11) {\n setOffsetBeforeRemove(offset.current);\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n if (swipeDirection === 'x') {\n setSwipeOutDirection(swipeAmountX > 0 ? 'right' : 'left');\n } else {\n setSwipeOutDirection(swipeAmountY > 0 ? 'down' : 'up');\n }\n deleteToast();\n setSwipeOut(true);\n return;\n } else {\n var _toastRef_current2, _toastRef_current3;\n (_toastRef_current2 = toastRef.current) == null ? void 0 : _toastRef_current2.style.setProperty('--swipe-amount-x', `0px`);\n (_toastRef_current3 = toastRef.current) == null ? void 0 : _toastRef_current3.style.setProperty('--swipe-amount-y', `0px`);\n }\n setIsSwiped(false);\n setSwiping(false);\n setSwipeDirection(null);\n },\n onPointerMove: (event)=>{\n var _window_getSelection, // Apply transform using both x and y values\n _toastRef_current, _toastRef_current1;\n if (!pointerStartRef.current || !dismissible) return;\n const isHighlighted = ((_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString().length) > 0;\n if (isHighlighted) return;\n const yDelta = event.clientY - pointerStartRef.current.y;\n const xDelta = event.clientX - pointerStartRef.current.x;\n var _props_swipeDirections;\n const swipeDirections = (_props_swipeDirections = props.swipeDirections) != null ? _props_swipeDirections : getDefaultSwipeDirections(position);\n // Determine swipe direction if not already locked\n if (!swipeDirection && (Math.abs(xDelta) > 1 || Math.abs(yDelta) > 1)) {\n setSwipeDirection(Math.abs(xDelta) > Math.abs(yDelta) ? 'x' : 'y');\n }\n let swipeAmount = {\n x: 0,\n y: 0\n };\n const getDampening = (delta)=>{\n const factor = Math.abs(delta) / 20;\n return 1 / (1.5 + factor);\n };\n // Only apply swipe in the locked direction\n if (swipeDirection === 'y') {\n // Handle vertical swipes\n if (swipeDirections.includes('top') || swipeDirections.includes('bottom')) {\n if (swipeDirections.includes('top') && yDelta < 0 || swipeDirections.includes('bottom') && yDelta > 0) {\n swipeAmount.y = yDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = yDelta * getDampening(yDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.y = Math.abs(dampenedDelta) < Math.abs(yDelta) ? dampenedDelta : yDelta;\n }\n }\n } else if (swipeDirection === 'x') {\n // Handle horizontal swipes\n if (swipeDirections.includes('left') || swipeDirections.includes('right')) {\n if (swipeDirections.includes('left') && xDelta < 0 || swipeDirections.includes('right') && xDelta > 0) {\n swipeAmount.x = xDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = xDelta * getDampening(xDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.x = Math.abs(dampenedDelta) < Math.abs(xDelta) ? dampenedDelta : xDelta;\n }\n }\n }\n if (Math.abs(swipeAmount.x) > 0 || Math.abs(swipeAmount.y) > 0) {\n setIsSwiped(true);\n }\n (_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.setProperty('--swipe-amount-x', `${swipeAmount.x}px`);\n (_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.setProperty('--swipe-amount-y', `${swipeAmount.y}px`);\n }\n }, closeButton && !toast.jsx && toastType !== 'loading' ? /*#__PURE__*/ React.createElement(\"button\", {\n \"aria-label\": closeButtonAriaLabel,\n \"data-disabled\": disabled,\n \"data-close-button\": true,\n onClick: disabled || !dismissible ? ()=>{} : ()=>{\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n },\n className: cn(classNames == null ? void 0 : classNames.closeButton, toast == null ? void 0 : (_toast_classNames2 = toast.classNames) == null ? void 0 : _toast_classNames2.closeButton)\n }, (_icons_close = icons == null ? void 0 : icons.close) != null ? _icons_close : CloseIcon) : null, (toastType || toast.icon || toast.promise) && toast.icon !== null && ((icons == null ? void 0 : icons[toastType]) !== null || toast.icon) ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-icon\": \"\",\n className: cn(classNames == null ? void 0 : classNames.icon, toast == null ? void 0 : (_toast_classNames3 = toast.classNames) == null ? void 0 : _toast_classNames3.icon)\n }, toast.promise || toast.type === 'loading' && !toast.icon ? toast.icon || getLoadingIcon() : null, toast.type !== 'loading' ? icon : null) : null, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-content\": \"\",\n className: cn(classNames == null ? void 0 : classNames.content, toast == null ? void 0 : (_toast_classNames4 = toast.classNames) == null ? void 0 : _toast_classNames4.content)\n }, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-title\": \"\",\n className: cn(classNames == null ? void 0 : classNames.title, toast == null ? void 0 : (_toast_classNames5 = toast.classNames) == null ? void 0 : _toast_classNames5.title)\n }, toast.jsx ? toast.jsx : typeof toast.title === 'function' ? toast.title() : toast.title), toast.description ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-description\": \"\",\n className: cn(descriptionClassName, toastDescriptionClassname, classNames == null ? void 0 : classNames.description, toast == null ? void 0 : (_toast_classNames6 = toast.classNames) == null ? void 0 : _toast_classNames6.description)\n }, typeof toast.description === 'function' ? toast.description() : toast.description) : null), /*#__PURE__*/ React.isValidElement(toast.cancel) ? toast.cancel : toast.cancel && isAction(toast.cancel) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-cancel\": true,\n style: toast.cancelButtonStyle || cancelButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.cancel)) return;\n if (!dismissible) return;\n toast.cancel.onClick == null ? void 0 : toast.cancel.onClick.call(toast.cancel, event);\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.cancelButton, toast == null ? void 0 : (_toast_classNames7 = toast.classNames) == null ? void 0 : _toast_classNames7.cancelButton)\n }, toast.cancel.label) : null, /*#__PURE__*/ React.isValidElement(toast.action) ? toast.action : toast.action && isAction(toast.action) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-action\": true,\n style: toast.actionButtonStyle || actionButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.action)) return;\n toast.action.onClick == null ? void 0 : toast.action.onClick.call(toast.action, event);\n if (event.defaultPrevented) return;\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.actionButton, toast == null ? void 0 : (_toast_classNames8 = toast.classNames) == null ? void 0 : _toast_classNames8.actionButton)\n }, toast.action.label) : null);\n};\nfunction getDocumentDirection() {\n if (typeof window === 'undefined') return 'ltr';\n if (typeof document === 'undefined') return 'ltr'; // For Fresh purpose\n const dirAttribute = document.documentElement.getAttribute('dir');\n if (dirAttribute === 'auto' || !dirAttribute) {\n return window.getComputedStyle(document.documentElement).direction;\n }\n return dirAttribute;\n}\nfunction assignOffset(defaultOffset, mobileOffset) {\n const styles = {};\n [\n defaultOffset,\n mobileOffset\n ].forEach((offset, index)=>{\n const isMobile = index === 1;\n const prefix = isMobile ? '--mobile-offset' : '--offset';\n const defaultValue = isMobile ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;\n function assignAll(offset) {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n styles[`${prefix}-${key}`] = typeof offset === 'number' ? `${offset}px` : offset;\n });\n }\n if (typeof offset === 'number' || typeof offset === 'string') {\n assignAll(offset);\n } else if (typeof offset === 'object') {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n if (offset[key] === undefined) {\n styles[`${prefix}-${key}`] = defaultValue;\n } else {\n styles[`${prefix}-${key}`] = typeof offset[key] === 'number' ? `${offset[key]}px` : offset[key];\n }\n });\n } else {\n assignAll(defaultValue);\n }\n });\n return styles;\n}\nfunction useSonner() {\n const [activeToasts, setActiveToasts] = React.useState([]);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>toasts.filter((t)=>t.id !== toast.id));\n });\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, []);\n return {\n toasts: activeToasts\n };\n}\nconst Toaster = /*#__PURE__*/ React.forwardRef(function Toaster(props, ref) {\n const { id, invert, position = 'bottom-right', hotkey = [\n 'altKey',\n 'KeyT'\n ], expand, closeButton, className, offset, mobileOffset, theme = 'light', richColors, duration, style, visibleToasts = VISIBLE_TOASTS_AMOUNT, toastOptions, dir = getDocumentDirection(), gap = GAP, icons, containerAriaLabel = 'Notifications' } = props;\n const [toasts, setToasts] = React.useState([]);\n const filteredToasts = React.useMemo(()=>{\n if (id) {\n return toasts.filter((toast)=>toast.toasterId === id);\n }\n return toasts.filter((toast)=>!toast.toasterId);\n }, [\n toasts,\n id\n ]);\n const possiblePositions = React.useMemo(()=>{\n return Array.from(new Set([\n position\n ].concat(filteredToasts.filter((toast)=>toast.position).map((toast)=>toast.position))));\n }, [\n filteredToasts,\n position\n ]);\n const [heights, setHeights] = React.useState([]);\n const [expanded, setExpanded] = React.useState(false);\n const [interacting, setInteracting] = React.useState(false);\n const [actualTheme, setActualTheme] = React.useState(theme !== 'system' ? theme : typeof window !== 'undefined' ? window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' : 'light');\n const listRef = React.useRef(null);\n const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');\n const lastFocusedElementRef = React.useRef(null);\n const isFocusWithinRef = React.useRef(false);\n const removeToast = React.useCallback((toastToRemove)=>{\n setToasts((toasts)=>{\n var _toasts_find;\n if (!((_toasts_find = toasts.find((toast)=>toast.id === toastToRemove.id)) == null ? void 0 : _toasts_find.delete)) {\n ToastState.dismiss(toastToRemove.id);\n }\n return toasts.filter(({ id })=>id !== toastToRemove.id);\n });\n }, []);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n // Prevent batching of other state updates\n requestAnimationFrame(()=>{\n setToasts((toasts)=>toasts.map((t)=>t.id === toast.id ? {\n ...t,\n delete: true\n } : t));\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n if (theme !== 'system') {\n setActualTheme(theme);\n return;\n }\n if (theme === 'system') {\n // check if current preference is dark\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n // it's currently dark\n setActualTheme('dark');\n } else {\n // it's not dark\n setActualTheme('light');\n }\n }\n if (typeof window === 'undefined') return;\n const darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n try {\n // Chrome & Firefox\n darkMediaQuery.addEventListener('change', ({ matches })=>{\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n });\n } catch (error) {\n // Safari < 14\n darkMediaQuery.addListener(({ matches })=>{\n try {\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n }, [\n theme\n ]);\n React.useEffect(()=>{\n // Ensure expanded is always false when no toasts are present / only one left\n if (toasts.length <= 1) {\n setExpanded(false);\n }\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n const handleKeyDown = (event)=>{\n var _listRef_current;\n const isHotkeyPressed = hotkey.every((key)=>event[key] || event.code === key);\n if (isHotkeyPressed) {\n var _listRef_current1;\n setExpanded(true);\n (_listRef_current1 = listRef.current) == null ? void 0 : _listRef_current1.focus();\n }\n if (event.code === 'Escape' && (document.activeElement === listRef.current || ((_listRef_current = listRef.current) == null ? void 0 : _listRef_current.contains(document.activeElement)))) {\n setExpanded(false);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return ()=>document.removeEventListener('keydown', handleKeyDown);\n }, [\n hotkey\n ]);\n React.useEffect(()=>{\n if (listRef.current) {\n return ()=>{\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n isFocusWithinRef.current = false;\n }\n };\n }\n }, [\n listRef.current\n ]);\n return(// Remove item from normal navigation flow, only available via hotkey\n /*#__PURE__*/ React.createElement(\"section\", {\n ref: ref,\n \"aria-label\": `${containerAriaLabel} ${hotkeyLabel}`,\n tabIndex: -1,\n \"aria-live\": \"polite\",\n \"aria-relevant\": \"additions text\",\n \"aria-atomic\": \"false\",\n suppressHydrationWarning: true\n }, possiblePositions.map((position, index)=>{\n var _heights_;\n const [y, x] = position.split('-');\n if (!filteredToasts.length) return null;\n return /*#__PURE__*/ React.createElement(\"ol\", {\n key: position,\n dir: dir === 'auto' ? getDocumentDirection() : dir,\n tabIndex: -1,\n ref: listRef,\n className: className,\n \"data-sonner-toaster\": true,\n \"data-sonner-theme\": actualTheme,\n \"data-y-position\": y,\n \"data-x-position\": x,\n style: {\n '--front-toast-height': `${((_heights_ = heights[0]) == null ? void 0 : _heights_.height) || 0}px`,\n '--width': `${TOAST_WIDTH}px`,\n '--gap': `${gap}px`,\n ...style,\n ...assignOffset(offset, mobileOffset)\n },\n onBlur: (event)=>{\n if (isFocusWithinRef.current && !event.currentTarget.contains(event.relatedTarget)) {\n isFocusWithinRef.current = false;\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n }\n }\n },\n onFocus: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n if (!isFocusWithinRef.current) {\n isFocusWithinRef.current = true;\n lastFocusedElementRef.current = event.relatedTarget;\n }\n },\n onMouseEnter: ()=>setExpanded(true),\n onMouseMove: ()=>setExpanded(true),\n onMouseLeave: ()=>{\n // Avoid setting expanded to false when interacting with a toast, e.g. swiping\n if (!interacting) {\n setExpanded(false);\n }\n },\n onDragEnd: ()=>setExpanded(false),\n onPointerDown: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n setInteracting(true);\n },\n onPointerUp: ()=>setInteracting(false)\n }, filteredToasts.filter((toast)=>!toast.position && index === 0 || toast.position === position).map((toast, index)=>{\n var _toastOptions_duration, _toastOptions_closeButton;\n return /*#__PURE__*/ React.createElement(Toast, {\n key: toast.id,\n icons: icons,\n index: index,\n toast: toast,\n defaultRichColors: richColors,\n duration: (_toastOptions_duration = toastOptions == null ? void 0 : toastOptions.duration) != null ? _toastOptions_duration : duration,\n className: toastOptions == null ? void 0 : toastOptions.className,\n descriptionClassName: toastOptions == null ? void 0 : toastOptions.descriptionClassName,\n invert: invert,\n visibleToasts: visibleToasts,\n closeButton: (_toastOptions_closeButton = toastOptions == null ? void 0 : toastOptions.closeButton) != null ? _toastOptions_closeButton : closeButton,\n interacting: interacting,\n position: position,\n style: toastOptions == null ? void 0 : toastOptions.style,\n unstyled: toastOptions == null ? void 0 : toastOptions.unstyled,\n classNames: toastOptions == null ? void 0 : toastOptions.classNames,\n cancelButtonStyle: toastOptions == null ? void 0 : toastOptions.cancelButtonStyle,\n actionButtonStyle: toastOptions == null ? void 0 : toastOptions.actionButtonStyle,\n closeButtonAriaLabel: toastOptions == null ? void 0 : toastOptions.closeButtonAriaLabel,\n removeToast: removeToast,\n toasts: filteredToasts.filter((t)=>t.position == toast.position),\n heights: heights.filter((h)=>h.position == toast.position),\n setHeights: setHeights,\n expandByDefault: expand,\n gap: gap,\n expanded: expanded,\n swipeDirections: props.swipeDirections\n });\n }));\n })));\n});\n\nexport { Toaster, toast, useSonner };\n",
91
+ "\"use client\";\n\nimport * as React from \"react\";\nimport { Toaster as Sonner } from \"sonner\";\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ ...props }: ToasterProps): React.ReactElement => {\n return (\n <Sonner\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton: \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton: \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\n",
27
92
  "/**\n * Chat - Chat interface component\n *\n * Business component that combines MessagePane + InputPane with useAgent hook.\n * Displays conversations and handles sending/receiving.\n *\n * Uses Conversation-first, Block-based design:\n * - conversations: all conversation entries (user, assistant, error)\n * - streamingText: current streaming text for active TextBlock\n * - currentTextBlockId: id of the TextBlock receiving streaming text\n *\n * @example\n * ```tsx\n * <Chat\n * agentx={agentx}\n * imageId={currentImageId}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport type { AgentX } from \"agentxjs\";\nimport { Save, Smile, FolderOpen } from \"lucide-react\";\nimport { MessagePane, InputPane, type ToolBarItem } from \"~/components/pane\";\nimport { UserEntry, AssistantEntry, ErrorEntry } from \"~/components/entry\";\nimport { useAgent, type ConversationData } from \"~/hooks\";\nimport { cn } from \"~/utils\";\nimport { ChatHeader } from \"./ChatHeader\";\n\nexport interface ChatProps {\n /**\n * AgentX instance\n */\n agentx: AgentX | null;\n /**\n * Image ID for the conversation\n */\n imageId?: string | null;\n /**\n * Agent name to display in header\n */\n agentName?: string;\n /**\n * Callback when save button is clicked\n */\n onSave?: () => void;\n /**\n * Show save button in toolbar\n * @default false\n */\n showSaveButton?: boolean;\n /**\n * Input placeholder text\n */\n placeholder?: string;\n /**\n * Height ratio for input pane (0-1)\n * @default 0.25\n */\n inputHeightRatio?: number;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Render a single conversation based on its type\n */\nfunction renderConversation(\n conversation: ConversationData,\n streamingText: string,\n currentTextBlockId: string | null,\n onStop?: () => void\n): React.ReactNode {\n switch (conversation.type) {\n case \"user\":\n return <UserEntry key={conversation.id} entry={conversation} />;\n\n case \"assistant\":\n return (\n <AssistantEntry\n key={conversation.id}\n entry={conversation}\n streamingText={streamingText}\n currentTextBlockId={currentTextBlockId}\n onStop={onStop}\n />\n );\n\n case \"error\":\n return <ErrorEntry key={conversation.id} entry={conversation} />;\n\n default:\n return null;\n }\n}\n\n/**\n * Chat component\n */\nexport function Chat({\n agentx,\n imageId,\n agentName,\n onSave,\n showSaveButton = false,\n placeholder = \"Type a message...\",\n inputHeightRatio = 0.25,\n className,\n}: ChatProps): React.ReactElement | null {\n // Use Conversation-first, Block-based state\n const { conversations, streamingText, currentTextBlockId, status, send, interrupt } = useAgent(\n agentx,\n imageId ?? null\n );\n\n // Determine loading state\n const isLoading =\n status === \"thinking\" ||\n status === \"responding\" ||\n status === \"planning_tool\" ||\n status === \"awaiting_tool_result\";\n\n // ESC key to interrupt\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && isLoading) {\n e.preventDefault();\n interrupt();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isLoading, interrupt]);\n\n // Full-area drag & drop state\n const [isDragging, setIsDragging] = React.useState(false);\n const [droppedFiles, setDroppedFiles] = React.useState<File[] | undefined>(undefined);\n const dragCounterRef = React.useRef(0);\n\n // Handle drag events for full-area drop zone\n const handleDragEnter = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounterRef.current++;\n if (e.dataTransfer?.types.includes(\"Files\")) {\n setIsDragging(true);\n }\n }, []);\n\n const handleDragLeave = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounterRef.current--;\n if (dragCounterRef.current === 0) {\n setIsDragging(false);\n }\n }, []);\n\n const handleDragOver = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const handleDrop = React.useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounterRef.current = 0;\n setIsDragging(false);\n\n const files = e.dataTransfer?.files;\n if (files && files.length > 0) {\n setDroppedFiles(Array.from(files));\n }\n }, []);\n\n // Clear dropped files after they've been processed by InputPane\n const handleDroppedFilesProcessed = React.useCallback(() => {\n setDroppedFiles(undefined);\n }, []);\n\n // Toolbar items\n const toolbarItems: ToolBarItem[] = React.useMemo(\n () => [\n { id: \"emoji\", icon: <Smile className=\"w-4 h-4\" />, label: \"Emoji\" },\n { id: \"folder\", icon: <FolderOpen className=\"w-4 h-4\" />, label: \"File\" },\n ],\n []\n );\n\n const toolbarRightItems: ToolBarItem[] = React.useMemo(() => {\n if (!showSaveButton || !onSave) return [];\n return [{ id: \"save\", icon: <Save className=\"w-4 h-4\" />, label: \"Save conversation\" }];\n }, [showSaveButton, onSave]);\n\n const handleToolbarClick = React.useCallback(\n (id: string) => {\n if (id === \"save\" && onSave) {\n onSave();\n }\n },\n [onSave]\n );\n\n // Calculate heights\n const inputHeight = `${Math.round(inputHeightRatio * 100)}%`;\n const messageHeight = `${Math.round((1 - inputHeightRatio) * 100)}%`;\n\n // Show empty state if no conversation selected\n if (!imageId) {\n return (\n <div className={cn(\"flex flex-col h-full bg-background\", className)}>\n <div className=\"flex-1 flex items-center justify-center\">\n <div className=\"text-center text-muted-foreground\">\n <p className=\"text-lg font-medium mb-2\">No conversation selected</p>\n <p className=\"text-sm\">Select a conversation or start a new one</p>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\"flex flex-col h-full bg-background relative\", className)}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n {/* Header */}\n <ChatHeader agentName={agentName} status={status} messageCount={conversations.length} />\n\n {/* Message area */}\n <div style={{ height: messageHeight }} className=\"min-h-0\">\n <MessagePane>\n {conversations.map((conv) =>\n renderConversation(conv, streamingText, currentTextBlockId, interrupt)\n )}\n </MessagePane>\n </div>\n\n {/* Input area */}\n <div style={{ height: inputHeight }} className=\"min-h-0\">\n <InputPane\n onSend={(content) => {\n // Pass content directly - useAgent now supports multimodal\n send(content);\n }}\n onStop={interrupt}\n isLoading={isLoading}\n placeholder={placeholder}\n toolbarItems={toolbarItems}\n toolbarRightItems={toolbarRightItems}\n onToolbarItemClick={handleToolbarClick}\n droppedFiles={droppedFiles}\n onDroppedFilesProcessed={handleDroppedFilesProcessed}\n />\n </div>\n\n {/* Full-area drop overlay - dark mask style */}\n {isDragging && (\n <div className=\"absolute inset-0 z-50 flex flex-col items-center justify-center bg-black/60 pointer-events-none\">\n <div className=\"w-20 h-20 mb-4 rounded-2xl bg-primary flex items-center justify-center\">\n <svg\n className=\"w-10 h-10 text-primary-foreground\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\"\n />\n </svg>\n </div>\n <p className=\"text-white text-lg\">Drop to send</p>\n </div>\n )}\n </div>\n );\n}\n",
28
93
  "/**\n * Conversation Types\n *\n * Conversation-first design for chat UI rendering.\n * Conversation = one party's complete utterance in a turn.\n * Block = content unit within a Conversation (TextBlock, ToolBlock, ImageBlock, etc.).\n *\n * Data flow:\n * Message (backend) → Conversation (UI layer) → Block (sub-components)\n *\n * Terminology:\n * - Turn = UserConversation + AssistantConversation\n * - AssistantConversation may contain multiple backend messages (due to tool calls)\n * - Blocks are rendered in order: text, tool, text, tool, ...\n */\n\n// ============================================================================\n// Block Types (内容单元)\n// ============================================================================\n\n/**\n * Block base interface\n */\ninterface BlockBase {\n /** Block id */\n id: string;\n /** Timestamp when block was created */\n timestamp: number;\n}\n\n/**\n * Text block status\n */\nexport type TextBlockStatus = \"streaming\" | \"completed\";\n\n/**\n * Text block data - text content in AssistantConversation\n */\nexport interface TextBlockData extends BlockBase {\n type: \"text\";\n /** Text content */\n content: string;\n /** Block status */\n status: TextBlockStatus;\n}\n\n/**\n * Tool block status\n * - planning: AI is generating tool input (tool_use_start received, waiting for complete input)\n * - executing: Tool input complete, tool is executing\n * - success: Tool execution completed successfully\n * - error: Tool execution failed\n */\nexport type ToolBlockStatus = \"planning\" | \"executing\" | \"success\" | \"error\";\n\n/**\n * Tool block data - tool call in AssistantConversation\n */\nexport interface ToolBlockData extends BlockBase {\n type: \"tool\";\n /** Tool call id (for matching result) */\n toolCallId: string;\n /** Tool name */\n name: string;\n /** Tool input parameters */\n input: unknown;\n /** Execution status */\n status: ToolBlockStatus;\n /** Tool output (when completed) */\n output?: unknown;\n /** Start time in milliseconds (for duration calculation) */\n startTime?: number;\n /** Execution duration in seconds */\n duration?: number;\n}\n\n/**\n * Image block data - image content (future)\n */\nexport interface ImageBlockData extends BlockBase {\n type: \"image\";\n /** Image URL */\n url: string;\n /** Alt text */\n alt?: string;\n}\n\n/**\n * Union type for all block types\n */\nexport type BlockData = TextBlockData | ToolBlockData | ImageBlockData;\n\n// ============================================================================\n// Type Guards for Blocks\n// ============================================================================\n\nexport function isTextBlock(block: BlockData): block is TextBlockData {\n return block.type === \"text\";\n}\n\nexport function isToolBlock(block: BlockData): block is ToolBlockData {\n return block.type === \"tool\";\n}\n\nexport function isImageBlock(block: BlockData): block is ImageBlockData {\n return block.type === \"image\";\n}\n\n// ============================================================================\n// Conversation Types (主组件)\n// ============================================================================\n\n/**\n * User conversation status\n */\nexport type UserConversationStatus = \"pending\" | \"success\" | \"error\" | \"interrupted\";\n\n/**\n * User conversation data - user's message\n */\nexport interface UserConversationData {\n type: \"user\";\n /** Conversation id */\n id: string;\n /** Message content (string for text-only, array for multimodal) */\n content: string | import(\"agentxjs\").UserContentPart[];\n /** Timestamp */\n timestamp: number;\n /** Send status */\n status: UserConversationStatus;\n /** Error code (if status is error) */\n errorCode?: string;\n}\n\n/**\n * Assistant conversation status (5-state lifecycle)\n * - queued: user sent message, waiting for backend to receive\n * - processing: backend received, preparing to process (conversation_start)\n * - thinking: AI is thinking (conversation_thinking)\n * - streaming: AI is outputting text (conversation_responding / text_delta)\n * - completed: AI finished responding (conversation_end)\n */\nexport type AssistantConversationStatus =\n | \"queued\"\n | \"processing\"\n | \"thinking\"\n | \"streaming\"\n | \"completed\";\n\n/**\n * Assistant conversation data - AI's response with blocks\n * One AssistantConversation may contain multiple backend messages (due to tool call loops)\n * All content is stored in blocks array (TextBlock, ToolBlock, etc.)\n */\nexport interface AssistantConversationData {\n type: \"assistant\";\n /** Conversation id - frontend instance ID, never changes once created */\n id: string;\n /** Backend message ids - accumulated from multiple message_start events */\n messageIds: string[];\n /** Timestamp */\n timestamp: number;\n /** Response status */\n status: AssistantConversationStatus;\n /** Content blocks - text, tools, images, etc. rendered in order */\n blocks: BlockData[];\n}\n\n/**\n * Error conversation data - error message\n */\nexport interface ErrorConversationData {\n type: \"error\";\n /** Conversation id */\n id: string;\n /** Error message content */\n content: string;\n /** Timestamp */\n timestamp: number;\n /** Error code */\n errorCode?: string;\n}\n\n/**\n * Union type for all conversations\n */\nexport type ConversationData =\n | UserConversationData\n | AssistantConversationData\n | ErrorConversationData;\n\n// ============================================================================\n// Type Guards for Conversations\n// ============================================================================\n\nexport function isUserConversation(\n conversation: ConversationData\n): conversation is UserConversationData {\n return conversation.type === \"user\";\n}\n\nexport function isAssistantConversation(\n conversation: ConversationData\n): conversation is AssistantConversationData {\n return conversation.type === \"assistant\";\n}\n\nexport function isErrorConversation(\n conversation: ConversationData\n): conversation is ErrorConversationData {\n return conversation.type === \"error\";\n}\n",
29
94
  "/**\n * UserEntry - User message entry\n *\n * Displays user's message with right-aligned layout and status indicator.\n *\n * @example\n * ```tsx\n * <UserEntryComponent\n * entry={{\n * type: \"user\",\n * id: \"msg_123\",\n * content: \"Hello, can you help me?\",\n * timestamp: Date.now(),\n * status: \"success\",\n * }}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { Loader2, Check, AlertCircle, PauseCircle } from \"lucide-react\";\nimport { MessageAvatar } from \"~/components/message/MessageAvatar\";\nimport { MessageContent } from \"~/components/message/MessageContent\";\nimport { cn } from \"~/utils/utils\";\nimport type { UserConversationData, UserConversationStatus } from \"./types\";\n\nexport interface UserEntryProps {\n /**\n * User conversation data\n */\n entry: UserConversationData;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Status icon component\n */\nconst StatusIcon: React.FC<{ status: UserConversationStatus }> = ({ status }) => {\n const iconClassName = \"w-4 h-4 flex-shrink-0\";\n\n switch (status) {\n case \"pending\":\n return <Loader2 className={cn(iconClassName, \"animate-spin text-muted-foreground\")} />;\n case \"success\":\n return <Check className={cn(iconClassName, \"text-green-500\")} />;\n case \"error\":\n return <AlertCircle className={cn(iconClassName, \"text-red-500\")} />;\n case \"interrupted\":\n return <PauseCircle className={cn(iconClassName, \"text-gray-500\")} />;\n default:\n return null;\n }\n};\n\n/**\n * UserEntry Component\n */\nexport const UserEntry: React.FC<UserEntryProps> = ({ entry, className }) => {\n return (\n <div className={cn(\"flex gap-3 py-2 flex-row-reverse\", className)}>\n <MessageAvatar role=\"user\" />\n <div className=\"flex items-start gap-2 max-w-[80%]\">\n <div className=\"rounded-lg px-4 py-2 bg-primary text-primary-foreground\">\n <MessageContent content={entry.content} className=\"text-sm\" />\n </div>\n <div className=\"flex items-center h-8\">\n <StatusIcon status={entry.status} />\n </div>\n </div>\n </div>\n );\n};\n\nexport default UserEntry;\n",
30
95
  "/**\n * MessageAvatar - Display avatar for different message roles\n *\n * Pure UI component that renders a circular avatar based on message role.\n */\n\nimport * as React from \"react\";\nimport type { MessageRole } from \"agentxjs\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface MessageAvatarProps {\n /**\n * Message role\n */\n role: MessageRole;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * MessageAvatar Component\n */\nexport const MessageAvatar: React.FC<MessageAvatarProps> = ({ role, className }) => {\n const avatarClasses = cn(\n \"w-8 h-8 rounded-full flex items-center justify-center text-xs font-medium flex-shrink-0\",\n className\n );\n\n switch (role) {\n case \"user\":\n return <div className={cn(avatarClasses, \"bg-primary text-primary-foreground\")}>U</div>;\n case \"assistant\":\n return <div className={cn(avatarClasses, \"bg-secondary text-secondary-foreground\")}>A</div>;\n case \"system\":\n return <div className={cn(avatarClasses, \"bg-muted text-muted-foreground\")}>S</div>;\n case \"tool\":\n return <div className={cn(avatarClasses, \"bg-accent text-accent-foreground\")}>T</div>;\n case \"error\":\n return (\n <div className={cn(avatarClasses, \"bg-destructive text-destructive-foreground\")}>!</div>\n );\n default:\n return null;\n }\n};\n",
31
- "import * as React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\n/**\n * Normalize markdown text where providers mistakenly wrap short inline code with single-line triple fences.\n */\nfunction normalizeInlineCodeFences(text: string): string {\n if (!text || typeof text !== \"string\") return text;\n try {\n return text.replace(/```\\s*([^\\n\\r]+?)\\s*```/g, \"`$1`\");\n } catch {\n return text;\n }\n}\n\n/**\n * Code component for markdown with copy functionality\n */\nconst CodeComponent = ({ node, inline, className, children, ...props }: any) => {\n const [copied, setCopied] = React.useState(false);\n const raw = Array.isArray(children) ? children.join(\"\") : String(children ?? \"\");\n const looksMultiline = /[\\r\\n]/.test(raw);\n const inlineDetected = inline || (node && node.type === \"inlineCode\");\n const shouldInline = inlineDetected || !looksMultiline;\n\n if (shouldInline) {\n return (\n <code\n className={`font-mono text-[0.9em] px-1.5 py-0.5 rounded-md bg-gray-100 text-gray-900 border border-gray-200 dark:bg-gray-800/60 dark:text-gray-100 dark:border-gray-700 whitespace-pre-wrap break-words ${className || \"\"}`}\n {...props}\n >\n {children}\n </code>\n );\n }\n\n const handleCopy = () => {\n const doSet = () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n };\n try {\n if (navigator?.clipboard?.writeText) {\n navigator.clipboard\n .writeText(raw)\n .then(doSet)\n .catch(() => fallbackCopy(raw, doSet));\n } else {\n fallbackCopy(raw, doSet);\n }\n } catch {\n // Fallback copy will be handled if clipboard API fails\n }\n };\n\n const fallbackCopy = (text: string, callback: () => void) => {\n const ta = document.createElement(\"textarea\");\n ta.value = text;\n ta.style.position = \"fixed\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n try {\n document.execCommand(\"copy\");\n } catch {\n // execCommand may fail in some browsers\n }\n document.body.removeChild(ta);\n callback();\n };\n\n return (\n <div className=\"relative group my-2\">\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"absolute top-2 right-2 z-10 opacity-0 group-hover:opacity-100 transition-opacity text-xs px-2 py-1 rounded-md bg-gray-700/80 hover:bg-gray-700 text-white\"\n >\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n <pre className=\"bg-gray-900 border border-gray-700/40 rounded-lg p-3 overflow-x-auto\">\n <code className={`text-gray-100 text-sm font-mono ${className || \"\"}`} {...props}>\n {children}\n </code>\n </pre>\n </div>\n );\n};\n\n/**\n * Common markdown components with custom styling\n */\nconst markdownComponents = {\n code: CodeComponent,\n blockquote: ({ children }: any) => (\n <blockquote className=\"border-l-4 border-gray-300 dark:border-gray-600 pl-4 italic my-2\">\n {children}\n </blockquote>\n ),\n a: ({ href, children }: any) => (\n <a\n href={href}\n className=\"text-blue-600 dark:text-blue-400 hover:underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children}\n </a>\n ),\n p: ({ children }: any) => <div className=\"mb-2 last:mb-0 text-black\">{children}</div>,\n};\n\nexport interface MarkdownTextProps {\n /**\n * Markdown content to render\n */\n children: string;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * MarkdownText - Renders markdown content with syntax highlighting and custom styling\n *\n * @example\n * ```tsx\n * <MarkdownText>\n * # Hello World\n * This is **bold** and this is `code`\n * </MarkdownText>\n * ```\n */\nexport function MarkdownText({ children, className }: MarkdownTextProps): React.ReactElement {\n const content = normalizeInlineCodeFences(String(children ?? \"\"));\n return (\n <div className={className}>\n <ReactMarkdown remarkPlugins={[remarkGfm]} components={markdownComponents}>\n {content}\n </ReactMarkdown>\n </div>\n );\n}\n",
96
+ "import * as React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\n/**\n * Normalize markdown text where providers mistakenly wrap short inline code with single-line triple fences.\n */\nfunction normalizeInlineCodeFences(text: string): string {\n if (!text || typeof text !== \"string\") return text;\n try {\n return text.replace(/```\\s*([^\\n\\r]+?)\\s*```/g, \"`$1`\");\n } catch {\n return text;\n }\n}\n\n/**\n * Code component for markdown with copy functionality\n */\nconst CodeComponent = ({ node, inline, className, children, ...props }: any) => {\n const [copied, setCopied] = React.useState(false);\n const raw = Array.isArray(children) ? children.join(\"\") : String(children ?? \"\");\n const looksMultiline = /[\\r\\n]/.test(raw);\n const inlineDetected = inline || (node && node.type === \"inlineCode\");\n const shouldInline = inlineDetected || !looksMultiline;\n\n if (shouldInline) {\n return (\n <code\n className={`font-mono text-[0.9em] px-1.5 py-0.5 rounded-md bg-gray-100 text-gray-900 border border-gray-200 dark:bg-gray-800/60 dark:text-gray-100 dark:border-gray-700 whitespace-pre-wrap break-words ${className || \"\"}`}\n {...props}\n >\n {children}\n </code>\n );\n }\n\n const handleCopy = () => {\n const doSet = () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n };\n try {\n if (navigator?.clipboard?.writeText) {\n navigator.clipboard\n .writeText(raw)\n .then(doSet)\n .catch(() => fallbackCopy(raw, doSet));\n } else {\n fallbackCopy(raw, doSet);\n }\n } catch {\n // Fallback copy will be handled if clipboard API fails\n }\n };\n\n const fallbackCopy = (text: string, callback: () => void) => {\n const ta = document.createElement(\"textarea\");\n ta.value = text;\n ta.style.position = \"fixed\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n try {\n document.execCommand(\"copy\");\n } catch {\n // execCommand may fail in some browsers\n }\n document.body.removeChild(ta);\n callback();\n };\n\n return (\n <div className=\"relative group my-2\">\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"absolute top-2 right-2 z-10 opacity-0 group-hover:opacity-100 transition-opacity text-xs px-2 py-1 rounded-md bg-gray-700/80 hover:bg-gray-700 text-white\"\n >\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n <pre className=\"bg-gray-900 border border-gray-700/40 rounded-lg p-3 overflow-x-auto\">\n <code className={`text-gray-100 text-sm font-mono ${className || \"\"}`} {...props}>\n {children}\n </code>\n </pre>\n </div>\n );\n};\n\n/**\n * Common markdown components with custom styling\n */\nconst markdownComponents = {\n code: CodeComponent,\n blockquote: ({ children }: any) => (\n <blockquote className=\"border-l-4 border-gray-300 dark:border-gray-600 pl-4 italic my-2\">\n {children}\n </blockquote>\n ),\n a: ({ href, children }: any) => (\n <a\n href={href}\n className=\"text-blue-600 dark:text-blue-400 hover:underline\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children}\n </a>\n ),\n p: ({ children }: any) => <div className=\"mb-2 last:mb-0\">{children}</div>,\n};\n\nexport interface MarkdownTextProps {\n /**\n * Markdown content to render\n */\n children: string;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * MarkdownText - Renders markdown content with syntax highlighting and custom styling\n *\n * @example\n * ```tsx\n * <MarkdownText>\n * # Hello World\n * This is **bold** and this is `code`\n * </MarkdownText>\n * ```\n */\nexport function MarkdownText({ children, className }: MarkdownTextProps): React.ReactElement {\n const content = normalizeInlineCodeFences(String(children ?? \"\"));\n return (\n <div className={className}>\n <ReactMarkdown remarkPlugins={[remarkGfm]} components={markdownComponents}>\n {content}\n </ReactMarkdown>\n </div>\n );\n}\n",
32
97
  "/**\n * ImageBlock - Display image in message content\n *\n * Renders image from base64 data or URL with:\n * - Loading state\n * - Error state\n * - Click to enlarge (lightbox)\n */\n\nimport * as React from \"react\";\nimport { ImageIcon, X, Loader2 } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface ImageBlockProps {\n /**\n * Image source (base64 data or URL)\n */\n src: string;\n /**\n * Image alt text\n */\n alt?: string;\n /**\n * Media type (e.g., \"image/png\")\n */\n mediaType?: string;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * ImageBlock Component\n */\nexport const ImageBlock: React.FC<ImageBlockProps> = ({\n src,\n alt = \"Image\",\n mediaType,\n className,\n}) => {\n const [isLoading, setIsLoading] = React.useState(true);\n const [hasError, setHasError] = React.useState(false);\n const [isOpen, setIsOpen] = React.useState(false);\n\n // Build image src - handle base64 data\n const imageSrc = React.useMemo(() => {\n // If already a data URL or http URL, use as-is\n if (src.startsWith(\"data:\") || src.startsWith(\"http\")) {\n return src;\n }\n // Otherwise, assume it's raw base64 data\n const type = mediaType || \"image/png\";\n return `data:${type};base64,${src}`;\n }, [src, mediaType]);\n\n const handleLoad = () => {\n setIsLoading(false);\n setHasError(false);\n };\n\n const handleError = () => {\n setIsLoading(false);\n setHasError(true);\n };\n\n const handleClick = () => {\n if (!hasError) {\n setIsOpen(true);\n }\n };\n\n const handleClose = () => {\n setIsOpen(false);\n };\n\n // Close on escape key\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen]);\n\n return (\n <>\n {/* Thumbnail */}\n <div\n className={cn(\n \"relative inline-block rounded-lg overflow-hidden\",\n \"border border-border bg-muted/30\",\n \"max-w-xs cursor-pointer\",\n \"transition-transform hover:scale-[1.02]\",\n className\n )}\n onClick={handleClick}\n >\n {/* Loading state */}\n {isLoading && !hasError && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-muted/50\">\n <Loader2 className=\"w-6 h-6 animate-spin text-muted-foreground\" />\n </div>\n )}\n\n {/* Error state */}\n {hasError && (\n <div className=\"flex items-center justify-center w-32 h-32 bg-muted/50\">\n <div className=\"text-center text-muted-foreground\">\n <ImageIcon className=\"w-8 h-8 mx-auto mb-1\" />\n <span className=\"text-xs\">Failed to load</span>\n </div>\n </div>\n )}\n\n {/* Image */}\n <img\n src={imageSrc}\n alt={alt}\n onLoad={handleLoad}\n onError={handleError}\n className={cn(\n \"max-w-full h-auto max-h-64 object-contain\",\n isLoading && \"invisible\",\n hasError && \"hidden\"\n )}\n />\n </div>\n\n {/* Lightbox Modal */}\n {isOpen && (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/80\"\n onClick={handleClose}\n >\n {/* Close button */}\n <button\n onClick={handleClose}\n className={cn(\n \"absolute top-4 right-4 p-2 rounded-full\",\n \"bg-white/10 hover:bg-white/20 text-white\",\n \"transition-colors\"\n )}\n >\n <X className=\"w-6 h-6\" />\n </button>\n\n {/* Full size image */}\n <img\n src={imageSrc}\n alt={alt}\n onClick={(e) => e.stopPropagation()}\n className=\"max-w-[90vw] max-h-[90vh] object-contain\"\n />\n </div>\n )}\n </>\n );\n};\n",
33
98
  "/**\n * FileBlock - Display file attachment in message content\n *\n * Renders file as a card with:\n * - File type icon\n * - Filename\n * - Download button\n */\n\nimport * as React from \"react\";\nimport { FileText, File, FileImage, Download } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface FileBlockProps {\n /**\n * File data (base64)\n */\n data: string;\n /**\n * File MIME type\n */\n mediaType: string;\n /**\n * Filename\n */\n filename?: string;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Get icon component based on media type\n */\nfunction getFileIcon(mediaType: string) {\n if (mediaType === \"application/pdf\") {\n return FileText;\n }\n if (mediaType.startsWith(\"image/\")) {\n return FileImage;\n }\n return File;\n}\n\n/**\n * Get human-readable file type\n */\nfunction getFileTypeLabel(mediaType: string): string {\n const typeMap: Record<string, string> = {\n \"application/pdf\": \"PDF\",\n \"text/plain\": \"Text\",\n \"text/csv\": \"CSV\",\n \"application/json\": \"JSON\",\n \"application/xml\": \"XML\",\n \"application/msword\": \"Word\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": \"Word\",\n \"application/vnd.ms-excel\": \"Excel\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": \"Excel\",\n };\n\n if (typeMap[mediaType]) {\n return typeMap[mediaType];\n }\n\n if (mediaType.startsWith(\"image/\")) {\n return mediaType.replace(\"image/\", \"\").toUpperCase();\n }\n\n // Extract subtype from MIME type\n const subtype = mediaType.split(\"/\")[1];\n return subtype ? subtype.toUpperCase() : \"File\";\n}\n\n/**\n * FileBlock Component\n */\nexport const FileBlock: React.FC<FileBlockProps> = ({ data, mediaType, filename, className }) => {\n const Icon = getFileIcon(mediaType);\n const typeLabel = getFileTypeLabel(mediaType);\n const displayName = filename || `file.${mediaType.split(\"/\")[1] || \"bin\"}`;\n\n // Build download URL\n const downloadUrl = React.useMemo(() => {\n if (data.startsWith(\"data:\")) {\n return data;\n }\n return `data:${mediaType};base64,${data}`;\n }, [data, mediaType]);\n\n const handleDownload = () => {\n const link = document.createElement(\"a\");\n link.href = downloadUrl;\n link.download = displayName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-3 px-3 py-2\",\n \"rounded-lg border border-border bg-muted/30\",\n \"max-w-xs\",\n className\n )}\n >\n {/* File icon */}\n <div className=\"flex-shrink-0 p-2 rounded-md bg-primary/10\">\n <Icon className=\"w-5 h-5 text-primary\" />\n </div>\n\n {/* File info */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm font-medium truncate\" title={displayName}>\n {displayName}\n </div>\n <div className=\"text-xs text-muted-foreground\">{typeLabel}</div>\n </div>\n\n {/* Download button */}\n <button\n onClick={handleDownload}\n className={cn(\n \"flex-shrink-0 p-1.5 rounded-md\",\n \"hover:bg-muted transition-colors\",\n \"text-muted-foreground hover:text-foreground\"\n )}\n title=\"Download\"\n >\n <Download className=\"w-4 h-4\" />\n </button>\n </div>\n );\n};\n",
34
99
  "/**\n * MessageContent - Render message content with Markdown and multimodal support\n *\n * Pure UI component that handles:\n * - String content (renders as Markdown)\n * - ContentPart array (renders text, images, files)\n * - Other content (renders as JSON)\n */\n\nimport * as React from \"react\";\nimport type { ContentPart } from \"agentxjs\";\nimport { MarkdownText } from \"~/components/typography/MarkdownText\";\nimport { ImageBlock } from \"./ImageBlock\";\nimport { FileBlock } from \"./FileBlock\";\n\nexport interface MessageContentProps {\n /**\n * Content to render\n * Can be string, ContentPart array, or any other structure\n */\n content: string | ContentPart[] | unknown;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Type guards for ContentPart types\n */\ninterface TextPartLike {\n type: \"text\";\n text: string;\n}\n\ninterface ImagePartLike {\n type: \"image\";\n data: string;\n mediaType: string;\n name?: string;\n}\n\ninterface FilePartLike {\n type: \"file\";\n data: string;\n mediaType: string;\n filename?: string;\n}\n\nfunction isTextPart(part: unknown): part is TextPartLike {\n return (\n typeof part === \"object\" &&\n part !== null &&\n \"type\" in part &&\n (part as { type: unknown }).type === \"text\" &&\n \"text\" in part &&\n typeof (part as { text: unknown }).text === \"string\"\n );\n}\n\nfunction isImagePart(part: unknown): part is ImagePartLike {\n return (\n typeof part === \"object\" &&\n part !== null &&\n \"type\" in part &&\n (part as { type: unknown }).type === \"image\" &&\n \"data\" in part &&\n \"mediaType\" in part\n );\n}\n\nfunction isFilePart(part: unknown): part is FilePartLike {\n return (\n typeof part === \"object\" &&\n part !== null &&\n \"type\" in part &&\n (part as { type: unknown }).type === \"file\" &&\n \"data\" in part &&\n \"mediaType\" in part\n );\n}\n\n/**\n * Check if content is a ContentPart array\n */\nfunction isContentPartArray(content: unknown): content is ContentPart[] {\n if (!Array.isArray(content)) return false;\n if (content.length === 0) return false;\n\n // Check if at least one item looks like a ContentPart\n return content.some(\n (part) =>\n typeof part === \"object\" &&\n part !== null &&\n \"type\" in part &&\n typeof (part as { type: unknown }).type === \"string\"\n );\n}\n\n/**\n * Check if content only contains text parts\n */\nfunction isTextOnly(parts: ContentPart[]): boolean {\n return parts.every((part) => isTextPart(part));\n}\n\n/**\n * Render a single ContentPart\n */\nconst ContentPartRenderer: React.FC<{ part: ContentPart; index: number }> = ({ part, index }) => {\n if (isTextPart(part)) {\n return <MarkdownText key={index}>{part.text}</MarkdownText>;\n }\n\n if (isImagePart(part)) {\n return (\n <ImageBlock\n key={index}\n src={part.data}\n mediaType={part.mediaType}\n alt={part.name}\n className=\"my-2\"\n />\n );\n }\n\n if (isFilePart(part)) {\n return (\n <FileBlock\n key={index}\n data={part.data}\n mediaType={part.mediaType}\n filename={part.filename}\n className=\"my-2\"\n />\n );\n }\n\n // Unknown part type - skip\n return null;\n};\n\n/**\n * MessageContent Component\n */\nexport const MessageContent: React.FC<MessageContentProps> = ({ content, className }) => {\n // Handle string content\n if (typeof content === \"string\") {\n return (\n <div className={className}>\n <MarkdownText>{content}</MarkdownText>\n </div>\n );\n }\n\n // Handle ContentPart[] array\n if (isContentPartArray(content)) {\n // Optimization: if only text parts, join and render as single Markdown\n if (isTextOnly(content)) {\n const text = content\n .filter(isTextPart)\n .map((p) => p.text)\n .join(\"\\n\");\n return (\n <div className={className}>\n <MarkdownText>{text}</MarkdownText>\n </div>\n );\n }\n\n // Mixed content - render each part\n return (\n <div className={className}>\n {content.map((part, index) => (\n <ContentPartRenderer key={index} part={part} index={index} />\n ))}\n </div>\n );\n }\n\n // For other non-string content, render as JSON\n return (\n <div className={className}>\n <pre className=\"text-xs bg-muted/50 p-2 rounded overflow-x-auto\">\n {JSON.stringify(content, null, 2)}\n </pre>\n </div>\n );\n};\n",
@@ -37,15 +102,14 @@
37
102
  "/**\n * ToolBlock - Tool execution block component\n *\n * Displays tool call with status, input, and output.\n * Used as a sub-component within AssistantEntry.\n *\n * @example\n * ```tsx\n * <ToolBlockComponent\n * block={{\n * id: \"msg_123\",\n * toolCallId: \"tool_456\",\n * name: \"Bash\",\n * input: { command: \"ls\" },\n * status: \"success\",\n * output: \"file1.txt\",\n * duration: 1.23,\n * }}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { ChevronDown, Loader2, CheckCircle2, XCircle, Wrench } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\nimport type { ToolBlockData, ToolBlockStatus } from \"../types\";\n\nexport interface ToolBlockProps {\n /**\n * Tool block data\n */\n block: ToolBlockData;\n /**\n * Default expanded state\n */\n defaultExpanded?: boolean;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Status configuration\n */\nconst statusConfig: Record<\n ToolBlockStatus,\n {\n icon: React.ReactNode;\n bgColor: string;\n borderColor: string;\n textColor: string;\n iconColor: string;\n label: string;\n }\n> = {\n planning: {\n icon: <Loader2 className=\"w-4 h-4 animate-spin\" />,\n bgColor: \"bg-amber-50 dark:bg-amber-950/30\",\n borderColor: \"border-amber-200 dark:border-amber-800\",\n textColor: \"text-amber-700 dark:text-amber-300\",\n iconColor: \"text-amber-500\",\n label: \"Planning...\",\n },\n executing: {\n icon: <Loader2 className=\"w-4 h-4 animate-spin\" />,\n bgColor: \"bg-blue-50 dark:bg-blue-950/30\",\n borderColor: \"border-blue-200 dark:border-blue-800\",\n textColor: \"text-blue-700 dark:text-blue-300\",\n iconColor: \"text-blue-500\",\n label: \"Executing...\",\n },\n success: {\n icon: <CheckCircle2 className=\"w-4 h-4\" />,\n bgColor: \"bg-green-50 dark:bg-green-950/30\",\n borderColor: \"border-green-200 dark:border-green-800\",\n textColor: \"text-green-700 dark:text-green-300\",\n iconColor: \"text-green-500\",\n label: \"Completed\",\n },\n error: {\n icon: <XCircle className=\"w-4 h-4\" />,\n bgColor: \"bg-red-50 dark:bg-red-950/30\",\n borderColor: \"border-red-200 dark:border-red-800\",\n textColor: \"text-red-700 dark:text-red-300\",\n iconColor: \"text-red-500\",\n label: \"Error\",\n },\n};\n\n/**\n * Format output for display\n */\nfunction formatOutput(output: unknown): string {\n if (typeof output === \"string\") {\n return output;\n }\n if (output === null || output === undefined) {\n return \"\";\n }\n return JSON.stringify(output, null, 2);\n}\n\n/**\n * ToolBlock component\n */\nexport function ToolBlock({\n block,\n defaultExpanded = false,\n className,\n}: ToolBlockProps): React.ReactElement {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\n const config = statusConfig[block.status];\n\n return (\n <div\n className={cn(\n \"w-full border rounded-lg overflow-hidden\",\n config.borderColor,\n config.bgColor,\n className\n )}\n >\n {/* Header - Clickable */}\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className={cn(\n \"w-full px-4 py-3 flex items-center justify-between\",\n \"hover:bg-black/5 dark:hover:bg-white/5 transition-colors\",\n config.textColor\n )}\n >\n <div className=\"flex items-center gap-3\">\n {/* Status Icon */}\n <span className={config.iconColor}>{config.icon}</span>\n\n {/* Tool Icon + Name */}\n <div className=\"flex items-center gap-2\">\n <Wrench className=\"w-4 h-4 opacity-60\" />\n <span className=\"font-medium font-mono text-sm\">{block.name}</span>\n </div>\n\n {/* Duration */}\n {block.duration !== undefined && block.status !== \"executing\" && (\n <span className=\"text-xs opacity-60\">• {block.duration.toFixed(2)}s</span>\n )}\n\n {/* Status Label (for planning and executing) */}\n {(block.status === \"planning\" || block.status === \"executing\") && (\n <span className=\"text-xs opacity-60\">• {config.label}</span>\n )}\n </div>\n\n {/* Expand/Collapse Icon */}\n <ChevronDown className={cn(\"w-4 h-4 transition-transform\", isExpanded && \"rotate-180\")} />\n </button>\n\n {/* Expanded Content */}\n {isExpanded && (\n <div className={cn(\"border-t px-4 py-3 space-y-3\", config.borderColor)}>\n {/* Tool Call ID */}\n <div className=\"text-xs opacity-60\">\n <span className=\"font-medium\">ID:</span>{\" \"}\n <span className=\"font-mono\">{block.toolCallId}</span>\n </div>\n\n {/* Input Section */}\n {block.input !== null &&\n block.input !== undefined &&\n typeof block.input === \"object\" &&\n Object.keys(block.input as Record<string, unknown>).length > 0 ? (\n <div>\n <div className=\"text-xs font-medium opacity-70 mb-1 uppercase tracking-wide\">\n Input\n </div>\n <div className=\"bg-white/50 dark:bg-black/20 rounded border border-current/10 p-2 overflow-x-auto\">\n <pre className=\"text-xs font-mono whitespace-pre-wrap break-all\">\n {JSON.stringify(block.input, null, 2)}\n </pre>\n </div>\n </div>\n ) : null}\n\n {/* Output Section */}\n {block.output !== undefined && block.status !== \"executing\" && (\n <div>\n <div className=\"text-xs font-medium opacity-70 mb-1 uppercase tracking-wide\">\n Output\n </div>\n <div className=\"bg-white/50 dark:bg-black/20 rounded border border-current/10 p-2 overflow-x-auto max-h-48 overflow-y-auto\">\n <pre className=\"text-xs font-mono whitespace-pre-wrap break-all\">\n {formatOutput(block.output)}\n </pre>\n </div>\n </div>\n )}\n\n {/* Waiting message */}\n {block.status === \"planning\" && (\n <div className=\"flex items-center gap-2 text-xs opacity-60 py-1\">\n <Loader2 className=\"w-3 h-3 animate-spin\" />\n <span>Generating input...</span>\n </div>\n )}\n {block.status === \"executing\" && (\n <div className=\"flex items-center gap-2 text-xs opacity-60 py-1\">\n <Loader2 className=\"w-3 h-3 animate-spin\" />\n <span>Waiting for result...</span>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport default ToolBlock;\n",
38
103
  "/**\n * AssistantToolbar - Toolbar for assistant message actions\n *\n * Displays action buttons below assistant messages:\n * - Copy, regenerate, like, dislike for completed messages\n * - \"esc to stop\" hint for streaming messages\n *\n * @example\n * ```tsx\n * <AssistantToolbar\n * status=\"completed\"\n * onCopy={() => handleCopy()}\n * onRegenerate={() => handleRegenerate()}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { Copy, RefreshCw, ThumbsUp, ThumbsDown } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\nimport type { AssistantConversationStatus } from \"./types\";\n\nexport interface AssistantToolbarProps {\n /**\n * Current status of the conversation\n */\n status: AssistantConversationStatus;\n /**\n * Callback when copy button is clicked\n */\n onCopy?: () => void;\n /**\n * Callback when regenerate button is clicked\n */\n onRegenerate?: () => void;\n /**\n * Callback when like button is clicked\n */\n onLike?: () => void;\n /**\n * Callback when dislike button is clicked\n */\n onDislike?: () => void;\n /**\n * Callback when stop is triggered (click or ESC)\n */\n onStop?: () => void;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Toolbar button component\n */\nconst ToolbarButton: React.FC<{\n icon: React.ReactNode;\n label: string;\n onClick?: () => void;\n}> = ({ icon, label, onClick }) => (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"p-1.5 rounded-md\",\n \"text-muted-foreground/60 hover:text-muted-foreground\",\n \"hover:bg-muted/50\",\n \"transition-colors duration-150\"\n )}\n title={label}\n >\n {icon}\n </button>\n);\n\n/**\n * AssistantToolbar Component\n */\nexport const AssistantToolbar: React.FC<AssistantToolbarProps> = ({\n status,\n onCopy,\n onRegenerate,\n onLike,\n onDislike,\n onStop,\n className,\n}) => {\n const isStreaming =\n status === \"queued\" ||\n status === \"processing\" ||\n status === \"thinking\" ||\n status === \"streaming\";\n\n const isCompleted = status === \"completed\";\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1 pt-1\",\n // Fade in animation\n \"animate-in fade-in duration-200\",\n className\n )}\n >\n {/* Streaming: show stop hint */}\n {isStreaming && onStop && (\n <span\n className=\"text-xs text-muted-foreground/40 cursor-pointer hover:text-muted-foreground/60 transition-colors select-none\"\n onClick={onStop}\n >\n esc to stop\n </span>\n )}\n\n {/* Completed: show action buttons */}\n {isCompleted && (\n <>\n {onCopy && (\n <ToolbarButton icon={<Copy className=\"w-3.5 h-3.5\" />} label=\"Copy\" onClick={onCopy} />\n )}\n {onRegenerate && (\n <ToolbarButton\n icon={<RefreshCw className=\"w-3.5 h-3.5\" />}\n label=\"Regenerate\"\n onClick={onRegenerate}\n />\n )}\n <div className=\"w-px h-4 bg-border mx-1\" />\n {onLike && (\n <ToolbarButton\n icon={<ThumbsUp className=\"w-3.5 h-3.5\" />}\n label=\"Like\"\n onClick={onLike}\n />\n )}\n {onDislike && (\n <ToolbarButton\n icon={<ThumbsDown className=\"w-3.5 h-3.5\" />}\n label=\"Dislike\"\n onClick={onDislike}\n />\n )}\n </>\n )}\n </div>\n );\n};\n\nexport default AssistantToolbar;\n",
39
104
  "/**\n * ErrorEntry - Error message entry\n *\n * Displays error message with red styling.\n *\n * @example\n * ```tsx\n * <ErrorEntryComponent\n * entry={{\n * type: \"error\",\n * id: \"err_123\",\n * content: \"Failed to connect to server\",\n * timestamp: Date.now(),\n * errorCode: \"CONNECTION_ERROR\",\n * }}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { MessageAvatar } from \"~/components/message/MessageAvatar\";\nimport { cn } from \"~/utils/utils\";\nimport type { ErrorConversationData } from \"./types\";\n\nexport interface ErrorEntryProps {\n /**\n * Error conversation data\n */\n entry: ErrorConversationData;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * ErrorEntry Component\n */\nexport const ErrorEntry: React.FC<ErrorEntryProps> = ({ entry, className }) => {\n return (\n <div className={cn(\"flex gap-3 py-2\", className)}>\n <MessageAvatar role=\"error\" />\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-xs text-destructive mb-1\">\n Error{entry.errorCode ? ` (${entry.errorCode})` : \"\"}\n </div>\n <div className=\"bg-destructive/10 border border-destructive/30 rounded-lg px-4 py-2 text-sm text-destructive\">\n {entry.content}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ErrorEntry;\n",
40
- "/**\n * ChatHeader - Header component for Chat interface\n *\n * Displays current agent information, status, and actions.\n *\n * @example\n * ```tsx\n * <ChatHeader\n * agentName=\"Assistant\"\n * status=\"thinking\"\n * messageCount={5}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { MessageSquare, Loader2 } from \"lucide-react\";\nimport type { AgentState } from \"agentxjs\";\nimport { Badge } from \"~/components/element/Badge\";\nimport { cn } from \"~/utils\";\n\nexport interface ChatHeaderProps {\n /**\n * Agent name to display\n */\n agentName?: string;\n /**\n * Current agent status\n */\n status?: AgentState;\n /**\n * Number of messages in conversation\n */\n messageCount?: number;\n /**\n * Additional actions on the right side\n */\n actions?: React.ReactNode;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Get status display info\n */\nfunction getStatusInfo(status?: AgentState): {\n text: string;\n variant: \"default\" | \"secondary\" | \"outline\";\n} {\n switch (status) {\n case \"thinking\":\n return { text: \"Thinking\", variant: \"default\" };\n case \"responding\":\n return { text: \"Responding\", variant: \"default\" };\n case \"planning_tool\":\n return { text: \"Planning\", variant: \"default\" };\n case \"awaiting_tool_result\":\n return { text: \"Executing\", variant: \"default\" };\n case \"error\":\n return { text: \"Error\", variant: \"outline\" };\n default:\n return { text: \"Idle\", variant: \"secondary\" };\n }\n}\n\n/**\n * ChatHeader component\n */\nexport function ChatHeader({\n agentName = \"New Conversation\",\n status = \"idle\",\n messageCount = 0,\n actions,\n className,\n}: ChatHeaderProps): React.ReactElement {\n const statusInfo = getStatusInfo(status);\n const isActive = status !== \"idle\";\n\n return (\n <div className={cn(\"px-4 py-3 border-b border-border bg-background\", className)}>\n <div className=\"flex items-center justify-between\">\n {/* Left: Agent info */}\n <div className=\"flex items-center gap-3 min-w-0 flex-1\">\n {/* Icon */}\n <div className=\"bg-primary rounded-lg w-8 h-8 flex items-center justify-center text-primary-foreground flex-shrink-0 shadow-sm\">\n <MessageSquare className=\"w-4 h-4\" />\n </div>\n\n {/* Name and status */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <h2 className=\"font-semibold text-sm text-foreground truncate\">{agentName}</h2>\n {isActive && (\n <Loader2 className=\"w-3 h-3 text-muted-foreground animate-spin flex-shrink-0\" />\n )}\n </div>\n <div className=\"flex items-center gap-2 mt-0.5\">\n <Badge variant={statusInfo.variant} className=\"text-xs px-1.5 py-0\">\n {statusInfo.text}\n </Badge>\n {messageCount > 0 && (\n <span className=\"text-xs text-muted-foreground\">\n {messageCount} {messageCount === 1 ? \"message\" : \"messages\"}\n </span>\n )}\n </div>\n </div>\n </div>\n\n {/* Right: Actions */}\n {actions && <div className=\"flex items-center gap-2 ml-4\">{actions}</div>}\n </div>\n </div>\n );\n}\n",
41
- "import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"~/utils/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n // Neutral - System metadata\n default: \"border-transparent bg-slate-100 text-slate-700 hover:bg-slate-200\",\n // Computational - Blue tones\n primary: \"border-transparent bg-blue-100 text-blue-700 hover:bg-blue-200\",\n // Generative - Amber tones\n secondary: \"border-transparent bg-amber-100 text-amber-700 hover:bg-amber-200\",\n // Success state\n success: \"border-transparent bg-success text-success-foreground hover:bg-success/80\",\n // Warning state\n warning: \"border-transparent bg-warning text-warning-foreground hover:bg-warning/80\",\n // Info state\n info: \"border-transparent bg-info text-info-foreground hover:bg-info/80\",\n // Error/Destructive state\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n // Outline variant\n outline: \"text-foreground border-border\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps): React.ReactElement {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n",
105
+ "/**\n * ChatHeader - Header component for Chat interface\n *\n * Displays current agent information, status, and actions.\n *\n * @example\n * ```tsx\n * <ChatHeader\n * agentName=\"Assistant\"\n * status=\"thinking\"\n * messageCount={5}\n * />\n * ```\n */\n\nimport * as React from \"react\";\nimport { MessageSquare, Loader2 } from \"lucide-react\";\nimport type { AgentState } from \"agentxjs\";\nimport { Badge } from \"~/components/ui\";\nimport { cn } from \"~/utils\";\n\nexport interface ChatHeaderProps {\n /**\n * Agent name to display\n */\n agentName?: string;\n /**\n * Current agent status\n */\n status?: AgentState;\n /**\n * Number of messages in conversation\n */\n messageCount?: number;\n /**\n * Additional actions on the right side\n */\n actions?: React.ReactNode;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Get status display info\n */\nfunction getStatusInfo(status?: AgentState): {\n text: string;\n variant: \"default\" | \"secondary\" | \"outline\";\n} {\n switch (status) {\n case \"thinking\":\n return { text: \"Thinking\", variant: \"default\" };\n case \"responding\":\n return { text: \"Responding\", variant: \"default\" };\n case \"planning_tool\":\n return { text: \"Planning\", variant: \"default\" };\n case \"awaiting_tool_result\":\n return { text: \"Executing\", variant: \"default\" };\n case \"error\":\n return { text: \"Error\", variant: \"outline\" };\n default:\n return { text: \"Idle\", variant: \"secondary\" };\n }\n}\n\n/**\n * ChatHeader component\n */\nexport function ChatHeader({\n agentName = \"New Conversation\",\n status = \"idle\",\n messageCount = 0,\n actions,\n className,\n}: ChatHeaderProps): React.ReactElement {\n const statusInfo = getStatusInfo(status);\n const isActive = status !== \"idle\";\n\n return (\n <div className={cn(\"px-4 py-3 border-b border-border bg-background\", className)}>\n <div className=\"flex items-center justify-between\">\n {/* Left: Agent info */}\n <div className=\"flex items-center gap-3 min-w-0 flex-1\">\n {/* Icon */}\n <div className=\"bg-primary rounded-lg w-8 h-8 flex items-center justify-center text-primary-foreground flex-shrink-0 shadow-sm\">\n <MessageSquare className=\"w-4 h-4\" />\n </div>\n\n {/* Name and status */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <h2 className=\"font-semibold text-sm text-foreground truncate\">{agentName}</h2>\n {isActive && (\n <Loader2 className=\"w-3 h-3 text-muted-foreground animate-spin flex-shrink-0\" />\n )}\n </div>\n <div className=\"flex items-center gap-2 mt-0.5\">\n <Badge variant={statusInfo.variant} className=\"text-xs px-1.5 py-0\">\n {statusInfo.text}\n </Badge>\n {messageCount > 0 && (\n <span className=\"text-xs text-muted-foreground\">\n {messageCount} {messageCount === 1 ? \"message\" : \"messages\"}\n </span>\n )}\n </div>\n </div>\n </div>\n\n {/* Right: Actions */}\n {actions && <div className=\"flex items-center gap-2 ml-4\">{actions}</div>}\n </div>\n </div>\n );\n}\n",
42
106
  "/**\n * Toast - Notification component\n *\n * Displays temporary notifications to users.\n * Supports different severity levels and auto-dismiss.\n */\n\nimport * as React from \"react\";\n\nexport type ToastSeverity = \"info\" | \"warn\" | \"error\" | \"fatal\";\n\nexport interface ToastProps {\n /**\n * Unique identifier for the toast\n */\n id: string;\n\n /**\n * Toast message\n */\n message: string;\n\n /**\n * Severity level\n * @default \"info\"\n */\n severity?: ToastSeverity;\n\n /**\n * Auto dismiss duration in milliseconds\n * Set to 0 to disable auto dismiss\n * @default 5000\n */\n duration?: number;\n\n /**\n * Callback when toast is dismissed\n */\n onDismiss?: (id: string) => void;\n}\n\n/**\n * Toast component - Single toast notification\n */\nexport const Toast: React.FC<ToastProps> = ({\n id,\n message,\n severity = \"info\",\n duration = 5000,\n onDismiss,\n}) => {\n React.useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n onDismiss?.(id);\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [id, duration, onDismiss]);\n\n const getSeverityStyles = () => {\n switch (severity) {\n case \"fatal\":\n return \"bg-red-600 text-white border-red-700\";\n case \"error\":\n return \"bg-red-50 text-red-900 border-red-200\";\n case \"warn\":\n return \"bg-yellow-50 text-yellow-900 border-yellow-200\";\n case \"info\":\n default:\n return \"bg-blue-50 text-blue-900 border-blue-200\";\n }\n };\n\n const getSeverityIcon = () => {\n switch (severity) {\n case \"fatal\":\n case \"error\":\n return (\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n );\n case \"warn\":\n return (\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n );\n case \"info\":\n default:\n return (\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n );\n }\n };\n\n return (\n <div\n className={`\n flex items-start gap-3 p-4 rounded-lg border shadow-lg\n min-w-[300px] max-w-[500px]\n animate-slide-in\n ${getSeverityStyles()}\n `}\n role=\"alert\"\n >\n <div className=\"flex-shrink-0\">{getSeverityIcon()}</div>\n\n <div className=\"flex-1 pt-0.5\">\n <p className=\"text-sm font-medium\">{message}</p>\n </div>\n\n <button\n onClick={() => onDismiss?.(id)}\n className=\"flex-shrink-0 text-current hover:opacity-70 transition-opacity\"\n aria-label=\"Close\"\n >\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n );\n};\n\n/**\n * ToastContainer - Container for managing multiple toasts\n */\nexport interface ToastContainerProps {\n /**\n * Array of toasts to display\n */\n toasts: ToastProps[];\n\n /**\n * Position of the toast container\n * @default \"top-right\"\n */\n position?: \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\" | \"top-center\";\n\n /**\n * Maximum number of toasts to display\n * @default 3\n */\n maxToasts?: number;\n\n /**\n * Callback when toast is dismissed\n */\n onDismiss?: (id: string) => void;\n}\n\nexport const ToastContainer: React.FC<ToastContainerProps> = ({\n toasts,\n position = \"top-right\",\n maxToasts = 3,\n onDismiss,\n}) => {\n const getPositionStyles = () => {\n switch (position) {\n case \"top-left\":\n return \"top-4 left-4\";\n case \"bottom-right\":\n return \"bottom-4 right-4\";\n case \"bottom-left\":\n return \"bottom-4 left-4\";\n case \"top-center\":\n return \"top-4 left-1/2 -translate-x-1/2\";\n case \"top-right\":\n default:\n return \"top-4 right-4\";\n }\n };\n\n // Limit toasts to maxToasts\n const visibleToasts = toasts.slice(0, maxToasts);\n\n return (\n <div className={`fixed ${getPositionStyles()} z-50 flex flex-col gap-2`}>\n {visibleToasts.map((toast) => (\n <Toast key={toast.id} {...toast} onDismiss={onDismiss} />\n ))}\n </div>\n );\n};\n\n/**\n * useToast hook - Manage toasts state\n */\nexport interface UseToastReturn {\n toasts: ToastProps[];\n showToast: (message: string, severity?: ToastSeverity, duration?: number) => void;\n dismissToast: (id: string) => void;\n clearToasts: () => void;\n}\n\nexport const useToast = (): UseToastReturn => {\n const [toasts, setToasts] = React.useState<ToastProps[]>([]);\n\n const showToast = React.useCallback(\n (message: string, severity: ToastSeverity = \"info\", duration = 5000) => {\n const id = `toast-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n const newToast: ToastProps = {\n id,\n message,\n severity,\n duration,\n };\n setToasts((prev) => [...prev, newToast]);\n },\n []\n );\n\n const dismissToast = React.useCallback((id: string) => {\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const clearToasts = React.useCallback(() => {\n setToasts([]);\n }, []);\n\n return {\n toasts,\n showToast,\n dismissToast,\n clearToasts,\n };\n};\n",
43
107
  "/**\n * MobileStudio - Mobile chat workspace\n *\n * Top-level mobile component following Claude App's design:\n * - Full-screen chat\n * - Left drawer for conversation list\n * - Clean, minimalist interface\n *\n * Layout:\n * ```\n * ┌──────────────────────────────┐\n * │ ≡ Title + │ ← MobileHeader\n * ├──────────────────────────────┤\n * │ │\n * │ │\n * │ MobileMessagePane │\n * │ │\n * │ │\n * ├──────────────────────────────┤\n * │ [Message...] [>] │ ← MobileInputPane\n * └──────────────────────────────┘\n *\n * Drawer (slides from left):\n * ┌────────────────────┐\n * │ Conversations X │\n * ├────────────────────┤\n * │ [🔍 Search...] │\n * ├────────────────────┤\n * │ [+ New conversation]│\n * ├────────────────────┤\n * │ 🟢 Conversation 1 │\n * │ ⚫ Conversation 2 │\n * └────────────────────┘\n * ```\n *\n * @example\n * ```tsx\n * import { MobileStudio, useAgentX } from \"@agentxjs/ui\";\n *\n * function App() {\n * const agentx = useAgentX(\"ws://localhost:5200\");\n * return <MobileStudio agentx={agentx} />;\n * }\n * ```\n */\n\nimport * as React from \"react\";\nimport type { AgentX } from \"agentxjs\";\nimport { MobileDrawer } from \"~/components/mobile/MobileDrawer\";\nimport { MobileAgentList } from \"~/components/mobile/MobileAgentList\";\nimport { MobileChat } from \"~/components/mobile/MobileChat\";\nimport { ToastContainer, useToast } from \"~/components/element/Toast\";\nimport { useImages } from \"~/hooks\";\nimport { cn } from \"~/utils\";\n\nexport interface MobileStudioProps {\n /**\n * AgentX instance\n */\n agentx: AgentX | null;\n /**\n * Container ID for user isolation\n * @default \"default\"\n */\n containerId?: string;\n /**\n * Enable search in drawer\n * @default true\n */\n searchable?: boolean;\n /**\n * Input placeholder\n */\n placeholder?: string;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * MobileStudio Component\n *\n * A full-screen mobile chat workspace with drawer navigation.\n */\nexport function MobileStudio({\n agentx,\n containerId = \"default\",\n searchable = true,\n placeholder,\n className,\n}: MobileStudioProps): React.ReactElement {\n // State\n const [drawerOpen, setDrawerOpen] = React.useState(false);\n const [currentImageId, setCurrentImageId] = React.useState<string | null>(null);\n const [currentImageName, setCurrentImageName] = React.useState<string | undefined>(undefined);\n\n // Toast\n const { toasts, showToast, dismissToast } = useToast();\n\n // Images\n const { images, createImage, refresh } = useImages(agentx, {\n containerId,\n autoLoad: true,\n });\n\n // Handle select\n const handleSelect = React.useCallback(\n (imageId: string, _agentId: string | null) => {\n setCurrentImageId(imageId);\n const image = images.find((img) => img.imageId === imageId);\n setCurrentImageName(image?.name || \"Conversation\");\n setDrawerOpen(false);\n },\n [images]\n );\n\n // Handle new\n const handleNew = React.useCallback(async () => {\n if (!agentx) return;\n try {\n const image = await createImage({ name: \"New Conversation\" });\n await refresh();\n setCurrentImageId(image.imageId);\n setCurrentImageName(\"New Conversation\");\n setDrawerOpen(false);\n } catch (error) {\n console.error(\"Failed to create conversation:\", error);\n showToast(\"Failed to create conversation\", \"error\");\n }\n }, [agentx, createImage, refresh, showToast]);\n\n // Listen for system errors\n React.useEffect(() => {\n if (!agentx) return;\n\n const unsubscribe = agentx.on(\"system_error\", (event) => {\n const errorData = event.data as {\n message: string;\n severity?: \"info\" | \"warn\" | \"error\" | \"fatal\";\n };\n showToast(errorData.message, errorData.severity || \"error\");\n });\n\n return () => unsubscribe();\n }, [agentx, showToast]);\n\n return (\n <div className={cn(\"relative h-full w-full bg-background overflow-hidden\", className)}>\n {/* Main Chat */}\n <MobileChat\n agentx={agentx}\n imageId={currentImageId}\n agentName={currentImageName}\n onMenuClick={() => setDrawerOpen(true)}\n onNewConversation={handleNew}\n placeholder={placeholder}\n />\n\n {/* Drawer */}\n <MobileDrawer open={drawerOpen} onOpenChange={setDrawerOpen}>\n <MobileAgentList\n agentx={agentx}\n containerId={containerId}\n selectedId={currentImageId}\n onSelect={handleSelect}\n onNew={async (imageId) => {\n setCurrentImageId(imageId);\n setCurrentImageName(\"New Conversation\");\n }}\n onClose={() => setDrawerOpen(false)}\n searchable={searchable}\n />\n </MobileDrawer>\n\n {/* Toast */}\n <ToastContainer toasts={toasts} onDismiss={dismissToast} position=\"top-center\" />\n </div>\n );\n}\n",
44
108
  "/**\n * MobileDrawer - Mobile drawer component using vaul\n *\n * A slide-out drawer for mobile navigation, following Claude App's minimalist design.\n * Supports swipe gestures and provides smooth animations.\n *\n * Note: Uses a local portal container to ensure correct z-index stacking\n * regardless of host application's DOM structure.\n */\n\nimport * as React from \"react\";\nimport { Drawer } from \"vaul\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface MobileDrawerProps {\n /**\n * Whether the drawer is open\n */\n open: boolean;\n /**\n * Callback when drawer open state changes\n */\n onOpenChange: (open: boolean) => void;\n /**\n * Drawer content\n */\n children: React.ReactNode;\n /**\n * Additional class name for drawer content\n */\n className?: string;\n /**\n * Container element for the portal. If not provided, uses internal container.\n */\n container?: HTMLElement | null;\n}\n\n/**\n * MobileDrawer Component\n *\n * A left-side drawer for mobile navigation using vaul library.\n * Provides gesture support and smooth animations.\n *\n * Uses a local portal container to avoid z-index conflicts with host applications.\n */\nexport const MobileDrawer: React.FC<MobileDrawerProps> = ({\n open,\n onOpenChange,\n children,\n className,\n container,\n}) => {\n const [portalContainer, setPortalContainer] = React.useState<HTMLElement | null>(null);\n\n return (\n <>\n {/* Local portal container - ensures drawer renders within component hierarchy */}\n <div\n ref={setPortalContainer}\n className=\"mobile-drawer-portal\"\n style={{ position: \"fixed\", inset: 0, zIndex: 9999, pointerEvents: open ? \"auto\" : \"none\" }}\n />\n <Drawer.Root open={open} onOpenChange={onOpenChange} direction=\"left\" handleOnly={false}>\n <Drawer.Portal container={container ?? portalContainer}>\n <Drawer.Overlay className=\"fixed inset-0 bg-black/40\" />\n <Drawer.Content\n className={cn(\n \"fixed left-0 top-0 bottom-0\",\n \"w-[280px] bg-background\",\n \"flex flex-col\",\n \"outline-none\",\n className\n )}\n style={{ backgroundColor: \"hsl(var(--background))\" }}\n >\n {children}\n </Drawer.Content>\n </Drawer.Portal>\n </Drawer.Root>\n </>\n );\n};\n\nMobileDrawer.displayName = \"MobileDrawer\";\n",
45
- "/**\n * MobileAgentList - Mobile agent/conversation list\n *\n * A mobile-optimized list following Claude App's design:\n * - Clean list items with good touch targets\n * - Swipe to delete (optional)\n * - Search at top\n * - New conversation button\n */\n\nimport * as React from \"react\";\nimport type { AgentX } from \"agentxjs\";\nimport { MessageSquare, Plus, Search, Trash2, X } from \"lucide-react\";\nimport { useImages } from \"~/hooks\";\nimport { cn } from \"~/utils/utils\";\n\n/**\n * Format timestamp to relative time string\n */\nfunction formatRelativeTime(timestamp: number): string {\n const now = Date.now();\n const diff = now - timestamp;\n const seconds = Math.floor(diff / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (days > 0) return `${days}d ago`;\n if (hours > 0) return `${hours}h ago`;\n if (minutes > 0) return `${minutes}m ago`;\n return \"Just now\";\n}\n\nexport interface MobileAgentListProps {\n /**\n * AgentX instance\n */\n agentx: AgentX | null;\n /**\n * Container ID\n */\n containerId?: string;\n /**\n * Selected image ID\n */\n selectedId?: string | null;\n /**\n * Callback when selecting a conversation\n */\n onSelect?: (imageId: string, agentId: string | null) => void;\n /**\n * Callback when creating new conversation\n */\n onNew?: (imageId: string) => void;\n /**\n * Callback when drawer should close\n */\n onClose?: () => void;\n /**\n * Show search\n */\n searchable?: boolean;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * MobileAgentList Component\n *\n * A mobile-optimized conversation list for the drawer.\n */\nexport const MobileAgentList: React.FC<MobileAgentListProps> = ({\n agentx,\n containerId = \"default\",\n selectedId,\n onSelect,\n onNew,\n onClose,\n searchable = true,\n className,\n}) => {\n const [searchQuery, setSearchQuery] = React.useState(\"\");\n const { images, isLoading, createImage, runImage, deleteImage, refresh } = useImages(agentx, {\n containerId,\n });\n\n // Filter images by search\n const filteredImages = React.useMemo(() => {\n if (!searchQuery.trim()) return images;\n const query = searchQuery.toLowerCase();\n return images.filter(\n (img) => img.name?.toLowerCase().includes(query) || img.imageId.toLowerCase().includes(query)\n );\n }, [images, searchQuery]);\n\n // Handle select\n const handleSelect = async (imageId: string) => {\n if (!agentx) return;\n try {\n const image = images.find((img) => img.imageId === imageId);\n if (!image) return;\n\n if (!image.online) {\n const { agentId } = await runImage(imageId);\n onSelect?.(imageId, agentId);\n } else {\n onSelect?.(imageId, image.agentId ?? null);\n }\n onClose?.();\n } catch (error) {\n console.error(\"Failed to select conversation:\", error);\n }\n };\n\n // Handle new\n const handleNew = async () => {\n if (!agentx) return;\n try {\n const image = await createImage({ name: \"New Conversation\" });\n await refresh();\n onNew?.(image.imageId);\n onClose?.();\n } catch (error) {\n console.error(\"Failed to create conversation:\", error);\n }\n };\n\n // Handle delete\n const handleDelete = async (e: React.MouseEvent, imageId: string) => {\n e.stopPropagation();\n try {\n await deleteImage(imageId);\n } catch (error) {\n console.error(\"Failed to delete conversation:\", error);\n }\n };\n\n return (\n <div className={cn(\"flex flex-col h-full bg-background\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 h-14 border-b border-border shrink-0\">\n <h2 className=\"text-lg font-semibold text-foreground\">Conversations</h2>\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"w-9 h-9 flex items-center justify-center\",\n \"rounded-full\",\n \"text-muted-foreground\",\n \"hover:bg-muted active:bg-muted/80\"\n )}\n aria-label=\"Close\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n {/* Search */}\n {searchable && (\n <div className=\"px-4 py-3 border-b border-border shrink-0\">\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\n <input\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder=\"Search...\"\n className={cn(\n \"w-full h-10 pl-10 pr-4\",\n \"bg-muted/50 rounded-lg\",\n \"text-sm text-foreground\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-primary/20\"\n )}\n />\n </div>\n </div>\n )}\n\n {/* New conversation button */}\n <div className=\"px-4 py-3 border-b border-border shrink-0\">\n <button\n type=\"button\"\n onClick={handleNew}\n className={cn(\n \"w-full h-12 flex items-center justify-center gap-2\",\n \"bg-primary text-primary-foreground\",\n \"rounded-lg\",\n \"font-medium text-sm\",\n \"active:scale-[0.98] transition-transform\"\n )}\n >\n <Plus className=\"w-5 h-5\" />\n New conversation\n </button>\n </div>\n\n {/* List */}\n <div\n className={cn(\"flex-1 overflow-y-auto\", \"scrollbar-none\", \"[&::-webkit-scrollbar]:hidden\")}\n >\n {isLoading ? (\n <div className=\"flex items-center justify-center h-32\">\n <div className=\"w-6 h-6 border-2 border-primary border-t-transparent rounded-full animate-spin\" />\n </div>\n ) : filteredImages.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-32 text-center px-4\">\n <MessageSquare className=\"w-8 h-8 text-muted-foreground/50 mb-2\" />\n <p className=\"text-sm text-muted-foreground\">\n {searchQuery ? \"No results found\" : \"No conversations yet\"}\n </p>\n </div>\n ) : (\n <div className=\"py-2\">\n {filteredImages.map((image) => (\n <button\n key={image.imageId}\n type=\"button\"\n onClick={() => handleSelect(image.imageId)}\n className={cn(\n \"w-full flex items-center gap-3 px-4 py-3\",\n \"text-left\",\n \"hover:bg-muted/50 active:bg-muted\",\n \"transition-colors\",\n selectedId === image.imageId && \"bg-muted\"\n )}\n >\n {/* Status indicator */}\n <span\n className={cn(\n \"w-2 h-2 rounded-full shrink-0\",\n image.online ? \"bg-green-500\" : \"bg-gray-400\"\n )}\n />\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-foreground truncate\">\n {image.name || \"Untitled\"}\n </p>\n {image.updatedAt && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {formatRelativeTime(image.updatedAt)}\n </p>\n )}\n </div>\n {/* Delete button */}\n <button\n type=\"button\"\n onClick={(e) => handleDelete(e, image.imageId)}\n className={cn(\n \"w-8 h-8 flex items-center justify-center\",\n \"rounded-full shrink-0\",\n \"text-muted-foreground\",\n \"hover:bg-destructive/10 hover:text-destructive\",\n \"opacity-0 group-hover:opacity-100\",\n \"transition-all\"\n )}\n aria-label=\"Delete\"\n >\n <Trash2 className=\"w-4 h-4\" />\n </button>\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nMobileAgentList.displayName = \"MobileAgentList\";\n",
109
+ "/**\n * MobileAgentList - Mobile agent/conversation list\n *\n * A mobile-optimized list following Claude App's design:\n * - Clean list items with good touch targets\n * - Swipe to delete (optional)\n * - Search at top\n * - New conversation button\n */\n\nimport * as React from \"react\";\nimport type { AgentX } from \"agentxjs\";\nimport { MessageSquare, Pencil, Plus, Search, Trash2, X } from \"lucide-react\";\nimport { useImages } from \"~/hooks\";\nimport { cn } from \"~/utils/utils\";\n\n/**\n * Format timestamp to relative time string\n */\nfunction formatRelativeTime(timestamp: number): string {\n const now = Date.now();\n const diff = now - timestamp;\n const seconds = Math.floor(diff / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (days > 0) return `${days}d ago`;\n if (hours > 0) return `${hours}h ago`;\n if (minutes > 0) return `${minutes}m ago`;\n return \"Just now\";\n}\n\nexport interface MobileAgentListProps {\n /**\n * AgentX instance\n */\n agentx: AgentX | null;\n /**\n * Container ID\n */\n containerId?: string;\n /**\n * Selected image ID\n */\n selectedId?: string | null;\n /**\n * Callback when selecting a conversation\n */\n onSelect?: (imageId: string, agentId: string | null) => void;\n /**\n * Callback when creating new conversation\n */\n onNew?: (imageId: string) => void;\n /**\n * Callback when drawer should close\n */\n onClose?: () => void;\n /**\n * Show search\n */\n searchable?: boolean;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * MobileAgentList Component\n *\n * A mobile-optimized conversation list for the drawer.\n */\nexport const MobileAgentList: React.FC<MobileAgentListProps> = ({\n agentx,\n containerId = \"default\",\n selectedId,\n onSelect,\n onNew,\n onClose,\n searchable = true,\n className,\n}) => {\n const [searchQuery, setSearchQuery] = React.useState(\"\");\n const [editingId, setEditingId] = React.useState<string | null>(null);\n const [editingName, setEditingName] = React.useState(\"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const { images, isLoading, createImage, runImage, deleteImage, updateImage, refresh } = useImages(\n agentx,\n {\n containerId,\n }\n );\n\n // Filter images by search\n const filteredImages = React.useMemo(() => {\n if (!searchQuery.trim()) return images;\n const query = searchQuery.toLowerCase();\n return images.filter(\n (img) => img.name?.toLowerCase().includes(query) || img.imageId.toLowerCase().includes(query)\n );\n }, [images, searchQuery]);\n\n // Handle select\n const handleSelect = async (imageId: string) => {\n if (!agentx) return;\n try {\n const image = images.find((img) => img.imageId === imageId);\n if (!image) return;\n\n if (!image.online) {\n const { agentId } = await runImage(imageId);\n onSelect?.(imageId, agentId);\n } else {\n onSelect?.(imageId, image.agentId ?? null);\n }\n onClose?.();\n } catch (error) {\n console.error(\"Failed to select conversation:\", error);\n }\n };\n\n // Handle new\n const handleNew = async () => {\n if (!agentx) return;\n try {\n const image = await createImage({ name: \"New Conversation\" });\n await refresh();\n onNew?.(image.imageId);\n onClose?.();\n } catch (error) {\n console.error(\"Failed to create conversation:\", error);\n }\n };\n\n // Handle delete\n const handleDelete = async (e: React.MouseEvent, imageId: string) => {\n e.stopPropagation();\n try {\n await deleteImage(imageId);\n } catch (error) {\n console.error(\"Failed to delete conversation:\", error);\n }\n };\n\n // Handle edit - start inline editing\n const handleEdit = (e: React.MouseEvent, imageId: string, currentName: string) => {\n e.stopPropagation();\n setEditingId(imageId);\n setEditingName(currentName);\n // Focus input after render\n setTimeout(() => inputRef.current?.focus(), 0);\n };\n\n // Handle save - save inline edit\n const handleSave = async (imageId: string) => {\n if (!editingName.trim()) {\n setEditingId(null);\n return;\n }\n try {\n await updateImage(imageId, { name: editingName.trim() });\n } catch (error) {\n console.error(\"Failed to rename conversation:\", error);\n }\n setEditingId(null);\n };\n\n // Handle cancel edit\n const handleCancelEdit = () => {\n setEditingId(null);\n setEditingName(\"\");\n };\n\n return (\n <div className={cn(\"flex flex-col h-full bg-background\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 h-14 border-b border-border shrink-0\">\n <h2 className=\"text-lg font-semibold text-foreground\">Conversations</h2>\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"w-9 h-9 flex items-center justify-center\",\n \"rounded-full\",\n \"text-muted-foreground\",\n \"hover:bg-muted active:bg-muted/80\"\n )}\n aria-label=\"Close\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n {/* Search */}\n {searchable && (\n <div className=\"px-4 py-3 border-b border-border shrink-0\">\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\n <input\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder=\"Search...\"\n className={cn(\n \"w-full h-10 pl-10 pr-4\",\n \"bg-muted/50 rounded-lg\",\n \"text-sm text-foreground\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-primary/20\"\n )}\n />\n </div>\n </div>\n )}\n\n {/* New conversation button */}\n <div className=\"px-4 py-3 border-b border-border shrink-0\">\n <button\n type=\"button\"\n onClick={handleNew}\n className={cn(\n \"w-full h-12 flex items-center justify-center gap-2\",\n \"bg-primary text-primary-foreground\",\n \"rounded-lg\",\n \"font-medium text-sm\",\n \"active:scale-[0.98] transition-transform\"\n )}\n >\n <Plus className=\"w-5 h-5\" />\n New conversation\n </button>\n </div>\n\n {/* List */}\n <div\n className={cn(\"flex-1 overflow-y-auto\", \"scrollbar-none\", \"[&::-webkit-scrollbar]:hidden\")}\n >\n {isLoading ? (\n <div className=\"flex items-center justify-center h-32\">\n <div className=\"w-6 h-6 border-2 border-primary border-t-transparent rounded-full animate-spin\" />\n </div>\n ) : filteredImages.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-32 text-center px-4\">\n <MessageSquare className=\"w-8 h-8 text-muted-foreground/50 mb-2\" />\n <p className=\"text-sm text-muted-foreground\">\n {searchQuery ? \"No results found\" : \"No conversations yet\"}\n </p>\n </div>\n ) : (\n <div className=\"py-2\">\n {filteredImages.map((image) => {\n const isEditing = editingId === image.imageId;\n\n return (\n <div\n key={image.imageId}\n className={cn(\n \"w-full flex items-center gap-3 px-4 py-3\",\n \"hover:bg-muted/50 active:bg-muted\",\n \"transition-colors\",\n selectedId === image.imageId && \"bg-muted\"\n )}\n onClick={() => !isEditing && handleSelect(image.imageId)}\n >\n {/* Status indicator */}\n <span\n className={cn(\n \"w-2 h-2 rounded-full shrink-0\",\n image.online ? \"bg-green-500\" : \"bg-gray-400\"\n )}\n />\n\n {/* Content */}\n {isEditing ? (\n // Inline edit mode\n <div className=\"flex-1 flex items-center gap-2\">\n <input\n ref={inputRef}\n type=\"text\"\n value={editingName}\n onChange={(e) => setEditingName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleSave(image.imageId);\n } else if (e.key === \"Escape\") {\n handleCancelEdit();\n }\n }}\n onBlur={() => handleSave(image.imageId)}\n className={cn(\n \"flex-1 h-8 px-2\",\n \"bg-background border border-input rounded-md\",\n \"text-sm text-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-primary/20\"\n )}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n ) : (\n // Normal display mode\n <>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-foreground truncate\">\n {image.name || \"Untitled\"}\n </p>\n {image.updatedAt && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {formatRelativeTime(image.updatedAt)}\n </p>\n )}\n </div>\n {/* Action buttons */}\n <div className=\"flex items-center gap-1 shrink-0\">\n {/* Edit button */}\n <button\n type=\"button\"\n onClick={(e) => handleEdit(e, image.imageId, image.name || \"Untitled\")}\n className={cn(\n \"w-8 h-8 flex items-center justify-center\",\n \"rounded-full\",\n \"text-muted-foreground\",\n \"hover:bg-primary/10 hover:text-primary\",\n \"active:bg-primary/20\",\n \"transition-colors\"\n )}\n aria-label=\"Edit\"\n >\n <Pencil className=\"w-4 h-4\" />\n </button>\n {/* Delete button */}\n <button\n type=\"button\"\n onClick={(e) => handleDelete(e, image.imageId)}\n className={cn(\n \"w-8 h-8 flex items-center justify-center\",\n \"rounded-full\",\n \"text-muted-foreground\",\n \"hover:bg-destructive/10 hover:text-destructive\",\n \"active:bg-destructive/20\",\n \"transition-colors\"\n )}\n aria-label=\"Delete\"\n >\n <Trash2 className=\"w-4 h-4\" />\n </button>\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nMobileAgentList.displayName = \"MobileAgentList\";\n",
46
110
  "/**\n * MobileHeader - Mobile header component\n *\n * A minimalist header following Claude App's design:\n * - Hamburger menu on left\n * - Title in center\n * - Optional action on right\n */\n\nimport * as React from \"react\";\nimport { Menu, Plus } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface MobileHeaderProps {\n /**\n * Header title\n */\n title?: string;\n /**\n * Callback when menu button is clicked\n */\n onMenuClick?: () => void;\n /**\n * Callback when action button is clicked\n */\n onActionClick?: () => void;\n /**\n * Custom action icon\n */\n actionIcon?: React.ReactNode;\n /**\n * Whether to show action button\n */\n showAction?: boolean;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * MobileHeader Component\n *\n * A simple, minimalist header with hamburger menu and optional action.\n */\nexport const MobileHeader: React.FC<MobileHeaderProps> = ({\n title,\n onMenuClick,\n onActionClick,\n actionIcon,\n showAction = true,\n className,\n}) => {\n return (\n <header\n className={cn(\n \"flex items-center justify-between\",\n \"h-14 px-4\",\n \"bg-background border-b border-border\",\n \"shrink-0\",\n className\n )}\n >\n {/* Left: Menu button */}\n <button\n type=\"button\"\n onClick={onMenuClick}\n className={cn(\n \"w-10 h-10 flex items-center justify-center\",\n \"rounded-full\",\n \"text-foreground\",\n \"hover:bg-muted active:bg-muted/80\",\n \"transition-colors\"\n )}\n aria-label=\"Open menu\"\n >\n <Menu className=\"w-5 h-5\" />\n </button>\n\n {/* Center: Title */}\n {title && (\n <h1 className=\"text-base font-medium text-foreground truncate max-w-[50%]\">{title}</h1>\n )}\n\n {/* Right: Action button */}\n {showAction ? (\n <button\n type=\"button\"\n onClick={onActionClick}\n className={cn(\n \"w-10 h-10 flex items-center justify-center\",\n \"rounded-full\",\n \"text-foreground\",\n \"hover:bg-muted active:bg-muted/80\",\n \"transition-colors\"\n )}\n aria-label=\"New conversation\"\n >\n {actionIcon || <Plus className=\"w-5 h-5\" />}\n </button>\n ) : (\n <div className=\"w-10 h-10\" /> // Spacer for alignment\n )}\n </header>\n );\n};\n\nMobileHeader.displayName = \"MobileHeader\";\n",
47
111
  "/**\n * MobileMessagePane - Mobile message display area\n *\n * A scrollable container for messages following Claude App's design:\n * - Large whitespace\n * - Hidden scrollbar\n * - Clean empty state\n */\n\nimport * as React from \"react\";\nimport { MessageSquare } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface MobileMessagePaneProps {\n /**\n * Message content (children)\n */\n children?: React.ReactNode;\n /**\n * Empty state configuration\n */\n emptyState?: {\n icon?: React.ReactNode;\n title: string;\n description?: string;\n };\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * MobileMessagePane Component\n *\n * A mobile-optimized message container with auto-scroll and hidden scrollbar.\n */\nexport const MobileMessagePane: React.ForwardRefExoticComponent<\n MobileMessagePaneProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, MobileMessagePaneProps>(\n (\n {\n children,\n emptyState = {\n icon: <MessageSquare className=\"w-8 h-8 text-muted-foreground/50\" />,\n title: \"Start a conversation\",\n description: \"Send a message to begin\",\n },\n className,\n },\n ref\n ) => {\n const scrollRef = React.useRef<HTMLDivElement>(null);\n\n // Auto-scroll to bottom when children change\n React.useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTop = scrollRef.current.scrollHeight;\n }\n }, [children]);\n\n // Check if empty\n const isEmpty =\n !children ||\n React.Children.count(children) === 0 ||\n (React.isValidElement(children) &&\n children.type === React.Fragment &&\n !children.props.children);\n\n return (\n <div ref={ref} className={cn(\"flex flex-col flex-1 min-h-0\", className)}>\n <div\n ref={scrollRef}\n className={cn(\n \"flex-1 overflow-y-auto\",\n \"px-4 py-4\",\n // Hide scrollbar but keep functionality\n \"scrollbar-none\",\n \"[&::-webkit-scrollbar]:hidden\",\n \"[-ms-overflow-style:none]\",\n \"[scrollbar-width:none]\"\n )}\n >\n {isEmpty ? (\n <div className=\"h-full flex flex-col items-center justify-center text-center px-8\">\n <div className=\"mb-4\">{emptyState.icon}</div>\n <h2 className=\"text-lg font-medium text-foreground mb-2\">{emptyState.title}</h2>\n {emptyState.description && (\n <p className=\"text-sm text-muted-foreground\">{emptyState.description}</p>\n )}\n </div>\n ) : (\n <div className=\"space-y-4\">{children}</div>\n )}\n </div>\n </div>\n );\n }\n);\n\nMobileMessagePane.displayName = \"MobileMessagePane\";\n",
48
- "/**\n * MobileInputPane - Mobile input area\n *\n * A minimalist input area following Claude App's design:\n * - Rounded corners\n * - Clean appearance\n * - Mobile keyboard handling\n */\n\nimport * as React from \"react\";\nimport { Send, Square } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface MobileInputPaneProps {\n /**\n * Callback when user sends a message\n */\n onSend?: (text: string) => void;\n /**\n * Callback when stop button is clicked\n */\n onStop?: () => void;\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether currently loading\n */\n isLoading?: boolean;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * MobileInputPane Component\n *\n * A mobile-optimized input area with clean, minimal design.\n */\nexport const MobileInputPane: React.ForwardRefExoticComponent<\n MobileInputPaneProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, MobileInputPaneProps>(\n (\n { onSend, onStop, disabled = false, isLoading = false, placeholder = \"Message...\", className },\n ref\n ) => {\n const [text, setText] = React.useState(\"\");\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n\n // Handle mobile keyboard (visual viewport API)\n React.useEffect(() => {\n if (typeof window === \"undefined\" || !window.visualViewport) return;\n\n const viewport = window.visualViewport;\n\n const handleResize = () => {\n // When keyboard opens, scroll input into view\n if (document.activeElement === textareaRef.current) {\n textareaRef.current?.scrollIntoView({ block: \"center\" });\n }\n };\n\n viewport.addEventListener(\"resize\", handleResize);\n return () => viewport.removeEventListener(\"resize\", handleResize);\n }, []);\n\n const handleSend = () => {\n if (!text.trim() || disabled || isLoading) return;\n onSend?.(text.trim());\n setText(\"\");\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n // Enter to send, Shift+Enter for new line\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault();\n handleSend();\n }\n };\n\n const canSend = text.trim().length > 0 && !disabled && !isLoading;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-end gap-2\",\n \"px-4 py-3\",\n \"bg-background border-t border-border\",\n \"shrink-0\",\n className\n )}\n >\n {/* Input container */}\n <div\n className={cn(\n \"flex-1 flex items-end\",\n \"bg-muted/50 rounded-2xl\",\n \"border border-border\",\n \"overflow-hidden\"\n )}\n >\n <textarea\n ref={textareaRef}\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n rows={1}\n className={cn(\n \"flex-1 resize-none bg-transparent\",\n \"px-4 py-3 text-base\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n \"max-h-32 overflow-y-auto\",\n // Hide scrollbar\n \"scrollbar-none\",\n \"[&::-webkit-scrollbar]:hidden\"\n )}\n style={{\n // Auto-resize height\n height: \"auto\",\n minHeight: \"44px\",\n }}\n onInput={(e) => {\n const target = e.target as HTMLTextAreaElement;\n target.style.height = \"auto\";\n target.style.height = `${Math.min(target.scrollHeight, 128)}px`;\n }}\n />\n </div>\n\n {/* Send/Stop button */}\n {isLoading && onStop ? (\n <button\n type=\"button\"\n onClick={onStop}\n className={cn(\n \"w-11 h-11 flex items-center justify-center\",\n \"rounded-full shrink-0\",\n \"bg-destructive text-destructive-foreground\",\n \"active:scale-95 transition-transform\"\n )}\n aria-label=\"Stop\"\n >\n <Square className=\"w-5 h-5\" />\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSend}\n disabled={!canSend}\n className={cn(\n \"w-11 h-11 flex items-center justify-center\",\n \"rounded-full shrink-0\",\n \"bg-primary text-primary-foreground\",\n \"active:scale-95 transition-transform\",\n \"disabled:opacity-40 disabled:cursor-not-allowed\"\n )}\n aria-label=\"Send\"\n >\n <Send className=\"w-5 h-5\" />\n </button>\n )}\n </div>\n );\n }\n);\n\nMobileInputPane.displayName = \"MobileInputPane\";\n",
112
+ "/**\n * MobileInputPane - Mobile input area\n *\n * A minimalist input area following Claude App's design:\n * - Rounded corners\n * - Clean appearance\n * - Mobile keyboard handling\n */\n\nimport * as React from \"react\";\nimport { Send, Square } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface MobileInputPaneProps {\n /**\n * Callback when user sends a message\n */\n onSend?: (text: string) => void;\n /**\n * Callback when stop button is clicked\n */\n onStop?: () => void;\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Whether currently loading\n */\n isLoading?: boolean;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * MobileInputPane Component\n *\n * A mobile-optimized input area with clean, minimal design.\n */\nexport const MobileInputPane: React.ForwardRefExoticComponent<\n MobileInputPaneProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, MobileInputPaneProps>(\n (\n { onSend, onStop, disabled = false, isLoading = false, placeholder = \"Message...\", className },\n ref\n ) => {\n const [text, setText] = React.useState(\"\");\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n\n // Handle mobile keyboard (visual viewport API)\n React.useEffect(() => {\n if (typeof window === \"undefined\" || !window.visualViewport) return;\n\n const viewport = window.visualViewport;\n\n const handleResize = () => {\n // When keyboard opens, scroll input into view\n if (document.activeElement === textareaRef.current) {\n textareaRef.current?.scrollIntoView({ block: \"center\" });\n }\n };\n\n viewport.addEventListener(\"resize\", handleResize);\n return () => viewport.removeEventListener(\"resize\", handleResize);\n }, []);\n\n const handleSend = () => {\n if (!text.trim() || disabled || isLoading) return;\n onSend?.(text.trim());\n setText(\"\");\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n // Enter to send, Shift+Enter for new line\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault();\n handleSend();\n }\n };\n\n const canSend = text.trim().length > 0 && !disabled && !isLoading;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-end gap-2\",\n \"px-4 pt-3\",\n // Safe area bottom padding for iOS/Android\n \"pb-[calc(env(safe-area-inset-bottom,0px)+12px)]\",\n // Floating card effect with top shadow\n \"bg-background/95 backdrop-blur-sm\",\n \"shadow-[0_-4px_12px_rgba(0,0,0,0.08)]\",\n \"border-t border-border/50\",\n \"shrink-0\",\n className\n )}\n >\n {/* Input container */}\n <div\n className={cn(\n \"flex-1 flex items-end\",\n \"bg-card rounded-2xl\",\n \"border border-input\",\n \"shadow-sm\",\n \"overflow-hidden\"\n )}\n >\n <textarea\n ref={textareaRef}\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n rows={1}\n className={cn(\n \"flex-1 resize-none bg-transparent\",\n \"px-4 py-3 text-base\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n \"max-h-32 overflow-y-auto\",\n // Hide scrollbar\n \"scrollbar-none\",\n \"[&::-webkit-scrollbar]:hidden\"\n )}\n style={{\n // Auto-resize height\n height: \"auto\",\n minHeight: \"44px\",\n }}\n onInput={(e) => {\n const target = e.target as HTMLTextAreaElement;\n target.style.height = \"auto\";\n target.style.height = `${Math.min(target.scrollHeight, 128)}px`;\n }}\n />\n </div>\n\n {/* Send/Stop button */}\n {isLoading && onStop ? (\n <button\n type=\"button\"\n onClick={onStop}\n className={cn(\n \"w-11 h-11 flex items-center justify-center\",\n \"rounded-full shrink-0\",\n \"bg-destructive text-destructive-foreground\",\n \"active:scale-95 transition-transform\"\n )}\n aria-label=\"Stop\"\n >\n <Square className=\"w-5 h-5\" />\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSend}\n disabled={!canSend}\n className={cn(\n \"w-11 h-11 flex items-center justify-center\",\n \"rounded-full shrink-0\",\n \"bg-primary text-primary-foreground\",\n \"active:scale-95 transition-transform\",\n \"disabled:opacity-40 disabled:cursor-not-allowed\"\n )}\n aria-label=\"Send\"\n >\n <Send className=\"w-5 h-5\" />\n </button>\n )}\n </div>\n );\n }\n);\n\nMobileInputPane.displayName = \"MobileInputPane\";\n",
49
113
  "/**\n * MobileChat - Mobile chat interface\n *\n * A mobile-optimized chat component following Claude App's design:\n * - Full-screen layout\n * - Clean header with hamburger menu\n * - Scrollable message area\n * - Bottom input with rounded design\n */\n\nimport * as React from \"react\";\nimport type { AgentX } from \"agentxjs\";\nimport { MobileHeader } from \"./MobileHeader\";\nimport { MobileMessagePane } from \"./MobileMessagePane\";\nimport { MobileInputPane } from \"./MobileInputPane\";\nimport { UserEntry, AssistantEntry, ErrorEntry } from \"~/components/entry\";\nimport { useAgent, type ConversationData } from \"~/hooks\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface MobileChatProps {\n /**\n * AgentX instance\n */\n agentx: AgentX | null;\n /**\n * Image ID for the conversation\n */\n imageId?: string | null;\n /**\n * Agent name to display in header\n */\n agentName?: string;\n /**\n * Callback when menu button is clicked\n */\n onMenuClick?: () => void;\n /**\n * Callback when new conversation button is clicked\n */\n onNewConversation?: () => void;\n /**\n * Input placeholder text\n */\n placeholder?: string;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Render a single conversation entry\n */\nfunction renderConversation(\n conversation: ConversationData,\n streamingText: string,\n currentTextBlockId: string | null,\n onStop?: () => void\n): React.ReactNode {\n switch (conversation.type) {\n case \"user\":\n return <UserEntry key={conversation.id} entry={conversation} />;\n\n case \"assistant\":\n return (\n <AssistantEntry\n key={conversation.id}\n entry={conversation}\n streamingText={streamingText}\n currentTextBlockId={currentTextBlockId}\n onStop={onStop}\n />\n );\n\n case \"error\":\n return <ErrorEntry key={conversation.id} entry={conversation} />;\n\n default:\n return null;\n }\n}\n\n/**\n * MobileChat Component\n *\n * A full-screen mobile chat interface.\n */\nexport const MobileChat: React.FC<MobileChatProps> = ({\n agentx,\n imageId,\n agentName,\n onMenuClick,\n onNewConversation,\n placeholder = \"Message...\",\n className,\n}) => {\n const { conversations, streamingText, currentTextBlockId, status, send, interrupt } = useAgent(\n agentx,\n imageId ?? null\n );\n\n // Determine loading state\n const isLoading =\n status === \"thinking\" ||\n status === \"responding\" ||\n status === \"planning_tool\" ||\n status === \"awaiting_tool_result\";\n\n // Empty state when no conversation selected\n if (!imageId) {\n return (\n <div className={cn(\"flex flex-col h-full bg-background\", \"overflow-hidden\", className)}>\n <MobileHeader\n onMenuClick={onMenuClick}\n onActionClick={onNewConversation}\n showAction={!!onNewConversation}\n />\n <div className=\"flex-1 flex flex-col items-center justify-center px-8 text-center\">\n <h2 className=\"text-xl font-medium text-foreground mb-2\">Welcome</h2>\n <p className=\"text-sm text-muted-foreground\">Select a conversation or start a new one</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className={cn(\"flex flex-col h-full bg-background\", \"overflow-hidden\", className)}>\n {/* Header */}\n <MobileHeader\n title={agentName}\n onMenuClick={onMenuClick}\n onActionClick={onNewConversation}\n showAction={!!onNewConversation}\n />\n\n {/* Messages */}\n <MobileMessagePane>\n {conversations.map((conv) =>\n renderConversation(conv, streamingText, currentTextBlockId, interrupt)\n )}\n </MobileMessagePane>\n\n {/* Input */}\n <MobileInputPane\n onSend={send}\n onStop={interrupt}\n isLoading={isLoading}\n placeholder={placeholder}\n />\n </div>\n );\n};\n\nMobileChat.displayName = \"MobileChat\";\n",
50
114
  "/**\n * ResponsiveStudio - Automatically switches between desktop and mobile layouts\n *\n * Uses container width (not viewport) to determine which layout to render:\n * - Desktop (>= breakpoint): Studio with sidebar\n * - Mobile (< breakpoint): MobileStudio with drawer\n *\n * @example\n * ```tsx\n * import { ResponsiveStudio, useAgentX } from \"@agentxjs/ui\";\n *\n * function App() {\n * const agentx = useAgentX(\"ws://localhost:5200\");\n * return <ResponsiveStudio agentx={agentx} />;\n * }\n * ```\n */\n\nimport * as React from \"react\";\nimport type { AgentX } from \"agentxjs\";\nimport { Studio } from \"./Studio\";\nimport { MobileStudio } from \"./MobileStudio\";\nimport { MOBILE_BREAKPOINT } from \"~/hooks/useIsMobile\";\n\nexport interface ResponsiveStudioProps {\n /**\n * AgentX instance\n */\n agentx: AgentX | null;\n /**\n * Container ID for user isolation\n * @default \"default\"\n */\n containerId?: string;\n /**\n * Breakpoint for mobile/desktop switch (based on container width)\n * @default 768\n */\n breakpoint?: number;\n /**\n * Desktop: Width of the sidebar\n * @default 280\n */\n sidebarWidth?: number;\n /**\n * Desktop: Enable search in AgentList\n * @default true\n */\n searchable?: boolean;\n /**\n * Desktop: Input height ratio\n * @default 0.25\n */\n inputHeightRatio?: number;\n /**\n * Mobile: Input placeholder\n */\n placeholder?: string;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * ResponsiveStudio Component\n *\n * Automatically renders Studio or MobileStudio based on container width.\n * Uses ResizeObserver to detect the component's own width, not viewport width.\n */\nexport function ResponsiveStudio({\n agentx,\n containerId = \"default\",\n breakpoint = MOBILE_BREAKPOINT,\n sidebarWidth = 280,\n searchable = true,\n inputHeightRatio = 0.25,\n placeholder,\n className,\n}: ResponsiveStudioProps): React.ReactElement {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [isMobile, setIsMobile] = React.useState(false);\n\n React.useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n // Use window.ResizeObserver to avoid ESLint no-undef error\n const Observer = window.ResizeObserver;\n if (!Observer) {\n // Fallback for older browsers\n setIsMobile(container.offsetWidth < breakpoint);\n return;\n }\n\n const resizeObserver = new Observer((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n setIsMobile(width < breakpoint);\n }\n });\n\n resizeObserver.observe(container);\n\n // Initial check\n setIsMobile(container.offsetWidth < breakpoint);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [breakpoint]);\n\n return (\n <div ref={containerRef} className=\"h-full w-full\">\n {isMobile ? (\n <MobileStudio\n agentx={agentx}\n containerId={containerId}\n searchable={searchable}\n placeholder={placeholder}\n className={className}\n />\n ) : (\n <Studio\n agentx={agentx}\n containerId={containerId}\n sidebarWidth={sidebarWidth}\n searchable={searchable}\n inputHeightRatio={inputHeightRatio}\n className={className}\n />\n )}\n </div>\n );\n}\n",
51
115
  "/**\n * ToolCard - Collapsible tool call/result card\n *\n * Displays tool execution with status indicators:\n * - Executing: blue with spinner\n * - Success: green with checkmark\n * - Error: red with X\n *\n * Features:\n * - Collapsible content\n * - Status-based styling\n * - Duration display\n * - Input/Output sections\n *\n * @example\n * ```tsx\n * <ToolCard\n * name=\"Bash\"\n * status=\"success\"\n * input={{ command: \"ls -la\" }}\n * output=\"file1.txt\\nfile2.txt\"\n * duration={1.23}\n * />\n * ```\n */\n\nimport { useState } from \"react\";\nimport { ChevronDown, Loader2, CheckCircle2, XCircle, Wrench } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport type ToolStatus = \"executing\" | \"success\" | \"error\";\n\nexport interface ToolCardProps {\n /**\n * Tool name\n */\n name: string;\n /**\n * Tool call ID\n */\n id?: string;\n /**\n * Current status\n */\n status: ToolStatus;\n /**\n * Tool input parameters\n */\n input?: Record<string, unknown>;\n /**\n * Tool output (string or object)\n */\n output?: unknown;\n /**\n * Execution duration in seconds\n */\n duration?: number;\n /**\n * Whether output is an error\n */\n isError?: boolean;\n /**\n * Default expanded state\n */\n defaultExpanded?: boolean;\n /**\n * Additional class name\n */\n className?: string;\n}\n\n/**\n * Status configuration\n */\nconst statusConfig = {\n executing: {\n icon: <Loader2 className=\"w-4 h-4 animate-spin\" />,\n bgColor: \"bg-blue-50 dark:bg-blue-950/30\",\n borderColor: \"border-blue-200 dark:border-blue-800\",\n textColor: \"text-blue-700 dark:text-blue-300\",\n iconColor: \"text-blue-500\",\n label: \"Executing...\",\n },\n success: {\n icon: <CheckCircle2 className=\"w-4 h-4\" />,\n bgColor: \"bg-green-50 dark:bg-green-950/30\",\n borderColor: \"border-green-200 dark:border-green-800\",\n textColor: \"text-green-700 dark:text-green-300\",\n iconColor: \"text-green-500\",\n label: \"Completed\",\n },\n error: {\n icon: <XCircle className=\"w-4 h-4\" />,\n bgColor: \"bg-red-50 dark:bg-red-950/30\",\n borderColor: \"border-red-200 dark:border-red-800\",\n textColor: \"text-red-700 dark:text-red-300\",\n iconColor: \"text-red-500\",\n label: \"Error\",\n },\n};\n\n/**\n * Format output for display\n */\nfunction formatOutput(output: unknown): string {\n if (typeof output === \"string\") {\n return output;\n }\n if (output === null || output === undefined) {\n return \"\";\n }\n return JSON.stringify(output, null, 2);\n}\n\n/**\n * ToolCard component\n */\nexport function ToolCard({\n name,\n id,\n status,\n input,\n output,\n duration,\n isError,\n defaultExpanded = false,\n className,\n}: ToolCardProps): React.ReactElement {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\n\n // Use error status if isError is true\n const effectiveStatus = isError ? \"error\" : status;\n const config = statusConfig[effectiveStatus];\n\n return (\n <div\n className={cn(\n \"w-full border rounded-lg overflow-hidden\",\n config.borderColor,\n config.bgColor,\n className\n )}\n >\n {/* Header - Clickable */}\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className={cn(\n \"w-full px-4 py-3 flex items-center justify-between\",\n \"hover:bg-black/5 dark:hover:bg-white/5 transition-colors\",\n config.textColor\n )}\n >\n <div className=\"flex items-center gap-3\">\n {/* Status Icon */}\n <span className={config.iconColor}>{config.icon}</span>\n\n {/* Tool Icon + Name */}\n <div className=\"flex items-center gap-2\">\n <Wrench className=\"w-4 h-4 opacity-60\" />\n <span className=\"font-medium font-mono text-sm\">{name}</span>\n </div>\n\n {/* Duration */}\n {duration !== undefined && status !== \"executing\" && (\n <span className=\"text-xs opacity-60\">• {duration.toFixed(2)}s</span>\n )}\n\n {/* Status Label (only for executing) */}\n {status === \"executing\" && <span className=\"text-xs opacity-60\">• {config.label}</span>}\n </div>\n\n {/* Expand/Collapse Icon */}\n <ChevronDown className={cn(\"w-4 h-4 transition-transform\", isExpanded && \"rotate-180\")} />\n </button>\n\n {/* Expanded Content */}\n {isExpanded && (\n <div className={cn(\"border-t px-4 py-3 space-y-3\", config.borderColor)}>\n {/* Tool Call ID */}\n {id && (\n <div className=\"text-xs opacity-60\">\n <span className=\"font-medium\">ID:</span> <span className=\"font-mono\">{id}</span>\n </div>\n )}\n\n {/* Input Section */}\n {input && Object.keys(input).length > 0 && (\n <div>\n <div className=\"text-xs font-medium opacity-70 mb-1 uppercase tracking-wide\">\n Input\n </div>\n <div className=\"bg-white/50 dark:bg-black/20 rounded border border-current/10 p-2 overflow-x-auto\">\n <pre className=\"text-xs font-mono whitespace-pre-wrap break-all\">\n {JSON.stringify(input, null, 2)}\n </pre>\n </div>\n </div>\n )}\n\n {/* Output Section */}\n {output !== undefined && status !== \"executing\" && (\n <div>\n <div className=\"text-xs font-medium opacity-70 mb-1 uppercase tracking-wide\">\n Output\n </div>\n <div className=\"bg-white/50 dark:bg-black/20 rounded border border-current/10 p-2 overflow-x-auto max-h-48 overflow-y-auto\">\n <pre className=\"text-xs font-mono whitespace-pre-wrap break-all\">\n {formatOutput(output)}\n </pre>\n </div>\n </div>\n )}\n\n {/* Waiting for result */}\n {status === \"executing\" && (\n <div className=\"flex items-center gap-2 text-xs opacity-60 py-1\">\n <Loader2 className=\"w-3 h-3 animate-spin\" />\n <span>Waiting for result...</span>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport default ToolCard;\n",
@@ -58,22 +122,18 @@
58
122
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface PanelProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Initial height in pixels\n * @default 200\n */\n height?: number;\n /**\n * Minimum height in pixels\n * @default 100\n */\n minHeight?: number;\n /**\n * Maximum height in pixels\n * @default 500\n */\n maxHeight?: number;\n /**\n * Panel content\n */\n children: React.ReactNode;\n}\n\n/**\n * Panel - Resizable bottom panel container\n *\n * A container for bottom panel content (terminal, output, logs, etc.)\n * with consistent styling. Should be used with Allotment (vertical)\n * for resizing functionality.\n *\n * @example\n * ```tsx\n * <Allotment vertical>\n * <Allotment.Pane>\n * <MainContent />\n * </Allotment.Pane>\n * <Allotment.Pane minSize={100} maxSize={500} preferredSize={200}>\n * <Panel>\n * <Terminal />\n * </Panel>\n * </Allotment.Pane>\n * </Allotment>\n * ```\n */\nexport const Panel: React.ForwardRefExoticComponent<\n PanelProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, PanelProps>(\n ({ height = 200, minHeight = 100, maxHeight = 500, className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"w-full flex flex-col\", \"bg-muted/30 border-t border-border\", className)}\n style={{\n height: `${height}px`,\n minHeight: `${minHeight}px`,\n maxHeight: `${maxHeight}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nPanel.displayName = \"Panel\";\n",
59
123
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface RightSidebarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Initial width in pixels\n * @default 300\n */\n width?: number;\n /**\n * Minimum width in pixels\n * @default 200\n */\n minWidth?: number;\n /**\n * Maximum width in pixels\n * @default 600\n */\n maxWidth?: number;\n /**\n * Sidebar content\n */\n children: React.ReactNode;\n}\n\n/**\n * RightSidebar - Resizable right sidebar container\n *\n * A container for right sidebar content (outline, properties, preview, etc.)\n * with consistent styling. Should be used with Allotment for resizing functionality.\n *\n * @example\n * ```tsx\n * <Allotment>\n * <Allotment.Pane>\n * <MainContent />\n * </Allotment.Pane>\n * <Allotment.Pane minSize={200} maxSize={600} preferredSize={300}>\n * <RightSidebar>\n * <Outline />\n * </RightSidebar>\n * </Allotment.Pane>\n * </Allotment>\n * ```\n */\nexport const RightSidebar: React.ForwardRefExoticComponent<\n RightSidebarProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, RightSidebarProps>(\n ({ width = 300, minWidth = 200, maxWidth = 600, className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"h-full flex flex-col\", \"bg-muted/30 border-l border-border\", className)}\n style={{\n width: `${width}px`,\n minWidth: `${minWidth}px`,\n maxWidth: `${maxWidth}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nRightSidebar.displayName = \"RightSidebar\";\n",
60
124
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface StatusBarItemProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Optional icon\n */\n icon?: React.ReactNode;\n /**\n * Item content\n */\n children: React.ReactNode;\n /**\n * Whether the item is clickable\n */\n clickable?: boolean;\n}\n\n/**\n * StatusBarItem - Individual item in the status bar\n */\nexport const StatusBarItem: React.ForwardRefExoticComponent<\n StatusBarItemProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, StatusBarItemProps>(\n ({ icon, children, clickable = false, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-1.5 px-2 py-0.5 text-xs\",\n clickable && \"hover:bg-accent cursor-pointer rounded\",\n className\n )}\n {...props}\n >\n {icon && <span className=\"flex items-center\">{icon}</span>}\n <span>{children}</span>\n </div>\n );\n }\n);\n\nStatusBarItem.displayName = \"StatusBarItem\";\n\nexport interface StatusBarSectionProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Alignment of items in this section\n * @default 'left'\n */\n align?: \"left\" | \"center\" | \"right\";\n /**\n * Section content\n */\n children: React.ReactNode;\n}\n\n/**\n * StatusBarSection - Group of items in the status bar\n */\nexport const StatusBarSection: React.ForwardRefExoticComponent<\n StatusBarSectionProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, StatusBarSectionProps>(\n ({ align = \"left\", children, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center gap-1\",\n align === \"left\" && \"justify-start\",\n align === \"center\" && \"justify-center flex-1\",\n align === \"right\" && \"justify-end\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nStatusBarSection.displayName = \"StatusBarSection\";\n\nexport interface StatusBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Status bar height in pixels\n * @default 24\n */\n height?: number;\n /**\n * Status bar content\n */\n children: React.ReactNode;\n}\n\n/**\n * StatusBar - VSCode-style bottom status bar\n *\n * A fixed-height status bar that displays global application state.\n * Use StatusBarSection to organize items with different alignments.\n *\n * @example\n * ```tsx\n * <StatusBar>\n * <StatusBarSection align=\"left\">\n * <StatusBarItem icon={<GitBranch />}>main</StatusBarItem>\n * <StatusBarItem icon={<AlertCircle />}>0 errors</StatusBarItem>\n * </StatusBarSection>\n * <StatusBarSection align=\"right\">\n * <StatusBarItem>Line 42, Col 8</StatusBarItem>\n * <StatusBarItem>UTF-8</StatusBarItem>\n * </StatusBarSection>\n * </StatusBar>\n * ```\n */\nexport const StatusBar: React.ForwardRefExoticComponent<\n StatusBarProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, StatusBarProps>(\n ({ height = 24, children, className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full flex items-center\",\n \"bg-primary text-primary-foreground\",\n \"px-2\",\n className\n )}\n style={{\n height: `${height}px`,\n minHeight: `${height}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nStatusBar.displayName = \"StatusBar\";\n",
61
- "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\nimport { Button, buttonVariants } from \"./Button\";\nimport type { VariantProps } from \"class-variance-authority\";\n\nexport interface ActionBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Children (ActionBar.Primary, ActionBar.Icon, ActionBar.Group)\n */\n children: React.ReactNode;\n}\n\nexport interface ActionBarPrimaryProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n /**\n * Button content\n */\n children: React.ReactNode;\n /**\n * Show loading state\n */\n loading?: boolean;\n}\n\nexport interface ActionBarIconProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n /**\n * Icon element\n */\n children: React.ReactNode;\n /**\n * Show loading state\n */\n loading?: boolean;\n}\n\nexport interface ActionBarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Group children\n */\n children: React.ReactNode;\n}\n\n/**\n * ActionBar - Compound component for action button layouts\n *\n * A flexible container for action buttons with pre-configured layouts.\n * Supports primary buttons, icon buttons, and grouping.\n *\n * @example\n * ```tsx\n * // Basic action bar\n * <ActionBar>\n * <ActionBar.Primary onClick={handleNew}>\n * <Plus className=\"w-4 h-4 mr-2\" />\n * New Session\n * </ActionBar.Primary>\n * <ActionBar.Icon onClick={handleRefresh}>\n * <RefreshCw className=\"w-4 h-4\" />\n * </ActionBar.Icon>\n * </ActionBar>\n *\n * // With loading state\n * <ActionBar>\n * <ActionBar.Primary loading={isCreating}>\n * New Session\n * </ActionBar.Primary>\n * <ActionBar.Icon loading={isRefreshing}>\n * <RefreshCw />\n * </ActionBar.Icon>\n * </ActionBar>\n *\n * // Multiple groups\n * <ActionBar>\n * <ActionBar.Group>\n * <ActionBar.Primary>New</ActionBar.Primary>\n * <ActionBar.Icon><RefreshCw /></ActionBar.Icon>\n * </ActionBar.Group>\n * <ActionBar.Group>\n * <ActionBar.Icon><Settings /></ActionBar.Icon>\n * </ActionBar.Group>\n * </ActionBar>\n * ```\n */\nconst ActionBarRoot: React.ForwardRefExoticComponent<\n ActionBarProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, ActionBarProps>(({ children, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"flex gap-2\", className)} {...props}>\n {children}\n </div>\n );\n});\n\nActionBarRoot.displayName = \"ActionBar\";\n\n/**\n * ActionBar.Primary - Primary action button (takes flex-1)\n */\nconst ActionBarPrimary: React.ForwardRefExoticComponent<\n ActionBarPrimaryProps & React.RefAttributes<HTMLButtonElement>\n> = React.forwardRef<HTMLButtonElement, ActionBarPrimaryProps>(\n (\n { children, loading = false, variant = \"default\", size = \"sm\", className, disabled, ...props },\n ref\n ) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\"flex-1 h-8 text-xs transition-all duration-200\", className)}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? (\n <>\n <div className=\"w-3.5 h-3.5 mr-1.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n Loading...\n </>\n ) : (\n children\n )}\n </Button>\n );\n }\n);\n\nActionBarPrimary.displayName = \"ActionBar.Primary\";\n\n/**\n * ActionBar.Icon - Icon-only action button (square)\n */\nconst ActionBarIcon: React.ForwardRefExoticComponent<\n ActionBarIconProps & React.RefAttributes<HTMLButtonElement>\n> = React.forwardRef<HTMLButtonElement, ActionBarIconProps>(\n (\n { children, loading = false, variant = \"outline\", size = \"sm\", className, disabled, ...props },\n ref\n ) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\"h-8 w-8 px-0 transition-colors duration-200 group\", className)}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? (\n <div className=\"w-3.5 h-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n ) : (\n children\n )}\n </Button>\n );\n }\n);\n\nActionBarIcon.displayName = \"ActionBar.Icon\";\n\n/**\n * ActionBar.Group - Group buttons together\n */\nconst ActionBarGroup: React.ForwardRefExoticComponent<\n ActionBarGroupProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, ActionBarGroupProps>(\n ({ children, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"flex gap-2\", className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nActionBarGroup.displayName = \"ActionBar.Group\";\n\n/**\n * ActionBar compound component type\n */\ntype ActionBarComponent = React.ForwardRefExoticComponent<\n ActionBarProps & React.RefAttributes<HTMLDivElement>\n> & {\n Primary: typeof ActionBarPrimary;\n Icon: typeof ActionBarIcon;\n Group: typeof ActionBarGroup;\n};\n\n/**\n * Compound component export\n */\nexport const ActionBar: ActionBarComponent = Object.assign(ActionBarRoot, {\n Primary: ActionBarPrimary,\n Icon: ActionBarIcon,\n Group: ActionBarGroup,\n});\n",
62
- "import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"~/utils/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button: React.ForwardRefExoticComponent<\n ButtonProps & React.RefAttributes<HTMLButtonElement>\n> = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => {\n return (\n <button className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n",
125
+ "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\nimport { Button, buttonVariants } from \"~/components/ui\";\nimport type { VariantProps } from \"class-variance-authority\";\n\nexport interface ActionBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Children (ActionBar.Primary, ActionBar.Icon, ActionBar.Group)\n */\n children: React.ReactNode;\n}\n\nexport interface ActionBarPrimaryProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n /**\n * Button content\n */\n children: React.ReactNode;\n /**\n * Show loading state\n */\n loading?: boolean;\n}\n\nexport interface ActionBarIconProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n /**\n * Icon element\n */\n children: React.ReactNode;\n /**\n * Show loading state\n */\n loading?: boolean;\n}\n\nexport interface ActionBarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Group children\n */\n children: React.ReactNode;\n}\n\n/**\n * ActionBar - Compound component for action button layouts\n *\n * A flexible container for action buttons with pre-configured layouts.\n * Supports primary buttons, icon buttons, and grouping.\n *\n * @example\n * ```tsx\n * // Basic action bar\n * <ActionBar>\n * <ActionBar.Primary onClick={handleNew}>\n * <Plus className=\"w-4 h-4 mr-2\" />\n * New Session\n * </ActionBar.Primary>\n * <ActionBar.Icon onClick={handleRefresh}>\n * <RefreshCw className=\"w-4 h-4\" />\n * </ActionBar.Icon>\n * </ActionBar>\n *\n * // With loading state\n * <ActionBar>\n * <ActionBar.Primary loading={isCreating}>\n * New Session\n * </ActionBar.Primary>\n * <ActionBar.Icon loading={isRefreshing}>\n * <RefreshCw />\n * </ActionBar.Icon>\n * </ActionBar>\n *\n * // Multiple groups\n * <ActionBar>\n * <ActionBar.Group>\n * <ActionBar.Primary>New</ActionBar.Primary>\n * <ActionBar.Icon><RefreshCw /></ActionBar.Icon>\n * </ActionBar.Group>\n * <ActionBar.Group>\n * <ActionBar.Icon><Settings /></ActionBar.Icon>\n * </ActionBar.Group>\n * </ActionBar>\n * ```\n */\nconst ActionBarRoot: React.ForwardRefExoticComponent<\n ActionBarProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, ActionBarProps>(({ children, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"flex gap-2\", className)} {...props}>\n {children}\n </div>\n );\n});\n\nActionBarRoot.displayName = \"ActionBar\";\n\n/**\n * ActionBar.Primary - Primary action button (takes flex-1)\n */\nconst ActionBarPrimary: React.ForwardRefExoticComponent<\n ActionBarPrimaryProps & React.RefAttributes<HTMLButtonElement>\n> = React.forwardRef<HTMLButtonElement, ActionBarPrimaryProps>(\n (\n { children, loading = false, variant = \"default\", size = \"sm\", className, disabled, ...props },\n ref\n ) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\"flex-1 h-8 text-xs transition-all duration-200\", className)}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? (\n <>\n <div className=\"w-3.5 h-3.5 mr-1.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n Loading...\n </>\n ) : (\n children\n )}\n </Button>\n );\n }\n);\n\nActionBarPrimary.displayName = \"ActionBar.Primary\";\n\n/**\n * ActionBar.Icon - Icon-only action button (square)\n */\nconst ActionBarIcon: React.ForwardRefExoticComponent<\n ActionBarIconProps & React.RefAttributes<HTMLButtonElement>\n> = React.forwardRef<HTMLButtonElement, ActionBarIconProps>(\n (\n { children, loading = false, variant = \"outline\", size = \"sm\", className, disabled, ...props },\n ref\n ) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\"h-8 w-8 px-0 transition-colors duration-200 group\", className)}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? (\n <div className=\"w-3.5 h-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n ) : (\n children\n )}\n </Button>\n );\n }\n);\n\nActionBarIcon.displayName = \"ActionBar.Icon\";\n\n/**\n * ActionBar.Group - Group buttons together\n */\nconst ActionBarGroup: React.ForwardRefExoticComponent<\n ActionBarGroupProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, ActionBarGroupProps>(\n ({ children, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"flex gap-2\", className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nActionBarGroup.displayName = \"ActionBar.Group\";\n\n/**\n * ActionBar compound component type\n */\ntype ActionBarComponent = React.ForwardRefExoticComponent<\n ActionBarProps & React.RefAttributes<HTMLDivElement>\n> & {\n Primary: typeof ActionBarPrimary;\n Icon: typeof ActionBarIcon;\n Group: typeof ActionBarGroup;\n};\n\n/**\n * Compound component export\n */\nexport const ActionBar: ActionBarComponent = Object.assign(ActionBarRoot, {\n Primary: ActionBarPrimary,\n Icon: ActionBarIcon,\n Group: ActionBarGroup,\n});\n",
63
126
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface AgentLogoProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n /**\n * Custom icon source URL. Defaults to \"/icons/agent-ai-icon.svg\"\n */\n src?: string;\n}\n\n/**\n * AgentLogo - Display the Agent AI logo\n *\n * Single Responsibility: Display a logo image with consistent sizing\n *\n * @example\n * ```tsx\n * <AgentLogo />\n * <AgentLogo className=\"w-8 h-8\" />\n * <AgentLogo src=\"/custom-logo.svg\" />\n * ```\n */\nconst AgentLogo: React.ForwardRefExoticComponent<\n AgentLogoProps & React.RefAttributes<HTMLImageElement>\n> = React.forwardRef<HTMLImageElement, AgentLogoProps>(\n ({ className, src = \"/icons/agent-ai-icon.svg\", alt = \"Agent\", ...props }, ref) => {\n return <img ref={ref} src={src} alt={alt} className={cn(\"w-5 h-5\", className)} {...props} />;\n }\n);\n\nAgentLogo.displayName = \"AgentLogo\";\n\nexport { AgentLogo };\n",
64
127
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface AppHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Logo element (icon or image)\n */\n logo?: React.ReactNode;\n /**\n * Application title\n */\n title: string;\n /**\n * Subtitle or description (optional)\n */\n subtitle?: string;\n /**\n * Additional actions on the right side\n */\n actions?: React.ReactNode;\n /**\n * Whether to show border at bottom\n * @default true\n */\n showBorder?: boolean;\n /**\n * Whether in mobile mode (compact layout)\n * @default false\n */\n isMobile?: boolean;\n /**\n * Whether running as PWA (adds safe area padding)\n * @default false\n */\n isPWA?: boolean;\n}\n\n/**\n * AppHeader - Application header with logo, title, and actions\n *\n * A flexible header component for application layouts. Supports logos,\n * titles, subtitles, and action buttons. Automatically adapts to mobile\n * and PWA environments.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <AppHeader\n * logo={<MessageSquare className=\"w-4 h-4\" />}\n * title=\"Deepractice Agent\"\n * />\n *\n * // With subtitle\n * <AppHeader\n * logo={<Bot className=\"w-4 h-4\" />}\n * title=\"AI Assistant\"\n * subtitle=\"Powered by Claude\"\n * />\n *\n * // With actions\n * <AppHeader\n * logo={<Logo />}\n * title=\"My App\"\n * actions={\n * <Button variant=\"ghost\" size=\"sm\">\n * <Settings className=\"w-4 h-4\" />\n * </Button>\n * }\n * />\n *\n * // Mobile mode\n * <AppHeader\n * logo={<MessageSquare />}\n * title=\"Agent\"\n * isMobile\n * />\n *\n * // PWA with safe area\n * <AppHeader\n * logo={<Logo />}\n * title=\"App\"\n * isPWA\n * isMobile\n * />\n * ```\n */\nexport const AppHeader: React.ForwardRefExoticComponent<\n AppHeaderProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, AppHeaderProps>(\n (\n {\n logo,\n title,\n subtitle,\n actions,\n showBorder = true,\n isMobile = false,\n isPWA = false,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"p-4\",\n showBorder && \"border-b border-border\",\n isMobile && \"md:hidden p-3\",\n !isMobile && \"hidden md:block\",\n className\n )}\n style={isPWA && isMobile ? { paddingTop: \"16px\" } : undefined}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n {/* Logo + Title */}\n <div className=\"flex items-center gap-3\">\n {logo && (\n <div\n className={cn(\n \"bg-primary rounded-lg flex items-center justify-center text-primary-foreground\",\n isMobile ? \"w-8 h-8\" : \"w-8 h-8 shadow-sm\"\n )}\n >\n {logo}\n </div>\n )}\n <div>\n <h1\n className={cn(\n \"font-bold text-foreground\",\n isMobile ? \"text-lg font-semibold\" : \"text-lg\"\n )}\n >\n {title}\n </h1>\n {subtitle && <p className=\"text-xs text-muted-foreground mt-0.5\">{subtitle}</p>}\n </div>\n </div>\n\n {/* Actions */}\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n </div>\n );\n }\n);\n\nAppHeader.displayName = \"AppHeader\";\n",
65
- "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>> =\n React.forwardRef<HTMLInputElement, InputProps>(({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n });\nInput.displayName = \"Input\";\n\nexport { Input };\n",
66
128
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface LoadingStateProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Icon or spinner element to display\n */\n icon?: React.ReactNode;\n /**\n * Title text\n */\n title?: string;\n /**\n * Description text\n */\n description?: string;\n /**\n * Vertical spacing size\n */\n spacing?: \"sm\" | \"md\" | \"lg\";\n /**\n * Show default spinner if no icon provided\n */\n showSpinner?: boolean;\n}\n\n/**\n * LoadingState - Display loading state with spinner, title, and description\n *\n * A flexible component for showing loading states in lists, tables, pages, etc.\n * Automatically shows a spinner unless a custom icon is provided.\n *\n * @example\n * ```tsx\n * // Basic loading state\n * <LoadingState\n * title=\"Loading sessions...\"\n * description=\"Fetching your Agent sessions\"\n * />\n *\n * // Minimal loading state\n * <LoadingState title=\"Loading...\" spacing=\"sm\" />\n *\n * // Custom icon\n * <LoadingState\n * icon={<RefreshCw className=\"w-6 h-6 animate-spin\" />}\n * title=\"Refreshing data...\"\n * />\n *\n * // Spinner only (no text)\n * <LoadingState showSpinner />\n * ```\n */\nexport const LoadingState: React.ForwardRefExoticComponent<\n LoadingStateProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, LoadingStateProps>(\n ({ icon, title, description, spacing = \"md\", showSpinner = true, className, ...props }, ref) => {\n const spacingClasses = {\n sm: \"py-8\",\n md: \"py-12\",\n lg: \"py-16\",\n };\n\n const iconSpacingClasses = {\n sm: \"mb-3\",\n md: \"mb-4\",\n lg: \"mb-6\",\n };\n\n const titleSpacingClasses = {\n sm: \"mb-1\",\n md: \"mb-2\",\n lg: \"mb-3\",\n };\n\n const spinnerSizes = {\n sm: \"w-5 h-5\",\n md: \"w-6 h-6\",\n lg: \"w-8 h-8\",\n };\n\n const renderIcon = () => {\n if (icon) {\n return icon;\n }\n if (showSpinner) {\n return (\n <div\n className={cn(\n \"animate-spin rounded-full border-2 border-muted-foreground border-t-transparent\",\n spinnerSizes[spacing]\n )}\n />\n );\n }\n return null;\n };\n\n const iconElement = renderIcon();\n\n return (\n <div\n ref={ref}\n className={cn(\"text-center px-4\", spacingClasses[spacing], className)}\n {...props}\n >\n {iconElement && (\n <div\n className={cn(\n \"w-12 h-12 bg-muted rounded-lg flex items-center justify-center mx-auto\",\n iconSpacingClasses[spacing]\n )}\n >\n {iconElement}\n </div>\n )}\n {title && (\n <h3 className={cn(\"text-base font-medium text-foreground\", titleSpacingClasses[spacing])}>\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground max-w-md mx-auto\">{description}</p>\n )}\n </div>\n );\n }\n);\n\nLoadingState.displayName = \"LoadingState\";\n",
67
129
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface PageHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Main title text\n */\n title: string;\n /**\n * Optional subtitle/description\n */\n subtitle?: string;\n /**\n * Optional leading element (e.g., menu button, back button)\n */\n leading?: React.ReactNode;\n /**\n * Optional trailing element (e.g., actions, tabs)\n */\n trailing?: React.ReactNode;\n /**\n * Whether to show border at bottom\n * @default true\n */\n showBorder?: boolean;\n /**\n * Whether in mobile mode (compact spacing)\n * @default false\n */\n isMobile?: boolean;\n}\n\n/**\n * PageHeader - Flexible page header with title and actions\n *\n * A generic header component for page layouts. Supports leading elements\n * (menu buttons, back buttons), title/subtitle, and trailing elements\n * (actions, tabs, buttons). Automatically handles mobile responsive layout.\n *\n * @example\n * ```tsx\n * // Basic header with title\n * <PageHeader title=\"New Session\" />\n *\n * // With subtitle\n * <PageHeader\n * title=\"Dashboard\"\n * subtitle=\"Welcome back!\"\n * />\n *\n * // With mobile menu button\n * <PageHeader\n * title=\"Settings\"\n * leading={\n * <Button variant=\"ghost\" size=\"icon\">\n * <Menu className=\"w-5 h-5\" />\n * </Button>\n * }\n * isMobile\n * />\n *\n * // With tab navigation\n * <PageHeader\n * title=\"Project Explorer\"\n * trailing={\n * <TabNavigation\n * tabs={tabs}\n * activeTab={activeTab}\n * onTabChange={setActiveTab}\n * />\n * }\n * />\n *\n * // Complete example with all props\n * <PageHeader\n * title=\"Agent Conversation\"\n * subtitle=\"deepractice-ai/project\"\n * leading={<MenuButton onClick={toggleSidebar} />}\n * trailing={\n * <TabNavigation\n * tabs={[\n * { id: 'chat', label: 'Chat', icon: <MessageSquare /> },\n * { id: 'shell', label: 'Shell', icon: <Terminal /> },\n * ]}\n * activeTab=\"chat\"\n * onTabChange={setTab}\n * />\n * }\n * isMobile\n * />\n * ```\n */\nexport const PageHeader: React.ForwardRefExoticComponent<\n PageHeaderProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, PageHeaderProps>(\n (\n {\n title,\n subtitle,\n leading,\n trailing,\n showBorder = true,\n isMobile = false,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex-shrink-0\",\n showBorder && \"border-b border-border\",\n isMobile ? \"p-3\" : \"p-4\",\n \"bg-card\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between gap-3\">\n {/* Left Side: Leading + Title */}\n <div className=\"flex items-center gap-2 sm:gap-3 min-w-0 flex-1\">\n {/* Leading Element (e.g., menu button) */}\n {leading && <div className=\"flex-shrink-0\">{leading}</div>}\n\n {/* Title + Subtitle */}\n <div className=\"min-w-0 flex-1\">\n <h1\n className={cn(\n \"font-semibold text-foreground truncate\",\n isMobile ? \"text-base\" : \"text-base sm:text-lg\"\n )}\n >\n {title}\n </h1>\n {subtitle && (\n <p\n className={cn(\n \"text-xs text-muted-foreground truncate\",\n isMobile ? \"mt-0\" : \"mt-0.5\"\n )}\n >\n {subtitle}\n </p>\n )}\n </div>\n </div>\n\n {/* Right Side: Trailing Element (e.g., tabs, actions) */}\n {trailing && <div className=\"flex-shrink-0 hidden sm:block\">{trailing}</div>}\n </div>\n </div>\n );\n }\n);\n\nPageHeader.displayName = \"PageHeader\";\n",
68
- "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(undefined);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Popover({\n children,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps): React.ReactElement {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\n\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = onOpenChange ?? setUncontrolledOpen;\n\n return (\n <PopoverContext.Provider value={{ open, setOpen }}>\n <div className=\"relative inline-block\">{children}</div>\n </PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps {\n children: React.ReactNode;\n asChild?: boolean;\n}\n\nexport function PopoverTrigger({ children, asChild }: PopoverTriggerProps): React.ReactElement {\n const { open, setOpen } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n setOpen(!open);\n };\n\n if (asChild && React.isValidElement(children)) {\n const child = children as React.ReactElement<any>;\n const originalOnClick = child.props.onClick;\n\n return React.cloneElement(child, {\n onClick: (e: React.MouseEvent) => {\n handleClick(e);\n originalOnClick?.(e);\n },\n });\n }\n\n return <div onClick={handleClick}>{children}</div>;\n}\n\ninterface PopoverContentProps {\n children: React.ReactNode;\n align?: \"start\" | \"center\" | \"end\";\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n className?: string;\n}\n\nexport function PopoverContent({\n children,\n align = \"center\",\n side = \"bottom\",\n className,\n}: PopoverContentProps): React.ReactElement | null {\n const { open, setOpen } = usePopoverContext();\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (contentRef.current && !contentRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen]);\n\n if (!open) return null;\n\n const positionClasses = {\n top: \"bottom-full mb-2\",\n bottom: \"top-full mt-2\",\n left: \"right-full mr-2\",\n right: \"left-full ml-2\",\n };\n\n const alignClasses = {\n start: side === \"top\" || side === \"bottom\" ? \"left-0\" : \"top-0\",\n center:\n side === \"top\" || side === \"bottom\"\n ? \"left-1/2 -translate-x-1/2\"\n : \"top-1/2 -translate-y-1/2\",\n end: side === \"top\" || side === \"bottom\" ? \"right-0\" : \"bottom-0\",\n };\n\n return (\n <div\n ref={contentRef}\n className={cn(\n \"absolute z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-3 text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95\",\n positionClasses[side],\n alignClasses[align],\n className\n )}\n >\n {children}\n </div>\n );\n}\n",
69
- "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n}\n\nconst ScrollArea: React.ForwardRefExoticComponent<\n ScrollAreaProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, ScrollAreaProps>(({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn(\"relative overflow-hidden\", className)} {...props}>\n <div\n className=\"h-full w-full rounded-[inherit] overflow-auto\"\n style={\n {\n WebkitOverflowScrolling: \"touch\",\n touchAction: \"pan-y\",\n } as React.CSSProperties\n }\n >\n {children}\n </div>\n </div>\n));\nScrollArea.displayName = \"ScrollArea\";\n\nexport { ScrollArea };\n",
70
130
  "import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"~/utils/utils\";\n\nconst tabNavigationVariants = cva(\"inline-flex items-center justify-center rounded-lg p-1\", {\n variants: {\n variant: {\n pills: \"bg-muted\",\n underline: \"border-b border-border bg-transparent p-0\",\n },\n },\n defaultVariants: {\n variant: \"pills\",\n },\n});\n\nconst tabButtonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n pills: \"\",\n underline: \"rounded-none border-b-2 border-transparent\",\n },\n active: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Pills variant styles\n {\n variant: \"pills\",\n active: true,\n className: \"bg-background text-foreground shadow-sm\",\n },\n {\n variant: \"pills\",\n active: false,\n className: \"text-muted-foreground hover:text-foreground hover:bg-background/50\",\n },\n // Underline variant styles\n {\n variant: \"underline\",\n active: true,\n className: \"border-primary text-foreground\",\n },\n {\n variant: \"underline\",\n active: false,\n className: \"text-muted-foreground hover:text-foreground hover:border-border\",\n },\n ],\n defaultVariants: {\n variant: \"pills\",\n active: false,\n },\n }\n);\n\nexport interface Tab {\n /**\n * Unique identifier for the tab\n */\n id: string;\n /**\n * Tab label text\n */\n label: string;\n /**\n * Optional icon element\n */\n icon?: React.ReactNode;\n /**\n * Whether the tab is disabled\n */\n disabled?: boolean;\n}\n\nexport interface TabNavigationProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n VariantProps<typeof tabNavigationVariants> {\n /**\n * Array of tab items\n */\n tabs: Tab[];\n /**\n * Currently active tab ID\n */\n activeTab: string;\n /**\n * Callback when tab is changed\n */\n onTabChange: (tabId: string) => void;\n /**\n * Whether to show icons only on mobile\n * @default false\n */\n iconOnlyMobile?: boolean;\n}\n\n/**\n * TabNavigation - Flexible tab navigation component\n *\n * A versatile tab navigation that supports both pills and underline styles.\n * Can display tabs with icons, labels, or both. Automatically handles active\n * states and keyboard navigation.\n *\n * @example\n * ```tsx\n * // Pills variant (default)\n * <TabNavigation\n * tabs={[\n * { id: 'chat', label: 'Chat', icon: <MessageSquare /> },\n * { id: 'shell', label: 'Shell', icon: <Terminal /> },\n * { id: 'files', label: 'Files', icon: <Folder /> },\n * ]}\n * activeTab={activeTab}\n * onTabChange={setActiveTab}\n * />\n *\n * // Underline variant\n * <TabNavigation\n * variant=\"underline\"\n * tabs={tabs}\n * activeTab={current}\n * onTabChange={setCurrent}\n * />\n *\n * // Icon only on mobile\n * <TabNavigation\n * tabs={tabs}\n * activeTab={active}\n * onTabChange={onChange}\n * iconOnlyMobile\n * />\n *\n * // With disabled tabs\n * <TabNavigation\n * tabs={[\n * { id: 'tab1', label: 'Enabled' },\n * { id: 'tab2', label: 'Disabled', disabled: true },\n * ]}\n * activeTab={activeTab}\n * onTabChange={setActiveTab}\n * />\n * ```\n */\nexport const TabNavigation: React.ForwardRefExoticComponent<\n TabNavigationProps & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, TabNavigationProps>(\n (\n {\n tabs,\n activeTab,\n onTabChange,\n variant = \"pills\",\n iconOnlyMobile = false,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n role=\"tablist\"\n className={cn(tabNavigationVariants({ variant }), className)}\n {...props}\n >\n {tabs.map((tab) => {\n const isActive = tab.id === activeTab;\n\n return (\n <button\n key={tab.id}\n role=\"tab\"\n type=\"button\"\n aria-selected={isActive}\n aria-controls={`tabpanel-${tab.id}`}\n disabled={tab.disabled}\n onClick={() => !tab.disabled && onTabChange(tab.id)}\n className={cn(tabButtonVariants({ variant, active: isActive }))}\n >\n {tab.icon && (\n <span className=\"flex items-center justify-center w-4 h-4\">{tab.icon}</span>\n )}\n {tab.label && (\n <span className={cn(tab.icon && \"ml-1.5\", iconOnlyMobile && \"hidden sm:inline\")}>\n {tab.label}\n </span>\n )}\n </button>\n );\n })}\n </div>\n );\n }\n);\n\nTabNavigation.displayName = \"TabNavigation\";\n",
71
131
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\nimport { formatTimeAgo } from \"~/utils/timeUtils\";\n\nexport interface TimeAgoProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * Date to display (ISO string or Date object)\n */\n date: string | Date;\n /**\n * Auto-update interval in milliseconds (0 to disable)\n * @default 60000 (1 minute)\n */\n updateInterval?: number;\n /**\n * Show tooltip with full date on hover\n * @default true\n */\n showTooltip?: boolean;\n}\n\n/**\n * TimeAgo - Display relative time with auto-update\n *\n * A component that displays relative time (\"Just now\", \"5 mins ago\") and\n * automatically updates at a specified interval. Useful for showing timestamps\n * in lists, messages, and activity feeds.\n *\n * @example\n * ```tsx\n * // Basic usage with auto-update every minute\n * <TimeAgo date=\"2025-01-14T10:30:00Z\" />\n *\n * // With custom styling\n * <TimeAgo\n * date={session.lastActivity}\n * className=\"text-xs text-muted-foreground\"\n * />\n *\n * // Disable auto-update\n * <TimeAgo date={message.timestamp} updateInterval={0} />\n *\n * // Fast update interval (every 10 seconds)\n * <TimeAgo date={recentEvent} updateInterval={10000} />\n *\n * // No tooltip\n * <TimeAgo date={date} showTooltip={false} />\n * ```\n */\nexport const TimeAgo: React.ForwardRefExoticComponent<\n TimeAgoProps & React.RefAttributes<HTMLSpanElement>\n> = React.forwardRef<HTMLSpanElement, TimeAgoProps>(\n ({ date, updateInterval = 60000, showTooltip = true, className, ...props }, ref) => {\n const [currentTime, setCurrentTime] = React.useState(new Date());\n\n // Auto-update timer\n React.useEffect(() => {\n if (updateInterval <= 0) return;\n\n const timer = setInterval(() => {\n setCurrentTime(new Date());\n }, updateInterval);\n\n return () => clearInterval(timer);\n }, [updateInterval]);\n\n const formattedTime = formatTimeAgo(date, currentTime);\n const fullDate = React.useMemo(() => {\n const dateObj = typeof date === \"string\" ? new Date(date) : date;\n if (isNaN(dateObj.getTime())) return undefined;\n return dateObj.toLocaleString();\n }, [date]);\n\n return (\n <span\n ref={ref}\n className={cn(\"inline-block\", className)}\n title={showTooltip ? fullDate : undefined}\n {...props}\n >\n {formattedTime}\n </span>\n );\n }\n);\n\nTimeAgo.displayName = \"TimeAgo\";\n",
72
132
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface TokenUsagePieProps {\n /**\n * Number of tokens used\n */\n used: number;\n /**\n * Total token limit\n */\n total: number;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * TokenUsagePie - Display token usage as a circular progress indicator\n *\n * Single Responsibility: Visualize token usage percentage with color coding\n *\n * Color coding (following design system):\n * - Blue (<50%): Normal usage - computational color\n * - Amber (50-75%): Warning - generative/attention color\n * - Red (>75%): Critical - destructive color\n *\n * Returns null if invalid data\n *\n * @example\n * ```tsx\n * <TokenUsagePie used={5000} total={8000} />\n * <TokenUsagePie used={120000} total={200000} />\n * ```\n */\nexport function TokenUsagePie({\n used,\n total,\n className,\n}: TokenUsagePieProps): React.ReactElement | null {\n if (used == null || total == null || total <= 0) return null;\n\n const percentage = Math.min(100, (used / total) * 100);\n const radius = 10;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (percentage / 100) * circumference;\n\n const getColor = (): string => {\n if (percentage < 50) return \"#0284c7\"; // blue-600 - computational (normal)\n if (percentage < 75) return \"#f59e0b\"; // amber-500 - generative (warning)\n return \"#ef4444\"; // red-500 - destructive (critical)\n };\n\n const getColorName = (): string => {\n if (percentage < 50) return \"text-blue-600\";\n if (percentage < 75) return \"text-amber-500\";\n return \"text-destructive\";\n };\n\n return (\n <div\n className={cn(\n \"flex items-center gap-2 text-xs text-slate-600 dark:text-slate-400\",\n className\n )}\n >\n {/* Circular progress */}\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" className=\"transform -rotate-90\">\n {/* Background circle */}\n <circle\n cx=\"12\"\n cy=\"12\"\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n className=\"text-slate-300 dark:text-slate-600\"\n />\n {/* Progress circle */}\n <circle\n cx=\"12\"\n cy=\"12\"\n r={radius}\n fill=\"none\"\n stroke={getColor()}\n strokeWidth=\"2\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n className=\"transition-all duration-300\"\n />\n </svg>\n\n {/* Percentage text */}\n <span\n title={`${used.toLocaleString()} / ${total.toLocaleString()} tokens`}\n className={cn(\"font-medium transition-colors\", getColorName())}\n >\n {percentage.toFixed(1)}%\n </span>\n </div>\n );\n}\n",
73
133
  "import * as React from \"react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface DiffViewerProps {\n /**\n * Diff content in unified diff format\n */\n diff: string;\n /**\n * Optional file name (currently unused, for future enhancement)\n */\n fileName?: string;\n /**\n * Enable mobile-friendly text wrapping\n */\n isMobile?: boolean;\n /**\n * Force text wrapping\n */\n wrapText?: boolean;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * DiffViewer - Display code diff with syntax highlighting\n *\n * Single Responsibility: Render diff content with color-coded additions/deletions\n *\n * Color coding:\n * - Green: Additions (+)\n * - Red: Deletions (-)\n * - Blue: Headers (@@)\n * - Gray: Context lines\n *\n * @example\n * ```tsx\n * <DiffViewer\n * diff=\"+ console.log('added');\\n- console.log('removed');\"\n * />\n * ```\n */\nexport function DiffViewer({\n diff,\n fileName: _fileName,\n isMobile,\n wrapText,\n className,\n}: DiffViewerProps): React.ReactElement {\n if (!diff) {\n return (\n <div className=\"p-4 text-center text-slate-500 dark:text-slate-400 text-sm\">\n No diff available\n </div>\n );\n }\n\n const renderDiffLine = (line: string, index: number) => {\n const isAddition = line.startsWith(\"+\") && !line.startsWith(\"+++\");\n const isDeletion = line.startsWith(\"-\") && !line.startsWith(\"---\");\n const isHeader = line.startsWith(\"@@\");\n\n return (\n <div\n key={index}\n className={cn(\n \"font-mono text-xs p-2\",\n isMobile && wrapText ? \"whitespace-pre-wrap break-all\" : \"whitespace-pre overflow-x-auto\",\n isAddition && \"bg-green-50 dark:bg-green-950 text-green-700 dark:text-green-300\",\n isDeletion && \"bg-red-50 dark:bg-red-950 text-red-700 dark:text-red-300\",\n isHeader && \"bg-blue-50 dark:bg-blue-950 text-blue-700 dark:text-blue-300\",\n !isAddition && !isDeletion && !isHeader && \"text-slate-600 dark:text-slate-400\"\n )}\n >\n {line}\n </div>\n );\n };\n\n return (\n <div\n className={cn(\n \"diff-viewer border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\",\n className\n )}\n >\n {diff.split(\"\\n\").map((line, index) => renderDiffLine(line, index))}\n </div>\n );\n}\n",
74
134
  "import * as React from \"react\";\nimport { FileText } from \"lucide-react\";\nimport { cn } from \"~/utils/utils\";\n\nexport interface JSONRendererProps {\n /**\n * JSON string to parse and display\n */\n content: string;\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * JSONRenderer - Format and display JSON content\n *\n * Single Responsibility: Parse JSON string and render formatted output\n *\n * Returns null if content is not valid JSON\n *\n * @example\n * ```tsx\n * <JSONRenderer content='{\"name\": \"Agent\", \"version\": \"1.0\"}' />\n * ```\n */\nexport function JSONRenderer({ content, className }: JSONRendererProps): React.ReactElement | null {\n try {\n const parsed = JSON.parse(content);\n const formatted = JSON.stringify(parsed, null, 2);\n\n return (\n <div className={cn(\"my-2\", className)}>\n {/* Header */}\n <div className=\"flex items-center gap-2 mb-2 text-sm text-slate-600 dark:text-slate-400\">\n <FileText className=\"w-4 h-4\" />\n <span className=\"font-medium\">JSON Response</span>\n </div>\n\n {/* JSON Content */}\n <div className=\"bg-slate-50 dark:bg-slate-900 border border-slate-200 dark:border-slate-700 rounded-lg overflow-hidden\">\n <pre className=\"p-4 overflow-x-auto\">\n <code className=\"text-slate-900 dark:text-slate-100 text-sm font-mono block whitespace-pre\">\n {formatted}\n </code>\n </pre>\n </div>\n </div>\n );\n } catch (_e) {\n // Not valid JSON, return null and let parent handle\n return null;\n }\n}\n"
75
135
  ],
76
- "mappings": "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",
77
- "debugId": "937CD147AFD2095364756E2164756E21",
136
+ "mappings": "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",
137
+ "debugId": "0ACEDD246945021064756E2164756E21",
78
138
  "names": []
79
139
  }