smart-admin-web 10.14.0 → 10.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/README.md +6 -6
  2. package/dist/api/index.d.ts +41 -2
  3. package/dist/api/index.js +36 -15
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/schema.d.ts +418 -6
  6. package/dist/assets/icons/ph-subset.json.js +7 -7
  7. package/dist/assets/smart-logo.svg.js +5 -0
  8. package/dist/assets/smart-logo.svg.js.map +1 -0
  9. package/dist/components/AppIcon.vue.js +9 -9
  10. package/dist/components/AppIcon.vue.js.map +1 -1
  11. package/dist/components/AppWatermark.vue.d.ts +14 -0
  12. package/dist/components/AppWatermark.vue.js +38 -0
  13. package/dist/components/AppWatermark.vue.js.map +1 -0
  14. package/dist/components/AppWatermark2.vue.js +5 -0
  15. package/dist/components/AppWatermark2.vue.js.map +1 -0
  16. package/dist/components/Chart/PieChart.vue.d.ts +1 -1
  17. package/dist/components/Chart/echarts.js +15 -20
  18. package/dist/components/Chart/echarts.js.map +1 -1
  19. package/dist/components/CronEditor/index.vue.js +1 -1
  20. package/dist/components/CronEditor/index2.vue.js +2 -1
  21. package/dist/components/CronEditor/index2.vue.js.map +1 -1
  22. package/dist/components/DetailPage/index.vue.js +2 -2
  23. package/dist/components/DetailPage/index2.vue.js.map +1 -1
  24. package/dist/components/DictTag/index.vue.js.map +1 -1
  25. package/dist/components/ErrorBoundary/index.vue.js +2 -2
  26. package/dist/components/ErrorBoundary/index2.vue.js +1 -1
  27. package/dist/components/ErrorBoundary/index2.vue.js.map +1 -1
  28. package/dist/components/FormContainer/index.vue.js +91 -56
  29. package/dist/components/FormContainer/index.vue.js.map +1 -1
  30. package/dist/components/ImportWizard/index.vue.js +1 -1
  31. package/dist/components/ImportWizard/index2.vue.js +44 -41
  32. package/dist/components/ImportWizard/index2.vue.js.map +1 -1
  33. package/dist/components/MenuSearch.vue.js +2 -2
  34. package/dist/components/MenuSearch2.vue.js +19 -18
  35. package/dist/components/MenuSearch2.vue.js.map +1 -1
  36. package/dist/components/PasswordStrength/index.vue.js +2 -2
  37. package/dist/components/PasswordStrength/index2.vue.js +20 -18
  38. package/dist/components/PasswordStrength/index2.vue.js.map +1 -1
  39. package/dist/components/SmartLogo.vue.d.ts +3 -0
  40. package/dist/components/SmartLogo.vue.js +1 -1
  41. package/dist/components/SmartLogo2.vue.js +22 -64
  42. package/dist/components/SmartLogo2.vue.js.map +1 -1
  43. package/dist/{views/system/config/components/GroupExtraConfig.vue.d.ts → components/TableTotal/index.vue.d.ts} +1 -4
  44. package/dist/components/{SelectTable → TableTotal}/index.vue.js +1 -1
  45. package/dist/components/TableTotal/index2.vue.js +16 -0
  46. package/dist/components/TableTotal/index2.vue.js.map +1 -0
  47. package/dist/components/TableZoomButton/index.vue.js.map +1 -1
  48. package/dist/components/UserPicker/index.vue.js +2 -2
  49. package/dist/components/UserPicker/index2.vue.js +176 -117
  50. package/dist/components/UserPicker/index2.vue.js.map +1 -1
  51. package/dist/composables/useBatchDelete.js.map +1 -1
  52. package/dist/composables/useLayoutMenu.js +17 -16
  53. package/dist/composables/useLayoutMenu.js.map +1 -1
  54. package/dist/composables/useLoginHero.d.ts +2 -0
  55. package/dist/composables/useLoginHero.js +22 -0
  56. package/dist/composables/useLoginHero.js.map +1 -0
  57. package/dist/composables/useModule.js +39 -29
  58. package/dist/composables/useModule.js.map +1 -1
  59. package/dist/composables/usePageTitle.js +16 -14
  60. package/dist/composables/usePageTitle.js.map +1 -1
  61. package/dist/composables/useShellBreakpoint.d.ts +19 -0
  62. package/dist/composables/useShellBreakpoint.js +37 -0
  63. package/dist/composables/useShellBreakpoint.js.map +1 -0
  64. package/dist/composables/useSite.d.ts +20 -0
  65. package/dist/composables/useSite.js +18 -13
  66. package/dist/composables/useSite.js.map +1 -1
  67. package/dist/composables/useTabTitle.js.map +1 -1
  68. package/dist/composables/useTableTitle.d.ts +6 -0
  69. package/dist/composables/useTableTitle.js +11 -0
  70. package/dist/composables/useTableTitle.js.map +1 -0
  71. package/dist/composables/useTableZoom.d.ts +5 -0
  72. package/dist/composables/useTableZoom.js.map +1 -1
  73. package/dist/composables/useTheme.d.ts +2 -2
  74. package/dist/composables/useTheme.js +23 -20
  75. package/dist/composables/useTheme.js.map +1 -1
  76. package/dist/createSmartAdmin.d.ts +12 -2
  77. package/dist/createSmartAdmin.js +72 -60
  78. package/dist/createSmartAdmin.js.map +1 -1
  79. package/dist/index.d.ts +5 -2
  80. package/dist/index.js +223 -208
  81. package/dist/index.js.map +1 -1
  82. package/dist/layouts/AccentPicker.vue.js +8 -0
  83. package/dist/layouts/AccentPicker.vue.js.map +1 -0
  84. package/dist/layouts/AccentPicker2.vue.js +131 -0
  85. package/dist/layouts/AccentPicker2.vue.js.map +1 -0
  86. package/dist/layouts/AppHeader.vue.d.ts +8 -1
  87. package/dist/layouts/AppHeader.vue.js +2 -2
  88. package/dist/layouts/AppHeader2.vue.js +317 -235
  89. package/dist/layouts/AppHeader2.vue.js.map +1 -1
  90. package/dist/layouts/NoticeBell.vue.js +2 -2
  91. package/dist/layouts/NoticeBell2.vue.js +1 -1
  92. package/dist/layouts/NoticeBell2.vue.js.map +1 -1
  93. package/dist/layouts/PersonalLayout.vue.js +2 -2
  94. package/dist/layouts/PersonalLayout2.vue.js +69 -47
  95. package/dist/layouts/PersonalLayout2.vue.js.map +1 -1
  96. package/dist/layouts/SettingsDrawer.vue.js +3 -3
  97. package/dist/layouts/SettingsDrawer2.vue.js +261 -325
  98. package/dist/layouts/SettingsDrawer2.vue.js.map +1 -1
  99. package/dist/layouts/TabsBar.vue.js +2 -2
  100. package/dist/layouts/TabsBar2.vue.js +97 -69
  101. package/dist/layouts/TabsBar2.vue.js.map +1 -1
  102. package/dist/layouts/components/SideNav.vue.d.ts +3 -0
  103. package/dist/layouts/components/SideNav.vue.js +1 -1
  104. package/dist/layouts/components/SideNav2.vue.js +54 -26
  105. package/dist/layouts/components/SideNav2.vue.js.map +1 -1
  106. package/dist/layouts/default.vue.js +1 -1
  107. package/dist/layouts/default2.vue.js +170 -140
  108. package/dist/layouts/default2.vue.js.map +1 -1
  109. package/dist/lib/favicon.d.ts +1 -0
  110. package/dist/lib/favicon.js +12 -0
  111. package/dist/lib/favicon.js.map +1 -0
  112. package/dist/lib/loginHero.d.ts +16 -0
  113. package/dist/lib/loginHero.js +33 -0
  114. package/dist/lib/loginHero.js.map +1 -0
  115. package/dist/lib/logoCrop.d.ts +25 -0
  116. package/dist/lib/logoCrop.js +22 -0
  117. package/dist/lib/logoCrop.js.map +1 -0
  118. package/dist/lib/runtime.d.ts +2 -0
  119. package/dist/lib/runtime.js +1 -1
  120. package/dist/lib/runtime.js.map +1 -1
  121. package/dist/lib/securityRules.d.ts +26 -0
  122. package/dist/lib/securityRules.js +86 -0
  123. package/dist/lib/securityRules.js.map +1 -0
  124. package/dist/lib/watermark.d.ts +110 -0
  125. package/dist/lib/watermark.js +151 -0
  126. package/dist/lib/watermark.js.map +1 -0
  127. package/dist/locales/en-US.d.ts +462 -42
  128. package/dist/locales/en-US.js +491 -78
  129. package/dist/locales/en-US.js.map +1 -1
  130. package/dist/locales/kernelMenuTitles.d.ts +1 -0
  131. package/dist/locales/kernelMenuTitles.js +128 -0
  132. package/dist/locales/kernelMenuTitles.js.map +1 -0
  133. package/dist/locales/menuTitle.d.ts +3 -0
  134. package/dist/locales/menuTitle.js +14 -12
  135. package/dist/locales/menuTitle.js.map +1 -1
  136. package/dist/locales/zh-CN.d.ts +462 -42
  137. package/dist/locales/zh-CN.js +490 -81
  138. package/dist/locales/zh-CN.js.map +1 -1
  139. package/dist/router/index.js +41 -32
  140. package/dist/router/index.js.map +1 -1
  141. package/dist/router/namedPage.d.ts +4 -0
  142. package/dist/router/namedPage.js +7 -7
  143. package/dist/router/namedPage.js.map +1 -1
  144. package/dist/router/viewRegistry.js +12 -12
  145. package/dist/router/viewRegistry.js.map +1 -1
  146. package/dist/stores/app.d.ts +0 -12
  147. package/dist/stores/app.js +11 -12
  148. package/dist/stores/app.js.map +1 -1
  149. package/dist/stores/tabs.js.map +1 -1
  150. package/dist/stores/user.d.ts +10 -0
  151. package/dist/stores/user.js.map +1 -1
  152. package/dist/style.css +1 -1
  153. package/dist/theme/accentTokens.d.ts +27 -0
  154. package/dist/theme/accentTokens.js +54 -0
  155. package/dist/theme/accentTokens.js.map +1 -0
  156. package/dist/theme/accents.d.ts +21 -1
  157. package/dist/theme/accents.js +11 -2
  158. package/dist/theme/accents.js.map +1 -1
  159. package/dist/theme/mix.d.ts +58 -7
  160. package/dist/theme/mix.js +115 -30
  161. package/dist/theme/mix.js.map +1 -1
  162. package/dist/theme/naive-theme.d.ts +5 -2
  163. package/dist/theme/naive-theme.js +405 -75
  164. package/dist/theme/naive-theme.js.map +1 -1
  165. package/dist/utils/jwt.d.ts +8 -0
  166. package/dist/utils/jwt.js +14 -0
  167. package/dist/utils/jwt.js.map +1 -0
  168. package/dist/utils/menuIcon.d.ts +2 -0
  169. package/dist/utils/menuIcon.js +8 -0
  170. package/dist/utils/menuIcon.js.map +1 -0
  171. package/dist/utils/oauthBrand.d.ts +34 -9
  172. package/dist/utils/oauthBrand.js +70 -74
  173. package/dist/utils/oauthBrand.js.map +1 -1
  174. package/dist/utils/tableFilter.d.ts +88 -0
  175. package/dist/utils/tableFilter.js +116 -0
  176. package/dist/utils/tableFilter.js.map +1 -0
  177. package/dist/utils/tableToolbar.d.ts +18 -0
  178. package/dist/utils/tableToolbar.js +11 -0
  179. package/dist/utils/tableToolbar.js.map +1 -0
  180. package/dist/utils/treeFilter.d.ts +20 -0
  181. package/dist/utils/treeFilter.js +24 -0
  182. package/dist/utils/treeFilter.js.map +1 -0
  183. package/dist/views/dashboard/ShortcutPicker.vue.js +1 -1
  184. package/dist/views/dashboard/ShortcutPicker2.vue.js +73 -48
  185. package/dist/views/dashboard/ShortcutPicker2.vue.js.map +1 -1
  186. package/dist/views/dashboard/biz.vue.js +1 -1
  187. package/dist/views/dashboard/biz2.vue.js +310 -257
  188. package/dist/views/dashboard/biz2.vue.js.map +1 -1
  189. package/dist/views/dashboard/workbench.vue.js +2 -2
  190. package/dist/views/dashboard/workbench2.vue.js +141 -155
  191. package/dist/views/dashboard/workbench2.vue.js.map +1 -1
  192. package/dist/views/embed/iframe.vue.js +2 -2
  193. package/dist/views/embed/iframe2.vue.js +22 -15
  194. package/dist/views/embed/iframe2.vue.js.map +1 -1
  195. package/dist/views/error/404.vue.js +2 -2
  196. package/dist/views/error/4042.vue.js +33 -24
  197. package/dist/views/error/4042.vue.js.map +1 -1
  198. package/dist/views/error/BootError.vue.js +1 -1
  199. package/dist/views/error/BootError2.vue.js +59 -48
  200. package/dist/views/error/BootError2.vue.js.map +1 -1
  201. package/dist/views/error/MissingRoute.vue.js +2 -2
  202. package/dist/views/error/MissingRoute2.vue.js +34 -15
  203. package/dist/views/error/MissingRoute2.vue.js.map +1 -1
  204. package/dist/views/login/LoginForm.vue.d.ts +7 -1
  205. package/dist/views/login/LoginForm.vue.js +2 -2
  206. package/dist/views/login/LoginForm2.vue.js +580 -488
  207. package/dist/views/login/LoginForm2.vue.js.map +1 -1
  208. package/dist/views/login/components/LoginDesk.vue.d.ts +36 -0
  209. package/dist/views/login/components/LoginDesk.vue.js +9 -0
  210. package/dist/views/login/components/LoginDesk.vue.js.map +1 -0
  211. package/dist/views/login/components/LoginDesk2.vue.js +100 -0
  212. package/dist/views/login/components/LoginDesk2.vue.js.map +1 -0
  213. package/dist/views/login/components/LoginHeroPanel.vue.d.ts +18 -0
  214. package/dist/views/login/components/LoginHeroPanel.vue.js +8 -0
  215. package/dist/views/login/components/LoginHeroPanel.vue.js.map +1 -0
  216. package/dist/views/login/components/LoginHeroPanel2.vue.js +61 -0
  217. package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -0
  218. package/dist/views/login/index.vue.js +1 -1
  219. package/dist/views/login/index2.vue.js +141 -71
  220. package/dist/views/login/index2.vue.js.map +1 -1
  221. package/dist/views/login/layout.d.ts +11 -0
  222. package/dist/views/login/layout.js +27 -0
  223. package/dist/views/login/layout.js.map +1 -0
  224. package/dist/views/mfa/index.vue.js +2 -2
  225. package/dist/views/mfa/index2.vue.js +367 -321
  226. package/dist/views/mfa/index2.vue.js.map +1 -1
  227. package/dist/views/module/index.vue.js +2 -2
  228. package/dist/views/module/index2.vue.js +132 -99
  229. package/dist/views/module/index2.vue.js.map +1 -1
  230. package/dist/views/oauth/callback.vue.js +2 -2
  231. package/dist/views/oauth/callback2.vue.js +65 -51
  232. package/dist/views/oauth/callback2.vue.js.map +1 -1
  233. package/dist/views/personal/bindings.vue.js +2 -2
  234. package/dist/views/personal/bindings2.vue.js +98 -94
  235. package/dist/views/personal/bindings2.vue.js.map +1 -1
  236. package/dist/views/personal/notice2.vue.js +103 -76
  237. package/dist/views/personal/notice2.vue.js.map +1 -1
  238. package/dist/views/personal/password2.vue.js +47 -40
  239. package/dist/views/personal/password2.vue.js.map +1 -1
  240. package/dist/views/personal/profile.vue.js +3 -3
  241. package/dist/views/personal/profile2.vue.js +24 -18
  242. package/dist/views/personal/profile2.vue.js.map +1 -1
  243. package/dist/views/personal/security.vue.js +2 -2
  244. package/dist/views/personal/security2.vue.js +65 -53
  245. package/dist/views/personal/security2.vue.js.map +1 -1
  246. package/dist/views/personal/sessions.vue.js +2 -2
  247. package/dist/views/personal/sessions2.vue.js +67 -62
  248. package/dist/views/personal/sessions2.vue.js.map +1 -1
  249. package/dist/views/system/ai-model/components/ProviderCard.vue.js +2 -2
  250. package/dist/views/system/ai-model/components/ProviderCard2.vue.js +142 -130
  251. package/dist/views/system/ai-model/components/ProviderCard2.vue.js.map +1 -1
  252. package/dist/views/system/ai-model/components/ProviderForm.vue.js +2 -2
  253. package/dist/views/system/ai-model/components/ProviderForm2.vue.js +71 -70
  254. package/dist/views/system/ai-model/components/ProviderForm2.vue.js.map +1 -1
  255. package/dist/views/system/ai-model/index.vue.js +2 -2
  256. package/dist/views/system/ai-model/index2.vue.js +99 -99
  257. package/dist/views/system/ai-model/index2.vue.js.map +1 -1
  258. package/dist/views/system/ai-model/presets.d.ts +1 -1
  259. package/dist/views/system/ai-model/presets.js +18 -18
  260. package/dist/views/system/ai-model/presets.js.map +1 -1
  261. package/dist/views/system/ai-usage/index.vue.js +2 -2
  262. package/dist/views/system/ai-usage/index2.vue.js +356 -258
  263. package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
  264. package/dist/views/system/api-docs/index.vue.js +5 -2
  265. package/dist/views/system/api-docs/index.vue.js.map +1 -1
  266. package/dist/views/system/api-docs/index2.vue.js +92 -42
  267. package/dist/views/system/api-docs/index2.vue.js.map +1 -1
  268. package/dist/views/system/cache/index.vue.js +2 -2
  269. package/dist/views/system/cache/index2.vue.js +74 -80
  270. package/dist/views/system/cache/index2.vue.js.map +1 -1
  271. package/dist/views/system/config/components/AdminMock.vue.js +8 -0
  272. package/dist/views/system/config/components/AdminMock.vue.js.map +1 -0
  273. package/dist/views/system/config/components/AdminMock2.vue.js +93 -0
  274. package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -0
  275. package/dist/views/system/config/components/AdvancedSection.vue.js +8 -0
  276. package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -0
  277. package/dist/views/system/config/components/AdvancedSection2.vue.js +163 -0
  278. package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -0
  279. package/dist/views/system/config/components/BrandSection.vue.d.ts +7 -0
  280. package/dist/views/system/config/components/BrandSection.vue.js +8 -0
  281. package/dist/views/system/config/components/BrandSection.vue.js.map +1 -0
  282. package/dist/views/system/config/components/BrandSection2.vue.js +266 -0
  283. package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -0
  284. package/dist/views/system/config/components/CfgGroup.vue.d.ts +18 -0
  285. package/dist/views/system/config/components/CfgGroup.vue.js +8 -0
  286. package/dist/views/system/config/components/CfgGroup.vue.js.map +1 -0
  287. package/dist/views/system/config/components/CfgGroup2.vue.js +22 -0
  288. package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -0
  289. package/dist/views/system/config/components/CfgRow.vue.d.ts +26 -0
  290. package/dist/views/system/config/components/CfgRow.vue.js +9 -0
  291. package/dist/views/system/config/components/CfgRow.vue.js.map +1 -0
  292. package/dist/views/system/config/components/CfgRow2.vue.js +54 -0
  293. package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -0
  294. package/dist/views/system/config/components/CfgSegment.vue.d.ts +28 -0
  295. package/dist/views/system/config/components/CfgSegment.vue.js +8 -0
  296. package/dist/views/system/config/components/CfgSegment.vue.js.map +1 -0
  297. package/dist/views/system/config/components/CfgSegment2.vue.js +45 -0
  298. package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -0
  299. package/dist/views/system/config/components/ConfigFormModal.vue.js +4 -1
  300. package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -1
  301. package/dist/views/system/config/components/ConfigFormModal2.vue.js +72 -60
  302. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
  303. package/dist/views/system/config/components/JobSection.vue.js +8 -0
  304. package/dist/views/system/config/components/JobSection.vue.js.map +1 -0
  305. package/dist/views/system/config/components/JobSection2.vue.js +140 -0
  306. package/dist/views/system/config/components/JobSection2.vue.js.map +1 -0
  307. package/dist/views/system/config/components/LoginMock.vue.d.ts +8 -0
  308. package/dist/views/system/config/components/LoginMock.vue.js +8 -0
  309. package/dist/views/system/config/components/LoginMock.vue.js.map +1 -0
  310. package/dist/views/system/config/components/LoginMock2.vue.js +132 -0
  311. package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -0
  312. package/dist/views/system/config/components/LogoCropper.vue.d.ts +10 -0
  313. package/dist/views/system/config/components/LogoCropper.vue.js +8 -0
  314. package/dist/views/system/config/components/LogoCropper.vue.js.map +1 -0
  315. package/dist/views/system/config/components/LogoCropper2.vue.js +122 -0
  316. package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -0
  317. package/dist/views/system/config/components/LogoEditor.vue.js +8 -0
  318. package/dist/views/system/config/components/LogoEditor.vue.js.map +1 -0
  319. package/dist/views/system/config/components/LogoEditor2.vue.js +161 -0
  320. package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -0
  321. package/dist/views/system/config/components/ProviderSheet.vue.d.ts +17 -0
  322. package/dist/views/system/config/components/ProviderSheet.vue.js +8 -0
  323. package/dist/views/system/config/components/ProviderSheet.vue.js.map +1 -0
  324. package/dist/views/system/config/components/ProviderSheet2.vue.js +343 -0
  325. package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -0
  326. package/dist/{layouts/SettingRow.vue.d.ts → views/system/config/components/ScaleToFit.vue.d.ts} +2 -1
  327. package/dist/views/system/config/components/ScaleToFit.vue.js +8 -0
  328. package/dist/views/system/config/components/ScaleToFit.vue.js.map +1 -0
  329. package/dist/views/system/config/components/ScaleToFit2.vue.js +41 -0
  330. package/dist/views/system/config/components/ScaleToFit2.vue.js.map +1 -0
  331. package/dist/views/system/config/components/SectionLayout.vue.d.ts +30 -0
  332. package/dist/views/system/config/components/SectionLayout.vue.js +8 -0
  333. package/dist/views/system/config/components/SectionLayout.vue.js.map +1 -0
  334. package/dist/views/system/config/components/SectionLayout2.vue.js +69 -0
  335. package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -0
  336. package/dist/views/system/config/components/SecuritySection.vue.js +8 -0
  337. package/dist/views/system/config/components/SecuritySection.vue.js.map +1 -0
  338. package/dist/views/system/config/components/SecuritySection2.vue.js +417 -0
  339. package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -0
  340. package/dist/views/system/config/components/SensitiveSection.vue.js +8 -0
  341. package/dist/views/system/config/components/SensitiveSection.vue.js.map +1 -0
  342. package/dist/views/system/config/components/SensitiveSection2.vue.js +214 -0
  343. package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -0
  344. package/dist/views/system/config/components/SigninSection.vue.js +8 -0
  345. package/dist/views/system/config/components/SigninSection.vue.js.map +1 -0
  346. package/dist/views/system/config/components/SigninSection2.vue.js +201 -0
  347. package/dist/views/system/config/components/SigninSection2.vue.js.map +1 -0
  348. package/dist/views/system/config/components/UploadSection.vue.js +8 -0
  349. package/dist/views/system/config/components/UploadSection.vue.js.map +1 -0
  350. package/dist/views/system/config/components/UploadSection2.vue.js +176 -0
  351. package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -0
  352. package/dist/views/system/config/components/WatermarkSection.vue.js +8 -0
  353. package/dist/views/system/config/components/WatermarkSection.vue.js.map +1 -0
  354. package/dist/views/system/config/components/WatermarkSection2.vue.js +284 -0
  355. package/dist/views/system/config/components/WatermarkSection2.vue.js.map +1 -0
  356. package/dist/views/system/config/draft.d.ts +148 -0
  357. package/dist/views/system/config/draft.js +170 -0
  358. package/dist/views/system/config/draft.js.map +1 -0
  359. package/dist/views/system/config/flash.d.ts +2 -0
  360. package/dist/views/system/config/flash.js +9 -0
  361. package/dist/views/system/config/flash.js.map +1 -0
  362. package/dist/views/system/config/groups.d.ts +38 -7
  363. package/dist/views/system/config/groups.js +104 -14
  364. package/dist/views/system/config/groups.js.map +1 -1
  365. package/dist/views/system/config/index.vue.js +6 -2
  366. package/dist/views/system/config/index.vue.js.map +1 -1
  367. package/dist/views/system/config/index2.vue.js +201 -111
  368. package/dist/views/system/config/index2.vue.js.map +1 -1
  369. package/dist/views/system/config/layoutMode.d.ts +23 -0
  370. package/dist/views/system/config/layoutMode.js +28 -0
  371. package/dist/views/system/config/layoutMode.js.map +1 -0
  372. package/dist/views/system/config/providerForm.d.ts +33 -0
  373. package/dist/views/system/config/providerForm.js +63 -0
  374. package/dist/views/system/config/providerForm.js.map +1 -0
  375. package/dist/views/system/dict/index.vue.js +2 -2
  376. package/dist/views/system/dict/index2.vue.js +471 -366
  377. package/dist/views/system/dict/index2.vue.js.map +1 -1
  378. package/dist/views/system/file/index2.vue.js +91 -76
  379. package/dist/views/system/file/index2.vue.js.map +1 -1
  380. package/dist/views/system/job/index.vue.js +3 -3
  381. package/dist/views/system/job/index2.vue.js +897 -828
  382. package/dist/views/system/job/index2.vue.js.map +1 -1
  383. package/dist/views/system/job-log/components/AttemptTable.vue.d.ts +8 -0
  384. package/dist/views/system/job-log/components/AttemptTable.vue.js +5 -0
  385. package/dist/views/system/job-log/components/AttemptTable.vue.js.map +1 -0
  386. package/dist/views/system/job-log/components/AttemptTable2.vue.js +54 -0
  387. package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -0
  388. package/dist/views/system/job-log/index.vue.js +2 -2
  389. package/dist/views/system/job-log/index2.vue.js +193 -207
  390. package/dist/views/system/job-log/index2.vue.js.map +1 -1
  391. package/dist/views/system/job-log/runStatus.d.ts +13 -0
  392. package/dist/views/system/job-log/runStatus.js +26 -0
  393. package/dist/views/system/job-log/runStatus.js.map +1 -0
  394. package/dist/views/system/job-monitor/index.vue.js +2 -2
  395. package/dist/views/system/job-monitor/index2.vue.js +172 -180
  396. package/dist/views/system/job-monitor/index2.vue.js.map +1 -1
  397. package/dist/views/system/log/exception/index.vue.js +2 -2
  398. package/dist/views/system/log/exception/index2.vue.js +135 -96
  399. package/dist/views/system/log/exception/index2.vue.js.map +1 -1
  400. package/dist/views/system/log/login/index2.vue.js +62 -41
  401. package/dist/views/system/log/login/index2.vue.js.map +1 -1
  402. package/dist/views/system/log/op/index.vue.js +2 -2
  403. package/dist/views/system/log/op/index2.vue.js +200 -162
  404. package/dist/views/system/log/op/index2.vue.js.map +1 -1
  405. package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
  406. package/dist/views/system/menu/components/ButtonManager2.vue.js +206 -190
  407. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
  408. package/dist/views/system/menu/components/MenuFormModal.vue.js +2 -2
  409. package/dist/views/system/menu/components/MenuFormModal2.vue.js +127 -118
  410. package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -1
  411. package/dist/views/system/menu/index.vue.js +1 -1
  412. package/dist/views/system/menu/index2.vue.js +216 -183
  413. package/dist/views/system/menu/index2.vue.js.map +1 -1
  414. package/dist/views/system/module/index.vue.js +1 -1
  415. package/dist/views/system/module/index2.vue.js +177 -144
  416. package/dist/views/system/module/index2.vue.js.map +1 -1
  417. package/dist/views/system/monitor/index.vue.js +2 -2
  418. package/dist/views/system/monitor/index2.vue.js +134 -149
  419. package/dist/views/system/monitor/index2.vue.js.map +1 -1
  420. package/dist/views/system/notice/index.vue.js +1 -1
  421. package/dist/views/system/notice/index2.vue.js +209 -181
  422. package/dist/views/system/notice/index2.vue.js.map +1 -1
  423. package/dist/views/system/org/index.vue.js +1 -1
  424. package/dist/views/system/org/index2.vue.js +278 -248
  425. package/dist/views/system/org/index2.vue.js.map +1 -1
  426. package/dist/views/system/position/index.vue.js +5 -2
  427. package/dist/views/system/position/index.vue.js.map +1 -1
  428. package/dist/views/system/position/index2.vue.js +128 -92
  429. package/dist/views/system/position/index2.vue.js.map +1 -1
  430. package/dist/views/system/recycle/index.vue.js +2 -2
  431. package/dist/views/system/recycle/index2.vue.js +90 -67
  432. package/dist/views/system/recycle/index2.vue.js.map +1 -1
  433. package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +20 -0
  434. package/dist/views/system/role/components/GrantMenuSheet.vue.js +8 -0
  435. package/dist/views/system/role/components/GrantMenuSheet.vue.js.map +1 -0
  436. package/dist/views/system/role/components/GrantMenuSheet2.vue.js +117 -0
  437. package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -0
  438. package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +6 -4
  439. package/dist/views/system/role/components/GrantMenuTable.vue.js +2 -2
  440. package/dist/views/system/role/components/GrantMenuTable2.vue.js +279 -177
  441. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
  442. package/dist/views/system/role/components/MatchText.vue.d.ts +7 -0
  443. package/dist/views/system/role/components/MatchText.vue.js +8 -0
  444. package/dist/views/system/role/components/MatchText.vue.js.map +1 -0
  445. package/dist/views/system/role/components/MatchText2.vue.js +29 -0
  446. package/dist/views/system/role/components/MatchText2.vue.js.map +1 -0
  447. package/dist/views/system/role/components/grantMenuGroups.d.ts +36 -0
  448. package/dist/views/system/role/components/grantMenuGroups.js +110 -48
  449. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
  450. package/dist/views/system/role/index.vue.js +5 -2
  451. package/dist/views/system/role/index.vue.js.map +1 -1
  452. package/dist/views/system/role/index2.vue.js +181 -165
  453. package/dist/views/system/role/index2.vue.js.map +1 -1
  454. package/dist/views/system/session/index2.vue.js +75 -49
  455. package/dist/views/system/session/index2.vue.js.map +1 -1
  456. package/dist/views/system/user/components/ResetPasswordModal.vue.js +2 -2
  457. package/dist/views/system/user/components/ResetPasswordModal2.vue.js +2 -0
  458. package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -1
  459. package/dist/views/system/user/components/UserFormModal.vue.js +2 -2
  460. package/dist/views/system/user/components/UserFormModal2.vue.js +77 -76
  461. package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -1
  462. package/dist/views/system/user/index.vue.js +2 -2
  463. package/dist/views/system/user/index2.vue.js +362 -275
  464. package/dist/views/system/user/index2.vue.js.map +1 -1
  465. package/package.json +6 -8
  466. package/dist/components/SelectTable/index.vue.d.ts +0 -76
  467. package/dist/components/SelectTable/index2.vue.js +0 -256
  468. package/dist/components/SelectTable/index2.vue.js.map +0 -1
  469. package/dist/composables/useTableRowSort.d.ts +0 -20
  470. package/dist/composables/useTableRowSort.js +0 -59
  471. package/dist/composables/useTableRowSort.js.map +0 -1
  472. package/dist/layouts/LayoutModeCards.vue.js +0 -8
  473. package/dist/layouts/LayoutModeCards.vue.js.map +0 -1
  474. package/dist/layouts/LayoutModeCards2.vue.js +0 -67
  475. package/dist/layouts/LayoutModeCards2.vue.js.map +0 -1
  476. package/dist/layouts/SettingRow.vue.js +0 -8
  477. package/dist/layouts/SettingRow.vue.js.map +0 -1
  478. package/dist/layouts/SettingRow2.vue.js +0 -23
  479. package/dist/layouts/SettingRow2.vue.js.map +0 -1
  480. package/dist/views/login/skins/AuroraGlass.vue.js +0 -8
  481. package/dist/views/login/skins/AuroraGlass.vue.js.map +0 -1
  482. package/dist/views/login/skins/AuroraGlass2.vue.js +0 -80
  483. package/dist/views/login/skins/AuroraGlass2.vue.js.map +0 -1
  484. package/dist/views/login/skins/SplitPanel.vue.js +0 -8
  485. package/dist/views/login/skins/SplitPanel.vue.js.map +0 -1
  486. package/dist/views/login/skins/SplitPanel2.vue.js +0 -85
  487. package/dist/views/login/skins/SplitPanel2.vue.js.map +0 -1
  488. package/dist/views/login/skins/Spotlight.vue.js +0 -8
  489. package/dist/views/login/skins/Spotlight.vue.js.map +0 -1
  490. package/dist/views/login/skins/Spotlight2.vue.js +0 -36
  491. package/dist/views/login/skins/Spotlight2.vue.js.map +0 -1
  492. package/dist/views/login/skins.d.ts +0 -8
  493. package/dist/views/login/skins.js +0 -13
  494. package/dist/views/login/skins.js.map +0 -1
  495. package/dist/views/system/config/components/ExternalAuthConfig.vue.js +0 -8
  496. package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +0 -1
  497. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +0 -218
  498. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +0 -1
  499. package/dist/views/system/config/components/GroupExtraConfig.vue.js +0 -8
  500. package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +0 -1
  501. package/dist/views/system/config/components/GroupExtraConfig2.vue.js +0 -108
  502. package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +0 -1
  503. package/dist/views/system/config/components/HighSensConfig.vue.js +0 -5
  504. package/dist/views/system/config/components/HighSensConfig.vue.js.map +0 -1
  505. package/dist/views/system/config/components/HighSensConfig2.vue.js +0 -134
  506. package/dist/views/system/config/components/HighSensConfig2.vue.js.map +0 -1
  507. package/dist/views/system/config/components/JobConfig.vue.js +0 -5
  508. package/dist/views/system/config/components/JobConfig.vue.js.map +0 -1
  509. package/dist/views/system/config/components/JobConfig2.vue.js +0 -116
  510. package/dist/views/system/config/components/JobConfig2.vue.js.map +0 -1
  511. package/dist/views/system/config/components/OtherConfig.vue.js +0 -5
  512. package/dist/views/system/config/components/OtherConfig.vue.js.map +0 -1
  513. package/dist/views/system/config/components/OtherConfig2.vue.js +0 -121
  514. package/dist/views/system/config/components/OtherConfig2.vue.js.map +0 -1
  515. package/dist/views/system/config/components/SecurityConfig.vue.js +0 -8
  516. package/dist/views/system/config/components/SecurityConfig.vue.js.map +0 -1
  517. package/dist/views/system/config/components/SecurityConfig2.vue.js +0 -456
  518. package/dist/views/system/config/components/SecurityConfig2.vue.js.map +0 -1
  519. package/dist/views/system/config/components/SysBaseConfig.vue.js +0 -5
  520. package/dist/views/system/config/components/SysBaseConfig.vue.js.map +0 -1
  521. package/dist/views/system/config/components/SysBaseConfig2.vue.js +0 -107
  522. package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +0 -1
  523. package/dist/views/system/config/components/UploadConfig.vue.d.ts +0 -3
  524. package/dist/views/system/config/components/UploadConfig.vue.js +0 -5
  525. package/dist/views/system/config/components/UploadConfig.vue.js.map +0 -1
  526. package/dist/views/system/config/components/UploadConfig2.vue.js +0 -135
  527. package/dist/views/system/config/components/UploadConfig2.vue.js.map +0 -1
  528. /package/dist/components/{SelectTable → TableTotal}/index.vue.js.map +0 -0
  529. /package/dist/layouts/{LayoutModeCards.vue.d.ts → AccentPicker.vue.d.ts} +0 -0
  530. /package/dist/views/{login/skins/AuroraGlass.vue.d.ts → system/config/components/AdminMock.vue.d.ts} +0 -0
  531. /package/dist/views/{login/skins/SplitPanel.vue.d.ts → system/config/components/AdvancedSection.vue.d.ts} +0 -0
  532. /package/dist/views/{login/skins/Spotlight.vue.d.ts → system/config/components/JobSection.vue.d.ts} +0 -0
  533. /package/dist/views/system/config/components/{ExternalAuthConfig.vue.d.ts → LogoEditor.vue.d.ts} +0 -0
  534. /package/dist/views/system/config/components/{HighSensConfig.vue.d.ts → SecuritySection.vue.d.ts} +0 -0
  535. /package/dist/views/system/config/components/{JobConfig.vue.d.ts → SensitiveSection.vue.d.ts} +0 -0
  536. /package/dist/views/system/config/components/{OtherConfig.vue.d.ts → SigninSection.vue.d.ts} +0 -0
  537. /package/dist/views/system/config/components/{SecurityConfig.vue.d.ts → UploadSection.vue.d.ts} +0 -0
  538. /package/dist/views/system/config/components/{SysBaseConfig.vue.d.ts → WatermarkSection.vue.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"accents.js","sources":["../../src/theme/accents.ts"],"sourcesContent":["// 6 主色候选(design_handoff §可配置项)。默认 = 第一个青绿 #14B8A6;\n// 靛蓝 #646CFF 保留为可选手项(品牌 Logo 固定品牌色、不随用户换的 accent 变)。\nexport const ACCENTS = ['#14B8A6', '#646CFF', '#7C5CFF', '#0EA5E9', '#EC4899', '#F97316'] as const\n\nexport type Accent = (typeof ACCENTS)[number]\n"],"names":["ACCENTS"],"mappings":"AAEO,MAAMA,IAAU,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS;"}
