Files
zooqueen 47ec199510 Each docs site renders on one adapter
The two UI packages are adapters over different headless primitive
libraries: base-ui wraps @base-ui/react, radix-ui wraps @radix-ui/*. They
are meant to be alternatives. Every app here had been pulling from both.

Each package builds its own React contexts, so a provider from one is
invisible to a consumer from the other. insights-docs, pulsar-docs and
zen-docs mounted RootProvider and the CSS preset from base-ui but took
DocsLayout and the MDX map from radix-ui, so the layout's search trigger
read radix's SearchContext default -- enabled:false, setOpenSearch a
no-op. Search was dead on those three sites and nothing said so.

apps/docs was consistent in its app code (layout, provider, MDX map, CSS
all base-ui) but 28 hand-written MDX pages and the two resolveAlias
entries reached for radix Callout, Card, Files and Tabs, which loaded the
whole second library alongside the first. Tabs was the visible cost: the
nested-tabs check compares against the context of its own copy, so a
radix Tab inside a base-ui Tabs could not see its parent and drew a
second frame. Every generated page already imported base-ui tabs.

Callout, Card and Files are byte-identical across the two packages, so
this moves no pixels; Tabs gains the nesting the rest of the site has.
Nothing in apps/ imports docs-ui now, and its dependency entry goes with
it. The registry generator still names both -- it publishes both.
2026-08-27 15:44:38 -07:00
..
2026-08-27 15:44:38 -07:00

Pulsar Documentation

Documentation site for Pulsar — threshold ML-DSA-65, the NIST MPTC submission package by Lux Industries.

Built with Hanzo Docs.

Development

pnpm install
pnpm --filter=pulsar-docs dev    # http://localhost:3008
pnpm --filter=pulsar-docs build  # static export to ./out

Structure

apps/pulsar-docs/
├── app/                    Next.js app directory
│   ├── (home)/             Landing page
│   └── docs/               Documentation pages
├── content/docs/           MDX content
│   ├── index.mdx
│   ├── getting-started.mdx
│   ├── protocol/           2-round threshold, FIPS 204, DKG, parameters
│   ├── proofs/             EasyCrypt, Lean bridge, axiom inventory, extraction
│   ├── reference/          API, KAT, interop
│   ├── security.mdx
│   ├── nist-mptc.mdx
│   ├── postmortem.mdx
│   └── changelog.mdx
├── lib/                    Utilities
└── source.config.ts        MDX configuration (KaTeX wired)

Source of truth

Content is authored from ~/work/lux/pulsar/main (README, EasyCrypt README, Lean ↔ EC bridge, byte-walk roadmaps, BLOCKERS, CHANGELOG, SUBMISSION, SECURITY). Math is rendered with KaTeX.