@pubinfo/core 2.0.0-beta.31 → 2.0.0-beta.32

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 (124) hide show
  1. package/dist/{AppSetting-C1dyZ-8E.js → AppSetting-DhcdApoo.js} +17 -17
  2. package/dist/{HCheckList.vue_vue_type_script_setup_true_lang-B3wESRn7.js → HCheckList.vue_vue_type_script_setup_true_lang-Bi9jyf-Y.js} +2 -2
  3. package/dist/HDivider.vue_vue_type_script_setup_true_lang-DIHR-9Yv.js +20 -0
  4. package/dist/HToggle-Di3WNnzE.js +34 -0
  5. package/dist/{PreferencesContent-DgycKl9e.js → PreferencesContent-BdSTTSM-.js} +6 -6
  6. package/dist/{SettingBreadcrumb-BlgX0ZNE.js → SettingBreadcrumb-ChQx96br.js} +8 -8
  7. package/dist/{SettingCopyright-FmqadL1w.js → SettingCopyright-CkMab5VK.js} +8 -8
  8. package/dist/{SettingEnableTransition-dzMgw8cN.js → SettingEnableTransition-BSXU87vT.js} +15 -15
  9. package/dist/{SettingHome-BwlXsTTt.js → SettingHome-DwioPezC.js} +13 -13
  10. package/dist/{SettingMenu-B5tHMS24.js → SettingMenu-yvKu7Yoq.js} +25 -25
  11. package/dist/{SettingMode-Bh0mvh66.js → SettingMode-C99ADNad.js} +6 -6
  12. package/dist/{SettingNavSearch-D4g24uwl.js → SettingNavSearch-mURLLetZ.js} +8 -8
  13. package/dist/{SettingOther-DwTtu6As.js → SettingOther-BGoSdp7a.js} +9 -9
  14. package/dist/{SettingPage-cDQXtwcG.js → SettingPage-Wwy5PtzC.js} +7 -7
  15. package/dist/{SettingTabbar-m8X7jEJH.js → SettingTabbar-C2ya4r4U.js} +9 -9
  16. package/dist/{SettingThemes-CX9ISeD_.js → SettingThemes-7oYUooGR.js} +27 -27
  17. package/dist/{SettingToolbar-ByLjBezg.js → SettingToolbar-A6OiGfAD.js} +5 -5
  18. package/dist/{SettingTopbar-o8wBZolp.js → SettingTopbar-GDEPltxm.js} +9 -9
  19. package/dist/{SettingWidthMode-Ux60mKiv.js → SettingWidthMode-qwkmTFIK.js} +15 -15
  20. package/dist/{TopThinMode-17GrCZdo.js → TopThinMode-BkmPN66X.js} +1 -1
  21. package/dist/{_...all_-6l5FWUkL.js → _...all_-CdjdWhUr.js} +5 -5
  22. package/dist/assets/styles/index.d.ts +3 -3
  23. package/dist/{colors-DiWJrScm.js → colors-7rGvqeKK.js} +1 -1
  24. package/dist/{index-CfasTv4x.js → index-BC-gcL8e.js} +4 -4
  25. package/dist/{index-Md7zV10q.js → index-C-6XxK2D.js} +5 -5
  26. package/dist/{index-bsi-FZDt.js → index-CgLD0zqO.js} +169 -169
  27. package/dist/{index-BmMbAV1Y.js → index-CtyzB2cq.js} +13 -13
  28. package/dist/{index-Ckgil96Y.js → index-Cw1uN5m-.js} +2 -2
  29. package/dist/{index-Be7jJtXg.js → index-DVUDANdM.js} +5 -5
  30. package/dist/{index-Dzwhw1L9.js → index-Dpq4uqWd.js} +22 -22
  31. package/dist/{index-DgpcBgWl.js → index-DuoLZ3r3.js} +4394 -4294
  32. package/dist/{index-De_ME_Ws.js → index-sYaQXYQC.js} +2 -2
  33. package/dist/index.js +4 -4
  34. package/dist/{index.vue_vue_type_style_index_0_scoped_fa1c6ee4_lang-B3Eieo0k.js → index.vue_vue_type_style_index_0_scoped_051f4e99_lang-CuU-JtjC.js} +870 -856
  35. package/dist/interface.d.ts +12 -0
  36. package/dist/layout/ui-kit/HDialog.vue.d.ts +1 -1
  37. package/dist/layout/ui-kit/HSlideover.vue.d.ts +1 -1
  38. package/dist/layout/ui-kit/HTooltip.vue.d.ts +1 -1
  39. package/dist/{menu-CC5544p-.js → menu-BL6hH6OM.js} +1862 -1856
  40. package/dist/{pick-CJo2YiT-.js → pick-CAmKymZJ.js} +1 -1
  41. package/dist/request.js +34 -32
  42. package/dist/stores/plugin/persist.d.ts +2 -2
  43. package/dist/style.css +3 -3
  44. package/package.json +25 -26
  45. package/src/assets/styles/globals.css +188 -0
  46. package/src/assets/styles/index.ts +3 -3
  47. package/src/assets/styles/nprogress.css +68 -0
  48. package/src/assets/styles/rbac.css +51 -0
  49. package/src/assets/styles/resources/utils.css +53 -0
  50. package/src/assets/styles/resources/variables.css +5 -0
  51. package/src/components/NotAllowed/index.vue +4 -6
  52. package/src/components/PassStrengthValidator/index.vue +33 -48
  53. package/src/components/PassStrengthValidator/rule.vue +13 -25
  54. package/src/components/PubinfoIcon/index.vue +4 -8
  55. package/src/composables/watchDiff.ts +1 -1
  56. package/src/create.ts +10 -3
  57. package/src/interface.ts +19 -0
  58. package/src/layout/Layout.vue +113 -161
  59. package/src/layout/components/Content/IframeView.vue +1 -2
  60. package/src/layout/components/Content/LinkView.vue +2 -2
  61. package/src/layout/components/Content/index.vue +1 -2
  62. package/src/layout/components/Copyright/index.vue +7 -8
  63. package/src/layout/components/Header/TopMode/More.vue +24 -32
  64. package/src/layout/components/Header/TopMode/NotCursor.vue +20 -29
  65. package/src/layout/components/Header/TopMode/index.vue +1 -1
  66. package/src/layout/components/Header/index.vue +118 -206
  67. package/src/layout/components/Logo/index.vue +4 -19
  68. package/src/layout/components/Menu/item.vue +16 -25
  69. package/src/layout/components/SettingBar/AppSetting.vue +11 -11
  70. package/src/layout/components/SettingBar/components/DayNightToggle.vue +26 -120
  71. package/src/layout/components/SettingBar/components/SettingEnableTransition.vue +111 -136
  72. package/src/layout/components/SettingBar/components/SettingMode.vue +78 -88
  73. package/src/layout/components/SettingBar/components/SettingThemes.vue +48 -85
  74. package/src/layout/components/SettingBar/components/SettingWidthMode.vue +63 -71
  75. package/src/layout/components/SettingBar/index.vue +29 -62
  76. package/src/layout/components/Sidebar/MainSidebar.vue +81 -126
  77. package/src/layout/components/Sidebar/SubSidebar.vue +50 -59
  78. package/src/layout/components/Tools/Breadcrumb/index.vue +6 -12
  79. package/src/layout/components/Tools/DayNightSwitch.vue +40 -63
  80. package/src/layout/components/Tools/Preferences/PreferencesContent.vue +210 -277
  81. package/src/layout/components/Tools/Search.vue +5 -5
  82. package/src/layout/components/Tools/index.vue +1 -1
  83. package/src/layout/components/Topbar/Tabbar/MoreAction.vue +98 -145
  84. package/src/layout/components/Topbar/Tabbar/index.vue +259 -395
  85. package/src/layout/components/Topbar/Toolbar/Favorites.vue +4 -4
  86. package/src/layout/components/Topbar/Toolbar/index.vue +39 -56
  87. package/src/layout/components/Topbar/index.vue +16 -19
  88. package/src/layout/composables/useContext.ts +1 -1
  89. package/src/layout/composables/useMenu.ts +1 -1
  90. package/src/layout/composables/useTabbar.ts +1 -1
  91. package/src/layout/composables/useTitle.ts +1 -1
  92. package/src/layout/provider.ts +1 -1
  93. package/src/layout/ui-kit/HDialog.vue +1 -1
  94. package/src/layout/ui-kit/HDivider.vue +6 -35
  95. package/src/layout/ui-kit/HSlideover.vue +1 -1
  96. package/src/layout/ui-kit/HToggle.vue +49 -93
  97. package/src/layout/ui-kit/HTooltip.vue +1 -1
  98. package/src/locales/index.ts +1 -1
  99. package/src/pages/personal/profile/index.vue +1 -1
  100. package/src/pages/system/[...all].vue +4 -6
  101. package/src/pages/system/change-organization/index.vue +23 -37
  102. package/src/pages/system/change-password/components/ChangePasswordForm/index.vue +1 -1
  103. package/src/pages/system/change-password/index.vue +16 -29
  104. package/src/pages/system/not-permission/index.vue +4 -6
  105. package/src/route/guard/basic.ts +1 -1
  106. package/src/route/routes.ts +1 -1
  107. package/src/stores/modules/favorites.ts +1 -1
  108. package/src/stores/modules/menu.ts +1 -1
  109. package/src/stores/modules/route.ts +2 -2
  110. package/src/stores/modules/settings.ts +7 -7
  111. package/src/stores/modules/user.ts +2 -2
  112. package/src/stores/plugin/persist.ts +3 -3
  113. package/src/stores/plugin/sideEffect/tabbarStorage.ts +1 -1
  114. package/src/utils/crypto.ts +1 -1
  115. package/types/auto-imports.d.ts +1 -1
  116. package/types/components.d.ts +1 -0
  117. package/types/vue-router.d.ts +8 -8
  118. package/dist/HDivider-DgXBhPr0.js +0 -21
  119. package/dist/HToggle-Cd71WKvG.js +0 -34
  120. package/src/assets/styles/globals.scss +0 -189
  121. package/src/assets/styles/nprogress.scss +0 -63
  122. package/src/assets/styles/rbac.scss +0 -61
  123. package/src/assets/styles/resources/utils.scss +0 -53
  124. package/src/assets/styles/resources/variables.scss +0 -6
