open-index/open-npm huggingface dataset:
npm package: @ossy/design-system
Description: Ossy's design system React component library
Author: Ossy
Latest version: 1.9.0

# @ossy/design-system

React component library for the **Ossy Ecosystem** — themable UI components with support for multiple themes, server-side rendering, and React 19.

## Features

- **Themable** — Switch themes at runtime with the `useTheme` hook
- **Multiple themes** — CloudLight, CloudDark, and custom themes from `@ossy/themes`
- **Server-side rendering** — Works with SSR build tooling
- **React 19** — Built for React 19+

## Installation

```bash
npm install @ossy/design-system @ossy/themes
```

## Quick start

Wrap your app in the `Theme` provider and pass a theme from `@ossy/themes`:

```jsx
import React from 'react'
import { Theme } from '@ossy/design-system'
import { CloudLight } from '@ossy/themes'

export default () => (
  <Theme theme={CloudLight}>
    <YourApp />
  </Theme>
)
```

For multiple themes with runtime switching:

```jsx
import { Theme } from '@ossy/design-system'
import { CloudLight, CloudDark } from '@ossy/themes'

<Theme
  theme={CloudLight}
  themes={{ light: CloudLight, dark: CloudDark }}
  defaultTheme="light"
>
  <YourApp />
</Theme>
```

## Documentation

Run Storybook from the monorepo root for full component documentation:

```bash
npm start
```

In Storybook, open **Design System → Getting Started** for install and `Theme` setup, then **Principles**, **Theme Concepts**, **Patterns**, and **Variants**. Browse Layout, Feedback, Navigation, Actions, Display, Inputs, Base, and more in the same section.

## Peer dependencies

- `react` >=19.0.0
- `react-dom` >=19.0.0
- `@ossy/themes` for theme definitions

## License

MIT
npm package: @ossy/eslint-config-ossy
Description: ESLint config used by Ossy
Author: Ossy
Latest version: 2.9.0

# @ossy/eslint-config-ossy

Shared ESLint configuration for Ossy projects.

## Installation

```bash
npm install --save-dev @ossy/eslint-config-ossy eslint
```

## Usage

In your `.eslintrc.js` or `eslint.config.js`:

```js
// .eslintrc.js
module.exports = {
  extends: ['@ossy/eslint-config-ossy'],
}
```

Or with flat config (ESLint 9+):

```js
// eslint.config.js
import ossy from '@ossy/eslint-config-ossy'

export default [...ossy]
```

## License

MIT
npm package: @ossy/pages
Description: SaaS page templates and layouts: auth (login, signup, forgot password, verify email), pricing, settings, dashboard, 404, landing page, resume
Author: Ossy
Latest version: 1.9.0

# @ossy/pages

SaaS page templates and layouts for the Ossy Ecosystem. Pre-built screens for auth, pricing, settings, dashboards, and more.

## Installation

```bash
npm install @ossy/pages @ossy/design-system @ossy/themes
```

## Available pages

| Category | Components |
|----------|------------|
| **Auth** | Login, SignUp, ForgotPassword, VerifyEmail |
| **Pricing** | Pricing tables and plans |
| **Settings** | User and app settings |
| **Dashboard** | Dashboard layouts |
| **Billing** | Billing and subscription |
| **Onboarding** | Onboarding flows |
| **Team** | Team management |
| **Integrations** | Third-party integrations |
| **Support** | Help and support |
| **Other** | Landing page, Resume, 404, Unauthorized, Maintenance, EmptyState |

## Usage

Import and use pages in your app:

```jsx
import { Login, SignUp, ForgotPassword } from '@ossy/pages'
import { Theme } from '@ossy/design-system'
import { CloudLight } from '@ossy/themes'

<Theme theme={CloudLight}>
  <Login onSubmit={handleLogin} />
</Theme>
```

## Documentation

Run Storybook from the monorepo root to browse all page templates:

```bash
npm start
```

## Peer dependencies

- `react` >=19.0.0
- `react-dom` >=19.0.0
- `@ossy/design-system` >=0.0.1
- `@ossy/themes` for theme support

## License

MIT
npm package: @ossy/platform
Description: Platform module: deployment platform config resource template and home UI for Ossy websites
Author: Ossy
Latest version: 0.0.1-alpha.2

# @ossy/platform

Ossy **Platform** module: resource template `@ossy/platform/config` (mirrors deployment-tools `platform-config.json`) and the platform home UI (`PlatformHomeBody`, metadata for routing).

## Install

```bash
npm install @ossy/platform
```

Peer dependencies (your app should already include them):

- `react`
- `@ossy/connected-components` (for **`usePageShell`** on module pages)
- `@ossy/design-system`
- `@ossy/router-react`
- `@ossy/sdk-react`

## Use in a website

