@melt-js/libs-vben 0.0.0-stage → 2026.11.8-2

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 (174) hide show
  1. package/LICENSE +10 -0
  2. package/README.md +86 -2
  3. package/package.json +98 -3
  4. package/src/access/access-control.vue +47 -0
  5. package/src/access/accessible.ts +236 -0
  6. package/src/access/directive.ts +42 -0
  7. package/src/access/index.ts +4 -0
  8. package/src/access/use-access.ts +53 -0
  9. package/src/composables/index.ts +14 -0
  10. package/src/composables/use-is-mobile.ts +7 -0
  11. package/src/composables/use-layout-style.ts +51 -0
  12. package/src/composables/use-layout-viewport-height.ts +71 -0
  13. package/src/composables/use-namespace.ts +106 -0
  14. package/src/composables/use-priority-value.ts +96 -0
  15. package/src/composables/use-scroll-lock.ts +151 -0
  16. package/src/composables/use-simple-locale/README.md +3 -0
  17. package/src/composables/use-simple-locale/index.ts +27 -0
  18. package/src/composables/use-simple-locale/messages.ts +31 -0
  19. package/src/composables/use-sortable.ts +32 -0
  20. package/src/constants/core.ts +76 -0
  21. package/src/constants/index.ts +2 -0
  22. package/src/core-icons/create-icon.ts +14 -0
  23. package/src/core-icons/index.ts +11 -0
  24. package/src/core-icons/lucide.ts +95 -0
  25. package/src/core-preferences/config.ts +172 -0
  26. package/src/core-preferences/constants.ts +116 -0
  27. package/src/core-preferences/index.ts +24 -0
  28. package/src/core-preferences/preferences.ts +503 -0
  29. package/src/core-preferences/types.ts +471 -0
  30. package/src/core-preferences/update-css-variables.ts +129 -0
  31. package/src/core-preferences/use-preferences.ts +282 -0
  32. package/src/design/css/global.css +1 -0
  33. package/src/design/css/nprogress.css +61 -0
  34. package/src/design/css/transition.css +238 -0
  35. package/src/design/css/ui.css +101 -0
  36. package/src/design/design-tokens/dark.css +446 -0
  37. package/src/design/design-tokens/default.css +491 -0
  38. package/src/design/design-tokens/index.ts +2 -0
  39. package/src/design/index.ts +6 -0
  40. package/src/design/scss-bem/bem.scss +34 -0
  41. package/src/design/scss-bem/constants.scss +5 -0
  42. package/src/hooks/index.ts +9 -0
  43. package/src/hooks/use-app-config.ts +39 -0
  44. package/src/hooks/use-content-maximize.ts +24 -0
  45. package/src/hooks/use-design-tokens.ts +421 -0
  46. package/src/hooks/use-hover-toggle.ts +163 -0
  47. package/src/hooks/use-pagination.ts +72 -0
  48. package/src/hooks/use-refresh.ts +16 -0
  49. package/src/hooks/use-tabs.ts +143 -0
  50. package/src/hooks/use-watermark.ts +84 -0
  51. package/src/icons/iconify/index.ts +5 -0
  52. package/src/icons/icons/empty-icon.vue +27 -0
  53. package/src/icons/index.ts +3 -0
  54. package/src/icons/svg/icons/antdv-logo.svg +29 -0
  55. package/src/icons/svg/icons/antdv-next-logo.svg +1 -0
  56. package/src/icons/svg/icons/avatar-1.svg +1 -0
  57. package/src/icons/svg/icons/avatar-2.svg +1 -0
  58. package/src/icons/svg/icons/avatar-3.svg +1 -0
  59. package/src/icons/svg/icons/avatar-4.svg +1 -0
  60. package/src/icons/svg/icons/bell.svg +1 -0
  61. package/src/icons/svg/icons/cake.svg +1 -0
  62. package/src/icons/svg/icons/card.svg +1 -0
  63. package/src/icons/svg/icons/dingding.svg +1 -0
  64. package/src/icons/svg/icons/download.svg +1 -0
  65. package/src/icons/svg/icons/github.svg +1 -0
  66. package/src/icons/svg/icons/google.svg +1 -0
  67. package/src/icons/svg/icons/qqchat.svg +1 -0
  68. package/src/icons/svg/icons/tdesign-logo.svg +39 -0
  69. package/src/icons/svg/icons/wechat.svg +1 -0
  70. package/src/icons/svg/index.ts +39 -0
  71. package/src/icons/svg/load.ts +81 -0
  72. package/src/locales/i18n.ts +147 -0
  73. package/src/locales/index.ts +30 -0
  74. package/src/locales/langs/en-US/authentication.json +65 -0
  75. package/src/locales/langs/en-US/common.json +27 -0
  76. package/src/locales/langs/en-US/preferences.json +245 -0
  77. package/src/locales/langs/en-US/profile.json +4 -0
  78. package/src/locales/langs/en-US/ui.json +165 -0
  79. package/src/locales/langs/zh-CN/authentication.json +65 -0
  80. package/src/locales/langs/zh-CN/common.json +27 -0
  81. package/src/locales/langs/zh-CN/preferences.json +245 -0
  82. package/src/locales/langs/zh-CN/profile.json +4 -0
  83. package/src/locales/langs/zh-CN/ui.json +165 -0
  84. package/src/locales/langs/zh-TW/authentication.json +65 -0
  85. package/src/locales/langs/zh-TW/common.json +27 -0
  86. package/src/locales/langs/zh-TW/preferences.json +245 -0
  87. package/src/locales/langs/zh-TW/profile.json +4 -0
  88. package/src/locales/langs/zh-TW/ui.json +165 -0
  89. package/src/locales/typing.ts +27 -0
  90. package/src/preferences/index.ts +42 -0
  91. package/src/request/index.ts +2 -0
  92. package/src/request/request-client/index.ts +3 -0
  93. package/src/request/request-client/modules/downloader.ts +60 -0
  94. package/src/request/request-client/modules/interceptor.ts +40 -0
  95. package/src/request/request-client/modules/sse.ts +134 -0
  96. package/src/request/request-client/modules/uploader.ts +79 -0
  97. package/src/request/request-client/preset-interceptors.ts +178 -0
  98. package/src/request/request-client/request-client.ts +163 -0
  99. package/src/request/request-client/types.ts +90 -0
  100. package/src/shared/cache/README.md +418 -0
  101. package/src/shared/cache/index.ts +5 -0
  102. package/src/shared/cache/indexeddb-driver.ts +137 -0
  103. package/src/shared/cache/local-storage-driver.ts +70 -0
  104. package/src/shared/cache/memory-storage-driver.ts +32 -0
  105. package/src/shared/cache/storage-manager.ts +146 -0
  106. package/src/shared/cache/types.ts +39 -0
  107. package/src/shared/color/color.ts +9 -0
  108. package/src/shared/color/convert.ts +62 -0
  109. package/src/shared/color/generator.ts +45 -0
  110. package/src/shared/color/index.ts +3 -0
  111. package/src/shared/constants/globals.ts +20 -0
  112. package/src/shared/constants/index.ts +2 -0
  113. package/src/shared/constants/vben.ts +30 -0
  114. package/src/shared/global-state.ts +45 -0
  115. package/src/shared/store.ts +1 -0
  116. package/src/shared/utils/cn.ts +10 -0
  117. package/src/shared/utils/date.ts +80 -0
  118. package/src/shared/utils/diff.ts +114 -0
  119. package/src/shared/utils/dom.ts +126 -0
  120. package/src/shared/utils/download.ts +186 -0
  121. package/src/shared/utils/error.ts +19 -0
  122. package/src/shared/utils/index.ts +22 -0
  123. package/src/shared/utils/inference.ts +164 -0
  124. package/src/shared/utils/letter.ts +47 -0
  125. package/src/shared/utils/merge.ts +11 -0
  126. package/src/shared/utils/nprogress.ts +52 -0
  127. package/src/shared/utils/resources.ts +21 -0
  128. package/src/shared/utils/stack.ts +103 -0
  129. package/src/shared/utils/state-handler.ts +61 -0
  130. package/src/shared/utils/to.ts +21 -0
  131. package/src/shared/utils/tree.ts +159 -0
  132. package/src/shared/utils/unique.ts +15 -0
  133. package/src/shared/utils/update-css-variables.ts +47 -0
  134. package/src/shared/utils/util.ts +50 -0
  135. package/src/shared/utils/window.ts +37 -0
  136. package/src/stores/index.ts +3 -0
  137. package/src/stores/modules/access.ts +130 -0
  138. package/src/stores/modules/dict.ts +244 -0
  139. package/src/stores/modules/index.ts +5 -0
  140. package/src/stores/modules/tabbar.ts +797 -0
  141. package/src/stores/modules/timezone.ts +132 -0
  142. package/src/stores/modules/user.ts +42 -0
  143. package/src/stores/setup.ts +79 -0
  144. package/src/stores/shim-pinia.d.ts +11 -0
  145. package/src/styles/antd/index.css +78 -0
  146. package/src/styles/antdv-next/index.css +90 -0
  147. package/src/styles/ele/index.css +44 -0
  148. package/src/styles/global/index.scss +1 -0
  149. package/src/styles/index.ts +1 -0
  150. package/src/styles/naive/index.css +26 -0
  151. package/src/styles/style-exports.d.ts +3 -0
  152. package/src/theme.css +592 -0
  153. package/src/types/global.d.ts +28 -0
  154. package/src/types/index.ts +2 -0
  155. package/src/types/shims.d.ts +1 -0
  156. package/src/types/user.ts +20 -0
  157. package/src/typings/app.d.ts +128 -0
  158. package/src/typings/basic.d.ts +42 -0
  159. package/src/typings/helper.d.ts +147 -0
  160. package/src/typings/index.ts +16 -0
  161. package/src/typings/languages.ts +28 -0
  162. package/src/typings/menu-record.ts +82 -0
  163. package/src/typings/tabs.ts +8 -0
  164. package/src/typings/vue-router.d.ts +169 -0
  165. package/src/utils/helpers/find-menu-by-path.ts +37 -0
  166. package/src/utils/helpers/generate-menus.ts +89 -0
  167. package/src/utils/helpers/generate-routes-backend.ts +108 -0
  168. package/src/utils/helpers/generate-routes-frontend.ts +58 -0
  169. package/src/utils/helpers/get-popup-container.ts +10 -0
  170. package/src/utils/helpers/index.ts +8 -0
  171. package/src/utils/helpers/merge-route-modules.ts +28 -0
  172. package/src/utils/helpers/reset-routes.ts +30 -0
  173. package/src/utils/helpers/unmount-global-loading.ts +31 -0
  174. package/src/utils/index.ts +4 -0
