@fecommunity/reactpress-toolkit 3.0.4 → 3.1.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.
- package/README.md +194 -309
- package/dist/admin/index.d.ts +2 -0
- package/dist/admin/index.js +18 -0
- package/dist/admin/permissions.d.ts +5 -0
- package/dist/admin/permissions.js +33 -0
- package/dist/admin/registry.d.ts +62 -0
- package/dist/admin/registry.js +79 -0
- package/dist/api/HttpClient.d.ts +2 -2
- package/dist/api/HttpClient.js +1 -1
- package/dist/api/Smtp.d.ts +17 -0
- package/dist/api/Smtp.js +15 -0
- package/dist/api/instance.d.ts +1 -1
- package/dist/api/instance.js +3 -3
- package/dist/app/createReactPressApp.d.ts +88 -0
- package/dist/app/createReactPressApp.js +262 -0
- package/dist/app/createThemeApp.d.ts +6 -0
- package/dist/app/createThemeApp.js +47 -0
- package/dist/app/devChunkRecovery.d.ts +2 -0
- package/dist/app/devChunkRecovery.js +68 -0
- package/dist/app/index.d.ts +39 -0
- package/dist/app/index.js +11 -0
- package/dist/config/env.js +29 -15
- package/dist/config/global.d.ts +7 -1
- package/dist/config/global.js +9 -3
- package/dist/config/i18n.js +27 -11
- package/dist/config/index.d.ts +3 -3
- package/dist/config/index.js +6 -5
- package/dist/{locales → config/locales}/en.json +31 -3
- package/dist/{locales → config/locales}/zh.json +31 -3
- package/dist/dev/index.d.ts +3 -0
- package/dist/dev/index.js +12 -0
- package/dist/dev/portRedirect.d.ts +20 -0
- package/dist/dev/portRedirect.js +93 -0
- package/dist/dev/vitePortRedirectPlugin.d.ts +24 -0
- package/dist/dev/vitePortRedirectPlugin.js +40 -0
- package/dist/extension/branding-mods.d.ts +10 -0
- package/dist/extension/branding-mods.js +65 -0
- package/dist/extension/configuration/defaults.d.ts +3 -0
- package/dist/extension/configuration/defaults.js +32 -0
- package/dist/extension/configuration/formily.d.ts +10 -0
- package/dist/extension/configuration/formily.js +170 -0
- package/dist/extension/configuration/index.d.ts +7 -0
- package/dist/extension/configuration/index.js +28 -0
- package/dist/extension/configuration/paths.d.ts +4 -0
- package/dist/extension/configuration/paths.js +50 -0
- package/dist/extension/configuration/presets/twentytwentyfive.d.ts +7 -0
- package/dist/extension/configuration/presets/twentytwentyfive.js +94 -0
- package/dist/extension/configuration/resolve.d.ts +24 -0
- package/dist/extension/configuration/resolve.js +98 -0
- package/dist/extension/configuration/types.d.ts +68 -0
- package/dist/extension/configuration/types.js +3 -0
- package/dist/extension/configuration/validate.d.ts +8 -0
- package/dist/extension/configuration/validate.js +21 -0
- package/dist/extension/index.d.ts +9 -0
- package/dist/extension/index.js +35 -0
- package/dist/extension/manifest-normalize.d.ts +5 -0
- package/dist/extension/manifest-normalize.js +75 -0
- package/dist/extension/node.d.ts +2 -0
- package/dist/extension/node.js +6 -0
- package/dist/extension/presets/twentytwentyfive-appearance.d.ts +10 -0
- package/dist/extension/presets/twentytwentyfive-appearance.js +193 -0
- package/dist/extension/presets/twentytwentyfive-customizer.d.ts +19 -0
- package/dist/extension/presets/twentytwentyfive-customizer.js +199 -0
- package/dist/extension/preview.d.ts +46 -0
- package/dist/extension/preview.js +92 -0
- package/dist/extension/site-notices.d.ts +19 -0
- package/dist/extension/site-notices.js +88 -0
- package/dist/extension/site-settings.d.ts +37 -0
- package/dist/extension/site-settings.js +144 -0
- package/dist/extension/theme-admin-locale.d.ts +11 -0
- package/dist/extension/theme-admin-locale.io.d.ts +2 -0
- package/dist/extension/theme-admin-locale.io.js +54 -0
- package/dist/extension/theme-admin-locale.js +81 -0
- package/dist/extension/theme.d.ts +89 -0
- package/dist/extension/theme.js +93 -0
- package/dist/extension/twentytwentyfive-vars.d.ts +7 -0
- package/dist/extension/twentytwentyfive-vars.js +100 -0
- package/dist/index.d.ts +15 -7
- package/dist/index.js +44 -22
- package/dist/plugin/admin/index.d.ts +2 -0
- package/dist/plugin/admin/index.js +18 -0
- package/dist/plugin/admin/permissions.d.ts +5 -0
- package/dist/plugin/admin/permissions.js +33 -0
- package/dist/plugin/admin/registry.d.ts +62 -0
- package/dist/plugin/admin/registry.js +79 -0
- package/dist/plugin/client/client.d.ts +14 -0
- package/dist/plugin/client/client.js +95 -0
- package/dist/plugin/client/index.d.ts +4 -0
- package/dist/plugin/client/index.js +11 -0
- package/dist/plugin/client/runtime.d.ts +18 -0
- package/dist/plugin/client/runtime.js +30 -0
- package/dist/plugin/dev/index.d.ts +4 -0
- package/dist/plugin/dev/index.js +16 -0
- package/dist/plugin/dev/portRedirect.d.ts +26 -0
- package/dist/plugin/dev/portRedirect.js +111 -0
- package/dist/plugin/dev/vitePortRedirectPlugin.d.ts +24 -0
- package/dist/plugin/dev/vitePortRedirectPlugin.js +40 -0
- package/dist/plugin/index.d.ts +9 -0
- package/dist/plugin/index.js +48 -0
- package/dist/plugin/react/client.d.ts +14 -0
- package/dist/plugin/react/client.js +95 -0
- package/dist/plugin/react/index.d.ts +2 -0
- package/dist/plugin/react/index.js +18 -0
- package/dist/plugin/react/runtime.d.ts +18 -0
- package/dist/plugin/react/runtime.js +30 -0
- package/dist/primitives/AntdStyleTransitionFix.d.ts +2 -0
- package/dist/primitives/AntdStyleTransitionFix.js +16 -0
- package/dist/primitives/Badge.d.ts +7 -0
- package/dist/primitives/Badge.js +9 -0
- package/dist/primitives/Button.d.ts +10 -0
- package/dist/primitives/Button.js +38 -0
- package/dist/primitives/ColorModeToggle.d.ts +8 -0
- package/dist/primitives/ColorModeToggle.js +13 -0
- package/dist/primitives/IconButton.d.ts +7 -0
- package/dist/primitives/IconButton.js +13 -0
- package/dist/primitives/ScrollToTarget.d.ts +9 -0
- package/dist/primitives/ScrollToTarget.js +48 -0
- package/dist/primitives/Separator.d.ts +7 -0
- package/dist/primitives/Separator.js +9 -0
- package/dist/primitives/Skeleton.d.ts +7 -0
- package/dist/primitives/Skeleton.js +9 -0
- package/dist/primitives/Slot.d.ts +10 -0
- package/dist/primitives/Slot.js +25 -0
- package/dist/primitives/Spinner.d.ts +6 -0
- package/dist/primitives/Spinner.js +9 -0
- package/dist/primitives/animation/ConditionTransition.d.ts +8 -0
- package/dist/primitives/animation/ConditionTransition.js +13 -0
- package/dist/primitives/animation/ListTrail.d.ts +10 -0
- package/dist/primitives/animation/ListTrail.js +14 -0
- package/dist/primitives/animation/Opacity.d.ts +3 -0
- package/dist/primitives/animation/Opacity.js +10 -0
- package/dist/primitives/animation/Spring.d.ts +9 -0
- package/dist/primitives/animation/Spring.js +29 -0
- package/dist/primitives/animation/index.d.ts +7 -0
- package/dist/primitives/animation/index.js +11 -0
- package/dist/primitives/cn.d.ts +4 -0
- package/dist/primitives/cn.js +7 -0
- package/dist/primitives/icons.d.ts +4 -0
- package/dist/primitives/icons.js +15 -0
- package/dist/primitives/index.d.ts +22 -0
- package/dist/primitives/index.js +44 -0
- package/dist/react/client.d.ts +14 -0
- package/dist/react/client.js +95 -0
- package/dist/react/index.d.ts +4 -0
- package/dist/react/index.js +11 -0
- package/dist/react/runtime.d.ts +18 -0
- package/dist/react/runtime.js +30 -0
- package/dist/theme/antdDocument.d.ts +18 -0
- package/dist/theme/antdDocument.js +59 -0
- package/dist/theme/api/api-data.d.ts +2 -0
- package/dist/theme/api/api-data.js +8 -0
- package/dist/theme/api/api.d.ts +28 -0
- package/dist/theme/api/api.js +27 -0
- package/dist/theme/api/httpClient.d.ts +24 -0
- package/dist/theme/api/httpClient.js +83 -0
- package/dist/theme/api/json.d.ts +1 -0
- package/dist/theme/api/json.js +5 -0
- package/dist/theme/api/jsonp.d.ts +1 -0
- package/dist/theme/api/jsonp.js +5 -0
- package/dist/theme/api-data.d.ts +12 -0
- package/dist/theme/api-data.js +22 -0
- package/dist/theme/api.d.ts +28 -0
- package/dist/theme/api.js +27 -0
- package/dist/theme/appearance.d.ts +4 -0
- package/dist/theme/appearance.js +16 -0
- package/dist/theme/assets.d.ts +2 -0
- package/dist/theme/assets.js +27 -0
- package/dist/theme/authSession.d.ts +16 -0
- package/dist/theme/authSession.js +92 -0
- package/dist/theme/build/antdDocument.d.ts +145 -0
- package/dist/theme/build/antdDocument.js +70 -0
- package/dist/theme/build/next-config.d.ts +17 -0
- package/dist/theme/build/next-config.js +100 -0
- package/dist/theme/build/node.d.ts +2 -0
- package/dist/theme/build/node.js +6 -0
- package/dist/theme/colorMode.d.ts +12 -0
- package/dist/theme/colorMode.js +45 -0
- package/dist/theme/commentAuthor.d.ts +17 -0
- package/dist/theme/commentAuthor.js +48 -0
- package/dist/theme/content/archiveSlim.d.ts +7 -0
- package/dist/theme/content/archiveSlim.js +38 -0
- package/dist/theme/content/articleSlim.d.ts +10 -0
- package/dist/theme/content/articleSlim.js +35 -0
- package/dist/theme/content/assets.d.ts +8 -0
- package/dist/theme/content/assets.js +74 -0
- package/dist/theme/content/carouselArticles.d.ts +10 -0
- package/dist/theme/content/carouselArticles.js +39 -0
- package/dist/theme/content/excerpt.d.ts +15 -0
- package/dist/theme/content/excerpt.js +42 -0
- package/dist/theme/content/nav.d.ts +10 -0
- package/dist/theme/content/nav.js +30 -0
- package/dist/theme/content/seo.d.ts +6 -0
- package/dist/theme/content/seo.js +12 -0
- package/dist/theme/createAntdApp.d.ts +106 -0
- package/dist/theme/createAntdApp.js +175 -0
- package/dist/theme/createApp.d.ts +10 -0
- package/dist/theme/createApp.js +141 -0
- package/dist/theme/createCatalogApp.d.ts +108 -0
- package/dist/theme/createCatalogApp.js +168 -0
- package/dist/theme/customizer.d.ts +1 -0
- package/dist/theme/customizer.js +5 -0
- package/dist/theme/excerpt.d.ts +16 -0
- package/dist/theme/excerpt.js +31 -0
- package/dist/theme/extension/branding-mods.d.ts +10 -0
- package/dist/theme/extension/branding-mods.js +65 -0
- package/dist/theme/extension/configuration/defaults.d.ts +3 -0
- package/dist/theme/extension/configuration/defaults.js +32 -0
- package/dist/theme/extension/configuration/formily.d.ts +10 -0
- package/dist/theme/extension/configuration/formily.js +170 -0
- package/dist/theme/extension/configuration/index.d.ts +7 -0
- package/dist/theme/extension/configuration/index.js +28 -0
- package/dist/theme/extension/configuration/paths.d.ts +1 -0
- package/dist/theme/extension/configuration/paths.js +7 -0
- package/dist/theme/extension/configuration/presets/twentytwentyfive.d.ts +7 -0
- package/dist/theme/extension/configuration/presets/twentytwentyfive.js +94 -0
- package/dist/theme/extension/configuration/resolve.d.ts +24 -0
- package/dist/theme/extension/configuration/resolve.js +98 -0
- package/dist/theme/extension/configuration/types.d.ts +68 -0
- package/dist/theme/extension/configuration/types.js +3 -0
- package/dist/theme/extension/configuration/validate.d.ts +8 -0
- package/dist/theme/extension/configuration/validate.js +21 -0
- package/dist/theme/extension/index.d.ts +11 -0
- package/dist/theme/extension/index.js +38 -0
- package/dist/theme/extension/manifest-normalize.d.ts +5 -0
- package/dist/theme/extension/manifest-normalize.js +75 -0
- package/dist/theme/extension/presets/twentytwentyfive-appearance.d.ts +10 -0
- package/dist/theme/extension/presets/twentytwentyfive-appearance.js +193 -0
- package/dist/theme/extension/preview.d.ts +46 -0
- package/dist/theme/extension/preview.js +92 -0
- package/dist/theme/extension/site-notices.d.ts +19 -0
- package/dist/theme/extension/site-notices.js +88 -0
- package/dist/theme/extension/site-settings.d.ts +37 -0
- package/dist/theme/extension/site-settings.js +144 -0
- package/dist/theme/extension/siteNav.d.ts +18 -0
- package/dist/theme/extension/siteNav.js +17 -0
- package/dist/theme/extension/theme-admin-locale.d.ts +11 -0
- package/dist/theme/extension/theme-admin-locale.io.d.ts +2 -0
- package/dist/theme/extension/theme-admin-locale.io.js +54 -0
- package/dist/theme/extension/theme-admin-locale.js +68 -0
- package/dist/theme/extension/theme.d.ts +89 -0
- package/dist/theme/extension/theme.js +93 -0
- package/dist/theme/extension/twentytwentyfive-vars.d.ts +9 -0
- package/dist/theme/extension/twentytwentyfive-vars.js +103 -0
- package/dist/theme/fetch.d.ts +134 -0
- package/dist/theme/fetch.js +241 -0
- package/dist/theme/format.d.ts +16 -0
- package/dist/theme/format.js +48 -0
- package/dist/theme/httpClient.d.ts +20 -0
- package/dist/theme/httpClient.js +89 -0
- package/dist/theme/index.d.ts +63 -0
- package/dist/theme/index.js +226 -0
- package/dist/theme/json.d.ts +1 -0
- package/dist/theme/json.js +17 -0
- package/dist/theme/jsonp.d.ts +8 -0
- package/dist/theme/jsonp.js +27 -0
- package/dist/theme/locale.d.ts +23 -0
- package/dist/theme/locale.js +55 -0
- package/dist/theme/nav.d.ts +10 -0
- package/dist/theme/nav.js +30 -0
- package/dist/theme/next-config.d.ts +2 -0
- package/dist/theme/next-config.js +18 -0
- package/dist/theme/node.d.ts +2 -0
- package/dist/theme/node.js +18 -0
- package/dist/theme/preview/preview-config.d.ts +13 -0
- package/dist/theme/preview/preview-config.js +65 -0
- package/dist/theme/preview/preview-draft.d.ts +19 -0
- package/dist/theme/preview/preview-draft.js +51 -0
- package/dist/theme/preview/preview-mods.d.ts +16 -0
- package/dist/theme/preview/preview-mods.js +78 -0
- package/dist/theme/preview-config.d.ts +13 -0
- package/dist/theme/preview-config.js +65 -0
- package/dist/theme/preview-draft.d.ts +19 -0
- package/dist/theme/preview-draft.js +51 -0
- package/dist/theme/preview-mods.d.ts +16 -0
- package/dist/theme/preview-mods.js +78 -0
- package/dist/theme/providers/index.d.ts +118 -0
- package/dist/theme/providers/index.js +251 -0
- package/dist/theme/providers/setup.d.ts +124 -0
- package/dist/theme/providers/setup.js +29 -0
- package/dist/theme/runtime.d.ts +18 -0
- package/dist/theme/runtime.js +19 -0
- package/dist/theme/seo.d.ts +6 -0
- package/dist/theme/seo.js +12 -0
- package/dist/theme/server.d.ts +65 -0
- package/dist/theme/server.js +177 -0
- package/dist/theme/setting.d.ts +12 -0
- package/dist/theme/setting.js +42 -0
- package/dist/theme/ssr/bootstrap.d.ts +48 -0
- package/dist/theme/ssr/bootstrap.js +112 -0
- package/dist/theme/ssr/fetch.d.ts +134 -0
- package/dist/theme/ssr/fetch.js +264 -0
- package/dist/theme/ssr/format.d.ts +3 -0
- package/dist/theme/ssr/format.js +8 -0
- package/dist/theme/ssr/pageProps.d.ts +62 -0
- package/dist/theme/ssr/pageProps.js +138 -0
- package/dist/theme/ssr/setting.d.ts +12 -0
- package/dist/theme/ssr/setting.js +42 -0
- package/dist/theme/ssr/slimBootstrap.d.ts +11 -0
- package/dist/theme/ssr/slimBootstrap.js +75 -0
- package/dist/theme/ssr/static.d.ts +10 -0
- package/dist/theme/ssr/static.js +17 -0
- package/dist/theme/ssr/templates.d.ts +35 -0
- package/dist/theme/ssr/templates.js +50 -0
- package/dist/theme/static.d.ts +10 -0
- package/dist/theme/static.js +17 -0
- package/dist/theme/templates.d.ts +27 -0
- package/dist/theme/templates.js +38 -0
- package/dist/theme/ui-optional.d.ts +1 -0
- package/dist/theme/ui-optional.js +21 -0
- package/dist/theme/visitor/appearance.d.ts +4 -0
- package/dist/theme/visitor/appearance.js +16 -0
- package/dist/theme/visitor/authSession.d.ts +16 -0
- package/dist/theme/visitor/authSession.js +92 -0
- package/dist/theme/visitor/colorMode.d.ts +17 -0
- package/dist/theme/visitor/colorMode.js +59 -0
- package/dist/theme/visitor/commentAuthor.d.ts +16 -0
- package/dist/theme/visitor/commentAuthor.js +45 -0
- package/dist/theme/visitor/i18n.d.ts +4 -0
- package/dist/theme/visitor/i18n.js +28 -0
- package/dist/theme/visitor/locale.d.ts +23 -0
- package/dist/theme/visitor/locale.js +72 -0
- package/dist/theme/visitor/runtime.d.ts +18 -0
- package/dist/theme/visitor/runtime.js +19 -0
- package/dist/theme/visitor/visitorLocale.d.ts +11 -0
- package/dist/theme/visitor/visitorLocale.js +56 -0
- package/dist/theme/visitorLocale.d.ts +6 -0
- package/dist/theme/visitorLocale.js +39 -0
- package/dist/types/index.d.ts +79 -68
- package/dist/ui/AntdStyleTransitionFix.d.ts +5 -0
- package/dist/ui/AntdStyleTransitionFix.js +16 -0
- package/dist/ui/ArchiveEmptyState.d.ts +13 -0
- package/dist/ui/ArchiveEmptyState.js +8 -0
- package/dist/ui/ArchivePageLayout.d.ts +10 -0
- package/dist/ui/ArchivePageLayout.js +8 -0
- package/dist/ui/ArticleCard.d.ts +27 -0
- package/dist/ui/ArticleCard.js +16 -0
- package/dist/ui/ArticleList.d.ts +14 -0
- package/dist/ui/ArticleList.js +16 -0
- package/dist/ui/BaseGlobalStyles.d.ts +5 -0
- package/dist/ui/BaseGlobalStyles.js +18 -0
- package/dist/ui/LocaleSwitcher.d.ts +7 -0
- package/dist/ui/LocaleSwitcher.js +15 -0
- package/dist/ui/NavMenu.d.ts +16 -0
- package/dist/ui/NavMenu.js +8 -0
- package/dist/ui/NotFoundPanel.d.ts +11 -0
- package/dist/ui/NotFoundPanel.js +8 -0
- package/dist/ui/PageHeader.d.ts +10 -0
- package/dist/ui/PageHeader.js +8 -0
- package/dist/ui/SiteBranding.d.ts +10 -0
- package/dist/ui/SiteBranding.js +14 -0
- package/dist/ui/SiteDocument.d.ts +20 -0
- package/dist/ui/SiteDocument.js +13 -0
- package/dist/ui/SiteDocumentFallback.d.ts +8 -0
- package/dist/ui/SiteDocumentFallback.js +9 -0
- package/dist/ui/SiteLogo.d.ts +6 -0
- package/dist/ui/SiteLogo.js +16 -0
- package/dist/ui/SiteTagline.d.ts +7 -0
- package/dist/ui/SiteTagline.js +15 -0
- package/dist/ui/TaxonomyList.d.ts +25 -0
- package/dist/ui/TaxonomyList.js +30 -0
- package/dist/ui/ThemeCssVars.d.ts +2 -0
- package/dist/ui/ThemeCssVars.js +85 -0
- package/dist/ui/ThemeLayout.d.ts +13 -0
- package/dist/ui/ThemeLayout.js +11 -0
- package/dist/ui/components/AntdStyleTransitionFix.d.ts +5 -0
- package/dist/ui/components/AntdStyleTransitionFix.js +16 -0
- package/dist/ui/components/ArchiveEmptyState.d.ts +13 -0
- package/dist/ui/components/ArchiveEmptyState.js +8 -0
- package/dist/ui/components/ArchivePageLayout.d.ts +10 -0
- package/dist/ui/components/ArchivePageLayout.js +8 -0
- package/dist/ui/components/ArticleCard.d.ts +27 -0
- package/dist/ui/components/ArticleCard.js +16 -0
- package/dist/ui/components/ArticleList.d.ts +14 -0
- package/dist/ui/components/ArticleList.js +16 -0
- package/dist/ui/components/BaseGlobalStyles.d.ts +5 -0
- package/dist/ui/components/BaseGlobalStyles.js +18 -0
- package/dist/ui/components/LocaleSwitcher.d.ts +10 -0
- package/dist/ui/components/LocaleSwitcher.js +11 -0
- package/dist/ui/components/NavMenu.d.ts +16 -0
- package/dist/ui/components/NavMenu.js +8 -0
- package/dist/ui/components/NotFoundPanel.d.ts +11 -0
- package/dist/ui/components/NotFoundPanel.js +8 -0
- package/dist/ui/components/PageHeader.d.ts +10 -0
- package/dist/ui/components/PageHeader.js +8 -0
- package/dist/ui/components/RouteProgress.d.ts +9 -0
- package/dist/ui/components/RouteProgress.js +40 -0
- package/dist/ui/components/SiteAnalytics.d.ts +5 -0
- package/dist/ui/components/SiteAnalytics.js +42 -0
- package/dist/ui/components/SiteBranding.d.ts +10 -0
- package/dist/ui/components/SiteBranding.js +14 -0
- package/dist/ui/components/SiteDocument.d.ts +20 -0
- package/dist/ui/components/SiteDocument.js +13 -0
- package/dist/ui/components/SiteDocumentFallback.d.ts +8 -0
- package/dist/ui/components/SiteDocumentFallback.js +9 -0
- package/dist/ui/components/SiteLogo.d.ts +8 -0
- package/dist/ui/components/SiteLogo.js +23 -0
- package/dist/ui/components/SiteSeo.d.ts +13 -0
- package/dist/ui/components/SiteSeo.js +19 -0
- package/dist/ui/components/SiteTagline.d.ts +7 -0
- package/dist/ui/components/SiteTagline.js +15 -0
- package/dist/ui/components/TaxonomyList.d.ts +25 -0
- package/dist/ui/components/TaxonomyList.js +30 -0
- package/dist/ui/components/ThemeCssVars.d.ts +2 -0
- package/dist/ui/components/ThemeCssVars.js +85 -0
- package/dist/ui/components/ThemeLayout.d.ts +13 -0
- package/dist/ui/components/ThemeLayout.js +11 -0
- package/dist/ui/components/content/ArticleReader.d.ts +45 -0
- package/dist/ui/components/content/ArticleReader.js +23 -0
- package/dist/ui/components/content/ArticleToc.d.ts +21 -0
- package/dist/ui/components/content/ArticleToc.js +75 -0
- package/dist/ui/components/content/HtmlContent.d.ts +15 -0
- package/dist/ui/components/content/HtmlContent.js +237 -0
- package/dist/ui/components/content/Image.d.ts +9 -0
- package/dist/ui/components/content/Image.js +13 -0
- package/dist/ui/components/content/ImageViewer.d.ts +8 -0
- package/dist/ui/components/content/ImageViewer.js +33 -0
- package/dist/ui/components/content/LocaleTime.d.ts +9 -0
- package/dist/ui/components/content/LocaleTime.js +63 -0
- package/dist/ui/components/content/index.d.ts +14 -0
- package/dist/ui/components/content/index.js +18 -0
- package/dist/ui/components/toolbar/LocaleToggleButton.d.ts +8 -0
- package/dist/ui/components/toolbar/LocaleToggleButton.js +18 -0
- package/dist/ui/components/toolbar/ThemeToggleButton.d.ts +7 -0
- package/dist/ui/components/toolbar/ThemeToggleButton.js +10 -0
- package/dist/ui/components/toolbar/ToolbarIconButton.d.ts +7 -0
- package/dist/ui/components/toolbar/ToolbarIconButton.js +22 -0
- package/dist/ui/components/toolbar/constants.d.ts +5 -0
- package/dist/ui/components/toolbar/constants.js +8 -0
- package/dist/ui/components/toolbar/icons.d.ts +17 -0
- package/dist/ui/components/toolbar/icons.js +44 -0
- package/dist/ui/components/toolbar/index.d.ts +9 -0
- package/dist/ui/components/toolbar/index.js +25 -0
- package/dist/ui/components/toolbar/locale-label.d.ts +3 -0
- package/dist/ui/components/toolbar/locale-label.js +19 -0
- package/dist/ui/context/LocaleContext.d.ts +15 -0
- package/dist/ui/context/LocaleContext.js +59 -0
- package/dist/ui/context/ReactPressProvider.d.ts +3 -0
- package/dist/ui/context/ReactPressProvider.js +10 -0
- package/dist/ui/context/SiteCatalogContext.d.ts +41 -0
- package/dist/ui/context/SiteCatalogContext.js +60 -0
- package/dist/ui/context/ThemeRuntimeContext.d.ts +21 -0
- package/dist/ui/context/ThemeRuntimeContext.js +59 -0
- package/dist/ui/context/index.d.ts +8 -0
- package/dist/ui/context/index.js +26 -0
- package/dist/ui/context/siteCatalogTypes.d.ts +64 -0
- package/dist/ui/context/siteCatalogTypes.js +20 -0
- package/dist/ui/context/types.d.ts +34 -0
- package/dist/ui/context/types.js +2 -0
- package/dist/ui/hooks/index.d.ts +12 -0
- package/dist/ui/hooks/index.js +29 -0
- package/dist/ui/hooks/useAsyncLoading.d.ts +4 -0
- package/dist/ui/hooks/useAsyncLoading.js +31 -0
- package/dist/ui/hooks/useForceUpdate.d.ts +2 -0
- package/dist/ui/hooks/useForceUpdate.js +11 -0
- package/dist/ui/hooks/useNavActive.d.ts +5 -0
- package/dist/ui/hooks/useNavActive.js +11 -0
- package/dist/ui/hooks/usePagination.d.ts +34 -0
- package/dist/ui/hooks/usePagination.js +55 -0
- package/dist/ui/hooks/useReportArticleView.d.ts +4 -0
- package/dist/ui/hooks/useReportArticleView.js +40 -0
- package/dist/ui/hooks/useReportPageView.d.ts +11 -0
- package/dist/ui/hooks/useReportPageView.js +28 -0
- package/dist/ui/hooks/useRouteParam.d.ts +5 -0
- package/dist/ui/hooks/useRouteParam.js +15 -0
- package/dist/ui/hooks/useToggle.d.ts +2 -0
- package/dist/ui/hooks/useToggle.js +17 -0
- package/dist/ui/hooks/useWarningOnExit.d.ts +5 -0
- package/dist/ui/hooks/useWarningOnExit.js +59 -0
- package/dist/ui/index.d.ts +43 -0
- package/dist/ui/index.js +87 -0
- package/dist/utils/api-envelope.d.ts +14 -0
- package/dist/utils/api-envelope.js +31 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.js +24 -0
- package/dist/utils/cookie.d.ts +2 -0
- package/dist/utils/cookie.js +15 -0
- package/dist/utils/date.d.ts +4 -0
- package/dist/utils/date.js +45 -0
- package/dist/utils/email.d.ts +3 -0
- package/dist/utils/email.js +9 -0
- package/dist/utils/error.d.ts +7 -0
- package/dist/utils/error.js +26 -0
- package/dist/utils/image.d.ts +7 -0
- package/dist/utils/image.js +34 -0
- package/dist/utils/index.d.ts +15 -33
- package/dist/utils/index.js +37 -57
- package/dist/utils/json.d.ts +2 -0
- package/dist/utils/json.js +18 -0
- package/dist/utils/jsonp.d.ts +8 -0
- package/dist/utils/jsonp.js +27 -0
- package/dist/utils/object.d.ts +7 -0
- package/dist/utils/object.js +63 -0
- package/dist/utils/setting.d.ts +12 -0
- package/dist/utils/setting.js +13 -0
- package/dist/utils/string.d.ts +4 -0
- package/dist/utils/string.js +15 -0
- package/dist/utils/viewport.d.ts +3 -0
- package/dist/utils/viewport.js +14 -0
- package/package.json +129 -16
- package/LICENSE +0 -21
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SiteBranding = SiteBranding;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ThemeRuntimeContext_1 = require("../context/ThemeRuntimeContext");
|
|
6
|
+
/**
|
|
7
|
+
* Site title: customizer `displayTitle` when set, otherwise `systemTitle` from site settings.
|
|
8
|
+
*/
|
|
9
|
+
function SiteBranding({ fallback = '', className, as: Tag = 'span' }) {
|
|
10
|
+
const mod = (0, ThemeRuntimeContext_1.useThemeMod)('displayTitle', '');
|
|
11
|
+
const { siteName } = (0, ThemeRuntimeContext_1.useSiteMeta)();
|
|
12
|
+
const title = mod.trim() || siteName.trim() || fallback;
|
|
13
|
+
return (0, jsx_runtime_1.jsx)(Tag, { className: className, children: title });
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface SiteDocumentProps {
|
|
3
|
+
/** Pass Next `<Head>` from `next/head` in the theme page. */
|
|
4
|
+
head?: React.ReactNode;
|
|
5
|
+
header?: React.ReactNode;
|
|
6
|
+
footer?: React.ReactNode;
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
className?: string;
|
|
9
|
+
mainClassName?: string;
|
|
10
|
+
contentClassName?: string;
|
|
11
|
+
wrapContent?: boolean;
|
|
12
|
+
globalCss?: string;
|
|
13
|
+
skipBaseStyles?: boolean;
|
|
14
|
+
/** Skip CSS vars when `createThemeApp` already injects `ThemeCssVars` in `_app`. */
|
|
15
|
+
skipCssVars?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* WordPress-style shell: head slot + header + main + footer (like `get_header()` / `get_footer()`).
|
|
19
|
+
*/
|
|
20
|
+
export declare function SiteDocument({ head, header, footer, children, className, mainClassName, contentClassName, wrapContent, globalCss, skipBaseStyles, skipCssVars, }: SiteDocumentProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SiteDocument = SiteDocument;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ThemeLayout_1 = require("./ThemeLayout");
|
|
6
|
+
const ThemeCssVars_1 = require("./ThemeCssVars");
|
|
7
|
+
const BaseGlobalStyles_1 = require("./BaseGlobalStyles");
|
|
8
|
+
/**
|
|
9
|
+
* WordPress-style shell: head slot + header + main + footer (like `get_header()` / `get_footer()`).
|
|
10
|
+
*/
|
|
11
|
+
function SiteDocument({ head, header, footer, children, className = 'container', mainClassName = 'main', contentClassName = 'content-wrapper', wrapContent = true, globalCss, skipBaseStyles = false, skipCssVars = true, }) {
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [head, !skipCssVars ? (0, jsx_runtime_1.jsx)(ThemeCssVars_1.ThemeCssVars, {}) : null, (0, jsx_runtime_1.jsx)(ThemeLayout_1.ThemeLayout, { className: className, mainClassName: mainClassName, contentClassName: contentClassName, wrapContent: wrapContent, header: header, footer: footer, children: children }), !skipBaseStyles ? ((0, jsx_runtime_1.jsx)(BaseGlobalStyles_1.BaseGlobalStyles, { extra: globalCss })) : globalCss ? ((0, jsx_runtime_1.jsx)("style", { dangerouslySetInnerHTML: { __html: globalCss } })) : null] }));
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type SiteDocumentProps } from './SiteDocument';
|
|
3
|
+
export interface SiteDocumentFallbackProps extends Omit<SiteDocumentProps, 'children'> {
|
|
4
|
+
message?: React.ReactNode;
|
|
5
|
+
messageClassName?: string;
|
|
6
|
+
}
|
|
7
|
+
/** Standard ISR fallback shell while on-demand pages compile. */
|
|
8
|
+
export declare function SiteDocumentFallback({ message, messageClassName, ...shell }: SiteDocumentFallbackProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SiteDocumentFallback = SiteDocumentFallback;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const SiteDocument_1 = require("./SiteDocument");
|
|
6
|
+
/** Standard ISR fallback shell while on-demand pages compile. */
|
|
7
|
+
function SiteDocumentFallback({ message = 'Loading…', messageClassName = 'empty-state', ...shell }) {
|
|
8
|
+
return ((0, jsx_runtime_1.jsx)(SiteDocument_1.SiteDocument, { ...shell, children: (0, jsx_runtime_1.jsx)("p", { className: messageClassName, children: message }) }));
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface SiteLogoProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
alt?: string;
|
|
4
|
+
width?: number;
|
|
5
|
+
height?: number;
|
|
6
|
+
}
|
|
7
|
+
/** Site logo: customizer `siteLogo` when set, otherwise `systemLogo` from site settings. */
|
|
8
|
+
export declare function SiteLogo({ className, alt, width, height }: SiteLogoProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,23 @@
|
|
|
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.SiteLogo = SiteLogo;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = __importDefault(require("react"));
|
|
9
|
+
const assets_1 = require("../../theme/content/assets");
|
|
10
|
+
const ThemeRuntimeContext_1 = require("../context/ThemeRuntimeContext");
|
|
11
|
+
/** Site logo: customizer `siteLogo` when set, otherwise `systemLogo` from site settings. */
|
|
12
|
+
function SiteLogo({ className, alt, width = 48, height = 48 }) {
|
|
13
|
+
const mod = (0, ThemeRuntimeContext_1.useThemeMod)('siteLogo', '').trim();
|
|
14
|
+
const { siteLogo } = (0, ThemeRuntimeContext_1.useSiteMeta)();
|
|
15
|
+
const raw = mod || siteLogo?.trim() || '';
|
|
16
|
+
if (!(0, assets_1.isLikelyValidHeaderLogoPath)(raw))
|
|
17
|
+
return null;
|
|
18
|
+
const src = (0, assets_1.resolvePublicAssetUrl)(raw);
|
|
19
|
+
const [hidden, setHidden] = react_1.default.useState(false);
|
|
20
|
+
if (!src || hidden)
|
|
21
|
+
return null;
|
|
22
|
+
return ((0, jsx_runtime_1.jsx)("img", { src: src, alt: alt ?? '', className: className, width: width, height: height, decoding: "async", onError: () => setHidden(true) }));
|
|
23
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface SiteSeoProps {
|
|
3
|
+
/** Extra `<Head>` children after default meta tags. */
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
/** Override favicon from site settings. */
|
|
6
|
+
favicon?: string;
|
|
7
|
+
/** Override meta keywords. */
|
|
8
|
+
keywords?: string;
|
|
9
|
+
/** Override meta description. */
|
|
10
|
+
description?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Inject default site meta tags from catalog `setting`. */
|
|
13
|
+
export declare function SiteSeo({ children, favicon, keywords, description }: SiteSeoProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
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.SiteSeo = SiteSeo;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const head_1 = __importDefault(require("next/head"));
|
|
9
|
+
const router_1 = require("next/router");
|
|
10
|
+
const SiteCatalogContext_1 = require("../context/SiteCatalogContext");
|
|
11
|
+
/** Inject default site meta tags from catalog `setting`. */
|
|
12
|
+
function SiteSeo({ children, favicon, keywords, description }) {
|
|
13
|
+
const setting = (0, SiteCatalogContext_1.useSiteSetting)();
|
|
14
|
+
const router = (0, router_1.useRouter)();
|
|
15
|
+
const siteUrl = setting.systemUrl?.trim().replace(/\/$/, '');
|
|
16
|
+
const path = router.asPath.split('?')[0] || '/';
|
|
17
|
+
const canonical = siteUrl ? `${siteUrl}${path}` : undefined;
|
|
18
|
+
return ((0, jsx_runtime_1.jsxs)(head_1.default, { children: [(0, jsx_runtime_1.jsx)("meta", { name: "viewport", content: "width=device-width, initial-scale=1, viewport-fit=cover" }), (0, jsx_runtime_1.jsx)("meta", { httpEquiv: "X-UA-Compatible", content: "ie=edge" }), (0, jsx_runtime_1.jsx)("link", { rel: "shortcut icon", href: favicon ?? setting.systemFavicon }), (0, jsx_runtime_1.jsx)("link", { rel: "apple-touch-icon", href: favicon ?? setting.systemFavicon }), (0, jsx_runtime_1.jsx)("meta", { name: "keywords", content: keywords ?? setting.seoKeyword }), (0, jsx_runtime_1.jsx)("meta", { name: "description", content: description ?? setting.seoDesc }), (0, jsx_runtime_1.jsx)("meta", { name: "robots", content: "max-image-preview:large" }), canonical ? (0, jsx_runtime_1.jsx)("link", { rel: "canonical", href: canonical }) : null, children] }));
|
|
19
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface SiteTaglineProps {
|
|
2
|
+
/** Used when customizer tagline and site subtitle are both empty. */
|
|
3
|
+
fallback?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
/** Site tagline: customizer `displayTagline` when set, otherwise `systemSubTitle`. */
|
|
7
|
+
export declare function SiteTagline({ fallback, className }: SiteTaglineProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SiteTagline = SiteTagline;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const context_1 = require("../context");
|
|
6
|
+
const ThemeRuntimeContext_1 = require("../context/ThemeRuntimeContext");
|
|
7
|
+
/** Site tagline: customizer `displayTagline` when set, otherwise `systemSubTitle`. */
|
|
8
|
+
function SiteTagline({ fallback = '', className = 'site-tagline' }) {
|
|
9
|
+
const mod = (0, ThemeRuntimeContext_1.useThemeMod)('displayTagline', '');
|
|
10
|
+
const { siteDescription } = (0, context_1.useSiteMeta)();
|
|
11
|
+
const text = mod.trim() || siteDescription.trim() || fallback.trim();
|
|
12
|
+
if (!text)
|
|
13
|
+
return null;
|
|
14
|
+
return ((0, jsx_runtime_1.jsx)("p", { className: className, "data-rp-component": "site-tagline", children: text }));
|
|
15
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TaxonomyItem {
|
|
3
|
+
value: string;
|
|
4
|
+
label: string;
|
|
5
|
+
articleCount?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface TaxonomyListRenderLinkProps {
|
|
8
|
+
item: TaxonomyItem;
|
|
9
|
+
href: string;
|
|
10
|
+
active: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type TaxonomyListVariant = 'inline' | 'list';
|
|
13
|
+
export interface TaxonomyListProps {
|
|
14
|
+
items: TaxonomyItem[];
|
|
15
|
+
kind: 'category' | 'tag';
|
|
16
|
+
/** `list` → `ul`/`li` (sidebar); `inline` → flex-friendly wrappers (tag cloud). */
|
|
17
|
+
variant?: TaxonomyListVariant;
|
|
18
|
+
currentValue?: string;
|
|
19
|
+
className?: string;
|
|
20
|
+
itemClassName?: string;
|
|
21
|
+
hrefFor?: (item: TaxonomyItem) => string;
|
|
22
|
+
renderLink: (props: TaxonomyListRenderLinkProps) => React.ReactNode;
|
|
23
|
+
}
|
|
24
|
+
/** Headless category/tag list (sidebar, footer, tag cloud). */
|
|
25
|
+
export declare function TaxonomyList({ items, kind, variant, currentValue, className, itemClassName, hrefFor, renderLink, }: TaxonomyListProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaxonomyList = TaxonomyList;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const nav_1 = require("../../theme/content/nav");
|
|
6
|
+
function defaultHref(kind, item) {
|
|
7
|
+
return kind === 'category' ? (0, nav_1.categoryPath)(item.value) : (0, nav_1.tagPath)(item.value);
|
|
8
|
+
}
|
|
9
|
+
/** Headless category/tag list (sidebar, footer, tag cloud). */
|
|
10
|
+
function TaxonomyList({ items, kind, variant = 'inline', currentValue, className, itemClassName, hrefFor, renderLink, }) {
|
|
11
|
+
const safeItems = Array.isArray(items) ? items : [];
|
|
12
|
+
const resolveHref = hrefFor ?? ((item) => defaultHref(kind, item));
|
|
13
|
+
const component = `${kind}-list`;
|
|
14
|
+
const nodes = safeItems.map((item) => {
|
|
15
|
+
const href = resolveHref(item);
|
|
16
|
+
const link = renderLink({
|
|
17
|
+
item,
|
|
18
|
+
href,
|
|
19
|
+
active: currentValue === item.value,
|
|
20
|
+
});
|
|
21
|
+
if (variant === 'list') {
|
|
22
|
+
return ((0, jsx_runtime_1.jsx)("li", { className: itemClassName, children: link }, item.value));
|
|
23
|
+
}
|
|
24
|
+
return ((0, jsx_runtime_1.jsx)("span", { className: itemClassName, children: link }, item.value));
|
|
25
|
+
});
|
|
26
|
+
if (variant === 'list') {
|
|
27
|
+
return ((0, jsx_runtime_1.jsx)("ul", { className: className, "data-rp-component": component, children: nodes }));
|
|
28
|
+
}
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: className, "data-rp-component": component, children: nodes }));
|
|
30
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ThemeCssVars = ThemeCssVars;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const assets_1 = require("../../theme/content/assets");
|
|
7
|
+
const ThemeRuntimeContext_1 = require("../context/ThemeRuntimeContext");
|
|
8
|
+
function BgImageHtmlClass({ enabled }) {
|
|
9
|
+
(0, react_1.useEffect)(() => {
|
|
10
|
+
if (typeof document === 'undefined')
|
|
11
|
+
return;
|
|
12
|
+
document.documentElement.classList.toggle('rp-has-bg-image', enabled);
|
|
13
|
+
return () => document.documentElement.classList.remove('rp-has-bg-image');
|
|
14
|
+
}, [enabled]);
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
function escapeCssValue(value) {
|
|
18
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
19
|
+
}
|
|
20
|
+
/** Injects Customizer colors, background, dark mode, and extra CSS (WP `theme_mod` → `:root`). */
|
|
21
|
+
function ThemeCssVars() {
|
|
22
|
+
const primary = (0, ThemeRuntimeContext_1.useThemeMod)('primaryColor', '#3b82f6');
|
|
23
|
+
const accent = (0, ThemeRuntimeContext_1.useThemeMod)('accentColor', '#8b5cf6');
|
|
24
|
+
const background = (0, ThemeRuntimeContext_1.useThemeMod)('backgroundColor', '#f8f9fa');
|
|
25
|
+
const backgroundImage = (0, assets_1.resolvePublicAssetUrl)((0, ThemeRuntimeContext_1.useThemeMod)('backgroundImage', ''));
|
|
26
|
+
const darkMode = (0, ThemeRuntimeContext_1.useThemeModBool)('darkMode', false);
|
|
27
|
+
const additionalCss = (0, ThemeRuntimeContext_1.useThemeMod)('additionalCss', '').trim();
|
|
28
|
+
const hasBgImage = Boolean(backgroundImage);
|
|
29
|
+
const bgLayer = hasBgImage
|
|
30
|
+
? `background-image: url("${escapeCssValue(backgroundImage)}"); background-size: cover; background-position: center center; background-repeat: no-repeat; background-attachment: fixed;`
|
|
31
|
+
: '';
|
|
32
|
+
const darkVars = darkMode
|
|
33
|
+
? `
|
|
34
|
+
--rp-background: #1a1a1a;
|
|
35
|
+
--rp-text: #e8e8e8;
|
|
36
|
+
--rp-muted: #a3a3a3;
|
|
37
|
+
color-scheme: dark;
|
|
38
|
+
`
|
|
39
|
+
: `
|
|
40
|
+
--rp-text: #1d2327;
|
|
41
|
+
--rp-muted: #646970;
|
|
42
|
+
color-scheme: light;
|
|
43
|
+
`;
|
|
44
|
+
const css = `
|
|
45
|
+
:root {
|
|
46
|
+
--rp-primary: ${primary};
|
|
47
|
+
--rp-accent: ${accent};
|
|
48
|
+
--rp-background: ${background};
|
|
49
|
+
${hasBgImage ? '--rp-has-bg-image: 1;' : ''}
|
|
50
|
+
${darkVars}
|
|
51
|
+
}
|
|
52
|
+
html${hasBgImage ? '.rp-has-bg-image' : ''} {
|
|
53
|
+
${bgLayer}
|
|
54
|
+
}
|
|
55
|
+
html,
|
|
56
|
+
body {
|
|
57
|
+
background-color: var(--rp-background, #f8f9fa) !important;
|
|
58
|
+
}
|
|
59
|
+
html.rp-has-bg-image,
|
|
60
|
+
html.rp-has-bg-image body,
|
|
61
|
+
html.rp-has-bg-image .container,
|
|
62
|
+
html.rp-has-bg-image [data-rp-component='layout'],
|
|
63
|
+
html.rp-has-bg-image [data-rp-component='main'] {
|
|
64
|
+
background-color: transparent !important;
|
|
65
|
+
}
|
|
66
|
+
.container,
|
|
67
|
+
[data-rp-component='layout'],
|
|
68
|
+
[data-rp-component='main'] {
|
|
69
|
+
background-color: ${hasBgImage ? 'transparent' : 'var(--rp-background, #f8f9fa)'} !important;
|
|
70
|
+
}
|
|
71
|
+
[data-rp-component='layout'][data-rp-dark='true'],
|
|
72
|
+
[data-rp-component='layout'][data-rp-dark='true'] .container {
|
|
73
|
+
background-color: var(--rp-background, #1a1a1a) !important;
|
|
74
|
+
color: var(--rp-text, #e8e8e8);
|
|
75
|
+
}
|
|
76
|
+
[data-rp-component='layout'][data-rp-dark='true'] a {
|
|
77
|
+
color: var(--rp-primary);
|
|
78
|
+
}
|
|
79
|
+
[data-rp-component='layout'] {
|
|
80
|
+
color: var(--rp-text, #1d2327);
|
|
81
|
+
}
|
|
82
|
+
${additionalCss}
|
|
83
|
+
`;
|
|
84
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(BgImageHtmlClass, { enabled: hasBgImage }), (0, jsx_runtime_1.jsx)("style", { dangerouslySetInnerHTML: { __html: css } })] }));
|
|
85
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ThemeLayoutProps {
|
|
3
|
+
header?: React.ReactNode;
|
|
4
|
+
footer?: React.ReactNode;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
mainClassName?: string;
|
|
8
|
+
contentClassName?: string;
|
|
9
|
+
/** When true, wraps children in an inner content container (`data-rp-part="content"`). */
|
|
10
|
+
wrapContent?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** Unstyled page shell: header + main (+ optional content wrapper) + footer. */
|
|
13
|
+
export declare function ThemeLayout({ header, footer, children, className, mainClassName, contentClassName, wrapContent, }: ThemeLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ThemeLayout = ThemeLayout;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ThemeRuntimeContext_1 = require("../context/ThemeRuntimeContext");
|
|
6
|
+
/** Unstyled page shell: header + main (+ optional content wrapper) + footer. */
|
|
7
|
+
function ThemeLayout({ header, footer, children, className, mainClassName, contentClassName, wrapContent = false, }) {
|
|
8
|
+
const darkMode = (0, ThemeRuntimeContext_1.useThemeModBool)('darkMode', false);
|
|
9
|
+
const mainContent = wrapContent ? ((0, jsx_runtime_1.jsx)("div", { className: contentClassName, "data-rp-part": "content", children: children })) : (children);
|
|
10
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: className, "data-rp-component": "layout", ...(darkMode ? { 'data-rp-dark': 'true' } : {}), children: [header, (0, jsx_runtime_1.jsx)("main", { id: "main-content", tabIndex: -1, className: mainClassName, "data-rp-component": "main", children: mainContent }), footer] }));
|
|
11
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { TocItem } from './ArticleToc';
|
|
3
|
+
import { ArticleToc, parseArticleToc } from './ArticleToc';
|
|
4
|
+
import { HtmlContent } from './HtmlContent';
|
|
5
|
+
import { ImageViewer } from './ImageViewer';
|
|
6
|
+
import { LocaleTime } from './LocaleTime';
|
|
7
|
+
export interface ArticleReaderArticle {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
html?: string;
|
|
11
|
+
cover?: string;
|
|
12
|
+
summary?: string;
|
|
13
|
+
publishAt?: string;
|
|
14
|
+
views?: number;
|
|
15
|
+
toc?: string;
|
|
16
|
+
tags?: Array<{
|
|
17
|
+
id?: string;
|
|
18
|
+
label: string;
|
|
19
|
+
value: string;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export interface ArticleReaderProps {
|
|
23
|
+
article: ArticleReaderArticle;
|
|
24
|
+
className?: string;
|
|
25
|
+
articleClassName?: string;
|
|
26
|
+
containerId?: string;
|
|
27
|
+
locale?: string;
|
|
28
|
+
copyLabel?: string;
|
|
29
|
+
onCopy?: () => void;
|
|
30
|
+
labels?: {
|
|
31
|
+
publishAt?: string;
|
|
32
|
+
readings?: string;
|
|
33
|
+
articleCover?: string;
|
|
34
|
+
};
|
|
35
|
+
renderTags?: (tags: NonNullable<ArticleReaderArticle['tags']>) => React.ReactNode;
|
|
36
|
+
renderFooter?: (article: ArticleReaderArticle) => React.ReactNode;
|
|
37
|
+
children?: React.ReactNode;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Headless single-article reader — meta, cover, HTML body, optional TOC slot.
|
|
41
|
+
* Theme supplies layout shell, comments, and tag links via render props.
|
|
42
|
+
*/
|
|
43
|
+
export declare function ArticleReader({ article, className, articleClassName, containerId, locale, copyLabel, onCopy, labels, renderTags, renderFooter, children, }: ArticleReaderProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
export { ArticleToc, HtmlContent, ImageViewer, LocaleTime, parseArticleToc };
|
|
45
|
+
export type { TocItem };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseArticleToc = exports.LocaleTime = exports.ImageViewer = exports.HtmlContent = exports.ArticleToc = void 0;
|
|
4
|
+
exports.ArticleReader = ArticleReader;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const date_1 = require("../../../utils/date");
|
|
7
|
+
const ArticleToc_1 = require("./ArticleToc");
|
|
8
|
+
Object.defineProperty(exports, "ArticleToc", { enumerable: true, get: function () { return ArticleToc_1.ArticleToc; } });
|
|
9
|
+
Object.defineProperty(exports, "parseArticleToc", { enumerable: true, get: function () { return ArticleToc_1.parseArticleToc; } });
|
|
10
|
+
const HtmlContent_1 = require("./HtmlContent");
|
|
11
|
+
Object.defineProperty(exports, "HtmlContent", { enumerable: true, get: function () { return HtmlContent_1.HtmlContent; } });
|
|
12
|
+
const ImageViewer_1 = require("./ImageViewer");
|
|
13
|
+
Object.defineProperty(exports, "ImageViewer", { enumerable: true, get: function () { return ImageViewer_1.ImageViewer; } });
|
|
14
|
+
const LocaleTime_1 = require("./LocaleTime");
|
|
15
|
+
Object.defineProperty(exports, "LocaleTime", { enumerable: true, get: function () { return LocaleTime_1.LocaleTime; } });
|
|
16
|
+
/**
|
|
17
|
+
* Headless single-article reader — meta, cover, HTML body, optional TOC slot.
|
|
18
|
+
* Theme supplies layout shell, comments, and tag links via render props.
|
|
19
|
+
*/
|
|
20
|
+
function ArticleReader({ article, className = 'rp-article-reader', articleClassName = 'rp-article', containerId = 'rp-article-body', locale = 'zh', copyLabel, onCopy, labels = {}, renderTags, renderFooter, children, }) {
|
|
21
|
+
const body = ((0, jsx_runtime_1.jsxs)("article", { id: containerId, className: articleClassName, "data-rp-component": "article-reader", children: [article.cover ? ((0, jsx_runtime_1.jsx)("div", { className: "rp-article-cover", "data-rp-part": "cover", children: (0, jsx_runtime_1.jsx)("img", { src: article.cover, alt: labels.articleCover ?? article.title }) })) : null, (0, jsx_runtime_1.jsxs)("header", { className: "rp-article-meta", "data-rp-part": "meta", children: [(0, jsx_runtime_1.jsx)("h1", { className: "rp-article-title", children: article.title }), (0, jsx_runtime_1.jsxs)("p", { className: "rp-article-byline", children: [labels.publishAt ? ((0, jsx_runtime_1.jsxs)("span", { children: [labels.publishAt, (0, jsx_runtime_1.jsx)(LocaleTime_1.LocaleTime, { date: article.publishAt ?? '', locale: locale })] })) : article.publishAt ? ((0, jsx_runtime_1.jsx)("time", { dateTime: article.publishAt, children: (0, date_1.formatPublishDateShort)(article.publishAt) })) : null, article.views != null ? ((0, jsx_runtime_1.jsxs)("span", { children: [' ', "\u2022 ", labels.readings ?? '', " ", article.views] })) : null] })] }), (0, jsx_runtime_1.jsx)(HtmlContent_1.HtmlContent, { content: article.html, copyLabel: copyLabel, onCopy: onCopy, className: "rp-html-content markdown" }), renderFooter ? ((0, jsx_runtime_1.jsx)("footer", { className: "rp-article-footer", "data-rp-part": "footer", children: renderFooter(article) })) : null, article.tags?.length && renderTags ? ((0, jsx_runtime_1.jsx)("div", { className: "rp-article-tags", "data-rp-part": "tags", children: renderTags(article.tags) })) : null, children] }));
|
|
22
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: className, children: (0, jsx_runtime_1.jsx)(ImageViewer_1.ImageViewer, { containerSelector: `#${containerId}`, children: body }) }));
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TocItem {
|
|
3
|
+
level: number;
|
|
4
|
+
id: string;
|
|
5
|
+
text: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ArticleTocProps {
|
|
8
|
+
items: TocItem[];
|
|
9
|
+
className?: string;
|
|
10
|
+
listClassName?: string;
|
|
11
|
+
itemClassName?: string;
|
|
12
|
+
activeClassName?: string;
|
|
13
|
+
maxHeight?: string | number;
|
|
14
|
+
title?: React.ReactNode;
|
|
15
|
+
showTitle?: boolean;
|
|
16
|
+
indentStep?: number;
|
|
17
|
+
}
|
|
18
|
+
/** Headless table-of-contents for article pages. */
|
|
19
|
+
export declare function ArticleToc({ items, className, listClassName, itemClassName, activeClassName, maxHeight, title, showTitle, indentStep, }: ArticleTocProps): import("react/jsx-runtime").JSX.Element | null;
|
|
20
|
+
/** Parse TOC JSON stored on article records. Supports legacy `[level, id, text]` tuples. */
|
|
21
|
+
export declare function parseArticleToc(raw?: string | null): TocItem[];
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArticleToc = ArticleToc;
|
|
4
|
+
exports.parseArticleToc = parseArticleToc;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
function elementInViewport(el) {
|
|
8
|
+
const rect = el.getBoundingClientRect();
|
|
9
|
+
return rect.top >= 0 && rect.top <= window.innerHeight * 0.4;
|
|
10
|
+
}
|
|
11
|
+
/** Headless table-of-contents for article pages. */
|
|
12
|
+
function ArticleToc({ items, className = 'rp-article-toc', listClassName = 'rp-article-toc-list', itemClassName = 'rp-article-toc-item', activeClassName = 'is-active', maxHeight = '80vh', title = 'Contents', showTitle = true, indentStep = 12, }) {
|
|
13
|
+
const listRef = (0, react_1.useRef)(null);
|
|
14
|
+
const [active, setActive] = (0, react_1.useState)(0);
|
|
15
|
+
const goto = (0, react_1.useCallback)((item) => {
|
|
16
|
+
document.getElementById(item.id)?.scrollIntoView({ behavior: 'smooth' });
|
|
17
|
+
}, []);
|
|
18
|
+
(0, react_1.useEffect)(() => {
|
|
19
|
+
if (!items.length)
|
|
20
|
+
return undefined;
|
|
21
|
+
const onScroll = () => {
|
|
22
|
+
items.reduceRight((_, item, index) => {
|
|
23
|
+
const el = document.getElementById(item.id);
|
|
24
|
+
if (el && elementInViewport(el)) {
|
|
25
|
+
setActive(index);
|
|
26
|
+
if (listRef.current)
|
|
27
|
+
listRef.current.scrollTop = 32 * index;
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}, null);
|
|
31
|
+
};
|
|
32
|
+
document.addEventListener('scroll', onScroll, { passive: true });
|
|
33
|
+
return () => document.removeEventListener('scroll', onScroll);
|
|
34
|
+
}, [items]);
|
|
35
|
+
if (!items.length)
|
|
36
|
+
return null;
|
|
37
|
+
return ((0, jsx_runtime_1.jsxs)("nav", { className: className, "data-rp-component": "article-toc", children: [showTitle ? (0, jsx_runtime_1.jsx)("header", { className: "rp-article-toc-title", children: title }) : null, (0, jsx_runtime_1.jsx)("div", { ref: listRef, className: listClassName, style: { maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight, overflow: 'auto' }, children: items.map((item, index) => ((0, jsx_runtime_1.jsx)("button", { type: "button", className: `${itemClassName}${index === active ? ` ${activeClassName}` : ''}`, style: { paddingLeft: indentStep * (Math.max(1, Number(item.level) || 1) - 1) }, onClick: () => goto(item), dangerouslySetInnerHTML: { __html: item.text } }, item.id))) })] }));
|
|
38
|
+
}
|
|
39
|
+
/** Parse TOC JSON stored on article records. Supports legacy `[level, id, text]` tuples. */
|
|
40
|
+
function parseArticleToc(raw) {
|
|
41
|
+
if (!raw?.trim())
|
|
42
|
+
return [];
|
|
43
|
+
try {
|
|
44
|
+
const parsed = JSON.parse(raw);
|
|
45
|
+
if (!Array.isArray(parsed))
|
|
46
|
+
return [];
|
|
47
|
+
return parsed
|
|
48
|
+
.map((entry) => {
|
|
49
|
+
if (Array.isArray(entry) && entry.length >= 3) {
|
|
50
|
+
const level = Number(entry[0]);
|
|
51
|
+
return {
|
|
52
|
+
level: Number.isFinite(level) ? level : 1,
|
|
53
|
+
id: String(entry[1]),
|
|
54
|
+
text: String(entry[2]),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (entry && typeof entry === 'object') {
|
|
58
|
+
const row = entry;
|
|
59
|
+
const level = Number(row.level);
|
|
60
|
+
if (!row.id)
|
|
61
|
+
return null;
|
|
62
|
+
return {
|
|
63
|
+
level: Number.isFinite(level) ? level : 1,
|
|
64
|
+
id: String(row.id),
|
|
65
|
+
text: String(row.text ?? ''),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
})
|
|
70
|
+
.filter((item) => item != null);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface HtmlContentProps {
|
|
2
|
+
/** Server-rendered HTML (article body). */
|
|
3
|
+
content?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
/** Label on the code-block copy button. */
|
|
6
|
+
copyLabel?: string;
|
|
7
|
+
/** Brief label shown on the copy button after a successful copy. */
|
|
8
|
+
copySuccessLabel?: string;
|
|
9
|
+
/** Called after a successful copy (optional; prefer `copySuccessLabel` for inline feedback). */
|
|
10
|
+
onCopy?: () => void;
|
|
11
|
+
/** Enable syntax highlight + line numbers (requires `highlight.js` in the theme). */
|
|
12
|
+
highlightCode?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Render HTML article body with optional code highlight and copy buttons. */
|
|
15
|
+
export declare function HtmlContent({ content, className, copyLabel, copySuccessLabel, onCopy, highlightCode, }: HtmlContentProps): import("react/jsx-runtime").JSX.Element;
|