design-system

design-system

构建符合无障碍标准的响应式政府网站开源设计系统

CMS Design System 是基于 U.S. Web Design System 的开源设计框架,专为创建符合 Section 508 无障碍标准的政府网站而设计。它提供了扩展的 CSS 和 React 组件、实用类和网格系统,便于快速开发可访问且响应式的网站。该系统包含多个 NPM 包,涵盖核心组件、healthcare.gov 和 medicare.gov 的专用设计系统及相关文档。

设计系统CMS前端开发可访问性React组件Github开源项目

CMS设计系统

该设计系统是一套开源的设计和前端开发资源,用于创建符合508条款、响应式和一致的网站。它基于美国网页设计系统,并扩展支持额外的CSS和React组件、实用类和网格框架,使团队能够快速原型设计和构建可访问、响应式、可投入生产的网站。

目录

你现在位于一个包含多个NPM包的monorepo的根目录,这些包位于packages目录中。查看每个包中的README.md获取更多详细信息。

名称描述
CMS设计系统设计系统的核心CSS、JS和React组件。<br> @cmsgov/design-system
Healthcare.gov设计系统healthcare.gov应用团队使用的设计系统 <br> npm
Medicare.gov设计系统medicare.gov应用团队使用的设计系统 <br> npm
CMSDS文档基于Gatsby的CMSDS文档网站。

本地运行

本项目使用Yarn进行包管理。Yarn有助于确保每个人使用相同的包版本。如果你还没有安装,请安装Yarn

注意:当你创建Git提交时,所有暂存的脚本将自动通过ESLint和Prettier运行。如果linter捕获到错误,你的提交将失败。这是一个功能,而不是bug :)

脚本

这些脚本都可以在repo的根目录下运行:

  • yarn install
    • 注意,由于我们使用yarn工作区,我们的设计系统包在根node_modules目录中被符号链接,以便其他包直接使用。这意味着ds-healthcare-gov包始终使用我们本地design-system包的最新版本,以此类推。
  • yarn build
    • 编译所有内容并使其准备好发布
    • 构建是必需的,以便在子设计系统包中获得核心包的TypeScript完成功能
  • yarn build:{core,cmsgov,healthcare,medicare}
    • 构建特定品牌的设计系统及其相应的包
  • yarn build:docs
    • 静态构建文档网站的副本
    • 然后你可以用yarn serve:docs来提供服务
  • yarn build:storybook
    • 静态构建Storybook的副本到./storybook-static
    • 然后你可以用yarn serve:storybook来提供服务
    • 对于开发,只需使用yarn storybook
  • yarn build:examples
    • 静态构建./examples中的示例项目副本
    • 然后你可以用yarn serve:examples来提供服务
    • 或者你可以构建和运行单个示例。更多详情请参见示例目录中的README。
  • yarn start
    • 启动运行文档网站的本地服务器
    • 文件更改时重新生成文档
    • 运行start之前,请运行build命令
  • yarn storybook
    • 启动storybook,方便核心包的本地开发
    • yarn storybook:react以React而不是Preact启动Storybook
  • yarn test
    • yarn test:unit的别名
  • yarn test:unit
    • 为所有包运行JS单元测试
    • yarn test:unit -u更新Jest快照
    • yarn test:unit:preact在Preact模式下运行单元测试
    • yarn test:unit:wc运行Web组件的单元测试,必须在Preact模式下运行
  • yarn test:browser
    • 使用Playwright运行可访问性和视觉回归测试。详情请参见下面的视觉回归测试部分。这是默认覆盖Storybook故事的基本测试的基本命令,但我们在不同的子命令下有几种不同类型的浏览器测试。
    • 注意,此命令将接受Playwright接受的任何参数
    • yarn test:browser -u更新用于视觉回归测试的参考截图。仅在我们预期视觉变化时更新这些。你可以在任何浏览器测试子命令上使用此参数来更新特定类型测试的快照。
    • yarn test:browser --no-build将跳过构建测试的先决条件。如果你已经完成并且没有对源代码进行任何更改,这很有用。
    • yarn test:browser --grep "Alert"将只运行名称中包含"Alert"的测试。
    • yarn test:browser:interaction运行VRT交互测试,以验证组件交互后的视觉状态。
    • yarn test:browser:examples为我们的示例项目运行VRT测试。
    • yarn test:browser:storybook-docs检查storybook文档中prop表格的回归。
    • yarn test:browser:all运行我们所有的视觉回归测试。
  • yarn lint
    • 仅运行测试的linting部分,eslint和stylelint
  • yarn type-check
    • 检查静态TypeScript类型。注意,核心包必须成功构建,才能进行下游类型检查。
  • yarn deploy-demo
    • 在本地构建文档网站并将其部署到GitHub Pages上特定分支的路径。终端将在运行完成后显示demo部署到的URL。
  • yarn release
    • 交互式脚本,用于升级包版本、标记发布提交、起草说明等。阅读我们在Confluence上的发布指南获取更多信息。
    • 注意,你需要在git和GitHub上配置GPG,以便它可以签署发布标签。
  • yarn release:notes
    • 交互式脚本,从CMSDS公共仓库的GitHub里程碑生成发布说明草稿和相关票据信息。
  • yarn release:patch
    • 交互式脚本,收集与给定里程碑相关的拉取请求的合并提交,并将它们cherry-pick到当前分支(与发布分支一起使用)