1
+ {"version":3,"file":"accents.js","sources":["../../src/theme/accents.ts"],"sourcesContent":["import { solid } from './mix'\n\n/**\n * 6 个强调色候选,全部取自 macOS 系统色:\n * 蓝 #0A84FF(默认)、靛蓝 #5856D6、紫 #AF52DE、深青 #30B0C7、墨绿 #30D158、石墨 #8E8E93。\n *\n * **取值标准是原值亮度落在 0.14–0.36**,不是看色相好不好看:这一段 `solid()` 之后色相不跑偏,\n * 而且六个色的主按钮一律深底白字。亮度 > 0.5 的色(薄荷 #63E6E2、亮青 #64D2FF、黄 #FFD60A)\n * 会走 `solid()`「保留原色配深字」的分支,换个强调色主按钮的字色就从白翻成黑,所以一个都不收。\n * 加新候选色前先算 `solid()` 的结果,别只看原始色相。\n *\n * 浅色 / 深色共用同一个值。品牌 Logo 的固定靛蓝不在这里(Logo 不随用户换色)。\n */\nexport const ACCENTS = ['#0A84FF', '#5856D6', '#AF52DE', '#30B0C7', '#30D158', '#8E8E93'] as const\n\nexport type Accent = (typeof ACCENTS)[number]\n\nexport interface AccentMeta {\n color: Accent\n /** 语言包键(settings.accentName.<key>);深青 / 墨绿压暗幅度大,色块里看到的不是 macOS 系统设置里那两个亮色,所以不叫青色 / 绿色。 */\n key: 'blue' | 'indigo' | 'purple' | 'teal' | 'green' | 'graphite'\n /** 色块预览用的颜色 = `solid(color)`:和开关 / 主按钮等实心控件同一套压暗规则,预览才和实际效果对得上。 */\n dot: string\n}\n\n/** 外观面板的色块清单(顺序同 ACCENTS)。`dot` 在定义时预计算。 */\nexport const ACCENT_META: readonly AccentMeta[] = (\n [\n ['#0A84FF', 'blue'],\n ['#5856D6', 'indigo'],\n ['#AF52DE', 'purple'],\n ['#30B0C7', 'teal'],\n ['#30D158', 'green'],\n ['#8E8E93', 'graphite'],\n ] as const\n).map(([color, key]) => ({ color, key, dot: solid(color) }))\n"],"names":["ACCENTS","ACCENT_META","color","key","solid"],"mappings":";AAaO,MAAMA,IAAU,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,GAa3EC,IACX;AAAA,EACE,CAAC,WAAW,MAAM;AAAA,EAClB,CAAC,WAAW,QAAQ;AAAA,EACpB,CAAC,WAAW,QAAQ;AAAA,EACpB,CAAC,WAAW,MAAM;AAAA,EAClB,CAAC,WAAW,OAAO;AAAA,EACnB,CAAC,WAAW,UAAU;AACxB,EACA,IAAI,CAAC,CAACC,GAAOC,CAAG,OAAO,EAAE,OAAAD,GAAO,KAAAC,GAAK,KAAKC,EAAMF,CAAK,IAAI;"}
@@ -1,26 +1,77 @@
1
1
  /** 在 a、b 之间按 t∈[0,1] 线性插值(sRGB 分量)。t=0→a,t=1→b。 */
