بيلاجيك UI مكتبة واجهات سهلة الوصول لكل إطار عمل
نظام تصميم واحد يُشحن كحزم أصلية لـ React وVue وAngular وSvelte وAstro وReact Native وFlutter. نفس الأسماء، نفس الخصائص، نفس المظهر — وإمكانية الوصول مُختبرة في كل بناء.
npm i pelagic - WCAG 2.2 AA
- 5,540 فحص تباين
- 21 ثيماً
- مرخّصة MIT
نفس البطاقة في كل منصة
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>
);
} <script setup lang="ts">
import { ref } from 'vue';
import { Card, Input, Segmented, Switch, ProgressBar, Badge, Button } from '@pelagic-ui/vue';
const envs = [{ label: 'Preview', value: 'preview' }, { label: 'Production', value: 'prod' }];
const name = ref('pelagic-app');
const env = ref('preview');
const notify = ref(true);
</script>
<template>
<Card title="New deployment">
<Input v-model="name" label="Project name" />
<Segmented v-model="env" label="Environment" :options="envs" />
<Switch v-model="notify" label="Notify the team" />
<ProgressBar :value="72" label="Build progress" />
<Badge variant="success">Checks passed</Badge>
<template #footer>
<Button>Deploy</Button>
</template>
</Card>
</template> import { Component, signal } from '@angular/core';
import { PELAGIC_UI } from '@pelagic-ui/angular';
@Component({
selector: 'app-deploy',
imports: [PELAGIC_UI],
template: `
<pl-card title="New deployment">
<pl-input label="Project name" [(value)]="name" />
<pl-segmented label="Environment" [options]="envs" [(value)]="env" />
<pl-switch label="Notify the team" [(value)]="notify" />
<pl-progress-bar [value]="72" label="Build progress" />
<pl-badge variant="success">Checks passed</pl-badge>
<div plCardFooter><button plButton>Deploy</button></div>
</pl-card>`,
})
export class DeployComponent {
envs = [{ label: 'Preview', value: 'preview' }, { label: 'Production', value: 'prod' }];
name = signal('pelagic-app');
env = signal('preview');
notify = signal(true);
} <script lang="ts">
import { Card, Input, Segmented, Switch, ProgressBar, Badge, Button } from '@pelagic-ui/svelte';
const envs = [{ label: 'Preview', value: 'preview' }, { label: 'Production', value: 'prod' }];
let name = $state('pelagic-app');
let env = $state('preview');
let notify = $state(true);
</script>
<Card title="New deployment">
<Input bind:value={name} label="Project name" />
<Segmented bind:value={env} label="Environment" options={envs} />
<Switch bind:checked={notify} label="Notify the team" />
<ProgressBar value={72} label="Build progress" />
<Badge variant="success">Checks passed</Badge>
{#snippet footer()}
<Button>Deploy</Button>
{/snippet}
</Card> ---
import Card from '@pelagic-ui/astro/components/Card';
import Input from '@pelagic-ui/astro/components/Input';
import Segmented from '@pelagic-ui/astro/components/Segmented';
import Switch from '@pelagic-ui/astro/components/Switch';
import ProgressBar from '@pelagic-ui/astro/components/ProgressBar';
import Badge from '@pelagic-ui/astro/components/Badge';
import Button from '@pelagic-ui/astro/components/Button';
const envs = [{ label: 'Preview', value: 'preview' }, { label: 'Production', value: 'prod' }];
---
<Card title="New deployment">
<Input label="Project name" value="pelagic-app" />
<Segmented name="env" label="Environment" options={envs} />
<Switch label="Notify the team" checked />
<ProgressBar value={72} label="Build progress" />
<Badge variant="success">Checks passed</Badge>
<Button slot="footer">Deploy</Button>
</Card> import { useState } from 'react';
import { Card, Input, Segmented, Switch, ProgressBar, Badge, Button } from '@pelagic-ui/react-native';
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 title="Deploy" onPress={deploy} />}>
<Input label="Project name" defaultValue="pelagic-app" />
<Segmented label="Environment" options={envs} value={env} onChange={setEnv} />
<Switch label="Notify the team" checked={notify} onChange={setNotify} />
<ProgressBar value={72} label="Build progress" />
<Badge variant="success">Checks passed</Badge>
</Card>
);
} import 'package:flutter/widgets.dart';
import 'package:pelagic_ui/pelagic_ui.dart';
Widget deployCard() => PelagicCard(
title: 'New deployment',
footer: PelagicButton(label: 'Deploy', onPressed: deploy),
child: Column(children: [
PelagicInput(label: 'Project name', controller: name),
PelagicSegmented<String>(
label: 'Environment',
options: const [
PelagicOption(value: 'preview', label: 'Preview'),
PelagicOption(value: 'prod', label: 'Production'),
],
value: env,
onChanged: setEnv,
),
PelagicSwitch(label: 'Notify the team', value: notify, onChanged: setNotify),
const PelagicProgressBar(value: 0.72, label: 'Build progress'),
const PelagicBadge(label: 'Checks passed', tone: PelagicTone.success),
]),
); الحزم
حزمة واحدة — أو اختر ما تحتاجه فقط
كل منصّة لها حزمة مستقلة، وكلها تقرأ نفس الرموز. ثبّت pelagic لتحصل على كل شيء، أو اختر حزمة إطارك فقط.
pelagic
npm كل شيء
7 منصّات في حزمة واحدة
النظام كاملاً في تثبيت واحد
حزمة واحدة تضم كل شيء: مكونات لكل إطار، رسوم بيانية، ثلاثي الأبعاد، أيقونات، رسوم توضيحية، محرّك الثيمات والحركة والصوت. أُطر العمل اعتماديات اختيارية، فلا يُحمَّل إلا ما تستورده.
- مدخل لكل إطار عمل
- CSS الأساسي والرموز ومحرّك الثيمات
- الأيقونات والرسوم التوضيحية
- مكونات ثلاثية الأبعاد WebGL
npm i pelagic @pelagic-ui/react
npm React 18 / 19
171 مكوّناً
المجموعة الأكثر اكتمالاً
- جدول البيانات والشجرة والتمرير الافتراضي
- 13 نوعاً من الرسوم البيانية سهلة الوصول
- محرّك الحركة والمعالج
- swal() و toast() و15 مؤشر تحميل
npm i @pelagic-ui/react @pelagic-ui/core @pelagic-ui/vue
npm Vue 3
33 مكوّناً
v-model في كل مكان
- نماذج مع v-model
- جدول بيانات بفتحات للخلايا
- نافذة ودرج وتلميح
- لوحة إمكانية الوصول
npm i @pelagic-ui/vue @pelagic-ui/core @pelagic-ui/angular
npm Angular 20–22
39 مكوّناً وموجّهاً
مستقلة، إشارات، نماذج
- موجّه plButton
- حقول للنماذج التفاعلية
- جدول بيانات بقوالب للخلايا
- حزمة الاستيراد PELAGIC_UI
npm i @pelagic-ui/angular @pelagic-ui/core @pelagic-ui/svelte
npm Svelte 5
33 مكوّناً
مكونات مبنية على Runes
- نماذج مع bind:value
- جدول بيانات وترقيم صفحات
- نافذة ودرج
- هياكل تحميل جاهزة
npm i @pelagic-ui/svelte @pelagic-ui/core @pelagic-ui/astro
npm Astro 5
34 مكوّناً
بلا JavaScript افتراضياً
- ThemeScript (بلا وميض للثيم الخاطئ)
- جدول بيانات مرتّب على الخادم
- تبويبات ونافذة وإشعارات
- لوحة إمكانية الوصول
npm i @pelagic-ui/astro @pelagic-ui/core @pelagic-ui/react-native
npm React Native / Expo
31 مكوّناً
نفس الواجهة، عناصر أصلية
- PelagicProvider مع كل الثيمات
- نماذج وجدول بيانات
- نافذة ودرج وإشعار
- دعم RTL عبر I18nManager
npm i @pelagic-ui/react-native @pelagic-ui/core pelagic_ui
pub.dev Flutter 3.24+
30+ عنصراً
Flutter خالص بلا اعتماديات
- PelagicApp مع كل الثيمات
- نماذج وتبويبات وأكورديون
- جدول بيانات قابل للترتيب
- رسوم أعمدة وخطوط
flutter pub add pelagic_ui @pelagic-ui/three
npm WebGL · React
6 مكونات WebGL
ثلاثي أبعاد يتبع الثيم
- Globe3D و Chart3D
- عارض النماذج (glTF)
- جسيمات وأشكال عائمة
- تحميل three.js عند الحاجة
npm i @pelagic-ui/three three @pelagic-ui/icons
npm كل الأطر
239 أيقونة
239 أيقونة أصلية ثنائية اللون
- خطي وثنائي ومصمت
- React و Vue و Svelte و Angular و Astro و RN
- مكوّن ويب و sprite.svg
- عناوين سهلة الوصول
npm i @pelagic-ui/icons @pelagic-ui/illustrations
npm كل الأطر
24 رسماً توضيحياً
حالات فارغة تطابق ثيمك
- 24 مشهداً قابلاً للتلوين
- يتكامل مع EmptyState
- مكوّن ويب و SVG خام
- بلا اعتماديات
npm i @pelagic-ui/illustrations @pelagic-ui/core
npm مستقلة عن الأطر
21 ثيماً مدمجاً
الرموز و CSS والمحرّكات
- style.css (65 kB مضغوطاً)
- createTheme() مع فحوص WCAG
- أوضاع العرض data-a11y-*
- محرّكا الحركة والصوت
npm i @pelagic-ui/core بيلاجيك UI بالأرقام
- مكوّناً في React
- 171
- منصّات بتصميم واحد
- 7
- ثيماً + لون علامتك
- 21
- فحص تباين آلي
- 5,540
- أيقونة أصلية
- 239
- رسماً توضيحياً
- 24
لماذا بيلاجيك
افتراضات بمستوى كبار المطوّرين، بلا إعداد
ثيمات بسمة واحدة
فاتح وداكن وتباين عالٍ × سبعة ألوان × ثلاثة أشكال. غيّر الثيم بسمة HTML أو حدّده لجزء من الصفحة.
اعرف المزيد: ثيمات بسمة واحدةأوضاع عرض لإمكانية الوصول
تباين، فلاتر عمى الألوان، حجم النص والتباعد، دليل القراءة، إيقاف الحركة، وأهداف أكبر — بسمات data-a11y-*.
- أصفر على أسود
- تدرّج رمادي
- خط مقروء
- دليل القراءة
- أهداف 44px
- بلا حركة
لون علامتك، متاح دائماً
createTheme() تحافظ على درجة لونك وتضبط الإضاءة حتى ينجح كل زوج ألوان في WCAG AA.
createTheme({ primary: '#ff6a00' }) رسوم بيانية سهلة الوصول
13 نوعاً بلا اعتماديات، يمكن التنقل فيها بلوحة المفاتيح، مع جدول بيانات بديل.
اعرف المزيد: رسوم بيانية سهلة الوصولحركة وصوت باحترام
محرّك نوابض وخطوط زمنية، و18 صوتاً للواجهة. يتوقف كل شيء مع تقليل الحركة.
اعرف المزيد: حركة وصوت باحترامالعربية و RTL أولاً
خصائص CSS منطقية في كل مكان، فتنعكس الواجهة كاملة بسمة dir واحدة.
239 أيقونة و24 رسماً
أيقونات ثنائية اللون ورسوم للحالات الفارغة تتلوّن مع الثيم.
اعرف المزيد: 239 أيقونة و24 رسماًبيلاجيك سبيس
اسحب وأفلت، أو صِف الصفحة بالعربية أو الإنجليزية، ثم صدّر React أو Vue أو Angular أو HTML.
افتح بيلاجيك سبيسمعاينة حية
تطبيق حقيقي مبني ببيلاجيك UI
ابحث، صفِّ، رتّب، أضف عضواً، وشغّل هياكل التحميل. كل ما يلي هو @pelagic-ui/react ويتبع الثيم.
| Status | |||
|---|---|---|---|
| LHLina Haddad | Design | 7 | Active |
| OSOmar Saleh | Engineering | 12 | Active |
| SNSara Nasser | Product | 4 | Away |
| YKYousef Karim | Engineering | 9 | Active |
| MFMaya Fares | Design | 3 | Active |
المكونات
143 مكوّناً موثّقاً في 11 فئة
كل فئة لها عروض حية وجداول خصائص ودعم لوحة المفاتيح وشيفرة جاهزة للنسخ.
اشحن واجهات سهلة الوصول على كل منصّة
مجانية ومفتوحة المصدر برخصة MIT.
npm i pelagic