package/src/create.ts CHANGED
@@ -25,6 +25,7 @@ export function createPubinfo(
25
25
  const {
26
26
  rootContainer = '#app',
27
27
  immediate = true,
28
+ pure = false,
28
29
  modules = [],
29
30
  hooks: _hooks = {},
30
31
  } = options;
@@ -38,7 +39,7 @@ export function createPubinfo(
38
39
  history: createWebHashHistory(base),
39
40
  ...restRouterOptions,
40
41
  routes: [
41
- ...constantRoutes,
42
+ ...(pure ? [] : constantRoutes),
42
43
  ...routes,
43
44
  ],
44
45
  });
@@ -63,7 +64,11 @@ export function createPubinfo(
63
64
  const _modules = extractModules(modules);
64
65
 
65
66
  await resolveModules(_modules.pre, context);
66
- setupBasic(context);
67
+
68
+ if (!pure) {
69
+ setupBasic(context);
70
+ }
71
+
67
72
  await resolveModules(_modules.default, context);
68
73
  await setup?.(context);
69
74
  await resolveModules(_modules.post, context);
@@ -74,7 +79,9 @@ export function createPubinfo(
74
79
  (async () => {
75
80
  const { app, router } = await createApp();
76
81
  await router.isReady();
77
- await GetAPIValidateIp();
82
+ if (!pure) {
83
+ await GetAPIValidateIp();
84
+ }
78
85
  app.mount(rootContainer, true);
79
86
  })();
80
87
  }
package/src/interface.ts CHANGED
@@ -15,17 +15,35 @@ export interface Context {
15
15
  }
16
16
 
17
17
  export interface Options {
18
+ /** 根节点 */
18
19
  rootContainer?: string | Element
20
+
21
+ /**
22
+ * 立即执行
23
+ * @default true
24
+ */
19
25
  immediate?: boolean
26
+
27
+ /**
28
+ * 纯净模式
29
+ * @default false
30
+ */
31
+ pure?: boolean
32
+
33
+ /** 模块插件注册 */
20
34
  modules?: ModuleOptions[]
35
+
36
+ /** 生命周期 */
21
37
  hooks?: Partial<Hooks>
22
38
  }
23
39
 
24
40
  export interface Module {
25
41
  /** 唯一值 */
26
42
  name: string
43
+
27
44
  /** 初始化内容 */
28
45
  setup?: (ctx: Context) => void
46
+
29
47
  /**
30
48
  * 插件调用顺序:
31
49
  * - `enforce: pre` 插件
@@ -35,6 +53,7 @@ export interface Module {
35
53
  * - `enforce: post` 插件
36
54
  */
37
55
  enforce?: 'pre' | 'post'
56
+
38
57
  /** 钩子函数 */
39
58
  hooks?: Partial<Hooks>
40
59
  }
@@ -114,208 +114,160 @@ watch(() => routeInfo.path, () => {
114
114
  </div>
115
115
  </template>
116
116
 
117
- <style lang="scss" scoped>
118
- [data-app-width-mode="adaption"] {
119
- #app-main {
120
- width: 100%;
121
- }
117
+ <style scoped>
118
+ [data-app-width-mode="adaption"] #app-main {
119
+ --at-apply: w-full;
122
120
  }
123
121
 
124
- [data-app-width-mode="adaption-min-width"] {
125
- #app-main {
126
- width: max(var(--g-app-width), 100%);
127
- }
122
+ [data-app-width-mode="adaption-min-width"] #app-main {
123
+ width: max(var(--g-app-width), 100%);
128
124
  }
129
125
 
130
- [data-app-width-mode="center"] {
131
- #app-main {
132
- width: var(--g-app-width);
133
- }
126
+ [data-app-width-mode="center"] #app-main {
127
+ --at-apply: w-[--g-app-width];
134
128
  }
