wui-components-v2 1.1.65 → 1.1.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/components/action-popup/action-popup.vue +4 -4
  2. package/components/add-address-page/add-address-page.vue +20 -20
  3. package/components/custom-select-picker/custom-select-picker.vue +19 -27
  4. package/components/demo-block/demo-block.vue +2 -5
  5. package/components/detail-popup/detail-popup.vue +12 -5
  6. package/components/fold-card/fold-card.vue +25 -5
  7. package/components/form-control/form-control.vue +8 -0
  8. package/components/list-top-buttons/list-top-buttons.vue +1 -1
  9. package/components/login-form/login-form.vue +31 -26
  10. package/components/mulselect-picker/mulselect-picker.vue +10 -12
  11. package/components/privacy-popup/privacy-popup.vue +13 -0
  12. package/components/product-card/product-card.vue +95 -21
  13. package/components/search/search.vue +23 -22
  14. package/components/tree-select/components/index.vue +1 -1
  15. package/components/wui-edit-page/wui-edit-page-copy.vue +1 -1
  16. package/components/wui-edit-page/wui-edit-page.vue +2 -2
  17. package/components/wui-login/wui-login.vue +3 -3
  18. package/components/wui-login1/wui-login.vue +4 -4
  19. package/components/wui-menus1/components/navbar.vue +1 -1
  20. package/components/wui-menus1/components/quick-panel.vue +3 -3
  21. package/components/wui-menus1/components/section-menus.vue +4 -4
  22. package/components/wui-menus1/wui-menus-top.vue +1 -1
  23. package/components/wui-menus1/wui-menus-top1.vue +1 -1
  24. package/components/wui-menus1/wui-menus.vue +3 -3
  25. package/components/wui-notify-info/wui-notify-info.vue +65 -35
  26. package/components/wui-select-list/wui-select-list.vue +1 -1
  27. package/components/wui-select-popup/wui-select-popup.vue +27 -17
  28. package/components/wui-system-settings/wui-system-settings.vue +31 -24
  29. package/components/wui-tabbar/wui-tabbar.vue +14 -5
  30. package/components/wui-tree-page/components/tree-item.vue +51 -30
  31. package/components/wui-user/wui-user.vue +68 -57
  32. package/index.ts +5 -3
  33. package/package.json +1 -1
  34. package/store/manualThemeStore.ts +7 -7
  35. package/styles/dark-mode.scss +424 -0
@@ -1,8 +1,6 @@
1
1
  <script setup lang="ts">
2
- import { ref } from 'vue'
3
- import {
4
- useDialog,
5
- } from '@wot-ui/ui'
2
+ import { computed, ref } from 'vue'
3
+ import { useDialog } from '@wot-ui/ui'
6
4
  import { useUser } from '../../composables/useUser'
7
5
  import { generateGradientColor } from '../../utils'
8
6
  import { useManualTheme } from '../../composables/useManualTheme'
@@ -13,28 +11,38 @@ import { useGlobalToast } from '../../composables/useGlobalToast'
13
11
  defineOptions({
14
12
  name: 'WuiUser',
15
13
  })
