open-index/open-npm huggingface dataset:
npm package: @freepi/core
Description: Core Library for FreePI package
Author: Alex Gaiser
Latest version: 3.0.1

# FreePI Core Library

## Description

The core library for FreePI. Contains logic that needs to be shared between packages.

### Installation

### How To Use
To install FreePI

```bash
$ npm install freepi
```

To install package individually, run the following in your terminal.

```bash
$ npm install @freepi/unsplash
```

## Features:

- RequestBuilder
- requests
- utils

## How To Use

To import the whole core library:

```javascript
import { core } from "freepi";

# OR

import core from "@freepi/core";

```

### requests

To use the requests library:

Import the request methods from the `requests` object

Available methods are:

- get
- post
- del
- put

All methods take two arguments: a url (or path) and a config object. The config object is where additional information like headers, data, or query parameters are passed.

**To use requests methods**

```typescript
import { requests } from '@freepi/core';

const { get, post, del, put } = requests;

const queryParams = {
  id: 100,
};

get<Todo>('https://my.site.com/api/todos', { params: queryParams });
// the request will return an Axios promise of the type specified
```

**To use customReqInit:**  
customReqInit allows use of request methods using a custom instance of axios
you can optionally pass a config object which will be used to create the custom axios instance.

```javascript
import { customReqInit } from '@freepi/core';

const requests = customReqInit({ baseURL: 'https://my.app.com' });
// all native methods available in the request library will
// now use the custom axios instance
requests.get('/path'); // will use baseURL set using config
```

## Bug Reports and Feedback

