14 Commits

Author SHA1 Message Date
29ada469f1 Update src/app/page.tsx 2026-02-19 05:12:11 +00:00
35974ef697 Update src/app/layout.tsx 2026-02-19 05:12:10 +00:00
9edc509176 Update src/app/page.tsx 2026-02-19 05:07:40 +00:00
3ecf5cd576 Merge version_8 into main
Merge version_8 into main
2026-02-19 05:07:15 +00:00
9aa099ba6e Update src/app/page.tsx 2026-02-19 05:07:11 +00:00
ffb8a12e46 Merge version_8 into main
Merge version_8 into main
2026-02-19 05:04:58 +00:00
5e55889445 Update src/app/page.tsx 2026-02-19 05:04:54 +00:00
0a5feda129 Merge version_7 into main
Merge version_7 into main
2026-02-19 05:00:07 +00:00
5324217092 Update src/app/page.tsx 2026-02-19 05:00:03 +00:00
27a39cf14f Merge version_6 into main
Merge version_6 into main
2026-02-19 04:51:06 +00:00
40958aa0e5 Update src/app/page.tsx 2026-02-19 04:51:02 +00:00
140e36ec20 Update src/app/layout.tsx 2026-02-19 04:51:01 +00:00
4327d13904 Merge version_5 into main
Merge version_5 into main
2026-02-17 09:08:27 +00:00
e8689d05e8 Merge version_5 into main
Merge version_5 into main
2026-02-17 09:06:01 +00:00
2 changed files with 95 additions and 13 deletions

View File

