open-index/open-npm huggingface dataset:
npm package: @lucifinil/luc-modal
Description: ## 介绍
Author: https://github.com/lucifer9531
Latest version: 1.0.1

# luc-modal

## 介绍

- 对ant-design-vue modal的二次封装，保留原有的属性和方法。新增全屏、最小化的功能。
  ![image-20240914090749678](https://s2.loli.net/2024/09/14/8HFTXu2vU51kZcN.png)
  ![image-20240914090804941](https://s2.loli.net/2024/09/14/qZGP4AYrHFb8sRo.png)
- ![image-20240914090830909](https://s2.loli.net/2024/09/14/SxQAE37kvRslMmJ.png)

- 在某处可停顿 0.5s、1s、2s 等

## Install

```bash
  npm i @lucifinil/luc-modal
```

## Usages

```vue
<template>
  <div>
    <luc-modal
      :centered="true"
      :maskClosable="false"
      title="添加"
      :visible="visible"
      :width="600"
      max
      show-full-screen
      @cancel="visible = false"
    >
      <h3>hello world！</h3>
    </luc-modal>
    <a-button type="primary" @click="openModal">打开</a-button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        visible: false,
      }
    },
    methods: {
      openModal() {
        this.visible = true;
      }
    }
  }
</script>
```

[MIT](./LICENSE)
npm package: @lucio/graham-scan
Description: A JavaScript implementation of the Graham scan algorithm for finding the convex hull of a set of points.
Author: Lucio Paiva
Latest version: 1.0.0


# Graham scan

[![Build Status](https://travis-ci.com/luciopaiva/graham-scan.svg?branch=master)](https://travis-ci.com/luciopaiva/graham-scan) [![codecov](https://codecov.io/gh/luciopaiva/graham-scan/branch/master/graph/badge.svg)](https://codecov.io/gh/luciopaiva/graham-scan)

A JavaScript implementation of the [Graham scan](https://en.wikipedia.org/wiki/Graham_scan) algorithm for finding the convex hull of a set of points.

## Installation

    npm i @lucio/graham-scan

## Usage

```javascript
const grahamScan = new GrahamScan();
grahamScan.setPoints([[1,0], [0,1], [2,1], [1,0.5]]);
const hull = grahamScan.getHull();  // [1,0], [2,1], [0,1]
```

### API

#### `new GrahamScan()`

Creates a new instance of the algorithm, meant to be reusable.

```javascript
const grahamScan = new GrahamScan();
```

#### `grahamScan.addPoint(point)`

Adds a point to the set. The point must be an array of two numbers: the x and y coordinates. 

```javascript
const grahamScan = new GrahamScan();
grahamScan.addPoint([10, 20]);
```

#### `grahamScan.clear()`

Clear the underlying array of points.

```javascript
const grahamScan = new GrahamScan();
grahamScan.addPoint([10, 20]);
grahamScan.clear();
```

#### `grahamScan.getHull()`

Computes the convex hull. Returns a new array containing all the hull vertices, starting from the one with the lowest y value (in case there are multiple ones, it will be the one with the lowest x as well) and going in counter-clockwise direction.

```javascript
const grahamScan = new GrahamScan();
grahamScan.setPoints([[1,0], [0,1], [2,1], [1,0.5]]);
const hull = grahamScan.getHull();  // [1,0], [2,1], [0,1]
```

#### `grahamScan.getPoints()`

Returns a reference to the underlying array containing all the points.

```javascript
const grahamScan = new GrahamScan();
grahamScan.addPoint([10, 20]);
grahamScan.addPoint([30, 40]);
grahamScan.getPoints();  // [10, 20], [30, 40]
```

#### `grahamScan.setPoints(points)`

Replace the underlying array with the given one.

```javascript
const grahamScan = new GrahamScan();
grahamScan.setPoints([[10, 20], [30, 40]]);
```

## Contributing

    git clone git@github.com:luciopaiva/graham-scan.git
    cd graham-scan
    nvm install
    npm install

## Tests

    npm test
npm package: @luciodale/oauth2
Description: Giving any web application access to sensitive data like an access token is a security risk and should be avoided as much as possible. This library takes advantage of the [Service Workers API](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worke
Latest version: 1.1.3

## Rationale

Giving any web application access to sensitive data like an access token is a security risk and should be avoided as much as possible. This library takes advantage of the [Service Workers API](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) to store the access token in a secure environment and to attach it to the requests made to the protected resources.

## Installation

```sh
npm install @luciodale/oauth2
yarn add @luciodale/oauth2
```

After installing, you need to run the `init` script to generate the worker and redirect files.

```sh
npx @luciodale/oauth2 init
```

This script will place in your project `public` folder the following files:

- `oauth-redirect.html`
- `oauth-service-worker.js`

if your `public` folder is not in the root of your project or if it has a different name, you can specify the path to the folder as a parameter to the `init` script.

```sh
npx @luciodale/oauth2 init ./path-to-public-folder
```

## Usage

The library exposes two functions:

- `registerOAuth2Worker` registers a worker that attaches the bearer tokens to the user's provided protected resources. This function should be called once, so if used in an SPA, it should be called in the main entry point of the application.

- `authorize` starts the oauth2 flow and, if successful, grants an access token to the client.
  it takes a single object as a parameter that must have the following shape:

```ts
export type Config = {
  origin: string;
  client_id: string;
  redirect_uri: string;
  authorization_endpoint: string;
  token_endpoint: string;
  requested_scopes: string[];
};
```

The following snippet provides a concrete example of how to use this library.

```js
import { registerOAuth2Worker, authorize } from "@luciodale/oauth2";

registerOAuth2Worker();

const resource_server = "https://home.juxt.site";
const authorization_server = "https://auth.home.juxt.site";
const app_server = "https://surveyor.apps.com";

// this callback wraps the `authorize` function and will be invoked when the user clicks for example on a login button
function authorizeCallback() {
  authorize({
    origin: resource_server,
    client_id: "surveyor",
    authorization_endpoint: `${authorization_server}/oauth/authorize`,
    token_endpoint: `${authorization_server}/oauth/token`,
    redirect_uri: `${app_server}/oauth-redirect.html`,
    requested_scopes: [],
  });
}
```
npm package: @luciomarques/ng-table-sort
Description: **Angular table sort** — pequeno componente **standalone** para colocar um ícone de ordenação no cabeçalho da tabela (`<th>`). Cada clique alterna: ascendente → descendente → sem ordenação. Você trata a lógica (ordenar o array) no componente pai.
Latest version: 0.0.3

# @luciomarques/ng-table-sort

**Angular table sort** — pequeno componente **standalone** para colocar um ícone de ordenação no cabeçalho da tabela (`<th>`). Cada clique alterna: ascendente → descendente → sem ordenação. Você trata a lógica (ordenar o array) no componente pai.

Feito para **Angular 15+** (com `peerDependencies` alinhadas ao pacote). Precisa de **Font Awesome** (CSS global na app) para o ícone aparecer.

---

## Instalar

```bash
npm install @luciomarques/ng-table-sort
```

Inclua o CSS do Font Awesome uma vez no projeto (por exemplo em `angular.json` → `styles`, ou o pacote `@fortawesome/fontawesome-free`).

---

## Usar

**1.** Importe `NgTableSort` no componente que tem o template (standalone):

```typescript
import { NgTableSort, SortEvent } from '@luciomarques/ng-table-sort';

@Component({
  standalone: true,
  imports: [NgTableSort],
  // ...
})
export class MinhaListaComponent {
  sortColumn = '';
  sortDirection = '';

  onSort(e: SortEvent) {
    this.sortColumn = e.column;
    this.sortDirection = e.direction;
    // ordenar seus dados aqui (e.direction: 'asc' | 'desc' | '')
  }
}
```

**2.** No HTML, dentro do `<th>`:

```html
<th>
  Nome
  <ng-table-sort
    column="nome"
    label="Nome"
    activeColor="#1565c0"
    [activeColumn]="sortColumn"
    [activeDirection]="sortDirection"
    (sortChange)="onSort($event)">
  </ng-table-sort>
</th>
```

Para colunas numéricas, use `tipo="number"`.

**Cor quando ativo:** opcionalmente passe `activeColor` com um hexadecimal ou nome CSS (ex.: `activeColor="#1976d2"`). Se não passar, vale a cor definida no estilo padrão do componente (vermelho na classe `.nts-active`).

**Dica:** depois de cada `(sortChange)`, atualize `sortColumn` e `sortDirection` como no exemplo — assim o ícone e o estado ativo acompanham a coluna ordenada.

---

## Resumo rápido

| Entrada | Função |
|--------|--------|
| `column` | ID da coluna (obrigatório) |
| `label` | Texto do tooltip “Ordenar por …” |
| `tipo` | `'string'` (padrão) ou `'number'` |
| `activeColor` | Cor do ícone quando ativo (ex.: `#0d47a1`); opcional |
| `activeColumn` / `activeDirection` | Estado atual vindo do pai |
| `(sortChange)` | Evento com `{ column, direction }` |

Busca comum: *Angular sortable table header*, *npm table sort component*, *standalone sort icon th*.
npm package: @lucis/gatsby-transformer-pages-json
Description: Gatsby transformer plugin to turn a pages.json file into pages and menu configurations.
Author: Luciano Júnior
Latest version: 0.2.1

# gatsby-transformer-pages-json

Transforms JSON objects into `Page` and `Menu` data to be used in `gatsby-theme-lodge`

**WIP ALERT:** I'm still building this architecture and it **will** change overtime. The page creation is stil being done in the theme side but we will probably overcome this issue.

## Install

`yarn add gatsby-transformer-json-key-value-to-array`

## How to use

In your `gatsby-config.js`:

```javascript
module.exports = {
  plugins: [
    `gatsby-transformer-pages-json`,
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        path: `./i/data/`,
      },
    },
  ],
}
```
npm package: @lucitra/mcp-browser
Description: MCP server for browser automation via Playwright — navigate, click, type, screenshot, and inspect web pages.
Author: Lucitra
Latest version: 0.1.8

# @lucitra/mcp-browser

MCP server for browser automation via Playwright. Navigate, click, type, screenshot, and inspect web pages from any MCP client.

## Install

```bash
npm install @lucitra/mcp-browser
```

## Usage with Claude Code

Add to your Claude Code config (`~/.claude.json`):

```json
{
  "mcpServers": {
    "browser": {
      "type": "stdio",
      "command": "npx",
      "args": ["@lucitra/mcp-browser"]
    }
  }
}
```

## Usage as a Library

Import the tool registration functions to add browser tools to your own MCP server:

```typescript
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
import { registerAllTools } from '@lucitra/mcp-browser'

const server = new McpServer({ name: 'my-server', version: '1.0.0' })
registerAllTools(server)
```

## Available Tools

| Tool | Description |
|------|-------------|
| `web_screenshot` | Take a screenshot of a web page. Optionally navigate to a URL first. |
| `web_navigate` | Navigate the browser to a URL. Cookies and state persist across calls. |
| `web_click` | Click an element by CSS selector or visible text. |
| `web_type` | Type text into an input by CSS selector or placeholder. |
| `web_select` | Select an option from a `<select>` dropdown. |
| `web_wait` | Wait for an element or text to appear/disappear. |
| `web_get_info` | Get the current page URL, title, visible text, and links. |

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `CDP_PORT` | `9222` | Chrome DevTools Protocol port for connecting to an existing browser |
| `BROWSER_PROFILE` | `~/.mcp-browser/chrome-profile` | Path to persistent browser profile directory |
| `BROWSER_HEADLESS` | `true` | Set to `"false"` to launch in headed mode |
| `BROWSER_VIEWPORT_WIDTH` | `1280` | Browser viewport width |
| `BROWSER_VIEWPORT_HEIGHT` | `720` | Browser viewport height |

## Browser Connection Priority

1. **CDP** — Connects to an existing Chrome instance via DevTools Protocol (uses existing cookies/sessions)
2. **Persistent Profile** — Launches Chromium with a persistent user data directory
3. **Fresh Context** — Falls back to a fresh browser context if the profile is locked

## Prerequisites

Playwright needs a Chromium binary. On first run:

```bash
npx playwright install chromium
```

## License

MIT
npm package: @lucitra/mcp-desktop
Description: MCP server for macOS desktop automation — capture screenshots of the full screen or specific application windows.
Author: Lucitra
Latest version: 0.1.7

# @lucitra/mcp-desktop

MCP server for macOS desktop screenshots. Capture the full screen or a specific application window using the native `screencapture` command.

## Install

```bash
npm install @lucitra/mcp-desktop
```

## Usage with Claude Code

Add to your Claude Code config (`~/.claude.json`):

```json
{
  "mcpServers": {
    "desktop": {
      "type": "stdio",
      "command": "npx",
      "args": ["@lucitra/mcp-desktop"]
    }
  }
}
```

## Usage as a Library

Import the tool registration function to add the desktop screenshot tool to your own MCP server:

```typescript
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
import { registerDesktopScreenshotTool } from '@lucitra/mcp-desktop'

const server = new McpServer({ name: 'my-server', version: '1.0.0' })
registerDesktopScreenshotTool(server)
```

## Available Tools

| Tool | Description |
|------|-------------|
| `desktop_screenshot` | Capture a screenshot of the full desktop or a specific application window. |

### `desktop_screenshot` Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `app` | string | No | Name of an application to capture (e.g. `"Safari"`, `"Finder"`). Omit for full desktop. |

## Requirements

- **macOS only** — uses the native `screencapture` command
- **Screen Recording permission** — System Settings > Privacy & Security > Screen Recording must include your terminal/IDE

## License

MIT
npm package: @lucitra/paperclip-plugin-linear
Description: Paperclip plugin: bidirectional Linear issue sync with OAuth, webhooks, and import
Author: Lucitra
Latest version: 0.8.8

# paperclip-plugin-linear

Paperclip plugin for bidirectional Linear issue sync. Built by [Lucitra](https://lucitra.ai) for use with our [Paperclip fork](https://github.com/lucitra/paperclip).

> **Note:** This plugin provides agent-side tools (search, create, link). The server-side Linear integration (OAuth, import, webhooks, project sync) lives in the [Paperclip fork](https://github.com/lucitra/paperclip) at `server/src/routes/linear-auth.ts`. Both work together — the plugin handles per-issue linking while the server handles org-wide sync.

## Related

- [lucitra/paperclip](https://github.com/lucitra/paperclip) — Paperclip fork with Linear OAuth, import, webhook sync
- [lucitra/paperclip-plugin-chat](https://github.com/lucitra/paperclip-plugin-chat) — Chat interface plugin
- [@lucitra/paperclip-plugin-linear on npm](https://www.npmjs.com/package/@lucitra/paperclip-plugin-linear)

## Features

- **Link issues** — Connect Paperclip issues to Linear issues for bidirectional sync
- **Status sync** — Status changes propagate both directions (configurable: bidirectional, linear-to-paperclip, or paperclip-to-linear)
- **Comment bridging** — Comments sync between linked issues (opt-in)
- **Agent tools** — Agents can search, create, link, and unlink Linear issues
- **Webhook support** — Real-time updates from Linear via webhooks
- **Issue detail tab** — See linked Linear issue info directly in Paperclip UI

## Installation

```bash
# In your Paperclip instance
npx paperclipai plugin install paperclip-plugin-linear
```

## Configuration

In Paperclip Settings → Plugins → Linear Issue Sync:

1. Create a secret with your Linear API key (Settings → Secrets)
2. Set `linearTokenRef` to the secret's UUID
3. Set `teamId` to your Linear team ID
4. Optionally enable comment sync and choose sync direction

## Agent Tools

| Tool | Description |
|------|-------------|
| `search-linear-issues` | Search Linear issues by query |
| `create-linear-issue` | Create a new issue in Linear |
| `link-linear-issue` | Link a Linear issue to a Paperclip issue |
| `unlink-linear-issue` | Remove the sync link |

## Development

```bash
pnpm install
pnpm build      # Build TypeScript
pnpm typecheck  # Type check without emitting
pnpm dev        # Watch mode
```

## License

MIT
npm package: @lucius-ai/chat-widget
Description: Embeddable chat widget for Lucius AI customer support
Author: Lucius AI
Latest version: 0.0.31

# Lucius Chat Widget

Embeddable chat widget for Lucius AI customer support.

## Installation

### Option 1: Script Tag (Recommended for most users)

Add this to your HTML:

```html
<script
  src="https://unpkg.com/@anthropic-ai/lucius-chat-widget"
  data-widget-id="YOUR_WIDGET_ID"
></script>
```

### Option 2: npm (For React/Vue/Next.js projects)

```bash
npm install @anthropic-ai/lucius-chat-widget
```

```tsx
import { init } from "@anthropic-ai/lucius-chat-widget";

init({
  widgetId: "YOUR_WIDGET_ID",
});
```

## Configuration

| Attribute | Description | Default |
|-----------|-------------|---------|
| `data-widget-id` | Your Lucius widget ID (required) | - |
| `data-api-url` | Custom API base URL | `https://api.hirelucius.com` |
| `data-position` | Widget position: `left` or `right` | `right` |
| `data-primary-color` | Primary color (hex) | `#000000` |

### Example with all options

```html
<script
  src="https://unpkg.com/@anthropic-ai/lucius-chat-widget"
  data-widget-id="wgt_abc123"
  data-position="left"
  data-primary-color="#6366f1"
></script>
```

## Development

```bash
# Install dependencies
npm install

# Start dev server
npm run dev

# Build for production
npm run build
```

## License

MIT