2
2
  export declare function mix(a: string, b: string, t: number): string;
3
+ /** WCAG 相对亮度(0 黑 … 1 白)。 */
4
+ export declare function luminance(hex: string): number;
5
+ /** WCAG 对比度(1…21)。 */
6
+ export declare function contrast(a: string, b: string): number;
7
+ /**
8
+ * 把强调色当文字用时的可读版:在 bg 上逐步混黑,直到对比度 ≥ 4.5:1,色相不变。
9
+ * 浅色下的链接 / 选中文字 / 侧栏图标用它;深色背景上不要用(混黑只会更糟),深色走「往白提亮」。
10
+ */
11
+ export declare function readable(c: string, bg?: string): string;
12
+ /**
13
+ * 实心控件(主按钮、勾选框、开关、进度条)的底色:亮度 > 0.5 的亮色直接用(配深字),
14
+ * 其余压暗到白字 ≥ 4.5:1。**浅色 / 深色用同一个值**,切换外观模式时强调色不变。
15
+ * 6 个候选色的亮度都落在 0.14–0.36,所以实际都走「压暗」这一支、主按钮一律深底白字。
16
+ */
17
+ export declare function solid(c: string): string;
3
18
  export interface PrimaryRamp {
19
+ /** 实心主色(= `solid(accent)`,明暗同值)。 */
4
20
  primary: string;
5
21
  hover: string;
6
22
  pressed: string;
7
- /** 浅底(选中背景 / 标签底)。 */
23
+ /** 浅底(选中背景 / 标签底)的**实色**版;裸 CSS 里的选中底改用半透明的 `--sel-bg`,这里保留给调用方自取。 */
8
24
  light: string;
25
+ /** 压在 `primary` 上的字色:深底白字,极端情况(亮度 > 0.5)配近黑。 */
26
+ on: string;
9
27
  }
