vome-core 0.3.69 → 0.3.71

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 (280) hide show
  1. package/dist/admin/components/ui/avatar/Avatar.vue +18 -18
  2. package/dist/admin/components/ui/avatar/AvatarFallback.vue +21 -21
  3. package/dist/admin/components/ui/avatar/AvatarImage.vue +16 -16
  4. package/dist/admin/components/ui/avatar/index.js +1 -1
  5. package/dist/admin/components/ui/badge/Badge.vue +26 -26
  6. package/dist/admin/components/ui/button/Button.vue +31 -31
  7. package/dist/admin/components/ui/button/index.d.ts +1 -1
  8. package/dist/admin/components/ui/checkbox/Checkbox.vue +35 -35
  9. package/dist/admin/components/ui/checkbox/index.js +1 -1
  10. package/dist/admin/components/ui/dialog/Dialog.vue +19 -19
  11. package/dist/admin/components/ui/dialog/DialogClose.vue +15 -15
  12. package/dist/admin/components/ui/dialog/DialogContent.vue +267 -267
  13. package/dist/admin/components/ui/dialog/DialogDescription.vue +23 -23
  14. package/dist/admin/components/ui/dialog/DialogFooter.vue +27 -27
  15. package/dist/admin/components/ui/dialog/DialogHeader.vue +17 -17
  16. package/dist/admin/components/ui/dialog/DialogOverlay.vue +21 -21
  17. package/dist/admin/components/ui/dialog/DialogScrollContent.vue +60 -60
  18. package/dist/admin/components/ui/dialog/DialogTitle.vue +23 -23
  19. package/dist/admin/components/ui/dialog/DialogTrigger.vue +15 -15
  20. package/dist/admin/components/ui/dialog/index.js +1 -1
  21. package/dist/admin/components/ui/dropdown-menu/DropdownMenu.vue +19 -19
  22. package/dist/admin/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +39 -39
  23. package/dist/admin/components/ui/dropdown-menu/DropdownMenuContent.vue +39 -39
  24. package/dist/admin/components/ui/dropdown-menu/DropdownMenuGroup.vue +15 -15
  25. package/dist/admin/components/ui/dropdown-menu/DropdownMenuItem.vue +31 -31
  26. package/dist/admin/components/ui/dropdown-menu/DropdownMenuLabel.vue +23 -23
  27. package/dist/admin/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +21 -21
  28. package/dist/admin/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +40 -40
  29. package/dist/admin/components/ui/dropdown-menu/DropdownMenuSeparator.vue +23 -23
  30. package/dist/admin/components/ui/dropdown-menu/DropdownMenuShortcut.vue +17 -17
  31. package/dist/admin/components/ui/dropdown-menu/DropdownMenuSub.vue +18 -18
  32. package/dist/admin/components/ui/dropdown-menu/DropdownMenuSubContent.vue +27 -27
  33. package/dist/admin/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +31 -31
  34. package/dist/admin/components/ui/dropdown-menu/DropdownMenuTrigger.vue +17 -17
  35. package/dist/admin/components/ui/dropdown-menu/index.js +1 -1
  36. package/dist/admin/components/ui/input/Input.vue +183 -183
  37. package/dist/admin/components/ui/input/index.js +1 -1
  38. package/dist/admin/components/ui/label/Label.vue +26 -26
  39. package/dist/admin/components/ui/label/index.js +1 -1
  40. package/dist/admin/components/ui/scroll-area/ScrollArea.vue +33 -33
  41. package/dist/admin/components/ui/scroll-area/ScrollBar.vue +32 -32
  42. package/dist/admin/components/ui/scroll-area/index.js +1 -1
  43. package/dist/admin/components/ui/select/Select.vue +19 -19
  44. package/dist/admin/components/ui/select/SelectContent.vue +51 -51
  45. package/dist/admin/components/ui/select/SelectGroup.vue +15 -15
  46. package/dist/admin/components/ui/select/SelectItem.vue +53 -53
  47. package/dist/admin/components/ui/select/SelectItemText.vue +15 -15
  48. package/dist/admin/components/ui/select/SelectLabel.vue +17 -17
  49. package/dist/admin/components/ui/select/SelectScrollDownButton.vue +26 -26
  50. package/dist/admin/components/ui/select/SelectScrollUpButton.vue +26 -26
  51. package/dist/admin/components/ui/select/SelectSeparator.vue +19 -19
  52. package/dist/admin/components/ui/select/SelectTrigger.vue +44 -44
  53. package/dist/admin/components/ui/select/SelectValue.vue +15 -15
  54. package/dist/admin/components/ui/select/index.js +1 -1
  55. package/dist/admin/components/ui/separator/Separator.vue +29 -29
  56. package/dist/admin/components/ui/separator/index.js +1 -1
  57. package/dist/admin/components/ui/sheet/Sheet.vue +19 -19
  58. package/dist/admin/components/ui/sheet/SheetClose.vue +15 -15
  59. package/dist/admin/components/ui/sheet/SheetContent.vue +63 -63
  60. package/dist/admin/components/ui/sheet/SheetDescription.vue +21 -21
  61. package/dist/admin/components/ui/sheet/SheetFooter.vue +16 -16
  62. package/dist/admin/components/ui/sheet/SheetHeader.vue +15 -15
  63. package/dist/admin/components/ui/sheet/SheetOverlay.vue +21 -21
  64. package/dist/admin/components/ui/sheet/SheetTitle.vue +21 -21
  65. package/dist/admin/components/ui/sheet/SheetTrigger.vue +15 -15
  66. package/dist/admin/components/ui/sheet/index.js +1 -1
  67. package/dist/admin/components/ui/sonner/Toaster.vue +117 -117
  68. package/dist/admin/components/ui/sonner/index.js +1 -1
  69. package/dist/admin/components/ui/table/Table.vue +16 -16
  70. package/dist/admin/components/ui/table/TableBody.vue +17 -17
  71. package/dist/admin/components/ui/table/TableCaption.vue +17 -17
  72. package/dist/admin/components/ui/table/TableCell.vue +22 -22
  73. package/dist/admin/components/ui/table/TableEmpty.vue +34 -34
  74. package/dist/admin/components/ui/table/TableFooter.vue +17 -17
  75. package/dist/admin/components/ui/table/TableHead.vue +17 -17
  76. package/dist/admin/components/ui/table/TableHeader.vue +17 -17
  77. package/dist/admin/components/ui/table/TableRow.vue +17 -17
  78. package/dist/admin/components/ui/table/index.js +1 -1
  79. package/dist/admin/components/ui/tabs/Tabs.vue +24 -24
  80. package/dist/admin/components/ui/tabs/TabsContent.vue +21 -21
  81. package/dist/admin/components/ui/tabs/TabsList.vue +24 -24
  82. package/dist/admin/components/ui/tabs/TabsTrigger.vue +26 -26
  83. package/dist/admin/components/ui/tabs/index.js +1 -1
  84. package/dist/admin/components/ui/tooltip/Tooltip.vue +19 -19
  85. package/dist/admin/components/ui/tooltip/TooltipContent.vue +34 -34
  86. package/dist/admin/components/ui/tooltip/TooltipProvider.vue +14 -14
  87. package/dist/admin/components/ui/tooltip/TooltipTrigger.vue +15 -15
  88. package/dist/admin/components/ui/tooltip/index.js +1 -1
  89. package/dist/admin/components/vm-action-btn.vue +136 -136
  90. package/dist/admin/components/vm-aside-list-item.vue +136 -136
  91. package/dist/admin/components/vm-aside.vue +229 -229
  92. package/dist/admin/components/vm-auto-perm-dialog.vue +371 -371
  93. package/dist/admin/components/vm-card-grid.vue +37 -37
  94. package/dist/admin/components/vm-card-head.vue +45 -45
  95. package/dist/admin/components/vm-card-meta.vue +22 -22
  96. package/dist/admin/components/vm-card-title.vue +56 -56
  97. package/dist/admin/components/vm-card.vue +176 -176
  98. package/dist/admin/components/vm-check-tree.vue +340 -340
  99. package/dist/admin/components/vm-clamp-text.vue +39 -39
  100. package/dist/admin/components/vm-dept-tree.vue +497 -497
  101. package/dist/admin/components/vm-empty.vue +68 -68
  102. package/dist/admin/components/vm-eps-perm-picker.vue +123 -123
  103. package/dist/admin/components/vm-form-dialog.vue +632 -632
  104. package/dist/admin/components/vm-group-cascader.vue +560 -560
  105. package/dist/admin/components/vm-icon-btn.vue +88 -88
  106. package/dist/admin/components/vm-icon-picker.vue +647 -647
  107. package/dist/admin/components/vm-inline-search.vue +61 -61
  108. package/dist/admin/components/vm-loading.vue +114 -114
  109. package/dist/admin/components/vm-markdown.vue +405 -405
  110. package/dist/admin/components/vm-marquee.vue +265 -265
  111. package/dist/admin/components/vm-page-tabs.vue +94 -94
  112. package/dist/admin/components/vm-perm-section.vue +57 -57
  113. package/dist/admin/components/vm-ri-icon.vue +23 -23
  114. package/dist/admin/components/vm-role-picker.vue +314 -314
  115. package/dist/admin/components/vm-split-layout.vue +106 -106
  116. package/dist/admin/components/vm-thumb.vue +49 -49
  117. package/dist/admin/components/vm-view-path-picker.vue +59 -59
  118. package/dist/admin/crud/auto-fields.d.ts +7 -0
  119. package/dist/admin/crud/auto-fields.js +1 -1
  120. package/dist/admin/crud/components/vm-avatar.vue +104 -104
  121. package/dist/admin/crud/components/vm-color-picker.vue +1626 -1626
  122. package/dist/admin/crud/components/vm-column-custom.vue +193 -193
  123. package/dist/admin/crud/components/vm-context-menu.vue +105 -105
  124. package/dist/admin/crud/components/vm-copy-btn.vue +102 -102
  125. package/dist/admin/crud/components/vm-date-calendar-panel.vue +537 -537
  126. package/dist/admin/crud/components/vm-date-picker.vue +75 -75
  127. package/dist/admin/crud/components/vm-date-range.vue +88 -88
  128. package/dist/admin/crud/components/vm-date-text.vue +42 -42
  129. package/dist/admin/crud/components/vm-datetime-field.vue +215 -215
  130. package/dist/admin/crud/components/vm-datetime-picker.vue +9 -9
  131. package/dist/admin/crud/components/vm-dict-tag.vue +112 -112
  132. package/dist/admin/crud/components/vm-ellipsis-text.vue +34 -34
  133. package/dist/admin/crud/components/vm-form-hint.vue +81 -81
  134. package/dist/admin/crud/components/vm-json-code.vue +41 -41
  135. package/dist/admin/crud/components/vm-json-editor.vue +161 -161
  136. package/dist/admin/crud/components/vm-json-kv-editor.vue +318 -318
  137. package/dist/admin/crud/components/vm-kv-row.vue +51 -51
  138. package/dist/admin/crud/components/vm-multi-select.vue +279 -279
  139. package/dist/admin/crud/components/vm-number-range.vue +204 -204
  140. package/dist/admin/crud/components/vm-preview-viewer.vue +894 -894
  141. package/dist/admin/crud/components/vm-radio.vue +87 -87
  142. package/dist/admin/crud/components/vm-richtext.vue +313 -313
  143. package/dist/admin/crud/components/vm-select.vue +570 -570
  144. package/dist/admin/crud/components/vm-status-tag.vue +158 -158
  145. package/dist/admin/crud/components/vm-switch.vue +158 -158
  146. package/dist/admin/crud/components/vm-tag-list.vue +108 -108
  147. package/dist/admin/crud/components/vm-text-link.vue +52 -52
  148. package/dist/admin/crud/components/vm-toggle-switch.vue +84 -84
  149. package/dist/admin/crud/components/vm-tree-select.vue +450 -450
  150. package/dist/admin/crud/components/vm-upload-item.vue +298 -298
  151. package/dist/admin/crud/components/vm-upload.vue +436 -436
  152. package/dist/admin/crud/config.js +1 -1
  153. package/dist/admin/crud/confirm.js +1 -1
  154. package/dist/admin/crud/crud-page-request.js +1 -1
  155. package/dist/admin/crud/data-i18n.js +1 -1
  156. package/dist/admin/crud/dict.js +1 -1
  157. package/dist/admin/crud/export-fetch.js +1 -1
  158. package/dist/admin/crud/index.d.ts +1 -1
  159. package/dist/admin/crud/index.js +1 -0
  160. package/dist/admin/crud/key.js +1 -1
  161. package/dist/admin/crud/plugins.js +1 -1
  162. package/dist/admin/crud/span.js +1 -1
  163. package/dist/admin/crud/style.js +1 -1
  164. package/dist/admin/crud/validate.js +1 -1
  165. package/dist/admin/crud/vm-add-btn.vue +70 -70
  166. package/dist/admin/crud/vm-adv-search.vue +83 -83
  167. package/dist/admin/crud/vm-crud.vue +711 -711
  168. package/dist/admin/crud/vm-data-i18n-btn.vue +456 -456
  169. package/dist/admin/crud/vm-data-i18n-lang.vue +183 -183
  170. package/dist/admin/crud/vm-export-btn.vue +183 -183
  171. package/dist/admin/crud/vm-flex.vue +14 -14
  172. package/dist/admin/crud/vm-import-btn.vue +747 -747
  173. package/dist/admin/crud/vm-multi-delete-btn.vue +49 -49
  174. package/dist/admin/crud/vm-pagination.vue +212 -212
  175. package/dist/admin/crud/vm-refresh-btn.vue +35 -35
  176. package/dist/admin/crud/vm-row.vue +55 -55
  177. package/dist/admin/crud/vm-search-key.vue +78 -78
  178. package/dist/admin/crud/vm-search.vue +466 -466
  179. package/dist/admin/crud/vm-table.vue +1390 -1390
  180. package/dist/admin/crud/vm-tabs.vue +94 -94
  181. package/dist/admin/crud/vm-toolbar.vue +357 -357
  182. package/dist/admin/crud/vm-upsert.vue +765 -765
  183. package/dist/admin/directives/perm.js +1 -1
  184. package/dist/admin/env.d.ts +1 -1
  185. package/dist/admin/hooks/useUpload.js +1 -1
  186. package/dist/admin/hooks/useVome.d.ts +2 -2
  187. package/dist/admin/lib/browser.js +1 -1
  188. package/dist/admin/lib/cn.js +1 -1
  189. package/dist/admin/lib/dialog-float.js +1 -1
  190. package/dist/admin/lib/export-excel.js +1 -1
  191. package/dist/admin/lib/import-excel.js +1 -1
  192. package/dist/admin/lib/json.js +1 -1
  193. package/dist/admin/lib/menu.js +1 -1
  194. package/dist/admin/lib/micro-locale.js +1 -1
  195. package/dist/admin/lib/micro-theme.js +1 -1
  196. package/dist/admin/lib/shell.js +1 -1
  197. package/dist/admin/lib/theme-color-options.js +1 -1
  198. package/dist/admin/lib/tree.js +1 -1
  199. package/dist/admin/lib/upload.js +1 -1
  200. package/dist/admin/lib/video-frame.js +1 -1
  201. package/dist/admin/router/create.js +1 -1
  202. package/dist/admin/router/guards.js +1 -1
  203. package/dist/admin/stores/app.d.ts +13 -1
  204. package/dist/admin/stores/tags.d.ts +14 -1
  205. package/dist/admin/stores/user.d.ts +48 -1
  206. package/dist/admin/styles/base.css +121 -121
  207. package/dist/admin/vendor/browser-image-compression.js +1144 -1144
  208. package/dist/admin/vendor/decimal-js.js +12 -12
  209. package/dist/admin/vendor/xlsx.js +263 -263
  210. package/dist/ai/index.js +1 -1
  211. package/dist/client/ai-model-registry.js +1 -1
  212. package/dist/client/base.js +1 -1
  213. package/dist/client/configure.js +1 -1
  214. package/dist/client/dict.js +1 -1
  215. package/dist/client/eps-payload.js +1 -1
  216. package/dist/client/eps.d.ts +7 -4
  217. package/dist/client/eps.js +1 -1
  218. package/dist/client/index.d.ts +1 -1
  219. package/dist/client/index.js +1 -1
  220. package/dist/client/locale-change.js +1 -1
  221. package/dist/client/locale-store.d.ts +45 -1
  222. package/dist/client/locale-store.js +1 -1
  223. package/dist/client/path.js +1 -1
  224. package/dist/client/service.d.ts +8 -0
  225. package/dist/client/service.js +1 -1
  226. package/dist/client/vite-admin.js +1 -1
  227. package/dist/client/vite-auto-import.js +1 -1
  228. package/dist/client/vite-micro-proxy.js +1 -1
  229. package/dist/client/vite-plugin-eps.d.ts +5 -0
  230. package/dist/client/vite-plugin-eps.js +1 -1
  231. package/dist/client/vite-resolve.js +1 -1
  232. package/dist/config/index.js +1 -1
  233. package/dist/core/index.d.ts +2 -2
  234. package/dist/index.js +1 -1
  235. package/dist/orm/index.d.ts +2 -0
  236. package/dist/orm/patch-bun-sql-jsonb.d.ts +1 -0
  237. package/dist/routing/context.d.ts +12 -2
  238. package/dist/routing/eps.d.ts +4 -1
  239. package/dist/routing/index.d.ts +2 -1
  240. package/dist/routing/metadata.d.ts +7 -3
  241. package/dist/server/index.d.ts +4 -2
  242. package/dist/server/index.js +1 -1
  243. package/dist/shared/datetime-picker.js +1 -1
  244. package/dist/shared/decimal.js +1 -1
  245. package/dist/shared/excel.js +1 -1
  246. package/dist/shared/index.js +1 -1
  247. package/dist/shared/locale-json.js +1 -1
  248. package/dist/shared/tree.js +1 -1
  249. package/dist/typings/routing/eps.d.ts +3 -1
  250. package/dist/typings/routing/meta.d.ts +15 -0
  251. package/package.json +1 -1
  252. package/typings/admin/base/auth.ts +24 -24
  253. package/typings/admin/base/permission.ts +19 -19
  254. package/typings/admin/comm/cascader.ts +7 -7
  255. package/typings/admin/comm/check-tree.ts +7 -7
  256. package/typings/admin/comm/crud.ts +427 -427
  257. package/typings/admin/comm/eps.ts +88 -86
  258. package/typings/admin/comm/request.ts +16 -16
  259. package/typings/admin/comm/service.ts +43 -43
  260. package/typings/admin/comm/upload.ts +39 -39
  261. package/typings/admin/theme.ts +10 -10
  262. package/typings/admin/vome/browser.ts +11 -11
  263. package/typings/admin/vome/module.ts +13 -13
  264. package/typings/admin/vome/tags.ts +9 -9
  265. package/typings/comm/crud.ts +83 -83
  266. package/typings/comm/page.ts +18 -18
  267. package/typings/comm/scan.ts +6 -6
  268. package/typings/common.ts +4 -4
  269. package/typings/context/data.ts +10 -10
  270. package/typings/ext/market-seat.ts +42 -42
  271. package/typings/ext/market.ts +55 -55
  272. package/typings/ext/module.ts +64 -64
  273. package/typings/ext/plugin.ts +38 -38
  274. package/typings/ioc/metadata.ts +34 -34
  275. package/typings/logger/config.ts +6 -6
  276. package/typings/routing/crud.ts +199 -199
  277. package/typings/routing/eps.ts +90 -88
  278. package/typings/routing/meta.ts +80 -63
  279. package/typings/routing/register.ts +21 -21
  280. package/typings/routing/scan-context.ts +7 -7
