1.0.7 • Published 11 months ago
@oakai/fluentmarkdown v1.0.7
FluentMarkdown
A React library that transforms Markdown into Fluent UI (v9) components, leveraging react-markdown.
Features
- Headings mapped to Fluent
<Title1>,<Title2>,<Subtitle1> - Paragraphs mapped to
<Body1> - Links mapped to
<Link> - Lists, images, blockquotes, code blocks, etc.
Key Capabilities
Accessibility (enabled by default)
ARIA attributes like role="heading", aria-level for headings, and aria-label for links/code blocks. Pass enableAccessibility={false} to turn these off if needed.
Sanitization (enabled by default)
Strips potentially dangerous HTML via rehype-sanitize. Pass sanitize={false} if you fully trust your Markdown source.
Quick Start
<FluentMarkdown
content={markdownContent}
enableAccessibility={false} // turns off ARIA attributes
sanitize={false} // turns off HTML sanitization
/>Installation
npm install fluentmarkdown
# or
yarn add fluentmarkdownDependencies
- React (>= 18)
- @fluentui/react-components (Fluent UI v9)
- react-markdown (included or listed as peer dependency)
Usage
Basic Example
import React from 'react';
import { FluentMarkdown } from 'fluentmarkdown';
export function MyScreen() {
const content = `
# Hello Fluent
**This** is *Markdown*.
- One
- Two
- Three
`;
return (
<div style={{ maxWidth: 600, margin: 'auto' }}>
<FluentMarkdown content={content} />
</div>
);
}Extended Example with FluentProvider
import React from 'react';
import { FluentProvider, webLightTheme } from '@fluentui/react-components';
import { FluentMarkdown } from 'fluentmarkdown';
export function App() {
const content = '# Heading\n\nThis is a paragraph with **bold** text.';
return (
<FluentProvider theme={webLightTheme}>
<FluentMarkdown content={content} />
</FluentProvider>
);
}Core Features
Fluent Theming
- All text uses Fluent UI typography and respects your
<FluentProvider>theme
- All text uses Fluent UI typography and respects your
Accessibility
- Enabled by default with ARIA attributes
- Configurable via
enableAccessibilityprop
Sanitization
- HTML sanitization enabled by default
- Configurable via
sanitizeprop
Component Mapping
- Lists:
<ul>,<ol>,<li>→ standard HTML with<Body1>text - Images:
<img>→ Fluent<Image>
- Lists:
Screenshots

API Reference
FluentMarkdown Props
| Prop | Type | Default | Description |
|---|---|---|---|
| content | string | — | Raw Markdown text to render |
| enableAccessibility | boolean | true | Enable ARIA attributes |
| sanitize | boolean | true | Enable HTML sanitization |
Good catch! Here's how those sections should be written with proper linking:
Contributing
See our CONTRIBUTING.md for details on how to clone, build, and submit PRs.
License
This project is licensed under the MIT License.