عن المشروع

Zag هو مكتبة JavaScript لآلات الحالات المنتهية لبناء مكونات واجهة المستخدم المتاحة. هدفها المعلن هو تجنب إعادة تنفيذ أنماط المكونات الشائعة (التبويبات، القوائم، الحوارات، أدوات التلميح وغيرها) بشكل منفصل في كل إطار برمجة من خلال نمذجة منطق التفاعل مرة واحدة بطريقة مستقلة عن الإطار. الأفكار الأساسية المذكورة في README: - اكتب مرة واحدة، استخدم في كل مكان: يتم نمذجة تفاعلات المكونات بشكل مستقل عن أي إطار برمجي، مع توفير محولات لـ React وSolid وSvelte وVue. - التركيز على إمكانية الوصول: يذكر المشروع أنه يتعامل مع تفاصيل مثل تفاعلات لوحة المفاتيح وإدارة التركيز وأدوار وعناصر ARIA. - عديم التصميم: تُوصف واجهات الآلات بأنها غير مصممة تمامًا، تاركة خيار حل التصميم للمطور. - آلات الحالات: temel البناء مبني على أفكار من مخططات الحالة، رغم أن README توضح أنها لا تتبع مواصفة SCXML. نموذج الاستخدام: يتم نشر الآلات كحزم منفصلة لكل مكون، على سبيل المثال @zag-js/dialog و@zag-js/tooltip، مع التثبيت عبر npm أو yarn. تتيح أغلفة الأطر البرمجية مثل @zag-js/react و@zag-js/vue و@zag-js/solid و@zag-js/svelte استهلاك الآلة داخل التطبيق. يظهر مثال React في README استخدام useMachine من @zag-js/react مع حزمة مكون، ثم connect(service, normalizeProps) لإنتاج واجهة برمجية للخصائص، والتي يتم نشرها على العناصر مثل الحاوية الجذرية وكل عنصر. المبادئ التوجيهية المذكورة في README: تُنمذج الآلات والاختبارات وفقًا لممارسات WAI-ARIA الإبداعية؛ تُكتب اختبارات شاملة لكل مكون لضمان اتساق السلوك عبر الأطر البرمجية؛ والآلات من المقرر أن تبقى خفيفة وبسيطة، متجنبة مفاهيم الآلات المعقدة مثل spawn والحالات المتداخلة. ملاحظات المستودع وسير العمل: - الوثائق وسجل التغييرات مربوطة من README (zagjs.com وCHANGELOG.md). - البناء يستخدم esbuild وturborepo للبناء المتزامن عبر الحزم، منتجًا مخرجات CJS وESM وDTS. - توجد أمثلة بداية لـ React (Next.js TypeScript) وVue 3 وSolid وSvelte. - اختبارات الطرف إلى الطرف تستخدم Playwright وتُشغل لكل إطار برمجي (React وVue وSolid). - أوامر مولدة متاحة لإنشاء حزمة آلة جديدة أو حزمة أداة جديدة. - تغطي أوامر أخرى تشغيل الاختبارات والتنظيف والبناء وبدء الموقع. يشير README أيضًا إلى عدد من getSource الإلهام، بما في ذلك الكود المكرر بين تطبيقات Chakra UI لـ React وVue وأنماط UI النقية وMaterial Components Web وRadix UI وXState وVue.js وLit وSonner. توجيهات المساهمة تشير إلى تصنيف Good First Issue وإبلاغ عن المشكلات والثغرات التوثيقية والطلبات المميزة. المشروع مرخص تحت MIT ويُدار تحت Chakra Systems Inc.