open-index/open-npm huggingface dataset:
npm package: @kittleb/react-nested-list
Description: A common nested list that builds from json data.
Author: Bret Kittle
Latest version: 1.0.2

# react-nested-list
A common nested list for ReactJS that builds from a JSON file

This is currently a work in progress and does not build.

## Installation
```sh
npm install --save @kittleb/react-nested-list
```

## Usage
After installing and importing the script, place the following div in your html page: <div id="react-nested-list" />

## Props

| Prop                | Type                      | Required                          | Description |
| :-----------------  | :----------------         | :-------------------------------: | :---------- |
| data                | _array\<object>_          | &#x2713;                          | Array of data |

## License
MIT
npm package: @kittlekit/crud-core
Description: Core contracts and config helpers for Kittlekit CRUD packages
Latest version: 0.1.1

# @kittlekit/crud-core

[![npm version](https://img.shields.io/npm/v/@kittlekit/crud-core.svg)](https://www.npmjs.com/package/@kittlekit/crud-core)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Core contracts and config helpers for the Kittlekit CRUD package family.

## What This Package Is

Use this package when you want a framework-agnostic CRUD contract layer.

It provides:

- CRUD option/config types
- access, validation, audit, cache, event, and diff adapter contracts
- normalized helper functions for OpenAPI, access, audit, and route toggles

This package does not register routes and does not talk to a database directly.

## Install

```bash
npm install @kittlekit/crud-core
```

## Main Exports

### Core config types

- `CrudOptions`
- `CrudAccessConfig`
- `CrudRoutesConfig`
- `CrudValidation`
- `CrudRateLimit`
- `CrudOpenApi`
- `CrudAuditConfig`
- `EventConfig`

### Adapter contracts

- `CrudAuthAdapter`
- `CrudValidationAdapter`
- `CrudAuditAdapter`
- `CrudEventBusAdapter`
- `CrudCacheReadAdapter`
- `CrudCacheKeyAdapter`
- `CrudDiffAdapter`
- `CrudMutationCacheInvalidationAdapter`

### Helpers

- `buildCrudOpenApiMeta`
- `getCrudAuditConfig`
- `getCrudAccessConfig`
- `getCrudRoutesConfig`

## Package Relationship

```text
crud-core -> crud-fastify
         -> crud-express
         -> crud-drizzle-mysql
         -> crud-drizzle-postgres
```

## Why This Split Exists

This package is what makes it possible to:

- reuse the same CRUD config model in Fastify and Express
- reuse the same CRUD lifecycle contracts across MySQL and Postgres
- keep cache/audit/event/auth integrations host-controlled instead of hardwired

## Out of Scope

- route registration
- SQL execution
- framework middleware binding
- app-specific auth/session logic

## Publish

```bash
npm run build --workspace @kittlekit/crud-core
npm publish --workspace @kittlekit/crud-core --access public
```

## Examples

- smoke setup: `sandbox/crud-smoke`
- server wrapper reference: `server/src/core/crudFactory.helpers.ts`

## Release Notes

### 0.1.0

- first public extraction of CRUD core contracts and adapter interfaces
npm package: @kittlekit/crud-drizzle-mysql
Description: Drizzle MySQL helpers for Kittlekit CRUD packages
Latest version: 0.1.1

# @kittlekit/crud-drizzle-mysql

[![npm version](https://img.shields.io/npm/v/@kittlekit/crud-drizzle-mysql.svg)](https://www.npmjs.com/package/@kittlekit/crud-drizzle-mysql)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Drizzle + MySQL CRUD execution helpers for the Kittlekit CRUD package family.

## What This Package Is

Use this package when your persistence layer is based on:

- Drizzle ORM
- MySQL / mysql2

This package handles:

- list query resolution
- list/detail reads
- create/update/delete mutations

and keeps cache/audit/event/diff behavior injected from the host app.

## Install

```bash
npm install @kittlekit/crud-drizzle-mysql @kittlekit/crud-core drizzle-orm uuidv7
```

## Main Exports

### Query layer

- `resolveCrudListQuery`
- `CrudListQuery`

### Read layer

- `listCrudRecords`
- `getCrudRecordById`
- `getCachedCrudDetail`

### Mutation layer

- `createCrudMutation`
- `updateCrudMutation`
- `deleteCrudMutation`

## Adapter Model

Mutation helpers accept injected adapters for:

- event bus
- audit logging
- diff calculation
- cache key building

Read helpers accept injected adapters for:

- cache read behavior
- cache key/tag building

## Relationship to Other Packages

```text
crud-core -> crud-drizzle-mysql
```

## Out of Scope

- Fastify/Express route registration
- auth/session guards
- app-owned cache or audit services

## Publish

```bash
npm run build --workspace @kittlekit/crud-drizzle-mysql
npm publish --workspace @kittlekit/crud-drizzle-mysql --access public
```

## Examples

- smoke setup: `sandbox/crud-smoke`
- server wrapper references:
  - `server/src/core/crudFactory.query.ts`
  - `server/src/core/crudFactory.reads.ts`
  - `server/src/core/crudFactory.mutations.ts`

## Release Notes

### 0.1.0

- first public extraction of Drizzle MySQL query/read/mutation helpers
npm package: @kittlekit/crud-drizzle-postgres
Description: Drizzle Postgres helpers for Kittlekit CRUD packages
Latest version: 0.1.1

# @kittlekit/crud-drizzle-postgres

[![npm version](https://img.shields.io/npm/v/@kittlekit/crud-drizzle-postgres.svg)](https://www.npmjs.com/package/@kittlekit/crud-drizzle-postgres)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Drizzle + PostgreSQL CRUD execution helpers for the Kittlekit CRUD package family.

## What This Package Is

Use this package when your persistence layer is based on:

- Drizzle ORM
- PostgreSQL

This package mirrors the MySQL package but targets Postgres table types and query helpers.

## Install

```bash
npm install @kittlekit/crud-drizzle-postgres @kittlekit/crud-core drizzle-orm uuidv7
```

## Main Exports

### Query layer

- `resolveCrudListQuery`
- `CrudListQuery`

### Read layer

- `listCrudRecords`
- `getCrudRecordById`
- `getCachedCrudDetail`

### Mutation layer

- `createCrudMutation`
- `updateCrudMutation`
- `deleteCrudMutation`

## Adapter Model

Like the MySQL package, this package expects injected adapters for:

- cache read/tag behavior
- event bus behavior
- audit logging
- diff calculation
- cache key invalidation

## Relationship to Other Packages

```text
crud-core -> crud-drizzle-postgres
```

## Out of Scope

- route registration
- auth/session middleware
- app-owned event/audit/cache services

## Publish

```bash
npm run build --workspace @kittlekit/crud-drizzle-postgres
npm publish --workspace @kittlekit/crud-drizzle-postgres --access public
```

## Examples

- smoke setup: `sandbox/crud-smoke`

## Release Notes

### 0.1.0

- first public extraction of Drizzle Postgres query/read/mutation helpers
npm package: @kittlekit/crud-express
Description: Express router helpers for Kittlekit CRUD packages
Latest version: 0.1.1

# @kittlekit/crud-express

[![npm version](https://img.shields.io/npm/v/@kittlekit/crud-express.svg)](https://www.npmjs.com/package/@kittlekit/crud-express)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Express router helpers for the Kittlekit CRUD package family.

## What This Package Is

Use this package when your CRUD API is exposed through Express instead of Fastify.

It gives you:

- Express middleware composition for CRUD routes
- auth and ability wiring through injected adapters
- validation middleware wiring through injected adapters
- `createCrudRouter(...)` for standard CRUD route registration

## Install

```bash
npm install @kittlekit/crud-express @kittlekit/crud-core express zod
```

## Quick Start

```ts
import express from "express"
import { createCrudRouter } from "@kittlekit/crud-express"

const router = createCrudRouter({
  options,
  adapters: {
    auth,
    validation,
  },
  handlers: {
    list: async (req, res) => res.json([]),
  },
})

const app = express()
app.use("/branches", router)
```

## Main Exports

- `createCrudRouter`
- `buildCrudExpressMiddlewares`
- `resolveCrudAbilityMiddleware`
- `wrapExpressHandler`

## Adapter Model

The package expects injected adapters for:

- tenant/platform auth
- tenant/platform ability checks
- validation functions for query/body/params
- optional per-route rate-limit middleware

## Relationship to Other Packages

```text
crud-core -> crud-express
```

Works well with:

- `crud-drizzle-mysql`
- `crud-drizzle-postgres`

## Out of Scope

- DB operations
- audit/cache/event implementations
- OpenAPI generation opinionation

## Publish

```bash
npm run build --workspace @kittlekit/crud-express
npm publish --workspace @kittlekit/crud-express --access public
```

## Examples

- smoke setup: `sandbox/crud-smoke`

## Release Notes

### 0.1.0

- first public extraction of Express CRUD router helpers
npm package: @kittlekit/crud-fastify
Description: Fastify route helpers for Kittlekit CRUD packages
Latest version: 0.1.1

# @kittlekit/crud-fastify

[![npm version](https://img.shields.io/npm/v/@kittlekit/crud-fastify.svg)](https://www.npmjs.com/package/@kittlekit/crud-fastify)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Fastify route helper layer for the Kittlekit CRUD package family.

## What This Package Is

Use this package when your CRUD interface is exposed via Fastify and you want framework-specific routing logic separated from:

- CRUD core contracts
- DB-specific execution helpers

## Install

```bash
npm install @kittlekit/crud-fastify @kittlekit/crud-core fastify zod zod-openapi
```

## Main Exports

- `mergeCrudSchema`
- `toCrudJsonSchema`
- `resolveCrudAbilityGuard`
- `buildCrudPreHandlers`
- `validateCrudAbilities`
- `buildListRouteOptions`
- `buildDetailRouteOptions`
- `buildCreateRouteOptions`
- `buildUpdateRouteOptions`
- `buildDeleteRouteOptions`

## How It Works

This package expects injected adapters for:

- auth/ability guards
- validation hooks

That lets each application keep its own auth/session and error model while reusing route-builder behavior.

## Typical Usage

Use this package in a local wrapper that injects:

- tenant/platform auth guards
- body/query/params validation functions
- app-specific route defaults

That is how the server in this repository uses it.

## Relationship to Other Packages

```text
crud-core -> crud-fastify -> host app route handlers
```

## Out of Scope

- direct DB operations
- audit/event/cache implementations
- non-Fastify runtimes

## Publish

```bash
npm run build --workspace @kittlekit/crud-fastify
npm publish --workspace @kittlekit/crud-fastify --access public
```

## Examples

- smoke setup: `sandbox/crud-smoke`
- server wrapper reference: `server/src/core/crudFactory.routes.ts`

## Release Notes

### 0.1.0

- first public extraction of Fastify CRUD route helpers and middleware composition
npm package: @kittlekit/next-sidebar
Description: Next.js sidebar component package for Kittlekit
Latest version: 0.1.1

# @kittlekit/next-sidebar

[![npm version](https://img.shields.io/npm/v/@kittlekit/next-sidebar.svg)](https://www.npmjs.com/package/@kittlekit/next-sidebar)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Next.js sidebar package for Kittlekit applications.

## What This Package Is

Use this package when you want:

- a production-oriented sidebar for a Next app
- nested menu support
- search and hotkeys
- collapsed flyout behavior
- optional secondary navigation stack
- injected theme/language/organization slots

It is intentionally Next-specific and uses:

- `next/link`
- `next/navigation`

## Install

```bash
npm install @kittlekit/next-sidebar @kittlekit/sidebar-core next react react-dom
```

## Quick Start

```tsx
import { Sidebar } from "@kittlekit/next-sidebar"

<Sidebar
  menuItems={menuItems}
  title="My App"
  t={(_key, fallback) => fallback}
>
  <div>Page content</div>
</Sidebar>
```

## Main Props

- `menuItems`
- `children`
- `ability`
- `slots`
- `title`
- `homeLink`
- `showSearch`
- `showHotkeys`
- `showCollapse`
- `showOrganizationSwitcher`
- `density`
- `secondarySidebar`
- `onLogout`
- `t`
- `classNameJoin`

## Slots

Optional injected slots:

- `OrganizationSwitcher`
- `ThemeSwitch`
- `LanguageSwitcher`

These let each host app keep its own shell controls without forking the sidebar package.

## Ability Integration

Pass an object with:

```ts
{ can(action, subject) => boolean }
```

This is enough for permission-aware menu filtering.

## Relationship to Other Packages

```text
sidebar-core -> next-sidebar
```

## Out of Scope

- non-Next runtimes
- opinionated auth/session providers
- persistence of collapse state

## Publish

```bash
npm run build --workspace @kittlekit/next-sidebar
npm publish --workspace @kittlekit/next-sidebar --access public
```

## Examples

- smoke app: `sandbox/sidebar-smoke`
- app wrapper reference: `web/src/components/sidebar/Sidebar.tsx`

## Release Notes

### 0.1.0

- first public extraction of Next sidebar runtime with slots and nested navigation
npm package: @kittlekit/query-builder-core
Description: Headless query builder engine for schema-driven filters
Latest version: 0.1.1

# @kittlekit/query-builder-core

[![npm version](https://img.shields.io/npm/v/@kittlekit/query-builder-core.svg)](https://www.npmjs.com/package/@kittlekit/query-builder-core)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Headless query-builder engine for schema-driven filters.

## What This Package Is

Use this package when you want the non-UI part of a query builder:

- field metadata and filter field definitions
- operator configuration
- query tree creation and updates
- filter output generation
- schema-driven filter field parsing from Zod

This package depends on `@kittlekit/schema-form-core` for metadata reuse.

## Install

```bash
npm install @kittlekit/query-builder-core @kittlekit/schema-form-core zod
```

## Quick Start

```ts
import { z } from "zod"
import { zodToFilterFields, createInitialQuery, buildFilterOutput } from "@kittlekit/query-builder-core"

const schema = z.object({
  email: z.string().email(),
  status: z.enum(["active", "inactive"]),
})

const fields = zodToFilterFields(schema)
const query = createInitialQuery(fields)
const output = buildFilterOutput(query)
```

## Main Exports

### Types

- `FilterField`
- `QueryCondition`
- `QueryGroup`
- `FilterOutput`
- `FilterValue`

### Operator helpers

- `OPERATORS`
- `getOperatorsForType`
- `operatorNeedsValue`
- `operatorNeedsRange`
- `getDefaultValueForType`

### Query state helpers

- `generateId`
- `createCondition`
- `createGroup`
- `createInitialQuery`
- `hydrateQuery`
- `updateConditionInQuery`
- `addConditionToQuery`
- `removeConditionFromQuery`
- `addGroupToQuery`
- `removeGroupFromQuery`
- `toggleGroupLogicInQuery`
- `buildFilterOutput`
- `hasConditionsInQuery`

### Schema integration

- `zodToFilterFields`

## Query Model

The core query model is a tree of groups and conditions.

- groups contain `logic: "AND" | "OR"`
- groups contain child groups or conditions
- conditions contain `field`, `operator`, and `value`

This makes it easy to support nested filtering UIs and server-side filter conversion.

## Relationship to Other Packages

```text
schema-form-core -> query-builder-core -> query-builder-react -> query-builder-tailwind
```

## Out of Scope

- React state
- UI rendering
- Tailwind styling
- app-specific filter-to-SQL translation

## Publish

```bash
npm run build --workspace @kittlekit/query-builder-core
npm publish --workspace @kittlekit/query-builder-core --access public
```

## Examples

- smoke app: `sandbox/query-builder-smoke`
- app wrapper reference: `web/src/components/queryBuilder/QueryBuilder.tsx`

## Release Notes

### 0.1.0

- first public extraction of query model, operators, and Zod metadata parsing
- validated via tarball install in a clean smoke app
npm package: @kittlekit/query-builder-react
Description: React state orchestration for kittlekit query builder
Latest version: 0.1.1

# @kittlekit/query-builder-react

[![npm version](https://img.shields.io/npm/v/@kittlekit/query-builder-react.svg)](https://www.npmjs.com/package/@kittlekit/query-builder-react)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

React state orchestration for Kittlekit query builder packages.

## What This Package Is

Use this package when you want:

- React-managed query-builder state
- nested group/condition updates
- output generation wired to React hooks

This package does not render UI. It sits between:

- `@kittlekit/query-builder-core`
- `@kittlekit/query-builder-tailwind`

## Install

```bash
npm install @kittlekit/query-builder-react @kittlekit/query-builder-core react react-dom
```

## Quick Start

```tsx
import { useQueryBuilder } from "@kittlekit/query-builder-react"

const {
  query,
  addCondition,
  updateCondition,
  buildFilterOutput,
} = useQueryBuilder(fields)
```

## Main Export

### `useQueryBuilder(fields, options?)`

Returns:

- `query`
- `setQuery`
- `updateCondition`
- `addCondition`
- `removeCondition`
- `addGroup`
- `removeGroup`
- `toggleGroupLogic`
- `clearQuery`
- `buildFilterOutput`
- `hasConditions`

## When to Use It

Use this package if:

- you want to render your own query UI
- you want to keep query-builder state independent from any visual kit
- you want to plug the state machine into another renderer

## Relationship to Other Packages

```text
query-builder-core -> query-builder-react -> query-builder-tailwind
```

## Publish

```bash
npm run build --workspace @kittlekit/query-builder-react
npm publish --workspace @kittlekit/query-builder-react --access public
```

## Examples

- smoke app: `sandbox/query-builder-smoke`
- app wrapper reference: `web/src/components/queryBuilder/QueryBuilder.tsx`

## Release Notes

### 0.1.0

- first public extraction of React query-builder state orchestration
npm package: @kittlekit/query-builder-tailwind
Description: Tailwind query builder UI for kittlekit query builder
Latest version: 0.1.1

# @kittlekit/query-builder-tailwind

[![npm version](https://img.shields.io/npm/v/@kittlekit/query-builder-tailwind.svg)](https://www.npmjs.com/package/@kittlekit/query-builder-tailwind)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Tailwind-oriented UI layer for Kittlekit query-builder packages.

## What This Package Is

Use this package when you want:

- a ready-made visual query builder
- nested condition/group rendering
- injected UI primitives instead of app-locked components

## Install

```bash
npm install @kittlekit/query-builder-tailwind @kittlekit/query-builder-react @kittlekit/query-builder-core react react-dom
```

## Main Exports

- `TailwindQueryBuilder`
- `TailwindQueryGroup`
- `TailwindQueryCondition`
- `TailwindValueInput`

## Renderer Pattern

Like the schema-form UI layer, this package expects injected components.

Typical injected pieces:

- button
- input
- select
- collapsible
- multiselect
- empty state

## Typical Usage

Create a thin app wrapper that injects your real UI kit and i18n function.

That is exactly how the app in this repo uses it.

## Relationship to Other Packages

```text
query-builder-core -> query-builder-react -> query-builder-tailwind
```

## Out of Scope

- app-specific analytics/fetch behavior
- server-side filter execution
- auth/session coupling

## Publish

```bash
npm run build --workspace @kittlekit/query-builder-tailwind
npm publish --workspace @kittlekit/query-builder-tailwind --access public
```

## Examples

- smoke app: `sandbox/query-builder-smoke`
- app wrapper reference: `web/src/components/queryBuilder/QueryBuilder.tsx`

## Release Notes

### 0.1.0

- first public extraction of Tailwind query-builder UI components
npm package: @kittlekit/schema-form-map-leaflet
Description: Leaflet map picker addon for bootstrap schema forms
Latest version: 0.1.2

# @kittlekit/schema-form-map-leaflet

[![npm version](https://img.shields.io/npm/v/@kittlekit/schema-form-map-leaflet.svg)](https://www.npmjs.com/package/@kittlekit/schema-form-map-leaflet)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Leaflet-based map picker addon for Kittlekit schema forms.

## What This Package Is

Use this package when you want:

- a map-based location picker field
- reverse geocoding support
- a map addon kept outside the base form packages

## Install

```bash
npm install @kittlekit/schema-form-map-leaflet leaflet react-leaflet react react-dom
```

## Quick Start

```tsx
import { MapPicker } from "@kittlekit/schema-form-map-leaflet"

<MapPicker
  value={value}
  onChange={setValue}
  components={{ Button, Input, InlineError }}
/>
```

## Main Props

- `value`
- `onChange`
- `disabled`
- `geocoding`
- `components`

## Geocoding and Tiles

You can configure:

- `nominatimBase`
- `tileUrl`

through props or environment-driven host usage.

## Relationship to Other Packages

This addon is intended to be layered on top of:

- `@kittlekit/schema-form-core`
- `@kittlekit/schema-form-react`
- `@kittlekit/schema-form-tailwind`

## Out of Scope

- provider billing setup
- your backend location persistence model
- non-Leaflet renderers

## Publish

```bash
npm run build --workspace @kittlekit/schema-form-map-leaflet
npm publish --workspace @kittlekit/schema-form-map-leaflet --access public
```

## Examples

- app wrapper reference: `web/src/components/form/MapPicker.tsx`

## Release Notes

### 0.1.1

- extracted Leaflet map field into an optional addon package
- kept map provider and host UI wiring injectable
npm package: @kittlekit/schema-form-upload-next
Description: Next.js upload addon for bootstrap schema forms
Latest version: 0.1.2

# @kittlekit/schema-form-upload-next

[![npm version](https://img.shields.io/npm/v/@kittlekit/schema-form-upload-next.svg)](https://www.npmjs.com/package/@kittlekit/schema-form-upload-next)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Next.js upload addon for Kittlekit schema forms. This package keeps file upload UI and Next runtime behavior separate from the form core.

## What This Package Is

Use this package when you want:

- a file upload field for Kittlekit schema forms
- Next.js `Image` support for previews
- host-controlled upload transport instead of hardcoded API coupling

## Install

```bash
npm install @kittlekit/schema-form-upload-next next react react-dom react-dropzone
```

## Design

This package is transport-driven.

You provide:

- `fetchUploadMeta`
- `uploadFile`
- optional `detachFile`

That means auth, API routes, headers, and platform-specific upload behavior remain in your app.

## Quick Start

```tsx
import { FileUploadField } from "@kittlekit/schema-form-upload-next"

<FileUploadField
  value={value}
  onChange={setValue}
  transport={{
    fetchUploadMeta,
    uploadFile,
    detachFile,
  }}
/>
```

## Main Props

- `value`
- `onChange`
- `accept`
- `maxSizeBytes`
- `maxFiles`
- `maxTotalSizeBytes`
- `uploadMode`
- `apiBaseUrl`
- `transport`
- `components`
- `onErrorMessage`

## Behavior Notes

- previews images when metadata includes image content type and URL
- can show removed files temporarily and support undo behavior
- supports auth and public upload modes through your transport implementation

## Relationship to Other Packages

Works alongside:

- `@kittlekit/schema-form-core`
- `@kittlekit/schema-form-react`
- `@kittlekit/schema-form-tailwind`

## Out of Scope

- server-side upload APIs
- auth/session strategy
- backend attachment semantics

## Publish

```bash
npm run build --workspace @kittlekit/schema-form-upload-next
npm publish --workspace @kittlekit/schema-form-upload-next --access public
```

## Examples

- app wrapper reference: `web/src/components/form/FileUploadField.tsx`

## Release Notes

### 0.1.1

- separated upload UI from core form packages
- made transport/auth behavior host-injected
npm package: @kittlekit/sidebar-core
Description: Core menu logic and types for Kittlekit sidebar
Latest version: 0.1.1

# @kittlekit/sidebar-core

[![npm version](https://img.shields.io/npm/v/@kittlekit/sidebar-core.svg)](https://www.npmjs.com/package/@kittlekit/sidebar-core)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)

Core menu types, search helpers, active-path logic, and hotkey utilities for the Kittlekit sidebar package family.

## What This Package Is

Use this package when you want:

- reusable menu tree types
- permission-aware menu filtering
- active route helpers
- sidebar constants and density helpers
- hotkey formatting and normalization

This package has no framework-specific runtime dependency on Next routing or app shell behavior.

## Install

```bash
npm install @kittlekit/sidebar-core
```

## Main Exports

### Types

- `MenuItem`
- `MenuSection`
- `SidebarBaseProps`
- `SecondarySidebarConfig`
- `NavStackItem`
- `Ability`

### Helpers

- `isDeepActive`
- `matchItem`
- `matchDeep`
- `filterItemsBySearch`
- `filterMenuSections`
- `shouldUseSecondary`
- `getMenuItemAria`

### Hotkeys

- `detectMac`
- `getKeyboardGlyph`
- `formatHotkey`
- `normaliseHotkey`
- `buildCombo`

### Constants

- `ITEM_PAD`
- `SEARCH_H`
- `PILL_W`
- `RADIUS`
- responsive sidebar constants

## Typical Usage

Use `sidebar-core` with:

- `@kittlekit/next-sidebar`
- your own navigation shell
- internal menu manifest generation tools

## Relationship to Other Packages

```text
sidebar-core -> next-sidebar
```

## Publish

```bash
npm run build --workspace @kittlekit/sidebar-core
npm publish --workspace @kittlekit/sidebar-core --access public
```

## Examples

- smoke app: `sandbox/sidebar-smoke`
- app wrapper reference: `web/src/components/sidebar/Sidebar.tsx`

## Release Notes

### 0.1.0

- first public extraction of menu tree, filtering, constants, and hotkey helpers
npm package: @kittler/prettier-plugin-czech-nbsp
Description: Prettier plugin that inserts Czech Unicode NBSP (U+00A0) after one-letter prepositions/conjunctions in HTML text nodes.
Latest version: 0.1.4

## prettier-plugin-czech-nbsp

Prettier plugin that inserts **Unicode NBSP (U+00A0)** after Czech one-letter prepositions/conjunctions:
`k, s, v, z, o, u, i, a`

### What it does
- Only changes **text between HTML tags**
- Does **not** touch tag names or attributes
- Skips content inside: `script, style, pre, code, noscript, svg, textarea, template`
- Skips Handlebars moustache blocks: `{{ ... }}`

### Install
npm i -D prettier @kittler/prettier-plugin-czech-nbsp

### Usage
Add the plugin to your Prettier config.

`package.json`
```json
{
  "prettier": {
    "plugins": ["prettier-plugin-czech-nbsp"]
  }
}
```

Then run Prettier as usual:
```
npx prettier . --write
```

### Example
Input:
```
<p>Byl jsem v Praze a v Brne.</p>
```

Output:
```
<p>Byl jsem v&nbsp;Praze a&nbsp;v&nbsp;Brne.</p>
```

### Supported formats
This plugin targets HTML output produced by Prettier for:
- `html`
- `vue`
- `svelte`
- `astro`
- `md`, `mdx` (only in inline HTML)

### Configuration
This plugin has no custom options. It runs automatically when the plugin is enabled.

### Development
```
npm install
npm test
```

### Support

If this tool helps you in your work, you can support its development by buying me a coffee on [Ko-fi](https://ko-fi.com/jakubkittler).

### License
MIT
npm package: @kittycad/lib
Description: Javascript library for KittyCAD API
Author: Kurt Hutten
Latest version: 3.2.27

# KittyCAD JS/TS API library

Fully typed js library, compatible with js and ts.

**Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for how to to publish AND
AN EXPLANATION BEHIND THE DERIVATION PROCESS!**

### [Full documentation here](https://zoo.dev/docs/api?lang=typescript)

Simple example below.

### Install

```bash
npm install @kittycad/lib
# or
yarn add @kittycad/lib

## set your token
export KITTYCAD_TOKEN=<your token>
```

### Basic example
```typescript
import { file } from '@kittycad/lib';
import fsp from 'fs/promises';

async function main() {
    // zoo.dev/docs/api/get-cad-file-mass?lang=typescript
    const response = await file.create_file_mass({
      src_format: 'obj',
      material_density_unit: 'kg:m3',
      output_unit: 'g',
      material_density: 0.007,
      body: await fsp.readFile('./example.obj', 'base64'),
    })
    if ('error_code' in response) throw 'error'

    const { status, mass } = response
    console.log(status, mass);
}

main();
```
npm package: @kittycad/react-shared
Description: Shared React components for KittyCAD applications
Author: KittyCAD
Latest version: 1.2.1

# @kittycad/react-shared

Shared React components for KittyCAD applications.

## Installation

```bash
npm install @kittycad/react-shared
# or
yarn add @kittycad/react-shared
```

## Usage

```tsx
import { Button } from '@kittycad/react-shared'

function App() {
  return (
    <Button variant="primary" size="md" onClick={() => console.log('Clicked!')}>
      Click me
    </Button>
  )
}
```

## Development

### Prerequisites

- Node.js 20+
- npm or yarn

### Setup

```bash
# Install dependencies
npm install

# Start Storybook for development
npm run dev

# Build the library
npm run build

# Run tests
npm test

# Type checking
npm run tsc

# Linting and formatting
npm run lint
npm run fmt
```

### Linking package locally

Assumes your directory structure looks like
```
.
├── modeling-app
└── react-shared
```

```
git clone git@github.com:KittyCAD/react-shared.git
cd react-shared
npm link
npm install
npm run build
// edit your files
// make sure to rebuild this after code changes!
```

```
cd modeling-app
rm -rf node_modules
// Write "@kittycad/react-shared": "file:../react-shared", the package.json
npm install
npm install ../react-shared/ --install-links
```

#### Gotchas
- using npm link can break with `vite` because vite will create `modeling-app/node_modules/.vite/deps` that are cached and will not be the correctly npm linked one. I needed to use the `file:` prefix to install the package to get around this `vite` issue.
- `--install-links` commmand is required because the package has a peerDependenices list and React is in that list. We need to make sure that modeling-app and the package have the same react version otherwise you will run into problems.
- Basic `npm link` and `npm link @kittycad/react-shared` will not work! `vite` bricks this!

### Available Components

- **Button**: A customizable button component with multiple variants and sizes

### Storybook

This project uses Storybook for component development and documentation. Run `npm run dev` to start the Storybook development server.

### Publishing

The library is automatically published to npm when a new git tag is created:

```bash
git checkout -b bump

npm version patch --no-git-tag-version # or minor, major

npm run fmt

git add package.json package-lock.json
git commit -m "bump version"

# !! Create PR and merge it

git checkout main
git pull
git tag -a vX.Y.Z
git push origin vX.Y.Z
```

This will trigger the GitHub Action to publish to npm.

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests and stories for new components
5. Run `npm run lint` and `npm run type-check`
6. Submit a pull request
npm package: @kittycorn-labs/contract-helpers
Description: The `@aave/contract-helpers` package offers a set of services which allow querying aggregated on-chain data via rpc.
Latest version: 1.33.2

# @aave/contract-helpers

The `@aave/contract-helpers` package offers a set of services which allow
querying aggregated on-chain data via rpc.

## Installation

Install the package in your project directory with:

```sh
// with npm
npm install @aave/contract-helpers

// with yarn
yarn add @aave/contract-helpers
```
npm package: @kittycorn-labs/router-sdk
Description: An sdk for routing swaps using Uniswap v2 and Uniswap v3.
Latest version: 1.2.32

# Alpha software

The latest version of the SDK is used in production in the Uniswap Interface,
but it is considered Alpha software and may contain bugs or change significantly between patch versions.
If you have questions about how to use the SDK, please reach out in the `#dev-chat` channel of the Discord.
Pull requests welcome!

# Uniswap Swap Router SDK

This SDK is meant to facilitate interactions with the contracts in [swap-router-contracts](https://github.com/Uniswap/swap-router-contracts).
npm package: @kittycorn-labs/sdk-core
Description: ⚒️ An SDK for building applications on top of Uniswap V3
Latest version: 1.0.11

# Uniswap SDK Core

[![npm version](https://img.shields.io/npm/v/@uniswap/sdk-core/latest.svg)](https://www.npmjs.com/package/@uniswap/sdk-core/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/sdk-core/latest.svg)](https://bundlephobia.com/result?p=@uniswap/sdk-core@latest)

This code is shared across Uniswap TypeScript SDKs.
npm package: @kittycorn-labs/universal-router-sdk
Description: sdk for integrating with the Universal Router contracts
Latest version: 1.4.43

# universal-router-sdk

This SDK facilitates interactions with the contracts in [Universal Router](https://github.com/Uniswap/universal-router)

## Usage

Install latest version of universal-router-sdk. Then import the corresponding Trade class and Data object for each protocol you'd like to interact with.

### Trading on Uniswap

warning: `swapERC20CallParameters()` to be deprecated in favor of `swapCallParameters()`

```typescript
import { TradeType } from '@uniswap/sdk-core'
import { Trade as V2TradeSDK } from '@uniswap/v2-sdk'
import { Trade as V3TradeSDK } from '@uniswap/v3-sdk'
import { MixedRouteTrade, MixedRouteSDK, Trade as RouterTrade } from '@uniswap/router-sdk'

const options = { slippageTolerance, recipient }
const routerTrade = new RouterTrade({ v2Routes, v3Routes, mixedRoutes, tradeType: TradeType.EXACT_INPUT })
// Use the raw calldata and value returned to call into Universal Swap Router contracts
const { calldata, value } = SwapRouter.swapCallParameters(routerTrade, options)
```

## Running this package

Make sure you are running `node v18`
Install dependencies and run typescript unit tests

```bash
yarn install
yarn test:hardhat
```

Run forge integration tests

```bash
forge install
yarn test:forge
```
npm package: @kittycorn-labs/v2-sdk
Description: 🛠 An SDK for building applications on top of Uniswap V2
Latest version: 1.0.13

# Uniswap V2 SDK

[![npm version](https://img.shields.io/npm/v/@uniswap/v2-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v2-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v2-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v2-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).
npm package: @kittycorn-labs/v3-sdk
Description: ⚒️ An SDK for building applications on top of Uniswap V3
Latest version: 1.0.13

# Alpha software

The latest version of the SDK is used in production in the Uniswap Interface,
but it is considered Alpha software and may contain bugs or change significantly between patch versions.
If you have questions about how to use the SDK, please reach out in the `#dev-chat` channel of the Discord.
Pull requests welcome!

# Uniswap V3 SDK

[![npm version](https://img.shields.io/npm/v/@uniswap/v3-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v3-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v3-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v3-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://docs.uniswap.org/).
npm package: @kittyjs/kitty-js
Description: 😻 The JavaScript library for Cats!
Author: Dhruva Srinivas
Latest version: 0.1.2

# kitty-js

😻 The JavaScript library for Cats!

# Docs
The docs can be found [here](https://dhruva-srinivas.gitbook.io/kitty.js/), please remember that it is still a WIP and if you find anything wrong please open an issue!
npm package: @kittypunchxyz/punchswap-v2-sdk
Description: 🛠 An SDK for building applications on top of PunchSwap.
Latest version: 3.0.0

# PunchSwap V2 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/@kittypunchxyz/punchswap-v2-sdk/latest.svg)](https://www.npmjs.com/package/@kittypunchxyz/punchswap-v2-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@kittypunchxyz/punchswap-v2-sdk/latest.svg)](https://bundlephobia.com/result?p=@kittypunchxyz/punchswap-v2-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/Kitty-Punch/punchswap-v2-sdk
```

Move into the punchswap-v2-sdk working directory

```sh
cd punchswap-v2-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.
```
# punchswap-v2-sdk
# punchswap-v2-sdk
npm package: @kittypunchxyz/punchswap-v3-mainnet-sdk
Description: ⚒️ An SDK for building applications on top of PunchSwap V3
Latest version: 1.0.3

# @kittypunchxyz/punchswap-v3-sdk

An SDK for building applications on top of PunchSwap V3.

## Installation

```bash
yarn add @kittypunchxyz/punchswap-v3-sdk
```

## Usage

This SDK facilitates interactions with the PunchSwap V3 protocol, allowing developers to:
- Create and manage positions
- Calculate prices and amounts for trades
- Build and execute swaps
- Work with pools and ticks

## Documentation

For detailed documentation and usage examples, please refer to our documentation site or the code comments.

## License

MIT
npm package: @kittypunchxyz/punchswap-v3-sdk
Description: ⚒️ An SDK for building applications on top of PunchSwap V3
Latest version: 1.0.3

# @kittypunchxyz/punchswap-v3-sdk

An SDK for building applications on top of PunchSwap V3.

## Installation

```bash
yarn add @kittypunchxyz/punchswap-v3-sdk
```

## Usage

This SDK facilitates interactions with the PunchSwap V3 protocol, allowing developers to:
- Create and manage positions
- Calculate prices and amounts for trades
- Build and execute swaps
- Work with pools and ticks

## Documentation

For detailed documentation and usage examples, please refer to our documentation site or the code comments.

## License

MIT