Skip to content

feat(frontend): ESLint config, mobile nav, skeleton loaders, error boundaries #832

Open
success-OG wants to merge 3 commits into
Devsol-01:mainfrom
success-OG:feat/setup
Open

feat(frontend): ESLint config, mobile nav, skeleton loaders, error boundaries #832
success-OG wants to merge 3 commits into
Devsol-01:mainfrom
success-OG:feat/setup

Conversation

@success-OG
Copy link
Copy Markdown
Contributor

PR Description

Summary

closes #799
close #800
closes #801
closes #802

────────────────────────────────────────────────────────────────────────────────────

#799 — ESLint Configuration

  • Created frontend/.eslintrc.json extending next/core-web-vitals and
    plugin:jsx-a11y/recommended
  • Added no-console warn rule (allows warn/error) and react/no-unescaped-entities
    error rule
  • Added "lint": "next lint" script to frontend/package.json

────────────────────────────────────────────────────────────────────────────────────

#800 — Responsive Mobile Navigation Improvements

  • Integrated existing useFocusTrap hook into Navbar.tsx — focus is trapped inside
    the mobile menu when open
  • Added click-outside-to-close via mousedown listener on document
  • Escape key closes the menu (handled by useFocusTrap's onEscape callback)
  • Body scroll is locked (overflow: hidden) while the menu is open
  • Added proper ARIA: aria-expanded, aria-controls, aria-label on toggle button;
    role="dialog", aria-modal, aria-label on the menu panel

────────────────────────────────────────────────────────────────────────────────────

#801 — Skeleton Loading Components

  • Created reusable Skeleton component at app/components/ui/Skeleton.tsx
  • Added skeleton-shimmer CSS animation to globals.css with @media
    (prefers-reduced-motion: reduce) opt-out
  • Added skeleton loading states to WalletBalanceCard, ActivePoolList, and
    RecentTransactionsWidget — skeletons match the final content layout

────────────────────────────────────────────────────────────────────────────────────

#802 — Error Boundary Components

  • Created ErrorBoundary class component at app/components/ErrorBoundary.tsx with
    user-friendly error UI and a Try Again button that resets the boundary
  • Errors are logged via console.error in componentDidCatch
  • Global boundary wraps the entire app in app/layout.tsx
  • Page-specific boundaries added to dashboard/layout.tsx and savings/layout.tsx
  • Note: Error boundaries do not catch errors in event handlers — use try/catch for
    those

@vercel
Copy link
Copy Markdown

vercel Bot commented May 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
nestera Ready Ready Preview, Comment May 29, 2026 10:32pm

@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented May 29, 2026

@success-OG Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant