paseo-req-kit 1.14.0 → 1.15.0-beta.1
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.md +17 -0
- package/docs/guide//347/273/264/346/212/244/350/200/205/346/214/207/345/215/227.md +2 -0
- package/engine/src/review-assets/app.css +153 -234
- package/engine/src/review-assets/app.html +44 -32
- package/engine/src/review-assets/app.js +11 -7
- package/engine/src/review-assets/check.css +11 -56
- package/engine/src/review-assets/check.html +48 -22
- package/engine/src/review-assets/check.js +169 -86
- package/engine/src/review-assets/code.css +15 -92
- package/engine/src/review-assets/code.html +41 -26
- package/engine/src/review-assets/code.js +196 -101
- package/engine/src/review-assets/rk-icons.js +98 -0
- package/engine/src/review-assets/rk-tokens.css +252 -0
- package/engine/src/review-assets/rk.css +252 -0
- package/engine/src/review.ts +6 -4
- package/package.json +1 -1
- package/paseo-plugin/package.json +1 -1
- package/site-dist/404.html +2 -2
- package/site-dist/assets/{app.VQ-QxRPH.js → app.D5s_yGHZ.js} +1 -1
- package/site-dist/assets/changelog.md.RJaBnmnw.js +1 -0
- package/site-dist/assets/chunks/@localSearchIndexroot.Dric-MbI.js +1 -0
- package/site-dist/assets/chunks/{VPLocalSearchBox.CT4Vlj76.js → VPLocalSearchBox.B4CyDsTr.js} +1 -1
- package/site-dist/assets/chunks/{theme.B_UmHHou.js → theme.CCocenmB.js} +2 -2
- package/site-dist/assets/{guide_getting-started.md.CZM53rO_.js → guide_getting-started.md.wFOkpMSx.js} +1 -1
- package/site-dist/assets/guide_maintainer.md.mFZprBj1.js +1 -0
- package/site-dist/assets/{guide_maintainer.md.C1v7EpSY.lean.js → guide_maintainer.md.mFZprBj1.lean.js} +1 -1
- package/site-dist/changelog.html +5 -5
- package/site-dist/guide/getting-started.html +5 -5
- package/site-dist/guide/how-it-works.html +4 -4
- package/site-dist/guide/index.html +4 -4
- package/site-dist/guide/install.html +4 -4
- package/site-dist/guide/maintainer.html +5 -5
- package/site-dist/guide/phases.html +4 -4
- package/site-dist/guide/project.html +4 -4
- package/site-dist/guide/user.html +4 -4
- package/site-dist/hashmap.json +1 -1
- package/site-dist/index.html +4 -4
- package/site-dist/reference/adr/0001-step-agents-under-origin-chat.html +4 -4
- package/site-dist/reference/adr/0002-no-directory-switch-in-chat.html +4 -4
- package/site-dist/reference/adr/0003-script-engine-not-hub.html +4 -4
- package/site-dist/reference/adr/0004-result-files.html +4 -4
- package/site-dist/reference/adr/0005-no-default-branch-local-commits-only.html +4 -4
- package/site-dist/reference/adr/0006-skill-install-targets.html +4 -4
- package/site-dist/reference/adr/0007-own-interview-skill.html +4 -4
- package/site-dist/reference/adr/0008-entries-do-not-call-entries.html +4 -4
- package/site-dist/reference/adr/0009-versioned-install-layout.html +4 -4
- package/site-dist/reference/adr/0010-generated-feature-overview.html +4 -4
- package/site-dist/reference/adr/0011-resume-after-completion.html +4 -4
- package/site-dist/reference/adr/0012-review-panel.html +4 -4
- package/site-dist/reference/adr/0013-no-release-tooling.html +4 -4
- package/site-dist/reference/adr/0014-notifier-slot.html +4 -4
- package/site-dist/reference/adr/0015-incremental-continue.html +4 -4
- package/site-dist/reference/adr/0016-upgrade-from-tags.html +4 -4
- package/site-dist/reference/adr/0017-use-paseo-capabilities.html +4 -4
- package/site-dist/reference/adr/0018-own-worktree-option.html +4 -4
- package/site-dist/reference/adr/0019-parallel-orchestration.html +4 -4
- package/site-dist/reference/adr/0020-scheduling-through-the-chat.html +4 -4
- package/site-dist/reference/adr/0021-npm-version-manager.html +4 -4
- package/site-dist/reference/adr/0022-develop-and-verify-phases.html +4 -4
- package/site-dist/reference/adr/0023-types-gate-slices.html +4 -4
- package/site-dist/reference/adr/0024-confirm-early-review-axes.html +4 -4
- package/site-dist/reference/adr/0025-joint-requirements.html +4 -4
- package/site-dist/reference/adr/0026-machine-records-and-api.html +4 -4
- package/site-dist/reference/adr/0027-paseo-plugin.html +4 -4
- package/site-dist/reference/adr/0028-external-integrations.html +4 -4
- package/site-dist/reference/adr/0029-requirements-from-cards.html +4 -4
- package/site-dist/reference/adr/0030-card-intake-process.html +4 -4
- package/site-dist/reference/adr/0031-fewer-interventions.html +4 -4
- package/site-dist/reference/adr/0032-npm-only-install.html +4 -4
- package/site-dist/reference/adr/0033-prototype-review-and-ui-check.html +4 -4
- package/site-dist/reference/adr/index.html +4 -4
- package/site-dist/reference/commands.html +4 -4
- package/site-dist/reference/config.html +4 -4
- package/site-dist/reference/contracts/cli-json.html +4 -4
- package/site-dist/reference/contracts/feature-files.html +4 -4
- package/site-dist/reference/contracts/index.html +4 -4
- package/site-dist/reference/contracts/notifier-event.html +4 -4
- package/site-dist/reference/contracts/result-file.html +4 -4
- package/site-dist/reference/contracts/spec.html +4 -4
- package/site-dist/reference/contracts/state.html +4 -4
- package/site-dist/reference/contracts/usage-record.html +4 -4
- package/site-dist/reference/contracts/verify.html +4 -4
- package/site-dist/reference/scope.html +4 -4
- package/site-dist/assets/changelog.md.CIKYJXpF.js +0 -1
- package/site-dist/assets/chunks/@localSearchIndexroot.h7oQE_np.js +0 -1
- package/site-dist/assets/guide_maintainer.md.C1v7EpSY.js +0 -1
- /package/site-dist/assets/{changelog.md.CIKYJXpF.lean.js → changelog.md.RJaBnmnw.lean.js} +0 -0
- /package/site-dist/assets/{guide_getting-started.md.CZM53rO_.lean.js → guide_getting-started.md.wFOkpMSx.lean.js} +0 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/* req-kit — generated from design/tokens.json by scripts/tokens-build.mjs. Do not edit. */
|
|
2
|
+
/* Dark is the default; light applies with data-theme="light", or the system setting when no data-theme is set. */
|
|
3
|
+
:root {
|
|
4
|
+
--rk-font-sans: Geist, "PingFang SC", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;
|
|
5
|
+
--rk-font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
|
|
6
|
+
--rk-type-display-xl: 800 56px/64px var(--rk-font-sans);
|
|
7
|
+
--rk-tracking-display-xl: -0.02em;
|
|
8
|
+
--rk-type-display: 700 40px/48px var(--rk-font-sans);
|
|
9
|
+
--rk-tracking-display: -0.01em;
|
|
10
|
+
--rk-type-metric: 700 40px/44px var(--rk-font-sans);
|
|
11
|
+
--rk-tracking-metric: -0.02em;
|
|
12
|
+
--rk-type-title-lg: 600 22px/30px var(--rk-font-sans);
|
|
13
|
+
--rk-type-title-md: 600 17px/26px var(--rk-font-sans);
|
|
14
|
+
--rk-type-title-sm: 600 14px/20px var(--rk-font-sans);
|
|
15
|
+
--rk-type-prose: 400 16px/28px var(--rk-font-sans);
|
|
16
|
+
--rk-type-body: 400 14px/22px var(--rk-font-sans);
|
|
17
|
+
--rk-type-body-sm: 400 13px/20px var(--rk-font-sans);
|
|
18
|
+
--rk-type-caption: 400 12px/18px var(--rk-font-sans);
|
|
19
|
+
--rk-type-eyebrow: 500 12px/16px var(--rk-font-mono);
|
|
20
|
+
--rk-tracking-eyebrow: 0.16em;
|
|
21
|
+
--rk-type-code: 400 13px/22px var(--rk-font-mono);
|
|
22
|
+
--rk-type-code-sm: 400 12px/18px var(--rk-font-mono);
|
|
23
|
+
--rk-type-poster-hero: 800 112px/116px var(--rk-font-sans);
|
|
24
|
+
--rk-tracking-poster-hero: -0.03em;
|
|
25
|
+
--rk-type-poster-headline: 700 64px/76px var(--rk-font-sans);
|
|
26
|
+
--rk-type-poster-lead: 500 32px/48px var(--rk-font-sans);
|
|
27
|
+
--rk-type-poster-metric: 800 168px/168px var(--rk-font-sans);
|
|
28
|
+
--rk-tracking-poster-metric: -0.04em;
|
|
29
|
+
--rk-type-poster-eyebrow: 500 22px/28px var(--rk-font-sans);
|
|
30
|
+
--rk-tracking-poster-eyebrow: 0.18em;
|
|
31
|
+
--rk-type-poster-caption: 400 22px/32px var(--rk-font-sans);
|
|
32
|
+
--rk-space-1: 4px;
|
|
33
|
+
--rk-space-2: 8px;
|
|
34
|
+
--rk-space-3: 12px;
|
|
35
|
+
--rk-space-4: 16px;
|
|
36
|
+
--rk-space-5: 20px;
|
|
37
|
+
--rk-space-6: 24px;
|
|
38
|
+
--rk-space-8: 32px;
|
|
39
|
+
--rk-space-12: 48px;
|
|
40
|
+
--rk-space-16: 64px;
|
|
41
|
+
--rk-space-24: 96px;
|
|
42
|
+
--rk-radius-sm: 6px;
|
|
43
|
+
--rk-radius-md: 10px;
|
|
44
|
+
--rk-radius-lg: 14px;
|
|
45
|
+
--rk-radius-xl: 20px;
|
|
46
|
+
--rk-radius-pill: 999px;
|
|
47
|
+
--rk-z-dropdown: 1000;
|
|
48
|
+
--rk-z-sticky: 1100;
|
|
49
|
+
--rk-z-modal: 1300;
|
|
50
|
+
--rk-z-popover: 1500;
|
|
51
|
+
--rk-canvas: #05070d;
|
|
52
|
+
--rk-canvas-grid: #1a2238;
|
|
53
|
+
--rk-surface-0: #080b14;
|
|
54
|
+
--rk-surface-1: #0b1020;
|
|
55
|
+
--rk-surface-2: #0f1526;
|
|
56
|
+
--rk-surface-3: #161e33;
|
|
57
|
+
--rk-overlay: #02040acc;
|
|
58
|
+
--rk-border-subtle: #161e33;
|
|
59
|
+
--rk-border-default: #1f2a44;
|
|
60
|
+
--rk-border-strong: #56698f;
|
|
61
|
+
--rk-text-primary: #f3f6fb;
|
|
62
|
+
--rk-text-secondary: #a3b0c6;
|
|
63
|
+
--rk-text-muted: #7c8aa3;
|
|
64
|
+
--rk-text-disabled: #3e4a63;
|
|
65
|
+
--rk-brand-500: #a8e01f;
|
|
66
|
+
--rk-brand-400: #bdeb4a;
|
|
67
|
+
--rk-brand-600: #8cc20f;
|
|
68
|
+
--rk-brand-300: #d9f59a;
|
|
69
|
+
--rk-brand-text: #c2ee55;
|
|
70
|
+
--rk-brand-tint: #a8e01f24;
|
|
71
|
+
--rk-brand-edge: #a8e01f;
|
|
72
|
+
--rk-on-brand: #0f1a02;
|
|
73
|
+
--rk-data: #22d3ee;
|
|
74
|
+
--rk-data-tint: #22d3ee1f;
|
|
75
|
+
--rk-ai: #a5b4fc;
|
|
76
|
+
--rk-ai-tint: #818cf81f;
|
|
77
|
+
--rk-focus-ring: #d9f59a;
|
|
78
|
+
--rk-status-running: #22d3ee;
|
|
79
|
+
--rk-status-success: #34d399;
|
|
80
|
+
--rk-status-failed: #fb7185;
|
|
81
|
+
--rk-on-danger: #1a0b02;
|
|
82
|
+
--rk-status-warning: #fbbf24;
|
|
83
|
+
--rk-status-skipped: #7c8aa3;
|
|
84
|
+
--rk-status-pending: #56698f;
|
|
85
|
+
--rk-success-tint: #34d3991f;
|
|
86
|
+
--rk-failed-tint: #fb71851f;
|
|
87
|
+
--rk-warning-tint: #fbbf241f;
|
|
88
|
+
--rk-diff-added: #34d399;
|
|
89
|
+
--rk-diff-modified: #fbbf24;
|
|
90
|
+
--rk-diff-removed: #fb7185;
|
|
91
|
+
--rk-aurora-brand: #a8e01f24;
|
|
92
|
+
--rk-aurora-data: #22d3ee1f;
|
|
93
|
+
--rk-aurora-ai: #818cf81a;
|
|
94
|
+
--rk-campaign-lime: #a8e01f;
|
|
95
|
+
--rk-campaign-lime-hi: #d9f59a;
|
|
96
|
+
--rk-on-campaign-lime: #0f1a02;
|
|
97
|
+
--rk-campaign-glacier: #22d3ee;
|
|
98
|
+
--rk-campaign-glacier-hi: #a5f3fc;
|
|
99
|
+
--rk-on-campaign-glacier: #04222a;
|
|
100
|
+
--rk-campaign-nebula: #a78bfa;
|
|
101
|
+
--rk-campaign-nebula-hi: #ddd6fe;
|
|
102
|
+
--rk-on-campaign-nebula: #150a33;
|
|
103
|
+
--rk-campaign-signal: #34d399;
|
|
104
|
+
--rk-campaign-signal-hi: #a7f3d0;
|
|
105
|
+
--rk-on-campaign-signal: #032016;
|
|
106
|
+
--rk-campaign-solar: #fbbf24;
|
|
107
|
+
--rk-campaign-solar-hi: #fde68a;
|
|
108
|
+
--rk-on-campaign-solar: #241800;
|
|
109
|
+
--rk-shadow-card: inset 0 1px 0 #ffffff0d, 0 1px 2px #00000080;
|
|
110
|
+
--rk-shadow-float: inset 0 1px 0 #ffffff0f, 0 12px 32px #000000a6;
|
|
111
|
+
--rk-shadow-dialog: inset 0 1px 0 #ffffff12, 0 32px 80px #000000cc;
|
|
112
|
+
--rk-glow-brand: 0 0 0 1px #a8e01f, 0 8px 28px #a8e01f4d;
|
|
113
|
+
--rk-glow-select: 0 0 0 3px #a8e01f40;
|
|
114
|
+
--rk-glow-run: 0 0 0 3px #22d3ee33;
|
|
115
|
+
color-scheme: dark;
|
|
116
|
+
}
|
|
117
|
+
@media (prefers-color-scheme: light) {
|
|
118
|
+
:root:not([data-theme="dark"]) {
|
|
119
|
+
--rk-canvas: #f4f6fa;
|
|
120
|
+
--rk-canvas-grid: #d7deea;
|
|
121
|
+
--rk-surface-0: #f8fafc;
|
|
122
|
+
--rk-surface-1: #ffffff;
|
|
123
|
+
--rk-surface-2: #ffffff;
|
|
124
|
+
--rk-surface-3: #eef2f7;
|
|
125
|
+
--rk-overlay: #0b102066;
|
|
126
|
+
--rk-border-subtle: #e8edf4;
|
|
127
|
+
--rk-border-default: #dce3ee;
|
|
128
|
+
--rk-border-strong: #7f8ca4;
|
|
129
|
+
--rk-text-primary: #0b1020;
|
|
130
|
+
--rk-text-secondary: #3d4a61;
|
|
131
|
+
--rk-text-muted: #5b6880;
|
|
132
|
+
--rk-text-disabled: #aab4c4;
|
|
133
|
+
--rk-brand-500: #a8e01f;
|
|
134
|
+
--rk-brand-400: #b3e536;
|
|
135
|
+
--rk-brand-600: #8cc20f;
|
|
136
|
+
--rk-brand-300: #d9f59a;
|
|
137
|
+
--rk-brand-text: #466f0f;
|
|
138
|
+
--rk-brand-tint: #a8e01f2e;
|
|
139
|
+
--rk-brand-edge: #65a30d;
|
|
140
|
+
--rk-on-brand: #0f1a02;
|
|
141
|
+
--rk-data: #0e7490;
|
|
142
|
+
--rk-data-tint: #0e749014;
|
|
143
|
+
--rk-ai: #4f46e5;
|
|
144
|
+
--rk-ai-tint: #4f46e514;
|
|
145
|
+
--rk-focus-ring: #466f0f;
|
|
146
|
+
--rk-status-running: #0e7490;
|
|
147
|
+
--rk-status-success: #047857;
|
|
148
|
+
--rk-status-failed: #be123c;
|
|
149
|
+
--rk-on-danger: #ffffff;
|
|
150
|
+
--rk-status-warning: #92400e;
|
|
151
|
+
--rk-status-skipped: #5b6880;
|
|
152
|
+
--rk-status-pending: #7f8ca4;
|
|
153
|
+
--rk-success-tint: #04785714;
|
|
154
|
+
--rk-failed-tint: #be123c14;
|
|
155
|
+
--rk-warning-tint: #92400e14;
|
|
156
|
+
--rk-diff-added: #047857;
|
|
157
|
+
--rk-diff-modified: #92400e;
|
|
158
|
+
--rk-diff-removed: #be123c;
|
|
159
|
+
--rk-aurora-brand: #a8e01f26;
|
|
160
|
+
--rk-aurora-data: #22d3ee14;
|
|
161
|
+
--rk-aurora-ai: #818cf814;
|
|
162
|
+
--rk-campaign-lime: #466f0f;
|
|
163
|
+
--rk-campaign-lime-hi: #466f0f;
|
|
164
|
+
--rk-on-campaign-lime: #ffffff;
|
|
165
|
+
--rk-campaign-glacier: #0e7490;
|
|
166
|
+
--rk-campaign-glacier-hi: #0e7490;
|
|
167
|
+
--rk-on-campaign-glacier: #ffffff;
|
|
168
|
+
--rk-campaign-nebula: #6d28d9;
|
|
169
|
+
--rk-campaign-nebula-hi: #6d28d9;
|
|
170
|
+
--rk-on-campaign-nebula: #ffffff;
|
|
171
|
+
--rk-campaign-signal: #047857;
|
|
172
|
+
--rk-campaign-signal-hi: #047857;
|
|
173
|
+
--rk-on-campaign-signal: #ffffff;
|
|
174
|
+
--rk-campaign-solar: #a16207;
|
|
175
|
+
--rk-campaign-solar-hi: #a16207;
|
|
176
|
+
--rk-on-campaign-solar: #ffffff;
|
|
177
|
+
--rk-shadow-card: inset 0 1px 0 #ffffff, 0 1px 2px #0b10200f, 0 4px 16px #0b10200a;
|
|
178
|
+
--rk-shadow-float: 0 12px 32px #0b10201f, 0 2px 6px #0b102014;
|
|
179
|
+
--rk-shadow-dialog: 0 32px 80px #0b102033;
|
|
180
|
+
--rk-glow-brand: 0 0 0 1px #a8e01f, 0 8px 28px #a8e01f4d;
|
|
181
|
+
--rk-glow-select: 0 0 0 3px #a8e01f40;
|
|
182
|
+
--rk-glow-run: 0 0 0 3px #0e749026;
|
|
183
|
+
color-scheme: light;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
:root[data-theme="light"] {
|
|
187
|
+
--rk-canvas: #f4f6fa;
|
|
188
|
+
--rk-canvas-grid: #d7deea;
|
|
189
|
+
--rk-surface-0: #f8fafc;
|
|
190
|
+
--rk-surface-1: #ffffff;
|
|
191
|
+
--rk-surface-2: #ffffff;
|
|
192
|
+
--rk-surface-3: #eef2f7;
|
|
193
|
+
--rk-overlay: #0b102066;
|
|
194
|
+
--rk-border-subtle: #e8edf4;
|
|
195
|
+
--rk-border-default: #dce3ee;
|
|
196
|
+
--rk-border-strong: #7f8ca4;
|
|
197
|
+
--rk-text-primary: #0b1020;
|
|
198
|
+
--rk-text-secondary: #3d4a61;
|
|
199
|
+
--rk-text-muted: #5b6880;
|
|
200
|
+
--rk-text-disabled: #aab4c4;
|
|
201
|
+
--rk-brand-500: #a8e01f;
|
|
202
|
+
--rk-brand-400: #b3e536;
|
|
203
|
+
--rk-brand-600: #8cc20f;
|
|
204
|
+
--rk-brand-300: #d9f59a;
|
|
205
|
+
--rk-brand-text: #466f0f;
|
|
206
|
+
--rk-brand-tint: #a8e01f2e;
|
|
207
|
+
--rk-brand-edge: #65a30d;
|
|
208
|
+
--rk-on-brand: #0f1a02;
|
|
209
|
+
--rk-data: #0e7490;
|
|
210
|
+
--rk-data-tint: #0e749014;
|
|
211
|
+
--rk-ai: #4f46e5;
|
|
212
|
+
--rk-ai-tint: #4f46e514;
|
|
213
|
+
--rk-focus-ring: #466f0f;
|
|
214
|
+
--rk-status-running: #0e7490;
|
|
215
|
+
--rk-status-success: #047857;
|
|
216
|
+
--rk-status-failed: #be123c;
|
|
217
|
+
--rk-on-danger: #ffffff;
|
|
218
|
+
--rk-status-warning: #92400e;
|
|
219
|
+
--rk-status-skipped: #5b6880;
|
|
220
|
+
--rk-status-pending: #7f8ca4;
|
|
221
|
+
--rk-success-tint: #04785714;
|
|
222
|
+
--rk-failed-tint: #be123c14;
|
|
223
|
+
--rk-warning-tint: #92400e14;
|
|
224
|
+
--rk-diff-added: #047857;
|
|
225
|
+
--rk-diff-modified: #92400e;
|
|
226
|
+
--rk-diff-removed: #be123c;
|
|
227
|
+
--rk-aurora-brand: #a8e01f26;
|
|
228
|
+
--rk-aurora-data: #22d3ee14;
|
|
229
|
+
--rk-aurora-ai: #818cf814;
|
|
230
|
+
--rk-campaign-lime: #466f0f;
|
|
231
|
+
--rk-campaign-lime-hi: #466f0f;
|
|
232
|
+
--rk-on-campaign-lime: #ffffff;
|
|
233
|
+
--rk-campaign-glacier: #0e7490;
|
|
234
|
+
--rk-campaign-glacier-hi: #0e7490;
|
|
235
|
+
--rk-on-campaign-glacier: #ffffff;
|
|
236
|
+
--rk-campaign-nebula: #6d28d9;
|
|
237
|
+
--rk-campaign-nebula-hi: #6d28d9;
|
|
238
|
+
--rk-on-campaign-nebula: #ffffff;
|
|
239
|
+
--rk-campaign-signal: #047857;
|
|
240
|
+
--rk-campaign-signal-hi: #047857;
|
|
241
|
+
--rk-on-campaign-signal: #ffffff;
|
|
242
|
+
--rk-campaign-solar: #a16207;
|
|
243
|
+
--rk-campaign-solar-hi: #a16207;
|
|
244
|
+
--rk-on-campaign-solar: #ffffff;
|
|
245
|
+
--rk-shadow-card: inset 0 1px 0 #ffffff, 0 1px 2px #0b10200f, 0 4px 16px #0b10200a;
|
|
246
|
+
--rk-shadow-float: 0 12px 32px #0b10201f, 0 2px 6px #0b102014;
|
|
247
|
+
--rk-shadow-dialog: 0 32px 80px #0b102033;
|
|
248
|
+
--rk-glow-brand: 0 0 0 1px #a8e01f, 0 8px 28px #a8e01f4d;
|
|
249
|
+
--rk-glow-select: 0 0 0 3px #a8e01f40;
|
|
250
|
+
--rk-glow-run: 0 0 0 3px #0e749026;
|
|
251
|
+
color-scheme: light;
|
|
252
|
+
}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/* Copied from design/reference/components.css by scripts/tokens-build.mjs. Do not edit here. */
|
|
2
|
+
/* req-kit reference component styles (plain CSS, rk-* classes).
|
|
3
|
+
Every value is a --rk-* token from design/reference/tokens.css. This is the spec for the review pages,
|
|
4
|
+
the docs theme and the examples in design/examples/. Load tokens.css first. Fonts: pages that may reach
|
|
5
|
+
Google Fonts load Geist / Geist Mono / Noto Sans SC; otherwise the font stacks fall back to system faces. */
|
|
6
|
+
[hidden]{display:none!important}
|
|
7
|
+
body{margin:0;background:var(--rk-canvas);color:var(--rk-text-primary);font-family:var(--rk-font-sans);font-size:14px;line-height:22px;-webkit-font-smoothing:antialiased}
|
|
8
|
+
.rk-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rk-space-3)}
|
|
9
|
+
.rk-col{display:flex;flex-direction:column;gap:var(--rk-space-3)}
|
|
10
|
+
.rk-cap{font-size:12px;line-height:18px;color:var(--rk-text-muted)}
|
|
11
|
+
.rk-muted{color:var(--rk-text-secondary)}
|
|
12
|
+
.rk-mono{font-family:var(--rk-font-mono)}
|
|
13
|
+
.ic{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
|
|
14
|
+
.ic-sm{width:14px;height:14px}.ic-lg{width:18px;height:18px}.ic-xl{width:24px;height:24px}
|
|
15
|
+
|
|
16
|
+
/* atmosphere */
|
|
17
|
+
.rk-aurora{background:
|
|
18
|
+
radial-gradient(ellipse 85% 55% at 50% -10%,var(--rk-aurora-brand),transparent 70%),
|
|
19
|
+
radial-gradient(ellipse 60% 40% at 88% 20%,var(--rk-aurora-data),transparent 65%),
|
|
20
|
+
radial-gradient(ellipse 50% 35% at 10% 50%,var(--rk-aurora-ai),transparent 60%),
|
|
21
|
+
var(--rk-canvas)}
|
|
22
|
+
.rk-dots{background-color:var(--rk-canvas);background-image:radial-gradient(var(--rk-canvas-grid) 1px,transparent 1px);background-size:20px 20px}
|
|
23
|
+
.rk-grad{background:linear-gradient(90deg,var(--rk-brand-300),var(--rk-brand-500));-webkit-background-clip:text;background-clip:text;color:transparent}
|
|
24
|
+
.rk-light .rk-grad,[data-theme="light"] .rk-grad{background:none;color:var(--rk-brand-text)}
|
|
25
|
+
@media (prefers-color-scheme:light){:root:not([data-theme="dark"]) .rk-grad{background:none;color:var(--rk-brand-text)}}
|
|
26
|
+
|
|
27
|
+
/* brand */
|
|
28
|
+
.rk-brand{display:inline-flex;align-items:center;gap:10px;font:800 16px/1 var(--rk-font-sans);letter-spacing:-.02em;color:var(--rk-text-primary);white-space:nowrap}
|
|
29
|
+
.rk-brand i{font-style:normal;color:var(--rk-brand-edge)}
|
|
30
|
+
.rk-brand svg{width:22px;height:22px;flex:none}
|
|
31
|
+
|
|
32
|
+
/* text primitives */
|
|
33
|
+
.rk-eyebrow{font:500 12px/16px var(--rk-font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--rk-brand-text)}
|
|
34
|
+
.rk-eyebrow--muted{color:var(--rk-text-muted)}
|
|
35
|
+
.rk-code{display:inline-flex;align-items:center;max-width:100%;height:20px;padding:0 6px;border-radius:var(--rk-radius-sm);background:var(--rk-surface-3);border:1px solid var(--rk-border-default);font:12px/1 var(--rk-font-mono);color:var(--rk-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}
|
|
36
|
+
.rk-chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:var(--rk-radius-pill);background:var(--rk-surface-2);border:1px solid var(--rk-border-default);font-size:13px;color:var(--rk-text-secondary)}
|
|
37
|
+
.rk-chip .ic{color:var(--rk-brand-text)}
|
|
38
|
+
.rk-version{display:inline-flex;align-items:center;gap:8px;height:28px;padding:0 12px 0 6px;border-radius:var(--rk-radius-pill);background:var(--rk-brand-tint);border:1px solid var(--rk-brand-edge);font:500 12px/1 var(--rk-font-mono);color:var(--rk-brand-text)}
|
|
39
|
+
.rk-version b{height:18px;padding:0 8px;border-radius:var(--rk-radius-pill);background:var(--rk-brand-500);color:var(--rk-on-brand);font-weight:600;line-height:18px}
|
|
40
|
+
.rk-kbd{font:500 11px/1 var(--rk-font-mono);padding:3px 6px;border-radius:var(--rk-radius-sm);border:1px solid var(--rk-border-default);background:var(--rk-surface-3);color:var(--rk-text-muted)}
|
|
41
|
+
|
|
42
|
+
/* Button */
|
|
43
|
+
.rk-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--rk-space-2);height:36px;padding:0 16px;border-radius:var(--rk-radius-md);border:1px solid var(--rk-border-default);background:var(--rk-surface-2);color:var(--rk-text-primary);font:600 14px/1 var(--rk-font-sans);cursor:pointer;box-shadow:var(--rk-shadow-card);transition:background .12s,border-color .12s,box-shadow .12s;text-decoration:none;white-space:nowrap}
|
|
44
|
+
.rk-btn:hover{border-color:var(--rk-border-strong);background:var(--rk-surface-3)}
|
|
45
|
+
.rk-btn:focus-visible{outline:2px solid var(--rk-focus-ring);outline-offset:2px}
|
|
46
|
+
.rk-btn--primary{background:var(--rk-brand-500);border-color:var(--rk-brand-edge);color:var(--rk-on-brand);box-shadow:0 0 0 3px var(--rk-brand-tint)}
|
|
47
|
+
.rk-btn--primary:hover{background:var(--rk-brand-400);border-color:var(--rk-brand-edge);color:var(--rk-on-brand)}
|
|
48
|
+
.rk-btn--primary:active{background:var(--rk-brand-600)}
|
|
49
|
+
.rk-btn--cta{box-shadow:var(--rk-glow-brand)}
|
|
50
|
+
.rk-btn--ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--rk-text-secondary)}
|
|
51
|
+
.rk-btn--ghost:hover{background:var(--rk-surface-3);color:var(--rk-text-primary);border-color:transparent}
|
|
52
|
+
.rk-btn--danger-outline{background:transparent;border-color:var(--rk-status-failed);color:var(--rk-status-failed);box-shadow:none}
|
|
53
|
+
.rk-btn--danger-outline:hover{background:var(--rk-failed-tint);border-color:var(--rk-status-failed)}
|
|
54
|
+
.rk-btn--sm{height:28px;padding:0 10px;font-size:12px}
|
|
55
|
+
.rk-btn--lg{height:44px;padding:0 20px;font-size:15px}
|
|
56
|
+
.rk-btn[disabled]{color:var(--rk-text-disabled);background:var(--rk-surface-2);border-color:var(--rk-border-subtle);box-shadow:none;cursor:not-allowed}
|
|
57
|
+
a:not(.rk-btn){color:var(--rk-brand-text)}
|
|
58
|
+
|
|
59
|
+
/* Badge: status is color + icon + word */
|
|
60
|
+
.rk-badge{display:inline-flex;align-items:center;gap:var(--rk-space-1);height:22px;padding:0 8px;border-radius:var(--rk-radius-sm);font:600 12px/1 var(--rk-font-sans);color:var(--fg);background:var(--bg);white-space:nowrap}
|
|
61
|
+
.rk-badge .ic{width:13px;height:13px}
|
|
62
|
+
.rk-badge--running{--fg:var(--rk-status-running);--bg:var(--rk-data-tint)}
|
|
63
|
+
.rk-badge--success{--fg:var(--rk-status-success);--bg:var(--rk-success-tint)}
|
|
64
|
+
.rk-badge--failed{--fg:var(--rk-status-failed);--bg:var(--rk-failed-tint)}
|
|
65
|
+
.rk-badge--warning{--fg:var(--rk-status-warning);--bg:var(--rk-warning-tint)}
|
|
66
|
+
.rk-badge--muted{--fg:var(--rk-text-muted);--bg:var(--rk-surface-3)}
|
|
67
|
+
.rk-badge--needs{--fg:var(--rk-brand-text);--bg:var(--rk-brand-tint)}
|
|
68
|
+
.rk-badge--ai{--fg:var(--rk-ai);--bg:var(--rk-ai-tint)}
|
|
69
|
+
.rk-badge--outline{--fg:var(--rk-text-secondary);--bg:transparent;box-shadow:inset 0 0 0 1px var(--rk-border-strong)}
|
|
70
|
+
.rk-spin{width:12px;height:12px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:rk-spin .8s linear infinite;box-sizing:border-box}
|
|
71
|
+
@keyframes rk-spin{to{transform:rotate(360deg)}}
|
|
72
|
+
|
|
73
|
+
/* Step track: where a requirement is */
|
|
74
|
+
.rk-track{display:flex;align-items:flex-start;gap:0;list-style:none;margin:0;padding:0;overflow-x:auto}
|
|
75
|
+
.rk-track li{flex:1;min-width:84px;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;text-align:center}
|
|
76
|
+
.rk-track li::before{content:"";position:absolute;top:13px;left:-50%;right:50%;height:2px;background:var(--rk-border-default)}
|
|
77
|
+
.rk-track li:first-child::before{display:none}
|
|
78
|
+
.rk-track li.is-done::before,.rk-track li.is-now::before,.rk-track li.is-needs::before{background:var(--rk-status-success)}
|
|
79
|
+
.rk-track__dot{position:relative;z-index:1;width:28px;height:28px;border-radius:var(--rk-radius-pill);display:grid;place-items:center;background:var(--rk-surface-2);color:var(--rk-text-muted);box-shadow:inset 0 0 0 1.5px var(--rk-border-strong);font:600 12px/1 var(--rk-font-mono)}
|
|
80
|
+
.rk-track li.is-done .rk-track__dot{background:var(--rk-success-tint);color:var(--rk-status-success);box-shadow:inset 0 0 0 1.5px var(--rk-status-success)}
|
|
81
|
+
.rk-track li.is-now .rk-track__dot{background:var(--rk-data-tint);color:var(--rk-status-running);box-shadow:inset 0 0 0 1.5px var(--rk-status-running),var(--rk-glow-run)}
|
|
82
|
+
.rk-track li.is-needs .rk-track__dot{background:var(--rk-brand-500);color:var(--rk-on-brand);box-shadow:0 0 0 1px var(--rk-brand-edge),var(--rk-glow-select)}
|
|
83
|
+
.rk-track b{font-size:13px;line-height:18px;font-weight:600}
|
|
84
|
+
.rk-track span{font-size:12px;line-height:16px;color:var(--rk-text-muted)}
|
|
85
|
+
.rk-track li.is-needs b{color:var(--rk-brand-text)}
|
|
86
|
+
|
|
87
|
+
/* Cards */
|
|
88
|
+
.rk-card{position:relative;box-sizing:border-box;border-radius:var(--rk-radius-xl);background:var(--rk-surface-2);border:1px solid var(--rk-border-default);box-shadow:var(--rk-shadow-card);padding:var(--rk-space-6);display:flex;flex-direction:column;gap:var(--rk-space-3);min-width:0}
|
|
89
|
+
.rk-card--sm{border-radius:var(--rk-radius-lg);padding:var(--rk-space-4)}
|
|
90
|
+
.rk-card.is-key{border-color:var(--rk-brand-edge);box-shadow:var(--rk-glow-select),var(--rk-shadow-card)}
|
|
91
|
+
.rk-card h3{margin:0;font-size:22px;line-height:30px;font-weight:600;text-wrap:balance}
|
|
92
|
+
.rk-card p{margin:0;color:var(--rk-text-secondary)}
|
|
93
|
+
.rk-card__label{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;height:24px;padding:0 10px;border-radius:var(--rk-radius-sm);background:var(--rk-brand-tint);color:var(--rk-brand-text);font:500 12px/1 var(--rk-font-mono)}
|
|
94
|
+
.rk-card__label--ai{background:var(--rk-ai-tint);color:var(--rk-ai)}
|
|
95
|
+
.rk-card__label--data{background:var(--rk-data-tint);color:var(--rk-data)}
|
|
96
|
+
.rk-bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--rk-space-4)}
|
|
97
|
+
.rk-span-4{grid-column:span 4}.rk-span-6{grid-column:span 6}.rk-span-8{grid-column:span 8}.rk-span-12{grid-column:span 12}.rk-span-3{grid-column:span 3}
|
|
98
|
+
@media (max-width:860px){.rk-bento{gap:var(--rk-space-3)}.rk-bento>*{grid-column:span 12}}
|
|
99
|
+
.rk-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;color:var(--rk-text-secondary);font-size:13px;line-height:22px}
|
|
100
|
+
.rk-list li{display:flex;gap:8px;align-items:flex-start}
|
|
101
|
+
.rk-list li .ic{color:var(--rk-status-success);margin-top:3px}
|
|
102
|
+
|
|
103
|
+
.rk-stat{box-sizing:border-box;border-radius:var(--rk-radius-lg);background:var(--rk-surface-2);border:1px solid var(--rk-border-default);box-shadow:var(--rk-shadow-card);padding:var(--rk-space-6) var(--rk-space-4);display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;position:relative;overflow:hidden}
|
|
104
|
+
.rk-stat::before{content:"";position:absolute;left:20%;right:20%;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--rk-brand-500),transparent)}
|
|
105
|
+
.rk-stat b{font-size:40px;line-height:44px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
|
|
106
|
+
.rk-stat strong{font-size:14px;line-height:20px;font-weight:600}
|
|
107
|
+
.rk-stat span{font-size:12px;line-height:18px;color:var(--rk-text-muted)}
|
|
108
|
+
|
|
109
|
+
.rk-section{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--rk-space-3);max-width:720px;margin:0 auto}
|
|
110
|
+
.rk-section h2{margin:0;font-size:40px;line-height:48px;font-weight:700;letter-spacing:-.01em;text-wrap:balance}
|
|
111
|
+
.rk-section p{margin:0;font-size:16px;line-height:28px;color:var(--rk-text-secondary);max-width:640px}
|
|
112
|
+
|
|
113
|
+
/* Terminal */
|
|
114
|
+
.rk-term{box-sizing:border-box;width:100%;max-width:600px;border-radius:var(--rk-radius-lg);background:var(--rk-surface-2);border:1px solid var(--rk-border-default);box-shadow:var(--rk-shadow-card);overflow:hidden;text-align:left}
|
|
115
|
+
.rk-term__tabs{display:flex;gap:2px;padding:6px 6px 0;border-bottom:1px solid var(--rk-border-subtle)}
|
|
116
|
+
.rk-term__tabs span{padding:6px 12px 8px;font:500 12px/1 var(--rk-font-mono);color:var(--rk-text-muted);border-bottom:2px solid transparent}
|
|
117
|
+
.rk-term__tabs span.is-on{color:var(--rk-text-primary);border-color:var(--rk-brand-500)}
|
|
118
|
+
.rk-term__body{display:flex;align-items:center;gap:var(--rk-space-3);padding:14px var(--rk-space-4);font:13px/22px var(--rk-font-mono)}
|
|
119
|
+
.rk-term__body i{font-style:normal;color:var(--rk-brand-text)}
|
|
120
|
+
.rk-term__body code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:inherit}
|
|
121
|
+
|
|
122
|
+
/* Callout */
|
|
123
|
+
.rk-callout{display:grid;grid-template-columns:18px 1fr;gap:var(--rk-space-3);padding:14px var(--rk-space-4);border-radius:var(--rk-radius-lg);background:var(--bg);font-size:14px;line-height:24px}
|
|
124
|
+
.rk-callout .ic{color:var(--fg);margin-top:3px}
|
|
125
|
+
.rk-callout b{display:block;color:var(--fg)}
|
|
126
|
+
.rk-callout--tip{--fg:var(--rk-status-success);--bg:var(--rk-success-tint)}
|
|
127
|
+
.rk-callout--note{--fg:var(--rk-data);--bg:var(--rk-data-tint)}
|
|
128
|
+
.rk-callout--warn{--fg:var(--rk-status-warning);--bg:var(--rk-warning-tint)}
|
|
129
|
+
.rk-callout--danger{--fg:var(--rk-status-failed);--bg:var(--rk-failed-tint)}
|
|
130
|
+
|
|
131
|
+
/* Review page skeleton */
|
|
132
|
+
.rk-top{position:sticky;top:0;z-index:var(--rk-z-sticky);display:flex;align-items:center;gap:var(--rk-space-3);min-height:48px;padding:6px max(16px,env(safe-area-inset-right,0px)) 6px max(16px,env(safe-area-inset-left,0px));background:var(--rk-surface-0);border-bottom:1px solid var(--rk-border-default);flex-wrap:wrap;box-sizing:border-box}
|
|
133
|
+
.rk-top__sep{width:1px;height:18px;background:var(--rk-border-default)}
|
|
134
|
+
.rk-top__title{font-size:14px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
135
|
+
.rk-top__spacer{flex:1}
|
|
136
|
+
.rk-banner{display:flex;align-items:center;gap:var(--rk-space-3);padding:10px var(--rk-space-4);border-radius:var(--rk-radius-lg);background:var(--bg,var(--rk-surface-2));color:var(--rk-text-primary);font-size:13px}
|
|
137
|
+
.rk-banner .ic{color:var(--fg)}
|
|
138
|
+
.rk-banner--ok{--fg:var(--rk-status-success);--bg:var(--rk-success-tint)}
|
|
139
|
+
.rk-banner--warn{--fg:var(--rk-status-warning);--bg:var(--rk-warning-tint)}
|
|
140
|
+
.rk-banner--run{--fg:var(--rk-status-running);--bg:var(--rk-data-tint)}
|
|
141
|
+
.rk-layout{display:grid;grid-template-columns:264px minmax(0,1fr);gap:var(--rk-space-6);max-width:1200px;margin:0 auto;padding:var(--rk-space-6) max(16px,env(safe-area-inset-right,0px)) 120px max(16px,env(safe-area-inset-left,0px));box-sizing:border-box}
|
|
142
|
+
.rk-side{position:sticky;top:64px;align-self:start;display:flex;flex-direction:column;gap:2px;padding:var(--rk-space-3);border-radius:var(--rk-radius-lg);background:var(--rk-surface-1);border:1px solid var(--rk-border-default);max-height:calc(100vh - 160px);overflow:auto}
|
|
143
|
+
.rk-side__group{font:500 11px/16px var(--rk-font-mono);letter-spacing:.14em;color:var(--rk-text-muted);padding:8px 10px 4px;text-transform:uppercase}
|
|
144
|
+
.rk-side a{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--rk-radius-md);font-size:13px;line-height:20px;color:var(--rk-text-secondary);text-decoration:none;min-width:0}
|
|
145
|
+
.rk-side a span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
|
|
146
|
+
.rk-side a:hover{background:var(--rk-surface-3);color:var(--rk-text-primary)}
|
|
147
|
+
.rk-side a.is-on{background:var(--rk-brand-tint);color:var(--rk-brand-text);font-weight:600}
|
|
148
|
+
.rk-side a .n{font:12px/1 var(--rk-font-mono);color:var(--rk-text-muted)}
|
|
149
|
+
.rk-main{min-width:0;display:flex;flex-direction:column;gap:var(--rk-space-4)}
|
|
150
|
+
.rk-head{display:flex;flex-direction:column;gap:6px}
|
|
151
|
+
.rk-head h1{margin:0;font-size:22px;line-height:30px;font-weight:600;text-wrap:balance}
|
|
152
|
+
.rk-head p{margin:0;color:var(--rk-text-secondary);max-width:68ch}
|
|
153
|
+
.rk-decide{position:fixed;left:0;right:0;bottom:0;z-index:var(--rk-z-sticky);background:var(--rk-surface-1);border-top:1px solid var(--rk-border-default);box-shadow:var(--rk-shadow-float);padding:12px max(16px,env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
|
|
154
|
+
.rk-decide__in{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:var(--rk-space-4);flex-wrap:wrap}
|
|
155
|
+
.rk-decide__sum{flex:1 1 220px;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:13px}
|
|
156
|
+
.rk-decide__sum b{font-size:14px}
|
|
157
|
+
.rk-decide__acts{display:flex;gap:var(--rk-space-2);flex-wrap:wrap}
|
|
158
|
+
.rk-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--rk-text-secondary);font-weight:600}
|
|
159
|
+
.rk-input{box-sizing:border-box;height:36px;padding:0 var(--rk-space-3);border-radius:var(--rk-radius-md);border:1px solid var(--rk-border-default);background:var(--rk-surface-3);color:var(--rk-text-primary);font:14px var(--rk-font-sans);min-width:0}
|
|
160
|
+
.rk-input:hover{border-color:var(--rk-border-strong)}
|
|
161
|
+
.rk-input:focus{outline:none;border-color:var(--rk-brand-edge);box-shadow:0 0 0 3px var(--rk-brand-tint)}
|
|
162
|
+
textarea.rk-input{height:auto;padding:8px var(--rk-space-3);line-height:22px;resize:vertical}
|
|
163
|
+
@media (max-width:960px){.rk-layout{grid-template-columns:minmax(0,1fr);padding-bottom:200px}.rk-side{position:static;max-height:none;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;padding:6px}.rk-side__group{display:none}.rk-side a{flex:none;max-width:240px}.rk-side a span{flex:none}}
|
|
164
|
+
@media (max-width:640px){.rk-top__hide-sm{display:none}.rk-top .rk-code{order:5;flex-basis:100%;max-width:100%;justify-content:flex-start}.rk-top__title{flex:1}.rk-decide__in{gap:var(--rk-space-3)}.rk-decide .rk-field{flex:1 1 40%}.rk-decide .rk-field .rk-input{width:100%!important}.rk-decide__acts{flex:1 1 100%}.rk-decide__acts .rk-btn{flex:1}}
|
|
165
|
+
|
|
166
|
+
/* Finding: AI review comment / a person's comment */
|
|
167
|
+
.rk-finding{display:flex;flex-direction:column;gap:8px;padding:12px var(--rk-space-4);border-radius:var(--rk-radius-lg);border:1px solid var(--rk-border-default);background:var(--rk-surface-2);font-size:14px;line-height:22px}
|
|
168
|
+
.rk-finding--ai{background:var(--rk-ai-tint);border-color:color-mix(in srgb,var(--rk-ai) 30%,transparent)}
|
|
169
|
+
.rk-finding--you{border-color:var(--rk-brand-edge)}
|
|
170
|
+
.rk-finding__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}
|
|
171
|
+
.rk-finding__who{display:inline-flex;align-items:center;gap:6px;font-weight:600}
|
|
172
|
+
.rk-finding--ai .rk-finding__who{color:var(--rk-ai)}
|
|
173
|
+
.rk-finding--you .rk-finding__who{color:var(--rk-brand-text)}
|
|
174
|
+
.rk-finding__id{font:12px/1 var(--rk-font-mono);color:var(--rk-text-muted)}
|
|
175
|
+
.rk-finding__where{font:12px/1 var(--rk-font-mono);color:var(--rk-data)}
|
|
176
|
+
.rk-finding__body{color:var(--rk-text-primary)}
|
|
177
|
+
.rk-finding__fix{font-size:13px;color:var(--rk-text-secondary)}
|
|
178
|
+
.rk-finding__acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
|
|
179
|
+
.rk-seg{display:inline-flex;padding:2px;gap:2px;border-radius:var(--rk-radius-md);background:var(--rk-surface-3);border:1px solid var(--rk-border-default)}
|
|
180
|
+
.rk-seg button{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:var(--rk-text-secondary);font:600 13px/1 var(--rk-font-sans);cursor:pointer}
|
|
181
|
+
.rk-seg button:hover{color:var(--rk-text-primary)}
|
|
182
|
+
.rk-seg button:focus-visible{outline:2px solid var(--rk-focus-ring);outline-offset:1px}
|
|
183
|
+
.rk-seg button[aria-pressed="true"]{background:var(--rk-surface-1);color:var(--rk-text-primary);box-shadow:var(--rk-shadow-card)}
|
|
184
|
+
.rk-seg button.is-fix[aria-pressed="true"]{background:var(--rk-failed-tint);color:var(--rk-status-failed)}
|
|
185
|
+
.rk-seg button.is-ok[aria-pressed="true"]{background:var(--rk-success-tint);color:var(--rk-status-success)}
|
|
186
|
+
.rk-seg button.is-pass[aria-pressed="true"]{background:var(--rk-success-tint);color:var(--rk-status-success)}
|
|
187
|
+
|
|
188
|
+
/* Diff block */
|
|
189
|
+
.rk-diff{border-radius:var(--rk-radius-lg);background:var(--rk-surface-2);border:1px solid var(--rk-border-default);overflow:hidden}
|
|
190
|
+
.rk-diff__head{display:flex;align-items:center;gap:var(--rk-space-3);padding:8px var(--rk-space-4);background:var(--rk-surface-3);border-bottom:1px solid var(--rk-border-default);flex-wrap:wrap}
|
|
191
|
+
.rk-diff__path{font:600 12.5px/18px var(--rk-font-mono);min-width:0;word-break:break-all}
|
|
192
|
+
.rk-diff__n{font:12px/1 var(--rk-font-mono)}
|
|
193
|
+
.rk-diff__n .a{color:var(--rk-diff-added)}.rk-diff__n .r{color:var(--rk-diff-removed)}
|
|
194
|
+
.rk-diff__body{overflow-x:auto}
|
|
195
|
+
.rk-diff table{border-collapse:collapse;width:100%;font:12.5px/20px var(--rk-font-mono)}
|
|
196
|
+
.rk-diff td{padding:0 10px;vertical-align:top;white-space:pre}
|
|
197
|
+
.rk-diff td.n{width:1%;min-width:40px;text-align:right;color:var(--rk-text-muted);user-select:none;font-variant-numeric:tabular-nums}
|
|
198
|
+
.rk-diff tr.hunk td{background:var(--rk-surface-3);color:var(--rk-text-muted);padding:2px 10px}
|
|
199
|
+
.rk-diff tr.add td{background:var(--rk-success-tint)}
|
|
200
|
+
.rk-diff tr.del td{background:var(--rk-failed-tint)}
|
|
201
|
+
.rk-diff tr.add td.s::before{content:"+";color:var(--rk-diff-added);margin-right:8px}
|
|
202
|
+
.rk-diff tr.del td.s::before{content:"\2212";color:var(--rk-diff-removed);margin-right:8px}
|
|
203
|
+
.rk-diff tr.ctx td.s::before{content:" ";margin-right:8px}
|
|
204
|
+
.rk-diff tr.note td{white-space:normal;padding:8px 12px 10px 60px;background:var(--rk-surface-2)}
|
|
205
|
+
|
|
206
|
+
/* Checklist item (acceptance) */
|
|
207
|
+
.rk-check{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--rk-space-3) var(--rk-space-4);padding:var(--rk-space-4) var(--rk-space-6) var(--rk-space-4) var(--rk-space-4);border-radius:var(--rk-radius-lg);background:var(--rk-surface-2);border:1px solid var(--rk-border-default);box-shadow:var(--rk-shadow-card)}
|
|
208
|
+
.rk-check.is-fail{border-color:var(--rk-status-failed)}
|
|
209
|
+
.rk-check.is-pass{border-color:color-mix(in srgb,var(--rk-status-success) 55%,transparent)}
|
|
210
|
+
.rk-check__id{font:600 12px/24px var(--rk-font-mono);color:var(--rk-text-muted);min-width:44px}
|
|
211
|
+
.rk-check__main{display:flex;flex-direction:column;gap:10px;min-width:0}
|
|
212
|
+
.rk-check__title{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;font-size:15px;line-height:24px;font-weight:600}
|
|
213
|
+
.rk-check dl{margin:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px var(--rk-space-4);font-size:13px;line-height:22px}
|
|
214
|
+
.rk-check dt{color:var(--rk-text-muted)}
|
|
215
|
+
.rk-check dd{margin:0;min-width:0}
|
|
216
|
+
.rk-check__evidence{font-size:12px;line-height:18px;color:var(--rk-text-secondary);padding:8px 10px;border-radius:var(--rk-radius-md);background:var(--rk-surface-3)}
|
|
217
|
+
|
|
218
|
+
/* Prototype review */
|
|
219
|
+
.rk-proto{position:relative;border-radius:var(--rk-radius-xl);overflow:hidden;border:1px solid var(--rk-border-default);box-shadow:var(--rk-shadow-card)}
|
|
220
|
+
.rk-proto__bar{display:flex;align-items:center;gap:var(--rk-space-3);padding:8px var(--rk-space-4);background:var(--rk-surface-1);border-bottom:1px solid var(--rk-border-default);font-size:12px;color:var(--rk-text-muted);flex-wrap:wrap}
|
|
221
|
+
.rk-proto__stage{padding:var(--rk-space-6);display:grid;place-items:center}
|
|
222
|
+
.rk-pick{position:relative;outline:2px solid var(--rk-brand-500);outline-offset:3px;border-radius:6px;box-shadow:0 0 0 9999px transparent}
|
|
223
|
+
.rk-pick::after{content:"";position:absolute;inset:-3px;border-radius:6px;background:var(--rk-brand-tint);pointer-events:none}
|
|
224
|
+
.rk-pin{position:absolute;width:24px;height:24px;border-radius:var(--rk-radius-pill);background:var(--rk-brand-500);color:var(--rk-on-brand);display:grid;place-items:center;font:700 12px/1 var(--rk-font-mono);box-shadow:var(--rk-shadow-float),0 0 0 2px var(--rk-canvas);z-index:2}
|
|
225
|
+
|
|
226
|
+
/* Inbox row (plugin) */
|
|
227
|
+
.rk-attn{display:flex;align-items:center;gap:var(--rk-space-4);padding:var(--rk-space-4);border-radius:var(--rk-radius-lg);background:var(--rk-surface-2);border:1px solid var(--rk-border-default);flex-wrap:wrap}
|
|
228
|
+
.rk-attn__ic{width:36px;height:36px;border-radius:var(--rk-radius-md);display:grid;place-items:center;background:var(--rk-brand-tint);color:var(--rk-brand-text);flex:none}
|
|
229
|
+
.rk-attn__txt{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:2px}
|
|
230
|
+
.rk-attn__txt b{font-size:15px;line-height:22px}
|
|
231
|
+
.rk-attn__txt span{font-size:13px;color:var(--rk-text-secondary)}
|
|
232
|
+
|
|
233
|
+
/* Diff behaviour (review page script) */
|
|
234
|
+
.rk-diff.folded .rk-diff__body{display:none}
|
|
235
|
+
.rk-diff.folded .rk-diff__head{border-bottom:0}
|
|
236
|
+
.rk-diff__head>.ic:first-child{transition:transform .12s}
|
|
237
|
+
.rk-diff.folded .rk-diff__head>.ic:first-child{transform:rotate(-90deg)}
|
|
238
|
+
.rk-diff__head[role="button"]{cursor:pointer}
|
|
239
|
+
.rk-diff tr.line{cursor:pointer}
|
|
240
|
+
.rk-diff tr.line:hover td{box-shadow:inset 0 1px 0 var(--rk-border-strong),inset 0 -1px 0 var(--rk-border-strong)}
|
|
241
|
+
.rk-flash,.rk-flash td{background:var(--rk-brand-tint)!important}
|
|
242
|
+
|
|
243
|
+
/* Toast */
|
|
244
|
+
.rk-toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:var(--rk-z-popover);max-width:min(640px,calc(100vw - 32px));box-sizing:border-box;display:flex;align-items:flex-start;gap:var(--rk-space-3);padding:12px var(--rk-space-4);border-radius:var(--rk-radius-lg);background:var(--rk-surface-2);border:1px solid var(--rk-border-default);box-shadow:var(--rk-shadow-float);font-size:14px;line-height:22px;white-space:pre-line}
|
|
245
|
+
|
|
246
|
+
/* Empty state */
|
|
247
|
+
.rk-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--rk-space-3);padding:var(--rk-space-12) var(--rk-space-6)}
|
|
248
|
+
.rk-empty .ic{color:var(--rk-text-muted)}
|
|
249
|
+
.rk-empty h3{margin:0;font-size:17px;line-height:26px;font-weight:600}
|
|
250
|
+
.rk-empty p{margin:0;color:var(--rk-text-secondary);max-width:360px}
|
|
251
|
+
|
|
252
|
+
@media (prefers-reduced-motion:reduce){.rk-spin{animation:none}*{transition:none!important}}
|
package/engine/src/review.ts
CHANGED
|
@@ -21,6 +21,8 @@ import { appendEvent, readIndex, requirementRef } from "./records.js";
|
|
|
21
21
|
import { readState, statePath } from "./state.js";
|
|
22
22
|
|
|
23
23
|
const ASSETS = path.join(ENGINE_DIR, "src", "review-assets");
|
|
24
|
+
/** 1.15: the design system's tokens, component styles and icons, shared by the three pages (copies made by scripts/tokens-build.mjs). */
|
|
25
|
+
const SHARED_ASSETS = new Set(["rk-tokens.css", "rk.css", "rk-icons.js"]);
|
|
24
26
|
const DEFAULT_PORT = 6781;
|
|
25
27
|
const IDLE_EXIT_MS = 4 * 60 * 60_000;
|
|
26
28
|
const MAX_BODY = 2_000_000;
|
|
@@ -251,7 +253,7 @@ function appCsp(): string {
|
|
|
251
253
|
const local = !host || host === "127.0.0.1" || host === "localhost" || host === "::1";
|
|
252
254
|
const custom = process.env.REQ_KIT_REVIEW_FRAME_ANCESTORS?.trim();
|
|
253
255
|
// 'self' always: the page shows the prototype in a frame of its own.
|
|
254
|
-
const ancestors = custom ? (custom.includes("'self'") || custom === "*" ? custom : `'self' ${custom}`) : local ? "'self' http://127.0.0.1:* http://localhost:*
|
|
256
|
+
const ancestors = custom ? (custom.includes("'self'") || custom === "*" ? custom : `'self' ${custom}`) : local ? "'self' http://127.0.0.1:* http://localhost:*" : "*";
|
|
255
257
|
return `default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; frame-ancestors ${ancestors}`;
|
|
256
258
|
}
|
|
257
259
|
const APP_CSP = appCsp();
|
|
@@ -369,7 +371,7 @@ export function createReviewServer(opts: ReviewServerOptions): http.Server {
|
|
|
369
371
|
}
|
|
370
372
|
if (rest.startsWith("code/")) return handleCodeReview(req, res, rest.slice("code/".length), entry, featureAbs, full);
|
|
371
373
|
if (rest === "") return sendFile(res, path.join(ASSETS, "app.html"));
|
|
372
|
-
if (rest === "app.js" || rest === "app.css") return sendFile(res, path.join(ASSETS, rest));
|
|
374
|
+
if (rest === "app.js" || rest === "app.css" || SHARED_ASSETS.has(rest)) return sendFile(res, path.join(ASSETS, rest));
|
|
373
375
|
if (rest.startsWith("proto/cur/")) return sendFile(res, inside(prototypeDir, rest.slice("proto/cur/".length)), PROTOTYPE_CSP);
|
|
374
376
|
if (rest.startsWith("proto/v/")) {
|
|
375
377
|
const [hash, ...file] = rest.slice("proto/v/".length).split("/");
|
|
@@ -441,7 +443,7 @@ export function createReviewServer(opts: ReviewServerOptions): http.Server {
|
|
|
441
443
|
async function handleCodeReview(req: http.IncomingMessage, res: http.ServerResponse, rest: string, entry: { repo: string; featureDir: string }, featureAbs: string, full: boolean) {
|
|
442
444
|
const draftFile = path.join(featureAbs, ".pipeline", "code-review", "draft.json");
|
|
443
445
|
if (rest === "") return sendFile(res, path.join(ASSETS, "code.html"));
|
|
444
|
-
if (rest === "code.js" || rest === "code.css") return sendFile(res, path.join(ASSETS, rest));
|
|
446
|
+
if (rest === "code.js" || rest === "code.css" || SHARED_ASSETS.has(rest)) return sendFile(res, path.join(ASSETS, rest));
|
|
445
447
|
if (rest === "api/info" && req.method === "GET") {
|
|
446
448
|
let draft: unknown = null;
|
|
447
449
|
try {
|
|
@@ -498,7 +500,7 @@ export function createReviewServer(opts: ReviewServerOptions): http.Server {
|
|
|
498
500
|
async function handleChecklist(req: http.IncomingMessage, res: http.ServerResponse, rest: string, entry: { repo: string; featureDir: string; key: string; project: string }, featureAbs: string, full: boolean) {
|
|
499
501
|
const checkDir = path.join(featureAbs, ".pipeline", "check");
|
|
500
502
|
if (rest === "") return sendFile(res, path.join(ASSETS, "check.html"));
|
|
501
|
-
if (rest === "check.js" || rest === "check.css") return sendFile(res, path.join(ASSETS, rest));
|
|
503
|
+
if (rest === "check.js" || rest === "check.css" || SHARED_ASSETS.has(rest)) return sendFile(res, path.join(ASSETS, rest));
|
|
502
504
|
if (rest === "api/info" && req.method === "GET") {
|
|
503
505
|
const state = readState(statePath(entry.repo, entry.featureDir));
|
|
504
506
|
let draft: unknown = { answers: [], reviewer: "" };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "paseo-req-kit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0-beta.1",
|
|
4
4
|
"description": "req-kit: a requirement-development workflow for Paseo. /req aligns a requirement in chat; the engine runs design, implementation, review and verification as Paseo agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|