الهوية البصرية
اجعل الموقع ولوحة التحكم لك: الاسم والرمز والأيقونات، والألوان والخطوط، وبيانات الشركة، ونصوص محركات البحث.
لحزمة الحزمة الكاملة
أين توجد الهوية البصرية
| العنصر | الموقع (storefront/) | لوحة التحكم (admin-dashboard/) |
|---|---|---|
| الاسم والبيانات الوصفية | src/config/brand.config.ts | src/config/brand.config.ts |
| قيم المنطقة الزمنية والعملة الاحتياطية | src/config/booking.config.ts | إعدادات الشركة |
| الألوان والاستدارة والظلال | src/styles/theme-variables.css | src/styles/theme-variables.css |
| الرمز والأيقونات | public/brand/, public/, src/app/ | public/brand/, public/, src/app/ |
| الخطوط | src/app/[locale]/layout.tsx، وملفات في src/fonts/ | src/app/layout.tsx، وملفات في src/fonts/ |
| النصوص | messages/ | messages/ |
كل لون رمز (token) يُعرَّف مرة للمظهر الفاتح (:root) ومرة للمظهر الداكن (:root[data-theme="dark"]). تقرأ المكونات الرموز فقط، لذلك يصل تغيير الرمز إلى كل صفحة. غيّر لون العلامة في الكتلتين، وإلا احتفظ مظهر واحد باللون القديم.
اسم الموقع وقيمه الاحتياطية
في storefront/src/config/brand.config.ts وstorefront/src/config/booking.config.ts:
// brand.config.ts
name: { en: "Hollina", ar: "Hollina" }, // tab titles, sharing cards, the wordmark, the manifest
tagline: { en: "...", ar: "..." }, // until the dashboard's settings answer
description: { en: "...", ar: "..." }, // the installable app's description
contactEmail: "hello@example.com", // until the dashboard's settings answer
contactPhone: "+1 202 555 0147", // until the dashboard's settings answer
keywords: ["vacation rental", ...], // the meta keywords
// booking.config.ts
DEFAULT_TIMEZONE = "America/New_York"; // calendar days, "today", the i18n clock
DEFAULT_CURRENCY = "USD"; // prices without a currency of their ownالاسم النصي بجوار الرمز نص حي بخط Outfit (src/components/BrandMark.tsx)، لذلك يتبع name. ويظهر اسم الشركة أيضًا في جمل، باللغتين: ابحث في messages/ عن Hollina وأعد كتابة تلك الأسطر. أما وقت الرد في صفحة التواصل وفي نافذة السؤال («عادة خلال يوم») فهو نص في messages/contact وmessages/inquiry.
رمز الموقع وأيقوناته وصوره
| الملف | الاستخدام |
|---|---|
public/brand/hollina-mark.svg | الرمز في السمة الفاتحة (الترويسة والتذييل) |
public/brand/hollina-mark-white.svg | الرمز في السمة الداكنة |
src/app/icon.svg | أيقونة علامة تبويب المتصفح |
src/app/apple-icon.png | أيقونة الشاشة الرئيسية على iPhone وiPad |
public/web-app-manifest-192x192.png, public/web-app-manifest-512x512.png | أيقونات التطبيق القابل للتثبيت |
public/icons/stay-types/type-*.svg | رموز أنواع الإقامة الستة، مرسومة بـ currentColor |
public/icons/flags/us.svg, sa.svg | الأعلام في قائمة اللغات |
استبدل الملفات وأبقِ أسماءها، أو غيّر mark.color وmark.white في إعداد العلامة. تخدم واجهة API صور الشركة من public/media/hollina/site/ في مجلد واجهة API: 01-hero.webp (صورة المشاركة لكل صفحة ليس لها صورة خاصة بها)، وhow-dates.webp وhow-pay.webp وhow-arrive.webp (الخطوات الثلاث في «كيف تحجز»)، وhost-desk.webp (بطاقة الفريق المضيف في صفحة التواصل). استبدلها بالأسماء نفسها. أما صور الإقامات والوجهات فتُرفع من لوحة التحكم.
ألوان الموقع وخطوطه
| المتغير | فاتح | داكن | الدور |
|---|---|---|---|
--primaryColor | #3F5B38 | #AEC79F | الإجراءات الأساسية، والعناصر المحددة، والأسعار، والإطار المزدوج، وحلقة التركيز |
--primaryColorHover | #30472B | #C1D6B5 | التمرير والضغط |
--primary-tint | #E2E9D8 | #2B3B2A | التعبئة المحددة، والليالي المحددة في التقويم، واللوحات الهادئة |
--background | #F4F5EE | #171D17 | الصفحة |
--surface | #FFFFFF | #222B22 | البطاقات والترويسة والتذييل والنوافذ المنبثقة |
--text | #263128 | #F0F3EB | العناوين والنص البارز |
--text-muted | #586454 | #BEC8B7 | النص الثانوي |
يسرد storefront/BRANDING.md كل رمز لوني. تأكد أن النص على ألوانك ما زال يُقرأ بنسبة 4.5 إلى 1 في السمتين. تُشحن ملفات الخطوط في src/fonts/ وتُحمَّل بـ next/font/local، فلا ينزّلها البناء أبدًا ولا يرسل الموقع أي طلب إلى Google: Outfit للنص اللاتيني والاسم النصي، وInstrument Serif للعناوين الكبيرة، وNoto Sans Arabic للنص العربي، كلها بترخيص SIL Open Font License. ولون منطقة الخريطة هو STAY_AREA_COLOR في src/lib/map/mapConfig.ts، وألوان شريط المتصفح هي themeColor.light وthemeColor.dark في إعداد العلامة.
نتائج البحث، والمشاركة، والأسعار، والنطاق
NEXT_PUBLIC_SITE_URLهو أساس كل عنوان أساسي، وبدائل اللغات، وبطاقات المشاركة، وrobots.txt، وخريطة الموقع. اضبطه على عنوانك الحقيقي قبل أن تبني.- عناوين الصفحات وأوصافها تحت
metaفي كل مساحة أسماء منmessages/(للصفحة الرئيسية فيmessages/home، والافتراضي فيmessages/layouts). وتستخدم صفحة الإقامة عنوان SEO ووصف الإقامة نفسها، المكتوبين في المحرر، وصورة غلافها. - تُنسَّق الأسعار في مكان واحد،
src/lib/utils/formatPrice.ts، برمز العملة متبوعًا بالمبلغ بالأرقام اللاتينية (USD 240)، ويرسمهاsrc/components/PriceDisplay. ويضيف سعر الليلة فترته من الترجمات (/ night،common.stay.perNightفيmessages/common).
فاتح وداكن ونظام
لكلا التطبيقين زر سمة فيه النظام والفاتح والداكن. يتبع النظام نظام التشغيل ويتغير معه. يُحفظ الاختيار في localStorage بالمتصفح (hollina-theme في الموقع، وhollina-admin-theme في لوحة التحكم)، ولا يُرسل شيء إلى واجهة API، ويطبّقه سكربت قصير في رأس الصفحة قبل أول رسم، فلا تومض السمة الأخرى عند إعادة التحميل.
اسم لوحة التحكم ورمزها وألوانها
- الاسم:
nameفيsrc/config/brand.config.tsهو الاسم النصي والجزء الخاص بالعلامة في كل عنوان صفحة (Bookings | Hollina)؛ وmetaيحمل العنوان والوصف والكلمات المفتاحية والمؤلف الافتراضية، وdomain.urlأساس عناوين البيانات الوصفية المطلقة، وmanifestالتطبيق القابل للتثبيت. وعنوان كل صفحة تحتmeta.titlesفي مساحتيdashboardوauthمنmessages/، والنص بجوار الاسم النصي في الترويسة هوheader.workspaceفيmessages/dashboard. - الرمز: استبدل
public/brand/hollina-mark.svgوhollina-mark-white.svgوأبقِ الاسمين؛ يرسمهماBrandMarkمن رمز--logo-bg-imageفيsrc/styles/theme-variables.css. أيقونة تبويب المتصفح هيsrc/app/icon0.svg، وأيقونة iPhone هيsrc/app/apple-icon.png، وأيقونات التطبيق القابل للتثبيت هي ملفاweb-app-manifestفيpublic/. - الألوان:
--primaryColorو--primaryColorHoverو--on-primaryو--primary-tintو--backgroundو--surfaceو--textو--text-mutedو--borderو--errorColor، مع أزواج--tone-*لشارات الحالة، فيsrc/styles/theme-variables.css، مرة لكل سمة. وأي حالة تأخذ أي درجة موجود فيsrc/config/statusTones.ts. - الخطوط: Outfit وNoto Sans Arabic، تُشحن في
src/fonts/، وتُحمَّل فيsrc/app/layout.tsx، وتُسند فيsrc/styles/base.css.
بيانات الشركة نفسها
ما يقرؤه الضيوف عن الشركة بيانات لا كود. تُعدَّل في إعدادات لوحة التحكم ويقرؤها الموقع من GET /api/settings/public، وهو يعود إلى إعداد العلامة فقط إلى أن يجيب.
| التبويب | الإعدادات |
|---|---|
| الشركة | company_name وcompany_tagline وcompany_description باللغتين، وcontact_email وcontact_phone وcontact_address_hint وcurrency وtimezone وdefault_check_in_time وdefault_check_out_time وservice_email_signature |
| الصفحة الرئيسية | home_hero_stay_reference (الإقامة في الواجهة) وhome_featured_references (الإقامات المختارة، بالترتيب) |
| المدفوعات | allow_pay_on_arrival وcancellation_policy التي يقرؤها الضيوف، باللغتين |
العملة هي USD والمنطقة الزمنية America/New_York، وهما الخياران الوحيدان في لوحة التحكم. أما شعار العلامة فلا يُرفع من لوحة التحكم: يأتي من الملفات أعلاه.
الصياغة وسياسة الخصوصية
كل جملة ظاهرة موجودة في messages/، بمجلد لكل جزء فيه en.json وar.json. أعد كتابة النص في الملفين. سياسة الخصوصية في messages/privacy نص قالب وتقول ذلك في الصفحة: أعد كتابتها لشركتك وبلدك قبل الإطلاق، ثم أزل تلك الملاحظة (اللوحة المؤطرة في src/features/privacy/components/PrivacyHeader.tsx، ومفتاحها templateNote في الملفين). ويعرض سطر التواصل فيها البريد من إعدادات لوحة التحكم.