Skip to content

Latest commit

 

History

History
288 lines (228 loc) · 15.1 KB

File metadata and controls

288 lines (228 loc) · 15.1 KB
name ScopePatch
description 暖白纸面与松绿批注组成的范围对照工作区。
colors
background paper ink secondary line green pale-green amber pale-amber error pale-error white
#F4F3ED
#FFFEFA
#1E302A
#52645D
#D7DED7
#185D48
#E4EDE4
#80521B
#FBEDCF
#A7362D
#FCEAE6
#FFFFFF
typography
display headline header body body-small label button eyebrow badge estimate
fontFamily fontSize fontWeight lineHeight
Newsreader_500Medium
43px
500
47px
fontFamily fontSize fontWeight lineHeight
Newsreader_500Medium
29px
500
34px
fontFamily fontSize fontWeight
Newsreader_500Medium
24px
500
fontSize lineHeight
16px
25px
fontSize lineHeight
14px
21px
fontSize fontWeight
14px
600
fontSize fontWeight
16px
600
fontSize fontWeight letterSpacing
11px
700
1.4px
fontSize fontWeight letterSpacing
11px
700
0.5px
fontFamily fontSize fontWeight
Newsreader_500Medium
42px
500
rounded
square badge control paper
0px
5px
10px
12px
spacing
xs sm md lg paper gutter section
4px
8px
12px
16px
20px
22px
24px
components
button-primary button-secondary button-danger button-danger-secondary field badge badge-warning paper evidence evidence-referenced decision decision-selected notice notice-error
backgroundColor textColor typography rounded padding
{colors.green}
{colors.white}
{typography.button}
{rounded.control}
14px 18px
backgroundColor textColor typography rounded padding
transparent
{colors.green}
{typography.button}
{rounded.control}
14px 18px
backgroundColor textColor typography rounded padding
{colors.error}
{colors.white}
{typography.button}
{rounded.control}
14px 18px
backgroundColor textColor typography rounded padding
transparent
{colors.error}
{typography.button}
{rounded.control}
14px 18px
backgroundColor textColor rounded padding
{colors.paper}
{colors.ink}
{rounded.control}
13px 14px
backgroundColor textColor typography rounded padding
{colors.pale-green}
{colors.green}
{typography.badge}
{rounded.badge}
4px 8px
backgroundColor textColor typography rounded padding
{colors.pale-amber}
{colors.amber}
{typography.badge}
{rounded.badge}
4px 8px
backgroundColor rounded padding
{colors.paper}
{rounded.paper}
20px
backgroundColor textColor rounded padding
{colors.paper}
{colors.ink}
{rounded.square}
16px
backgroundColor textColor rounded padding
{colors.pale-green}
{colors.ink}
{rounded.square}
16px
backgroundColor textColor rounded padding
{colors.paper}
{colors.ink}
{rounded.control}
17px
backgroundColor textColor rounded padding
{colors.pale-green}
{colors.ink}
{rounded.control}
17px
backgroundColor textColor typography rounded padding
{colors.pale-amber}
{colors.amber}
{typography.body-small}
{rounded.control}
14px
backgroundColor textColor typography rounded padding
{colors.pale-error}
{colors.error}
{typography.body-small}
{rounded.control}
14px

Design System: ScopePatch

Overview

Creative North Star: "设计工作室校样"

像设计工作室的一张清楚校样:暖白纸面承载原文,松绿色标记下一步和已选证据,深色正文保持长文可读性。Newsreader 的衬线标题提供编辑感,系统字体承担输入、说明和操作。视觉表达服务于阅读、对照和本人确认。

保留原文的顺序与上下文,以细线、留白和少量纸面容器分组。界面密度克制但不空泛:说明紧贴需要作决定的控件;重要状态同时用文字、形状或标记表达。当前产品不依靠照片、插画、数据大屏或装饰动效建立识别。

Key Characteristics:

  • 暖白背景与近白纸面,以松绿形成动作和批注。
  • 衬线标题配系统正文;原文、项目名和回复保持阅读优先。
  • 单列工作区、细分隔线、少量真正成组的纸面容器。
  • 显式 Sample、AI 建议与人工决定分开、保存与复制状态准确。

本文件记录 2026-09-05 的已实现系统,延续原有方向;视觉决策由用户授权自主完成,没有另行批准的视觉稿。规范来源为 src/theme.tssrc/components/ui.tsxapp/.impeccable/review/ 的七张浏览器界面截图。代码中的命名是实现来源,以上 frontmatter 是可移植的视觉 token 清单;其中 pale-greenpale-amberpale-error 分别对应代码的 camelCase 名称。组件边框、最小尺寸和状态扩展见 .impeccable/design.json

核验截图包括六张手机尺寸浏览器截图(440 × 956)及桌面首页(1440 × 960)。它们覆盖首页、范围输入、请求、证据审阅、估价和清空回复后的编辑状态;不等于原生 iPhone 实机截图,也不证明全部路由、辅助功能或云端状态已经验证。首页 GitHub 反馈与源码链接在这批截图之后加入,已按当前代码记录。

