{ "schemaVersion": 2, "generatedAt": "2026-07-22T14:59:56+08:00", "title": "Design System: CaiWuXiTong", "extensions": { "colorMeta": { "rail-black": { "role": "neutral", "displayName": "工具轨道黑", "canonical": "#050506", "tonalRamp": ["#050506", "#101011", "#1D1D1F", "#2A2927", "#424242", "#7B7B7B", "#D0D0D0", "#F6F6F6"] }, "rail-gold": { "role": "primary", "displayName": "工具轨道浅金", "canonical": "#F2E7C5", "tonalRamp": ["#513E21", "#6A5129", "#856632", "#A17D3E", "#B9954F", "#E1CF9D", "#F0E4BF", "#F2E7C5"] }, "sidebar-black": { "role": "neutral", "displayName": "功能栏浅黑", "canonical": "#1D1D1F", "tonalRamp": ["#050506", "#101011", "#1D1D1F", "#2A2927", "#424242", "#7B7B7B", "#D0D0D0", "#F6F6F6"] }, "sidebar-gold": { "role": "primary", "displayName": "功能栏米白金", "canonical": "#F0E4BF", "tonalRamp": ["#513E21", "#6A5129", "#856632", "#A17D3E", "#B9954F", "#DDD0AA", "#F0E4BF", "#F7F0DE"] }, "sidebar-gold-soft": { "role": "primary", "displayName": "功能栏柔金", "canonical": "#DDD0AA", "tonalRamp": ["#513E21", "#6A5129", "#856632", "#A17D3E", "#B9954F", "#CDB474", "#DDD0AA", "#F7F0DE"] }, "sidebar-active": { "role": "neutral", "displayName": "活动浅黑", "canonical": "#2A2927", "tonalRamp": ["#050506", "#101011", "#1D1D1F", "#2A2927", "#424242", "#7B7B7B", "#D0D0D0", "#F6F6F6"] }, "content-bg": { "role": "neutral", "displayName": "内容浅灰", "canonical": "#F8F6F1", "tonalRamp": ["#171717", "#2A2927", "#595959", "#8C887F", "#BDB7AB", "#D8D2C7", "#EEE9DF", "#F8F6F1"] }, "surface": { "role": "neutral", "displayName": "业务白色表面", "canonical": "#FFFFFF", "tonalRamp": ["#171717", "#424242", "#7D7D7D", "#AFAFAF", "#D8D2C7", "#EEE9DF", "#F8F6F1", "#FFFFFF"] }, "content-ink": { "role": "neutral", "displayName": "正文墨色", "canonical": "#171717", "tonalRamp": ["#171717", "#2A2927", "#424242", "#595959", "#7D7D7D", "#AFAFAF", "#D8D2C7", "#F8F6F1"] }, "content-muted": { "role": "neutral", "displayName": "辅助墨色", "canonical": "#595959", "tonalRamp": ["#171717", "#2A2927", "#424242", "#595959", "#7D7D7D", "#AFAFAF", "#D8D2C7", "#F8F6F1"] }, "content-accent": { "role": "primary", "displayName": "VIP 金", "canonical": "#B9954F", "tonalRamp": ["#513E21", "#6A5129", "#856632", "#A17D3E", "#B9954F", "#E1CF9D", "#F7F0DE", "#FBF8F1"] }, "content-accent-soft": { "role": "primary", "displayName": "淡金底色", "canonical": "#F7F0DE", "tonalRamp": ["#513E21", "#6A5129", "#856632", "#A17D3E", "#B9954F", "#E1CF9D", "#F7F0DE", "#FBF8F1"] }, "content-accent-dark": { "role": "primary", "displayName": "可读深金", "canonical": "#856632", "tonalRamp": ["#513E21", "#6A5129", "#856632", "#A17D3E", "#B9954F", "#E1CF9D", "#F7F0DE", "#FBF8F1"] }, "border": { "role": "neutral", "displayName": "暖灰边界", "canonical": "#D8D2C7", "tonalRamp": ["#2A2927", "#595959", "#8C887F", "#AFA99E", "#BDB7AB", "#D8D2C7", "#EEE9DF", "#F8F6F1"] }, "success": { "role": "semantic", "displayName": "成功深绿", "canonical": "#53793E", "tonalRamp": ["#364F28", "#426131", "#53793E", "#63914A", "#6EA152", "#9ABD86", "#DBE8D4", "#F8FAF6"] }, "danger": { "role": "semantic", "displayName": "危险深红", "canonical": "#B80000", "tonalRamp": ["#640000", "#7A0000", "#990000", "#B80000", "#CC0000", "#DB4D4D", "#F2BFBF", "#FCF2F2"] }, "warning": { "role": "semantic", "displayName": "警告深橙", "canonical": "#935F07", "tonalRamp": ["#784D05", "#935F07", "#B87708", "#DD8E0A", "#F59E0B", "#F8BB54", "#FDE7C2", "#FFFAF3"] }, "info": { "role": "semantic", "displayName": "信息深蓝", "canonical": "#006395", "tonalRamp": ["#003651", "#004264", "#00537D", "#006395", "#006EA6", "#4D9AC1", "#BFDBE9", "#F2F8FB"] } }, "typographyMeta": { "title": { "displayName": "页面标题", "purpose": "右侧页面标题,固定 14px,不随视口流体缩放。" }, "body": { "displayName": "业务正文", "purpose": "表单、说明、按钮和常规业务文字。" }, "label": { "displayName": "字段与导航标签", "purpose": "筛选字段、状态标签和一、二级菜单,固定 12px。" }, "data": { "displayName": "表格与金额数据", "purpose": "表格、金额、数量和比例,使用等宽数字并按数据类型对齐。" } }, "shadows": [ { "name": "surface-low", "value": "0 1px 2px rgba(16, 24, 40, 0.04)", "purpose": "需要从内容底色中轻微抬起的单层面板。" }, { "name": "floating", "value": "0 4px 8px rgba(23, 23, 23, 0.10)", "purpose": "下拉框、悬浮菜单和模态浮层。" }, { "name": "focus-ring", "value": "0 0 0 3px rgba(133, 102, 50, 0.20)", "purpose": "键盘焦点和输入聚焦反馈。" } ], "motion": [ { "name": "state-fast", "value": "150ms cubic-bezier(0.22, 1, 0.36, 1)", "purpose": "标签、按钮、链接和菜单的即时状态变化。" }, { "name": "panel-standard", "value": "200ms cubic-bezier(0.22, 1, 0.36, 1)", "purpose": "侧栏折叠、下拉框和局部面板变化。" } ], "breakpoints": [ { "name": "sm", "value": "640px" }, { "name": "lg", "value": "1024px" }, { "name": "xl", "value": "1280px" } ] }, "components": [ { "name": "Primary Button", "kind": "button", "refersTo": "button-primary", "description": "浅色内容区的主要操作,使用可读深金而不是亮金。", "html": "", "css": ".ds-btn-primary { height: 34px; padding: 0 14px; border: 1px solid #856632; border-radius: 8px; background: #856632; color: #fff; font: 500 13px/1.5 'JetBrains Mono', 'Microsoft YaHei', monospace; cursor: pointer; transition: background 150ms cubic-bezier(.22,1,.36,1), border-color 150ms cubic-bezier(.22,1,.36,1); } .ds-btn-primary:hover { background: #6A5129; border-color: #6A5129; } .ds-btn-primary:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(133,102,50,.20); } .ds-btn-primary:active { transform: translateY(1px); } .ds-btn-primary:disabled { opacity: .55; cursor: not-allowed; transform: none; }" }, { "name": "Secondary Button", "kind": "button", "refersTo": "button-secondary", "description": "次要操作保持白底、暖灰边界和正文墨色。", "html": "", "css": ".ds-btn-secondary { height: 34px; padding: 0 14px; border: 1px solid #D8D2C7; border-radius: 8px; background: #fff; color: #171717; font: 500 13px/1.5 'JetBrains Mono', 'Microsoft YaHei', monospace; cursor: pointer; transition: background 150ms cubic-bezier(.22,1,.36,1), border-color 150ms cubic-bezier(.22,1,.36,1); } .ds-btn-secondary:hover { border-color: #A17D3E; background: #FBF8F1; } .ds-btn-secondary:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(133,102,50,.20); } .ds-btn-secondary:active { background: #F7F0DE; } .ds-btn-secondary:disabled { opacity: .55; cursor: not-allowed; }" }, { "name": "Text Field", "kind": "input", "refersTo": "input-default", "description": "紧凑、清晰、具有可见标签和深金焦点状态的业务输入框。", "html": "", "css": ".ds-field { display: inline-flex; min-width: 220px; flex-direction: column; gap: 5px; color: #171717; font-family: 'JetBrains Mono', 'Microsoft YaHei', monospace; } .ds-field-label { color: #595959; font-size: 12px; font-weight: 500; line-height: 16px; } .ds-field-input { height: 34px; padding: 0 10px; border: 1px solid #D8D2C7; border-radius: 8px; background: #fff; color: #171717; font: 400 13px/1.5 inherit; outline: none; transition: border-color 150ms cubic-bezier(.22,1,.36,1), box-shadow 150ms cubic-bezier(.22,1,.36,1); } .ds-field-input::placeholder { color: #595959; } .ds-field-input:hover { border-color: #AFA99E; } .ds-field-input:focus { border-color: #856632; box-shadow: 0 0 0 3px rgba(133,102,50,.20); } .ds-field-input:disabled { background: #EEE9DF; color: #595959; cursor: not-allowed; }" }, { "name": "Sidebar Active Item", "kind": "nav", "refersTo": "sidebar-item-active", "description": "浅黑功能栏上的单一圆形 chevron 活动状态。", "html": "
店铺收款账户账单›
", "css": ".ds-sidebar { width: 224px; padding: 8px; background: #1D1D1F; } .ds-sidebar-item { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 4px; color: #F0E4BF; font: 500 12px/16px 'JetBrains Mono', 'Microsoft YaHei', monospace; text-decoration: none; transition: background 150ms cubic-bezier(.22,1,.36,1); } .ds-sidebar-item:hover { background: rgba(240,228,191,.10); } .ds-sidebar-item.is-active { background: #2A2927; color: #F2E7C5; } .ds-sidebar-icon { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; } .ds-active-indicator { display: inline-flex; width: 16px; height: 16px; margin-left: auto; align-items: center; justify-content: center; border: 1px solid rgba(246,233,194,.72); border-radius: 999px; background: rgba(246,233,194,.14); color: #F6E9C2; font-size: 14px; } .ds-sidebar-item:focus-visible { outline: 2px solid #F2E7C5; outline-offset: 2px; }" }, { "name": "Workspace Tabs", "kind": "nav", "refersTo": "tab-active", "description": "白色工作区内使用深金活动文字和单一金色下划线的局部标签切换。", "html": "", "css": ".ds-tabs { display: flex; align-items: center; gap: 36px; min-height: 34px; padding: 0 32px; overflow-x: auto; border: 1px solid #D8D2C7; border-radius: 16px; background: #fff; } .ds-tab { position: relative; display: inline-flex; min-height: 34px; align-items: center; color: #595959; font: 600 14px/1.25 'JetBrains Mono', 'Microsoft YaHei', monospace; text-decoration: none; white-space: nowrap; transition: color 150ms cubic-bezier(.22,1,.36,1); } .ds-tab:hover, .ds-tab.is-active { color: #856632; } .ds-tab.is-active::after { position: absolute; right: 0; bottom: 0; left: 0; height: 3px; border-radius: 999px 999px 0 0; background: #B9954F; content: ''; } .ds-tab:focus-visible { outline: 2px solid #856632; outline-offset: 3px; }" }, { "name": "Business Panel", "kind": "card", "refersTo": "panel", "description": "使用白色表面、暖灰边界和有限圆角的单层业务容器。", "html": "

账单明细

按账户和日期范围核对交易数据。

", "css": ".ds-panel { padding: 16px; border: 1px solid #D8D2C7; border-radius: 12px; background: #fff; color: #171717; font-family: 'JetBrains Mono', 'Microsoft YaHei', monospace; } .ds-panel-title { margin: 0; color: #171717; font-size: 14px; font-weight: 600; line-height: 1.25; } .ds-panel-copy { max-width: 70ch; margin: 8px 0 0; color: #595959; font-size: 13px; line-height: 1.5; } .ds-panel:focus-within { border-color: #856632; }" }, { "name": "Status Tags", "kind": "chip", "description": "语义颜色只表达真实业务状态,并始终带文字。", "html": "
已核对待处理异常
", "css": ".ds-tags { display: flex; gap: 8px; font-family: 'JetBrains Mono', 'Microsoft YaHei', monospace; } .ds-tag { display: inline-flex; min-height: 24px; align-items: center; padding: 2px 8px; border-radius: 999px; font-size: 12px; font-weight: 500; } .ds-tag-success { background: #F1F6EE; color: #53793E; } .ds-tag-warning { background: #FEF5E7; color: #935F07; } .ds-tag-danger { background: #FAE6E6; color: #B80000; }" }, { "name": "Finance Data Table", "kind": "custom", "description": "紧凑、可扫描、数字右对齐的财务数据表。支持列显示/隐藏、拖动排序、恢复默认及按用户和具体表格保存;冻结多层表头,横向滚动条始终可达。导出明确筛选范围和可见列顺序,保留精度并排除密码;允许导入的业务提供模板、预览、校验及失败反馈,只读镜像不写回。", "html": "
订单号收入余额
20260722001¥1,280.00¥8,460.00
", "css": ".ds-table { width: 100%; border-collapse: collapse; overflow: hidden; border: 1px solid #D8D2C7; border-radius: 12px; background: #fff; color: #171717; font: 400 12.5px/1.5 'JetBrains Mono', 'Microsoft YaHei', monospace; } .ds-table th { padding: 9px 10px; border-bottom: 1px solid #D8D2C7; background: #FBF8F1; color: #595959; font-size: 12px; font-weight: 600; text-align: left; } .ds-table td { padding: 9px 10px; border-bottom: 1px solid #EEE9DF; } .ds-table tbody tr:hover { background: #F7F0DE; } .ds-table .ds-num { text-align: right; font-variant-numeric: tabular-nums; } .ds-table .ds-income { color: #B80000; font-weight: 600; }" } ], "narrative": { "northStar": "黑金财务中枢", "overview": "CaiWuXiTong 是一个需要长时间、高频率使用的财务工作台。视觉设计服务于读取、核对、筛选、审批和追踪,不服务于装饰。整体气质必须克制、专业、清晰,具有 VIP 黑金的品质感,但不能变成奢侈品海报、娱乐场所或高饱和暗黑界面。\n\n应用外壳使用“深黑工具轨道 + 浅黑功能栏 + 浅色内容区”的三层结构。黑色区域承担全局导航和功能定位,浅金色提供文字与图标的高对比识别;内容区始终保持浅色,使用深色文字和有限的金色交互信号,让大量表格、金额和状态信息稳定可读。\n\n这是唯一正式视觉标准。现存页面中的紫色、靛蓝、亮蓝硬编码属于遗留偏差,不能被新页面复制,也不能被写入新的组件。语义色只用于成功、失败、警告和信息状态,不构成第二套主题色。", "keyCharacteristics": [ "深黑工具轨道、浅黑功能栏、浅色内容区,三层边界清楚。", "浅金用于深色导航,深金用于浅色内容区的文字与主要操作。", "全站使用 JetBrains Mono,标题和数据采用固定字号,不使用流体放大。", "页面标题位于内容区右侧,保持 14px;导航使用统一的紧凑字号。", "一、二级导航统一 12px;同一层级的图标、字号和交互状态必须一致。", "表格、筛选器和状态反馈优先,装饰性卡片、阴影和动画受到严格限制。", "标签切换是局部状态变化,不触发整页刷新;加载前后字号和布局不得跳变。" ], "rules": [ { "name": "The Task-First Rule", "body": "用户必须先看到任务和数据,再看到品牌装饰;任何视觉效果只在帮助定位、读取或确认状态时才允许存在。", "section": "overview" }, { "name": "The Two-Gold Rule", "body": "深色背景使用浅金,浅色背景使用深金;不得把两者交换。亮金在白色上的对比度不足,只能用于非文字强调。", "section": "colors" }, { "name": "The One-Accent Rule", "body": "金色是唯一交互强调色。任何新页面出现装饰性紫色、靛蓝、亮蓝或绿色,都视为视觉回归。", "section": "colors" }, { "name": "The Semantic Exception Rule", "body": "红、绿、橙、蓝只在状态本身有业务含义时出现,并同时提供文字或图标,不能只依赖颜色传达结果。", "section": "colors" }, { "name": "The Fixed-Scale Rule", "body": "产品界面使用固定 rem 字号,不使用 clamp() 放大标题;桌面与移动端通过布局重排适配,不通过夸张缩放字体适配。", "section": "typography" }, { "name": "The Stable-First-Paint Rule", "body": "关键字号、行高和容器尺寸必须由首屏 CSS 直接提供,不能等待 JavaScript 或异步样式后再缩小,禁止首次进入时出现巨大字体闪烁。", "section": "typography" }, { "name": "The One-Family Rule", "body": "按钮、标签、导航、表格和正文都使用同一字体家族;禁止在数据界面引入装饰性展示字体。", "section": "typography" }, { "name": "The Flat-by-Default Rule", "body": "静态业务面板默认无阴影;若已经有 1px 边框,不得再叠加 16px 以上模糊半径的宽阴影。", "section": "elevation" }, { "name": "The No-Nested-Cards Rule", "body": "卡片只用于真实分组;卡片内部不能再套同样外观的卡片。优先使用标题、间距、分隔线和表格分组表达层级。", "section": "elevation" } ], "dos": [ "复用已有令牌和组件,按 DESIGN.md 保持同类页面一致;常规排版和交互细节自主决定,不增加额外设计审批。", "临时截图和 design-qa.md 仅作验收证据;规则变化时同步现有设计文档,不另建规范文件。", "保持首屏布局稳定、焦点可见,正文和小号文字对比度至少 4.5:1;不添加与业务无关的装饰或宣传内容。" ], "donts": [] } }