feat: add phase 1 runnable skeleton
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { type ReactNode, useState } from 'react';
|
||||
import { AppShell } from '../components/app-shell/AppShell.js';
|
||||
import { ActivityScreen } from '../screens/ActivityScreen/ActivityScreen.js';
|
||||
import { AskScreen } from '../screens/AskScreen/AskScreen.js';
|
||||
import { CronScreen } from '../screens/CronScreen/CronScreen.js';
|
||||
import { FilesScreen } from '../screens/FilesScreen/FilesScreen.js';
|
||||
import { SettingsScreen } from '../screens/SettingsScreen/SettingsScreen.js';
|
||||
import type { ScreenId } from './navigation.js';
|
||||
|
||||
const screens: Record<ScreenId, ReactNode> = {
|
||||
ask: <AskScreen />,
|
||||
activity: <ActivityScreen />,
|
||||
cron: <CronScreen />,
|
||||
files: <FilesScreen />,
|
||||
settings: <SettingsScreen />,
|
||||
};
|
||||
|
||||
export function App() {
|
||||
const [activeScreen, setActiveScreen] = useState<ScreenId>('ask');
|
||||
|
||||
return (
|
||||
<AppShell activeScreen={activeScreen} onNavigate={setActiveScreen}>
|
||||
{screens[activeScreen]}
|
||||
</AppShell>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import { Activity, CalendarClock, Files, MessageCircle, Settings } from 'lucide-react';
|
||||
|
||||
export const navItems = [
|
||||
{ id: 'ask', label: 'Ask', icon: MessageCircle },
|
||||
{ id: 'activity', label: 'Activity', icon: Activity },
|
||||
{ id: 'cron', label: 'Cron', icon: CalendarClock },
|
||||
{ id: 'files', label: 'Files', icon: Files },
|
||||
{ id: 'settings', label: 'Settings', icon: Settings },
|
||||
] as const;
|
||||
|
||||
export type ScreenId = (typeof navItems)[number]['id'];
|
||||
Reference in New Issue
Block a user