{"_id":"@ai-tabs/ui-vue","_rev":"7-5bce89b8cd2dbe30775a8a5bf511960a","name":"@ai-tabs/ui-vue","dist-tags":{"latest":"1.10.0"},"versions":{"1.4.1":{"name":"@ai-tabs/ui-vue","version":"1.4.1","_id":"@ai-tabs/ui-vue@1.4.1","maintainers":[{"name":"dirigent","email":"mail@systemarchitecture.studio"}],"dist":{"shasum":"e9ac6984e0ed27fac2709a1b602693a75c9f104b","tarball":"https://registry.npmjs.org/@ai-tabs/ui-vue/-/ui-vue-1.4.1.tgz","fileCount":1205,"integrity":"sha512-UGqfrFIH7eKK+/2rv4KEJwTeYO9CttXiODGZr2qEYNTQaSSMxLEvefEwVJPWJV3NVLNyWLtMoW1CB43Cpql0fg==","signatures":[{"sig":"MEUCIQDywrMLdr78EbG2SU5dnGIZv7f3M82FgPv9HB0M0hRwqQIgMRHbOh2aTj0Q11gARs//+1sKZGa9nPRT64h9Cpppb+A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1812328},"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","lefthook"]},"type":"module","gitHead":"23283e2bb5041459507722b40c311a0baf6318ba","scripts":{"dev":"vite","lint":"biome check --write .","test":"vitest run","build":"vite build","lint:ci":"biome ci .","prepare":"lefthook install","test:coverage":"vitest run --coverage","generate:icons":"node scripts/generate-icon-map.mjs","prepublishOnly":"pnpm build"},"_npmUser":{"name":"dirigent","email":"mail@systemarchitecture.studio"},"_npmVersion":"10.9.4","description":"A tabbed file editor UI built with Vue 3, featuring a split-pane layout with file explorer, command palette, and theme support. Runs both as an Electron renderer and as a standalone web app using the File System Access API.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@xterm/xterm":"^6.0.0","@vscode/codicons":"^0.0.44","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.2","devDependencies":{"vue":"^3.5.27","vite":"^7.3.1","vitest":"^4.0.18","lefthook":"^2.1.0","happy-dom":"^20.6.0","@biomejs/biome":"^2.3.14","@commitlint/cli":"^20.4.1","@vue/test-utils":"^2.4.6","semantic-release":"^24.0.0","@vitejs/plugin-vue":"^6.0.4","@vitest/coverage-v8":"^4.0.18","material-icon-theme":"^5.31.0","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^20.4.1"},"peerDependencies":{"vue":"^3.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-vue_1.4.1_1770882296971_0.3034359351080804","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@ai-tabs/ui-vue","version":"1.5.0","_id":"@ai-tabs/ui-vue@1.5.0","maintainers":[{"name":"dirigent","email":"mail@systemarchitecture.studio"}],"dist":{"shasum":"e21e7d528338f4a9798acf3872d3302549b3a3ea","tarball":"https://registry.npmjs.org/@ai-tabs/ui-vue/-/ui-vue-1.5.0.tgz","fileCount":1205,"integrity":"sha512-IwDRGPvzKs8qb9v82spOHCo336/p2ydaqVtN6DXjtpkF1SFHaD1/90QKLLgpu9EO8sTaTUpVfcGQ0+UEi6IbEQ==","signatures":[{"sig":"MEQCIFN0kqJM0plTB6+k1V5SnoiWWV2QZ7ZbkayEuyrBVNgnAiBc/f9ItGWROduTBFbbsSMHFo/6pdSRULuT2T6xNpEzSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1815610},"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","lefthook"]},"type":"module","gitHead":"e6dc899b8e011eb035aa5eeb001d55d70df18f84","scripts":{"dev":"vite","lint":"biome check --write .","test":"vitest run","build":"vite build","lint:ci":"biome ci .","prepare":"lefthook install","test:coverage":"vitest run --coverage","generate:icons":"node scripts/generate-icon-map.mjs","prepublishOnly":"pnpm build"},"_npmUser":{"name":"dirigent","email":"mail@systemarchitecture.studio"},"_npmVersion":"10.9.4","description":"A tabbed file editor UI built with Vue 3, featuring a split-pane layout with file explorer, command palette, and theme support. Runs both as an Electron renderer and as a standalone web app using the File System Access API.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@xterm/xterm":"^6.0.0","@vscode/codicons":"^0.0.44","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.2","devDependencies":{"vue":"^3.5.27","vite":"^7.3.1","vitest":"^4.0.18","lefthook":"^2.1.0","happy-dom":"^20.6.0","@biomejs/biome":"^2.3.14","@commitlint/cli":"^20.4.1","@vue/test-utils":"^2.4.6","semantic-release":"^24.0.0","@vitejs/plugin-vue":"^6.0.4","@vitest/coverage-v8":"^4.0.18","material-icon-theme":"^5.31.0","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^20.4.1"},"peerDependencies":{"vue":"^3.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-vue_1.5.0_1770899041096_0.06690609143055459","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@ai-tabs/ui-vue","version":"1.6.0","_id":"@ai-tabs/ui-vue@1.6.0","maintainers":[{"name":"dirigent","email":"mail@systemarchitecture.studio"}],"dist":{"shasum":"9f1627e7a98958334124c6d2d16b2756c29fe819","tarball":"https://registry.npmjs.org/@ai-tabs/ui-vue/-/ui-vue-1.6.0.tgz","fileCount":1205,"integrity":"sha512-SqVI4otH4Jk3+RgldMfS0nwBruqGyH/VNxJG+lx01t0C0J+37OTHiUB/UHbGrh028fonIe2FEpT4iqzR0PKlKQ==","signatures":[{"sig":"MEYCIQDB0NBd2O+AhE7GzJ3zG1z+fjAVUCyzKi/IECzKOKZKVwIhAPYnYP86w20AY0v/reVjt7sCSJqSLrKxg2rZmgF5ECgc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1819391},"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","lefthook"]},"type":"module","gitHead":"97d8bc92206a0a0de1c5c0e8ba5bece83d6f58b5","scripts":{"dev":"vite","lint":"biome check --write .","test":"vitest run","build":"vite build","lint:ci":"biome ci .","prepare":"lefthook install","test:coverage":"vitest run --coverage","generate:icons":"node scripts/generate-icon-map.mjs","prepublishOnly":"pnpm build"},"_npmUser":{"name":"dirigent","email":"mail@systemarchitecture.studio"},"_npmVersion":"10.9.4","description":"A tabbed file editor UI built with Vue 3, featuring a split-pane layout with file explorer, integrated terminal, command palette, and theme support. Runs both as an Electron renderer and as a standalone web app using the File System Access API.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@xterm/xterm":"^6.0.0","@vscode/codicons":"^0.0.44","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.2","devDependencies":{"vue":"^3.5.27","vite":"^7.3.1","vitest":"^4.0.18","lefthook":"^2.1.0","happy-dom":"^20.6.0","@biomejs/biome":"^2.3.14","@commitlint/cli":"^20.4.1","@vue/test-utils":"^2.4.6","semantic-release":"^24.0.0","@vitejs/plugin-vue":"^6.0.4","@vitest/coverage-v8":"^4.0.18","material-icon-theme":"^5.31.0","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^20.4.1"},"peerDependencies":{"vue":"^3.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-vue_1.6.0_1770911930128_0.2910681519142795","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@ai-tabs/ui-vue","version":"1.7.0","_id":"@ai-tabs/ui-vue@1.7.0","maintainers":[{"name":"dirigent","email":"mail@systemarchitecture.studio"}],"dist":{"shasum":"f895738ca5681c36cd4a3c5250750dfee6a6b61e","tarball":"https://registry.npmjs.org/@ai-tabs/ui-vue/-/ui-vue-1.7.0.tgz","fileCount":1205,"integrity":"sha512-N5ttmcX/OGux2oRP2lk7izJA+hGxWtVtyAi7TcnMGpNMYIYPzZ0u0r34XMqOHESxlBiiiuFLjKI+8hPelD8PgQ==","signatures":[{"sig":"MEUCIQDLo3u2c3OJMQhHCi2JdZv32URz/N75APKL0TIA2fHWTgIgWCZfkXBn2xehWqTuD6N5P9ttv40zrbUr8zuApTWJn18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2199066},"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","lefthook"]},"type":"module","gitHead":"0355f2da36781eca59b37204032cd5fbd1e71028","scripts":{"dev":"vite","lint":"biome check --write .","test":"vitest run","build":"vite build","analyze":"node scripts/analyze-code.mjs","lint:ci":"biome ci .","prepare":"lefthook install","test:coverage":"vitest run --coverage","generate:icons":"node scripts/generate-icon-map.mjs","prepublishOnly":"pnpm build"},"_npmUser":{"name":"dirigent","email":"mail@systemarchitecture.studio"},"_npmVersion":"10.9.4","description":"A tabbed file editor UI built with Vue 3, featuring a split-pane layout with file explorer, integrated terminal, command palette, and theme support. Runs both as an Electron renderer and as a standalone web app using the File System Access API.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"dompurify":"^3.3.1","markdown-it":"^14.1.1","@xterm/xterm":"^6.0.0","@vscode/codicons":"^0.0.44","@xterm/addon-fit":"^0.11.0","@xterm/addon-webgl":"^0.19.0","@xterm/addon-canvas":"^0.7.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.2","devDependencies":{"vue":"^3.5.27","vite":"^7.3.1","vitest":"^4.0.18","lefthook":"^2.1.0","happy-dom":"^20.6.0","@biomejs/biome":"^2.3.14","@commitlint/cli":"^20.4.1","@vue/test-utils":"^2.4.6","semantic-release":"^24.0.0","@vitejs/plugin-vue":"^6.0.4","@vitest/coverage-v8":"^4.0.18","material-icon-theme":"^5.31.0","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^20.4.1"},"peerDependencies":{"vue":"^3.5.0"},"optionalDependencies":{"knip":"^5.83.1","jscpd":"^4.0.8","es6-plato":"^1.2.3","stylelint":"^17.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-vue_1.7.0_1771222288801_0.4595964314560719","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@ai-tabs/ui-vue","version":"1.8.0","_id":"@ai-tabs/ui-vue@1.8.0","maintainers":[{"name":"dirigent","email":"mail@systemarchitecture.studio"}],"dist":{"shasum":"55c370a95229c4f2a96b365db21f7de73728ea3e","tarball":"https://registry.npmjs.org/@ai-tabs/ui-vue/-/ui-vue-1.8.0.tgz","fileCount":1271,"integrity":"sha512-BynHL1q36PyO4XZHqyTFB3Gc/IZPi+90MOAWT3gwgUM4ndPZfKvleeH1N0XZ0MH27vhj0OiaqUQ82EVL6rwxKw==","signatures":[{"sig":"MEUCIH5o/+ygwGYXJUVtr76/Lih1MFHzr50pIvc6JR87sprpAiEAhq+I+jE08PfOkl0DwmCEvwOirSEIzwgR190wVPhi+6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4811992},"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","lefthook"]},"type":"module","gitHead":"30101cc2a1cb68c8c811f6067781b07366540996","scripts":{"dev":"vite","lint":"biome check --write .","test":"vitest run","build":"vite build","analyze":"node scripts/analyze-code.mjs","lint:ci":"biome ci .","prepare":"lefthook install","test:coverage":"vitest run --coverage","generate:icons":"node scripts/generate-icon-map.mjs","prepublishOnly":"pnpm build"},"_npmUser":{"name":"dirigent","email":"mail@systemarchitecture.studio"},"_npmVersion":"10.9.4","description":"A tabbed file editor UI built with Vue 3, featuring a split-pane layout with file explorer, integrated terminal, command palette, and theme support. Runs both as an Electron renderer and as a standalone web app using the File System Access API.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mermaid":"^11.12.2","dompurify":"^3.3.1","markdown-it":"^14.1.1","@xterm/xterm":"^6.0.0","@vscode/codicons":"^0.0.44","@xterm/addon-fit":"^0.11.0","@xterm/addon-webgl":"^0.19.0","@xterm/addon-canvas":"^0.7.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.2","devDependencies":{"vue":"^3.5.27","vite":"^7.3.1","vitest":"^4.0.18","lefthook":"^2.1.0","happy-dom":"^20.6.0","@biomejs/biome":"^2.3.14","@commitlint/cli":"^20.4.1","@vue/test-utils":"^2.4.6","semantic-release":"^24.0.0","@vitejs/plugin-vue":"^6.0.4","@vitest/coverage-v8":"^4.0.18","material-icon-theme":"^5.31.0","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^20.4.1"},"peerDependencies":{"vue":"^3.5.0"},"optionalDependencies":{"knip":"^5.83.1","jscpd":"^4.0.8","es6-plato":"^1.2.3","stylelint":"^17.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-vue_1.8.0_1771287304600_0.7940307525946695","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@ai-tabs/ui-vue","version":"1.9.0","_id":"@ai-tabs/ui-vue@1.9.0","maintainers":[{"name":"dirigent","email":"mail@systemarchitecture.studio"}],"dist":{"shasum":"87f093f346435511be6cfb1738e93491525747c1","tarball":"https://registry.npmjs.org/@ai-tabs/ui-vue/-/ui-vue-1.9.0.tgz","fileCount":1271,"integrity":"sha512-VroNTRe4SGQyXmt9GY+1RWKnxNABbZCeG4TicBk7+TxItOHgf3pnGQCyQouXLA6kb62LueeqBG2v6RWi2ZcQHw==","signatures":[{"sig":"MEUCIQCrqE+o0YOV5odznvqF6upBJ360HkwXnUWDpLsB7llE8gIgBO1wKUR+0bb3kAifKvE2ASqplp5m9+2XlKRWMruQbgk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4813912},"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","lefthook"]},"type":"module","gitHead":"9b49927e14971bbc3f8d6270a91e5cb9ec125e8f","scripts":{"dev":"vite","lint":"biome check --write .","test":"vitest run","build":"vite build","analyze":"node scripts/analyze-code.mjs","lint:ci":"biome ci .","prepare":"lefthook install","test:coverage":"vitest run --coverage","generate:icons":"node scripts/generate-icon-map.mjs","prepublishOnly":"pnpm build"},"_npmUser":{"name":"dirigent","email":"mail@systemarchitecture.studio"},"_npmVersion":"10.9.4","description":"A tabbed file editor UI built with Vue 3, featuring a split-pane layout with file explorer, integrated terminal, command palette, and theme support. Runs both as an Electron renderer and as a standalone web app using the File System Access API.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mermaid":"^11.12.2","dompurify":"^3.3.1","markdown-it":"^14.1.1","@xterm/xterm":"^6.0.0","@vscode/codicons":"^0.0.44","@xterm/addon-fit":"^0.11.0","@xterm/addon-webgl":"^0.19.0","@xterm/addon-canvas":"^0.7.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.26.2","devDependencies":{"vue":"^3.5.27","vite":"^7.3.1","vitest":"^4.0.18","lefthook":"^2.1.0","happy-dom":"^20.6.0","@biomejs/biome":"^2.3.14","@commitlint/cli":"^20.4.1","@vue/test-utils":"^2.4.6","semantic-release":"^24.0.0","@vitejs/plugin-vue":"^6.0.4","@vitest/coverage-v8":"^4.0.18","material-icon-theme":"^5.31.0","@semantic-release/git":"^10.0.1","@commitlint/config-conventional":"^20.4.1"},"peerDependencies":{"vue":"^3.5.0"},"optionalDependencies":{"knip":"^5.83.1","jscpd":"^4.0.8","es6-plato":"^1.2.3","stylelint":"^17.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-vue_1.9.0_1771327218949_0.2867626616170398","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@ai-tabs/ui-vue","version":"1.10.0","type":"module","packageManager":"pnpm@10.26.2","scripts":{"prepare":"lefthook install","prepublishOnly":"pnpm build","dev":"vite","build":"vite build","lint":"biome check --write .","lint:ci":"biome ci .","test":"vitest run","test:coverage":"vitest run --coverage","generate:icons":"node tasks/generate-icon-map.mjs","find-code-smells":"node tasks/find-code-smells.mjs","aide":"tasks/claude-session.sh"},"pnpm":{"onlyBuiltDependencies":["@biomejs/biome","lefthook"]},"devDependencies":{"@biomejs/biome":"^2.3.14","@commitlint/cli":"^20.4.1","@commitlint/config-conventional":"^20.4.1","@semantic-release/git":"^10.0.1","@vitejs/plugin-vue":"^6.0.4","@vitest/coverage-v8":"^4.0.18","@vue/test-utils":"^2.4.6","happy-dom":"^20.6.0","lefthook":"^2.1.0","material-icon-theme":"^5.31.0","semantic-release":"^24.0.0","vite":"^7.3.1","vitest":"^4.0.18","vue":"^3.5.27"},"publishConfig":{"access":"public"},"peerDependencies":{"vue":"^3.5.0"},"optionalDependencies":{"es6-plato":"^1.2.3","jscpd":"^4.0.8","knip":"^5.83.1","stylelint":"^17.2.0"},"dependencies":{"@vscode/codicons":"^0.0.44","@xterm/addon-canvas":"^0.7.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.12.0","@xterm/addon-webgl":"^0.19.0","@xterm/xterm":"^6.0.0","dompurify":"^3.3.1","markdown-it":"^14.1.1","mermaid":"^11.12.2"},"_id":"@ai-tabs/ui-vue@1.10.0","gitHead":"5d72c67ddcba48f7e57d931cd8aa5d208f59ec81","description":"A tabbed file editor UI built with Vue 3, featuring a split-pane layout with file explorer, integrated terminal, command palette, and theme support. Runs both as an Electron renderer and as a standalone web app using the File System Access API.","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-qEzMp2GQdoRvXycK0i8zYGVZNEwI5oYo3YNcGM4OJ1GvuHdT7xLWlXho9+LFONEvwb0JDVILJTyfPsK8cWREOw==","shasum":"812cfc621246916fd9af1dae04a777fa6a315ac2","tarball":"https://registry.npmjs.org/@ai-tabs/ui-vue/-/ui-vue-1.10.0.tgz","fileCount":1272,"unpackedSize":4833598,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDCKNWLOl5h7LoFd4PS2468HJ2vYc/PgTS/4z2p6jKKqwIhAOV07I39bpcuHEH8DWWTnAjmUbcKVY74xkiSmnVFNXFu"}]},"_npmUser":{"name":"dirigent","email":"mail@systemarchitecture.studio"},"directories":{},"maintainers":[{"name":"dirigent","email":"mail@systemarchitecture.studio"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui-vue_1.10.0_1771782997101_0.9642655729340461"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-12T07:44:56.915Z","modified":"2026-02-22T17:56:37.528Z","1.4.1":"2026-02-12T07:44:57.266Z","1.5.0":"2026-02-12T12:24:01.323Z","1.6.0":"2026-02-12T15:58:50.367Z","1.7.0":"2026-02-16T06:11:29.020Z","1.8.0":"2026-02-17T00:15:04.867Z","1.9.0":"2026-02-17T11:20:19.188Z","1.10.0":"2026-02-22T17:56:37.357Z"},"description":"A tabbed file editor UI built with Vue 3, featuring a split-pane layout with file explorer, integrated terminal, command palette, and theme support. Runs both as an Electron renderer and as a standalone web app using the File System Access API.","maintainers":[{"name":"dirigent","email":"mail@systemarchitecture.studio"}],"readme":"# AI Tabs UI Vue\n\nA tabbed file editor UI built with Vue 3, featuring a split-pane layout with file explorer, integrated terminal, command palette, and theme support. Runs both as an Electron renderer and as a standalone web app using the File System Access API.\n\n## Features\n\n- **Tab management** — open, close, pin, reorder (drag-and-drop), and navigate tabs with keyboard shortcuts; right-click context menu\n- **File explorer** — tree view with lazy loading, search filtering, hidden file toggling, and git pull\n- **Integrated terminal** — xterm.js terminal with real shell process (Electron only), login shell, theme-driven ANSI colors, and exit handling\n- **Split pane** — resizable explorer/editor and editor/terminal layouts with horizontal/vertical toggle\n- **Command palette** — fuzzy-matched command search (`Cmd+Shift+P`)\n- **Themes** — dark, light, VS Code, and high-contrast; persisted to localStorage\n- **Notifications** — toast messages for errors and feedback\n- **Keybindings** — `Cmd+O` open, `Cmd+W` close, `Ctrl+Tab` / `Ctrl+Shift+Tab` cycle, `Cmd+1`–`9` jump to tab, `` Ctrl+` `` toggle terminal\n- **Dual environment** — Electron adapter (proxies `window.electronAPI`) and web adapter (File System Access API)\n\n## Install\n\n```bash\npnpm add @ai-tabs/ui-vue\n```\n\nRequires Vue 3.5+.\n\n## Usage\n\n```vue\n<script setup>\nimport { App } from '@ai-tabs/ui-vue'\nimport '@ai-tabs/ui-vue/style.css'\n</script>\n\n<template>\n  <App />\n</template>\n```\n\nFor Electron integration (terminal, native dialogs), see [docs/Use-with-Electron.md](docs/Use-with-Electron.md).\n\n## Development\n\n```bash\npnpm install\npnpm dev\n```\n\n### Scripts\n\n| Command | Description |\n|---------|-------------|\n| `pnpm dev` | Start Vite dev server |\n| `pnpm build` | Production build |\n| `pnpm test` | Run tests with Vitest |\n| `pnpm test:coverage` | Run tests with v8 coverage |\n| `pnpm lint` | Lint and format with Biome |\n\n## Project Structure\n\n```\nsrc/\n├── adapters/          # Environment adapters (Electron, Web)\n├── components/        # Vue SFC components\n│   └── editors/       # Editor pane implementations\n├── composables/       # Shared state and logic (useTabs, useCommands, …)\n├── editor/            # Editor input model\n├── styles/            # Global CSS\n├── themes/            # Color registry system\n├── test/              # Test helpers and shared mocks\n└── utils/             # Emitter, disposable, path utilities, tree filter\n```\n\n## Documentation\n\n- [UI overview](docs/UI.md) — layout, themes, keyboard shortcuts\n- [Tab bar](docs/UI-Tab-bar.md) — tabs, drag-and-drop, context menu, sizing modes\n- [File explorer](docs/UI-File-explorer.md) — tree view, search, toolbar\n- [Editor pane](docs/UI-Editor-pane.md) — split view, terminal, editor registry\n- [Pane resizer](docs/UI-Pane-resizer.md) — drag handle behavior\n- [Electron guide](docs/Use-with-Electron.md) — preload script, IPC handlers, terminal setup\n\n## Tech Stack\n\n- [Vue 3](https://vuejs.org/) (Composition API, `<script setup>`)\n- [Vite 7](https://vite.dev/)\n- [Vitest 4](https://vitest.dev/) + [@vue/test-utils](https://test-utils.vuejs.org/) + happy-dom\n- [xterm.js](https://xtermjs.org/) — integrated terminal\n- [VS Code Codicons](https://github.com/microsoft/vscode-codicons) — icon font\n\n## License\n\nMIT\n","readmeFilename":"README.md"}