MUI (Material-UI) предоставляет богатый набор инструментов для
управления цветами компонентов интерфейса. Основой визуальной
консистентности в приложениях является палитра цветов,
которая задается через объект palette в теме
(theme). Цветовая палитра MUI построена на принципах
Material Design и включает несколько ключевых категорий: основные,
дополнительные, текстовые и фоновые цвета.
Primary и Secondary определяют главные цвета приложения. Они применяются для кнопок, ссылок, активных состояний и других элементов, требующих акцентного выделения.
import { createTheme } from '@mui/material/styles';
const theme = createTheme({
palette: {
primary: {
main: '#1976d2',
light: '#63a4ff',
dark: '#004ba0',
contrastText: '#ffffff',
},
secondary: {
main: '#9c27b0',
light: '#d05ce3',
dark: '#6a0080',
contrastText: '#ffffff',
},
},
});
MUI включает системные цвета для уведомлений и состояний:
palette: {
error: {
main: '#d32f2f',
light: '#ff6659',
dark: '#9a0007',
contrastText: '#ffffff',
},
warning: {
main: '#ed6c02',
light: '#ff9800',
dark: '#e65100',
contrastText: '#000000',
},
info: {
main: '#0288d1',
light: '#03a9f4',
dark: '#01579b',
contrastText: '#ffffff',
},
success: {
main: '#2e7d32',
light: '#60ad5e',
dark: '#005005',
contrastText: '#ffffff',
},
}
Эти цвета интегрируются в компоненты MUI через проп
color. Например,
<Button color="error" /> автоматически использует
palette.error.main.
Фоновые цвета управляют визуальной структурой интерфейса и обеспечивают контраст с текстом и компонентами. Основные свойства:
palette: {
background: {
default: '#f5f5f5',
paper: '#ffffff',
},
}
Эта структура позволяет автоматически подстраивать цвета компонентов под заданный фон.
Для обеспечения читаемости текстов применяются цвета текста с различной насыщенностью:
palette: {
text: {
primary: 'rgba(0, 0, 0, 0.87)',
secondary: 'rgba(0, 0, 0, 0.6)',
disabled: 'rgba(0, 0, 0, 0.38)',
hint: 'rgba(0, 0, 0, 0.38)',
},
}
MUI поддерживает светлый и тёмный режимы. Для
каждого режима можно задавать разные значения palette:
const darkTheme = createTheme({
palette: {
mode: 'dark',
background: {
default: '#121212',
paper: '#1d1d1d',
},
text: {
primary: '#ffffff',
secondary: '#bbbbbb',
},
},
});
light
или dark.palette любыми именованными цветами.augmentColor: позволяет
создавать новые цветовые схемы с автоматическим расчётом
light, dark и contrastText.Button или AppBar, могут
использовать кастомные цвета через color или
sx.const theme = createTheme({
palette: {
tertiary: {
main: '#ff5722',
contrastText: '#ffffff',
},
},
});
Использование в компоненте:
<Button color="tertiary">Третичная кнопка</Button>
Эта система делает MUI гибкой для построения визуально согласованных интерфейсов, где каждый компонент автоматически наследует корректные цвета и контраст.