دليل Vue
مكوّنات ملف واحد في Vue 3 بخصائص مُنمَّطة، defineModel
وربط ثنائي الاتجاه، وتمرير v-bind="$attrs" .
ما الذي ستبنيه
نموذج اتصال صغير — حقل بتسمية، زر إرسال، v-model
ربط، سلوك حقيقي للوحة المفاتيح وقارئ الشاشة — عاريًا أولًا ثم منسَّقًا، في نحو 10 دقائق.
قبل أن تبدأ
تحتاج إلى git وNode 22 أو أحدث وpnpm 10 أو أحدث. يصلح أي مشروع Vue 3 — Nuxt أو Vite أو Vue العادي.
الخطوة 1 — احصل على الشيفرة
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-vue-headless
pnpm install
pnpm test # vitest + @testing-library/vue
pnpm run storybook # browse all 571 components
المكوّنات ملفات مسطّحة في components/ —
Button.vue, TextInput.vue — لكل منها اختباره وstory ووثائقه بجانبه. انسخ الملفات التي تحتاجها، أو اجلب المستودع.
الخطوة 2 — مكوّنك الأول
<script setup>
import Button from "lily-design-system-vue-headless/components/Button.vue";
</script>
<template>
<Button @click="save">Save</Button>
</template>
يعرض <button class="button" type="button">. الخصائص تطابق الأطر الأخرى: type, disabled,
pressed, label، إضافة إلى تمرير السمات لكل ما عداها.
الخطوة 3 — ركّب نموذجًا صغيرًا
<script setup>
import { ref } from "vue";
import Form from ".../components/Form.vue";
import Field from ".../components/Field.vue";
import TextInput from ".../components/TextInput.vue";
import Button from ".../components/Button.vue";
const name = ref("");
</script>
<template>
<Form @submit="handleSubmit">
<Field label="Full name" required>
<TextInput id="name" label="Full name" v-model="name" required />
</Field>
<Button type="submit">Save</Button>
</Form>
</template>
Field يأخذ label كخاصية خاصة به لا كمكوّن تسمية متداخل — مرّرها مرة واحدة على
Fieldو TextInputالمطابق من
label يوفّر الاسم القابل للوصول.
تم التحقق في 2026-08-29: كانت مسودة سابقة تضع مكوّن Label داخل Fieldفيعرض
تسميتين (إحداهما فارغة) لأن Field يعرض تسميته بنفسه من المدخل label خاصية — اكتُشف بتجميع المقتطف نفسه. المسار
مسار نموذج الاتصال المركّب
هو النمط نفسه، جُرّب باختبارات e2e وaxe حقيقية.
TextInput يستخدم defineModel، لذا يعمل
v-model العادي مباشرة.
تحقق من عملك: شغّل التطبيق فيبدو النموذج بسيطًا — تمامًا كما هو مقصود: التنسيق لا يزال قادمًا. اضغط Tab: ينتقل التركيز عبر كل عنصر تحكم، وتُعلن التسمية، ويعمل الإرسال. السلوك مكتمل؛ والمظهر لك وهو الخطوة التالية.
الخطوة 4 — نسِّقه
نسِّق خطّافات الأصناف — .button, .text-input,
.label, .field — في ورقة الأنماط لديك، أو اربط سمة جاهزة في index.html / nuxt.config:
<link rel="stylesheet" href="/themes/nord.css" />
الخطوة 5 — شاهد كل شيء يعمل
تطبيق المثال Nuxt هو الفهرس الكامل منسَّقًا ومعروضًا، مع Playwright e2e وخط أساس axe-core:
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-vue-nuxt-examples
pnpm install && pnpm run dev
الخطوات التالية
- السمات — التبديل أثناء التشغيل بمساعد theme-picker لـ Vue.
- مساعدات التفضيلات — اللغة وحجم النص.
- فهرس المكوّنات — الخصائص وARIA ولوحة المفاتيح لكل مكوّن.
أسئلة في الطريق؟ صفحة المساعدة مليئة بالإجابات — وإن أمكن توضيح خطوة أكثر، أخبرنا وسنحسّن الدليل بكل سرور.