diff --git a/src/front/argus-front/CLAUDE.md b/src/front/argus-front/CLAUDE.md new file mode 100644 index 0000000..6218f76 --- /dev/null +++ b/src/front/argus-front/CLAUDE.md @@ -0,0 +1,3 @@ +这是一个Vue3项目,使用了TS和NaiveUI。 + +我的项目是照片管理项目的前端,使用HTTP请求来请求展示内容 diff --git a/src/front/argus-front/src/App.vue b/src/front/argus-front/src/App.vue index 256d364..13de7d1 100644 --- a/src/front/argus-front/src/App.vue +++ b/src/front/argus-front/src/App.vue @@ -1,17 +1,39 @@ + + diff --git a/src/front/argus-front/src/assets/base.css b/src/front/argus-front/src/assets/base.css index e69de29..07c5ac4 100644 --- a/src/front/argus-front/src/assets/base.css +++ b/src/front/argus-front/src/assets/base.css @@ -0,0 +1,87 @@ +/* ú@7ÍnŒ;˜M */ +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + min-height: 100vh; + color: var(--text-color); + background: var(--bg-color); + transition: color 0.3s, background-color 0.3s; + line-height: 1.6; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +#app { + font-weight: normal; + color: var(--text-color); + background: var(--bg-color); +} + +a { + color: var(--text-color); + text-decoration: none; + transition: color 0.3s; +} + +a:hover { + opacity: 0.8; +} + +/* nÝ@ ¹hý(;˜ØÏ */ +.n-layout, +.n-layout-header, +.n-layout-sider, +.n-layout-content, +.n-layout-footer { + background-color: var(--bg-color) !important; + color: var(--text-color) !important; + transition: background-color 0.3s, color 0.3s; +} + +/* ñr! „ڨa7 */ +html.dark ::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +html.dark ::-webkit-scrollbar-track { + background: var(--bg-color-secondary); +} + +html.dark ::-webkit-scrollbar-thumb { + background: var(--border-color); + border-radius: 4px; +} + +html.dark ::-webkit-scrollbar-thumb:hover { + background: var(--text-color-secondary); +} + +/* Er! „ڨa7 */ +html.light ::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +html.light ::-webkit-scrollbar-track { + background: #f1f1f1; +} + +html.light ::-webkit-scrollbar-thumb { + background: #c1c1c1; + border-radius: 4px; +} + +html.light ::-webkit-scrollbar-thumb:hover { + background: #a1a1a1; +} \ No newline at end of file diff --git a/src/front/argus-front/src/assets/main.css b/src/front/argus-front/src/assets/main.css index ccd389f..905592d 100644 --- a/src/front/argus-front/src/assets/main.css +++ b/src/front/argus-front/src/assets/main.css @@ -1,11 +1,7 @@ -@import "base.css"; @import "var.css"; -* { - margin: 0; - padding: 0; - list-style: none; - text-decoration: none; -} +@import "base.css"; +@import "theme-override.css"; + /* 禁止选中 */ .no-select { user-select: none; @@ -13,3 +9,31 @@ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* IE10+/Edge */ } + +/* 全局容器样式,确保主题一致性 */ +html, body { + margin: 0; + padding: 0; + background-color: var(--bg-color); + color: var(--text-color); + transition: background-color 0.3s ease, color 0.3s ease; +} + +/* 确保所有文本元素都使用主题颜色 */ +h1, h2, h3, h4, h5, h6, p, span, div { + color: inherit; +} + +/* 输入框样式适配 */ +input, textarea, select { + background-color: var(--bg-color); + color: var(--text-color); + border-color: var(--border-color); +} + +/* 按钮基础样式适配 */ +button { + background-color: var(--bg-color-secondary); + color: var(--text-color); + border-color: var(--border-color); +} diff --git a/src/front/argus-front/src/assets/theme-override.css b/src/front/argus-front/src/assets/theme-override.css new file mode 100644 index 0000000..0ff68f9 --- /dev/null +++ b/src/front/argus-front/src/assets/theme-override.css @@ -0,0 +1,138 @@ +/* Naive UI 全局主题覆盖 */ + +/* 基础组件样式覆盖 */ +.n-card { + background-color: var(--card-bg) !important; + color: var(--text-color) !important; + border-color: var(--border-color) !important; +} + +.n-button { + color: var(--text-color) !important; +} + +.n-button--quaternary { + color: var(--text-color) !important; +} + +.n-button--quaternary:hover { + background-color: var(--hover-bg) !important; +} + +.n-input { + background-color: var(--bg-color-secondary) !important; + color: var(--text-color) !important; + border-color: var(--border-color) !important; +} + +.n-input__input-el { + background-color: transparent !important; + color: var(--text-color) !important; +} + +.n-input__placeholder { + color: var(--text-color-tertiary) !important; +} + +/* 菜单组件样式覆盖 */ +.n-menu { + background-color: transparent !important; + color: var(--text-color) !important; +} + +.n-menu-item { + color: var(--text-color) !important; +} + +.n-menu-item:hover { + background-color: var(--hover-bg) !important; +} + +.n-menu-item.n-menu-item--selected { + background-color: var(--hover-bg) !important; + color: var(--text-color) !important; +} + +.n-menu-item-content { + color: inherit !important; +} + +.n-menu-item-content__icon { + color: inherit !important; +} + +/* 布局组件样式覆盖 */ +.n-layout { + background-color: var(--bg-color) !important; + color: var(--text-color) !important; +} + +.n-layout-header { + background-color: var(--header-bg) !important; + color: var(--text-color) !important; + border-color: var(--border-color) !important; +} + +.n-layout-sider { + background-color: var(--sidebar-bg) !important; + color: var(--text-color) !important; + border-color: var(--border-color) !important; +} + +.n-layout-content { + background-color: var(--content-bg) !important; + color: var(--text-color) !important; +} + +.n-layout-footer { + background-color: var(--bg-color) !important; + color: var(--text-color) !important; + border-color: var(--border-color) !important; +} + +/* 图标样式覆盖 */ +.n-icon { + color: inherit !important; +} + +/* 滚动条样式覆盖 */ +.n-scrollbar-rail { + background-color: var(--bg-color-secondary) !important; +} + +.n-scrollbar-rail__scrollbar { + background-color: var(--border-color) !important; +} + +.n-scrollbar-rail__scrollbar:hover { + background-color: var(--text-color-secondary) !important; +} + +/* 其他全局覆盖 */ +html.dark .n-base-selection, +html.dark .n-base-selection-input { + background-color: var(--bg-color-secondary) !important; + color: var(--text-color) !important; + border-color: var(--border-color) !important; +} + +html.dark .n-base-selection__border { + border-color: var(--border-color) !important; +} + +html.dark .n-base-selection__state-border { + border-color: var(--border-color) !important; +} + +/* 确保所有文本元素都继承主题颜色 */ +html.dark * { + border-color: var(--border-color); +} + +html.dark h1, html.dark h2, html.dark h3, html.dark h4, html.dark h5, html.dark h6 { + color: var(--text-color) !important; +} + +html.dark p, html.dark span, html.dark div:not([class*="n-"]) { + color: var(--text-color); +} \ No newline at end of file diff --git a/src/front/argus-front/src/assets/var.css b/src/front/argus-front/src/assets/var.css index c4aa0ba..cff8f85 100644 --- a/src/front/argus-front/src/assets/var.css +++ b/src/front/argus-front/src/assets/var.css @@ -1,3 +1,42 @@ :root { --header-height: 64px; } + +/* 浅色主题变量 */ +:root, +html.light { + --bg-color: #ffffff; + --bg-color-secondary: #f5f5f5; + --bg-color-tertiary: #fafafa; + --text-color: #333333; + --text-color-secondary: #666666; + --text-color-tertiary: #999999; + --border-color: #e0e0e6; + --border-color-light: #f0f0f0; + --shadow-color: rgba(0, 0, 0, 0.08); + --shadow-color-light: rgba(0, 0, 0, 0.04); + --header-bg: #ffffff; + --sidebar-bg: #ffffff; + --content-bg: #f5f5f5; + --card-bg: #ffffff; + --hover-bg: rgba(0, 0, 0, 0.04); +} + +/* 深色主题变量 */ +html.dark { + --bg-color: #1a1a1a; + --bg-color-secondary: #2d2d2d; + --bg-color-tertiary: #3a3a3a; + --text-color: #ffffff; + --text-color-secondary: #cccccc; + --text-color-tertiary: #999999; + --border-color: #3d3d3d; + --border-color-light: #4a4a4a; + --shadow-color: rgba(0, 0, 0, 0.3); + --shadow-color-light: rgba(0, 0, 0, 0.2); + --header-bg: #1a1a1a; + --sidebar-bg: #1a1a1a; + --content-bg: #2d2d2d; + --card-bg: #2d2d2d; + --hover-bg: rgba(255, 255, 255, 0.08); +} diff --git a/src/front/argus-front/src/components/Layout/AppLayout.vue b/src/front/argus-front/src/components/Layout/AppLayout.vue index 9ea357b..077c1f8 100644 --- a/src/front/argus-front/src/components/Layout/AppLayout.vue +++ b/src/front/argus-front/src/components/Layout/AppLayout.vue @@ -27,9 +27,9 @@ - +
- +
@@ -71,9 +71,11 @@