تكوين الويدجت
جميع الخيارات المتاحة لتخصيص سلوك ومظهر الويدجت.
التكوين الأساسي
SalonBookIt.init({
// مطلوب
apiKey: 'hh_pub_live_abc123...',
// الحاوية (محدد CSS أو عنصر DOM)
container: '#salonbookit-widget',
// الخيارات المرئية
theme: 'light',
primaryColor: '#1a365d',
locale: 'es',
// وضع العرض
mode: 'inline'
});
مرجع الخيارات
الخيارات المطلوبة
apiKey
string
مطلوب
مفتاح API الخاص بك في SalonBookIt. يُحصل عليه من لوحة التحكم في التكوين → التكاملات.
apiKey: 'hh_pub_live_abc123def456...'
الحاوية
container
string | HTMLElement
الافتراضي: '#salonbookit-widget'
محدد CSS أو مرجع لعنصر DOM حيث سيتم عرض الويدجت.
container: '#mi-contenedor'
// أو
container: document.getElementById('mi-contenedor')
المظهر
theme
'light' | 'dark' | 'auto'
الافتراضي: 'light'
المظهر المرئي للويدجت.
'light'- خلفية فاتحة، نص داكن'dark'- خلفية داكنة، نص فاتح'auto'- يكتشف تفضيل النظام
primaryColor
string
الافتراضي: '#1a365d'
اللون الرئيسي للأزرار والعناصر البارزة. يقبل أي لون CSS صالح.
primaryColor: '#e63946' // HEX
primaryColor: 'rgb(230, 57, 70)' // RGB
primaryColor: 'hsl(355, 78%, 56%)' // HSL
locale
'es' | 'en' | 'ar'
الافتراضي: 'es'
لغة واجهة الويدجت.
'es'- الإسبانية'en'- الإنجليزية'ar'- العربية (يشمل RTL)
borderRadius
string
الافتراضي: '12px'
نصف قطر الحدود للحاوية الرئيسية والعناصر الداخلية.
fontFamily
string
الافتراضي: 'inherit'
عائلة الخط. افتراضياً يرث خط الصفحة.
وضع العرض
mode
'inline' | 'modal' | 'button'
الافتراضي: 'inline'
كيف يُعرض الويدجت:
'inline'- مباشرة في الحاوية'modal'- في نافذة منبثقة مركزية'button'- فقط زر يفتح النافذة المنبثقة
buttonText
string
الافتراضي: 'حجز موعد'
نص الزر عندما mode يكون 'button' أو 'modal'.
buttonStyle
'solid' | 'outline' | 'text'
الافتراضي: 'solid'
النمط المرئي للزر.
الاختيار المسبق
serviceId
number | null
الافتراضي: null
معرف الخدمة للاختيار المسبق. سينتقل الويدجت إلى خطوة اختيار المحترف.
staffId
number | null
الافتراضي: null
معرف المحترف للاختيار المسبق. يتطلب أن serviceId يكون محدداً أيضاً.
date
string | null
الافتراضي: null
التاريخ للاختيار المسبق بتنسيق YYYY-MM-DD.
السلوك
showPrices
boolean
الافتراضي: true
عرض أو إخفاء أسعار الخدمات.
showDuration
boolean
الافتراضي: true
عرض أو إخفاء مدة الخدمات.
allowMultipleServices
boolean
الافتراضي: true
السماح باختيار خدمات متعددة في حجز واحد.
requirePhone
boolean
الافتراضي: true
طلب الهاتف لإكمال الحجز.
showNotes
boolean
الافتراضي: true
عرض حقل الملاحظات الإضافية في النموذج.
المدفوعات
enablePayments
boolean
الافتراضي: true
تفعيل المدفوعات عبر الإنترنت. يتطلب تكوين Stripe في لوحة التحكم.
paymentRequired
'always' | 'optional' | 'never'
الافتراضي: 'optional'
متى يُطلب الدفع عبر الإنترنت:
'always'- دائماً يتطلب الدفع'optional'- العميل يختار الدفع عبر الإنترنت أو محلياً'never'- حجز فقط، بدون دفع عبر الإنترنت
مثال كامل
SalonBookIt.init({
// المصادقة
apiKey: 'hh_pub_live_abc123def456...',
// الحاوية
container: '#booking-widget',
// المظهر
theme: 'light',
primaryColor: '#e63946',
locale: 'es',
borderRadius: '8px',
fontFamily: 'Inter, sans-serif',
// الوضع
mode: 'inline',
buttonText: 'احجز الآن',
// الاختيار المسبق
serviceId: 15,
staffId: null,
date: null,
// السلوك
showPrices: true,
showDuration: true,
allowMultipleServices: true,
requirePhone: true,
showNotes: true,
// المدفوعات
enablePayments: true,
paymentRequired: 'optional',
// Callbacks (انظر قسم الأحداث)
onReady: (business) => {
console.log('الودجت جاهز:', business);
},
onStepChange: (step, data) => {
console.log('الخطوة:', step, data);
},
onBookingComplete: (booking) => {
console.log('تم إنشاء الحجز:', booking);
window.location.href = '/gracias?reserva=' + booking.id;
},
onPaymentComplete: (payment) => {
console.log('تم الدفع:', payment);
},
onError: (error) => {
console.error('Error:', error);
}
});
تخصيص CSS
يكشف الويدجت عن متغيرات CSS للتخصيص المتقدم:
.sbk-widget {
/* الألوان */
--sbk-primary: #1a365d;
--sbk-primary-hover: #2c5282;
--sbk-background: #ffffff;
--sbk-surface: #f7fafc;
--sbk-text: #1a202c;
--sbk-text-secondary: #718096;
--sbk-border: #e2e8f0;
--sbk-success: #38a169;
--sbk-error: #e53e3e;
/* التباعد */
--sbk-spacing-xs: 4px;
--sbk-spacing-sm: 8px;
--sbk-spacing-md: 16px;
--sbk-spacing-lg: 24px;
--sbk-spacing-xl: 32px;
/* الطباعة */
--sbk-font-family: inherit;
--sbk-font-size-sm: 0.875rem;
--sbk-font-size-base: 1rem;
--sbk-font-size-lg: 1.125rem;
--sbk-font-size-xl: 1.25rem;
/* الحدود */
--sbk-radius-sm: 6px;
--sbk-radius-md: 8px;
--sbk-radius-lg: 12px;
/* الظلال */
--sbk-shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
--sbk-shadow-md: 0 4px 6px rgba(0,0,0,0.1);
}
مثال على التخصيص:
/* ملف الأنماط الخاص بك */
#salonbookit-widget .sbk-widget {
--sbk-primary: #8b5cf6;
--sbk-radius-lg: 20px;
--sbk-font-family: 'Poppins', sans-serif;
}