open-index/open-npm huggingface dataset:
npm package: @nirvana-tools/anchor-events-gen
Description: Generate TypeScript event types from Anchor IDL files
Latest version: 2.0.0

# gen-anchor-events

Generate TypeScript event types from Anchor IDL files.

## Installation

```bash
pnpm add @nirvana-tools/anchor-events-gen
```

## Usage

```typescript
import { generateEventsFromIDL } from 'anchor-events-gen';

// Generate TypeScript events from IDL
generateEventsFromIDL('./idl/program.json', './src/events.ts');
```

## Input Format

The tool expects an Anchor IDL JSON file with the following structure:

```json
{
  "events": [
    {
      "name": "EventName",
      "fields": [
        {
          "name": "fieldName",
          "type": "u64" | "string" | "publicKey" | { "defined": "CustomType" }
        }
      ]
    }
  ],
  "types": [
    {
      "name": "CustomType",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "fieldName",
            "type": "string"
          }
        ]
      }
    }
  ]
}
```

## Output

The tool generates TypeScript interfaces for all events and their custom types, plus utility types and functions:

- Event interfaces (e.g., `UserCreated`, `UserUpdated`)
- Custom type interfaces (e.g., `UserData`)
- `EventRaw` type for raw event data
- `ParsedEvents` type for organized event collections
- `parseEvents()` function for parsing raw events into organized collections

## Example

Given an IDL with events, the tool generates:

```typescript
// Generated event types from program.json
// Do not edit manually

import { BN, web3 } from "@coral-xyz/anchor";

export interface UserData {
  name: string;
  age: number;
  balance: BN;
}

export interface UserCreated {
  user: UserData;
  timestamp: BN;
}

export type ParsedEvents = {
  UserCreated: UserCreated[];
};

export function parseEvents(events: EventRaw[]): ParsedEvents {
  // ... parsing logic
}
```

## License

