@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,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeAppearance = normalizeAppearance;
4
+ exports.normalizePlatformFields = normalizePlatformFields;
5
+ function asRecord(value) {
6
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
7
+ }
8
+ function normalizeSetting(raw) {
9
+ return {
10
+ id: String(raw.id),
11
+ type: raw.type,
12
+ label: String(raw.label),
13
+ default: typeof raw.default === 'string' ? raw.default : undefined,
14
+ description: typeof raw.description === 'string' ? raw.description : undefined,
15
+ choices: Array.isArray(raw.choices)
16
+ ? raw.choices
17
+ : undefined,
18
+ group: typeof raw.group === 'string' ? raw.group : undefined,
19
+ };
20
+ }
21
+ function normalizeGroup(raw) {
22
+ return {
23
+ id: String(raw.id),
24
+ title: String(raw.title),
25
+ description: typeof raw.description === 'string' ? raw.description : undefined,
26
+ };
27
+ }
28
+ function normalizePanel(raw) {
29
+ return {
30
+ id: String(raw.id),
31
+ title: String(raw.title),
32
+ description: typeof raw.description === 'string' ? raw.description : undefined,
33
+ };
34
+ }
35
+ function normalizeSection(raw) {
36
+ return {
37
+ id: String(raw.id),
38
+ title: String(raw.title),
39
+ panel: typeof raw.panel === 'string' ? raw.panel : undefined,
40
+ embed: raw.embed === 'options' ? 'options' : undefined,
41
+ description: typeof raw.description === 'string' ? raw.description : undefined,
42
+ groups: Array.isArray(raw.groups)
43
+ ? raw.groups.map((item) => normalizeGroup(asRecord(item) ?? {}))
44
+ : undefined,
45
+ settings: Array.isArray(raw.settings)
46
+ ? raw.settings.map((item) => normalizeSetting(asRecord(item) ?? {}))
47
+ : undefined,
48
+ };
49
+ }
50
+ function normalizeAppearance(raw) {
51
+ const source = asRecord(raw);
52
+ if (!source)
53
+ return undefined;
54
+ const panels = Array.isArray(source.panels)
55
+ ? source.panels.map((item) => normalizePanel(asRecord(item) ?? {}))
56
+ : undefined;
57
+ const sections = Array.isArray(source.sections)
58
+ ? source.sections.map((item) => normalizeSection(asRecord(item) ?? {}))
59
+ : [];
60
+ if (panels === undefined && sections.length === 0)
61
+ return undefined;
62
+ return { panels, sections };
63
+ }
64
+ function normalizePlatformFields(o) {
65
+ const requires = typeof o.requires === 'string' ? o.requires : undefined;
66
+ const supports = o.supports;
67
+ const templates = o.templates;
68
+ const options = o.options;
69
+ return {
70
+ requires,
71
+ supports: supports && typeof supports === 'object' ? supports : undefined,
72
+ templates: templates && typeof templates === 'object' ? templates : undefined,
73
+ options: options?.type === 'object' ? options : undefined,
74
+ };
75
+ }
@@ -0,0 +1,10 @@
1
+ import type { ThemeAppearancePanel, ThemeAppearanceSection } from '../theme';
2
+ /** Sidebar nav panels for Twenty Twenty-Five appearance editor. */
3
+ export declare const TWENTYTWENTYFIVE_APPEARANCE_PANELS: ThemeAppearancePanel[];
4
+ /** Default appearance sections for Twenty Twenty-Five (also in `themes/.../theme.json`). */
5
+ export declare const TWENTYTWENTYFIVE_APPEARANCE_SECTIONS: ThemeAppearanceSection[];
6
+ /** Full `theme.json` → `appearance` block for Twenty Twenty-Five. */
7
+ export declare const TWENTYTWENTYFIVE_APPEARANCE: {
8
+ panels: ThemeAppearancePanel[];
9
+ sections: ThemeAppearanceSection[];
10
+ };
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TWENTYTWENTYFIVE_APPEARANCE = exports.TWENTYTWENTYFIVE_APPEARANCE_SECTIONS = exports.TWENTYTWENTYFIVE_APPEARANCE_PANELS = void 0;
4
+ /** Sidebar nav panels for Twenty Twenty-Five appearance editor. */
5
+ exports.TWENTYTWENTYFIVE_APPEARANCE_PANELS = [
6
+ {
7
+ id: 'basic',
8
+ title: '基础配置',
9
+ description: '站点信息与页脚',
10
+ },
11
+ {
12
+ id: 'style',
13
+ title: '样式配置',
14
+ description: '颜色与背景',
15
+ },
16
+ {
17
+ id: 'layout',
18
+ title: '布局配置',
19
+ description: '导航与页面结构',
20
+ },
21
+ ];
22
+ /** Default appearance sections for Twenty Twenty-Five (also in `themes/.../theme.json`). */
23
+ exports.TWENTYTWENTYFIVE_APPEARANCE_SECTIONS = [
24
+ {
25
+ id: 'identity',
26
+ panel: 'basic',
27
+ title: '站点身份',
28
+ settings: [
29
+ {
30
+ id: 'displayTitle',
31
+ type: 'text',
32
+ label: '站点标题',
33
+ description: '留空则继承「设置 → 常规」中的站点标题',
34
+ },
35
+ {
36
+ id: 'displayTagline',
37
+ type: 'text',
38
+ label: '站点副标题',
39
+ description: '留空则继承「设置 → 常规」中的副标题',
40
+ },
41
+ {
42
+ id: 'siteLogo',
43
+ type: 'image',
44
+ label: '站点 Logo',
45
+ description: '留空则继承「设置 → 常规」中的站点 Logo',
46
+ },
47
+ {
48
+ id: 'siteFavicon',
49
+ type: 'image',
50
+ label: '站点图标',
51
+ description: '留空则继承「设置 → 常规」中的站点图标',
52
+ },
53
+ {
54
+ id: 'siteNotice',
55
+ type: 'noticeList',
56
+ label: '站点公告',
57
+ description: '未自定义时继承「设置 → 常规」;可为本主题单独配置多条公告与顺序',
58
+ },
59
+ ],
60
+ },
61
+ {
62
+ id: 'about',
63
+ panel: 'basic',
64
+ title: '关于我们与页脚',
65
+ settings: [
66
+ {
67
+ id: 'systemFooterInfo',
68
+ type: 'textarea',
69
+ label: '页脚说明',
70
+ description: '支持 HTML;仅本主题生效',
71
+ },
72
+ {
73
+ id: 'aboutUsGithubUrl',
74
+ type: 'text',
75
+ label: 'GitHub 链接',
76
+ description: '页头与页脚 GitHub 图标;留空不显示',
77
+ },
78
+ {
79
+ id: 'aboutUsCommentQr',
80
+ type: 'image',
81
+ label: '社群/评论二维码',
82
+ description: '悬停展示的图片地址',
83
+ },
84
+ {
85
+ id: 'aboutUsWechatQr',
86
+ type: 'image',
87
+ label: '微信二维码',
88
+ description: '悬停展示的图片地址',
89
+ },
90
+ ],
91
+ },
92
+ {
93
+ id: 'colors',
94
+ panel: 'style',
95
+ title: '颜色',
96
+ description: '与访客站顶栏「日 / 夜」切换对应,可分别配置浅色与深色模式',
97
+ groups: [
98
+ {
99
+ id: 'light',
100
+ title: '浅色模式',
101
+ description: '访客关闭深色模式时生效',
102
+ },
103
+ {
104
+ id: 'dark',
105
+ title: '深色模式',
106
+ description: '访客开启深色模式时生效',
107
+ },
108
+ ],
109
+ settings: [
110
+ { id: 'primaryColor', group: 'light', type: 'color', label: '主色', default: '#f44336' },
111
+ {
112
+ id: 'backgroundColor',
113
+ group: 'light',
114
+ type: 'color',
115
+ label: '背景色',
116
+ default: '#ffffff',
117
+ description: '页面与内容区背景;设置背景图后主区域会透明以露出图片',
118
+ },
119
+ {
120
+ id: 'secondaryBackgroundColor',
121
+ group: 'light',
122
+ type: 'color',
123
+ label: '次要背景色',
124
+ default: '#f3f5f7',
125
+ description: '卡片间隔、侧栏等次要区域',
126
+ },
127
+ {
128
+ id: 'linkColor',
129
+ group: 'light',
130
+ type: 'color',
131
+ label: '链接色',
132
+ default: '#4299e1',
133
+ description: '正文 Markdown 中的链接颜色',
134
+ },
135
+ {
136
+ id: 'darkPrimaryColor',
137
+ group: 'dark',
138
+ type: 'color',
139
+ label: '主色',
140
+ default: '#f44336',
141
+ },
142
+ {
143
+ id: 'darkBackgroundColor',
144
+ group: 'dark',
145
+ type: 'color',
146
+ label: '背景色',
147
+ default: '#1e2a36',
148
+ description: '页面与主内容区背景',
149
+ },
150
+ {
151
+ id: 'darkSecondaryBackgroundColor',
152
+ group: 'dark',
153
+ type: 'color',
154
+ label: '次要背景色',
155
+ default: '#1a242f',
156
+ description: '卡片、顶栏、侧栏等次要区域',
157
+ },
158
+ {
159
+ id: 'darkLinkColor',
160
+ group: 'dark',
161
+ type: 'color',
162
+ label: '链接色',
163
+ default: '#4299e1',
164
+ description: '正文 Markdown 中的链接颜色',
165
+ },
166
+ ],
167
+ },
168
+ {
169
+ id: 'background',
170
+ panel: 'style',
171
+ title: '背景图片',
172
+ settings: [
173
+ {
174
+ id: 'backgroundImage',
175
+ type: 'image',
176
+ label: '背景图',
177
+ description: '设置后将覆盖纯色背景(宽屏可见);仅本主题生效',
178
+ },
179
+ ],
180
+ },
181
+ {
182
+ id: 'themeConfiguration',
183
+ panel: 'layout',
184
+ title: '顶栏与网址导航',
185
+ embed: 'options',
186
+ description: '固定导航、/nav 卡片与聚合搜索',
187
+ },
188
+ ];
189
+ /** Full `theme.json` → `appearance` block for Twenty Twenty-Five. */
190
+ exports.TWENTYTWENTYFIVE_APPEARANCE = {
191
+ panels: exports.TWENTYTWENTYFIVE_APPEARANCE_PANELS,
192
+ sections: exports.TWENTYTWENTYFIVE_APPEARANCE_SECTIONS,
193
+ };
@@ -0,0 +1,46 @@
1
+ import { parsePreviewTokenFromNextCtx, type PreviewDraftPayload } from '../preview/preview-draft';
2
+ import type { ResolvedSiteConfig, ThemeConfigurationSchema } from './configuration/types';
3
+ import { type ThemeMods } from './theme';
4
+ /** Draft payload returned by `GET /extension/themes/preview-draft/:token`. */
5
+ export type PreviewDraftResponse = PreviewDraftPayload;
6
+ export type NextPreviewCtx = Parameters<typeof parsePreviewTokenFromNextCtx>[0];
7
+ export type PreviewDraftFetcher = (token: string) => Promise<PreviewDraftResponse>;
8
+ /** Relative API path for a preview draft token. */
9
+ export declare function previewDraftApiPath(token: string): string;
10
+ /**
11
+ * Normalize API or axios-interceptor output into a preview draft.
12
+ * Accepts either `{ success, data }` envelopes or plain draft objects.
13
+ */
14
+ export declare function normalizePreviewDraftData(raw: unknown): PreviewDraftResponse;
15
+ /** Load short-lived customizer preview payload (public GET by token). */
16
+ export declare function fetchPreviewDraft(token: string, options?: {
17
+ baseURL?: string;
18
+ fetcher?: PreviewDraftFetcher;
19
+ }): Promise<PreviewDraftResponse>;
20
+ export type ResolveThemePreviewContextInput = {
21
+ globalSettingRaw: unknown;
22
+ setting: Record<string, unknown>;
23
+ locale?: string;
24
+ ctx?: NextPreviewCtx;
25
+ manifest?: {
26
+ options?: ThemeConfigurationSchema;
27
+ };
28
+ /** Override draft loader (e.g. theme-local axios with auth interceptors). */
29
+ fetchDraft?: PreviewDraftFetcher;
30
+ apiBaseURL?: string;
31
+ };
32
+ /** Fully resolved visitor runtime after applying optional preview draft. */
33
+ export type ResolvedThemePreviewContext = {
34
+ siteConfig: ResolvedSiteConfig;
35
+ setting: Record<string, unknown>;
36
+ colorPrimary: string;
37
+ effectiveMods: ThemeMods;
38
+ configThemeId: string;
39
+ isPreview: boolean;
40
+ draft: PreviewDraftResponse | null;
41
+ };
42
+ /**
43
+ * Resolve site config, setting overlays, and customizer mods for a Next.js `_app` request.
44
+ * Themes should call this once in `getInitialProps` and pass results into their context/provider.
45
+ */
46
+ export declare function resolveThemePreviewContext(input: ResolveThemePreviewContextInput): Promise<ResolvedThemePreviewContext>;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.previewDraftApiPath = previewDraftApiPath;
7
+ exports.normalizePreviewDraftData = normalizePreviewDraftData;
8
+ exports.fetchPreviewDraft = fetchPreviewDraft;
9
+ exports.resolveThemePreviewContext = resolveThemePreviewContext;
10
+ const axios_1 = __importDefault(require("axios"));
11
+ const api_1 = require("../api/api");
12
+ const preview_draft_1 = require("../preview/preview-draft");
13
+ const preview_mods_1 = require("../preview/preview-mods");
14
+ const resolve_1 = require("./configuration/resolve");
15
+ const theme_1 = require("./theme");
16
+ /** Relative API path for a preview draft token. */
17
+ function previewDraftApiPath(token) {
18
+ return `/extension/themes/preview-draft/${encodeURIComponent(token.trim())}`;
19
+ }
20
+ /**
21
+ * Normalize API or axios-interceptor output into a preview draft.
22
+ * Accepts either `{ success, data }` envelopes or plain draft objects.
23
+ */
24
+ function normalizePreviewDraftData(raw) {
25
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
26
+ return {};
27
+ }
28
+ const envelope = raw;
29
+ if ('success' in envelope && 'data' in envelope) {
30
+ if (envelope.success === false)
31
+ return {};
32
+ return normalizePreviewDraftData(envelope.data);
33
+ }
34
+ const draft = raw;
35
+ return {
36
+ themeId: typeof draft.themeId === 'string' ? draft.themeId : undefined,
37
+ mods: draft.mods,
38
+ configuration: draft.configuration,
39
+ };
40
+ }
41
+ /** Load short-lived customizer preview payload (public GET by token). */
42
+ async function fetchPreviewDraft(token, options) {
43
+ const trimmed = token.trim();
44
+ if (!trimmed)
45
+ return {};
46
+ if (options?.fetcher) {
47
+ return normalizePreviewDraftData(await options.fetcher(trimmed));
48
+ }
49
+ const base = (options?.baseURL ?? (0, api_1.resolveThemeApiBaseUrl)()).replace(/\/$/, '');
50
+ try {
51
+ const { data } = await axios_1.default.get(`${base}${previewDraftApiPath(trimmed)}`, {
52
+ timeout: 60000,
53
+ });
54
+ return normalizePreviewDraftData(data);
55
+ }
56
+ catch {
57
+ return {};
58
+ }
59
+ }
60
+ /**
61
+ * Resolve site config, setting overlays, and customizer mods for a Next.js `_app` request.
62
+ * Themes should call this once in `getInitialProps` and pass results into their context/provider.
63
+ */
64
+ async function resolveThemePreviewContext(input) {
65
+ const locale = input.locale ?? 'zh';
66
+ const themeState = (0, theme_1.getThemeStateFromGlobalSetting)(input.globalSettingRaw);
67
+ const previewToken = input.ctx ? (0, preview_draft_1.parsePreviewTokenFromNextCtx)(input.ctx) : '';
68
+ let draft = null;
69
+ if (previewToken) {
70
+ draft = await fetchPreviewDraft(previewToken, {
71
+ baseURL: input.apiBaseURL,
72
+ fetcher: input.fetchDraft,
73
+ });
74
+ }
75
+ const previewConfig = draft?.configuration ?? {};
76
+ const previewMods = draft?.mods ?? {};
77
+ const configThemeId = draft?.themeId ?? themeState.activeTheme;
78
+ const siteConfig = (0, resolve_1.resolveSiteConfig)(input.globalSettingRaw, configThemeId, locale, input.manifest, Object.keys(previewConfig).length > 0 ? previewConfig : undefined);
79
+ const savedMods = themeState.mods[configThemeId] ?? {};
80
+ const effectiveMods = (0, preview_mods_1.mergePreviewMods)(savedMods, previewMods);
81
+ const setting = (0, theme_1.applyThemeModsToSiteSetting)(input.setting, effectiveMods);
82
+ const colorPrimary = (0, theme_1.appearancePrimaryColor)(effectiveMods);
83
+ return {
84
+ siteConfig,
85
+ setting,
86
+ colorPrimary,
87
+ effectiveMods,
88
+ configThemeId,
89
+ isPreview: Boolean(previewToken),
90
+ draft,
91
+ };
92
+ }
@@ -0,0 +1,19 @@
1
+ /** Single site-wide notice (stored in `Setting.systemNoticeInfo` as JSON). */
2
+ export type SiteNoticeItem = {
3
+ id: string;
4
+ content: string;
5
+ /** Default true when omitted. */
6
+ enabled?: boolean;
7
+ };
8
+ /**
9
+ * Parse `systemNoticeInfo` from DB / API.
10
+ * Supports JSON array, legacy newline-separated text, or plain string.
11
+ */
12
+ export declare function parseSiteNotices(raw: unknown): SiteNoticeItem[];
13
+ /** Persist notices for `Setting.systemNoticeInfo`. */
14
+ export declare function serializeSiteNotices(items: SiteNoticeItem[]): string;
15
+ /** Ordered notice HTML/text lines for the visitor banner (enabled only). */
16
+ export declare function siteNoticeDisplayLines(raw: unknown): string[];
17
+ export declare function createEmptySiteNotice(): SiteNoticeItem;
18
+ /** Whether theme mod `siteNotice` is empty or identical to system `systemNoticeInfo`. */
19
+ export declare function siteNoticeModInheritsSystem(modRaw: string | undefined, systemRaw: unknown): boolean;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSiteNotices = parseSiteNotices;
4
+ exports.serializeSiteNotices = serializeSiteNotices;
5
+ exports.siteNoticeDisplayLines = siteNoticeDisplayLines;
6
+ exports.createEmptySiteNotice = createEmptySiteNotice;
7
+ exports.siteNoticeModInheritsSystem = siteNoticeModInheritsSystem;
8
+ function newNoticeId() {
9
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
10
+ return crypto.randomUUID();
11
+ }
12
+ return `notice-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
13
+ }
14
+ function normalizeItem(raw, index) {
15
+ if (typeof raw === 'string') {
16
+ const content = raw.trim();
17
+ if (!content)
18
+ return null;
19
+ return { id: `legacy-${index}`, content, enabled: true };
20
+ }
21
+ if (!raw || typeof raw !== 'object')
22
+ return null;
23
+ const o = raw;
24
+ const content = typeof o.content === 'string' ? o.content : typeof o.text === 'string' ? o.text : '';
25
+ if (!content.trim())
26
+ return null;
27
+ const id = typeof o.id === 'string' && o.id.trim() ? o.id.trim() : newNoticeId();
28
+ const enabled = o.enabled === false ? false : true;
29
+ return { id, content, enabled };
30
+ }
31
+ /**
32
+ * Parse `systemNoticeInfo` from DB / API.
33
+ * Supports JSON array, legacy newline-separated text, or plain string.
34
+ */
35
+ function parseSiteNotices(raw) {
36
+ if (raw == null)
37
+ return [];
38
+ if (Array.isArray(raw)) {
39
+ return raw.map((item, i) => normalizeItem(item, i)).filter((x) => x != null);
40
+ }
41
+ const text = String(raw).trim();
42
+ if (!text)
43
+ return [];
44
+ if (text.startsWith('[')) {
45
+ try {
46
+ const parsed = JSON.parse(text);
47
+ if (Array.isArray(parsed)) {
48
+ return parsed.map((item, i) => normalizeItem(item, i)).filter((x) => x != null);
49
+ }
50
+ }
51
+ catch {
52
+ /* fall through */
53
+ }
54
+ }
55
+ return text
56
+ .split(/\r?\n/)
57
+ .map((line) => line.trim())
58
+ .filter(Boolean)
59
+ .map((content, i) => ({ id: `legacy-${i}`, content, enabled: true }));
60
+ }
61
+ /** Persist notices for `Setting.systemNoticeInfo`. */
62
+ function serializeSiteNotices(items) {
63
+ const cleaned = items
64
+ .map((item) => ({
65
+ id: item.id?.trim() || newNoticeId(),
66
+ content: item.content?.trim() ?? '',
67
+ enabled: item.enabled !== false,
68
+ }))
69
+ .filter((item) => item.content.length > 0);
70
+ return JSON.stringify(cleaned);
71
+ }
72
+ /** Ordered notice HTML/text lines for the visitor banner (enabled only). */
73
+ function siteNoticeDisplayLines(raw) {
74
+ return parseSiteNotices(raw)
75
+ .filter((n) => n.enabled !== false)
76
+ .map((n) => n.content);
77
+ }
78
+ function createEmptySiteNotice() {
79
+ return { id: newNoticeId(), content: '', enabled: true };
80
+ }
81
+ /** Whether theme mod `siteNotice` is empty or identical to system `systemNoticeInfo`. */
82
+ function siteNoticeModInheritsSystem(modRaw, systemRaw) {
83
+ if (!modRaw?.trim())
84
+ return true;
85
+ const modSerialized = serializeSiteNotices(parseSiteNotices(modRaw));
86
+ const sysSerialized = serializeSiteNotices(parseSiteNotices(systemRaw));
87
+ return modSerialized === sysSerialized;
88
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Site-wide vs theme-owned settings.
3
+ *
4
+ * - **System settings** (`SYSTEM_SETTING_FIELD_KEYS`): shared defaults (URLs, site identity,
5
+ * SEO, i18n, mail). Edited under admin → 设置.
6
+ * - **Theme mods** (`THEME_BRANDING_*`): per-theme overrides in `globalSetting.theme.mods[themeId]`.
7
+ * Empty mod → inherit the matching system setting at runtime.
8
+ * - **Theme-only** (footer / 关于我们): appearance only, no system setting column.
9
+ */
10
+ import { THEME_BRANDING_DIRECT_MODS } from './branding-mods';
11
+ import { type GlobalSettingWithTheme } from './theme';
12
+ export { applyThemeModsToSiteSetting, seedThemeModsFromLegacySetting, THEME_BRANDING_DIRECT_MODS, THEME_BRANDING_MOD_TO_SETTING, } from './branding-mods';
13
+ /** Site identity defaults (admin → 设置 → 常规). Themes may override via customizer mods. */
14
+ export declare const SITE_DEFAULT_SETTING_KEYS: readonly ["systemTitle", "systemSubTitle", "systemLogo", "systemFavicon", "systemNoticeInfo"];
15
+ /** SEO defaults (admin → 设置 → SEO). Themes may override via customizer mods. */
16
+ export declare const SEO_DEFAULT_SETTING_KEYS: readonly ["seoKeyword", "seoDesc", "baiduAnalyticsId", "googleAnalyticsId"];
17
+ /** Theme-only appearance (no system setting column). */
18
+ export declare const THEME_ONLY_APPEARANCE_KEYS: readonly ["systemFooterInfo", "aboutUsGithubUrl", "aboutUsCommentQr", "aboutUsWechatQr"];
19
+ /** DB columns managed as system configuration (admin → 设置). */
20
+ export declare const SYSTEM_SETTING_FIELD_KEYS: readonly ["i18n", "systemUrl", "adminSystemUrl", "systemTitle", "systemSubTitle", "systemLogo", "systemFavicon", "systemNoticeInfo", "seoKeyword", "seoDesc", "baiduAnalyticsId", "googleAnalyticsId", "smtpHost", "smtpPort", "smtpUser", "smtpPass", "smtpFromUser"];
21
+ export type SystemSettingFieldKey = (typeof SYSTEM_SETTING_FIELD_KEYS)[number];
22
+ /** @deprecated Use SITE_DEFAULT_SETTING_KEYS + SEO_DEFAULT_SETTING_KEYS */
23
+ export declare const LEGACY_APPEARANCE_SETTING_KEYS: readonly ["systemTitle", "systemSubTitle", "systemLogo", "systemFavicon", "systemNoticeInfo", "seoKeyword", "seoDesc", "baiduAnalyticsId", "googleAnalyticsId", "systemFooterInfo", "aboutUsGithubUrl", "aboutUsCommentQr", "aboutUsWechatQr"];
24
+ export type ThemeBrandingDirectMod = (typeof THEME_BRANDING_DIRECT_MODS)[number];
25
+ /** Keys exposed to anonymous theme `setting/get` (plus computed appearance overlay). */
26
+ export declare const PUBLIC_SETTING_KEYS: readonly ["i18n", "systemUrl", "adminSystemUrl", "globalSetting", "systemTitle", "systemSubTitle", "systemLogo", "systemFavicon", "systemNoticeInfo", "seoKeyword", "seoDesc", "baiduAnalyticsId", "googleAnalyticsId", "systemFooterInfo", "aboutUsGithubUrl", "aboutUsCommentQr", "aboutUsWechatQr"];
27
+ /** Copy legacy appearance columns into theme mods when mods are empty. */
28
+ export declare function migrateLegacyAppearanceToThemeMods(globalRaw: unknown, settingRow: Record<string, unknown>): {
29
+ global: GlobalSettingWithTheme;
30
+ changed: boolean;
31
+ };
32
+ /** Strip non-system fields from admin PATCH payloads. */
33
+ export declare function pickSystemSettingPatch(patch: Record<string, unknown>): Record<string, unknown>;
34
+ /** Overlay active theme mods onto a Setting row for runtime (themes, mail templates). */
35
+ export declare function resolveEffectiveSettingRow<T extends Record<string, unknown>>(row: T, globalRaw?: unknown, themeId?: string): T;
36
+ /** Public API view: system keys + branding overlay + globalSetting. */
37
+ export declare function buildPublicSettingView(row: Record<string, unknown>): Record<string, unknown>;