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

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 +17 -2
  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 +24 -2
  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
@@ -62,41 +62,28 @@ const isValidate = ref(false);
62
62
  </div>
63
63
  </template>
64
64
 
65
- <style lang="scss" scoped>
65
+ <style scoped>
66
66
  .password-bg {
67
- box-sizing: border-box;
68
- display: flex;
69
- flex-direction: column;
70
- width: 100%;
71
- height: 100%;
72
- padding: 25px;
67
+ --at-apply: box-border flex flex-col size-full p-[25px];
73
68
  background: url("@/assets/images/login-small.png") no-repeat 50%;
74
69
  background-size: cover;
70
+ }
71
+
72
+ .change-password-form {
73
+ --at-apply: flex flex-col w-[560px] min-h-[680px] overflow-hidden backdrop-blur-[7.5px]
74
+ pt-16 pb-[34px] px-20 rounded-lg border-2 border-solid border-white;
75
75
 
76
- .change-password-form {
77
- display: flex;
78
- flex-direction: column;
79
- width: 560px;
80
- min-height: 680px;
81
- padding: 64px 80px 34px;
82
- overflow: hidden;
83
- background: linear-gradient(180deg, hsl(0deg 0% 100% / 90%), hsl(0deg 0% 100% / 75%));
84
- backdrop-filter: blur(7.5px);
85
- border: 2px solid #fff;
86
- border-radius: 8px;
87
- box-shadow: 0 20px 50px rgb(29 42 165 / 5%);
88
- }
76
+ box-shadow: 0 20px 50px rgb(29 42 165 / 5%);
77
+ background: linear-gradient(180deg, hsl(0deg 0% 100% / 90%), hsl(0deg 0% 100% / 75%));
89
78
  }
90
79
 
