Rich text editing for .NET MAUI, rendered entirely on a SkiaSharp canvas.
MintedTextEditor is organized into three packages:
MintedTextEditor.Core: document model, editing engine, layout, formatting, commands, events, HTML interop.MintedTextEditor.SkiaSharp: drawing backend implementingIDrawingContext.MintedTextEditor.Maui: MAUI control (MintedEditorView) and platform integration.
- Highlights
- Package Layout
- Platform Support
- Quick Start
- Sample App
- Configuration
- Documentation
- Build and Test
- Contributing
- Code of Conduct
- License
- Full-canvas rendering using SkiaSharp (no native text editor controls).
- Character formatting: bold, italic, underline, strikethrough, subscript, superscript, font family/size, text color, highlight.
- Paragraph formatting: alignment, indentation, line spacing, headings, lists, block quote.
- Inline content: hyperlinks, images, tables.
- Editing primitives: caret navigation, selection, clipboard, undo/redo.
- Toolbar and command architecture with customizable item sets.
- Three built-in toolbar icon packs (Lucide, Heroicons, Material Symbols) — all embedded in the
MintedTextEditor.Corepackage, no app-bundle asset setup required. - Theme-aware toolbar icons: automatically recolored to the current theme's foreground at draw time, including full dark-mode support.
- HTML import/export pipeline.
- Theming support (light, dark, high contrast, and custom styles).
- Accessibility and localization support including RTL scenarios.
src/
MintedTextEditor.Core/
MintedTextEditor.SkiaSharp/
MintedTextEditor.Maui/
samples/
SampleApp.Maui/
tests/
MintedTextEditor.Core.Tests/
| Platform | Minimum Version |
|---|---|
| Android | API 21 (Android 5.0) |
| iOS | 15.0 |
| macOS (Mac Catalyst) | 15.0 |
| Windows | 10.0.17763 |
dotnet add package MintedTextEditor.MauiIn MauiProgram.cs:
using MintedTextEditor.Maui;
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMintedTextEditor();<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:minted="https://schemas.mintedtexteditor.com/2026"
x:Class="MyApp.MainPage">
<minted:MintedEditorView
x:Name="Editor"
ShowToolbar="True"
PlaceholderText="Start typing..." />
</ContentPage>Editor.LoadHtml("<p>Hello <strong>world</strong></p>");
string html = Editor.GetHtml();The repository includes a runnable MAUI sample with focused pages for:
- basic editing
- formatting
- load/save and HTML
- images and hyperlinks
- tables
- localization
- theming and toolbar icon packs
Project: samples/SampleApp.Maui
Editor.Theme = EditorTheme.CreateDark();
Editor.UseSystemTheme = false;Three icon packs are included and embedded in MintedTextEditor.Core — no extra files are needed in the app project.
| Pack | Style |
|---|---|
ToolbarIconPack.Lucide |
Outlined, 2 px stroke (default) |
ToolbarIconPack.Heroicons |
Outlined, 1.5 px stroke |
ToolbarIconPack.MaterialSymbols |
Filled, Material Design paths |
Editor.ToolbarIconPack = ToolbarIconPack.Lucide; // default
Editor.ToolbarIconPack = ToolbarIconPack.Heroicons;
Editor.ToolbarIconPack = ToolbarIconPack.MaterialSymbols;All icons are rendered with black ink and recolored at draw time using SKColorFilter (SrcIn) to match the current theme color. Switching between light and dark themes updates icon colors automatically without reloading assets.
Editor.TextChanged += (_, e) => { /* document changed */ };
Editor.SelectionChanged += (_, e) => { /* selection changed */ };
Editor.HyperlinkClicked += (_, e) => { /* inspect/cancel open */ };For deeper API details, see docs/getting-started.md, docs/commands-events.md, and docs/toolbar-customization.md.
| Document | Description |
|---|---|
| Getting Started | Installation, setup, first editor |
| Document Model | Blocks, inlines, and text runs |
| Formatting | Character and paragraph formatting |
| Toolbar Customization | Toolbar groups and items |
| Theming | Built-in and custom themes |
| Commands & Events | Command and event reference |
| HTML Interop | HTML import/export behavior |
| Images & Hyperlinks | Inline media and links |
| Tables | Table creation and editing |
| Accessibility | Accessibility guidance |
| Architecture | Internal architecture overview |
git clone https://github.com/TheEightBot/MintedTextEditor.git
cd MintedTextEditor
# Build solution
dotnet build
# Run core tests
dotnet test tests/MintedTextEditor.Core.Tests/
# Build MAUI project (after installing MAUI workload)
dotnet workload install maui
dotnet build src/MintedTextEditor.Maui/
# Build sample app
dotnet build samples/SampleApp.Maui/Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.
This project follows the Contributor Covenant Code of Conduct.
