Skip to content

样式入口与主题变量

Lingxi UI 的样式分为全量入口和组件按需入口。业务项目应优先选择与 JS 入口匹配的 CSS,避免普通聊天页加载图谱、脑图、表格等重型样式。

样式入口

使用方式JS 入口CSS 入口
全量组件库@zhiyongui/lingxi-ui@zhiyongui/lingxi-ui/style.css
基础聊天 IIFElingxi-chat.iife.jslingxi-chat.css
文件预览 IIFElingxi-file-preview.iife.jslingxi-file-preview.css
可视化 IIFElingxi-visualization.iife.jslingxi-visualization.css
单组件按需@zhiyongui/lingxi-ui/<entry>@zhiyongui/lingxi-ui/<entry>/style.css

示例:

ts
import { AiSender } from '@zhiyongui/lingxi-ui/ai-sender'
import '@zhiyongui/lingxi-ui/ai-sender/style.css'

职责边界

文件职责
src/styles/index.css全量样式入口,只负责汇总组件样式。
src/styles/components/*.css单个组件或能力域的样式,不应写全局页面样式。
scripts/component-style-manifest.mjs维护组件按需 style.css 由哪些源 CSS 拼接生成。
scripts/copy-component-styles.mjs根据 manifest 生成 dist/<entry>/style.css,并校验 package exports 覆盖。

命名规范

  • 组件根类名使用 lingxi-ai-*,例如 .lingxi-ai-file-preview
  • 组件内部元素使用 BEM 风格后缀,例如 .lingxi-ai-file-preview__header
  • 状态类使用 is-*,例如 .is-active.is-loading
  • 允许在组件根节点下覆盖 Element Plus 或第三方库局部类名,例如 .lingxi-ai-thought-chain .el-timeline
  • 不新增无作用域的 .el-*bodyhtml 或页面级选择器。

主题变量

当前主题变量以组件域划分,并默认回落到 Element Plus token。业务项目可以在组件根节点或上层容器覆盖这些变量。

RichContent

变量默认来源用途
--lingxi-rich-bg--el-bg-color富内容背景。
--lingxi-rich-muted-bg--el-fill-color-light次级背景。
--lingxi-rich-border--el-border-color-light边框。
--lingxi-rich-text--el-text-color-primary主文本。
--lingxi-rich-muted--el-text-color-secondary次级文本。
--lingxi-rich-primary--el-color-primary选中、hover、强调色。
--lingxi-rich-soft--el-fill-color-extra-light文件卡片等柔和背景。

MindMap

变量默认来源用途
--lingxi-mind-bg--el-bg-color脑图容器背景。
--lingxi-mind-soft--el-fill-color-extra-light工具栏和空状态背景。
--lingxi-mind-border--el-border-color-light边框。
--lingxi-mind-text--el-text-color-primary主文本。
--lingxi-mind-muted--el-text-color-secondary次级文本。
--lingxi-mind-primary--el-color-primary主色。

KnowledgeGraph

变量默认来源用途
--lingxi-graph-bg--el-bg-color图谱容器背景。
--lingxi-graph-soft--el-fill-color-extra-light工具栏和编辑器背景。
--lingxi-graph-border--el-border-color-light边框。
--lingxi-graph-text--el-text-color-primary主文本。
--lingxi-graph-muted--el-text-color-secondary次级文本。
--lingxi-graph-primary--el-color-primary主色。

ExcelEditor

变量默认值用途
--lingxi-excel-bg--el-bg-color工作簿背景。
--lingxi-excel-soft#f3f3f3工具栏和表头背景。
--lingxi-excel-border#d0d0d0外框和控件边框。
--lingxi-excel-grid#e2e2e2表格网格线。
--lingxi-excel-text#242424主文本。
--lingxi-excel-muted#666次级文本。
--lingxi-excel-primary#217346主色。
--lingxi-excel-primary-dark#185c37深主色。

ThoughtChain

变量默认来源用途
--lingxi-thought-border--el-border-color-lighter折叠面板边框。
--lingxi-thought-text--el-text-color-primary主文本。
--lingxi-thought-muted--el-text-color-secondary次级文本。
--lingxi-thought-line--el-border-color时间线。

覆盖示例

css
.customer-report-theme {
  --lingxi-rich-primary: #0f766e;
  --lingxi-rich-soft: #f0fdfa;
  --lingxi-graph-primary: #2563eb;
}
vue
<section class="customer-report-theme">
  <AiRichContent v-model="document" />
</section>

构建校验

按需样式由 scripts/component-style-manifest.mjs 生成。新增公开组件入口时,需要同时补齐:

  1. package.json exports 中的 ./<entry>./<entry>/style.css
  2. src/entries/<entry>.ts
  3. scripts/component-style-manifest.mjs 中的样式清单。
  4. 对应组件文档中的样式入口说明。

npm.cmd run build 会校验 exports 中声明的按需样式入口是否都在 manifest 中。