open-index/open-npm huggingface dataset:
npm package: @neerajbaid/homebridge-open-sesame
Description: Homebridge plugin for sesame locks.
Latest version: 0.5.4

<p align="center">
<img src="https://github.com/homebridge/branding/raw/master/logos/homebridge-wordmark-logo-vertical.png" width="150">
</p>

<span align="center">

# homebridge-open-sesame

[![GitHub Release](https://flat.badgen.net/github/release/yasuoza/homebridge-open-sesame/main?icon=github)](https://github.com/yasuoza/homebridge-open-sesame/releases) [![npm Release](https://flat.badgen.net/npm/v/homebridge-open-sesame?icon=npm)](https://www.npmjs.com/package/homebridge-open-sesame)

[![Lint & Build](https://flat.badgen.net/github/checks/yasuoza/homebridge-open-sesame/main?icon=github&label=lint%20%26%20build)](https://github.com/yasuoza/homebridge-open-sesame/actions) [![npm Download Total](https://flat.badgen.net/npm/dt/homebridge-open-sesame?icon=npm)](https://www.npmjs.com/package/homebridge-open-sesame)

[![verified-by-homebridge](https://badgen.net/badge/homebridge/verified/purple)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)


Homebridge plugin for SESAME3, SESAME４and SESAME bot.

</span>

## Features

- Real time status update support(even when manual lock/unlock).
- No status polling(`Limit Exceeded` avoidance)
- SESAME bot support.

## Install

```
npm install -g homebridge-open-sesame
```

## Configuration

### Configure with UI

Configure with [Homebridge Config UI X](https://github.com/oznu/homebridge-config-ui-x#readme) is recommended.

![config-ui](images/config-ui.png)

### Configure with config.json

```json
{
  "platforms": [
    {
      "platform": "OpenSesame",
      "name": "Open Sesame",
      "apiKey": "API_KEY from candyhouse developer site",
      "locks": [
        {
          "name": "SESAME4 name",
          "uuid": "UUID from Sesame.app",
          "secret": "Key Secret"
        }
      ]
    }
  ]
}
```

## Credits

- Cognito integration code based on [pysesame3](https://github.com/mochipon/pysesame3).
npm package: @neerajgrg93/aem-eds-mcp-server
Description: MCP server for AEM Edge Delivery Services with 10 consolidated tools for content management, configuration, jobs, authentication, search operations, and monitoring
Author: Neeraj Garg
Latest version: 1.0.0

# AEM EDS MCP Server

An MCP (Model Context Protocol) server that provides 10 consolidated tools for AEM Edge Delivery Services (EDS) via the Helix Admin API.

## 📦 Installation

### NPM Installation (Recommended)

```bash
# Install globally
npm install -g @neerajgrg93/aem-eds-mcp-server

# Or install locally
npm install @neerajgrg93/aem-eds-mcp-server
```

### Alternative: Docker Setup

```bash
# Clone the repository
git clone https://github.com/neerajgrg93/aem-mcp-servers.git
cd aem-mcp-servers/aem-eds

# Run the interactive setup
make setup

# Follow the prompts to:
# 1. Enter your API tokens
# 2. Build the Docker image
# 3. Get instructions for enabling in Cursor
```

### 🔧 Development Setup

Run directly from source:

```bash
# Clone and setup
git clone https://github.com/neerajgrg93/aem-mcp-servers.git
cd aem-mcp-servers/aem-eds
npm install

# Create .env file with your token
echo "HELIX_ADMIN_API_TOKEN=your_token_here" > .env

# Start the server
npm start
```

## 🎯 Enabling in Cursor

### Option 1: Docker Setup (Recommended)

Add this to your Cursor MCP settings:

```json
{
  "mcpServers": {
    "aem-eds-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--env-file",
        ".env",
        "aem-eds-mcp"
      ]
    }
  }
}
```

### Option 2: Local Node.js Setup

Add this to your Cursor MCP settings:

```json
{
  "mcpServers": {
    "aem-eds-mcp-server": {
      "command": "node",
      "args": ["/path/to/aem-eds-mcp-server/src/index.js"],
      "env": {
        "HELIX_ADMIN_API_TOKEN": "your_token_here"
      }
    }
  }
}
```

## 🔑 Required API Token

You'll need this token to use the MCP server:

**HELIX_ADMIN_API_TOKEN** (Required)
- Get from [admin.hlx.page/login](https://admin.hlx.page/login)
- Or follow instructions at [aem.live/docs/admin-apikeys](https://www.aem.live/docs/admin-apikeys)

## 🧹 Cleanup

If using Docker setup:
```bash
make clean  # Removes Docker image and .env file
```

## 📚 Additional Resources

- [Full Documentation](./docs/README.md)
- [Tools Documentation](./docs/api/tools.md) - Comprehensive list of all available tools
- [API Reference](./docs/api/README.md)
- [Configuration Guide](./docs/guides/configuration.md)
- [Contributing Guidelines](./docs/guides/contributing.md)

## 🤝 Contributing

We welcome contributions! See our [Contributing Guidelines](./docs/guides/contributing.md) for details.

## 📄 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
npm package: @neesh-studio/svelte-fsm
Description: Tiny (<1kb), expressive, Svelte-optimized Finite State Machine (FSM) library
Author: Ken Kunz
Latest version: 1.1.3

# Svelte FSM

<img alt="Svelte FSM logo" align="right" src="https://user-images.githubusercontent.com/35901/145653445-72717a87-927d-4bcd-b616-aa3eb6f13cd0.png">

A tiny, simple, expressive, pramgmatic [Finite State
Machine](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM) library, optimized for
[Svelte](https://svelte.dev).
* **tiny:** under `1kb` (minified); zero dependencies
* **simple:** implements core FSM features, not the kitchen sink
* **expressive:** FSM constructs are mapped to core JavaScript features (see [Usage Overview](#usage-overview) below)
* **pragmatic:** prioritizes developer happiness over strict adherance to FSM or Statechart
formalizations
* **Svelte-optimized:** implements Svelte's [store
contract](https://svelte.dev/docs#Store_contract); philosophically aligned – feels at-home in a
Svelte codebase

## Quick Start

### Installation

```bash
npm install svelte-fsm
```

### Create your first FSM and use it in a Svelte component

```svelte
<script>
  import fsm from 'svelte-fsm';

  const simpleSwitch = fsm('off', {
    off: { toggle: 'on' },
    on: { toggle: 'off' }
  });
</script>

<button value={$simpleSwitch} on:click={simpleSwitch.toggle}>
  {$simpleSwitch}
</button>
```

## Usage Overview

Svelte FSM's API is delightfully simple. FSM constructs are intuitively mapped to core JavaScript
language features, resulting in a highly expressive API that's effortless to remember, a joy to
write, and natural to read.
* an **fsm** is defined by calling the default export `fsm()` function with 2 arguments: `initial`
and `states`
* **states** is just an object consisting of nested `state` objects, which consist of…
  * **transitions** – property values or action return values that match another `state`
  * **actions** – functions that optionally transition (return a `state`)
* **events** are invoked on a state machine as function calls, returning the resulting state
* **timers** (often used in state machines) are available by calling `.debounce(wait)` on any event
* **context** is just… *context* (i.e., the lexical scope of your fsm)

## Next Steps

<a target="_blank" href="https://youtu.be/3_D-3HPUdEI">
<img alt="Svelte Summit video" align="right" src="https://user-images.githubusercontent.com/35901/145655001-e0b63ed8-b6cf-4729-b24c-e9b98aa30275.png">
</a>

* Watch the **[Lightning Talk](https://youtu.be/3_D-3HPUdEI)** from **[Svelte Summit Fall 2021](https://sveltesummit.com/)**
* Review the **[Full Documentation](https://github.com/kenkunz/svelte-fsm/wiki)**
* Check out the **[Examples](https://github.com/kenkunz/svelte-fsm/wiki/Examples)**

<br clear="all">

## Contributors

Credit to **[@ivanhofer](https://github.com/ivanhofer)** for contributing `TypeScript` declarations, resulting in an improved developer experience.
npm package: @neesh-studio/svelte-portal
Description: Svelte component for rendering outside the DOM of parent component
Latest version: 2.1.2

Svelte component for rendering outside the DOM of parent component

Idea borrowed from here: https://github.com/sveltejs/svelte/issues/3088#issuecomment-505785516

# Installation

```sh
npm install --save svelte-portal
```

or

```sh
yarn add svelte-portal
```

# Usage Portal component

The `<Portal />` component has only one property: `target`

target can be a HTMLElement `target={document.body}` or a css selector `target="#modals"` that points to an already existing element.

When no target is given it defaults to: `document.body`.

## Example

```html
<script>
  import Portal from "svelte-portal";
</script>

<Portal target="body">
  <div class="toast">Entity successfully updated!</div>
</Portal>
```

# Usage portal action

The functionality can also be applied to DOM elements directly via a svelte action:

## Example

```html
<script>
  import { portal } from "svelte-portal";
</script>

<div class="toast" use:portal={"body"} hidden>Entity successfully updated!</div>
```

The `hidden` atrribute is only needed when using ssr, when portal has moved the element to it's targetted location it removes the hidden attribute.

## TypeScript support

`<script lang="ts">` users should import from `"svelte-portal/src/Portal.svelte"` instead of `"svelte-portal"` to get typing support.
npm package: @neeter/core
Description: Framework-agnostic state management and agent lifecycle for neeter
Author: Dan Leeper
Latest version: 0.18.0

# @neeter/core

Framework-agnostic state management, agent lifecycle, and utilities for the [neeter](https://github.com/quantumleeps/neeter) toolkit. Use standalone for vanilla JS apps or as the foundation for `@neeter/react`.

Part of the [neeter](https://github.com/quantumleeps/neeter) toolkit.

## Install

```bash
pnpm add @neeter/core
```

Peer dependencies:

```json
{
  "zustand": ">=5.0.0",
  "immer": ">=10.0.0"
}
```

## What's inside

- **`AgentClient`** — manages EventSource lifecycle, session creation/resumption, message sending, and permissions
- **`createChatStore()`** — Zustand store for chat state, messages, tool calls, and streaming
- **`replayEvents(store, events, options?)`** — reconstruct UI state from persisted SSE events
- **`registerWidget` / `getWidget` / `stripMcpPrefix`** — widget registry for tool call rendering
- **`findMatchingApproval` / `isApprovalClaimedByToolCall`** — approval-matching utilities
- **`cn(...inputs)`** — `clsx` + `tailwind-merge` class merging utility

## Documentation

- [Client Guide](https://quantumleeps.github.io/neeter/docs/client) — styling, custom events, widgets, tool lifecycle
- [API Reference](https://quantumleeps.github.io/neeter/docs/api-reference) — all exports and types

## License

MIT
npm package: @neeter/react
Description: React components and hooks for building chat UIs on top of the Claude Agent SDK
Author: Dan Leeper
Latest version: 0.18.0

# @neeter/react

React components and hooks for building chat UIs on top of the [Claude Agent SDK](https://github.com/anthropics/claude-agent-sdk). Builds on `@neeter/core` for state management and agent lifecycle — with drop-in components and a widget system for tool call rendering.

Part of the [neeter](https://github.com/quantumleeps/neeter) toolkit.

## Install

```bash
pnpm add @neeter/core @neeter/react
```

Peer dependencies:

```json
{
  "react": ">=18.0.0",
  "react-markdown": ">=10.0.0",
  "zustand": ">=5.0.0",
  "immer": ">=10.0.0"
}
```

Components use [Tailwind CSS v4](https://tailwindcss.com/) utility classes.

## Quick start

```tsx
import { AgentProvider, MessageList, ChatInput, useAgentContext } from "@neeter/react";

function App() {
  return (
    <AgentProvider>
      <Chat />
    </AgentProvider>
  );
}

function Chat() {
  const { sendMessage } = useAgentContext();

  return (
    <div className="flex h-screen flex-col">
      <MessageList className="flex-1" />
      <ChatInput onSend={sendMessage} />
    </div>
  );
}
```

## Styling

Components use [shadcn/ui](https://ui.shadcn.com)-compatible CSS variable names. If you already have a shadcn theme, add one line:

```css
@import "tailwindcss";
@source "../node_modules/@neeter/react/dist";
```

Without shadcn, import the bundled theme:

```css
@import "tailwindcss";
@import "@neeter/react/theme.css";
```

## Examples

| Example | Description |
|---------|-------------|
| [basic-chat](https://github.com/quantumleeps/neeter/tree/main/examples/basic-chat) | Minimal component setup |
| [code-workbench](https://github.com/quantumleeps/neeter/tree/main/examples/code-workbench) | Custom events, widgets, split-pane preview, file checkpointing |

## Documentation

- [Client Guide](https://quantumleeps.github.io/neeter/docs/client) — styling, custom events, widgets, tool lifecycle
- [API Reference](https://quantumleeps.github.io/neeter/docs/api-reference) — all exports and types
- [Built-in Widgets](https://quantumleeps.github.io/neeter/docs/built-in-widgets)
- [Custom Widgets](https://quantumleeps.github.io/neeter/docs/custom-widgets)

## License

MIT
npm package: @neeter/server
Description: Hono server toolkit for building chat UIs on top of the Claude Agent SDK
Author: Dan Leeper
Latest version: 0.18.0

# @neeter/server

A Hono server toolkit that puts a browser UI on the [Claude Agent SDK](https://github.com/anthropics/claude-agent-sdk). Manages multi-turn sessions, translates SDK messages into named SSE events, and handles tool-approval permissions — so your React client gets a clean event stream out of the box.

Part of the [neeter](https://github.com/quantumleeps/neeter) toolkit.

## Install

```bash
pnpm add @neeter/server
```

Peer dependencies:

```json
{
  "@anthropic-ai/claude-agent-sdk": ">=0.2.0",
  "hono": ">=4.0.0"
}
```

## Quick start

```typescript
import { Hono } from "hono";
import { serve } from "@hono/node-server";
import {
  createAgentRouter,
  SessionManager,
  MessageTranslator,
} from "@neeter/server";

const sessions = new SessionManager(() => ({
  context: {},
  model: "claude-sonnet-4-5-20250929",
  systemPrompt: "You are a helpful assistant.",
  maxTurns: 50,
}));

const translator = new MessageTranslator();

const app = new Hono();
app.route("/", createAgentRouter({ sessions, translator }));

serve({ fetch: app.fetch, port: 3000 });
```

## Multimodal messages

Send images alongside text via the messages endpoint:

```typescript
// POST /api/sessions/:id/messages
{
  "content": [
    { "type": "text", "text": "Describe this image" },
    {
      "type": "image",
      "source": {
        "type": "base64",
        "media_type": "image/png",
        "data": "<base64>"
      }
    }
  ]
}
```

Plain `{ "text": "..." }` payloads continue to work as before. See the [Server Guide](https://quantumleeps.github.io/neeter/docs/server#multimodal-messages) for details.

## Examples

| Example | Description |
|---------|-------------|
| [basic-chat](https://github.com/quantumleeps/neeter/tree/main/examples/basic-chat) | Minimal server + client setup |
| [code-workbench](https://github.com/quantumleeps/neeter/tree/main/examples/code-workbench) | Per-session sandboxes, persistence, file checkpointing, custom events |

## Documentation

- [Server Guide](https://quantumleeps.github.io/neeter/docs/server) — endpoints, permissions, persistence, session context, sandbox hooks
- [API Reference](https://quantumleeps.github.io/neeter/docs/api-reference) — all exports and types

## License

MIT
npm package: @neeter/types
Description: Shared protocol types for neeter
Author: Dan Leeper
Latest version: 0.18.0

# @neeter/types

Shared TypeScript types for the [neeter](https://github.com/quantumleeps/neeter) toolkit.

## Install

```bash
pnpm add @neeter/types
```

> Most users don't need this package directly — all types are re-exported from `@neeter/server`, `@neeter/core`, and `@neeter/react`.

## What's inside

- **SSE protocol** — `SSEEvent`, `CustomEvent<T>`, `SessionInitEvent`
- **Content blocks** — `TextBlock`, `ImageBlock`, `ContentBlock`, `UserMessageContent`, `Base64ImageSource`
- **Chat messages** — `ChatMessage`, `ToolCallInfo`, `ToolCallPhase`
- **Permissions** — `PermissionRequest`, `PermissionResponse`, `ToolApprovalRequest`, `ToolApprovalResponse`, `UserQuestion`, `UserQuestionRequest`, `UserQuestionResponse`
- **Persistence** — `SessionStore`, `SessionRecord`, `SessionHistoryEntry`

## Documentation

See the [API Reference](https://quantumleeps.github.io/neeter/docs/api-reference) for all type definitions and the [neeter README](https://github.com/quantumleeps/neeter#readme) for usage guides.

## License

MIT
npm package: @neethan/pikr
Description: Universal element picker for terminal-based AI coding agents
Latest version: 0.3.1

# pikr

[![npm](https://img.shields.io/npm/v/@neethan/pikr)](https://www.npmjs.com/package/@neethan/pikr)
[![license](https://img.shields.io/npm/l/@neethan/pikr)](LICENSE)

A CLI tool that lets you visually pick UI elements and get structured context for your AI agent. Click → clipboard → paste.

https://github.com/user-attachments/assets/4f31a091-c307-4621-b492-80e383316176

## Quickstart

```bash
npm install -g @neethan/pikr
```

Then from any project folder:

```bash
pikr
```

That's it. pikr starts your dev server if needed, opens Chrome, and you're ready to pick elements.

Or specify a port directly:

```bash
pikr <port>                 # e.g. pikr 3000, pikr 5173
```

## How it works

1. pikr detects your project, starts the dev server if needed, and opens Chrome
2. Click the pikr pill to toggle inspect mode
3. Click elements to select — each gets a numbered badge
4. Optionally click a badge to add a comment (e.g., "make this bigger")
5. Press **Enter** or click the send icon to copy all selections to clipboard
6. Paste into any terminal agent (Claude Code, Codex, OpenCode, Amp, ...)
7. Press **ESC** to exit inspect mode

## What gets captured

```
pikr: form.order-form > button.submit
url: http://localhost:3000/orders
source: OrderForm in src/components/OrderForm.tsx:84
ancestry: form.order-form > div.actions > [this]

<button class="submit btn-primary">Submit Order</button>

styles: background-color: #2563eb; color: #fff; border-radius: 8px
```

Every capture is also logged to `~/.pikr/selections.jsonl`.

## Source mapping

pikr auto-detects Vue and React projects and maps elements back to source files:

- **Vue 3** — component name + file path (works in dev mode, no extra setup)
- **React 18** — component name + file:line:col (works in dev mode)
- **React 19+** — best-effort file:line from stack trace parsing
- **React (any)** — precise file:line:col if `@react-dev-inspector/babel-plugin` is installed

## Agent integration

pikr works with any terminal agent out of the box — just paste the clipboard output.

For deeper integration, agents can:

1. Launch pikr as a background process: `pikr &`
2. Read selections from `~/.pikr/selections.jsonl` (NDJSON, one entry per line)
3. Each entry includes `selector`, `html`, `styles`, `ancestry`, `component`, `filePath`, and `sessionId`

## Options

```
pikr                       Auto-start or auto-detect dev server
pikr <port>                Port shorthand (e.g. pikr 3000)
pikr <url>                 Full URL (e.g. pikr localhost:3000)
pikr --log <path>          Custom log file path
pikr --no-clipboard        Log only, skip clipboard
pikr --plugin <path>       Load a framework plugin
```

## Plugins

pikr includes built-in source mapping for Vue and React. For other frameworks, you can write or install plugins:

```bash
pikr --plugin ./my-plugin.js
```

Plugins are also auto-discovered from `node_modules` (`pikr-plugin-*` or `@pikr/plugin-*`).

## Requirements

- Node.js 18+
- Chrome or Chromium installed

## License

MIT
npm package: @neetjn/hyper-table
Description: ReactTable port for HyperMTML.
Author: John Nolette
Latest version: 0.0.1

# hyper-table

[![npm](https://img.shields.io/npm/dm/hyper-table.svg)](https://www.npmjs.com/package/hyper-table)

[![build](https://travis-ci.org/neetjn/hyper-table.svg?branch=master)](https://travis-ci.org/neetjn/hyper-table/)
[![npm version](https://badge.fury.io/js/hyper-table.svg)](https://badge.fury.io/js/hyper-table)

[![NPM](https://nodei.co/npm/hyper-table.png)](https://nodei.co/npm/hyper-table/)

### About

**hyper-table** is a ReactTable port for the HyperHTML framework. Underneath...


### Support

*This project was created with and for hyper-html 2.14.0, support for previous versions is not available.*

### Example

```js
const columns = [
  {
    Header: 'Name',
    accessor: 'name'
  },
  {
    Header: 'Age',
    accessor: 'age'
  }
]

const data = [
  {
    name: 'John Doe',
    age: 23,
  },
  {
    name: 'Jane Doe',
    age: 26,
  }
]

hyperHTML.bind(document.querySelector('#table'))`
<h1>User Table</h1>
${new Table({
  columns,
  data
})}
```

### Usage

To install via Bower, simply do the following:

```sh
bower install hyper-table
```

To install via NPM:

```sh
npm install hyper-table
```

For a quick start using jsdelivr:

```html
<script src="https://cdn.jsdelivr.net/npm/hyper-table/dist/hyper-table.min.js"></script>
```

### Contributors

* John Nolette (john@neetgroup.net)

Contributing guidelines are as follows,

* Any new features must include either a unit test, e2e test, or both.
    * Branches for bugs and features should be structured like so, issue-x-username.
* Before putting in a pull request, be sure to verify you've built all your changes.
* Travis will build your changes before testing and publishing, but bower pulls from this repository directly.
* Include your name and email in the contributors list.

Notes,

Be sure to run prettier using:
```sh
npm run pretty
```
Prior to committing any code changes.

---
Copyright (c) 2019 John Nolette Licensed under the MIT license.
npm package: @neetjn/riot-is-password-known
Description: Riot.js plugin to check a given password against the haveibeenpwned.com api, and verify it's secure.
Author: John Nolette
Latest version: 0.0.5

# riot-is-password-known

[![build](https://travis-ci.org/neetjn/riot-is-password-known.svg?branch=master)](https://travis-ci.org/neetjn/riot-is-password-known/)
[![codecov](https://codecov.io/gh/neetjn/riot-is-password-known/branch/master/graph/badge.svg)](https://codecov.io/gh/neetjn/riot-is-password-known)

[![NPM](https://nodei.co/npm/@neetjn/riot-is-password-known.png)](https://nodei.co/npm/@neetjn/riot-is-password-known/)

### About

**riot-is-password-known** is a Riot.js plugin to check a given password against the haveibeenpwned.com api, and verify it's secure.

### Support

| Chome  | Edge | Firefox | Opera    | Safari |
|--------|------|---------|----------|--------|
| 5.0+ ✔ |  ✔   | 4.0+ ✔  | 11.50+ ✔ | 5.0+ ✔ |

*This project only supports riot.js 3, support for previous versions is not available.*

### Example

Install the plugin like so:

```js
import PasswordKnown from '@neetjn/riot-is-password-known'
import * as riot from 'riot'

PasswordKnown(riot)
```

Leverage the virtual tag using `password-known`:

```html
<component>
  <div if={!validPassword} class="danger">
    <h1>Password Known</h1>
  </div>

  <input type="password" data-is="password-known" />

  <script>
    const self = this

    self.validPassword = false
    self.safetyScore = 0
    self.on('passwordKnown', (result) => {
        self.validPassword = !result.found
        self.safetyScore = result.count ....
        self.update()
    })
  </script>
</component>
```

### Other Examples

* https://jsfiddle.net/neetjn/gjxLywrm/  

### Usage

To install via Bower, simply do the following:

```bash
bower install riot-is-password-known
```

To install via NPM:

```bash
npm install @neetjn/riot-is-password-known
```

For quick start using jsdelivr:

```html
<script src="https://cdn.jsdelivr.net/gh/neetjn/riot-is-password-known/dist/riot-is-password-known.browser.js"></script>
```

### Contributors

* John Nolette (john@neetgroup.net)

Contributing guidelines are as follows,

* Any new features must include either a unit test, e2e test, or both.
    * Branches for bugs and features should be structured like so, issue-x-username.
* Before putting in a pull request, be sure to verify you've built all your changes.
* Travis will build your changes before testing and publishing, but bower pulls from this repository directly.
* Include your name and email in the contributors list.

Notes,

Be sure to run prettier using:
```sh
npm run pretty
```
Prior to committing any code changes.

---

Copyright (c) 2019 John Nolette Licensed under the MIT license.
npm package: @neetohq/timezones
Description: ![npm version](https://img.shields.io/npm/v/@neetohq/timezones.svg) ![license](https://img.shields.io/npm/l/@neetohq/timezones.svg)
Latest version: 0.2.2

# @neetohq/timezones

![npm version](https://img.shields.io/npm/v/@neetohq/timezones.svg) ![license](https://img.shields.io/npm/l/@neetohq/timezones.svg)

A simple and lightweight NPM package for working with time zones. This package provides a human friendly timezone selector and utility functions for timezones.


## Installation

You can install the package using npm:

```bash
npm install @neetohq/timezones
```


## NeetoTimezoneSelector

[Check out the live demo](https://codepen.io/Jijin-Haridas/full/wvQbeOr)
```js
import { NeetoTimezoneSelector } from "@neetohq/timezones";

new NeetoTimezoneSelector(document.getElementById("elementId"));
```

### Configuration
You can pass options as the second parameter to configure the timezone selector component.

1. elementId: ID for the NeetoTimezoneSelector. By default the ID will be `timezone-selector`
2. className: Custom classes that can be added to the component.
3. onChange: Function to be called when the timezone selector changes.
4. position: Position in which the selector should open in. Available options: `top`, `bottom`. Default position is `bottom`.
5. onHourFormatChange: Function to be called when the time format changes.

```js
import { NeetoTimezoneSelector } from "@neetohq/timezones";

new NeetoTimezoneSelector(document.getElementById("elementId"), {
  className: "custom-selector-class",
  onChange: (timezone) => {
    console.log(timezone);
  },
  elementId: "custom-selector-element",
  position: "top",
});
```

### ianaTimezoneToHumanReadble

```js
import { ianaTimezoneToHumanReadable } from "@neetohq/timezones";

ianaTimezoneToHumanReadable("Asia/Calcutta") // => Indian Standard Time

ianaTimezoneToHumanReadable("America/New_York") // => Eastern Standard Time

ianaTimezoneToHumanReadable("Europe/Berlin") // => Central Standard Time
```

## Development

### Clone the repo

```bash
git clone git@github.com:neetohq/neeto-timezones.git
cd neeto-timezones/js
pnpm install
pnpm dev
```

### Publishing to npm

1. Bump `package.json` version
2. Commit and push
3. `pnpm build && pnpm publish`
npm package: @neetshin/kyujitai
Description: Utility collections for making Japanese text old-fashioned.
Author: Ryo Igarashi
Latest version: 2.1.4

# @neetshin/kyujitai.js

> 🙏The datasets and algorithms are largely borrowed from **[hakatashi/kyujitai.js](https://github.com/hakatashi/kyujitai.js)**

Utility collections for making Japanese text old-fashioned.

## installation

```
npm install @neetshin/kyujitai
```

## Usage

```js
import { Kyujitai } from '@neetshin/kyujitai';

async function main() {
  const { dataset } = await import('@neetshin/kyujitai/dataset');
  const kyujitai = await Kyujitai.init({ dataset });

  kyujitai.kyujitaize(`
    台風は旧字体でこのように書きますが、台湾はこのように書きます。
  `);

  // --> 颱風は舊字體でこのように書きますが、臺灣はこのように書きます。
}
```

## License

MIT