Files
Lottery-Tracker/SKILLS/56-ui-material-ui.md

1.7 KiB
Raw Blame History

Material UI (MUI) Design System

Use this skill for any React/Next “portal/admin/dashboard” UI so you stay consistent and avoid random component soup.

Standard choice

  • Preferred UI library: MUI (Material UI).
  • Prefer MUI components over ad-hoc HTML/CSS unless theres a good reason.
  • One design system per repo (do not mix Chakra/Ant/Bootstrap/etc.).

Setup (Next.js/React)

  • Install: @mui/material @emotion/react @emotion/styled
  • If using icons: @mui/icons-material
  • If using data grid: @mui/x-data-grid (or pro if licensed)

Theming rules

  • Define a single theme (typography, spacing, palette) and reuse everywhere.
  • Use semantic colors (primary/secondary/error/warning/success/info), not hard-coded hex everywhere.
  • Prefer MUIs sx for small styling; use styled() for reusable components.

“Portal” patterns (modals, popovers, menus)

  • Use MUI Dialog/Modal/Popover/Menu components instead of DIY portals.
  • Accessibility requirements:
    • Focus is trapped in Dialog/Modal.
    • Escape closes modal unless explicitly prevented.
    • All inputs have labels; buttons have clear text/aria-labels.
    • Keyboard navigation works end-to-end.

Layout conventions (for portals)

  • Use: AppBar + Drawer (or NavigationRail equivalent) + main content.
  • Keep pages as composition of small components: Page → Sections → Widgets.
  • Keep forms consistent: FormControl + helper text + validation messages.

Performance hygiene

  • Avoid re-render storms: memoize heavy lists; use virtualization for large tables (DataGrid).
  • Prefer server pagination for huge datasets.

PR review checklist

  • Theme is used (no random styling).
  • Components are MUI where reasonable.
  • Modal/popover accessibility is correct.
  • No mixed UI libraries.