dioxus-mdx
MDX parsing and rendering components for Dioxus applications.
Parse Mintlify-style MDX into an AST and render it with pre-built Dioxus components — callouts, cards, tabs, code groups, accordions, steps, and more. Includes syntax highlighting, frontmatter extraction, and OpenAPI spec parsing.
Quick Start
Add to your Cargo.toml:
[]
= "0.2"
Render MDX content in a component:
use *;
use MdxContent;
Parsing Only
Use the parser directly without rendering:
use ;
let doc = parse_document;
assert_eq!;
// Parse content without frontmatter
let nodes = parse_mdx;
Supported Components
| Component | MDX Syntax |
|---|---|
| Callouts | <Tip>, <Note>, <Warning>, <Info> |
| Cards | <Card>, <CardGroup> |
| Tabs | <Tabs>, <Tab> |
| Steps | <Steps>, <Step> |
| Accordion | <AccordionGroup>, <Accordion> |
| Code | <CodeGroup>, fenced code blocks with syntax highlighting |
| API Docs | <ParamField>, <ResponseField>, <Expandable> |
| Examples | <RequestExample>, <ResponseExample> |
| Changelog | <Update> |
OpenAPI Support
Parse OpenAPI/Swagger specs and render interactive API reference pages:
use parse_openapi;
let spec = parse_openapi.unwrap;
The EndpointPage component renders a two-column Mintlify-style API reference for each operation.
Syntax Highlighting
Code blocks get automatic syntax highlighting via syntect:
use highlight_code;
let html = highlight_code;
Styling Setup
Components use Tailwind CSS 4 with DaisyUI 5 and @tailwindcss/typography.
When using as a crates.io dependency, Tailwind can't scan the crate source.
Copy safelist.html from the crate into your project root and add it as a source:
@/
When using as a workspace path dependency, point directly at the source:
@////**/
Components use semantic DaisyUI classes (bg-base-200, text-base-content, text-primary, etc.)
and adapt to any DaisyUI theme.
Features
web(default) — enables web-specific features like clipboard copy buttons on code blocks
License
MIT