Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/getspacetime/makani

Collection of UI components built specifically for .NET MAUI Blazor
https://github.com/getspacetime/makani

blazor blazor-components blazor-server blazor-ui-components blazor-webassembly component-library components csharp dotnet maui-blazor tailwindcss wasm

Last synced: 3 months ago
JSON representation

Collection of UI components built specifically for .NET MAUI Blazor

Awesome Lists containing this project

README

        

[![Build](https://github.com/getspacetime/makani/actions/workflows/build.yml/badge.svg)](https://github.com/getspacetime/makani/actions/workflows/build.yml?style=flat-square)
[![nuget](https://img.shields.io/nuget/dt/makani?style=flat-square)](https://www.nuget.org/packages/Makani)
[![nuget](https://img.shields.io/nuget/vpre/makani?style=flat-square)](https://www.nuget.org/packages/Makani/)
[![GitHub stars](https://img.shields.io/github/stars/getspacetime/makani?style=flat-square)](https://github.com/getspacetime/makani/stargazers)
[![last commit](https://img.shields.io/github/last-commit/getspacetime/makani?style=flat-square)](https://github.com/getspacetime/makani/commits/main)
[![Discord](https://img.shields.io/discord/984241021225414787?style=flat-square)](https://discord.gg/PeBbYy6WKq)

# 🏖️ makani
Headless UI Components for Blazor.

> **Note**
> This repository is now archived. All future development will take place in [Pure Blazor Components](https://github.com/pureblazor/components).

1. [Why Makani](#why-makani)
2. Getting Started
- [Quick Start](#quick-start)
- [Using Syntax Highlighting](#using-syntax-highlighting)
3. [Contributing](#contributing)
4. [Live Documentation](https://getspacetime.github.io/makani/)
5. [Roadmap & Components](https://github.com/getspacetime/makani/wiki/Roadmap-&-Components)

## 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](https://tailwindcss.com/). 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`**

```razor
@using Makani
```

**3. Add Makani**
```csharp
builder.Services.AddMakani();
```

**4. Add Static Assets**
```html

```

**5. Build away!**
```razor
Hello world!
```

### 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](https://prismjs.com/) 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 `...` section:
```html

```

Add the following JS to the end of the `...` section:
```html

```

### 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](https://tailwindcss.com/docs/installation)

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

**Example**
```js
module.exports = {
content: ["../**/*.razor", "../*.razor", "index.html"],
theme: {
extend: {},
},
plugins: [],
}
```

3. Update your `.csproj` file to run the Tailwind CLI

**Example**
```

```

4. Add the CSS to your `index.html`

```html

```

## 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**
- https://blog.openreplay.com/top-metrics-you-need-to-understand-when-measuring-front-end-performance
- https://developer.mozilla.org/en-US/docs/Learn/Performance/Measuring_performance

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

TBD

## Contributing

We encourage you to contribute! People of all ages / occupations / experience are welcome.

Please read the [Contribution Guidelines](https://github.com/getspacetime/makani/blob/main/CONTRIBUTING.md) for how to proceed.