@@ -1 +1 @@
1
- (function(_0x31ce7a,_0x4536b2){const _0x595e11=_0x5de9,_0x3cae04=_0x31ce7a();while(!![]){try{const _0x39ad00=parseInt(_0x595e11(0xa5))/0x1*(-parseInt(_0x595e11(0xa7))/0x2)+parseInt(_0x595e11(0xac))/0x3+-parseInt(_0x595e11(0xa8))/0x4+parseInt(_0x595e11(0xaa))/0x5+parseInt(_0x595e11(0xa2))/0x6+parseInt(_0x595e11(0xa1))/0x7+-parseInt(_0x595e11(0xad))/0x8;if(_0x39ad00===_0x4536b2)break;else _0x3cae04['push'](_0x3cae04['shift']());}catch(_0x5e2395){_0x3cae04['push'](_0x3cae04['shift']());}}}(_0x100a,0x324f1));import{createRouter,createWebHistory}from'vue-router';import{crudLabel}from'../crud/style';function _0x5de9(_0x2916d4,_0x12752a){_0x2916d4=_0x2916d4-0xa1;const _0x100a47=_0x100a();let _0x5de99d=_0x100a47[_0x2916d4];if(_0x5de9['cgyhxk']===undefined){var _0x5632bd=function(_0x4d1581){const _0x5f3cea='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x528a31='',_0x3c35db='';for(let _0x19522b=0x0,_0xb3f5dc,_0x24ace9,_0x4c88d7=0x0;_0x24ace9=_0x4d1581['charAt'](_0x4c88d7++);~_0x24ace9&&(_0xb3f5dc=_0x19522b%0x4?_0xb3f5dc*0x40+_0x24ace9:_0x24ace9,_0x19522b++%0x4)?_0x528a31+=String['fromCharCode'](0xff&_0xb3f5dc>>(-0x2*_0x19522b&0x6)):0x0){_0x24ace9=_0x5f3cea['indexOf'](_0x24ace9);}for(let _0xd79932=0x0,_0x4fa661=_0x528a31['length'];_0xd79932<_0x4fa661;_0xd79932++){_0x3c35db+='%'+('00'+_0x528a31['charCodeAt'](_0xd79932)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3c35db);};_0x5de9['xwhMIV']=_0x5632bd,_0x5de9['CBNXuc']={},_0x5de9['cgyhxk']=!![];}const _0x6ea654=_0x100a47[0x0],_0x4ac9a5=_0x2916d4+_0x6ea654,_0x23470d=_0x5de9['CBNXuc'][_0x4ac9a5];return!_0x23470d?(_0x5de99d=_0x5de9['xwhMIV'](_0x5de99d),_0x5de9['CBNXuc'][_0x4ac9a5]=_0x5de99d):_0x5de99d=_0x23470d,_0x5de99d;}function _0x100a(){const _0xcecc48=['ntK2mdm0v3H4swDO','Ag9Tzq','lZPWyxrOtwf0y2GOlIOPkG','otuXotvIsujts0y','BwLZC2LUzW','mLzuufPLEq','mte4mJK1mMrOu0LpqW','CgfNzu5VDezVDw5K','mtm4mtm1nwPlDvrsEa','Bg9NAw4','nZq4mdi2r0rJrePA','mtmYmdi0meXcuwfcAW','Bgf5B3v0','l2XVz2LU','otu5ntmYC1DZvxrt'];_0x100a=function(){return _0xcecc48;};return _0x100a();}import{setupAdminRouterGuards}from'./guards';export function createAdminRouter(_0x528a31){const _0x3d19e9=_0x5de9,_0x3c35db={'missing':_0x528a31[_0x3d19e9(0xa6)],'micro':_0x528a31['micro']},_0x19522b=createRouter({'history':createWebHistory(),'routes':[{'path':_0x3d19e9(0xaf),'name':_0x3d19e9(0xab),'component':_0x528a31[_0x3d19e9(0xab)],'meta':{'public':!![]}},{'path':'/','name':_0x3d19e9(0xae),'component':_0x528a31['layout'],'children':[{'path':'','name':_0x3d19e9(0xa3),'component':_0x528a31['home'],'meta':{'title':crudLabel(_0x3d19e9(0xa3))}}]},{'path':_0x3d19e9(0xa4),'name':'not-found','component':_0x528a31[_0x3d19e9(0xa6)],'meta':{'title':crudLabel(_0x3d19e9(0xa9))}}]});return setupAdminRouterGuards(_0x19522b,_0x3c35db),{'router':_0x19522b,'menuRouteShell':_0x3c35db};}
1
+ (function(_0x21f1cb,_0x460026){const _0x56c431=_0x151e,_0x12831c=_0x21f1cb();while(!![]){try{const _0x43895a=parseInt(_0x56c431(0x19e))/0x1+parseInt(_0x56c431(0x1a0))/0x2+-parseInt(_0x56c431(0x1a2))/0x3*(parseInt(_0x56c431(0x1a5))/0x4)+-parseInt(_0x56c431(0x1a7))/0x5+-parseInt(_0x56c431(0x1a6))/0x6*(-parseInt(_0x56c431(0x19c))/0x7)+parseInt(_0x56c431(0x1a4))/0x8*(parseInt(_0x56c431(0x1a3))/0x9)+parseInt(_0x56c431(0x1a1))/0xa*(-parseInt(_0x56c431(0x1a9))/0xb);if(_0x43895a===_0x460026)break;else _0x12831c['push'](_0x12831c['shift']());}catch(_0xaceefe){_0x12831c['push'](_0x12831c['shift']());}}}(_0x4628,0x3c264));function _0x151e(_0x26aa43,_0x1335b7){_0x26aa43=_0x26aa43-0x199;const _0x46289a=_0x4628();let _0x151e4f=_0x46289a[_0x26aa43];if(_0x151e['SAElkf']===undefined){var _0x5dcb89=function(_0x144b3d){const _0x322d27='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb28cd5='',_0x183e8a='';for(let _0x37aa8f=0x0,_0xf84a94,_0x3e1393,_0x42aa51=0x0;_0x3e1393=_0x144b3d['charAt'](_0x42aa51++);~_0x3e1393&&(_0xf84a94=_0x37aa8f%0x4?_0xf84a94*0x40+_0x3e1393:_0x3e1393,_0x37aa8f++%0x4)?_0xb28cd5+=String['fromCharCode'](0xff&_0xf84a94>>(-0x2*_0x37aa8f&0x6)):0x0){_0x3e1393=_0x322d27['indexOf'](_0x3e1393);}for(let _0x2cc1ae=0x0,_0x1c56a5=_0xb28cd5['length'];_0x2cc1ae<_0x1c56a5;_0x2cc1ae++){_0x183e8a+='%'+('00'+_0xb28cd5['charCodeAt'](_0x2cc1ae)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x183e8a);};_0x151e['tQFruS']=_0x5dcb89,_0x151e['XjeVkL']={},_0x151e['SAElkf']=!![];}const _0x3e5804=_0x46289a[0x0],_0xb53e6e=_0x26aa43+_0x3e5804,_0x53782b=_0x151e['XjeVkL'][_0xb53e6e];return!_0x53782b?(_0x151e4f=_0x151e['tQFruS'](_0x151e4f),_0x151e['XjeVkL'][_0xb53e6e]=_0x151e4f):_0x151e4f=_0x53782b,_0x151e4f;}import{createRouter,createWebHistory}from'vue-router';function _0x4628(){const _0x8c49ff=['Bg9NAw4','mte3mJCXtLPMrLHT','lZPWyxrOtwf0y2GOlIOPkG','mtq4nJK1AuThAMvH','CgfNzu5VDezVDw5K','mZKYmJm2BxvMtgf1','mtC0ndqYmejQEvbLDq','mtv3ENbbDMO','mtHRyuDvruS','nJG5mda4surcEMDx','mJqYndbtsK5zD3m','ndHMDfLlvgW','otK5odC1uMPAzfn6','Bgf5B3v0','mtfPCxHrC0C','BwLZC2LUzW','Ag9Tzq','BM90lwzVDw5K','BwLJCM8'];_0x4628=function(){return _0x8c49ff;};return _0x4628();}import{crudLabel}from'../crud/style';import{setupAdminRouterGuards}from'./guards';export function createAdminRouter(_0xb28cd5){const _0x15ba7a=_0x151e,_0x183e8a={'missing':_0xb28cd5[_0x15ba7a(0x1aa)],'micro':_0xb28cd5[_0x15ba7a(0x19a)]},_0x37aa8f=createRouter({'history':createWebHistory(),'routes':[{'path':'/login','name':_0x15ba7a(0x19b),'component':_0xb28cd5[_0x15ba7a(0x19b)],'meta':{'public':!![]}},{'path':'/','name':_0x15ba7a(0x1a8),'component':_0xb28cd5[_0x15ba7a(0x1a8)],'children':[{'path':'','name':_0x15ba7a(0x1ab),'component':_0xb28cd5['home'],'meta':{'title':crudLabel('home')}}]},{'path':_0x15ba7a(0x19d),'name':_0x15ba7a(0x199),'component':_0xb28cd5[_0x15ba7a(0x1aa)],'meta':{'title':crudLabel(_0x15ba7a(0x19f))}}]});return setupAdminRouterGuards(_0x37aa8f,_0x183e8a),{'router':_0x37aa8f,'menuRouteShell':_0x183e8a};}
@@ -1 +1 @@
1
- (function(_0x1113fb,_0x542758){const _0x14db86=_0x1edb,_0x551ac3=_0x1113fb();while(!![]){try{const _0x37ec96=parseInt(_0x14db86(0x12a))/0x1*(-parseInt(_0x14db86(0x123))/0x2)+parseInt(_0x14db86(0x124))/0x3+parseInt(_0x14db86(0x120))/0x4+parseInt(_0x14db86(0x122))/0x5+-parseInt(_0x14db86(0x121))/0x6+parseInt(_0x14db86(0x12c))/0x7*(-parseInt(_0x14db86(0x12b))/0x8)+parseInt(_0x14db86(0x12f))/0x9*(-parseInt(_0x14db86(0x130))/0xa);if(_0x37ec96===_0x542758)break;else _0x551ac3['push'](_0x551ac3['shift']());}catch(_0x57750d){_0x551ac3['push'](_0x551ac3['shift']());}}}(_0x4d70,0x796e2));import{getAccessToken,getRefreshToken}from'../api/client';function _0x4d70(){const _0x2c9040=['nZC1mZvPq0r6BvK','mZGYnZq0sw5uwxfX','odrese1pB3q','Cgf0Aa','Bg9HzgvK','mJKWnZLysfPtu3e','mtbptxzjswS','AgfZAa','mJKXmZu0mgLrr2fusq','ndeZnZm2mhv2thvlyq','mZiZmtC5nwjNDNb3sq','nKPNBgfnAG','mtG2nJqZofDzyw9dyq','BwvUDxm','C2v0','z2v0','zNvSBfbHDgG','Bwv0yq'];_0x4d70=function(){return _0x2c9040;};return _0x4d70();}function _0x1edb(_0xd285fb,_0x219130){_0xd285fb=_0xd285fb-0x11f;const _0x4d7073=_0x4d70();let _0x1edb17=_0x4d7073[_0xd285fb];if(_0x1edb['yHOfJz']===undefined){var _0x102696=function(_0x488f97){const _0x3979a6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x38a3a3='',_0x33361c='';for(let _0x3c84c3=0x0,_0xdce937,_0x50cd90,_0x2a1cec=0x0;_0x50cd90=_0x488f97['charAt'](_0x2a1cec++);~_0x50cd90&&(_0xdce937=_0x3c84c3%0x4?_0xdce937*0x40+_0x50cd90:_0x50cd90,_0x3c84c3++%0x4)?_0x38a3a3+=String['fromCharCode'](0xff&_0xdce937>>(-0x2*_0x3c84c3&0x6)):0x0){_0x50cd90=_0x3979a6['indexOf'](_0x50cd90);}for(let _0x248a28=0x0,_0x4d8214=_0x38a3a3['length'];_0x248a28<_0x4d8214;_0x248a28++){_0x33361c+='%'+('00'+_0x38a3a3['charCodeAt'](_0x248a28)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x33361c);};_0x1edb['RnfaXs']=_0x102696,_0x1edb['jRTOBZ']={},_0x1edb['yHOfJz']=!![];}const _0x359ce6=_0x4d7073[0x0],_0x506b48=_0xd285fb+_0x359ce6,_0x30554a=_0x1edb['jRTOBZ'][_0x506b48];return!_0x30554a?(_0x1edb17=_0x1edb['RnfaXs'](_0x1edb17),_0x1edb['jRTOBZ'][_0x506b48]=_0x1edb17):_0x1edb17=_0x30554a,_0x1edb17;}import{createEps,setServicePerms}from'../service';import{useUserStore}from'../stores/user';import{clearMenuRoutesFlag,ensureMenuRoutes,removeAllMenuRoutes}from'./menu-routes';const menuReadyMap=new WeakMap();export function setupAdminRouterGuards(_0x38a3a3,_0x33361c){_0x38a3a3['beforeEach'](async _0x3c84c3=>{const _0x467136=_0x1edb;if(_0x3c84c3[_0x467136(0x129)]['public'])return!![];if(!getAccessToken()&&!getRefreshToken())return{'name':'login','query':{'redirect':_0x3c84c3[_0x467136(0x128)]}};try{const _0xdce937=useUserStore();if(!_0xdce937[_0x467136(0x12e)])await _0xdce937['load']();await createEps(),setServicePerms(_0xdce937['perms'],_0xdce937['isSuper']);if(!menuReadyMap[_0x467136(0x127)](_0x38a3a3))return await ensureMenuRoutes(_0x38a3a3,_0xdce937[_0x467136(0x125)],_0x33361c),menuReadyMap['set'](_0x38a3a3,!![]),{'path':_0x3c84c3[_0x467136(0x12d)],'query':_0x3c84c3['query'],'hash':_0x3c84c3[_0x467136(0x11f)],'replace':!![]};}catch{menuReadyMap['set'](_0x38a3a3,![]);if(!getAccessToken()&&!getRefreshToken())return{'name':'login','query':{'redirect':_0x3c84c3['fullPath']}};if(!getAccessToken()&&getRefreshToken())return!![];return!![];}return!![];});}export function resetMenuRoutesFlag(_0x50cd90){const _0x59cfd6=_0x1edb;menuReadyMap[_0x59cfd6(0x126)](_0x50cd90,![]),removeAllMenuRoutes(_0x50cd90),clearMenuRoutesFlag();}
1
+ (function(_0x57d9a7,_0xfdf337){const _0x52d329=_0x2316,_0x2eb8ae=_0x57d9a7();while(!![]){try{const _0x336a01=-parseInt(_0x52d329(0x1e9))/0x1+-parseInt(_0x52d329(0x1e7))/0x2*(-parseInt(_0x52d329(0x1ee))/0x3)+parseInt(_0x52d329(0x1f2))/0x4+parseInt(_0x52d329(0x1f0))/0x5*(-parseInt(_0x52d329(0x1e5))/0x6)+parseInt(_0x52d329(0x1ef))/0x7+-parseInt(_0x52d329(0x1e0))/0x8+parseInt(_0x52d329(0x1ea))/0x9;if(_0x336a01===_0xfdf337)break;else _0x2eb8ae['push'](_0x2eb8ae['shift']());}catch(_0x5f2e9f){_0x2eb8ae['push'](_0x2eb8ae['shift']());}}}(_0x1d56,0x674a1));import{getAccessToken,getRefreshToken}from'../api/client';import{createEps,setServicePerms}from'../service';import{useUserStore}from'../stores/user';import{clearMenuRoutesFlag,ensureMenuRoutes,removeAllMenuRoutes}from'./menu-routes';const menuReadyMap=new WeakMap();export function setupAdminRouterGuards(_0xe807a9,_0x3e80a3){const _0x4e7934=_0x2316;_0xe807a9[_0x4e7934(0x1ed)](async _0x139a7b=>{const _0x303ae0=_0x4e7934;if(_0x139a7b[_0x303ae0(0x1e3)][_0x303ae0(0x1ec)])return!![];if(!getAccessToken()&&!getRefreshToken())return{'name':_0x303ae0(0x1e2),'query':{'redirect':_0x139a7b[_0x303ae0(0x1e4)]}};try{const _0x1e55aa=useUserStore();if(!_0x1e55aa['loaded'])await _0x1e55aa[_0x303ae0(0x1df)]();await createEps(),setServicePerms(_0x1e55aa[_0x303ae0(0x1e1)],_0x1e55aa[_0x303ae0(0x1e8)]);if(!menuReadyMap[_0x303ae0(0x1f1)](_0xe807a9))return await ensureMenuRoutes(_0xe807a9,_0x1e55aa['menus'],_0x3e80a3),menuReadyMap[_0x303ae0(0x1e6)](_0xe807a9,!![]),{'path':_0x139a7b['path'],'query':_0x139a7b['query'],'hash':_0x139a7b[_0x303ae0(0x1eb)],'replace':!![]};}catch{menuReadyMap[_0x303ae0(0x1e6)](_0xe807a9,![]);if(!getAccessToken()&&!getRefreshToken())return{'name':_0x303ae0(0x1e2),'query':{'redirect':_0x139a7b[_0x303ae0(0x1e4)]}};if(!getAccessToken()&&getRefreshToken())return!![];return!![];}return!![];});}function _0x2316(_0x5897f7,_0x464229){_0x5897f7=_0x5897f7-0x1df;const _0x1d5633=_0x1d56();let _0x23165e=_0x1d5633[_0x5897f7];if(_0x2316['tULYYO']===undefined){var _0x593b8c=function(_0x1332b9){const _0x9d8ab3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xe807a9='',_0x3e80a3='';for(let _0x139a7b=0x0,_0x1e55aa,_0x435149,_0x223d7c=0x0;_0x435149=_0x1332b9['charAt'](_0x223d7c++);~_0x435149&&(_0x1e55aa=_0x139a7b%0x4?_0x1e55aa*0x40+_0x435149:_0x435149,_0x139a7b++%0x4)?_0xe807a9+=String['fromCharCode'](0xff&_0x1e55aa>>(-0x2*_0x139a7b&0x6)):0x0){_0x435149=_0x9d8ab3['indexOf'](_0x435149);}for(let _0x15977b=0x0,_0x5085d9=_0xe807a9['length'];_0x15977b<_0x5085d9;_0x15977b++){_0x3e80a3+='%'+('00'+_0xe807a9['charCodeAt'](_0x15977b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3e80a3);};_0x2316['QQOsdz']=_0x593b8c,_0x2316['lUegsy']={},_0x2316['tULYYO']=!![];}const _0x4db6d0=_0x1d5633[0x0],_0x25835b=_0x5897f7+_0x4db6d0,_0x584fa8=_0x2316['lUegsy'][_0x25835b];return!_0x584fa8?(_0x23165e=_0x2316['QQOsdz'](_0x23165e),_0x2316['lUegsy'][_0x25835b]=_0x23165e):_0x23165e=_0x584fa8,_0x23165e;}function _0x1d56(){const _0x420fd6=['Bg9Hza','nda4mZi0mgLQwK9Uqq','CgvYBxm','Bg9NAw4','Bwv0yq','zNvSBfbHDgG','odGWode4yMDmEvfW','C2v0','mLzPqu9xzq','AxntDxbLCG','ndyZmtmZBNrIA3zg','nZyXmdiYmeLsz2jRqW','AgfZAa','ChvIBgLJ','yMvMB3jLrwfJAa','mtC0odeWovHpDMjJqW','ndC5nte4owTzuhvVrq','mJvUqxDlsuK','z2v0','nJKYnJrpD3bhu3y'];_0x1d56=function(){return _0x420fd6;};return _0x1d56();}export function resetMenuRoutesFlag(_0x435149){menuReadyMap['set'](_0x435149,![]),removeAllMenuRoutes(_0x435149),clearMenuRoutesFlag();}
@@ -1 +1,13 @@
1
- export declare const useAppStore: any;
1
+ export declare const useAppStore: import("pinia").StoreDefinition<"app", {
2
+ /** 桌面端手动折叠侧栏 */
3
+ sidebarFold: boolean;
4
+ /** 移动端抽屉开合 */
5
+ mobileOpen: boolean;
6
+ /** 为 false 时卸掉 RouterView,用于「刷新当前页」 */
7
+ viewAlive: boolean;
8
+ }, {}, {
9
+ toggleSidebarFold(): void;
10
+ setMobileOpen(open: boolean): void;
11
+ /** 重挂载当前视图(非浏览器整页刷新) */
12
+ reloadView(): Promise<void>;
13
+ }>;
@@ -1 +1,14 @@
1
- export declare const useTagsStore: any;
1
+ import type { RouteLocationNormalized } from 'vue-router';
2
+ import type { TagItem } from '../../../typings/admin/vome/tags';
3
+ export declare const useTagsStore: import("pinia").StoreDefinition<"tags", {
4
+ list: TagItem[];
5
+ /** KeepAlive :include,值为页面组件 name(如 base-role) */
6
+ caches: string[];
7
+ }, {}, {
8
+ add(route: RouteLocationNormalized): void;
9
+ addCache(name: string): void;
10
+ removeCache(name?: string): void;
11
+ remove(path: string): void;
12
+ closeOthers(path: string): void;
13
+ clear(): void;
14
+ }>;
@@ -1 +1,48 @@
1
- export declare const useUserStore: any;
1
+ import type { MenuTreeNode } from '../../../typings/admin/base/permission';
2
+ export declare const useUserStore: import("pinia").StoreDefinition<"user", {
3
+ adminId: number;
4
+ username: string;
5
+ isSuper: boolean;
6
+ perms: string[];
7
+ menus: MenuTreeNode[];
8
+ loaded: boolean;
9
+ }, {
10
+ navMenus(state: {
11
+ adminId: number;
12
+ username: string;
13
+ isSuper: boolean;
14
+ perms: string[];
15
+ menus: {
16
+ id: number;
17
+ parentId: number | null;
18
+ name: string;
19
+ router: string | null;
20
+ perms: string | null;
21
+ type: number;
22
+ icon: string | null;
23
+ orderNum: number;
24
+ viewPath: string | null;
25
+ remoteName: string | null;
26
+ remoteEntry: string | null;
27
+ remoteModule: string | null;
28
+ appKey: string | null;
29
+ keepAlive: boolean;
30
+ isShow: boolean;
31
+ children?: /*elided*/ any[];
32
+ }[];
33
+ loaded: boolean;
34
+ } & import("pinia").PiniaCustomStateProperties<{
35
+ adminId: number;
36
+ username: string;
37
+ isSuper: boolean;
38
+ perms: string[];
39
+ menus: MenuTreeNode[];
40
+ loaded: boolean;
41
+ }>): MenuTreeNode[];
42
+ }, {
43
+ load(): Promise<void>;
44
+ /** 菜单 CRUD 后刷新侧栏/权限(不重拉 me) */
45
+ reloadMenus(): Promise<void>;
46
+ hasPerm(code: string | string[]): boolean;
47
+ logout(): void;
48
+ }>;
@@ -1,121 +1,121 @@
1
- /**
2
- * 框架结构样式(锁定):全局 token、页面骨架、表单聚焦、滚动条、页面过渡、通用工具类。
3
- * 宿主只应提供主题色(admin/src/styles/theme.css);勿改此文件做换肤。
4
- * 业务自定义请用 scoped + :deep() 穿透覆盖。
5
- * CRUD 弹窗壳(.vm-crud-shell__*)在 DialogContent.vue;控件尺寸细节在 Input / Select 组件内。
6
- */
7
-
8
- :root {
9
- --radius: 20px;
10
- --shadow-soft: 0 10px 30px rgba(40, 50, 120, 0.06);
11
- --shadow-card: 0 8px 24px rgba(40, 50, 120, 0.05);
12
-
13
- --vm-control-height: 32px;
14
- --vm-control-radius: 10px;
15
- --vm-control-padding-x: 10px;
16
- --vm-control-font-size: 13px;
17
- }
18
-
19
- .dark {
20
- --shadow-soft: 0 10px 30px rgba(0, 0, 0, 0.35);
21
- --shadow-card: 0 8px 24px rgba(0, 0, 0, 0.28);
22
- }
23
-
24
- /* 全局骨架(不依赖 @apply,避免 core CSS 绑死 Tailwind 构建) */
25
- * {
26
- border-color: var(--border);
27
- }
28
-
29
- html {
30
- font-size: 16px;
31
- }
32
-
33
- html,
34
- body,
35
- #app {
36
- height: 100%;
37
- }
38
-
39
- body {
40
- background: var(--background);
41
- color: var(--foreground);
42
- font-size: 14px;
43
- font-weight: 500;
44
- -webkit-font-smoothing: antialiased;
45
- -moz-osx-font-smoothing: grayscale;
46
- }
47
-
48
- /* 表单聚焦:细边框,无外圈粗 ring */
49
- :where(
50
- input:not([type='checkbox']):not([type='radio']):not([type='range']):not([type='file']):not([type='hidden']):not([type='button']):not([type='submit']):not([type='reset']),
51
- textarea,
52
- [data-slot='input'],
53
- [data-slot='select-trigger']
54
- ) {
55
- outline: none;
56
- }
57
-
58
- :where(
59
- input:not([type='checkbox']):not([type='radio']):not([type='range']):not([type='file']):not([type='hidden']):not([type='button']):not([type='submit']):not([type='reset']),
60
- textarea,
61
- [data-slot='input'],
62
- [data-slot='select-trigger']
63
- ):is(:focus, :focus-visible) {
64
- border-color: var(--focus-border) !important;
65
- box-shadow: none !important;
66
- --tw-ring-shadow: 0 0 #0000 !important;
67
- --tw-ring-offset-shadow: 0 0 #0000 !important;
68
- }
69
-
70
- .page-enter-active,
71
- .page-leave-active {
72
- transition:
73
- opacity 0.2s ease,
74
- transform 0.2s ease;
75
- }
76
- .page-enter-from {
77
- opacity: 0;
78
- transform: translateY(6px);
79
- }
80
- .page-leave-to {
81
- opacity: 0;
82
- transform: translateY(-3px);
83
- }
84
-
85
- /* 细圆角滚动条(无轨道背景);颜色由主题 --scrollbar-thumb* 提供 */
86
- * {
87
- scrollbar-width: thin;
88
- scrollbar-color: var(--scrollbar-thumb) transparent;
89
- }
90
-
91
- *::-webkit-scrollbar {
92
- width: 8px;
93
- height: 8px;
94
- }
95
-
96
- *::-webkit-scrollbar-track {
97
- background: transparent;
98
- }
99
-
100
- *::-webkit-scrollbar-thumb {
101
- background: var(--scrollbar-thumb);
102
- border: 2px solid transparent;
103
- background-clip: padding-box;
104
- border-radius: 999px;
105
- }
106
-
107
- *::-webkit-scrollbar-thumb:hover {
108
- background: var(--scrollbar-thumb-hover);
109
- border: 2px solid transparent;
110
- background-clip: padding-box;
111
- }
112
-
113
- .vm-scroll {
114
- scrollbar-width: thin;
115
- scrollbar-color: var(--scrollbar-thumb) transparent;
116
- }
117
-
118
- /* Dialog 内 Teleport 浮层:modal 时 body pointer-events:none,浮层需显式恢复 */
119
- .vm-dialog-float {
120
- pointer-events: auto;
121
- }
1
+ /**
2
+ * 框架结构样式(锁定):全局 token、页面骨架、表单聚焦、滚动条、页面过渡、通用工具类。
3
+ * 宿主只应提供主题色(admin/src/styles/theme.css);勿改此文件做换肤。
4
+ * 业务自定义请用 scoped + :deep() 穿透覆盖。
5
+ * CRUD 弹窗壳(.vm-crud-shell__*)在 DialogContent.vue;控件尺寸细节在 Input / Select 组件内。
6
+ */
7
+
8
+ :root {
9
+ --radius: 20px;
10
+ --shadow-soft: 0 10px 30px rgba(40, 50, 120, 0.06);
11
+ --shadow-card: 0 8px 24px rgba(40, 50, 120, 0.05);
12
+
13
+ --vm-control-height: 32px;
14
+ --vm-control-radius: 10px;
15
+ --vm-control-padding-x: 10px;
16
+ --vm-control-font-size: 13px;
17
+ }
18
+
19
+ .dark {
20
+ --shadow-soft: 0 10px 30px rgba(0, 0, 0, 0.35);
21
+ --shadow-card: 0 8px 24px rgba(0, 0, 0, 0.28);
22
+ }
23
+
24
+ /* 全局骨架(不依赖 @apply,避免 core CSS 绑死 Tailwind 构建) */
25
+ * {
26
+ border-color: var(--border);
27
+ }
28
+
29
+ html {
30
+ font-size: 16px;
31
+ }
32
+
33
+ html,
34
+ body,
35
+ #app {
36
+ height: 100%;
37
+ }
38
+
39
+ body {
40
+ background: var(--background);
41
+ color: var(--foreground);
42
+ font-size: 14px;
43
+ font-weight: 500;
44
+ -webkit-font-smoothing: antialiased;
45
+ -moz-osx-font-smoothing: grayscale;
46
+ }
47
+
48
+ /* 表单聚焦:细边框,无外圈粗 ring */
49
+ :where(
50
+ input:not([type='checkbox']):not([type='radio']):not([type='range']):not([type='file']):not([type='hidden']):not([type='button']):not([type='submit']):not([type='reset']),
51
+ textarea,
52
+ [data-slot='input'],
53
+ [data-slot='select-trigger']
54
+ ) {
55
+ outline: none;
56
+ }
57
+
58
+ :where(
59
+ input:not([type='checkbox']):not([type='radio']):not([type='range']):not([type='file']):not([type='hidden']):not([type='button']):not([type='submit']):not([type='reset']),
60
+ textarea,
61
+ [data-slot='input'],
62
+ [data-slot='select-trigger']
63
+ ):is(:focus, :focus-visible) {
64
+ border-color: var(--focus-border) !important;
65
+ box-shadow: none !important;
66
+ --tw-ring-shadow: 0 0 #0000 !important;
67
+ --tw-ring-offset-shadow: 0 0 #0000 !important;
68
+ }
69
+
70
+ .page-enter-active,
71
+ .page-leave-active {
72
+ transition:
73
+ opacity 0.2s ease,
74
+ transform 0.2s ease;
75
+ }
76
+ .page-enter-from {
77
+ opacity: 0;
78
+ transform: translateY(6px);
79
+ }
80
+ .page-leave-to {
81
+ opacity: 0;
82
+ transform: translateY(-3px);
83
+ }
84
+
85
+ /* 细圆角滚动条(无轨道背景);颜色由主题 --scrollbar-thumb* 提供 */
86
+ * {
87
+ scrollbar-width: thin;
88
+ scrollbar-color: var(--scrollbar-thumb) transparent;
89
+ }
90
+
91
+ *::-webkit-scrollbar {
92
+ width: 8px;
93
+ height: 8px;
94
+ }
95
+
96
+ *::-webkit-scrollbar-track {
97
+ background: transparent;
98
+ }
99
+
100
+ *::-webkit-scrollbar-thumb {
101
+ background: var(--scrollbar-thumb);
102
+ border: 2px solid transparent;
103
+ background-clip: padding-box;
104
+ border-radius: 999px;
105
+ }
106
+
107
+ *::-webkit-scrollbar-thumb:hover {
108
+ background: var(--scrollbar-thumb-hover);
109
+ border: 2px solid transparent;
110
+ background-clip: padding-box;
111
+ }
112
+
113
+ .vm-scroll {
114
+ scrollbar-width: thin;
115
+ scrollbar-color: var(--scrollbar-thumb) transparent;
116
+ }
117
+
118
+ /* Dialog 内 Teleport 浮层:modal 时 body pointer-events:none,浮层需显式恢复 */
119
+ .vm-dialog-float {
120
+ pointer-events: auto;
121
+ }