@lapismd/design-core

中文文档
0.10.1发布于 2026/11/02Apache-2.0TypeScriptES Module构建来源已验证

共享的Lapis设计系统、表单、外壳和工作空间原语

中文使用文档
文档目录14 节
  1. 当前包状态
  2. 安装
  3. 公共层
  4. 组件覆盖
  5. 样式合同
  6. 布局规范
  7. 用法示例
  8. shadcn原始
  9. 壳牌布局
  10. 形式
  11. 故事书和本地文档
  12. CI和局部宇称
  13. 发布和确认
  14. 进一步的阅读

@lapismd/design-core

Release public packages Storybook Pages npm version Storybook

用于LapisMD应用程序的Svelte 5设计系统包。它提供原生css 组件族,表单原语,搜索/过滤控件,AI聊天 表示、diff视图、shell布局和工作空间框架。

Design Core拥有可重用的表示和控制器行为。消费者的 路由、数据加载、持久化、域状态、传输和应用程序 政策。

当前包状态

安装

此版本需要用户授权的临时版本 [email protected] 规划补丁。 每个安装根必须显式地配置相同的补丁并冻结 lockfile;Design Core的依赖项元数据不会传播该设置。 遵循 打包的补丁合同 以及它的校验和清单 在确定运行时行为之前。补丁保留链接预览和滑块 在反复安装FocusScope期间拆卸安全性和键盘焦点。

pnpm add @lapismd/design-core svelte

在应用程序边界处导入一次共享样式表:

import "@lapismd/design-core/styles.css";

然后从它们的公共层导入组件族:

<script lang="ts">
  import { Button } from "@lapismd/design-core/shadcn/button";
  import { StructuredForm } from "@lapismd/design-core/forms";
  import * as AppShell from "@lapismd/design-core/shell";
</script>

公共层

层进口使用
样式和主题@lapismd/design-core/styles.css, @lapismd/design-core/themes/lapis.css主题令牌,基础包样式,青金石主题资产
shadcn原语@lapismd/design-core/shadcn/<family>低级按钮、输入、对话框、弹出窗口、菜单、选项卡、滚动区域和布局原语
形式@lapismd/design-core/forms, @lapismd/design-core/forms/core结构化表单、字段呈现器、表单控件、编辑器、审查/差异功能
过滤器@lapismd/design-core/filter搜索栏、强力搜索令牌和过滤查询CodeMirror语言
人工智能@lapismd/design-core/ai, @lapismd/design-core/ai/chat主机控制的聊天布局、消息、编写器、工具调用、听写和状态表示
人工智能实验@lapismd/design-core/ai/experimental实验室衍生的聊天提示标记为实验性
Diff@lapismd/design-core/diff文件清单、更改统计、文件差异、合并表示和无头差异模型
壳牌@lapismd/design-core/shell有边界的应用chrome、侧边栏、主体区域、响应式shell状态和shell布局持久性适配器
工作空间@lapismd/design-core/workspace已注册的视图、选项卡、拆分、侧边栏、面板、插件、命令、设置和工作区持久性适配器

聚焦的组件子路径也被导出以保持兼容性,特别是在 forms 和 workspace. 治疗 package.json 导出为支持的导入 边界。

组件覆盖

已实现的shadcn家族包括:

手风琴,警报,警报对话框,徽章,面包屑,按钮,按钮组,卡片, 复选框、代码、代码块、可折叠、列画布、命令、命令视图、 上下文菜单,对话框,抽屉,下拉菜单,空白,字段,悬停卡,输入, 输入组,标签,分页,弹出窗口,进度,可调整大小,滚动区域, 选择、分隔符、工作表、侧边栏、框架、滑块、旋转器、滑动项、 开关,表,选项卡,文本区,切换,切换组和工具提示。

更高层组成了这些原语:

  • 表单提供结构化呈现、基于YAML/ json的编辑、列表编辑、 自动补全/芯片输入,日期/时间/参考选择器,代码/YAML编辑器,以及 修补检查表面。
  • 过滤器提供了可重用的搜索chrome +解析器/语言助手 过滤查询语法。
  • AI提供仅显示的聊天部分。它没有自己的模式呼叫,网络 传输、会话存储或主机操作。
  • Diff提供文件/更改/合并UI。宿主自己的存储库状态和文件 内容。
  • Shell提供应用程序chrome和响应侧边栏,而无需拥有 应用程序导航。
  • 工作区为注册视图、布局提供了较重的应用框架 持久性、命令、面板和插件。

使用Shell应用程序chrome。当主机需要注册时使用Workspace 视图、选项卡/分割布局、插件、设置、命令调色板或完整的工作空间 持久性。

样式合同

Design Core使用本地CSS和公共自定义属性。消费者应该注意着装 通过令牌和类型化的道具,而不是修补内部选择器。

  1. 进口 @lapismd/design-core/styles.css 一次。
  2. 覆盖公共 --ui-* 变量在 :root 或者是共同的祖先。
  3. 为变量、密度、布局和状态选择组件道具。
  4. 避免重写私有DOM结构或内部类名。

发布的档案包含准备好的浏览器CSS和字体资产。消费者做 不需要Tailwind,它的Vite插件,或源扫描配置。顺风 编译停留在内部创作和转换;生成私有CSS 变量仍然是普通的浏览器CSS。现有的Mira依赖仍然可以 安装一个Tailwind peer,但是Design Core的准备样式不使用它。 使用 pnpm package:local 当验证 归档边界,而不是导入未准备好的创作样式表。

源和存档门拒绝实用程序选择器,包括复合和 嵌套的选择器。组件状态清理由 切片2记录. 主题/导入 重组和下游发布仍然是分开的可审查的片段。

令牌的家庭:

