open-index/open-npm huggingface dataset:
npm package: @simbachain/libsimba-js
Description: libsimba-js is a library simplifying the use of SIMBAChain APIs. We aim to abstract away the various blockchain concepts, reducing the necessary time needed to get to working code.
Author: Kieran David Evans
Latest version: 0.5.8

<h1 align="center">Welcome to libsimba-js</h1>
<p>
  <a href="https://www.npmjs.com/package/@simbachain/libsimba-js">
    <img alt="npm" src="https://img.shields.io/npm/dw/@simbachain/libsimba-js?style=flat">  
  </a>
  <a href="https://simbachain.github.io/libsimba-js/">
    <img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg?style=flat" target="_blank" />
  </a>
  <a href="https://github.com/SIMBAChain/libsimba-js/blob/master/LICENSE">
    <img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat" target="_blank" />
  </a>
  <img alt="azure" src="https://dev.azure.com/SimbaChain/libSimba/_apis/build/status/SIMBAChain.libsimba-js-develop?branchName=develop">
</p>

> libsimba-js is a library simplifying the use of SIMBAChain APIs. We aim to abstract away the various blockchain concepts, reducing the necessary time needed to get to working code.

### [🏠 Homepage](https://github.com/simbachain/libsimba-js#readme)
### [📝 Documentation](https://simbachain.github.io/libsimba-js/)

## Install

```sh
npm install @simbachain/libsimba-js
```

## Usage

- ES2105 module import
```javascript
import * as libsimba from '@simbachain/libsimba-js';
libsimba.getSimbaInstance(...);
```
- CommonJS module require
```javascript
const libsimba  = require('@simbachain/libsimba-js');
libsimba.getSimbaInstance(...);
```
- AMD module require
```javascript
require(['@simbachain/libsimba-js'], function (libsimba) {
    libsimba.getSimbaInstance(...);
});
```
- `<script>` tag import
```html
<!doctype html>
<html>
  ...
  <script src="./dist/libsimba.js"></script>
  <script>
    // ...
    // Global variable
    libsimba.getSimbaInstance(...);
    // Property in the window object
    window.libsimba.getSimbaInstance(...);
    // ...
  </script>
</html>
```

## Examples