视觉回归测试

我们使用Playwright来测试我们组件的视觉回归。我们有几套视觉回归测试,但我们的主要套件使用Storybook故事作为参考。这些测试将加载故事或其他参考材料,在docker容器内(为了一致性)截图,并将这些截图与之前拍摄并提交到版本控制的截图进行比较。 测试可以在Docker容器内或容器外运行,但我们只在Docker容器内获取并提交VRT参考图像,因为在容器外获取会导致不同机器之间的结果不一致。你可能会在容器外运行测试的原因是,如果你正在开发测试本身,并希望以有头模式运行,以便查看具体情况并进行故障排除。请注意,在本地更新视觉回归测试的参考图像需要你登录Docker。

由于测试很多,使用Playwright的--grep参数可以帮助你限制本地运行的测试范围。

使用Docker更新视觉回归测试:

  1. 打开Docker应用,确保已登录(Docker Desktop现在需要许可证)。
  2. 运行yarn test:browser开始比较组件图像
    1. 如果检测到意外的差异,请评估你的更改 - 我们只想在预期出现视觉变化时更新和提交参考。
    2. 如果检测到预期的差异,运行yarn test:browser -u,验证更改,然后提交它们。

在Docker外进行开发:

  • 使用--no-docker标志运行任何浏览器测试子命令,如yarn test:browser:examples --no-docker
  • 如果你从未安装过Playwright,运行yarn test:browser命令会提示你安装它,你需要这样做。我们在Docker中运行时不需要安装它的原因是Docker镜像包含了所有自身的依赖项。
  • 由于在Docker容器外可能会失败,如果你只想看到测试是否正确执行,请传递--ignore-snapshots参数。
  • 你可以使用Playwright的--headed标志关闭无头模式。
  • Playwright的--debug标志是另一个有用的参数,因为它会暂停并允许你逐步执行测试。
  • 别忘了你可以使用Playwright的--grep参数运行一部分测试。
  • 记住,传递--no-build将跳过重新构建源材料(如Storybook故事),如果你没有对它们进行任何更改,只是更改测试本身。
  • 以下是你可能用来调试下拉菜单测试的命令示例:yarn test:browser:interaction --no-docker --no-build --headed --debug --ignore-snapshots --grep "Dropdown"

设计资源

CMS设计系统提供了包含组件、样式和设计令牌的Figma文件和库。这些资源与代码库一起定期更新,对于使用Figma库的设计师来说,更新会自动同步到所有CMS品牌。

我们使用Figma的多模式变量系统为每个主题级别的令牌定义主题变体。这些主题级别的令牌可以在我们共享的设计库中使用。熟悉JSON的开发人员和使用Figma变量表的设计师可以编辑令牌。令牌的更改可以双向同步:从代码仓库到Figma,以及从Figma到代码仓库。

示例

设计系统使用的示例可以在examples目录中找到。

贡献

请阅读CONTRIBUTING.md文档,了解如何为设计系统做出贡献以及我们的编码准则。

联系

要与CMS设计系统团队取得联系,请访问design.cms.gov/contact,查看联系我们的方式列表。

我们的目标之一是为所有贡献者营造一个友好的环境。请查看我们的行为准则,了解更多信息。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多