@eocrm/ 设计系统
反应EOCRM19设计系统. 船舶汇编的无害环境管理(dist/: Java 脚本, .d.ts 类型和平面CSS)——消费者不需要Sass, TypeScript或转接配置.
它的网络符号由 @eocrm/design-tokens; 数据
编译的代号 CSS 被捆绑到此软件包中, 因此消费者只安装
@eocrm/design-system。 。 。 .
构成部分合同 docs/components/<Name>.md (道具表,反标. 消耗此包的AI代理应为: 大赦国际 首先,最好通过MCP服务器(参见 AI探员) (中文(简体) ).
现场操场 (每个组件,按 main: https://eocrm.github.io/design-system/组件
安装
1. 书记官处
@eocrm/design-system 在npmjs上公开,所以没有 .npmrc 或需要证明.
狦 .npmrc 静态地图 @eocrm 转到另一登记册,删除该行.
2. 安装
npm install @eocrm/design-system
3. 使用
// Once, at the app's root (e.g. main.tsx):
import '@eocrm/design-system/styles/global.css';
// Anywhere:
import {
Avatar,
Badge,
Button,
Card,
Cluster,
DropdownMenu,
Input,
Stack,
Tabs,
} from '@eocrm/design-system';
什麽 global.css 已经
导入 @eocrm/design-system/styles/global.css 一旦在您的应用根 应用三件事:
- 键 ——定义每个
--color-*, (中文(简体) ),--space-*, (中文(简体) ),--radius-*, (中文(简体) ),--font-*, (中文(简体) ),--shadow-*等内容:root要求. - 现代重置 - 包括:
* { margin: 0 }。 。 。 . 每个元素上的所有默认浏览器边距被零化. 页: 1Stack编号 :Cluster或父母在CSS中自己的差额。 文件背景用途--document-background(默认)var(--color-bg-subtle)),因此全屏幕表面之间的路由转换不会闪出不同的基色;在全局导入后将该符号覆盖到不同的应用画布上. 重置也适用scrollbar-width: thin+ 符号颜色scrollbar-color每一个元素,所以 每个 滚动容器——库组件和自有组件——得到一个薄薄的它们所组成的滚动条而不是OS默认. (一个故意的例外:崩溃)<Rail>因为一条地沟大约是56px铁路内宽的四分之一。 ) 它被宣布为0 -0 -0; 选择一个卷轴器与它自己的scrollbar-width: auto编号 :scrollbar-color: auto。注意铬忽略::-webkit-scrollbar任何设置这些标准属性的滚动器上的规则——如果你已经这样样式滚动条,它们就会停止应用. - 基础打字 —— 说
body字体+大小,h1– 说吧 –h4大小,链接颜色。 全球规则,没有范围.
如果您只需要符号( 您正在提供自己的重置) , 导入 @eocrm/design-system/styles/tokens.css 直接说 Sass 变量 : @eocrm/design-tokens。 。 。 . mixins.scss 没有替换.
百分点
口音家族默认为蓝色. 要将整个应用程序转换为另一个口音,设置 data-accent 打开 <html> 蓝色的属性 :
<html data-accent="tealpine" data-theme="dark"></html>
data-accent | 色调 | 绘制对象 |
|---|---|---|
| (无) | 蓝色( 默认) | EocrmLightTokens 编号 : EocrmDarkTokens |
tealpine | Teal松树 | EocrmTealPineLightTokens 编号 : EocrmTealPineDarkTokens |
indigo | 因迪戈语Name | EocrmIndigoLightTokens 编号 : EocrmIndigoDarkTokens |
grape | 紫色 | EocrmGrapeLightTokens 编号 : EocrmGrapeDarkTokens |
berry | 紫红色平克 | EocrmBerryLightTokens 编号 : EocrmBerryDarkTokens |
slate | 中性石墨 | EocrmSlateLightTokens 编号 : EocrmSlateDarkTokens |
ocean | 青蓝色 | EocrmOceanLightTokens 编号 : EocrmOceanDarkTokens |
moss | 橄榄绿色 | EocrmMossLightTokens 编号 : EocrmMossDarkTokens |
每个口音交换 --color-accent, (中文(简体) ), -hover, (中文(简体) ), -pressed, (中文(简体) ), -fg, (中文(简体) ), -bg-subtle, (中文(简体) ), -subtle-bg 财务报告和审定财务报表 --ring-accent附加默认值 Link 颜色( r)--color-link-fg 编号 : -hover),在光线下,被强迫为黑暗data-theme="dark")和OS阴暗. 他们用现有的 tokens.css 编号 : global.css,所以没有新的导入. AppProvider是因为 tokens 编号 : darkTokens 覆盖胜出 data-accent 每个主题(见 文件/设置) (中文(简体) ). 信息颜色在任意重音下保持蓝色; DropdownMenu 检查了项目, 选择的选项Picker行和完成的 StagePath 状态跟随重音 。 图表颜色( E)--color-chart-series-1.8布兰德调色板 保持同样的8个花色 但重排1号档 Chart第一辑和 FunnelChart'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 全部命令已经下达 文档/组件/图.md;在莫斯下,前三个插槽对德意志观众的分量较少,一个被接受的例外,比如下面的成功-彩色音符. 轻取主题 Teal松的默认值 Link使用比口音更亮一点的口音(#007676,每个灰地表面的AA)在中等重量(而不是标题内, <strong> 或者说 <th>),因为口音单独坐着太接近于海军身体文本,不能读作链接. 板块的默认值 Links是中等重量,原因相同。 Indigo和Berry也设定了与他们的口音略有不同的链接颜色(#4342c4, (中文(简体) ), #a82c68保持每个灰色地表的AA链接.
作曲:每个口音的"轻"/"暗"物体坐在旁边 EocrmLightTokens 编号 : EocrmDarkTokens;只有口音颜色不同。 链接颜色和图表序列符号只使用网络( 配置没有 Link 或者说 Chart),因此作曲链接保持口音颜色.
刻意没有红色,橙色或黄色口音:这些花饰中的主按钮读作危险或警告行动.
已知问题: 提尔松和莫斯坐近于 --color-success 在Hue。 (笑声) 在将客户关系管理系统切换到其中之一之前,先视同审查成功/成功配对.
Bundler 笔记
货船 汇编的无害环境管理 (单位:千美元)dist/与 .d.ts 类型和普通CSS。 不需要 Sass, TypeScript 或 transpile 配置 .
- CSS进口:每个组件的JS块进口自己的
.css,因此捆绑商必须处理CSS的进口. Next.js, Vite, Rsbuilt 和 CRA 退出框;纯网络包装 5 需要css-loader加号style-loader或者说mini-css-extract-plugin; Rollup需要一个CSS插件. 导入@eocrm/design-system/styles/global.css一次在应用根. - CSS 组件加载的一种方式: 使用任意一种
styles.css(单身)<link>,对于其CSS管道无法从JS中取出进口品的设置,或JS进口品,并非两者兼有——加载两者都重复了每一个规则. 联合来文本身总是需要一个捆绑器(它进口CSS并读作:process.env.NODE_ENV) (中文(简体) ). - Next.js(应用程序路由器):工作状态,不
transpilePackages使用客户端模块'use client',那么简单的组件(Button, (中文(简体) ),Select, (中文(简体) ),Badge, (中文(简体) ),Input,...)可以从服务器组件直接提供. 服务器/客户端边界的三个界限:- 供应商页:1
ru目录包含函数,函数不能从服务器组件传递到客户端组件. 挂载AppProvider编号 :I18nProvider从你自己'use client'提供者文件为导入ru(下文实例),不是来自app/layout.tsx直接说. - 复合部件 (单位:千美元)
Breadcrumb.Item, (中文(简体) ),Modal.Header, (中文(简体) ),Accordion.Item, (中文(简体) ),List.Item,.)无法从服务器组件中达到——客户端模块不能被点入服务器,所以X.Item实值undefined在那里和渲染失败。 a. 变形复合组件'use client'文档. - 控制覆盖 (单位:千美元)
Modal, (中文(简体) ),Drawer()需要状态和一个函数onOpenChange,因此将它们从客户部分中转换出来.
- 供应商页:1
- 设定
moduleResolution: "bundler"(或"node16"在你身边tsconfig.json如果 TypeScript 无法解析类型。 若为tsc拒绝副作用import '…/styles/global.css'(TS2882),而您的框架并不为您声明 CSS 模块( Vite'svite/client下一个next-env.d.ts执行),添加declare module '*.css';改为.d.ts文档.
// app/providers.tsx
'use client';
import { AppProvider, ru } from '@eocrm/design-system';
export function Providers({ children }: { children: React.ReactNode }) {
return (
<AppProvider locale="ru" messages={ru}>
{children}
</AppProvider>
);
}
// app/layout.tsx (Server Component)
import '@eocrm/design-system/styles/global.css';
import { Providers } from './providers';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="ru">
<body>
<Providers>{children}</Providers>
</body>
</html>
);
}
考证. 虚拟外部化 node_modules 和节点不能导入组件' .css (单位:千美元)TypeError: Unknown file extension ".css"),因此内置此软件包(添加 css: true 只有你坚持风格:
// vitest.config.ts
test: { server: { deps: { inline: [/@eocrm\/design-system/] } } },
Jest (CommonJS)需要改变这一无害环境管理一揽子方案及其仅以无害环境管理为主的依赖性(d3-*, (中文(简体) ), internmap,用于 Chart),和分贝 .css 进口:
// jest.config.js — the pattern covers npm/yarn and pnpm (node_modules/.pnpm/<name>@<version>/…) layouts
transformIgnorePatterns: [
'/node_modules/(?!(\\.pnpm/)?(@eocrm[/+]design-system|d3-[^/@]+|internmap)[/@])',
],
moduleNameMapper: { '\\.css$': '<rootDir>/emptyModule.js' },
emptyModule.js是一个空文件( e)module.exports = {};) (中文(简体) ).- 变压器必须在内部将无害环境管理转换为普通JS
node_modules数字 :babel-jest带根babel.config.js联合国.babelrc不适用于下列情况:node_modules)使用@babel/preset-env(单位:千美元)targets: { node: 'current' }),或ts-jest与preset: 'ts-jest/presets/js-with-ts', (中文(简体) ),allowJs: true财务报告和审定财务报表module: 'commonjs'。 。 。 .
构成部分
分组导航。 构成部分合同 docs/components/<Name>.md· ; 大赦国际 以符号表来索引它们.
类型
Title语义标题Text—正文/内置文本Code——内含<code>芯片Kbd— 键盘键提示
行动
Button- 触发行动ButtonGroup组合按钮 + 分块控制SocialButton— 供应商登录按钮Link——多形态风格锚地DropdownMenu- 触发器中的动作菜单
窗体控件
Input—单行文本Textarea——多行文本OtpInput——一次性码入,单字符箱PasswordInput——带眼切换的密码字段+可选警告PasswordStrengthMeter4. 4个部分的可视性Select——取值器(单取,多取,可取取取取取,同取取取,可取取取取取取取取取)OptionsPicker——滤波器(多/单一、分组、可搜索)Checkbox– 有本地输入的复选框 + 自定义油漆Radio编号 :RadioGroup单收音机+外地集包装机Switch—— 二进制切换Slider——受控滑动器(单相+范围,水平+垂直)ColorPicker——受控HEX取色器(人气过量+内含)IconPicker——有弹出式无线电网的可控图标拾取器FileUpload受控文件拾取器,带有空投区ImageCrop受控图像剪接器
窗体布局
Field- 有标签的控制单位FormSection标题栏目FormRow——田地并存SettingRow编号 :SettingRow.List设置- 屏幕行, 有共享标签栏、 装饰和页脚槽
日期和时间
Calendar月/周/日/议程意见DatePicker编号 :InlineDatePicker——单日期输入+popover,或以流量表示DateRangePicker编号 :InlineDateRangePicker— 日期- 范围输入+ popover, 或在流中TimeField独立的每日时间投入
布局结构( T)
Stack——垂直布局Cluster——横向布局来包接Grid—— 二维布局原始Masonry——高平瓦砾布局Constrain宽度/ 高度/ 弹性约束Divider- 原始分隔器Page——页根布局原始Screen——全血/中屏幕布局AppLayout——取景端填充应用程序外壳PageHeader——页上标题区
导航 & app 铬
Rail相撞左侧导航TopBar——粘性应用程序上行Tabs横向标签条TabNav——标签样式路由导航(链接,不是标签)Breadcrumb- 导航道Pagination— 有窗口的编号导航CursorPagination– 预置 / 下一个没有总计的流
重叠
Modal——焦点锁定对话框Drawer边缘悬浮滑入面板Popover——交互式内容的非模式浮动面板ConfirmationPopover- "你确定吗?"预设Tooltip/ 键盘焦点上的小型浮动标签
反馈状态( S)
Alert——持续流入通知Toast(单位:千美元)ToastViewport+ 键toast——临时通知Progress线性进度栏CircularProgress循环进展/旋转器Skeleton- 装载占位符EmptyState- "这里什么都没有"集装箱ErrorState——页面级别状态/结果屏Badge- 状态/类药丸FilterChip——可忽略的"活性过滤"药丸
数据显示
Card- 接壤集装箱LinkCard——可点击的全地卡DefinitionList——语义密钥/值对 (dl编号 :dt编号 :dd(中文(简体) )Table- 原始表格数据DataTable——具有列功能的由服务器驱动的数据表Accordion纵向相撞面板Kanban——多栏板(道格对重排+跨栏拖放)Sortable——拖放重排列表(单列)Image——带有加载+错误状态的图像
身份与媒体
Avatar编号 :AvatarGroup– 剖面圆 / slack 风格的叠行PersonDisplay——神通+名称(+可选描述行)Logo——品牌标志锁站BrandIcon——第三方品牌标识IconTile调色板-彩色图标框架
图书馆也载着
AppProvider(主题+i18n+地语接线),,LocaleProvider编号 :I18nProvider,则useTranslation编号 :useLocale钩子palette帮助者和日历原始钩子(useMonth, (中文(简体) ),useWeek, (中文(简体) ),useDay, (中文(简体) ),useAgenda) (中文(简体) ). 见 大赦国际 这些.
迁移到 0.7
- 样式表 :
@eocrm/design-system/styles/global.scss现在@eocrm/design-system/styles/global.css。 。 。 .styles.css捆绑每个组件的CSS;每个组件的CSS也由JS块自动导入——使用一个或另一个,而不是两者兼用. - 删除的子路径 :
styles/tokens.scss, (中文(简体) ),styles/reset.scss, (中文(简体) ),styles/typography.scss财务报告和审定财务报表styles/mixins.scss不见了 使用styles/tokens.css仅限象征 Sass 变量 :@eocrm/design-tokens(单位:千美元)@use它直接地).mixins.scss没有替换. - 编译输出 : 包裹不再有船了
src/; 丢出transpilePackages和任何Sass/TSX装载器的规则. - i18n (英语):
I18nProvider编号 :AppProvider不再捆绑俄语。 通过目录 :<I18nProvider locale="ru" messages={ru}>与import { ru } from '@eocrm/design-system'一个非en无语言messages日志 aconsole.error使英语。 在 Next.js 应用程序路由器中,通过ru从a'use client'提供者文件( 参见 Bundler 笔记)——服务器组件不能通过它的函数叶.
发布新版本
释放是 自动合并为 main 触发 Release 工作流程(.github/workflows/release.yml),其中:
- 运行质量门( 类型检查、 测试、 涂抹、 构建、 沥青内容检查) .
- 如果库实际更改, 请从最新版本计算下一个版本
v*git 标记( patch ump 默认) , 如果标签已经存在, 则拒绝 . - 同步
@eocrm/design-tokens, (中文(简体) ),@eocrm/design-system,并生成一个版本的令牌合同. - 发布符号 npm 软件包,然后发布设计-系统 npm 软件包,然后发布 npmjs(受托出版),然后发布
com.eocrm.design:design-tokens-compose改为 GitHub 包 (Maven). - 在创建和推动前验证所有三个登记册版本
v<version>git标签. - 重新部署游乐场(见下文).
没有手动“ 运行工作流程” 按钮 – 合并到 main 是释放的唯一方法。 仅播放地面的更改跳过发布步骤(没有演示tweak的版本凸起),但仍会重新部署操场.
包式预算数字 : size-budgets.json 每一消费者情况(a)npm run size质量 test-ds);在公关中有意地增加预算,增加捆绑.
造成轻微/重大起落编辑 BUMP (单位:千美元)patch → minor 编号 : major(单位:千美元) release.yml 在一个分支和合并。 设计上没有其他的覆盖.
一次性重播设置:设置 – 动作 – 一般 – 工作流程权限 – “读写权限 ” .
软件包名称 @eocrm/design-system 必须匹配您在 GitHub 上发布的组织(或用户) 。 如果你的兽不是 eocrm,将软件包重新命名为 package.json 编辑 scope: 在工作流程中.
游戏场部署
游乐场(活式组件画廊)自动部署到GitHub Pages,作为最后一步 Release 工作流程,所以现场网站 https://eocrm.github.io/design-system/ (中文(简体) ) 总是反映 main每当质量门经过时,它都会重新部署——甚至只在游乐场进行更改时,甚至在公布打嗝时也是如此.
这个Repo及其Pages网站是公开的. 游乐场把图书馆的源头烤成一团 ?raw 进口,所以源是世界可读的——这是对开源图书馆的故意.
一次性设置: 设置 ~ 页 ~ source="GitHub Actions"(不是"从一分支部署").
AI探员
@eocrm/design-system-mcp 是 MCP 服务器,为文档服务 @eocrm/design-system 版本您的工程已安装 。 克劳德代码的一次性用户镜安装:
claude mcp add --scope user eocrm-design-system -- npx -y @eocrm/design-system-mcp
编码、光标、VS代码和通用设置 npx -y @eocrm/design-system-mcp install-skill: 见其 读取。 。 。 .
医生住的地方(所以你不用涂鸦)
- 读取 (这个文件)——安装,设置,捆绑笔记,发布/部署操作.
- 大赦国际 ——AI编码代理简洁入门. 托肯表格和组件索引.
docs/components/<Name>.md——每个组件合同:道具表,示例,防标. 还有docs/setup.md, (中文(简体) ),docs/theming.md, (中文(简体) ),docs/transient-state.md。 。 。 .- 克劳德·姆德 - 对某人的规则 修改此库 (不给消费者).
许可证
Apache 许可证 2.0。 。 。 .