Any bug reports or feedback for this library should be directed to the github [issues page](https://github.com/AlexGaiser/freepi/issues)
npm package: @freepi/dinoipsum
Description: Dino Ipsum Library for freepi node package
Author: Ian Scott
Latest version: 3.0.2

# Dino Ipsum

## Description

This is a wrapper for the free Dino Ipsum API. "Dino Ipsum is a lorem ipsum for dinosaur lovers, and anyone who needs meaningless filler text for prototyping web pages."
Documentation for the API itself can be found [here](https://dinoipsum.herokuapp.com/).

### How To Use

The Dino Ipsum wrapper abstracts the Dino Ipsum API routes into an easy to use namespaced method. It uses Typescript, so parameters and return values are all defined by default.

## Installation

In your terminal run

```bash
$ npm install freepi

# OR

$ npm install @freepi/DinoIpsum

```

### Available Namespaces

Dino Ipsum has a single namespace, and uses a single method for retrieving placeholder Dino Ipsum text in three distinct formats:

- HTML
- JSON
- Text

You can access the namespace and its methods in the following manner:

```javascript
import { DinoIpsum } from 'freepi';

const dinoIpsum = new DinoIpsum();

// Example: retrieving Dino Ipsum with 
const result = dinoIpsum.getDinoIpsum();
const jsonDinoIpsum = result.data;
```

### Method Parameters

Dino Ipsum has a single method which can take up to three parameters in this order:

- Format: string
  * The only acceptable inputs are 'html', 'json', and 'text.' 
  * If any other strings are submitted, this parameter will default to 'json.'
  * Format strings are not case sensitive, so JSON, jSON, htmL, and tEXt are all acceptable inputs.

- Paragraphs: int
  * Defines the number of distinct paragraphs to be returned.
  * If this parameter is ommitted, Dino Ipsum will default paragraph count to 10.

- Words: int
  * Defines the number of words for each paragraph
  * If this parameter is omitted, Dino Ipsum will default paragraph word count to 30.

Parameters are not required as the wrapper and API will default to a JSON, 10 Paragraph, 30 Words format. Parameters are submitted in the following order: (format, paragraphs, words).

**Examples:**

```javascript
const dinoIpsum = new DinoIpsum();

const jsonResult = await dinoIpsum.getDinoIpsum();

// JSON, 10 paragraphs, 30 words per
const json = jsonResult.data;

const textResult = await dinoIpsum.getDinoIpsum('text');
const text = textResult.data;

// HTML, 1 paragraph, 4 words
const htmlResult = await dinoIpsum.getDinoIpsum('html', 1, 4);
```

## Bug Reports and Feedback

Any bug reports or feedback for this library should be directed to the github [issues page](https://github.com/AlexGaiser/freepi/issues)
npm package: @freepi/jsonplaceholder
Description: Core Library for FreePI package
Author: Alex Gaiser
Latest version: 3.0.1

# JSONPlaceholder API Wrapper

## Description

This is a wrapper for the free JSON Placeholder API. The JSON Placeholder API exists to provide rapid access to dummy JSON data.
Documentation for the API itself can be found [here](https://jsonplaceholder.typicode.com/).

### How To Use

The JSONPlaceholder wrapper abstracts the specific paths for the JSON Placeholder API into easy to use, namespaced methods. It uses Typescript, so parameters and return values are all defined by defualt.

## Installation

In your terminal run

```bash
$ npm install freepi

# OR

$ npm install @freepi/jsonplaceholder

```

## How To Use

To use the JSONPlaceholder wrapper, import it into your file from either the freepi library or the standalone JSONPlaceholder package.

```javascript
import { JSONPlaceholder } from 'freepi';

// OR

import JSONPlaceholder from '@freepi/jsonplaceholder';

const jsonPlaceholder = new JSONPlaceholder();
```

### Available Namespaces

JSONPlaceholder has a number of namespaces for each portion of the API. Each one has methods available to it for interacting with that portion of the UI.

- todos
- posts
- comments
- users
- albums
- photos

You can access a namespace and its methods in the following manner:

```javascript
import { JSONPlaceholder } from 'freepi';

const jsonPlaceholder = new JSONPlaceholder();

// Example: retrieving all todo items
const todos = await jsonPlaceholder.todos.findAll();
```

### Available Methods

Every namespace has the following methods available to it:

- `find`: Searches the namespace for a value that matches search parameters,
- `findAll`: Gets all values in the namespace,
- `getById`: Retrieves a value in the namespace by its id,
- `create`: Makes a POST request to the API (JSONPlaceholder imitates a POST request without creating new data),
- `findNested`: Retrieve values using the nested url paths available to the API,

**Examples:**

```javascript
// find a todo by title
const res = await jsonPlaceholder.todos.find({
  title: 'quo adipisci enim quam ut ab',
});

// Get all post items
const res = await jsonPlaceholder.posts.findAll();

// get a user by id
const res = await jsonPlaceholder.users.getById(1);

// Create a new user
const newUser: User = {
  id: 97,
  name: 'Ian Scott',
  username: 'Uber_Scott',
  email: 'IanIsDaBest@CoolIan.net',
  address: {
    street: 'Apple St',
    suite: 'Suite 333',
    city: 'Nagasaki',
    zipcode: '716-239',
    geo: {
      lat: '65.9817',
      lng: '27.0012',
    },
  },
  phone: '(123)456-7890',
  website: 'IanIsCool.io',
  company: {
    name: 'Green Is Best',
    catchPhrase: 'Waaagh!',
    bs: 'What is bs?',
  },
};

const res = await jsonPlaceholder.users.create(newUser);

// find a nested todo
const res = await jsonPlaceholder.todos.findNested(
  'posts',
  1,
  'comments',
)();
```

## Bug Reports and Feedback

Any bug reports or feedback for this library should be directed to the github [issues page](https://github.com/AlexGaiser/freepi/issues)
npm package: @freeradical/sdk
Description: Official TypeScript SDK for FreeRadical CMS
Author: FreeRadical Team
Latest version: 0.7.1

# @freeradical/sdk

Official TypeScript/JavaScript SDK for FreeRadical CMS

## Installation

```bash
npm install @freeradical/sdk
# or
yarn add @freeradical/sdk
```

## Quick Start

```typescript
import FreeRadicalClient from '@freeradical/sdk';

const client = new FreeRadicalClient({
  baseUrl: 'https://your-cms.com',
  jwt: 'your-jwt-token' // or apiKey
});

// Get all pages
const pages = await client.getPages();

// Create a page
const newPage = await client.createPage({
  page_title: 'My Page',
  page_url: '/my-page',
  content: '<h1>Hello World</h1>'
});

// Search
const results = await client.search('query', ['pages', 'modules']);
```

## API Reference

### Pages

```typescript
// List pages
client.getPages(options?: { page?: number, per_page?: number })

// Get single page
client.getPage(uuid: string)

// Create page
client.createPage(input: CreatePageInput)

// Update page
client.updatePage(uuid: string, input: UpdatePageInput)

// Delete page
client.deletePage(uuid: string)
```

### Modules

```typescript
// List modules
client.getModules(pageUuid?: string)

// Get module
client.getModule(uuid: string)

// Create module
client.createModule(input: Partial<Module>)

// Update module
client.updateModule(uuid: string, input: Partial<Module>)

// Delete module
client.deleteModule(uuid: string)
```

### Media

```typescript
// List media
client.getMedia(options?: PaginationOptions)

// Upload media
client.uploadMedia(file: File | Buffer, filename?: string)

// Delete media
client.deleteMedia(uuid: string)
```

### Search

```typescript
// Search across resources
client.search(query: string, resources?: string[])
```

### Webhooks

```typescript
// List webhooks
client.getWebhooks()

// Create webhook
client.createWebhook(input: Webhook)

// Update webhook
client.updateWebhook(id: number, input: Partial<Webhook>)

// Delete webhook
client.deleteWebhook(id: number)

// Test webhook
client.testWebhook(id: number)
```

### Relationships

```typescript
// Create relationship
client.createRelationship(input: Relationship)

// Get related content
client.getRelated(resourceType: string, resourceId: string)

// Delete relationship
client.deleteRelationship(id: number)
```

### Monitoring

```typescript
// Health check
client.getHealth()

// Metrics
client.getMetrics()
```

## TypeScript Support

Full TypeScript support with complete type definitions:

```typescript
import FreeRadicalClient, { Page, CreatePageInput } from '@freeradical/sdk';

const client = new FreeRadicalClient({ baseUrl: '...' });

const page: Page = await client.getPage('uuid');
const input: CreatePageInput = {
  page_title: 'Title',
  page_url: '/url'
};
```

## Error Handling

```typescript
try {
  const page = await client.getPage('invalid-uuid');
} catch (error) {
  console.error('Error:', error.message);
}
```

## License

MIT
npm package: @freeridemn/ui
Description: Freeride MN design system and library
Latest version: 0.0.1

# Freeride MN UI Library

Component library for Freeride MN, powered by [Panda](https://panda-css.com/) and [Ark](https://ark-ui.com/).

---

## License

The code in this repository is licensed under MIT, © Freeride MN LLC. See LICENSE.md for more information.
npm package: @freeriver/sdk
Description: 🛠 An SDK for building applications on top of Uniswap.
Latest version: 3.0.22

# Uniswap SDK

[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![Actions Status](https://github.com/Uniswap/uniswap-sdk/workflows/CI/badge.svg)](https://github.com/Uniswap/uniswap-sdk)
[![npm version](https://img.shields.io/npm/v/@uniswap/sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/Uniswap/uniswap-sdk.git
```

Move into the uniswap-sdk working directory

```sh
cd uniswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @freeriver/uikit
Description: Set of UI components for Freeriver projects
Latest version: 0.10.8

# 🥞 Pancake UIkit

[![Version](https://img.shields.io/npm/v/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit) [![Size](https://img.shields.io/bundlephobia/min/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit)

Pancake UIkit is a set of React components and hooks used to build pages on Pancake's apps. It also contains a theme file for dark and light mode.

## Install

`yarn add @pancakeswap-libs/uikit`

## Setup

### Theme

Before using Pancake UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@pancakeswap-libs/uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@pancakeswap-libs/uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://pancakeswap.github.io/pancake-uikit/)
npm package: @freesail-community/weather-catalog
Description: All community built UI component catalogs for Freesail A2UI SDK
Author: Thendral AI Ltd
Latest version: 0.7.0

# Weather Catalog

Weather-specific UI components for displaying forecasts, conditions, and alerts

## Getting Started

```bash
npm install
npm run build
```

## Project Structure

```
src/
  weather-catalog.json      # Generated catalog (do not edit manually)
  index.ts                  # Catalog entry point
  includes/
    catalog.include.json    # Declare which packages to import from
    generated-includes.ts   # Auto-generated bridge (do not edit)
  components/
    components.json         # Component schemas
    components.tsx          # React implementations
  functions/
    functions.json          # Function schemas
    functions.ts            # Function implementations
```

## Importing from a Catalog Package

To pull components and functions from an installed catalog package:

```bash
npx freesail include catalog --package @freesail/standard-catalog
```

## Adding Components

1. Define the component schema in `src/components/components.json`.
2. Implement the React component in `src/components/components.tsx`.
3. Run `npx freesail prepare catalog` to regenerate the catalog.

## Adding Functions

1. Define the function schema in `src/functions/functions.json`.
2. Implement the function in `src/functions/functions.ts`.
3. Run `npx freesail prepare catalog` to regenerate the catalog.

## Build Pipeline

| Command | Description |
| --- | --- |
| `npx freesail prepare catalog` | Merge schemas and generate `weather-catalog.json` |
| `npx freesail validate catalog` | Validate implementations match the catalog schema |
| `npx freesail include catalog --package <name>` | Include components/functions from a catalog package |
| `npm run build` | Compile TypeScript (runs prepare + validate automatically) |
| `npm run dev` | Watch mode for development |
| `npm run clean` | Remove build artifacts |

## Registering the Catalog

In your application entry point:

```tsx
import { FreesailProvider } from '@freesail/react';
import { WeatherCatalog } from '@freesail-community/weathercatalog';

function App() {
  return (
    <FreesailProvider
      gateway="/api"
      catalogs={[WeatherCatalog]}
    >
      {/* your app */}
    </FreesailProvider>
  );
}
```

## License

MIT — see [LICENSE](./LICENSE)
npm package: @freesail/standard-catalog
Description: Freesail Standard UI Component Catalog
Author: Thendral AI Ltd
Latest version: 0.7.0

# @freesail/standard-catalog

Freesail Standard UI Component Catalog — a collection of ready-to-use components and functions for building agent-driven UIs with Freesail.

## Components

| Component | Description |
|-----------|-------------|
| `Column` | Vertical flex container |
| `Row` | Horizontal flex container |
| `Card` | Surfaced container with border and shadow |
| `Text` | Text display with variant support (body, label, heading, etc.) |
| `Icon` | Material Symbols icon (font auto-injected) |
| `Button` | Clickable button with action support |
| `TextField` | Single or multi-line text input |
| `DateTimeInput` | Date and/or time picker |
| `ChoicePickerSingleSelect` | Single-select option list |
| `ChoicePickerMultiSelect` | Multi-select option list |
| `Dropdown` | Dropdown select input |
| `CheckBox` | Checkbox input |
| `Spacer` | Flexible spacing element |
| `Divider` | Horizontal rule |
| `Modal` | Overlay dialog |
| `GridLayout` | Fixed-column grid container |
| `List` | Scrollable list of items |
| `Tab` / `TabGroup` | Tabbed navigation |
| `Image` | Image display |
| `Video` | Video player |
| `AudioPlayer` | Audio player |
| `Slider` | Range slider input |
| `Markdown` | Renders Markdown content |
| `BarChart` | Bar chart |
| `LineChart` | Line chart |
| `PieChart` | Pie/donut chart |
| `Sparkline` | Inline sparkline chart |
| `StatCard` | KPI stat display card |

## Functions

| Function | Description |
|----------|-------------|
| `formatString` | String formatting with `${...}` interpolation and positional `{0}`, `{1}` placeholders |

## Setup

### Icon component

The `Icon` component uses [Material Symbols Outlined](https://fonts.google.com/icons) rendered via CSS font ligatures. The font stylesheet is automatically injected into `<head>` on first render — no manual setup required.

Icon names are passed in camelCase and converted to the correct ligature name automatically:

```json
{ "component": "Icon", "id": "icon1", "name": "home" }
{ "component": "Icon", "id": "icon2", "name": "arrowBack", "size": "32px" }
{ "component": "Icon", "id": "icon3", "name": "favorite", "color": "error" }
```

### Markdown component — bundled dependency

The `Markdown` component uses [`react-markdown`](https://github.com/remarkjs/react-markdown), which is bundled as a dependency of this package. No additional setup is required.

## License

MIT — see [LICENSE](./LICENSE)

Third-party attributions — see [3rdpartylicenses.txt](./3rdpartylicenses.txt)
npm package: @freeseller/wappler-server-data
Description: Wappler App Connect server-side rendered JSON data component.
Author: Vladimir Busov
Latest version: 0.3.0

# @freeseller/wappler-server-data

Wappler App Connect component for exposing server-side rendered JSON to App Connect as `component.data`.

## Component

Use the component in your page markup like this:

`<dmx-server-data id="serverData"><script type="application/json"><%- JSON.stringify(typeof server_data !== 'undefined' ? server_data : null) %></script></dmx-server-data>`

Then access the data in App Connect as:

- `serverData.data`
- `serverData.data.uuid`
- `serverData.data.title`

## Included files

- `app_connect/components.hjson`
- `includes/dmx-server-data.js`

## Publish

Package name:

`@freeseller/wappler-server-data`

## Notes

This component reads JSON only from an embedded `script[type="application/json"]` block.
npm package: @freesewing/antman
Description: The ant-man test; Body measurement to torture/test your freesewing patterns with
Author: Joost De Cock
Latest version: 0.3.0

<p align="center">
  <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
</p>
<h4 align="center"><em>&nbsp;<a title="Go to freesewing.org" href="https://freesewing.org/">freesewing</a></em>
<br><sup>a library for made-to-measure sewing patterns</sup>
</h4>

# Ant-man test
The ant-man test; Body measurement to torture/test your freesewing patterns with. 

## About

When designing patterns for freesewing, you should refrain from using
absolute values. 

That 6cm ease you add might be fine for all scenarios you tested, but
then somebody comes around who is twice your size, or who is making clothes 
for a doll, and things will go off the rails.

That's why we put our patterns through the ant-man test. 
We sample the pattern for 2 models:

 - A model with measurements of avarage person (the man)
 - A model with measurements 1/10th of an average person (the ant)

A well-designed pattern will scale a factor 10 down and hold its shape.  
If a pattern makes assumptions about size, this test will show that.

## Install

npm install --save @freesewing/antmantest

## Usage

In node.js:

```js
import models from @freesewing/antmantest
```

Then sample your pattern with these:

```js
pattern.sampleModels(freesewing.models);
```

In the browser, this will register as `freesewing.antmantest`:

```html
<script type="text/javascript" src="https://unpkg.com/freesewing"></script>
<script type="text/javascript" src="https://unpkg.com/@freesewing/antmantest"></script>
<script type="text/javascript" src="https://unpkg.com/@freesewing/pattern-brian"></script>

<script>
var pattern = freesewing.patterns.brian;
pattern.sampleModels(freesewing.antmantest);
</script>
```

## Build

To build this, run:

```sh
npm run build
```

## License: MIT

See [the license file](https://github.com/freesewing/plugin-theme/blob/master/LICENSE)
for details.
npm package: @freesewing/antmantest
Description: The ant-man test; Body measurement to torture/test your freesewing patterns with
Author: Joost De Cock
Latest version: 0.1.0

<p align="center">
  <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
</p>
<h4 align="center"><em>&nbsp;<a title="Go to freesewing.org" href="https://freesewing.org/">freesewing</a></em>
<br><sup>a library for made-to-measure sewing patterns</sup>
</h4>

# Ant-man test
The ant-man test; Body measurement to torture/test your freesewing patterns with. 

## About

When designing patterns for freesewing, you should refrain from using
absolute values. 

That 6cm ease you add might be fine for all scenarios you tested, but
then somebody comes around who is twice your size, or who is making clothes 
for a doll, and things will go off the rails.

That's why we put our patterns through the ant-man test. 
We sample the pattern for 2 models:

 - A model with measurements of avarage person (the man)
 - A model with measurements 1/10th of an average person (the ant)

If well-designed pattern will scale a factor 10 down and hold its shape.

## Install

npm install --save @freesewing/antmantest

## Usage

In node.js:

```js
import models from @freesewing/antmantest
```

Then sample your pattern with these:

```js
pattern.sampleModels(freesewing.models);
```

In the browser, this will register as `freesewing.antmantest`:

```html
<script type="text/javascript" src="https://unpkg.com/freesewing"></script>
<script type="text/javascript" src="https://unpkg.com/@freesewing/antmantest"></script>
<script type="text/javascript" src="https://unpkg.com/@freesewing/pattern-brian"></script>

<script>
var pattern = freesewing.patterns.brian;
pattern.sampleModels(freesewing.antmantest);
</script>
```

## Build

To build this, run:

```sh
npm run build
```

## License: MIT

See [the license file](https://github.com/freesewing/plugin-theme/blob/master/LICENSE)
for details.
npm package: @freesewing/backend
Description: The freesewing.org backend
Author: Joost De Cock
Latest version: 0.1.0

<p align="center">
  <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
</p>
<h4 align="center"><em>&nbsp;<a title="Go to freesewing.org" href="https://freesewing.org/">freesewing</a></em>
<br><sup>a library for made-to-measure sewing patterns</sup>
</h4>
<p align="center">
  <a href="https://gitter.im/freesewing/freesewing"><img src="https://badgen.net/badge/chat/on%20Gitter/cyan" alt="Chat on Gitter"></a>
  <a href="https://freesewing.org/patrons/join"><img src="https://badgen.net/badge/become/a%20Patron/FF5B77" alt="Become a Patron"></a>
</p>

# Freesewing backend

[Freesewing](https://freesewing.org/) is an open source platform for made-to-measure sewing pattern.  
This is our backend API.

## Links

 - 💻 Website: [freesewing.org](https://freesewing.org)
 - 💬 Chat: [Gitter](https://gitter.im/freesewing/freesewing)
 - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
 - 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
 
## Getting started

This is a REST API built with Express, and currently a work in progress.

If you have questions, please join [our chatroom](https://gitter.im/freesewing/freesewing).
npm package: @freesewing/bezier-js
Description: A javascript library for working with Bezier curves
Author: Pomax
Latest version: 2.4.5-beta.0

> ## NOTE: This is a temporary fork
>
> This version of bezier-js is a fork of [the original](https://github.com/Pomax/bezierjs) to
> incorporate a fix for [an issue with offsets](https://github.com/Pomax/bezierjs/issues/102) for
> which a PR was submitted but no new release has been published that incorporates that fix.
>
> This version does. As soon as an upstream version that includes the same fix is published,
> this fork will be discontinued.

# Bezier.js

A node.js and client-side library for (quadratic and cubic) Bezier curve work.

For a Demo and the API, hit up either [pomax.github.io/bezierjs](http://pomax.github.io/bezierjs)
or read the souce (`./lib` for the library code, start at `index.js`).

## Installation

`npm install bezier-js` will add bezier.js to your dependencies, remember to add `--save` or `--save-dev` if you need that to be persistent of course.

## Use

`var Bezier = require('bezier-js')` and off you go.

## Use in the browser

Load the toplevel `bezier.js` the same way you would any other browser script, using a `<script src="..."></script>` declaration.

## Working on the code

To test new code, use `npm test`.

To build the library, use `npm run build`.

## License

This code is MIT licensed.

## Engagement

For comments and questions, [tweet at me](https://twitter.com/TheRealPomax) or file an issue.
npm package: @freesewing/bin-pack-with-constraints
Description: A packing algorithm for 2D bin packing that allows setting a max width or height. Largely based on code and a blog post by Jake Gordon and Bryan Burgers.
Author: FreeSewing
Latest version: 2.0.1
Deprecated: This is deprecated as this functionality is now part of @freesewing/core-plugins

# DEPRECATED

- The FreeSewing core library now allows plugins to provide their own packing implemntation.
- The `@freesewing/plugin-bin-pack` package provides the default packing that was previously in core
- That plugin is part of the core plugins

So everything works as before, but you can now (if you want) override the packing method.

This package/repo is deprecated and should not be used.
npm package: @freesewing/macro-cutonfold
Description: A freesewing macro to add cut-on-fold indicators on your patterns
Author: Joost De Cock
Latest version: 0.8.0

<p align="center">
  <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
</p>
<h4 align="center"><em>&nbsp;<a title="Go to freesewing.org" href="https://freesewing.org/">freesewing</a></em>
<br><sup>a library for made-to-measure sewing patterns</sup>
</h4>

# macro-cutonfold

A freesewing macro to add cut-on-fold indicators to your patterns.

## Install

On node.js:

```sh
npm install @freesewing/macro-cutonfold
```

in the browser, simply include this script:

```html
<script type="text/javascript" src="https://unpkg.com/@freesewing/macro-cutonfold"></script>
```

## Loading this macro

To load this macro, add it to your instantiated pattern.

On node.js:

```js
import pattern from '@freesewing/pattern-brian'
import cutonfold from '@freesewing/macro-cutonfold'

pattern.with(cutonfold);
```

In the browser, this macro will register as `freesewing.macros.cutonfold` and
loaded by patterns from there.

```html
<script type="text/javascript" src="https://unpkg.com/freesewing"></script>
<script type="text/javascript" src="https://unpkg.com/@freesewing/macro-cutonfold"></script>
<script type="text/javascript" src="https://unpkg.com/@freesewing/pattern-brian"></script>

<script>
var pattern = freesewing.patterns.brian;
</script>
```

## Usage

This provides the `cutonfold` macro.

> The macro method is available from the `shorthand()` method on an instantiated pattern part.

```js
macro('cutonfold', {
  from: points.cbNeck
  , to: points.cbHips
});
  ```

### Parameters

 - `to`: A point object at the start of the cut-on-fold indicator
 - `from`: A point object at the end of the cut-on-fold indicator
        
As all freesewing macros, bundle these parameters into a single object.

## Example

![Example of the output provided by this macro](https://github.com/freesewing/macro-cutonfold/raw/master/img/example.png)


## Build

To build this macro, run:

```sh
npm run build
```

## License: MIT

See [the license file](https://github.com/freesewing/macro-cutonfold/blob/master/LICENSE)
for details.
npm package: @freesewing/material-style
Description: Freesewing style for material design React components
Author: Joost De Cock
Latest version: 0.4.3

<p align="center">
  <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
</p>
<h4 align="center"><em>&nbsp;<a title="Go to freesewing.org" href="https://freesewing.org/">freesewing</a></em>
<br><sup>a library for made-to-measure sewing patterns</sup>
</h4>
<p align="center">
  <a href="https://www.npmjs.com/package/@freesewing/material-style"><img src="https://badgen.net/npm/v/@freesewing/material-style" alt="Version"></a>
  <a href="https://www.npmjs.com/package/@freesewing/material-style"><img src="https://badgen.net/npm/license/@freesewing/material-style" alt="License"></a>
  <a href="https://gitter.im/freesewing/freesewing"><img src="https://badgen.net/badge/chat/on%20Gitter/cyan" alt="Chat on Gitter"></a>
  <a href="https://freesewing.org/patrons/join"><img src="https://badgen.net/badge/become/a%20Patron/FF5B77" alt="Become a Patron"></a>
</p>

# material-style

The is the CSS from [Material Kit React](https://www.creative-tim.com/product/material-kit-react),
a style kit for [material-ui](https://github.com/mui-org/material-ui), which in turn is a collection
of [React](https://reactjs.org/) components that implement Google's 
[material design](https://material.io/).

We use these components in our React-based frontend projects (a work-in-progress), and we've
put this CSS in its own repository to avoid code duplication.

## Changes to the original material kit

This CSS has very little changes in comparison to the upstream code, but there
are a few. Specifically:

 - We use a native font stack, rather than Roboto
 
## Usage

We publish a javascript file that wraps the CSS into an exported variable, 
but we also publish the style.ccs file with just the style.

This way, you can either load the style in JavaScript:

```js
import style from '@freesewing/material-style'
```

Or include it in your pages from unpkg:

```html
<link href="https://unpkg.com/@freesewing/material-style" rel="stylesheet">
```

## Install

To install, run:

```sh
npm install @freesewing/material-style
```

## Build

After making changes, run:

```sh
npm run build
```

## License: MIT

See [the license file](https://github.com/freesewing/plugin-theme/blob/master/LICENSE)
for details.
npm package: @freesewing/plugin-template
Description: A template to jump-start your own freesewing plugin
Author: Joost De Cock
Latest version: 0.2.0

<p align="center">
  <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
</p>
<h4 align="center"><em>&nbsp;<a title="Go to freesewing.org" href="https://freesewing.org/">freesewing</a></em>
<br><sup>a library for made-to-measure sewing patterns</sup>
</h4>
<p align="center">
  <a href="https://travis-ci.org/freesewing/plugin-template"><img src="https://badgen.net/travis/freesewing/plugin-template/master" alt="Travis build"></a>
  <a href="https://www.npmjs.com/package/@freesewing/plugin-template"><img src="https://badgen.net/npm/v/@freesewing/plugin-template" alt="Version"></a>
  <a href="https://www.npmjs.com/package/@freesewing/plugin-template"><img src="https://badgen.net/npm/license/@freesewing/plugin-template" alt="License"></a>
  <a href="https://codecov.io/gh/freesewing/plugin-template"><img src="https://badgen.net/codecov/c/github/freesewing/plugin-template/master" alt="Code coverage"></a>
  <a href="https://deepscan.io/dashboard#view=project&pid=3269&bid=27576"><img src="https://deepscan.io/api/projects/3269/branches/27576/badge/grade.svg" alt="DeepScan grade"></a>
  <a href="https://gitter.im/freesewing/freesewing"><img src="https://badgen.net/badge/chat/on%20Gitter/cyan" alt="Chat on Gitter"></a>
  <a href="https://freesewing.org/patrons/join"><img src="https://badgen.net/badge/become/a%20Patron/FF5B77" alt="Become a Patron"></a>
</p>

# plugin-template

All the boilerplate you need to jump-start your freesewing plugin.

You can checkout or fork this repository to start building your own freesewing plugin.

## Getting stared

First, clone this repository and `cd` into it:

```sh
git clone git@github.com:freesewing/plugin-template.git
cd plugin-template
```

Then install all dependencies:

```sh
npm install
```

## Writing your plugin

You can now start adding your code to `src/index.js`. To build your code, run:

```sh
npm run build
```

Check [the documentation](https://developer.freesewing.org/extend/) or 
[the list of freesewing plugins](https://developer.freesewing.org/plugins/)
for more info.

## Publishing your plugin

When you are getting somewhere, and you're thinking about publishing your own plugin,
you'll want to update the following fields in your package.json file:

 - name
 - version
 - description
 - author
 - homepage
 - repository
 - bugs
 - keywords

Basically, search for **template** and replace it with your plugin name.

## Where to get help

Questions? Stuck? The [freesewing chat room on Gitter](https://gitter.im/freesewing/freesewing)
is the best place to ask for help.
npm package: @freesewing/template
Description: Freesewing pattern for template
Author: Joost De Cock
Latest version: 0.3.7

<p align="center">
  <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
</p>
<h4 align="center"><em>&nbsp;<a title="Go to freesewing.org" href="https://freesewing.org/">freesewing</a></em>
<br><sup>a library for made-to-measure sewing patterns</sup>
</h4>

# freesewing pattern template

This repository contains all the boilerplate to jump-start your freesewing pattern.

It contains:

 - A config file with some options and measurements as example
 - Code structure with two example pattern parts
 - An index HTML file that you can open in your browser to see your progress
 - A package.json file with all the scripts to build/lint/publish your work
 - A rollup configuration that will transpile your code for Node.js, the browser, and as an ES6 module
 - Comes preloaded with the freesewing plugin bundle
 - Your HTML preview also loads the theme, designer, validate, and debug plugins
 - Comes with both models and antman to test your patterns with

## Prerquisites

You need [Node](https://nodejs.org/), the JavaScript runtime. 
Depending on your operating system, node may already be installed, 
or you can [download node here](https://nodejs.org/en/download/).

With node setup, you'll also need [rollup.js](https://rollupjs.org/), 
and [nodemon](https://nodemon.io/).

Rollup is the bundler that will package your code. Nodemon will help your 
development by rebuilding your code when you make changes.

If you already have these installed, carry on. If not, install them:

```
npm install -g rollup nodemon
```

## Getting started

Simply fork this repository, or download a local copy.
Then, in its root directory run:

```
npm install
```

This will install all dependencies. When you're done, you can run:

```js
npm run build
```

Which will build the code for all targets.

You can open the index.html file in your browser, and it will show your pattern.

## Configuration

To make this pattern your own, all you have to do is pick a name. 
Then, change **template** into your own name in both the config file
and package.json.

## Development

The source code is in the src directory. You can make changes and check your 
progress in your browser. 

Make sure to keep the browser console open, as the debug plugin will provide you
with extra info there. This pattern also comes with the designer plugin that will
log info to the console when you hover over a point.

While developing, you can speed up your build by running:

```js
npm run browserbuild
```

As this will only run the build for the browser.

## Getting help

If you have any questions, help is available.
The [freesewing developer documentation](FIXME) is a good place to start.

Or, [join our chat room on Gitter](https://gitter.im/freesewing/freesewing),
the best place to ask questions.
npm package: @freesewing/theme-default
Description: The default theme for freesewing
Author: Joost De Cock
Latest version: 0.1.0

<p align="center">
  <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
</p>
<h4 align="center"><em>&nbsp;<a title="Go to freesewing.org" href="https://freesewing.org/">freesewing</a></em>
<br><sup>a library for made-to-measure sewing patterns</sup>
</h4>

# theme-default

Freesewing generates patterns in SVG. They do not include any styling, so to make your patterns look pretty, you're going to need a theme.
This is the default theme that ships with [the freesewing library](https://github.com/freesewing/freesewing) (as a dependency) and is used on freesewing.org.
npm package: @freesewing/theme-designer
Description: The designer theme for freesewing
Author: Joost De Cock
Latest version: 0.3.0

<p align="center">
  <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
</p>
<h4 align="center"><em>&nbsp;<a title="Go to freesewing.org" href="https://freesewing.org/">freesewing</a></em>
<br><sup>a library for made-to-measure sewing patterns</sup>
</h4>
<h1 align="center">theme-designer</h1>
<p align="center">The designer theme for freesewing.</p>

## About
Freesewing generates patterns in SVG. They do not include any styling, so to make your patterns look pretty, you're going to need a theme.

The default theme that ships with [the freesewing library](https://github.com/freesewing/freesewing) styles patterns for print and online viewing.

This designer theme is no replacement for that, but rather adds information to your pattern
that will facilitate your work as a pattern designer.