جاري التحميل...
View Property

Install the app now for a better experience!

Install
3500000.00 US Dollar 💵🇺🇸

فيلا فاخرة بحبيل أبيض

فيلا فاخرة في حبيل أبيض، تعز: جنة الرفاهية والراحة

موقع متميز وهدوء لا يُضاهى

...

850000.00 US Dollar 💵🇺🇸

فيلا فخمة ببيت بوس

فيلا أحلامك في شارع الخمسين، بيت بوس

استمتع برفاهية لا مثيل لها في فيلا الأحلام هذه في بيت...

None US Dollar 💵🇺🇸

شقق سكنية راقية حي الثورة الحديدة

```html شقق فاخرة للبيع في...</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/754/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> <div class="property-card" style="animation-delay: 0.30000000000000004s"> <div id="propertyCarousel714" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-indicators"> </div> <div class="carousel-inner"> <div class="carousel-item active"> <div class="w-100 h-100 bg-gradient-to-r from-gray-200 to-gray-300 d-flex align-items-center justify-content-center"> <span class="text-gray-400">لا توجد صورة</span> </div> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#propertyCarousel714" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#propertyCarousel714" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> </button> </div> <div class="property-details"> <div class="price-tag"> 17.00 US Dollar 💵🇺🇸 </div> <h3 class="property-title">مبنى سكني في الجربوب</h3> <p class="property-info"><h2>عش في قلب خط عدن الجربوب المرموق</h2> <h3>مبنى سكني استثنائي في موقع استراتيجي</h3> <p>استثمر ...</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/714/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> <div class="property-card" style="animation-delay: 0.4s"> <div id="propertyCarousel756" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-indicators"> <button type="button" data-bs-target="#propertyCarousel756" data-bs-slide-to="1"></button> <button type="button" data-bs-target="#propertyCarousel756" data-bs-slide-to="2"></button> <button type="button" data-bs-target="#propertyCarousel756" data-bs-slide-to="3"></button> <button type="button" data-bs-target="#propertyCarousel756" data-bs-slide-to="4"></button> <button type="button" data-bs-target="#propertyCarousel756" data-bs-slide-to="5"></button> <button type="button" data-bs-target="#propertyCarousel756" data-bs-slide-to="6"></button> </div> <div class="carousel-inner"> <div class="carousel-item active"> <img src="/media/photos/419A6857-AB1A-4789-B142-2A4739161B06.jpeg" class="property-image" alt="فرصة عقارية مميزة في قرية مارينا صن شاين الساحل الشمالي"> </div> <div class="carousel-item "> <img src="/media/photos/23D9B26A-B16B-4307-A09F-B9F6E64EE224.jpeg" class="property-image" alt="فرصة عقارية مميزة في قرية مارينا صن شاين الساحل الشمالي"> </div> <div class="carousel-item "> <img src="/media/photos/AA5BDF03-B230-4207-88A5-30442153310F.jpeg" class="property-image" alt="فرصة عقارية مميزة في قرية مارينا صن شاين الساحل الشمالي"> </div> <div class="carousel-item "> <img src="/media/photos/E6BCA65A-5A47-4DFE-B0CF-EF5FC45F7C96.jpeg" class="property-image" alt="فرصة عقارية مميزة في قرية مارينا صن شاين الساحل الشمالي"> </div> <div class="carousel-item "> <img src="/media/photos/FAA84D31-944E-4C07-83A8-D66C802F6707.jpeg" class="property-image" alt="فرصة عقارية مميزة في قرية مارينا صن شاين الساحل الشمالي"> </div> <div class="carousel-item "> <img src="/media/photos/75908DB9-0EDA-4C76-BA36-293BB2B95A68.jpeg" class="property-image" alt="فرصة عقارية مميزة في قرية مارينا صن شاين الساحل الشمالي"> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#propertyCarousel756" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#propertyCarousel756" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> </button> </div> <div class="property-details"> <div class="price-tag"> 4500000.00 Egyptian Pound 🇪🇬 </div> <h3 class="property-title">فرصة عقارية مميزة في قرية مارينا صن شاين الساحل الشمالي</h3> <p class="property-info">لم يتم العثور على وصف لهذا العقار. يرجى الاتصال بنا لمزيد من المعلومات....</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/756/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> <div class="property-card" style="animation-delay: 0.5s"> <div id="propertyCarousel755" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-indicators"> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="1"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="2"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="3"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="4"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="5"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="6"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="7"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="8"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="9"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="10"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="11"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="12"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="13"></button> <button type="button" data-bs-target="#propertyCarousel755" data-bs-slide-to="14"></button> </div> <div class="carousel-inner"> <div class="carousel-item active"> <img src="/media/photos/7c45f3a3-e359-434c-858a-257447f2eba0.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/7e1b4e25-5c9b-40fd-ba03-53057ee94071.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/8cad5142-e0a4-4af2-b7dc-2c0ab893bc9e.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/9afde5cd-0f63-4f2e-be95-c7b6dc6eb8dd.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/9b3931b6-6342-4289-87bf-f972d8fa9359.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/55a924fa-b875-422d-b602-9035b785e6c8.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/78ddc476-1a19-4273-8815-c3dfb5cef160.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/91018a59-0436-406f-aa78-186a63290764.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/acb51001-0f8d-4d4c-9a6d-fced608ea2f7.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/b829b920-f810-4345-afe4-b4046fe39172.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/b9624b17-dfda-4169-8eb2-9099e85815a2.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/c6d307e0-9053-4c75-bbb3-6f00c5d6afe8.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/c116a2da-7c1d-4f17-8a0f-63fd99c5a5b9.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> <div class="carousel-item "> <img src="/media/photos/dfb251b6-a86c-494c-8a2f-7f31609709f0.jpeg" class="property-image" alt="شقق سكنية راقية شارع الحمدي الحديدة"> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#propertyCarousel755" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#propertyCarousel755" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> </button> </div> <div class="property-details"> <div class="price-tag"> None US Dollar 💵🇺🇸 </div> <h3 class="property-title">شقق سكنية راقية شارع الحمدي الحديدة</h3> <p class="property-info">```html <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" con...</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/755/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> <div class="property-card" style="animation-delay: 0.6000000000000001s"> <div id="propertyCarousel729" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-indicators"> </div> <div class="carousel-inner"> <div class="carousel-item active"> <div class="w-100 h-100 bg-gradient-to-r from-gray-200 to-gray-300 d-flex align-items-center justify-content-center"> <span class="text-gray-400">لا توجد صورة</span> </div> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#propertyCarousel729" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#propertyCarousel729" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> </button> </div> <div class="property-details"> <div class="price-tag"> 2000000.00 Yemeni Rial 🇾🇪 </div> <h3 class="property-title">فرصة عقارية مميزة في عمد, مديرية سنحان وبني بهلول, محافظة صنعاء, اليمن</h3> <p class="property-info"><h2>استثمر في جوهرة صنعاء: أرض أحلامك في حي عمد</h2> <h3>استحوذ على قطعة استثنائية في قلب العاصمة</...</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/729/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> <div class="property-card" style="animation-delay: 0.7000000000000001s"> <div id="propertyCarousel694" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-indicators"> </div> <div class="carousel-inner"> <div class="carousel-item active"> <div class="w-100 h-100 bg-gradient-to-r from-gray-200 to-gray-300 d-flex align-items-center justify-content-center"> <span class="text-gray-400">لا توجد صورة</span> </div> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#propertyCarousel694" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#propertyCarousel694" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> </button> </div> <div class="property-details"> <div class="price-tag"> 1600000.00 US Dollar 💵🇺🇸 </div> <h3 class="property-title">مبنى سكني في الكزمه</h3> <p class="property-info"><h2>موقع استثماري استثنائي في قلب صنعاء النابض</h2> <h3>فرصة ذهبية في شارع اتحاد جامعة العلوم والتك...</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/694/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> <div class="property-card" style="animation-delay: 0.8s"> <div id="propertyCarousel722" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-indicators"> <button type="button" data-bs-target="#propertyCarousel722" data-bs-slide-to="1"></button> <button type="button" data-bs-target="#propertyCarousel722" data-bs-slide-to="2"></button> <button type="button" data-bs-target="#propertyCarousel722" data-bs-slide-to="3"></button> <button type="button" data-bs-target="#propertyCarousel722" data-bs-slide-to="4"></button> </div> <div class="carousel-inner"> <div class="carousel-item active"> <img src="/media/photos/Screenshot_%D9%A2%D9%A0%D9%A2%D9%A4%D9%A0%D9%A8%D9%A1%D9%A7-%D9%A0%D9%A3%D9%A2%D9%A2%D9%A1%D9%A6.png" class="property-image" alt="فرصة عقارية مميزة في الشرقية, الطائف, محافظة الطائف, منطقة مكة المكرمة, 26511, السعودية"> </div> <div class="carousel-item "> <img src="/media/photos/Screenshot_%D9%A2%D9%A0%D9%A2%D9%A4%D9%A0%D9%A8%D9%A1%D9%A7-%D9%A0%D9%A3%D9%A2%D9%A3%D9%A5%D9%A0_1.png" class="property-image" alt="فرصة عقارية مميزة في الشرقية, الطائف, محافظة الطائف, منطقة مكة المكرمة, 26511, السعودية"> </div> <div class="carousel-item "> <img src="/media/photos/Screenshot_%D9%A2%D9%A0%D9%A2%D9%A4%D9%A0%D9%A8%D9%A1%D9%A7-%D9%A0%D9%A3%D9%A2%D9%A3%D9%A3%D9%A8_1.png" class="property-image" alt="فرصة عقارية مميزة في الشرقية, الطائف, محافظة الطائف, منطقة مكة المكرمة, 26511, السعودية"> </div> <div class="carousel-item "> <img src="/media/photos/Title1728586473285_jbKdjjC.jpg" class="property-image" alt="فرصة عقارية مميزة في الشرقية, الطائف, محافظة الطائف, منطقة مكة المكرمة, 26511, السعودية"> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#propertyCarousel722" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#propertyCarousel722" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> </button> </div> <div class="property-details"> <div class="price-tag"> 350000.00 Saudi Riyal 🇸🇦 </div> <h3 class="property-title">فرصة عقارية مميزة في الشرقية, الطائف, محافظة الطائف, منطقة مكة المكرمة, 26511, السعودية</h3> <p class="property-info"><h2>أرض استثمارية نادرة في الطائف بموقع استراتيجي</h2> <h3>اكتشف واحة الأحلام في قلب الطائف!</h3> ...</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/722/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> <div class="property-card" style="animation-delay: 0.9s"> <div id="propertyCarousel698" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-indicators"> </div> <div class="carousel-inner"> <div class="carousel-item active"> <div class="w-100 h-100 bg-gradient-to-r from-gray-200 to-gray-300 d-flex align-items-center justify-content-center"> <span class="text-gray-400">لا توجد صورة</span> </div> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#propertyCarousel698" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#propertyCarousel698" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> </button> </div> <div class="property-details"> <div class="price-tag"> 850000.00 US Dollar 💵🇺🇸 </div> <h3 class="property-title">فيلا فاخرة شارع الخمسين</h3> <p class="property-info"><h2>ملاذك الفاخر في قلب صنعاء العريقة</h2> <h3>فيلا استثنائية في شارع الخمسين الراقي</h3> استمتع ب...</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/698/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> <div class="property-card" style="animation-delay: 1.0s"> <div id="propertyCarousel742" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-indicators"> </div> <div class="carousel-inner"> <div class="carousel-item active"> <div class="w-100 h-100 bg-gradient-to-r from-gray-200 to-gray-300 d-flex align-items-center justify-content-center"> <span class="text-gray-400">لا توجد صورة</span> </div> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#propertyCarousel742" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#propertyCarousel742" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> </button> </div> <div class="property-details"> <div class="price-tag"> 5500000.00 Egyptian Pound 🇪🇬 </div> <h3 class="property-title">شالية جرين بيتش ك89 بالساحل الشمالي</h3> <p class="property-info"><h2>استمتع بالرفاهية في شاليه أحلامك بالساحل الشمالي</h2> <h3>جرين بيتش ك 89: ملاذك الساحر على ساحل...</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/742/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> <div class="property-card" style="animation-delay: 1.1s"> <div id="propertyCarousel745" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-indicators"> <button type="button" data-bs-target="#propertyCarousel745" data-bs-slide-to="1"></button> <button type="button" data-bs-target="#propertyCarousel745" data-bs-slide-to="2"></button> </div> <div class="carousel-inner"> <div class="carousel-item active"> <img src="/media/photos/Screenshot_2025-01-24_202930.png" class="property-image" alt="شقة للبيع في التجمع الخامس"> </div> <div class="carousel-item "> <img src="/media/photos/Screenshot_2025-01-24_203008.png" class="property-image" alt="شقة للبيع في التجمع الخامس"> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#propertyCarousel745" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#propertyCarousel745" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> </button> </div> <div class="property-details"> <div class="price-tag"> 65000.00 Egyptian Pound 🇪🇬 </div> <h3 class="property-title">شقة للبيع في التجمع الخامس</h3> <p class="property-info"><h2>شقتك الفاخرة في قلب التجمع السادس</h2> <p>استمتع بالعيش في أرقى المناطق السكنية في القاهرة بالت...</p> <div class="property-actions"> <a href="/en/kup/property_detailpuplic/745/" class="btn btn-info"> عرض التفاصيل </a> </div> </div> </div> </div> <!-- Enhanced Pagination --> <div class="pagination"> <div class="flex space-x-2"> <span class="pagination current">1</span> <a href="?page=2" class="pagination-link">2</a> <a href="?page=3" class="pagination-link">3</a> <a href="?page=4" class="pagination-link">4</a> <a href="?page=2" class="pagination-link">التالي</a> </div> </div> <style> /* Search Container Styles */ .search-container { background: linear-gradient(135deg, #7C181A, #AF1E23, #EDAB6A); max-width: 1200px; margin: 2rem auto; transition: all 0.3s ease; position: relative; } /* Toggle Button */ .search-toggle { position: absolute; right: 1rem; top: 1rem; background: rgba(255, 255, 255, 0.2); border: none; color: white; padding: 0.5rem; border-radius: 50%; cursor: pointer; transition: transform 0.3s ease; z-index: 10; } .search-toggle:hover { transform: rotate(180deg); background: rgba(255, 255, 255, 0.3); } /* Search Form Inputs */ .custom-input { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); color: white; transition: all 0.3s ease; } .custom-input:focus { background: rgba(255, 255, 255, 0.15); border-color: rgba(255, 255, 255, 0.4); box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1); } .custom-input::placeholder { color: rgba(255, 255, 255, 0.6); } .custom-select { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); color: white; cursor: pointer; transition: all 0.3s ease; } .custom-select:hover { background: rgba(255, 255, 255, 0.15); } .custom-select option { background: #2d3748; color: white; } /* Collapsed State */ .search-container.collapsed { max-height: 60px; overflow: hidden; } .search-container.collapsed form { opacity: 0; transform: translateY(-20px); } /* Expanded State */ .search-container form { opacity: 1; transform: translateY(0); transition: all 0.3s ease; } /* Responsive Design */ @media (max-width: 768px) { .search-container { margin: 1rem; padding: 1rem; } .grid-cols-1 md\:grid-cols-3 { grid-template-columns: 1fr; } .custom-input, .custom-select { margin-bottom: 1rem; } } /* Animation for expand/collapse */ @keyframes expandSearch { from { max-height: 60px; } to { max-height: 500px; } } @keyframes collapseSearch { from { max-height: 500px; } to { max-height: 60px; } } .search-container.expanding { animation: expandSearch 0.3s ease forwards; } .search-container.collapsing { animation: collapseSearch 0.3s ease forwards; } .dir-rtl { direction: rtl; } /* Featured Properties Carousel */ .featured-carousel { height: 70vh; position: relative; overflow: hidden; margin-bottom: 4rem; } .featured-slide { height: 100%; background-size: cover; background-position: center; position: relative; } .featured-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(rgba(0,0,0,0.2), rgba(0,0,0,0.7)); display: flex; align-items: flex-end; padding: 2rem; color: white; } /* Property Grid */ .property-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 2rem; padding: 2rem; } .property-card { background: white; border-radius: 1rem; overflow: hidden; transition: transform 0.3s ease, box-shadow 0.3s ease; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .property-card:hover { transform: translateY(-10px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } .property-image { height: 200px; width: 100%; object-fit: cover; } .property-info { padding: 1.5rem; } .price-tag { background: linear-gradient(135deg, #4a90e2, #357abd); color: white; padding: 0.5rem 1rem; border-radius: 0.5rem; display: inline-block; margin-bottom: 1rem; } .property-stats { display: flex; justify-content: space-between; padding: 1rem; background: #f8f9fa; border-radius: 0.5rem; margin-top: 1rem; } /* Animation */ @keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-fade-up { animation: fadeUp 0.5s ease-out forwards; } /* Previous CSS styles remain the same until property-card */ .property-card { background: white; border-radius: 1rem; overflow: hidden; transition: transform 0.3s ease, box-shadow 0.3s ease; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .property-carousel { position: relative; height: 200px; } .property-carousel .carousel-inner { height: 100%; } .property-carousel .carousel-item { height: 100%; } .property-carousel img { height: 100%; width: 100%; object-fit: cover; } .property-carousel .carousel-control-prev, .property-carousel .carousel-control-next { width: 10%; background: rgba(0, 0, 0, 0.3); border: none; opacity: 0; transition: opacity 0.3s ease; } .property-carousel:hover .carousel-control-prev, .property-carousel:hover .carousel-control-next { opacity: 1; } .carousel-indicators { margin-bottom: 0.5rem; } .carousel-indicators button { width: 8px; height: 8px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.7); } /* Rest of your existing styles remain the same */ </style> <script> document.addEventListener('DOMContentLoaded', function() { const searchContainer = document.querySelector('.search-container'); const searchToggle = document.createElement('button'); searchToggle.className = 'search-toggle'; searchToggle.innerHTML = '🔍'; searchContainer.appendChild(searchToggle); searchToggle.addEventListener('click', function() { if (searchContainer.classList.contains('collapsed')) { searchContainer.classList.remove('collapsed'); searchContainer.classList.add('expanding'); } else { searchContainer.classList.add('collapsed'); searchContainer.classList.add('collapsing'); } }); searchContainer.addEventListener('animationend', function() { searchContainer.classList.remove('expanding', 'collapsing'); }); }); </script> <!-- Spacer to add dynamic room above footer --> <div class="footer-spacing"></div> </main> <!-- Footer Section --> <footer> <style> :root { --kup-primary: #ff0033; --kup-light: #FFE6E6; --kup-hover: #ff1a1a; --kup-transition: 0.3s; --kup-glass: rgba(255, 255, 255, 0.1); --kup-border: rgba(255, 0, 0, 0.3); / Background Color / --kup-background: #f0f0f0; / light grey / } body { background-color: var(--kup-background); / Apply background to body / font-family: 'Tajawal', sans-serif; / Add a modern Arabic font / } .kup-add-btn { position: fixed; bottom: 40px; left: 50%; transform: translateX(-50%); width: 65px; height: 65px; background: linear-gradient(135deg, var(--kup-primary), #ff3333); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; text-decoration: none; box-shadow: 0 6px 20px rgba(255, 0, 0, 0.3), inset 0 2px 10px rgba(255, 255, 255, 0.3); z-index: 1001; transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); border: 2px solid rgba(255, 255, 255, 0.2); cursor: pointer; /* Indicate the button is clickable */ } .kup-add-btn i { font-size: 28px; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2)); transition: all 0.4s ease; } .kup-add-btn:after { content: 'Add'; position: absolute; bottom: -25px; font-size: 12px; white-space: nowrap; color: #666; } .kup-add-btn:hover { background: linear-gradient(135deg, var(--kup-hover), #ff4d4d); transform: translateX(-50%) scale(1.08); box-shadow: 0 8px 25px rgba(255, 0, 0, 0.4), inset 0 2px 15px rgba(255, 255, 255, 0.4); } .kup-float-btns { display: flex; flex-direction: column; gap: 15px; position: fixed; bottom: 120px; left: 50%; transform: translateX(-50%) scale(0.95); z-index: 1000; opacity: 0; visibility: hidden; transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55); perspective: 1000px; background: rgba(255, 255, 255, 0.9); /* Slightly less transparent to pop more*/ backdrop-filter: blur(10px); padding: 20px; border-radius: 20px; border: 2px solid var(--kup-border); box-shadow: 0 8px 32px rgba(255, 0, 0, 0.1); } .kup-float-btns.active { opacity: 1; visibility: visible; transform: translateX(-50%) scale(1); z-index: 1050; } .kup-float-btn { background: #ffffff; color: #651EFFFF; padding: 15px 25px; border-radius: 10px; font-size: 16px; font-weight: 600; display: flex; align-items: center; gap: 12px; z-index: 1050; transition: all 0.3s ease; min-width: 280px; text-align: right; backdrop-filter: blur(5px); border: 1px solid var(--kup-border); box-shadow: 0 4px 15px rgba(255, 0, 0, 0.1); cursor: pointer; /* Indicate the button is clickable */ } .kup-float-btn:hover { background: rgba(255, 0, 0, 0.1); transform: translateX(-5px); border-color: var(--kup-primary); box-shadow: 0 6px 20px rgba(255, 0, 0, 0.2); } .kup-float-btn i { font-size: 20px; color: var(--kup-primary); filter: drop-shadow(0 2px 4px rgba(255, 0, 0, 0.2)); transition: all 0.3s ease; } .kup-float-btn:hover i { transform: scale(1.2); color: var(--kup-hover); } @media (max-width: 768px) { .kup-float-btn { min-width: 240px; padding: 12px 20px; font-size: 14px; } .kup-add-btn { width: 55px; height: 55px; bottom: 30px; } .kup-float-btns { padding: 15px; } } .kup-gold { color: #FFD700; } .kup-account-modal .modal-dialog { border-radius: 15px; max-width: 500px; /* Limit the width */ margin: 2rem auto; /* Add some margin around the modal*/ } .kup-account-modal .modal-content { overflow: hidden; border-radius: 15px; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2); /* Add a subtle shadow */ animation: modalIn 0.3s ease-out; /* Entrance animation */ } @keyframes modalIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } } .kup-account-modal .modal-header { background-color: var(--kup-light); border-bottom: none; display: flex; align-items: center; /* Align items vertically */ justify-content: space-between; /* Space out title and close button */ padding: 15px 20px; /* Reduced top/bottom padding */ } .kup-account-modal .modal-title { font-size: 18px; font-weight: bold; color: var(--kup-primary); margin-bottom: 0; /* Reset default margin for better alignment */ white-space: nowrap; /* Prevent text from wrapping */ overflow: hidden; /* Hide overflowing text */ text-overflow: ellipsis; /* Show ellipsis for overflowing text */ max-width: calc(100% - 40px); /* Maximum width for the title, accounting for button size */ } .kup-account-modal .modal-close { color: var(--kup-primary); font-size: 28px; /* Make the close button larger */ transition: transform 0.2s ease; opacity: 0.8; border: none; background: none; cursor: pointer; } .kup-account-modal .modal-close:hover { transform: scale(1.2); /* Slightly enlarge on hover */ opacity: 1; } .kup-account-modal .modal-close:focus { outline: none; } .kup-account-modal .modal-body { padding: 20px; background-color: #fff; overflow-y: auto; /* Add scroll to body if it's too long */ } .kup-profile-info { text-align: center; } .kup-profile-pic { width: 60px; height: 60px; border-radius: 50%; box-shadow: 0 4px 10px rgba(255, 0, 0, 0.2); border: 2px solid var(--kup-primary); } .kup-default-icon { font-size: 60px; color: var(--kup-primary); } .kup-username { font-size: 16px; font-weight: bold; color: var(--kup-primary); margin-top: 10px; } .kup-account-btn { display: block; width: 100%; text-align: center; padding: 12px; margin-bottom: 12px; border-radius: 8px; font-size: 14px; font-weight: bold; text-decoration: none; transition: all var(--kup-transition) ease; } .kup-account-btn i { margin-right: 8px; } .kup-settings-btn { background-color: var(--kup-light); color: var(--kup-primary); } .kup-settings-btn:hover { background-color: var(--kup-primary); color: #fff; } .kup-logout-btn { background-color: var(--kup-primary); color: #fff; } .kup-logout-btn:hover { background-color: var(--kup-hover); transform: translateY(-2px); } .kup-login-btn { background-color: var(--kup-primary); color: #fff; } .kup-login-btn:hover { background-color: var(--kup-hover); transform: translateY(-2px); } .kup-signup-btn { background-color: var(--kup-light); color: var(--kup-primary); } .kup-signup-btn:hover { background-color: var(--kup-primary); color: #fff; } .kup-phone-btn { background-color: var(--kup-light); color: var(--kup-primary); } .kup-phone-btn:hover { background-color: var(--kup-primary); color: #fff; } .kup-bottom-nav { position: fixed; bottom: 0; left: 0; right: 0; background: white; padding: 12px; box-shadow: 0 -2px 15px rgba(0,0,0,0.1); display: flex; justify-content: space-around; z-index: 1000; border-top: 1px solid #eee; /* Add a subtle top border */ } .kup-nav-item { color: #666; text-decoration: none; text-align: center; transition: all var(--kup-transition); } .kup-nav-item.active { color: var(--kup-primary); } .kup-nav-item:hover { color: var(--kup-primary); transform: translateY(-3px); } /* Add these new styles for the navigation modal */ .kup-nav-modal { direction: rtl; } .kup-nav-modal .modal-dialog { max-width: 500px; /* Limit the width */ margin: 2rem auto; /* Add some margin around the modal*/ } .kup-nav-modal .modal-content { border-radius: 20px; border: none; box-shadow: 0 5px 15px rgba(0,0,0,0.2); animation: modalIn 0.3s ease-out; /* Entrance animation */ } .kup-nav-modal .modal-header { border-bottom: 2px solid var(--kup-light); padding: 20px; background-color: white; display: flex; align-items: center; /* Align items vertically */ justify-content: space-between; /* Space out title and close button */ } .kup-nav-modal .modal-header .modal-title { margin-bottom: 0; /* Reset default margin for better alignment */ white-space: nowrap; /* Prevent text from wrapping */ overflow: hidden; /* Hide overflowing text */ text-overflow: ellipsis; /* Show ellipsis for overflowing text */ max-width: calc(100% - 40px); /* Maximum width for the title, accounting for button size */ font-size: 1.2rem; font-weight: bold; } .kup-nav-modal .modal-header .btn-close { color: var(--kup-primary); font-size: 28px; /* Make the close button larger */ transition: transform 0.2s ease; opacity: 0.8; border: none; background: none; cursor: pointer; } .kup-nav-modal .modal-header .btn-close:hover { transform: scale(1.2); /* Slightly enlarge on hover */ opacity: 1; } .kup-nav-modal .modal-header .btn-close:focus { outline: none; } .kup-nav-button { width: 100%; padding: 20px; margin: 10px 0; border: none; border-radius: 12px; background-color: white; transition: all 0.3s ease; text-align: right; display: flex; align-items: center; text-decoration: none; color: #333; } .kup-nav-button:hover { background-color: var(--kup-light); transform: translateX(-5px); color: var(--kup-primary); } .kup-nav-button i { margin-left: 15px; font-size: 24px; color: var(--kup-primary); } .kup-nav-button-text { font-size: 18px; font-weight: bold; } .kup-opportunities-modal .modal-dialog { max-width: 500px; /* Limit the width */ margin: 2rem auto; /* Add some margin around the modal*/ } .kup-opportunities-modal .modal-content { border-radius: 15px; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2); /* Add a subtle shadow */ border: none; animation: modalIn 0.3s ease-out; /* Entrance animation */ } .kup-opportunities-modal .modal-header { background-color: var(--kup-light); border-bottom: none; padding: 20px; display: flex; align-items: center; /* Align items vertically */ justify-content: space-between; /* Space out title and close button */ } .kup-opportunities-modal .modal-header .modal-title { margin-bottom: 0; /* Reset default margin for better alignment */ white-space: nowrap; /* Prevent text from wrapping */ overflow: hidden; /* Hide overflowing text */ text-overflow: ellipsis; /* Show ellipsis for overflowing text */ max-width: calc(100% - 40px); /* Maximum width for the title, accounting for button size */ color: var(--kup-primary); font-weight: bold; font-size: 18px; } .kup-opportunities-modal .modal-header .modal-close { color: var(--kup-primary); font-size: 28px; /* Make the close button larger */ transition: transform 0.2s ease; opacity: 0.8; border: none; background: none; cursor: pointer; } .kup-opportunities-modal .modal-header .modal-close:hover { transform: scale(1.2); /* Slightly enlarge on hover */ opacity: 1; } .kup-opportunities-modal .modal-header .modal-close:focus { outline: none; } .kup-opportunities-modal .modal-body { padding: 20px; display: flex; flex-direction: column; gap: 15px; overflow-y: auto; /* Add scroll to body if it's too long */ } .kup-opportunity-btn { display: flex; align-items: center; padding: 15px 20px; border-radius: 10px; text-decoration: none; transition: all 0.3s ease; font-weight: 500; gap: 12px; cursor: pointer; /* Indicate the button is clickable */ } .kup-opportunity-btn i { font-size: 20px; } /* Added a class to manage the margin for the 'opportunities and add' buttons */ .kup-opportunities-modal .modal-body .button-container { margin-bottom: 10px; /* Adjust the value as needed */ } .kup-real-estate-btn { background-color: #E3F2FD; color: #1976D2; } .kup-real-estate-btn:hover { background-color: #1976D2; color: white; transform: translateY(-2px); } .kup-investment-btn { background-color: #E8F5E9; color: #388E3C; } .kup-investment-btn:hover { background-color: #388E3C; color: white; transform: translateY(-2px); } .kup-academic-btn { background-color: #FFF3E0; color: #F57C00; } .kup-academic-btn:hover { background-color: #F57C00; color: white; transform: translateY(-2px); } /* Add a subtle animation to the modal open/close */ .modal.fade .modal-dialog { transition: transform 0.3s ease-out; transform: translateY(-50px); } .modal.show .modal-dialog { transform: translateY(0); } .highlighted-word { font-weight: bold; color: black; display: inline-block; position: relative; /* Establish a positioning context */ animation: pulse 1.5s infinite alternate, emoji-float 1.5s infinite alternate; transition: transform 0.2s ease-in-out; /* smooth transition */ } .highlighted-word::before{ content: '🎁'; position: absolute; top: -1.2em; /* Adjust as needed */ right: 0; /* Adjust to center above text */ font-size: 1em; /* adjust as needed */ animation: emoji-float-before 1.5s infinite alternate; } .highlighted-word::after{ content: '🎁'; position: absolute; top: -1.2em; /* Adjust as needed */ left: 0; /* Adjust to center above text */ font-size: 1em; /* adjust as needed */ animation: emoji-float-after 1.5s infinite alternate; } @keyframes pulse { 0% { transform: scale(1); } 50%{ transform: scale(1.15); /* Scale up slightly */ } 100% { transform: scale(1.1); } } @keyframes emoji-float { 0% { transform: translateY(0); } 100% { transform: translateY(-5px); } /* Make them float up */ } @keyframes emoji-float-before { 0% { transform: translateY(0); } 100% { transform: translateY(-5px) translateX(-2px); } /* Make them float up */ } @keyframes emoji-float-after { 0% { transform: translateY(0); } 100% { transform: translateY(-5px) translateX(2px); } /* Make them float up */ } </style> <div class="modal fade kup-account-modal" id="kupAccountModal" tabindex="-1" aria-labelledby="kupAccountModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="kupAccountModalLabel">Account</h5> <button type="button" class="btn-close modal-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body text-center"> <a href="/en/accounts/myaccount_login/" class="kup-account-btn kup-login-btn mb-2"> <i class="fas fa-sign-in-alt"></i> Login </a> <a href="/en/accounts/custom_initial_role_selection/" class="kup-account-btn kup-signup-btn mb-2"> <i class="fas fa-user-plus"></i> Create Account </a> <a href="/en/accounts/phone-login/" class="kup-account-btn kup-phone-btn"> <i class="fas fa-mobile-alt"></i> Login with Phone Number </a> </div> </div> </div> </div> <a href="#" class="kup-add-btn" id="kupAddBtn"> <i class="fas fa-plus" style="color: white;"></i> </a> <div class="kup-float-btns" id="kupFloatBtns" style="display: none;"> <a href="/en/kup/create/step1/" class="kup-float-btn"> <i class="fas fa-file-alt me-2 kup-gold"></i> Add Your Property Manually </a> <a href="/en/apkappraisaL/appraisal/step1/" class="kup-float-btn"> <i class="fas fa-balance-scale" style="color: #28a745;"></i> Get an Appraisal <span class="highlighted-word">Free</span> and accurate for your property from our certified experts </a> <a href="/kup/property/create/with-ai/" class="kup-float-btn"> <i class="fas fa-brain me-2 kup-gold"></i> Add your property quickly using AI </a> <a href="/en/core/request/create/1/" class="kup-float-btn"> <i class="fas fa-file-alt me-2 kup-gold"></i> Submit Your Property Request Now </a> <a href="/en/investor/profiles/create/" class="kup-float-btn"> <h5>Start your website <span class="highlighted-word">Free</span> Now ✨</h5> <i class="fas fa-rocket"></i> </a> </div> <nav class="kup-bottom-nav"> <a href="#" class="kup-nav-item active" data-bs-toggle="modal" data-bs-target="#kupNavigationModal"> <i class="fas fa-home"></i> <div>Home</div> </a> <a href="#" class="kup-nav-item" data-bs-toggle="modal" data-bs-target="#propertiesActionsModal"> <i class="fas fa-building"></i> <div>CRM</div> <!-- Changed text here --> </a> <a class="kup-nav-item"> <div></div> </a> <a href="#" class="kup-nav-item" data-bs-toggle="modal" data-bs-target="#kupOpportunitiesModal"> <i class="fas fa-chart-line"></i> <div>Opportunities</div> </a> <a href="#" class="kup-nav-item" data-bs-toggle="modal" data-bs-target="#kupAccountModal"> <i class="fas fa-user"></i> <div>Account</div> </a> </nav> <!-- Modal for Property Actions --> <div class="modal fade kup-nav-modal" id="propertiesActionsModal" tabindex="-1" aria-labelledby="propertiesActionsModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content bg-realdark text-light"> <div class="modal-header"> <h5 class="modal-title" id="propertiesActionsModalLabel">إجراءات المستثمر</h5> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <a href="/en/investor/comcreate/" class="kup-nav-button"> <i class="fas fa-plus-circle color-realgold"></i> <span class="kup-nav-button-text">إنشاء ملف تعريف مستثمر</span> </a> </div> </div> </div> </div> <!-- Add this new modal --> <div class="modal fade kup-nav-modal" id="kupNavigationModal" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Main Menu</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <a href="/en/communications/" class="kup-nav-button"> <i class="fas fa-star"></i> <span class="kup-nav-button-text">Elite</span> </a> <a href="/afagschool/defaulthomepage/" class="kup-nav-button"> <i class="fas fa-graduation-cap"></i> <span class="kup-nav-button-text">Academy</span> </a> <a href="/en/investor/profiles/" class="kup-nav-button"> <i class="fas fa-chart-line"></i> <span class="kup-nav-button-text">Investment</span> </a> <a href="/en/kup/kupmobileproperty_list/" class="kup-nav-button"> <i class="fas fa-building"></i> <span class="kup-nav-button-text">Properties</span> </a> <a href="/en/afagsocial/" class="kup-nav-button"> <i class="fas fa-trophy"></i> <span class="kup-nav-button-text">Competitions</span> </a> </div> </div> </div> </div> <!-- Add this modal to your existing HTML --> <div class="modal fade kup-opportunities-modal" id="kupOpportunitiesModal" tabindex="-1" aria-labelledby="kupOpportunitiesModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="kupOpportunitiesModalLabel">Available Opportunities</h5> <button type="button" class="btn-close modal-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <a href="/en/kup/" class="kup-opportunity-btn kup-real-estate-btn"> <i class="fas fa-building"></i> <span>Real Estate Opportunities</span> </a> <a href="/en/investor/profiles/" class="kup-opportunity-btn kup-investment-btn"> <i class="fas fa-chart-line"></i> <span>Investment Opportunities</span> </a> <a href="/afagschool/home/courses/" class="kup-opportunity-btn kup-academic-btn"> <i class="fas fa-book-open"></i> <span>Academic Opportunities</span> </a> </div> </div> </div> </div> <script> document.getElementById('kupAddBtn').addEventListener('click', function(event) { event.preventDefault(); const floatingButtons = document.getElementById('kupFloatBtns'); if (floatingButtons.style.display === 'none' || floatingButtons.style.display === '') { floatingButtons.style.display = 'flex'; setTimeout(() => { floatingButtons.classList.add('active'); }, 10); } else { floatingButtons.classList.remove('active'); setTimeout(() => { floatingButtons.style.display = 'none'; }, 500); } }); </script> </footer> </div> <!-- JavaScript --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> <script> if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/static/sw.js') .then(() => console.log('Service Worker registered successfully!')) .catch((error) => console.error('Service Worker registration failed:', error)); } </script> <script> let deferredPrompt; const installButtonContainer = document.getElementById('install-app-btn-container'); const installButton = document.getElementById('install-app-btn'); const arabicCallToAction = installButtonContainer.querySelector('.arabic-call-to-action'); const installLink = document.getElementById('install-link'); let installTimeout; let arabicCallToActionTimeout; let isArabicActionVisible = false; const installButtonDismissedKey = 'installButtonDismissed'; //Check if the button was previously dismissed from local storage if (localStorage.getItem(installButtonDismissedKey) === 'true') { installButtonContainer.style.display = 'none'; } else { // Function to hide the install button installButtonContainer.classList.add('show'); } function hideInstallButton() { installButtonContainer.classList.add('fade-out'); setTimeout(() => { installButtonContainer.style.display = 'none'; installButtonContainer.classList.remove('fade-out'); arabicCallToAction.classList.remove('show'); }, 500); // Match the transition duration isArabicActionVisible=false; localStorage.setItem(installButtonDismissedKey, 'true'); // Store that the button was dismissed } function handleCloseBtn(){ clearTimeout(installTimeout); clearTimeout(arabicCallToActionTimeout); hideInstallButton(); } // Event delegation for the close button installButtonContainer.addEventListener('click', function(event) { if (event.target.classList.contains('close-btn')) { handleCloseBtn(); } }); window.addEventListener('beforeinstallprompt', (e) => { console.log('beforeinstallprompt event fired'); // Prevent the mini-infobar from appearing on mobile e.preventDefault(); // Stash the event so it can be triggered later deferredPrompt = e; if(localStorage.getItem(installButtonDismissedKey) !== 'true'){ installButtonContainer.classList.add('show'); } installTimeout = setTimeout(() => { arabicCallToAction.classList.add('show'); isArabicActionVisible = true; arabicCallToActionTimeout = setTimeout(() => { hideInstallButton(); }, 7000); }, 5000); installLink.addEventListener('click', async(event) => { event.preventDefault(); clearTimeout(installTimeout); clearTimeout(arabicCallToActionTimeout); hideInstallButton(); deferredPrompt.prompt(); const choiceResult = await deferredPrompt.userChoice; if (choiceResult.outcome === 'accepted') { console.log('User accepted the install prompt'); } else { console.log('User dismissed the install prompt'); } deferredPrompt = null; }); }); installButton.addEventListener('click', async (e) => { e.preventDefault(); // Hide the custom "Install App" button clearTimeout(installTimeout); clearTimeout(arabicCallToActionTimeout); hideInstallButton(); // Show the install prompt deferredPrompt.prompt(); // Wait for the user to respond to the prompt const choiceResult = await deferredPrompt.userChoice; if (choiceResult.outcome === 'accepted') { console.log('User accepted the install prompt'); } else { console.log('User dismissed the install prompt'); } deferredPrompt = null; }); window.addEventListener('appinstalled', (e) => { console.log('App installed'); clearTimeout(installTimeout); clearTimeout(arabicCallToActionTimeout); hideInstallButton(); }); </script> <div data-template-log-id=""></div> <script> document.addEventListener('DOMContentLoaded', function() { let startTime = new Date().getTime() / 1000; // start time in seconds let templateLogIdElement = document.body.querySelector('[data-template-log-id]'); // Changed here if (templateLogIdElement){ let templateLogId = templateLogIdElement.getAttribute('data-template-log-id'); window.addEventListener('beforeunload', function() { let endTime = new Date().getTime() / 1000; let csrfToken = '1nNTUV0RpvmDRHmFNnp9dy7ltiMTTNPRpRzVmeb6CgEG08mY5XYZEAl3QBjM5Hcg'; // gets the csrf_token fetch("/atasky/template-log-update/", { // Changed URL here method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': csrfToken, // Needed for Django POST requests }, body: JSON.stringify({ template_log_id: templateLogId, end_timestamp: endTime, }), }).catch(error => console.error('Error:', error)); }); } }); </script> </body> </html>