Colors

配色如暖纸上的深色正文与松绿批注。颜色原值以 frontmatter 为准,原生实现以 src/theme.ts 为源。Sidecar 的八阶 OKLCH 色带仅供设计面板展示,并非应用可额外使用的色值。

Primary

  • 松绿(green):主要动作、链接、当前步骤、引用选中边框及估价数字。
  • 批注浅绿(pale-green):Sample、人工审阅等信息标签,以及已选证据和决定的底色;不单独承担成功含义。

Secondary

  • 赭色与浅暖底(amber / pale-amber):AI 建议标签、需要留意的说明和一般反馈。当前 Notice 也用这套颜色显示已复制等信息,并非专属风险等级。
  • 砖红与浅红底(error / pale-error):可恢复错误、删除类动作及其确认按钮。

Neutral

  • 暖纸背景(background):全屏、原生导航栏与空白区域。
  • 内容纸面(paper):输入框、来源容器、样例、回复及未选决定。
  • 深绿墨色(ink):标题与主正文。
  • 灰绿文字(secondary):说明、元数据、字段提示与未激活步骤。
  • 浅灰绿线(line):列表分隔线、默认描边与后续步骤。
  • 白色(white):实心按钮文字及其加载指示器。

The Proof Before Decoration Rule. 先保证来源、当前项目和本人决定可辨认,再增加视觉表达;状态不得只靠颜色。

Typography

Display Font: 随应用加载的 Newsreader Medium(内部字体名 Newsreader_500Medium)。 Body Font: 平台系统字体;组件没有另设正文家族。 Label/Mono Font: 标签沿用系统字体,不另引入等宽字体。

Newsreader 只承担品牌、标题、项目名称与显著金额,形成编辑校样感;系统正文承担连续阅读、输入和操作,避免表单过度装饰。大标题、常规标题、导航标题及估价字号见 frontmatter。项目列表的项目名使用衬线字体(25px),请求引文使用系统字体(19px / 28px)。

正文采用 body;元信息、提示与长来源列表可采用 body-small。字段标签和按钮使用对应的半粗角色。Eyebrow 为大写;Badge 保留传入文字的大小写。不要把较小的步骤标签或状态标签扩散到长正文。估价与范围序号启用 tabular-nums,方便数值对齐。

字体加载过程中根布局等待加载;字体错误时导航标题退回系统字体,其余 Heading 仍使用字体别名,因此不能宣称已验证完整的字体失败降级。当前没有自定义字体缩放上限;大号辅助字体下的布局尚需原生验证。

Layout

所有主要页面复用滚动的单列工作区。内容宽度为可用宽度的 100%,上限(740px),居中排列;左右页面边距使用 gutter,顶部留白(26px),主要段落之间使用 section。底部留白为 max(safeArea.bottom, 24) + 24,确保长内容与尾部操作可以滚动到达。

桌面沿用同一列宽和流程,没有侧栏或桌面专用多栏断点。仅估时与时薪输入并排等分(间隔 14px);文字按可用宽度换行。首页页脚的两条外链允许换行(横向间隔 24px)。当前实现没有自定义媒体查询或命名断点。

容器内以短间隔连接标签、正文和说明;Paper 内间隔(14px),普通分组常用(8–16px)。项目和历史列表靠顶部细线分隔,不把每一行独立装进卡片。工作步骤常驻各步骤内容顶部,随页面一起滚动,并非吸顶导航。

原生布局采用 safe area、Expo Router Stack 与返回按钮;iOS 使用 KeyboardAvoidingView 的 padding 行为(keyboardVerticalOffset 为 96)。这些是已实现的结构,键盘、安全区、返回手势和系统字号仍需真机确认。当前浏览器证据不构成 390px 或所有窄屏宽度的完整视觉验收。

Elevation & Depth

没有自定义阴影、渐变、模糊或浮层投影。页面通过暖背景、近白纸面、浅色批注和完整细线建立层次。原生 Stack 隐藏标题栏阴影,使导航与工作纸面连续。

The Flat Paper Rule. 默认通过纸面色差、完整细边框与留白分层,不加入投影。

当前没有自定义动画时长、缓动曲线或 hover 变色 token。按压状态直接降低透明度,路由切换沿用平台与 Expo Router 的默认行为;旧方向文档里的自定义淡入时长不是当前实现。减少动态效果与原生转场表现尚未单独验证。

Shapes

Badge 使用紧凑的小圆角;按钮、字段、提示与决定选项使用 control 圆角;真正成组的 Paper 使用 paper 圆角。Button 和 Paper 在支持的平台请求 continuous 曲线。具体半径以 frontmatter 为准。

