smart-admin-web 10.15.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 (432) hide show
  1. package/README.md +1 -1
  2. package/dist/api/index.d.ts +4 -2
  3. package/dist/api/index.js +1 -1
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/schema.d.ts +39 -5
  6. package/dist/assets/icons/ph-subset.json.js +5 -5
  7. package/dist/components/AppIcon.vue.js +9 -9
  8. package/dist/components/AppIcon.vue.js.map +1 -1
  9. package/dist/components/AppWatermark.vue.d.ts +14 -0
  10. package/dist/components/AppWatermark.vue.js +38 -0
  11. package/dist/components/AppWatermark.vue.js.map +1 -0
  12. package/dist/components/AppWatermark2.vue.js +5 -0
  13. package/dist/components/AppWatermark2.vue.js.map +1 -0
  14. package/dist/components/Chart/PieChart.vue.d.ts +1 -1
  15. package/dist/components/Chart/echarts.js +15 -20
  16. package/dist/components/Chart/echarts.js.map +1 -1
  17. package/dist/components/CronEditor/index.vue.js +1 -1
  18. package/dist/components/CronEditor/index2.vue.js +2 -1
  19. package/dist/components/CronEditor/index2.vue.js.map +1 -1
  20. package/dist/components/DetailPage/index.vue.js +2 -2
  21. package/dist/components/DetailPage/index2.vue.js.map +1 -1
  22. package/dist/components/DictTag/index.vue.js.map +1 -1
  23. package/dist/components/ErrorBoundary/index.vue.js +2 -2
  24. package/dist/components/ErrorBoundary/index2.vue.js +1 -1
  25. package/dist/components/ErrorBoundary/index2.vue.js.map +1 -1
  26. package/dist/components/FormContainer/index.vue.js +91 -56
  27. package/dist/components/FormContainer/index.vue.js.map +1 -1
  28. package/dist/components/ImportWizard/index.vue.js +1 -1
  29. package/dist/components/ImportWizard/index2.vue.js +44 -41
  30. package/dist/components/ImportWizard/index2.vue.js.map +1 -1
  31. package/dist/components/MenuSearch.vue.js +2 -2
  32. package/dist/components/MenuSearch2.vue.js +19 -18
  33. package/dist/components/MenuSearch2.vue.js.map +1 -1
  34. package/dist/components/PasswordStrength/index.vue.js +2 -2
  35. package/dist/components/PasswordStrength/index2.vue.js +20 -18
  36. package/dist/components/PasswordStrength/index2.vue.js.map +1 -1
  37. package/dist/components/TableTotal/index.vue.d.ts +6 -0
  38. package/dist/components/{SelectTable → TableTotal}/index.vue.js +1 -1
  39. package/dist/components/TableTotal/index2.vue.js +16 -0
  40. package/dist/components/TableTotal/index2.vue.js.map +1 -0
  41. package/dist/components/TableZoomButton/index.vue.js.map +1 -1
  42. package/dist/components/UserPicker/index.vue.js +2 -2
  43. package/dist/components/UserPicker/index2.vue.js +176 -117
  44. package/dist/components/UserPicker/index2.vue.js.map +1 -1
  45. package/dist/composables/useBatchDelete.js.map +1 -1
  46. package/dist/composables/useLayoutMenu.js +17 -16
  47. package/dist/composables/useLayoutMenu.js.map +1 -1
  48. package/dist/composables/useModule.js +39 -29
  49. package/dist/composables/useModule.js.map +1 -1
  50. package/dist/composables/useShellBreakpoint.d.ts +19 -0
  51. package/dist/composables/useShellBreakpoint.js +37 -0
  52. package/dist/composables/useShellBreakpoint.js.map +1 -0
  53. package/dist/composables/useSite.d.ts +15 -0
  54. package/dist/composables/useSite.js +16 -14
  55. package/dist/composables/useSite.js.map +1 -1
  56. package/dist/composables/useTabTitle.js.map +1 -1
  57. package/dist/composables/useTableTitle.d.ts +6 -0
  58. package/dist/composables/useTableTitle.js +11 -0
  59. package/dist/composables/useTableTitle.js.map +1 -0
  60. package/dist/composables/useTableZoom.d.ts +5 -0
  61. package/dist/composables/useTableZoom.js.map +1 -1
  62. package/dist/composables/useTheme.d.ts +2 -2
  63. package/dist/composables/useTheme.js +23 -20
  64. package/dist/composables/useTheme.js.map +1 -1
  65. package/dist/createSmartAdmin.d.ts +12 -2
  66. package/dist/createSmartAdmin.js +72 -60
  67. package/dist/createSmartAdmin.js.map +1 -1
  68. package/dist/index.d.ts +5 -2
  69. package/dist/index.js +219 -205
  70. package/dist/index.js.map +1 -1
  71. package/dist/layouts/AccentPicker.vue.js +8 -0
  72. package/dist/layouts/AccentPicker.vue.js.map +1 -0
  73. package/dist/layouts/AccentPicker2.vue.js +131 -0
  74. package/dist/layouts/AccentPicker2.vue.js.map +1 -0
  75. package/dist/layouts/AppHeader.vue.d.ts +8 -1
  76. package/dist/layouts/AppHeader.vue.js +2 -2
  77. package/dist/layouts/AppHeader2.vue.js +317 -235
  78. package/dist/layouts/AppHeader2.vue.js.map +1 -1
  79. package/dist/layouts/NoticeBell.vue.js +2 -2
  80. package/dist/layouts/NoticeBell2.vue.js +1 -1
  81. package/dist/layouts/NoticeBell2.vue.js.map +1 -1
  82. package/dist/layouts/PersonalLayout.vue.js +2 -2
  83. package/dist/layouts/PersonalLayout2.vue.js +69 -47
  84. package/dist/layouts/PersonalLayout2.vue.js.map +1 -1
  85. package/dist/layouts/SettingsDrawer.vue.js +3 -3
  86. package/dist/layouts/SettingsDrawer2.vue.js +261 -325
  87. package/dist/layouts/SettingsDrawer2.vue.js.map +1 -1
  88. package/dist/layouts/TabsBar.vue.js +2 -2
  89. package/dist/layouts/TabsBar2.vue.js +97 -69
  90. package/dist/layouts/TabsBar2.vue.js.map +1 -1
  91. package/dist/layouts/components/SideNav.vue.d.ts +3 -0
  92. package/dist/layouts/components/SideNav.vue.js +1 -1
  93. package/dist/layouts/components/SideNav2.vue.js +54 -26
  94. package/dist/layouts/components/SideNav2.vue.js.map +1 -1
  95. package/dist/layouts/default.vue.js +1 -1
  96. package/dist/layouts/default2.vue.js +170 -140
  97. package/dist/layouts/default2.vue.js.map +1 -1
  98. package/dist/lib/loginHero.d.ts +2 -2
  99. package/dist/lib/loginHero.js.map +1 -1
  100. package/dist/lib/runtime.js +1 -1
  101. package/dist/lib/watermark.d.ts +110 -0
  102. package/dist/lib/watermark.js +151 -0
  103. package/dist/lib/watermark.js.map +1 -0
  104. package/dist/locales/en-US.d.ts +221 -15
  105. package/dist/locales/en-US.js +230 -21
  106. package/dist/locales/en-US.js.map +1 -1
  107. package/dist/locales/kernelMenuTitles.d.ts +1 -0
  108. package/dist/locales/kernelMenuTitles.js +128 -0
  109. package/dist/locales/kernelMenuTitles.js.map +1 -0
  110. package/dist/locales/menuTitle.d.ts +3 -0
  111. package/dist/locales/menuTitle.js +14 -12
  112. package/dist/locales/menuTitle.js.map +1 -1
  113. package/dist/locales/zh-CN.d.ts +221 -15
  114. package/dist/locales/zh-CN.js +238 -28
  115. package/dist/locales/zh-CN.js.map +1 -1
  116. package/dist/router/index.js +41 -32
  117. package/dist/router/index.js.map +1 -1
  118. package/dist/router/namedPage.d.ts +4 -0
  119. package/dist/router/namedPage.js +7 -7
  120. package/dist/router/namedPage.js.map +1 -1
  121. package/dist/router/viewRegistry.js +8 -8
  122. package/dist/router/viewRegistry.js.map +1 -1
  123. package/dist/stores/app.d.ts +0 -12
  124. package/dist/stores/app.js +11 -12
  125. package/dist/stores/app.js.map +1 -1
  126. package/dist/stores/tabs.js.map +1 -1
  127. package/dist/stores/user.d.ts +10 -0
  128. package/dist/stores/user.js.map +1 -1
  129. package/dist/style.css +1 -1
  130. package/dist/theme/accentTokens.d.ts +27 -0
  131. package/dist/theme/accentTokens.js +54 -0
  132. package/dist/theme/accentTokens.js.map +1 -0
  133. package/dist/theme/accents.d.ts +21 -1
  134. package/dist/theme/accents.js +11 -2
  135. package/dist/theme/accents.js.map +1 -1
  136. package/dist/theme/mix.d.ts +58 -7
  137. package/dist/theme/mix.js +115 -30
  138. package/dist/theme/mix.js.map +1 -1
  139. package/dist/theme/naive-theme.d.ts +5 -2
  140. package/dist/theme/naive-theme.js +405 -75
  141. package/dist/theme/naive-theme.js.map +1 -1
  142. package/dist/utils/jwt.d.ts +8 -0
  143. package/dist/utils/jwt.js +14 -0
  144. package/dist/utils/jwt.js.map +1 -0
  145. package/dist/utils/menuIcon.d.ts +2 -0
  146. package/dist/utils/menuIcon.js +8 -0
  147. package/dist/utils/menuIcon.js.map +1 -0
  148. package/dist/utils/oauthBrand.js.map +1 -1
  149. package/dist/utils/tableFilter.d.ts +88 -0
  150. package/dist/utils/tableFilter.js +116 -0
  151. package/dist/utils/tableFilter.js.map +1 -0
  152. package/dist/utils/tableToolbar.d.ts +18 -0
  153. package/dist/utils/tableToolbar.js +11 -0
  154. package/dist/utils/tableToolbar.js.map +1 -0
  155. package/dist/utils/treeFilter.d.ts +20 -0
  156. package/dist/utils/treeFilter.js +24 -0
  157. package/dist/utils/treeFilter.js.map +1 -0
  158. package/dist/views/dashboard/ShortcutPicker.vue.js +1 -1
  159. package/dist/views/dashboard/ShortcutPicker2.vue.js +73 -48
  160. package/dist/views/dashboard/ShortcutPicker2.vue.js.map +1 -1
  161. package/dist/views/dashboard/biz.vue.js +1 -1
  162. package/dist/views/dashboard/biz2.vue.js +310 -257
  163. package/dist/views/dashboard/biz2.vue.js.map +1 -1
  164. package/dist/views/dashboard/workbench.vue.js +2 -2
  165. package/dist/views/dashboard/workbench2.vue.js +141 -155
  166. package/dist/views/dashboard/workbench2.vue.js.map +1 -1
  167. package/dist/views/embed/iframe.vue.js +2 -2
  168. package/dist/views/embed/iframe2.vue.js +22 -15
  169. package/dist/views/embed/iframe2.vue.js.map +1 -1
  170. package/dist/views/error/404.vue.js +2 -2
  171. package/dist/views/error/4042.vue.js +33 -24
  172. package/dist/views/error/4042.vue.js.map +1 -1
  173. package/dist/views/error/BootError.vue.js +1 -1
  174. package/dist/views/error/BootError2.vue.js +59 -48
  175. package/dist/views/error/BootError2.vue.js.map +1 -1
  176. package/dist/views/error/MissingRoute.vue.js +2 -2
  177. package/dist/views/error/MissingRoute2.vue.js +34 -15
  178. package/dist/views/error/MissingRoute2.vue.js.map +1 -1
  179. package/dist/views/login/LoginForm.vue.d.ts +7 -1
  180. package/dist/views/login/LoginForm.vue.js +2 -2
  181. package/dist/views/login/LoginForm2.vue.js +580 -488
  182. package/dist/views/login/LoginForm2.vue.js.map +1 -1
  183. package/dist/views/login/components/LoginDesk.vue.d.ts +36 -0
  184. package/dist/views/login/components/LoginDesk.vue.js +9 -0
  185. package/dist/views/login/components/LoginDesk.vue.js.map +1 -0
  186. package/dist/views/login/components/LoginDesk2.vue.js +100 -0
  187. package/dist/views/login/components/LoginDesk2.vue.js.map +1 -0
  188. package/dist/views/login/components/LoginHeroPanel.vue.js +3 -3
  189. package/dist/views/login/components/LoginHeroPanel2.vue.js +34 -39
  190. package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -1
  191. package/dist/views/login/index.vue.js +1 -1
  192. package/dist/views/login/index2.vue.js +141 -71
  193. package/dist/views/login/index2.vue.js.map +1 -1
  194. package/dist/views/login/layout.d.ts +11 -0
  195. package/dist/views/login/layout.js +27 -0
  196. package/dist/views/login/layout.js.map +1 -0
  197. package/dist/views/mfa/index.vue.js +2 -2
  198. package/dist/views/mfa/index2.vue.js +367 -321
  199. package/dist/views/mfa/index2.vue.js.map +1 -1
  200. package/dist/views/module/index.vue.js +2 -2
  201. package/dist/views/module/index2.vue.js +132 -99
  202. package/dist/views/module/index2.vue.js.map +1 -1
  203. package/dist/views/oauth/callback.vue.js +2 -2
  204. package/dist/views/oauth/callback2.vue.js +65 -51
  205. package/dist/views/oauth/callback2.vue.js.map +1 -1
  206. package/dist/views/personal/bindings.vue.js +2 -2
  207. package/dist/views/personal/bindings2.vue.js +98 -94
  208. package/dist/views/personal/bindings2.vue.js.map +1 -1
  209. package/dist/views/personal/notice2.vue.js +103 -76
  210. package/dist/views/personal/notice2.vue.js.map +1 -1
  211. package/dist/views/personal/password2.vue.js +47 -40
  212. package/dist/views/personal/password2.vue.js.map +1 -1
  213. package/dist/views/personal/profile.vue.js +3 -3
  214. package/dist/views/personal/profile2.vue.js +24 -18
  215. package/dist/views/personal/profile2.vue.js.map +1 -1
  216. package/dist/views/personal/security.vue.js +2 -2
  217. package/dist/views/personal/security2.vue.js +65 -53
  218. package/dist/views/personal/security2.vue.js.map +1 -1
  219. package/dist/views/personal/sessions.vue.js +2 -2
  220. package/dist/views/personal/sessions2.vue.js +67 -62
  221. package/dist/views/personal/sessions2.vue.js.map +1 -1
  222. package/dist/views/system/ai-model/components/ProviderCard.vue.js +2 -2
  223. package/dist/views/system/ai-model/components/ProviderCard2.vue.js +142 -130
  224. package/dist/views/system/ai-model/components/ProviderCard2.vue.js.map +1 -1
  225. package/dist/views/system/ai-model/components/ProviderForm.vue.js +2 -2
  226. package/dist/views/system/ai-model/components/ProviderForm2.vue.js +71 -70
  227. package/dist/views/system/ai-model/components/ProviderForm2.vue.js.map +1 -1
  228. package/dist/views/system/ai-model/index.vue.js +2 -2
  229. package/dist/views/system/ai-model/index2.vue.js +99 -99
  230. package/dist/views/system/ai-model/index2.vue.js.map +1 -1
  231. package/dist/views/system/ai-model/presets.d.ts +1 -1
  232. package/dist/views/system/ai-model/presets.js +18 -18
  233. package/dist/views/system/ai-model/presets.js.map +1 -1
  234. package/dist/views/system/ai-usage/index.vue.js +2 -2
  235. package/dist/views/system/ai-usage/index2.vue.js +356 -258
  236. package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
  237. package/dist/views/system/api-docs/index.vue.js +5 -2
  238. package/dist/views/system/api-docs/index.vue.js.map +1 -1
  239. package/dist/views/system/api-docs/index2.vue.js +92 -42
  240. package/dist/views/system/api-docs/index2.vue.js.map +1 -1
  241. package/dist/views/system/cache/index.vue.js +2 -2
  242. package/dist/views/system/cache/index2.vue.js +74 -80
  243. package/dist/views/system/cache/index2.vue.js.map +1 -1
  244. package/dist/views/system/config/components/AdminMock.vue.js +2 -2
  245. package/dist/views/system/config/components/AdminMock2.vue.js +60 -43
  246. package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -1
  247. package/dist/views/system/config/components/AdvancedSection.vue.js +5 -2
  248. package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -1
  249. package/dist/views/system/config/components/AdvancedSection2.vue.js +98 -70
  250. package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -1
  251. package/dist/views/system/config/components/BrandSection.vue.js +2 -2
  252. package/dist/views/system/config/components/BrandSection2.vue.js +121 -119
  253. package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -1
  254. package/dist/views/system/config/components/CfgGroup.vue.js +3 -3
  255. package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -1
  256. package/dist/views/system/config/components/CfgRow.vue.js +1 -1
  257. package/dist/views/system/config/components/CfgRow2.vue.js +24 -23
  258. package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -1
  259. package/dist/views/system/config/components/CfgSegment.vue.js +1 -1
  260. package/dist/views/system/config/components/CfgSegment2.vue.js +16 -15
  261. package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -1
  262. package/dist/views/system/config/components/ConfigFormModal.vue.js +2 -2
  263. package/dist/views/system/config/components/ConfigFormModal2.vue.js +35 -33
  264. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
  265. package/dist/views/system/config/components/JobSection.vue.js +2 -2
  266. package/dist/views/system/config/components/JobSection2.vue.js +46 -44
  267. package/dist/views/system/config/components/JobSection2.vue.js.map +1 -1
  268. package/dist/views/system/config/components/LoginMock.vue.js +3 -3
  269. package/dist/views/system/config/components/LoginMock2.vue.js +83 -72
  270. package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -1
  271. package/dist/views/system/config/components/LogoCropper.vue.js +1 -1
  272. package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -1
  273. package/dist/views/system/config/components/LogoEditor.vue.js +2 -2
  274. package/dist/views/system/config/components/LogoEditor2.vue.js +11 -13
  275. package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -1
  276. package/dist/views/system/config/components/ProviderSheet.vue.js +3 -3
  277. package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -1
  278. package/dist/views/system/config/components/SectionLayout.vue.d.ts +4 -2
  279. package/dist/views/system/config/components/SectionLayout.vue.js +2 -2
  280. package/dist/views/system/config/components/SectionLayout2.vue.js +51 -27
  281. package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -1
  282. package/dist/views/system/config/components/SecuritySection.vue.js +2 -2
  283. package/dist/views/system/config/components/SecuritySection2.vue.js +207 -206
  284. package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -1
  285. package/dist/views/system/config/components/SensitiveSection.vue.js +2 -2
  286. package/dist/views/system/config/components/SensitiveSection2.vue.js +107 -102
  287. package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -1
  288. package/dist/views/system/config/components/UploadSection.vue.js +2 -2
  289. package/dist/views/system/config/components/UploadSection2.vue.js +86 -77
  290. package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -1
  291. package/dist/views/system/config/components/WatermarkSection.vue.js +8 -0
  292. package/dist/views/system/config/components/WatermarkSection.vue.js.map +1 -0
  293. package/dist/views/system/config/components/WatermarkSection2.vue.js +284 -0
  294. package/dist/views/system/config/components/WatermarkSection2.vue.js.map +1 -0
  295. package/dist/views/system/config/draft.d.ts +2 -2
  296. package/dist/views/system/config/draft.js.map +1 -1
  297. package/dist/views/system/config/groups.d.ts +4 -1
  298. package/dist/views/system/config/groups.js +54 -49
  299. package/dist/views/system/config/groups.js.map +1 -1
  300. package/dist/views/system/config/index.vue.js +3 -2
  301. package/dist/views/system/config/index.vue.js.map +1 -1
  302. package/dist/views/system/config/index2.vue.js +173 -148
  303. package/dist/views/system/config/index2.vue.js.map +1 -1
  304. package/dist/views/system/config/layoutMode.d.ts +23 -0
  305. package/dist/views/system/config/layoutMode.js +28 -0
  306. package/dist/views/system/config/layoutMode.js.map +1 -0
  307. package/dist/views/system/dict/index.vue.js +2 -2
  308. package/dist/views/system/dict/index2.vue.js +471 -366
  309. package/dist/views/system/dict/index2.vue.js.map +1 -1
  310. package/dist/views/system/file/index2.vue.js +91 -76
  311. package/dist/views/system/file/index2.vue.js.map +1 -1
  312. package/dist/views/system/job/index.vue.js +3 -3
  313. package/dist/views/system/job/index2.vue.js +897 -828
  314. package/dist/views/system/job/index2.vue.js.map +1 -1
  315. package/dist/views/system/job-log/components/AttemptTable.vue.d.ts +8 -0
  316. package/dist/views/system/job-log/components/AttemptTable.vue.js +5 -0
  317. package/dist/views/system/job-log/components/AttemptTable.vue.js.map +1 -0
  318. package/dist/views/system/job-log/components/AttemptTable2.vue.js +54 -0
  319. package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -0
  320. package/dist/views/system/job-log/index.vue.js +2 -2
  321. package/dist/views/system/job-log/index2.vue.js +193 -207
  322. package/dist/views/system/job-log/index2.vue.js.map +1 -1
  323. package/dist/views/system/job-log/runStatus.d.ts +13 -0
  324. package/dist/views/system/job-log/runStatus.js +26 -0
  325. package/dist/views/system/job-log/runStatus.js.map +1 -0
  326. package/dist/views/system/job-monitor/index.vue.js +2 -2
  327. package/dist/views/system/job-monitor/index2.vue.js +172 -180
  328. package/dist/views/system/job-monitor/index2.vue.js.map +1 -1
  329. package/dist/views/system/log/exception/index.vue.js +2 -2
  330. package/dist/views/system/log/exception/index2.vue.js +135 -96
  331. package/dist/views/system/log/exception/index2.vue.js.map +1 -1
  332. package/dist/views/system/log/login/index2.vue.js +62 -41
  333. package/dist/views/system/log/login/index2.vue.js.map +1 -1
  334. package/dist/views/system/log/op/index.vue.js +2 -2
  335. package/dist/views/system/log/op/index2.vue.js +200 -162
  336. package/dist/views/system/log/op/index2.vue.js.map +1 -1
  337. package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
  338. package/dist/views/system/menu/components/ButtonManager2.vue.js +206 -190
  339. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
  340. package/dist/views/system/menu/components/MenuFormModal.vue.js +2 -2
  341. package/dist/views/system/menu/components/MenuFormModal2.vue.js +127 -118
  342. package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -1
  343. package/dist/views/system/menu/index.vue.js +1 -1
  344. package/dist/views/system/menu/index2.vue.js +216 -183
  345. package/dist/views/system/menu/index2.vue.js.map +1 -1
  346. package/dist/views/system/module/index.vue.js +1 -1
  347. package/dist/views/system/module/index2.vue.js +177 -144
  348. package/dist/views/system/module/index2.vue.js.map +1 -1
  349. package/dist/views/system/monitor/index.vue.js +2 -2
  350. package/dist/views/system/monitor/index2.vue.js +134 -149
  351. package/dist/views/system/monitor/index2.vue.js.map +1 -1
  352. package/dist/views/system/notice/index.vue.js +1 -1
  353. package/dist/views/system/notice/index2.vue.js +209 -181
  354. package/dist/views/system/notice/index2.vue.js.map +1 -1
  355. package/dist/views/system/org/index.vue.js +1 -1
  356. package/dist/views/system/org/index2.vue.js +278 -248
  357. package/dist/views/system/org/index2.vue.js.map +1 -1
  358. package/dist/views/system/position/index.vue.js +5 -2
  359. package/dist/views/system/position/index.vue.js.map +1 -1
  360. package/dist/views/system/position/index2.vue.js +128 -92
  361. package/dist/views/system/position/index2.vue.js.map +1 -1
  362. package/dist/views/system/recycle/index.vue.js +2 -2
  363. package/dist/views/system/recycle/index2.vue.js +90 -67
  364. package/dist/views/system/recycle/index2.vue.js.map +1 -1
  365. package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +20 -0
  366. package/dist/views/system/role/components/GrantMenuSheet.vue.js +8 -0
  367. package/dist/views/system/role/components/GrantMenuSheet.vue.js.map +1 -0
  368. package/dist/views/system/role/components/GrantMenuSheet2.vue.js +117 -0
  369. package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -0
  370. package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +6 -4
  371. package/dist/views/system/role/components/GrantMenuTable.vue.js +2 -2
  372. package/dist/views/system/role/components/GrantMenuTable2.vue.js +279 -177
  373. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
  374. package/dist/views/system/role/components/MatchText.vue.d.ts +7 -0
  375. package/dist/views/system/role/components/MatchText.vue.js +8 -0
  376. package/dist/views/system/role/components/MatchText.vue.js.map +1 -0
  377. package/dist/views/system/role/components/MatchText2.vue.js +29 -0
  378. package/dist/views/system/role/components/MatchText2.vue.js.map +1 -0
  379. package/dist/views/system/role/components/grantMenuGroups.d.ts +36 -0
  380. package/dist/views/system/role/components/grantMenuGroups.js +110 -48
  381. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
  382. package/dist/views/system/role/index.vue.js +5 -2
  383. package/dist/views/system/role/index.vue.js.map +1 -1
  384. package/dist/views/system/role/index2.vue.js +181 -165
  385. package/dist/views/system/role/index2.vue.js.map +1 -1
  386. package/dist/views/system/session/index2.vue.js +75 -49
  387. package/dist/views/system/session/index2.vue.js.map +1 -1
  388. package/dist/views/system/user/components/ResetPasswordModal.vue.js +2 -2
  389. package/dist/views/system/user/components/ResetPasswordModal2.vue.js +2 -0
  390. package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -1
  391. package/dist/views/system/user/components/UserFormModal.vue.js +2 -2
  392. package/dist/views/system/user/components/UserFormModal2.vue.js +77 -76
  393. package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -1
  394. package/dist/views/system/user/index.vue.js +2 -2
  395. package/dist/views/system/user/index2.vue.js +362 -275
  396. package/dist/views/system/user/index2.vue.js.map +1 -1
  397. package/package.json +3 -5
  398. package/dist/components/SelectTable/index.vue.d.ts +0 -76
  399. package/dist/components/SelectTable/index2.vue.js +0 -256
  400. package/dist/components/SelectTable/index2.vue.js.map +0 -1
  401. package/dist/composables/useTableRowSort.d.ts +0 -20
  402. package/dist/composables/useTableRowSort.js +0 -59
  403. package/dist/composables/useTableRowSort.js.map +0 -1
  404. package/dist/layouts/LayoutModeCards.vue.js +0 -8
  405. package/dist/layouts/LayoutModeCards.vue.js.map +0 -1
  406. package/dist/layouts/LayoutModeCards2.vue.js +0 -67
  407. package/dist/layouts/LayoutModeCards2.vue.js.map +0 -1
  408. package/dist/layouts/SettingRow.vue.d.ts +0 -16
  409. package/dist/layouts/SettingRow.vue.js +0 -8
  410. package/dist/layouts/SettingRow.vue.js.map +0 -1
  411. package/dist/layouts/SettingRow2.vue.js +0 -23
  412. package/dist/layouts/SettingRow2.vue.js.map +0 -1
  413. package/dist/views/login/skins/AuroraGlass.vue.js +0 -8
  414. package/dist/views/login/skins/AuroraGlass.vue.js.map +0 -1
  415. package/dist/views/login/skins/AuroraGlass2.vue.js +0 -80
  416. package/dist/views/login/skins/AuroraGlass2.vue.js.map +0 -1
  417. package/dist/views/login/skins/SplitPanel.vue.d.ts +0 -3
  418. package/dist/views/login/skins/SplitPanel.vue.js +0 -8
  419. package/dist/views/login/skins/SplitPanel.vue.js.map +0 -1
  420. package/dist/views/login/skins/SplitPanel2.vue.js +0 -65
  421. package/dist/views/login/skins/SplitPanel2.vue.js.map +0 -1
  422. package/dist/views/login/skins/Spotlight.vue.d.ts +0 -3
  423. package/dist/views/login/skins/Spotlight.vue.js +0 -8
  424. package/dist/views/login/skins/Spotlight.vue.js.map +0 -1
  425. package/dist/views/login/skins/Spotlight2.vue.js +0 -36
  426. package/dist/views/login/skins/Spotlight2.vue.js.map +0 -1
  427. package/dist/views/login/skins.d.ts +0 -8
  428. package/dist/views/login/skins.js +0 -13
  429. package/dist/views/login/skins.js.map +0 -1
  430. /package/dist/components/{SelectTable → TableTotal}/index.vue.js.map +0 -0
  431. /package/dist/layouts/{LayoutModeCards.vue.d.ts → AccentPicker.vue.d.ts} +0 -0
  432. /package/dist/views/{login/skins/AuroraGlass.vue.d.ts → system/config/components/WatermarkSection.vue.d.ts} +0 -0
