feat(notebooks): add list view toggle to notebooks page #925

PR
PR description

Summary

Adds a tile/list view toggle to the Notebooks page, addressing the navigation pain of large notebook collections.

  • Tile view (default, unchanged): the existing visual card grid.
  • List view: compact rows showing notebook name, description, source/note counts, and last updated โ€” easier to scan when you have many notebooks.
  • A segmented toggle (grid/list icons) in the page header switches between modes.
  • The preference is persisted via a Zustand store (notebook-view-storage) so it survives reloads and is shared by both the active and archived lists.

Frontend-only โ€” no API changes. NotebookResponse already exposes source_count, note_count, updated, name, and description.

Changes

  • New notebook-view-store.ts (persisted Zustand store).
  • New NotebookRow.tsx โ€” compact row variant reusing the card's click-to-open / archive / delete behavior.
  • NotebookList.tsx renders the grid or the row list based on the store.
  • Toggle control added to notebooks/page.tsx header.
  • New notebooks.tileView / notebooks.listView keys translated across all 14 locales.
  • CHANGELOG updated under [Unreleased].

Verification

  • tsc --noEmit clean, npm run lint 0 errors, locale parity test 14/14.
  • Verified locally with Playwright: toggling switches layouts, the active button highlights, and the list-view selection persists across a full page reload.

Closes #885

Review in cubic

CUT
cutter bot commented just now

๐ŸŽฌ Cutter preview โ€” PR #925

notebooks tile view with new view toggle
notebooks tile view with new view toggle โ€” Notebooks page gains a grid/list view toggle for switching between card and row layouts.
Toggle notebook view mode
Toggle notebook view mode โ€” Notebooks page gains a tile/list view toggle, with list layout selected.