Skip to content

Packages

Every Pelagic UI package

Twelve packages that read the same tokens and the same themes. Install pelagic to get everything, or just your platform — the package manager you pick is remembered for every install command.

pelagic

npm Everything The whole system in one install

7 platforms in one package

One package with every target: components for each framework, charts, 3D, icons, illustrations, the theme engine, motion and sound. Framework packages are optional peers, so you only pull in what you import.

Version
0.1.0
Download size
624 kB
Unpacked
2.8 MB
License
MIT
Peer dependencies
react · vue · @angular/core · svelte · astro · react-native · three · (all optional)

Install

npm i pelagic

Usage

main.tsx
import 'pelagic/style.css';
import { Button, DataTable, swal } from 'pelagic/react';
import { SearchIcon } from 'pelagic/icons/react';
import { createTheme, applyCustomTheme } from 'pelagic/core/theme';

applyCustomTheme(createTheme({ primary: '#ff6a00' }));

Includes

  • Every framework entry point
  • Core CSS, tokens and theme engine
  • Icons and illustrations
  • WebGL 3D components

Export paths

Path What you get
pelagic/style.css All component styles and themes
pelagic/react React components
pelagic/vue Vue 3 components
pelagic/angular Angular standalone components
pelagic/svelte Svelte 5 components
pelagic/astro/components/* Astro components
pelagic/react-native React Native components
pelagic/three WebGL 3D
pelagic/icons/* Icons for every framework
pelagic/illustrations/* Illustrations for every framework
pelagic/core/* theme, a11y-prefs, motion, sound, tokens

@pelagic-ui/react

npm React 18 / 19 The most complete set

171 components

The full catalogue: forms, advanced inputs, DataTable, overlays, menus, media, charts, motion, Wizard, swal and toasts. Every widget follows its WAI-ARIA pattern and is tested with axe.

Version
0.1.0
Download size
182 kB
Unpacked
749 kB
License
MIT
Peer dependencies
react ^18 || ^19 · react-dom

Install

npm i @pelagic-ui/react @pelagic-ui/core

Usage

App.tsx
import '@pelagic-ui/core/style.css';
import { Button, Input, toast, Toaster } from '@pelagic-ui/react';

export function App() {
  return (
    <>
      <Input label="Project name" defaultValue="pelagic-app" />
      <Button onClick={() => toast.success('Deployed')}>Deploy</Button>
      <Toaster />
    </>
  );
}

Includes

  • DataTable, Tree, VirtualScroller
  • 13 accessible chart types
  • Motion engine and Wizard
  • swal(), toast(), 15 loaders

Export paths

Path What you get
@pelagic-ui/react Components, hooks (useConfirm, useDialog), swal, toast

@pelagic-ui/vue

npm Vue 3 v-model everywhere

33 components

Composition-API components with v-model on every input, typed props and slots for custom cells, empty states and footers.

Version
0.1.0
Download size
17 kB
Unpacked
93 kB
License
MIT
Peer dependencies
vue ^3.4

Install

npm i @pelagic-ui/vue @pelagic-ui/core

Usage

App.vue
<script setup lang="ts">
import '@pelagic-ui/core/style.css';
import { ref } from 'vue';
import { Button, Input, Switch } from '@pelagic-ui/vue';
const name = ref('pelagic-app');
const previews = ref(true);
</script>

<template>
  <Input v-model="name" label="Project name" />
  <Switch v-model="previews" label="Preview deployments" />
  <Button>Deploy</Button>
</template>

Includes

  • Forms with v-model
  • DataTable with cell slots
  • Dialog, Drawer, Tooltip
  • AccessibilityPanel

Export paths

Path What you get
@pelagic-ui/vue Components and the sound composable

@pelagic-ui/angular

npm Angular 20–22 Standalone, signals, forms

39 components & directives

Standalone components and directives built on signals. Inputs implement ControlValueAccessor, so they work with reactive and template-driven forms.

Version
0.1.0
Download size
61 kB
Unpacked
359 kB
License
MIT
Peer dependencies
@angular/core 20–22 · @angular/common · @angular/forms

Install

npm i @pelagic-ui/angular @pelagic-ui/core

Usage

deploy.component.ts
import { Component } from '@angular/core';
import { PELAGIC_UI } from '@pelagic-ui/angular';

@Component({
  selector: 'app-deploy',
  imports: [PELAGIC_UI],
  template: `
    <pl-input label="Project name" [(value)]="name" />
    <button plButton (click)="deploy()">Deploy</button>`,
})
export class DeployComponent {
  name = 'pelagic-app';
  deploy() {}
}

Includes

  • plButton directive
  • Reactive-forms inputs
  • DataTable with cell templates
  • PELAGIC_UI import bundle

Export paths

Path What you get
@pelagic-ui/angular Pl* components, PELAGIC_UI, theme helpers

@pelagic-ui/svelte

npm Svelte 5 Runes-native components

33 components

Svelte 5 components written with runes. bind:value on every field, snippets for custom content, and actions for tooltips and focus traps.

Version
0.1.0
Download size
13 kB
Unpacked
42 kB
License
MIT
Peer dependencies
svelte ^5

Install

npm i @pelagic-ui/svelte @pelagic-ui/core

Usage

+page.svelte
<script lang="ts">
  import { Button, Input, Switch } from '@pelagic-ui/svelte';
  let name = $state('pelagic-app');
  let previews = $state(true);
</script>

<Input bind:value={name} label="Project name" />
<Switch bind:checked={previews} label="Preview deployments" />
<Button>Deploy</Button>

Includes

  • bind:value forms
  • DataTable and Pagination
  • Dialog and Drawer
  • Skeleton presets

Export paths

Path What you get
@pelagic-ui/svelte Components, actions and sound

@pelagic-ui/astro

npm Astro 5 Zero JS by default

34 components

Server-rendered components that ship no JavaScript unless they need it. Tabs, switches and dialogs hydrate with a few hundred bytes of script. This site is built with it.

Version
0.1.0
Download size
14 kB
Unpacked
41 kB
License
MIT
Peer dependencies
astro ^5

Install

npm i @pelagic-ui/astro @pelagic-ui/core

Usage

Layout.astro
---
import '@pelagic-ui/core/style.css';
import ThemeScript from '@pelagic-ui/astro/components/ThemeScript';
import Button from '@pelagic-ui/astro/components/Button';
---
<html lang="en">
  <head><ThemeScript /></head>
  <body><Button>Deploy</Button></body>
</html>

Includes

  • ThemeScript (no flash of wrong theme)
  • Server-sorted DataTable
  • Tabs, Dialog, Toaster
  • AccessibilityPanel

Export paths

Path What you get
@pelagic-ui/astro/components/* One .astro file per component

@pelagic-ui/react-native

npm React Native / Expo Same API, native views

31 components

Native components with the same names and props as the web packages, driven by the same tokens. Screen-reader roles, 48dp targets and large-text support built in.

Version
0.1.0
Download size
13 kB
Unpacked
51 kB
License
MIT
Peer dependencies
react · react-native

Install

npm i @pelagic-ui/react-native @pelagic-ui/core

Usage

App.tsx
import { PelagicProvider, Button, Input } from '@pelagic-ui/react-native';

export default function App() {
  return (
    <PelagicProvider mode="system" accent="violet">
      <Input label="Project name" defaultValue="pelagic-app" />
      <Button title="Deploy" onPress={deploy} />
    </PelagicProvider>
  );
}

Includes

  • PelagicProvider with every theme
  • Forms and DataTable
  • Dialog, Drawer, Toast
  • RTL via I18nManager

Export paths

Path What you get
@pelagic-ui/react-native Components, PelagicProvider, usePelagicTheme

pelagic_ui

pub.dev Flutter 3.24+ Pure Flutter, no dependencies

30+ widgets

Widgets generated from the same token source as the web, so a Flutter app and a web app look the same. Semantics, 48×48 hit areas, reduced motion and RTL built in.

Version
0.1.0
Download size
—
Unpacked
194 kB
License
MIT
Peer dependencies
Flutter SDK ≥ 3.24 · Dart ≥ 3.5

Install

flutter pub add pelagic_ui

Usage

main.dart
import 'package:flutter/material.dart';
import 'package:pelagic_ui/pelagic_ui.dart';

void main() => runApp(const PelagicApp(title: 'Pelagic', home: Deploy()));

class Deploy extends StatelessWidget {
  const Deploy({super.key});
  @override
  Widget build(BuildContext context) => Column(children: [
        const PelagicInput(label: 'Project name'),
        PelagicButton(label: 'Deploy', onPressed: () {}),
      ]);
}

Includes

  • PelagicApp with every theme
  • Forms, tabs, accordion
  • Sortable PelagicDataTable
  • Bar and line charts

Export paths

Path What you get
package:pelagic_ui/pelagic_ui.dart Widgets, PelagicApp, PelagicTheme, tokens

@pelagic-ui/three

npm WebGL · React 3D that follows the theme

6 WebGL components

Theme-aware three.js scenes: a globe, 3D charts, particles and a model viewer. They pause off-screen, render one still frame under reduced motion and fall back without WebGL.

Version
0.1.0
Download size
13 kB
Unpacked
46 kB
License
MIT
Peer dependencies
react · react-dom · three ≥ 0.160

Install

npm i @pelagic-ui/three three

Usage

Hero.tsx
import { Globe3D } from '@pelagic-ui/three';

<Globe3D
  label="Our offices"
  markers={[{ lat: 24.7, lng: 46.7, label: 'Riyadh' }]}
/>

Includes

  • Globe3D and Chart3D
  • ModelViewer (glTF)
  • ParticlesField, FloatingShapes
  • Lazy-loaded three.js

Export paths

Path What you get
@pelagic-ui/three Scene3D, Globe3D, Chart3D, ModelViewer …

@pelagic-ui/icons

npm Every framework 239 original duotone icons

239 icons

Original icons on a 24px grid in outline, duotone and solid. Tree-shakable named components for every framework, a web component and an SVG sprite. RTL-aware arrows.

Version
0.1.0
Download size
85 kB
Unpacked
594 kB
License
MIT
Peer dependencies
react · vue · svelte · @angular/core · astro · react-native-svg (optional)

Install

npm i @pelagic-ui/icons

Usage

Toolbar.tsx
import { SearchIcon, BellIcon } from '@pelagic-ui/icons/react';

<SearchIcon />
<BellIcon variant="duotone" size={20} title="Notifications" />

Includes

  • Outline, duotone, solid
  • React, Vue, Svelte, Angular, Astro, RN
  • Web component + sprite.svg
  • Accessible titles

Export paths

Path What you get
@pelagic-ui/icons/react React components
@pelagic-ui/icons/vue · /svelte · /angular · /astro Framework adapters
@pelagic-ui/icons/react-native react-native-svg components
@pelagic-ui/icons/element <pelagic-icon> web component
@pelagic-ui/icons/sprite.svg SVG sprite
@pelagic-ui/icons/css Optional base styles

@pelagic-ui/illustrations

npm Every framework Empty states that match your theme

24 illustrations

24 original scenes — no data, no results, offline, 404, success and more — drawn with CSS variables so they recolor with every theme and brand color.

Version
0.1.0
Download size
27 kB
Unpacked
197 kB
License
MIT
Peer dependencies
react · vue · svelte · @angular/core · react-native-svg (optional)

Install

npm i @pelagic-ui/illustrations

Usage

Empty.tsx
import { EmptyState } from '@pelagic-ui/react';
import { NoResultsIllustration } from '@pelagic-ui/illustrations/react';

<EmptyState
  illustration={<NoResultsIllustration />}
  title="No results"
  description="Try a different search."
/>

Includes

  • 24 themeable scenes
  • Pairs with EmptyState
  • Web component and raw SVG
  • Zero dependencies

Export paths

Path What you get
@pelagic-ui/illustrations illustrationToSvg() and data
@pelagic-ui/illustrations/react · /vue · /svelte · /angular · /astro Framework adapters
@pelagic-ui/illustrations/native React Native
@pelagic-ui/illustrations/svg/* Raw SVG files

@pelagic-ui/core

npm Framework-agnostic Tokens, CSS and engines

21 built-in themes

The foundation every package shares: design tokens, the CSS for all components, 21 themes, createTheme() for brand colors, accessibility display modes, the motion engine and the sound engine.

Version
0.1.0
Download size
202 kB
Unpacked
666 kB
License
MIT
Peer dependencies
none

Install

npm i @pelagic-ui/core

Usage

theme.ts
import '@pelagic-ui/core/style.css';
import { applyTheme, createTheme, applyCustomTheme } from '@pelagic-ui/core/theme';
import { applyA11yPrefs } from '@pelagic-ui/core/a11y-prefs';

applyTheme({ mode: 'dark', accent: 'teal', shape: 'round' });
applyCustomTheme(createTheme({ primary: '#ff6a00' }));
applyA11yPrefs({ fontScale: 1.25, motion: 'reduce' });

Includes

  • style.css (65 kB gzip)
  • createTheme() with WCAG checks
  • data-a11y-* display modes
  • Motion and sound engines

Export paths

Path What you get
@pelagic-ui/core/style.css Every component style and theme
@pelagic-ui/core/theme applyTheme, createTheme, contrast math
@pelagic-ui/core/a11y-prefs Display modes and the panel renderer
@pelagic-ui/core/motion animate, springs, timelines, FLIP
@pelagic-ui/core/sound 18 synthesized UI sounds
@pelagic-ui/core/tokens Tokens as JS / TS
@pelagic-ui/core/a11y Focus trap, ids, announcer

At a glance

Which package do you need? Pick by platform.

Package Platform Count Download size Install
pelagic Everything 7 platforms in one package 624 kB npm i pelagic
@pelagic-ui/react React 18 / 19 171 components 182 kB npm i @pelagic-ui/react @pelagic-ui/core
@pelagic-ui/vue Vue 3 33 components 17 kB npm i @pelagic-ui/vue @pelagic-ui/core
@pelagic-ui/angular Angular 20–22 39 components & directives 61 kB npm i @pelagic-ui/angular @pelagic-ui/core
@pelagic-ui/svelte Svelte 5 33 components 13 kB npm i @pelagic-ui/svelte @pelagic-ui/core
@pelagic-ui/astro Astro 5 34 components 14 kB npm i @pelagic-ui/astro @pelagic-ui/core
@pelagic-ui/react-native React Native / Expo 31 components 13 kB npm i @pelagic-ui/react-native @pelagic-ui/core
pelagic_ui Flutter 3.24+ 30+ widgets — flutter pub add pelagic_ui
@pelagic-ui/three WebGL · React 6 WebGL components 13 kB npm i @pelagic-ui/three three
@pelagic-ui/icons Every framework 239 icons 85 kB npm i @pelagic-ui/icons
@pelagic-ui/illustrations Every framework 24 illustrations 27 kB npm i @pelagic-ui/illustrations
@pelagic-ui/core Framework-agnostic 21 built-in themes 202 kB npm i @pelagic-ui/core

Sizes measured from the 0.1.0 build with npm pack; the Flutter size is the Dart source in lib/.

Search Pelagic UI