Makani 0.0.5-alpha1

This is a prerelease version of Makani.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Makani --version 0.0.5-alpha1                
NuGet\Install-Package Makani -Version 0.0.5-alpha1                
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="Makani" Version="0.0.5-alpha1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Makani --version 0.0.5-alpha1                
#r "nuget: Makani, 0.0.5-alpha1"                
#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.
// Install Makani as a Cake Addin
#addin nuget:?package=Makani&version=0.0.5-alpha1&prerelease

// Install Makani as a Cake Tool
#tool nuget:?package=Makani&version=0.0.5-alpha1&prerelease                

Build nuget nuget

🏖️ makani

Collection of UI components built specifically for .NET MAUI Blazor

Why Makani?

Makani was born based on the need for lightweight, performant, and customizable UI components for .NET MAUI Blazor. Makani is built on the wonderful CSS framework, Tailwind CSS. While a simple theme will be included, the hope is that the community is able to customize the theme to fit their needs.

The main focus of the Makani library is to provide a powerful set of components that work flawlessly with .NET MAUI Blazor.

🏗️ Design Principles

  • Built first and foremost for .NET MAUI Blazor
  • Components should be easy to customize
  • Components should be composable, extensible, and performant
  • Always listen to the community

⚠️ This library is currently under active development. You may experience bugs, breaking changes, or missing functionality.

🚀 Getting Started

Quick Start

1. Install via NuGet

dotnet add package Makani

2. Update your _Imports.razor

@using Makani

3. Add Makani

builder.Services.AddMakani();

4. Build away!

<MkButton Color="MkColor.Primary">Hello world!</MkButton>

Using Syntax Highlighting

The syntax highlighting component is an optional feature. If you don't need this feature, skip this section and avoid loading the additional resources.

Makani is using Prism for syntax highlighting, so if you need this component, a few more steps are needed.

In your index.html, add only one of the following themes to the <head>...</head> section:


<link href="_content/Makani/css/vscode-dark-plus.css" rel="stylesheet" />


Add the following JS to the end of the <body>...</body> section:

<script src="_content/Makani/prism.js"></script>

Further Customization with Tailwind

At the core of this library is the ability to customize components using Tailwind CSS. For further customization, extra steps are required:

  1. Install the Tailwind CLI

In the wwwroot of your application, follow the Tailwind CLI installation

  1. Configure .razor and your index.html files in tailwind.config.js

Example

module.exports = {
  content: ["../**/*.razor", "../*.razor", "index.html"],
  theme: {
    extend: {},
  },
  plugins: [],
}
  1. Update your .csproj file to run the Tailwind CLI

Example

<Target Name="NpmInstall" BeforeTargets="BeforeBuild">
    <Exec WorkingDirectory="wwwroot" Command="npm install" />
</Target>

<Target Name="Tailwind" DependsOnTargets="NpmInstall" BeforeTargets="Build">
    <Exec WorkingDirectory="wwwroot" Command="npx tailwindcss -i app.css -o ./dist/styles.css" />
</Target>
  1. Add the CSS to your index.html
<head>
    <link href="dist/styles.css" rel="stylesheet" />
</head>

📖 Documentation

Extensible Design Documentation

View All Components

Live Documentation

Performance / Benchmarks

Providing a lightweight and performant component library is a major goal of this project.

Area Target Actual Passing
DLL Size 200kb 26.4kb ✔️
JS Bundle Size 10kb 392b ✔️
CSS Bundle Size 50kb 4.6kb ✔️
Time to Interactive 1s 0.6s ✔️
Total Blocking Time 200ms 140ms ✔️
Cumulative Layout Shift 0 0 ✔️
First Contentful Paint 0.5s 0.3s ✔️
RAM Usage TBD
CPU Usage TBD
First Input Delay TBD

The targets specified are only initial estimates and are open to change over time based on a reasonable standard.

Sources

Accessibility

A UI component library isn't helpful if it isn't useful to everyone.

TBD

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

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

initial early release