135
129
 
136
- [data-app-width-mode="center-max-width"] {
137
- #app-main {
138
- width: min(var(--g-app-width), 100%);
139
- }
130
+ [data-app-width-mode="center-max-width"] #app-main {
131
+ width: min(var(--g-app-width), 100%);
140
132
  }
141
133
 
142
- [data-mode="mobile"] {
143
- #app-main {
144
- width: 100%;
145
- }
134
+ [data-mode="mobile"] #app-main {
135
+ --at-apply: w-full;
136
+ }
146
137
 
147
- .sidebar-container {
148
- transform: translateX(calc((var(--g-main-sidebar-width) + var(--g-sub-sidebar-width)) * -1));
138
+ [data-mode="mobile"] .sidebar-container {
139
+ transform: translateX(calc((var(--g-main-sidebar-width) + var(--g-sub-sidebar-width)) * -1));
140
+ }
149
141
 
150
- &.show {
151
- transform: translateX(0);
152
- }
153
- }
142
+ [data-mode="mobile"] .sidebar-container.show {
143
+ transform: translateX(0);
144
+ }
154
145
 
155
- .main-container {
156
- margin-left: 0 !important;
157
- }
146
+ [data-mode="mobile"] .main-container {
147
+ margin-left: 0 !important;
148
+ }
158
149
 
