import type { AppRegistryMeta } from '../../AppRegistry';
import { MessageSquare } from 'lucide-react';
import { ChatPanelWrapper } from './ChatPanelWrapper';
import { ChatHeader } from './ChatHeader';

export { MessageList } from './components/MessageList';
export { MessageBubble, StreamingBubble } from './components/MessageBubble';
export { ToolActivity } from './components/ToolActivity';
export { QuestionActivity } from './components/QuestionActivity';
export { ModelSelector } from './components/ModelSelector';
export { InputArea } from './components/InputArea';
export { ChatLauncher } from './ChatLauncher';
// Exported so a screen can mount the chat panel itself with a system prompt of its own.
export { ChatPanelWrapper } from './ChatPanelWrapper';
export { AttachmentList } from './components/AttachmentList';
export { AttachButton } from './components/AttachButton';
export { WebpageDialog } from './components/WebpageDialog';
export { EmbeddableChat, type UseEmbeddableChatType } from './EmbeddableChat';
export { useChat, type UseChatType } from '../../hooks/useChat';
export { useSlashCommands } from './useSlashCommands';
export { useAttachments, type UseAttachmentsType } from './useAttachments';
export { useAudioRecording, type UseAudioRecordingType } from './useAudioRecording';

export * from './types';

export const appRegistryMetas: AppRegistryMeta[] = [
  {
    key: 'officerdev/chat',
    name: 'Chat',
    icon: MessageSquare,
    component: ChatPanelWrapper,
    header: ChatHeader,
  },
];
