import { useEffect, useRef } from 'react' import { useTabsStore } from '@/stores/useTabsStore' import { useSettingsStore } from '@/stores/useSettingsStore' function BranchIcon() { return ( ) } function ErrorIcon() { return ( ) } function EncodingIcon() { return ( ) } function Spinner() { return ( ) } function Separator() { return (
) } function StatusItem({ children, title, onClick, }: { children: React.ReactNode title?: string onClick?: () => void }) { return ( ) } export default function StatusBar() { const activeTab = useTabsStore((s) => s.activeTabId ? s.tabs.find((t) => t.id === s.activeTabId) ?? null : null ) const cursorLine = useTabsStore((s) => s.cursorLine) const cursorCol = useTabsStore((s) => s.cursorCol) const savingId = useTabsStore((s) => s.savingId) const statusMessage = useTabsStore((s) => s.statusMessage) const clearStatusMessage = useTabsStore((s) => s.clearStatusMessage) const tabSize = useSettingsStore((s) => s.tabSize) const isSaving = savingId === activeTab?.id const statusTimer = useRef | undefined>(undefined) useEffect(() => { if (statusMessage) { if (statusTimer.current) clearTimeout(statusTimer.current) statusTimer.current = setTimeout(clearStatusMessage, 2000) } return () => { if (statusTimer.current) clearTimeout(statusTimer.current) } }, [statusMessage, clearStatusMessage]) return (
main 0 0
{isSaving && ( Saving )} {statusMessage && !isSaving && ( {statusMessage === 'Saved' ? '✓' : '✗'} {statusMessage} )} {activeTab && ( {activeTab.language.charAt(0).toUpperCase() + activeTab.language.slice(1)} )} Spaces: {tabSize} UTF-8 {activeTab && ( Ln {cursorLine}, Col {cursorCol} )}
) }