@@ -1,5 +1,4 @@
import type { Metadata } from 'next';
import { Cormorant_Garamond } from "next/font/google";
import './globals.css';
export const metadata: Metadata = {
@@ -7,12 +6,6 @@ export const metadata: Metadata = {
description: 'Discover exclusive luxury properties in Dubai curated for discerning buyers and investors.',
};
const cormorantGaramond = Cormorant_Garamond({
variable: "--font-cormorant-garamond",
subsets: ["latin"],
weight: ["300", "400", "500", "600", "700"],
});
export default function RootLayout({
children,
}: {
@@ -20,7 +13,7 @@ export default function RootLayout({
}) {
return (
<html lang="en">
<body className={`${cormorantGaramond.variable} antialiased`}>
<body>
{children}
<script
@@ -416,6 +409,20 @@ export default function RootLayout({
originalContent = element.textContent;
element.contentEditable = 'true';
if (!element.dataset.webildOriginalWhiteSpace) {
const computedStyle = window.getComputedStyle(element);
element.dataset.webildOriginalWhiteSpace = computedStyle.whiteSpace;
element.dataset.webildOriginalWordWrap = computedStyle.wordWrap;
element.dataset.webildOriginalOverflowWrap = computedStyle.overflowWrap;
element.dataset.webildOriginalOverflow = computedStyle.overflow;
}
element.style.whiteSpace = 'pre-wrap';
element.style.wordWrap = 'break-word';
element.style.overflowWrap = 'break-word';
element.style.overflow = 'visible';
element.focus();
isEditing = true;
@@ -525,6 +532,23 @@ export default function RootLayout({
element.contentEditable = 'false';
isEditing = false;
if (element.dataset.webildOriginalWhiteSpace) {
element.style.whiteSpace = element.dataset.webildOriginalWhiteSpace === 'normal' ? '' : element.dataset.webildOriginalWhiteSpace;
delete element.dataset.webildOriginalWhiteSpace;
}
if (element.dataset.webildOriginalWordWrap) {
element.style.wordWrap = element.dataset.webildOriginalWordWrap === 'normal' ? '' : element.dataset.webildOriginalWordWrap;
delete element.dataset.webildOriginalWordWrap;
}
if (element.dataset.webildOriginalOverflowWrap) {
element.style.overflowWrap = element.dataset.webildOriginalOverflowWrap === 'normal' ? '' : element.dataset.webildOriginalOverflowWrap;
delete element.dataset.webildOriginalOverflowWrap;
}
if (element.dataset.webildOriginalOverflow) {
element.style.overflow = element.dataset.webildOriginalOverflow === 'visible' ? '' : element.dataset.webildOriginalOverflow;
delete element.dataset.webildOriginalOverflow;
}
if (element.dataset.beforeInputHandler === 'true') {
element.removeEventListener('beforeinput', () => {});
delete element.dataset.beforeInputHandler;
@@ -830,6 +854,9 @@ export default function RootLayout({
const handleScroll = () => {
if (!isActive) return;
if (isEditing) return;
if (selectedElement) {
makeUneditable(selectedElement, false);
selectedElement.classList.remove(selectedClass);
@@ -1203,6 +1230,31 @@ export default function RootLayout({
window.addEventListener('scroll', handleScroll, true);
window.addEventListener('message', handleMessage, true);
let lastPathname = window.location.pathname;
const notifyPageChange = () => {
window.parent.postMessage({
type: 'webild-page-changed',
data: { pathname: window.location.pathname }
}, '*');
};
window.addEventListener('popstate', () => {
if (lastPathname !== window.location.pathname) {
lastPathname = window.location.pathname;
notifyPageChange();
}
}, true);
const urlCheckInterval = setInterval(() => {
if (lastPathname !== window.location.pathname) {
lastPathname = window.location.pathname;
notifyPageChange();
}
}, 500);
notifyPageChange();
window.webildCleanup = () => {
isActive = false;
@@ -1213,6 +1265,10 @@ export default function RootLayout({
removeHoverOverlay();
removeElementTypeLabel();
if (urlCheckInterval) {
clearInterval(urlCheckInterval);
}
document.removeEventListener('mouseover', handleMouseOver, true);
document.removeEventListener('mouseout', handleMouseOut, true);
document.removeEventListener('click', handleClick, true);
@@ -1243,4 +1299,4 @@ export default function RootLayout({
</body>
</html>
);
}
}

View File

@@ -1,4 +1,4 @@
"use client"
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';
@@ -6,11 +6,12 @@ import HeroBillboardGallery from '@/components/sections/hero/HeroBillboardGaller
import ProductCardFour from '@/components/sections/product/ProductCardFour';
import MediaAbout from '@/components/sections/about/MediaAbout';
import FeatureCardTwentyTwo from '@/components/sections/feature/FeatureCardTwentyTwo';
import TeamCardOne from '@/components/sections/team/TeamCardOne';
import MetricCardThree from '@/components/sections/metrics/MetricCardThree';
import TestimonialCardFive from '@/components/sections/testimonial/TestimonialCardFive';
import ContactCTA from '@/components/sections/contact/ContactCTA';
import FooterSimple from '@/components/sections/footer/FooterSimple';
import { Sparkles, Home, Shield, Award, Star, Mail, TrendingUp, DollarSign, FileCheck, Building2, Users } from "lucide-react";
import { Sparkles, Home, Shield, Award, Star, Mail, TrendingUp, DollarSign, Users } from "lucide-react";
export default function LandingPage() {
return (
@@ -21,7 +22,7 @@ export default function LandingPage() {
contentWidth="mediumSmall"
sizing="mediumLarge"
background="none"
cardStyle="elevated"
cardStyle="glass-elevated"
primaryButtonStyle="inset-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="medium"
@@ -33,6 +34,7 @@ export default function LandingPage() {
{ name: "Properties", id: "properties" },
{ name: "About", id: "about" },
{ name: "Services", id: "services" },
{ name: "Team", id: "team" },
{ name: "Testimonials", id: "testimonials" },
{ name: "Contact", id: "contact" }
]}
@@ -149,6 +151,29 @@ export default function LandingPage() {
/>
</div>
<div id="team" data-section="team">
<TeamCardOne
title="Executive Team"
description="Meet the visionary leaders guiding Luxe Properties with expertise and dedication."
tag="Our Leadership"
textboxLayout="default"
animationType="slide-up"
useInvertedBackground={false}
gridVariant="uniform-all-items-equal"
members={[
{
id: "1", name: "Hassan Al-Maktoum", role: "Chief Executive Officer", imageSrc: "https://img.b2bpic.net/free-photo/business-people-using-digital-tablet-airport_107420-95868.jpg", imageAlt: "Hassan Al-Maktoum"
},
{
id: "2", name: "Layla Al-Mansoori", role: "Chief Operating Officer", imageSrc: "https://img.b2bpic.net/free-photo/businessman-discussing-document-with-colleague_107420-84875.jpg", imageAlt: "Layla Al-Mansoori"
},
{
id: "3", name: "Marcus Wellington", role: "Chief Investment Officer", imageSrc: "https://img.b2bpic.net/free-photo/young-businessman-with-clipboard_1098-602.jpg", imageAlt: "Marcus Wellington"
}
]}
/>
</div>
<div id="metrics" data-section="metrics">
<MetricCardThree
title="By The Numbers"
@@ -232,6 +257,7 @@ export default function LandingPage() {
title: "Company", items: [
{ label: "About Us", href: "#about" },
{ label: "Our Services", href: "#services" },
{ label: "Executive Team", href: "#team" },
{ label: "Properties", href: "#properties" },
{ label: "Contact", href: "#contact" }
]
@@ -265,4 +291,4 @@ export default function LandingPage() {
</div>
</ThemeProvider>
);
}
}