@@ -1,89 +1,419 @@
1
- import { derivePrimary as c, mix as d } from "./mix.js";
2
- const o = (r) => getComputedStyle(document.documentElement).getPropertyValue(r).trim();
3
- function a(r) {
4
- return {
5
- base: r,
6
- hover: d(r, "#FFFFFF", 0.16),
7
- pressed: d(r, "#000000", 0.18),
8
- suppl: d(r, "#FFFFFF", 0.16)
9
- };
1
+ import { rgba as z, mix as G } from "./mix.js";
2
+ import { deriveAccentTokens as J } from "./accentTokens.js";
3
+ const o = (c) => getComputedStyle(document.documentElement).getPropertyValue(c).trim();
4
+ function A(c) {
5
+ const b = G(c, "#FFFFFF", 0.12);
6
+ return { base: c, hover: b, pressed: G(c, "#000000", 0.12), suppl: b };
10
7
  }
11
- function C(r) {
12
- const e = c(r.accent, r.dark), l = a(o("--color-success")), t = a(o("--color-warning")), s = a(o("--color-danger")), i = a(o("--color-info"));
8
+ function X(c) {
9
+ const { dark: b } = c, N = J(c.accent, b), { signal: t, acc: e, onAcc: m, hover: I, pressed: O, activeFg: u, linkFg: p, ring: s } = N, F = A(o("--ok")), H = A(o("--warn")), T = A(o("--err")), f = A(o("--info")), r = o("--text-1"), i = o("--text-2"), l = o("--text-3"), B = o("--text-4"), h = o("--border"), d = o("--separator"), Q = o("--hairline"), $ = o("--hairline-strong"), P = o("--glass-strong"), n = o("--fill"), S = o("--fill-strong"), x = o("--hover"), g = o("--pressed"), C = o("--input"), M = o("--input-disabled"), w = o("--bg-card"), a = o("--bg-elevated"), k = o("--seg-track"), D = o("--seg-thumb"), V = o("--shadow-1"), y = o("--shadow-2"), W = o("--shadow-3"), j = o("--th-bg"), L = o("--th-bg-hover"), q = o("--td-bg-hover"), v = o("--radius-md"), E = {
10
+ borderRadius: v,
11
+ color: C,
12
+ colorActive: C,
13
+ colorDisabled: M,
14
+ border: `1px solid ${h}`,
15
+ borderHover: `1px solid ${o("--select-border-hover")}`,
16
+ borderActive: `1px solid ${t}`,
17
+ borderFocus: `1px solid ${t}`,
18
+ boxShadowActive: s,
19
+ boxShadowFocus: s
20
+ }, R = {
21
+ borderRadius: o("--radius-xs"),
22
+ boxShadowFocus: s,
23
+ checkMarkColor: "#FFFFFF",
24
+ colorChecked: e,
25
+ borderChecked: `1px solid ${e}`,
26
+ colorIndeterminate: e,
27
+ borderIndeterminate: `1px solid ${e}`,
28
+ border: `1px solid ${h}`,
29
+ color: C
30
+ };
13
31
  return {
14
32
  common: {
15
- primaryColor: e.primary,
16
- primaryColorHover: e.hover,
17
- primaryColorPressed: e.pressed,
18
- primaryColorSuppl: e.hover,
19
- successColor: l.base,
20
- successColorHover: l.hover,
21
- successColorPressed: l.pressed,
22
- successColorSuppl: l.suppl,
23
- warningColor: t.base,
24
- warningColorHover: t.hover,
25
- warningColorPressed: t.pressed,
26
- warningColorSuppl: t.suppl,
27
- errorColor: s.base,
28
- errorColorHover: s.hover,
29
- errorColorPressed: s.pressed,
30
- errorColorSuppl: s.suppl,
31
- infoColor: i.base,
32
- infoColorHover: i.hover,
33
- infoColorPressed: i.pressed,
34
- infoColorSuppl: i.suppl,
35
- bodyColor: o("--color-bg-body"),
36
- cardColor: o("--color-bg-container"),
37
- tableColor: o("--color-bg-container"),
38
- modalColor: o("--color-bg-elevated"),
39
- popoverColor: o("--color-bg-elevated"),
40
- textColorBase: o("--color-text-primary"),
41
- textColor1: o("--color-text-primary"),
42
- textColor2: o("--color-text-secondary"),
43
- textColor3: o("--color-text-tertiary"),
44
- placeholderColor: o("--color-text-tertiary"),
45
- textColorDisabled: o("--color-text-disabled"),
46
- borderColor: o("--color-border"),
47
- dividerColor: o("--color-border"),
48
- actionColor: o("--color-fill"),
33
+ primaryColor: e,
34
+ primaryColorHover: I,
35
+ primaryColorPressed: O,
36
+ primaryColorSuppl: I,
37
+ successColor: F.base,
38
+ successColorHover: F.hover,
39
+ successColorPressed: F.pressed,
40
+ successColorSuppl: F.suppl,
41
+ warningColor: H.base,
42
+ warningColorHover: H.hover,
43
+ warningColorPressed: H.pressed,
44
+ warningColorSuppl: H.suppl,
45
+ errorColor: T.base,
46
+ errorColorHover: T.hover,
47
+ errorColorPressed: T.pressed,
48
+ errorColorSuppl: T.suppl,
49
+ infoColor: f.base,
50
+ infoColorHover: f.hover,
51
+ infoColorPressed: f.pressed,
52
+ infoColorSuppl: f.suppl,
53
+ bodyColor: o("--bg-app"),
54
+ cardColor: o("--bg-card-glass"),
55
+ tableColor: "transparent",
56
+ modalColor: a,
57
+ popoverColor: a,
58
+ textColorBase: r,
59
+ textColor1: r,
60
+ textColor2: i,
61
+ textColor3: l,
62
+ placeholderColor: l,
63
+ textColorDisabled: B,
64
+ borderColor: h,
65
+ dividerColor: d,
49
66
  // 两者同色会让禁用框和可填框长一个样,操作员分不清哪里能输入,必须走不同令牌。
50
67
  // 这两个 common 变量流向 Input 与 InternalSelection,
51
68
  // 即 NInput / NInputNumber / NSelect / NDatePicker / NCascader 等全部输入类组件。
52
- inputColor: o("--color-bg-input"),
53
- inputColorDisabled: o("--color-fill-disabled"),
54
- tableHeaderColor: o("--color-fill"),
55
- hoverColor: o("--color-fill-hover"),
56
- borderRadius: o("--radius-md"),
69
+ inputColor: C,
70
+ inputColorDisabled: M,
71
+ actionColor: n,
72
+ tableHeaderColor: "transparent",
73
+ hoverColor: x,
74
+ pressedColor: g,
75
+ closeColorHover: x,
76
+ closeColorPressed: g,
77
+ clearColor: l,
78
+ borderRadius: v,
57
79
  borderRadiusSmall: o("--radius-sm"),
58
- fontSize: o("--font-size-base"),
59
- fontSizeMedium: o("--font-size-base"),
60
- fontFamily: o("--font-family-base"),
61
- fontFamilyMono: o("--font-family-mono"),
62
- boxShadow1: o("--shadow-1"),
63
- boxShadow2: o("--shadow-2"),
64
- boxShadow3: o("--shadow-3")
65
- },
66
- // 卡片圆角走 lg(12);常规控件走 common.borderRadius(md=10)。
67
- Card: { borderRadius: o("--radius-lg") },
68
- // 表头质感(corporate 风):次级色 + 半粗字重,与数据行拉开层次。
80
+ fontFamily: o("--font"),
81
+ fontFamilyMono: o("--font-mono"),
82
+ fontWeightStrong: "600",
83
+ fontSizeMini: "13px",
84
+ fontSizeTiny: "14px",
85
+ fontSizeSmall: "14px",
86
+ fontSizeMedium: "15px",
87
+ fontSizeLarge: "16px",
88
+ fontSizeHuge: "17px",
89
+ fontSize: "15px",
90
+ heightMini: "20px",
91
+ heightTiny: "22px",
92
+ heightSmall: "24px",
93
+ heightMedium: "30px",
94
+ heightLarge: "42px",
95
+ heightHuge: "46px",
96
+ boxShadow1: V,
97
+ boxShadow2: y,
98
+ boxShadow3: W,
99
+ cubicBezierEaseInOut: "cubic-bezier(.2, .8, .2, 1)"
100
+ },
101
+ Button: {
102
+ fontWeight: "500",
103
+ borderRadiusMedium: v,
104
+ borderRadiusSmall: "7px",
105
+ borderRadiusLarge: "12px",
106
+ fontSizeLarge: "15px",
107
+ // 点击不出扩散波纹:那是 Ant 系的反馈,macOS 的按钮只有按下态的底色变化(colorPressed)。
108
+ // 波纹是定时器切 class + 无 fill-mode 的 CSS 动画,时长归零即彻底不可见,不必逐类型清 rippleColor。
109
+ rippleDuration: "0s",
110
+ paddingMedium: "0 12px",
111
+ paddingSmall: "0 10px",
112
+ textColorPrimary: m,
113
+ textColorHoverPrimary: m,
114
+ textColorPressedPrimary: m,
115
+ textColorFocusPrimary: m,
116
+ textColorDisabledPrimary: m,
117
+ colorSecondary: n,
118
+ colorSecondaryHover: S,
119
+ colorSecondaryPressed: g,
120
+ // 没写 type 的默认款(库里的「搜索」「更多」)渲染成与 secondary 同款:中性灰底、无描边
121
+ color: n,
122
+ colorHover: S,
123
+ colorPressed: g,
124
+ colorFocus: n,
125
+ border: "1px solid transparent",
126
+ borderHover: "1px solid transparent",
127
+ borderPressed: "1px solid transparent",
128
+ borderFocus: `1px solid ${t}`,
129
+ // 文字 / 行内操作按钮(详情、编辑):浅色 / 深色统一用 linkFg
130
+ textColorTextPrimary: p,
131
+ textColorTextHoverPrimary: p,
132
+ textColorTextPressedPrimary: p,
133
+ textColorTextFocusPrimary: p,
134
+ textColorGhostPrimary: p,
135
+ textColorGhostHoverPrimary: p,
136
+ textColorGhostPressedPrimary: p,
137
+ textColorGhostFocusPrimary: p,
138
+ colorQuaternaryHover: x,
139
+ colorQuaternaryPressed: g,
140
+ colorTertiaryHover: x,
141
+ colorTertiaryPressed: g
142
+ },
143
+ Input: {
144
+ borderRadius: v,
145
+ color: C,
146
+ colorDisabled: M,
147
+ colorFocus: C,
148
+ border: `1px solid ${h}`,
149
+ borderHover: `1px solid ${o("--input-border-hover")}`,
150
+ borderFocus: `1px solid ${t}`,
151
+ boxShadowFocus: s,
152
+ heightLarge: "42px",
153
+ fontSizeLarge: "15px",
154
+ caretColor: t
155
+ },
156
+ Select: {
157
+ peers: {
158
+ InternalSelection: E,
159
+ InternalSelectMenu: {
160
+ borderRadius: "12px",
161
+ optionHeightMedium: "30px",
162
+ color: a,
163
+ optionCheckColor: t
164
+ }
165
+ }
166
+ },
167
+ TreeSelect: { peers: { InternalSelection: E } },
168
+ DatePicker: {
169
+ peers: {
170
+ Input: {
171
+ borderRadius: v,
172
+ color: C,
173
+ borderFocus: `1px solid ${t}`,
174
+ boxShadowFocus: s
175
+ }
176
+ }
177
+ },
178
+ InputNumber: {
179
+ peers: { Input: { color: C, borderFocus: `1px solid ${t}`, boxShadowFocus: s } }
180
+ },
181
+ Card: {
182
+ color: w,
183
+ colorEmbedded: n,
184
+ borderColor: "transparent",
185
+ borderRadius: o("--radius-lg"),
186
+ titleFontSizeMedium: "15px",
187
+ titleFontSizeSmall: "15px",
188
+ titleFontWeight: "600",
189
+ paddingMedium: "12px 14px 14px",
190
+ paddingSmall: "10px 12px",
191
+ colorModal: a,
192
+ actionColor: n
193
+ },
69
194
  DataTable: {
70
- thTextColor: o("--color-text-secondary"),
195
+ thColor: j,
196
+ thColorHover: L,
197
+ thColorSorting: L,
198
+ // 内容层不透明:行底取实色卡片色(固定列 sticky 叠在别的列上不会透底),不加斑马纹(tdColorStriped 同色)
199
+ tdColor: w,
200
+ tdColorHover: q,
201
+ tdColorStriped: w,
202
+ tdColorSorting: w,
203
+ thTextColor: i,
71
204
  thFontWeight: "600",
72
- // 表头/斑马纹统一贴近深色背景,不沿用 Naive 默认浅灰,避免表格发白。
73
- tdColor: o("--color-bg-container"),
74
- tdColorStriped: o("--color-fill"),
75
- tdColorHover: o("--color-fill-hover"),
76
- // 表头底色:对应 Naive 的 tableHeaderColor(官方浅色档是 rgb(250,250,252)),
77
- // 这里换成项目令牌 —— 官方那档浅灰压在本项目的暗色背景上会发白。
78
- // hover 与排序态也一并覆盖:Naive 是拿它自己那档浅灰算出来的,不跟着 thColor 走,
79
- // 不覆盖的话鼠标划过表头会跳成另一个色系。
80
- thColor: o("--color-fill"),
81
- thColorHover: o("--color-fill-hover"),
82
- thColorSorting: o("--color-fill-hover")
83
- }
205
+ thIconColor: l,
206
+ borderColor: d,
207
+ borderRadius: "10px",
208
+ thPaddingMedium: "6px 12px",
209
+ tdPaddingMedium: "4px 12px",
210
+ fontSizeMedium: "15px",
211
+ thPaddingSmall: "6px 10px",
212
+ tdPaddingSmall: "4px 10px",
213
+ fontSizeSmall: "14px",
214
+ peers: { Checkbox: R }
215
+ },
216
+ Menu: {
217
+ borderRadius: v,
218
+ itemHeight: "34px",
219
+ fontSize: "15px",
220
+ itemColorHover: x,
221
+ itemColorActive: z(t, b ? 0.16 : 0.09),
222
+ itemColorActiveHover: z(t, b ? 0.2 : 0.12),
223
+ itemColorActiveCollapsed: z(t, b ? 0.16 : 0.09),
224
+ // 侧栏标签用主文字色(macOS 侧栏就是 label 主色,不是次级灰);选中 / 悬停靠底色区分
225
+ itemTextColor: r,
226
+ itemTextColorHover: r,
227
+ // 侧栏图标与文字同色(每个状态都一致):平时主文字色,选中才跟随强调色;
228
+ // 强调色只出现在选中项(行底色 + 加粗的图标文字),整条侧栏更安静
229
+ itemIconColor: r,
230
+ itemIconColorHover: r,
231
+ itemIconColorCollapsed: r,
232
+ itemTextColorActive: u,
233
+ itemIconColorActive: u,
234
+ itemTextColorActiveHover: u,
235
+ itemIconColorActiveHover: u,
236
+ itemTextColorChildActive: r,
237
+ itemIconColorChildActive: r,
238
+ itemTextColorChildActiveHover: r,
239
+ itemIconColorChildActiveHover: r,
240
+ arrowColor: l,
241
+ arrowColorHover: i,
242
+ arrowColorActive: u,
243
+ arrowColorActiveHover: u,
244
+ arrowColorChildActive: i,
245
+ arrowColorChildActiveHover: r,
246
+ groupTextColor: l
247
+ },
248
+ Tabs: {
249
+ colorSegment: k,
250
+ tabColorSegment: D,
251
+ tabBorderRadius: "8px",
252
+ tabTextColorSegment: i,
253
+ tabTextColorActiveSegment: r,
254
+ tabTextColorHoverSegment: r,
255
+ tabFontWeightActive: "500",
256
+ tabColor: "transparent",
257
+ tabBorderColor: "transparent",
258
+ tabTextColorCard: l,
259
+ tabTextColorActiveCard: u,
260
+ tabTextColorHoverCard: r,
261
+ tabTextColorActiveLine: r,
262
+ tabTextColorHoverLine: r,
263
+ barColor: e
264
+ },
265
+ Radio: {
266
+ buttonBorderRadius: "8px",
267
+ buttonColor: k,
268
+ buttonColorActive: D,
269
+ buttonBorderColor: "transparent",
270
+ buttonBorderColorActive: "transparent",
271
+ buttonBorderColorHover: "transparent",
272
+ buttonTextColor: i,
273
+ buttonTextColorActive: r,
274
+ buttonTextColorHover: r,
275
+ buttonBoxShadow: "none",
276
+ buttonBoxShadowHover: "none",
277
+ buttonBoxShadowFocus: s,
278
+ dotColorActive: e,
279
+ boxShadowActive: `inset 0 0 0 1px ${e}`,
280
+ boxShadowFocus: s
281
+ },
282
+ Checkbox: R,
283
+ Tree: {
284
+ nodeBorderRadius: "8px",
285
+ nodeColorHover: x,
286
+ nodeColorActive: P,
287
+ nodeHeight: "30px",
288
+ peers: { Checkbox: R }
289
+ },
290
+ Switch: {
291
+ railColor: o("--switch-off"),
292
+ railColorActive: e,
293
+ boxShadowFocus: s,
294
+ railHeightMedium: "24px",
295
+ railWidthMedium: "42px",
296
+ buttonHeightMedium: "20px",
297
+ buttonWidthMedium: "20px",
298
+ buttonWidthPressedMedium: "26px"
299
+ },
300
+ Tag: {
301
+ heightTiny: "20px",
302
+ heightSmall: "22px",
303
+ heightMedium: "24px",
304
+ fontSizeTiny: "13px",
305
+ fontSizeSmall: "14px",
306
+ fontSizeMedium: "15px",
307
+ borderRadius: o("--radius-sm"),
308
+ color: n,
309
+ textColor: i,
310
+ fontWeightStrong: "500",
311
+ colorPrimary: P,
312
+ textColorPrimary: r,
313
+ borderPrimary: `1px solid ${$}`
314
+ },
315
+ List: { color: "transparent", colorHover: x, borderColor: d },
316
+ Dialog: {
317
+ borderRadius: o("--radius-xl"),
318
+ color: a,
319
+ padding: "24px 26px 22px",
320
+ titleFontSize: "17px",
321
+ titleFontWeight: "600"
322
+ },
323
+ Modal: { color: a, boxShadow: W },
324
+ Drawer: {
325
+ color: a,
326
+ headerPadding: "18px 24px",
327
+ bodyPadding: "20px 24px",
328
+ footerPadding: "14px 24px",
329
+ titleFontSize: "17px",
330
+ titleFontWeight: "600",
331
+ headerBorderBottom: `1px solid ${d}`,
332
+ footerBorderTop: `1px solid ${d}`
333
+ },
334
+ Popover: { color: a, borderRadius: o("--radius-lg"), boxShadow: y },
335
+ Dropdown: {
336
+ color: a,
337
+ borderRadius: "12px",
338
+ padding: "5px",
339
+ optionHeightMedium: "30px",
340
+ optionColorHover: x,
341
+ dividerColor: d
342
+ },
343
+ Tooltip: {
344
+ color: o("--tooltip-bg"),
345
+ textColor: "#FFFFFF",
346
+ borderRadius: "8px",
347
+ padding: "5px 9px",
348
+ // Tooltip 底下是 Popover,而 Naive 合并时全局 `Popover` 覆盖(上面的实底 elevated)压过 Tooltip 自带的 color,
349
+ // 文字色却仍是 Tooltip 的白色 → 亮色下白底白字。peers.Popover 在合并链最后,只对 Tooltip 生效。
350
+ peers: {
351
+ Popover: {
352
+ color: o("--tooltip-bg"),
353
+ textColor: "#FFFFFF",
354
+ borderRadius: "8px",
355
+ padding: "5px 9px"
356
+ }
357
+ }
358
+ },
359
+ Message: { borderRadius: "12px", color: a, padding: "10px 16px", boxShadow: y },
360
+ Notification: { borderRadius: "16px", color: a, boxShadow: y },
361
+ Alert: {
362
+ borderRadius: "10px",
363
+ colorInfo: n,
364
+ borderInfo: `1px solid ${Q}`,
365
+ iconColorInfo: i,
366
+ titleTextColorInfo: r,
367
+ contentTextColorInfo: i
368
+ },
369
+ Pagination: {
370
+ itemBorderRadius: "8px",
371
+ itemColorActive: P,
372
+ itemTextColorActive: r,
373
+ itemBorderActive: `1px solid ${$}`,
374
+ itemColorActiveHover: P
375
+ },
376
+ Statistic: {
377
+ valueFontSize: "26px",
378
+ valueFontWeight: "500",
379
+ labelFontSize: "13px",
380
+ labelTextColor: i
381
+ },
382
+ Descriptions: {
383
+ thColor: n,
384
+ borderColor: d,
385
+ thTextColor: l,
386
+ tdColor: "transparent"
387
+ },
388
+ Progress: { railColor: n, fillColor: e },
389
+ Breadcrumb: { itemTextColor: l, itemTextColorActive: r, separatorColor: B },
390
+ Slider: {
391
+ fillColor: e,
392
+ fillColorHover: e,
393
+ railColor: S,
394
+ railColorHover: S,
395
+ dotBorderActive: `2px solid ${e}`
396
+ },
397
+ Steps: {
398
+ indicatorColorProcess: e,
399
+ indicatorTextColorProcess: m,
400
+ indicatorBorderColorProcess: e,
401
+ indicatorColorFinish: "transparent",
402
+ indicatorBorderColorFinish: h,
403
+ indicatorTextColorFinish: i,
404
+ splitorColorFinish: l,
405
+ splitorColorProcess: d,
406
+ splitorColorWait: d
407
+ },
408
+ Empty: { textColor: l, iconColor: B },
409
+ Divider: { color: d },
410
+ Timeline: { circleBorder: `2px solid ${h}`, titleFontWeight: "500", lineColor: d },
411
+ Badge: { color: o("--badge-bg") },
412
+ Scrollbar: { color: S, colorHover: h },
413
+ Code: { textColor: r }
84
414
  };
85
415
  }
