'use client'; import { useEffect } from 'react'; import { useStore } from '@/lib/store'; import { api } from '@/lib/api'; import Sidebar from '@/components/Sidebar'; import MessageList from '@/components/MessageList'; import MessageInput from '@/components/MessageInput'; import SettingsPanel from '@/components/SettingsPanel'; export default function Home() { const { settings, setSettings, setConversations, setCurrentId, setMessages, currentId, settingsOpen, setSettingsOpen, sidebarOpen, setSidebarOpen, } = useStore(); useEffect(() => { api.getSettings().then(s => { setSettings(s); document.documentElement.setAttribute('data-theme', s.theme || 'light'); document.documentElement.setAttribute('data-font', s.font_size || 'medium'); }).catch(console.error); api.getConversations().then(setConversations).catch(console.error); }, []); useEffect(() => { document.documentElement.setAttribute('data-theme', settings.theme || 'light'); document.documentElement.setAttribute('data-font', settings.font_size || 'medium'); }, [settings.theme, settings.font_size]); useEffect(() => { if (currentId) { api.getMessages(currentId).then(setMessages).catch(console.error); } else { setMessages([]); } }, [currentId]); return (
{/* Mobile sidebar overlay */} {sidebarOpen && (
setSidebarOpen(false)} /> )} {/* Sidebar — desktop: toggleable, mobile: slide-over */}
setSidebarOpen(false)} />
{/* Main — shrinks when settings opens */}
{/* Topbar */}
{/* Sidebar toggle */} Aaron AI {' '}— personal knowledge assistant
{/* Settings panel — pushes content, doesn't cover */}
); }