Preskoči na vsebino

المكتبة القياسية (Standard Library)

93 سلوكاً قابلاً لإعادة الاستخدام، منظمة كذرات وجزيئات وكائنات عضوية.


نظرة عامة

توفر المكتبة القياسية 93 سلوكاً قابلاً لإعادة الاستخدام لتطبيقات Orb، منظمة في ثلاثة مستويات:

المستوىالعددالدورأمثلة
الذرات (Atoms)50آلات حالة مستقلة غير قابلة للتقسيمstd-browse، std-modal، std-search، std-filter، std-timer
الجزيئات (Molecules)18تركّب الذرات عبر ناقل أحداث مشتركstd-list، std-cart، std-detail، std-messaging
الكائنات العضوية (Organisms)25تركّب الجزيئات في تطبيقات كاملةstd-ecommerce، std-crm، std-lms، std-helpdesk

كل سلوك هو دالة نقية تعيد OrbitalDefinition كاملاً (كيان + سمات + صفحات). تستدعيها بمعاملات (اسم الكيان، الحقول، مسار الصفحة) وتحصل على بنية .orb جاهزة للتصريف.

import { stdList } from '@almadar/std/behaviors/functions';

const orbital = stdList({
entityName: 'Product',
fields: [
{ name: 'title', type: 'string', required: true },
{ name: 'price', type: 'number', required: true },
],
pagePath: '/products',
pageTitle: 'Products',
});
// يعيد: entity + 4 traits (browse, create, edit, view) + 1 page

نموذج التركيب

الذرات: لبنات البناء

الذرات غير قابلة للتقسيم. كل منها سمة واحدة بآلة حالة واحدة. لا تعرف عن بعضها البعض.

std-browse: Browsing ──INIT──► Browsing (fetch + render list)
std-modal: Closed ──OPEN──► Open ──CLOSE──► Closed
std-search: Idle ──SEARCH──► Searching ──RESULTS──► Idle
std-filter: Idle ──FILTER──► Filtered ──CLEAR──► Idle

الجزيئات: ذرات مركّبة

الجزيئات تجمع الذرات باستخدام extractTrait (استخراج السمة) وwire (ربط أحداث emit/listen بين السمات). الجزيء ليس سلوكاً جديداً، بل ذرات مربوطة ببعضها.

std-list = std-browse + std-modal(create) + std-modal(edit) + std-modal(view)
└─ browse emits SELECT ──► view listens
└─ create emits SAVED ──► browse listens (refresh)
└─ edit emits SAVED ──► browse listens (refresh)
import { stdBrowse, stdModal } from '@almadar/std/behaviors/functions';
import { connect, compose } from '@almadar/core/builders';

// std-list هو تقريباً هذا التركيب:
const browseTrait = extractTrait(stdBrowse({ entityName: 'Product', ... }));
const createTrait = extractTrait(stdModal({ mode: 'create', ... }));
const editTrait = extractTrait(stdModal({ mode: 'edit', ... }));
const viewTrait = extractTrait(stdModal({ mode: 'view', ... }));

// ربط الأحداث بين السمات
wire(createTrait, 'PRODUCT_CREATED', browseTrait, 'INIT');
wire(editTrait, 'PRODUCT_UPDATED', browseTrait, 'INIT');

// تركيب في وحدة مدارية واحدة
const orbital = compose({
entityName: 'Product',
traits: [browseTrait, createTrait, editTrait, viewTrait],
pages: [{ path: '/products', traits: ['ProductBrowse', 'ProductCreate', 'ProductEdit', 'ProductView'] }],
});

الكائنات العضوية: تطبيقات كاملة

الكائنات العضوية تركّب الجزيئات في تطبيقات متعددة الصفحات مع ربط عبر الكيانات.

std-ecommerce = std-list(Product) + std-cart(CartItem) + std-wizard(Checkout)
└─ Product browse emits ADD_TO_CART ──► Cart listens
└─ Cart emits CHECKOUT ──► Checkout listens
└─ Checkout emits ORDER_PLACED ──► Cart listens (clear)

كتالوج السلوكيات

الذرات (50)

تفاعل الواجهة

السلوكالوصف
std-browseقائمة كيانات مع جلب، عرض كشبكة بيانات أو بطاقات كيانات
std-modalفتح/إغلاق طبقة لإنشاء أو تعديل أو عرض
std-drawerلوحة منزلقة من حافة الشاشة
std-tabsتبديل التبويبات مع لوحات المحتوى
std-wizardنموذج متعدد الخطوات مع تنقل للأمام/الخلف
std-confirmationحوار نعم/لا قبل الإجراءات التدميرية
std-displayعرض تفاصيل كيان للقراءة فقط
std-inputإدخال نموذج مع التحقق
std-uploadرفع ملف مع التقدم
std-galleryمعرض صور مع عرض مكبّر
std-flip-cardبطاقة بوجهين مع حركة قلب
std-ratingإدخال تقييم بالنجوم أو الأرقام
std-text-effectsنص متحرك (آلة كاتبة، تلاشي، إلخ.)
std-themeتبديل السمة (فاتح/داكن/مخصص)

