MintedTextEditor.SkiaSharp 0.1.1

dotnet add package MintedTextEditor.SkiaSharp --version 0.1.1
                    
NuGet\Install-Package MintedTextEditor.SkiaSharp -Version 0.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MintedTextEditor.SkiaSharp" Version="0.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MintedTextEditor.SkiaSharp" Version="0.1.1" />
                    
Directory.Packages.props
<PackageReference Include="MintedTextEditor.SkiaSharp" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MintedTextEditor.SkiaSharp --version 0.1.1
                    
#r "nuget: MintedTextEditor.SkiaSharp, 0.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MintedTextEditor.SkiaSharp@0.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MintedTextEditor.SkiaSharp&version=0.1.1
                    
Install as a Cake Addin
#tool nuget:?package=MintedTextEditor.SkiaSharp&version=0.1.1
                    
Install as a Cake Tool

<p align="center"> <img src="images/logo.png" alt="MintedTextEditor logo" width="120" /> </p>

MintedTextEditor

CI NuGet (Core) NuGet (MAUI) License: MIT

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 implementing IDrawingContext.
  • MintedTextEditor.Maui: MAUI control (MintedEditorView) and platform integration.

Table of Contents

Highlights

  • 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.Core package, 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.

Package Layout

src/
  MintedTextEditor.Core/
  MintedTextEditor.SkiaSharp/
  MintedTextEditor.Maui/
samples/
  SampleApp.Maui/
tests/
  MintedTextEditor.Core.Tests/

Platform Support

Platform Minimum Version
Android API 21 (Android 5.0)
iOS 15.0
macOS (Mac Catalyst) 15.0
Windows 10.0.17763

Quick Start

1) Install package

dotnet add package MintedTextEditor.Maui

2) Register services

In MauiProgram.cs:

using MintedTextEditor.Maui;

var builder = MauiApp.CreateBuilder();
builder
    .UseMauiApp<App>()
    .UseMintedTextEditor();

3) Add control in XAML

<?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>

4) Load or export HTML

Editor.LoadHtml("<p>Hello <strong>world</strong></p>");
string html = Editor.GetHtml();

Sample App

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

Configuration

Theming

Editor.Theme = EditorTheme.CreateDark();
Editor.UseSystemTheme = false;

Toolbar icon packs

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.

Events

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.

Documentation

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

Build and Test

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/

Contributing

Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.

Code of Conduct

This project follows the Contributor Covenant Code of Conduct.

License

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on MintedTextEditor.SkiaSharp:

Package Downloads
MintedTextEditor.Maui

A high-performance, fully custom-drawn Rich Text Editor for .NET MAUI. Features bold, italic, underline, font control, paragraph formatting, hyperlinks, images, tables, clipboard, undo/redo, toolbar, context menu, and theming — all rendered via SkiaSharp with zero native controls.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.1 33 3/27/2026