159
- &[data-menu-mode="single"] {
160
- .sidebar-container {
161
- transform: translateX(calc(var(--g-sub-sidebar-width) * -1));
150
+ [data-mode="mobile"][data-menu-mode="single"] .sidebar-container {
151
+ transform: translateX(calc(var(--g-sub-sidebar-width) * -1));
152
+ }
162
153
 
163
- &.show {
164
- transform: translateX(0);
165
- }
166
- }
167
- }
154
+ [data-mode="mobile"][data-menu-mode="single"] .sidebar-container.show {
155
+ transform: translateX(0);
168
156
  }
169
157
 
170
158
  .layout {
171
- height: 100%;
159
+ --at-apply: h-full;
172
160
  }
173
161
 
174
162
  #app-main {
175
- height: 100%;
176
- margin: 0 auto;
177
- background-color: var(--g-bg);
178
-
179
- // 当前标签页全屏
180
- &.main-page-maximize {
181
- header,
182
- .sidebar-container {
183
- display: none;
184
- }
163
+ --at-apply: h-full bg-[--g-bg] mx-auto my-0;
164
+ }
185
165
 
186
- .wrapper {
187
- padding-top: 0;
166
+ #app-main.main-page-maximize header,
167
+ #app-main.main-page-maximize .sidebar-container {
168
+ --at-apply: hidden;
169
+ }
188
170
 