package/src/theme.css ADDED
@@ -0,0 +1,592 @@
1
+ /*
2
+ * 级联层顺序声明(必须先于 @import 'tailwindcss' 首次出现):
3
+ * properties(Tailwind 的 --tw-* 回退变量层) < preflight(base) <
4
+ * UI 库组件样式(antd / el / td) < Tailwind 工具类,
5
+ * 使组件库样式(antdv-next 经 StyleProvider layer 注入 @layer antd;
6
+ * element-plus / tdesign 经各自应用的 vite css-layer 插件包入对应层)
7
+ * 能被工具类覆盖。
8
+ * 与 internal/vite-config/src/plugins/css-layer.ts 中的 LAYER_ORDER_STATEMENT
9
+ * 保持一致。
10
+ */
11
+ @layer properties, theme, base, ant, antd, el, td, components, utilities;
12
+
13
+ @import 'tailwindcss';
14
+
15
+ /* Monorepo source detection: scan all packages and apps for utility classes */
16
+ @source '../src';
17
+ @source '../../comps-vben/src';
18
+ @source '../../tpl-vue3-admin-ele-vben/src';
19
+
20
+ /* Dark mode uses .dark class selector, not prefers-color-scheme */
21
+ @custom-variant dark (&:is(.dark *));
22
+
23
+ /* Explicitly pin Tailwind v4 dynamic spacing for classes like w-150/h-55. */
24
+ @theme {
25
+ --spacing: 0.25rem;
26
+ }
27
+
28
+ @theme inline {
29
+ /* Font */
30
+ --font-sans: var(--font-family);
31
+
32
+ /* Border Radius */
33
+ --radius-sm: calc(var(--radius) - 4px);
34
+ --radius-md: calc(var(--radius) - 2px);
35
+ --radius-lg: var(--radius);
36
+ --radius-xl: calc(var(--radius) + 4px);
37
+
38
+ /* Box Shadow */
39
+ --shadow-float:
40
+ 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%),
41
+ 0 9px 28px 8px rgb(0 0 0 / 5%);
42
+
43
+ /* Animations */
44
+ --animate-accordion-down: accordion-down 0.2s ease-out;
45
+ --animate-accordion-up: accordion-up 0.2s ease-out;
46
+ --animate-collapsible-down: collapsible-down 0.2s ease-in-out;
47
+ --animate-collapsible-up: collapsible-up 0.2s ease-in-out;
48
+ --animate-float: float 5s linear 0ms infinite;
49
+
50
+ /* ===== Semantic Colors (shadcn-ui) ===== */
51
+
52
+ --color-background: hsl(var(--background));
53
+ --color-background-deep: hsl(var(--background-deep));
54
+ --color-foreground: hsl(var(--foreground));
55
+ --color-card: hsl(var(--card));
56
+ --color-card-foreground: hsl(var(--card-foreground));
57
+ --color-popover: hsl(var(--popover));
58
+ --color-popover-foreground: hsl(var(--popover-foreground));
59
+ --color-muted: hsl(var(--muted));
60
+ --color-muted-foreground: hsl(var(--muted-foreground));
61
+ --color-accent: hsl(var(--accent));
62
+ --color-accent-foreground: hsl(var(--accent-foreground));
63
+ --color-accent-hover: hsl(var(--accent-hover));
64
+ --color-accent-lighter: hsl(var(--accent-lighter));
65
+ --color-border: hsl(var(--border));
66
+ --color-input: hsl(var(--input));
67
+ --color-input-background: hsl(var(--input-background));
68
+ --color-ring: hsl(var(--ring));
69
+ --color-secondary: hsl(var(--secondary));
70
+ --color-secondary-desc: hsl(var(--secondary-desc));
71
+ --color-secondary-foreground: hsl(var(--secondary-foreground));
72
+
73
+ /* ===== Custom Semantic Colors ===== */
74
+
75
+ --color-header: hsl(var(--header));
76
+ --color-heavy: hsl(var(--heavy));
77
+ --color-heavy-foreground: hsl(var(--heavy-foreground));
78
+ --color-main: hsl(var(--main));
79
+ --color-overlay: hsl(var(--overlay));
80
+ --color-overlay-content: hsl(var(--overlay-content));
81
+ --color-sidebar: hsl(var(--sidebar));
82
+ --color-sidebar-deep: hsl(var(--sidebar-deep));
83
+
84
+ /* ===== Primary Palette ===== */
85
+
86
+ --color-primary: hsl(var(--primary));
87
+ --color-primary-foreground: hsl(var(--primary-foreground));
88
+ --color-primary-50: hsl(var(--primary-50));
89
+ --color-primary-100: hsl(var(--primary-100));
90
+ --color-primary-200: hsl(var(--primary-200));
91
+ --color-primary-300: hsl(var(--primary-300));
92
+ --color-primary-400: hsl(var(--primary-400));
93
+ --color-primary-500: hsl(var(--primary-500));
94
+ --color-primary-600: hsl(var(--primary-600));
95
+ --color-primary-700: hsl(var(--primary-700));
96
+ --color-primary-active: hsl(var(--primary-700));
97
+ --color-primary-background-light: hsl(var(--primary-200));
98
+ --color-primary-background-lighter: hsl(var(--primary-100));
99
+ --color-primary-background-lightest: hsl(var(--primary-50));
100
+ --color-primary-border: hsl(var(--primary-400));
101
+ --color-primary-border-light: hsl(var(--primary-300));
102
+ --color-primary-hover: hsl(var(--primary-600));
103
+ --color-primary-text: hsl(var(--primary-500));
104
+ --color-primary-text-active: hsl(var(--primary-700));
105
+ --color-primary-text-hover: hsl(var(--primary-600));
106
+
107
+ /* ===== Destructive Palette ===== */
108
+
109
+ --color-destructive: hsl(var(--destructive));
110
+ --color-destructive-foreground: hsl(var(--destructive-foreground));
111
+ --color-destructive-50: hsl(var(--destructive-50));
112
+ --color-destructive-100: hsl(var(--destructive-100));
113
+ --color-destructive-200: hsl(var(--destructive-200));
114
+ --color-destructive-300: hsl(var(--destructive-300));
115
+ --color-destructive-400: hsl(var(--destructive-400));
116
+ --color-destructive-500: hsl(var(--destructive-500));
117
+ --color-destructive-600: hsl(var(--destructive-600));
118
+ --color-destructive-700: hsl(var(--destructive-700));
119
+ --color-destructive-active: hsl(var(--destructive-700));
120
+ --color-destructive-background-light: hsl(var(--destructive-200));
121
+ --color-destructive-background-lighter: hsl(var(--destructive-100));
122
+ --color-destructive-background-lightest: hsl(var(--destructive-50));
123
+ --color-destructive-border: hsl(var(--destructive-400));
124
+ --color-destructive-border-light: hsl(var(--destructive-300));
125
+ --color-destructive-hover: hsl(var(--destructive-600));
126
+ --color-destructive-text: hsl(var(--destructive-500));
127
+ --color-destructive-text-active: hsl(var(--destructive-700));
128
+ --color-destructive-text-hover: hsl(var(--destructive-600));
129
+
130
+ /* ===== Success Palette ===== */
131
+
132
+ --color-success: hsl(var(--success));
133
+ --color-success-foreground: hsl(var(--success-foreground));
134
+ --color-success-50: hsl(var(--success-50));
135
+ --color-success-100: hsl(var(--success-100));
136
+ --color-success-200: hsl(var(--success-200));
137
+ --color-success-300: hsl(var(--success-300));
138
+ --color-success-400: hsl(var(--success-400));
139
+ --color-success-500: hsl(var(--success-500));
140
+ --color-success-600: hsl(var(--success-600));
141
+ --color-success-700: hsl(var(--success-700));
142
+ --color-success-active: hsl(var(--success-700));
143
+ --color-success-background-light: hsl(var(--success-200));
144
+ --color-success-background-lighter: hsl(var(--success-100));
145
+ --color-success-background-lightest: hsl(var(--success-50));
146
+ --color-success-border: hsl(var(--success-400));
147
+ --color-success-border-light: hsl(var(--success-300));
148
+ --color-success-hover: hsl(var(--success-600));
149
+ --color-success-text: hsl(var(--success-500));
150
+ --color-success-text-active: hsl(var(--success-700));
151
+ --color-success-text-hover: hsl(var(--success-600));
152
+
153
+ /* ===== Warning Palette ===== */
154
+
155
+ --color-warning: hsl(var(--warning));
156
+ --color-warning-foreground: hsl(var(--warning-foreground));
157
+ --color-warning-50: hsl(var(--warning-50));
158
+ --color-warning-100: hsl(var(--warning-100));
159
+ --color-warning-200: hsl(var(--warning-200));
160
+ --color-warning-300: hsl(var(--warning-300));
161
+ --color-warning-400: hsl(var(--warning-400));
162
+ --color-warning-500: hsl(var(--warning-500));
163
+ --color-warning-600: hsl(var(--warning-600));
164
+ --color-warning-700: hsl(var(--warning-700));
165
+ --color-warning-active: hsl(var(--warning-700));
166
+ --color-warning-background-light: hsl(var(--warning-200));
167
+ --color-warning-background-lighter: hsl(var(--warning-100));
168
+ --color-warning-background-lightest: hsl(var(--warning-50));
169
+ --color-warning-border: hsl(var(--warning-400));
170
+ --color-warning-border-light: hsl(var(--warning-300));
171
+ --color-warning-hover: hsl(var(--warning-600));
172
+ --color-warning-text: hsl(var(--warning-500));
173
+ --color-warning-text-active: hsl(var(--warning-700));
174
+ --color-warning-text-hover: hsl(var(--warning-600));
175
+
176
+ /* ===== Green Palette (alias for success shades) ===== */
177
+
178
+ --color-green-50: hsl(var(--green-50));
179
+ --color-green-100: hsl(var(--green-100));
180
+ --color-green-200: hsl(var(--green-200));
181
+ --color-green-300: hsl(var(--green-300));
182
+ --color-green-400: hsl(var(--green-400));
183
+ --color-green-500: hsl(var(--green-500));
184
+ --color-green-600: hsl(var(--green-600));
185
+ --color-green-700: hsl(var(--green-700));
186
+ --color-green-active: hsl(var(--green-700));
187
+ --color-green-background-light: hsl(var(--green-200));
188
+ --color-green-background-lighter: hsl(var(--green-100));
189
+ --color-green-background-lightest: hsl(var(--green-50));
190
+ --color-green-border: hsl(var(--green-400));
191
+ --color-green-border-light: hsl(var(--green-300));
192
+ --color-green-foreground: hsl(var(--success-foreground));
193
+ --color-green-hover: hsl(var(--green-600));
194
+ --color-green-text: hsl(var(--green-500));
195
+ --color-green-text-active: hsl(var(--green-700));
196
+ --color-green-text-hover: hsl(var(--green-600));
197
+
198
+ /* ===== Red Palette (alias for destructive shades) ===== */
199
+
200
+ --color-red-50: hsl(var(--red-50));
201
+ --color-red-100: hsl(var(--red-100));
202
+ --color-red-200: hsl(var(--red-200));
203
+ --color-red-300: hsl(var(--red-300));
204
+ --color-red-400: hsl(var(--red-400));
205
+ --color-red-500: hsl(var(--red-500));
206
+ --color-red-600: hsl(var(--red-600));
207
+ --color-red-700: hsl(var(--red-700));
208
+ --color-red-active: hsl(var(--red-700));
209
+ --color-red-background-light: hsl(var(--red-200));
210
+ --color-red-background-lighter: hsl(var(--red-100));
211
+ --color-red-background-lightest: hsl(var(--red-50));
212
+ --color-red-border: hsl(var(--red-400));
213
+ --color-red-border-light: hsl(var(--red-300));
214
+ --color-red-foreground: hsl(var(--destructive-foreground));
215
+ --color-red-hover: hsl(var(--red-600));
216
+ --color-red-text: hsl(var(--red-500));
217
+ --color-red-text-active: hsl(var(--red-700));
218
+ --color-red-text-hover: hsl(var(--red-600));
219
+
220
+ /* ===== Yellow Palette (alias for warning shades) ===== */
221
+
222
+ --color-yellow-50: hsl(var(--yellow-50));
223
+ --color-yellow-100: hsl(var(--yellow-100));
224
+ --color-yellow-200: hsl(var(--yellow-200));
225
+ --color-yellow-300: hsl(var(--yellow-300));
226
+ --color-yellow-400: hsl(var(--yellow-400));
227
+ --color-yellow-500: hsl(var(--yellow-500));
228
+ --color-yellow-600: hsl(var(--yellow-600));
229
+ --color-yellow-700: hsl(var(--yellow-700));
230
+ --color-yellow-active: hsl(var(--yellow-700));
231
+ --color-yellow-background-light: hsl(var(--yellow-200));
232
+ --color-yellow-background-lighter: hsl(var(--yellow-100));
233
+ --color-yellow-background-lightest: hsl(var(--yellow-50));
234
+ --color-yellow-border: hsl(var(--yellow-400));
235
+ --color-yellow-border-light: hsl(var(--yellow-300));
236
+ --color-yellow-foreground: hsl(var(--warning-foreground));
237
+ --color-yellow-hover: hsl(var(--yellow-600));
238
+ --color-yellow-text: hsl(var(--yellow-500));
239
+ --color-yellow-text-active: hsl(var(--yellow-700));
240
+ --color-yellow-text-hover: hsl(var(--yellow-600));
241
+ }
242
+
243
+ /* Keyframes */
244
+ @keyframes accordion-down {
245
+ from {
246
+ height: 0;
247
+ }
248
+
249
+ to {
250
+ height: var(--reka-accordion-content-height);
251
+ }
252
+ }
253
+
254
+ @keyframes accordion-up {
255
+ from {
256
+ height: var(--reka-accordion-content-height);
257
+ }
258
+
259
+ to {
260
+ height: 0;
261
+ }
262
+ }
263
+
264
+ @keyframes collapsible-down {
265
+ from {
266
+ height: 0;
267
+ }
268
+
269
+ to {
270
+ height: var(--reka-collapsible-content-height);
271
+ }
272
+ }
273
+
274
+ @keyframes collapsible-up {
275
+ from {
276
+ height: var(--reka-collapsible-content-height);
277
+ }
278
+
279
+ to {
280
+ height: 0;
281
+ }
282
+ }
283
+
284
+ @keyframes float {
285
+ 0% {
286
+ transform: translateY(0);
287
+ }
288
+
289
+ 50% {
290
+ transform: translateY(-20px);
291
+ }
292
+
293
+ 100% {
294
+ transform: translateY(0);
295
+ }
296
+ }
297
+
298
+ /* Base styles */
299
+ @layer base {
300
+ *,
301
+ ::after,
302
+ ::before {
303
+ @apply border-border outline-ring/50;
304
+
305
+ box-sizing: border-box;
306
+ border-style: solid;
307
+ border-width: 0;
308
+ }
309
+
310
+ html {
311
+ --vben-viewport-height: 100vh;
312
+
313
+ @apply bg-background font-sans text-foreground;
314
+
315
+ scroll-behavior: smooth;
316
+ font-size: var(--font-size-base, 16px);
317
+ font-variation-settings: normal;
318
+ font-synthesis-weight: none;
319
+ line-height: 1.15;
320
+ text-rendering: optimizelegibility;
321
+ text-size-adjust: 100%;
322
+ -webkit-tap-highlight-color: transparent;
323
+
324
+ @supports (height: 1dvh) {
325
+ --vben-viewport-height: 100dvh;
326
+ }
327
+ }
328
+
329
+ #app,
330
+ body,
331
+ html {
332
+ @apply size-full;
333
+ }
334
+
335
+ body {
336
+ min-height: 100vh;
337
+ }
338
+
339
+ a,
340
+ a:active,
341
+ a:hover,
342
+ a:link,
343
+ a:visited {
344
+ @apply no-underline;
345
+ }
346
+
347
+ ::view-transition-new(root),
348
+ ::view-transition-old(root) {
349
+ @apply animate-none mix-blend-normal;
350
+ }
351
+
352
+ ::view-transition-old(root) {
353
+ @apply z-1;
354
+ }
355
+
356
+ ::view-transition-new(root) {
357
+ @apply z-2147483646;
358
+ }
359
+
360
+ html.dark::view-transition-old(root) {
361
+ @apply z-2147483646;
362
+ }
363
+
364
+ html.dark::view-transition-new(root) {
365
+ @apply z-1;
366
+ }
367
+
368
+ input::placeholder,
369
+ textarea::placeholder {
370
+ @apply opacity-100;
371
+ }
372
+
373
+ input[type='number']::-webkit-inner-spin-button,
374
+ input[type='number']::-webkit-outer-spin-button {
375
+ @apply m-0 appearance-none;
376
+ }
377
+
378
+ /* Only adjust scrollbar for non-macOS */
379
+ html:not([data-platform='macOs']) {
380
+ ::-webkit-scrollbar {
381
+ @apply h-2.5 w-2.5;
382
+ }
383
+
384
+ ::-webkit-scrollbar-thumb {
385
+ @apply rounded-sm border-none bg-border;
386
+ }
387
+
388
+ ::-webkit-scrollbar-track {
389
+ @apply rounded-sm border-none bg-transparent shadow-none;
390
+ }
391
+
392
+ ::-webkit-scrollbar-button {
393
+ @apply hidden;
394
+ }
395
+ }
396
+
397
+ /* Tailwind v4 Preflight 不再为 button 默认设置 pointer;见官方升级说明:
398
+ * https://tailwindcss.com/docs/upgrade-guide#buttons-use-the-default-cursor */
399
+ button:not(:disabled),
400
+ [role='button']:not(:disabled) {
401
+ @apply cursor-pointer;
402
+ }
403
+ }
404
+
405
+ /* Custom utilities (v4 @utility syntax) */
406
+ @utility flex-center {
407
+ display: flex;
408
+ align-items: center;
409
+ justify-content: center;
410
+ }
411
+
412
+ @utility flex-col-center {
413
+ display: flex;
414
+ flex-direction: column;
415
+ align-items: center;
416
+ justify-content: center;
417
+ }
418
+
419
+ /* Tailwind v4 的 utilities 在 @layer 内;组件样式若留在 layer 外,会按层叠规则压过 py-4 等工具类。
420
+ * 见:https://tailwindcss.com/docs/adding-custom-styles#using-css-and-layering */
421
+ @layer components {
422
+ .outline-box {
423
+ @apply relative cursor-pointer rounded-md p-1 outline-1 outline-border;
424
+ }
425
+
426
+ .outline-box::after {
427
+ @apply absolute top-1/2 left-1/2 z-20 h-0 w-px rounded-sm opacity-0 outline-2 outline-transparent transition-all duration-300 content-[""];
428
+ }
429
+
430
+ .outline-box.outline-box-active {
431
+ @apply outline-2 outline-primary;
432
+ }
433
+
434
+ .outline-box.outline-box-active::after {
435
+ display: none;
436
+ }
437
+
438
+ .outline-box:not(.outline-box-active):hover::after {
439
+ @apply top-0 left-0 h-full w-full p-1 opacity-100 outline-primary;
440
+ }
441
+
442
+ .vben-link {
443
+ @apply cursor-pointer text-primary hover:text-primary-hover active:text-primary-active;
444
+ }
445
+
446
+ .card-box {
447
+ @apply rounded-xl border border-border bg-card text-card-foreground;
448
+ }
449
+ }
450
+
451
+ /* Enter animations (converted from enterAnimationPlugin) */
452
+ @keyframes enter-x-animation {
453
+ to {
454
+ opacity: 1;
455
+ transform: translateX(0);
456
+ }
457
+ }
458
+
459
+ @keyframes enter-y-animation {
460
+ to {
461
+ opacity: 1;
462
+ transform: translateY(0);
463
+ }
464
+ }
465
+
466
+ .enter-x:nth-child(1) {
467
+ opacity: 0;
468
+ transform: translateX(50px);
469
+ animation: enter-x-animation 0.3s ease-in-out 0.1s forwards;
470
+ }
471
+
472
+ .enter-x:nth-child(2) {
473
+ opacity: 0;
474
+ transform: translateX(50px);
475
+ animation: enter-x-animation 0.3s ease-in-out 0.2s forwards;
476
+ }
477
+
478
+ .enter-x:nth-child(3) {
479
+ opacity: 0;
480
+ transform: translateX(50px);
481
+ animation: enter-x-animation 0.3s ease-in-out 0.3s forwards;
482
+ }
483
+
484
+ .enter-x:nth-child(4) {
485
+ opacity: 0;
486
+ transform: translateX(50px);
487
+ animation: enter-x-animation 0.3s ease-in-out 0.4s forwards;
488
+ }
489
+
490
+ .enter-x:nth-child(5) {
491
+ opacity: 0;
492
+ transform: translateX(50px);
493
+ animation: enter-x-animation 0.3s ease-in-out 0.5s forwards;
494
+ }
495
+
496
+ .enter-y:nth-child(1) {
497
+ opacity: 0;
498
+ transform: translateY(50px);
499
+ animation: enter-y-animation 0.3s ease-in-out 0.1s forwards;
500
+ }
501
+
502
+ .enter-y:nth-child(2) {
503
+ opacity: 0;
504
+ transform: translateY(50px);
505
+ animation: enter-y-animation 0.3s ease-in-out 0.2s forwards;
506
+ }
507
+
508
+ .enter-y:nth-child(3) {
509
+ opacity: 0;
510
+ transform: translateY(50px);
511
+ animation: enter-y-animation 0.3s ease-in-out 0.3s forwards;
512
+ }
513
+
514
+ .enter-y:nth-child(4) {
515
+ opacity: 0;
516
+ transform: translateY(50px);
517
+ animation: enter-y-animation 0.3s ease-in-out 0.4s forwards;
518
+ }
519
+
520
+ .enter-y:nth-child(5) {
521
+ opacity: 0;
522
+ transform: translateY(50px);
523
+ animation: enter-y-animation 0.3s ease-in-out 0.5s forwards;
524
+ }
525
+
526
+ .-enter-x:nth-child(1) {
527
+ opacity: 0;
528
+ transform: translateX(-50px);
529
+ animation: enter-x-animation 0.3s ease-in-out 0.1s forwards;
530
+ }
531
+
532
+ .-enter-x:nth-child(2) {
533
+ opacity: 0;
534
+ transform: translateX(-50px);
535
+ animation: enter-x-animation 0.3s ease-in-out 0.2s forwards;
536
+ }
537
+
538
+ .-enter-x:nth-child(3) {
539
+ opacity: 0;
540
+ transform: translateX(-50px);
541
+ animation: enter-x-animation 0.3s ease-in-out 0.3s forwards;
542
+ }
543
+
544
+ .-enter-x:nth-child(4) {
545
+ opacity: 0;
546
+ transform: translateX(-50px);
547
+ animation: enter-x-animation 0.3s ease-in-out 0.4s forwards;
548
+ }
549
+
550
+ .-enter-x:nth-child(5) {
551
+ opacity: 0;
552
+ transform: translateX(-50px);
553
+ animation: enter-x-animation 0.3s ease-in-out 0.5s forwards;
554
+ }
555
+
556
+ .-enter-y:nth-child(1) {
557
+ opacity: 0;
558
+ transform: translateY(-50px);
559
+ animation: enter-y-animation 0.3s ease-in-out 0.1s forwards;
560
+ }
561
+
562
+ .-enter-y:nth-child(2) {
563
+ opacity: 0;
564
+ transform: translateY(-50px);
565
+ animation: enter-y-animation 0.3s ease-in-out 0.2s forwards;
566
+ }
567
+
568
+ .-enter-y:nth-child(3) {
569
+ opacity: 0;
570
+ transform: translateY(-50px);
571
+ animation: enter-y-animation 0.3s ease-in-out 0.3s forwards;
572
+ }
573
+
574
+ .-enter-y:nth-child(4) {
575
+ opacity: 0;
576
+ transform: translateY(-50px);
577
+ animation: enter-y-animation 0.3s ease-in-out 0.4s forwards;
578
+ }
579
+
580
+ .-enter-y:nth-child(5) {
581
+ opacity: 0;
582
+ transform: translateY(-50px);
583
+ animation: enter-y-animation 0.3s ease-in-out 0.5s forwards;
584
+ }
585
+
586
+ html.invert-mode {
587
+ @apply invert;
588
+ }
589
+
590
+ html.grayscale-mode {
591
+ @apply grayscale;
592
+ }
@@ -0,0 +1,28 @@
1
+ // vue-router 的 RouteMeta 增强唯一来源是 @vben-core/typings/src/index.ts,
2
+ // 此处不再重复声明;侧效果导入保证仅经由 `@vben/types/global` 子路径消费
3
+ // 本包的程序(不经过 src/index.ts barrel)同样激活该增强。
4
+ import '@melt-js/libs-vben/typings';
5
+
6
+ export interface VbenAdminProAppConfigRaw {
7
+ VITE_GLOB_API_URL: string;
8
+ VITE_GLOB_AUTH_DINGDING_CLIENT_ID: string;
9
+ VITE_GLOB_AUTH_DINGDING_CORP_ID: string;
10
+ }
11
+
12
+ interface AuthConfig {
13
+ dingding?: {
14
+ clientId: string;
15
+ corpId: string;
16
+ };
17
+ }
18
+
19
+ export interface ApplicationConfig {
20
+ apiURL: string;
21
+ auth: AuthConfig;
22
+ }
23
+
24
+ declare global {
25
+ interface Window {
26
+ _VBEN_ADMIN_PRO_APP_CONF_: VbenAdminProAppConfigRaw;
27
+ }
28
+ }
@@ -0,0 +1,2 @@
1
+ export type * from './user';
2
+ export type * from '@melt-js/libs-vben/typings';
@@ -0,0 +1 @@
1
+ declare module 'lodash.clonedeep';
@@ -0,0 +1,20 @@
1
+ import type { BasicUserInfo } from '@melt-js/libs-vben/typings';
2
+
3
+ /** 用户信息 */
4
+ interface UserInfo extends BasicUserInfo {
5
+ /**
6
+ * 用户描述
7
+ */
8
+ desc: string;
9
+ /**
10
+ * 首页地址
11
+ */
12
+ homePath: string;
13
+
14
+ /**
15
+ * accessToken
16
+ */
17
+ token: string;
18
+ }
19
+
20
+ export type { UserInfo };