المكوّنات
لوحتا الأسعار
لوحتان جنبًا إلى جنب في إطار واحد: ما يُشترى مرة واحدة على شريط سماوي، ثم خطط الاشتراك الشهري. كل سعر يأتي من بياناتك.
المعاينة
«معكوس» هو المحتوى الإنجليزي نفسه من اليمين إلى اليسار، ليفصل خطأ الاتجاه عن خطأ الترجمة.
التثبيت
قريبًايُفتح التثبيت من السجل قريبًا، وهذه هي الأوامر التي ستشغّلها حينها.
npx ritla add pricing-pairويعمل أيضًا مع shadcn: npx shadcn@latest add @ritla/pricing-pair
الاعتماديات التي يضيفها: @phosphor-icons/react
التثبيت اليدوي ينسخ مصدر المكوّن إلى مشروعك. المصدر يأتي مع ترخيص Ritla UI، وأداة سطر الأوامر هي الطريق الأقصر إلى الملفات نفسها.
الاستخدام
import { PricingFeatures, PricingPair, PricingPanel, PricingPlan, PricingPlans } from "@/components/ui/pricing-pair";<PricingPair>
<PricingPanel tone="brand" eyebrow="One-time purchase" title="Card kit">
<PricingFeatures items={["Card designs, lifetime updates", "A license key for your team"]} />
</PricingPanel>
<PricingPanel eyebrow="Monthly subscription" title="Accounts">
<PricingPlans label="Account plans">
{plans.map((p) => <PricingPlan key={p.id} name={p.name} amount={p.amount} currency="USD" period="/mo" description={p.text} />)}
</PricingPlans>
</PricingPanel>
</PricingPair>مرجع الخصائص
PricingPair
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
children | ReactNode | لا يوجد | لوحتا PricingPanel: ما يُشترى مرة واحدة، ثم ما يُشترك فيه. |
PricingPanel
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
eyebrow | ReactNode | لا يوجد | التسمية الصغيرة فوق العنوان. بأحرف كبيرة في الإنجليزية، وبلا تباعد بين الحروف في العربية. |
title | ReactNode | لا يوجد | اسم المنتج، ويظهر عنوانًا للوحة. |
headingLevel | 2 | 3 | 4 | 3 | مستوى العنوان تحت عنوان القسم. |
tone | "default" | "brand" | "default" | brand يضع اللوحة على الشريط السماوي. |
PricingPlan
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
name | ReactNode | لا يوجد | اسم الخطة. |
amount | number | لا يوجد | المبلغ من بيانات أسعارك؛ لا يُكتب أي مبلغ داخل المكوّن. |
currency | string | لا يوجد | رمز ISO 4217 من بياناتك (USD أو SAR). |
period | ReactNode | لا يوجد | بعد المبلغ بخط أصغر («شهريًا»). اتركه فارغًا للخطة المجانية. |
description | ReactNode | لا يوجد | ما تشمله الخطة، في سطر. |
PricingPlans
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
label | string | لا يوجد | اسم القائمة لقارئ الشاشة («خطط الحساب»). |
PricingFeatures
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
items | ReactNode[] | لا يوجد | ما تشمله، سطر لكل بند. |
إمكانية الوصول
ARIA
- كل لوحة
sectionبعنوان، والخطط قائمة باسمlabel، والمزايا قائمة. - المبلغ وعملته وحدة معزولة، فلا يتبدّل ترتيبهما داخل النص العربي.
ملاحظات العربية والاتجاه
ينعكس
- اللوحة الأولى على اليمين، والخط بين اللوحتين وبين الخطط عند بدايتها.
- علامة الصح في بداية كل سطر.
لا ينعكس
- علامة الصح لا تنعكس، والمبلغ يبقى بترتيب لغته.
- الأرقام
- الأسعار بالأرقام الغربية (
123) دائمًا في اللغتين، مهما كان إعداد الأرقام، لتطابق صفحة إتمام الشراء. العملة من بياناتك. - الخط العربي
- العنوان
body-20بوزن Medium، والمبلغheading-32، والتسميةlabel-12في الإنجليزية وlabel-14في العربية. - النص ثنائي الاتجاه
- المبلغ معزول؛ أسماء المنتجات اللاتينية تُعزل داخل النص العربي.