189
- .main-container {
190
- margin-left: 0;
171
+ #app-main.main-page-maximize .wrapper {
172
+ --at-apply: pt-0;
173
+ }
191
174
 
192
- .topbar-container {
193
- display: none;
194
- }
175
+ #app-main.main-page-maximize .wrapper .main-container {
176
+ --at-apply: ml-0;
177
+ }
195
178
 
196
- .main {
197
- margin: 0;
198
- }
199
- }
200
- }
179
+ #app-main.main-page-maximize .wrapper .main-container .topbar-container {
180
+ --at-apply: hidden;
181
+ }
201
182
 
202
- :deep([data-fixed-calc-width]) {
203
- width: 100%;
204
- transform: translateX(-50%);
205
- }
206
- }
183
+ #app-main.main-page-maximize .wrapper .main-container .main {
184
+ --at-apply: m-0;
185
+ }
186
+
187
+ #app-main.main-page-maximize :deep([data-fixed-calc-width]) {
188
+ --at-apply: w-full -translate-x-2/4;
207
189
  }
208
190
 
209
191
  .wrapper {
210
- position: relative;
211
- width: 100%;
212
- height: 100%;
192
+ --at-apply: relative w-full h-full;
213
193
  transition: padding-top 0.3s;
194
+ }
214
195
 
215
- .sidebar-container {
216
- position: fixed;
217
- top: 0;
218
- bottom: 0;
219
- z-index: 501;
220
- display: flex;
221
- width: calc(var(--g-main-sidebar-actual-width) + var(--g-sub-sidebar-actual-width));
222
- box-shadow: -1px 0 0 0 var(--g-border-color), 1px 0 0 0 var(--g-border-color);
223
- transition: width 0.3s, transform 0.3s, box-shadow 0.3s, top 0.3s;
224
- }
196
+ .wrapper .sidebar-container {
197
+ --at-apply: fixed top-0 bottom-0 z-501 flex;
198
+ width: calc(var(--g-main-sidebar-actual-width) + var(--g-sub-sidebar-actual-width));
199
+ box-shadow: -1px 0 0 0 var(--g-border-color), 1px 0 0 0 var(--g-border-color);
200
+ transition: width 0.3s, transform 0.3s, box-shadow 0.3s, top 0.3s;
201
+ }
225
202
 
226
- .sidebar-mask {
227
- position: fixed;
228
- top: 0;
229
- left: 0;
230
- z-index: 500;
231
- width: 100%;
232
- height: 100%;
233
- visibility: hidden;
234
- background-image: radial-gradient(transparent 1px, rgb(0 0 0 / 30%) 1px);
235
- background-size: 4px 4px;
236
- backdrop-filter: saturate(50%) blur(4px);
237
- opacity: 0;
238
- transition: all 0.2s;
239
-
240
- &.show {
241
- visibility: visible;
242
- opacity: 1;
243
- }
244
- }
203
+ .wrapper .sidebar-mask {
204
+ --at-apply: fixed z-[500] w-full h-full invisible opacity-0 left-0 top-0;
245
205
 
246
- .main-sidebar-container:not(.main-sidebar-leave-active) + .sub-sidebar-container {
247
- left: var(--g-main-sidebar-width);
248
- }
206
+ background-size: 4px 4px;
207
+ backdrop-filter: saturate(50%) blur(4px);
208
+ transition: all 0.2s;
209
+ background-image: radial-gradient(transparent 1px, rgb(0 0 0 / 30%) 1px);
210
+ }
249
211
 
