open-index/open-npm huggingface dataset:
npm package: @hametuha/epub-style
Description: A set of styles for ePub.
Author: Hametuha INC.
Latest version: 1.0.1

# epub-style
HTML style for ePub

## License

MIT.

## Acknowlegements

- Author profile picture `assets/img/author.jpg` is a picuture of Natsume Soseki by Ogawa Kazumasa under [public domain](https://upload.wikimedia.org/wikipedia/commons/1/17/Natsume_Soseki_photo.jpg).
- The body text is "こころ"(Kokoro) by Natsume Soseki. The original text is ["こころ" at Aozora Bunko](https://www.aozora.gr.jp/cards/000148/files/773_14560.html) under public domain.
npm package: @hametuha/novel
Description: Novel writing tool by Hametuha.
Author: Hametuha INC.
Latest version: 1.3.0

# novel

A CLI novel project management tool set.

```
npm install @hametuha/novel
```

```
# Generate setting file
npx novel init

# Generate HTML
npx novel build

# Gemerate ePub
npx novel epub

# See HTML.
npx novel
```

## Acknowlegement

Cover photo sample by [Monstera](https://www.pexels.com/ja-jp/photo/6373305/)
npm package: @hamflx/json-parser
Description: 一个用 TypeScript 实现的 JSON 解析器。
Author: hamflx
Latest version: 0.0.3

# json-parser

一个用 TypeScript 实现的 JSON 解析器。

## 功能特点

- 完整支持 JSON 规范（也许吧）。
- 支持 AST（抽象语法树）输出。

## 使用方法

安装：

```bash
bun add @hamflx/json-parser
```

使用：

```typescript
import { parse, astToValue } from '@hamflx/json-parser';

// 解析 JSON 字符串为 AST
const ast = parse('{"name": "json-parser", "version": "0.0.1"}');

// 将 AST 转换为 JavaScript 值
const value = astToValue(ast);
```

## 许可证

MIT
npm package: @hamid_80386/adminlte-rtl
Description: RTL version of AdminLTE v3 and v4
Author: HAMID ABBASI
Latest version: 1.0.2

# AdminLTE RTL
There is some additional file to make original AdminLTE Package work as RTL.

## How to install?
Run this command in terminal which has access to npm:

```
npm install @hamid80386/adminlte-rtl --save
```

OR

```
npm install github:hamid80386/adminlte-rtl --save
```

## How to use?

for version 3.x.x put this just after adminlte main css like adminlte.css or adminlte.min.css

```
<link rel="stylesheet" href="[PATH_TO_FILE]/dist/css/adminlte-rtl.css" />
```


for version 4.x.x put this just after adminlte main css like adminlte.css or adminlte.min.css

```
<link rel="stylesheet" href="[PATH_TO_FILE]/dist/css/adminlte-rtl-v4.css" />
```
npm package: @hamidfzm/eslint-config
Description: ESLint configuration used by Hamid FzM.
Latest version: 0.10.0

# eslint-config
This is a configuration for ESLint created by Hamid FzM, and it is intended to be used for React or NextJS projects that utilize TypeScript.

If you are working on a NextJS project, then please use the `@hamidfzm/eslint-config/next` configuration.
## Install
You can install this configuration using either npm or yarn. Here are the commands:

### npm
```sh
npm install --save-dev @hamidfzm/eslint-config
```

### yarn
```sh
yarn add -D @hamidfzm/eslint-config
```

## Usage
To use this configuration, you need to add an extends property in your `.eslintrc.js` file with the value of `@hamidfzm`. Here's an example:

### Typical React Project with TypeScript
```js
module.exports = {
  extends: '@hamidfzm',
};
```

### React Project with NextJS
```js
module.exports = {
  extends: '@hamidfzm/next',
};
```

### React Native Project
```js
module.exports = {
  extends: '@hamidfzm/react-native',
};
```

Additionally, if you want to use Prettier, you can add a `.prettierrc.js` file with your desired settings. Here's an example:

```js
module.exports = {
  singleQuote: true,
  tabWidth: 2,
  trailingComma: 'all',
  useTabs: false,
};
```
npm package: @hamidraza/helpmate
Description: A versatile command-line tool that executes system commands, consults an AI oracle for assistance, and troubleshoots failed commands, while tracking token usage and cost.
Author: Hamid Raza
Latest version: 2.0.0

# HelpMate CLI

HelpMate CLI is a command-line interface tool that executes system commands and seeks the wisdom of an AI oracle when assistance is needed. It also tracks token usage and estimates the cost of API calls.

## Features

- Execute system commands like a boss
- Consult the AI oracle for general queries and guidance
- Automatically summon the AI oracle to troubleshoot failed commands
- Keep an eye on token usage and estimate your expenses

## Installation

1. Ensure you have Node.js installed on your system.
2. Install the HelpMate CLI globally using npm:

```
npm install -g @hamidraza/helpmate
```

## Usage

1. Run `helpmate` to start the application and unleash its powers.
2. Enter your system commands or queries for the AI oracle.

- For system commands, simply enter the command.
- For AI oracle queries, initiate your query with a forward slash (/).

## License

This project is licensed under the [MIT License](LICENSE).
npm package: @hamidreza4dev/postcss-node-sass
Description: A PostCSS plugin to parse styles with node-sass
Author: Arpad Hegedus
Latest version: 3.1.2

# PostCSS Node Sass [<img src="https://postcss.github.io/postcss/logo.svg" alt="PostCSS Logo" width="90" height="90" align="right">][PostCSS]
[![NPM Version](https://img.shields.io/npm/v/postcss-node-sass.svg)](https://www.npmjs.com/package/postcss-node-sass)
[![Build Status](https://travis-ci.org/arpadHegedus/postcss-node-sass.svg?branch=master)](https://travis-ci.org/arpadHegedus/postcss-node-sass)
[![BGitter Chat](https://img.shields.io/badge/chat-gitter-blue.svg)](https://gitter.im/postcss/postcss)

A [PostCSS] plugin to parse styles with [node-sass]


[PostCSS]: https://github.com/postcss/postcss
[Gulp]: https://github.com/gulpjs/gulp
[node-sass]: https://github.com/sass/node-sass

## Installation

```js
npm install postcss-node-sass
```

## Usage

After installation, you can process Sass via PostCSS like this

```js
postcss([require('postcss-node-sass')]).process(yourCSS);
```

or using [Gulp] a typical gulpfile might look like:

```js
let gulp = require('gulp'),
    postcss = require('gulp-postcss'),
    sass = require('postcss-node-sass');
gulp.task('css', () => {
    gulp.src('path/to/dev/css')
        .pipe(postcss([
            /* postcss plugins before parsing sass */
            sass()
            /* postcss plugins after parsing sass */
        ]))
        .pipe(gulp.dest('path/to/build/css'));
});

/* rest of gulp file */
```

## Options

The [Node Sass options](https://github.com/sass/node-sass#options) can be passed in to [this plugin](https://github.com/arpadHegedus/postcss-node-sass) except for `data`, `file`, `importer`, `omitSourceMapUrl`, `outFile`, `sourceMap`, `sourceMapContents` as these are handled by the plugin. Furthermore, by default the processor will use `outputStyle:'expanded'` and `indentWidth:4`.
npm package: @hamidrezana/artystone
Description: Prebuilt CSS Styles
Author: Hamidreza Nazemi
Latest version: 0.6.3

# Artystone

## About The Project

**Prebuilt CSS Styles**

## Installation

Using npm:

```bash
$ npm install @hamidrezana/artystone
```

Using yarn:

```bash
$ yarn add @hamidrezana/artystone
```
npm package: @hamidrezana/chapar
Description: Elegant and easy to use module to call APIs
Author: Hamidreza Nazemi
Latest version: 1.13.1

<p align="center">
  <img src="images/full-logo.png" width="600px" height="auto" />
</p>

# Chapar

## About The Project

**Call APIs easier than ever with Chapar**

## Installation

Using npm:

```bash
$ npm install @hamidrezana/chapar
```

Using yarn:

```bash
$ yarn add @hamidrezana/chapar
```

## Usage

Firstly import `Chapar`

```js
import Chapar from '@hamidrezana/chapar';
```

Then create new instant of Chapar

```js
const chapar = new Chapar('https://jsonplaceholder.typicode.com');
```

Then you can call APIs easily with `sendChapar` method

```js
const response = await chapar.sendChapar('todos/1', { method: 'get' });
```

## Roadmap

- [x] Supporting multiple base urls
- [x] Supporting onError callback
- [ ] Complete Documentation
- [ ] Supporting response template
npm package: @hamishmw/react-scripts-postcss
Description: Configuration and scripts for Create React App.
Latest version: 5.0.0-mod1

# react-scripts

This package includes scripts and configuration used by [Create React App](https://github.com/facebook/create-react-app).<br>
Please refer to its documentation:

- [Getting Started](https://facebook.github.io/create-react-app/docs/getting-started) – How to create a new app.
- [User Guide](https://facebook.github.io/create-react-app/) – How to develop apps bootstrapped with Create React App.
npm package: @hamistudios/crather
Description: a simple nodejs render engine
Author: HamiStudios
Latest version: 2.0.2


<p align="center">
  <img src="https://www.hamistudios.com/assets/img/crather_icon_transparent.png">
</p>

<h1 align="center">crather</h1>
<p align="center">a simple <a href="https://nodejs.org">nodejs</a> render engine</p>

<p align="center">
  <a href="https://travis-ci.org/HamiStudios/crather"><img src="https://travis-ci.org/HamiStudios/crather.svg?branch=master"></a>
  <a href="https://coveralls.io/github/HamiStudios/crather?branch=master"><img src="https://coveralls.io/repos/github/HamiStudios/crather/badge.svg?branch=master"></a>
  <a href="https://www.npmjs.com/package/@hamistudios/crather"><img src="https://img.shields.io/npm/v/@hamistudios/crather.svg"></a>
  <a href="https://github.com/hamistudios/crather/blob/master/LICENSE.md"><img src="https://img.shields.io/github/license/hamistudios/crather.svg"></a>
</p>

### Features:

- Can be used to seamlessly with [`express`](https://github.com/expressjs/express) to render views
- Supports templates and scripts to create dynamic content
- Can be used as a standalone render engine which is great for HTML emails
- Can be used to process any file type HTML, CSS, Text you name it

---

## Installation
```
$ npm install --save @hamistudios/crather
```

## Quick start

```crather
<!-- example.crather -->

<h1>{{ message }}</h1>
```

```javascript
// index.js

const Crather = require('@hamistudios/crather');  
  
let crather = new Crather({  
  data: {
    message: 'Hello World'
  }
});

crather.parse('./example.crather', function(err, result) {  
   if(err) console.error(err);  
   else console.log(result.getRendered());  
});
```

Output:
```html
<h1>Hello World</h1>
```

For more help and information head over to our [website](https://crather.hamistudios.com).

## Documentation
You can view all documentation on the [crather website](https://crather.hamistudios.org).

* Getting started  
  * [Quick start](https://crather.hamistudios.org/#/getting-started/quick-start.md)  
  * [Using express](https://crather.hamistudios.org/#/getting-started/express.md)  
  
* Guides  
  * [Standard Expressions](https://crather.hamistudios.org/#/guides/standard-expressions.md)  
  * [Templates](https://crather.hamistudios.org/#/guides/templates.md)  
  * [Scripts](https://crather.hamistudios.org/#/guides/scripts.md)  
  
* Reference  
  * [Crather](https://crather.hamistudios.org/#/reference/Crather.md)  
  * [Result](https://crather.hamistudios.org/#/reference/Result.md)  
  * [Crather.script](https://crather.hamistudios.org/#/reference/Crather.script.md)  
  * [Expression](https://crather.hamistudios.org/#/reference/Expression.md)
    
* [Changelog](https://crather.hamistudios.org/#/CHANGELOG.md)
npm package: @hamitzor/x-components
Description: Lightweight React Components for Complex UIs
Author: Hamit Zor
Latest version: 1.0.0

# X-Components

Reusable React components to create complex UIs.
Demo application can be inspected at [https://x-components.hamitzor.de](https://x-components.hamitzor.de/InputExtension)

To run the demo:

1. `npm install` to install the npm packages
2. `npm run build` and `npm run start` to start the test server.
npm package: @hamjs/http
Description: HamJS mini HTTP Server library
Author: Hadi Hidayat Hammurabi
Latest version: 1.0.3

# @hamjs/http
This is a mini HTTP server library for NodeJS.

## Why @hamjs/http?
This library is very fast as it is **zero dependency**.

## Installation
Run this command in your project directory!
```
$ npm install @hamjs/http
```

## Usage
Before you use @hamjs/http, you have to require it. Example, below.
```js
const http = require('@hamjs/http');
```

Then, you can create and listen the server. Example, below.
```js
...
const app = new Http();
// routing here
...
app.listen(PORT, callback);
```

To add route, you can use the router. Example, below.
```js
...
app.router.get(PATH, handler);
...
```

The handler look like here.
```js
...
(ctx) => {
  ctx.send('Anything.');
}
...
```

Full example code.
```js
const Http = require('@hamjs/http');

const app = new Http();

app.router.get('/', (ctx) => {
  ctx.send('halo ');
});

app.listen(8080, () => {
  console.log('app start');
});
```
npm package: @hamjs/http-server
Description: Mini http server framework for NodeJS
Author: Hadi Hidayat Hammurabi
Latest version: 0.0.4
Deprecated: move to @skuyjs/http-server

# @hamjs/http-server
Mini http server framework for NodeJS

## Installation
To install `@hamjs/http-server`, run this command using terminal inside your project.
```bash
npm install @hamjs/http-server
```

## Usage
To use this framework, you can follow this example.
```javascript
const Server = require('@hamjs/http-server');
const server = new Server();

server.get('/', (req, res) => {
  res.send('hello');
});

server.listen(8080);
```

<details><summary>More Examples</summary>
You can see more examples <a href="./examples">here</a>.
</details>

## License
[MIT](./LICENSE)
npm package: @hamjs/rpc-client
Description: A NodeJS RPC Client for @hamjs/rpc-server
Author: Hadi Hidayat Hammurabi
Latest version: 0.0.2

# hamjs-rpc-client-node
A NodeJS RPC Client for [@hamjs/rpc-server](https://github.com/hadihammurabi/hamjs-rpc-server)

## How to use?
### Installation
First, create your NodeJs project using `npm init` command.
Then run command below inside that project.

```npm i https://github.com/hadihammurabi/hamjs-rpc-client-node```

### Connecting to RPC Server
Before you connect to RPC server, don't forget to run the server first
([read here](https://github.com/hadihammurabi/hamjs-rpc-server#creating-rpc-server))!
Then, type this on your `.js` file.

```js
// importing this package 
const rpc = require('@hamjs/rpc-client');

// connecting to RPC server
rpc.connect('http://localhost:8080');
```

### Call a Procedure
All procedure calls are done with Promise. You can see example below.

```js
// call sum procedure
// send parameters as an object
rpc
  .call('sum', { a: 1, b: 2 })
  .then(res => {
    console.log(res);
  })
  .catch(console.log);
```

## Contributing
Read [here](https://github.com/hadihammurabi/hamjs-rpc-server#contributing)!
npm package: @hamjs/rpc-server
Description: NodeJS Framework to Create RPC Server
Author: Hadi Hidayat Hammurabi
Latest version: 0.0.31
Deprecated: move to @ngasemjs/server-core

# hamjs-rpc-server
NodeJS Framework to Create RPC Server 

As you know about [RPC](https://en.wikipedia.org/wiki/Remote_procedure_call),
this is way to communicate between applications. Here, you got a very cool RPC
server framework for NodeJS.

## How cool is this?
1. Zero dependencies, only use NodeJS native module.
2. Simple procedure call API
3. (i will define it next day, maybe :v)

## How to use?
### Installation
First, create your NodeJs project using `npm init` command.
Then run command below inside that project.

```npm i @hamjs/rpc-server```

### Creating RPC Server
To starting your RPC server, you have to create a file that
calling the listen method from this RPC framework. You can
follow example below.

```js
// importing the framework
const rpc = require('@hamjs/rpc-server');

// run RPC server on port 8080
rpc.listen(8080, () => {
  console.log('RPC server is running...');
});
```

### Creating a Procedure
Before a procedure called, you have to define it.
To do this, see the example below.

```js
rpc.def('sum', (a, b) => {
  return a + b;
});
```

### Calling the Procedure
To call a procedure, you have to install client library for this framework.
You can see client provided list below.
1. [NodeJS](https://github.com/hadihammurabi/hamjs-rpc-client-node)
2. [JavaScript](https://github.com/hadihammurabi/hamjs-rpc-client-js)

Or, you don't need to install any client, you can send HTTP request to the server
with rules below.
1. HTTP request to RPC server address (eg. http://localhost:8080)
2. Using **POST** request method
3. Put body like this:
```json
{
  "call": "procedureName",
  "parameters": [ 1, 2, 3, 4 ]
}
```

## Contributing
I hope everyone will contribute to this project, but i am not sure :v

If you want to contribute, fork and give me a pull request!
npm package: @hamlog/maidenhead
Description: For various amateur radio needs, we at [Hamlog.Online](https://hamlog.online) required a library to process [Maidenhead grid locators](https://en.wikipedia.org/wiki/Maidenhead_Locator_System) in Javascript.
Author: Eugene Medvedev
Latest version: 1.0.0

# Maidenhead grid conversion library

For various amateur radio needs, we at [Hamlog.Online](https://hamlog.online) required a library to process [Maidenhead grid locators](https://en.wikipedia.org/wiki/Maidenhead_Locator_System) in Javascript.

None of the other libraries already created by the community were suitable:

1. Some of them believe that Maidenhead grid locators are only ever 4 or 6 characters long, when situations exist that may require one to use 8 or even 10. Some will even reject either 4 or 6, which is downright unacceptable.
2. Some of them believe that if the grid isn't written in alternating upper and lower case, it's not valid, which is definitely not so.
3. Some will convert a grid to coordinates without noticing that they're pointing at the corner of the grid square.

This library was created to address all the above issues and work with arbitrary precision grids. If you want to give your coordinates down to a millimeter, you can.

## Usage

```bash
npm install @hamlog/maidenhead
```

If you're using TypeScript, you might want to use the TypeScript source code directly instead of the compiled versions:

```json
// tsconfig.json
...
    "paths": {
      "@hamlog/maidenhead": ["./node_modules/@hamlog/maidenhead/src"],
    }
...
```

## Examples

```ts
import {
  gridToPoint, pointToGrid, gridToBox
} from '@hamlog/maidenhead';

const coordinate = gridToPoint("FN42GV54AX");
// result: { lat: 42.895746527777774, lon: -71.45815972222222 }

const grid = pointToGrid(coordinate, 6);
// result: "FN42GV"

const gridNicer = pointToGrid(coordinate, 6, true);
// result: "FN42gv"

const box = gridToBox(grid);
// result: [ { lat: 42.875, lon: -71.5 }, { lat: 42.916666666666664, lon: -71.41666666666667 } ]
```

`gridToPoint` produces the coordinates of a point in the exact center of the grid square. `gridToBox` produces the coordinates of two corners of the grid square, suitable for drawing it on a map.

## Tooling

+ `npm run build` to build for consumption.

## License

This library is released under the terms of MIT license. See [LICENSE](LICENSE).
npm package: @hammaadhrasheedh/editorjs-iframe
Description: Iframe Tool for Editor.js
Author: CodeX
Latest version: 1.0.21

![](https://badgen.net/badge/Editor.js/v2.0/blue)

# Editor js iframe plugin

Provides iframe support for the [Editor.js](https://editorjs.io).

Works only with pasted iframe tags and requires no server-side setup.

![](assets/sample.gif)

## Installation

### Install via NPM

Get the package

```shell
npm i --save-dev @hammaadhrasheedh/editorjs-iframe
```

Include module at your application

```javascript
const Iframe = require('@hammaadhrasheedh/editorjs-iframe');
```

### Download to your project's source dir

1. Upload folder `dist` from repository
2. Add `dist/bundle.js` file to your page.

Then require this script on page with Editor.js.

```html
<script src="..."></script>
```

## Usage

Add a new Tool to the `tools` property of the Editor.js initial config.

```javascript
var editor = EditorJS({
  ...
  
  tools: {
    ...
    iframe: Iframe,
  }
  
  ...
});
```

## Config Params

This Tool has no config params

## Tool's settings

![](assets/tools.png)

1. Left align

2. Center align

3. Right align

## Output data

| Field          | Type      | Description                     |
| -------------- | --------- | ------------------------------- |
| frame            | `string`  | iframe                      |
| alignment      | `string` | alignment of iframe |


```json
{
    "type" : "image",
    "data" : {
        "frame" : "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/n9Hn2J9_n7k\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"></iframe>",
        "alignment" : "Centered",
    }
}
```
npm package: @hammaadhrasheedh/react-circular-gradient-progress-stack
Description: Circular progress bar with gradient and stacked progress
Author: Hammaadh Rasheedh
Latest version: 1.1.4

# react-gradient-progress-stack

> Circular progress bar with stacked progress
> Circular progress bar with donut pie

## Install

```bash
  npm i @hammaadhrasheedh/react-circular-gradient-progress-stack
```

## Usage

```jsx
import React, { Component } from 'react'

import { CircleProgress, PieProgress } from '@hammaadhrasheedh/react-circular-gradient-progress-stack'
import { easeSinOut } from 'd3-ease'

class Example extends Component {
  render() {
    return 
      <div>
        <CircleProgress
            concentric={true} 
            width={260}
            easingFunction={ easeSinOut }
            values={[
              {percentage:90, strokeWidth:20, primaryColor:['#BC94FF', '#9F66FF']},
              {percentage:50, strokeWidth:20, primaryColor:['#FF94CE', '#DA2770']},
              {percentage:10, strokeWidth:20, primaryColor:['#89E8F5', '#0F72E8']},
            ]}
        />

        <CircleProgress
            concentric={false} 
            width={260}
            easingFunction={ easeSinOut }
            values={[
              {percentage:90, strokeWidth:20, primaryColor:['#BC94FF', '#9F66FF']},
              {percentage:50, strokeWidth:20, primaryColor:['#FF94CE', '#DA2770']},
              {percentage:10, strokeWidth:20, primaryColor:['#89E8F5', '#0F72E8']},
            ]}
        />

        <PieProgress
          width={260}
          strokeWidth={20}
          easingFunction={ easeSinOut }
          values={[
            {percentage:30, primaryColor:['#BC94FF40', '#9F66FF40']},
            {percentage:20, primaryColor:['#FF94CE40', '#DA277040']},
            {percentage:20, primaryColor:['#FF94CE40', '#DA277040']},
            {percentage:30, primaryColor:['#FF94CE40', '#DA277040']},
          ]}
        />
      </div>
  }
}
```
npm package: @hammad.fauz/parser
Description: Fast, flexible, and lean implementation of BBcode parser
Author: Hammad Fauz
Latest version: 1.0.10

# @hammad.fauz/parser

fork of @bbob/parser
> Parses BBCode and returns array AST tree 

Valid for use with [posthtml-render](https://github.com/posthtml/posthtml-render)

## Usage

```js
import parse from '@hammad.fauz/parser'

const options = {
    onlyAllowTags: ['url', 'h'],
    onError: (err) => console.warn(err.message, err.lineNumber, err.columnNumber)
}
const ast = parse('[url=https://github.com]hello world![/url]', options)
```

## Results 

```json
[
    {
        "tag": "url",
        "attrs": {
            "url": "https://github.com"
        },
        "content": ["hello", " ", "world!"]
    }
]
```
npm package: @hammadamin/calendar-kit
Description: React Native Calendar Kit
Author: howljs
Latest version: 1.13.4

# 📅 React Native Calendar Kit

React Native Calendar component, fully implemented using @shopify/flash-list, react-native-gesture-handler and react-native-reanimated. Support pinch to zoom, drag and drop to create/update event.

[![Version][npm-shield]][npm-link]

[![Demo](./assets/demo.gif)](https://user-images.githubusercontent.com/33460888/199891737-af6957ba-6a2c-49ee-8312-6feca89a2c39.MP4)

## Installation

Using Yarn:

```
$ yarn add @hammadamin/calendar-kit
```

Using NPM:

```
$ npm install --save @hammadamin/calendar-kit
```

The libraries we will install now are [@shopify/flash-list](https://shopify.github.io/flash-list/), [react-native-gesture-handler](https://docs.swmansion.com/react-native-gesture-handler/) and [react-native-reanimated](https://docs.swmansion.com/react-native-reanimated/). If you already have these libraries installed and at the latest version, you are done here! Otherwise, read on.

## Installing dependencies into a bare React Native project

Using Yarn:

```
$ yarn add @shopify/flash-list react-native-gesture-handler react-native-reanimated
```

Using NPM:

```
$ npm install --save @shopify/flash-list react-native-gesture-handler react-native-reanimated
```

> Follow installation instructions for [React Native Reanimated](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/installation) and [React Native Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler/docs/installation).

## Installing dependencies into an Expo managed project

```
$ npx expo install @shopify/flash-list react-native-gesture-handler react-native-reanimated
```

> Follow installation instructions for [React Native Reanimated](https://docs.expo.dev/versions/latest/sdk/reanimated/) and [React Native Gesture Handler](https://docs.expo.dev/versions/latest/sdk/gesture-handler/).



## Basic Usage

```tsx
import { TimelineCalendar } from '@hammadamin/calendar-kit';

// Week View
<TimelineCalendar viewMode="week" />;

// Day View
<TimelineCalendar viewMode="day" />;

// 3-days
<TimelineCalendar viewMode="threeDays" />;

// Work week
<TimelineCalendar viewMode="workWeek" />;
```

![View mode](./assets/mode.jpg)

[npm-shield]: https://img.shields.io/npm/v/@howljs/calendar-kit
[ko-fi-shield]: https://img.shields.io/static/v1.svg?label=%20&message=ko-fi&logo=ko-fi&color=13C3FF

[npm-link]: https://www.npmjs.com/package/@hammadamin/calendar-kit
npm package: @hammadj/better-auth
Description: The most comprehensive authentication framework for TypeScript.
Latest version: 1.5.0-beta.11

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://github.com/better-auth/better-auth/blob/main/banner-dark.png?raw=true" />
    <source media="(prefers-color-scheme: light)" srcset="https://github.com/better-auth/better-auth/blob/main/banner.png?raw=true" />
    <img alt="Better Auth Logo" src="https://github.com/better-auth/better-auth/blob/main/banner.png?raw=true" />
  </picture>

  <h1 align="center">
    Better Auth
  </h1>

  <p align="center">
    The most comprehensive authentication framework for TypeScript
    <br />
    <a href="https://better-auth.com"><strong>Learn more »</strong></a>
    <br />
    <br />
    <a href="https://discord.gg/better-auth">Discord</a>
    ·
    <a href="https://better-auth.com">Website</a>
    ·
    <a href="https://github.com/better-auth/better-auth/issues">Issues</a>
  </p>
</p>

## Getting Started

```bash
pnpm install better-auth
```

Read the [Installation Guide](https://better-auth.com/docs/installation) to
learn more.
npm package: @hammadj/better-auth-cli
Description: The CLI for Better Auth
Latest version: 1.5.0-beta.9

# Better Auth CLI

Better Auth comes with a built-in CLI to help you manage the database schema
needed for both core functionality and plugins.

### **Init**

The CLI includes an `init` command to add Better Auth to your project.

```bash title="terminal"
npx @better-auth/cli@latest init
```

### **Generate**

The `generate` command creates the schema required by Better Auth.
If you’re using a database adapter like Prisma or Drizzle, this command will
generate the right schema for your ORM.
If you’re using the built-in Kysely adapter, it will generate an SQL file you
can run directly on your database.

```bash title="terminal"
npx @better-auth/cli@latest generate
```

### **Migrate**

The `migrate` command applies the Better Auth schema directly to your database.
This is available if you’re using the built-in Kysely adapter.
For other adapters, you’ll need to apply the schema using your ORM’s migration
tool.

```bash title="terminal"
npx @better-auth/cli@latest migrate
```

### **Secret**

The CLI also provides a way to generate a secret key for your Better Auth
instance.

```bash title="terminal"
npx @better-auth/cli@latest secret
```

## License

MIT
npm package: @hammadj/better-auth-expo
Description: Better Auth integration for Expo and React Native applications.
Latest version: 1.5.0-beta.9

# Better Auth Expo Plugin

This plugin integrates Better Auth with Expo, allowing you to easily add
authentication to your Expo (React Native) applications.
It supports both Expo native and web apps.

## Installation

To get started, install the necessary packages:

```bash
# Using npm
npm install better-auth @better-auth/expo

# Using yarn
yarn add better-auth @better-auth/expo

# Using pnpm
pnpm add better-auth @better-auth/expo

# Using bun
bun add better-auth @better-auth/expo
```

You will also need to install `expo-secure-store` for secure session and cookie
storage in your Expo app:

```bash
npm install expo-secure-store
# or
yarn add expo-secure-store
# or
pnpm add expo-secure-store
# or
bun add expo-secure-store
```

## Basic Usage

### Configure the Better Auth Backend

Ensure you have a Better Auth backend set up.
You can follow the main [Installation Guide][].

Then, add the Expo plugin to your Better Auth server configuration (e.g., in
your `auth.ts` or `lib/auth.ts` file):

```typescript
// lib/auth.ts
import { betterAuth } from 'better-auth';
import { expo } from '@better-auth/expo'; // Import the server plugin

export const auth = betterAuth({
  // ...your other Better Auth options
  baseURL: 'http://localhost:8081', // The base URL of your application server where the routes are mounted.
  plugins: [expo()], // Add the Expo server plugin
  emailAndPassword: {
    enabled: true,
  },
  // Add other configurations like trustedOrigins
  trustedOrigins: ['myapp://'], // Replace "myapp" with your app's scheme
});
```

### Initialize the Better Auth Client in Expo

In your Expo app, initialize the client (e.g., in `lib/auth-client.ts`):

```typescript
// lib/auth-client.ts
import { createAuthClient } from 'better-auth/react';
import { expoClient } from '@better-auth/expo/client'; // Import the client plugin
import * as SecureStore from 'expo-secure-store';

export const authClient = createAuthClient({
  baseURL: 'http://localhost:8081', // Your Better Auth backend URL
  plugins: [
    expoClient({
      scheme: 'myapp', // Your app's scheme (defined in app.json)
      storagePrefix: 'myapp', // A prefix for storage keys
      storage: SecureStore, // Pass SecureStore for token storage
    }),
  ],
});

// You can also export specific methods if you prefer:
// export const { signIn, signUp, useSession } = authClient;
```

Make sure your app’s scheme (e.g., “myapp”) is defined in your `app.json`.

## Documentation

For more detailed information and advanced configurations, please refer to the
documentation:

* **Main Better Auth Installation:** [Installation Guide][]
* **Expo Integration Guide:** [Expo Integration Guide][]

## License

MIT

[expo integration guide]: https://www.better-auth.com/docs/integrations/expo

[installation guide]: https://www.better-auth.com/docs/installation
npm package: @hammadj/better-auth-passkey
Description: Passkey plugin for Better Auth
Latest version: 1.5.0-beta.9

# Better Auth Passkey Plugin

## Installation

```bash
# Using npm
npm install better-auth @better-auth/passkey

# Using yarn
yarn add better-auth @better-auth/passkey

# Using pnpm
pnpm add better-auth @better-auth/passkey

# Using bun
bun add better-auth @better-auth/passkey
```

## Usage

### Server

```typescript
import { betterAuth } from 'better-auth';
import { passkey } from '@better-auth/passkey';

export const auth = betterAuth({
  plugins: [
    passkey({
      rpID: 'example.com',
      rpName: 'My App',
    }),
  ],
});
```

### Client

```typescript
import { createAuthClient } from 'better-auth/client';
import { passkeyClient } from '@better-auth/passkey/client';

export const authClient = createAuthClient({
  plugins: [passkeyClient()],
});
```

## Documentation

For more information, visit the [Better Auth Passkey documentation](https://better-auth.com/docs/plugins/passkey).

## License

MIT