React · React Native · 16 مكوّنًا

التفاعلات الصعبة، جاهزة.

Animated Chorus مجموعة مكوّنات حركة للتفاعلات التي يصعب إتقانها يدويًا: أرقام تتدحرج، ونص متدفق، وتبديلات يتغيّر معها الحجم، ولوحات منبثقة، ومقلّبات صفحات، وإجراءات بالسحب، وقوائم لا تحرّك إلا ما تغيّر. وسم واحد وبياناتك. لا provider ولا إعداد.

التثبيت
npm install @kkwaenggwari/animated-chorus

مقيس على هذا البناء

Chrome، 2026-09-28. كل الشروط والعيّنات في دليل الأداء. كيف قيس

  • 28.0KBKB gzip لكل التصديرات الستة عشر

    نقطة دخول الويب كاملة، مصغّرة. React هي التبعية النظيرة الوحيدة.

  • 0استدعاءات إطارات JS أثناء الحركة

    رقم وارتفاع وتمييز تتغيّر معًا: يشغّل المتصفح الحركات الـ 12 كلها.

  • 1اعتماد React لكل تغيير في القيمة

    يُعاد عرض MotionNumber حين تتغيّر القيمة، لا أثناء تدحرجها أبدًا.

  • 11اعتمادات React لـ 3000 حرفًا متدفقًا

    يضيف MotionStream الأحرف مباشرة ويدمجها في React بضع مرات في الثانية.

01الأسهل

وسم واحد وبياناتك

كل مكوّن يعمل وحده: لا provider ولا مكوّن غلاف ولا استدعاء إعداد. تأخذ المجموعات items وrenderItem، ويبقى تخطيطك ونصوصك وأنماطك ملكك.

  • استورد مكوّنًا ومرّر قيمة. هذا هو التكامل كله.
  • تقرأ القوائم وعلامات التبويب ومقلّبات الصفحات مصفوفتك؛ والمفاتيح افتراضيًا item.id.
  • يبقى النص نصًا حقيقيًا: يلتف، ويتحجّم مع الخط، ويمكن تحديده.
  • <MotionNumber value={total} />;
  • <MotionSwap value={status}>{label}</MotionSwap>;
  • <MotionHeight open={open}>{details}</MotionHeight>;
  • <MotionHighlight items={tabs} value={tab} onValueChange={setTab} />;
  • <MotionList items={tasks} renderItem={(task) => task.title} />;
  • <ProgressRing value={progress} />;

ستة مكوّنات حية، وسطر الشيفرة الواحد خلف كلٍّ منها.

جارٍ تجهيز المثال…

02الأسرع

يشغّله المتصفح. ويبقى React ساكنًا.

على الويب لا توجد مكتبة حركة لتحميلها: تسلّم المكوّنات حركتها إلى Web Animations API، فلا يكلّف رقم يتدحرج أو لوحة يتغيّر حجمها أي JavaScript لكل إطار ولا أي عرض React أثناء الحركة.

  • 0 استدعاء إطارات JS بينما تعمل 12 حركات معًا.
  • اعتماد React واحد لكل تغيير في القيمة، لا لكل إطار.
  • النص المتدفق: 11 اعتمادات React لـ 3000 حرفًا. يعدّ المثال أدناه عمليات عرضه بنفسه.

جارٍ تجهيز المثال…

03الأكثر استقرارًا

قاطع أي شيء. لا شيء يقفز.

كل قيمة جديدة تبدأ مما على الشاشة والنوابض تحتفظ بسرعتها، فتبدو النقرات السريعة ودفعات البيانات والانعكاسات مقصودة. وحين تنتهي الحركة لا يبقى شيء قيد التشغيل.

  • الأرقام لا تنقسم أبدًا: تنزلق الخانات المتبقية أثناء تدحرجها.
  • 200 قيم جديدة بفاصل 5 ms: تبقى بعدها 0 حركات، والنص النهائي دقيق.
  • آمن مع React StrictMode. في تطبيق React Native في الخلفية تستقر الحركة على حالتها النهائية.

جارٍ تجهيز المثال…

16 مكوّنًا، مجمّعة حسب المهمة

الأرقام والنصوص، والمحتوى الذي يتغيّر حجمه، والاختيار، والقوائم، والإيماءات، والطبقات العلوية، والتقدّم. لكلٍّ منها منصة تجربة حية بجانبها props الخاصة به.

كل المكوّنات

الاستيراد نفسه على الويب وفي React Native

يختار Metro التنفيذ الأصلي، وتختار حزّامات الويب تنفيذ DOM. كل منصة تشغّل الحركة بأفضل ما تستطيع.

App.jsx
// Web and React Native: the same import.
import { MotionNumber, MotionList } from '@kkwaenggwari/animated-chorus';

export function Score({ points, players }) {
  return (
    <>
      <MotionNumber value={points} />
      <MotionList items={players} renderItem={(player) => player.name} />
    </>
  );
}
الجزءالويبReact Native
Transform وopacityWeb Animations API، ونوابض محسوبة تحليليًاAnimated مع المشغّل الأصلي
العرض والارتفاعWeb Animations APIAnimated مع مشغّل JS، لأنه تخطيط
النص المتدفقأحرف تُضاف وتظهر بالتدريج؛ بضع عمليات عرض React في الثانيةText حقيقي، يظهر من دون تلاشٍ
اللوحات والتكبيرdialog أصلي في الطبقة العلياModal شفاف؛ يغلقه زر الرجوع

ابدأ في دقيقتين

ثبّت، واستورد مكوّنًا، ومرّر قيمة.

npm install @kkwaenggwari/animated-chorus

بحث

اكتب للبحث في التوثيق.