10
28
  /**
11
- * accent → 主色四态(DESIGN.md)。暗色先把 accent 提亮一档,再派生 hover/pressed/light。
29
+ * accent → 主色四态 + 字色。规则:
30
+ * primary = solid(accent);hover 往白提 10%(亮色底改往黑压 8%);pressed 往黑压 12%。
31
+ * 浅色 / 深色同一个值,深色下不对 accent 另做提亮。
12
32
  *
13
- * 派生只在这一处:`naive-theme.ts`(取前三态,喂 Naive overrides)与 `useTheme.ts` 的 `applyPrimaryVars`
14
- * (取四态,写 CSS 变量)都调它。两边各算一份的话,改一处忘另一处 = 裸 CSS 与 Naive 组件主色不同步,
15
- * **而没有任何东西会报错**。
33
+ * 派生只在这一处:`naive-theme.ts`(喂 Naive overrides)与 `accentTokens.ts`(写 CSS 变量)都调它。
34
+ * 两边各算一份的话,改一处忘另一处 = 裸 CSS 与 Naive 组件主色不同步,**而没有任何东西会报错**。
16
35
  *
17
36
  * `darkContainer` 只在暗色下参与 `light`(浅底要往容器色靠,否则在暗底上白得刺眼);亮色下忽略。
18
- * 调用方通常传当前的 `--color-bg-container`。只要前三态的调用方(Naive)不关心 `light`,多算一次 mix 而已。
19
37
  */