إدارة البيانات

السلوكالوصف
std-searchإدخال بحث مع استعلام مؤجل + نتائج مصفاة
std-filterعناصر تصفية تضيّق مجموعة بيانات
std-sortعناصر ترتيب للأعمدة
std-paginationتنقل بين الصفحات لمجموعات البيانات الكبيرة
std-selectionتحديد متعدد بخانات الاختيار
std-undoمكدس تراجع/إعادة للإجراءات القابلة للعكس
std-calendarمنتقي تاريخ / عرض تقويم

غير متزامن + حالة

السلوكالوصف
std-asyncآلة حالة تحميل/نجاح/خطأ للعمليات غير المتزامنة
std-loadingمؤشر تحميل مع مهلة
std-timerعد تنازلي أو ساعة إيقاف
std-notificationإشعارات مؤقتة مع إغلاق تلقائي
std-cache-asideنمط cache-aside (تحقق من الذاكرة المؤقتة، جلب إذا لم توجد)
std-circuit-breakerقاطع دائرة للاستدعاءات الخارجية الفاشلة
std-rate-limiterتحديد معدل لاستدعاءات API

نواة الألعاب

السلوكالوصف
std-combatنظام قتال بالأدوار أو في الوقت الحقيقي
std-movementحركة على شبكة أو حركة حرة على خريطة
std-collisionكشف التصادم بين كائنات اللعبة
std-physics2dمحاكاة فيزياء ثنائية الأبعاد (جاذبية، سرعة)
std-questتتبع المهام/المهمات بالأهداف
std-overworldخريطة عالم باختيار المواقع
std-gameflowآلة حالة اللعبة (قائمة، لعب، متوقف، انتهاء اللعبة)
std-spriteحركة الرسوم المتحركة بتسلسل الإطارات
std-scoreتتبع النقاط مع المضاعفات

واجهة الألعاب

السلوكالوصف
std-game-hudواجهة العرض الرأسي (صحة، مانا، خريطة مصغرة)
std-score-boardلوحة الصدارة / أعلى النقاط
std-game-menuالقائمة الرئيسية، الإعدادات، الاعتمادات
std-game-over-screenانتهاء اللعبة مع إعادة المحاولة/الخروج
std-dialogue-boxحوار شخصيات مع خيارات
std-inventory-panelشبكة مخزون مع سحب وإفلات
std-combat-logسجل أحداث القتال المتمرر
std-game-audioإدارة الموسيقى والمؤثرات الصوتية

لوحة الألعاب

السلوكالوصف
std-game-canvas2dحلقة عرض لوحة ثنائية الأبعاد
std-game-canvas3dلوحة ثلاثية الأبعاد مع تكامل Three.js
std-isometric-canvasلوحة لعبة متساوية القياس بالبلاط
std-platformer-canvasلوحة لعبة منصات جانبية التمرير
std-simulation-canvasلوحة محاكاة فيزياء/جسيمات

الجزيئات (18)

السلوكمُركّب منالوصف
std-listbrowse + modal(create/edit/view)قائمة CRUD كاملة مع نوافذ إنشاء وتعديل وعرض
std-detaildisplay + modal(edit)عرض تفاصيل مع تعديل مضمّن
std-cartbrowse + selection + confirmationعربة تسوق مع إضافة/إزالة/دفع
std-inventorybrowse + selection + modalإدارة المخزون مع تتبع المخزون
std-messagingbrowse + input + asyncقائمة رسائل مع إرسال في الوقت الحقيقي
std-geospatialbrowse + modal + mapبيانات مبنية على الموقع مع علامات خريطة
std-form-advancedwizard + input + validationنموذج متعدد الأقسام مع حقول شرطية
std-quizwizard + score + timerاختبار بتوقيت مع نقاط
std-turn-based-battlecombat + score + game-hudنظام معركة بالأدوار
std-platformer-gamemovement + collision + physics2dميكانيكا لعبة منصات جانبية التمرير
std-puzzle-gameselection + score + timerلعبة ألغاز مع عد الحركات
std-builder-gameselection + inventory + canvasميكانيكا لعبة بناء/تصنيع
std-classifier-gameselection + score + timerلعبة فرز/تصنيف
std-sequencer-gametimer + score + inputلعبة حفظ تسلسلات
std-debugger-gamebrowse + selection + scoreلعبة البحث عن الأخطاء
std-negotiator-gamedialogue + score + timerلعبة تفاوض/حوار
std-simulator-gamesimulation-canvas + timer + scoreلعبة محاكاة فيزياء
std-event-handler-gametimer + score + inputلعبة ردود فعل مدفوعة بالأحداث

