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
@@ -79,10 +79,12 @@ const e = {
79
79
  comfortable: "Comfortable",
80
80
  compact: "Compact",
81
81
  language: "Language",
82
- loginStyle: "Login style",
83
82
  collapse: "Collapse",
84
83
  openMenu: "Open menu",
85
84
  switchModule: "Switch app",
85
+ appearance: "Appearance",
86
+ back: "Back",
87
+ forward: "Forward",
86
88
  logout: "Log out",
87
89
  personalCenter: "Account",
88
90
  clearCache: "Clear cache",
@@ -112,6 +114,17 @@ const e = {
112
114
  auto: "Auto",
113
115
  themeColor: "Theme color",
114
116
  custom: "Custom",
117
+ accentName: {
118
+ blue: "Blue",
119
+ indigo: "Indigo",
120
+ purple: "Purple",
121
+ teal: "Teal",
122
+ green: "Green",
123
+ graphite: "Graphite",
124
+ custom: "Custom color"
125
+ },
126
+ accentDemoButton: "Button",
127
+ accentDemoLink: "Link text",
115
128
  layout: "Layout",
116
129
  layoutVertical: "Vertical",
117
130
  layoutVerticalMix: "Vertical Mix",
@@ -120,6 +133,9 @@ const e = {
120
133
  layoutTopHybridSidebarFirst: "Top Hybrid (Sidebar)",
121
134
  layoutTopHybridHeaderFirst: "Top Hybrid (Header)",
122
135
  interface: "Interface",
136
+ formStyle: "Form style",
137
+ formStyleModal: "Dialog",
138
+ formStyleDrawer: "Drawer",
123
139
  showBreadcrumb: "Breadcrumb",
124
140
  showTabs: "Tabs",
125
141
  fixedHeader: "Fixed header",
@@ -127,19 +143,17 @@ const e = {
127
143
  transitionNone: "None",
128
144
  transitionFade: "Fade",
129
145
  transitionFadeSlide: "Fade slide",
130
- grayscale: "Grayscale",
131
- watermark: "Watermark",
132
- watermarkText: "Watermark text",
133
- watermarkPlaceholder: "Enter watermark text",
134
- formStyle: "Form style",
135
- formStyleModal: "Modal",
136
- formStyleDrawer: "Drawer",
137
146
  resetConfirm: "Reset all settings to default?",
138
147
  copyConfig: "Copy config",
139
148
  configCopied: "Current config copied (paste into DEFAULTS in stores/app.ts to make it the new default)",
140
149
  searchPlaceholder: "Search menu…",
141
150
  searchEmpty: "No matching menu",
142
- searchHint: "↑↓ navigate · ↵ open · Esc close"
151
+ searchHint: "↑↓ navigate · ↵ open · Esc close",
152
+ descBreadcrumb: "Show the page path in the header",
153
+ descTabs: "Keep opened pages and switch between them",
154
+ descFixedHeader: "Pin the header with frosted glass",
155
+ descPageTransition: "Animation when switching pages",
156
+ descCollapse: "Hide the sidebar, more room for content"
143
157
  },
144
158
  tabs: {
145
159
  refresh: "Refresh",
@@ -201,9 +215,9 @@ const e = {
201
215
  ssoDingtalk: "DingTalk",
202
216
  sso: "SSO",
203
217
  ssoComingSoon: "Third-party login coming soon",
204
- skinAurora: "Aurora",
205
- skinSplit: "Split",
206
- skinSpotlight: "Spotlight"
218
+ layoutLabel: "Switch sign-in layout",
219
+ layoutToSolo: "Switch to single column",
220
+ layoutToSplit: "Switch to two columns"
207
221
  },
208
222
  module: {
209
223
  choose: "Choose app",
@@ -228,6 +242,7 @@ const e = {
228
242
  editTitle: "Edit app",
229
243
  deleteConfirm: 'Delete app "{title}"?',
230
244
  disableConfirm: 'Disable app "{title}"? It will disappear from the portal',
245
+ builtinNoDisable: "The built-in app cannot be disabled",
231
246
  saved: "Saved",
232
247
  deleted: "Deleted"
233
248
  },
@@ -286,6 +301,139 @@ const e = {
286
301
  saved: "Saved",
287
302
  deleted: "Deleted"
288
303
  },
304
+ // Translations of the kernel seed menu / app titles (DefaultMenuSeed / DefaultModuleSeed); the title -> key table is locales/kernelMenuTitles.ts
305
+ menuTitle: {
306
+ module: {
307
+ system: "System",
308
+ business: "Business Center"
309
+ },
310
+ catalog: {
311
+ org: "Organization",
312
+ ops: "System Operations",
313
+ schedule: "Job Scheduling",
314
+ audit: "Audit Logs",
315
+ ai: "AI Management"
316
+ },
317
+ page: {
318
+ workbench: "Workbench",
319
+ org: "Organizations",
320
+ position: "Positions",
321
+ user: "Users",
322
+ role: "Roles",
323
+ config: "System Settings",
324
+ dict: "Dictionaries",
325
+ menu: "Menus",
326
+ module: "Modules",
327
+ notice: "Notifications",
328
+ recycle: "Recycle Bin",
329
+ monitor: "Server Monitor",
330
+ cache: "Cache",
331
+ apiDocs: "API Docs",
332
+ job: "Scheduled Jobs",
333
+ jobLog: "Job Runs",
334
+ jobMonitor: "Job Monitor",
335
+ loginLog: "Login Logs",
336
+ opLog: "Operation Logs",
337
+ exceptionLog: "Exception Logs",
338
+ session: "Online Sessions",
339
+ file: "Files",
340
+ aiModel: "AI Models",
341
+ aiUsage: "AI Usage"
342
+ },
343
+ button: {
344
+ orgQuery: "Org - Query",
345
+ orgCreate: "Org - Create",
346
+ orgUpdate: "Org - Update",
347
+ orgDelete: "Org - Delete",
348
+ orgCopy: "Org - Copy",
349
+ positionQuery: "Position - Query",
350
+ positionCreate: "Position - Create",
351
+ positionUpdate: "Position - Update",
352
+ positionDelete: "Position - Delete",
353
+ userQuery: "User - Query",
354
+ userCreate: "User - Create",
355
+ userUpdate: "User - Update",
356
+ userDelete: "User - Delete",
357
+ userResetPassword: "User - Reset Password",
358
+ userToggle: "User - Enable / Disable",
359
+ userImport: "User - Import",
360
+ userExport: "User - Export",
361
+ roleQuery: "Role - Query",
362
+ roleCreate: "Role - Create",
363
+ roleUpdate: "Role - Update",
364
+ roleDelete: "Role - Delete",
365
+ roleGrantMenus: "Role - Grant Menus",
366
+ roleDataScope: "Role - Data Scope",
367
+ roleGrantUsers: "Role - Grant Users",
368
+ ping: "Connectivity Probe",
369
+ configQuery: "Config - Query",
370
+ configCreate: "Config - Create",
371
+ configUpdate: "Config - Update",
372
+ configDelete: "Config - Delete",
373
+ configUploadLogo: "Config - Upload Logo",
374
+ sensitiveQuery: "Sensitive Action - Query",
375
+ sensitiveCreate: "Sensitive Action - Create",
376
+ sensitiveDelete: "Sensitive Action - Delete",
377
+ mfaClear: "MFA - Unbind User Authenticator",
378
+ dictTypeQuery: "Dict Type - Query",
379
+ dictTypeCreate: "Dict Type - Create",
380
+ dictTypeUpdate: "Dict Type - Update",
381
+ dictTypeDelete: "Dict Type - Delete",
382
+ dictItemQuery: "Dict Item - Query",
383
+ dictItemCreate: "Dict Item - Create",
384
+ dictItemUpdate: "Dict Item - Update",
385
+ dictItemDelete: "Dict Item - Delete",
386
+ menuQuery: "Menu - Query",
387
+ menuCreate: "Menu - Create",
388
+ menuUpdate: "Menu - Update",
389
+ menuDelete: "Menu - Delete",
390
+ moduleQuery: "Module - Query",
391
+ moduleCreate: "Module - Create",
392
+ moduleUpdate: "Module - Update",
393
+ moduleDelete: "Module - Delete",
394
+ noticeQuery: "Notice - Query",
395
+ noticePublish: "Notice - Publish",
396
+ noticeDelete: "Notice - Delete",
397
+ recycleQuery: "Recycle Bin - Query",
398
+ recyclePurge: "Recycle Bin - Delete Permanently",
399
+ recycleRestore: "Recycle Bin - Restore",
400
+ monitorQuery: "Server Monitor - Query",
401
+ cacheFlushAuth: "Cache - Clear Permissions",
402
+ cacheFlushDict: "Cache - Clear Dictionaries",
403
+ cacheFlushConfig: "Cache - Clear Configs",
404
+ cacheRebuildPortal: "Cache - Rebuild Portal Menus",
405
+ apiDocsView: "API Docs - View Contract",
406
+ jobQuery: "Job - Query",
407
+ jobCreate: "Job - Create",
408
+ jobUpdate: "Job - Update",
409
+ jobDelete: "Job - Delete",
410
+ jobToggle: "Job - Enable / Disable",
411
+ jobRun: "Job - Run Once",
412
+ jobLogQuery: "Job Run - Query",
413
+ jobLogKill: "Job Run - Terminate",
414
+ jobLogClear: "Job Run - Clear",
415
+ jobMonitorQuery: "Job Monitor - Query",
416
+ loginLogQuery: "Login Log - Query",
417
+ loginLogClear: "Login Log - Clear",
418
+ opLogQuery: "Operation Log - Query",
419
+ opLogClear: "Operation Log - Clear",
420
+ opLogExport: "Operation Log - Export",
421
+ exceptionLogQuery: "Exception Log - Query",
422
+ exceptionLogClear: "Exception Log - Clear",
423
+ sessionQuery: "Online Session - Query",
424
+ sessionKick: "Force Logout",
425
+ fileQuery: "File - Query",
426
+ fileUpload: "File - Upload",
427
+ fileDelete: "File - Delete",
428
+ fileDownload: "File - Download",
429
+ aiProviderQuery: "AI Provider - Query",
430
+ aiProviderCreate: "AI Provider - Create",
431
+ aiProviderUpdate: "AI Provider - Update",
432
+ aiProviderDelete: "AI Provider - Delete",
433
+ aiProviderTest: "AI Provider - Test Connection",
434
+ aiUsageQuery: "AI Usage - Query"
435
+ }
436
+ },
289
437
  iconPicker: {
290
438
  placeholder: "Select icon",
291
439
  title: "Select icon",
@@ -308,9 +456,13 @@ const e = {
308
456
  fixedNone: "Unpin",
309
457
  expand: "Expand",
310
458
  collapse: "Collapse",
459
+ total: "Total {n}",
311
460
  // TableZoomButton (blow a wide table up to the full viewport)
312
461
  zoom: "Zoom in",
313
- zoomExit: "Zoom out"
462
+ zoomExit: "Zoom out",
463
+ // Shown when a search condition is beyond what the backend can express (see utils/tableFilter.ts)
464
+ filterFallback: 'Some search conditions are not supported by the server (one condition per field; a date range needs "on or after" plus "on or before" joined by AND). Searching with the recognizable ones.',
465
+ filterTruncated: "More than 10000 rows: search only covers the first 10000. Use a more specific condition."
314
466
  },
315
467
  workbench: {
316
468
  welcome: "Hello, {name}",
@@ -358,6 +510,8 @@ const e = {
358
510
  passwordHint: "Leave blank to auto-generate one (shown once after creation)",
359
511
  org: "Org",
360
512
  allOrgs: "All",
513
+ // Narrow content area: the org tree moves into a drawer (toolbar button + drawer title)
514
+ orgFilter: "Organization",
361
515
  orgPlaceholder: "Select org (optional)",
362
516
  position: "Position",
363
517
  positionPlaceholder: "Select position (optional)",
@@ -528,113 +682,349 @@ const e = {
528
682
  deleteConfirm: 'Delete config "{name}"?',
529
683
  saved: "Saved",
530
684
  deleted: "Deleted",
531
- groupManagedBy: 'This group belongs to the "{tab}" tab; saved configs appear there',
532
- groupExtra: {
533
- title: "Other configs in this group",
534
- hint: "Configs in this group that the form above does not list. View, edit or delete them here."
535
- },
685
+ keyManagedBy: 'This key is managed by the "{tab}" form. Edit it there after saving.',
686
+ unsaved: "{n} unsaved change(s)",
687
+ unsavedTab: "Unsaved changes",
688
+ discard: "Discard",
689
+ leaveTitle: "Discard unsaved changes?",
690
+ leaveConfirm: "You have unsaved configuration changes. They will be lost if you leave.",
536
691
  tab: {
537
- base: "General",
692
+ brand: "Branding & login",
693
+ signin: "Sign-in methods",
538
694
  security: "Security",
539
- externalAuth: "External login",
540
- upload: "Upload",
695
+ watermark: "Watermark",
696
+ sensitive: "Sensitive actions",
697
+ upload: "Uploads",
541
698
  job: "Scheduled jobs",
542
- other: "Other"
699
+ advanced: "Advanced"
700
+ },
701
+ brand: {
702
+ desc: "How the site looks in the browser tab, the sidebar, the footer and the login page.",
703
+ preview: "Live preview",
704
+ previewAdmin: "Admin",
705
+ previewLogin: "Login",
706
+ groupSite: "Site",
707
+ groupLogin: "Login page",
708
+ copyrightPh: "Leave empty to show the site name",
709
+ copyrightUrlHint: "When set, the footer copyright becomes a link"
710
+ },
711
+ watermark: {
712
+ desc: "Overlaid on every page after sign-in, never on the login page.",
713
+ groupContent: "Content",
714
+ groupStyle: "Style",
715
+ enable: "Enable watermark",
716
+ enableHint: "Overlay faint text on every page so a leaked screenshot can be traced to a person",
717
+ content: "Content",
718
+ contentHint: "Each user sees their own details, in the order below",
719
+ contentEmpty: "Nothing is selected, so no watermark will show",
720
+ field: {
721
+ name: "Name",
722
+ account: "Account",
723
+ org: "Organization",
724
+ phone: "Phone (last 4)",
725
+ time: "Current time",
726
+ text: "Custom text"
727
+ },
728
+ text: "Custom text",
729
+ textHint: 'e.g. "Internal only"; the same for everyone',
730
+ textPlaceholder: "Up to {max} characters",
731
+ timeFormat: "Time format",
732
+ layout: "Layout",
733
+ layoutSingle: "One line",
734
+ layoutMulti: "Multi-line",
735
+ fontSize: "Font size",
736
+ opacity: "Strength",
737
+ opacityHint: "Higher is easier to read the mark, and harder to read the page",
738
+ rotate: "Angle",
739
+ density: "Density",
740
+ sparse: "Loose",
741
+ normal: "Normal",
742
+ dense: "Tight",
743
+ cross: "Staggered",
744
+ crossHint: "Offset alternate rows by half a tile so it is harder to crop out"
745
+ },
746
+ logo: {
747
+ title: "Logo",
748
+ edit: "Change logo",
749
+ upload: "Upload a new image…",
750
+ useUrl: "Use an image URL…",
751
+ remove: "Remove, use the default",
752
+ help: "PNG, JPG or WEBP, cropped square; also the browser tab icon",
753
+ fallback: "Without a logo the built-in one is used. The browser tab icon follows the logo too.",
754
+ badType: "Only PNG, JPG and WEBP images are supported",
755
+ tooLarge: "The image must be at most {mb} MB",
756
+ cropTitle: "Crop new logo",
757
+ cropTip: "Drag or use the arrow keys to reposition; scroll, the slider or +/- to zoom",
758
+ zoom: "Zoom",
759
+ apply: "Set new logo",
760
+ cropFailed: "Cropping failed, try another image",
761
+ badUrl: "Enter an address starting with http:// or https://, or a site path starting with /",
762
+ urlHint: "The image must be publicly readable. A square image works best."
763
+ },
764
+ advanced: {
765
+ desc: "Configs that belong to none of the tabs above, edited as raw key/value rows. Keys the tabs above manage are not listed here."
766
+ },
767
+ preview: {
768
+ minutes: "{n} min",
769
+ hours: "{n} h",
770
+ days: "{n} days",
771
+ off: "(not enabled)",
772
+ sep: ", ",
773
+ expand: "Expand",
774
+ collapse: "Collapse",
775
+ req: {
776
+ upper: "an uppercase letter",
777
+ lower: "a lowercase letter",
778
+ digit: "a digit",
779
+ special: "a special character"
780
+ },
781
+ lock: "After {count} wrong passwords in a row the account is locked for {minutes} min",
782
+ lockOff: "Wrong passwords never lock the account",
783
+ captcha: "Sign-in asks for a captcha ({type})",
784
+ totp: "Users can use an authenticator as a second factor",
785
+ totpSuper: "Users can use an authenticator as a second factor; super admins must",
786
+ smsMfa: "Users with a bound phone verify an SMS code at sign-in",
787
+ password: "Passwords need at least {min} characters and {reqs}",
788
+ passwordMin: "Passwords need at least {min} characters",
789
+ expire: "Passwords must be changed every {days} days",
790
+ noExpire: "Passwords never expire",
791
+ history: "A new password cannot repeat the last {n}",
792
+ historyOff: "A new password may repeat an old one",
793
+ firstChange: "Admin-created accounts must change their password at first sign-in",
794
+ firstChangeOff: "New accounts keep their initial password at first sign-in",
795
+ session: "Access tokens renew every {access}; sign-in lasts up to {refresh}",
796
+ rateLimit: "At most {permit} requests per {seconds} s from one source"
543
797
  },
544
798
  job: {
545
- logRetentionDays: "Log retention days",
799
+ desc: "How long run logs are kept and who hears about failures.",
800
+ preview: "Live preview · effect",
801
+ groupLog: "Run logs",
802
+ groupAlert: "Failure alerts",
803
+ logRetentionDays: "Keep for",
804
+ logRetentionHint: "Older logs are cleaned up daily",
546
805
  alertEmails: "Alert emails",
547
- alertEmailsHint: "Separate multiple emails with commas"
806
+ alertEmailsHint: "Press Enter to add; none means no email",
807
+ previewRetention: "Run logs are kept for {days} days; older ones are cleaned up daily",
808
+ previewKeep: "Keep {days} days",
809
+ previewAxisStart: "{days} days ago",
810
+ previewToday: "Today",
811
+ previewTo: "To",
812
+ previewSubject: "Subject",
813
+ previewSubjectText: "[{site}] Scheduled job failed: Daily report",
814
+ previewBody: 'Job "Daily report" failed at 02:00 after 3 retries.',
815
+ previewError: "database connection timed out (30s)",
816
+ previewNoAlert: "Failed runs send no email; they are only recorded in the run log"
548
817
  },
549
818
  externalAuth: {
550
- hint: "Choose which deployed third-party sign-in methods appear on the login page. Disabled methods are hidden and authorize is rejected. Secrets stay in server appsettings.",
551
- empty: "No external login providers registered (install optional packages or configure OIDC)",
552
- showOnLogin: "On login page",
553
- hidden: "Hidden",
554
- loginVisible: "Show on login page",
555
- summary: "{total} methods · {on} shown on login",
556
- summaryFull: "{total} total · {registered} configured · {on} on login",
557
- reset: "Reset",
558
- notConfigured: "Not configured",
559
- notConfiguredTip: "Not registered on this deployment (package/secrets missing). Cannot show on login.",
819
+ preview: "Live preview · sign-in box",
820
+ previewOther: "Other sign-in options",
821
+ hint: "Which sign-in options appear on the login page. Connection details for each third party are entered in its Settings and stored encrypted.",
822
+ groupLocal: "Local account",
823
+ groupThird: "Third-party",
824
+ password: "Username and password",
825
+ passwordHint: "Always available",
826
+ smsHint: "Sign in with phone number and SMS code",
827
+ state: {
828
+ notInstalled: "Not installed",
829
+ unconfigured: "Not configured",
830
+ configured: "Configured"
831
+ },
832
+ settings: "Settings",
833
+ addOidc: "Add OIDC",
834
+ needPackage: "Install the {pkg} package on the server first",
835
+ codeRegistered: "Registered in code; not configured here",
560
836
  linkByAccount: "Link by account",
837
+ linkByAccountHint: "People with the same account ID are bound to the local account on first sign-in; asks to confirm",
561
838
  linkByAccountConfirmTitle: "Turn on link by account?",
562
- linkByAccountConfirm: "The first time someone signs in with {name}, if their {name} account ID is exactly the same as a local account, the two are bound and they are signed in directly. Super admins, disabled accounts and accounts already bound to {name} are never linked. Make sure both sides are the same people first, e.g. local accounts were synced from {name}."
839
+ linkByAccountConfirm: "The first time someone signs in with {name}, if their {name} account ID is exactly the same as a local account, the two are bound and they are signed in directly. Super admins, disabled accounts and accounts already bound to {name} are never linked. Make sure both sides are the same people first, e.g. local accounts were synced from {name}.",
840
+ field: {
841
+ displayName: "Display name",
842
+ code: "Identifier",
843
+ corpId: "Corp ID",
844
+ agentId: "Agent ID",
845
+ corpSecret: "App secret",
846
+ appKey: "AppKey",
847
+ appSecret: "AppSecret",
848
+ clientId: "Client ID",
849
+ clientSecret: "Client secret",
850
+ appId: "AppId",
851
+ authority: "Authority",
852
+ scopes: "Scopes",
853
+ usePkce: "Use PKCE"
854
+ },
855
+ sheet: {
856
+ title: "{name} sign-in settings",
857
+ addOidc: "Add OIDC",
858
+ oidcHint: "A standard OpenID Connect identity source",
859
+ secretNote: "Secrets are stored encrypted and are not displayed after saving",
860
+ namePlaceholder: "e.g. Company SSO",
861
+ codePlaceholder: "lowercase letters, digits, hyphens",
862
+ codeFixed: "Cannot be changed after saving",
863
+ codeTaken: "This identifier is already in use",
864
+ secretPlaceholder: "Paste the secret",
865
+ secretSet: "set",
866
+ keepSecret: "Leave blank to keep · current {now}",
867
+ secretRetype: "Enter the secret again",
868
+ endpointMoved: "Authority changed: to avoid sending the saved secret to a new address, enter the client secret again.",
869
+ ephemeralKey: "The data-protection master key is temporary, so secrets cannot be saved yet. Configure SmartAdmin:Security:DataProtection:Key and restart.",
870
+ ephemeralTitle: "The master key is temporary; saving is unavailable",
871
+ callback: "Callback URL",
872
+ callbackHint: "Enter this callback URL in the {name} console.",
873
+ idp: "identity provider",
874
+ callbackMissing: "SmartAdmin:ExternalAuth:CallbackBaseUrl is not set in production, so the callback URL cannot be computed.",
875
+ copyFailed: "Copy failed; select it manually",
876
+ test: "Test connection",
877
+ testing: "Testing…",
878
+ saved: "Saved",
879
+ clear: "Clear settings",
880
+ clearTitle: 'Clear the settings for "{name}"?',
881
+ clearConfirm: "After clearing, this sign-in option is unavailable and disappears from the login page. Accounts users have already bound to {name} are not deleted.",
882
+ cleared: "Cleared"
883
+ },
884
+ check: {
885
+ reachable: "Connectivity",
886
+ credentials: "Credentials",
887
+ agent: "AgentId",
888
+ appId: "AppId",
889
+ secret: "AppSecret",
890
+ discovery: "Discovery document",
891
+ issuer: "Issuer match",
892
+ endpoints: "Authorization and token endpoints",
893
+ clientSecret: "Client secret",
894
+ timeout: "Timeout",
895
+ error: "Error"
896
+ },
897
+ checkStatus: {
898
+ ok: "passed",
899
+ failed: "failed",
900
+ skipped: "not verified"
901
+ }
563
902
  },
564
903
  base: {
565
904
  siteTitle: "Site title",
566
- logo: "Logo URL",
567
- siteSubtitle: "Login subtitle",
905
+ siteSubtitle: "Subtitle",
568
906
  copyright: "Copyright",
569
907
  copyrightUrl: "Copyright link"
570
908
  },
909
+ login: {
910
+ language: "Login page language",
911
+ localeZh: "Chinese",
912
+ localeEn: "English",
913
+ showFeatures: "Show feature list",
914
+ headline: "Headline",
915
+ headlinePlaceholder: "Leave empty to use the built-in headline",
916
+ highlight: "Highlight",
917
+ highlightPlaceholder: "Word in the headline to highlight",
918
+ highlightHint: "Word in the headline shown in the accent color",
919
+ features: "Features",
920
+ featuresPlaceholder: "One per line, up to 5",
921
+ featuresHint: "One per line, up to 5",
922
+ highlightMissing: "Not in the headline; it will render as plain text",
923
+ tooManyFeatures: "At most 5 features"
924
+ },
571
925
  security: {
926
+ desc: "Sign-in protection, password rules, session length and rate limits. Takes effect on save.",
927
+ preview: "Rules users will meet",
928
+ groupLogin: "Sign-in protection",
929
+ groupSession: "Session",
930
+ groupRate: "Rate limit",
931
+ zeroNoLock: "0 = never lock",
932
+ zeroNever: "0 = never expires",
933
+ zeroOff: "0 = no limit",
934
+ unit: { times: "times", minutes: "min", days: "days", seconds: "s", chars: "chars" },
935
+ tryLabel: "Try a password",
936
+ tryMin: "At least {n} chars",
937
+ tryPass: "Accepted",
938
+ tryFail: "Rejected",
572
939
  loginLock: {
573
- title: "Login lockout",
574
- maxFailCount: "Max fail count",
575
- lockMinutes: "Lock minutes"
940
+ maxFailCount: "Lock after failures",
941
+ lockMinutes: "Lock duration"
576
942
  },
577
943
  password: {
578
- title: "Password complexity",
944
+ title: "Password",
579
945
  minLength: "Min length",
946
+ mustContain: "Must contain",
947
+ chipUpper: "A-Z",
948
+ chipLower: "a-z",
949
+ chipDigit: "0-9",
950
+ // @ 在 vue-i18n 里是链接语法,要用字面量插值转义
951
+ chipSpecial: "#{'@'}!",
580
952
  requireUpper: "Require uppercase",
581
953
  requireLower: "Require lowercase",
582
954
  requireDigit: "Require digit",
583
955
  requireSpecial: "Require special char",
584
- expireDays: "Password max age (days, 0 = never)",
585
- historyCount: "Password history count (0 = off)"
956
+ expireDays: "Max age",
957
+ historyCount: "No reuse of last",
958
+ forceChangeOnFirstLogin: "Change at first sign-in",
959
+ forceChangeOnFirstLoginHint: "New accounts only; resets still require a change"
586
960
  },
587
961
  session: {
588
- title: "Session lifetime",
589
- accessMinutes: "Access token (min)",
590
- refreshMinutes: "Refresh token (min)"
962
+ accessMinutes: "Access token lifetime",
963
+ refreshMinutes: "Stay signed in up to"
591
964
  },
592
965
  captcha: {
593
- title: "Login captcha",
594
- enabled: "Enable login captcha",
595
- type: "Captcha type",
596
- types: { char: "Characters", path: "Stroke (anti-scrape)", math: "Arithmetic" }
966
+ enabled: "Login captcha",
967
+ type: "Type",
968
+ types: { char: "Characters", path: "Stroke", math: "Arithmetic" }
597
969
  },
598
970
  totp: {
599
- title: "Authenticator (TOTP)",
600
- enabled: "Enable authenticator",
601
- requireForSuperAdmin: "Require authenticator for super admin",
971
+ enabled: "Authenticator (TOTP)",
972
+ requireForSuperAdmin: "Required for super admins",
602
973
  hint: "Toggles like login captcha — takes effect immediately. Per-user “require authenticator” only enforces at sign-in when this is on; users bind under Account security."
603
974
  },
604
975
  sms: {
605
- title: "SMS verification",
606
976
  hint: "The second factor only applies to users with a bound phone; in development, codes are printed to the backend log — production requires a real SMS provider (ISmsSender)."
607
977
  },
608
- mfa: { enabled: "Enable SMS second factor" },
609
- smsLogin: { enabled: "Enable SMS code sign-in" },
978
+ mfa: { enabled: "SMS second factor" },
979
+ smsLogin: { enabled: "SMS code sign-in" },
610
980
  rateLimit: {
611
- title: "Rate limiting",
612
- enabled: "Enable rate limiting",
613
- windowSeconds: "Window (seconds)",
614
- permitPerWindow: "Global requests / window",
615
- authPermitPerWindow: "Auth-endpoint requests / window"
981
+ enabled: "Enabled",
982
+ windowSeconds: "Window",
983
+ permitPerWindow: "Per source, at most",
984
+ authPermitPerWindow: "Sign-in endpoints, at most"
616
985
  },
617
986
  highSens: {
618
- title: "High-sensitivity permissions (custom)",
619
- hint: "Kernel defaults cannot be removed; only consumer custom codes can be added/deleted. Writes require recent reauth.",
620
987
  code: "Permission code",
621
988
  remark: "Remark",
622
- codePh: "e.g. POST:/api/v1/biz/order",
623
- remarkPh: "Optional remark",
989
+ codePh: "e.g. POST:/api/v1/biz/order/refund",
990
+ remarkPh: "Remark (optional)",
624
991
  codeRequired: "Permission code is required"
625
992
  }
626
993
  },
994
+ sensitive: {
995
+ desc: "Users must verify their identity again before calling these endpoints. Built-in ones cannot be removed; add your own business endpoints. Changes apply immediately.",
996
+ preview: "What users see when they call it",
997
+ previewTip: "Click a row to switch",
998
+ previewDoing: "You are about to call",
999
+ method: "Method",
1000
+ path: "Endpoint",
1001
+ builtin: "Built-in",
1002
+ added: "Added, effective now",
1003
+ removed: "Removed, effective now",
1004
+ removeConfirm: 'Remove "{code}"? Calling it will no longer require re-verification.'
1005
+ },
627
1006
  upload: {
628
- title: "Upload limits",
629
- maxSizeMb: "Max size (MB)",
630
- allowedExtensions: "Allowed extensions",
631
- extPlaceholder: "Type an extension, e.g. .jpg",
632
- extTip: "With leading dot, lowercase; empty falls back to server default"
1007
+ desc: "Size and type limits for every upload on the site. Takes effect on save.",
1008
+ preview: "Live preview · upload box",
1009
+ previewDrop: "Click or drop files here",
1010
+ previewLimit: "Accepts {exts}, up to {mb} MB per file",
1011
+ previewDefault: "server default types",
1012
+ groupLimit: "Limits",
1013
+ maxSizeMb: "Max file size",
1014
+ allowedExtensions: "Allowed types",
1015
+ extTip: "Empty = server default",
1016
+ quickAdd: "Quick add",
1017
+ preset: { images: "Images", docs: "Documents", archives: "Archives", clear: "Clear" },
1018
+ fileOk: "OK",
1019
+ fileBadExt: "{ext} not allowed",
1020
+ fileTooBig: "Over {mb} MB",
1021
+ fileDefault: "Per server default"
633
1022
  }
634
1023
  },
635
1024
  // Dict management (master-detail: types on the left, items on the right)
636
1025
  dict: {
637
1026
  title: "Dictionaries",
1027
+ typeTitle: "Dictionary types",
638
1028
  code: "Type code",
639
1029
  name: "Type name",
640
1030
  searchName: "Search name",
@@ -648,7 +1038,7 @@ const e = {
648
1038
  typeSaved: "Saved",
649
1039
  typeDeleted: "Deleted",
650
1040
  itemsOf: 'Items of "{name}"',
651
- selectTypeHint: "Select a dict type on the left to manage its items",
1041
+ selectTypeHint: "Select a dict type above to manage its items",
652
1042
  itemLabel: "Label",
653
1043
  itemValue: "Value",
654
1044
  itemLabelRequired: "Enter a label",
@@ -658,7 +1048,10 @@ const e = {
658
1048
  editItemTitle: "Edit dict item",
659
1049
  itemDeleteConfirm: 'Delete dict item "{label}"?',
660
1050
  itemSaved: "Saved",
661
- itemDeleted: "Deleted"
1051
+ itemDeleted: "Deleted",
1052
+ codeImmutable: "The code cannot be changed after creation",
1053
+ itemsSheetTitle: "Dict items",
1054
+ selectItem: "Select"
662
1055
  },
663
1056
  // Org management (tree table + parent-org tree select)
664
1057
  org: {
@@ -673,6 +1066,7 @@ const e = {
673
1066
  parentPlaceholder: "Select parent (blank = top level)",
674
1067
  nameRequired: "Enter a name",
675
1068
  codePlaceholder: "Leave blank to auto-generate",
1069
+ codeImmutableHint: "The code cannot be changed after creation",
676
1070
  addChild: "Add child",
677
1071
  addTitle: "Add org",
678
1072
  editTitle: "Edit org",
@@ -815,6 +1209,7 @@ const e = {
815
1209
  name: "Name",
816
1210
  sort: "Sort",
817
1211
  codePlaceholder: "Auto-generated if empty",
1212
+ codeImmutableHint: "The code cannot be changed after creation",
818
1213
  nameRequired: "Enter a name",
819
1214
  addTitle: "Add position",
820
1215
  editTitle: "Edit position",
@@ -844,10 +1239,17 @@ const e = {
844
1239
  deleted: "Deleted",
845
1240
  grantMenus: "Grant menus",
846
1241
  grantSaved: "Grants saved",
847
- catalog: "Directory",
848
- menuCol: "Menu",
849
- buttonsCol: "Buttons",
850
1242
  apiOnlyRow: "API only (no page)",
1243
+ grantSearch: "Search directories, pages or buttons",
1244
+ grantSearchClear: "Clear search",
1245
+ grantSelectAll: 'Select all in "{name}"',
1246
+ noButtons: "No button permissions",
1247
+ grantNoMatch: "No matching permissions",
1248
+ grantNoMatchElsewhere: "{count} directory(ies) match in other apps. Switch the app above to view them.",
1249
+ grantNoMenus: "No menus in this app",
1250
+ grantSummary: "Granted {on} / {total}",
1251
+ grantSummarySplit: "{pages} pages · {buttons} buttons",
1252
+ grantUnsaved: "Unsaved changes",
851
1253
  dataScope: "Data scope",
852
1254
  scopeType: "Scope type",
853
1255
  customOrgs: "Custom orgs",
@@ -1030,6 +1432,7 @@ const e = {
1030
1432
  killed: "Kill requested",
1031
1433
  clear: "Clear logs",
1032
1434
  clearTitle: "Clear run logs",
1435
+ clearRange: "Range",
1033
1436
  clearAll: "All records",
1034
1437
  beforeDays: "Older than {n} days",
1035
1438
  clearHint: "Running records are always kept; this is a hard delete and cannot be undone.",
@@ -1118,6 +1521,7 @@ const e = {
1118
1521
  enabled: "Enabled",
1119
1522
  disabled: "Disabled",
1120
1523
  pendingConfigTip: "No API key configured yet — fill it in before saving",
1524
+ pendingConfig: "Pending setup",
1121
1525
  provider: {
1122
1526
  code: "Provider code",
1123
1527
  codePlaceholder: "Unique code, immutable after creation",
@@ -1159,7 +1563,8 @@ const e = {
1159
1563
  defaultTag: "Default",
1160
1564
  atLeastOne: "Keep at least one model",
1161
1565
  duplicateName: "Duplicate model name",
1162
- noDefault: "No default model set"
1566
+ noDefault: "No default model set",
1567
+ defaultUniqueHint: "The default model is unique across all providers: saving a new default here clears the default of any other provider."
1163
1568
  },
1164
1569
  test: {
1165
1570
  action: "Test connection",
@@ -1330,7 +1735,14 @@ const e = {
1330
1735
  csrfInvalid: "Request validation failed; refresh the page and try again",
1331
1736
  reauthRequired: "This action requires re-authentication",
1332
1737
  mfaBindPasswordRequired: "Verify your current password before binding an authenticator",
1333
- apiKeyInvalid: "API key missing or invalid"
1738
+ apiKeyInvalid: "API key missing or invalid",
1739
+ externalAuthTypeNotFound: "Sign-in type does not exist or its package is not installed",
1740
+ externalAuthCodeExists: "This code is already in use",
1741
+ externalAuthCodeInvalid: "Code is invalid or conflicts with a built-in sign-in method",
1742
+ externalAuthFieldMissing: "Required field missing: {field}",
1743
+ externalAuthDataProtectionKeyMissing: "No data-protection master key is configured, so third-party secrets cannot be stored safely. Set SmartAdmin:Security:DataProtection:Key first",
1744
+ externalAuthProviderNotFound: "This sign-in method is not configured",
1745
+ externalAuthEndpointBlocked: "This address is rejected by the outbound-request fence; check the scheme, host and network range"
1334
1746
  },
1335
1747
  perm: {
1336
1748
  denied: "Access denied",
@@ -1499,7 +1911,8 @@ const e = {
1499
1911
  fallbackLink: "Didn't open automatically? Click here",
1500
1912
  copyToken: "Copy my API token",
1501
1913
  copyTokenHint: "In the new tab, click Authentication → Bearer in the top right and paste the token you just copied",
1502
- tokenCopied: "Copied"
1914
+ tokenCopied: "Copied",
1915
+ tokenWarn: "The token is the credential of your current session and acts as your identity. Do not share it with anyone."
1503
1916
  },
1504
1917
  // User import / export: column titles + file names (mirror UserImportProfile / UserExportProfile columns)
1505
1918
  userExport: {