Giter Club home page Giter Club logo

makani's Introduction

Build nuget nuget Discord

๐Ÿ–๏ธ 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:

<!-- vscode-dark-plus is the one used in the Makani docs -->
<link href="_content/Makani/css/vscode-dark-plus.css" rel="stylesheet" />

<!--<link href="_content/Makani/css/atom-dark.css" rel="stylesheet" />
<link href="_content/Makani/css/coy.css" rel="stylesheet" />
<link href="_content/Makani/css/okaidia.css" rel="stylesheet" />
<link href="_content/Makani/css/tomorrow-night.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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.