Implements the InboxView container that wraps the existing Inbox component
with store integration and keyboard navigation.
Key features:
- Filters and displays only untriaged inbox items from store
- Keyboard navigation (j/k or arrow keys) between items
- Triage actions (accept, defer, archive) that update store state
- Inbox zero celebration state with animation
- Real-time count updates in both view header and nav badge
- Keyboard shortcut hints in footer
TDD: Tests written first, then implementation to pass them.
Files:
- src/components/InboxView.tsx: New container component
- src/stores/inbox-store.ts: New Zustand store for inbox state
- src/components/Inbox.tsx: Added focusIndex prop for keyboard nav
- src/components/AppShell.tsx: Wire up InboxView and inbox count badge
- src/lib/types.ts: Added archived and snoozedUntil fields to InboxItem
- tests/components/Inbox.test.tsx: Added InboxView test suite
- tests/helpers/fixtures.ts: Added makeInboxItem helper
Acceptance criteria met:
- Only untriaged items shown
- Inbox zero state with animation
- Keyboard navigation works
- Triage actions update state
- Count updates in real-time