# docs A [Fumapress](https://press.fumadocs.dev) (Fumadocs + Waku) docs site with typography by [shadcn/typeset](https://ui.shadcn.com/docs/typeset) — one CSS file you own. ## Getting started Requires **Node.js 22+**. ```bash bun install bun dev # http://localhost:3000 ``` ## Your typeset | Control | Choice | | ------- | ------ | | Heading | DM Sans | | Body | Instrument Sans | | Mono | JetBrains Mono | | Size | 16px | | Leading | Loose (1.9) | | Flow | Compact (1em) | | Measure | 80ch | - `src/typeset.css` is the stylesheet from the [typeset builder](https://ui.shadcn.com/typeset). It lives in your project — edit it directly, or regenerate it from the builder any time. - `src/app.css` holds your presets. `.typeset-docs` carries the choices above; `.typeset-compact` is a tighter preset for chat-like UI. Rhythm is three variables: `--typeset-size`, `--typeset-leading`, `--typeset-flow`. - `typeset-prompt.md` is an agent-ready prompt with the choices above baked in (like the builder's Prompt tab). Paste it into your coding agent to wire typeset into the surfaces that render markdown. Wrap any rendered markdown/HTML: ```tsx
{page}
{message}
``` Opt components out with `not-typeset`: ```tsx

Styled prose.

Untouched component.
``` ## Fumadocs prose seam Fumadocs UI ships its own `prose` styles for docs page bodies. If you apply `typeset` to the same container, both systems will add spacing. This template zeroes out `margin-block-end` inside `.typeset.prose` (see `src/app.css`) so flow comes only from typeset's `margin-block-start`. To apply the typeset classes to docs pages, customize the page layout in `press.config.tsx` — see the [Fumapress layouts docs](https://press.fumadocs.dev/docs/layouts). ## Structure ``` ├── waku.config.ts # Waku/Vite plugins: press(), mdx(), tailwindcss() ├── source.config.ts # Fumadocs MDX content source (content/docs) ├── press.config.tsx # Site config, adapters, plugins ├── typeset-prompt.md # Agent prompt with your typeset picks baked in ├── content/docs/ # Your MDX pages └── src/ ├── app.css # Tailwind + presets + your typeset presets └── typeset.css # shadcn/typeset — yours to edit ``` ## Deploying static Fumapress builds static + dynamic routes by default. For a pure CDN deploy, force static mode in `press.config.tsx`: ```tsx export default defineConfig({ mode: "static", /* ... */ }); ```