diff --git a/packages/frontend/src/App.vue b/packages/frontend/src/App.vue index c2f8b1d..371388c 100644 --- a/packages/frontend/src/App.vue +++ b/packages/frontend/src/App.vue @@ -252,17 +252,17 @@ const isElementVisibleAndFocusable = (element: HTMLElement): boolean => {
- {{ t('nav.terminal') }} - {{ t('nav.proxies') }} - {{ t('nav.notifications') }} - {{ t('nav.auditLogs') }} - {{ t('nav.settings') }} + {{ t('nav.terminal') }} + {{ t('nav.proxies') }} + {{ t('nav.notifications') }} + {{ t('nav.auditLogs') }} + {{ t('nav.settings') }}
- 🎨 - {{ t('nav.login') }} - {{ t('nav.logout') }} + 🎨 + {{ t('nav.login') }} + {{ t('nav.logout') }}
diff --git a/packages/frontend/src/components/StyleCustomizer.vue b/packages/frontend/src/components/StyleCustomizer.vue index 7fab51b..b4e8f22 100644 --- a/packages/frontend/src/components/StyleCustomizer.vue +++ b/packages/frontend/src/components/StyleCustomizer.vue @@ -766,6 +766,14 @@ watch(() => editingTheme.value?.themeData, (newThemeData) => { } }, { deep: true }); // 需要 deep watch 来监听 themeData 内部的变化 +// Helper function to safely select text in an input on focus +const handleFocusAndSelect = (event: FocusEvent) => { + const target = event.target; + if (target instanceof HTMLInputElement) { + target.select(); + } +}; + @@ -798,21 +806,34 @@ watch(() => editingTheme.value?.themeData, (newThemeData) => {
- - - - + +
+ + + + + + +

@@ -920,21 +941,34 @@ watch(() => editingTheme.value?.themeData, (newThemeData) => {
- - - - + +
+ + + + + + +
@@ -1218,14 +1252,32 @@ section[v-if*="isEditingTheme"] .form-group { box-sizing: border-box; transition: border-color 0.2s ease, box-shadow 0.2s ease; /* 添加过渡效果 */ } -.form-group input[type="color"] { - padding: 2px; - height: 34px; - min-width: 50px; - max-width: 70px; - justify-self: start; - border-radius: 4px; /* 保持圆角一致 */ +.color-input-group { + display: flex; + align-items: center; + gap: 0.5rem; /* Space between color picker and text input */ + grid-column: 2 / 3; /* Ensure the group stays in the second column */ + width: 100%; /* Take full width of the column */ } +.color-picker-input { + padding: 2px !important; /* Override general padding */ + height: 34px !important; /* Match text input height */ + min-width: 40px !important; /* Slightly smaller */ + max-width: 50px !important; + border-radius: 4px !important; + border: 1px solid var(--border-color) !important; /* Add border */ + flex-shrink: 0; /* Prevent shrinking */ +} +.color-text-input { + flex-grow: 1; /* Allow text input to take remaining space */ + min-width: 80px; /* Minimum width for text */ + background-color: var(--header-bg-color) !important; /* Indicate readonly */ + cursor: text; /* Allow text selection cursor */ +} +.full-span-input { + grid-column: 1 / -1; /* Make non-color inputs span the whole group width */ +} + .form-group input:focus, .form-group select:focus { border-color: var(--link-active-color); outline: 0; diff --git a/packages/frontend/src/features/appearance/config/default-themes.ts b/packages/frontend/src/features/appearance/config/default-themes.ts index af54e2c..8839094 100644 --- a/packages/frontend/src/features/appearance/config/default-themes.ts +++ b/packages/frontend/src/features/appearance/config/default-themes.ts @@ -35,6 +35,8 @@ export const defaultUiTheme: Record = { '--link-color': '#333', '--link-hover-color': '#0056b3', '--link-active-color': '#007bff', + '--link-active-bg-color': '#e0e0ff', /* Added */ + '--nav-item-active-bg-color': 'var(--link-active-bg-color)', /* Added */ '--header-bg-color': '#f0f0f0', '--footer-bg-color': '#f0f0f0', '--button-bg-color': '#007bff', @@ -47,6 +49,8 @@ export const defaultUiTheme: Record = { '--split-line-hover-color': 'var(--border-color)', /* 分割线悬停颜色 */ '--input-focus-border-color': 'var(--link-active-color)', /* 输入框聚焦边框颜色 */ '--input-focus-glow': 'var(--link-active-color)', /* 输入框聚焦光晕值 */ + '--ssh-tab-active': 'transparent', /* Added SSH Tab Active */ + '--ssh-tab-background': 'transparent', /* Added SSH Tab Background */ // End added variables '--font-family-sans-serif': 'sans-serif', '--base-padding': '1rem', diff --git a/packages/frontend/src/style.css b/packages/frontend/src/style.css index 466c4e2..4aa432a 100644 --- a/packages/frontend/src/style.css +++ b/packages/frontend/src/style.css @@ -3,15 +3,19 @@ /* Tailwind Theme Variables Mapping */ @theme inline { /* Base Colors */ - --color-app: var(--app-bg-color); - --color-text-default: var(--text-color); + --color-background: var(--app-bg-color); /* More generic name */ + --color-foreground: var(--text-color); /* More generic name */ + --color-app: var(--app-bg-color); /* Keep specific if needed */ + --color-text-default: var(--text-color); /* Keep specific if needed */ --color-text-secondary: var(--text-color-secondary); - --color-border-default: var(--border-color); + --color-border: var(--border-color); /* Simplified name */ + --color-border-default: var(--border-color); /* Keep specific if needed */ --color-link: var(--link-color); --color-link-hover: var(--link-hover-color); --color-link-active: var(--link-active-color); /* Also used as primary/theme color */ --color-primary: var(--link-active-color); /* Map primary to active link color */ --color-link-active-bg: var(--link-active-bg-color); /* Map active link background */ + --color-nav-active-bg: var(--nav-item-active-bg-color); /* Map specific nav active background */ /* Component Colors */ --color-header: var(--header-bg-color); @@ -40,6 +44,7 @@ --link-hover-color: #0056b3; /* 链接悬停颜色 */ --link-active-color: #007bff; /* 激活链接/主题色 */ --link-active-bg-color: #e0e0ff; /* 激活链接背景色 (类似 indigo-50) */ + --nav-item-active-bg-color: var(--link-active-bg-color); /* 导航选中项背景色, 默认同激活链接背景 */ /* 组件颜色 */ --header-bg-color: #f0f0f0; /* 头部背景色 */ @@ -53,8 +58,8 @@ --split-line-hover-color: var(--border-color); /* 分割线悬停颜色 */ --input-focus-border-color: var(--link-active-color); /* 输入框聚焦边框颜色 */ --input-focus-glow: var(--link-active-color); /* 输入框聚焦光晕值 */ - --ssh-tab-active: none;/* ssh标签激活状态颜色 */ - --ssh-tab-background: none;/* ssh标签背景颜色 */ + --ssh-tab-active: transparent; /* Corrected value */ + --ssh-tab-background: transparent; /* Corrected value */ /* 字体 */ --font-family-sans-serif: sans-serif; /* 默认字体 */