added the booking msgs that the client asked for

This commit is contained in:
Naser Mansour 2026-01-28 01:54:29 +02:00
parent cc85c67034
commit 3a5ac9c130
5 changed files with 198 additions and 3 deletions

View File

@ -82,4 +82,33 @@ return [
'too_many_attempts' => 'محاولات حجز كثيرة جداً. يرجى المحاولة لاحقاً.', 'too_many_attempts' => 'محاولات حجز كثيرة جداً. يرجى المحاولة لاحقاً.',
'success_title' => 'تم تقديم طلب الحجز!', 'success_title' => 'تم تقديم طلب الحجز!',
'success_message' => 'لقد تلقينا طلب الاستشارة الخاص بك. ستتلقى رسالة تأكيد عبر البريد الإلكتروني قريباً. سيقوم فريقنا بمراجعة طلبك والتواصل معك.', 'success_message' => 'لقد تلقينا طلب الاستشارة الخاص بك. ستتلقى رسالة تأكيد عبر البريد الإلكتروني قريباً. سيقوم فريقنا بمراجعة طلبك والتواصل معك.',
// Expectations section
'expectations_from_us_title' => 'ماذا تتوقع منّا',
'expect_focused_consultation' => 'استشارة مُركّزة',
'expect_focused_consultation_desc' => 'تقديم رأي قانوني أو بحثي متخصص ومهيكل، يذهب مباشرة إلى جوهر مشكلتك أو استفسارك.',
'expect_confidentiality' => 'أمان وسرية تامة',
'expect_confidentiality_desc' => 'التزام مطلق بحماية خصوصيتك والتعامل مع معلوماتك بأعلى درجات السرية.',
'expect_practical_solutions' => 'حلول واقعية',
'expect_practical_solutions_desc' => 'توضيح الخيارات القانونية المتاحة لك بشكل عملي وقابل للتطبيق، بعيداً عن التعقيد النظري.',
'expect_roadmap' => 'خارطة طريق',
'expect_roadmap_desc' => 'إرشادك بوضوح للخطوات التالية التي يجب عليك اتخاذها بعد انتهاء الاستشارة.',
'expectations_from_you_title' => 'ما نتوقعه منك',
'your_transparency' => 'الشفافية والوضوح',
'your_transparency_desc' => 'تزويدنا بكافة المعلومات والوثائق ذات الصلة قبل أو أثناء الجلسة (إن وُجدت) لضمان دقة الرأي القانوني.',
'your_punctuality' => 'الالتزام بالوقت',
'your_punctuality_desc' => 'الحضور في الموعد المحدد لضمان استفادتك الكاملة من وقت الاستشارة المخصص لك.',
'your_confirmation' => 'تأكيد الحجز',
'your_confirmation_desc' => 'استكمال إجراءات الحجز، وسداد الرسوم المترتبة (في حال كانت الخدمة المختارة مدفوعة).',
'before_booking_title' => 'قبل حجز موعد الاستشارة يجب أن تعلم',
'note_purpose' => 'تهدف الاستشارة إلى تقييم الحالة قانونيًا وتوضيح الخيارات المتاحة.',
'note_duration' => 'مدة الاستشارة 45 دقيقة، ويتم الالتزام بها.',
'note_format' => 'تُقدَّم الاستشارات حضوريًا أو عن بُعد بحسب المتاح عند الحجز.',
'note_prepare' => 'يُرجى تجهيز ملخص للوقائع والمستندات الأساسية قبل الموعد.',
'note_confidential' => 'جميع المعلومات التي تُعرض خلال الاستشارة تُعامل بسرية تامة.',
'note_no_obligation' => 'لا يترتب على الاستشارة أي التزام بقبول القضية أو التمثيل القانوني.',
'note_arbitration' => 'في حال كان موضوع الاستشارة الاستعانة بمكتبنا كمُحكّم معتمد، يرجى كتابة كلمة «تحكيم» في ملخص المشكلة، مع الاكتفاء بذكر الاسم الرباعي واسم الخصم فقط، دون الخوض في أي تفاصيل أخرى.',
'note_cancellation' => 'يمكن إلغاء الموعد وفق سياسة الإلغاء المعتمدة، ويحق لليبرا رفض الاستشارة عند وجود تعارض مصالح أو عدم اختصاص.',
]; ];

View File