1. Spread **`PlatformResourceTemplates`** into your app `resourceTemplates` (and sync to the API via publish / cms upload).
2. Add **`@ossy/platform`** to **`modules`** in `src/config.js` so **`src/platform/home.page.js`** is picked up (JSX-free so Rollup can parse `.page.js`; **`*.page.jsx`** works under `src/` for other files if the bundler accepts JSX there).
3. Add **`src/page-shell.jsx`** (or `.js`) that default-exports your site layout (e.g. ossy.se re-exports **`Layout`**). Module pages call **`usePageShell()`** so they do not depend on site paths.
4. Register **`Definition`** in your navigation / module registry.

**Surface in this package:** **`*.page.*`** files may live anywhere under **`src/`**; resources are exported from the package root (`PlatformResourceTemplates`, constants). **API routes** and **worker tasks** can follow the same `*.api.js` / `*.task.js` conventions under the site `src/` today; pulling those from installable modules can mirror **`modules`** later (e.g. shared discovery for APIs / worker tasks).

## Publishing

Released on its **own semver** from this monorepo (`lerna publish` with independent versions). Bump **`@ossy/platform`** when only this module changes.

## Direction

Long term, **which modules a workspace may enable** should be driven by the **CMS** and tied to **billing / entitlements**. Packages stay the **distributable implementation** of each module; access control lives in the product, not in npm scope alone.
npm package: @ossy/resource-templates
Description: Resource Templates
Author: Ossy
Latest version: 1.0.5

# @ossy/resource-templates

Resource template definitions for the Ossy CMS. Defines the structure of content types (fields, validation, and metadata) used across the Ossy ecosystem.

## Installation

```bash
npm install @ossy/resource-templates
```

## Usage

This package is typically used internally by `@ossy/sdk` and `@ossy/cli` when working with workspaces and resource templates. Import shared template definitions:

```js
import { resume } from '@ossy/resource-templates'
```

## Integration

- **@ossy/cli** — Use `cms upload` to upload resource templates to your workspace
- **@ossy/sdk** — `workspaces.importResourceTemplates()` and `workspaces.getResourceTemplates()` work with these definitions

## Development

Build the package:

```bash
npm run build
```

## License

MIT
npm package: @ossy/router
Description: Base router built for multi-language support with localized paths
Author: Ossy
Latest version: 1.9.0

# @ossy/router

This package is not a functioning router by itself, it's built as a shared base
for implementations in different frameworks.

