smart-admin-web 10.14.0 → 10.20.0

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 (538) hide show
  1. package/README.md +6 -6
  2. package/dist/api/index.d.ts +41 -2
  3. package/dist/api/index.js +36 -15
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/schema.d.ts +418 -6
  6. package/dist/assets/icons/ph-subset.json.js +7 -7
  7. package/dist/assets/smart-logo.svg.js +5 -0
  8. package/dist/assets/smart-logo.svg.js.map +1 -0
  9. package/dist/components/AppIcon.vue.js +9 -9
  10. package/dist/components/AppIcon.vue.js.map +1 -1
  11. package/dist/components/AppWatermark.vue.d.ts +14 -0
  12. package/dist/components/AppWatermark.vue.js +38 -0
  13. package/dist/components/AppWatermark.vue.js.map +1 -0
  14. package/dist/components/AppWatermark2.vue.js +5 -0
  15. package/dist/components/AppWatermark2.vue.js.map +1 -0
  16. package/dist/components/Chart/PieChart.vue.d.ts +1 -1
  17. package/dist/components/Chart/echarts.js +15 -20
  18. package/dist/components/Chart/echarts.js.map +1 -1
  19. package/dist/components/CronEditor/index.vue.js +1 -1
  20. package/dist/components/CronEditor/index2.vue.js +2 -1
  21. package/dist/components/CronEditor/index2.vue.js.map +1 -1
  22. package/dist/components/DetailPage/index.vue.js +2 -2
  23. package/dist/components/DetailPage/index2.vue.js.map +1 -1
  24. package/dist/components/DictTag/index.vue.js.map +1 -1
  25. package/dist/components/ErrorBoundary/index.vue.js +2 -2
  26. package/dist/components/ErrorBoundary/index2.vue.js +1 -1
  27. package/dist/components/ErrorBoundary/index2.vue.js.map +1 -1
  28. package/dist/components/FormContainer/index.vue.js +91 -56
  29. package/dist/components/FormContainer/index.vue.js.map +1 -1
  30. package/dist/components/ImportWizard/index.vue.js +1 -1
  31. package/dist/components/ImportWizard/index2.vue.js +44 -41
  32. package/dist/components/ImportWizard/index2.vue.js.map +1 -1
  33. package/dist/components/MenuSearch.vue.js +2 -2
  34. package/dist/components/MenuSearch2.vue.js +19 -18
  35. package/dist/components/MenuSearch2.vue.js.map +1 -1
  36. package/dist/components/PasswordStrength/index.vue.js +2 -2
  37. package/dist/components/PasswordStrength/index2.vue.js +20 -18
  38. package/dist/components/PasswordStrength/index2.vue.js.map +1 -1
  39. package/dist/components/SmartLogo.vue.d.ts +3 -0
  40. package/dist/components/SmartLogo.vue.js +1 -1
  41. package/dist/components/SmartLogo2.vue.js +22 -64
  42. package/dist/components/SmartLogo2.vue.js.map +1 -1
  43. package/dist/{views/system/config/components/GroupExtraConfig.vue.d.ts → components/TableTotal/index.vue.d.ts} +1 -4
  44. package/dist/components/{SelectTable → TableTotal}/index.vue.js +1 -1
  45. package/dist/components/TableTotal/index2.vue.js +16 -0
  46. package/dist/components/TableTotal/index2.vue.js.map +1 -0
  47. package/dist/components/TableZoomButton/index.vue.js.map +1 -1
  48. package/dist/components/UserPicker/index.vue.js +2 -2
  49. package/dist/components/UserPicker/index2.vue.js +176 -117
  50. package/dist/components/UserPicker/index2.vue.js.map +1 -1
  51. package/dist/composables/useBatchDelete.js.map +1 -1
  52. package/dist/composables/useLayoutMenu.js +17 -16
  53. package/dist/composables/useLayoutMenu.js.map +1 -1
  54. package/dist/composables/useLoginHero.d.ts +2 -0
  55. package/dist/composables/useLoginHero.js +22 -0
  56. package/dist/composables/useLoginHero.js.map +1 -0
  57. package/dist/composables/useModule.js +39 -29
  58. package/dist/composables/useModule.js.map +1 -1
  59. package/dist/composables/usePageTitle.js +16 -14
  60. package/dist/composables/usePageTitle.js.map +1 -1
  61. package/dist/composables/useShellBreakpoint.d.ts +19 -0
  62. package/dist/composables/useShellBreakpoint.js +37 -0
  63. package/dist/composables/useShellBreakpoint.js.map +1 -0
  64. package/dist/composables/useSite.d.ts +20 -0
  65. package/dist/composables/useSite.js +18 -13
  66. package/dist/composables/useSite.js.map +1 -1
  67. package/dist/composables/useTabTitle.js.map +1 -1
  68. package/dist/composables/useTableTitle.d.ts +6 -0
  69. package/dist/composables/useTableTitle.js +11 -0
  70. package/dist/composables/useTableTitle.js.map +1 -0
  71. package/dist/composables/useTableZoom.d.ts +5 -0
  72. package/dist/composables/useTableZoom.js.map +1 -1
  73. package/dist/composables/useTheme.d.ts +2 -2
  74. package/dist/composables/useTheme.js +23 -20
  75. package/dist/composables/useTheme.js.map +1 -1
  76. package/dist/createSmartAdmin.d.ts +12 -2
  77. package/dist/createSmartAdmin.js +72 -60
  78. package/dist/createSmartAdmin.js.map +1 -1
  79. package/dist/index.d.ts +5 -2
  80. package/dist/index.js +223 -208
  81. package/dist/index.js.map +1 -1
  82. package/dist/layouts/AccentPicker.vue.js +8 -0
  83. package/dist/layouts/AccentPicker.vue.js.map +1 -0
  84. package/dist/layouts/AccentPicker2.vue.js +131 -0
  85. package/dist/layouts/AccentPicker2.vue.js.map +1 -0
  86. package/dist/layouts/AppHeader.vue.d.ts +8 -1
  87. package/dist/layouts/AppHeader.vue.js +2 -2
  88. package/dist/layouts/AppHeader2.vue.js +317 -235
  89. package/dist/layouts/AppHeader2.vue.js.map +1 -1
  90. package/dist/layouts/NoticeBell.vue.js +2 -2
  91. package/dist/layouts/NoticeBell2.vue.js +1 -1
  92. package/dist/layouts/NoticeBell2.vue.js.map +1 -1
  93. package/dist/layouts/PersonalLayout.vue.js +2 -2
  94. package/dist/layouts/PersonalLayout2.vue.js +69 -47
  95. package/dist/layouts/PersonalLayout2.vue.js.map +1 -1
  96. package/dist/layouts/SettingsDrawer.vue.js +3 -3
  97. package/dist/layouts/SettingsDrawer2.vue.js +261 -325
  98. package/dist/layouts/SettingsDrawer2.vue.js.map +1 -1
  99. package/dist/layouts/TabsBar.vue.js +2 -2
  100. package/dist/layouts/TabsBar2.vue.js +97 -69
  101. package/dist/layouts/TabsBar2.vue.js.map +1 -1
  102. package/dist/layouts/components/SideNav.vue.d.ts +3 -0
  103. package/dist/layouts/components/SideNav.vue.js +1 -1
  104. package/dist/layouts/components/SideNav2.vue.js +54 -26
  105. package/dist/layouts/components/SideNav2.vue.js.map +1 -1
  106. package/dist/layouts/default.vue.js +1 -1
  107. package/dist/layouts/default2.vue.js +170 -140
  108. package/dist/layouts/default2.vue.js.map +1 -1
  109. package/dist/lib/favicon.d.ts +1 -0
  110. package/dist/lib/favicon.js +12 -0
  111. package/dist/lib/favicon.js.map +1 -0
  112. package/dist/lib/loginHero.d.ts +16 -0
  113. package/dist/lib/loginHero.js +33 -0
  114. package/dist/lib/loginHero.js.map +1 -0
  115. package/dist/lib/logoCrop.d.ts +25 -0
  116. package/dist/lib/logoCrop.js +22 -0
  117. package/dist/lib/logoCrop.js.map +1 -0
  118. package/dist/lib/runtime.d.ts +2 -0
  119. package/dist/lib/runtime.js +1 -1
  120. package/dist/lib/runtime.js.map +1 -1
  121. package/dist/lib/securityRules.d.ts +26 -0
  122. package/dist/lib/securityRules.js +86 -0
  123. package/dist/lib/securityRules.js.map +1 -0
  124. package/dist/lib/watermark.d.ts +110 -0
  125. package/dist/lib/watermark.js +151 -0
  126. package/dist/lib/watermark.js.map +1 -0
  127. package/dist/locales/en-US.d.ts +462 -42
  128. package/dist/locales/en-US.js +491 -78
  129. package/dist/locales/en-US.js.map +1 -1
  130. package/dist/locales/kernelMenuTitles.d.ts +1 -0
  131. package/dist/locales/kernelMenuTitles.js +128 -0
  132. package/dist/locales/kernelMenuTitles.js.map +1 -0
  133. package/dist/locales/menuTitle.d.ts +3 -0
  134. package/dist/locales/menuTitle.js +14 -12
  135. package/dist/locales/menuTitle.js.map +1 -1
  136. package/dist/locales/zh-CN.d.ts +462 -42
  137. package/dist/locales/zh-CN.js +490 -81
  138. package/dist/locales/zh-CN.js.map +1 -1
  139. package/dist/router/index.js +41 -32
  140. package/dist/router/index.js.map +1 -1
  141. package/dist/router/namedPage.d.ts +4 -0
  142. package/dist/router/namedPage.js +7 -7
  143. package/dist/router/namedPage.js.map +1 -1
  144. package/dist/router/viewRegistry.js +12 -12
  145. package/dist/router/viewRegistry.js.map +1 -1
  146. package/dist/stores/app.d.ts +0 -12
  147. package/dist/stores/app.js +11 -12
  148. package/dist/stores/app.js.map +1 -1
  149. package/dist/stores/tabs.js.map +1 -1
  150. package/dist/stores/user.d.ts +10 -0
  151. package/dist/stores/user.js.map +1 -1
  152. package/dist/style.css +1 -1
  153. package/dist/theme/accentTokens.d.ts +27 -0
  154. package/dist/theme/accentTokens.js +54 -0
  155. package/dist/theme/accentTokens.js.map +1 -0
  156. package/dist/theme/accents.d.ts +21 -1
  157. package/dist/theme/accents.js +11 -2
  158. package/dist/theme/accents.js.map +1 -1
  159. package/dist/theme/mix.d.ts +58 -7
  160. package/dist/theme/mix.js +115 -30
  161. package/dist/theme/mix.js.map +1 -1
  162. package/dist/theme/naive-theme.d.ts +5 -2
  163. package/dist/theme/naive-theme.js +405 -75
  164. package/dist/theme/naive-theme.js.map +1 -1
  165. package/dist/utils/jwt.d.ts +8 -0
  166. package/dist/utils/jwt.js +14 -0
  167. package/dist/utils/jwt.js.map +1 -0
  168. package/dist/utils/menuIcon.d.ts +2 -0
  169. package/dist/utils/menuIcon.js +8 -0
  170. package/dist/utils/menuIcon.js.map +1 -0
  171. package/dist/utils/oauthBrand.d.ts +34 -9
  172. package/dist/utils/oauthBrand.js +70 -74
  173. package/dist/utils/oauthBrand.js.map +1 -1
  174. package/dist/utils/tableFilter.d.ts +88 -0
  175. package/dist/utils/tableFilter.js +116 -0
  176. package/dist/utils/tableFilter.js.map +1 -0
  177. package/dist/utils/tableToolbar.d.ts +18 -0
  178. package/dist/utils/tableToolbar.js +11 -0
  179. package/dist/utils/tableToolbar.js.map +1 -0
  180. package/dist/utils/treeFilter.d.ts +20 -0
  181. package/dist/utils/treeFilter.js +24 -0
  182. package/dist/utils/treeFilter.js.map +1 -0
  183. package/dist/views/dashboard/ShortcutPicker.vue.js +1 -1
  184. package/dist/views/dashboard/ShortcutPicker2.vue.js +73 -48
  185. package/dist/views/dashboard/ShortcutPicker2.vue.js.map +1 -1
  186. package/dist/views/dashboard/biz.vue.js +1 -1
  187. package/dist/views/dashboard/biz2.vue.js +310 -257
  188. package/dist/views/dashboard/biz2.vue.js.map +1 -1
  189. package/dist/views/dashboard/workbench.vue.js +2 -2
  190. package/dist/views/dashboard/workbench2.vue.js +141 -155
  191. package/dist/views/dashboard/workbench2.vue.js.map +1 -1
  192. package/dist/views/embed/iframe.vue.js +2 -2
  193. package/dist/views/embed/iframe2.vue.js +22 -15
  194. package/dist/views/embed/iframe2.vue.js.map +1 -1
  195. package/dist/views/error/404.vue.js +2 -2
  196. package/dist/views/error/4042.vue.js +33 -24
  197. package/dist/views/error/4042.vue.js.map +1 -1
  198. package/dist/views/error/BootError.vue.js +1 -1
  199. package/dist/views/error/BootError2.vue.js +59 -48
  200. package/dist/views/error/BootError2.vue.js.map +1 -1
  201. package/dist/views/error/MissingRoute.vue.js +2 -2
  202. package/dist/views/error/MissingRoute2.vue.js +34 -15
  203. package/dist/views/error/MissingRoute2.vue.js.map +1 -1
  204. package/dist/views/login/LoginForm.vue.d.ts +7 -1
  205. package/dist/views/login/LoginForm.vue.js +2 -2
  206. package/dist/views/login/LoginForm2.vue.js +580 -488
  207. package/dist/views/login/LoginForm2.vue.js.map +1 -1
  208. package/dist/views/login/components/LoginDesk.vue.d.ts +36 -0
  209. package/dist/views/login/components/LoginDesk.vue.js +9 -0
  210. package/dist/views/login/components/LoginDesk.vue.js.map +1 -0
  211. package/dist/views/login/components/LoginDesk2.vue.js +100 -0
  212. package/dist/views/login/components/LoginDesk2.vue.js.map +1 -0
  213. package/dist/views/login/components/LoginHeroPanel.vue.d.ts +18 -0
  214. package/dist/views/login/components/LoginHeroPanel.vue.js +8 -0
  215. package/dist/views/login/components/LoginHeroPanel.vue.js.map +1 -0
  216. package/dist/views/login/components/LoginHeroPanel2.vue.js +61 -0
  217. package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -0
  218. package/dist/views/login/index.vue.js +1 -1
  219. package/dist/views/login/index2.vue.js +141 -71
  220. package/dist/views/login/index2.vue.js.map +1 -1
  221. package/dist/views/login/layout.d.ts +11 -0
  222. package/dist/views/login/layout.js +27 -0
  223. package/dist/views/login/layout.js.map +1 -0
  224. package/dist/views/mfa/index.vue.js +2 -2
  225. package/dist/views/mfa/index2.vue.js +367 -321
  226. package/dist/views/mfa/index2.vue.js.map +1 -1
  227. package/dist/views/module/index.vue.js +2 -2
  228. package/dist/views/module/index2.vue.js +132 -99
  229. package/dist/views/module/index2.vue.js.map +1 -1
  230. package/dist/views/oauth/callback.vue.js +2 -2
  231. package/dist/views/oauth/callback2.vue.js +65 -51
  232. package/dist/views/oauth/callback2.vue.js.map +1 -1
  233. package/dist/views/personal/bindings.vue.js +2 -2
  234. package/dist/views/personal/bindings2.vue.js +98 -94
  235. package/dist/views/personal/bindings2.vue.js.map +1 -1
  236. package/dist/views/personal/notice2.vue.js +103 -76
  237. package/dist/views/personal/notice2.vue.js.map +1 -1
  238. package/dist/views/personal/password2.vue.js +47 -40
  239. package/dist/views/personal/password2.vue.js.map +1 -1
  240. package/dist/views/personal/profile.vue.js +3 -3
  241. package/dist/views/personal/profile2.vue.js +24 -18
  242. package/dist/views/personal/profile2.vue.js.map +1 -1
  243. package/dist/views/personal/security.vue.js +2 -2
  244. package/dist/views/personal/security2.vue.js +65 -53
  245. package/dist/views/personal/security2.vue.js.map +1 -1
  246. package/dist/views/personal/sessions.vue.js +2 -2
  247. package/dist/views/personal/sessions2.vue.js +67 -62
  248. package/dist/views/personal/sessions2.vue.js.map +1 -1
  249. package/dist/views/system/ai-model/components/ProviderCard.vue.js +2 -2
  250. package/dist/views/system/ai-model/components/ProviderCard2.vue.js +142 -130
  251. package/dist/views/system/ai-model/components/ProviderCard2.vue.js.map +1 -1
  252. package/dist/views/system/ai-model/components/ProviderForm.vue.js +2 -2
  253. package/dist/views/system/ai-model/components/ProviderForm2.vue.js +71 -70
  254. package/dist/views/system/ai-model/components/ProviderForm2.vue.js.map +1 -1
  255. package/dist/views/system/ai-model/index.vue.js +2 -2
  256. package/dist/views/system/ai-model/index2.vue.js +99 -99
  257. package/dist/views/system/ai-model/index2.vue.js.map +1 -1
  258. package/dist/views/system/ai-model/presets.d.ts +1 -1
  259. package/dist/views/system/ai-model/presets.js +18 -18
  260. package/dist/views/system/ai-model/presets.js.map +1 -1
  261. package/dist/views/system/ai-usage/index.vue.js +2 -2
  262. package/dist/views/system/ai-usage/index2.vue.js +356 -258
  263. package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
  264. package/dist/views/system/api-docs/index.vue.js +5 -2
  265. package/dist/views/system/api-docs/index.vue.js.map +1 -1
  266. package/dist/views/system/api-docs/index2.vue.js +92 -42
  267. package/dist/views/system/api-docs/index2.vue.js.map +1 -1
  268. package/dist/views/system/cache/index.vue.js +2 -2
  269. package/dist/views/system/cache/index2.vue.js +74 -80
  270. package/dist/views/system/cache/index2.vue.js.map +1 -1
  271. package/dist/views/system/config/components/AdminMock.vue.js +8 -0
  272. package/dist/views/system/config/components/AdminMock.vue.js.map +1 -0
  273. package/dist/views/system/config/components/AdminMock2.vue.js +93 -0
  274. package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -0
  275. package/dist/views/system/config/components/AdvancedSection.vue.js +8 -0
  276. package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -0
  277. package/dist/views/system/config/components/AdvancedSection2.vue.js +163 -0
  278. package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -0
  279. package/dist/views/system/config/components/BrandSection.vue.d.ts +7 -0
  280. package/dist/views/system/config/components/BrandSection.vue.js +8 -0
  281. package/dist/views/system/config/components/BrandSection.vue.js.map +1 -0
  282. package/dist/views/system/config/components/BrandSection2.vue.js +266 -0
  283. package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -0
  284. package/dist/views/system/config/components/CfgGroup.vue.d.ts +18 -0
  285. package/dist/views/system/config/components/CfgGroup.vue.js +8 -0
  286. package/dist/views/system/config/components/CfgGroup.vue.js.map +1 -0
  287. package/dist/views/system/config/components/CfgGroup2.vue.js +22 -0
  288. package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -0
  289. package/dist/views/system/config/components/CfgRow.vue.d.ts +26 -0
  290. package/dist/views/system/config/components/CfgRow.vue.js +9 -0
  291. package/dist/views/system/config/components/CfgRow.vue.js.map +1 -0
  292. package/dist/views/system/config/components/CfgRow2.vue.js +54 -0
  293. package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -0
  294. package/dist/views/system/config/components/CfgSegment.vue.d.ts +28 -0
  295. package/dist/views/system/config/components/CfgSegment.vue.js +8 -0
  296. package/dist/views/system/config/components/CfgSegment.vue.js.map +1 -0
  297. package/dist/views/system/config/components/CfgSegment2.vue.js +45 -0
  298. package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -0
  299. package/dist/views/system/config/components/ConfigFormModal.vue.js +4 -1
  300. package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -1
  301. package/dist/views/system/config/components/ConfigFormModal2.vue.js +72 -60
  302. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
  303. package/dist/views/system/config/components/JobSection.vue.js +8 -0
  304. package/dist/views/system/config/components/JobSection.vue.js.map +1 -0
  305. package/dist/views/system/config/components/JobSection2.vue.js +140 -0
  306. package/dist/views/system/config/components/JobSection2.vue.js.map +1 -0
  307. package/dist/views/system/config/components/LoginMock.vue.d.ts +8 -0
  308. package/dist/views/system/config/components/LoginMock.vue.js +8 -0
  309. package/dist/views/system/config/components/LoginMock.vue.js.map +1 -0
  310. package/dist/views/system/config/components/LoginMock2.vue.js +132 -0
  311. package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -0
  312. package/dist/views/system/config/components/LogoCropper.vue.d.ts +10 -0
  313. package/dist/views/system/config/components/LogoCropper.vue.js +8 -0
  314. package/dist/views/system/config/components/LogoCropper.vue.js.map +1 -0
  315. package/dist/views/system/config/components/LogoCropper2.vue.js +122 -0
  316. package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -0
  317. package/dist/views/system/config/components/LogoEditor.vue.js +8 -0
  318. package/dist/views/system/config/components/LogoEditor.vue.js.map +1 -0
  319. package/dist/views/system/config/components/LogoEditor2.vue.js +161 -0
  320. package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -0
  321. package/dist/views/system/config/components/ProviderSheet.vue.d.ts +17 -0
  322. package/dist/views/system/config/components/ProviderSheet.vue.js +8 -0
  323. package/dist/views/system/config/components/ProviderSheet.vue.js.map +1 -0
  324. package/dist/views/system/config/components/ProviderSheet2.vue.js +343 -0
  325. package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -0
  326. package/dist/{layouts/SettingRow.vue.d.ts → views/system/config/components/ScaleToFit.vue.d.ts} +2 -1
  327. package/dist/views/system/config/components/ScaleToFit.vue.js +8 -0
  328. package/dist/views/system/config/components/ScaleToFit.vue.js.map +1 -0
  329. package/dist/views/system/config/components/ScaleToFit2.vue.js +41 -0
  330. package/dist/views/system/config/components/ScaleToFit2.vue.js.map +1 -0
  331. package/dist/views/system/config/components/SectionLayout.vue.d.ts +30 -0
  332. package/dist/views/system/config/components/SectionLayout.vue.js +8 -0
  333. package/dist/views/system/config/components/SectionLayout.vue.js.map +1 -0
  334. package/dist/views/system/config/components/SectionLayout2.vue.js +69 -0
  335. package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -0
  336. package/dist/views/system/config/components/SecuritySection.vue.js +8 -0
  337. package/dist/views/system/config/components/SecuritySection.vue.js.map +1 -0
  338. package/dist/views/system/config/components/SecuritySection2.vue.js +417 -0
  339. package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -0
  340. package/dist/views/system/config/components/SensitiveSection.vue.js +8 -0
  341. package/dist/views/system/config/components/SensitiveSection.vue.js.map +1 -0
  342. package/dist/views/system/config/components/SensitiveSection2.vue.js +214 -0
  343. package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -0
  344. package/dist/views/system/config/components/SigninSection.vue.js +8 -0
  345. package/dist/views/system/config/components/SigninSection.vue.js.map +1 -0
  346. package/dist/views/system/config/components/SigninSection2.vue.js +201 -0
  347. package/dist/views/system/config/components/SigninSection2.vue.js.map +1 -0
  348. package/dist/views/system/config/components/UploadSection.vue.js +8 -0
  349. package/dist/views/system/config/components/UploadSection.vue.js.map +1 -0
  350. package/dist/views/system/config/components/UploadSection2.vue.js +176 -0
  351. package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -0
  352. package/dist/views/system/config/components/WatermarkSection.vue.js +8 -0
  353. package/dist/views/system/config/components/WatermarkSection.vue.js.map +1 -0
  354. package/dist/views/system/config/components/WatermarkSection2.vue.js +284 -0
  355. package/dist/views/system/config/components/WatermarkSection2.vue.js.map +1 -0
  356. package/dist/views/system/config/draft.d.ts +148 -0
  357. package/dist/views/system/config/draft.js +170 -0
  358. package/dist/views/system/config/draft.js.map +1 -0
  359. package/dist/views/system/config/flash.d.ts +2 -0
  360. package/dist/views/system/config/flash.js +9 -0
  361. package/dist/views/system/config/flash.js.map +1 -0
  362. package/dist/views/system/config/groups.d.ts +38 -7
  363. package/dist/views/system/config/groups.js +104 -14
  364. package/dist/views/system/config/groups.js.map +1 -1
  365. package/dist/views/system/config/index.vue.js +6 -2
  366. package/dist/views/system/config/index.vue.js.map +1 -1
  367. package/dist/views/system/config/index2.vue.js +201 -111
  368. package/dist/views/system/config/index2.vue.js.map +1 -1
  369. package/dist/views/system/config/layoutMode.d.ts +23 -0
  370. package/dist/views/system/config/layoutMode.js +28 -0
  371. package/dist/views/system/config/layoutMode.js.map +1 -0
  372. package/dist/views/system/config/providerForm.d.ts +33 -0
  373. package/dist/views/system/config/providerForm.js +63 -0
  374. package/dist/views/system/config/providerForm.js.map +1 -0
  375. package/dist/views/system/dict/index.vue.js +2 -2
  376. package/dist/views/system/dict/index2.vue.js +471 -366
  377. package/dist/views/system/dict/index2.vue.js.map +1 -1
  378. package/dist/views/system/file/index2.vue.js +91 -76
  379. package/dist/views/system/file/index2.vue.js.map +1 -1
  380. package/dist/views/system/job/index.vue.js +3 -3
  381. package/dist/views/system/job/index2.vue.js +897 -828
  382. package/dist/views/system/job/index2.vue.js.map +1 -1
  383. package/dist/views/system/job-log/components/AttemptTable.vue.d.ts +8 -0
  384. package/dist/views/system/job-log/components/AttemptTable.vue.js +5 -0
  385. package/dist/views/system/job-log/components/AttemptTable.vue.js.map +1 -0
  386. package/dist/views/system/job-log/components/AttemptTable2.vue.js +54 -0
  387. package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -0
  388. package/dist/views/system/job-log/index.vue.js +2 -2
  389. package/dist/views/system/job-log/index2.vue.js +193 -207
  390. package/dist/views/system/job-log/index2.vue.js.map +1 -1
  391. package/dist/views/system/job-log/runStatus.d.ts +13 -0
  392. package/dist/views/system/job-log/runStatus.js +26 -0
  393. package/dist/views/system/job-log/runStatus.js.map +1 -0
  394. package/dist/views/system/job-monitor/index.vue.js +2 -2
  395. package/dist/views/system/job-monitor/index2.vue.js +172 -180
  396. package/dist/views/system/job-monitor/index2.vue.js.map +1 -1
  397. package/dist/views/system/log/exception/index.vue.js +2 -2
  398. package/dist/views/system/log/exception/index2.vue.js +135 -96
  399. package/dist/views/system/log/exception/index2.vue.js.map +1 -1
  400. package/dist/views/system/log/login/index2.vue.js +62 -41
  401. package/dist/views/system/log/login/index2.vue.js.map +1 -1
  402. package/dist/views/system/log/op/index.vue.js +2 -2
  403. package/dist/views/system/log/op/index2.vue.js +200 -162
  404. package/dist/views/system/log/op/index2.vue.js.map +1 -1
  405. package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
  406. package/dist/views/system/menu/components/ButtonManager2.vue.js +206 -190
  407. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
  408. package/dist/views/system/menu/components/MenuFormModal.vue.js +2 -2
  409. package/dist/views/system/menu/components/MenuFormModal2.vue.js +127 -118
  410. package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -1
  411. package/dist/views/system/menu/index.vue.js +1 -1
  412. package/dist/views/system/menu/index2.vue.js +216 -183
  413. package/dist/views/system/menu/index2.vue.js.map +1 -1
  414. package/dist/views/system/module/index.vue.js +1 -1
  415. package/dist/views/system/module/index2.vue.js +177 -144
  416. package/dist/views/system/module/index2.vue.js.map +1 -1
  417. package/dist/views/system/monitor/index.vue.js +2 -2
  418. package/dist/views/system/monitor/index2.vue.js +134 -149
  419. package/dist/views/system/monitor/index2.vue.js.map +1 -1
  420. package/dist/views/system/notice/index.vue.js +1 -1
  421. package/dist/views/system/notice/index2.vue.js +209 -181
  422. package/dist/views/system/notice/index2.vue.js.map +1 -1
  423. package/dist/views/system/org/index.vue.js +1 -1
  424. package/dist/views/system/org/index2.vue.js +278 -248
  425. package/dist/views/system/org/index2.vue.js.map +1 -1
  426. package/dist/views/system/position/index.vue.js +5 -2
  427. package/dist/views/system/position/index.vue.js.map +1 -1
  428. package/dist/views/system/position/index2.vue.js +128 -92
  429. package/dist/views/system/position/index2.vue.js.map +1 -1
  430. package/dist/views/system/recycle/index.vue.js +2 -2
  431. package/dist/views/system/recycle/index2.vue.js +90 -67
  432. package/dist/views/system/recycle/index2.vue.js.map +1 -1
  433. package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +20 -0
  434. package/dist/views/system/role/components/GrantMenuSheet.vue.js +8 -0
  435. package/dist/views/system/role/components/GrantMenuSheet.vue.js.map +1 -0
  436. package/dist/views/system/role/components/GrantMenuSheet2.vue.js +117 -0
  437. package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -0
  438. package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +6 -4
  439. package/dist/views/system/role/components/GrantMenuTable.vue.js +2 -2
  440. package/dist/views/system/role/components/GrantMenuTable2.vue.js +279 -177
  441. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
  442. package/dist/views/system/role/components/MatchText.vue.d.ts +7 -0
  443. package/dist/views/system/role/components/MatchText.vue.js +8 -0
  444. package/dist/views/system/role/components/MatchText.vue.js.map +1 -0
  445. package/dist/views/system/role/components/MatchText2.vue.js +29 -0
  446. package/dist/views/system/role/components/MatchText2.vue.js.map +1 -0
  447. package/dist/views/system/role/components/grantMenuGroups.d.ts +36 -0
  448. package/dist/views/system/role/components/grantMenuGroups.js +110 -48
  449. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
  450. package/dist/views/system/role/index.vue.js +5 -2
  451. package/dist/views/system/role/index.vue.js.map +1 -1
  452. package/dist/views/system/role/index2.vue.js +181 -165
  453. package/dist/views/system/role/index2.vue.js.map +1 -1
  454. package/dist/views/system/session/index2.vue.js +75 -49
  455. package/dist/views/system/session/index2.vue.js.map +1 -1
  456. package/dist/views/system/user/components/ResetPasswordModal.vue.js +2 -2
  457. package/dist/views/system/user/components/ResetPasswordModal2.vue.js +2 -0
  458. package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -1
  459. package/dist/views/system/user/components/UserFormModal.vue.js +2 -2
  460. package/dist/views/system/user/components/UserFormModal2.vue.js +77 -76
  461. package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -1
  462. package/dist/views/system/user/index.vue.js +2 -2
  463. package/dist/views/system/user/index2.vue.js +362 -275
  464. package/dist/views/system/user/index2.vue.js.map +1 -1
  465. package/package.json +6 -8
  466. package/dist/components/SelectTable/index.vue.d.ts +0 -76
  467. package/dist/components/SelectTable/index2.vue.js +0 -256
  468. package/dist/components/SelectTable/index2.vue.js.map +0 -1
  469. package/dist/composables/useTableRowSort.d.ts +0 -20
  470. package/dist/composables/useTableRowSort.js +0 -59
  471. package/dist/composables/useTableRowSort.js.map +0 -1
  472. package/dist/layouts/LayoutModeCards.vue.js +0 -8
  473. package/dist/layouts/LayoutModeCards.vue.js.map +0 -1
  474. package/dist/layouts/LayoutModeCards2.vue.js +0 -67
  475. package/dist/layouts/LayoutModeCards2.vue.js.map +0 -1
  476. package/dist/layouts/SettingRow.vue.js +0 -8
  477. package/dist/layouts/SettingRow.vue.js.map +0 -1
  478. package/dist/layouts/SettingRow2.vue.js +0 -23
  479. package/dist/layouts/SettingRow2.vue.js.map +0 -1
  480. package/dist/views/login/skins/AuroraGlass.vue.js +0 -8
  481. package/dist/views/login/skins/AuroraGlass.vue.js.map +0 -1
  482. package/dist/views/login/skins/AuroraGlass2.vue.js +0 -80
  483. package/dist/views/login/skins/AuroraGlass2.vue.js.map +0 -1
  484. package/dist/views/login/skins/SplitPanel.vue.js +0 -8
  485. package/dist/views/login/skins/SplitPanel.vue.js.map +0 -1
  486. package/dist/views/login/skins/SplitPanel2.vue.js +0 -85
  487. package/dist/views/login/skins/SplitPanel2.vue.js.map +0 -1
  488. package/dist/views/login/skins/Spotlight.vue.js +0 -8
  489. package/dist/views/login/skins/Spotlight.vue.js.map +0 -1
  490. package/dist/views/login/skins/Spotlight2.vue.js +0 -36
  491. package/dist/views/login/skins/Spotlight2.vue.js.map +0 -1
  492. package/dist/views/login/skins.d.ts +0 -8
  493. package/dist/views/login/skins.js +0 -13
  494. package/dist/views/login/skins.js.map +0 -1
  495. package/dist/views/system/config/components/ExternalAuthConfig.vue.js +0 -8
  496. package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +0 -1
  497. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +0 -218
  498. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +0 -1
  499. package/dist/views/system/config/components/GroupExtraConfig.vue.js +0 -8
  500. package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +0 -1
  501. package/dist/views/system/config/components/GroupExtraConfig2.vue.js +0 -108
  502. package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +0 -1
  503. package/dist/views/system/config/components/HighSensConfig.vue.js +0 -5
  504. package/dist/views/system/config/components/HighSensConfig.vue.js.map +0 -1
  505. package/dist/views/system/config/components/HighSensConfig2.vue.js +0 -134
  506. package/dist/views/system/config/components/HighSensConfig2.vue.js.map +0 -1
  507. package/dist/views/system/config/components/JobConfig.vue.js +0 -5
  508. package/dist/views/system/config/components/JobConfig.vue.js.map +0 -1
  509. package/dist/views/system/config/components/JobConfig2.vue.js +0 -116
  510. package/dist/views/system/config/components/JobConfig2.vue.js.map +0 -1
  511. package/dist/views/system/config/components/OtherConfig.vue.js +0 -5
  512. package/dist/views/system/config/components/OtherConfig.vue.js.map +0 -1
  513. package/dist/views/system/config/components/OtherConfig2.vue.js +0 -121
  514. package/dist/views/system/config/components/OtherConfig2.vue.js.map +0 -1
  515. package/dist/views/system/config/components/SecurityConfig.vue.js +0 -8
  516. package/dist/views/system/config/components/SecurityConfig.vue.js.map +0 -1
  517. package/dist/views/system/config/components/SecurityConfig2.vue.js +0 -456
  518. package/dist/views/system/config/components/SecurityConfig2.vue.js.map +0 -1
  519. package/dist/views/system/config/components/SysBaseConfig.vue.js +0 -5
  520. package/dist/views/system/config/components/SysBaseConfig.vue.js.map +0 -1
  521. package/dist/views/system/config/components/SysBaseConfig2.vue.js +0 -107
  522. package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +0 -1
  523. package/dist/views/system/config/components/UploadConfig.vue.d.ts +0 -3
  524. package/dist/views/system/config/components/UploadConfig.vue.js +0 -5
  525. package/dist/views/system/config/components/UploadConfig.vue.js.map +0 -1
  526. package/dist/views/system/config/components/UploadConfig2.vue.js +0 -135
  527. package/dist/views/system/config/components/UploadConfig2.vue.js.map +0 -1
  528. /package/dist/components/{SelectTable → TableTotal}/index.vue.js.map +0 -0
  529. /package/dist/layouts/{LayoutModeCards.vue.d.ts → AccentPicker.vue.d.ts} +0 -0
  530. /package/dist/views/{login/skins/AuroraGlass.vue.d.ts → system/config/components/AdminMock.vue.d.ts} +0 -0
  531. /package/dist/views/{login/skins/SplitPanel.vue.d.ts → system/config/components/AdvancedSection.vue.d.ts} +0 -0
  532. /package/dist/views/{login/skins/Spotlight.vue.d.ts → system/config/components/JobSection.vue.d.ts} +0 -0
  533. /package/dist/views/system/config/components/{ExternalAuthConfig.vue.d.ts → LogoEditor.vue.d.ts} +0 -0
  534. /package/dist/views/system/config/components/{HighSensConfig.vue.d.ts → SecuritySection.vue.d.ts} +0 -0
  535. /package/dist/views/system/config/components/{JobConfig.vue.d.ts → SensitiveSection.vue.d.ts} +0 -0
  536. /package/dist/views/system/config/components/{OtherConfig.vue.d.ts → SigninSection.vue.d.ts} +0 -0
  537. /package/dist/views/system/config/components/{SecurityConfig.vue.d.ts → UploadSection.vue.d.ts} +0 -0
  538. /package/dist/views/system/config/components/{SysBaseConfig.vue.d.ts → WatermarkSection.vue.d.ts} +0 -0