@ -82,4 +82,33 @@ return [
'too_many_attempts' => 'Too many booking attempts. Please try again later.', 'too_many_attempts' => 'Too many booking attempts. Please try again later.',
'success_title' => 'Booking Request Submitted!', 'success_title' => 'Booking Request Submitted!',
'success_message' => 'We have received your consultation request. You will receive an email confirmation shortly. Our team will review your request and contact you.', 'success_message' => 'We have received your consultation request. You will receive an email confirmation shortly. Our team will review your request and contact you.',
// Expectations section
'expectations_from_us_title' => 'What to Expect from Us',
'expect_focused_consultation' => 'Focused Consultation',
'expect_focused_consultation_desc' => 'A specialized, structured legal or research opinion that goes directly to the core of your issue or inquiry.',
'expect_confidentiality' => 'Complete Security & Confidentiality',
'expect_confidentiality_desc' => 'Absolute commitment to protecting your privacy and handling your information with the highest level of confidentiality.',
'expect_practical_solutions' => 'Practical Solutions',
'expect_practical_solutions_desc' => 'Clear explanation of your available legal options in a practical and actionable manner, free from theoretical complexity.',
'expect_roadmap' => 'Clear Roadmap',
'expect_roadmap_desc' => 'Clear guidance on the next steps you need to take after the consultation ends.',
'expectations_from_you_title' => 'What We Expect from You',
'your_transparency' => 'Transparency & Clarity',
'your_transparency_desc' => 'Provide us with all relevant information and documents before or during the session (if available) to ensure accurate legal advice.',
'your_punctuality' => 'Punctuality',
'your_punctuality_desc' => 'Attend at the scheduled time to ensure you fully benefit from your allocated consultation time.',
'your_confirmation' => 'Booking Confirmation',
'your_confirmation_desc' => 'Complete the booking procedures and pay any applicable fees (if the selected service is paid).',
'before_booking_title' => 'Before Booking, You Should Know',
'note_purpose' => 'The consultation aims to legally evaluate your situation and clarify available options.',
'note_duration' => 'The consultation duration is 45 minutes, and this is strictly adhered to.',
'note_format' => 'Consultations are offered in-person or remotely based on availability at the time of booking.',
'note_prepare' => 'Please prepare a summary of the facts and essential documents before your appointment.',
'note_confidential' => 'All information shared during the consultation is treated with complete confidentiality.',
'note_no_obligation' => 'The consultation does not create any obligation to accept the case or provide legal representation.',
'note_arbitration' => 'If the consultation is about engaging our office as an accredited arbitrator, please write "Arbitration" in the problem summary, mentioning only your full name and the opposing party\'s name, without any other details.',
'note_cancellation' => 'Appointments can be cancelled according to the cancellation policy. Libra reserves the right to decline a consultation in case of conflict of interest or lack of jurisdiction.',
]; ];

View File

