diff --git a/src/tui/App.tsx b/src/tui/App.tsx index 3eb2ef4..6214ece 100644 --- a/src/tui/App.tsx +++ b/src/tui/App.tsx @@ -52,7 +52,8 @@ import { PowerlineSetup, StatusLinePreview, TerminalOptionsMenu, - TerminalWidthMenu + TerminalWidthMenu, + type MainMenuOption } from './components'; const GITHUB_REPO_URL = 'https://github.com/sirmalloc/ccstatusline'; @@ -206,7 +207,7 @@ export const App: React.FC = () => { } }; - const handleMainMenuSelect = async (value: string) => { + const handleMainMenuSelect = async (value: MainMenuOption) => { switch (value) { case 'lines': setScreen('lines'); diff --git a/src/tui/components/MainMenu.tsx b/src/tui/components/MainMenu.tsx index ceaa342..02563bf 100644 --- a/src/tui/components/MainMenu.tsx +++ b/src/tui/components/MainMenu.tsx @@ -8,8 +8,18 @@ import React, { useState } from 'react'; import type { Settings } from '../../types/Settings'; import { type PowerlineFontStatus } from '../../utils/powerline'; +export type MainMenuOption = 'lines' + | 'colors' + | 'powerline' + | 'terminalConfig' + | 'globalOverrides' + | 'install' + | 'starGithub' + | 'save' + | 'exit'; + export interface MainMenuProps { - onSelect: (value: string) => void; + onSelect: (value: MainMenuOption) => void; isClaudeInstalled: boolean; hasChanges: boolean; initialSelection?: number; @@ -59,7 +69,8 @@ export const MainMenu: React.FC = ({ onSelect, isClaudeInstalled, } else if (key.return) { const item = selectableItems[selectedIndex]; if (item) { - onSelect(item.value); + // Since we filtered by selectable: true, value is guaranteed to be MainMenuOption + onSelect(item.value as MainMenuOption); } } });