@@ -1,79 +1,149 @@
1
- import { defineComponent as f, ref as v, watch as C, computed as N, openBlock as c, createElementBlock as u, createBlock as S, resolveDynamicComponent as w, createElementVNode as r, unref as t, Fragment as y, renderList as D, normalizeClass as I, toDisplayString as p, createVNode as m, withCtx as d, createTextVNode as g } from "vue";
2
- import { NTooltip as _ } from "naive-ui";
3
- import { Icon as x } from "@iconify/vue";
4
- import { useI18n as E } from "vue-i18n";
5
- import { useAppStore as L } from "../../stores/app.js";
6
- import { LOGIN_SKINS as s, DEFAULT_SKIN as z } from "./skins.js";
7
- const B = { class: "login-shell" }, K = { class: "login-topbar" }, T = ["aria-label"], U = ["aria-selected", "onClick"], V = { class: "login-tools" }, $ = ["aria-label"], A = ["aria-label"], k = "login-skin", H = /* @__PURE__ */ f({
1
+ import { defineComponent as V, ref as h, computed as z, openBlock as s, createBlock as v, normalizeClass as B, createSlots as E, withCtx as o, createVNode as u, unref as e, createTextVNode as p, toDisplayString as i, Transition as U, createCommentVNode as N, createElementVNode as y, createElementBlock as w, Fragment as D, nextTick as F } from "vue";
2
+ import { NTooltip as x, NButton as C } from "naive-ui";
3
+ import { Icon as I } from "@iconify/vue";
4
+ import { useMediaQuery as Y } from "@vueuse/core";
5
+ import { useI18n as q } from "vue-i18n";
6
+ import { useAppStore as A } from "../../stores/app.js";
7
+ import { useLoginHero as H } from "../../composables/useLoginHero.js";
8
+ import { useSite as M } from "../../composables/useSite.js";
9
+ import $ from "./components/LoginDesk.vue.js";
10
+ import K from "./LoginForm.vue.js";
11
+ import O from "./components/LoginHeroPanel.vue.js";
12
+ import { resolveLoginLayout as P, LAYOUT_KEY as Q } from "./layout.js";
13
+ const j = { class: "lang-text" }, G = { class: "foot" }, J = ["href"], R = {
14
+ key: 0,
15
+ class: "foot-ver"
16
+ }, pe = /* @__PURE__ */ V({
8
17
  __name: "index",
9
- setup(F) {
10
- const l = L(), { t: o } = E();
11
- function b() {
12
- const a = new URLSearchParams(window.location.search).get("skin");
13
- if (a && s.some((e) => e.id === a)) return a;
14
- const n = localStorage.getItem(k);
15
- return n && s.some((e) => e.id === n) ? n : z;
18
+ setup(W) {
19
+ const g = A(), { t: n } = q(), { site: a, appVersion: _ } = M(), m = H(), S = (/* @__PURE__ */ new Date()).getFullYear(), k = Y("(min-width: 900px)"), d = h(P(window.location.search, localStorage)), t = z(() => d.value === "split" && k.value), b = h(!1), f = h(!1);
20
+ function T(c) {
21
+ var L;
22
+ if (d.value === c) return;
23
+ const l = () => {
24
+ d.value = c;
25
+ try {
26
+ localStorage.setItem(Q, c);
27
+ } catch {
28
+ }
29
+ }, r = document;
30
+ if (!r.startViewTransition || (L = window.matchMedia) != null && L.call(window, "(prefers-reduced-motion: reduce)").matches) {
31
+ l();
32
+ return;
33
+ }
34
+ f.value = !0, r.startViewTransition(async () => {
35
+ l(), await F();
36
+ }).finished.finally(() => {
37
+ f.value = !1;
38
+ });
16
39
  }
17
- const i = v(b());
18
- C(i, (a) => localStorage.setItem(k, a));
19
- const h = N(() => s.find((a) => a.id === i.value) ?? s[0]);
20
- return (a, n) => (c(), u("div", B, [
21
- (c(), S(w(h.value.component))),
22
- r("div", K, [
23
- r("div", {
24
- class: "skin-switch",
25
- role: "tablist",
26
- "aria-label": t(o)("app.loginStyle")
27
- }, [
28
- (c(!0), u(y, null, D(t(s), (e) => (c(), u("button", {
29
- key: e.id,
30
- class: I(["skin-seg", { active: e.id === i.value }]),
31
- type: "button",
32
- role: "tab",
33
- "aria-selected": e.id === i.value,
34
- onClick: (q) => i.value = e.id
35
- }, p(t(o)(e.label)), 11, U))), 128))
36
- ], 8, T),
37
- r("div", V, [
38
- m(t(_), null, {
39
- trigger: d(() => [
40
- r("button", {
41
- class: "tool-btn",
42
- type: "button",
43
- "aria-label": t(l).isDark ? t(o)("app.light") : t(o)("app.dark"),
44
- onClick: n[0] || (n[0] = (e) => t(l).toggleDark())
45
- }, [
46
- m(t(x), {
47
- icon: t(l).isDark ? "ph:moon-stars" : "ph:sun",
48
- width: 18
49
- }, null, 8, ["icon"])
50
- ], 8, $)
40
+ return (c, l) => (s(), v($, {
41
+ split: t.value,
42
+ leaving: b.value,
43
+ class: B({ switching: f.value }),
44
+ width: 400,
45
+ "content-style": "padding: 26px 26px 22px"
46
+ }, E({
47
+ corner: o(() => [
48
+ e(k) ? (s(), v(e(x), { key: 0 }, {
49
+ trigger: o(() => [
50
+ u(e(C), {
51
+ quaternary: "",
52
+ circle: "",
53
+ "data-testid": "login-layout-toggle",
54
+ "aria-label": e(n)("login.layoutLabel"),
55
+ onClick: l[0] || (l[0] = (r) => T(t.value ? "solo" : "split"))
56
+ }, {
57
+ icon: o(() => [
58
+ u(U, {
59
+ name: "ico",
60
+ mode: "out-in"
61
+ }, {
62
+ default: o(() => [
63
+ (s(), v(e(I), {
64
+ key: t.value ? "solo" : "split",
65
+ icon: t.value ? "ph:rectangle" : "ph:columns",
66
+ width: 18
67
+ }, null, 8, ["icon"]))
68
+ ]),
69
+ _: 1
70
+ })
71
+ ]),
72
+ _: 1
73
+ }, 8, ["aria-label"])
74
+ ]),
75
+ default: o(() => [
76
+ p(" " + i(t.value ? e(n)("login.layoutToSolo") : e(n)("login.layoutToSplit")), 1)
77
+ ]),
78
+ _: 1
79
+ })) : N("", !0),
80
+ u(e(x), null, {
81
+ trigger: o(() => [
82
+ u(e(C), {
83
+ quaternary: "",
84
+ circle: "",
85
+ "aria-label": e(n)("app.language"),
86
+ onClick: l[1] || (l[1] = (r) => e(g).setLocale(e(g).locale === "zh-CN" ? "en-US" : "zh-CN"))
87
+ }, {
88
+ default: o(() => [
89
+ y("span", j, i(e(g).locale === "zh-CN" ? "中" : "EN"), 1)
90
+ ]),
91
+ _: 1
92
+ }, 8, ["aria-label"])
93
+ ]),
94
+ default: o(() => [
95
+ p(" " + i(e(n)("app.language")), 1)
96
+ ]),
97
+ _: 1
98
+ })
99
+ ]),
100
+ default: o(() => [
101
+ u(K, {
102
+ "show-logo": !t.value,
103
+ "show-title": !t.value,
104
+ "show-greeting": t.value,
105
+ "show-footer": !t.value,
106
+ onLeave: l[2] || (l[2] = (r) => b.value = r)
107
+ }, null, 8, ["show-logo", "show-title", "show-greeting", "show-footer"])
108
+ ]),
109
+ _: 2
110
+ }, [
111
+ t.value ? {
112
+ name: "brand",
113
+ fn: o(() => [
114
+ u(O, {
115
+ headline: e(m).headline,
116
+ highlight: e(m).highlight,
117
+ subtitle: e(a).subtitle || e(n)("login.subtitle"),
118
+ features: e(m).features
119
+ }, null, 8, ["headline", "highlight", "subtitle", "features"])
120
+ ]),
121
+ key: "0"
122
+ } : void 0,
123
+ t.value ? {
124
+ name: "after",
125
+ fn: o(() => [
126
+ y("p", G, [
127
+ y("span", null, [
128
+ p(" © " + i(e(S)) + " ", 1),
129
+ e(a).copyrightUrl ? (s(), w("a", {
130
+ key: 0,
131
+ href: e(a).copyrightUrl,
132
+ target: "_blank",
133
+ rel: "noopener"
134
+ }, i(e(a).copyright || e(a).title), 9, J)) : (s(), w(D, { key: 1 }, [
135
+ p(i(e(a).copyright || e(a).title), 1)
136
+ ], 64))
51
137
  ]),
52
- default: d(() => [
53
- g(" " + p(t(l).isDark ? t(o)("app.light") : t(o)("app.dark")), 1)
54
- ]),
55
- _: 1
56
- }),
57
- m(t(_), null, {
58
- trigger: d(() => [
59
- r("button", {
60
- class: "tool-btn tool-lang",
61
- type: "button",
62
- "aria-label": t(o)("app.language"),
63
- onClick: n[1] || (n[1] = (e) => t(l).setLocale(t(l).locale === "zh-CN" ? "en-US" : "zh-CN"))
64
- }, p(t(l).locale === "zh-CN" ? "中" : "EN"), 9, A)
65
- ]),
66
- default: d(() => [
67
- g(" " + p(t(o)("app.language")), 1)
68
- ]),
69
- _: 1
70
- })
71
- ])
72
- ])
73
- ]));
138
+ e(_) ? (s(), w("span", R, "v" + i(e(_)), 1)) : N("", !0)
139
+ ])
140
+ ]),
141
+ key: "1"
142
+ } : void 0
143
+ ]), 1032, ["split", "leaving", "class"]));
74
144
  }
75
145
  });
76
146
  export {
77
- H as default
147
+ pe as default
78
148
  };
79
149
  //# sourceMappingURL=index2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index2.vue.js","sources":["../../../src/views/login/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue'\nimport { NTooltip } from 'naive-ui'\nimport { Icon } from '@iconify/vue'\nimport { useI18n } from 'vue-i18n'\nimport { useAppStore } from '#/stores/app'\nimport { LOGIN_SKINS, DEFAULT_SKIN } from './skins'\n\nconst KEY = 'login-skin'\nconst app = useAppStore()\nconst { t } = useI18n()\n\nfunction initSkin(): string {\n // ?skin= 一次性覆盖(便于对比预览),否则读记忆,再回退默认。\n const q = new URLSearchParams(window.location.search).get('skin')\n if (q && LOGIN_SKINS.some(s => s.id === q)) return q\n const saved = localStorage.getItem(KEY)\n if (saved && LOGIN_SKINS.some(s => s.id === saved)) return saved\n return DEFAULT_SKIN\n}\n\nconst skin = ref(initSkin())\nwatch(skin, v => localStorage.setItem(KEY, v))\n\nconst active = computed(() => LOGIN_SKINS.find(s => s.id === skin.value) ?? LOGIN_SKINS[0])\n</script>\n\n<template>\n <div class=\"login-shell\">\n <component :is=\"active.component\" />\n\n <!-- 右上角工具栏:皮肤切换 + 主题/语言,三枚磨砂药丸并排(主题/语言贴最右角)。 -->\n <div class=\"login-topbar\">\n <!-- 皮肤切换器:深色磨砂药丸,在明/暗/极光三种底色上都可读 -->\n <div class=\"skin-switch\" role=\"tablist\" :aria-label=\"t('app.loginStyle')\">\n <button\n v-for=\"s in LOGIN_SKINS\"\n :key=\"s.id\"\n class=\"skin-seg\"\n :class=\"{ active: s.id === skin }\"\n type=\"button\"\n role=\"tab\"\n :aria-selected=\"s.id === skin\"\n @click=\"skin = s.id\"\n >\n {{ t(s.label) }}\n </button>\n </div>\n\n <!-- 全局工具:主题 + 语言。深色磨砂药丸,在明/暗/极光三种底色上都可读,三种皮肤通用。 -->\n <div class=\"login-tools\">\n <n-tooltip>\n <template #trigger>\n <button\n class=\"tool-btn\"\n type=\"button\"\n :aria-label=\"app.isDark ? t('app.light') : t('app.dark')\"\n @click=\"app.toggleDark()\"\n >\n <Icon :icon=\"app.isDark ? 'ph:moon-stars' : 'ph:sun'\" :width=\"18\" />\n </button>\n </template>\n {{ app.isDark ? t('app.light') : t('app.dark') }}\n </n-tooltip>\n <n-tooltip>\n <template #trigger>\n <button\n class=\"tool-btn tool-lang\"\n type=\"button\"\n :aria-label=\"t('app.language')\"\n @click=\"app.setLocale(app.locale === 'zh-CN' ? 'en-US' : 'zh-CN')\"\n >\n {{ app.locale === 'zh-CN' ? '中' : 'EN' }}\n </button>\n </template>\n {{ t('app.language') }}\n </n-tooltip>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.login-shell {\n position: relative;\n height: 100dvh;\n overflow: hidden;\n}\n/* 右上角工具栏:皮肤切换 + 主题/语言并排靠右;窄屏放不下时换行仍右对齐,不横向溢出。 */\n.login-topbar {\n position: fixed;\n top: 20px;\n right: 24px;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-wrap: wrap;\n gap: 10px;\n}\n/* 全局工具药丸,与皮肤切换器同款磨砂,自带对比,三底色皆可读 */\n.login-tools {\n display: flex;\n gap: 2px;\n padding: 4px;\n border-radius: 999px;\n background: rgba(18, 20, 28, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.14);\n backdrop-filter: blur(14px);\n -webkit-backdrop-filter: blur(14px);\n box-shadow: 0 6px 20px rgba(0, 0, 0, 0.28);\n}\n.tool-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 34px;\n height: 30px;\n padding: 0 10px;\n border: none;\n cursor: pointer;\n border-radius: 999px;\n background: transparent;\n font-size: 13px;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.62);\n transition:\n color 0.2s,\n background 0.2s;\n}\n.tool-btn:hover {\n color: #fff;\n}\n.tool-btn:focus-visible {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n/* ponytail: 固定深色药丸自带对比,纯白 spotlight 右上角也够读;若极端不够再补浅色 scrim */\n.skin-switch {\n display: flex;\n gap: 2px;\n padding: 4px;\n border-radius: 999px;\n background: rgba(18, 20, 28, 0.55);\n border: 1px solid rgba(255, 255, 255, 0.14);\n backdrop-filter: blur(14px);\n -webkit-backdrop-filter: blur(14px);\n box-shadow: 0 6px 20px rgba(0, 0, 0, 0.28);\n}\n.skin-seg {\n border: none;\n cursor: pointer;\n padding: 6px 16px;\n border-radius: 999px;\n background: transparent;\n font-size: 13px;\n font-weight: 600;\n color: rgba(255, 255, 255, 0.62);\n transition:\n color 0.2s,\n background 0.2s;\n}\n.skin-seg:hover {\n color: #fff;\n}\n.skin-seg.active {\n background: var(--color-primary);\n color: #fff;\n}\n</style>\n"],"names":["KEY","app","useAppStore","t","useI18n","initSkin","q","LOGIN_SKINS","s","saved","DEFAULT_SKIN","skin","ref","watch","v","active","computed","_openBlock","_createElementBlock","_hoisted_1","_createBlock","_resolveDynamicComponent","_createElementVNode","_hoisted_2","_unref","_Fragment","_renderList","$event","_hoisted_4","_hoisted_5","_createVNode","NTooltip","_cache","Icon","_createTextVNode","_toDisplayString","_hoisted_7"],"mappings":";;;;;;+LAQMA,IAAM;;;AACZ,UAAMC,IAAMC,EAAA,GACN,EAAE,GAAAC,EAAA,IAAMC,EAAA;AAEd,aAASC,IAAmB;AAE1B,YAAMC,IAAI,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE,IAAI,MAAM;AAChE,UAAIA,KAAKC,EAAY,KAAK,CAAAC,MAAKA,EAAE,OAAOF,CAAC,EAAG,QAAOA;AACnD,YAAMG,IAAQ,aAAa,QAAQT,CAAG;AACtC,aAAIS,KAASF,EAAY,KAAK,CAAAC,MAAKA,EAAE,OAAOC,CAAK,IAAUA,IACpDC;AAAA,IACT;AAEA,UAAMC,IAAOC,EAAIP,GAAU;AAC3B,IAAAQ,EAAMF,GAAM,CAAAG,MAAK,aAAa,QAAQd,GAAKc,CAAC,CAAC;AAE7C,UAAMC,IAASC,EAAS,MAAMT,EAAY,KAAK,CAAAC,MAAKA,EAAE,OAAOG,EAAK,KAAK,KAAKJ,EAAY,CAAC,CAAC;sBAIxFU,EAAA,GAAAC,EAmDM,OAnDNC,GAmDM;AAAA,YAlDJC,EAAoCC,EAApBN,EAAA,MAAO,SAAS,CAAA;AAAA,MAGhCO,EA8CM,OA9CNC,GA8CM;AAAA,QA5CJD,EAaM,OAAA;AAAA,UAbD,OAAM;AAAA,UAAc,MAAK;AAAA,UAAW,cAAYE,EAAArB,CAAA,EAAC,gBAAA;AAAA,QAAA;kBACpDe,EAWSO,GAAA,MAAAC,EAVKF,EAAAjB,CAAA,GAAW,CAAhBC,YADTU,EAWS,UAAA;AAAA,YATN,KAAKV,EAAE;AAAA,YACR,UAAM,YAAU,EAAA,QACEA,EAAE,OAAOG,EAAA,MAAA,CAAI,CAAA;AAAA,YAC/B,MAAK;AAAA,YACL,MAAK;AAAA,YACJ,iBAAeH,EAAE,OAAOG,EAAA;AAAA,YACxB,SAAK,CAAAgB,MAAEhB,EAAA,QAAOH,EAAE;AAAA,UAAA,KAEdgB,EAAArB,CAAA,EAAEK,EAAE,KAAK,CAAA,GAAA,IAAAoB,CAAA;;QAKhBN,EA2BM,OA3BNO,GA2BM;AAAA,UA1BJC,EAYYN,EAAAO,CAAA,GAAA,MAAA;AAAA,YAXC,WACT,MAOS;AAAA,cAPTT,EAOS,UAAA;AAAA,gBANP,OAAM;AAAA,gBACN,MAAK;AAAA,gBACJ,cAAYE,EAAAvB,CAAA,EAAI,SAASuB,EAAArB,CAAA,iBAAiBqB,EAAArB,CAAA,EAAC,UAAA;AAAA,gBAC3C,SAAK6B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAL,MAAEH,EAAAvB,CAAA,EAAI,WAAA;AAAA,cAAU;gBAEtB6B,EAAoEN,EAAAS,CAAA,GAAA;AAAA,kBAA7D,MAAMT,EAAAvB,CAAA,EAAI,SAAM,kBAAA;AAAA,kBAAgC,OAAO;AAAA,gBAAA;;;uBAEvD,MACX;AAAA,cADWiC,EAAA,QACRV,EAAAvB,CAAA,EAAI,SAASuB,EAAArB,CAAA,iBAAiBqB,EAAArB,CAAA,EAAC,UAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;UAEpC2B,EAYYN,EAAAO,CAAA,GAAA,MAAA;AAAA,YAXC,WACT,MAOS;AAAA,cAPTT,EAOS,UAAA;AAAA,gBANP,OAAM;AAAA,gBACN,MAAK;AAAA,gBACJ,cAAYE,EAAArB,CAAA,EAAC,cAAA;AAAA,gBACb,gCAAOqB,EAAAvB,CAAA,EAAI,UAAUuB,EAAAvB,CAAA,EAAI,WAAM,UAAA,UAAA,OAAA;AAAA,cAAA,GAE7BkC,EAAAX,EAAAvB,CAAA,EAAI,WAAM,UAAA,MAAA,IAAA,GAAA,GAAAmC,CAAA;AAAA,YAAA;uBAEN,MACX;AAAA,cADWF,EAAA,QACRV,EAAArB,CAAA,EAAC,cAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;;;;;;"}
1
+ {"version":3,"file":"index2.vue.js","sources":["../../../src/views/login/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 登录页:macOS 锁屏语言的外壳(色场 + 毛玻璃卡,见 components/LoginDesk.vue)+ 表单(LoginForm.vue)。\n// 布局两种:单栏(默认,居中一张卡)/ 双栏(内容区 ≥ 900 才可选:左栏品牌区,右栏卡)。\n// 选择只存浏览器本地(localStorage 'sa-login-layout' = solo | split),不是后台配置;< 900 强制单栏且不显示切换按钮。\n// 兼容皮肤 id(aurora / split / spotlight)的浏览器记忆与 ?skin= 一次性覆盖,\n// 映射到最接近的布局:split → 双栏,aurora / spotlight 是居中一张卡 → 单栏。\nimport { computed, nextTick, ref } from 'vue'\nimport { NButton, NTooltip } from 'naive-ui'\nimport { Icon } from '@iconify/vue'\nimport { useMediaQuery } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n'\nimport { useAppStore } from '#/stores/app'\nimport { useLoginHero } from '#/composables/useLoginHero'\nimport { useSite } from '#/composables/useSite'\nimport LoginDesk from './components/LoginDesk.vue'\nimport LoginForm from './LoginForm.vue'\nimport LoginHeroPanel from './components/LoginHeroPanel.vue'\nimport { LAYOUT_KEY, resolveLoginLayout, type LoginLayout } from './layout'\n\nconst app = useAppStore()\nconst { t } = useI18n()\nconst { site, appVersion } = useSite()\nconst hero = useLoginHero()\nconst year = new Date().getFullYear()\n\nconst wide = useMediaQuery('(min-width: 900px)')\nconst layout = ref<LoginLayout>(resolveLoginLayout(window.location.search, localStorage))\nconst split = computed(() => layout.value === 'split' && wide.value)\n\n// 登录成功后外壳播退场动画(LoginForm 通知)\nconst leaving = ref(false)\n\n// 切换布局时给卡片挂 view-transition-name(见 LoginDesk 的全局样式),让它从居中平滑滑到右栏;\n// 浏览器不支持 View Transitions 或系统开了「减少动态效果」就直接切。\nconst switching = ref(false)\nfunction setLayout(next: LoginLayout) {\n if (layout.value === next) return\n const commit = () => {\n layout.value = next\n try {\n localStorage.setItem(LAYOUT_KEY, next)\n } catch {\n // 无痕窗口 / 站点数据被禁:这次照常切换,只是不记忆\n }\n }\n const doc = document as Document & {\n startViewTransition?: (update: () => Promise<void>) => { finished: Promise<void> }\n }\n if (!doc.startViewTransition || window.matchMedia?.('(prefers-reduced-motion: reduce)').matches) {\n commit()\n return\n }\n switching.value = true\n const transition = doc.startViewTransition(async () => {\n commit()\n await nextTick()\n })\n void transition.finished.finally(() => {\n switching.value = false\n })\n}\n</script>\n\n<template>\n <LoginDesk\n :split=\"split\"\n :leaving=\"leaving\"\n :class=\"{ switching }\"\n :width=\"400\"\n content-style=\"padding: 26px 26px 22px\"\n >\n <!-- 双栏左栏:品牌区(文案可在系统配置里改,空值回退内置文案) -->\n <template v-if=\"split\" #brand>\n <LoginHeroPanel\n :headline=\"hero.headline\"\n :highlight=\"hero.highlight\"\n :subtitle=\"site.subtitle || t('login.subtitle')\"\n :features=\"hero.features\"\n />\n </template>\n\n <!-- 右上角工具栏:布局切换(仅内容区 ≥ 900 才出现)+ 语言;主题切换由外壳贴最右角 -->\n <template #corner>\n <!-- 与语言、主题同款的幽灵圆钮,不抢眼;图标显示「点了会切到的布局」,点击时图标旋转淡出再换成另一个 -->\n <n-tooltip v-if=\"wide\">\n <template #trigger>\n <n-button\n quaternary\n circle\n data-testid=\"login-layout-toggle\"\n :aria-label=\"t('login.layoutLabel')\"\n @click=\"setLayout(split ? 'solo' : 'split')\"\n >\n <template #icon>\n <Transition name=\"ico\" mode=\"out-in\">\n <Icon\n :key=\"split ? 'solo' : 'split'\"\n :icon=\"split ? 'ph:rectangle' : 'ph:columns'\"\n :width=\"18\"\n />\n </Transition>\n </template>\n </n-button>\n </template>\n {{ split ? t('login.layoutToSolo') : t('login.layoutToSplit') }}\n </n-tooltip>\n <n-tooltip>\n <template #trigger>\n <n-button\n quaternary\n circle\n :aria-label=\"t('app.language')\"\n @click=\"app.setLocale(app.locale === 'zh-CN' ? 'en-US' : 'zh-CN')\"\n >\n <span class=\"lang-text\">{{ app.locale === 'zh-CN' ? '中' : 'EN' }}</span>\n </n-button>\n </template>\n {{ t('app.language') }}\n </n-tooltip>\n </template>\n\n <!-- 单栏:卡内顶部 logo + 站点标题 + 「登录」标题 + 页脚;双栏:卡内是问候语,页脚在卡外 -->\n <LoginForm\n :show-logo=\"!split\"\n :show-title=\"!split\"\n :show-greeting=\"split\"\n :show-footer=\"!split\"\n @leave=\"leaving = $event\"\n />\n\n <template v-if=\"split\" #after>\n <p class=\"foot\">\n <span>\n © {{ year }}\n <a v-if=\"site.copyrightUrl\" :href=\"site.copyrightUrl\" target=\"_blank\" rel=\"noopener\">\n {{ site.copyright || site.title }}\n </a>\n <template v-else>{{ site.copyright || site.title }}</template>\n </span>\n <span v-if=\"appVersion\" class=\"foot-ver\">v{{ appVersion }}</span>\n </p>\n </template>\n </LoginDesk>\n</template>\n\n<style scoped>\n/* 布局切换图标:旧图标缩小、微转、淡出,新图标从另一侧转回来;时长很短,不拖手 */\n.ico-enter-active,\n.ico-leave-active {\n transition:\n opacity 0.16s var(--ease),\n transform 0.2s var(--ease);\n}\n.ico-leave-to {\n opacity: 0;\n transform: rotate(-70deg) scale(0.6);\n}\n.ico-enter-from {\n opacity: 0;\n transform: rotate(70deg) scale(0.6);\n}\n.lang-text {\n font-size: 13px;\n font-weight: 600;\n line-height: 1;\n}\n.foot {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n margin: 22px 0 0;\n font-size: 13px;\n color: var(--text-3);\n}\n.foot a {\n color: inherit;\n text-decoration: none;\n}\n.foot a:hover {\n color: var(--signal);\n}\n.foot-ver {\n opacity: 0.75;\n}\n</style>\n"],"names":["app","useAppStore","t","useI18n","site","appVersion","useSite","hero","useLoginHero","year","wide","useMediaQuery","layout","ref","resolveLoginLayout","split","computed","leaving","switching","setLayout","next","commit","LAYOUT_KEY","doc","_a","nextTick","_createBlock","LoginDesk","_unref","NTooltip","_createVNode","NButton","_cache","$event","_Transition","Icon","_createTextVNode","_toDisplayString","_createElementVNode","_hoisted_1","LoginForm","LoginHeroPanel","_hoisted_2","_createElementBlock","_hoisted_3","_Fragment","_openBlock","_hoisted_4"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type LoginLayout = 'solo' | 'split';
2
+ /** 布局的记忆键(值 solo / split)。 */
3
+ export declare const LAYOUT_KEY = "sa-login-layout";
4
+ /** 把布局值或皮肤 id 解析成布局;认不出返回 null。 */
5
+ export declare function parseLoginLayout(value: string | null | undefined): LoginLayout | null;
6
+ /**
7
+ * 决定登录页首次渲染用哪种布局。优先级:
8
+ * ?layout= / ?skin=(一次性,不写记忆)→ localStorage[sa-login-layout] → localStorage[login-skin] → 单栏。
9
+ * storage 读取可能抛(无痕窗口 / 站点数据被禁),一律按「没有记忆」处理。
10
+ */
11
+ export declare function resolveLoginLayout(search: string, storage: Pick<Storage, 'getItem'>): LoginLayout;
@@ -0,0 +1,27 @@
1
+ const a = "sa-login-layout", c = "login-skin", e = {
2
+ aurora: "solo",
3
+ spotlight: "solo",
4
+ split: "split",
5
+ solo: "solo"
6
+ };
7
+ function t(o) {
8
+ return (o && Object.hasOwn(e, o) ? e[o] : null) ?? null;
9
+ }
10
+ function i(o, l) {
11
+ const n = new URLSearchParams(o), r = t(n.get("layout")) ?? t(n.get("skin"));
12
+ if (r) return r;
13
+ const s = (u) => {
14
+ try {
15
+ return l.getItem(u);
16
+ } catch {
17
+ return null;
18
+ }
19
+ };
20
+ return t(s(a)) ?? t(s(c)) ?? "solo";
21
+ }
22
+ export {
23
+ a as LAYOUT_KEY,
24
+ t as parseLoginLayout,
25
+ i as resolveLoginLayout
26
+ };
27
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sources":["../../../src/views/login/layout.ts"],"sourcesContent":["// 登录页布局的取值与兼容。\n// 布局只存在浏览器本地(不是后台配置项),所以兼容只涉及两处浏览器侧的皮肤 id 格式:\n// · localStorage['login-skin'](皮肤 id 的浏览器记忆)\n// · URL 的 ?skin=(一次性覆盖,便于对比预览;e2e 也靠它进双栏)\n// 皮肤 id → 布局:split 是双栏;aurora / spotlight 是「居中一张卡」→ 单栏。\n\nexport type LoginLayout = 'solo' | 'split'\n\n/** 布局的记忆键(值 solo / split)。 */\nexport const LAYOUT_KEY = 'sa-login-layout'\n/** 皮肤 id 的记忆键(兼容格式),只读不写。 */\nconst LEGACY_SKIN_KEY = 'login-skin'\n\n/** 皮肤 id → 布局('solo' / 'split' 与布局同名,所以布局值也走这张表)。 */\nconst SKIN_TO_LAYOUT: Record<string, LoginLayout> = {\n aurora: 'solo',\n spotlight: 'solo',\n split: 'split',\n solo: 'solo',\n}\n\n/** 把布局值或皮肤 id 解析成布局;认不出返回 null。 */\nexport function parseLoginLayout(value: string | null | undefined): LoginLayout | null {\n return (value && Object.hasOwn(SKIN_TO_LAYOUT, value) ? SKIN_TO_LAYOUT[value] : null) ?? null\n}\n\n/**\n * 决定登录页首次渲染用哪种布局。优先级:\n * ?layout= / ?skin=(一次性,不写记忆)→ localStorage[sa-login-layout] → localStorage[login-skin] → 单栏。\n * storage 读取可能抛(无痕窗口 / 站点数据被禁),一律按「没有记忆」处理。\n */\nexport function resolveLoginLayout(search: string, storage: Pick<Storage, 'getItem'>): LoginLayout {\n const query = new URLSearchParams(search)\n const fromQuery = parseLoginLayout(query.get('layout')) ?? parseLoginLayout(query.get('skin'))\n if (fromQuery) return fromQuery\n const read = (key: string) => {\n try {\n return storage.getItem(key)\n } catch {\n return null\n }\n }\n return parseLoginLayout(read(LAYOUT_KEY)) ?? parseLoginLayout(read(LEGACY_SKIN_KEY)) ?? 'solo'\n}\n"],"names":["LAYOUT_KEY","LEGACY_SKIN_KEY","SKIN_TO_LAYOUT","parseLoginLayout","value","resolveLoginLayout","search","storage","query","fromQuery","read","key"],"mappings":"AASO,MAAMA,IAAa,mBAEpBC,IAAkB,cAGlBC,IAA8C;AAAA,EAClD,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AAAA,EACP,MAAM;AACR;AAGO,SAASC,EAAiBC,GAAsD;AACrF,UAAQA,KAAS,OAAO,OAAOF,GAAgBE,CAAK,IAAIF,EAAeE,CAAK,IAAI,SAAS;AAC3F;AAOO,SAASC,EAAmBC,GAAgBC,GAAgD;AACjG,QAAMC,IAAQ,IAAI,gBAAgBF,CAAM,GAClCG,IAAYN,EAAiBK,EAAM,IAAI,QAAQ,CAAC,KAAKL,EAAiBK,EAAM,IAAI,MAAM,CAAC;AAC7F,MAAIC,EAAW,QAAOA;AACtB,QAAMC,IAAO,CAACC,MAAgB;AAC5B,QAAI;AACF,aAAOJ,EAAQ,QAAQI,CAAG;AAAA,IAC5B,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAOR,EAAiBO,EAAKV,CAAU,CAAC,KAAKG,EAAiBO,EAAKT,CAAe,CAAC,KAAK;AAC1F;"}
@@ -1,8 +1,8 @@
1
1
  import o from "./index2.vue.js";
2
2
  /* empty css */
3
3
  import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-b6e82c2c"]]);
4
+ const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-e94d2959"]]);
5
5
  export {
6
- m as default
6
+ p as default
7
7
  };
8
8
  //# sourceMappingURL=index.vue.js.map