Skip to content
New Pelagic Space — describe a page and watch it build

Pelagic UI The accessible component library for every framework

One design system shipped as native packages for React, Vue, Angular, Svelte, Astro, React Native and Flutter. Same names, same props, same look — and accessibility tested on every build.

npm i pelagic
  • WCAG 2.2 AA
  • 5,540 contrast checks
  • 21 themes
  • MIT licensed
Live preview
New deployment
Notify the team
Checks passed 12 regions LH OK SN

The same card on every platform

Deploy.tsx
import { useState } from 'react';
import { Card, Input, Segmented, Switch, ProgressBar, Badge, Button, toast } from '@pelagic-ui/react';

const envs = [{ label: 'Preview', value: 'preview' }, { label: 'Production', value: 'prod' }];

export function Deploy() {
  const [env, setEnv] = useState('preview');
  const [notify, setNotify] = useState(true);
  return (
    <Card
      title="New deployment"
      footer={<Button onClick={() => toast.success('pelagic-app is live')}>Deploy</Button>}
    >
      <Input label="Project name" defaultValue="pelagic-app" />
      <Segmented label="Environment" options={envs} value={env} onChange={setEnv} />
      <Switch label="Notify the team" showLabel checked={notify} onChange={setNotify} />
      <ProgressBar value={72} label="Build progress" />
      <Badge variant="success">Checks passed</Badge>
    </Card>
  );
}

Packages

One install — or only what you need

Every platform has its own package and they all read the same tokens. Install pelagic to get everything, or just your framework.

@pelagic-ui/react

npm React 18 / 19

171 components

The most complete set

  • DataTable, Tree, VirtualScroller
  • 13 accessible chart types
  • Motion engine and Wizard
  • swal(), toast(), 15 loaders
npm i @pelagic-ui/react @pelagic-ui/core

@pelagic-ui/vue

npm Vue 3

33 components

v-model everywhere

  • Forms with v-model
  • DataTable with cell slots
  • Dialog, Drawer, Tooltip
  • AccessibilityPanel
npm i @pelagic-ui/vue @pelagic-ui/core

@pelagic-ui/angular

npm Angular 20–22

39 components & directives

Standalone, signals, forms

  • plButton directive
  • Reactive-forms inputs
  • DataTable with cell templates
  • PELAGIC_UI import bundle
npm i @pelagic-ui/angular @pelagic-ui/core

@pelagic-ui/astro

npm Astro 5

34 components

Zero JS by default

  • ThemeScript (no flash of wrong theme)
  • Server-sorted DataTable
  • Tabs, Dialog, Toaster
  • AccessibilityPanel
npm i @pelagic-ui/astro @pelagic-ui/core

pelagic_ui

pub.dev Flutter 3.24+

30+ widgets

Pure Flutter, no dependencies

  • PelagicApp with every theme
  • Forms, tabs, accordion
  • Sortable PelagicDataTable
  • Bar and line charts
flutter pub add pelagic_ui

@pelagic-ui/three

npm WebGL · React

6 WebGL components

3D that follows the theme

  • Globe3D and Chart3D
  • ModelViewer (glTF)
  • ParticlesField, FloatingShapes
  • Lazy-loaded three.js
npm i @pelagic-ui/three three

@pelagic-ui/icons

npm Every framework

239 icons

239 original duotone icons

  • Outline, duotone, solid
  • React, Vue, Svelte, Angular, Astro, RN
  • Web component + sprite.svg
  • Accessible titles
npm i @pelagic-ui/icons

@pelagic-ui/core

npm Framework-agnostic

21 built-in themes

Tokens, CSS and engines

  • style.css (65 kB gzip)
  • createTheme() with WCAG checks
  • data-a11y-* display modes
  • Motion and sound engines
npm i @pelagic-ui/core

Compare every package

Pelagic UI in numbers

React components
171
platforms, one design
7
themes + your brand
21
automated contrast checks
5,540
original icons
239
illustrations
24

Why Pelagic

Senior-grade defaults, zero setup

Themes are one attribute

Light, dark and high contrast × seven accents × three shapes. Switch with an HTML attribute or scope a theme to any section.

Learn more: Themes are one attribute
light · violet default
dark · teal round
high contrast · amber sharp

Accessibility display modes

Contrast schemes, color-vision filters, text size and spacing, reading guide, motion off and large targets — as data-a11y-* attributes.

  • Yellow on black
  • Grayscale
  • Readable font
  • Reading guide
  • 44px targets
  • Motion off
Learn more: Accessibility display modes

Your brand color, still accessible

createTheme() keeps your hue and tunes lightness until every pair passes WCAG AA in every mode.

createTheme({ primary: '#ff6a00' })

RTL and Arabic first

Logical CSS everywhere, so a whole interface mirrors with one dir attribute.

طلب جديد تمت الموافقة على طلبك ✓

Pelagic Space

Drag and drop, or describe a page in English or Arabic — then export React, Vue, Angular or HTML.

Open Pelagic Space

Live preview

A real app built with Pelagic UI

Search, filter, sort, paginate, add a member, toggle loading skeletons. Everything below is @pelagic-ui/react and follows the theme.

Team directory · live React demo
Team members
Status
LHLina HaddadDesign7Active
OSOmar SalehEngineering12Active
SNSara NasserProduct4Away
YKYousef KarimEngineering9Active
MFMaya FaresDesign3Active

Ship accessible UI on every platform

Free and open source under the MIT license.

npm i pelagic
Get started

Search Pelagic UI