250
- .main-container {
251
- display: flex;
252
- flex-direction: column;
253
- height: 0;
254
- min-height: 100%;
255
- margin-left: calc(var(--g-main-sidebar-actual-width) + var(--g-sub-sidebar-actual-width));
256
- box-shadow: -1px 0 0 0 var(--g-border-color), 1px 0 0 0 var(--g-border-color);
257
- transition: margin-left 0.3s, background-color 0.3s, box-shadow 0.3s;
258
-
259
- .main {
260
- position: relative;
261
- flex: auto;
262
- flex-basis: 0;
263
- height: 0;
264
- transition: 0.3s;
265
-
266
- .exit-main-page-maximize {
267
- --at-apply: bg-stone-7 dark:bg-stone-3 text-stone-3 dark:text-stone-7 op-50 hover:op-100 transition-opacity;
268
-
269
- position: fixed;
270
- top: -40px;
271
- right: -40px;
272
- z-index: 1000;
273
- width: 80px;
274
- height: 80px;
275
- cursor: pointer;
276
- border-radius: 50%;
277
-
278
- svg {
279
- position: absolute;
280
- bottom: 16px;
281
- left: 16px;
282
- }
283
- }
284
- }
212
+ .wrapper .sidebar-mask.show {
213
+ --at-apply: visible op-100;
214
+ }
285
215
 
286
- .topbar-container.has-tabbar + .main {
287
- margin: var(--g-tabbar-height) 0 0;
288
- }
216
+ .wrapper .main-sidebar-container:not(.main-sidebar-leave-active) + .sub-sidebar-container {
217
+ --at-apply: left-[--g-main-sidebar-width];
218
+ }
289
219
 
290
- .topbar-container.has-toolbar + .main {
291
- margin: var(--g-toolbar-height) 0 0;
292
- }
220
+ .wrapper .main-container {
221
+ --at-apply: flex flex-col h-0 min-h-full;
222
+ margin-left: calc(var(--g-main-sidebar-actual-width) + var(--g-sub-sidebar-actual-width));
223
+ box-shadow: -1px 0 0 0 var(--g-border-color), 1px 0 0 0 var(--g-border-color);
224
+ transition: margin-left 0.3s, background-color 0.3s, box-shadow 0.3s;
225
+ }
293
226
 
294
- .topbar-container.has-tabbar.has-toolbar + .main {
295
- margin: calc(var(--g-tabbar-height) + var(--g-toolbar-height)) 0 0;
296
- }
297
- }
227
+ .wrapper .main-container .main {
228
+ --at-apply: relative flex-[auto] basis-0 h-0;
229
+ transition: 0.3s;
230
+ }
231
+
232
+ .wrapper .main-container .main .exit-main-page-maximize {
233
+ --at-apply: bg-stone-7 dark:bg-stone-3 text-stone-3 dark:text-stone-7
234
+ op-50 hover:op-100 transition-opacity fixed z-[1000] w-20 h-20 cursor-pointer
235
+ rounded-[50%] -right-10 -top-10;
236
+ }
237
+
238
+ .wrapper .main-container .main .exit-main-page-maximize svg {
239
+ --at-apply: absolute bottom-4 left-4;
240
+ }
241
+
242
+ .wrapper .main-container .topbar-container.has-tabbar + .main {
243
+ margin: var(--g-tabbar-height) 0 0;
244
+ }
245
+
246
+ .wrapper .main-container .topbar-container.has-toolbar + .main {
247
+ margin: var(--g-toolbar-height) 0 0;
248
+ }
249
+
250
+ .wrapper .main-container .topbar-container.has-tabbar.has-toolbar + .main {
251
+ margin: calc(var(--g-tabbar-height) + var(--g-toolbar-height)) 0 0;
298
252
  }
299
253
 
300
254
  header:not(.header-leave-active) + .wrapper {
301
- padding-top: var(--g-header-height);
255
+ --at-apply: pt-[--g-header-height];
256
+ }
302
257
 
303
- .sidebar-container {
304
- top: var(--g-header-height);
258
+ header:not(.header-leave-active) + .wrapper .sidebar-container {
259
+ --at-apply: top-[--g-header-height];
260
+ }
305
261
 
306
- :deep(.sidebar-logo) {
307
- display: none;
308
- }
309
- }
262
+ header:not(.header-leave-active) + .wrapper .sidebar-container :deep(.sidebar-logo) {
263
+ --at-apply: hidden;
264
+ }
310
265
 