86
416
  export {
87
- C as buildThemeOverrides
417
+ X as buildThemeOverrides
88
418
  };
89
419
  //# sourceMappingURL=naive-theme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"naive-theme.js","sources":["../../src/theme/naive-theme.ts"],"sourcesContent":["import type { GlobalThemeOverrides } from 'naive-ui'\nimport { derivePrimary, mix } from './mix'\n\n// 读取当前主题下的 token 值(getComputedStyle 同步反映最新的 data-theme)。\nconst v = (name: string): string =>\n getComputedStyle(document.documentElement).getPropertyValue(name).trim()\n\n/** 语义色 hover/pressed/suppl 统一派生。主色不在此列——它走 `mix.ts` 的 `derivePrimary`(与写 CSS 变量的那处共用)。 */\nfunction semantic(base: string) {\n return {\n base,\n hover: mix(base, '#FFFFFF', 0.16),\n pressed: mix(base, '#000000', 0.18),\n suppl: mix(base, '#FFFFFF', 0.16),\n }\n}\n\n/**\n * tokens.css → Naive UI GlobalThemeOverrides(DESIGN.md 映射表)。\n * 主色由 accent 按派生规则算;其余颜色/度量从当前 CSS 变量读取。\n */\nexport function buildThemeOverrides(opts: { dark: boolean; accent: string }): GlobalThemeOverrides {\n const p = derivePrimary(opts.accent, opts.dark)\n const ok = semantic(v('--color-success'))\n const warn = semantic(v('--color-warning'))\n const err = semantic(v('--color-danger'))\n const info = semantic(v('--color-info'))\n return {\n common: {\n primaryColor: p.primary,\n primaryColorHover: p.hover,\n primaryColorPressed: p.pressed,\n primaryColorSuppl: p.hover,\n\n successColor: ok.base,\n successColorHover: ok.hover,\n successColorPressed: ok.pressed,\n successColorSuppl: ok.suppl,\n warningColor: warn.base,\n warningColorHover: warn.hover,\n warningColorPressed: warn.pressed,\n warningColorSuppl: warn.suppl,\n errorColor: err.base,\n errorColorHover: err.hover,\n errorColorPressed: err.pressed,\n errorColorSuppl: err.suppl,\n infoColor: info.base,\n infoColorHover: info.hover,\n infoColorPressed: info.pressed,\n infoColorSuppl: info.suppl,\n\n bodyColor: v('--color-bg-body'),\n cardColor: v('--color-bg-container'),\n tableColor: v('--color-bg-container'),\n modalColor: v('--color-bg-elevated'),\n popoverColor: v('--color-bg-elevated'),\n\n textColorBase: v('--color-text-primary'),\n textColor1: v('--color-text-primary'),\n textColor2: v('--color-text-secondary'),\n textColor3: v('--color-text-tertiary'),\n placeholderColor: v('--color-text-tertiary'),\n textColorDisabled: v('--color-text-disabled'),\n\n borderColor: v('--color-border'),\n dividerColor: v('--color-border'),\n actionColor: v('--color-fill'),\n // 两者同色会让禁用框和可填框长一个样,操作员分不清哪里能输入,必须走不同令牌。\n // 这两个 common 变量流向 Input 与 InternalSelection,\n // 即 NInput / NInputNumber / NSelect / NDatePicker / NCascader 等全部输入类组件。\n inputColor: v('--color-bg-input'),\n inputColorDisabled: v('--color-fill-disabled'),\n tableHeaderColor: v('--color-fill'),\n hoverColor: v('--color-fill-hover'),\n\n borderRadius: v('--radius-md'),\n borderRadiusSmall: v('--radius-sm'),\n fontSize: v('--font-size-base'),\n fontSizeMedium: v('--font-size-base'),\n fontFamily: v('--font-family-base'),\n fontFamilyMono: v('--font-family-mono'),\n\n boxShadow1: v('--shadow-1'),\n boxShadow2: v('--shadow-2'),\n boxShadow3: v('--shadow-3'),\n },\n // 卡片圆角走 lg(12);常规控件走 common.borderRadius(md=10)。\n Card: { borderRadius: v('--radius-lg') },\n // 表头质感(corporate 风):次级色 + 半粗字重,与数据行拉开层次。\n DataTable: {\n thTextColor: v('--color-text-secondary'),\n thFontWeight: '600',\n // 表头/斑马纹统一贴近深色背景,不沿用 Naive 默认浅灰,避免表格发白。\n tdColor: v('--color-bg-container'),\n tdColorStriped: v('--color-fill'),\n tdColorHover: v('--color-fill-hover'),\n // 表头底色:对应 Naive 的 tableHeaderColor(官方浅色档是 rgb(250,250,252)),\n // 这里换成项目令牌 —— 官方那档浅灰压在本项目的暗色背景上会发白。\n // hover 与排序态也一并覆盖:Naive 是拿它自己那档浅灰算出来的,不跟着 thColor 走,\n // 不覆盖的话鼠标划过表头会跳成另一个色系。\n thColor: v('--color-fill'),\n thColorHover: v('--color-fill-hover'),\n thColorSorting: v('--color-fill-hover'),\n },\n }\n}\n"],"names":["v","name","semantic","base","mix","buildThemeOverrides","opts","p","derivePrimary","ok","warn","err","info"],"mappings":"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"}
