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
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
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
<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
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
<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
---
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
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
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
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
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
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
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/.