@ -0,0 +1,135 @@
@props(['class' => ''])
<div {{ $attributes->merge(['class' => 'space-y-3 ' . $class]) }}>
{{-- What to expect from us --}}
<details class="group rounded-lg border border-zinc-200 bg-white">
<summary class="flex cursor-pointer items-center justify-between gap-3 p-4 font-medium text-zinc-900 [&::-webkit-details-marker]:hidden">
<div class="flex items-center gap-3">
<div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-green-100">
<flux:icon name="check-badge" class="h-5 w-5 text-green-600" />
</div>
<span>{{ __('booking.expectations_from_us_title') }}</span>
</div>
<flux:icon name="chevron-down" class="h-5 w-5 text-zinc-400 transition-transform group-open:rotate-180" />
</summary>
<div class="border-t border-zinc-100 px-4 pb-4 pt-3">
<ul class="space-y-3 text-sm text-zinc-600">
<li class="flex gap-3">
<flux:icon name="light-bulb" class="mt-0.5 h-5 w-5 shrink-0 text-amber-500" />
<div>
<span class="font-medium text-zinc-800">{{ __('booking.expect_focused_consultation') }}</span>
<p class="mt-0.5">{{ __('booking.expect_focused_consultation_desc') }}</p>
</div>
</li>
<li class="flex gap-3">
<flux:icon name="shield-check" class="mt-0.5 h-5 w-5 shrink-0 text-amber-500" />
<div>
<span class="font-medium text-zinc-800">{{ __('booking.expect_confidentiality') }}</span>
<p class="mt-0.5">{{ __('booking.expect_confidentiality_desc') }}</p>
</div>
</li>
<li class="flex gap-3">
<flux:icon name="puzzle-piece" class="mt-0.5 h-5 w-5 shrink-0 text-amber-500" />
<div>
<span class="font-medium text-zinc-800">{{ __('booking.expect_practical_solutions') }}</span>
<p class="mt-0.5">{{ __('booking.expect_practical_solutions_desc') }}</p>
</div>
</li>
<li class="flex gap-3">
<flux:icon name="map" class="mt-0.5 h-5 w-5 shrink-0 text-amber-500" />
<div>
<span class="font-medium text-zinc-800">{{ __('booking.expect_roadmap') }}</span>
<p class="mt-0.5">{{ __('booking.expect_roadmap_desc') }}</p>
</div>
</li>
</ul>
</div>
</details>
{{-- What we expect from you --}}
<details class="group rounded-lg border border-zinc-200 bg-white">
<summary class="flex cursor-pointer items-center justify-between gap-3 p-4 font-medium text-zinc-900 [&::-webkit-details-marker]:hidden">
<div class="flex items-center gap-3">
<div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-blue-100">
<flux:icon name="user-circle" class="h-5 w-5 text-blue-600" />
</div>
<span>{{ __('booking.expectations_from_you_title') }}</span>
</div>
<flux:icon name="chevron-down" class="h-5 w-5 text-zinc-400 transition-transform group-open:rotate-180" />
</summary>
<div class="border-t border-zinc-100 px-4 pb-4 pt-3">
<ul class="space-y-3 text-sm text-zinc-600">
<li class="flex gap-3">
<flux:icon name="document-text" class="mt-0.5 h-5 w-5 shrink-0 text-amber-500" />
<div>
<span class="font-medium text-zinc-800">{{ __('booking.your_transparency') }}</span>
<p class="mt-0.5">{{ __('booking.your_transparency_desc') }}</p>
</div>
</li>
<li class="flex gap-3">
<flux:icon name="clock" class="mt-0.5 h-5 w-5 shrink-0 text-amber-500" />
<div>
<span class="font-medium text-zinc-800">{{ __('booking.your_punctuality') }}</span>
<p class="mt-0.5">{{ __('booking.your_punctuality_desc') }}</p>
</div>
</li>
<li class="flex gap-3">
<flux:icon name="clipboard-document-check" class="mt-0.5 h-5 w-5 shrink-0 text-amber-500" />
<div>
<span class="font-medium text-zinc-800">{{ __('booking.your_confirmation') }}</span>
<p class="mt-0.5">{{ __('booking.your_confirmation_desc') }}</p>
</div>
</li>
</ul>
</div>
</details>
{{-- Before booking - Important notes --}}
<details class="group rounded-lg border border-amber-200 bg-amber-50" open>
<summary class="flex cursor-pointer items-center justify-between gap-3 p-4 font-medium text-zinc-900 [&::-webkit-details-marker]:hidden">
<div class="flex items-center gap-3">
<div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-amber-200">
<flux:icon name="exclamation-triangle" class="h-5 w-5 text-amber-700" />
</div>
<span>{{ __('booking.before_booking_title') }}</span>
</div>
<flux:icon name="chevron-down" class="h-5 w-5 text-amber-600 transition-transform group-open:rotate-180" />
</summary>
<div class="border-t border-amber-200 px-4 pb-4 pt-3">
<ul class="space-y-2 text-sm text-zinc-700">
<li class="flex items-start gap-2">
<span class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"></span>
<span>{{ __('booking.note_purpose') }}</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"></span>
<span>{{ __('booking.note_duration') }}</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"></span>
<span>{{ __('booking.note_format') }}</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"></span>
<span>{{ __('booking.note_prepare') }}</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"></span>
<span>{{ __('booking.note_confidential') }}</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"></span>
<span>{{ __('booking.note_no_obligation') }}</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"></span>
<span>{{ __('booking.note_arbitration') }}</span>
</li>
<li class="flex items-start gap-2">
<span class="mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500"></span>
<span>{{ __('booking.note_cancellation') }}</span>
</li>
</ul>
</div>
</details>
</div>

View File

@ -232,6 +232,9 @@ new class extends Component
@if(!$selectedDate || !$selectedTime) @if(!$selectedDate || !$selectedTime)
<!-- Step 1: Calendar Selection --> <!-- Step 1: Calendar Selection -->
<div class="mt-6"> <div class="mt-6">
{{-- Booking Expectations --}}
<x-booking-expectations class="mb-6" />
<p class="mb-4 text-zinc-600">{{ __('booking.select_date_time') }}</p> <p class="mb-4 text-zinc-600">{{ __('booking.select_date_time') }}</p>
<livewire:availability-calendar :booked-dates="$bookedDates" /> <livewire:availability-calendar :booked-dates="$bookedDates" />
</div> </div>

View File

@ -236,9 +236,8 @@ new #[Layout('components.layouts.public')] class extends Component
@if(!$selectedDate || !$selectedTime) @if(!$selectedDate || !$selectedTime)
{{-- Step 1: Calendar Selection --}} {{-- Step 1: Calendar Selection --}}
<flux:callout class="mb-6"> {{-- Booking Expectations --}}
<p class="text-body">{{ __('booking.guest_intro') }}</p> <x-booking-expectations class="mb-6" />
</flux:callout>
<p class="mb-4 text-zinc-600"> <p class="mb-4 text-zinc-600">
{{ __('booking.select_date_time') }} {{ __('booking.select_date_time') }}