diff --git a/openless-all/app/src/components/FloatingShell.tsx b/openless-all/app/src/components/FloatingShell.tsx index 96a99d09..93363905 100644 --- a/openless-all/app/src/components/FloatingShell.tsx +++ b/openless-all/app/src/components/FloatingShell.tsx @@ -180,7 +180,10 @@ function FloatingShellBody({ os, initialTab, initialSettings }: { os: OS; initia }; return ( -
+
{/* Main shell — flush with the frosted backplate (no separate float). */}
{/* brand */} -
+
OpenLess + style={{ + width: 26, + height: 26, + borderRadius: 8, + boxShadow: '0 10px 24px -16px rgba(47, 109, 246, 0.45)', + }} + /> -
OpenLess
+
+
OpenLess
+
+ VOICE CONSOLE +
+
{/* nav — 滑动指示器:active pill 是 absolute 元素,currentTab 改变时 top/height @@ -226,9 +262,10 @@ function FloatingShellBody({ os, initialTab, initialSettings }: { os: OS; initia right: 0, top: pillRect.top, height: pillRect.height, - background: 'var(--ol-surface)', - borderRadius: 8, - boxShadow: '0 1px 2px rgba(0,0,0,.05), 0 0 0 0.5px rgba(0,0,0,.06)', + background: 'linear-gradient(180deg, rgba(255,255,255,0.84), rgba(255,255,255,0.58))', + borderRadius: 14, + border: '1px solid rgba(255,255,255,0.62)', + boxShadow: 'var(--ol-aura-shadow-soft)', transition: 'top 0.36s var(--ol-motion-spring), height 0.36s var(--ol-motion-spring)', pointerEvents: 'none', zIndex: 0, @@ -245,8 +282,8 @@ function FloatingShellBody({ os, initialTab, initialSettings }: { os: OS; initia className={active ? 'ol-nav-btn ol-nav-btn-active' : 'ol-nav-btn'} style={{ display: 'flex', alignItems: 'center', gap: 10, - padding: '7px 10px', - borderRadius: 8, border: 0, + padding: '8px 12px', + borderRadius: 14, border: 0, background: 'transparent', fontFamily: 'inherit', fontSize: 13, cursor: 'default', @@ -268,17 +305,30 @@ function FloatingShellBody({ os, initialTab, initialSettings }: { os: OS; initia {/* 底部两行:上行 = 版本 chip(含 BETA 标),下行 = 设置按钮。 单行布局在窄 sidebar 下会把「设置」挤成两行竖字 + 版本糊一起; 翻回两行同时把顺序反过来:设置真正落到最底,版本在它上面。 */} -
+
{IS_BETA_BUILD && ( @@ -303,10 +353,13 @@ function FloatingShellBody({ os, initialTab, initialSettings }: { os: OS; initia className={settingsOpen ? 'ol-nav-btn ol-nav-btn-active' : 'ol-nav-btn'} style={{ display: 'flex', alignItems: 'center', gap: 10, - padding: '7px 10px', - borderRadius: 8, border: 0, - background: settingsOpen ? 'var(--ol-surface)' : 'transparent', - boxShadow: settingsOpen ? '0 1px 2px rgba(0,0,0,.05), 0 0 0 0.5px rgba(0,0,0,.06)' : 'none', + padding: '10px 12px', + borderRadius: 16, + border: '1px solid rgba(255,255,255,0.5)', + background: settingsOpen + ? 'linear-gradient(180deg, rgba(255,255,255,0.82), rgba(255,255,255,0.48))' + : 'linear-gradient(180deg, rgba(255,255,255,0.48), rgba(255,255,255,0.24))', + boxShadow: settingsOpen ? 'var(--ol-aura-shadow-soft)' : 'none', fontFamily: 'inherit', fontSize: 13, cursor: 'default', transition: 'color 0.16s var(--ol-motion-quick), background 0.16s var(--ol-motion-quick)', @@ -324,16 +377,11 @@ function FloatingShellBody({ os, initialTab, initialSettings }: { os: OS; initia 一起坐在 WindowChrome 的磨砂底板上,整体一块连续玻璃。 */}
e.stopPropagation()} style={{ - width: '100%', maxWidth: 880, height: '100%', maxHeight: 600, + width: '100%', + maxWidth: 920, + height: '100%', + maxHeight: 620, background: 'var(--ol-surface)', - borderRadius: 14, - border: '0.5px solid rgba(0,0,0,.08)', - boxShadow: '0 30px 80px -20px rgba(15,17,22,.35), 0 0 0 0.5px rgba(0,0,0,.06)', - display: 'flex', overflow: 'hidden', + borderRadius: 'var(--ol-shell-radius)', + border: '1px solid rgba(255,255,255,0.62)', + boxShadow: 'var(--ol-aura-shadow)', + display: 'flex', + overflow: 'hidden', animation: 'ol-modal-card-in 0.24s var(--ol-motion-spring)', position: 'relative', }}> @@ -99,11 +104,14 @@ export function SettingsModal({ os: _os, onClose, initialSettingsSection }: Sett {/* ─── 单层侧栏 ────────────────────────────────────────────── */}
{/* 外链组 */} -
+
{LINK_ITEMS.map(it => ( -

+

{t(`modal.sections.${section}`)}