<div align="center">

[![Knyt](./docs/banner.svg)](https://knyt.dev/s/tasker)

🔌 A collection of [Lit](https://lit.dev/)-compatible reactive controllers for [Knyt](https://knyt.dev/), <br /> providing a system for creating reusable, stateful logic controllers.

<small>

This package is part of [Knyt](https://knyt.dev/), a toolkit designed to simplify modern web development.

</small>

[![npm](https://img.shields.io/npm/v/@knyt/tasker?style=flat-square&labelColor=444)](https://www.npmjs.com/package/@knyt/tasker)
[![GitHub](https://img.shields.io/badge/Source_Code-black?style=flat-square&label=GitHub&labelColor=444)](https://github.com/sables-app/knyt/tree/main/packages/tasker)
[![License](https://img.shields.io/badge/License-BSD_3_Clause-blue?style=flat-square&labelColor=444)](https://github.com/sables-app/knyt/blob/main/LICENSE)
<br />
![Built with TypeScript](https://img.shields.io/badge/Built%20with-TypeScript-3178c6.svg?style=flat-square&logo=typescript&labelColor=444)
![Built for The Web](https://img.shields.io/badge/Built_for-The_Web-e34f26.svg?style=flat-square&logo=HTML5&labelColor=444)

</div>

## Key Features

- **Lit-Compatible Controllers**: `ReactiveController` system with lifecycle integration
- **Reactive State**: Hydratable state with computed/mapped values & effects
- **Lifecycle Mixins**: Controllable adapters for observable state & updates
- **Host Utilities**: Reactive subscriptions & listener management
- **Universal Rendering**: SSR + client-side compatible execution
- **Essential Controllers**: Provides controllers for features such as hotkeys, async DOM events, and dynamic style handling

## Documentation

Documentation is available at [knyt.dev](https://knyt.dev), including guides for:

- [Reactivity](https://knyt.dev/guide/web-components/reactivity)
- [Controllers](https://knyt.dev/guide/web-components/controllers)
- [Lifecycle](https://knyt.dev/guide/web-components/lifecycle)

## Usage

To create a simple counter custom element, you could use the following code:

```ts

```

## Install

You can use this package by installing either the [Knyt Toolkit](https://knyt.dev/s/toolkit) or this standalone package.

_Knyt Toolkit:_

```sh
npm install knyt
```

_Standalone:_

```sh
npm install @knyt/tasker
```

## Updates

See the [CHANGELOG](./CHANGELOG.md) for a list of changes.

## License

This package is licensed under the [BSD 3-Clause License](./LICENSE).

## Open-Source Initiative

This project is supported by [Sables Applications LLC](https://sables.app) as part of its open-source initiatives.
