feat(dashnote): optimize workspace UI for mobile#85
Conversation
Convert modals to bottom sheets, add mobile action sheet and info drawer to the note editor, surface activity drawer from the mobile nav, and enlarge tap targets across login and note list. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Show "Edited" / "Updated …" status in the mobile editor header and pin the note list search row below the workspace header with a translucent backdrop. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… gestures - Hoist MobileActionSheet into a shared component with a focus trap, aria-labelledby title, and focus restoration on close - Split swipe handling into pointer vs mouse paths with pointer capture and touch-action: pan-y so vertical scroll stays smooth - Show a "notes are public" hint in the mobile editor and move toasts to top-center on small screens - Add MobileActionSheet tests and extend NoteList/NoteEditor/e2e coverage
📝 WalkthroughWalkthroughThis PR implements comprehensive mobile responsiveness and gesture-based interactions for the Dashnote example app, introducing a reusable ChangesMobile UI Responsiveness & Gestures
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
example-apps/dashnote/src/App.tsxESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox. example-apps/dashnote/src/components/AppShell.tsxESLint skipped: the ESLint configuration for this file references a package that is not available in the sandbox. example-apps/dashnote/src/components/LoginModal.tsxESLint skipped: the ESLint configuration for this file references a package that is not available in the sandbox.
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@example-apps/dashnote/src/styles/globals.css`:
- Around line 96-101: The mobile focus styles for
.mobile-note-editor-field:focus and .mobile-note-editor-field:focus-visible
currently remove all focus cues; change them to a subtle accessible focus
indicator instead of removing outline/box-shadow—replace the outline: none and
box-shadow: none with a modest ring (e.g., a thin outline or low-opacity
box-shadow and visible offset) and preserve focus-visible behavior so keyboard
users on mobile/tablet still see a clear but unobtrusive focus state for
.mobile-note-editor-field.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 678c707f-756a-4490-a4d5-ef246b3751c6
📒 Files selected for processing (17)
example-apps/dashnote/src/App.tsxexample-apps/dashnote/src/components/AppShell.tsxexample-apps/dashnote/src/components/LoginModal.tsxexample-apps/dashnote/src/components/MobileActionSheet.tsxexample-apps/dashnote/src/components/Modal.tsxexample-apps/dashnote/src/components/NoteEditor.tsxexample-apps/dashnote/src/components/NoteList.tsxexample-apps/dashnote/src/components/NotesWorkspace.tsxexample-apps/dashnote/src/styles/globals.cssexample-apps/dashnote/test/App.test.tsxexample-apps/dashnote/test/LoginModal.test.tsxexample-apps/dashnote/test/MobileActionSheet.test.tsxexample-apps/dashnote/test/NoteEditor.test.tsxexample-apps/dashnote/test/NoteList.test.tsxexample-apps/dashnote/test/NotesWorkspace.test.tsxexample-apps/dashnote/test/e2e/fixtures.tsexample-apps/dashnote/test/e2e/notes.spec.ts
Summary
MobileActionSheetinto a shared component with focus trap,aria-labelledby, and focus restoration; split swipe handling into pointer vs mouse paths with pointer capture andtouch-action: pan-yso vertical scroll stays smoothMobileActionSheettests and expandNoteList/NoteEditor/ e2e coverage for the mobile flowsSummary by CodeRabbit
New Features
Style
Tests