See [here](https://simbachain.github.io/libsimba-js/example.html)

## Contributing

Contributions, issues and feature requests are welcome!<br />Feel free to check [issues page](https://github.com/simbachain/libsimba-js/issues).

## License

Copyright © 2019 [SIMBAChain Inc](https://simbachain.com/).<br />
This project is [MIT](https://github.com/SIMBAChain/libsimba-js/blob/master/LICENSE) licensed.
npm package: @simbachain/simba-chain-dpop
Description: Utilities for DPoP
Author: SIMBAChain Inc.
Latest version: 0.2.5

# simba-chain-dpop

- [Datadog CI Details](https://app.datadoghq.com/ci/pipelines/ejdY7rwW6JZg/SIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-dpop/ci/main?query=ci_level%3Apipeline%20env%3Aci%20%40git.repository.id%3Agitlab.com%2FSIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-dpop%20%40ci.pipeline.name%3ASIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-dpop%20%40ci.provider.instance%3Agitlab-ci%20%40git.branch%3Amain%20%40ci.pipeline.fingerprint%3AejdY7rwW6JZg&fromUser=false&index=cipipeline&start=1741262860714&end=1741867664367&paused=false)
- [Datadog Security Scanning](https://app.datadoghq.com/ci/code-analysis/gitlab.com%2Fsimbachain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-dpop/main/c82a3b9e90e43a3b4afb7148f6a2c746f7b989e0/code-vulnerabilities?query=%40git.repository.id%3Agitlab.com%2Fsimbachain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-dpop%20%40git.branch%3Amain%20%40git.commit.sha%3Ac82a3b9e90e43a3b4afb7148f6a2c746f7b989e0%20%40static_analysis.result.category%3Asecurity%20%40static_analysis.result.item_type%3Astatic_analysis_violation%20-%40static_analysis.rule.is_testing%3Atrue)

This library provides utilities for creating DPoP Proofs.

A DPoP proof is a JWT that contains a public key that the client
will sign the authentication token with. The JWT is signed by the
corresponing private key owned by the client.

Three methods are exposed:
1. Create a JWT header object - `createHeader`
2. Create a JWT payload object that can include a server provided nonce and authentication token - `createPayload`
3. Create a DPoP JWT signed and base64 URL encoded string - `signJwt`

 The nonce field should be provided if the server has included a `DPoP-Nonce`
 HTTP header. This can be sent in successful responses and also on failed responses
 if the server has changed the nonce, or the client has not included an expected nonce.
  
 The token should be provided as part of requesting access using the token. This is
 hashed and added to the proof as the `ath` field.

 The output from the `signJwt` function should be added to the HTTP request as the `DPoP` HTTP header.



## NPM

Grab a gitlab token from [here](https://gitlab.com/-/user_settings/personal_access_tokens) with at least "read_repository, read_registry, read_api" permissions. Set a sensible expiration date.

Run the following:
```bash
npm config set //gitlab.com/api/v4/groups/12257889/-/packages/npm/:_authToken <token>
```
npm package: @simbachain/simba-chain-vc
Description: Utilities for signing VCs and creating VPs
Author: SIMBAChain Inc.
Latest version: 0.3.10

# simba-chain-vc

- [Datadog CI Details](https://app.datadoghq.com/ci/pipelines/ejdY7rwW6JZg/SIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vc/ci/main?query=ci_level%3Apipeline%20env%3Aci%20%40git.repository.id%3Agitlab.com%2FSIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vc%20%40ci.pipeline.name%3ASIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vc%20%40ci.provider.instance%3Agitlab-ci%20%40git.branch%3Amain%20%40ci.pipeline.fingerprint%3AejdY7rwW6JZg&fromUser=false&index=cipipeline&start=1741262860714&end=1741867664367&paused=false)
- [Datadog Security Scanning](https://app.datadoghq.com/ci/code-analysis/gitlab.com%2Fsimbachain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vc/main/c82a3b9e90e43a3b4afb7148f6a2c746f7b989e0/code-vulnerabilities?query=%40git.repository.id%3Agitlab.com%2Fsimbachain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vc%20%40git.branch%3Amain%20%40git.commit.sha%3Ac82a3b9e90e43a3b4afb7148f6a2c746f7b989e0%20%40static_analysis.result.category%3Asecurity%20%40static_analysis.result.item_type%3Astatic_analysis_violation%20-%40static_analysis.rule.is_testing%3Atrue)


This library provides utilities for working with DID Documents,
Verifiable Credentials (VCs) and Presentations (VPs).

Currently it is focussed on the minimal client side capabilities of:

1. Creating SIMBA VPs given VCs that have been provided by the server where a
   local public key/ethereum address is mapped to the DID subject of that VC.
2. Finding the verification method (aka DID Document key reference) mapped to a public key or address.
3. Determining issuer and subject DIDs given a VC.
4. Creating a new private key from which public key and address can be derived.
5. Signing arbitrary data outside of the ethereum use case.
6. Creating JWK serializations of public and private keys.
7. Creating a multicodec serialization of public keys.

Note that (almost) all functionality is currently based on ERC 191 capabilities that are
used by the ERC191 crypto suite defined by SIMBA.
Therefore secp256k1 keys are assumed and when we say `public key` we usually mean `ethereum address`, as the address is the
public part of the key pair as far as blockchain and the SIMBA ERC191 suites is concerned.

The non-ethereum signing (#5 above) is used to sign DPoP headers. These signatures
are verified by the `public key` NOT an `ethereum address`.
For Secp256k1, this signing uses deterministic signing (no salt/nonce) and returns
a 64 byte signature over 32 bytes of data. It is assumed that any data that is not 32 bytes needs to be hashed and the
hashing alg is SHA256. An optional nonce can be added to this signing which is simply appended to the data before signing.

Multicodec public keys (not addresses) can be used as verification methods in DID documents.
npm package: @simbachain/simba-chain-vdr
Description: - [Datadog CI Details](https://app.datadoghq.com/ci/pipelines/ejdY7rwW6JZg/SIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vdr/ci/main?query=ci_level%3Apipeline%20env%3Aci%20%40git.repository.id%3Agitlab.com%2FSIMBAChain%2Fsimba-ente
Author: Julie Jung
Latest version: 0.4.7

# SIMBA Chain VDR

- [Datadog CI Details](https://app.datadoghq.com/ci/pipelines/ejdY7rwW6JZg/SIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vdr/ci/main?query=ci_level%3Apipeline%20env%3Aci%20%40git.repository.id%3Agitlab.com%2FSIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vdr%20%40ci.pipeline.name%3ASIMBAChain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vdr%20%40ci.provider.instance%3Agitlab-ci%20%40git.branch%3Amain%20%40ci.pipeline.fingerprint%3AejdY7rwW6JZg&fromUser=false&index=cipipeline&start=1741262860714&end=1741867664367&paused=false)
- [Datadog Security Scanning](https://app.datadoghq.com/ci/code-analysis/gitlab.com%2Fsimbachain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vdr/main/c82a3b9e90e43a3b4afb7148f6a2c746f7b989e0/code-vulnerabilities?query=%40git.repository.id%3Agitlab.com%2Fsimbachain%2Fsimba-enterprise-platform%2Fui%2Flibraries%2Fsimba-chain-vdr%20%40git.branch%3Amain%20%40git.commit.sha%3Ac82a3b9e90e43a3b4afb7148f6a2c746f7b989e0%20%40static_analysis.result.category%3Asecurity%20%40static_analysis.result.item_type%3Astatic_analysis_violation%20-%40static_analysis.rule.is_testing%3Atrue)
npm package: @simbachain/web3-suites
Description: common code for web3 suite plugins. Code in this repo can be used for truffle or hardhat, but is designed to be applicable to future web3 suite plugins as well.
Author: SIMBA Chain
Latest version: 5.2.0

# web3-suites-common

## Summary
This project contains code that is common to web3 suite plugins for SIMBA Chain (eg Truffle and Hardhat plugings). The objects in this code base handle authentication (through Keycloak device login), http requests, and file systems operations (mainly searching for contracts and other files in web3 projects).

This module does not need to be installed in the web3 project you are using. The Simba web3 plugins install this module, and thus the logic inside this module is abstracted away from the end user. So the layers are:

@simbachain/web3-suites 
->
simba chain plugin (eg @simbachain/hardhat) 
->
web3 project (eg a hardhat project)

So a developer will not be exposed to the code contained in this module.

## Installation

Installation only needs to be performed by devs working on the @simbachain/truffle and @simbachain/hardhat plugins. For such installation, run:

```
$ npm install @simbachain/web3-suites
```

## Usage
As stated above, developers will not directly be using this module's code in their web3 projects. But some notes on how this code and its objects are structured is provided here.

### Static vs. Non-Static Methods
The code in this module has been written so that methods for SimbaConfig can usually be called as either static or non-static methods, but will achieve the same result. So sometimes in the web3 plugins that use this library, you will see something like config.ProjectConfigStore.get("clientID"), while other times you will see SimbaConfig.ProjectConfigStore.get("clientID"). Both code examples do the same thing. The reason for this is that the truffle plugin was written first, and used instances of SimbaConfig, while the Hardhat plugin was built after, and mainly used static methods. So this was an attempt to not break the Truffle plugin interface.

### SimbaConfig.ConfigStore vs. SimbaConfig.ProjectConfigStore
This project uses Configstore objects from the configstore library to manage auth and config info. When you see references to SimbaConfig.ConfigStore, understand that this object operates on and interacts with a .json file containing auth info (authconfig.json). When you see a reference to SimbaConfig.ProjectConfigStore, understand that this object operates on and interacts with a .json file containing project info for the user's web3 project (simba.json).

### Authentication and HTTP Requests
Auth and HTTP requests are handled by SimbaConfig.authStore. SimbaConfig.authStore is actually instantiated by passing the SimbaConfig.ProjectConfigStore property and SimbaConfig.ConfigStore property. So the ProjectConfigStore and ConfigStore properties are the same for both SimbaConfig and SimbaConfig.authStore. In other words, SimbaConfig.authStore.projectConfig === SimbaConfig.ProjectConfigStore. Access / Auth tokens obtained by SimbaConfig.authStore are stored in SimbaConfig.ConfigStore (or SimbaConfig.authStore.configStore).
npm package: @simbafs/og
Description: statically generate og image in png based on provided information
Author: SimbaFs
Latest version: 1.2.1

# getOG

statically generate og image in png based on provided information

## Installation

```
$ npm i @simbafs/og
```

## usage

### CLI

```
$ node index.js path/to/your/post.md
```

```
Usage: index [options] <input> [output]

Arguments:
  input              the input markdown file
  output             the output png file, default og/${input}

Options:
  --author <name>
  --font <path>
  --template <path>
  -h, --help         display help for command
```

the generated og image will be placed in `og/path/to/your/post.png`

### Lib

```js
const { getOg, getOgFromMd } = require('@simbafs/og')
const fs = require('fs')

getOg({
    title: 'Auto Generate OG Image',
    subtitle: '2023/08/29 by SimbaFs',
    tags: ['og', 'image', 'svg'],
}).then(({ png, svg} => fs.writeFileSync('og.png', png))

// or auto read and write
getOg({
    inFile: 'path/to/your/post.md',
    outFile: 'og.png',
})
```

![og](./og.png)

## Batch

To generate og images in batches, you can try my [script](https://github.com/simbafs/blog/tree/main/script/frontmatter). I may integratein to this in the future.

## Docs

### getOg

TODO

### getOgFromMd

TODO
npm package: @simbashrd/docs
Description: The documentation for simbashrd's blog projects
Latest version: 0.0.0

# @simbashrd/docs

📖 **Documentation for simbashrd's Blog Projects**  

This repository contains the documentation for **simbashrd's** blog projects, built using **Next.js** and other modern tools.

## 🚀 Getting Started

### **Installation**
First, make sure you have **pnpm** installed. Then, install dependencies:

```sh
pnpm install
```

## Development
To start the local development server, run:

```sh
pnpm dev
This will start the Next.js app on http://localhost:3002.
```
## Building the Project
To build the project for production:

```sh
pnpm build
If you need to generate MDX content
```

```sh
pnpm build:mdx
Linting & Type Checking
```

Run the linter to check for code style issues:
```sh
pnpm lint
```
To automatically fix linting errors:

```sh
pnpm lint:fix
```
To check for TypeScript errors:

```sh
pnpm type-check
```

# 📦 Project Structure
```
.
├── public/            # Static assets
│   └── img/          # Images
├── src/              # Source code
│   ├── components/   # Reusable UI components
│   ├── templates/    # MDX templates
│   └── index.ts      # Entry point
├── package.json      # Project dependencies & scripts
├── tsconfig.json     # TypeScript configuration
└── eslint.config.mjs # ESLint configuration
```
npm package: @simbashrd/the-particles
Description: Legacy 3D engine and utilities for creative coding.
Author: lucaimbalzano@gmail.com
Latest version: 1.0.1

# @simbashrd/the-particles

[![npm version](https://img.shields.io/npm/v/@simbashrd/the-particles.svg?style=flat-square)](https://www.npmjs.com/package/@simbashrd/the-particles)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md)

> Legacy 3D engine and utilities for creative coding, now available as a modern npm package.

---

<p align="center">
  <video 
    src="https://res.cloudinary.com/drizqfyp5/video/upload/v1751919215/Screen_Recording_2025-07-07_at_21.38.54_tqznx7.mov" 
    alt="Demo Video" 
    width="100%" 
    style="border-radius: 12px;"
    loop 
    autoplay 
    muted
  ></video>
</p>

---

## ✨ Features

- GPU-accelerated particle systems
- WebGL rendering with [three.js](https://threejs.org/)
- Creative coding utilities and helpers
- Ready-to-use React component (`Particle`)
- Modular, extensible architecture

---

## 🚀 Installation

```bash
npm install @simbashrd/the-particles
# or
yarn add @simbashrd/the-particles
```

---

## 🛠 Usage

### In React (Next.js or CRA)

```tsx
import dynamic from 'next/dynamic';

// SSR-safe import for Next.js
const Particle = dynamic(
  () => import('@simbashrd/the-particles/dist/Particle'),
  { ssr: false }
);

export default function Home() {
  return (
    <main>
      <h1>My Particle Demo</h1>
      <Particle />
    </main>
  );
}
```

### In Vanilla JS

```js
import { createParticles } from '@simbashrd/the-particles';

const container = document.getElementById('my-canvas');
createParticles(container, { /* options */ });
```

---

## 📦 API

- **`<Particle />`**  
  React component for rendering the particle system.

- **`createParticles(container, options)`**  
  Vanilla JS function to initialize particles in a DOM element.

- See [USAGE.md](./USAGE.md) for advanced configuration and API details.

---

## 🖼 Demo

Check out the [demo video](https://res.cloudinary.com/drizqfyp5/video/upload/v1751919215/Screen_Recording_2025-07-07_at_21.38.54_tqznx7.mov) above!

---

## 📝 License

MIT © [lucaimbalzano@gmail.com](mailto:lucaimbalzano@gmail.com)

---

## 🤝 Acknowledgements

- **The Spirit** is a WebGL experience by Edan Kwan, using noise derivatives and curl noise for a smoky look and feel.
- Inspired by [Simo Santavirta](https://twitter.com/simppafi)'s [the new particles](http://www.simppa.fi/blog/the-new-particle/) and [David Li](http://david.li/)'s [Flow](http://david.li/flow/) experiment.
npm package: @simbaswap/sdk
Description: 🛠 An SDK for building applications on top of simbaswap.
Latest version: 5.0.3

# Pancakeswap SDK

Forked from the [Uniswap SDK](https://github.com/Uniswap/uniswap-v2-sdk/commit/a88048e9c4198a5bdaea00883ca00c8c8e582605).

You can refer to the Uniswap SDK documentation [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/pancakeswap/pancakeswap-sdk.git
```

Move into the pancakeswap-sdk working directory

```sh
cd pancakeswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @simbaswap/uikit
Description: Set of UI components for simba projects
Latest version: 1.0.3

# 🥞 Pancake UIkit

[![Version](https://img.shields.io/npm/v/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit) [![Size](https://img.shields.io/bundlephobia/min/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit)

Pancake UIkit is a set of React components and hooks used to build pages on Pancake's apps. It also contains a theme file for dark and light mode.

## Install

`yarn add @pancakeswap-libs/uikit`

## Setup

### Theme

Before using Pancake UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@pancakeswap-libs/uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@pancakeswap-libs/uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://pancakeswap.github.io/pancake-uikit/)
npm package: @simbathesailor/babel-plugin-use-what-changed
Description: This babel plugin us used with [@simbathesailor/use-what-changed](https://github.com/simbathesailor/use-what-changed).
Author: simbathesailor
Latest version: 2.1.0

# babel-plugin-use-what-changed

This babel plugin us used with [@simbathesailor/use-what-changed](https://github.com/simbathesailor/use-what-changed).

## Usage

The package can also be used with a babel plugin which make it more easy to debug.

1. Run

```

npm i @simbathesailor/use-what-changed --save-dev

```

2. Run

```

npm i @simbathesailor/babel-plugin-use-what-changed --save-dev

```

Add the plugin entry to your babel configurations

```js
{
  "plugins": [
    [
      "@simbathesailor/babel-plugin-use-what-changed",
      {
        "active": process.env.NODE_ENV === "development" // boolean
      }
    ]
  ]
}
```

Make sure the comments are enabled for your development build. As the plugin is solely dependent on the comments.

Now to debug a useEffect, useMemo or useCallback. You can do something like this:

```jsx
// uwc-debug
React.useEffect(() => {
  // console.log("some thing changed , need to figure out")
}, [a, b, c, d]);

// uwc-debug
const d = React.useCallback(() => {
  // console.log("some thing changed , need to figure out")
}, [a, b, d]);

// uwc-debug
const d = React.useMemo(() => {
  // console.log("some thing changed , need to figure out")
}, [a]);
```

### uwc-debug-below

Can use 'uwc-debug-below' comment to enable the debugging below the specific line.

```jsx
// uwc-debug-below
React.useEffect(() => {
  // console.log("some thing changed , need to figure out")
}, [a, b, c, d]);

const d = React.useCallback(() => {
  // console.log("some thing changed , need to figure out")
}, [a, b, d]);

const d = React.useMemo(() => {
  // console.log("some thing changed , need to figure out")
}, [a]);
```

All the react hooks below 'uwc-debug-below' will now be in debug mode.

**UPDATE**

Now, you can also see the file name with the hook name. E.g

> 2 useCallback::example/index.tsx 🧐👇

No need to add any import for use-what-changed, you just need to add a comment //uwc-debug' above your hooks and you should start seeing use-what-changed debug consoles.

<strong>Note: Frankly speaking the whole package was built, cause I was facing problems with hooks and debugging it was eating up a lot of my time. Definitely using this custom hook with babel plugin have saved me a lot of time and also understand unknown code using hooks</strong>
npm package: @simbathesailor/minimal-react-toast
Description: <h2  align="center">A minimal React Toast Library</h2>
Author: simbathesailor
Latest version: 0.1.1

<h2  align="center">A minimal React Toast Library</h2>

## History

I have worked on many frontend projects which makes use of toasts. But everytime there is a need of toast, we end up using some big library out of which we are using minimal amount of feature. And also these libraries will need so many props. Damn !!. In most of the use cases, the developer needs the flexibility of design toast, which should be as straightforward as writing a React component.
Passing lots of props and trying to adjust them, looks like over kill always.

## Install

```sh
 yarn add @simbathesailor/minimal-react-toast
```

or

```sh
  npm i @simbathesailor/minimal-react-toast
```

## Usage

```jsx
import { useToast } from '@simbathesailor/minimal-react-toast';

function SuccessToastComponent() {
  return <div>Button Clicked successfully !!</div>;
}

function App() {
  const [triggerToast, toastRender] = useToast({
    styleToastContainer: {
      border: '1px solid red',
      position: 'fixed',
      top: '80px',
      left: ' 50%',
      transform: 'translateX(-50%)',
      zIndex: '12',
    },
  });

  const finalToast = toastRender();

  return (
    <>
      <button
        onClick={() => {
          triggerToast();
        }}
      >
        Click me
      </button>

      {finalToast(<SuccessToastComponent />)}
    </>
  );
}
```

## Options

```typescript
const defaultOptions = {
  timeout: 3000,
  idToastContainer: 'minimal-react-toast',
  styleToastContainer: undefined,
};

interface IStyleToastContainer {
  [key: string]: any;
}
interface IUseToast {
  timeout?: number;
  idToastContainer?: string;
  styleToastContainer?: IStyleToastContainer;
}
```

## Demo

[Demo](https://codesandbox.io/s/pedantic-blackburn-g9jdn)

Built with [TSDX](https://github.com/jaredpalmer/tsdx)
npm package: @simble/email-signature-generator-cli
Description: Generate Emails and distribute via email
Author: Mitchell Rowling
Latest version: 1.0.0

# Email Signature Generator

A tool to reate email signatures from a provided template and CSV file with userdata. Also distributes to users via email.
Written using ES7 Async/Await.

## Installation

`npm i -g @simble/email-signature-generator`

## Usage

### CLI

`signature-generator`

Help

`signature-generator -h`

### Programatic

`yarn add @simble/email-signature-generator`

```
const signatureGenerator = require('@simble/email-signature-generator');

// These are the CLI defaults

const options = {
  sendEmail: false,
  output: './output',
  templates: './input/templates',
  instructions: './input/instructions.md',
  userData: './input/user-data.csv',
  mail: {
    MAIL_PROVIDER: 'mailgun',
    MG_KEY: process.env.MG_KEY,
    MG_DOMAIN: process.env.MG_DOMAIN,
    MG_ADDR_FROM: process.env.MG_ADDR_FROM,
  },
};

signatureGenerator(options)
  .then( () => console.log('Success'))
  .catch( error => console.error(error));
```

### Email Provider

Currently supports Mailgun.

## Development

### Install

`yarn`

### Tests

`yarn test`
npm package: @simbo/accessible
Description: A set of helper functions to check if files or directories are existing, readable, writable, or executable.
Author: Simon Lepel
Latest version: 1.0.1

# Accessible

📦 [**`@simbo/accessible`**](https://npmjs.com/package/@simbo/accessible)

A lightweight utility library that provides reliable checks for file system
accessibility.

It helps you determine whether files or directories are **existing**,
**readable**, **writable**, or **executable** — with a simple, async-first API.

## Features

- Check if a **file** or **directory** exists

- Verify if a path is **readable**, **writable**, or **executable**

- Minimal and dependency-free

- Fully typed TypeScript API

## Installation

Install `@simbo/accessible` from the npm registry:

```bash
npm i [-D] @simbo/accessible
```

## Usage

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_accessible/).

Use the provided functions in your code:

```ts
import { isReadableFile, isWritableDirectory } from '@simbo/accessible';

if (await isReadableFile('path/to/file')) {
  console.log('File is readable');
}

if (await isWritableDirectory('path/to/directory')) {
  console.log('Directory is writable');
}
```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/call-prettier
Description: A utility for finding and calling Prettier on files using their contextual settings.
Author: Simon Lepel
Latest version: 1.0.2

# Call Prettier

📦 [**`@simbo/call-prettier`**](https://npmjs.com/package/@simbo/call-prettier)

A lightweight utility for finding and invoking the
[Prettier](https://prettier.io/) binary on files, using the appropriate
contextual settings of your project.

It ensures that the correct Prettier instance is executed, whether installed
locally or globally.

## Features

- Locates the correct Prettier binary (local `node_modules/.bin` first, then
  global)

- Calls Prettier in `write` or `check` mode

- Supports custom working directories

- Respects or ignores `.prettierignore` depending on options

- Fully typed with TypeScript

- Built on top of [`execa`](https://npmjs.com/package/execa) for reliable
  process execution

## Installation

Install `@simbo/call-prettier` from the npm registry:

```bash
npm i [-D] @simbo/call-prettier
```

## Usage

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_call-prettier/).

```ts
import { callPrettier } from '@simbo/call-prettier';

await callPrettier('src/**/*.ts', {
  mode: 'check', // defaults to 'write'
  workingDir: process.cwd(), // optional
  disableIgnores: false, // optional
});
```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/cli-output
Description: A collection of utilities for common CLI messages and output.
Author: Simon Lepel
Latest version: 1.0.1

# CLI Output

📦 [**`@simbo/cli-output`**](https://npmjs.com/package/@simbo/cli-output)

A collection utilities for common CLI messages and output.

## Installation

Install `@simbo/cli-output` from the npm registry:

```bash
npm i [-D] @simbo/cli-output
```

## Usage

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_cli-output/).

### Examples

```ts
import {
  failure,
  hintToHelp,
  line,
  success,
  terminated,
} from '@simbo/cli-output';

// Success message with a green "✔":
console.log(success(`Done.`));

// Failure message with a red "✖":
console.log(failure(`Failed.`));

// Termination message with cause:
console.log(terminated(`Received SIGINT`));

// Hint to use "<COMMAND> --help":
console.log(hintToHelp());

// Draw a line:
console.log(line());
```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/commitlint-config
Description: Simbo's shared commitlint configuration based on the conventional commits standard.
Author: Simon Lepel
Latest version: 1.0.7

# Simbo's Commitlint Configuration

📦
[**`@simbo/commitlint-config`**](https://npmjs.com/package/@simbo/commitlint-config)

A shared [commitlint](https://commitlint.js.org/) configuration based on the
[conventional commits](https://www.conventionalcommits.org/) standard.

## Installation

Install commitlint and the `@simbo/commitlint-config` from the npm registry:

```bash
npm i -D @commitlint/cli @simbo/commitlint-config
```

## Usage

Create a
[commitlint configuration](https://commitlint.js.org/reference/configuration.html)
file in the root of your project.

For example, `.commitlintrc.yml`:

```yaml
extends:
  - '@simbo/commitlint-config'
```

### Setup Git Hooks for Commitlint with Husky

- Install [husky](https://npmjs.com/package/husky):

  ```bash
  npm i -D husky
  ```

- Add `husky` command to your `package.json` scripts:

  ```json
      "prepare": "husky",
  ```

- Create `.husky/pre-commit`:

  ```bash
  ./node_modules/.bin/commitlint --edit $1
  ```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/cspell-config
Description: Simbo's shared CSpell configuration.
Author: Simon Lepel
Latest version: 1.4.0

# Simbo's CSpell Configuration

📦 [**`@simbo/cspell-config`**](https://npmjs.com/package/@simbo/cspell-config)

A shared [CSpell](https://cspell.org/) configuration.

## Installation

Install cspell and `@simbo/cspell-config` from the npm registry:

```bash
npm i -D cspell @simbo/cspell-config
```

## Usage

Create a [CSpell configuration](https://cspell.org/docs/Configuration) file in
your project root and import the shared configuration.

For example, a `.cspell.yml`:

```yml
import: '@simbo/cspell-config'
```

Add `cspell` command to your `package.json` scripts:

```json
    "check:spelling": "cspell",
```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/find-bin
Description: A lightweight utility to locate the executable path of a command.
Author: Simon Lepel
Latest version: 1.0.2

# Find Bin

📦 [**`@simbo/find-bin`**](https://npmjs.com/package/@simbo/find-bin)

A lightweight utility to locate the executable path of a command.

It searches for binaries in local `node_modules/.bin` directories first, and
falls back to globally available executables.

## Features

- Check if a command exists and resolve its path

- Searches upward through `node_modules/.bin` folders

- Falls back to global executables via `which`

- Async, Promise-based API

- Fully typed with TypeScript

## Installation

Install `@simbo/find-bin` from the npm registry:

```bash
npm i [-D] @simbo/find-bin
```

## Usage

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_find_bin/).

### Example

```ts
import { findBin } from '@simbo/find-bin';

const binPath = await findBin('eslint');

if (binPath) {
  console.log(`Found eslint: ${binPath}`);
} else {
  console.error('eslint not found.');
}
```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/find-git-repository-root
Description: A lightweight utility for locating the root directory of a Git repository.
Author: Simon Lepel
Latest version: 1.0.2

# Find Git Repository Root

📦
[**`@simbo/find-git-repository-root`**](https://npmjs.com/package/@simbo/find-git-repository-root)

A lightweight utility for locating the **root directory of a Git repository**.

It searches upward from a given directory until it finds a valid repository root
(a directory containing a `.git `folder).

This package builds on [find-up](https://npmjs.com/package/find-up) and
[`@simbo/is-git-repository-root`](https://npmjs.com/package/@simbo/is-git-repository-root).

## Features

- Detects the **root directory** of a Git repository

- Returns the absolute path to the Git repository root

- Uses upward search from a given working directory (defaults to
  `process.cwd()`)

- Async and Promise-based API

- Fully typed with TypeScript

## Installation

Install `@simbo/find-git-repository-root` from the npm registry:

```bash
npm i [-D] @simbo/find-git-repository-root
```

## Usage

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_find-git-repository-root/).

### Example

```ts
import { findGitRepositoryRoot } from '@simbo/find-git-repository-root';

// Default: start from current working directory
const root = await findGitRepositoryRoot();

// Or specify a starting directory
const rootFromPath = await findGitRepositoryRoot('/path/to/subdir');
```

If no Git repository root is found, the function resolves to `undefined`.

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/find-up-package
Description: A utility for finding an npm package in the directory hierarchy that matches specific criteria.
Author: Simon Lepel
Latest version: 1.0.3

# Find Up Package

📦
[**`@simbo/find-up-package`**](https://npmjs.com/package/@simbo/find-up-package)

A utility for finding an npm package in the directory hierarchy that matches
specific criteria.

It uses [find-up](https://github.com/sindresorhus/find-up) to walk up the
filesystem, checking each `package.json` until it finds a match.

⸻

Features

- Search upwards for a `package.json` file matching custom conditions

- Configurable matcher function for defining what counts as a match

- Returns the found directory path and the parsed `package.json`

- Optionally normalize the `package.json` using npm's
  [`normalize-package-data`](https://github.com/npm/normalize-package-data)

- Async, Promise-based API

- Fully typed with TypeScript

## Installation

Install `@simbo/find-up-package` from the npm registry:

```bash
npm i [-D] @simbo/find-up-package
```

## Usage

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_find-up-package/).

### Example

```ts
import { findUpPackage } from '@simbo/find-up-package';

const result = await findUpPackage();

if (result) {
  console.log(`Found package.json in: ${result.path}`);
  console.log(result.packageJson.name, result.packageJson.version);
}
```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/foo-cli
Description: My just-for-fun command-line app.
Author: Simon Lepel
Latest version: 0.1.1

foo-cli
=======

  > My just-for-fun command-line app.

[![npm package version](https://img.shields.io/npm/v/@simbo/foo-cli.svg?style=flat-square)](https://www.npmjs.com/package/@simbo/foo-cli)
[![Travis CI build status](https://travis-ci.org/simbo/foo-cli.svg?branch=master)](https://travis-ci.org/simbo/foo-cli/builds)

---


## About

This is a fun project to explore some terminal features.

It creates a colored, movable *Foo*:

![Foo Demo](./screenshot.png)

And that's pretty much all it can <strike>do</strike> *show* at the moment.


## Installation

[`@simbo/foo-cli`](https://www.npmjs.com/package/@simbo/foo-cli)
is a public user-scoped npm package.

``` sh
npm install --global @simbo/foo-cli
```


## Usage

Simply run `foo` in your terminal.

``` sh
foo
```


## License

[MIT © 2018 Simon Lepel](http://simbo.mit-license.org/)
npm package: @simbo/generator-editorconfig
Description: A simple yeoman generator for my usual editorconfig.
Author: Simon Lepel
Latest version: 0.1.2

generator-editorconfig
======================

  > A simple yeoman generator for my usual [`.editorconfig`](http://editorconfig.org/).

[![npm package version](https://img.shields.io/npm/v/@simbo/generator-editorconfig.svg?style=flat-square)](https://www.npmjs.com/package/@simbo/generator-editorconfig)
[![Travis CI build status](https://travis-ci.org/simbo/generator-editorconfig.svg?branch=master)](https://travis-ci.org/simbo/generator-editorconfig/builds)

---

<!-- TOC depthTo:3 -->

- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
- [Development](#development)
- [License](#license)

<!-- /TOC -->

---


## Requirements

This is a yeoman generator. You should have installed
[yeoman](http://yeoman.io/).


## Installation

`@simbo/generator-editorconfig` is a public user-scoped npm package.

You can install it using…

``` sh
# …npm
npm install -g @simbo/generator-editorconfig

# …or yarn
yarn global add @simbo/generator-editorconfig
```


## Usage

Use it like any other yeoman generator within your project root:

``` sh
yo @simbo/editorconfig
```

See also `yo @simbo/editorconfig --help` for detailed usage information.


## Development

Link from project root to use it like a globally installed package on your
machine…

``` sh
# …using npm
npm link

# …or yarn
yarn link
```


## License

[MIT © 2018 Simon Lepel](http://simbo.mit-license.org/)
npm package: @simbo/generator-prettierrc
Description: A simple yeoman generator for my usual prettierrc.
Author: Simon Lepel
Latest version: 0.2.1

generator-prettierrc
======================

  > A simple yeoman generator for my usual [`.prettierrc`](https://prettier.io/).

[![npm package version](https://img.shields.io/npm/v/@simbo/generator-prettierrc.svg?style=flat-square)](https://www.npmjs.com/package/@simbo/generator-prettierrc)
[![Travis CI build status](https://travis-ci.org/simbo/generator-prettierrc.svg?branch=master)](https://travis-ci.org/simbo/generator-prettierrc/builds)

---

<!-- TOC depthTo:3 -->

- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
- [Development](#development)
- [License](#license)

<!-- /TOC -->

---


## Requirements

This is a yeoman generator. You should have installed
[yeoman](http://yeoman.io/).


## Installation

`@simbo/generator-prettierrc` is a public user-scoped npm package.

You can install it using…

``` sh
# …npm
npm install -g @simbo/generator-prettierrc

# …or yarn
yarn global add @simbo/generator-prettierrc
```


## Usage

Use it like any other yeoman generator within your project root:

``` sh
yo @simbo/prettierrc
```

See also `yo @simbo/prettierrc --help` for detailed usage information.


## Development

Link from project root to use it like a globally installed package on your
machine…

``` sh
# …using npm
npm link

# …or yarn
yarn link
```


## License

[MIT © 2018 Simon Lepel](http://simbo.mit-license.org/)
npm package: @simbo/generator-readme
Description: A simple yeoman generator for my usual readme.
Author: Simon Lepel
Latest version: 0.1.0

generator-readme
================

  > A simple yeoman generator for my usual `README.md`.

[![npm package version](https://img.shields.io/npm/v/@simbo/generator-readme.svg?style=flat-square)](https://www.npmjs.com/package/@simbo/generator-readme)
[![Travis CI build status](https://travis-ci.org/simbo/generator-readme.svg?branch=master)](https://travis-ci.org/simbo/generator-readme/builds)

---

<!-- TOC depthTo:3 -->

- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
- [Development](#development)
- [License](#license)

<!-- /TOC -->

---


## Requirements

This is a yeoman generator. You should have installed
[yeoman](http://yeoman.io/).


## Installation

`@simbo/generator-readme` is a public user-scoped npm package.

You can install it using…

``` sh
# …npm
npm install -g @simbo/generator-readme

# …or yarn
yarn global add @simbo/generator-readme
```


## Usage

Use it like any other yeoman generator within your project root:

``` sh
yo @simbo/readme
```

See also `yo @simbo/readme --help` for detailed usage information.


## Development

Link from project root to use it like a globally installed package on your
machine…

``` sh
# …using npm
npm link

# …or yarn
yarn link
```


## License

[MIT © 2018 Simon Lepel](http://simbo.mit-license.org/)
npm package: @simbo/generator-tsconfig
Description: A simple yeoman generator for my usual tsconfig.
Author: Simon Lepel
Latest version: 0.1.0

generator-tsconfig
======================

  > A simple yeoman generator for my usual
  > [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html).

[![npm package version](https://img.shields.io/npm/v/@simbo/generator-tsconfig.svg?style=flat-square)](https://www.npmjs.com/package/@simbo/generator-tsconfig)
[![Travis CI build status](https://travis-ci.org/simbo/generator-tsconfig.svg?branch=master)](https://travis-ci.org/simbo/generator-tsconfig/builds)

---

<!-- TOC depthTo:3 -->

- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
- [Development](#development)
- [License](#license)

<!-- /TOC -->

---


## Requirements

This is a yeoman generator. You should have installed
[yeoman](http://yeoman.io/).


## Installation

`@simbo/generator-tsconfig` is a public user-scoped npm package.

You can install it using…

``` sh
# …npm
npm install -g @simbo/generator-tsconfig

# …or yarn
yarn global add @simbo/generator-tsconfig
```


## Usage

Use it like any other yeoman generator within your project root:

``` sh
yo @simbo/tsconfig
```

See also `yo @simbo/tsconfig --help` for detailed usage information.


## Development

Link from project root to use it like a globally installed package on your
machine…

``` sh
# …using npm
npm link

# …or yarn
yarn link
```


## License

[MIT © 2018 Simon Lepel](http://simbo.mit-license.org/)
npm package: @simbo/git-changes
Description: A library to read, parse and provide Git changes information from `git status` for a local repository.
Author: Simon Lepel
Latest version: 1.0.3

# Git Changes

📦 [**`@simbo/git-changes`**](https://npmjs.com/package/@simbo/git-changes)

A library to read, parse and provide Git changes information for a local
repository.

## Installation

Install `@simbo/git-changes` from the npm registry:

```bash
npm i [-D] @simbo/git-changes
```

## Usage

```ts
import { getGitChanges } from '@simbo/git-changes';

// get a map of changed files in the repository located at /path/to/repo
const changes = await getGitChanges('/path/to/repo');
```

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_git-changes/).

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/git-constants
Description: A small collection of Git-related constants for working with Git references, branches, tags, and commit identifiers in a consistent way.
Author: Simon Lepel
Latest version: 1.0.1

# Git Constants

📦 [**`@simbo/git-constants`**](https://npmjs.com/package/@simbo/git-constants)

A small collection of Git-related constants that can be reused across Node.js
and TypeScript projects.

Useful for working with Git references, branches, tags, and commit identifiers
in a consistent way.

## Features

- Predefined constants for common Git concepts

- Covers `.git` folder name, reference prefixes (`refs/`, `refs/heads/`,
  `refs/remotes/`, `refs/tags/`, `refs/pulls/`), and `/merge` suffix

- Default branch name (`main`)

- Short SHA length (`7`) for commit references

- Fully typed with TypeScript

- Zero dependencies

## Installation

Install `@simbo/git-constants` from the npm registry:

```bash
npm i [-D] @simbo/git-constants
```

## Usage

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_git-constants/).

```ts
import {
  GIT_DEFAULT_BRANCH,
  GIT_FOLDER,
  GIT_REFS_PREFIX,
  GIT_REFS_HEADS_PREFIX,
  GIT_SHA_SHORT_LENGTH,
} from '@simbo/git-constants';

console.log(GIT_DEFAULT_BRANCH); // "main"
console.log(GIT_FOLDER); // ".git"
console.log(GIT_REFS_PREFIX); // "refs/"
console.log(GIT_REFS_HEADS_PREFIX); // "refs/heads/"
console.log(GIT_SHA_SHORT_LENGTH); // 7
```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/globby-has-matches
Description: A utility to glob using globby and exit early if there are any findings.
Author: Simon Lepel
Latest version: 1.0.5

# Globby Has Matches

📦
[**`@simbo/globby-has-matches`**](https://npmjs.com/package/@simbo/globby-has-matches)

A utility to glob using [globby](https://github.com/sindresorhus/globby) and
**exit early once a match is found**.

## Features

- Ensures further globbing is cancelled as soon as possible

- Returns `true` as soon as a matching file is found (no need to wait for the
  full scan)

- Optional matcher function for custom filtering logic

- Fully async, Promise-based API

- Fully typed with TypeScript

## Installation

Install `@simbo/globby-has-matches` from the npm registry:

```bash
npm i [-D] @simbo/globby-has-matches
```

## Usage

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_globby-has-matches/).

### Example

```ts
import { globbyHasMatches } from 'globby-has-matches';

const hasMatches = await globbyHasMatches('.changesets/*.md');

if (hasMatches) {
  console.log('Found Changesets');
} else {
  console.log('No Changesets found');
```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)
npm package: @simbo/import-meta-path
Description: A small utility for safely deriving absolute file and directory paths from import.meta in Node.js, with a consistent fallback order.
Author: Simon Lepel
Latest version: 1.0.0

# Import Meta Path

📦
[**`@simbo/import-meta-path`**](https://npmjs.com/package/@simbo/import-meta-path)

A small utility for safely deriving absolute file and directory paths from
`import.meta` in Node.js, with a consistent fallback order.

## Features

- Derive absolute **directory** or **file** path from `import.meta`
- Consistent fallback order (`dirname` → `filename` → `url`)
- Node.js ESM-only, works as a drop-in replacement for `__dirname` /
  `__filename`
- Zero dependencies

## Installation

Install `@simbo/import-meta-path` from the npm registry:

```bash
npm i [-D] @simbo/import-meta-path
```

## Usage

For a complete API reference, see the
[documentation](https://simbo.codes/packages/modules/_simbo_import-meta-path/).

### Example

```ts
import { importMetaPath } from '@simbo/import-meta-path';

// get the absolute directory path from import.meta
const dirPath = importMetaPath(import.meta);
// if importMeta has dirname → returned directly
// if only filename → dirname(filename)
// otherwise → dirname(fileURLToPath(url))

// get the absolute file path from import.meta
const filePath = importMetaPath(import.meta, 'file');
// if only filename → returned directly
// otherwise → fileURLToPath(url)
```

## License

[MIT © Simon Lepel](http://simbo.mit-license.org/2025/)