## Implementations
- [@ossy/router-react](https://www.npmjs.com/package/@ossy/router-react)
npm package: @ossy/sdk
Description: Sofware Development Kit for interacting with our services
Author: Ossy
Latest version: 1.9.0

# @ossy/sdk

API client for Ossy services. Use with `@ossy/sdk-react` for React hooks.

## Installation

```bash
npm install @ossy/sdk @ossy/sdk-react
```

## Quick start

```js
import { SDK } from '@ossy/sdk'

const sdk = SDK.of({
  workspaceId: 'your-workspace-id',
  apiUrl: 'https://api.ossy.se/api/v0', // optional, this is the default
})

// List resources in a folder
const resources = await sdk.resources.list({ location: '/docs' })

// Get a single resource
const resource = await sdk.resources.get({ id: 'resource-id' })
```

## Configuration

| Option | Description |
|--------|-------------|
| `workspaceId` | Your workspace identifier (required for most operations) |
| `apiUrl` | API base URL (default: `https://api.ossy.se/api/v0`) |
| `authorization` | Bearer token for authenticated requests |

## API overview

### Workspaces

- `sdk.workspaces.current()` — Get current workspace
- `sdk.workspaces.list()` — List workspaces
- `sdk.workspaces.get({ workspaceId })` — Get workspace by ID
- `sdk.workspaces.create(payload)` — Create workspace
- `sdk.workspaces.importResourceTemplates(...)` — Import resource templates
- `sdk.workspaces.getResourceTemplates(...)` — Get resource templates

### Resources

- `sdk.resources.list({ location })` — List resources in folder
- `sdk.resources.get({ id })` — Get resource by ID
- `sdk.resources.create(payload)` — Create resource
- `sdk.resources.search(query)` — Search resources
- `sdk.resources.remove({ id })` — Delete resource
- `sdk.resources.updateContent(...)` — Update resource content
- `sdk.resources.move(...)` — Move resource
- `sdk.resources.rename(...)` — Rename resource
- `sdk.resources.upload({ location, file })` — Upload file

### Auth

- `sdk.auth.signIn(payload)` — Sign in
- `sdk.auth.signOff()` — Sign off
- `sdk.auth.getAuthenticatedUser()` — Get current user

### Current user

- `sdk.currentUser.get()` — Get current user
- `sdk.currentUser.update(payload)` — Update user
- `sdk.currentUser.history()` — Get user history

## With React

Use `@ossy/sdk-react` for React hooks (`useResource`, `useResources`) and wrap your app in `WorkspaceProvider`:

```jsx
import { SDK } from '@ossy/sdk'
import { WorkspaceProvider } from '@ossy/sdk-react'

const sdk = SDK.of({ workspaceId: 'your-workspace-id' })

export const App = () => (
  <WorkspaceProvider sdk={sdk}>
    <YourApp />
  </WorkspaceProvider>
)
```

See [@ossy/sdk-react README](../sdk-react/README.md) for hook usage.
npm package: @ossy/sdk-react
Description: Software Development Kit React
Author: Ossy
Latest version: 1.9.0

# React bindings

To make it as easy as possible to use our cms we have created a library
with react hooks you can use to fetch data.

## Getting started

To use these hooks install the package **@ossy/sdk-react** along with **@ossy/sdk**:

```
npm install @ossy/sdk-react @ossy/sdk
```

Create an SDK instance and wrap your app in `<WorkspaceProvider />` to handle
data storage and configuration:

```jsx
// App.jsx
import { WorkspaceProvider } from '@ossy/sdk-react'
import { SDK } from '@ossy/sdk'
import { MyComponent } from './MyComponent.jsx'

const sdk = SDK.of({ workspaceId: 'your-workspace-id', apiUrl: 'https://api.ossy.se/api/v0' })

export const App = () => (
  <WorkspaceProvider sdk={sdk}>
    <MyComponent />
  </WorkspaceProvider>
)
```
```jsx
// MyComponent.jsx
import { useResources } from '@ossy/sdk-react'

export const MyComponent = () => {
  const { status, resources } = useResources('/folder/path/in/cms')

  return (
    <>
      { status === 'Error' && (
        <>Something went wrong</>
      )}

      { status === 'Loading' && (
        <>Loading...</>
      )}

      { status === 'Success' && (
        resources.map(resource => (
          <div key={resource.id}>
            {resource.name}
          </div>
        ))
      )}
    </>  
  )
}
```

## Reference

### useResources

```
const { status, resources, loadResources } = useResources('/')
```

**Parameters**

- **path** - (optional) Folder path in the cms UI. Defaults to `/` when omitted.

**Returns**

Returns an object containing

- **status** - String value that indicates loading status.
  Can be used to show loading indicators or error screens.
  Possible values are: NotInitialized, Loading, Success, Error
- **resources** - Array of resources, defaults to an empty array when
  loading is not Success
- **loadResources** - Function to manually refetch the resource list

### useResource

```
const { status, resource } = useResource('resourceId')
```

**Parameters**

- **resourceId** - Id of the resource you want to fetch

**Returns**

Returns an object containing

- **status** - String value that indicates loading status.
  Can be used to show loading indicators or error screens.
  Possible values are: NotInitialized, Loading, Success, Error
- **resource** - The fetched resource, defaults to an empty object
  when status is not Success
npm package: @ossy/themes
Description: Ossy's design system themes
Author: Ossy
Latest version: 1.9.0

# @ossy/themes

Theme definitions for the Ossy design system. Provides color palettes, spacing scales, and surface variants used by `@ossy/design-system`.

## Installation

```bash
npm install @ossy/themes
```

## Available themes

| Theme | Description |
|-------|-------------|
| `CloudLight` | Light theme with cloud-inspired palette |
| `CloudDark` | Dark theme variant |

## Usage

Use themes with `@ossy/design-system`:

```jsx
import { Theme } from '@ossy/design-system'
import { CloudLight, CloudDark } from '@ossy/themes'

// Single theme
<Theme theme={CloudLight}>
  <App />
</Theme>

// Multiple themes with switching
<Theme
  theme={CloudLight}
  themes={{ light: CloudLight, dark: CloudDark }}
  defaultTheme="light"
>
  <App />
</Theme>
```

## Custom themes

Create custom themes by following the `Theme` interface from `@ossy/types`. Use `normalizeTheme` to ensure your theme has all required fields:

```js
import { normalizeTheme } from '@ossy/themes'

const myTheme = normalizeTheme({
  // Your theme overrides
})
```

## Related packages

- `@ossy/design-system` — React components that consume themes
- `@ossy/types` — TypeScript `Theme` interface

## License

MIT
npm package: @ossy/types
Description: Shared TypeScript types for all packages
Author: Ossy
Latest version: 1.9.0

# @ossy/types

Shared TypeScript types for the Ossy ecosystem. Defines interfaces for themes, SDK configuration, resources, workspaces, and more.

## Installation

```bash
npm install @ossy/types
```

## Usage

```typescript
import type { Theme, Resource, SDKConfig, Workspace } from '@ossy/types'
```

## Key types

| Category | Types |
|----------|-------|
| **Theme & Design** | `Theme`, `SurfaceVariant`, `SpaceScale`, `MaxWidthScale`, `ColorPalette`, `SurfaceDefinitions`, `SurfacesMap` |
| **SDK** | `SDKConfig`, `Action` |
| **Resources** | `Resource`, `ResourceTemplate`, `Field`, `Workspace` |
| **Jobs** | `Job` |

## Documentation

Full type documentation is available in Storybook. Run from the monorepo root:

```bash
npm start
```

Browse **Types** in the sidebar for generated interface tables.

## Development

Build the package:

```bash
npm run build
```

## License

MIT