الكائنات العضوية (25)

السلوكالمجالالوصف
std-ecommerceتجارةكتالوج منتجات + عربة + دفع
std-crmمبيعاتإدارة جهات الاتصال/الصفقات/خط الأنابيب
std-lmsتعليمتتبع الدورات/الدروس/التقدم
std-cmsمحتوىإدارة المقالات/الصفحات/الوسائط
std-helpdeskدعمفرز التذاكر، التحقيق، الحل
std-hr-portalموارد بشريةإدارة الموظفين/الإجازات/التقييمات
std-social-feedتواصل اجتماعيتغذية المنشورات/التعليقات/الإعجابات
std-project-managerإدارة مشاريعإدارة المهام/السباقات/اللوحات
std-booking-systemضيافةإدارة الغرف/الفترات/الحجوزات
std-finance-trackerماليةتتبع المعاملات/الميزانيات/التقارير
std-healthcareطبيإدارة المرضى/المواعيد/السجلات
std-realtime-chatتواصلغرف محادثة مع رسائل في الوقت الحقيقي
std-trading-dashboardماليةبيانات السوق + تنفيذ الأوامر
std-iot-dashboardإنترنت الأشياءمراقبة الأجهزة + التنبيهات
std-devops-dashboardDevOpsصحة الخدمات + تتبع النشر
std-cicd-pipelineDevOpsخط أنابيب البناء/الاختبار/النشر
std-api-gatewayبنية تحتيةإدارة التوجيه/تحديد المعدل/المصادقة
std-coding-academyتعليمدروس برمجة تفاعلية
std-stem-labتعليممحاكاة تجارب علمية
std-logic-trainingتعليمتدريب ألغاز المنطق
std-rpg-gameألعابلعبة تقمص أدوار مع مهام + قتال
std-platformer-appألعابتطبيق لعبة منصات كامل
std-puzzle-appألعابمجموعة ألعاب ألغاز
std-strategy-gameألعابلعبة استراتيجية بالأدوار
std-arcade-gameألعابميكانيكا ألعاب أركيد كلاسيكية

استخدام السلوكيات

كدوال نقية

import { stdList, stdEcommerce } from '@almadar/std/behaviors/functions';

// بسيط: كيان واحد مع CRUD
const tasks = stdList({
entityName: 'Task',
fields: [
{ name: 'title', type: 'string', required: true },
{ name: 'status', type: 'enum', values: ['todo', 'doing', 'done'] },
],
pagePath: '/tasks',
});

// معقد: تجارة إلكترونية متعددة الكيانات
const shop = stdEcommerce({
productEntity: 'Product',
productFields: [...],
cartEntity: 'CartItem',
orderEntity: 'Order',
});

كملفات .orb ذهبية

كل سلوك يُصدَّر أيضاً كملف .orb في @almadar/std/behaviors/exports/:

# عرض جميع السلوكيات المتاحة
ls node_modules/@almadar/std/behaviors/exports/atoms/
ls node_modules/@almadar/std/behaviors/exports/molecules/
ls node_modules/@almadar/std/behaviors/exports/organisms/

هذه الملفات الذهبية تُستخدم بواسطة:

  • مُصرِّف Orb لمطابقة السلوكيات
  • وكيل الذكاء الاصطناعي لتوليد البرامج
  • مخطط Masar للمقارنة الهيكلية

تركيب سلوكيات مخصصة

import { stdBrowse, stdModal, stdSearch } from '@almadar/std/behaviors/functions';
import { compose, wire, extractTrait } from '@almadar/core/builders';

// إنشاء جزيء مخصص: قائمة قابلة للبحث مع نافذة إنشاء
const searchableCatalog = compose({
appName: 'Catalog',
orbitals: [
stdBrowse({ entityName: 'Item', fields: [...] }),
stdSearch({ entityName: 'Item' }),
stdModal({ entityName: 'Item', mode: 'create' }),
],
});

تكامل الأنماط

السلوكيات تستخدم أنماطاً من سجل الأنماط (233 نمطاً) لتأثيرات render-ui. كل نمط يُربط بمكوّن React:

فئة النمطأمثلةتُستخدم بواسطة
عرض البياناتdata-grid، entity-table، entity-cards، data-liststd-browse
النماذجform-section، form-field، form-wizardstd-modal، std-wizard
التنقلpage-header، breadcrumb، tabsstd-tabs، الصفحات
ردود الفعلalert، toast، modal-dialogstd-notification، std-confirmation
التخطيطstack، grid، sidebar-layoutجميع الكائنات العضوية
الألعابgame-canvas، game-hud، score-displayسلوكيات الألعاب

الخطوات التالية