mui-v7-mastery

Skill especializada em Material-UI V7 para criar interfaces profissionais e responsivas com React + TypeScript. Fornece conhecimento sobre migração, melhores práticas, e padrões avançados.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "mui-v7-mastery" with this command: npx skills add just-mpm/conformai/just-mpm-conformai-mui-v7-mastery

MUI V7 Mastery

Skill especializada em Material-UI V7 para criar interfaces profissionais e responsivas com React + TypeScript. Fornece conhecimento sobre migração, melhores práticas, e padrões avançados.

Quando Usar Esta Skill

Use esta skill quando:

  • Criar dashboards ou interfaces administrativas

  • Desenvolver aplicações React com Material Design

  • Migrar de MUI V6 para V7

  • Precisar de padrões responsivos mobile-first

  • Configurar temas profissionais com dark mode

  • Implementar componentes complexos (tabelas, formulários, etc)

  • Quiser garantir uso correto da API do MUI V7

Filosofia de Uso do MUI V7

🎨 O MUI não é apenas para botões e barras!

O verdadeiro poder do MUI V7 está em:

  • Sistema de Grid responsivo - Layouts profissionais que se adaptam

  • Theming avançado - Personalização completa da marca

  • Componentes compostos - Criar experiências ricas

  • CSS Variables - Temas dinâmicos performáticos

  • Design System - Consistência em toda aplicação

  • Mobile-First by Default - Interfaces que funcionam perfeitamente em qualquer dispositivo

📱 Mobile-First Essentials

SEMPRE projete para mobile primeiro, depois expanda para desktop!

Princípios Fundamentais

  • Comece em xs (0px) - Base styles funcionam em mobile

  • Use up() para expandir - theme.breakpoints.up('md') para desktop

  • Grid para layouts 2D - Cards, galerias, dashboards

  • Stack para layouts 1D - Listas verticais/horizontais

  • Touch targets ≥44px - Botões e ícones clicáveis (WCAG 2.2 AAA)

Breakpoints MUI V7

Nome Pixels Dispositivo

xs 0px Mobile portrait

sm 600px Mobile landscape / Tablet portrait

md 900px Tablet landscape / Desktop small

lg 1200px Desktop

xl 1536px Desktop large

Quando Usar Grid vs Stack

Precisa de layout? │ ├─ Itens em LINHAS E COLUNAS? → Grid │ └─ Exemplo: Cards de produtos, dashboard tiles │ └─ Itens em UMA DIREÇÃO? → Stack ├─ Vertical? → Stack (default) └─ Horizontal? → Stack direction="row"

Quando Usar sx vs useMediaQuery

Precisa de responsividade? │ ├─ Apenas ESTILOS mudam? → sx prop │ └─ fontSize, padding, display, width, etc │ └─ LÓGICA/COMPORTAMENTO muda? → useMediaQuery └─ Componentes diferentes, render condicional

Quick Start

  1. Para Criar Nova Interface (Mobile-First)

// PASSO 1: Comece lendo as referências relevantes // - Read references/responsive-design.md // - Read references/advanced-theming.md // - Read references/advanced-components.md

import { Container, Grid, Card, Stack, IconButton, useTheme, useMediaQuery } from '@mui/material';