20
38
  export declare function derivePrimary(accent: string, dark: boolean, darkContainer?: string): PrimaryRamp;
21
- /** accent → rgba(...,alpha),用于发光 / 渐变。 */
39
+ /** accent → rgba(...,alpha),用于发光 / 渐变 / 选中淡底。 */
22
40
  export declare function rgba(hex: string, alpha: number): string;
23
41
  /** 英雄主按钮渐变(仅登录页 / 欢迎横幅 / 头像)。 */
24
42
  export declare function btnGrad(accent: string): string;
25
43
  /** 英雄按钮发光阴影。 */
26
44
  export declare function glowSh(accent: string): string;
45
+ /** hex → [色相 0–360, 饱和度 0–1, 明度 0–1]。 */
46
+ export declare function hexToHsl(hex: string): [number, number, number];
47
+ export declare function hslToHex(h: number, s: number, l: number): string;
48
+ /** 邻近色位移:色相窄幅旋转 + 提亮 + 轻微降饱和。色场四团光和应用内环境光都用它从强调色推导。 */
49
+ export declare function shift(c: string, dh: number, dl: number, ds: number): string;
50
+ /**
51
+ * 色场四团光相对强调色的位移量 [Δ色相, Δ明度, Δ饱和]。这四组数按默认蓝下的目标色反解得到,
52
+ * 所以默认蓝的观感是定稿的(与目标色逐团差 1–2 个 RGB 单位),换成别的强调色才会有区别。
53
+ * 按色相位移、而不是 mix 向写死的颜色(如 #8B5CF6 / #22D3EE),是为了紫色等强调色不会塌成一片同色(混向固定色时四团里三团同色)。
54
+ */
55
+ export declare const FIELD: ReadonlyArray<readonly [number, number, number]>;
56
+ /**
57
+ * 色场的取色源:近中性的强调色(石墨,饱和度 2%)旋转色相没有意义,转出来还是灰,整屏会变成一块死灰,
58
+ * 退回默认蓝——这也正是 macOS 的行为:石墨只把控件去色,桌面壁纸照旧有颜色。
59
+ * 注意只有色场退回,`--login-accent-2`(登录页主按钮渐变、标语高亮)仍走石墨本色,不然会冒出一个蓝按钮。
60
+ */
61
+ export declare function fieldSrc(c: string): string;
62
+ /** accent → 色场四个色(登录页 `--desk-1..4` 与应用内 `--ambient-1..4` 同源,各自再乘自己的不透明度)。 */
63
+ export declare function fieldOf(c: string): string[];
64
+ /**
65
+ * 数据色相对强调色的 [色相偏移(度), 饱和度偏移]。顺序 = 系列顺序:第 1 个就是强调色本色,
66
+ * 第 2、3 个往两侧拉开最大(折线只有两个系列时要一眼分得开),后面依次外扩。
67
+ * 偏移控制在 ±115° 内,落在蓝 → 青 / 靛 → 紫 / 绿这一带,不会出现红 / 橙:
68
+ * 红橙是状态语义色(危险 / 警告),拿来画「权限点」「在线会话」会让人以为出了问题。
69
+ * 实心主色饱和度很高(默认蓝约 0.9),原样转色相会得到荧光品红 / 荧光绿,和柔和的玻璃界面打架,
70
+ * 所以偏得越远降得越多。
71
+ */
72
+ export declare const CHART_STEPS: ReadonlyArray<readonly [number, number]>;
73
+ /**
74
+ * accent → 6 个图表数据色。和色场同源:石墨(近中性)的强调色转色相没有意义,退回默认蓝(见 fieldSrc)。
75
+ * 基准色取实心主色(明暗同值),再逐个压到对卡片底 ≥ 3:1;`darkCard` 是暗色卡片底色(`--bg-card`)。
76
+ */
77
+ export declare function chartPalette(accent: string, dark: boolean, darkCard?: string): string[];
package/dist/theme/mix.js CHANGED
@@ -1,43 +1,128 @@
1
- function s(r) {
2
- return Math.max(0, Math.min(255, Math.round(r)));
1
+ function M(n) {
2
+ return Math.max(0, Math.min(255, Math.round(n)));
3
3
  }
4
- function F(r) {
5
- let t = r.replace("#", "").trim();
6
- t.length === 3 && (t = t.split("").map((n) => n + n).join(""));
7
- const e = Number.parseInt(t, 16);
8
- return [e >> 16 & 255, e >> 8 & 255, e & 255];
4
+ function F(n) {
5
+ let r = n.replace("#", "").trim();
6
+ r.length === 3 && (r = r.split("").map((t) => t + t).join(""));
7
+ const o = Number.parseInt(r, 16);
8
+ return [o >> 16 & 255, o >> 8 & 255, o & 255];
9
9
  }
10
- function b(r, t, e) {
11
- return "#" + [r, t, e].map((n) => s(n).toString(16).padStart(2, "0")).join("");
10
+ function b(n, r, o) {
11
+ return "#" + [n, r, o].map((t) => M(t).toString(16).padStart(2, "0")).join("");
12
12
  }
13
- function o(r, t, e) {
14
- const [n, i, a] = F(r), [u, p, g] = F(t);
15
- return b(n + (u - n) * e, i + (p - i) * e, a + (g - a) * e);
13
+ function u(n, r, o) {
14
+ const [t, e, c] = F(n), [s, a, i] = F(r);
15
+ return b(t + (s - t) * o, e + (a - e) * o, c + (i - c) * o);
16
16
  }
17
- function f(r, t, e = "#1F2229") {
18
- const n = (t ? o(r, "#FFFFFF", 0.18) : r).toLowerCase();
17
+ function m(n) {
18
+ const [r, o, t] = F(n).map((e) => {
19
+ const c = e / 255;
20
+ return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
21
+ });
22
+ return 0.2126 * r + 0.7152 * o + 0.0722 * t;
23
+ }
24
+ function p(n, r) {
25
+ const o = m(n), t = m(r);
26
+ return (Math.max(o, t) + 0.05) / (Math.min(o, t) + 0.05);
27
+ }
28
+ function d(n, r = "#FFFFFF") {
29
+ let o = 0, t = n;
30
+ for (; p(t, r) < 4.5 && o < 1; )
31
+ o += 0.02, t = u(n, "#000000", o);
32
+ return t;
33
+ }
34
+ function C(n) {
35
+ return m(n) > 0.5 ? n : d(n);
36
+ }
37
+ function $(n, r, o = "#1F2229") {
38
+ const t = C(n).toLowerCase(), e = m(t) > 0.5;
19
39
  return {
20
- primary: n,
21
- hover: o(n, "#FFFFFF", 0.16),
22
- pressed: o(n, "#000000", 0.18),
23
- light: t ? o(n, e, 0.82) : o(n, "#FFFFFF", 0.9)
40
+ primary: t,
41
+ hover: e ? u(t, "#000000", 0.08) : u(t, "#FFFFFF", 0.1),
42
+ pressed: u(t, "#000000", 0.12),
43
+ light: r ? u(t, o, 0.82) : u(t, "#FFFFFF", 0.9),
44
+ on: e ? "#0a0a0b" : "#ffffff"
24
45
  };
25
46
  }
26
- function m(r, t) {
27
- const [e, n, i] = F(r);
28
- return `rgba(${e}, ${n}, ${i}, ${t})`;
47
+ function S(n, r) {
48
+ const [o, t, e] = F(n);
49
+ return `rgba(${o}, ${t}, ${e}, ${r})`;
50
+ }
51
+ function _(n) {
52
+ return `linear-gradient(135deg, ${n} 0%, ${u(n, "#8B5CF6", 0.55)} 55%, ${u(n, "#EC4899", 0.62)} 100%)`;
53
+ }
54
+ function w(n) {
55
+ return `0 6px 20px ${S(n, 0.42)}`;
56
+ }
57
+ function h(n) {
58
+ const [r, o, t] = F(n).map((g) => g / 255), e = Math.max(r, o, t), c = Math.min(r, o, t), s = e - c, a = (e + c) / 2;
59
+ let i = 0, f = 0;
60
+ return s && (f = a > 0.5 ? s / (2 - e - c) : s / (e + c), i = (e === r ? (o - t) / s + (o < t ? 6 : 0) : e === o ? (t - r) / s + 2 : (r - o) / s + 4) * 60), [i, f, a];
61
+ }
62
+ function T(n, r, o) {
63
+ const t = (n % 360 + 360) % 360, e = Math.max(0, Math.min(1, r)), c = Math.max(0, Math.min(1, o)), s = (1 - Math.abs(2 * c - 1)) * e, a = s * (1 - Math.abs(t / 60 % 2 - 1)), i = c - s / 2, f = t < 60 ? [s, a, 0] : t < 120 ? [a, s, 0] : t < 180 ? [0, s, a] : t < 240 ? [0, a, s] : t < 300 ? [a, 0, s] : [s, 0, a];
64
+ return b((f[0] + i) * 255, (f[1] + i) * 255, (f[2] + i) * 255);
65
+ }
66
+ function l(n, r, o, t) {
67
+ const [e, c, s] = h(n);
68
+ return T(e + r, c + t, s + o);
69
+ }
70
+ const A = [
71
+ [0, 0, 0],
72
+ [17, 0.12, -0.05],
73
+ [-11, 0.01, -0.07],
74
+ [35, 0.16, -0.08]
75
+ ], H = "#0A84FF";
76
+ function x(n) {
77
+ return h(n)[1] < 0.12 ? H : n;
78
+ }
79
+ function B(n) {
80
+ const r = x(n);
81
+ return A.map(([o, t, e]) => l(r, o, t, e));
82
+ }
83
+ const y = [
84
+ [0, 0],
85
+ [48, -0.16],
86
+ [-38, -0.14],
87
+ [96, -0.46],
88
+ [-76, -0.3],
89
+ [-112, -0.36]
90
+ ];
91
+ function L(n) {
92
+ const r = (n % 360 + 360) % 360;
93
+ return r >= 345 || r <= 45;
29
94
  }
30
- function c(r) {
31
- return `linear-gradient(135deg, ${r} 0%, ${o(r, "#8B5CF6", 0.55)} 55%, ${o(r, "#EC4899", 0.62)} 100%)`;
95
+ const E = 3;
96
+ function I(n, r, o, t) {
97
+ let e = n;
98
+ for (let c = 0; c < 24 && p(e, r) < o; c++)
99
+ e = l(e, 0, t ? 0.02 : -0.02, 0);
100
+ return e;
32
101
  }
33
- function h(r) {
34
- return `0 6px 20px ${m(r, 0.42)}`;
102
+ function N(n, r, o = "#1b2842") {
103
+ const t = $(x(n), r).primary, e = r ? o : "#FFFFFF", c = h(t)[0];
104
+ return y.map(([s, a]) => {
105
+ const i = L(c + s) ? -s : s;
106
+ return I(l(t, i, 0, a), e, E, r);
107
+ });
35
108
  }
36
109
  export {
37
- c as btnGrad,
38
- f as derivePrimary,
39
- h as glowSh,
40
- o as mix,
41
- m as rgba
110
+ y as CHART_STEPS,
111
+ A as FIELD,
112
+ _ as btnGrad,
113
+ N as chartPalette,
114
+ p as contrast,
115
+ $ as derivePrimary,
116
+ B as fieldOf,
117
+ x as fieldSrc,
118
+ w as glowSh,
119
+ h as hexToHsl,
120
+ T as hslToHex,
121
+ m as luminance,
122
+ u as mix,
123
+ d as readable,
124
+ S as rgba,
125
+ l as shift,
126
+ C as solid
42
127
  };
43
128
  //# sourceMappingURL=mix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mix.js","sources":["../../src/theme/mix.ts"],"sourcesContent":["// 颜色派生规则(DESIGN.md 权威实现)。纯函数,无框架依赖。\n\nfunction clampByte(n: number): number {\n return Math.max(0, Math.min(255, Math.round(n)))\n}\n\nfunction parseHex(hex: string): [number, number, number] {\n let h = hex.replace('#', '').trim()\n if (h.length === 3)\n h = h\n .split('')\n .map(c => c + c)\n .join('')\n const n = Number.parseInt(h, 16)\n return [(n >> 16) & 255, (n >> 8) & 255, n & 255]\n}\n\nfunction toHex(r: number, g: number, b: number): string {\n return '#' + [r, g, b].map(v => clampByte(v).toString(16).padStart(2, '0')).join('')\n}\n\n/** 在 a、b 之间按 t∈[0,1] 线性插值(sRGB 分量)。t=0→a,t=1→b。 */\nexport function mix(a: string, b: string, t: number): string {\n const [ar, ag, ab] = parseHex(a)\n const [br, bg, bb] = parseHex(b)\n return toHex(ar + (br - ar) * t, ag + (bg - ag) * t, ab + (bb - ab) * t)\n}\n\nexport interface PrimaryRamp {\n primary: string\n hover: string\n pressed: string\n /** 浅底(选中背景 / 标签底)。 */\n light: string\n}\n\n/**\n * accent → 主色四态(DESIGN.md)。暗色先把 accent 提亮一档,再派生 hover/pressed/light。\n *\n * 派生只在这一处:`naive-theme.ts`(取前三态,喂 Naive overrides)与 `useTheme.ts` 的 `applyPrimaryVars`\n * (取四态,写 CSS 变量)都调它。两边各算一份的话,改一处忘另一处 = 裸 CSS 与 Naive 组件主色不同步,\n * **而没有任何东西会报错**。\n *\n * `darkContainer` 只在暗色下参与 `light`(浅底要往容器色靠,否则在暗底上白得刺眼);亮色下忽略。\n * 调用方通常传当前的 `--color-bg-container`。只要前三态的调用方(Naive)不关心 `light`,多算一次 mix 而已。\n */\nexport function derivePrimary(\n accent: string,\n dark: boolean,\n darkContainer = '#1F2229',\n): PrimaryRamp {\n // 亮色下 primary 就是 accent 本身(不派生),但**要统一转小写**:其余三个都经 `toHex` 出小写,\n // 而 accent 通常是色板里的大写字面量。不归一的话输出的大小写会随主题变化,任何拿 `===` 直接比的\n // 地方就会得到一个**只在亮色下失败**的不一致。CSS 不区分大小写,归一无副作用\n // (已核实:全仓唯一的 accent `===` 比较在 SettingsDrawer 色板选中态,两边都是原始 accent,不经此函数)。\n const primary = (dark ? mix(accent, '#FFFFFF', 0.18) : accent).toLowerCase()\n return {\n primary,\n hover: mix(primary, '#FFFFFF', 0.16),\n pressed: mix(primary, '#000000', 0.18),\n light: dark ? mix(primary, darkContainer, 0.82) : mix(primary, '#FFFFFF', 0.9),\n }\n}\n\n/** accent → rgba(...,alpha),用于发光 / 渐变。 */\nexport function rgba(hex: string, alpha: number): string {\n const [r, g, b] = parseHex(hex)\n return `rgba(${r}, ${g}, ${b}, ${alpha})`\n}\n\n/** 英雄主按钮渐变(仅登录页 / 欢迎横幅 / 头像)。 */\nexport function btnGrad(accent: string): string {\n return `linear-gradient(135deg, ${accent} 0%, ${mix(accent, '#8B5CF6', 0.55)} 55%, ${mix(accent, '#EC4899', 0.62)} 100%)`\n}\n\n/** 英雄按钮发光阴影。 */\nexport function glowSh(accent: string): string {\n return `0 6px 20px ${rgba(accent, 0.42)}`\n}\n"],"names":["clampByte","n","parseHex","hex","h","c","toHex","g","b","v","mix","a","t","ar","ag","ab","br","bg","bb","derivePrimary","accent","dark","darkContainer","primary","rgba","alpha","r","btnGrad","glowSh"],"mappings":"AAEA,SAASA,EAAUC,GAAmB;AACpC,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAMA,CAAC,CAAC,CAAC;AACjD;AAEA,SAASC,EAASC,GAAuC;AACvD,MAAIC,IAAID,EAAI,QAAQ,KAAK,EAAE,EAAE,KAAA;AAC7B,EAAIC,EAAE,WAAW,MACfA,IAAIA,EACD,MAAM,EAAE,EACR,IAAI,OAAKC,IAAIA,CAAC,EACd,KAAK,EAAE;AACZ,QAAMJ,IAAI,OAAO,SAASG,GAAG,EAAE;AAC/B,SAAO,CAAEH,KAAK,KAAM,KAAMA,KAAK,IAAK,KAAKA,IAAI,GAAG;AAClD;AAEA,SAASK,EAAM,GAAWC,GAAWC,GAAmB;AACtD,SAAO,MAAM,CAAC,GAAGD,GAAGC,CAAC,EAAE,IAAI,OAAKR,EAAUS,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AACrF;AAGO,SAASC,EAAIC,GAAWH,GAAWI,GAAmB;AAC3D,QAAM,CAACC,GAAIC,GAAIC,CAAE,IAAIb,EAASS,CAAC,GACzB,CAACK,GAAIC,GAAIC,CAAE,IAAIhB,EAASM,CAAC;AAC/B,SAAOF,EAAMO,KAAMG,IAAKH,KAAMD,GAAGE,KAAMG,IAAKH,KAAMF,GAAGG,KAAMG,IAAKH,KAAMH,CAAC;AACzE;AAoBO,SAASO,EACdC,GACAC,GACAC,IAAgB,WACH;AAKb,QAAMC,KAAWF,IAAOX,EAAIU,GAAQ,WAAW,IAAI,IAAIA,GAAQ,YAAA;AAC/D,SAAO;AAAA,IACL,SAAAG;AAAA,IACA,OAAOb,EAAIa,GAAS,WAAW,IAAI;AAAA,IACnC,SAASb,EAAIa,GAAS,WAAW,IAAI;AAAA,IACrC,OAAOF,IAAOX,EAAIa,GAASD,GAAe,IAAI,IAAIZ,EAAIa,GAAS,WAAW,GAAG;AAAA,EAAA;AAEjF;AAGO,SAASC,EAAKrB,GAAasB,GAAuB;AACvD,QAAM,CAACC,GAAGnB,GAAGC,CAAC,IAAIN,EAASC,CAAG;AAC9B,SAAO,QAAQuB,CAAC,KAAKnB,CAAC,KAAKC,CAAC,KAAKiB,CAAK;AACxC;AAGO,SAASE,EAAQP,GAAwB;AAC9C,SAAO,2BAA2BA,CAAM,QAAQV,EAAIU,GAAQ,WAAW,IAAI,CAAC,SAASV,EAAIU,GAAQ,WAAW,IAAI,CAAC;AACnH;AAGO,SAASQ,EAAOR,GAAwB;AAC7C,SAAO,cAAcI,EAAKJ,GAAQ,IAAI,CAAC;AACzC;"}
1
+ {"version":3,"file":"mix.js","sources":["../../src/theme/mix.ts"],"sourcesContent":["// 颜色派生规则(DESIGN.md 所述规则的唯一实现)。纯函数,无框架依赖。\n// 改规则时同步改 DESIGN.md,mix.spec.ts 钉着 solid() / fieldOf() 的几组既定输出。\n\nfunction clampByte(n: number): number {\n return Math.max(0, Math.min(255, Math.round(n)))\n}\n\nfunction parseHex(hex: string): [number, number, number] {\n let h = hex.replace('#', '').trim()\n if (h.length === 3)\n h = h\n .split('')\n .map(c => c + c)\n .join('')\n const n = Number.parseInt(h, 16)\n return [(n >> 16) & 255, (n >> 8) & 255, n & 255]\n}\n\nfunction toHex(r: number, g: number, b: number): string {\n return '#' + [r, g, b].map(v => clampByte(v).toString(16).padStart(2, '0')).join('')\n}\n\n/** 在 a、b 之间按 t∈[0,1] 线性插值(sRGB 分量)。t=0→a,t=1→b。 */\nexport function mix(a: string, b: string, t: number): string {\n const [ar, ag, ab] = parseHex(a)\n const [br, bg, bb] = parseHex(b)\n return toHex(ar + (br - ar) * t, ag + (bg - ag) * t, ab + (bb - ab) * t)\n}\n\n/** WCAG 相对亮度(0 黑 … 1 白)。 */\nexport function luminance(hex: string): number {\n const [r, g, b] = parseHex(hex).map(v => {\n const c = v / 255\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4\n }) as [number, number, number]\n return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/** WCAG 对比度(1…21)。 */\nexport function contrast(a: string, b: string): number {\n const x = luminance(a)\n const y = luminance(b)\n return (Math.max(x, y) + 0.05) / (Math.min(x, y) + 0.05)\n}\n\n/**\n * 把强调色当文字用时的可读版:在 bg 上逐步混黑,直到对比度 ≥ 4.5:1,色相不变。\n * 浅色下的链接 / 选中文字 / 侧栏图标用它;深色背景上不要用(混黑只会更糟),深色走「往白提亮」。\n */\nexport function readable(c: string, bg = '#FFFFFF'): string {\n let t = 0\n let r = c\n while (contrast(r, bg) < 4.5 && t < 1) {\n t += 0.02\n r = mix(c, '#000000', t)\n }\n return r\n}\n\n/**\n * 实心控件(主按钮、勾选框、开关、进度条)的底色:亮度 > 0.5 的亮色直接用(配深字),\n * 其余压暗到白字 ≥ 4.5:1。**浅色 / 深色用同一个值**,切换外观模式时强调色不变。\n * 6 个候选色的亮度都落在 0.14–0.36,所以实际都走「压暗」这一支、主按钮一律深底白字。\n */\nexport function solid(c: string): string {\n return luminance(c) > 0.5 ? c : readable(c)\n}\n\nexport interface PrimaryRamp {\n /** 实心主色(= `solid(accent)`,明暗同值)。 */\n primary: string\n hover: string\n pressed: string\n /** 浅底(选中背景 / 标签底)的**实色**版;裸 CSS 里的选中底改用半透明的 `--sel-bg`,这里保留给调用方自取。 */\n light: string\n /** 压在 `primary` 上的字色:深底白字,极端情况(亮度 > 0.5)配近黑。 */\n on: string\n}\n\n/**\n * accent → 主色四态 + 字色。规则:\n * primary = solid(accent);hover 往白提 10%(亮色底改往黑压 8%);pressed 往黑压 12%。\n * 浅色 / 深色同一个值,深色下不对 accent 另做提亮。\n *\n * 派生只在这一处:`naive-theme.ts`(喂 Naive overrides)与 `accentTokens.ts`(写 CSS 变量)都调它。\n * 两边各算一份的话,改一处忘另一处 = 裸 CSS 与 Naive 组件主色不同步,**而没有任何东西会报错**。\n *\n * `darkContainer` 只在暗色下参与 `light`(浅底要往容器色靠,否则在暗底上白得刺眼);亮色下忽略。\n */\nexport function derivePrimary(\n accent: string,\n dark: boolean,\n darkContainer = '#1F2229',\n): PrimaryRamp {\n // 统一转小写:solid() 在亮色分支里原样返回入参,而色板里的 accent 是大写字面量,\n // 其余三态都经 `toHex` 出小写。不归一的话输出的大小写会随强调色变化,\n // 任何拿 `===` 直接比的地方就会得到一个只在某些强调色下失败的不一致。CSS 不区分大小写,归一无副作用。\n const primary = solid(accent).toLowerCase()\n const bright = luminance(primary) > 0.5\n return {\n primary,\n hover: bright ? mix(primary, '#000000', 0.08) : mix(primary, '#FFFFFF', 0.1),\n pressed: mix(primary, '#000000', 0.12),\n light: dark ? mix(primary, darkContainer, 0.82) : mix(primary, '#FFFFFF', 0.9),\n on: bright ? '#0a0a0b' : '#ffffff',\n }\n}\n\n/** accent → rgba(...,alpha),用于发光 / 渐变 / 选中淡底。 */\nexport function rgba(hex: string, alpha: number): string {\n const [r, g, b] = parseHex(hex)\n return `rgba(${r}, ${g}, ${b}, ${alpha})`\n}\n\n/** 英雄主按钮渐变(仅登录页 / 欢迎横幅 / 头像)。 */\nexport function btnGrad(accent: string): string {\n return `linear-gradient(135deg, ${accent} 0%, ${mix(accent, '#8B5CF6', 0.55)} 55%, ${mix(accent, '#EC4899', 0.62)} 100%)`\n}\n\n/** 英雄按钮发光阴影。 */\nexport function glowSh(accent: string): string {\n return `0 6px 20px ${rgba(accent, 0.42)}`\n}\n\n/* ─── HSL 与色场:色场推导要按色相走,混向一个写死的颜色做不到 ─── */\n\n/** hex → [色相 0–360, 饱和度 0–1, 明度 0–1]。 */\nexport function hexToHsl(hex: string): [number, number, number] {\n const [r, g, b] = parseHex(hex).map(v => v / 255) as [number, number, number]\n const mx = Math.max(r, g, b)\n const mn = Math.min(r, g, b)\n const d = mx - mn\n const l = (mx + mn) / 2\n let h = 0\n let s = 0\n if (d) {\n s = l > 0.5 ? d / (2 - mx - mn) : d / (mx + mn)\n h =\n (mx === r ? (g - b) / d + (g < b ? 6 : 0) : mx === g ? (b - r) / d + 2 : (r - g) / d + 4) * 60\n }\n return [h, s, l]\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const hh = ((h % 360) + 360) % 360\n const ss = Math.max(0, Math.min(1, s))\n const ll = Math.max(0, Math.min(1, l))\n const c = (1 - Math.abs(2 * ll - 1)) * ss\n const x = c * (1 - Math.abs(((hh / 60) % 2) - 1))\n const m = ll - c / 2\n const t =\n hh < 60\n ? [c, x, 0]\n : hh < 120\n ? [x, c, 0]\n : hh < 180\n ? [0, c, x]\n : hh < 240\n ? [0, x, c]\n : hh < 300\n ? [x, 0, c]\n : [c, 0, x]\n return toHex((t[0]! + m) * 255, (t[1]! + m) * 255, (t[2]! + m) * 255)\n}\n\n/** 邻近色位移:色相窄幅旋转 + 提亮 + 轻微降饱和。色场四团光和应用内环境光都用它从强调色推导。 */\nexport function shift(c: string, dh: number, dl: number, ds: number): string {\n const [h, s, l] = hexToHsl(c)\n return hslToHex(h + dh, s + ds, l + dl)\n}\n\n/**\n * 色场四团光相对强调色的位移量 [Δ色相, Δ明度, Δ饱和]。这四组数按默认蓝下的目标色反解得到,\n * 所以默认蓝的观感是定稿的(与目标色逐团差 1–2 个 RGB 单位),换成别的强调色才会有区别。\n * 按色相位移、而不是 mix 向写死的颜色(如 #8B5CF6 / #22D3EE),是为了紫色等强调色不会塌成一片同色(混向固定色时四团里三团同色)。\n */\nexport const FIELD: ReadonlyArray<readonly [number, number, number]> = [\n [0, 0, 0],\n [17, 0.12, -0.05],\n [-11, 0.01, -0.07],\n [35, 0.16, -0.08],\n]\n\n/** 色场的默认取色源(默认强调色蓝)。 */\nconst FIELD_FALLBACK = '#0A84FF'\n\n/**\n * 色场的取色源:近中性的强调色(石墨,饱和度 2%)旋转色相没有意义,转出来还是灰,整屏会变成一块死灰,\n * 退回默认蓝——这也正是 macOS 的行为:石墨只把控件去色,桌面壁纸照旧有颜色。\n * 注意只有色场退回,`--login-accent-2`(登录页主按钮渐变、标语高亮)仍走石墨本色,不然会冒出一个蓝按钮。\n */\nexport function fieldSrc(c: string): string {\n return hexToHsl(c)[1] < 0.12 ? FIELD_FALLBACK : c\n}\n\n/** accent → 色场四个色(登录页 `--desk-1..4` 与应用内 `--ambient-1..4` 同源,各自再乘自己的不透明度)。 */\nexport function fieldOf(c: string): string[] {\n const src = fieldSrc(c)\n return FIELD.map(([dh, dl, ds]) => shift(src, dh, dl, ds))\n}\n\n/* ─── 图表数据色:由强调色推导的一组邻近色相 ─── */\n\n/**\n * 数据色相对强调色的 [色相偏移(度), 饱和度偏移]。顺序 = 系列顺序:第 1 个就是强调色本色,\n * 第 2、3 个往两侧拉开最大(折线只有两个系列时要一眼分得开),后面依次外扩。\n * 偏移控制在 ±115° 内,落在蓝 → 青 / 靛 → 紫 / 绿这一带,不会出现红 / 橙:\n * 红橙是状态语义色(危险 / 警告),拿来画「权限点」「在线会话」会让人以为出了问题。\n * 实心主色饱和度很高(默认蓝约 0.9),原样转色相会得到荧光品红 / 荧光绿,和柔和的玻璃界面打架,\n * 所以偏得越远降得越多。\n */\nexport const CHART_STEPS: ReadonlyArray<readonly [number, number]> = [\n [0, 0],\n [48, -0.16],\n [-38, -0.14],\n [96, -0.46],\n [-76, -0.3],\n [-112, -0.36],\n]\n\n/** 色相落在红 / 橙一带(345°–45°):状态语义色的地盘,数据色要避开。 */\nfunction inWarmZone(h: number): boolean {\n const x = ((h % 360) + 360) % 360\n return x >= 345 || x <= 45\n}\n\n/** 图形对象(折线、色块)与相邻底色的对比度下限,WCAG 1.4.11。 */\nconst CHART_MIN_CONTRAST = 3\n\n/** 把 c 的明度往「离底色更远」的方向推,直到对底色对比度 ≥ min(最多推 24 步,够用且保证终止)。 */\nfunction ensureContrast(c: string, bg: string, min: number, lighten: boolean): string {\n let out = c\n for (let i = 0; i < 24 && contrast(out, bg) < min; i++)\n out = shift(out, 0, lighten ? 0.02 : -0.02, 0)\n return out\n}\n\n/**\n * accent → 6 个图表数据色。和色场同源:石墨(近中性)的强调色转色相没有意义,退回默认蓝(见 fieldSrc)。\n * 基准色取实心主色(明暗同值),再逐个压到对卡片底 ≥ 3:1;`darkCard` 是暗色卡片底色(`--bg-card`)。\n */\nexport function chartPalette(accent: string, dark: boolean, darkCard = '#1b2842'): string[] {\n const base = derivePrimary(fieldSrc(accent), dark).primary\n const bg = dark ? darkCard : '#FFFFFF'\n const h0 = hexToHsl(base)[0]\n return CHART_STEPS.map(([dh, ds]) => {\n // 固定偏移在个别强调色下会转进红橙区(墨绿 −112° → 橙棕,靛蓝 +96° → 粉红):落进去就反向取\n const d = inWarmZone(h0 + dh) ? -dh : dh\n return ensureContrast(shift(base, d, 0, ds), bg, CHART_MIN_CONTRAST, dark)\n })\n}\n"],"names":["clampByte","parseHex","hex","h","c","n","toHex","r","g","b","v","mix","a","t","ar","ag","ab","br","bg","bb","luminance","contrast","x","y","readable","solid","derivePrimary","accent","dark","darkContainer","primary","bright","rgba","alpha","btnGrad","glowSh","hexToHsl","mx","mn","d","l","s","hslToHex","hh","ss","ll","m","shift","dh","dl","ds","FIELD","FIELD_FALLBACK","fieldSrc","fieldOf","src","CHART_STEPS","inWarmZone","CHART_MIN_CONTRAST","ensureContrast","min","lighten","out","i","chartPalette","darkCard","base","h0"],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { GlobalThemeOverrides } from 'naive-ui';
2
2
  /**
3
- * tokens.css → Naive UI GlobalThemeOverrides(DESIGN.md 映射表)。
4
- * 主色由 accent 按派生规则算;其余颜色/度量从当前 CSS 变量读取。
3
+ * tokens.css → Naive UI GlobalThemeOverrides(映射关系见 DESIGN.md 映射表)。
4
+ * 强调色相关的值由 accent 按 `accentTokens.ts` 算;其余颜色 / 度量从当前 CSS 变量读取。
5
+ *
6
+ * 度量(中文界面 14px 偏小,整体比 Naive 默认大一档):正文 15px、默认控件高 30px(小 24、迷你 20)、Large 42px 只留给登录页与触屏窄档。
7
+ * 按钮默认款(没写 type 的 NButton,如表格库里的「搜索」「更多」)渲染成与 secondary 同色同无描边,整站只剩一种次按钮。
5
8
  */
6
9
  export declare function buildThemeOverrides(opts: {
7
10
  dark: boolean;