diff --git a/frontend/src/App.css b/frontend/src/App.css index a9f8ac0..d215a75 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -140,7 +140,7 @@ body { /* ---- 左侧视频面板 ---- */ .video-panel { - width: 340px; + width: 400px; flex-shrink: 0; display: flex; flex-direction: column; @@ -392,44 +392,107 @@ body { border: 1px solid rgba(245, 158, 11, 0.2); } -/* ---- Config Panel ---- */ +/* ---- Drawer (Config Panel) ---- */ -.config-panel { +.drawer-overlay { + position: fixed; + inset: 0; + z-index: 100; + background: rgba(0, 0, 0, 0.4); + backdrop-filter: blur(2px); + animation: fadeIn 0.2s ease; +} + +.drawer { + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 320px; background: var(--color-surface); - border-bottom: 1px solid var(--color-border); - padding: 16px 24px; + border-left: 1px solid var(--color-border); + display: flex; + flex-direction: column; + animation: slideInRight 0.25s ease; + box-shadow: -8px 0 24px rgba(0, 0, 0, 0.3); +} + +.drawer__header { display: flex; align-items: center; - gap: 24px; + justify-content: space-between; + padding: 14px 16px; + border-bottom: 1px solid var(--color-border); flex-shrink: 0; } -.config-panel__header { - display: flex; - align-items: center; - gap: 8px; +.drawer__title { font-weight: 600; - font-size: 0.85rem; + font-size: 0.9rem; } -.config-panel__close { +.drawer__close { background: none; border: none; color: var(--color-text-muted); cursor: pointer; - font-size: 0.9rem; - padding: 2px 6px; + font-size: 1rem; + padding: 4px 8px; + border-radius: var(--radius-sm); + transition: all 0.15s; } -.config-panel__close:hover { +.drawer__close:hover { + background: var(--color-surface-2); color: var(--color-text); } +.drawer__body { + flex: 1; + overflow-y: auto; + padding: 16px; +} + +/* ---- Config Group ---- */ + +.config-group { + margin-bottom: 20px; +} + +.config-group__title { + font-size: 0.7rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.8px; + color: var(--color-text-muted); + margin-bottom: 12px; + padding-bottom: 8px; + border-bottom: 1px solid var(--color-border); +} + .config-row { display: flex; align-items: center; - gap: 8px; + justify-content: space-between; + padding: 10px 0; font-size: 0.82rem; + color: var(--color-text); + cursor: pointer; +} + +.config-row__info { + display: flex; + flex-direction: column; + gap: 2px; +} + +.config-row__label { + font-weight: 500; + color: var(--color-text); +} + +.config-row__desc { + font-size: 0.72rem; color: var(--color-text-muted); } @@ -439,8 +502,15 @@ body { color: var(--color-text); border: 1px solid var(--color-border); border-radius: var(--radius-sm); - padding: 4px 8px; + padding: 5px 10px; font-size: 0.8rem; + cursor: pointer; +} + +.config-row input[type="checkbox"] { + width: 18px; + height: 18px; + cursor: pointer; } /* ---- Toast ---- */ @@ -559,6 +629,16 @@ body { to { opacity: 1; transform: translateX(0); } } +@keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } +} + +@keyframes slideInRight { + from { transform: translateX(100%); } + to { transform: translateX(0); } +} + /* ---- Scrollbar ---- */ ::-webkit-scrollbar { diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 7c5918d..e5d6bae 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -54,15 +54,13 @@ function App() { {isConnected ? "已连接" : connectionStatus === "connecting" ? "连接中..." : "未连接"} - {isConnected && ( - - )} + diff --git a/frontend/src/components/ConfigPanel/index.tsx b/frontend/src/components/ConfigPanel/index.tsx index a56306f..192cd0b 100644 --- a/frontend/src/components/ConfigPanel/index.tsx +++ b/frontend/src/components/ConfigPanel/index.tsx @@ -1,5 +1,5 @@ // ============================================================ -// ConfigPanel — 会话配置面板 +// ConfigPanel — 右侧抽屉式配置面板 // 职责:TTS 开关、detail level 切换、语言选择 // ============================================================ @@ -13,43 +13,60 @@ interface ConfigPanelProps { export function ConfigPanel({ config, onUpdate, onClose }: ConfigPanelProps) { return ( -
-
- 设置 - +
+
e.stopPropagation()}> +
+ 设置 + +
+ +
+
+
会话
+ + + + + + +
+
- - - - - -
); }