1
+ {"version":3,"file":"naive-theme.js","sources":["../../src/theme/naive-theme.ts"],"sourcesContent":["import type { GlobalThemeOverrides } from 'naive-ui'\nimport { mix, rgba } from './mix'\nimport { deriveAccentTokens } from './accentTokens'\n\n// 读取当前主题下的 token 值(getComputedStyle 同步反映最新的 data-theme)。\nconst v = (name: string): string =>\n getComputedStyle(document.documentElement).getPropertyValue(name).trim()\n\n/** 语义色 hover/pressed 统一派生(hover 往白提 12%,pressed 往黑压 12%)。主色不在此列——它走 `mix.ts` 的 `derivePrimary`。 */\nfunction semantic(base: string) {\n const hover = mix(base, '#FFFFFF', 0.12)\n return { base, hover, pressed: mix(base, '#000000', 0.12), suppl: hover }\n}\n\n/**\n * tokens.css → Naive UI GlobalThemeOverrides(映射关系见 DESIGN.md 映射表)。\n * 强调色相关的值由 accent 按 `accentTokens.ts` 算;其余颜色 / 度量从当前 CSS 变量读取。\n *\n * 度量(中文界面 14px 偏小,整体比 Naive 默认大一档):正文 15px、默认控件高 30px(小 24、迷你 20)、Large 42px 只留给登录页与触屏窄档。\n * 按钮默认款(没写 type 的 NButton,如表格库里的「搜索」「更多」)渲染成与 secondary 同色同无描边,整站只剩一种次按钮。\n */\nexport function buildThemeOverrides(opts: { dark: boolean; accent: string }): GlobalThemeOverrides {\n const { dark } = opts\n const a = deriveAccentTokens(opts.accent, dark)\n const { signal, acc, onAcc, hover, pressed, activeFg, linkFg, ring } = a\n\n const ok = semantic(v('--ok'))\n const warn = semantic(v('--warn'))\n const err = semantic(v('--err'))\n const info = semantic(v('--info'))\n\n const text1 = v('--text-1')\n const text2 = v('--text-2')\n const text3 = v('--text-3')\n const text4 = v('--text-4')\n const border = v('--border')\n const separator = v('--separator')\n const hairline = v('--hairline')\n const hairlineStrong = v('--hairline-strong')\n const glassStrong = v('--glass-strong')\n const fill = v('--fill')\n const fillStrong = v('--fill-strong')\n const hoverBg = v('--hover')\n const pressedBg = v('--pressed')\n const input = v('--input')\n const inputDisabled = v('--input-disabled')\n const cardSolid = v('--bg-card')\n const elevated = v('--bg-elevated')\n const segTrack = v('--seg-track')\n const segThumb = v('--seg-thumb')\n const shadow1 = v('--shadow-1')\n const shadow2 = v('--shadow-2')\n const shadow3 = v('--shadow-3')\n const thBg = v('--th-bg')\n const thBgHover = v('--th-bg-hover')\n const tdBgHover = v('--td-bg-hover')\n\n const radius = v('--radius-md') // 9\n const selection = {\n borderRadius: radius,\n color: input,\n colorActive: input,\n colorDisabled: inputDisabled,\n border: `1px solid ${border}`,\n borderHover: `1px solid ${v('--select-border-hover')}`,\n borderActive: `1px solid ${signal}`,\n borderFocus: `1px solid ${signal}`,\n boxShadowActive: ring,\n boxShadowFocus: ring,\n }\n const checkbox = {\n borderRadius: v('--radius-xs'),\n boxShadowFocus: ring,\n checkMarkColor: '#FFFFFF',\n colorChecked: acc,\n borderChecked: `1px solid ${acc}`,\n colorIndeterminate: acc,\n borderIndeterminate: `1px solid ${acc}`,\n border: `1px solid ${border}`,\n color: input,\n }\n\n return {\n common: {\n primaryColor: acc,\n primaryColorHover: hover,\n primaryColorPressed: pressed,\n primaryColorSuppl: hover,\n\n successColor: ok.base,\n successColorHover: ok.hover,\n successColorPressed: ok.pressed,\n successColorSuppl: ok.suppl,\n warningColor: warn.base,\n warningColorHover: warn.hover,\n warningColorPressed: warn.pressed,\n warningColorSuppl: warn.suppl,\n errorColor: err.base,\n errorColorHover: err.hover,\n errorColorPressed: err.pressed,\n errorColorSuppl: err.suppl,\n infoColor: info.base,\n infoColorHover: info.hover,\n infoColorPressed: info.pressed,\n infoColorSuppl: info.suppl,\n\n bodyColor: v('--bg-app'),\n cardColor: v('--bg-card-glass'),\n tableColor: 'transparent',\n modalColor: elevated,\n popoverColor: elevated,\n\n textColorBase: text1,\n textColor1: text1,\n textColor2: text2,\n textColor3: text3,\n placeholderColor: text3,\n textColorDisabled: text4,\n\n borderColor: border,\n dividerColor: separator,\n // 两者同色会让禁用框和可填框长一个样,操作员分不清哪里能输入,必须走不同令牌。\n // 这两个 common 变量流向 Input 与 InternalSelection,\n // 即 NInput / NInputNumber / NSelect / NDatePicker / NCascader 等全部输入类组件。\n inputColor: input,\n inputColorDisabled: inputDisabled,\n actionColor: fill,\n tableHeaderColor: 'transparent',\n hoverColor: hoverBg,\n pressedColor: pressedBg,\n closeColorHover: hoverBg,\n closeColorPressed: pressedBg,\n clearColor: text3,\n\n borderRadius: radius,\n borderRadiusSmall: v('--radius-sm'),\n fontFamily: v('--font'),\n fontFamilyMono: v('--font-mono'),\n fontWeightStrong: '600',\n fontSizeMini: '13px',\n fontSizeTiny: '14px',\n fontSizeSmall: '14px',\n fontSizeMedium: '15px',\n fontSizeLarge: '16px',\n fontSizeHuge: '17px',\n fontSize: '15px',\n heightMini: '20px',\n heightTiny: '22px',\n heightSmall: '24px',\n heightMedium: '30px',\n heightLarge: '42px',\n heightHuge: '46px',\n\n boxShadow1: shadow1,\n boxShadow2: shadow2,\n boxShadow3: shadow3,\n cubicBezierEaseInOut: 'cubic-bezier(.2, .8, .2, 1)',\n },\n Button: {\n fontWeight: '500',\n borderRadiusMedium: radius,\n borderRadiusSmall: '7px',\n borderRadiusLarge: '12px',\n fontSizeLarge: '15px',\n // 点击不出扩散波纹:那是 Ant 系的反馈,macOS 的按钮只有按下态的底色变化(colorPressed)。\n // 波纹是定时器切 class + 无 fill-mode 的 CSS 动画,时长归零即彻底不可见,不必逐类型清 rippleColor。\n rippleDuration: '0s',\n paddingMedium: '0 12px',\n paddingSmall: '0 10px',\n textColorPrimary: onAcc,\n textColorHoverPrimary: onAcc,\n textColorPressedPrimary: onAcc,\n textColorFocusPrimary: onAcc,\n textColorDisabledPrimary: onAcc,\n colorSecondary: fill,\n colorSecondaryHover: fillStrong,\n colorSecondaryPressed: pressedBg,\n // 没写 type 的默认款(库里的「搜索」「更多」)渲染成与 secondary 同款:中性灰底、无描边\n color: fill,\n colorHover: fillStrong,\n colorPressed: pressedBg,\n colorFocus: fill,\n border: '1px solid transparent',\n borderHover: '1px solid transparent',\n borderPressed: '1px solid transparent',\n borderFocus: `1px solid ${signal}`,\n // 文字 / 行内操作按钮(详情、编辑):浅色 / 深色统一用 linkFg\n textColorTextPrimary: linkFg,\n textColorTextHoverPrimary: linkFg,\n textColorTextPressedPrimary: linkFg,\n textColorTextFocusPrimary: linkFg,\n textColorGhostPrimary: linkFg,\n textColorGhostHoverPrimary: linkFg,\n textColorGhostPressedPrimary: linkFg,\n textColorGhostFocusPrimary: linkFg,\n colorQuaternaryHover: hoverBg,\n colorQuaternaryPressed: pressedBg,\n colorTertiaryHover: hoverBg,\n colorTertiaryPressed: pressedBg,\n },\n Input: {\n borderRadius: radius,\n color: input,\n colorDisabled: inputDisabled,\n colorFocus: input,\n border: `1px solid ${border}`,\n borderHover: `1px solid ${v('--input-border-hover')}`,\n borderFocus: `1px solid ${signal}`,\n boxShadowFocus: ring,\n heightLarge: '42px',\n fontSizeLarge: '15px',\n caretColor: signal,\n },\n Select: {\n peers: {\n InternalSelection: selection,\n InternalSelectMenu: {\n borderRadius: '12px',\n optionHeightMedium: '30px',\n color: elevated,\n optionCheckColor: signal,\n },\n },\n },\n TreeSelect: { peers: { InternalSelection: selection } },\n DatePicker: {\n peers: {\n Input: {\n borderRadius: radius,\n color: input,\n borderFocus: `1px solid ${signal}`,\n boxShadowFocus: ring,\n },\n },\n },\n InputNumber: {\n peers: { Input: { color: input, borderFocus: `1px solid ${signal}`, boxShadowFocus: ring } },\n },\n Card: {\n color: cardSolid,\n colorEmbedded: fill,\n borderColor: 'transparent',\n borderRadius: v('--radius-lg'),\n titleFontSizeMedium: '15px',\n titleFontSizeSmall: '15px',\n titleFontWeight: '600',\n paddingMedium: '12px 14px 14px',\n paddingSmall: '10px 12px',\n colorModal: elevated,\n actionColor: fill,\n },\n DataTable: {\n thColor: thBg,\n thColorHover: thBgHover,\n thColorSorting: thBgHover,\n // 内容层不透明:行底取实色卡片色(固定列 sticky 叠在别的列上不会透底),不加斑马纹(tdColorStriped 同色)\n tdColor: cardSolid,\n tdColorHover: tdBgHover,\n tdColorStriped: cardSolid,\n tdColorSorting: cardSolid,\n thTextColor: text2,\n thFontWeight: '600',\n thIconColor: text3,\n borderColor: separator,\n borderRadius: '10px',\n thPaddingMedium: '6px 12px',\n tdPaddingMedium: '4px 12px',\n fontSizeMedium: '15px',\n thPaddingSmall: '6px 10px',\n tdPaddingSmall: '4px 10px',\n fontSizeSmall: '14px',\n peers: { Checkbox: checkbox },\n },\n Menu: {\n borderRadius: radius,\n itemHeight: '34px',\n fontSize: '15px',\n itemColorHover: hoverBg,\n itemColorActive: rgba(signal, dark ? 0.16 : 0.09),\n itemColorActiveHover: rgba(signal, dark ? 0.2 : 0.12),\n itemColorActiveCollapsed: rgba(signal, dark ? 0.16 : 0.09),\n // 侧栏标签用主文字色(macOS 侧栏就是 label 主色,不是次级灰);选中 / 悬停靠底色区分\n itemTextColor: text1,\n itemTextColorHover: text1,\n // 侧栏图标与文字同色(每个状态都一致):平时主文字色,选中才跟随强调色;\n // 强调色只出现在选中项(行底色 + 加粗的图标文字),整条侧栏更安静\n itemIconColor: text1,\n itemIconColorHover: text1,\n itemIconColorCollapsed: text1,\n itemTextColorActive: activeFg,\n itemIconColorActive: activeFg,\n itemTextColorActiveHover: activeFg,\n itemIconColorActiveHover: activeFg,\n itemTextColorChildActive: text1,\n itemIconColorChildActive: text1,\n itemTextColorChildActiveHover: text1,\n itemIconColorChildActiveHover: text1,\n arrowColor: text3,\n arrowColorHover: text2,\n arrowColorActive: activeFg,\n arrowColorActiveHover: activeFg,\n arrowColorChildActive: text2,\n arrowColorChildActiveHover: text1,\n groupTextColor: text3,\n },\n Tabs: {\n colorSegment: segTrack,\n tabColorSegment: segThumb,\n tabBorderRadius: '8px',\n tabTextColorSegment: text2,\n tabTextColorActiveSegment: text1,\n tabTextColorHoverSegment: text1,\n tabFontWeightActive: '500',\n tabColor: 'transparent',\n tabBorderColor: 'transparent',\n tabTextColorCard: text3,\n tabTextColorActiveCard: activeFg,\n tabTextColorHoverCard: text1,\n tabTextColorActiveLine: text1,\n tabTextColorHoverLine: text1,\n barColor: acc,\n },\n Radio: {\n buttonBorderRadius: '8px',\n buttonColor: segTrack,\n buttonColorActive: segThumb,\n buttonBorderColor: 'transparent',\n buttonBorderColorActive: 'transparent',\n buttonBorderColorHover: 'transparent',\n buttonTextColor: text2,\n buttonTextColorActive: text1,\n buttonTextColorHover: text1,\n buttonBoxShadow: 'none',\n buttonBoxShadowHover: 'none',\n buttonBoxShadowFocus: ring,\n dotColorActive: acc,\n boxShadowActive: `inset 0 0 0 1px ${acc}`,\n boxShadowFocus: ring,\n },\n Checkbox: checkbox,\n Tree: {\n nodeBorderRadius: '8px',\n nodeColorHover: hoverBg,\n nodeColorActive: glassStrong,\n nodeHeight: '30px',\n peers: { Checkbox: checkbox },\n },\n Switch: {\n railColor: v('--switch-off'),\n railColorActive: acc,\n boxShadowFocus: ring,\n railHeightMedium: '24px',\n railWidthMedium: '42px',\n buttonHeightMedium: '20px',\n buttonWidthMedium: '20px',\n buttonWidthPressedMedium: '26px',\n },\n Tag: {\n heightTiny: '20px',\n heightSmall: '22px',\n heightMedium: '24px',\n fontSizeTiny: '13px',\n fontSizeSmall: '14px',\n fontSizeMedium: '15px',\n borderRadius: v('--radius-sm'),\n color: fill,\n textColor: text2,\n fontWeightStrong: '500',\n colorPrimary: glassStrong,\n textColorPrimary: text1,\n borderPrimary: `1px solid ${hairlineStrong}`,\n },\n List: { color: 'transparent', colorHover: hoverBg, borderColor: separator },\n Dialog: {\n borderRadius: v('--radius-xl'),\n color: elevated,\n padding: '24px 26px 22px',\n titleFontSize: '17px',\n titleFontWeight: '600',\n },\n Modal: { color: elevated, boxShadow: shadow3 },\n Drawer: {\n color: elevated,\n headerPadding: '18px 24px',\n bodyPadding: '20px 24px',\n footerPadding: '14px 24px',\n titleFontSize: '17px',\n titleFontWeight: '600',\n headerBorderBottom: `1px solid ${separator}`,\n footerBorderTop: `1px solid ${separator}`,\n },\n Popover: { color: elevated, borderRadius: v('--radius-lg'), boxShadow: shadow2 },\n Dropdown: {\n color: elevated,\n borderRadius: '12px',\n padding: '5px',\n optionHeightMedium: '30px',\n optionColorHover: hoverBg,\n dividerColor: separator,\n },\n Tooltip: {\n color: v('--tooltip-bg'),\n textColor: '#FFFFFF',\n borderRadius: '8px',\n padding: '5px 9px',\n // Tooltip 底下是 Popover,而 Naive 合并时全局 `Popover` 覆盖(上面的实底 elevated)压过 Tooltip 自带的 color,\n // 文字色却仍是 Tooltip 的白色 → 亮色下白底白字。peers.Popover 在合并链最后,只对 Tooltip 生效。\n peers: {\n Popover: {\n color: v('--tooltip-bg'),\n textColor: '#FFFFFF',\n borderRadius: '8px',\n padding: '5px 9px',\n },\n },\n },\n Message: { borderRadius: '12px', color: elevated, padding: '10px 16px', boxShadow: shadow2 },\n Notification: { borderRadius: '16px', color: elevated, boxShadow: shadow2 },\n Alert: {\n borderRadius: '10px',\n colorInfo: fill,\n borderInfo: `1px solid ${hairline}`,\n iconColorInfo: text2,\n titleTextColorInfo: text1,\n contentTextColorInfo: text2,\n },\n Pagination: {\n itemBorderRadius: '8px',\n itemColorActive: glassStrong,\n itemTextColorActive: text1,\n itemBorderActive: `1px solid ${hairlineStrong}`,\n itemColorActiveHover: glassStrong,\n },\n Statistic: {\n valueFontSize: '26px',\n valueFontWeight: '500',\n labelFontSize: '13px',\n labelTextColor: text2,\n },\n Descriptions: {\n thColor: fill,\n borderColor: separator,\n thTextColor: text3,\n tdColor: 'transparent',\n },\n Progress: { railColor: fill, fillColor: acc },\n Breadcrumb: { itemTextColor: text3, itemTextColorActive: text1, separatorColor: text4 },\n Slider: {\n fillColor: acc,\n fillColorHover: acc,\n railColor: fillStrong,\n railColorHover: fillStrong,\n dotBorderActive: `2px solid ${acc}`,\n },\n Steps: {\n indicatorColorProcess: acc,\n indicatorTextColorProcess: onAcc,\n indicatorBorderColorProcess: acc,\n indicatorColorFinish: 'transparent',\n indicatorBorderColorFinish: border,\n indicatorTextColorFinish: text2,\n splitorColorFinish: text3,\n splitorColorProcess: separator,\n splitorColorWait: separator,\n },\n Empty: { textColor: text3, iconColor: text4 },\n Divider: { color: separator },\n Timeline: { circleBorder: `2px solid ${border}`, titleFontWeight: '500', lineColor: separator },\n Badge: { color: v('--badge-bg') },\n Scrollbar: { color: fillStrong, colorHover: border },\n Code: { textColor: text1 },\n }\n}\n"],"names":["v","name","semantic","base","hover","mix","buildThemeOverrides","opts","dark","a","deriveAccentTokens","signal","acc","onAcc","pressed","activeFg","linkFg","ring","ok","warn","err","info","text1","text2","text3","text4","border","separator","hairline","hairlineStrong","glassStrong","fill","fillStrong","hoverBg","pressedBg","input","inputDisabled","cardSolid","elevated","segTrack","segThumb","shadow1","shadow2","shadow3","thBg","thBgHover","tdBgHover","radius","selection","checkbox","rgba"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 读 JWT payload 里的字符串声明(不验签:只用来在前端识别「当前会话」,真正的鉴权在后端)。
3
+ * 后端的声明名是未映射的短名(`sub` / `sid` / `sadm` / `unique_name`)。
4
+ * 令牌缺失、不是 JWT、payload 不是合法 JSON 都返回 undefined,不抛错 ——
5
+ * 访问令牌在内存里(Cookie 会话模式也是,只有刷新令牌进 HttpOnly Cookie),但 F5 后要等静默刷新完成才回来,
6
+ * 调用方要有「读不到」的回退。
7
+ */
8
+ export declare function jwtClaim(token: string | null | undefined, name: string): string | undefined;
@@ -0,0 +1,14 @@
1
+ function d(e, a) {
2
+ const t = e == null ? void 0 : e.split(".")[1];
3
+ if (t)
4
+ try {
5
+ const c = t.replaceAll("-", "+").replaceAll("_", "/").padEnd(Math.ceil(t.length / 4) * 4, "="), l = Uint8Array.from(atob(c), (o) => o.charCodeAt(0)), r = JSON.parse(new TextDecoder().decode(l))[a];
6
+ return typeof r == "string" ? r : void 0;
7
+ } catch {
8
+ return;
9
+ }
10
+ }
11
+ export {
12
+ d as jwtClaim
13
+ };
14
+ //# sourceMappingURL=jwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.js","sources":["../../src/utils/jwt.ts"],"sourcesContent":["/**\n * 读 JWT payload 里的字符串声明(不验签:只用来在前端识别「当前会话」,真正的鉴权在后端)。\n * 后端的声明名是未映射的短名(`sub` / `sid` / `sadm` / `unique_name`)。\n * 令牌缺失、不是 JWT、payload 不是合法 JSON 都返回 undefined,不抛错 ——\n * 访问令牌在内存里(Cookie 会话模式也是,只有刷新令牌进 HttpOnly Cookie),但 F5 后要等静默刷新完成才回来,\n * 调用方要有「读不到」的回退。\n */\nexport function jwtClaim(token: string | null | undefined, name: string): string | undefined {\n const payload = token?.split('.')[1]\n if (!payload) return undefined\n try {\n const base64 = payload\n .replaceAll('-', '+')\n .replaceAll('_', '/')\n .padEnd(Math.ceil(payload.length / 4) * 4, '=')\n // atob 给的是 Latin-1 字节串,要按 UTF-8 解码才不会把中文声明读成乱码\n const bytes = Uint8Array.from(atob(base64), c => c.charCodeAt(0))\n const value = (JSON.parse(new TextDecoder().decode(bytes)) as Record<string, unknown>)[name]\n return typeof value === 'string' ? value : undefined\n } catch {\n return undefined\n }\n}\n"],"names":["jwtClaim","token","name","payload","base64","bytes","c","value"],"mappings":"AAOO,SAASA,EAASC,GAAkCC,GAAkC;AAC3F,QAAMC,IAAUF,KAAA,gBAAAA,EAAO,MAAM,KAAK;AAClC,MAAKE;AACL,QAAI;AACF,YAAMC,IAASD,EACZ,WAAW,KAAK,GAAG,EACnB,WAAW,KAAK,GAAG,EACnB,OAAO,KAAK,KAAKA,EAAQ,SAAS,CAAC,IAAI,GAAG,GAAG,GAE1CE,IAAQ,WAAW,KAAK,KAAKD,CAAM,GAAG,CAAAE,MAAKA,EAAE,WAAW,CAAC,CAAC,GAC1DC,IAAS,KAAK,MAAM,IAAI,YAAA,EAAc,OAAOF,CAAK,CAAC,EAA8BH,CAAI;AAC3F,aAAO,OAAOK,KAAU,WAAWA,IAAQ;AAAA,IAC7C,QAAQ;AACN;AAAA,IACF;AACF;"}
@@ -0,0 +1,2 @@
1
+ /** 去掉名字末尾的 `-duotone` 后缀(如 users 款);其它名字原样返回。 */
2
+ export declare function lineIcon(name: string | undefined | null): string | undefined;
@@ -0,0 +1,8 @@
1
+ function n(e) {
2
+ if (e)
3
+ return e.replace(/-duotone$/, "");
4
+ }
5
+ export {
6
+ n as lineIcon
7
+ };
8
+ //# sourceMappingURL=menuIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menuIcon.js","sources":["../../src/utils/menuIcon.ts"],"sourcesContent":["// 菜单 / 页签图标统一成 Phosphor 线条款。\n// 菜单种子(DefaultMenuSeed.cs)与库里配的菜单存的是带 `-duotone` 后缀的名字,而设计定全站线条款\n// (14–18px 的小图标上,淡色填充层会和线条糊在一起)。渲染处去掉后缀,不必改库里的数据:\n// 管理员在菜单管理里配的带该后缀的名字同样生效,换了款式也不用改数据。\n// 只剥 `-duotone`;`-fill` 实心款是设计里保留的点缀(品牌标、状态点),原样放行。\n\n/** 去掉名字末尾的 `-duotone` 后缀(如 users 款);其它名字原样返回。 */\nexport function lineIcon(name: string | undefined | null): string | undefined {\n if (!name) return undefined\n return name.replace(/-duotone$/, '')\n}\n"],"names":["lineIcon","name"],"mappings":"AAOO,SAASA,EAASC,GAAqD;AAC5E,MAAKA;AACL,WAAOA,EAAK,QAAQ,aAAa,EAAE;AACrC;"}