MIT
npm package: @nirvati/nuxt-apollo
Description: [![Nuxt Apollo](./docs/public/cover.jpg)](https://nuxt-apollo.nirvati.eu)
Latest version: 0.3.0

[![Nuxt Apollo](./docs/public/cover.jpg)](https://nuxt-apollo.nirvati.eu)

<h1 align="center">Nuxt Apollo</h1>

<p align="center">Effortlessly integrate GraphQL into your Nuxt projects.</p>

<p align="center">  
  <a href="https://npmjs.com/package/@nirvati/nuxt-apollo/v/next">
      <img alt="Version" src="https://img.shields.io/npm/v/@nirvati/nuxt-apollo/next?color=blue&style=flat-square"/>
  </a>
  
  <a href="https://npmjs.com/package/@nirvati/nuxt-apollo/v/next">
      <img alt="Downloads" src="https://img.shields.io/npm/dt/@nirvati/nuxt-apollo/next?color=blue&style=flat-square"/>
  </a>
  
  <a href="https://opensource.org/licenses/MIT">
      <img alt="MIT" src="https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square"/>
  </a>
</p>

❯  [📖 Documentation](https://nuxt-apollo.nirvati.eu/)

---

## Development

- Clone this repository
- Ensure you have the latest LTS version of Node.js installed
- Run `corepack enable`
- Install dependencies using `pnpm install`
- Start playground with `pnpm dev`

## License

[MIT License](./LICENSE)
npm package: @nis/passport-cas
Description: Fork of passport-cas for NIS projects
Author: Brian Early
Latest version: 0.1.2

# passport-cas

Cas authentication strategies for Passport.


## Install

    $ npm install passport-cas

#### Configure Strategy

    passport.use(new (require('passport-cas').Strategy)({
      ssoBaseURL: 'http://www.example.com/',
      serverBaseURL: 'http://localhost:3000'
    }, function(login, done) {
      User.findOne({login: login}, function (err, user) {
        if (err) {
          return done(err);
        }
        if (!user) {
          return done(null, false, {message: 'Unknown user'});
        }
        return done(null, user);
      });
    }));

#### Authenticate Requests

    passport.authenticate('cas', function (err, user, info) {
      if (err) {
        return next(err);
      }

      if (!user) {
        req.session.messages = info.message;
        return res.redirect('/');
      }

      req.logIn(user, function (err) {
        if (err) {
          return next(err);
        }

        req.session.messages = '';
        return res.redirect('/');
      });
    })

For example:

    // GET: '/cas_login'
    exports.casLogin = function(req, res, next) {
      passport.authenticate('cas', function (err, user, info) {
        if (err) {
          return next(err);
        }

        if (!user) {
          req.session.messages = info.message;
          return res.redirect('/');
        }

        req.logIn(user, function (err) {
          if (err) {
            return next(err);
          }

          req.session.messages = '';
          return res.redirect('/');
        });
      })(req, res, next);
    };

### CAS versions

## CAS 3.0 configuration
Since CAS3.0, the validation service returns a list of attributes for the authenticated user.
Here is how you can use them:

    passport.use(new (require('passport-cas').Strategy)({
      version: 'CAS3.0',
      ssoBaseURL: 'http://www.example.com/',
      serverBaseURL: 'http://localhost:3000'
    }, function(profile, done) {
      var login = profile.user;

      User.findOne({login: login}, function (err, user) {
        if (err) {
          return done(err);
        }
        if (!user) {
          return done(null, false, {message: 'Unknown user'});
        }
        user.attributes = profile.attributes;
        return done(null, user);
      });
    }));

## CAS 2.0 configuration
CAS 2.0 will work with the CAS 3.0 configuration, but you need to set the validation endpoint.

    passport.use(new (require('passport-cas').Strategy)({
      version: 'CAS3.0',
      ssoBaseURL: 'http://www.example.com/',
      serverBaseURL: 'http://localhost:3000/cas',
      validateURL: '/serviceValidate'
    }, function(profile, done) {
      var login = profile.user;
    
      User.findOne({login: login}, function (err, user) {
        if (err) {
          return done(err);
        }
        if (!user) {
          return done(null, false, {message: 'Unknown user'});
        }
        return done(null, user);
      });
    }));

## License

[The MIT License](http://opensource.org/licenses/MIT)
npm package: @nish34/express-api-throttle
Description: Advanced Rate Limiting per Route/User/IP
Author: nish34
Latest version: 1.0.0

# express-api-throttle

Advanced Rate Limiting per Route/User/IP - A customizable rate-limiting middleware with per-user, per-IP, or per-route logic.

## Features

- In-memory or Redis-backed storage
- Custom error responses
- Cooldown periods, burst handling, and dynamic limits
- Helps prevent abuse or DDoS attacks on specific endpoints

## Installation

```bash
npm install @nish34/express-api-throttle
```

## Usage

### Basic Usage

```javascript
const express = require('express');
const throttle = require('@nish34/express-api-throttle');

const app = express();

// Apply rate limiting to all routes
app.use(throttle({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100 // limit each IP to 100 requests per windowMs
}));

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});
```

### Advanced Usage

```javascript
const express = require('express');
const throttle = require('@nish34/express-api-throttle');
const Redis = require('redis');

const app = express();

// Create Redis client
const redisClient = Redis.createClient();
redisClient.connect().catch(console.error);

// Different limits for different routes
app.get('/api/public', throttle({
  windowMs: 60 * 1000, // 1 minute
  max: 30 // 30 requests per minute
}));

// Stricter limits for login attempts
app.post('/api/login', throttle({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 5, // 5 login attempts per 15 minutes
  message: 'Too many login attempts, please try again later',
  keyGenerator: (req) => req.body.email || req.ip // Rate limit by email or IP
}));

// Using Redis for distributed environments
app.post('/api/sensitive', throttle({
  windowMs: 60 * 60 * 1000, // 1 hour
  max: 10, // 10 requests per hour
  store: new throttle.RedisStore(redisClient),
  keyGenerator: (req) => req.user ? req.user.id : req.ip, // Rate limit by user ID if authenticated
  onLimitReached: (req, res) => {
    console.log(`Rate limit exceeded for user: ${req.user ? req.user.id : req.ip}`);
  }
}));

app.listen(3000);
```

## Configuration Options

- `windowMs`: Time window in milliseconds (default: 60000)
- `max`: Maximum number of requests within the time window (default: 60)
- `message`: Error message when rate limit is exceeded (default: 'Too many requests')
- `statusCode`: HTTP status code when rate limit is exceeded (default: 429)
- `keyGenerator`: Function to generate unique identifier (default: req.ip)
- `skip`: Function to determine whether to skip rate limiting (default: () => false)
- `store`: Storage for tracking requests (default: MemoryStore)
- `headers`: Whether to add rate limit headers (default: true)
- `handler`: Custom function to handle when rate limit is exceeded
- `onLimitReached`: Function called when rate limit is reached

## License

MIT
npm package: @nish34/express-mongoose-starter
Description: Professional Express.js starter package with Mongoose and JWT authentication
Latest version: 1.0.0

# Express Mongoose Starter

A professional Express.js starter package with Mongoose integration and JWT authentication.

## Installation

```bash
npm install express-mongoose-starter
```

## Usage

```javascript
const { createApp } = require('express-mongoose-starter');

// Initialize the app with custom configuration
const app = createApp({
  mongoUri: 'mongodb://localhost:27017/your-database',
  port: 3000
});

// The app is already listening on the specified port
```

## Features

- Express.js setup with best practices
- MongoDB integration with Mongoose
- JWT authentication
- Error handling middleware
- Logging with Winston
- Security with Helmet
- CORS enabled
- API routing structure
- TypeScript support

## Configuration Options

| Option | Type | Description |
|--------|------|-------------|
| mongoUri | string | MongoDB connection URI |
| port | number | Port to run the server on |
| logger | object | Custom Winston logger instance |

## License

MIT
npm package: @nish34/express-query-builder
Description: Flexible Query Parser for APIs
Author: nish34
Latest version: 1.0.0

# express-query-builder

Flexible Query Parser for APIs - A middleware that parses query strings into a structured format for database queries.

## Features

- Supports filtering (`?status=active`), sorting (`?sort=-createdAt`), and pagination
- Converts queries to objects for ORMs like Mongoose, Sequelize, Prisma
- Sanitizes and validates input
- Makes building RESTful APIs with flexible querying much easier

## Installation

```bash
npm install @nish34/express-query-builder
```

## Usage

```javascript
const express = require('express');
const queryBuilder = require('@nish34/express-query-builder');

const app = express();

// Basic usage
app.use(queryBuilder());

// With options
app.use(queryBuilder({
  maxLimit: 50,
  defaultLimit: 10,
  allowedFields: ['name', 'email', 'createdAt', 'status'],
  allowedOperators: ['eq', 'ne', 'gt', 'lt']
}));

app.get('/users', (req, res) => {
  // Access the parsed query
  const { filter, sort, pagination } = req.parsedQuery;
  
  // Convert to MongoDB query (if using MongoDB)
  const mongoQuery = queryBuilder.toMongo(req.parsedQuery);
  
  // Use with your database
  // const users = await User.find(mongoQuery.filter)
  //   .sort(mongoQuery.sort)
  //   .skip(mongoQuery.skip)
  //   .limit(mongoQuery.limit);
  
  res.json({ message: 'Query parsed successfully', parsedQuery: req.parsedQuery });
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});
```

## Query Examples

- Filter by status: `GET /users?filter=status:active`
- Sort by creation date (descending): `GET /users?sort=-createdAt`
- Pagination: `GET /users?page=2&limit=10`
- Combined: `GET /users?filter=status:active&sort=-createdAt&page=2&limit=10`

## License

MIT
npm package: @nishans/cache
Description: A cache specially designed to retrieve and store notion data in memory
Author: Safwan Shaheer
Latest version: 0.0.38

# <pre>@nishans/cache</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/cache/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/cache?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/cache?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/cache?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/cache?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=cache&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/cache?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/cache">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/cache/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/cache">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A cache specially designed to retrieve and store notion data in memory</b></p>
npm package: @nishans/constants
Description: A small package for all notion specific constants
Author: Safwan Shaheer
Latest version: 0.0.24

# <pre>@nishans/constants</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/constants/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/constants?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/constants?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/constants?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/constants?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=constants&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/constants?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/constants">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/constants/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/constants">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A small package for all notion specific constants</b></p>
npm package: @nishans/core
Description: Unofficial Notion api for node.js with all crud functionalities for Space, User, Block, Page and many more
Author: Safwan Shaheer
Latest version: 0.0.35

# <pre>@nishans/core</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/core/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/core?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/core?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/core?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/core?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=core&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/core?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/core">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/core/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/core">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>Unofficial Notion api for node.js with all crud functionalities for Space, User, Block, Page and many more</b></p>
npm package: @nishans/discourse
Description: A package for working with notion discussions & comments
Author: Safwan Shaheer
Latest version: 0.0.26

# <pre>@nishans/discourse</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/discourse/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/discourse?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/discourse?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/discourse?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/discourse?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=discourse&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/discourse?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/discourse">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/discourse/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/discourse">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package for working with notion discussions & comments</b></p>
npm package: @nishans/endpoints
Description: A package to expose all notion endpoints for queries and mutations
Author: Safwan Shaheer
Latest version: 0.0.32

# <pre>@nishans/endpoints</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/endpoints/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/endpoints?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/endpoints?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/endpoints?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/endpoints?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=endpoints&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/endpoints?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/endpoints">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/endpoints/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/endpoints">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package to expose all notion endpoints for queries and mutations</b></p>
npm package: @nishans/errors
Description: A small package containing various notion specific error classes
Author: Safwan Shaheer
Latest version: 0.0.32

# <pre>@nishans/errors</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/errors/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/errors?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/errors?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/errors?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/errors?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=errors&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/errors?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/errors">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/errors/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/errors">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A small package containing various notion specific error classes</b></p>
npm package: @nishans/extract
Description: A small package to extract required notion data
Author: Safwan Shaheer
Latest version: 0.0.23

# <pre>@nishans/extract</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/extract/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/extract?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/extract?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/extract?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/extract?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=extract&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/extract?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/extract">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/extract/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/extract">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A small package to extract required notion data</b></p>
npm package: @nishans/fabricator
Description: A package to generate notion blocks using a simple api
Author: Safwan Shaheer
Latest version: 0.0.33

# <pre>@nishans/fabricator</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/fabricator/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/fabricator?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/fabricator?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/fabricator?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/fabricator?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=fabricator&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/fabricator?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/fabricator">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/fabricator/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/fabricator">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package to generate notion blocks using a simple api</b></p>
npm package: @nishans/graphql
Description: A graphql server for notion built using `@nishans/core`
Author: Safwan Shaheer
Latest version: 0.0.27

# <pre>@nishans/graphql</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/graphql/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/graphql?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/graphql?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/graphql?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/graphql?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=graphql&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/graphql?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/graphql">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/graphql/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/graphql">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A graphql server for notion built using `@nishans/core`</b></p>
npm package: @nishans/idz
Description: A small package to validate, generate and parse notion ids
Author: Safwan Shaheer
Latest version: 0.0.19

# <pre>@nishans/idz</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/idz/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/idz?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/idz?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/idz?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/idz?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=idz&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/idz?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/idz">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/idz/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/idz">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A small package to validate, generate and parse notion ids</b></p>
npm package: @nishans/init
Description: A package to initialize raw notion data
Author: Safwan Shaheer
Latest version: 0.0.23

# <pre>@nishans/init</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/init/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/init?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/init?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/init?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/init?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=init&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/init?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/init">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/init/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/init">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package to initialize notion view & block data</b></p>
npm package: @nishans/inline-blocks
Description: Package providing an easy to use api to generate contents for notion inline blocks
Author: Safwan Shaheer
Latest version: 0.0.37

# <pre>@nishans/inline-blocks</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/inline-blocks/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/inline-blocks?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/inline-blocks?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/inline-blocks?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/inline-blocks?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=inline_blocks&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/inline-blocks?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/inline-blocks">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/inline-blocks/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/inline-blocks">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>Package providing an easy to use api to generate contents for notion inline blocks</b></p>
npm package: @nishans/lineage
Description: A package to work with notion child data
Author: Safwan Shaheer
Latest version: 0.0.26

# <pre>@nishans/lineage</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/lineage/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/lineage?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/lineage?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/lineage?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/lineage?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=lineage&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/lineage?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/lineage">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/lineage/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/lineage">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package to work with notion child data</b></p>
npm package: @nishans/logger
Description: A logger built specifically for nishan ecosystem
Author: Safwan Shaheer
Latest version: 0.0.19

# <pre>@nishans/logger</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/logger/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/logger?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/logger?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/logger?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/logger?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=logger&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/logger?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/logger">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/logger/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/logger">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A logger built specifically for nishan ecosystem</b></p>
npm package: @nishans/notion-formula
Description: A package to generate notion formula with ease
Author: Safwan Shaheer
Latest version: 0.0.35

# <pre>@nishans/notion-formula</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/notion-formula/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/notion-formula?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/notion-formula?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/notion-formula?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/notion-formula?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=notion_formula&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/notion-formula?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/notion-formula">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/notion-formula/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/notion-formula">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package to generate notion formula with ease</b></p>
npm package: @nishans/operations
Description: A package to inspect, modify and store notion operations
Author: Safwan Shaheer
Latest version: 0.0.32

# <pre>@nishans/operations</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/operations/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/operations?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/operations?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/operations?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/operations?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=operations&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/operations?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/operations">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/operations/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/operations">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package to inspect, modify and store notion operations</b></p>
npm package: @nishans/permissions
Description: A package to easily deal with notion permissions
Author: Safwan Shaheer
Latest version: 0.0.24

# <pre>@nishans/permissions</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/permissions/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/permissions?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/permissions?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/permissions?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/permissions?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=permissions&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/permissions?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/permissions">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/permissions/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/permissions">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package to easily deal with notion permissions</b></p>
npm package: @nishans/sync
Description: A package to keep local notion data in sync with remote one by storing and restoring it
Author: Safwan Shaheer
Latest version: 0.0.24

# <pre>@nishans/sync</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/sync/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/sync?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/sync?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/sync?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/sync?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=sync&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/sync?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/sync">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/sync/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/sync">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package to keep local notion data in sync with remote one by storing and restoring it</b></p>
npm package: @nishans/tasks
Description: A package to enqueue and poll notion tasks
Author: Safwan Shaheer
Latest version: 0.0.21

# <pre>@nishans/tasks</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/tasks/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/tasks?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/tasks?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/tasks?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/tasks?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=tasks&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/tasks?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/tasks">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/tasks/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/tasks">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A package to enqueue and poll notion tasks</b></p>
npm package: @nishans/traverser
Description: Traverse notion data with ease
Author: Safwan Shaheer
Latest version: 0.0.26

# <pre>@nishans/traverser</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/traverser/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/traverser?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/traverser?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/traverser?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/traverser?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=traverser&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/traverser?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/traverser">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/traverser/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/traverser">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>Traverse notion data with ease</b></p>
npm package: @nishans/types
Description: Typescript type definitions for notion
Author: Safwan Shaheer
Latest version: 0.0.57

# <pre>@nishans/types</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/types/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/types?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/types?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/types?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/types?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=types&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/types?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/types">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/types/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/types">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>Typescript type definitions for notion</b></p>
npm package: @nishans/utils
Description: A bunch of small utility modules used across nishans ecosystem
Author: Safwan Shaheer
Latest version: 0.0.25

# <pre>@nishans/utils</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/utils/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/utils?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/utils?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/utils?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/utils?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=utils&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/utils?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/utils">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/utils/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/utils">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A bunch of small utility modules used across nishans ecosystem</b></p>
npm package: @nishans/validators
Description: A group of modules to validate various things related to notion
Author: Safwan Shaheer
Latest version: 0.0.22

# <pre>@nishans/validators</pre>

<p align="center">
  <img width="125" src="https://github.com/Devorein/Nishan/blob/master/docs/static/img/validators/logo.svg"/>
</p>

<p align="center">
  <img src="https://img.shields.io/bundlephobia/minzip/@nishans/validators?label=minzipped&style=flat&color=%23bb0a1e"/>
  <img src="https://img.shields.io/npm/dw/@nishans/validators?style=flat&color=orange"/>
  <img src="https://img.shields.io/github/issues/devorein/nishan/@nishans/validators?color=yellow"/>
  <img src="https://img.shields.io/npm/v/@nishans/validators?color=%2303C04A"/>
  <img src="https://img.shields.io/codecov/c/github/devorein/Nishan?flag=validators&color=blue"/>
  <img src="https://img.shields.io/librariesio/release/npm/@nishans/validators?color=%234B0082">
</p>

<p align="center">
  | <a href="https://github.com/Devorein/Nishan/tree/master/packages/validators">Github</a> |
  <a href="https://nishan-docs.netlify.app/docs/validators/">Docs</a> |
  <a href="https://www.npmjs.com/package/@nishans/validators">NPM</a> |
  <a href="https://discord.com/invite/SpwHCz8ysx">Discord</a> |
</p>

<p align="center"><b>A group of modules to validate various things related to notion</b></p>
npm package: @nishant1500/wave
Description: Audio visualizer library for javascript (20+ designs).
Author: Austin Michaud
Latest version: 1.0.0

# [Wave.js](https://foobar404.github.io/Wave.js/#/)

Audio visualizer library for javascript
(20+ designs).

[DOCUMENTATION](https://foobar404.github.io/Wave.js/#/docs)

[LIVE EXAMPLES](https://foobar404.github.io/Wave.js/#/)


# Installation 
 
<h3>Install With CDN</h3>

```html
<script src="https://cdn.jsdelivr.net/gh/foobar404/wave.js/dist/bundle.iife.js"></script>
```

<h3>Or NPM</h3>

```html
npm i @foobar404/wave
```

# Setup

<p>If your using npm use a default import to include wave.</p>

```javascript
import Wave from "@foobar404/wave"
```

<p>Create a new wave object.</p>

```javascript
var wave = new Wave();
```

<p>If your working with React, put the wave instance in state.</p>  

```javascript
let [wave] = useState(new Wave());
```


# Usage

<p>Call one of the three main function on the wave object, fromFile, fromStream, fromElement.</p>

```javascript
wave.fromElement("audio_element_id","canvas_id",{type:"wave"});
```

# Documentation

<p>View the current documentation for Wave.js <a href="https://foobar404.github.io/Wave.js/#/docs" target="_blank">here</a>.</p>

<h1>Example</h1>

```html
<html>

<head></head>

<body>

   <canvas id="output" height="500" width="500"></canvas>

   <script src="https://cdn.jsdelivr.net/gh/foobar404/wave.js/dist/bundle.iife.js"></script>
   <script>
      let wave = new Wave();

      navigator.mediaDevices.getUserMedia({
            audio: true
         })
         .then(function (stream) {
            wave.fromStream(stream, "output", {
               type: "shine",
               colors: ["red", "white", "blue"]
            });
         })
         .catch(function (err) {
            console.log(err.message)
         });
   </script>
</body>

</html>
```

# Contributor Workflow

<ol>
   <li>Fork Wave.js repo.</li>
   <li>Clone to your local computer.</li>
   <li>Run "npm i" in the root folder to install dependencies.</li>
   <li>Run "npm run test" to start the dev server and code watcher.</li>
   <li>Open the src folder and make a change to one of the src files.</li>
   <li>Save changes and refresh browser window to see changes.</li>
   <li>Push to remote branch and create a pull request to the Wave.js master branch.</li>
</ol>
npm package: @nishant51/frame-ui
Description: Beautiful, animated React UI components with Framer Motion
Author: Nishant
Latest version: 1.0.0

# @nishant51/frame-ui

Beautiful, animated React UI components built with Framer Motion.

[![npm version](https://badge.fury.io/js/%40nishant51%2Fframe-ui.svg)](https://www.npmjs.com/package/@nishant51/frame-ui)

## 📦 Installation

```bash
npm install @nishant51/frame-ui framer-motion
```

## 🚀 Quick Start

```tsx
import { Button, Dropdown, GlowCursor } from '@nishant51/frame-ui';

function App() {
  return (
    <div>
      {/* Add a beautiful cursor effect */}
      <GlowCursor />
      
      {/* Animated button */}
      <Button variant="primary">Click Me</Button>
      
      {/* Dropdown menu */}
      <Dropdown>
        <Dropdown.Trigger>
          <button>Open Menu</button>
        </Dropdown.Trigger>
        <Dropdown.Menu>
          <Dropdown.Item onClick={() => console.log('clicked')}>
            Option 1
          </Dropdown.Item>
          <Dropdown.Separator />
          <Dropdown.Item variant="danger">Delete</Dropdown.Item>
        </Dropdown.Menu>
      </Dropdown>
    </div>
  );
}
```

## 📚 Components

### Button

A beautiful animated button with multiple variants.

```tsx
import { Button } from '@nishant51/frame-ui';

<Button variant="primary">Primary</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="outline">Outline</Button>
<Button href="/about">Link Button</Button>
<Button icon={<ArrowIcon />}>With Icon</Button>
```

**Props:**
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `variant` | `'primary' \| 'ghost' \| 'outline'` | `'primary'` | Button style variant |
| `href` | `string` | - | Optional link (renders as anchor) |
| `icon` | `ReactNode` | - | Optional icon after text |

### Dropdown

A compound component for animated dropdown menus.

```tsx
import { Dropdown } from '@nishant51/frame-ui';

<Dropdown>
  <Dropdown.Trigger>
    <button>Menu</button>
  </Dropdown.Trigger>
  <Dropdown.Menu align="right">
    <Dropdown.Item icon={<UserIcon />}>Profile</Dropdown.Item>
    <Dropdown.Item href="/settings">Settings</Dropdown.Item>
    <Dropdown.Separator />
    <Dropdown.Item variant="danger">Logout</Dropdown.Item>
  </Dropdown.Menu>
</Dropdown>
```

### Cursor Effects

Beautiful cursor effects for your landing pages.

```tsx
import { 
  GlowCursor, 
  BubbleCursor, 
  FluidCursor, 
  ElasticCursor, 
  SpotlightCursor 
} from '@nishant51/frame-ui';

// Glowing cursor
<GlowCursor color="rgba(147, 51, 234, 0.5)" size={40} />

// Bubble particles
<BubbleCursor color="rgba(180, 150, 255, 0.5)" />

// Fluid trail
<FluidCursor trailLength={40} />

// Elastic connector
<ElasticCursor color="#9333ea" />

// Spotlight effect
<SpotlightCursor size={600} intensity={0.2} />
```

## 🎨 Peer Dependencies

This package requires the following peer dependencies:

```json
{
  "react": ">=18.0.0",
  "react-dom": ">=18.0.0",
  "framer-motion": ">=10.0.0"
}
```

## 📖 Documentation

Full documentation available at [framejs.vercel.app](https://framejs.vercel.app)

## 📄 License

MIT © Nishant