function Dashboard() { const theme = useTheme();

// PASSO 2: Defina breakpoint APENAS se lógica/comportamento mudar const isMobile = useMediaQuery(theme.breakpoints.down('md'));

return ( <Container maxWidth="lg"> {/* PASSO 3: Mobile-first Grid (xs → md → lg) /} <Grid container spacing={{ xs: 2, md: 3 }}> {/ Mobile: 100% largura, Tablet: 50%, Desktop: 33% /} <Grid size={{ xs: 12, md: 6, lg: 4 }}> <Card sx={{ p: { xs: 2, md: 3 }, // Padding responsivo minHeight: 200 }}> {/ PASSO 4: Touch targets ≥44px em mobile */} <Stack direction="row" spacing={1}> <IconButton sx={{ minHeight: 44, minWidth: 44 }}> <EditIcon /> </IconButton> </Stack>

        {/* PASSO 5: Componentes diferentes se necessário */}
        {isMobile ? &#x3C;MobileView /> : &#x3C;DesktopView />}
      &#x3C;/Card>
    &#x3C;/Grid>
  &#x3C;/Grid>
&#x3C;/Container>

); }

  1. Para Migrar de V6 para V7

ANTES de qualquer código, leia:

references/migration-v6-to-v7.md

Depois execute os codemods:

npx @mui/codemod v7.0.0/grid-props src npx @mui/codemod v7.0.0/lab-removed-components src npx @mui/codemod v7.0.0/input-label-size-normal-medium src

Configure ESLint para detectar código antigo:

node scripts/setup-mui-eslint.js

  1. Para Configurar Tema Profissional

// Leia references/advanced-theming.md primeiro

import { createTheme, ThemeProvider } from '@mui/material/styles';

const theme = createTheme({ cssVariables: true, // ✅ Ativa CSS variables (recomendado V7)

colorSchemes: { light: { palette: { primary: { main: '#1976d2' }, background: { default: '#fafafa' }, }, }, dark: { palette: { primary: { main: '#90caf9' }, background: { default: '#121212' }, }, }, },

typography: { fontFamily: 'Inter, system-ui, sans-serif', },

components: { MuiButton: { styleOverrides: { root: { textTransform: 'none', borderRadius: 8, }, }, }, }, });

Fluxo de Trabalho Recomendado

Para Qualquer Tarefa MUI

Identifique o tipo de trabalho:

  • Nova interface? → Leia responsive-design.md + advanced-components.md

  • Migração? → Leia migration-v6-to-v7.md primeiro

  • Tema? → Leia advanced-theming.md

  • Tudo junto? → Leia todos os references

Leia as referências relevantes:

// SEMPRE faça isso ANTES de escrever código view references/[arquivo-relevante].md

Implemente seguindo os padrões:

  • Use os exemplos das referências como base

  • Adapte ao caso específico

  • Siga as melhores práticas indicadas

Valide com ESLint (opcional mas recomendado):

node scripts/setup-mui-eslint.js npm run lint:mui

Recursos Disponíveis

📚 References (Leia conforme necessidade)

migration-v6-to-v7.md

Quando ler: Ao migrar código existente ou corrigir erros de breaking changes.

Contém:

  • ❌ Sintaxe antiga vs ✅ Nova sintaxe V7

  • Mudanças de breaking changes (Grid, imports, props)

  • Codemods automáticos

  • Guia passo-a-passo de migração

  • Novos recursos do V7 (ESM, CSS Layers)

Situações de uso:

  • Erros de import após atualizar para V7

  • Componentes Grid não funcionando

  • Props depreciadas sendo usadas

  • Problemas com Hidden, Dialog.onBackdropClick, etc

responsive-design.md

Quando ler: Ao criar qualquer interface que precisa funcionar em mobile.

Contém:

  • Sistema Grid completo com exemplos

  • Breakpoints e useMediaQuery

  • Padrões de navegação responsiva

  • Cards, formulários e dialogs responsivos

  • Mobile-first best practices

Situações de uso:

  • Criar dashboards responsivos

  • Layouts que se adaptam a diferentes telas

  • Navegação mobile vs desktop

  • Formulários otimizados para mobile

advanced-theming.md

Quando ler: Ao configurar tema personalizado ou dark mode.

Contém:

  • Criação de tema com TypeScript

  • CSS Variables (nova abordagem V7)

  • Dark/Light mode toggle

  • Customização avançada de componentes

  • Variantes customizadas

  • Module augmentation

Situações de uso:

  • Aplicar identidade visual da marca

  • Implementar dark mode

  • Criar variantes customizadas de componentes

  • Estilização global consistente

advanced-components.md

Quando ler: Ao implementar componentes complexos.

Contém:

  • Dashboard layout completo

  • Cards com skeleton loading

  • Data tables avançadas (sort, search, pagination)

  • Formulários com validação

  • Sistema de toasts/snackbar

  • Autocomplete assíncrono

  • Performance (lazy loading, memoização, virtualização)

Situações de uso:

  • Criar layouts profissionais

  • Implementar tabelas de dados

  • Formulários complexos com validação

  • Loading states

  • Listas grandes (virtualização)

🔧 Scripts

setup-mui-eslint.js

Propósito: Configurar ESLint para detectar sintaxe antiga do MUI V6 automaticamente.

Como usar:

node scripts/setup-mui-eslint.js

O que faz:

  • Adiciona regras ESLint customizadas

  • Detecta imports depreciados

  • Avisa sobre props removidas

  • Mensagens amigáveis e educativas (emoji + explicação)

  • Cria scripts npm para migração automática

Mensagens exemplo:

  • ❌ Deep imports não são mais suportados no MUI V7

  • ✨ Este componente foi movido para @mui/material

  • ⚠️ Grid foi renomeado. Considere migrar para novo Grid

  • 🔄 Use onClose em vez de onBackdropClick

Mudanças Críticas V7 (Resumo Rápido)

❌ NÃO FUNCIONA MAIS:

// Deep imports import createTheme from '@mui/material/styles/createTheme'; // ❌

// Grid antigo import Grid from '@mui/material/Grid'; // ❌ (agora é GridLegacy)

// Grid2 import Grid2 from '@mui/material/Grid2'; // ❌ (agora é Grid)

// Componentes do lab import Alert from '@mui/lab/Alert'; // ❌

// Props depreciadas <Dialog onBackdropClick={...} /> // ❌ <InputLabel size="normal" /> // ❌ <Hidden xlUp>...</Hidden> // ❌

✅ USE AGORA:

// Imports corretos import { createTheme } from '@mui/material/styles'; // ✅

// Novo Grid (era Grid2) import Grid from '@mui/material/Grid'; // ✅

// Componentes movidos import Alert from '@mui/material/Alert'; // ✅

// Props atualizadas <Dialog onClose={(e, reason) => {...}} /> // ✅ <InputLabel size="medium" /> // ✅ <Box sx={{ display: { xl: 'none' } }} /> // ✅

Padrão de Resposta para Dashboards

Quando solicitado "criar um dashboard bonito", siga este padrão:

Leia as referências:

view references/responsive-design.md view references/advanced-components.md view references/advanced-theming.md

Implemente com abordagem Mobile-First:

  • Comece em xs (mobile) - Layout vertical, touch targets 44px

  • Expanda para md (tablet) - 2 colunas, espaçamento maior

  • Finalize em lg (desktop) - 3-4 colunas, densidade compacta

  • Layout responsivo usando novo Grid V7

  • Tema personalizado com dark mode

  • Componentes profissionais (não apenas Button básico)

  • Loading states (Skeleton)

  • TypeScript sem any

Inclua SEMPRE (Mobile-First):

  • Container para centralização

  • Grid com size={{ xs: 12, md: 6, lg: 4 }}

  • Cards com padding responsivo p={{ xs: 2, md: 3 }}

  • Touch targets ≥44px em IconButton/Button

  • Stack para layouts verticais (não Grid direction="column")

  • Skeleton para loading

  • useMediaQuery APENAS se lógica mudar

  • Theme com cssVariables

  • Testado em 375px, 768px, 1200px

Dicas de Ouro 💡

Mobile-First (Prioridade!)

  • Sempre comece em xs - Base styles para mobile primeiro

  • Use up() para expandir - theme.breakpoints.up('md') , nunca down()

  • Touch targets ≥44px - Botões, ícones, links clicáveis <IconButton sx={{ minHeight: 44, minWidth: 44 }}>

  • Spacing entre targets ≥10px - Evita cliques errados

  • Grid para 2D, Stack para 1D - Não use Grid direction="column"

  • sx para estilos, useMediaQuery para lógica

  • Teste em 375px, 768px, 1200px - Limites críticos

Touch Targets (WCAG 2.2)

Contexto Visual Touch Target WCAG Level

Mobile primário 40-48px 48px AAA

Desktop compacto 32-36px 44px AAA

Mínimo legal 24px 24px AA

Padrão recomendado:

// Visual: 36px (compacto), Touch: 48px (seguro) <Button sx={{ height: { xs: 40, md: 36 }, // Visual height minHeight: { xs: 48, md: 44 } // Touch target }}> Action </Button>

Performance

  • Use cssVariables: true para temas dinâmicos

  • Implemente Skeleton para loading states

  • Use lazy loading para componentes pesados

  • Virtualize listas grandes (react-window)

  • Compartilhe useMediaQuery - Evite duplicar em children

Responsividade

  • Mobile-first SEMPRE - xs → sm → md → lg → xl

  • Use size={{ xs: 12, md: 6 }} no Grid

  • sx prop para estilos responsivos: sx={{ fontSize: { xs: '14px', md: '16px' }, p: { xs: 2, md: 3 } }}

  • useMediaQuery APENAS para lógica condicional

  • Teste em dispositivos reais, não só emulador

Theming

  • Configure dark mode desde o início

  • Use theme.vars.* para CSS variables

  • Crie variantes no tema, não inline

  • TypeScript com module augmentation

Componentes

  • Leia advanced-components.md para padrões

  • Use composition em vez de prop drilling

  • Memoize componentes caros

  • Skeleton > Loading spinner

Comandos Úteis

Migração automática

npx @mui/codemod v7.0.0/lab-removed-components src npx @mui/codemod v7.0.0/grid-props src npx @mui/codemod v7.0.0/input-label-size-normal-medium src

Setup ESLint (detecção de código antigo)

node scripts/setup-mui-eslint.js

Lint MUI

npm run lint:mui

Migração completa (após configurar ESLint)

npm run mui-migrate

Checklist de Qualidade Mobile-First

Antes de considerar uma interface MUI V7 completa:

Design Mobile-First

  • Base styles em xs (0px) - Funciona em mobile primeiro

  • Progressive enhancement com up()

  • theme.breakpoints.up('md') e up('lg')

  • Touch targets ≥44px - Botões, ícones, links (WCAG 2.2 AAA)

  • Visual height pode ser 32-36px SE touch target ≥44px

  • Spacing entre elementos interativos ≥10px

  • Grid para layouts 2D - Cards, dashboards, galerias

  • Stack para layouts 1D - Listas verticais/horizontais

  • Sem Grid direction="column"

  • Use Stack

Responsividade

  • Layout testado em 375px (mobile pequeno)

  • Layout testado em 599px (edge sm breakpoint)

  • Layout testado em 768px (tablet)

  • Layout testado em 899px (edge md breakpoint)

  • Layout testado em 1199px (edge lg breakpoint)

  • Layout testado em 1920px (desktop grande)

  • sx prop usado para estilos - fontSize, padding, display

  • useMediaQuery usado APENAS para lógica - Componentes diferentes, render condicional

  • useMediaQuery compartilhado - Não duplicado em children

  • Sem valores hardcoded de pixels em breakpoints

Tema e Estilo

  • Tema configurado com dark mode

  • cssVariables: true ativado

  • Sem erros de imports depreciados

Performance

  • Loading states implementados (Skeleton)

  • Componentes pesados com lazy loading

  • Listas grandes virtualizadas (react-window)

  • Componentes memoizados onde necessário

Code Quality

  • TypeScript sem erros

  • Nenhum uso de any

  • Componentes seguem Atomic Design (quando aplicável)

Acessibilidade

  • Contraste de cores adequado (WCAG AA mínimo)

  • ARIA labels em elementos interativos

  • Touch targets WCAG 2.2 compliant

  • Testado com leitor de tela (quando crítico)

Recursos Externos

  • Documentação oficial MUI V7

  • Guia de migração

  • Theme creator

  • Material Design Guidelines

Lembre-se: O MUI V7 é poderoso quando usado completamente. Não se limite a botões - explore Grid, theming, composição e padrões avançados! 🚀

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

nextjs-pwa

No summary provided by upstream source.

Repository SourceNeeds Review
General

nextjs-16-specialist

No summary provided by upstream source.

Repository SourceNeeds Review
General

firebase-app-hosting

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

Bitpanda Official

Query a Bitpanda account via the Bitpanda API using a bundled bash CLI. Covers all read-only endpoints: balances, trades, transactions, asset info, and live...

Registry SourceRecently Updated