> ## Documentation Index
> Fetch the complete documentation index at: https://docs.youka.io/llms.txt
> Use this file to discover all available pages before exploring further.

# الإعدادات المسبقة

> إدارة إعدادات عرض قابلة لإعادة الاستخدام من خلال SDK

الإعداد المسبق هو إعداد عرض قابل لإعادة الاستخدام — الخلفية، نمط الترجمة، التخطيط — يمكنك تطبيقه على أي مشروع أو تصدير. استخدم الإعدادات المسبقة عندما يكون لديك مظهر متّسق عبر العديد من المقاطع.

راجع [مرجع إعدادات العرض](/en/render-settings-reference) للاطلاع على الشكل الكامل لـ
`preset` وكل خيار مدعوم بقيم enum.

## `client.presets.list(options?)`

اعرض كل إعداد مسبق مملوك للحساب المصادَق عليه.

```ts theme={null}
const presets = await client.presets.list();
presets.forEach((p) => console.log(p.id, p.name, p.isDefault));
```

## `client.presets.get(presetId, options?)`

اجلب إعدادًا مسبقًا واحدًا.

```ts theme={null}
const preset = await client.presets.get("preset_abc123");
```

## `client.presets.create(body, options?)`

أنشئ إعدادًا مسبقًا جديدًا.

```ts theme={null}
const preset = await client.presets.create({
  name: "Neon Night",
  preset: {
    background: {
      type: "gradient",
      colors: ["#12001f", "#2f0a57"],
      angle: 90,
    },
    singerTextStyles: {
      0: {
        fontFamily: "Inter",
        textColor: "#00f5ff",
        effectColor: "#ff4fd8",
      },
    },
  },
  isDefault: false,
});
```

<ParamField path="name" type="string" required>
  اسم العرض الذي يظهر في واجهة Youka.
</ParamField>

<ParamField path="preset" type="KaraokePreset" required>
  جسم الإعداد المسبق بالكامل. استخدم [`مرجع إعدادات
      العرض`](/en/render-settings-reference) لعرض خريطة الحقول بصيغة سهلة القراءة،
  أو `KaraokePresetSchema.toJSONSchema()` للحصول على المخطط بصيغة قابلة للقراءة آليًا.
</ParamField>

<ParamField path="isDefault" type="boolean">
  عيّن الإعداد المسبق الجديد كإعداد افتراضي للحساب. يمكن أن يكون هناك إعداد مسبق واحد فقط
  افتراضيًا في أي وقت.
</ParamField>

اقرنه بمفتاح idempotency لإعادة المحاولات بأمان:

```ts theme={null}
const preset = await client.presets.create(body, {
  idempotencyKey: "create-neon-night-v1",
});
```

## `client.presets.update(presetId, body, options?)`

حدّث (Patch) إعدادًا مسبقًا موجودًا. مرّر أي جزء من `name` و`preset` و`isDefault`.

```ts theme={null}
const updated = await client.presets.update("preset_abc123", {
  name: "Neon Night v2",
  preset: {
    singerTextStyles: {
      0: { textColor: "#ff2a2a" },
    },
  },
});
```

## `client.presets.delete(presetId, options?)`

احذف إعدادًا مسبقًا.

```ts theme={null}
await client.presets.delete("preset_abc123", {
  idempotencyKey: "delete-preset_abc123",
});
```

<Warning>
  حذف إعداد مسبق لا يحذف المشاريع أو عمليات التصدير التي سبق
  عرضها باستخدامه. ستفشل عمليات التصدير المستقبلية التي تشير إلى الإعداد المسبق المحذوف.
</Warning>

## `client.presets.setDefault(presetId, options?)`

عيّن إعدادًا مسبقًا كإعداد افتراضي للمشاريع الجديدة. هذا غلاف مريح حول `client.presets.update(presetId, { isDefault: true })`.

```ts theme={null}
await client.presets.setDefault("preset_abc123");
```

تعيين إعداد افتراضي جديد يلغي تلقائيًا تعيين الإعداد السابق.

## اكتشاف الحقول الصالحة

يقوم SDK بتصدير مخطط Zod الذي يتحقق من صحة أجسام الإعدادات المسبقة. حوّله إلى JSON Schema أثناء وقت التشغيل للوكلاء وبُنّاة النماذج:

```ts theme={null}
import { KaraokePresetSchema } from "@youka/sdk";

const jsonSchema = KaraokePresetSchema.toJSONSchema();
console.log(jsonSchema);
```

<Tip>
  لمؤلفي الوكلاء: استدعِ هذا المخطط قبل تعديل الإعدادات المسبقة لكي يعرف النموذج
  أسماء الحقول وأنواع القيم بدقة.
</Tip>

مرجع سهل القراءة:

* [مرجع إعدادات العرض](/en/render-settings-reference)
* [إعدادات CLI المسبقة](/ar/cli/presets)
* [إعدادات API المسبقة](/ar/api/presets)

## تطبيق إعداد مسبق

طبّق الإعدادات المسبقة في ثلاث نقاط:

<Tabs>
  <Tab title="عند إنشاء المشروع">
    ```ts theme={null}
    await client.projects.create({
      source: { type: "path", path: "./song.mp3" },
      presetId: "preset_abc123",
    });
    ```
  </Tab>

  <Tab title="ضمن إعدادات المشروع">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      presetId: "preset_abc123",
    });
    ```
  </Tab>

  <Tab title="عند التصدير">
    ```ts theme={null}
    await client.exports.create("prj_abc123", {
      presetId: "preset_abc123",
      resolution: "1080p",
    });
    ```
  </Tab>
</Tabs>

## ما التالي

* [مرجع إعدادات العرض](/en/render-settings-reference) — جميع مسارات الحقول المشتركة وقيم enum
* [الوسائط](/ar/sdk/media) — المشار إليها من أجسام الإعدادات المسبقة
* [إعدادات المشروع](/ar/sdk/project-settings) — طبّق الإعدادات المسبقة على مشروع
* [إعدادات API المسبقة](/ar/api/presets) — نفس التدفق عبر HTTP خام
* [إعدادات CLI المسبقة](/ar/cli/presets) — نفس التدفق من الطرفية
* [عمليات التصدير](/ar/sdk/exports) — اعرض باستخدام إعداد مسبق
