open-index/open-npm huggingface dataset:
npm package: @plaidlabs/ui
Description: - Plaid React 디자인 시스템 UI 라이브러리입니다.   접근성과 일관성을 중심으로 여러 서비스에서 공통 사용하기 위해 설계되었습니다.  - **TypeScript**, **vanilla-extract**, **react-aria-components** 기반으로 구성되어 있습니다.
Latest version: 0.1.11

# @plaidlabs/ui

- Plaid React 디자인 시스템 UI 라이브러리입니다.  
접근성과 일관성을 중심으로 여러 서비스에서 공통 사용하기 위해 설계되었습니다. 
- **TypeScript**, **vanilla-extract**, **react-aria-components** 기반으로 구성되어 있습니다.

---

## 문서 (Storybook)

- [Storybook Docs](https://dsy.plaid.ai.kr/storybook)


---

## 설치

```bash
# npm
npm install @plaidlabs/ui

# pnpm
pnpm add @plaidlabs/ui

# yarn
yarn add @plaidlabs/ui
```

---

## 설정 (CSS) — 중요

이 라이브러리는 vanilla-extract로 생성된 CSS 번들(`style.css`)을 포함합니다.

- **기본 동작(권장)**: `@plaidlabs/ui`를 import 하면 패키지 엔트리에서 `style.css`가 함께 로드되도록 구성되어 있어, 보통 별도 설정 없이 스타일이 적용됩니다.
- **스타일이 적용되지 않는 경우**(특수한 번들러 설정 / 커스텀 빌드 파이프라인 / 강한 트리셰이킹 등)에는 앱 진입점에서 CSS를 1회 import 해주세요.

```tsx
// main.tsx / App.tsx / layout.tsx
import '@plaidlabs/ui/style.css';

```
⚠️ `@plaidlabs/ui/dist/style.css` 와 같은 deep import는  
패키지 `exports` 설정에 의해 동작하지 않을 수 있습니다.  
반드시 `@plaidlabs/ui/style.css` 를 사용해주세요.

---

## 사용법

```tsx
import { Button, Tab, Modal } from '@plaidlabs/ui';

export function Example() {
  return (
    <div style={{ padding: 20 }}>
      <Button variant="filled" color="blue">
        버튼
      </Button>

      <Modal.Trigger>
        <Button>모달 열기</Button>
        <Modal>
          <Modal.Title>제목</Modal.Title>
          <Modal.Content>내용</Modal.Content>
          <Modal.ButtonArea>
            <Button>닫기</Button>
          </Modal.ButtonArea>
        </Modal>
      </Modal.Trigger>

      <Tab
        aria-label="탭"
        defaultSelectedKey="menu1"
        items={[
          { id: 'menu1', label: '메뉴 1', content: '컨텐츠 1' },
          { id: 'menu2', label: '메뉴 2', content: '컨텐츠 2' },
        ]}
      />
    </div>
  );
}
```

---

## 요구사항

- **React**: \(^18.0.0 \|\| ^19.0.0\)
- **React DOM**: \(^18.0.0 \|\| ^19.0.0\)

---

## 제공 컴포넌트

패키지 엔트리에서 컴포넌트와 타입을 제공합니다.

 - Basic (폴더 이름순)
 `Avatar`, `BottomTab`, `Button`, `Checkbox`, `Chip`, `Close`, 
 `GuideText`, `Link`, `LnbItem`, `Loading`, `Notice`, 
 `PageHeader`, `Pagination`, `Stepper`, `Tab`, 
 `TextArea`, `TextField`, `Toggle`

 - Complex (폴더 이름순)
 `Dropdown`, `Modal`, `Popup`

---

## 라이선스

MIT
npm package: @plainbrew/figma-rest-api-spec
Description: OpenAPI specification for the Figma REST API
Latest version: 0.2.0

# @plainbrew/figma-rest-api-spec

[figma/rest-api-spec](https://github.com/figma/rest-api-spec) の fork です。

オリジナルの OpenAPI 仕様をベースに、リファクタリングや独自の修正・更新を加えたものをこのパッケージで管理します。

## オリジナル

- リポジトリ: https://github.com/figma/rest-api-spec
- npm: https://www.npmjs.com/package/@figma/rest-api-spec
npm package: @plainbrew/microcms-api-schema-schema
Description: microCMS の API スキーマを定義するためのスキーマライブラリ
Latest version: 0.0.3

# microcms-api-schema-schema

microCMS の API スキーマを定義するためのスキーマライブラリ

## 概要

このパッケージは、microCMS の API スキーマを TypeScript で型安全に定義し、Zod によるランタイムバリデーションを提供します。

## インストール

```bash
npm install -D @plainbrew/microcms-api-schema-schema
pnpm add -D @plainbrew/microcms-api-schema-schema
```

## 使い方

### JSON Schema としての利用

`$schema` プロパティで JSON Schema を参照することで、エディタの補完やバリデーションを有効にできます。

```json
{
  "$schema": "./node_modules/@plainbrew/microcms-api-schema-schema/schema.json",
  "apiFields": [
    {
      "fieldId": "title",
      "name": "タイトル",
      "kind": "text",
      "required": true
    },
    {
      "fieldId": "body",
      "name": "本文",
      "kind": "richEditorV2",
      "required": false
    },
    {
      "fieldId": "thumbnail",
      "name": "サムネイル",
      "kind": "media",
      "required": true,
      "imageSizeValidation": {
        "imageSize": {
          "width": 1200,
          "height": 630
        }
      }
    }
  ],
  "customFields": []
}
```

### サポートされるフィールドタイプ

| kind           | 説明               |
| -------------- | ------------------ |
| `text`         | テキストフィールド |
| `textArea`     | テキストエリア     |
| `richEditorV2` | リッチエディタ     |
| `richEditor`   | 旧リッチエディタ   |
| `media`        | 画像               |
| `mediaList`    | 複数画像           |
| `date`         | 日時               |
| `boolean`      | 真偽値             |
| `select`       | セレクトフィールド |
| `number`       | 数字               |
| `relation`     | コンテンツ参照     |
| `relationList` | 複数コンテンツ参照 |
| `iframe`       | 拡張フィールド     |

## 開発

```bash
# ビルド
pnpm build

# 開発モード（watch）
pnpm dev

# テスト
pnpm test
```
npm package: @plainbrew/next-typed-href
Description: Type-safe href generator for Next.js App Router
Latest version: 0.1.0

# @plainbrew/next-typed-href

Type-safe href generator for Next.js App Router.

## Install

```sh
pnpm add @plainbrew/next-typed-href
```

## Setup

Define your routes and params map, then create a `$href` function:

`lib/href.ts`:

```ts
import { defineTypedHref } from "@plainbrew/next-typed-href";
import type { AppRoutes, ParamsOf } from "@/../.next/types/routes";

type AppRouteParamsMap = { [Route in AppRoutes]: ParamsOf<Route> };

export const { $href } = defineTypedHref<AppRoutes, AppRouteParamsMap>();
```

## Usage

```ts
import { $href } from "@/lib/href";

// Static route
$href({ route: "/" });
// => "/"

// Dynamic segment
$href({ route: "/users/[id]", routeParams: { id: "42" } });
// => "/users/42"

// With search params
$href({ route: "/users", searchParams: { page: "2" } });
// => "/users?page=2"

// With hash
$href({ route: "/users/[id]", routeParams: { id: "1" }, hash: "profile" });
// => "/users/1#profile"

// Catch-all segment
$href({ route: "/posts/[...slug]", routeParams: { slug: ["2024", "hello"] } });
// => "/posts/2024/hello"
```

## Supported segment types

| Segment            | Example route       | `routeParams` type    |
| ------------------ | ------------------- | --------------------- |
| Dynamic            | `/users/[id]`       | `{ id: string }`      |
| Catch-all          | `/posts/[...slug]`  | `{ slug: string[] }`  |
| Optional catch-all | `/docs/[[...path]]` | `{ path?: string[] }` |

### Notes

- All param values are automatically URL-encoded.
- `searchParams` accepts anything that `URLSearchParams` accepts (plain object, array of pairs, or `URLSearchParams` instance).
- `hash` should be specified without the leading `#`.
- Optional catch-all segments (`[[...param]]`) resolve to an empty string when `undefined` is passed.
npm package: @plainbrew/vercel-basic-auth
Description: Basic Auth handler for Vercel Edge Middleware
Latest version: 0.2.0

# @plainbrew/vercel-basic-auth

Basic Auth handler for Vercel Edge Middleware.

## Install

```sh
pnpm add @plainbrew/vercel-basic-auth
```

## Usage

`proxy.ts`:

```ts
import { basicAuth } from "@plainbrew/vercel-basic-auth";
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";

export default async function proxy(request: NextRequest) {
  const basicAuthResponse = basicAuth(request, {
    username: process.env.BASIC_AUTH_USERNAME,
    password: process.env.BASIC_AUTH_PASSWORD,
    // vercelEnvTarget: "all", // Apply Basic Auth to all Vercel environments
    // dev: true, // Apply Basic Auth in local development
  });
  if (basicAuthResponse) return basicAuthResponse;

  return NextResponse.next();
}
```

## Options

| Option            | Type                  | Required | Default             | Description                                |
| ----------------- | --------------------- | -------- | ------------------- | ------------------------------------------ |
| `username`        | `string \| undefined` | ✓        |                     | Basic Auth username                        |
| `password`        | `string \| undefined` | ✓        |                     | Basic Auth password                        |
| `vercelEnvTarget` | `string`              |          | `'only-production'` | Vercel environments to apply Basic Auth    |
| `dev`             | `boolean`             |          | `false`             | Apply Basic Auth in `NODE_ENV=development` |

### `vercelEnvTarget`

| Value             | Behavior                                      |
| ----------------- | --------------------------------------------- |
| `only-production` | Apply Basic Auth to Vercel production only    |
| `all`             | Apply Basic Auth to all Vercel environments   |
| `disabled`        | Disable Basic Auth on all Vercel environments |

### Notes

- Basic Auth is only applied on Vercel (`VERCEL=1`) by default. Local development is skipped unless `dev: true`.
- `username` and `password` accept `undefined`, so `process.env.XXX` can be passed directly without type assertion.
- If `username` or `password` is `undefined` or an empty string when Basic Auth is actually applied, an error is thrown. This prevents accidentally bypassing Basic Auth due to missing credentials.
npm package: @plainconcepts/n8n-nodes-compactifai
Description: n8n community node for Compactifai API integration
Author: Rafael Caro
Latest version: 0.1.2

# @plainconcepts/n8n-nodes-compactifai

Use CompactifAi language models as an AI Model provider in n8n AI workflows.

This package provides one n8n community node:

- Multiverse CompactifAi (AI Language Model node)

[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

## Installation

Follow the official community nodes installation guide:

- [Install community nodes in n8n](https://docs.n8n.io/integrations/community-nodes/installation/)

Package name:

- `@plainconcepts/n8n-nodes-compactifai`

## What This Node Does

The Multiverse CompactifAi node is an AI Language Model node that:

- Authenticates against CompactifAi using a bearer access token
- Loads available models dynamically from `GET /v1/models`
- Exposes the selected model to downstream AI nodes in n8n
- Supports common generation controls:
	- Temperature
	- Maximum Tokens
	- Frequency Penalty

## Credentials

Credential type:

- Multiverse Compactifai API

Required field:

- Access Token

How to configure:

1. Create a CompactifAi access token.
2. In n8n, create a new credential of type Multiverse Compactifai API.
3. Paste your token into Access Token.
4. Save and use it in the node.

The credential test calls:

- `GET https://api.compactif.ai/v1/models`

## Usage

Typical AI workflow setup:

1. Add the Multiverse CompactifAi node.
2. Select your credential.
3. Pick a model from the list (or provide a model ID with an expression).
4. Optionally tune Temperature, Maximum Tokens, and Frequency Penalty.
5. Connect this node output to an AI node that expects an AI Language Model.

Notes:

- Maximum Tokens set to `-1` means no explicit max token limit is sent.
- If your model list is empty, verify token validity and API access first.

## Compatibility

- Built with n8n Nodes API version `1`
- Intended for n8n versions that support AI Language Model node connections

If you run into compatibility issues, open an issue in the repository with your n8n version.

## Development

Project scripts:

- `npm run build` - Build the node
- `npm run dev` - Start development mode
- `npm run lint` - Lint the code
- `npm run lint:fix` - Lint and auto-fix
- `npm run release` - Run release flow

## Resources

- [CompactifAi API documentation](https://docs.compactif.ai/api_reference/)
- [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
- [n8n node development docs](https://docs.n8n.io/integrations/creating-nodes/)

## Version History

### 0.1.0

- Initial release
- Added Multiverse CompactifAi AI Language Model node
- Added CompactifAi access token credential