@honzatmn/supernova-docs-renderer
v0.1.0-alpha.1
Published
Publishable React renderer for Supernova documentation pages.
Readme
@honzatmn/supernova-docs-renderer
Publishable React renderer for Supernova documentation pages.
Package exports
| Export | Contents |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| . | DocsRenderer, DocsPageContent, content block/section views, DocsInteractions, SearchDialog, VersionSwitcher, buildPageTocEntries, i18n (DocsI18nProvider, useDocsI18n, DocsI18nConfig, docsMessages), and types |
| ./display-model | Display-model schemas and types only |
| ./blocks | Granular block views (Assets, Tokens, Image, Badge, RichTextView, isInteractiveSection) |
| ./interactions | Mount attribute / selector constants |
| ./theme | Theme CSS / bootstrap helpers |
| ./styles.css | Document stylesheet |
Hosts own Pulsar/SDK access and assemble a ready-to-render DocsRendererModel plus DocsRenderContentItem[]. This package does not import exporter modules or traverse raw SDK trees.
i18n
Renderer-owned UI copy (chrome, a11y labels, toasts, empty/error fallbacks) goes through a thin FormatJS adapter. Authored document and design-system content is not translated here.
| Symbol | Role |
| ------------------ | -------------------------------------------------------------------------- |
| DocsI18nProvider | Wraps a React root with locale + message overrides |
| useDocsI18n | Returns { locale, t } — use t(key, values?) with DocsMessageKey only |
| DocsI18nConfig | JSON-safe { locale?, messages? } for SSR, islands, and hydration |
| docsMessages | English descriptors (defineMessages); keys form DocsMessageKey |
<DocsI18nProvider i18n={{ locale: 'cs', messages: { 'search.placeholder': 'Hledat…' } }}>
<DocsRenderer model={model}>
<DocsPageContent content={content} />
</DocsRenderer>
<DocsInteractions />
<SearchDialog />
</DocsI18nProvider>Rules for extenders:
- Prefer
useDocsI18n().t(...)for new renderer UI strings. Add keys todocsMessages. - Do not import
react-intlAPIs (useIntl,FormattedRelativeTime, list/display-name formatters) from consumers or feature code. Those are private to the adapter. - Message values stay plain-text ICU: interpolation plus
plural/select. No translated HTML/JSX. - Hosts own locale choice and override catalogs. English
defaultMessagevalues always apply when a key is missing. - When mounting multiple React roots (shell, islands, interactions), pass the same serializable
DocsI18nConfiginto eachDocsI18nProvider.
Local build
dist/ is generated and gitignored. From the repository root:
npm run build:docs-rendererThat runs tsc, regenerates theme-token CSS, and writes dist/styles.css. The full root npm run build also copies the stylesheet to committed assets/dist/docs-renderer.css for Pulsar. Package prepack runs the same docs-renderer build so published tarballs include dist/.
