# Wireframes (черновик, пересмотреть позже) > Статус: DRAFT — требует пересмотра и финализации перед реализацией. ## 1. Main state (файл открыт) ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ [←] Open in Editor — /Users/belief/project [?] [×] │ ├──────────────────────┬──────────────────────────────────────────────────────┤ │ 🔍 Filter files... │ [● index.ts] [ App.tsx ] [ utils.ts] [×] │ │ │ ─────────────────────────────────────────────────── │ │ ▼ src/ │ src / renderer / components / App.tsx │ │ ▼ renderer/ │ ─────────────────────────────────────────────────── │ │ ▼ components/ │ 1 │ import React from 'react'; │ │ ▸ chat/ │ 2 │ import { useStore } from '../store'; │ │ ▸ common/ │ 3 │ │ │ ● App.tsx │ 4 │ export const App = () => { │ │ index.ts │ 5 │ const theme = useStore(s => s.theme); │ │ ▸ hooks/ │ 6 │ return ( │ │ ▸ store/ │ 7 │
│ │ ▸ utils/ │ 8 │ │ │ ▸ main/ │ 9 │
│ │ ▸ shared/ │ 10 │ ); │ │ ▸ test/ │ 11 │ }; │ │ ▸ docs/ │ 12 │ │ │ package.json │ │ │ tsconfig.json │ │ │ ├──────────────────────────────────────────────────────│ │ │ Ln 5, Col 12 │ TypeScript │ UTF-8 │ Spaces: 2 │ LF │ └──────────────────────┴──────────────────────────────────────────────────────┘ ``` ## 2. Empty state (нет открытых файлов) ``` ┌──────────────────────┬──────────────────────────────────────────────────────┐ │ 🔍 Filter files... │ │ │ │ │ │ ▼ src/ │ No file is open │ │ ▸ main/ │ │ │ ▸ renderer/ │ Keyboard Shortcuts │ │ ▸ shared/ │ ───────────────── │ │ ▸ test/ │ ⌘P Quick Open │ │ package.json │ ⌘S Save File │ │ │ ⌘⇧F Search in Files │ │ │ ⌘W Close Tab │ │ │ ⌘B Toggle Sidebar │ │ │ ⌘G Go to Line │ │ │ Esc Close Editor │ │ │ │ └──────────────────────┴──────────────────────────────────────────────────────┘ ``` ## 3. Unsaved changes confirm dialog ``` ┌──────────────────────────────────────────────────┐ │ │ │ ⚠ You have unsaved changes in 3 files: │ │ │ │ • index.ts │ │ • App.tsx │ │ • utils.ts │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌────────┐ │ │ │ Save All & │ │ Discard & │ │ Cancel │ │ │ │ Close │ │ Close │ │ │ │ │ └──────────────┘ └──────────────┘ └────────┘ │ │ │ └──────────────────────────────────────────────────┘ ``` ## 4. Context menu на директории ``` │ ▼ components/ │ │ ▸ chat/ │ │ ▸ common/ ─────┤ │ App.tsx │ New File... │ │ index.ts │ New Folder... │ │ ▸ hooks/ │────────────────────│ │ │ Delete │ │ │ Copy Path │ │ │ Reveal in Finder │ │ └────────────────────┘ ``` ## 5. Quick Open (Cmd+P) ``` ┌──────────────────────────────────────────────────┐ │ 🔍 app.tsx │ ├──────────────────────────────────────────────────┤ │ ● App.tsx src/renderer/components │ │ AppShell.tsx src/renderer/components │ │ api.ts src/shared/types │ │ atomicWrite.ts src/main/utils │ │ │ │ 4 results │ └──────────────────────────────────────────────────┘ ``` ## 6. Search in Files (Cmd+Shift+F) ``` ┌──────────────────────┬──────────────────────────────────────────────────────┐ │ SEARCH IN FILES │ [ index.ts ] [● App.tsx ] │ │ 🔍 useStore [Aa] │ ─────────────────────────────────────────────────── │ │ ──────────────────── │ 1 │ import React from 'react'; │ │ 12 results in 8 files│ 5 │ const theme = useStore(s => s.theme); ◄── │ │ │ │ │ ▼ src/renderer/ │ │ │ App.tsx:5 │ │ │ const theme = │ │ │ useStore(s => │ │ │ store/index.ts:12 │ │ │ export const │ │ │ useStore = ... │ │ │ ▼ src/main/ │ │ │ ... │ │ └──────────────────────┴──────────────────────────────────────────────────────┘ ``` ## 7. Binary / Error / Large file states ``` Binary file: ┌──────────────────────────────────────────────────┐ │ │ │ 📄 logo.png │ │ PNG Image • 245 KB │ │ │ │ [Open in System Viewer] [Close Tab] │ │ │ └──────────────────────────────────────────────────┘ Error state: ┌──────────────────────────────────────────────────┐ │ │ │ ⚠ Cannot read file │ │ Permission denied (EACCES) │ │ │ │ [Retry] [Close Tab] │ │ │ └──────────────────────────────────────────────────┘ Large file (2-5MB): ┌──────────────────────────────────────────────────┐ │ ⚠ File too large for editing (3.2 MB) │ │ Showing first 100 lines (read-only preview) │ │──────────────────────────────────────────────────│ │ 1 │ // This is a large generated file... │ │ 2 │ ... │ │ 100 │ ... │ │──────────────────────────────────────────────────│ │ [Open in External Editor] │ └──────────────────────────────────────────────────┘ ``` ## 8. Git status badges + conflict banner ``` File tree with git status: │ ▼ src/ │ │ ▼ renderer/ │ │ M App.tsx │ ← M = modified (amber) │ U newFile.ts │ ← U = untracked (green) │ A staged.ts │ ← A = staged (blue) │ index.ts │ Conflict banner (file changed on disk while open): ┌──────────────────────────────────────────────────────────────┐ │ ⚠ File changed on disk [Reload] [Keep Mine] [Show Diff] │ ├──────────────────────────────────────────────────────────────┤ │ 1 │ import React from 'react'; │ │ 2 │ ... │ └──────────────────────────────────────────────────────────────┘ ```