mcpField
E
equinor-design-system

equinor-design-system

github.com/equinor设计与 UI420 次安装
代码仓库

关于 equinor-design-system

equinor-design-system 是供 Agent 查阅并应用 Equinor Design System 规则的参考技能,适用于 Fusion 应用开发。它整理了颜色、排版、间距、图标和页面布局规范。

主要功能

  1. 01EDS 颜色与品牌规则
  2. 02Typography 排版规范
  3. 03间距与圆角 Token
  4. 04图标和阴影使用规则
  5. 05Fusion Portal 页面布局约束

适用场景

  1. 01为 Fusion 应用选择颜色和间距
  2. 02按 EDS 规范设置文本样式
  3. 03为组件选择图标与阴影
  4. 04设计符合 Portal 布局的页面

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/equinor/fusion-skills --skill equinor-design-system

安装后在 Claude Code 中输入/equinor-design-system确认已加载。

附带文件CHANGELOG.md

详细介绍

Equinor 设计系统 — 设计规则

EDS 设计令牌和 Equinor 品牌限制的精简参考。所有规则均来自 eds.equinor.com 和 Equinor Communication Toolbox。

此文件是从属查询参考。其中没有工作流步骤。使用方 Agent 应查询相关章节并直接应用规则。


颜色令牌

所有颜色值均使用 EDS CSS 自定义属性(--eds-color-*)。Fusion 应用代码中不得使用原始 hex、rgb() 或 CSS 命名颜色。以下所有令牌均来自 Fusion 应用所依赖的 @equinor/eds-tokens v2.x。

令牌命名模式:--eds-color-<layer>-<semantic>-<variant>

  • bg = 背景填充
  • text = 前景文本 / 图标
  • border = 描边 / 分隔线
背景令牌
用途EDS 令牌
页面 / 应用画布--eds-color-bg-canvas
表面(卡片、面板)--eds-color-bg-surface
输入字段背景--eds-color-bg-input
浮动表面(下拉菜单、工具提示)--eds-color-bg-floating
背景遮罩 / 模态框遮罩--eds-color-bg-backdrop
主要操作填充(默认)--eds-color-bg-fill-emphasis-default
主要操作填充(悬停)--eds-color-bg-fill-emphasis-hover
主要操作填充(激活)--eds-color-bg-fill-emphasis-active
柔和填充(默认)--eds-color-bg-fill-muted-default
柔和填充(悬停)--eds-color-bg-fill-muted-hover
禁用表面--eds-color-bg-disabled
成功表面(柔和背景)--eds-color-bg-success-surface
成功填充(强调)--eds-color-bg-success-fill-emphasis-default
警告表面--eds-color-bg-warning-surface
警告填充(强调)--eds-color-bg-warning-fill-emphasis-default
危险 / 错误表面--eds-color-bg-danger-surface
危险填充(强调)--eds-color-bg-danger-fill-emphasis-default
信息表面--eds-color-bg-info-surface
信息填充(强调)--eds-color-bg-info-fill-emphasis-default
强调色表面--eds-color-bg-accent-surface
强调色填充(强调)--eds-color-bg-accent-fill-emphasis-default
文本令牌
用途EDS 令牌
主要正文文本--eds-color-text-strong
强调 / 填充背景上的文本--eds-color-text-strong-on-emphasis
柔和 / 次要文本--eds-color-text-subtle
禁用文本--eds-color-text-disabled
链接--eds-color-text-link
成功文本--eds-color-text-success-strong
成功文本(柔和)--eds-color-text-success-subtle
警告文本--eds-color-text-warning-strong
危险 / 错误文本--eds-color-text-danger-strong
信息文本--eds-color-text-info-strong
强调色文本--eds-color-text-accent-strong
边框令牌
用途EDS 令牌
默认分隔线 / 边框--eds-color-border-medium
柔和边框--eds-color-border-subtle
强边框--eds-color-border-strong
焦点环--eds-color-border-focus
禁用边框--eds-color-border-disabled
成功边框--eds-color-border-success-medium
警告边框--eds-color-border-warning-medium
危险边框--eds-color-border-danger-medium
信息边框--eds-color-border-info-medium
强调色边框--eds-color-border-accent-medium