16
- const props= defineProps({
17
- loginPath:{
14
+ const props = defineProps({
15
+ loginPath: {
18
16
  type: String,
19
17
  default: '/pages/login/index',
20
- }
18
+ },
21
19
  })
22
- const {
23
- currentThemeColor,
24
- } = useManualTheme()
20
+
21
+ const { currentThemeColor, isDark } = useManualTheme()
22
+
23
+ // Cell 暗黑样式 - 通过 custom-style 直接注入组件内联样式
24
+ const cellStyle = computed(() => ({
25
+ backgroundColor: isDark.value ? '#161616' : '#fff',
26
+ borderBottom: isDark.value ? '1px solid rgba(255,255,255,0.04)' : 'none',
27
+ }))
28
+
29
+ // CellGroup 暗黑样式
30
+ const cellGroupStyle = computed(() => ({
31
+ backgroundColor: isDark.value ? '#111111' : 'transparent',
32
+ borderRadius: isDark.value ? '10px' : '0',
33
+ }))
25
34
  const user = useUser().getUserInfo()
26
35
  const dialog = useDialog()
27
36
  const toast = useGlobalToast()
28
37
  const userInfo = ref({
29
38
  name: user.name,
30
39
  nickName: user.nickName,
31
- // viewPersonalInfoable: user.viewPersonalInfoable,
32
40
  })
41
+
33
42
  // 退出登录
34
43
  function quit() {
35
44
  dialog
36
45
  .confirm({
37
- // msg: '提示文案',
38
46
  title: '退出登录',
39
47
  })
40
48
  .then(() => {
@@ -54,79 +62,85 @@ function setting() {
54
62
  url: '/pages/system-settings/index',
55
63
  })
56
64
  }
57
- async function clearCache() {
58
- // uni.removeStorageSync('userInfo')
59
- const res= await getUserConfig();
60
- if(res.status=='success') {
65
+ async function clearCache() {
66
+ const res = await getUserConfig()
67
+ if (res.status == 'success') {
61
68
  toast.success({ msg: '清除成功!' })
62
69
  uni.setStorageSync('userInfo', res.user)
63
70
  }
64
71
  }
65
-
66
- // 查看用户信息
67
- // function goUserInfo() {
68
- // uni.navigateTo({
69
- // url: `/pages/detail/index?sourceId=${uni.getStorageSync('userInfo').gtmplSourceId}&id=${uni.getStorageSync('userInfo').id}`,
70
- // })
71
- // }
72
72
  </script>
73
73
 
74
74
  <template>
75
- <!-- <scan/> -->
76
75
  <view class="user">
77
76
  <view class="top-box">
78
77
  <!-- 用户头部信息 -->
79
- <view class="user-header" :style="{ background: generateGradientColor(currentThemeColor.primary, 135, 1, 0.7) }">
78
+ <view
79
+ class="user-header"
80
+ :style="{
81
+ background: isDark
82
+ ? 'linear-gradient(135deg, #1a1a2e 0%, #16213e 100%)'
83
+ : generateGradientColor(currentThemeColor.primary, 135, 1, 0.7),
84
+ boxShadow: isDark
85
+ ? '0 2px 12px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.05)'
86
+ : '0 4px 12px rgba(74, 108, 247, 0.25)',
87
+ border: isDark ? '1px solid rgba(255,255,255,0.06)' : 'none',
88
+ borderRadius: '10px',
89
+ }"
90
+ >
80
91
  <view class="user-info">
81
- <!-- <img src="user.avatar" class="avatar" alt="用户头像"> -->
82
- <image class="avatar" src="./user-avatar-fill.png" />
92
+ <image
93
+ class="avatar"
94
+ src="./user-avatar-fill.png"
95
+ :style="{ borderColor: isDark ? 'rgba(255,255,255,0.2)' : 'rgba(255,255,255,0.3)' }"
96
+ />
83
97
  <view class="user-text">
84
- <view class="user-name">
85
- {{ userInfo.name }}
86
- </view>
87
- <view class="user-nickname">
88
- 昵称:{{ userInfo.nickName }}
89
- </view>
98
+ <view class="user-name">{{ userInfo.name }}</view>
99
+ <view class="user-nickname">昵称:{{ userInfo.nickName }}</view>
90
100
  </view>
91
101
  </view>
92
102
  </view>
93
103
  </view>
94
104
 
95
- <wd-cell-group>
96
- <!-- <wd-cell
97
- v-if="userInfo.viewPersonalInfoable" title="个人信息" icon="user" :is-link="true" :clickable="true"
98
- @click="goUserInfo"
99
- /> -->
100
- <!-- <wd-cell title="修改密码" icon="keywords" :is-link="true" :clickable="true" /> -->
101
- <wd-cell title="系统设置" icon="setting" :is-link="true" :clickable="true" @click="setting" />
102
- <wd-cell title="清空缓存" :is-link="true" :clickable="true" @click="clearCache" />
103
- <wd-cell title="退出登录" icon="logout" :is-link="true" :clickable="true" @click="quit" />
104
- </wd-cell-group>
105
+ <view class="mx-[15px] rounded-2">
106
+ <wd-cell-group :custom-style="cellGroupStyle">
107
+ <wd-cell
108
+ title="系统设置"
109
+ icon="setting"
110
+ :is-link="true"
111
+ :clickable="true"
112
+ :custom-style="cellStyle"
113
+ @click="setting"
114
+ />
115
+ <wd-cell title="清空缓存" :is-link="true" :clickable="true" :custom-style="cellStyle" @click="clearCache" />
116
+ <wd-cell
117
+ title="退出登录"
118
+ icon="logout"
119
+ :is-link="true"
120
+ :clickable="true"
121
+ :custom-style="cellStyle"
122
+ @click="quit"
123
+ />
124
+ </wd-cell-group>
125
+ </view>
105
126
  <wd-dialog />
106
127
  </view>
107
128
  </template>
108
129
 
109
130
  <style scoped lang="scss">
110
131
  .user {
111
- // background-color: #f5f5f5;
112
- // height: 100vh;
113
-
114
132
  .top-box {
115
133
  padding: 15px;
116
134
 
117
135
  .user-header {
118
- border-radius: 10px;
119
- margin: auto;
120
- background: linear-gradient(135deg, #4a6cf7 0%, #2541b2 100%);
121
136
  color: white;
122
137
  padding: 30px 20px;
123
- box-shadow: 0 4px 12px rgba(74, 108, 247, 0.2);
124
138
  position: relative;
125
139
  overflow: hidden;
126
140
  }
127
141
 
128
142
  .user-header::before {
129
- content: "";
143
+ content: '';
130
144
  position: absolute;
131
145
  top: -50px;
132
146
  right: -50px;
@@ -137,7 +151,7 @@ function setting() {
137
151
  }
138
152
 
139
153
  .user-header::after {
140
- content: "";
154
+ content: '';
141
155
  position: absolute;
142
156
  bottom: -80px;
143
157
  left: -30px;
@@ -155,13 +169,11 @@ function setting() {
155
169
  }
156
170
 
157
171
  .avatar {
158
- width: 140rpx;
159
- height: 140rpx;
172
+ width: 120rpx;
173
+ height: 120rpx;
160
174
  border-radius: 50%;
161
- border: 3px solid rgba(255, 255, 255, 0.3);
162
175
  margin-right: 15px;
163
176
  object-fit: cover;
164
- // background-color: #fff;
165
177
  }
166
178
 
167
179
  .user-text {
@@ -181,6 +193,5 @@ function setting() {
181
193
  align-items: center;
182
194
  }
183
195
  }
184
-
185
196
  }
186
197
  </style>
package/index.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  import type { App } from 'vue'
2
+ // 暗黑模式样式 - 组件库入口加载(供打包后 app.use() 时生效)
3
+ import './styles/dark-mode.scss'
4
+
2
5
  import WuiSystemSettings from './components/wui-system-settings/wui-system-settings.vue'
3
6
  import WuiMenus from './components/wui-menus/wui-menus.vue'
4
7
  import WuiMenus1 from './components/wui-menus1/wui-menus.vue'
@@ -24,7 +27,7 @@ import WuiUpdateComponent from './components/wui-update-component/wui-update-com
24
27
  import WuiScanBindingSensor from './components/wui-scan-binding-sensor/wui-scan-binding-sensor.vue'
25
28
  import WuiUser from './components/wui-user/wui-user.vue'
26
29
  import WuiAutoUpdateComponent from './components/wui-auto-update-component/wui-auto-update-component.vue'
27
- import iData from './utils/idata-scan'// PAD扫描
30
+ import iData from './utils/idata-scan' // PAD扫描
28
31
  import wuiSearchHistoryBabbar from './components/wui-search-history-babbar/wui-search-history-babbar.vue'
29
32
  import wuienumeSelectControl from './components/wui-enume-select-control/wui-enume-select-control.vue'
30
33
  import './static/iconfont/iconfont.css'
@@ -54,7 +57,7 @@ const coms: Array<{ name: string }> = [
54
57
  * @param app Vue 应用实例
55
58
  */
56
59
  function install(app: App): void {
57
- coms.forEach((component) => {
60
+ coms.forEach(component => {
58
61
  app.component(component.name, component)
59
62
  })
60
63
  }
@@ -75,7 +78,6 @@ export {
75
78
  iData, // PAD扫描
76
79
  // nfc, // nfc读取
77
80
  useLanguageStore, // 语言
78
-
79
81
  }
80
82
 
81
83
  export default install
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wui-components-v2",
3
- "version": "1.1.65",
3
+ "version": "1.1.66",
4
4
  "description": "wui 组件库",
5
5
  "author": "wgxshh",
6
6
  "license": "MIT",
@@ -13,16 +13,16 @@ export const useManualThemeStore = defineStore('manualTheme', {
13
13
  currentThemeColor: themeColorOptions[0],
14
14
  Locale: LocaleOptions[0],
15
15
  themeVars: {
16
- darkBackground: '#0f0f0f',
17
- darkBackground2: '#1a1a1a',
18
- darkBackground3: '#242424',
19
- darkBackground4: '#2f2f2f',
20
- darkBackground5: '#3d3d3d',
16
+ darkBackground: '#1B1B1E',
17
+ darkBackground2: '#141414',
18
+ darkBackground3: '#1c1c1c',
19
+ darkBackground4: '#262626',
20
+ darkBackground5: '#333333',
21
21
  darkBackground6: '#4a4a4a',
22
22
  darkBackground7: '#606060',
23
23
  darkColor: '#ffffff',
24
- darkColor2: '#e0e0e0',
25
- darkColor3: '#a0a0a0',
24
+ darkColor2: '#e8e8e8',
25
+ darkColor3: '#999999',
26
26
  colorTheme: themeColorOptions[0].primary,
27
27
  colorPrimary: themeColorOptions[0].primary, // 添加主色调变量,用于 tabbar 等组件
28
28
  },
@@ -0,0 +1,424 @@
1
+ /**
2
+ * 暗黑模式全局样式覆盖
3
+ * 用于强制覆盖 wot-design-uni 组件内部样式(:deep() 无法穿透的场景)
4
+ *
5
+ * 注意:此文件不能使用 scoped,否则无法穿透第三方组件
6
+ *
7
+ * @package wui-components-v2
8
+ *
9
+ * 使用方式:在项目 main.ts 中 import 此文件
10
+ * import 'wui-components-v2/styles/dark-mode'
11
+ */
12
+
13
+ /* ====== CSS 变量定义(修正命名不匹配问题)====== */
14
+ /* wot-design-uni 的 kebabCase 转换会把 darkBackground2 → --wot-dark-background-2 */
15
+ /* 但项目中模板引用的是 --wot-dark-background2,需手动补齐 */
16
+ :root,
17
+ .wot-theme-dark {
18
+ --wot-dark-background: #1b1b1e;
19
+ --wot-dark-background2: #161616;
20
+ --wot-dark-background3: #1e1e1e;
21
+ --wot-dark-background4: #262626;
22
+ --wot-dark-background5: #333333;
23
+ --wot-dark-color: #ffffff;
24
+ --wot-dark-color2: #e8e8e8;
25
+ --wot-dark-color3: #999999;
26
+ }
27
+
28
+ /* ====== 暗黑模式下 wot-design-uni 组件内部文字颜色覆盖 ====== */
29
+ .wot-theme-dark {
30
+ /* Cell 组件 */
31
+ .wd-cell__title {
32
+ color: #e8e8e8 !important;
33
+ }
34
+
35
+ .wd-cell__right {
36
+ color: #666666 !important;
37
+ }
38
+
39
+ .wd-cell__icon {
40
+ color: #666666 !important;
41
+ }
42
+
43
+ /* CellGroup */
44
+ .wd-cell-group {
45
+ background-color: #111111 !important;
46
+ }
47
+
48
+ .wd-cell {
49
+ background-color: #161616 !important;
50
+ border-bottom: 1px solid rgba(255, 255, 255, 0.04) !important;
51
+
52
+ &:active {
53
+ background-color: #1b1b1e !important;
54
+ }
55
+ }
56
+
57
+ /* Switch 开关 */
58
+ .wd-switch__node {
59
+ background-color: #3d3d3d !important;
60
+ }
61
+
62
+ .wd-switch__node--checked {
63
+ background-color: var(--wot-color-primary, #2164f3) !important;
64
+ }
65
+
66
+ /* Input 输入框 */
67
+ .wd-input {
68
+ --wot-input-bg: #252530;
69
+ --wot-input-inner-color: #e8e8e8;
70
+ --wot-input-inner-placeholder-color: #fff;
71
+ }
72
+
73
+ /* 原生 input 元素 - 必须用 uni- 前缀类名才能在小程序中命中 */
74
+ .uni-input-input,
75
+ .wd-input__input,
76
+ .wd-input.is-compact .uni-input-input {
77
+ color: var(--wot-input-inner-color, #e8e8e8) !important;
78
+ caret-color: var(--wot-color-primary, #2164f3) !important;
79
+ background-color: transparent !important;
80
+ }
81
+
82
+ .uni-input-placeholder,
83
+ .wd-input__placeholder,
84
+ .wd-input.is-compact .uni-input-placeholder {
85
+ color: #fff !important;
86
+ }
87
+
88
+ /* Form 表单 */
89
+ .wd-form {
90
+ background-color: transparent;
91
+ }
92
+
93
+ .wd-form-item {
94
+ background-color: transparent !important;
95
+
96
+ .wd-cell {
97
+ background-color: transparent !important;
98
+ }
99
+ }
100
+
101
+ .wd-form-item__label,
102
+ .wd-form-item__title {
103
+ color: var(--wot-dark-color2, #e8e8e8) !important;
104
+ }
105
+
106
+ .wd-form-item__body {
107
+ background-color: transparent;
108
+ }
109
+
110
+ /* Button 按钮 */
111
+ .wd-button--primary {
112
+ --wd-button-primary-bg-color: var(--wot-color-primary, #2164f3) !important;
113
+ }
114
+
115
+ /* Popup 弹窗 */
116
+ .wd-popup {
117
+ background-color: transparent !important;
118
+ }
119
+
120
+ .wd-popup__container {
121
+ background-color: #161616 !important;
122
+ }
123
+
124
+ .wd-popup__body {
125
+ background-color: #1b1b1e !important;
126
+ }
127
+
128
+ /* ActionSheet */
129
+ .wd-action-sheet {
130
+ background-color: #161616 !important;
131
+ }
132
+
133
+ .wd-action-sheet__title {
134
+ color: var(--wot-dark-color, #fff) !important;
135
+ }
136
+
137
+ .wd-action-sheet__item {
138
+ color: var(--wot-dark-color2, #e0e0e0) !important;
139
+ }
140
+
141
+ /* SelectPicker 选择器弹窗 */
142
+ .wd-select-picker__wrapper {
143
+ background-color: #1b1b1e;
144
+ }
145
+
146
+ .wd-select-picker__popup {
147
+ background-color: #161616 !important;
148
+ }
149
+
150
+ .wd-select-picker__checkbox-label,
151
+ .wd-select-picker__radio-label {
152
+ color: var(--wot-dark-color2, #e8e8e8) !important;
153
+ }
154
+
155
+ .wd-select-picker__text-active {
156
+ color: var(--wot-color-primary, #2164f3) !important;
157
+ }
158
+
159
+ .wd-select-picker__footer {
160
+ background-color: #161616;
161
+ }
162
+
163
+ /* Calendar 日历选择器弹窗 */
164
+ .wd-calendar__wrapper {
165
+ background-color: #1b1b1e;
166
+ }
167
+
168
+ .wd-calendar__popup {
169
+ background-color: #161616 !important;
170
+ }
171
+
172
+ .wd-calendar__header {
173
+ color: var(--wot-dark-color, #fff);
174
+ }
175
+
176
+ /* Calendar 日历日期单元格暗黑适配(覆盖 wot-design-uni 内部变量)*/
177
+ .wd-calendar__view,
178
+ .wd-month-panel {
179
+ --wot-calendar-view-day-color: #e8e8e8; /* 日期数字 */
180
+ --wot-calendar-view-week-color: #999999; /* 星期头(日一二三四五六) */
181
+ --wot-calendar-view-panel-title-color: #ccc; /* 面板标题(2026年6月) */
182
+ --wot-calendar-view-control-icon-color: #aaa; /* 左右箭头图标 */
183
+ --wot-calendar-view-control-color-disabled: #444; /* 禁用箭头 */
184
+ --wot-calendar-view-color-disabled: #555555; /* 禁用/不可选日期 */
185
+ --wot-calendar-view-time-picker-color: #e8e8e8; /* 时间选择器文字 */
186
+ --wot-calendar-view-time-picker-bg: #252530; /* 时间选择器背景 */
187
+ --wot-calendar-view-range-color: #e8e8e8; /* 区间模式文字色 */
188
+ background-color: transparent !important;
189
+ }
190
+
191
+ .wd-calendar__tabs {
192
+ color: var(--wot-dark-color3, #999999) !important;
193
+ }
194
+
195
+ .wd-calendar__shortcuts {
196
+ border-bottom-color: rgba(255, 255, 255, 0.06);
197
+ }
198
+
199
+ .wd-calendar__view {
200
+ background-color: transparent;
201
+ color: var(--wot-dark-color2, #e8e8e8);
202
+ }
203
+
204
+ .wd-calendar__range-item.is-placeholder {
205
+ color: var(--wot-dark-color3, #666666) !important;
206
+ }
207
+
208
+ .wd-calendar__range-separator {
209
+ color: var(--wot-dark-color3, #666666) !important;
210
+ }
211
+
212
+ /* YearPanel 年份选择器 */
213
+ .wd-year-panel {
214
+ --wot-calendar-bg: #1b1b1e;
215
+ --wot-picker-view-bg: #1b1b1e;
216
+ background-color: #1b1b1e;
217
+ }
218
+
219
+ .wd-picker-view {
220
+ --wot-picker-view-bg: #1b1b1e;
221
+ --wot-picker-view-mask-start-color: rgba(0, 0, 0, 0.85);
222
+ --wot-picker-view-mask-end-color: rgba(0, 0, 0, 0.2);
223
+ --wot-picker-view-roller-bg: #2a2a30;
224
+ --wot-picker-view-column-item-color: #e8e8e8;
225
+ background-color: #1b1b1e;
226
+ }
227
+
228
+ /* picker-view 滚轮遮罩 - 暗黑模式下去掉白色渐变 */
229
+ .wd-picker-view__mask {
230
+ background-image:
231
+ linear-gradient(180deg, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.2)),
232
+ linear-gradient(0deg, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.2)) !important;
233
+ }
234
+
235
+ .wd-picker-view__roller {
236
+ background-color: #2a2a30 !important;
237
+ }
238
+
239
+ .wd-picker-view__column-item {
240
+ color: #e8e8e8 !important;
241
+ }
242
+
243
+ .wd-picker-view__column-item--active {
244
+ color: var(--wot-dark-color, #fff) !important;
245
+ }
246
+
247
+ .wd-year-panel__text {
248
+ color: var(--wot-dark-color2, #e8e8e8);
249
+ }
250
+
251
+ .wd-year-panel__item.is-active .wd-year-panel__text,
252
+ .wd-year-panel__item.is-active {
253
+ color: var(--wot-color-primary, #2164f3) !important;
254
+ }
255
+
256
+ /* DateTimePicker 时间选择器弹窗 */
257
+ .wd-datetime-picker__wrapper {
258
+ background-color: #1b1b1e;
259
+ color: var(--wot-dark-color2, #e8e8e8);
260
+ }
261
+
262
+ .wd-datetime-picker__popup {
263
+ background-color: #161616 !important;
264
+ }
265
+
266
+ &::after {
267
+ background-color: transparent !important;
268
+ }
269
+
270
+ /* Toast / Notify */
271
+ .wd-toast {
272
+ color: #fff !important;
273
+ }
274
+
275
+ /* Picker */
276
+ .wd-picker__title,
277
+ .wd-picker__toolbar {
278
+ color: var(--wot-dark-color2, #e0e0) !important;
279
+ }
280
+
281
+ /* Dialog */
282
+ .wd-dialog {
283
+ color: var(--wot-dark-color2, #e0e0e0) !important;
284
+ }
285
+
286
+ .wd-dialog__header {
287
+ color: var(--wot-dark-color, #fff) !important;
288
+ }
289
+
290
+ /* Loading */
291
+ .wd-loading-text {
292
+ color: var(--wot-dark-color3, #a0a0a0) !important;
293
+ }
294
+
295
+ /* Tag 标签 */
296
+ .wd-tag {
297
+ color: #fff !important;
298
+ }
299
+
300
+ /* Collapse 折叠面板 */
301
+ .wd-collapse {
302
+ background-color: transparent !important;
303
+ }
304
+
305
+ .wd-collapse-item__title {
306
+ color: var(--wot-dark-color2, #e0e0e0) !important;
307
+ }
308
+
309
+ /* Tabbar tab栏 */
310
+ .wd-tabbar {
311
+ background-color: #111111 !important;
312
+ border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
313
+ }
314
+
315
+ /* 未选中:白色 */
316
+ .wd-tabbar-item {
317
+ color: #ffffff;
318
+ }
319
+ .wd-tabbar-item__body .is-inactive {
320
+ color: #ffffff !important;
321
+ }
322
+
323
+ /* 选中态:蓝色(同权重,后定义覆盖前) */
324
+ .wd-tabbar-item--active {
325
+ color: var(--wot-color-primary, #2164f3) !important;
326
+ }
327
+ .wd-tabbar-item--active .wd-icon,
328
+ .wd-tabbar-item--active .wd-tabbar-item__icon {
329
+ color: var(--wot-color-primary, #2164f3) !important;
330
+ }
331
+ .wd-tabbar-item--active .wd-tabbar-item__body-title {
332
+ color: var(--wot-color-primary, #2164f3) !important;
333
+ }
334
+
335
+ /* Navbar 导航栏 */
336
+ .wd-navbar {
337
+ background-color: #1b1b1e !important;
338
+ }
339
+
340
+ /* Cell 右侧箭头图标 */
341
+ .wd-cell__arrow {
342
+ color: #555555 !important;
343
+ }
344
+
345
+ /* Cell 左侧图标 */
346
+ .wd-cell__left-icon {
347
+ color: #e0e0e0 !important;
348
+ }
349
+
350
+ /* Card 卡片 - 菜单卡片暗黑背景 */
351
+ .wd-card {
352
+ background: linear-gradient(180deg, #1e1e23 0%, #19191e 100%) !important;
353
+ box-shadow:
354
+ 0 8rpx 32rpx rgba(0, 0, 0, 0.25),
355
+ 0 2rpx 8rpx rgba(0, 0, 0, 0.15) !important;
356
+ border-color: rgba(255, 255, 255, 0.06) !important;
357
+ }
358
+
359
+ .wd-card__title {
360
+ color: #f9fafb !important;
361
+ }
362
+
363
+ /* Grid 网格 */
364
+ .wd-grid-item__text,
365
+ .wd-grid-item__content text {
366
+ color: #e5e7eb !important;
367
+ }
368
+
369
+ /* Grid 图标区域 - 去掉白色背景 */
370
+ .wd-grid-item__wrapper,
371
+ .wd-grid-item__content {
372
+ background-color: transparent !important;
373
+ }
374
+
375
+ .wd-grid-item {
376
+ background-color: transparent !important;
377
+ }
378
+
379
+ /* 快速访问区域(section-menus) */
380
+ .recent-section {
381
+ background-color: #1e1e23 !important;
382
+ box-shadow:
383
+ 0 4px 16px rgba(0, 0, 0, 0.2),
384
+ inset 0 1px 0 rgba(255, 255, 255, 0.05) !important;
385
+ border: 1px solid rgba(255, 255, 255, 0.06) !important;
386
+ }
387
+
388
+ .recent-label {
389
+ color: #d1d5db !important;
390
+ }
391
+
392
+ /* 非TabBar区域内的普通图标(排除tabbar避免干扰选中态) */
393
+ .wd-cell .wd-icon,
394
+ .wd-navbar .wd-icon,
395
+ .wd-button .wd-icon {
396
+ color: #e0e0e0 !important;
397
+
398
+ svg,
399
+ path {
400
+ fill: currentColor !important;
401
+ color: currentColor !important;
402
+ }
403
+ }
404
+
405
+ /* Search 搜索栏 */
406
+ .wd-search,
407
+ .wd-search.is-light,
408
+ .wd-search.is-plain {
409
+ background: transparent !important;
410
+ --wot-search-input-bg: #252530 !important;
411
+ --wot-search-cover-bg: #252530 !important;
412
+ --wot-search-placeholder-color: #666666 !important;
413
+ --wot-search-cancel-color: var(--wot-color-primary, #2164f3) !important;
414
+ --wot-search-icon-color: #888888 !important;
415
+
416
+ .wd-search__block {
417
+ background-color: #252530 !important;
418
+ }
419
+
420
+ .wd-search__cover {
421
+ background-color: #252530 !important;
422
+ }
423
+ }
424
+ }