sintbot 1.0.16 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.en.json +99 -0
- package/CHANGELOG.json +99 -0
- package/README.md +20 -158
- package/README.zh-CN.md +20 -166
- package/THIRD-PARTY-NOTICES.md +394 -0
- package/bin/sintbot-v2.js +363 -0
- package/docs/AI-ASSISTED-INSTALL.md +11 -35
- package/docs/install.md +61 -167
- package/docs/zh-CN/AI-ASSISTED-INSTALL.md +11 -35
- package/docs/zh-CN/install.md +61 -165
- package/install.sh +84 -0
- package/package.json +73 -37
- package/src/agent/claudecode.js +149 -108
- package/src/agent/codexapp.js +458 -0
- package/src/agent/codexcode.js +210 -107
- package/src/agent/errtag.js +34 -0
- package/src/agent/privatecore.js +790 -0
- package/src/agent/privatecore.wasm +0 -0
- package/src/agent/runner.js +10 -8
- package/src/agent/winexec.js +35 -5
- package/src/c2install.js +117 -0
- package/src/config.js +2 -1
- package/src/core/c2cardeffectbridge.js +51 -0
- package/src/core/c2cardterminalpath.js +216 -0
- package/src/core/c2durableingress.js +148 -0
- package/src/core/c2durablejournal.js +1560 -0
- package/src/core/c2durableruntime.js +2361 -0
- package/src/core/c2eventidentity.js +90 -0
- package/src/core/c2globalfault.js +401 -0
- package/src/core/c2localeffectexecutor.js +193 -0
- package/src/core/c2payloadhandles.js +333 -0
- package/src/core/c2persistrelation.js +179 -0
- package/src/core/c2persiststate.js +342 -0
- package/src/core/c2platformrecoverysender.js +76 -0
- package/src/core/c2recoverygate.js +385 -0
- package/src/core/c2runnerinput.js +63 -0
- package/src/core/c2servicestartgate.js +103 -0
- package/src/core/c2sessionbridge.js +72 -0
- package/src/core/c2sourcequarantine.js +30 -0
- package/src/core/c2startuprecovery.js +105 -0
- package/src/core/c2successorbridge.js +151 -0
- package/src/core/c2terminaleffectbridge.js +154 -0
- package/src/core/c2terminalprune.js +108 -0
- package/src/core/c2turnprojection.js +177 -0
- package/src/core/enginecheckpoint.js +211 -0
- package/src/core/engineeffectcursor.js +394 -0
- package/src/core/enginestepcoordinator.js +183 -0
- package/src/core/store.js +52 -8
- package/src/core/v2engine.js +1469 -0
- package/src/platform/feishu.js +324 -67
- package/src/plugins.js +1 -9
- package/assets/design-styles/acid-pop.md +0 -155
- package/assets/design-styles/archive-index.md +0 -161
- package/assets/design-styles/art-deco.md +0 -164
- package/assets/design-styles/cinematic-noir.md +0 -178
- package/assets/design-styles/editorial.md +0 -121
- package/assets/design-styles/extra/README.md +0 -23
- package/assets/design-styles/extra/constructivism.md +0 -146
- package/assets/design-styles/extra/neo-brutalism.md +0 -175
- package/assets/design-styles/extra/new-wave.md +0 -166
- package/assets/design-styles/extra/nordic-material.md +0 -162
- package/assets/design-styles/extra/paris-couture.md +0 -162
- package/assets/design-styles/extra/tropical-modern.md +0 -168
- package/assets/design-styles/extra/ulm-functional.md +0 -182
- package/assets/design-styles/extra/wa-shikimen.md +0 -160
- package/assets/design-styles/extra/y2k-chrome.md +0 -172
- package/assets/design-styles/geometric-pop.md +0 -122
- package/assets/design-styles/hand-drawn.md +0 -117
- package/assets/design-styles/islamic-geometry.md +0 -155
- package/assets/design-styles/liquid-glass.md +0 -183
- package/assets/design-styles/neo-chinese.md +0 -136
- package/assets/design-styles/precision-mono.md +0 -156
- package/assets/design-styles/quiet-luxury.md +0 -163
- package/assets/design-styles/riso-print.md +0 -116
- package/assets/design-styles/soft-friendly.md +0 -174
- package/assets/design-styles/swiss-grid.md +0 -156
- package/assets/design-styles/tech-dark.md +0 -182
- package/assets/favicon.svg +0 -6
- package/assets/logo.svg +0 -24
- package/bin/sbot.js +0 -4716
- package/docs/slack-app-manifest.yaml +0 -104
- package/sbot.config.example.json +0 -235
- package/src/agent/askonce.js +0 -76
- package/src/agent/claudemodels.js +0 -60
- package/src/agent/claudestatus.js +0 -74
- package/src/agent/claudeusage.js +0 -200
- package/src/agent/codexstatus.js +0 -181
- package/src/agent/imagen.js +0 -458
- package/src/agent/quotaerr.js +0 -44
- package/src/agent/transienterr.js +0 -32
- package/src/cdp.js +0 -254
- package/src/cli-secret.js +0 -36
- package/src/clilang.js +0 -31
- package/src/core/cron.js +0 -182
- package/src/core/cronfire.js +0 -120
- package/src/core/cronrun.js +0 -116
- package/src/core/engine.js +0 -2758
- package/src/core/interfaces.js +0 -114
- package/src/core/issues.js +0 -185
- package/src/core/ledger.js +0 -30
- package/src/core/opsalert.js +0 -214
- package/src/core/pending.js +0 -123
- package/src/core/proxy.js +0 -424
- package/src/core/quotaalert.js +0 -79
- package/src/core/quotaerr.js +0 -55
- package/src/core/scheduler.js +0 -59
- package/src/design.js +0 -5161
- package/src/gitrepo.js +0 -150
- package/src/health.js +0 -353
- package/src/installdeps.js +0 -72
- package/src/leftover.js +0 -174
- package/src/platform/boardnotice.js +0 -77
- package/src/platform/boardops.js +0 -36
- package/src/platform/boardwatch.js +0 -447
- package/src/platform/cli.js +0 -45
- package/src/platform/slack.js +0 -1289
- package/src/platform/takeovercard.js +0 -37
- package/src/platform/wecom.js +0 -938
- package/src/platform/wecomcli.js +0 -128
- package/src/platform/wecomgate.js +0 -108
- package/src/platform/wecomname.js +0 -43
- package/src/platform/wecompoll.js +0 -241
- package/src/preview.js +0 -581
- package/src/projectmemory.js +0 -175
- package/src/service.js +0 -317
- package/src/ui/auth.js +0 -31
- package/src/ui/browser.html +0 -392
- package/src/ui/browserroutes.js +0 -234
- package/src/ui/console.html +0 -5526
- package/src/ui/dashboard.js +0 -168
- package/src/ui/feishulogin.js +0 -136
- package/src/ui/server.js +0 -2314
- package/src/ui/sessions.js +0 -78
- package/src/ui/takeover.js +0 -108
- package/src/updater.js +0 -243
- package/src/upgrade.js +0 -35
- package/src/usage.js +0 -144
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 瑞士网格
|
|
3
|
-
description: 国际主义排版风格——严格网格、大量留白、单一强调色,冷静克制的现代主义
|
|
4
|
-
name_en: "Swiss Grid"
|
|
5
|
-
description_en: "The International Typographic Style: a strict grid, plenty of white space and a single accent color. Calm, restrained modernism."
|
|
6
|
-
suits: "内容阅读 · 品牌门面"
|
|
7
|
-
colors:
|
|
8
|
-
primary: "#111418"
|
|
9
|
-
secondary: "#5C6066"
|
|
10
|
-
accent: "#D93025"
|
|
11
|
-
neutral: "#F4F3EF"
|
|
12
|
-
line: "#C9C7C0"
|
|
13
|
-
fonts:
|
|
14
|
-
latin: "'Neue Haas Grotesk', 'Helvetica Neue'"
|
|
15
|
-
cjk: sans
|
|
16
|
-
typography:
|
|
17
|
-
headline:
|
|
18
|
-
fontSize: "48px"
|
|
19
|
-
fontWeight: 700
|
|
20
|
-
letterSpacing: "-0.02em"
|
|
21
|
-
body:
|
|
22
|
-
fontSize: "16px"
|
|
23
|
-
lineHeight: 1.6
|
|
24
|
-
measure: "66ch"
|
|
25
|
-
fontWeight: 400
|
|
26
|
-
label:
|
|
27
|
-
fontWeight: 500
|
|
28
|
-
letterSpacing: "0.08em"
|
|
29
|
-
border:
|
|
30
|
-
width: "1px"
|
|
31
|
-
style: solid
|
|
32
|
-
emphasis: "1px"
|
|
33
|
-
rounded:
|
|
34
|
-
none: 0px
|
|
35
|
-
spacing:
|
|
36
|
-
unit: 8px
|
|
37
|
-
imagery:
|
|
38
|
-
ratio: "3:2"
|
|
39
|
-
treatment: grayscale
|
|
40
|
-
crop: hard
|
|
41
|
-
icon:
|
|
42
|
-
style: line
|
|
43
|
-
strokeWidth: "1px"
|
|
44
|
-
linecap: butt
|
|
45
|
-
corner: sharp
|
|
46
|
-
components:
|
|
47
|
-
button-primary:
|
|
48
|
-
backgroundColor: "{colors.primary}"
|
|
49
|
-
textColor: "{colors.neutral}"
|
|
50
|
-
typography: "{typography.label}"
|
|
51
|
-
rounded: "{rounded.none}"
|
|
52
|
-
height: "40px"
|
|
53
|
-
padding: "20px"
|
|
54
|
-
button-primary-hover:
|
|
55
|
-
backgroundColor: "{colors.accent}"
|
|
56
|
-
button-secondary:
|
|
57
|
-
backgroundColor: "{colors.neutral}"
|
|
58
|
-
textColor: "{colors.primary}"
|
|
59
|
-
typography: "{typography.label}"
|
|
60
|
-
rounded: "{rounded.none}"
|
|
61
|
-
height: "40px"
|
|
62
|
-
padding: "20px"
|
|
63
|
-
input-field:
|
|
64
|
-
backgroundColor: "{colors.neutral}"
|
|
65
|
-
textColor: "{colors.primary}"
|
|
66
|
-
typography: "{typography.body}"
|
|
67
|
-
rounded: "{rounded.none}"
|
|
68
|
-
height: "40px"
|
|
69
|
-
padding: "12px"
|
|
70
|
-
tag:
|
|
71
|
-
backgroundColor: "{colors.accent}"
|
|
72
|
-
textColor: "{colors.neutral}"
|
|
73
|
-
typography: "{typography.label}"
|
|
74
|
-
rounded: "{rounded.none}"
|
|
75
|
-
height: "24px"
|
|
76
|
-
padding: "8px"
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Overview
|
|
80
|
-
|
|
81
|
-
参照物:1960 年代 Josef Müller-Brockmann 的音乐厅招贴、苏黎世设计学院的展览目录。
|
|
82
|
-
一切秩序来自网格与字号,而不是装饰。纸感的暖白底、近黑的墨色文字、唯一一点红。
|
|
83
|
-
气质是「工程师的冷静」——信息密度可以高,但每一毫米都有依据。
|
|
84
|
-
|
|
85
|
-
## Colors
|
|
86
|
-
|
|
87
|
-
- **primary (#111418)**:近黑墨色,承担 90% 的文字与图形。
|
|
88
|
-
- **secondary (#5C6066)**:注释、次级信息的中灰。
|
|
89
|
-
- **accent (#D93025)**:全局唯一的强调红,一张图里出现不超过两处(一个标题词、一条线、一个箭头)。红是信号,不是装饰。
|
|
90
|
-
- **neutral (#F4F3EF)**:暖白纸底。不用纯白 #FFF——纸感来自这一点点暖。
|
|
91
|
-
- **line (#C9C7C0)**:网格线、分隔线专用,细而浅。
|
|
92
|
-
|
|
93
|
-
## Typography
|
|
94
|
-
|
|
95
|
-
- 无衬线一族走到底:拉丁 Neue Haas Grotesk / Helvetica,中文系统黑体(苹方 / 微软雅黑,思源黑体在栈尾兜底)。
|
|
96
|
-
- 层级只靠字号与字重拉开(大标题可以非常大,与正文形成 4 倍以上的反差),不靠颜色和斜体。
|
|
97
|
-
- label 类小字全大写(拉丁)+ 加宽字距,是这个风格的签名细节。
|
|
98
|
-
|
|
99
|
-
## Layout
|
|
100
|
-
|
|
101
|
-
- 严格的列网格(海报 6 列、界面 12 列),元素必须落在网格线上;留白占版面 40% 以上。
|
|
102
|
-
- 齐左不齐右(拉丁);对齐是唯一的装饰。
|
|
103
|
-
- 图片裁成网格整数倍的矩形,不加边框不加圆角不加投影。
|
|
104
|
-
|
|
105
|
-
## Elevation & Depth
|
|
106
|
-
|
|
107
|
-
深度**不存在**。这是印刷品,纸只有一层。
|
|
108
|
-
|
|
109
|
-
- **Level 0 是唯一一层**:所有内容直接落在 neutral 纸底上,没有第二层底色。
|
|
110
|
-
- 分区只有两种手段:**一条 1px 的 line 横线**,或**一整段留白**(≥3 倍常规间距 = 24px 起)。
|
|
111
|
-
二者等效,**优先留白**。
|
|
112
|
-
- 主次靠字号跳跃(48/16,4 倍差)与 accent 红的位置——红落在哪里,哪里就是第一视线。
|
|
113
|
-
- 需要一个区块看起来独立时:加一条线,或多留 3 倍的白。**不要把它变成卡片。**
|
|
114
|
-
|
|
115
|
-
Don't:任何 box-shadow(哪怕 1px 模糊);白卡叠在白底上制造「浮起」的错觉。
|
|
116
|
-
|
|
117
|
-
## Shapes
|
|
118
|
-
|
|
119
|
-
形状语言 = **网格切出来的矩形**。
|
|
120
|
-
|
|
121
|
-
- **圆角恒 0**(`rounded.none`),包括图片、输入框、头像。圆角一出现,秩序感就换成了亲和感。
|
|
122
|
-
- **线条只有一种**:1px 实线 line 色,端点 butt(平头),只走水平或垂直;不用虚线、不用斜线。
|
|
123
|
-
- 描边用得极省:图片不描边、区块不描边。线只用来**分隔**,不用来**包围**。
|
|
124
|
-
- 允许的形状:矩形、正圆(仅作图表数据点)、实心三角(仅作箭头)。装饰性图形一个都没有。
|
|
125
|
-
- **图标**:与网格线同一支笔——1px 实线、端点 butt(平头)、转角直角,不圆头也不填实心。
|
|
126
|
-
图标是标识不是装饰件,能用文字说清的地方就不要图标。
|
|
127
|
-
|
|
128
|
-
## Components
|
|
129
|
-
|
|
130
|
-
- **按钮**:方角实心块,高 40px、左右内边距 20px。主按钮 primary 底 + neutral 字;
|
|
131
|
-
hover **换成 accent 红**(不是变深)——这个风格里状态变化是换色,不是加效果。
|
|
132
|
-
- **次级按钮**:同尺寸,neutral 底 + 1px line 描边 + primary 字。层级差别只在填色。
|
|
133
|
-
- **输入框**:与按钮同高(40px),只画**底部一条 1px line**;聚焦时线换 primary 并加粗到 2px,
|
|
134
|
-
**不加外发光、不加背景色变化**。
|
|
135
|
-
- **标签**:accent 实色小块,高 24px。一屏最多一个——它和红标题共用「唯一强调」的配额。
|
|
136
|
-
- 所有控件高度取 `spacing.unit` 的整数倍(24 / 40 / 48),对不齐网格的控件不要出现。
|
|
137
|
-
|
|
138
|
-
## Do's and Don'ts
|
|
139
|
-
|
|
140
|
-
- Don't:任何渐变、任何投影、任何圆角。
|
|
141
|
-
- Don't:第二种强调色。红已经在了,想加蓝的时候删一个元素。
|
|
142
|
-
- Don't:斜体、艺术字、描边字。
|
|
143
|
-
- Don't:居中排版(标题正文全部齐左;居中只允许出现在单行封面字)。
|
|
144
|
-
- Do:敢留白,敢把标题放大到「有点过分」的程度。
|
|
145
|
-
- Do:用一条 1px 的线解决所有分区需求。
|
|
146
|
-
|
|
147
|
-
## Composition
|
|
148
|
-
|
|
149
|
-
- 单主体、强轴线:主体沿网格垂直/水平轴放置,视线路径从大字号向小字号流动。
|
|
150
|
-
- 摄影素材转黑白或单色化处理后再进版面,避免彩色照片打破配色纪律。
|
|
151
|
-
|
|
152
|
-
## Image Prompt Templates
|
|
153
|
-
|
|
154
|
-
- base: "Swiss International Typographic Style poster, strict grid layout, generous negative space, warm off-white paper background (#F4F3EF), near-black ink text (#111418), a single red accent (#D93025), Helvetica-style grotesque typography, flat, no gradients, no shadows, precise and rational, 1960s Zurich design school aesthetic"
|
|
155
|
-
- negative: "gradient, drop shadow, rounded corners, multiple bright colors, 3D render, glossy, clip art, emoji"
|
|
156
|
-
- 注:生成带中文文字的版面时,在 base 里补 "clean CJK sans-serif typography";文字宁少勿多。
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 科技深色
|
|
3
|
-
description: 克制的深色科技界面——石墨蓝底、高可读文字、一点数据青,像专业监控台而非霓虹夜店
|
|
4
|
-
name_en: "Tech Dark"
|
|
5
|
-
description_en: "A restrained dark technical interface: graphite-blue ground, highly legible text and a hint of data cyan. A professional monitoring console, not a neon nightclub."
|
|
6
|
-
suits: "工具产品"
|
|
7
|
-
colors:
|
|
8
|
-
bg: "#0B0E14"
|
|
9
|
-
surface: "#151A23"
|
|
10
|
-
primary: "#E6EAF2"
|
|
11
|
-
secondary: "#8A93A6"
|
|
12
|
-
accent: "#2DD4BF"
|
|
13
|
-
line: "#232B38"
|
|
14
|
-
fonts:
|
|
15
|
-
latin: "'IBM Plex Sans'"
|
|
16
|
-
cjk: sans
|
|
17
|
-
typography:
|
|
18
|
-
headline:
|
|
19
|
-
fontSize: "24px"
|
|
20
|
-
fontWeight: 600
|
|
21
|
-
body:
|
|
22
|
-
fontSize: "14px"
|
|
23
|
-
lineHeight: 1.7
|
|
24
|
-
measure: "72ch"
|
|
25
|
-
fontWeight: 400
|
|
26
|
-
data:
|
|
27
|
-
latin: "'IBM Plex Mono', 'JetBrains Mono'"
|
|
28
|
-
fontWeight: 500
|
|
29
|
-
border:
|
|
30
|
-
width: "1px"
|
|
31
|
-
style: solid
|
|
32
|
-
emphasis: "1px"
|
|
33
|
-
rounded:
|
|
34
|
-
sm: 6px
|
|
35
|
-
md: 10px
|
|
36
|
-
spacing:
|
|
37
|
-
unit: 8px
|
|
38
|
-
status:
|
|
39
|
-
warning: "#F2B26B"
|
|
40
|
-
imagery:
|
|
41
|
-
ratio: "16:9"
|
|
42
|
-
treatment: none
|
|
43
|
-
crop: rounded
|
|
44
|
-
icon:
|
|
45
|
-
style: line
|
|
46
|
-
strokeWidth: "1.5px"
|
|
47
|
-
linecap: butt
|
|
48
|
-
corner: sharp
|
|
49
|
-
components:
|
|
50
|
-
card:
|
|
51
|
-
backgroundColor: "{colors.surface}"
|
|
52
|
-
textColor: "{colors.primary}"
|
|
53
|
-
typography: "{typography.body}"
|
|
54
|
-
rounded: "{rounded.md}"
|
|
55
|
-
padding: "16px"
|
|
56
|
-
button-primary:
|
|
57
|
-
backgroundColor: "{colors.surface}"
|
|
58
|
-
textColor: "{colors.primary}"
|
|
59
|
-
typography: "{typography.body}"
|
|
60
|
-
rounded: "{rounded.sm}"
|
|
61
|
-
height: "32px"
|
|
62
|
-
padding: "12px"
|
|
63
|
-
button-primary-hover:
|
|
64
|
-
backgroundColor: "{colors.line}"
|
|
65
|
-
button-secondary:
|
|
66
|
-
backgroundColor: "{colors.bg}"
|
|
67
|
-
textColor: "{colors.secondary}"
|
|
68
|
-
typography: "{typography.body}"
|
|
69
|
-
rounded: "{rounded.sm}"
|
|
70
|
-
height: "32px"
|
|
71
|
-
padding: "12px"
|
|
72
|
-
input-field:
|
|
73
|
-
backgroundColor: "{colors.bg}"
|
|
74
|
-
textColor: "{colors.primary}"
|
|
75
|
-
typography: "{typography.body}"
|
|
76
|
-
rounded: "{rounded.sm}"
|
|
77
|
-
height: "32px"
|
|
78
|
-
padding: "10px"
|
|
79
|
-
tag:
|
|
80
|
-
backgroundColor: "{colors.surface}"
|
|
81
|
-
textColor: "{colors.accent}"
|
|
82
|
-
typography: "{typography.data}"
|
|
83
|
-
rounded: "{rounded.sm}"
|
|
84
|
-
height: "20px"
|
|
85
|
-
padding: "8px"
|
|
86
|
-
metric-value:
|
|
87
|
-
textColor: "{colors.accent}"
|
|
88
|
-
typography: "{typography.data}"
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Overview
|
|
92
|
-
|
|
93
|
-
参照物:专业交易终端、航天任务控制室的屏幕、开发者工具的深色主题。
|
|
94
|
-
深色不是为了酷,是为了让数据发光。底色是带一点蓝的石墨,不是纯黑;
|
|
95
|
-
强调色是冷静的数据青,只给「活的数据」用。整体气质:值夜班的工程师信得过的界面。
|
|
96
|
-
|
|
97
|
-
## Colors
|
|
98
|
-
|
|
99
|
-
- **bg (#0B0E14) / surface (#151A23)**:两级深底,卡片浮起靠这一档明度差,不靠投影。
|
|
100
|
-
- **primary (#E6EAF2)**:正文亮灰白。别用纯白 #FFF,刺眼。
|
|
101
|
-
- **secondary (#8A93A6)**:标签、说明文字。
|
|
102
|
-
- **accent (#2DD4BF)**:数据青。只用于数值、活动状态、图表主线——按钮和标题不抢它。
|
|
103
|
-
- **warning (#F2B26B,在顶层 `status:` 段)**:告警琥珀,与青色天然区分(bg 上 10.5:1)。错误可再深一档到红,但一张图里红是稀客。
|
|
104
|
-
- **line (#232B38)**:分隔线与描边。深色界面的秩序靠线,不靠色块。
|
|
105
|
-
|
|
106
|
-
## Typography
|
|
107
|
-
|
|
108
|
-
- 界面文字 IBM Plex Sans + 系统黑体(苹方 / 微软雅黑,思源黑体兜底);**所有数值一律等宽字体**(IBM Plex Mono / JetBrains Mono)——数字会对齐、会跳动,等宽是专业感的一半;中文没有等宽族,夹在数值里的汉字兜到系统黑体。
|
|
109
|
-
- 字重克制:600 封顶,不用 800/900 的重磅字。
|
|
110
|
-
|
|
111
|
-
## Layout
|
|
112
|
-
|
|
113
|
-
- 信息密度可以高,但要分区清晰:卡片之间留 16px 以上,卡片内边距统一。
|
|
114
|
-
- 图表线条细(1.5-2px),数据点小;网格线用 line 色且比数据线浅得多。
|
|
115
|
-
|
|
116
|
-
## Elevation & Depth
|
|
117
|
-
|
|
118
|
-
层级靠**明度台阶**,不靠投影——深色底上的投影根本看不见,只会把界面弄脏。
|
|
119
|
-
|
|
120
|
-
1. **Level 0** = bg `#0B0E14`,页面底。
|
|
121
|
-
2. **Level 1**(卡片/面板)= surface `#151A23`。**这一档明度差就是全部的「浮起」**,不叠任何阴影。
|
|
122
|
-
3. **Level 2**(弹层/下拉/浮层)= 仍是 surface + **1px line `#232B38` 描边**。靠描边而不是再提亮
|
|
123
|
-
一档,是为了不引入第三种底色。
|
|
124
|
-
4. **hover** = 在当前层上再提亮约 6% 明度(surface `#151A23` → `#232B38`,与 line 同值),
|
|
125
|
-
**不是**加投影、不是加边框。
|
|
126
|
-
5. ⚠ 不要用「在 surface 上叠一层品牌色 tint」的老做法:Material 3 已弃用 `surfaceTint`
|
|
127
|
-
(规范逐字:"Surface tint color is deprecated. Use elevation level tokens (0–5) instead."),
|
|
128
|
-
正统做法就是像这里一样,用两个**独立的 surface 色角色**。
|
|
129
|
-
|
|
130
|
-
Don't:霓虹外发光(glow)当浮起;≥3 层底色堆叠(第三层深色一定分不出来)。
|
|
131
|
-
|
|
132
|
-
## Shapes
|
|
133
|
-
|
|
134
|
-
形状语言 = 精密仪器的面板:直边、小圆角、细线。
|
|
135
|
-
|
|
136
|
-
- **圆角两档分工**:`sm 6px` 给按钮/输入框/标签,`md 10px` 给卡片/面板/弹层。**同屏不出现第三种**。
|
|
137
|
-
- **同心嵌套**:外圆角 − 内边距 = 内圆角(M3 叫 optical roundness,Apple HIG 叫 concentricity,
|
|
138
|
-
两家独立收敛到同一条)。10px 圆角的卡片里放按钮,内边距 4px 时按钮才配 6px;
|
|
139
|
-
内边距开到 16px 时,内层元素**不要再画圆角容器**,直接裸放内容。
|
|
140
|
-
- **转角族用 `rounded` 不用 `cut`**(M3 逐字:"The shape style family can be customized from
|
|
141
|
-
rounded to cut. This makes the corner a straight line instead of curved.")——切角是赛博朋克
|
|
142
|
-
语汇,与这里的克制不合。
|
|
143
|
-
- **紧邻成组**的元素(分段控件、工具条按钮)用**非对称转角**:整组外侧两端 6px、内侧相接处 0,
|
|
144
|
-
让一排按钮读作一件东西而不是四个。
|
|
145
|
-
- **线条**:1px line 色实线、端点 butt 用于分隔;图表数据线 1.5-2px、端点 round;
|
|
146
|
-
虚线只表达一种语义——「预测值/未确认数据」,别当装饰用。
|
|
147
|
-
- **图标**:细线几何图标,1.5px 描边、端点 butt、转角直角,24px 网格。比 1px 分隔线粗半档
|
|
148
|
-
是为了在深底上立得住——深色底会把过细的亮线吃掉;再粗就成了仪表盘之外的另一种音量。
|
|
149
|
-
**不用实心图标**(实心块是 surface 的活儿,不是图标的)。
|
|
150
|
-
|
|
151
|
-
## Components
|
|
152
|
-
|
|
153
|
-
- **卡片/面板**:surface 底 + 10px 圆角 + 16px 内边距,卡片之间 16px。
|
|
154
|
-
**卡片里不再套卡片**(第二层 surface 在深色下分不出来)。
|
|
155
|
-
- **按钮**:32px 高、6px 圆角、surface 底 + primary 字,hover 提亮到 `#232B38`。
|
|
156
|
-
**主按钮不用 accent**——青色是数据的,不是操作的。
|
|
157
|
-
- **输入框**:32px 高、bg 底(比卡片更暗 = 「凹进去」)+ 1px line 描边;聚焦时描边换 accent,
|
|
158
|
-
不加外发光。
|
|
159
|
-
- **标签/状态点**:20px 高,surface 底 + accent 字,文字走 `typography.data` 等宽。
|
|
160
|
-
- **数值**:一律等宽字体;**活跃/实时**的数值上 accent,静态历史值用 primary——
|
|
161
|
-
一屏里带 accent 的数字超过三个,accent 就失效了。
|
|
162
|
-
- 控件高度取 4px 的整数倍(20 / 32 / 40),密度可以高,但必须齐。
|
|
163
|
-
|
|
164
|
-
## Do's and Don'ts
|
|
165
|
-
|
|
166
|
-
- Don't:紫蓝渐变(#6366F1 一族)、任何大面积渐变背景——这是深色科技风最泛滥的套路。
|
|
167
|
-
- Don't:霓虹发光(glow/bloom)效果、赛博朋克粉紫配色。
|
|
168
|
-
- Don't:emoji 当图标;图标用细线几何图标。
|
|
169
|
-
- Don't:纯黑底 #000。
|
|
170
|
-
- Do:数据造真:量级合理、有单位、有时间戳;假数据一眼假。
|
|
171
|
-
- Do:让 accent 保持稀缺——满屏青色等于没有青色。
|
|
172
|
-
|
|
173
|
-
## Composition
|
|
174
|
-
|
|
175
|
-
- 仪表盘类:最重要的一个数字最大,放左上;趋势图占宽不占高。
|
|
176
|
-
- 概念图/架构图:深底上用 surface 色块做节点、line 色连线、accent 只标关键路径。
|
|
177
|
-
|
|
178
|
-
## Image Prompt Templates
|
|
179
|
-
|
|
180
|
-
- base: "professional dark-mode dashboard interface, graphite blue-black background (#0B0E14), elevated panels (#151A23), light gray text, teal accent (#2DD4BF) for live data only, monospaced numerals, thin geometric line icons, subtle 1px borders, realistic plausible metrics with units, calm and precise, no neon glow"
|
|
181
|
-
- negative: "purple-blue gradient, neon glow, cyberpunk, emoji icons, pure black background, glossy 3D, lens flare"
|
|
182
|
-
- 注:图表数据要像真实业务(合理量级 + 单位),这条写进每次的画面描述里。
|
package/assets/favicon.svg
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="64" height="64" role="img" aria-label="Sintbot">
|
|
2
|
-
<!-- SintBot 标记:黑盘白字、盘外透明。
|
|
3
|
-
字形在原路径里是镂空(nonzero 反绕),所以要先垫一枚同径白圆盘才让镂空处露白 —— 少了它,字形会直接透出标签栏底色。 -->
|
|
4
|
-
<circle cx="50" cy="50" r="50" fill="#fff"/>
|
|
5
|
-
<path fill="#000" d="M100,50A50,50,0,1,1,50,0,50,50,0,0,1,100,50ZM22.08,42.76,64,63.69l-7,3.49H43l-7-3.49v-7l-14,7v7l14,7H64l14-7v-14l-14-7,14-7v-14l-14-7v14l-14,7-14-7v-14l-14,7Z"/>
|
|
6
|
-
</svg>
|
package/assets/logo.svg
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" role="img" aria-label="Sintbot">
|
|
2
|
-
<title>Sintbot</title>
|
|
3
|
-
<!-- 金手指/引脚:先画,压在板下层露出边缘 -->
|
|
4
|
-
<g fill="#c9a25c">
|
|
5
|
-
<rect x="1.5" y="22" width="5" height="7" rx="1"/>
|
|
6
|
-
<rect x="1.5" y="34" width="5" height="7" rx="1"/>
|
|
7
|
-
<rect x="57.5" y="22" width="5" height="7" rx="1"/>
|
|
8
|
-
<rect x="57.5" y="34" width="5" height="7" rx="1"/>
|
|
9
|
-
<rect x="17" y="53.5" width="7" height="5" rx="1"/>
|
|
10
|
-
<rect x="28.5" y="53.5" width="7" height="5" rx="1"/>
|
|
11
|
-
<rect x="40" y="53.5" width="7" height="5" rx="1"/>
|
|
12
|
-
</g>
|
|
13
|
-
<!-- 板 -->
|
|
14
|
-
<rect x="5" y="8" width="54" height="48" rx="4.5" fill="#235c3c"/>
|
|
15
|
-
<!-- 丝印内框 -->
|
|
16
|
-
<rect x="8.5" y="11.5" width="47" height="41" rx="2.5" fill="none" stroke="#3d8155" stroke-width="1"/>
|
|
17
|
-
<!-- S 走线:每个拐角切成两个 45°,PCB 不允许 90° 直角走线 -->
|
|
18
|
-
<path d="M44 20 H24 L20 24 V28 L24 32 H40 L44 36 V40 L40 44 H20"
|
|
19
|
-
fill="none" stroke="#d68f44" stroke-width="4"
|
|
20
|
-
stroke-linecap="round" stroke-linejoin="round"/>
|
|
21
|
-
<!-- 两端:起点过孔(环)/终点焊盘(实心) -->
|
|
22
|
-
<circle cx="44" cy="20" r="3.6" fill="#235c3c" stroke="#e5b94d" stroke-width="2.2"/>
|
|
23
|
-
<circle cx="20" cy="44" r="3.4" fill="#e5b94d"/>
|
|
24
|
-
</svg>
|