diff --git a/extension/src/vault/vault.ts b/extension/src/vault/vault.ts index 5851cd6..3f21552 100644 --- a/extension/src/vault/vault.ts +++ b/extension/src/vault/vault.ts @@ -26,6 +26,20 @@ import { renderBackupPanel, teardown as teardownBackup } from './components/back import { renderImportPanel, teardown as teardownImport } from './components/import-panel'; import { applyColorScheme } from '../shared/color-scheme'; +// --------------------------------------------------------------------------- +// Bottom sheet type picker +// --------------------------------------------------------------------------- + +const BOTTOM_SHEET_TYPES: Array<{ type: ItemType; label: string }> = [ + { type: 'login', label: 'Login' }, + { type: 'secure_note', label: 'Secure Note' }, + { type: 'totp', label: 'TOTP' }, + { type: 'card', label: 'Card' }, + { type: 'identity', label: 'Identity' }, + { type: 'key', label: 'SSH / API Key' }, + { type: 'document', label: 'Document' }, +]; + // --------------------------------------------------------------------------- // Helpers // --------------------------------------------------------------------------- @@ -308,11 +322,52 @@ function renderShell(app: HTMLElement): void { } // --------------------------------------------------------------------------- -// Bottom sheet (stub — wired in Task 11) +// Bottom sheet (wired in Task 11) // --------------------------------------------------------------------------- function wireBottomSheet(): void { - // wired in Task 11 + document.getElementById('vault-sheet-scrim')?.addEventListener('click', closeBottomSheet); + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape' && state.bottomSheetOpen) closeBottomSheet(); + }); +} + +function openBottomSheet(): void { + const sheet = document.getElementById('vault-bottom-sheet'); + const scrim = document.getElementById('vault-sheet-scrim'); + if (!sheet || !scrim) return; + + sheet.innerHTML = ` +
+