原文证据块保持方角、四边一致的细描边(1px);选中只换描边与底色,并出现“✓ Referenced”。没有单侧粗色条。普通字段、Paper、次要按钮也使用完整细描边(1px);选中决定加重到(2px)。单选圆形为外圆(20px)、内点(10px),帮助在不依赖颜色的情况下识别选择。

Components

Buttons

直接、稳重,文字清楚说明下一步。主要按钮为松绿实底白字;次要按钮透明底、浅线框、松绿字。删除类动作分别复用砖红实底与砖红线框变体。尺寸与填充见 frontmatter,实际最小高度(50px);按钮文本居中并可换行。

默认透明度为 1,按下为 0.78,不可用或加载为 0.47。加载时显示 ActivityIndicator,同时设置 disabled 与 busy 的辅助状态。控件不新增自定义 hover 色;Web 的焦点表现沿用浏览器/框架,不能据此推广出一套自定义品牌焦点色。

Chips

Badge 是说明性标签,不是筛选按钮。默认浅绿底松绿字,warning 变体为浅暖底赭色字。Sample、Manual review、Saved locally 等文案明确说明内容性质;不要把它们误当付费、批准或成果标记。

Cards / Containers

Paper 只包装有明确共同语义的内容,如原始范围、客户请求、计算估价、样例和已保存回复。使用近白纸面、浅色四边描框与固定内部留白;不加投影。分隔线 Rule 为(1px)。

Inputs / Fields

标签在上,输入在中,提示紧随其后。近白底、完整浅线框、深墨文字,光标选区为松绿;标签与输入之间留白(8px)。最小高度(50px),输入文本(16px / 24px);多行输入顶端对齐,按用途提高最小高度。

错误由相邻 Notice 解释,当前没有通用的字段红边或内嵌错误图标。不能仅依赖占位符充当标签。输入忙碌时可禁止编辑,但该组件不另外定义不可用底色。清空已生成的回复后编辑框继续存在,保存与复制禁用,使用者仍能重新输入。

Navigation

Expo Router Stack 使用暖纸栏底、衬线标题和松绿返回控件,标题栏没有阴影。首页 Account 为文本入口,最小高度(44px)。步骤条依次显示 01 Scope、02 Request、03 Review、04 Reply;每段等宽,段间隔(8px),顶线高度(2px)。当前与已完成的线为松绿,只有当前文字加粗;它提供位置说明,不是可点击的进度跳转。

首页下方提供 “Share feedback on GitHub” 与 “Source code” 外链,文字(15px),上下各(14px)点击留白,并允许换行。旁边明确说明反馈公开,应省略客户姓名和私密项目资料。

Evidence & Decision

这是系统的标志性组合:客户请求、原文范围、引用状态与 Your decision 在一个阅读流中,但角色明确分开。手动模式的原文项作为 checkbox,AI 模式的来源引用为只读;选中证据有浅绿底、松绿完整边框与文字勾选标记。原文行号使用 Eyebrow。

决定选项为 radio,含标题、解释与可见圆点。未选时为纸面与浅线框,选中时为浅绿底与加粗松绿边框,按下透明度为 0.8。只有选定本人决定后,Write my reply 才可用。Review 与 Reply 的标题区保留项目名称,防止跨步骤丢失上下文。

Notices & Reply State

Notice 以短正文说明状态及恢复路径:一般反馈为赭色系,错误为砖红系,均使用完整细描边。错误声明 alert;消息区域使用 polite live region。未配置、未登录、失败、缺少输入等状态必须说清楚可继续做什么,且不能伪装成功。

Reply 将人工输入的估时、费率与醒目的计算金额放在同一组;金额只是 estimate。模板生成后的内容可编辑、保存与复制。用户改写模板后,历史将金额标记为未另行记录;新输入导致旧模板过期时,先提示更新并阻止保存/复制。空回复状态保留编辑器并禁用这两个动作。

Do's and Don'ts

Do:

  • Do 优先复用现有 Screen、Body、Heading、Button、Field、Paper、Notice 与 Steps。
  • Do 把来源、项目名、Sample 与本地保存信息放在对应内容附近。
  • Do 用文字、勾选标记或单选圆点补充颜色,保留原文可选取能力。
  • Do 保持证据块四边一致的细边框,让引用原文和人工决定各有位置。
  • Do 在回复清空后保留编辑框,禁用空内容的保存与复制。
  • Do 如实说明浏览器验证、原生验证与云服务配置的边界。

Don't:

  • Don't 将纸面容器套成多层卡片,或给普通列表行加装饰阴影。
  • Don't 把绿色、勾选或保存状态用作客户批准、付款或 AI 正确性的证明。
  • Don't 给参考原文加装饰性的单侧彩色粗边,破坏统一边框语言。
  • Don't 为桌面另造仪表盘结构;当前工作区在宽屏仍保持居中单列。
  • Don't 把尚未实现的动效、断点、深色模式或实机可用性写成已交付规范。