From 29a4be912de9917af05c673ab52193bb6727dcf9 Mon Sep 17 00:00:00 2001 From: alanpaine Date: Thu, 16 Apr 2026 13:39:25 +0800 Subject: [PATCH] =?UTF-8?q?style(ui):=20=E6=9B=BF=E6=8D=A2=E5=88=86?= =?UTF-8?q?=E6=9E=90=E6=A0=87=E7=AD=BE=E7=BB=84=E4=BB=B6=E4=B8=BA=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=A0=B7=E5=BC=8F=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除对 Ant Design Segmented 组件的依赖,改用自定义 div 实现标签切换。这提供了更精细的样式控制,优化了视觉外观和交互反馈,并消除了不必要的第三方组件依赖。 --- .../src/pages/business/MeetingPreview.css | 52 +++++++++++++++---- .../src/pages/business/MeetingPreview.tsx | 24 +++++---- 2 files changed, 56 insertions(+), 20 deletions(-) diff --git a/frontend/src/pages/business/MeetingPreview.css b/frontend/src/pages/business/MeetingPreview.css index 5bec877..7271648 100644 --- a/frontend/src/pages/business/MeetingPreview.css +++ b/frontend/src/pages/business/MeetingPreview.css @@ -354,19 +354,51 @@ } .meeting-preview-analysis-tabs { - margin: 18px 0 14px; -} - -.meeting-preview-analysis-tabs .ant-segmented { - width: 100%; - padding: 5px; - border-radius: 16px; + display: inline-flex; + align-items: center; background: var(--app-bg-surface-soft); + padding: 5px; + border-radius: 12px; + gap: 4px; + margin: 24px 0 20px; + overflow-x: auto; + scrollbar-width: none; + border: 1px solid var(--app-border-color); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.02); } -.meeting-preview-analysis-tabs .ant-segmented-item { - min-height: 40px; - border-radius: 12px; +.meeting-preview-analysis-tabs::-webkit-scrollbar { + display: none; +} + +.meeting-preview-analysis-tab { + padding: 8px 24px; + border-radius: 8px; + color: var(--app-text-secondary); + font-size: 14px; + font-weight: 500; + cursor: pointer; + white-space: nowrap; + border: 1px solid transparent; + transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); +} + +.meeting-preview-analysis-tab:hover { + color: var(--app-text-main); + background: rgba(255, 255, 255, 0.4); +} + +.meeting-preview-analysis-tab.active { + background: var(--app-bg-surface); + color: var(--app-primary-color); + font-weight: 600; + border-color: rgba(0, 0, 0, 0.04); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04); +} + +.meeting-preview-analysis-tab.active:hover { + background: var(--app-bg-surface); + color: var(--app-primary-color); } .meeting-preview-analysis-panel { diff --git a/frontend/src/pages/business/MeetingPreview.tsx b/frontend/src/pages/business/MeetingPreview.tsx index 5f1cac0..0b2eb62 100644 --- a/frontend/src/pages/business/MeetingPreview.tsx +++ b/frontend/src/pages/business/MeetingPreview.tsx @@ -644,16 +644,20 @@ export default function MeetingPreview() {
- setAnalysisTab(value as AnalysisTab)} - options={[ - { label: TEXT.analysisChapters, value: "chapters" }, - { label: TEXT.analysisSpeakers, value: "speakers" }, - { label: TEXT.analysisKeyPoints, value: "actions" }, - { label: TEXT.analysisTodos, value: "todos" }, - ]} - /> + {[ + { label: TEXT.analysisChapters, value: "chapters" }, + { label: TEXT.analysisSpeakers, value: "speakers" }, + { label: TEXT.analysisKeyPoints, value: "actions" }, + { label: TEXT.analysisTodos, value: "todos" }, + ].map((tab) => ( +
setAnalysisTab(tab.value as AnalysisTab)} + > + {tab.label} +
+ ))}