
# الإضافات

يتضمن TailwindPHP نسخًا PHP من إضافات TailwindCSS الرسمية، ويوفر واجهة PHP لإضافة API أصلية. تسجل الإضافات الأدوات والمكونات والمتغيرات، ويجري تحميلها باستخدام التوجيه `@plugin` في ملف الإدخال CSS. الإضافات المدمجة نسخ مطابقة بنسبة 1:1 لنظيراتها JavaScript — بالمحددات والمخرجات نفسها — وقد نُفذت باستخدام PHP بدلًا من تشغيلها عبر Node. ثمة استثناء حاليًا: تعتمد معدّلات العناصر في إضافة typography (`prose-headings:` و`prose-a:`، …) على متغيرات الإضافات التي لا تُطبّق بعد ([#10](https://github.com/inline0/tailwindphp/issues/10)).

## استخدام `@plugin`

أشر إلى الإضافة باسمها باستخدام `@plugin`. تستخدم الإضافات المدمجة اسم حزمة npm الخاص بها. أرفق بالتوجيه `@import "tailwindcss/utilities.css";` ليُدرج فئات الإضافة في طبقة الأدوات:

```php
use TailwindPHP\tw;

$css = tw::generate([
    'content' => '<article class="prose prose-lg"><h1>Hello</h1><p>Content here</p></article>',
    'css' => '
        @plugin "@tailwindcss/typography";
        @import "tailwindcss/utilities.css";
    ',
]);
```

يمكن تحميل عدة إضافات معًا، ولا يؤثر ترتيبها:

```css
@plugin "@tailwindcss/typography";
@plugin "@tailwindcss/forms";
@import "tailwindcss/utilities.css";
```

لا يمكن تضمين `@plugin` داخل قاعدة توجيهية أخرى (مثل `@media`)، ويؤدي استخدام اسم إضافة غير مسجل إلى خطأ.

## خيارات الإضافة

مرّر الخيارات إلى الإضافة باستخدام صياغة الكتلة CSS بعد الاسم. تتوافق المفاتيح مع مصفوفة خيارات الإضافة:

```css
@plugin "@tailwindcss/forms" {
    strategy: "class";
}

@plugin "@tailwindcss/typography" {
    className: "markdown";
}
```

تقبل إضافة `@tailwindcss/forms` الخيار `strategy` (`base` أو `class`)؛ وتقبل `@tailwindcss/typography` الخيار `className` لإعادة تسمية فئة `prose` المُنشأة. راجع صفحات الإضافات لمعرفة قائمة الخيارات كاملة.

## الإضافات المدمجة

| الإضافة | الوصف |
|--------|-------------|
| `@tailwindcss/typography` | فئات `prose` — إعدادات طباعية افتراضية للنص المنسق. راجع [Typography](https://tailwindphp.inline0.dev/ar/docs/plugins/typography). |
| `@tailwindcss/forms` | عناصر تحكم في النماذج قابلة لإعادة الضبط والتنسيق. راجع [Forms](https://tailwindphp.inline0.dev/ar/docs/plugins/forms). |

## الإضافات المخصصة

اكتب إضافتك الخاصة بتنفيذ `PluginInterface` واستخدام دوال `PluginAPI` (`addUtilities` و`matchUtilities` و`addComponents` و`addVariant` و`theme` وغيرها). سجّلها باستخدام `registerPlugin(new MyPlugin())` ليُستدعى الاسم الذي تعيده `getName()` في توجيه `@plugin "my-plugin"`:

```php
use function TailwindPHP\registerPlugin;

registerPlugin(new MyCustomPlugin());
```

راجع [الإضافات المخصصة](https://tailwindphp.inline0.dev/ar/docs/plugins/custom) لمعرفة الواجهة ومثال كامل والمرجع الكامل لدوال `PluginAPI`.