91
- [data-theme="dark"] {
92
- .password-bg {
93
- background: url("@/assets/images/login-small_dark.webp") no-repeat 50%;
94
- background-size: cover;
95
- }
80
+ :deep([data-theme="dark"]) .password-bg {
81
+ background: url("@/assets/images/login-small_dark.webp") no-repeat 50%;
82
+ background-size: cover;
83
+ }
96
84
 
97
- .change-password-form {
98
- background: #0f1e3b;
99
- border-color: #0f1e3b;
100
- }
85
+ :deep([data-theme="dark"]) .change-password-form {
86
+ background: #0f1e3b;
87
+ border-color: #0f1e3b;
101
88
  }
102
89
  </style>
@@ -58,16 +58,14 @@ function goBack() {
58
58
  </div>
59
59
  </template>
60
60
 
61
- <style lang="scss" scoped>
61
+ <style scoped>
62
62
  .noPermissionIcon {
63
63
  background: url("@/assets/icons/403.svg") no-repeat;
64
64
  background-size: 100% 100%;
65
65
  }
66
66
 
67
- [data-theme="dark"] {
68
- .noPermissionIcon {
69
- background: url("@/assets/icons/403_dark.svg") no-repeat;
70
- background-size: 100% 100%;
71
- }
67
+ [data-theme="dark"] .noPermissionIcon {
68
+ background: url("@/assets/icons/403_dark.svg") no-repeat;
69
+ background-size: 100% 100%;
72
70
  }
73
71
  </style>
@@ -1,8 +1,8 @@
1
1
  import type { Router } from 'vue-router';
2
+ import { useNProgress } from '@vueuse/integrations/useNProgress';
2
3
  import {
3
4
  useSettingsStore,
4
5
  } from '@/stores';
5
- import { useNProgress } from '@vueuse/integrations/useNProgress';
6
6
 
7
7
  /** 基础路由守卫 */
8
8
  export function createBasicGuard(router: Router) {
@@ -1,8 +1,8 @@
1
1
  import type { Route } from '#/vue-router';
2
2
  import type { RouteRecordRaw } from 'vue-router';
3
+ import { isUndefined } from 'lodash-es';
3
4
  import { readProject } from '@/context';
4
5
  import { useSettingsStore, useUserStore } from '@/stores';
5
- import { isUndefined } from 'lodash-es';
6
6
 
7
7
  interface AsyncRoutesOptions {
8
8
  /** 路由排序 */
@@ -2,8 +2,8 @@ import type { Favorites } from '#/favorites';
2
2
  import type { Route } from '#/vue-router';
3
3
  import type { RouteLocationNormalized, RouteRecordRaw } from 'vue-router';
4
4
 
5
- import { resolveRoutePath } from '@/utils';
6
5
  import { defineStore } from 'pinia';
6
+ import { resolveRoutePath } from '@/utils';
7
7
  import { STORE_NAME } from '../enum';
8
8
 
9
9
  /**
@@ -1,8 +1,8 @@
1
1
  import type { Menu } from '#/menu';
2
2
 
3
- import { resolveRoutePath } from '@/utils';
4
3
  import { get, isNumber } from 'lodash-es';
5
4
  import { defineStore } from 'pinia';
5
+ import { resolveRoutePath } from '@/utils';
6
6
 
7
7
  import { STORE_NAME } from '../enum';
8
8
  import useRouteStore from './route';
@@ -1,12 +1,12 @@
1
1
  import type { Route } from '#/vue-router';
2
2
  import type { RouteMeta, RouteRecordRaw } from 'vue-router';
3
3
 
4
+ import { cloneDeep, defaultTo, get, has, isArray, isString, isUndefined, merge, omit } from 'lodash-es';
5
+ import { defineStore } from 'pinia';
4
6
  import { GetApiRouteList } from '@/api/system/app';
5
7
  import { readProject } from '@/context';
6
8
  import { getAsyncRoutes, getSystemRoutes } from '@/route';
7
9
  import { resolveRoutePath } from '@/utils';
8
- import { cloneDeep, defaultTo, get, has, isArray, isString, isUndefined, merge, omit } from 'lodash-es';
9
- import { defineStore } from 'pinia';
10
10
  import { STORE_NAME } from '../enum';
11
11
  import useSettingsStore from './settings';
12
12
  import useTabbarStore from './tabbar';
@@ -1,4 +1,11 @@
1
1
  import type { RouteLocationNormalized, RouteMeta } from 'vue-router';
2
+ import { FrownOutlined } from '@ant-design/icons-vue';
3
+ import { usePreferredDark } from '@vueuse/core';
4
+ import { Modal } from 'ant-design-vue';
5
+ import { cloneDeep, defaultsDeep, get, set } from 'lodash-es';
6
+ import { defineStore } from 'pinia';
7
+ import { createVNode } from 'vue';
8
+ import Message from 'vue-m-message';
2
9
  import {
3
10
  getSysconfigGetSysThemeStyleConfig,
4
11
  getSysconfigGetThemeStyleConfig,
@@ -8,13 +15,6 @@ import {
8
15
  } from '@/api/modules/configData';
9
16
  import { getSettings } from '@/config';
10
17
  import { objectToPaths, storage } from '@/utils';
11
- import { FrownOutlined } from '@ant-design/icons-vue';
12
- import { usePreferredDark } from '@vueuse/core';
13
- import { Modal } from 'ant-design-vue';
14
- import { cloneDeep, defaultsDeep, get, set } from 'lodash-es';
15
- import { defineStore } from 'pinia';
16
- import { createVNode } from 'vue';
17
- import Message from 'vue-m-message';
18
18
  import { STORE_NAME } from '../enum';
19
19
 
20
20
  const useSettingsStore = defineStore(
@@ -1,11 +1,11 @@
1
1
  import type { AxiosRequestHeaders } from 'axios';
2
2
  import type { ComputedRef } from 'vue';
3
+ import { find } from 'lodash-es';
4
+ import { defineStore } from 'pinia';
3
5
  import { postAuthChangeLoginOrg, postAuthLogin } from '@/api/modules/auth';
4
6
  import { getRbacResourceGrantedResources, getRbacUserUserEntireInfo, putRbacUserChangePassword } from '@/api/modules/rbac';
5
7
  import { usePubinfoContext } from '@/context';
6
8
  import { getEncryptedData } from '@/utils';
7
- import { find } from 'lodash-es';
8
- import { defineStore } from 'pinia';
9
9
  import { STORE_NAME } from '../enum';
10
10
 
11
11
  export interface UserStore {
@@ -1,7 +1,7 @@
1
1
  import type { Pinia } from 'pinia';
2
- import type { PersistedStateFactoryOptions, Serializer } from 'pinia-plugin-persistedstate';
3
- import { storage } from '@/utils';
2
+ import type { PluginOptions, Serializer } from 'pinia-plugin-persistedstate';
4
3
  import { createPersistedState } from 'pinia-plugin-persistedstate';
4
+ import { storage } from '@/utils';
5
5
 
6
6
  export function customSerializer(): Serializer {
7
7
  return {
@@ -14,7 +14,7 @@ export function customSerializer(): Serializer {
14
14
  };
15
15
  }
16
16
 
17
- export function createPersistedStateOptions(): PersistedStateFactoryOptions {
17
+ export function createPersistedStateOptions(): PluginOptions {
18
18
  return {
19
19
  storage: storage.local,
20
20
  key: id => `_${id}`,
@@ -1,8 +1,8 @@
1
1
  import type { PiniaPluginContext } from 'pinia';
2
2
  import type useTabbarStore from '../../modules/tabbar';
3
+ import { cloneDeep } from 'lodash-es';
3
4
  import { GetAPITabbar, GetAPITabbarEdit } from '@/api/system/user';
4
5
  import { storage } from '@/utils';
5
- import { cloneDeep } from 'lodash-es';
6
6
  import { STORE_NAME } from '../../enum';
7
7
  import { getTabbarMemoryKey } from '../../helper';
8
8
  import useSettingsStore from '../../modules/settings';
@@ -1,6 +1,6 @@
1
- import { getAuthLoginKey } from '@/api/modules/auth';
2
1
  import JSEncrypt from 'jsencrypt';
3
2
  import { template } from 'lodash-es';
3
+ import { getAuthLoginKey } from '@/api/modules/auth';
4
4
 
5
5
  export function compilePublicKey(key: string) {
6
6
  const compiled = template('-----BEGIN PUBLIC KEY-----\n<%= publickKey %>\n-----END PUBLIC KEY-----');
@@ -80,6 +80,6 @@ declare global {
80
80
  // for type re-export
81
81
  declare global {
82
82
  // @ts-ignore
83
- export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
83
+ export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
84
84
  import('vue')
85
85
  }
@@ -2,6 +2,7 @@
2
2
  // @ts-nocheck
3
3
  // Generated by unplugin-vue-components
4
4
  // Read more: https://github.com/vuejs/core/pull/3399
5
+ // biome-ignore lint: disable
5
6
  export {}
6
7
 
7
8
  /* prettier-ignore */
@@ -32,14 +32,14 @@ type RouterMetaRaw = RequireExactlyOne<Partial<RouterMetaRawBaseOptions>, 'title
32
32
 
33
33
  export declare namespace Route {
34
34
 
35
- type mainMeta =
36
- | 'title'
37
- | 'i18n'
38
- | 'icon'
39
- | 'activeIcon'
40
- | 'auth'
41
- | 'enabled'
42
- | 'provider';
35
+ type mainMeta
36
+ = | 'title'
37
+ | 'i18n'
38
+ | 'icon'
39
+ | 'activeIcon'
40
+ | 'auth'
41
+ | 'enabled'
42
+ | 'provider';
43
43
 
44
44
  type recordMainRawBasicMeta = Partial<Pick<RouterMetaRawBaseOptions, mainMeta>>;
45
45
 
@@ -1,21 +0,0 @@
1
- import { defineComponent as i, createElementBlock as n, openBlock as r, createElementVNode as e, renderSlot as c, toDisplayString as _ } from "vue";
2
- import { _ as d } from "./_plugin-vue_export-helper-CHgC5LLL.js";
3
- const a = { "w-full": "" }, l = { class: "divider" }, p = { class: "divider-card" }, m = /* @__PURE__ */ i({
4
- name: "HDivider",
5
- __name: "HDivider",
6
- props: {
7
- title: {}
8
- },
9
- setup(t) {
10
- const o = t;
11
- return (s, v) => (r(), n("div", a, [
12
- e("div", l, [
13
- e("div", p, _(o.title), 1)
14
- ]),
15
- c(s.$slots, "default", {}, void 0, !0)
16
- ]));
17
- }
18
- }), h = /* @__PURE__ */ d(m, [["__scopeId", "data-v-424021cc"]]);
19
- export {
20
- h as _
21
- };
@@ -1,34 +0,0 @@
1
- import { defineComponent as d, computed as m, createElementBlock as c, openBlock as r, withDirectives as i, createElementVNode as l, isRef as _, vModelCheckbox as f, unref as b } from "vue";
2
- import { _ as V } from "./_plugin-vue_export-helper-CHgC5LLL.js";
3
- const x = { class: "switch" }, g = /* @__PURE__ */ d({
4
- __name: "HToggle",
5
- props: {
6
- modelValue: { type: Boolean },
7
- disabled: { type: Boolean, default: !1 },
8
- onIcon: {},
9
- offIcon: {}
10
- },
11
- emits: ["update:modelValue"],
12
- setup(n, { emit: s }) {
13
- const a = n, p = s, o = m({
14
- get() {
15
- return a.modelValue;
16
- },
17
- set(t) {
18
- p("update:modelValue", t);
19
- }
20
- });
21
- return (t, e) => (r(), c("label", x, [
22
- i(l("input", {
23
- "onUpdate:modelValue": e[0] || (e[0] = (u) => _(o) ? o.value = u : null),
24
- type: "checkbox"
25
- }, null, 512), [
26
- [f, b(o)]
27
- ]),
28
- e[1] || (e[1] = l("span", null, null, -1))
29
- ]));
30
- }
31
- }), B = /* @__PURE__ */ V(g, [["__scopeId", "data-v-2b5064d6"]]);
32
- export {
33
- B as _
34
- };
@@ -1,189 +0,0 @@
1
- // 页面布局 CSS 变量
2
- :root {
3
- // 这是一个复合变量
4
- // 当页宽模式为 adaption-min-width 时,它代表 最小宽度
5
- // 当页宽模式为 center 时,它代表 固定宽度
6
- // 当页宽模式为 center-max-width 时,它代表 最大宽度
7
- --g-app-width: #{$g-app-width};
8
-
9
- // 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
10
- --g-header-width: #{$g-header-width};
11
-
12
- // 头部高度
13
- --g-header-height: 56px;
14
-
15
- // 侧边栏宽度
16
- --g-main-sidebar-width: 63px;
17
- --g-sub-sidebar-width: 220px;
18
- --g-sub-sidebar-collapse-width: 64px;
19
-
20
- // 侧边栏 Logo 区域高度
21
- --g-sidebar-logo-height: 50px;
22
-
23
- // 标签栏高度
24
- --g-tabbar-height: 48px;
25
-
26
- // 工具栏高度
27
- --g-toolbar-height: 45px;
28
-
29
- // 标签页最大最小宽度,两个宽度为同一数值时,则为固定宽度,反之将宽度设置为 unset 则为自适应
30
- --g-tabbar-tab-max-width: 150px;
31
- --g-tabbar-tab-min-width: 150px;
32
- }
33
-
34
- // 明暗模式 CSS 变量
35
- /* stylelint-disable-next-line no-duplicate-selectors */
36
- :root {
37
- color-scheme: light;
38
-
39
- --g-box-shadow-color: rgb(0 0 0 / 12%);
40
-
41
- &::view-transition-old(root),
42
- &::view-transition-new(root) {
43
- mix-blend-mode: normal;
44
- animation: none;
45
- }
46
-
47
- &::view-transition-old(root) {
48
- z-index: 1;
49
- }
50
-
51
- &::view-transition-new(root) {
52
- z-index: 9999;
53
- }
54
-
55
- &.dark {
56
- color-scheme: dark;
57
-
58
- --g-box-shadow-color: rgb(0 0 0 / 72%);
59
-
60
- &::view-transition-old(root) {
61
- z-index: 9999;
62
- }
63
-
64
- &::view-transition-new(root) {
65
- z-index: 1;
66
- }
67
- }
68
- }
69
-
70
- ::-webkit-scrollbar {
71
- width: 12px;
72
- height: 12px;
73
- }
74
-
75
- ::-webkit-scrollbar-thumb {
76
- background-color: rgb(0 0 0 / 40%);
77
- background-clip: padding-box;
78
- border: 3px solid transparent;
79
- border-radius: 6px;
80
- }
81
-
82
- ::-webkit-scrollbar-thumb:hover {
83
- background-color: rgb(0 0 0 / 50%);
84
- }
85
-
86
- ::-webkit-scrollbar-track {
87
- background-color: transparent;
88
- }
89
-
90
- html,
91
- body {
92
- height: 100%;
93
- }
94
-
95
- body {
96
- box-sizing: border-box;
97
- margin: 0;
98
- font-family: Lato, "PingFang SC", "Microsoft YaHei", sans-serif;
99
- background-color: var(--g-container-bg);
100
- -webkit-tap-highlight-color: transparent;
101
-
102
- &.overflow-hidden {
103
- overflow: hidden;
104
- }
105
- }
106
-
107
- * {
108
- box-sizing: inherit;
109
- }
110
-
111
- // 右侧内容区针对fixed元素,有横向铺满的需求,可在fixed元素上设置 [data-fixed-calc-width]
112
- [data-fixed-calc-width] {
113
- position: fixed;
114
- right: 0;
115
- left: 50%;
116
- }
117
-
118
- [data-app-width-mode="adaption"],
119
- [data-app-width-mode="adaption-min-width"] {
120
- [data-fixed-calc-width] {
121
- width: calc(100% - var(--g-main-sidebar-actual-width) - var(--g-sub-sidebar-actual-width));
122
- transform: translateX(-50%) translateX(calc(var(--g-main-sidebar-actual-width) / 2)) translateX(calc(var(--g-sub-sidebar-actual-width) / 2));
123
- }
124
- }
125
-
126
- [data-app-width-mode="center"],
127
- [data-app-width-mode="center-max-width"] {
128
- [data-fixed-calc-width] {
129
- width: calc(var(--g-app-width) - var(--g-main-sidebar-actual-width) - var(--g-sub-sidebar-actual-width));
130
- transform: translateX(-50%) translateX(calc(var(--g-main-sidebar-actual-width) / 2)) translateX(calc(var(--g-sub-sidebar-actual-width) / 2));
131
- }
132
-
133
- // @media screen and (max-width: $g-app-width) {
134
- // [data-fixed-calc-width] {
135
- // width: calc(100% - var(--g-main-sidebar-actual-width) - var(--g-sub-sidebar-actual-width));
136
- // transform: translateX(-50%) translateX(calc(var(--g-main-sidebar-actual-width) / 2)) translateX(calc(var(--g-sub-sidebar-actual-width) / 2));
137
- // }
138
- // }
139
- }
140
-
141
- [data-mode="mobile"] {
142
- [data-fixed-calc-width] {
143
- width: 100% !important;
144
- transform: translateX(-50%) !important;
145
- }
146
- }
147
-
148
- // textarea 字体跟随系统
149
- textarea {
150
- font-family: inherit;
151
- }
152
-
153
- /* Overrides Floating Vue */
154
- .v-popper--theme-dropdown,
155
- .v-popper--theme-tooltip {
156
- --at-apply: inline-flex;
157
- }
158
-
159
- .v-popper--theme-dropdown .v-popper__inner,
160
- .v-popper--theme-tooltip .v-popper__inner {
161
- --at-apply: bg-white dark:bg-dark-9 text-dark dark:text-white rounded shadow ring-1 ring-gray-200 dark:ring-gray-800 border border-solid border-stone/20 text-xs font-normal;
162
-
163
- box-shadow: 0 6px 30px rgb(0 0 0 / 10%);
164
- }
165
-
166
- .v-popper--theme-tooltip .v-popper__arrow-inner,
167
- .v-popper--theme-dropdown .v-popper__arrow-inner {
168
- --at-apply: border-white dark:border-stone-8;
169
- }
170
-
171
- .v-popper--theme-tooltip .v-popper__arrow-outer,
172
- .v-popper--theme-dropdown .v-popper__arrow-outer {
173
- --at-apply: border-stone/20;
174
- }
175
-
176
- .v-popper--theme-tooltip.v-popper--shown,
177
- .v-popper--theme-tooltip.v-popper--shown * {
178
- transition: none !important;
179
- }
180
-
181
- [data-overlayscrollbars-contents] {
182
- overscroll-behavior: contain;
183
- }
184
-
185
- // medium-zoom
186
- .medium-zoom-overlay,
187
- .medium-zoom-image {
188
- z-index: 3000;
189
- }
@@ -1,63 +0,0 @@
1
- #nprogress {
2
- pointer-events: none;
3
-
4
- .bar {
5
- position: fixed;
6
- top: 0;
7
- left: 0;
8
- z-index: 1031;
9
- width: 100%;
10
- height: 2px;
11
- background: rgb(var(--ui-primary));
12
- }
13
-
14
- .peg {
15
- position: absolute;
16
- right: 0;
17
- display: block;
18
- width: 100px;
19
- height: 100%;
20
- box-shadow: 0 0 10px rgb(var(--ui-primary)), 0 0 5px rgb(var(--ui-primary));
21
- opacity: 1;
22
- transform: rotate(3deg) translate(0, -4px);
23
- }
24
-
25
- .spinner {
26
- position: fixed;
27
- top: 11px;
28
- right: 14px;
29
- z-index: 1031;
30
- display: block;
31
-
32
- .spinner-icon {
33
- box-sizing: border-box;
34
- width: 18px;
35
- height: 18px;
36
- border: solid 2px transparent;
37
- border-top-color: rgb(var(--ui-primary));
38
- border-left-color: rgb(var(--ui-primary));
39
- border-radius: 50%;
40
- animation: nprogress-spinner 400ms linear infinite;
41
- }
42
- }
43
- }
44
-
45
- .nprogress-custom-parent {
46
- position: relative;
47
- overflow: hidden;
48
-
49
- #nprogress .spinner,
50
- #nprogress .bar {
51
- position: absolute;
52
- }
53
- }
54
-
55
- @keyframes nprogress-spinner {
56
- 0% { transform: rotate(0deg); }
57
- 100% { transform: rotate(360deg); }
58
- }
59
-
60
- @keyframes nprogress-spinner {
61
- 0% { transform: rotate(0deg); }
62
- 100% { transform: rotate(360deg); }
63
- }
@@ -1,61 +0,0 @@
1
- // 目前为rbac专用配置,添加自定义样式,在模板中移除
2
- [data-theme="classic"] {
3
- #app-main {
4
- // FIXME: 临时解决方案 --------
5
- background-image: url("@/assets/images/slider-bg.png");
6
- background-repeat: no-repeat;
7
- background-position: left bottom;
8
- background-size: 450px 89%;
9
-
10
- .sub-sidebar-container {
11
- background-color: transparent;
12
- }
13
-
14
- & > header {
15
- background-image: url("@/assets/images/header-bg.png");
16
- background-repeat: no-repeat;
17
- background-position: left bottom;
18
- background-size: cover;
19
-
20
- .menu {
21
- background-color: transparent !important;
22
- }
23
-
24
- .header-container {
25
- .tools {
26
- & > span {
27
- background-color: #4173f9;
28
- }
29
- }
30
- }
31
- }
32
-
33
- .page-container {
34
- padding-left: 0;
35
- }
36
- }
37
-
38
- .wrapper .sidebar-container {
39
- box-shadow: none !important;
40
- }
41
-
42
- .wrapper .main-container {
43
- box-shadow: none !important;
44
- }
45
- }
46
-
47
- /* FIXME: Over rides @pubinfo/pro-components */
48
- .pro-table {
49
- .ant-form-item {
50
- margin-bottom: 16px;
51
- }
52
-
53
- .ant-card .ant-card-body {
54
- padding: 16px;
55
- }
56
-
57
- .ant-card .ant-card-head {
58
- min-height: 48px;
59
- padding: 0 16px;
60
- }
61
- }
@@ -1,53 +0,0 @@
1
- // 文字超出隐藏,默认为单行超出隐藏,可设置多行
2
- @mixin text-overflow($line: 1, $fixed-width: true) {
3
- @if $line == 1 and $fixed-width == true {
4
- overflow: hidden;
5
- text-overflow: ellipsis;
6
- white-space: nowrap;
7
- } @else {
8
- /* stylelint-disable-next-line value-no-vendor-prefix */
9
- display: -webkit-box;
10
- -webkit-box-orient: vertical;
11
- overflow: hidden;
12
- -webkit-line-clamp: $line;
13
- }
14
- }
15
-
16
- // 定位居中,默认水平居中,可选择垂直居中,或者水平垂直都居中
17
- @mixin position-center($type: x) {
18
- position: absolute;
19
-
20
- @if $type == x {
21
- left: 50%;
22
- transform: translateX(-50%);
23
- }
24
-
25
- @if $type == y {
26
- top: 50%;
27
- transform: translateY(-50%);
28
- }
29
-
30
- @if $type == xy {
31
- top: 50%;
32
- left: 50%;
33
- transform: translateX(-50%) translateY(-50%);
34
- }
35
- }
36
-
37
- // 文字两端对齐
38
- %justify-align {
39
- text-align: justify;
40
- text-align-last: justify;
41
- }
42
-
43
- // 清除浮动
44
- %clearfix {
45
- zoom: 1;
46
-
47
- &::before,
48
- &::after {
49
- display: block;
50
- clear: both;
51
- content: "";
52
- }
53
- }