From 6853ed71bc3d9128664e3dea9bcf64a03160171d Mon Sep 17 00:00:00 2001 From: MT-Mint <798521692@qq.com> Date: Thu, 23 Apr 2026 17:52:42 +0800 Subject: [PATCH] =?UTF-8?q?refactor(workspace):=20=E5=B0=86=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=20token=20=E9=87=8D=E5=91=BD=E5=90=8D=E4=B8=BA?= =?UTF-8?q?=E8=AF=AD=E4=B9=89=E5=8C=96=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/scripts/color-guard.mjs | 6 +- .../app/workspace/chats/[thread_id]/page.tsx | 26 ++--- frontend/src/app/workspace/layout.tsx | 2 +- .../src/components/ai-elements/message.tsx | 2 +- .../components/ai-elements/prompt-input.tsx | 4 +- .../src/components/ai-elements/suggestion.tsx | 4 +- frontend/src/components/ui/sidebar.tsx | 2 +- .../artifacts/artifact-file-detail.tsx | 78 ++++++------- .../artifacts/artifact-file-list.tsx | 4 +- .../components/workspace/dev-todo-list.tsx | 2 +- .../workspace/iframe-test-panel.tsx | 2 +- .../src/components/workspace/input-box.tsx | 10 +- .../workspace/messages/message-group.tsx | 2 +- .../workspace/messages/message-list.tsx | 2 +- .../settings/appearance-settings-page.tsx | 2 +- .../workspace/streaming-indicator.tsx | 6 +- .../src/components/workspace/todo-list.tsx | 2 +- .../components/workspace/workspace-header.tsx | 2 +- frontend/src/styles/globals.css | 108 +++++++++--------- frontend/src/styles/workspace-color-tokens.ts | 47 +++++--- 20 files changed, 162 insertions(+), 151 deletions(-) diff --git a/frontend/scripts/color-guard.mjs b/frontend/scripts/color-guard.mjs index 6fd5f276..e0b4cc2e 100644 --- a/frontend/scripts/color-guard.mjs +++ b/frontend/scripts/color-guard.mjs @@ -194,7 +194,7 @@ async function validateTokenRegistry() { const darkSeen = new Map(); for (const [name, value] of entries) { - if (!/^ws-[0-9a-f]{6,8}$/.test(name)) { + if (!/^ws-[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name)) { errors.push(`invalid token name "${name}"`); } const light = String(value.light ?? "").toLowerCase(); @@ -234,7 +234,7 @@ function collectWsVarsFromBlocks(css, selectorPattern) { const selector = block[1]?.trim() ?? ""; const body = block[2] ?? ""; if (!selectorPattern.test(selector)) continue; - for (const match of body.matchAll(/--ws-color-([0-9a-z]+)\s*:/g)) { + for (const match of body.matchAll(/--ws-color-([0-9a-z-]+)\s*:/g)) { vars.add(`ws-${match[1]}`); } } @@ -246,7 +246,7 @@ function validateGlobalsCoverage(tokenEntries) { const rootVars = collectWsVarsFromBlocks(css, /(^|,)\s*:root(\s|,|$)/); const darkVars = collectWsVarsFromBlocks(css, /(^|,)\s*\.dark(\s|,|$)/); const inlineVars = new Set( - [...css.matchAll(/--color-ws-([0-9a-z]+)\s*:/g)].map((match) => `ws-${match[1]}`), + [...css.matchAll(/--color-ws-([0-9a-z-]+)\s*:/g)].map((match) => `ws-${match[1]}`), ); const tokenNames = new Set(tokenEntries.map(([name]) => name)); diff --git a/frontend/src/app/workspace/chats/[thread_id]/page.tsx b/frontend/src/app/workspace/chats/[thread_id]/page.tsx index 1c2d7e5e..da97445c 100644 --- a/frontend/src/app/workspace/chats/[thread_id]/page.tsx +++ b/frontend/src/app/workspace/chats/[thread_id]/page.tsx @@ -96,7 +96,7 @@ export default function ChatPage() { sloganIndex % motivationSlogans.length ] ?? { text: t.chatPage.defaultSlogan, - color: "var(--color-ws-333333)", + color: "var(--color-ws-fg-primary)", }; const tickerCharacterList = useMemo(() => { const seen = new Set(); @@ -357,7 +357,7 @@ export default function ChatPage() { @@ -420,7 +420,7 @@ export default function ChatPage() {