@fecommunity/reactpress-toolkit 3.0.4 → 3.7.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 (527) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +194 -309
  3. package/dist/.source-fingerprint-toolkit +1 -0
  4. package/dist/admin/index.d.ts +2 -0
  5. package/dist/admin/index.js +18 -0
  6. package/dist/admin/permissions.d.ts +5 -0
  7. package/dist/admin/permissions.js +33 -0
  8. package/dist/admin/registry.d.ts +62 -0
  9. package/dist/admin/registry.js +79 -0
  10. package/dist/api/HttpClient.d.ts +2 -2
  11. package/dist/api/HttpClient.js +1 -1
  12. package/dist/api/Smtp.d.ts +17 -0
  13. package/dist/api/Smtp.js +15 -0
  14. package/dist/api/instance.d.ts +1 -1
  15. package/dist/api/instance.js +3 -3
  16. package/dist/app/createReactPressApp.d.ts +8 -0
  17. package/dist/app/createReactPressApp.js +265 -0
  18. package/dist/app/createThemeApp.d.ts +8 -0
  19. package/dist/app/createThemeApp.js +51 -0
  20. package/dist/app/devChunkRecovery.d.ts +2 -0
  21. package/dist/app/devChunkRecovery.js +68 -0
  22. package/dist/app/index.d.ts +39 -0
  23. package/dist/app/index.js +11 -0
  24. package/dist/config/env.js +29 -15
  25. package/dist/config/global.d.ts +7 -1
  26. package/dist/config/global.js +9 -3
  27. package/dist/config/i18n.js +27 -11
  28. package/dist/config/index.d.ts +3 -3
  29. package/dist/config/index.js +6 -5
  30. package/dist/{locales → config/locales}/en.json +31 -3
  31. package/dist/{locales → config/locales}/zh.json +31 -3
  32. package/dist/dev/index.d.ts +3 -0
  33. package/dist/dev/index.js +12 -0
  34. package/dist/dev/portRedirect.d.ts +20 -0
  35. package/dist/dev/portRedirect.js +93 -0
  36. package/dist/dev/vitePortRedirectPlugin.d.ts +24 -0
  37. package/dist/dev/vitePortRedirectPlugin.js +40 -0
  38. package/dist/extension/branding-mods.d.ts +10 -0
  39. package/dist/extension/branding-mods.js +65 -0
  40. package/dist/extension/configuration/defaults.d.ts +3 -0
  41. package/dist/extension/configuration/defaults.js +32 -0
  42. package/dist/extension/configuration/formily.d.ts +10 -0
  43. package/dist/extension/configuration/formily.js +170 -0
  44. package/dist/extension/configuration/index.d.ts +7 -0
  45. package/dist/extension/configuration/index.js +28 -0
  46. package/dist/extension/configuration/paths.d.ts +4 -0
  47. package/dist/extension/configuration/paths.js +50 -0
  48. package/dist/extension/configuration/presets/twentytwentyfive.d.ts +7 -0
  49. package/dist/extension/configuration/presets/twentytwentyfive.js +94 -0
  50. package/dist/extension/configuration/resolve.d.ts +24 -0
  51. package/dist/extension/configuration/resolve.js +98 -0
  52. package/dist/extension/configuration/types.d.ts +68 -0
  53. package/dist/extension/configuration/types.js +3 -0
  54. package/dist/extension/configuration/validate.d.ts +8 -0
  55. package/dist/extension/configuration/validate.js +21 -0
  56. package/dist/extension/index.d.ts +9 -0
  57. package/dist/extension/index.js +35 -0
  58. package/dist/extension/manifest-normalize.d.ts +5 -0
  59. package/dist/extension/manifest-normalize.js +75 -0
  60. package/dist/extension/node.d.ts +2 -0
  61. package/dist/extension/node.js +6 -0
  62. package/dist/extension/presets/twentytwentyfive-appearance.d.ts +10 -0
  63. package/dist/extension/presets/twentytwentyfive-appearance.js +193 -0
  64. package/dist/extension/presets/twentytwentyfive-customizer.d.ts +19 -0
  65. package/dist/extension/presets/twentytwentyfive-customizer.js +199 -0
  66. package/dist/extension/preview.d.ts +46 -0
  67. package/dist/extension/preview.js +92 -0
  68. package/dist/extension/site-notices.d.ts +19 -0
  69. package/dist/extension/site-notices.js +88 -0
  70. package/dist/extension/site-settings.d.ts +37 -0
  71. package/dist/extension/site-settings.js +144 -0
  72. package/dist/extension/theme-admin-locale.d.ts +11 -0
  73. package/dist/extension/theme-admin-locale.io.d.ts +2 -0
  74. package/dist/extension/theme-admin-locale.io.js +54 -0
  75. package/dist/extension/theme-admin-locale.js +81 -0
  76. package/dist/extension/theme.d.ts +89 -0
  77. package/dist/extension/theme.js +93 -0
  78. package/dist/extension/twentytwentyfive-vars.d.ts +7 -0
  79. package/dist/extension/twentytwentyfive-vars.js +100 -0
  80. package/dist/index.d.ts +15 -7
  81. package/dist/index.js +44 -22
  82. package/dist/plugin/admin/index.d.ts +2 -0
  83. package/dist/plugin/admin/index.js +18 -0
  84. package/dist/plugin/admin/permissions.d.ts +5 -0
  85. package/dist/plugin/admin/permissions.js +33 -0
  86. package/dist/plugin/admin/plugin-admin.d.ts +37 -0
  87. package/dist/plugin/admin/plugin-admin.js +41 -0
  88. package/dist/plugin/admin/registry.d.ts +62 -0
  89. package/dist/plugin/admin/registry.js +79 -0
  90. package/dist/plugin/admin/slots.d.ts +36 -0
  91. package/dist/plugin/admin/slots.js +16 -0
  92. package/dist/plugin/client/client.d.ts +14 -0
  93. package/dist/plugin/client/client.js +95 -0
  94. package/dist/plugin/client/index.d.ts +4 -0
  95. package/dist/plugin/client/index.js +11 -0
  96. package/dist/plugin/client/runtime.d.ts +18 -0
  97. package/dist/plugin/client/runtime.js +30 -0
  98. package/dist/plugin/dev/index.d.ts +4 -0
  99. package/dist/plugin/dev/index.js +16 -0
  100. package/dist/plugin/dev/portRedirect.d.ts +26 -0
  101. package/dist/plugin/dev/portRedirect.js +111 -0
  102. package/dist/plugin/dev/vitePortRedirectPlugin.d.ts +24 -0
  103. package/dist/plugin/dev/vitePortRedirectPlugin.js +40 -0
  104. package/dist/plugin/extension/index.d.ts +4 -0
  105. package/dist/plugin/extension/index.js +20 -0
  106. package/dist/plugin/extension/plugin-admin-locale.d.ts +21 -0
  107. package/dist/plugin/extension/plugin-admin-locale.io.d.ts +2 -0
  108. package/dist/plugin/extension/plugin-admin-locale.io.js +54 -0
  109. package/dist/plugin/extension/plugin-admin-locale.js +60 -0
  110. package/dist/plugin/extension/plugin.d.ts +82 -0
  111. package/dist/plugin/extension/plugin.js +146 -0
  112. package/dist/plugin/extension/security.d.ts +7 -0
  113. package/dist/plugin/extension/security.js +74 -0
  114. package/dist/plugin/extension/validate.d.ts +8 -0
  115. package/dist/plugin/extension/validate.js +55 -0
  116. package/dist/plugin/index.d.ts +9 -0
  117. package/dist/plugin/index.js +48 -0
  118. package/dist/plugin/node.d.ts +2 -0
  119. package/dist/plugin/node.js +6 -0
  120. package/dist/plugin/react/client.d.ts +14 -0
  121. package/dist/plugin/react/client.js +95 -0
  122. package/dist/plugin/react/index.d.ts +2 -0
  123. package/dist/plugin/react/index.js +18 -0
  124. package/dist/plugin/react/plugin-admin-ui.d.ts +23 -0
  125. package/dist/plugin/react/plugin-admin-ui.js +38 -0
  126. package/dist/plugin/react/runtime.d.ts +18 -0
  127. package/dist/plugin/react/runtime.js +30 -0
  128. package/dist/plugin/server/hook-reject.d.ts +12 -0
  129. package/dist/plugin/server/hook-reject.js +39 -0
  130. package/dist/plugin/server/index.d.ts +2 -0
  131. package/dist/plugin/server/index.js +18 -0
  132. package/dist/plugin/server/types.d.ts +34 -0
  133. package/dist/plugin/server/types.js +3 -0
  134. package/dist/primitives/AntdStyleTransitionFix.d.ts +2 -0
  135. package/dist/primitives/AntdStyleTransitionFix.js +16 -0
  136. package/dist/primitives/Badge.d.ts +7 -0
  137. package/dist/primitives/Badge.js +9 -0
  138. package/dist/primitives/Button.d.ts +10 -0
  139. package/dist/primitives/Button.js +38 -0
  140. package/dist/primitives/ColorModeToggle.d.ts +8 -0
  141. package/dist/primitives/ColorModeToggle.js +13 -0
  142. package/dist/primitives/IconButton.d.ts +7 -0
  143. package/dist/primitives/IconButton.js +13 -0
  144. package/dist/primitives/ScrollToTarget.d.ts +9 -0
  145. package/dist/primitives/ScrollToTarget.js +48 -0
  146. package/dist/primitives/Separator.d.ts +7 -0
  147. package/dist/primitives/Separator.js +9 -0
  148. package/dist/primitives/Skeleton.d.ts +7 -0
  149. package/dist/primitives/Skeleton.js +9 -0
  150. package/dist/primitives/Slot.d.ts +10 -0
  151. package/dist/primitives/Slot.js +25 -0
  152. package/dist/primitives/Spinner.d.ts +6 -0
  153. package/dist/primitives/Spinner.js +9 -0
  154. package/dist/primitives/animation/ConditionTransition.d.ts +8 -0
  155. package/dist/primitives/animation/ConditionTransition.js +13 -0
  156. package/dist/primitives/animation/ListTrail.d.ts +10 -0
  157. package/dist/primitives/animation/ListTrail.js +14 -0
  158. package/dist/primitives/animation/Opacity.d.ts +3 -0
  159. package/dist/primitives/animation/Opacity.js +10 -0
  160. package/dist/primitives/animation/Spring.d.ts +9 -0
  161. package/dist/primitives/animation/Spring.js +29 -0
  162. package/dist/primitives/animation/index.d.ts +7 -0
  163. package/dist/primitives/animation/index.js +11 -0
  164. package/dist/primitives/cn.d.ts +4 -0
  165. package/dist/primitives/cn.js +7 -0
  166. package/dist/primitives/icons.d.ts +4 -0
  167. package/dist/primitives/icons.js +15 -0
  168. package/dist/primitives/index.d.ts +22 -0
  169. package/dist/primitives/index.js +44 -0
  170. package/dist/react/client.d.ts +14 -0
  171. package/dist/react/client.js +95 -0
  172. package/dist/react/index.d.ts +4 -0
  173. package/dist/react/index.js +11 -0
  174. package/dist/react/runtime.d.ts +18 -0
  175. package/dist/react/runtime.js +30 -0
  176. package/dist/theme/antdDocument.d.ts +18 -0
  177. package/dist/theme/antdDocument.js +59 -0
  178. package/dist/theme/api/api-data.d.ts +2 -0
  179. package/dist/theme/api/api-data.js +8 -0
  180. package/dist/theme/api/api.d.ts +28 -0
  181. package/dist/theme/api/api.js +27 -0
  182. package/dist/theme/api/httpClient.d.ts +24 -0
  183. package/dist/theme/api/httpClient.js +83 -0
  184. package/dist/theme/api/json.d.ts +1 -0
  185. package/dist/theme/api/json.js +5 -0
  186. package/dist/theme/api/jsonp.d.ts +1 -0
  187. package/dist/theme/api/jsonp.js +5 -0
  188. package/dist/theme/api-data.d.ts +12 -0
  189. package/dist/theme/api-data.js +22 -0
  190. package/dist/theme/api.d.ts +28 -0
  191. package/dist/theme/api.js +27 -0
  192. package/dist/theme/appearance.d.ts +4 -0
  193. package/dist/theme/appearance.js +16 -0
  194. package/dist/theme/assets.d.ts +2 -0
  195. package/dist/theme/assets.js +27 -0
  196. package/dist/theme/authSession.d.ts +16 -0
  197. package/dist/theme/authSession.js +92 -0
  198. package/dist/theme/build/antdDocument.d.ts +145 -0
  199. package/dist/theme/build/antdDocument.js +70 -0
  200. package/dist/theme/build/next-config.d.ts +15 -0
  201. package/dist/theme/build/next-config.js +63 -0
  202. package/dist/theme/build/node.d.ts +2 -0
  203. package/dist/theme/build/node.js +6 -0
  204. package/dist/theme/colorMode.d.ts +12 -0
  205. package/dist/theme/colorMode.js +45 -0
  206. package/dist/theme/commentAuthor.d.ts +17 -0
  207. package/dist/theme/commentAuthor.js +48 -0
  208. package/dist/theme/content/archiveSlim.d.ts +7 -0
  209. package/dist/theme/content/archiveSlim.js +38 -0
  210. package/dist/theme/content/articleSlim.d.ts +10 -0
  211. package/dist/theme/content/articleSlim.js +35 -0
  212. package/dist/theme/content/assets.d.ts +8 -0
  213. package/dist/theme/content/assets.js +74 -0
  214. package/dist/theme/content/carouselArticles.d.ts +10 -0
  215. package/dist/theme/content/carouselArticles.js +39 -0
  216. package/dist/theme/content/excerpt.d.ts +15 -0
  217. package/dist/theme/content/excerpt.js +42 -0
  218. package/dist/theme/content/nav.d.ts +10 -0
  219. package/dist/theme/content/nav.js +30 -0
  220. package/dist/theme/content/seo.d.ts +6 -0
  221. package/dist/theme/content/seo.js +12 -0
  222. package/dist/theme/createAntdApp.d.ts +106 -0
  223. package/dist/theme/createAntdApp.js +175 -0
  224. package/dist/theme/createApp.d.ts +10 -0
  225. package/dist/theme/createApp.js +141 -0
  226. package/dist/theme/createCatalogApp.d.ts +108 -0
  227. package/dist/theme/createCatalogApp.js +168 -0
  228. package/dist/theme/customizer.d.ts +1 -0
  229. package/dist/theme/customizer.js +5 -0
  230. package/dist/theme/excerpt.d.ts +16 -0
  231. package/dist/theme/excerpt.js +31 -0
  232. package/dist/theme/extension/branding-mods.d.ts +10 -0
  233. package/dist/theme/extension/branding-mods.js +65 -0
  234. package/dist/theme/extension/configuration/defaults.d.ts +3 -0
  235. package/dist/theme/extension/configuration/defaults.js +32 -0
  236. package/dist/theme/extension/configuration/formily.d.ts +10 -0
  237. package/dist/theme/extension/configuration/formily.js +170 -0
  238. package/dist/theme/extension/configuration/index.d.ts +7 -0
  239. package/dist/theme/extension/configuration/index.js +28 -0
  240. package/dist/theme/extension/configuration/paths.d.ts +1 -0
  241. package/dist/theme/extension/configuration/paths.js +7 -0
  242. package/dist/theme/extension/configuration/presets/twentytwentyfive.d.ts +7 -0
  243. package/dist/theme/extension/configuration/presets/twentytwentyfive.js +94 -0
  244. package/dist/theme/extension/configuration/resolve.d.ts +24 -0
  245. package/dist/theme/extension/configuration/resolve.js +98 -0
  246. package/dist/theme/extension/configuration/types.d.ts +68 -0
  247. package/dist/theme/extension/configuration/types.js +3 -0
  248. package/dist/theme/extension/configuration/validate.d.ts +8 -0
  249. package/dist/theme/extension/configuration/validate.js +21 -0
  250. package/dist/theme/extension/index.d.ts +11 -0
  251. package/dist/theme/extension/index.js +38 -0
  252. package/dist/theme/extension/manifest-normalize.d.ts +5 -0
  253. package/dist/theme/extension/manifest-normalize.js +75 -0
  254. package/dist/theme/extension/presets/twentytwentyfive-appearance.d.ts +10 -0
  255. package/dist/theme/extension/presets/twentytwentyfive-appearance.js +193 -0
  256. package/dist/theme/extension/preview.d.ts +46 -0
  257. package/dist/theme/extension/preview.js +92 -0
  258. package/dist/theme/extension/site-notices.d.ts +19 -0
  259. package/dist/theme/extension/site-notices.js +88 -0
  260. package/dist/theme/extension/site-settings.d.ts +37 -0
  261. package/dist/theme/extension/site-settings.js +144 -0
  262. package/dist/theme/extension/siteNav.d.ts +18 -0
  263. package/dist/theme/extension/siteNav.js +17 -0
  264. package/dist/theme/extension/theme-admin-locale.d.ts +11 -0
  265. package/dist/theme/extension/theme-admin-locale.io.d.ts +2 -0
  266. package/dist/theme/extension/theme-admin-locale.io.js +54 -0
  267. package/dist/theme/extension/theme-admin-locale.js +68 -0
  268. package/dist/theme/extension/theme.d.ts +89 -0
  269. package/dist/theme/extension/theme.js +93 -0
  270. package/dist/theme/extension/twentytwentyfive-vars.d.ts +9 -0
  271. package/dist/theme/extension/twentytwentyfive-vars.js +103 -0
  272. package/dist/theme/fetch.d.ts +134 -0
  273. package/dist/theme/fetch.js +241 -0
  274. package/dist/theme/format.d.ts +16 -0
  275. package/dist/theme/format.js +48 -0
  276. package/dist/theme/httpClient.d.ts +20 -0
  277. package/dist/theme/httpClient.js +89 -0
  278. package/dist/theme/index.d.ts +63 -0
  279. package/dist/theme/index.js +226 -0
  280. package/dist/theme/json.d.ts +1 -0
  281. package/dist/theme/json.js +17 -0
  282. package/dist/theme/jsonp.d.ts +8 -0
  283. package/dist/theme/jsonp.js +27 -0
  284. package/dist/theme/locale.d.ts +23 -0
  285. package/dist/theme/locale.js +55 -0
  286. package/dist/theme/nav.d.ts +10 -0
  287. package/dist/theme/nav.js +30 -0
  288. package/dist/theme/next-config.d.ts +2 -0
  289. package/dist/theme/next-config.js +18 -0
  290. package/dist/theme/node.d.ts +2 -0
  291. package/dist/theme/node.js +18 -0
  292. package/dist/theme/preview/preview-config.d.ts +13 -0
  293. package/dist/theme/preview/preview-config.js +65 -0
  294. package/dist/theme/preview/preview-draft.d.ts +19 -0
  295. package/dist/theme/preview/preview-draft.js +51 -0
  296. package/dist/theme/preview/preview-mods.d.ts +16 -0
  297. package/dist/theme/preview/preview-mods.js +78 -0
  298. package/dist/theme/preview-config.d.ts +13 -0
  299. package/dist/theme/preview-config.js +65 -0
  300. package/dist/theme/preview-draft.d.ts +19 -0
  301. package/dist/theme/preview-draft.js +51 -0
  302. package/dist/theme/preview-mods.d.ts +16 -0
  303. package/dist/theme/preview-mods.js +78 -0
  304. package/dist/theme/providers/index.d.ts +118 -0
  305. package/dist/theme/providers/index.js +251 -0
  306. package/dist/theme/providers/setup.d.ts +124 -0
  307. package/dist/theme/providers/setup.js +29 -0
  308. package/dist/theme/runtime.d.ts +18 -0
  309. package/dist/theme/runtime.js +19 -0
  310. package/dist/theme/seo.d.ts +6 -0
  311. package/dist/theme/seo.js +12 -0
  312. package/dist/theme/server.d.ts +65 -0
  313. package/dist/theme/server.js +177 -0
  314. package/dist/theme/setting.d.ts +12 -0
  315. package/dist/theme/setting.js +42 -0
  316. package/dist/theme/ssr/bootstrap.d.ts +48 -0
  317. package/dist/theme/ssr/bootstrap.js +112 -0
  318. package/dist/theme/ssr/fetch.d.ts +134 -0
  319. package/dist/theme/ssr/fetch.js +264 -0
  320. package/dist/theme/ssr/format.d.ts +3 -0
  321. package/dist/theme/ssr/format.js +8 -0
  322. package/dist/theme/ssr/pageProps.d.ts +62 -0
  323. package/dist/theme/ssr/pageProps.js +138 -0
  324. package/dist/theme/ssr/setting.d.ts +12 -0
  325. package/dist/theme/ssr/setting.js +42 -0
  326. package/dist/theme/ssr/slimBootstrap.d.ts +11 -0
  327. package/dist/theme/ssr/slimBootstrap.js +75 -0
  328. package/dist/theme/ssr/static.d.ts +10 -0
  329. package/dist/theme/ssr/static.js +17 -0
  330. package/dist/theme/ssr/templates.d.ts +35 -0
  331. package/dist/theme/ssr/templates.js +50 -0
  332. package/dist/theme/static.d.ts +10 -0
  333. package/dist/theme/static.js +17 -0
  334. package/dist/theme/templates.d.ts +27 -0
  335. package/dist/theme/templates.js +38 -0
  336. package/dist/theme/ui-optional.d.ts +1 -0
  337. package/dist/theme/ui-optional.js +21 -0
  338. package/dist/theme/visitor/appearance.d.ts +4 -0
  339. package/dist/theme/visitor/appearance.js +16 -0
  340. package/dist/theme/visitor/authSession.d.ts +16 -0
  341. package/dist/theme/visitor/authSession.js +92 -0
  342. package/dist/theme/visitor/colorMode.d.ts +17 -0
  343. package/dist/theme/visitor/colorMode.js +59 -0
  344. package/dist/theme/visitor/commentAuthor.d.ts +16 -0
  345. package/dist/theme/visitor/commentAuthor.js +45 -0
  346. package/dist/theme/visitor/i18n.d.ts +4 -0
  347. package/dist/theme/visitor/i18n.js +28 -0
  348. package/dist/theme/visitor/locale.d.ts +23 -0
  349. package/dist/theme/visitor/locale.js +72 -0
  350. package/dist/theme/visitor/runtime.d.ts +18 -0
  351. package/dist/theme/visitor/runtime.js +19 -0
  352. package/dist/theme/visitor/visitorLocale.d.ts +11 -0
  353. package/dist/theme/visitor/visitorLocale.js +56 -0
  354. package/dist/theme/visitorLocale.d.ts +6 -0
  355. package/dist/theme/visitorLocale.js +39 -0
  356. package/dist/types/index.d.ts +79 -68
  357. package/dist/ui/AntdStyleTransitionFix.d.ts +5 -0
  358. package/dist/ui/AntdStyleTransitionFix.js +16 -0
  359. package/dist/ui/ArchiveEmptyState.d.ts +13 -0
  360. package/dist/ui/ArchiveEmptyState.js +8 -0
  361. package/dist/ui/ArchivePageLayout.d.ts +10 -0
  362. package/dist/ui/ArchivePageLayout.js +8 -0
  363. package/dist/ui/ArticleCard.d.ts +27 -0
  364. package/dist/ui/ArticleCard.js +16 -0
  365. package/dist/ui/ArticleList.d.ts +14 -0
  366. package/dist/ui/ArticleList.js +16 -0
  367. package/dist/ui/BaseGlobalStyles.d.ts +5 -0
  368. package/dist/ui/BaseGlobalStyles.js +18 -0
  369. package/dist/ui/LocaleSwitcher.d.ts +7 -0
  370. package/dist/ui/LocaleSwitcher.js +15 -0
  371. package/dist/ui/NavMenu.d.ts +16 -0
  372. package/dist/ui/NavMenu.js +8 -0
  373. package/dist/ui/NotFoundPanel.d.ts +11 -0
  374. package/dist/ui/NotFoundPanel.js +8 -0
  375. package/dist/ui/PageHeader.d.ts +10 -0
  376. package/dist/ui/PageHeader.js +8 -0
  377. package/dist/ui/SiteBranding.d.ts +10 -0
  378. package/dist/ui/SiteBranding.js +14 -0
  379. package/dist/ui/SiteDocument.d.ts +20 -0
  380. package/dist/ui/SiteDocument.js +13 -0
  381. package/dist/ui/SiteDocumentFallback.d.ts +8 -0
  382. package/dist/ui/SiteDocumentFallback.js +9 -0
  383. package/dist/ui/SiteLogo.d.ts +6 -0
  384. package/dist/ui/SiteLogo.js +16 -0
  385. package/dist/ui/SiteTagline.d.ts +7 -0
  386. package/dist/ui/SiteTagline.js +15 -0
  387. package/dist/ui/TaxonomyList.d.ts +25 -0
  388. package/dist/ui/TaxonomyList.js +30 -0
  389. package/dist/ui/ThemeCssVars.d.ts +2 -0
  390. package/dist/ui/ThemeCssVars.js +85 -0
  391. package/dist/ui/ThemeLayout.d.ts +13 -0
  392. package/dist/ui/ThemeLayout.js +11 -0
  393. package/dist/ui/components/AntdStyleTransitionFix.d.ts +5 -0
  394. package/dist/ui/components/AntdStyleTransitionFix.js +16 -0
  395. package/dist/ui/components/ArchiveEmptyState.d.ts +13 -0
  396. package/dist/ui/components/ArchiveEmptyState.js +8 -0
  397. package/dist/ui/components/ArchivePageLayout.d.ts +10 -0
  398. package/dist/ui/components/ArchivePageLayout.js +8 -0
  399. package/dist/ui/components/ArticleCard.d.ts +27 -0
  400. package/dist/ui/components/ArticleCard.js +16 -0
  401. package/dist/ui/components/ArticleList.d.ts +14 -0
  402. package/dist/ui/components/ArticleList.js +16 -0
  403. package/dist/ui/components/BaseGlobalStyles.d.ts +6 -0
  404. package/dist/ui/components/BaseGlobalStyles.js +18 -0
  405. package/dist/ui/components/LocaleSwitcher.d.ts +10 -0
  406. package/dist/ui/components/LocaleSwitcher.js +11 -0
  407. package/dist/ui/components/NavMenu.d.ts +16 -0
  408. package/dist/ui/components/NavMenu.js +8 -0
  409. package/dist/ui/components/NotFoundPanel.d.ts +11 -0
  410. package/dist/ui/components/NotFoundPanel.js +8 -0
  411. package/dist/ui/components/PageHeader.d.ts +10 -0
  412. package/dist/ui/components/PageHeader.js +8 -0
  413. package/dist/ui/components/RouteProgress.d.ts +9 -0
  414. package/dist/ui/components/RouteProgress.js +40 -0
  415. package/dist/ui/components/SiteAnalytics.d.ts +5 -0
  416. package/dist/ui/components/SiteAnalytics.js +42 -0
  417. package/dist/ui/components/SiteBranding.d.ts +11 -0
  418. package/dist/ui/components/SiteBranding.js +14 -0
  419. package/dist/ui/components/SiteDocument.d.ts +20 -0
  420. package/dist/ui/components/SiteDocument.js +13 -0
  421. package/dist/ui/components/SiteDocumentFallback.d.ts +8 -0
  422. package/dist/ui/components/SiteDocumentFallback.js +9 -0
  423. package/dist/ui/components/SiteLogo.d.ts +9 -0
  424. package/dist/ui/components/SiteLogo.js +23 -0
  425. package/dist/ui/components/SiteSeo.d.ts +13 -0
  426. package/dist/ui/components/SiteSeo.js +19 -0
  427. package/dist/ui/components/SiteTagline.d.ts +8 -0
  428. package/dist/ui/components/SiteTagline.js +15 -0
  429. package/dist/ui/components/TaxonomyList.d.ts +25 -0
  430. package/dist/ui/components/TaxonomyList.js +30 -0
  431. package/dist/ui/components/ThemeCssVars.d.ts +3 -0
  432. package/dist/ui/components/ThemeCssVars.js +85 -0
  433. package/dist/ui/components/ThemeLayout.d.ts +13 -0
  434. package/dist/ui/components/ThemeLayout.js +11 -0
  435. package/dist/ui/components/content/ArticleReader.d.ts +45 -0
  436. package/dist/ui/components/content/ArticleReader.js +23 -0
  437. package/dist/ui/components/content/ArticleToc.d.ts +21 -0
  438. package/dist/ui/components/content/ArticleToc.js +75 -0
  439. package/dist/ui/components/content/HtmlContent.d.ts +16 -0
  440. package/dist/ui/components/content/HtmlContent.js +237 -0
  441. package/dist/ui/components/content/Image.d.ts +9 -0
  442. package/dist/ui/components/content/Image.js +13 -0
  443. package/dist/ui/components/content/ImageViewer.d.ts +8 -0
  444. package/dist/ui/components/content/ImageViewer.js +33 -0
  445. package/dist/ui/components/content/LocaleTime.d.ts +10 -0
  446. package/dist/ui/components/content/LocaleTime.js +63 -0
  447. package/dist/ui/components/content/index.d.ts +14 -0
  448. package/dist/ui/components/content/index.js +18 -0
  449. package/dist/ui/components/toolbar/LocaleToggleButton.d.ts +8 -0
  450. package/dist/ui/components/toolbar/LocaleToggleButton.js +18 -0
  451. package/dist/ui/components/toolbar/ThemeToggleButton.d.ts +7 -0
  452. package/dist/ui/components/toolbar/ThemeToggleButton.js +10 -0
  453. package/dist/ui/components/toolbar/ToolbarIconButton.d.ts +7 -0
  454. package/dist/ui/components/toolbar/ToolbarIconButton.js +22 -0
  455. package/dist/ui/components/toolbar/constants.d.ts +5 -0
  456. package/dist/ui/components/toolbar/constants.js +8 -0
  457. package/dist/ui/components/toolbar/icons.d.ts +17 -0
  458. package/dist/ui/components/toolbar/icons.js +44 -0
  459. package/dist/ui/components/toolbar/index.d.ts +9 -0
  460. package/dist/ui/components/toolbar/index.js +25 -0
  461. package/dist/ui/components/toolbar/locale-label.d.ts +3 -0
  462. package/dist/ui/components/toolbar/locale-label.js +19 -0
  463. package/dist/ui/context/LocaleContext.d.ts +15 -0
  464. package/dist/ui/context/LocaleContext.js +59 -0
  465. package/dist/ui/context/ReactPressProvider.d.ts +4 -0
  466. package/dist/ui/context/ReactPressProvider.js +10 -0
  467. package/dist/ui/context/SiteCatalogContext.d.ts +41 -0
  468. package/dist/ui/context/SiteCatalogContext.js +60 -0
  469. package/dist/ui/context/ThemeRuntimeContext.d.ts +21 -0
  470. package/dist/ui/context/ThemeRuntimeContext.js +59 -0
  471. package/dist/ui/context/index.d.ts +8 -0
  472. package/dist/ui/context/index.js +26 -0
  473. package/dist/ui/context/siteCatalogTypes.d.ts +64 -0
  474. package/dist/ui/context/siteCatalogTypes.js +20 -0
  475. package/dist/ui/context/types.d.ts +34 -0
  476. package/dist/ui/context/types.js +2 -0
  477. package/dist/ui/hooks/index.d.ts +12 -0
  478. package/dist/ui/hooks/index.js +29 -0
  479. package/dist/ui/hooks/useAsyncLoading.d.ts +4 -0
  480. package/dist/ui/hooks/useAsyncLoading.js +31 -0
  481. package/dist/ui/hooks/useForceUpdate.d.ts +2 -0
  482. package/dist/ui/hooks/useForceUpdate.js +11 -0
  483. package/dist/ui/hooks/useNavActive.d.ts +5 -0
  484. package/dist/ui/hooks/useNavActive.js +11 -0
  485. package/dist/ui/hooks/usePagination.d.ts +34 -0
  486. package/dist/ui/hooks/usePagination.js +55 -0
  487. package/dist/ui/hooks/useReportArticleView.d.ts +4 -0
  488. package/dist/ui/hooks/useReportArticleView.js +40 -0
  489. package/dist/ui/hooks/useReportPageView.d.ts +11 -0
  490. package/dist/ui/hooks/useReportPageView.js +28 -0
  491. package/dist/ui/hooks/useRouteParam.d.ts +5 -0
  492. package/dist/ui/hooks/useRouteParam.js +15 -0
  493. package/dist/ui/hooks/useToggle.d.ts +2 -0
  494. package/dist/ui/hooks/useToggle.js +17 -0
  495. package/dist/ui/hooks/useWarningOnExit.d.ts +5 -0
  496. package/dist/ui/hooks/useWarningOnExit.js +59 -0
  497. package/dist/ui/index.d.ts +43 -0
  498. package/dist/ui/index.js +87 -0
  499. package/dist/utils/api-envelope.d.ts +14 -0
  500. package/dist/utils/api-envelope.js +31 -0
  501. package/dist/utils/clipboard.d.ts +2 -0
  502. package/dist/utils/clipboard.js +24 -0
  503. package/dist/utils/cookie.d.ts +2 -0
  504. package/dist/utils/cookie.js +15 -0
  505. package/dist/utils/date.d.ts +4 -0
  506. package/dist/utils/date.js +45 -0
  507. package/dist/utils/email.d.ts +3 -0
  508. package/dist/utils/email.js +9 -0
  509. package/dist/utils/error.d.ts +7 -0
  510. package/dist/utils/error.js +26 -0
  511. package/dist/utils/image.d.ts +7 -0
  512. package/dist/utils/image.js +34 -0
  513. package/dist/utils/index.d.ts +15 -33
  514. package/dist/utils/index.js +37 -57
  515. package/dist/utils/json.d.ts +2 -0
  516. package/dist/utils/json.js +18 -0
  517. package/dist/utils/jsonp.d.ts +8 -0
  518. package/dist/utils/jsonp.js +27 -0
  519. package/dist/utils/object.d.ts +7 -0
  520. package/dist/utils/object.js +63 -0
  521. package/dist/utils/setting.d.ts +12 -0
  522. package/dist/utils/setting.js +13 -0
  523. package/dist/utils/string.d.ts +4 -0
  524. package/dist/utils/string.js +15 -0
  525. package/dist/utils/viewport.d.ts +3 -0
  526. package/dist/utils/viewport.js +14 -0
  527. package/package.json +141 -12
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.THEME_BRANDING_DIRECT_MODS = exports.THEME_BRANDING_MOD_TO_SETTING = void 0;
4
+ exports.seedThemeModsFromLegacySetting = seedThemeModsFromLegacySetting;
5
+ exports.applyThemeModsToSiteSetting = applyThemeModsToSiteSetting;
6
+ exports.brandingModValue = brandingModValue;
7
+ /** Customizer mod id → legacy Setting column (runtime overlay for themes). */
8
+ exports.THEME_BRANDING_MOD_TO_SETTING = {
9
+ displayTitle: 'systemTitle',
10
+ displayTagline: 'systemSubTitle',
11
+ siteLogo: 'systemLogo',
12
+ backgroundImage: 'systemBg',
13
+ siteFavicon: 'systemFavicon',
14
+ siteNotice: 'systemNoticeInfo',
15
+ seoKeyword: 'seoKeyword',
16
+ seoDesc: 'seoDesc',
17
+ baiduAnalyticsId: 'baiduAnalyticsId',
18
+ googleAnalyticsId: 'googleAnalyticsId',
19
+ };
20
+ /** Mod ids stored under the same key in mods and Setting overlay. */
21
+ exports.THEME_BRANDING_DIRECT_MODS = [
22
+ 'systemFooterInfo',
23
+ 'aboutUsGithubUrl',
24
+ 'aboutUsCommentQr',
25
+ 'aboutUsWechatQr',
26
+ ];
27
+ function modValue(mods, modId) {
28
+ const v = mods[modId];
29
+ if (v == null || String(v).trim() === '')
30
+ return undefined;
31
+ return String(v);
32
+ }
33
+ /** Build customizer form seed from legacy Setting columns (one-time / fallback). */
34
+ function seedThemeModsFromLegacySetting(setting, mods = {}) {
35
+ const merged = { ...mods };
36
+ for (const [modId, settingKey] of Object.entries(exports.THEME_BRANDING_MOD_TO_SETTING)) {
37
+ if (!modValue(merged, modId) && setting?.[settingKey] != null) {
38
+ merged[modId] = String(setting[settingKey]);
39
+ }
40
+ }
41
+ for (const key of exports.THEME_BRANDING_DIRECT_MODS) {
42
+ if (!modValue(merged, key) && setting?.[key] != null) {
43
+ merged[key] = String(setting[key]);
44
+ }
45
+ }
46
+ return merged;
47
+ }
48
+ /** Overlay theme mods onto a Setting-shaped object for theme runtime & mail templates. */
49
+ function applyThemeModsToSiteSetting(setting, mods) {
50
+ const next = { ...setting };
51
+ for (const [modId, settingKey] of Object.entries(exports.THEME_BRANDING_MOD_TO_SETTING)) {
52
+ const v = modValue(mods, modId);
53
+ if (v)
54
+ next[settingKey] = v;
55
+ }
56
+ for (const key of exports.THEME_BRANDING_DIRECT_MODS) {
57
+ const v = modValue(mods, key);
58
+ if (v)
59
+ next[key] = v;
60
+ }
61
+ return next;
62
+ }
63
+ function brandingModValue(mods, modId) {
64
+ return modValue(mods, modId);
65
+ }
@@ -0,0 +1,3 @@
1
+ import type { ThemeConfigurationSchema } from './types';
2
+ /** Collect `default` values from a JSON Schema object tree. */
3
+ export declare function defaultsFromSchema(schema: ThemeConfigurationSchema | null | undefined): Record<string, unknown>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultsFromSchema = defaultsFromSchema;
4
+ /** Collect `default` values from a JSON Schema object tree. */
5
+ function defaultsFromSchema(schema) {
6
+ if (!schema?.properties)
7
+ return {};
8
+ const out = {};
9
+ for (const [key, prop] of Object.entries(schema.properties)) {
10
+ const value = defaultFromProperty(prop);
11
+ if (value !== undefined) {
12
+ out[key] = value;
13
+ }
14
+ }
15
+ return out;
16
+ }
17
+ function defaultFromProperty(prop) {
18
+ if (!prop)
19
+ return undefined;
20
+ if (prop.default !== undefined)
21
+ return prop.default;
22
+ if (prop.type === 'object' && prop.properties) {
23
+ const nested = {};
24
+ for (const [k, p] of Object.entries(prop.properties)) {
25
+ const v = defaultFromProperty(p);
26
+ if (v !== undefined)
27
+ nested[k] = v;
28
+ }
29
+ return Object.keys(nested).length ? nested : undefined;
30
+ }
31
+ return undefined;
32
+ }
@@ -0,0 +1,10 @@
1
+ import type { ThemeConfigurationSchema } from './types';
2
+ /** Formily `ISchema` node (JSON Schema + Formily x-* extensions). */
3
+ export type FormilySchemaNode = Record<string, unknown>;
4
+ export declare function registerFormilyWidget(widgetId: string, componentName: string): void;
5
+ /**
6
+ * Convert theme `reactpress.configuration` JSON Schema to Formily render schema.
7
+ * Adds `x-decorator` / `x-component` from types and `x-ui.widget`.
8
+ */
9
+ export declare function toFormilyJsonSchema(schema: ThemeConfigurationSchema | null | undefined): FormilySchemaNode | null;
10
+ export declare function getFormilyVoidComponents(): string[];
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerFormilyWidget = registerFormilyWidget;
4
+ exports.toFormilyJsonSchema = toFormilyJsonSchema;
5
+ exports.getFormilyVoidComponents = getFormilyVoidComponents;
6
+ const VOID_COMPONENTS = [
7
+ 'FormLayout',
8
+ 'FormGrid',
9
+ 'FormGrid.GridColumn',
10
+ 'SectionCard',
11
+ 'FormCollapse',
12
+ 'FormCollapse.CollapsePanel',
13
+ 'CollapsePanel',
14
+ 'FormTab',
15
+ 'FormTab.TabPane',
16
+ ];
17
+ /** Map `x-ui.widget` → Formily `x-component` (extend via registerFormilyWidget). */
18
+ const WIDGET_COMPONENT_MAP = {
19
+ navLinkList: 'NavLinkListField',
20
+ urlConfigEditor: 'JsonConfigEditor',
21
+ navSearchEditor: 'JsonConfigEditor',
22
+ };
23
+ const registeredWidgets = { ...WIDGET_COMPONENT_MAP };
24
+ function registerFormilyWidget(widgetId, componentName) {
25
+ registeredWidgets[widgetId] = componentName;
26
+ }
27
+ /**
28
+ * Convert theme `reactpress.configuration` JSON Schema to Formily render schema.
29
+ * Adds `x-decorator` / `x-component` from types and `x-ui.widget`.
30
+ */
31
+ function toFormilyJsonSchema(schema) {
32
+ if (!schema || schema.type !== 'object')
33
+ return null;
34
+ const root = convertProperty({ ...schema, type: 'object' }, 0, true);
35
+ const sectionProps = (root.properties ?? {});
36
+ return {
37
+ type: 'object',
38
+ 'x-component': 'FormLayout',
39
+ 'x-component-props': { layout: 'vertical', style: { width: '100%' } },
40
+ properties: wrapRootSections(sectionProps),
41
+ };
42
+ }
43
+ /** Full-width section cards; field paths stay `header.*` / `nav.*`. */
44
+ function wrapRootSections(properties) {
45
+ return Object.fromEntries(Object.entries(properties).map(([key, child]) => {
46
+ const title = typeof child.title === 'string' ? child.title : key;
47
+ const inner = withObjectLayout(child);
48
+ return [
49
+ key,
50
+ {
51
+ ...inner,
52
+ 'x-decorator': 'SectionCard',
53
+ 'x-decorator-props': {
54
+ title,
55
+ sectionId: `theme-section-${key}`,
56
+ feedbackLayout: 'none',
57
+ layout: 'vertical',
58
+ fullness: true,
59
+ },
60
+ },
61
+ ];
62
+ }));
63
+ }
64
+ /** Ensure nested object fields render their properties in Formily. */
65
+ function withObjectLayout(node, title) {
66
+ if (node.type !== 'object' || !node.properties)
67
+ return node;
68
+ const props = node.properties;
69
+ const keys = Object.keys(props);
70
+ return {
71
+ ...node,
72
+ ...(keys.length > 1 ? { title } : {}),
73
+ 'x-component': 'FormLayout',
74
+ 'x-component-props': { layout: 'vertical' },
75
+ };
76
+ }
77
+ function convertProperty(node, depth, isRoot = false) {
78
+ const ui = node['x-ui'];
79
+ if (ui?.hidden) {
80
+ return { ...node, 'x-display': 'hidden' };
81
+ }
82
+ const type = typeof node.type === 'string' ? node.type : undefined;
83
+ if (type === 'object') {
84
+ const widget = ui?.widget ? registeredWidgets[ui.widget] : undefined;
85
+ if (widget === 'JsonConfigEditor') {
86
+ return {
87
+ ...stripMeta(node),
88
+ type: 'object',
89
+ 'x-decorator': 'FormItem',
90
+ 'x-decorator-props': {
91
+ feedbackLayout: 'none',
92
+ layout: 'vertical',
93
+ fullness: true,
94
+ wrapperCol: 24,
95
+ },
96
+ 'x-component': 'JsonConfigEditor',
97
+ 'x-component-props': { height: 360 },
98
+ };
99
+ }
100
+ if (node.properties) {
101
+ const properties = Object.fromEntries(Object.entries(node.properties).map(([key, child]) => [
102
+ key,
103
+ convertProperty(child, depth + 1),
104
+ ]));
105
+ return {
106
+ ...stripMeta(node),
107
+ type: 'object',
108
+ properties,
109
+ };
110
+ }
111
+ }
112
+ if (type === 'array') {
113
+ const widget = ui?.widget ? registeredWidgets[ui.widget] : undefined;
114
+ const out = {
115
+ ...stripMeta(node),
116
+ type: 'array',
117
+ 'x-decorator': 'FormItem',
118
+ 'x-decorator-props': {
119
+ feedbackLayout: 'none',
120
+ layout: 'vertical',
121
+ colon: false,
122
+ fullness: true,
123
+ wrapperCol: 24,
124
+ },
125
+ 'x-component': widget ?? 'ArrayCards',
126
+ 'x-component-props': widget === 'NavLinkListField'
127
+ ? {}
128
+ : widget === 'ArrayCards'
129
+ ? { title: node.title ?? 'Item' }
130
+ : {},
131
+ };
132
+ if (widget !== 'NavLinkListField' && node.items && typeof node.items === 'object' && !Array.isArray(node.items)) {
133
+ out.items = convertProperty(node.items, depth + 1);
134
+ }
135
+ return out;
136
+ }
137
+ if (type === 'boolean') {
138
+ return {
139
+ ...stripMeta(node),
140
+ type: 'boolean',
141
+ 'x-decorator': 'FormItem',
142
+ 'x-component': 'Switch',
143
+ };
144
+ }
145
+ if (type === 'number' || type === 'integer') {
146
+ return {
147
+ ...stripMeta(node),
148
+ type: 'number',
149
+ 'x-decorator': 'FormItem',
150
+ 'x-component': 'NumberPicker',
151
+ };
152
+ }
153
+ if (type === 'string') {
154
+ const component = node.enum ? 'Select' : 'Input';
155
+ return {
156
+ ...stripMeta(node),
157
+ type: 'string',
158
+ 'x-decorator': 'FormItem',
159
+ 'x-component': component,
160
+ };
161
+ }
162
+ return { ...stripMeta(node) };
163
+ }
164
+ function stripMeta(node) {
165
+ const { ['x-ui']: _ui, ...rest } = node;
166
+ return { ...rest };
167
+ }
168
+ function getFormilyVoidComponents() {
169
+ return [...VOID_COMPONENTS];
170
+ }
@@ -0,0 +1,7 @@
1
+ export * from './defaults';
2
+ export * from './formily';
3
+ export * from './paths';
4
+ export { getThemeConfigurationSchema, getThemeConfigurationSeed, TWENTYTWENTYFIVE_CONFIGURATION_SCHEMA, twentytwentyfiveConfigSeed, } from './presets/twentytwentyfive';
5
+ export * from './resolve';
6
+ export * from './types';
7
+ export * from './validate';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.twentytwentyfiveConfigSeed = exports.TWENTYTWENTYFIVE_CONFIGURATION_SCHEMA = exports.getThemeConfigurationSeed = exports.getThemeConfigurationSchema = void 0;
18
+ __exportStar(require("./defaults"), exports);
19
+ __exportStar(require("./formily"), exports);
20
+ __exportStar(require("./paths"), exports);
21
+ var twentytwentyfive_1 = require("./presets/twentytwentyfive");
22
+ Object.defineProperty(exports, "getThemeConfigurationSchema", { enumerable: true, get: function () { return twentytwentyfive_1.getThemeConfigurationSchema; } });
23
+ Object.defineProperty(exports, "getThemeConfigurationSeed", { enumerable: true, get: function () { return twentytwentyfive_1.getThemeConfigurationSeed; } });
24
+ Object.defineProperty(exports, "TWENTYTWENTYFIVE_CONFIGURATION_SCHEMA", { enumerable: true, get: function () { return twentytwentyfive_1.TWENTYTWENTYFIVE_CONFIGURATION_SCHEMA; } });
25
+ Object.defineProperty(exports, "twentytwentyfiveConfigSeed", { enumerable: true, get: function () { return twentytwentyfive_1.twentytwentyfiveConfigSeed; } });
26
+ __exportStar(require("./resolve"), exports);
27
+ __exportStar(require("./types"), exports);
28
+ __exportStar(require("./validate"), exports);
@@ -0,0 +1,4 @@
1
+ /** Deep get/set for nested configuration objects. */
2
+ export declare function getByPath(obj: unknown, path: string): unknown;
3
+ export declare function setByPath(obj: Record<string, unknown>, path: string, value: unknown): void;
4
+ export declare function deepMerge<T extends Record<string, unknown>>(target: T, source: Record<string, unknown>): T;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /** Deep get/set for nested configuration objects. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getByPath = getByPath;
5
+ exports.setByPath = setByPath;
6
+ exports.deepMerge = deepMerge;
7
+ function getByPath(obj, path) {
8
+ if (!path)
9
+ return obj;
10
+ const parts = path.split('.');
11
+ let cur = obj;
12
+ for (const part of parts) {
13
+ if (cur == null || typeof cur !== 'object')
14
+ return undefined;
15
+ cur = cur[part];
16
+ }
17
+ return cur;
18
+ }
19
+ function setByPath(obj, path, value) {
20
+ const parts = path.split('.');
21
+ let cur = obj;
22
+ for (let i = 0; i < parts.length - 1; i++) {
23
+ const key = parts[i];
24
+ const next = cur[key];
25
+ if (next == null || typeof next !== 'object' || Array.isArray(next)) {
26
+ cur[key] = {};
27
+ }
28
+ cur = cur[key];
29
+ }
30
+ cur[parts[parts.length - 1]] = value;
31
+ }
32
+ function deepMerge(target, source) {
33
+ const out = { ...target };
34
+ for (const key of Object.keys(source)) {
35
+ const sv = source[key];
36
+ const tv = out[key];
37
+ if (sv &&
38
+ typeof sv === 'object' &&
39
+ !Array.isArray(sv) &&
40
+ tv &&
41
+ typeof tv === 'object' &&
42
+ !Array.isArray(tv)) {
43
+ out[key] = deepMerge(tv, sv);
44
+ }
45
+ else if (sv !== undefined) {
46
+ out[key] = sv;
47
+ }
48
+ }
49
+ return out;
50
+ }
@@ -0,0 +1,7 @@
1
+ import type { ThemeConfigurationSchema } from '../types';
2
+ /** Declarative schema shipped with the default blog theme (also embedded in `theme.json`). */
3
+ export declare const TWENTYTWENTYFIVE_CONFIGURATION_SCHEMA: ThemeConfigurationSchema;
4
+ /** Seed nav blocks from toolkit `globalSetting` locale bundles (too large for inline schema defaults). */
5
+ export declare function twentytwentyfiveConfigSeed(locale?: string): Record<string, unknown>;
6
+ export declare function getThemeConfigurationSchema(themeId: string): ThemeConfigurationSchema | null;
7
+ export declare function getThemeConfigurationSeed(themeId: string, locale?: string): Record<string, unknown> | null;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TWENTYTWENTYFIVE_CONFIGURATION_SCHEMA = void 0;
4
+ exports.twentytwentyfiveConfigSeed = twentytwentyfiveConfigSeed;
5
+ exports.getThemeConfigurationSchema = getThemeConfigurationSchema;
6
+ exports.getThemeConfigurationSeed = getThemeConfigurationSeed;
7
+ const global_1 = require("../../../config/global");
8
+ const defaults_1 = require("../defaults");
9
+ const paths_1 = require("../paths");
10
+ /** Declarative schema shipped with the default blog theme (also embedded in `theme.json`). */
11
+ exports.TWENTYTWENTYFIVE_CONFIGURATION_SCHEMA = {
12
+ $schema: 'http://json-schema.org/draft-07/schema#',
13
+ title: 'Twenty Twenty-Five',
14
+ description: '顶栏导航与 /nav 网址导航、聚合搜索',
15
+ type: 'object',
16
+ additionalProperties: false,
17
+ properties: {
18
+ header: {
19
+ type: 'object',
20
+ title: '顶栏',
21
+ properties: {
22
+ navLinks: {
23
+ type: 'array',
24
+ title: '固定导航链接',
25
+ description: '显示在「页面」模块发布的自定义页面之前',
26
+ default: [
27
+ { path: '/', locale: 'home', icon: 'HomeOutlined', visible: true },
28
+ { path: '/nav', locale: 'nav', icon: 'GlobalOutlined', visible: true },
29
+ { path: '/knowledge', locale: 'knowledge', icon: 'BookOutlined', visible: false },
30
+ { path: '/archives', locale: 'archives', icon: 'HistoryOutlined', visible: true },
31
+ ],
32
+ items: {
33
+ type: 'object',
34
+ required: ['path'],
35
+ properties: {
36
+ path: { type: 'string', title: '路径' },
37
+ locale: { type: 'string', title: 'i18n 键' },
38
+ label: { type: 'string', title: '覆盖文案' },
39
+ icon: { type: 'string', title: 'Ant Design 图标名' },
40
+ visible: { type: 'boolean', title: '显示', default: true },
41
+ },
42
+ },
43
+ 'x-ui': { widget: 'navLinkList', section: 'header', order: 10 },
44
+ },
45
+ },
46
+ },
47
+ nav: {
48
+ type: 'object',
49
+ title: '网址导航',
50
+ properties: {
51
+ urlConfig: {
52
+ type: 'array',
53
+ title: '导航卡片分组',
54
+ 'x-ui': { widget: 'urlConfigEditor', section: 'nav', order: 20 },
55
+ items: { type: 'object' },
56
+ },
57
+ searchCategories: {
58
+ type: 'object',
59
+ title: '聚合搜索分类',
60
+ 'x-ui': { widget: 'navSearchEditor', section: 'nav', order: 30 },
61
+ properties: {
62
+ categories: { type: 'array', items: { type: 'object' } },
63
+ subCategories: { type: 'object' },
64
+ },
65
+ },
66
+ },
67
+ },
68
+ },
69
+ };
70
+ /** Seed nav blocks from toolkit `globalSetting` locale bundles (too large for inline schema defaults). */
71
+ function twentytwentyfiveConfigSeed(locale = 'zh') {
72
+ const gs = global_1.globalSetting;
73
+ const bundle = locale === 'en' ? gs.en : gs.zh;
74
+ const gc = bundle?.globalConfig ?? {};
75
+ return {
76
+ nav: {
77
+ urlConfig: gc.urlConfig ?? [],
78
+ searchCategories: gc.navConfig ?? { categories: [], subCategories: {} },
79
+ },
80
+ };
81
+ }
82
+ function getThemeConfigurationSchema(themeId) {
83
+ if (themeId === 'twentytwentyfive')
84
+ return exports.TWENTYTWENTYFIVE_CONFIGURATION_SCHEMA;
85
+ return null;
86
+ }
87
+ function getThemeConfigurationSeed(themeId, locale = 'zh') {
88
+ const schema = getThemeConfigurationSchema(themeId);
89
+ if (!schema)
90
+ return null;
91
+ const schemaDefaults = (0, defaults_1.defaultsFromSchema)(schema);
92
+ const navSeed = themeId === 'twentytwentyfive' ? twentytwentyfiveConfigSeed(locale) : {};
93
+ return (0, paths_1.deepMerge)(schemaDefaults, navSeed);
94
+ }
@@ -0,0 +1,24 @@
1
+ import type { GlobalSettingWithConfig, ResolvedSiteConfig, ThemeConfigurationSchema } from './types';
2
+ export declare function parseGlobalSettingRaw(raw: unknown): GlobalSettingWithConfig;
3
+ type ManifestWithOptions = {
4
+ options?: ThemeConfigurationSchema;
5
+ };
6
+ export declare function getConfigurationSchemaFromManifest(manifest: ManifestWithOptions | null | undefined, themeId: string): ThemeConfigurationSchema | null;
7
+ export declare function getMergedThemeConfiguration(globalRaw: unknown, themeId: string, options?: {
8
+ locale?: string;
9
+ manifest?: ManifestWithOptions;
10
+ }): Record<string, unknown>;
11
+ export declare function getConfig<T = unknown>(configuration: Record<string, unknown>, path: string): T | undefined;
12
+ export declare function patchConfiguration(current: Record<string, unknown>, patch: Record<string, unknown>): Record<string, unknown>;
13
+ export declare function mergeConfigIntoGlobalSetting(globalRaw: unknown, themeId: string, themeConfig: Record<string, unknown>): GlobalSettingWithConfig;
14
+ export declare function resolveSiteConfig(globalRaw: unknown, themeId: string, locale?: string, manifest?: ManifestWithOptions,
15
+ /** Draft theme config from appearance preview query (not persisted). */
16
+ configOverride?: Record<string, unknown>): ResolvedSiteConfig;
17
+ export declare function validateAndMergeThemeConfiguration(themeId: string, globalRaw: unknown, patch: Record<string, unknown>, manifest?: ManifestWithOptions): {
18
+ ok: true;
19
+ config: Record<string, unknown>;
20
+ } | {
21
+ ok: false;
22
+ message: string;
23
+ };
24
+ export {};
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseGlobalSettingRaw = parseGlobalSettingRaw;
4
+ exports.getConfigurationSchemaFromManifest = getConfigurationSchemaFromManifest;
5
+ exports.getMergedThemeConfiguration = getMergedThemeConfiguration;
6
+ exports.getConfig = getConfig;
7
+ exports.patchConfiguration = patchConfiguration;
8
+ exports.mergeConfigIntoGlobalSetting = mergeConfigIntoGlobalSetting;
9
+ exports.resolveSiteConfig = resolveSiteConfig;
10
+ exports.validateAndMergeThemeConfiguration = validateAndMergeThemeConfiguration;
11
+ const defaults_1 = require("./defaults");
12
+ const paths_1 = require("./paths");
13
+ const twentytwentyfive_1 = require("./presets/twentytwentyfive");
14
+ const validate_1 = require("./validate");
15
+ const FALLBACK_HEADER_NAV = [
16
+ { path: '/', locale: 'home', icon: 'HomeOutlined', visible: true },
17
+ { path: '/nav', locale: 'nav', icon: 'GlobalOutlined', visible: true },
18
+ { path: '/archives', locale: 'archives', icon: 'HistoryOutlined', visible: true },
19
+ ];
20
+ function parseGlobalSettingRaw(raw) {
21
+ if (!raw)
22
+ return {};
23
+ if (typeof raw === 'string') {
24
+ try {
25
+ return JSON.parse(raw);
26
+ }
27
+ catch {
28
+ return {};
29
+ }
30
+ }
31
+ if (typeof raw === 'object')
32
+ return raw;
33
+ return {};
34
+ }
35
+ function getConfigurationSchemaFromManifest(manifest, themeId) {
36
+ const fromManifest = manifest?.options;
37
+ if (fromManifest && fromManifest.type === 'object')
38
+ return fromManifest;
39
+ return (0, twentytwentyfive_1.getThemeConfigurationSchema)(themeId);
40
+ }
41
+ function getMergedThemeConfiguration(globalRaw, themeId, options) {
42
+ const gs = parseGlobalSettingRaw(globalRaw);
43
+ const schema = getConfigurationSchemaFromManifest(options?.manifest ?? null, themeId) ??
44
+ (0, twentytwentyfive_1.getThemeConfigurationSchema)(themeId);
45
+ const seed = (0, twentytwentyfive_1.getThemeConfigurationSeed)(themeId, options?.locale ?? 'zh') ??
46
+ (schema ? (0, defaults_1.defaultsFromSchema)(schema) : {});
47
+ const store = gs.config && typeof gs.config === 'object' ? gs.config : {};
48
+ const stored = store[themeId];
49
+ const storedObj = stored && typeof stored === 'object' && !Array.isArray(stored)
50
+ ? stored
51
+ : {};
52
+ return (0, paths_1.deepMerge)((0, paths_1.deepMerge)({}, seed), storedObj);
53
+ }
54
+ function getConfig(configuration, path) {
55
+ return (0, paths_1.getByPath)(configuration, path);
56
+ }
57
+ function patchConfiguration(current, patch) {
58
+ return (0, paths_1.deepMerge)({ ...current }, patch);
59
+ }
60
+ function mergeConfigIntoGlobalSetting(globalRaw, themeId, themeConfig) {
61
+ const gs = parseGlobalSettingRaw(globalRaw);
62
+ const config = gs.config && typeof gs.config === 'object' ? { ...gs.config } : {};
63
+ config[themeId] = themeConfig;
64
+ return { ...gs, config };
65
+ }
66
+ function resolveSiteConfig(globalRaw, themeId, locale = 'zh', manifest,
67
+ /** Draft theme config from appearance preview query (not persisted). */
68
+ configOverride) {
69
+ const merged = getMergedThemeConfiguration(globalRaw, themeId, { locale, manifest });
70
+ const effective = configOverride && Object.keys(configOverride).length > 0
71
+ ? patchConfiguration(merged, configOverride)
72
+ : merged;
73
+ const gs = parseGlobalSettingRaw(globalRaw);
74
+ const legacyBundle = (gs[locale] ?? gs.zh);
75
+ const legacy = legacyBundle?.globalConfig;
76
+ const headerNav = getConfig(effective, 'header.navLinks');
77
+ const urlConfig = getConfig(effective, 'nav.urlConfig');
78
+ const searchCategories = getConfig(effective, 'nav.searchCategories');
79
+ const navLinks = (headerNav ?? FALLBACK_HEADER_NAV).filter((item) => item.visible !== false);
80
+ return {
81
+ header: { navLinks },
82
+ nav: {
83
+ urlConfig: urlConfig ?? legacy?.urlConfig ?? [],
84
+ searchCategories: searchCategories ??
85
+ legacy?.navConfig ?? { categories: [], subCategories: {} },
86
+ },
87
+ };
88
+ }
89
+ function validateAndMergeThemeConfiguration(themeId, globalRaw, patch, manifest) {
90
+ const schema = getConfigurationSchemaFromManifest(manifest ?? null, themeId);
91
+ const current = getMergedThemeConfiguration(globalRaw, themeId, { manifest });
92
+ const next = patchConfiguration(current, patch);
93
+ const result = (0, validate_1.validateThemeConfiguration)(schema, next);
94
+ if (!result.valid) {
95
+ return { ok: false, message: result.message ?? 'Invalid configuration' };
96
+ }
97
+ return { ok: true, config: next };
98
+ }
@@ -0,0 +1,68 @@
1
+ /** JSON Schema–driven theme/site configuration (VS Code `contributes.configuration` style). */
2
+ /** UI hints for admin settings editor (P2); stored in schema only. */
3
+ export interface ConfigurationUiMeta {
4
+ widget?: string;
5
+ section?: string;
6
+ order?: number;
7
+ scope?: 'site' | 'locale';
8
+ hidden?: boolean;
9
+ }
10
+ /** JSON Schema 7 object schema for theme `reactpress.configuration`. */
11
+ export interface ThemeConfigurationSchema {
12
+ $schema?: string;
13
+ title?: string;
14
+ description?: string;
15
+ type: 'object';
16
+ properties?: Record<string, ThemeConfigurationPropertySchema>;
17
+ required?: string[];
18
+ additionalProperties?: boolean;
19
+ }
20
+ export type ThemeConfigurationPropertySchema = {
21
+ type?: string | string[];
22
+ title?: string;
23
+ description?: string;
24
+ default?: unknown;
25
+ enum?: unknown[];
26
+ items?: ThemeConfigurationPropertySchema;
27
+ properties?: Record<string, ThemeConfigurationPropertySchema>;
28
+ required?: string[];
29
+ additionalProperties?: boolean;
30
+ /** Extension: admin widget id */
31
+ 'x-ui'?: ConfigurationUiMeta;
32
+ [key: string]: unknown;
33
+ };
34
+ export interface HeaderNavLinkConfig {
35
+ path: string;
36
+ locale?: string;
37
+ label?: string;
38
+ icon?: string;
39
+ visible?: boolean;
40
+ }
41
+ export interface ThemeConfigStore {
42
+ [themeId: string]: Record<string, unknown>;
43
+ }
44
+ export interface GlobalSettingWithConfig {
45
+ zh?: {
46
+ globalConfig?: unknown;
47
+ [key: string]: unknown;
48
+ };
49
+ en?: {
50
+ globalConfig?: unknown;
51
+ [key: string]: unknown;
52
+ };
53
+ theme?: unknown;
54
+ config?: ThemeConfigStore;
55
+ [key: string]: unknown;
56
+ }
57
+ export interface ResolvedSiteConfig {
58
+ header: {
59
+ navLinks: HeaderNavLinkConfig[];
60
+ };
61
+ nav: {
62
+ urlConfig: unknown[];
63
+ searchCategories: {
64
+ categories?: unknown[];
65
+ subCategories?: Record<string, unknown[]>;
66
+ };
67
+ };
68
+ }