Система токенов дизайна (Design Tokens) в Element Plus представляет собой централизованное хранилище переменных, отвечающих за визуальное оформление компонентов: цвета, отступы, размеры шрифтов, тени и другие параметры интерфейса. Она обеспечивает единообразие визуального языка и позволяет гибко управлять темами без необходимости менять код компонентов напрямую.
В Element Plus токены реализованы через SCSS-переменные и JavaScript-константы, что позволяет интегрировать их как в шаблоны стилей, так и в логику компонентов.
Цветовые токены
$--color-primary: #409EFF;
$--color-success: #67C23A;
$--color-warning: #E6A23C;
$--color-error: #F56C6C;
$--color-info: #909399;Токены типографики
$--font-size-base: 14px;
$--font-size-lg: 16px;
$--font-size-sm: 12px;
$--font-weight-bold: 600;
$--line-height-base: 1.5;Токены размеров и отступов
$--spacing-xs: 4px;
$--spacing-sm: 8px;
$--spacing-md: 16px;
$--spacing-lg: 24px;
$--border-radius-base: 4px;Токены теней и эффектов
$--box-shadow-base: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
$--overlay-opacity: 0.5;Компоненты Element Plus автоматически используют токены при подключении стилей. Можно переопределить переменные глобально или локально.
// Переопределение глобального цвета кнопки
$--color-primary: #ff6600;
.el-button {
background-color: $--color-primary;
border-radius: $--border-radius-base;
}
Токены доступны через объект ElDesignTokens, что
позволяет программно изменять стили.
import { ElDesignTokens } from 'element-plus'
ElDesignTokens.colorPrimary = '#ff6600';
Такой подход полезен для реализации смены темы в приложении без перезагрузки страницы.
Element Plus поддерживает несколько видов тем:
Light и Dark
const lightTheme = {
colorPrimary: '#409EFF',
colorBackground: '#ffffff'
}
const darkTheme = {
colorPrimary: '#1F2D3D',
colorBackground: '#141414'
}Кастомные темы
Пример интеграции токенов в проект Vue 3 с Element Plus:
<template>
<el-button type="primary">Кнопка</el-button>
</template>
<script setup>
import { ElDesignTokens } from 'element-plus'
ElDesignTokens.colorPrimary = '#ff6600';
ElDesignTokens.borderRadiusBase = '8px';
</script>
<style lang="scss">
@import "~element-plus/packages/theme-chalk/src/index";
.el-button {
font-size: $--font-size-lg;
padding: $--spacing-sm $--spacing-md;
}
</style>
Такой подход обеспечивает централизованное управление стилями и простое переключение между темами без изменения структуры компонентов.
Система токенов дизайна в Element Plus формирует основу для масштабируемых интерфейсов и позволяет поддерживать визуальную консистентность на всех уровнях приложения.