品牌限制:Equinor 红色(#FF1243)仅用于主徽标,绝不能用作 UI 操作色或语义色。所有可点击表面和语义表面均使用 EDS 颜色令牌。

在代码中访问令牌

在可能的情况下,优先在 styled-components 中使用 EDS CSS 自定义属性,而不是 @equinor/eds-tokens JS 对象——它们会自动遵循系统深色 / 浅色模式。

import styled from 'styled-components';

const Card = styled.div`
  background: var(--eds-color-bg-surface);
  border: 1px solid var(--eds-color-border-medium);
  color: var(--eds-color-text-strong);
`;

const PrimaryButton = styled.button`
  background: var(--eds-color-bg-fill-emphasis-default);
  color: var(--eds-color-text-strong-on-emphasis);

  &:hover {
    background: var(--eds-color-bg-fill-emphasis-hover);
  }

  &:disabled {
    background: var(--eds-color-bg-disabled);
    color: var(--eds-color-text-disabled);
  }
`;

排版

所有文本渲染均使用 @equinor/eds-core-react 中的 Typography。不要手动设置原始 font-size、font-family 或 line-height,应使用 EDS 的 variant 属性。

Variant 层级
级别variant用途
Displayh1主视觉标题(应用中很少使用)
页面标题h2页面顶级标题
区块标题h3区块标题、卡片标题
子标题h4子区块、面板标题
上眉标题overline类别标签、面包屑层级文本
正文body_long多行正文
短正文body_short单行正文、表格单元格
说明文字caption元数据、时间戳、辅助文本
标签label表单字段标签
import { Typography } from '@equinor/eds-core-react';

// Correct
<Typography variant="h3">Section heading</Typography>
<Typography variant="body_short">Table cell value</Typography>
<Typography variant="caption">Last updated 2 hours ago</Typography>

// Wrong — never do this
<p style={{ fontSize: '14px' }}>…</p>
品牌限制

Equinor 品牌字体为 Equinor(用于营销场景)。Fusion 应用必须使用 @equinor/eds-core-react 定义的 EDS 系统字体,不要在应用 CSS 中导入或覆盖 Equinor 品牌字体。


间距令牌

对于 margin、padding 和 gap,请使用 @equinor/eds-tokens v2 中的 --eds-spacing-horizontal-<size> 和 --eds-spacing-vertical-<size>。不要使用任意像素值。

水平和垂直刻度共用相同的尺寸级别,但每个级别的数值可能相差几像素;请使用对应轴向的令牌(左右方向使用水平令牌,上下方向使用垂直令牌)。

尺寸水平值垂直值用途
4xs2 px2 px极小间隙、紧凑的图标内边距
3xs4 px4 pxXS 间隙
2xs6 px6 px小型内嵌填充
xs8 px8 pxSM 间隙、紧凑列表间距
sm12 px12 px内边距(标签、徽章)
md16 px16 px标准内容内边距
lg20 px20 pxLG 间隙、区块间距
xl24 px24 pxXL 间隙、卡片间距
2xl28 px28 px主要区块分隔
3xl32 px32 px区块级留白
const Section = styled.section`
  padding-inline: var(--eds-spacing-horizontal-md);
  padding-block: var(--eds-spacing-vertical-lg);
  gap: var(--eds-spacing-vertical-sm);
`;
边框圆角
令牌 / 值用途
--eds-shape-corners-border-radius标准圆角(卡片、按钮)
border-radius: 0锐利 / 方形边角
border-radius: 9999px完全胶囊形(标签、芯片)

海拔与阴影

EDS v2(@equinor/eds-tokens ^2)不会将海拔作为 CSS 自定义属性公开。对于带海拔的表面,请使用 EDS Paper 组件,它会根据其 variant 应用正确的阴影;或者在 styled-components 中需要原始值时,通过 JS 对象导入使用 EDS Elevation 令牌。

import { Paper } from '@equinor/eds-core-react';

// Prefer Paper for cards/panels — elevation is handled automatically
<Paper elevation="raised">
  <CardContent />
</Paper>

如果需要从 JS 获取原始 box-shadow 值(很少见),请从 @equinor/eds-tokens 导入,不要硬编码值。


图标用法

请将 @equinor/eds-icons 与 EDS Icon 组件搭配使用。不要直接导入 SVG,也不要使用第三方图标集。始终通过 data 属性传递图标数据,不要使用字符串形式的 name 属性。@equinor/eds-icons 中的图标名称采用 snake_case。

import { Icon } from '@equinor/eds-core-react';
import { add, close, settings } from '@equinor/eds-icons';

// Pass icon data object via the `data` prop; provide `title` for accessibility
<Icon data={add} title="Add" />
<Icon data={close} title="Close" size={16} />
<Icon data={settings} title="Settings" />

图标尺寸遵循固定刻度:16、24(默认值)、32、40、48。不要设置任意尺寸。


页面布局区域

Fusion Portal 应用运行在 Fusion Portal shell 中,由其负责顶部导航、左侧栏和外边距。应用不得复制这些区域的功能或与之冲突。

三分区应用 shell
区域组件说明
顶部栏 / 标题栏由 Fusion Portal shell 提供应用不渲染全局标题栏
主内容区<main> 或顶层应用 <div>占用全部可用宽度和高度
侧面板 / 详情@equinor/fusion-react-side-sheet从右侧滑入;不要使用自定义定位的叠加层
布局约束
  • 不要在根应用组件上添加外部 margin 或 padding——门户外壳会提供内容内边距。
  • 内部区块间距请使用 --eds-spacing-horizontal-<size> / --eds-spacing-vertical-<size> 令牌。
  • 不要在根容器上使用固定的 height——应允许内容延展至可用视口高度。
  • 不要创建包裹整个页面的自定义可滚动容器——浏览器滚动是标准滚动方式。
  • 固定高度的网格/表格区域可以使用嵌套的可滚动区域,但应审慎使用并明确界定范围。
空状态和加载状态
状态模式
加载中在内容区域居中显示 EDS CircularProgress 或 @equinor/fusion-react-progress-indicator ProgressIndicator
空(无数据)使用 EDS Typography,可选用 EDS Button 作为主要操作;居中或顶部对齐
错误使用颜色为 --eds-color-text-danger-strong 的 EDS Typography variant="body_short",并提供重试操作

来源

评论

支持 Markdown