范围令牌的例子来源
全球主题--background, --foreground, --primary, --border, --radiussrc/theme.css
Shadcn家族代币--ui-button-*, --ui-input-*, --ui-card-*并置家族令牌文件
形式--ui-form-*@lapismd/design-core/forms/form.tokens.css
人工智能--ui-ai-*@lapismd/design-core/ai/tokens
Diff--ui-diff-*@lapismd/design-core/diff/tokens
壳牌--ui-shell-*@lapismd/design-core/shell/shell.tokens.css
工作空间--ui-workspace-*@lapismd/design-core/workspace/workspace.tokens.css

分量根戳稳定 data-ui-component 和 data-ui-part 属性 用于包拥有的样式。消费者可以使用侧通道属性 ,但不应覆盖设计核心标识属性 包装组件。

布局规范

源代码布局遵循公共目录层和包层:

src/
  styles.css, theme.css, storybook.css
  shared/
    shadcn/<family>/
    forms/<family>/
    filter/<family>/
    ai/<component>/
    ai/experimental/<component>/
    diff/<family>/
    shell/app-shell/
    workspace/<family>/

一个目录拥有一个独立的组件族或一个复合族。 多部分组件一起保存在所属的家族文件夹中。公共桶 生活在层根或家庭根。

用法示例

shadcn原始

<script lang="ts">
  import { Button } from "@lapismd/design-core/shadcn/button";
</script>

<Button variant="default" size="sm">Save</Button>

壳牌布局

<script lang="ts">
  import * as AppShell from "@lapismd/design-core/shell";

  const shell = AppShell.createAppShellController({
    layoutId: "app",
  });
</script>

<AppShell.Root controller={shell}>
  <AppShell.Sidebar side="left">
    <AppShell.Sidebar.Header>Navigation</AppShell.Sidebar.Header>
    <AppShell.Sidebar.Body>...</AppShell.Sidebar.Body>
  </AppShell.Sidebar>

  <AppShell.Main>
    <AppShell.Toolbar>Toolbar</AppShell.Toolbar>
    <AppShell.Body>
      <AppShell.Body.Content>Application content</AppShell.Body.Content>
    </AppShell.Body>
  </AppShell.Main>
</AppShell.Root>

形式

<script lang="ts">
  import { FormField } from "@lapismd/design-core/forms";
  import { Textarea } from "@lapismd/design-core/shadcn/textarea";
</script>

<FormField label="Summary" description="Short text shown in previews">
  <Textarea bind:value={summary} />
</FormField>

故事书和本地文档

运行本地目录:

pnpm storybook

构建静态目录:

pnpm build-storybook

线下打包指导:

pnpm ui guide
pnpm ui guide styling
pnpm ui components
pnpm ui components button

规范规范存在于 spec/src. 将它用于包的行为, 架构、样式规则和验证证据:

pnpm spec:search "tokens"
pnpm spec:check

CI和局部宇称

pnpm checks 运行非可视化管理,质量,单元,故事书,指针, 和AI浏览器通道通过Turbo。执行治理、质量和单元工作 同时使用一半可用处理器,上限为4个。曾推高 故事书和浏览器套件在本地一次运行一个,因此目录启动和 交互准备仍然是确定性的;集 TURBO_CONCURRENCY 到一个 正数或百分比,以覆盖一般任务范围。

本地任务输出缓存在 .turbo/. 相同的任务使用带符号的 组织缓存在CI中,并在正常执行时失败 不可用。要在本地使用远程缓存,请复制 .env.example 致被忽视的人 根 .env 并提供 TURBO_TOKEN 和 TURBO_REMOTE_CACHE_SIGNATURE_KEY. 永远不要提交这些凭证。

CI将9条非视觉通道并行展开,包括独立的工作区, Shell、Shadcn和AI浏览器运行程序。它完全依赖于生产环境运行 审核后,他们通过并报告一个稳定 Validate 结果。视觉 比较仍然是一个明确的、单独的命令。

发布和确认

常用验证命令:

pnpm spec:first
pnpm spec:check
pnpm check
pnpm test:unit
pnpm build-storybook
pnpm checks:release

发布计划和打包工件:

pnpm changeset
pnpm release:check
pnpm release:plan --registry https://registry.npmjs.org
pnpm packages:pack

@lapismd/[email protected] 已手动从已审阅的压缩文件中引导。 未来的版本使用变更集和存储库发布工作流。

进一步的阅读

资源使用
spec/src/index.md规范设计核心规范
spec/src/component-inventory.md已实现的组件清单
spec/src/styling-and-themes.md样式和令牌合约
spec/src/packages.md公共出口要求
AGENTS.md贡献者和代理工作流

版本与发布记录

@lapismd/design-core 共发布 23 个版本,首次发布于 2026/08/28;过去 12 个月发布了 23 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.10.1latest2026/11/021 天前
0.10.02026/11/011 天前
0.9.12026/11/012 天前
0.9.02026/11/012 天前
0.8.02026/11/012 天前
0.7.42026/10/312 天前

其他发布通道:next → 0.1.0。

关于 @lapismd/design-core 的常见问题

@lapismd/design-core 是什么?

共享的Lapis设计系统、表单、外壳和工作空间原语

如何安装 @lapismd/design-core?

在项目目录运行 npm install @lapismd/design-core,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:svelte(^5.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@lapismd/design-core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@lapismd/design-core 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@lapismd/design-core 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.11 || ^24 || >=26。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@lapismd/design-core 可以商用吗?

@lapismd/design-core 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@lapismd/design-core 还在维护吗?

最新版本 0.10.1 发布于 2026/11/02(1 天前);至今共发布 23 个版本,其中过去 12 个月发布了 23 个;首次发布于 2026/08/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。