diff --git a/apps/web_v1/scripts/structure-check.mjs b/apps/web_v1/scripts/structure-check.mjs index b2a844e..30e03b6 100644 --- a/apps/web_v1/scripts/structure-check.mjs +++ b/apps/web_v1/scripts/structure-check.mjs @@ -25,6 +25,16 @@ const requiredFiles = [ const failures = requiredFiles.filter((file) => !existsSync(file)).map((file) => `missing ${file}`) +const tokenSource = existsSync('src/styles/tokens.css') ? readFileSync('src/styles/tokens.css', 'utf8') : '' +for (const token of ['--color-primary: #165dff', '--font-sans', '--space-4: 16px']) { + if (!tokenSource.toLowerCase().includes(token)) failures.push(`missing token ${token}`) +} +for (const forbidden of ['森林Agent', 'AI智能体', '实时接口', '进度 60%']) { + for (const file of requiredFiles.filter((name) => name.endsWith('.tsx'))) { + if (readFileSync(file, 'utf8').includes(forbidden)) failures.push(`${file} contains forbidden copy ${forbidden}`) + } +} + if (existsSync('src/App.tsx')) { failures.push('legacy src/App.tsx should be removed after page split') } diff --git a/apps/web_v1/src/App.css b/apps/web_v1/src/App.css index 4862596..109cdff 100644 --- a/apps/web_v1/src/App.css +++ b/apps/web_v1/src/App.css @@ -1,30 +1,19 @@ -:root { - --senlin-primary: #165dff; - --senlin-bg: #f7f8fa; - --senlin-panel: #ffffff; - --senlin-border: #e5e6eb; - --senlin-text: #1d2129; - --senlin-muted: #86909c; - --senlin-soft-blue: #e8f3ff; - --senlin-status: #142033; -} - .app { min-height: 100vh; overflow-x: hidden; - background: var(--senlin-bg); - color: var(--senlin-text); + background: var(--color-bg); + color: var(--color-text); } .theme-dark { - --senlin-bg: #1e1e1e; - --senlin-panel: #252526; - --senlin-border: #3c3c3c; - --senlin-text: #cccccc; - --senlin-muted: #858585; - --senlin-soft-blue: rgba(0, 122, 204, 0.22); - --senlin-primary: #007acc; - --senlin-status: #007acc; + --color-bg: #1e1e1e; + --color-panel: #252526; + --color-border: #3c3c3c; + --color-text: #cccccc; + --color-muted: #858585; + --color-soft-blue: rgba(0, 122, 204, 0.22); + --color-primary: #007acc; + --color-status: #007acc; } .theme-dark .arco-layout, @@ -33,8 +22,8 @@ .theme-dark .arco-input, .theme-dark .arco-textarea, .theme-dark .arco-btn-secondary { - background: var(--senlin-panel); - color: var(--senlin-text); + background: var(--color-panel); + color: var(--color-text); } .theme-dark .arco-card, @@ -42,7 +31,7 @@ .theme-dark .arco-textarea, .theme-dark .arco-btn, .theme-dark .arco-tabs-header-title { - border-color: var(--senlin-border); + border-color: var(--color-border); } .theme-dark .arco-typography, @@ -53,11 +42,11 @@ .theme-dark .arco-typography h4, .theme-dark .arco-typography h5, .theme-dark .arco-typography h6 { - color: var(--senlin-text); + color: var(--color-text); } .theme-dark .arco-typography-secondary { - color: var(--senlin-muted); + color: var(--color-muted); } .login-screen { @@ -74,8 +63,8 @@ width: min(1180px, 96vw); min-height: 430px; overflow: hidden; - border-color: var(--senlin-border); - border-radius: 8px; + border-color: var(--color-border); + border-radius: var(--radius-control); box-shadow: 0 12px 36px rgba(29, 33, 41, 0.08); } @@ -94,13 +83,13 @@ .login-brand-panel, .login-form-panel { - border-right: 1px solid var(--senlin-border); + border-right: 1px solid var(--color-border); } .login-brand-panel { display: grid; align-content: center; - gap: 12px; + gap: var(--space-3); } .brand-lockup { @@ -110,7 +99,7 @@ } .brand-lockup.large { - gap: 16px; + gap: var(--space-4); } .brand-icon { @@ -168,7 +157,7 @@ height: 14px; display: inline-block; border-radius: 3px; - background: var(--senlin-primary); + background: var(--color-primary); box-shadow: inset 0 0 0 3px white; } @@ -200,7 +189,7 @@ .value-point { display: grid; grid-template-columns: 42px 1fr; - gap: 12px; + gap: var(--space-3); align-items: center; } @@ -210,8 +199,8 @@ display: grid; place-items: center; border-radius: 999px; - background: var(--senlin-soft-blue); - color: var(--senlin-primary); + background: var(--color-soft-blue); + color: var(--color-primary); font-size: 22px; } @@ -225,7 +214,7 @@ display: grid; grid-template-rows: 58px minmax(0, 1fr) 32px; overflow: hidden; - background: var(--senlin-bg); + background: var(--color-bg); } .topbar { @@ -235,15 +224,15 @@ gap: 18px; height: 58px; padding: 0 16px; - border-bottom: 1px solid var(--senlin-border); - background: var(--senlin-panel); + border-bottom: 1px solid var(--color-border); + background: var(--color-panel); } .global-search { display: grid; grid-template-columns: minmax(0, 1fr) 76px; height: 42px; - border: 1px solid var(--senlin-primary); + border: 1px solid var(--color-primary); border-radius: 6px; overflow: hidden; box-shadow: 0 0 0 2px rgba(22, 93, 255, 0.08); @@ -253,7 +242,7 @@ height: 40px; border: 0; border-radius: 0; - background: var(--senlin-panel); + background: var(--color-panel); } .global-search .arco-btn { @@ -303,10 +292,10 @@ display: flex; flex-direction: column; align-items: center; - gap: 12px; + gap: var(--space-3); overflow: hidden; - border-right: 1px solid var(--senlin-border); - background: var(--senlin-panel); + border-right: 1px solid var(--color-border); + background: var(--color-panel); } .project-rail .arco-layout-sider-children { @@ -316,7 +305,7 @@ display: flex; flex-direction: column; align-items: center; - gap: 12px; + gap: var(--space-3); overflow: hidden !important; padding: 14px 24px; } @@ -334,7 +323,7 @@ place-items: center; padding: 0; border: 0; - border-radius: 8px; + border-radius: var(--radius-control); background: transparent; cursor: pointer; } @@ -351,12 +340,12 @@ height: 48px !important; min-width: 48px; padding: 0 !important; - border-radius: 8px; + border-radius: var(--radius-control); } .dashboard-button.active { - border-color: var(--senlin-primary); - background: var(--senlin-primary); + border-color: var(--color-primary); + background: var(--color-primary); color: white; } @@ -373,8 +362,8 @@ .project-button { width: 48px; height: 48px; - border: 1px solid var(--senlin-border); - border-radius: 8px; + border: 1px solid var(--color-border); + border-radius: var(--radius-control); background: color-mix(in srgb, var(--project-color) 9%, white); color: var(--project-color); font-weight: 700; @@ -388,7 +377,7 @@ } .project-badge .arco-badge-number { - box-shadow: 0 0 0 2px var(--senlin-panel); + box-shadow: 0 0 0 2px var(--color-panel); } .project-badge.urgent .arco-badge-number { @@ -400,10 +389,10 @@ overflow-x: hidden; overflow-y: auto; scrollbar-width: none; - scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; - padding: 16px; - border-right: 1px solid var(--senlin-border); - background: var(--senlin-panel); + scrollbar-color: color-mix(in srgb, var(--color-muted) 45%, transparent) transparent; + padding: var(--space-4); + border-right: 1px solid var(--color-border); + background: var(--color-panel); } .project-title { @@ -423,19 +412,19 @@ display: inline-grid; place-items: center; border-radius: 6px; - background: var(--senlin-soft-blue); - color: var(--senlin-primary); + background: var(--color-soft-blue); + color: var(--color-primary); font-size: 12px; font-weight: 700; } .channel-list { display: grid; - gap: 4px; + gap: var(--space-1); overflow-x: hidden; overflow-y: auto; scrollbar-width: none; - scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; + scrollbar-color: color-mix(in srgb, var(--color-muted) 45%, transparent) transparent; } .channel-button { @@ -444,19 +433,19 @@ display: flex; align-items: center; justify-content: space-between; - gap: 8px; + gap: var(--space-2); border: 0; border-radius: 6px; background: transparent; - color: var(--senlin-text); + color: var(--color-text); padding: 7px 10px; cursor: pointer; } .channel-button.active { - background: var(--senlin-soft-blue); - color: var(--senlin-primary); - box-shadow: inset 3px 0 0 var(--senlin-primary); + background: var(--color-soft-blue); + color: var(--color-primary); + box-shadow: inset 3px 0 0 var(--color-primary); } .channel-badge-muted .arco-badge-number { @@ -468,7 +457,7 @@ min-width: 0; display: flex; align-items: center; - gap: 8px; + gap: var(--space-2); } .channel-left .arco-typography { @@ -480,7 +469,7 @@ .recent-sessions, .tag-cloud { display: grid; - gap: 8px; + gap: var(--space-2); } .section-title { @@ -510,7 +499,7 @@ } .recent-sessions button:hover { - background: var(--senlin-soft-blue); + background: var(--color-soft-blue); } .stage { @@ -519,14 +508,14 @@ overflow-x: hidden; overflow-y: auto; scrollbar-width: none; - scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; - padding: 16px; - background: var(--senlin-bg); + scrollbar-color: color-mix(in srgb, var(--color-muted) 45%, transparent) transparent; + padding: var(--space-4); + background: var(--color-bg); } .overview-page { display: grid; - gap: 12px; + gap: var(--space-3); } .overview-head { @@ -534,7 +523,7 @@ align-items: end; justify-content: space-between; padding-bottom: 10px; - border-bottom: 1px solid var(--senlin-border); + border-bottom: 1px solid var(--color-border); } .overview-head h4 { @@ -547,8 +536,8 @@ align-items: flex-end; justify-content: space-between; gap: 14px; - border: 1px solid var(--senlin-border); - border-radius: 8px; + border: 1px solid var(--color-border); + border-radius: var(--radius-control); background-position: center; background-size: cover; color: #fff; @@ -570,7 +559,7 @@ display: inline-grid; place-items: center; border: 1px solid rgb(255 255 255 / 42%); - border-radius: 8px; + border-radius: var(--radius-control); background: rgb(255 255 255 / 18%); color: #fff; font-size: 16px; @@ -597,7 +586,7 @@ max-width: min(520px, 42vw); display: grid; justify-items: end; - gap: 4px; + gap: var(--space-1); } .project-overview-share .arco-typography { @@ -646,7 +635,7 @@ } .queue-section .arco-card-body { - padding: 12px; + padding: var(--space-3); } .workspace-explore-page { @@ -664,12 +653,12 @@ .explore-source-card.arco-card:hover, .explore-source-card.arco-card.active { - border-color: color-mix(in srgb, var(--senlin-primary) 52%, var(--senlin-border)); - box-shadow: 0 8px 20px color-mix(in srgb, var(--senlin-primary) 10%, transparent); + border-color: color-mix(in srgb, var(--color-primary) 52%, var(--color-border)); + box-shadow: 0 8px 20px color-mix(in srgb, var(--color-primary) 10%, transparent); } .explore-source-card.arco-card.active { - background: color-mix(in srgb, var(--senlin-primary) 7%, var(--senlin-panel)); + background: color-mix(in srgb, var(--color-primary) 7%, var(--color-panel)); } .explore-source-card .arco-card-body { @@ -687,7 +676,7 @@ flex: 0 0 auto; display: inline-grid; place-items: center; - border-radius: 8px; + border-radius: var(--radius-control); font-size: 16px; } @@ -722,7 +711,7 @@ min-width: 0; display: flex; align-items: baseline; - gap: 8px; + gap: var(--space-2); } .explore-source-name { @@ -750,7 +739,7 @@ min-height: 0; display: grid; grid-template-columns: minmax(320px, 34%) minmax(520px, 1fr); - gap: 12px; + gap: var(--space-3); } .explore-article-list.queue-section .arco-card-body, @@ -766,7 +755,7 @@ justify-content: space-between; gap: 10px; padding: 0 12px; - border-bottom: 1px solid var(--senlin-border); + border-bottom: 1px solid var(--color-border); } .explore-list-header h5 { @@ -798,9 +787,9 @@ grid-template-columns: 30px minmax(0, 1fr); gap: 10px; border: 0; - border-bottom: 1px solid var(--senlin-border); + border-bottom: 1px solid var(--color-border); background: transparent; - color: var(--senlin-text); + color: var(--color-text); padding: 9px 12px; text-align: left; cursor: pointer; @@ -808,7 +797,7 @@ .explore-article-item:hover, .explore-article-item.active { - background: color-mix(in srgb, var(--senlin-primary) 8%, var(--senlin-panel)); + background: color-mix(in srgb, var(--color-primary) 8%, var(--color-panel)); } .explore-source-logo { @@ -855,7 +844,7 @@ .explore-article-title { display: -webkit-box; overflow: hidden; - color: var(--senlin-text); + color: var(--color-text); font-size: 14px; font-weight: 700; line-height: 1.35; @@ -871,10 +860,10 @@ min-height: 46px; display: flex; align-items: center; - gap: 16px; + gap: var(--space-4); justify-content: flex-end; padding: 8px 14px 8px 18px; - border-bottom: 1px solid var(--senlin-border); + border-bottom: 1px solid var(--color-border); } .explore-detail-toolbar h5 { @@ -894,7 +883,7 @@ .explore-article-body h2 { margin: 0; - color: var(--senlin-text); + color: var(--color-text); font-size: 28px; line-height: 1.35; } @@ -905,7 +894,7 @@ .explore-article-content { margin: 0; - color: var(--senlin-text); + color: var(--color-text); font-size: 16px; line-height: 1.9; } @@ -923,22 +912,22 @@ display: inline-grid; place-items: center; margin-left: -8px; - border: 2px solid var(--senlin-panel); + border: 2px solid var(--color-panel); border-radius: 999px; - background: var(--senlin-soft-blue); + background: var(--color-soft-blue); color: #fff; font-size: 11px; font-weight: 700; } .explore-avatar-strip span:last-child { - color: var(--senlin-muted); + color: var(--color-muted); } .explore-ai-summary.arco-card { margin-top: 34px; - border-color: color-mix(in srgb, var(--senlin-primary) 14%, var(--senlin-border)); - border-radius: 8px; + border-color: color-mix(in srgb, var(--color-primary) 14%, var(--color-border)); + border-radius: var(--radius-control); box-shadow: 0 8px 24px rgba(29, 33, 41, 0.06); } @@ -956,15 +945,15 @@ .explore-ai-summary .arco-typography { margin: 0; - color: var(--senlin-text); + color: var(--color-text); font-size: 15px; line-height: 1.8; } .explore-article-body blockquote { margin: 38px 0 0; - border-left: 4px solid var(--senlin-border); - color: var(--senlin-text); + border-left: 4px solid var(--color-border); + color: var(--color-text); padding: 4px 0 4px 18px; font-size: 17px; font-style: italic; @@ -1036,11 +1025,11 @@ display: grid; grid-template-columns: minmax(220px, 1.25fr) minmax(220px, 1fr) 82px 70px 82px; align-items: center; - gap: 12px; + gap: var(--space-3); border: 0; - border-top: 1px solid var(--senlin-border); + border-top: 1px solid var(--color-border); background: transparent; - color: var(--senlin-text); + color: var(--color-text); padding: 9px 0; text-align: left; cursor: pointer; @@ -1051,13 +1040,13 @@ } .data-row:hover { - background: color-mix(in srgb, var(--senlin-primary) 5%, transparent); + background: color-mix(in srgb, var(--color-primary) 5%, transparent); } .data-row span, .data-row time { overflow: hidden; - color: var(--senlin-muted); + color: var(--color-muted); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; @@ -1066,8 +1055,8 @@ .data-row .row-title { display: flex; align-items: center; - gap: 8px; - color: var(--senlin-text); + gap: var(--space-2); + color: var(--color-text); font-weight: 600; } @@ -1078,7 +1067,7 @@ .overview-task-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); - gap: 12px; + gap: var(--space-3); padding-top: 6px; } @@ -1089,10 +1078,10 @@ flex-direction: column; justify-content: space-between; gap: 10px; - border: 1px solid var(--senlin-border); + border: 1px solid var(--color-border); border-radius: 6px; - background: var(--senlin-surface); - color: var(--senlin-text); + background: var(--color-panel); + color: var(--color-text); padding: 14px; text-align: left; cursor: pointer; @@ -1100,25 +1089,25 @@ } .overview-task-card:hover { - border-color: color-mix(in srgb, var(--senlin-primary) 42%, var(--senlin-border)); - box-shadow: 0 8px 22px color-mix(in srgb, var(--senlin-primary) 12%, transparent); + border-color: color-mix(in srgb, var(--color-primary) 42%, var(--color-border)); + box-shadow: 0 8px 22px color-mix(in srgb, var(--color-primary) 12%, transparent); transform: translateY(-1px); } .overview-task-card.completed { - background: color-mix(in srgb, var(--senlin-surface) 92%, #00b42a); + background: color-mix(in srgb, var(--color-panel) 92%, #00b42a); } .overview-task-title { min-width: 0; display: flex; align-items: center; - gap: 8px; + gap: var(--space-2); font-weight: 600; } .overview-task-title svg { - color: var(--senlin-primary); + color: var(--color-primary); } .overview-task-meta { @@ -1126,14 +1115,14 @@ flex-wrap: wrap; align-items: center; gap: 8px 10px; - color: var(--senlin-muted); + color: var(--color-muted); font-size: 12px; } .workspace-task-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); - gap: 12px; + gap: var(--space-3); padding-top: 8px; } @@ -1143,10 +1132,10 @@ flex-direction: column; justify-content: space-between; gap: 14px; - border: 1px solid var(--senlin-border); + border: 1px solid var(--color-border); border-radius: 6px; - background: var(--senlin-surface); - color: var(--senlin-text); + background: var(--color-panel); + color: var(--color-text); padding: 14px; text-align: left; cursor: pointer; @@ -1154,20 +1143,20 @@ } .workspace-task-card:hover { - border-color: color-mix(in srgb, var(--senlin-primary) 42%, var(--senlin-border)); - box-shadow: 0 8px 22px color-mix(in srgb, var(--senlin-primary) 12%, transparent); + border-color: color-mix(in srgb, var(--color-primary) 42%, var(--color-border)); + box-shadow: 0 8px 22px color-mix(in srgb, var(--color-primary) 12%, transparent); transform: translateY(-1px); } .workspace-task-title { display: flex; align-items: center; - gap: 8px; + gap: var(--space-2); font-weight: 600; } .workspace-task-title svg { - color: var(--senlin-primary); + color: var(--color-primary); } .workspace-task-main .arco-typography { @@ -1179,14 +1168,14 @@ flex-wrap: wrap; align-items: center; gap: 8px 10px; - color: var(--senlin-muted); + color: var(--color-muted); font-size: 12px; } .workspace-task-meta span { display: inline-flex; align-items: center; - gap: 4px; + gap: var(--space-1); } .ai-row { @@ -1213,11 +1202,11 @@ display: grid; grid-template-columns: 56px minmax(0, 1fr); align-items: center; - gap: 12px; + gap: var(--space-3); border: 1px solid transparent; border-radius: 3px; background: transparent; - color: var(--senlin-text); + color: var(--color-text); padding: 8px 10px; text-align: left; cursor: pointer; @@ -1232,8 +1221,8 @@ .theme-dark .project-file-tile:hover, .theme-dark .project-file-tile:focus-visible { - border-color: color-mix(in srgb, var(--senlin-primary) 56%, var(--senlin-border)); - background: color-mix(in srgb, var(--senlin-primary) 18%, var(--senlin-surface)); + border-color: color-mix(in srgb, var(--color-primary) 56%, var(--color-border)); + background: color-mix(in srgb, var(--color-primary) 18%, var(--color-panel)); } .project-file-icon { @@ -1265,7 +1254,7 @@ .project-file-icon.doc, .project-file-icon.note { background: #e8f3ff; - color: #165dff; + color: var(--color-primary); } .project-file-icon.image { @@ -1289,14 +1278,14 @@ } .project-file-name { - color: var(--senlin-text); + color: var(--color-text); font-size: 14px; font-weight: 500; } .project-file-type, .project-file-meta { - color: var(--senlin-muted); + color: var(--color-muted); font-size: 12px; } @@ -1313,7 +1302,7 @@ min-width: 0; display: grid; grid-template-columns: minmax(260px, 0.42fr) minmax(360px, 0.58fr); - gap: 12px; + gap: var(--space-3); } .mail-list, @@ -1328,11 +1317,11 @@ .task-card-button { width: 100%; display: grid; - gap: 4px; + gap: var(--space-1); border: 0; - border-top: 1px solid var(--senlin-border); + border-top: 1px solid var(--color-border); background: transparent; - color: var(--senlin-text); + color: var(--color-text); padding: 10px 0; text-align: left; cursor: pointer; @@ -1348,7 +1337,7 @@ .mail-item:hover, .ai-session:hover, .task-card-button:hover { - background: color-mix(in srgb, var(--senlin-primary) 6%, transparent); + background: color-mix(in srgb, var(--color-primary) 6%, transparent); } .mail-item span:first-child, @@ -1356,7 +1345,7 @@ min-width: 0; display: flex; align-items: center; - gap: 8px; + gap: var(--space-2); font-weight: 600; } @@ -1364,12 +1353,12 @@ display: flex; align-items: center; justify-content: space-between; - gap: 8px; + gap: var(--space-2); } .mail-item time, .ai-session time { - color: var(--senlin-muted); + color: var(--color-muted); font-size: 12px; } @@ -1380,13 +1369,13 @@ .task-detail-progress { display: grid; - gap: 8px; + gap: var(--space-2); } .task-detail-summary { display: grid; - gap: 8px; - border-top: 1px solid var(--senlin-border); + gap: var(--space-2); + border-top: 1px solid var(--color-border); padding-top: 14px; } @@ -1407,7 +1396,7 @@ grid-template-columns: 280px minmax(0, 1fr); gap: 0; margin: -12px -16px -16px; - background: var(--senlin-panel); + background: var(--color-panel); } .agent-session-list.queue-section.arco-card, @@ -1421,7 +1410,7 @@ .agent-session-list.queue-section.arco-card { border-left: 0; - background: color-mix(in srgb, var(--senlin-bg) 72%, var(--senlin-panel)); + background: color-mix(in srgb, var(--color-bg) 72%, var(--color-panel)); } .agent-session-list.queue-section .arco-card-body { @@ -1435,10 +1424,10 @@ .agent-new-chat.arco-btn { height: 42px; justify-content: center; - border: 1px solid var(--senlin-border); + border: 1px solid var(--color-border); border-radius: 999px; - background: var(--senlin-panel); - color: var(--senlin-text); + background: var(--color-panel); + color: var(--color-text); font-size: 14px; font-weight: 600; box-shadow: 0 4px 14px rgba(29, 33, 41, 0.08); @@ -1461,7 +1450,7 @@ .agent-session-group { display: grid; - gap: 12px; + gap: var(--space-3); } .agent-session-group > .arco-typography { @@ -1474,7 +1463,7 @@ border: 0; border-radius: 6px; background: transparent; - color: var(--senlin-text); + color: var(--color-text); padding: 5px 0; text-align: left; text-overflow: ellipsis; @@ -1486,7 +1475,7 @@ .agent-session:hover, .agent-session.active { - color: var(--senlin-primary); + color: var(--color-primary); } .agent-chat-panel.queue-section .arco-card-body { @@ -1505,7 +1494,7 @@ .agent-chat-main h2 { margin: 0; - color: var(--senlin-text); + color: var(--color-text); font-size: 24px; font-weight: 800; } @@ -1513,12 +1502,12 @@ .agent-composer { width: min(860px, calc(100% - 80px)); display: grid; - gap: 12px; + gap: var(--space-3); justify-self: center; margin: 0 0 28px; - border: 1px solid var(--senlin-border); + border: 1px solid var(--color-border); border-radius: 24px; - background: var(--senlin-panel); + background: var(--color-panel); padding: 18px 16px 14px; box-shadow: 0 16px 40px rgba(29, 33, 41, 0.08); } @@ -1530,7 +1519,7 @@ } .agent-composer textarea { - color: var(--senlin-text); + color: var(--color-text); font-size: 15px; } @@ -1542,15 +1531,15 @@ display: flex; align-items: center; justify-content: space-between; - gap: 12px; + gap: var(--space-3); } .agent-model-chip.arco-btn { height: 36px; - border-color: color-mix(in srgb, var(--senlin-primary) 32%, var(--senlin-border)); + border-color: color-mix(in srgb, var(--color-primary) 32%, var(--color-border)); border-radius: 999px; - background: var(--senlin-soft-blue); - color: var(--senlin-primary); + background: var(--color-soft-blue); + color: var(--color-primary); font-weight: 700; } @@ -1575,35 +1564,35 @@ gap: 10px; margin-top: 16px; padding-top: 12px; - border-top: 1px solid var(--senlin-border); + border-top: 1px solid var(--color-border); } .task-board { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 12px; + gap: var(--space-3); } .task-lane .arco-card-body { display: grid; gap: 10px; - padding: 12px; + padding: var(--space-3); } .task-card-button { - border: 1px solid var(--senlin-border); + border: 1px solid var(--color-border); border-radius: 6px; padding: 10px; } .task-tag-section .arco-card-body { - padding: 12px; + padding: var(--space-3); } .task-plan-card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); - gap: 12px; + gap: var(--space-3); } .task-plan-card { @@ -1612,10 +1601,10 @@ flex-direction: column; justify-content: space-between; gap: 10px; - border: 1px solid var(--senlin-border); + border: 1px solid var(--color-border); border-radius: 6px; - background: var(--senlin-surface); - color: var(--senlin-text); + background: var(--color-panel); + color: var(--color-text); padding: 14px; text-align: left; cursor: pointer; @@ -1623,8 +1612,8 @@ } .task-plan-card:hover { - border-color: color-mix(in srgb, var(--senlin-primary) 42%, var(--senlin-border)); - box-shadow: 0 8px 22px color-mix(in srgb, var(--senlin-primary) 12%, transparent); + border-color: color-mix(in srgb, var(--color-primary) 42%, var(--color-border)); + box-shadow: 0 8px 22px color-mix(in srgb, var(--color-primary) 12%, transparent); transform: translateY(-1px); } @@ -1633,14 +1622,14 @@ min-width: 0; display: flex; align-items: center; - gap: 8px; - color: var(--senlin-text); + gap: var(--space-2); + color: var(--color-text); font-weight: 600; } .task-plan-title svg, .completed-plan-title svg { - color: var(--senlin-primary); + color: var(--color-primary); } .task-plan-meta { @@ -1648,7 +1637,7 @@ flex-wrap: wrap; align-items: center; gap: 8px 10px; - color: var(--senlin-muted); + color: var(--color-muted); font-size: 12px; } @@ -1659,9 +1648,9 @@ align-items: center; gap: 14px; border: 0; - border-top: 1px solid var(--senlin-border); + border-top: 1px solid var(--color-border); background: transparent; - color: var(--senlin-muted); + color: var(--color-muted); padding: 10px 0; text-align: left; cursor: pointer; @@ -1672,7 +1661,7 @@ } .completed-plan-row:hover { - background: color-mix(in srgb, var(--senlin-primary) 5%, transparent); + background: color-mix(in srgb, var(--color-primary) 5%, transparent); } .completed-plan-main { @@ -1690,7 +1679,7 @@ .chat-thread { display: grid; - gap: 12px; + gap: var(--space-3); } .chat-message { @@ -1702,19 +1691,19 @@ .chat-message p { margin: 0; padding: 10px 12px; - border: 1px solid var(--senlin-border); + border: 1px solid var(--color-border); border-radius: 6px; - background: var(--senlin-soft-blue); + background: var(--color-soft-blue); } .chat-message.user p { - background: var(--senlin-panel); + background: var(--color-panel); } .folder-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 12px; + gap: var(--space-3); } .folder-card .arco-card-body { @@ -1726,7 +1715,7 @@ } .cron-summary .arco-card-body { - padding: 12px; + padding: var(--space-3); } .channel-editor-card .arco-card-body { @@ -1734,7 +1723,7 @@ } .action-modal .arco-modal-content { - border-radius: 8px; + border-radius: var(--radius-control); } .action-form { @@ -1754,18 +1743,18 @@ .native-file-input { width: 100%; box-sizing: border-box; - border: 1px solid var(--senlin-border); + border: 1px solid var(--color-border); border-radius: 6px; - background: var(--senlin-panel); - color: var(--senlin-text); - padding: 8px; + background: var(--color-panel); + color: var(--color-text); + padding: var(--space-2); } .theme-dark .arco-modal, .theme-dark .arco-modal-header, .theme-dark .arco-modal-content { - background: var(--senlin-panel); - color: var(--senlin-text); + background: var(--color-panel); + color: var(--color-text); } .inspector { @@ -1773,10 +1762,10 @@ overflow-x: hidden; overflow-y: auto; scrollbar-width: none; - scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; + scrollbar-color: color-mix(in srgb, var(--color-muted) 45%, transparent) transparent; padding: 0 16px 16px; - border-left: 1px solid var(--senlin-border); - background: var(--senlin-panel); + border-left: 1px solid var(--color-border); + background: var(--color-panel); } .channel-sidebar:hover, @@ -1815,7 +1804,7 @@ .inspector .arco-tabs-content::-webkit-scrollbar-thumb, .property-list::-webkit-scrollbar-thumb { border-radius: 999px; - background: color-mix(in srgb, var(--senlin-muted) 45%, transparent); + background: color-mix(in srgb, var(--color-muted) 45%, transparent); } .channel-sidebar::-webkit-scrollbar-track, @@ -1835,7 +1824,7 @@ overflow-x: hidden; overflow-y: auto; scrollbar-width: none; - scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; + scrollbar-color: color-mix(in srgb, var(--color-muted) 45%, transparent) transparent; } .discussion-panel { @@ -1861,7 +1850,7 @@ .discussion-item p { margin: 4px 0 0; - color: var(--senlin-text); + color: var(--color-text); } .discussion-name { @@ -1872,10 +1861,10 @@ position: sticky; bottom: 0; display: grid; - gap: 8px; + gap: var(--space-2); margin-top: 16px; padding-top: 12px; - background: var(--senlin-panel); + background: var(--color-panel); } .comment-actions { @@ -1893,14 +1882,14 @@ overflow-x: hidden; overflow-y: auto; scrollbar-width: none; - scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; + scrollbar-color: color-mix(in srgb, var(--color-muted) 45%, transparent) transparent; } .property-row { display: flex; justify-content: space-between; padding: 10px 0; - border-bottom: 1px solid var(--senlin-border); + border-bottom: 1px solid var(--color-border); } .statusbar { @@ -1911,7 +1900,7 @@ gap: 20px; padding: 0 16px; border-top: 1px solid rgba(255, 255, 255, 0.12); - background: var(--senlin-status); + background: var(--color-status); color: rgba(255, 255, 255, 0.86); } @@ -1931,7 +1920,7 @@ } .status-user { - gap: 8px; + gap: var(--space-2); border: 0; background: transparent; color: rgba(255, 255, 255, 0.86); @@ -2005,16 +1994,16 @@ .billing-plan.arco-card { cursor: pointer; - border-radius: 8px; + border-radius: var(--radius-control); } .billing-plan.active.arco-card { - border-color: var(--senlin-primary); - background: var(--senlin-soft-blue); + border-color: var(--color-primary); + background: var(--color-soft-blue); } .billing-plan .arco-card-body { - padding: 12px; + padding: var(--space-3); } .billing-plan .arco-radio { @@ -2029,7 +2018,7 @@ .billing-price { display: block; margin-bottom: 4px; - color: var(--senlin-primary); + color: var(--color-primary); font-weight: 700; } @@ -2037,7 +2026,7 @@ display: grid; gap: 10px; margin-top: 16px; - border-top: 1px solid var(--senlin-border); + border-top: 1px solid var(--color-border); padding-top: 14px; } @@ -2054,7 +2043,7 @@ .login-form-panel { min-height: auto; border-right: 0; - border-bottom: 1px solid var(--senlin-border); + border-bottom: 1px solid var(--color-border); } .login-value-panel { diff --git a/apps/web_v1/src/api/mappers.tsx b/apps/web_v1/src/api/mappers.tsx index b6ee34e..426d8ef 100644 --- a/apps/web_v1/src/api/mappers.tsx +++ b/apps/web_v1/src/api/mappers.tsx @@ -95,7 +95,7 @@ function channelLabel(channel: BackendChannel) { case 'tasks': return '工作计划' case 'ai_sessions': - return 'AI智能体' + return 'AI 助手' case 'notes_sources': return '笔记资料' case 'cron': diff --git a/apps/web_v1/src/index.css b/apps/web_v1/src/index.css index 5321e24..2ffc217 100644 --- a/apps/web_v1/src/index.css +++ b/apps/web_v1/src/index.css @@ -12,15 +12,9 @@ body, } body { - font-family: - Inter, - ui-sans-serif, - system-ui, - -apple-system, - BlinkMacSystemFont, - "Segoe UI", - sans-serif; - background: #f7f8fa; + font-family: var(--font-sans); + background: var(--color-bg); + color: var(--color-text); } button, diff --git a/apps/web_v1/src/main.tsx b/apps/web_v1/src/main.tsx index e99750c..cd0684e 100644 --- a/apps/web_v1/src/main.tsx +++ b/apps/web_v1/src/main.tsx @@ -1,5 +1,6 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' +import './styles/tokens.css' import './index.css' import App from './app/App.tsx' diff --git a/apps/web_v1/src/pages/projects/project-new-channel.tsx b/apps/web_v1/src/pages/projects/project-new-channel.tsx index 8d97662..c4e7b81 100644 --- a/apps/web_v1/src/pages/projects/project-new-channel.tsx +++ b/apps/web_v1/src/pages/projects/project-new-channel.tsx @@ -54,7 +54,7 @@ export function ProjectNewChannel({ activeWorkspace }: { activeWorkspace: Projec 外部资料库 项目流程页 RSS/探索结果 - AI智能体上下文 + AI 助手上下文 diff --git a/apps/web_v1/src/pages/projects/project-overview.tsx b/apps/web_v1/src/pages/projects/project-overview.tsx index b39f5a9..5215ad6 100644 --- a/apps/web_v1/src/pages/projects/project-overview.tsx +++ b/apps/web_v1/src/pages/projects/project-overview.tsx @@ -54,7 +54,7 @@ export function ProjectOverview({
{metric.title} {metric.value} - 实时接口 + 当前统计
diff --git a/apps/web_v1/src/pages/projects/project-statusbar.tsx b/apps/web_v1/src/pages/projects/project-statusbar.tsx index a87c233..11ef634 100644 --- a/apps/web_v1/src/pages/projects/project-statusbar.tsx +++ b/apps/web_v1/src/pages/projects/project-statusbar.tsx @@ -26,7 +26,7 @@ export function ProjectStatusbar() { <>