311
- .main-container {
312
- .topbar-container {
313
- top: var(--g-header-height);
266
+ header:not(.header-leave-active) + .wrapper .main-container .topbar-container {
267
+ --at-apply: top-[--g-header-height];
268
+ }
314
269
 
315
- :deep(.tools) {
316
- display: none;
317
- }
318
- }
319
- }
270
+ header:not(.header-leave-active) + .wrapper .main-container .topbar-container :deep(.tools) {
271
+ --at-apply: hidden;
320
272
  }
321
273
  </style>
@@ -52,8 +52,7 @@ watch(() => route.fullPath, (val) => {
52
52
  </div>
53
53
  </template>
54
54
 
55
- <style lang="scss" scoped>
56
- // iframe区动画
55
+ <style scoped>
57
56
  .fade-enter-active,
58
57
  .slide-left-enter-active,
59
58
  .slide-right-enter-active,
@@ -1,9 +1,9 @@
1
1
  <script setup lang="ts">
2
- import { PageMain } from '@/components';
3
2
  import { useClipboard } from '@vueuse/core';
4
3
  import Message from 'vue-m-message';
5
4
  import IconParkTwotonePlanet from '~icons/icon-park-twotone/planet';
6
5
  import RiExternalLinkFill from '~icons/ri/external-link-fill';
6
+ import { PageMain } from '@/components';
7
7
  import { useContext } from '../../composables/useContext';
8
8
 
9
9
  defineOptions({
@@ -51,7 +51,7 @@ function open() {
51
51
  </div>
52
52
  </template>
53
53
 
54
- <style lang="scss" scoped>
54
+ <style scoped>
55
55
  .fade-enter-active,
56
56
  .slide-left-enter-active,
57
57
  .slide-right-enter-active,
@@ -53,8 +53,7 @@ const Provider = computed(() => {
53
53
  <LinkView v-if="isLink" />
54
54
  </template>
55
55
 
56
- <style scoped lang="scss">
57
- // 主内容区动画
56
+ <style scoped>
58
57
  .fade-enter-active,
59
58
  .slide-left-enter-active,
60
59
  .slide-right-enter-active,
@@ -33,17 +33,16 @@ const { settingsStore } = useContext();
33
33
  </footer>
34
34
  </template>
35
35
 
36
- <style lang="scss" scoped>
36
+ <style scoped>
37
37
  .copyright {
38
38
  --at-apply: flex items-center justify-center flex-wrap my-4 px-4 text-sm text-stone-5;
39
+ }
39
40
 
40
- span,
41
- a {
42
- --at-apply: px-1;
43
- }
41
+ .copyright span,a {
42
+ --at-apply: px-1;
43
+ }
44
44
 
45
- a {
46
- --at-apply: text-center no-underline text-stone-5 hover:text-dark dark:hover:text-light transition;
47
- }
45
+ .copyright a {
46
+ --at-apply: text-center no-underline text-stone-5 hover:text-dark dark:hover:text-light transition;
48
47
  }
49
48
  </style>
@@ -54,50 +54,42 @@ function menuClick(index: number, item: Menu.recordMainRaw) {
54
54
  </VMenu>
55
55
  </template>
56
56
 
57
- <style lang="scss" scoped>
57
+ <style scoped>
58
58
  .menu-more-container {
59
- min-width: 180px;
60
- padding: 10px;
61
- padding-bottom: 0;
59
+ --at-apply: min-w-180px p-10px pb-0;
60
+ }
62
61
 
63
- .is-dev {
64
- cursor: not-allowed;
62
+ .menu-more-container .is-dev {
63
+ --at-apply: cursor-not-allowed;
64
+ }
65
65
 
66
- i {
67
- filter: grayscale(100%);
68
- }
66
+ .menu-more-container .is-dev i {
67
+ filter: grayscale(100%);
68
+ }
69
69
 
70
- span {
71
- opacity: 0.8;
72
- }
73
- }
70
+ .menu-more-container .is-dev span {
71
+ opacity: 0.8;
74
72
  }
75
73
  </style>
76
74
 
77
- <style lang="scss">
75
+ <style>
78
76
  .v-popper--theme-more-appley {
77
+ --at-apply: z-1000;
79
78
  z-index: 1000;
79
+ }
80
80
 
81
- .v-popper__inner {
82
- background-image: linear-gradient(-43deg, #fff 0%, #eaf3ff 87%);
83
- border: 1px solid #fff;
84
- border-radius: 8px;
85
- box-shadow: 8px 16px 28px -8px #8195b74f;
86
- }
81
+ .v-popper--theme-more-appley .v-popper__inner {
82
+ --at-apply: border border-white border-solid rounded-8px;
83
+ background-image: linear-gradient(-43deg, #fff 0%, #eaf3ff 87%);
84
+ box-shadow: 8px 16px 28px -8px #8195b74f;
85
+ }
87
86
 
88
- .v-popper__arrow-container {
89
- display: none;
90
- }
87
+ .v-popper--theme-more-appley .v-popper__arrow-container {
88
+ --at-apply: hidden;
91
89
  }
92
90
 
93
- .dark {
94
- .v-popper--theme-more-appley {
95
- .v-popper__inner {
96
- background-image: linear-gradient(-43deg, #141414 0%, #141414 87%);
97
- border: 1px solid #4b4f53;
98
- border-radius: 8px;
99
- box-shadow: none;
100
- }
101
- }
91
+ .dark .v-popper--theme-more-appley .v-popper__inner {
92
+ --at-apply: border border-#4b4f53 border-solid rounded-8px shadow-[none];
93
+ background-image: linear-gradient(-43deg, #141414 0%, #141414 87%);
102
94
  }
103
95
  </style>
@@ -34,44 +34,35 @@ withDefaults(defineProps<{
34
34
  </VMenu>
35
35
  </template>
36
36
 
37
- <style lang="scss" scoped>
37
+ <style scoped>
38
38
  .not-cursor-container {
39
- width: 100%;
40
- height: 100%;
39
+ --at-apply: size-full;
41
40
  }
42
41
  </style>
43
42
 
44
- <style lang="scss">
43
+ <style>
45
44
  .v-popper--theme-not-cursor {
46
- z-index: 1000;
45
+ --at-apply: z-1000;
46
+ }
47
+
48
+ .v-popper--theme-not-cursor .v-popper__inner {
49
+ --at-apply: w-228px h-123px border border-solid border-white rounded-md;
47
50
 
48
- .v-popper__inner {
49
- width: 228px;
50
- height: 123px;
51
- background-image: linear-gradient(-55deg, #fff 0%, #eaf3ff 87%);
52
- border: 1px solid #fff;
53
- border-radius: 6px;
54
- box-shadow: 4px 8px 14px -4px #8195b74f;
51
+ background-image: linear-gradient(-55deg, #fff 0%, #eaf3ff 87%);
52
+ box-shadow: 4px 8px 14px -4px #8195b74f;
53
+ }
55
54
 
56
- >div {
57
- width: 100%;
58
- height: 100%;
59
- }
60
- }
55
+ .v-popper--theme-not-cursor .v-popper__inner > div {
56
+ --at-apply: size-full;
57
+ }
61
58
 
62
- .v-popper__arrow-container {
63
- display: none;
64
- }
59
+ .v-popper--theme-not-cursor .v-popper__arrow-container {
60
+ --at-apply: hidden;
61
+ display: none;
65
62
  }
66
63
 
67
- .dark {
68
- .v-popper--theme-not-cursor {
69
- .v-popper__inner {
70
- background-image: linear-gradient(-43deg, #141414 0%, #141414 87%);
71
- border: 1px solid #4b4f53;
72
- border-radius: 8px;
73
- box-shadow: none;
74
- }
75
- }
64
+ .dark .v-popper--theme-not-cursor .v-popper__inner {
65
+ --at-apply: shadow-[none] rounded-8px border border-solid border-[#4b4f53];
66
+ background-image: linear-gradient(-43deg, #141414 0%, #141414 87%);
76
67
  }
77
68
  </style>
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
2
  import type { Menu } from '#/menu';
3
- import { PubinfoIcon } from '@/components';
4
3
  import { useElementSize } from '@vueuse/core';
5
4
  import SolarWidget5BoldDuotone from '~icons/solar/widget-5-bold-duotone';
5
+ import { PubinfoIcon } from '@/components';
6
6
  import { useContext } from '../../../composables/useContext';
7
7
  import useMenu from '../../../composables/useMenu';
8
8
  import More from './More.vue';