Description
This is a UI/UX issue introducing a Quiet hours preference under Settings → Notifications that suppresses non-critical toasts and freezes ambient animations within a user-defined window. Critical alerts (wallet errors, claim failures) still surface.
Requirements and Context
- Stored as
{ start: "22:00", end: "08:00", tz: "auto" }
- Hook in
components/ui/toast.tsx and sonner.tsx to filter by severity
- Visual indicator in the navbar moon icon
- Must be secure, tested, and documented
- Should be efficient and easy to review
Suggested Execution
- Fork the repo and create a branch
git checkout -b feature/quiet-hours
- Implement changes
- Edit
app/(dashboard)/settings/page.tsx
- Add
lib/quiet-hours.ts and integrate with toast surfaces
- Test and commit
- Time-fake tests around boundary
- Cover edge cases (timezone changes, DST)
- Include test output and notes in the PR
Example commit message
feat: quiet hours preference for toasts and motion
Acceptance Criteria
Guidelines
- WCAG 2.1 AA, never block actionable warnings
- Clear documentation and inline comments
- Timeframe: 96 hours
Description
This is a UI/UX issue introducing a Quiet hours preference under Settings → Notifications that suppresses non-critical toasts and freezes ambient animations within a user-defined window. Critical alerts (wallet errors, claim failures) still surface.
Requirements and Context
{ start: "22:00", end: "08:00", tz: "auto" }components/ui/toast.tsxandsonner.tsxto filter by severitySuggested Execution
app/(dashboard)/settings/page.tsxlib/quiet-hours.tsand integrate with toast surfacesExample commit message
Acceptance Criteria
Guidelines