This commit is contained in:
iqbal024 2025-04-30 22:43:57 +07:00
parent 434c5a6cfc
commit eaa6543a3f
38 changed files with 21581 additions and 10691 deletions

13466
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -21,13 +21,16 @@
"clsx": "^2.1.1",
"country-state-city": "^3.2.1",
"dayjs": "^1.11.13",
"framer-motion": "^12.9.2",
"graphql": "^16.8.1",
"lucide-react": "^0.503.0",
"next": "15.3.0",
"payload": "^3.35.1",
"qs-esm": "^7.0.2",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-hook-form": "^7.56.1",
"react-icons": "^5.5.0",
"react-select": "^5.10.1",
"react-toastify": "^11.0.5",
"swiper": "^11.2.6",

View File

@ -11756,6 +11756,7 @@ html.tablet .ui-to-top {
.rd-navbar-static .rd-megamenu-list > li > a {
position: relative;
padding-left: 17px;
padding-right: 20px;
}
.rd-navbar-static .rd-navbar-dropdown > li > a::before,
@ -12452,7 +12453,7 @@ html.rd-navbar-fixed-linked .page {
position: relative;
display: flex;
align-items: center;
justify-content: space-between;
justify-content: space-evenly;
padding: 22px 60px 22px 0;
max-width: 1200px;
margin-left: auto;

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
public/images/photos.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -13,7 +13,7 @@
--font-montserrat: var(--font-montserrat);
--font-playfairdisplay: var(--font-playfairdisplay);
--color-colorExt10: #0a0a0a;
--color-colorExt20: #ffffff;
--color-colorExt20: #ffffff;
--color-colorExt21: #f3f4f9;
--color-colorExt30: #967244;
--color-colorext40: #bc986b;
@ -44,12 +44,32 @@
--color-colorLinkText2: var(--color-colorext40);
}
@theme {
/* Gold color palette */
--color-gold-100: #faf3e0;
--color-gold-500: #d4af37;
--color-gold-600: #c9a227;
--color-gold-700: #bd9717;
/* Dark color palette */
--color-dark-800: #1a1a1a;
--color-dark-900: #0d0d0d;
/* Animation durations and easing */
--animation-fade-in-up: fadeInUp 0.6s ease-out;
--animation-fade-in: fadeIn 0.8s ease-in;
/* Keyframe references (you'll still need to define these separately) */
--keyframes-fade-in-up: fadeInUp;
--keyframes-fade-in: fadeIn;
}
@layer components {
.rd-nav-link-custom {
@apply text-colorHeader! lg:text-colorHeaderText! lg:hover:text-colorHeaderTextHover!
@apply text-colorHeader! lg:text-colorHeaderText! lg:hover:text-colorHeaderTextHover!;
}
.rd-nav-link-custom.active {
@apply text-colorHeader! lg:text-colorHeaderTextHover! lg:hover:text-colorHeaderTextHover!
@apply text-colorHeader! lg:text-colorHeaderTextHover! lg:hover:text-colorHeaderTextHover!;
}
}
@ -66,4 +86,65 @@ body {
font-family: Arial, Helvetica, sans-serif;
}
.ie-panel{display: none;background: #212121;padding: 10px 0;box-shadow: 3px 3px 5px 0 rgba(0,0,0,.3);clear: both;text-align:center;position: relative;z-index: 1;} html.ie-10 .ie-panel, html.lt-ie-10 .ie-panel {display: block;}
.ie-panel {
display: none;
background: #212121;
padding: 10px 0;
box-shadow: 3px 3px 5px 0 rgba(0, 0, 0, 0.3);
clear: both;
text-align: center;
position: relative;
z-index: 1;
}
html.ie-10 .ie-panel,
html.lt-ie-10 .ie-panel {
display: block;
}
@keyframes shimmer {
0% {
background-position: -1000px 0;
}
100% {
background-position: 1000px 0;
}
}
.shimmer-effect {
animation: shimmer 2s infinite linear;
background: linear-gradient(
to right,
rgba(255, 255, 255, 0.05) 0%,
rgba(255, 255, 255, 0.2) 50%,
rgba(255, 255, 255, 0.05) 100%
);
background-size: 1000px 100%;
}
.input-focus-effect:focus {
box-shadow: 0 0 0 2px rgba(212, 175, 55, 0.5);
}
.transition-smooth {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.process_item:nth-child(odd)::before {
position: absolute;
top: 0.25rem;
right: -1.9rem;
width: 7.5rem;
height: 3.5rem;
background: url('/images/other/oval_arrow_down.png') center / contain no-repeat;
content: '';
}
.process_item:nth-child(even)::before {
position: absolute;
top: 4rem;
right: -1.9rem;
width: 7.5rem;
height: 3.5rem;
background: url('/images/other/oval_arrow_up.png') center / contain no-repeat;
content: '';
}
.process_item:last-child::before {
display: none;
}

View File

@ -0,0 +1,23 @@
import RealEstateForm from "@/components/RealEstateForm";
import GoogleReviewBox from "@/components/GoogleReviewBox";
import HomeTopSection from "@/components/homes/HomeTopSection";
import RealEstateContent from "@/components/RealEstateContent";
import AboutUs from "@/components/AboutUs";
import ContactSection from "@/components/ContactSection";
export default function Home() {
return (
<>
<HomeTopSection />
<AboutUs />
<section className="!flex !flex-row px-[5vw] bg-black py-16 gap-5">
<div className="w-1/2">
<RealEstateContent />
</div>
<RealEstateForm />
</section>
<GoogleReviewBox />
<ContactSection />
</>
);
}

View File

@ -1,99 +1,48 @@
import ContactFormSection from "@/components/ContactFormSection";
import RealEstateForm from "@/components/RealEstateForm";
import GoogleReviewBox from "@/components/GoogleReviewBox";
import HomeTopSection from "@/components/homes/HomeTopSection";
import Image from "next/image";
import RealEstateContent from "@/components/RealEstateContent";
import Category from "@/components/Categories";
import Featured from "@/components/Featured";
import AboutUs from "@/components/AboutUs";
import ContactSection from "@/components/ContactSection";
export default function Home() {
return (
<>
<HomeTopSection />
<section className="section section-lg bg-colorSection1">
<div className="container">
<h2 className="heading-decoration-1">
<span className="heading-inner">Why Dynamic Realty?</span>
</h2>
<div className="row row-30">
<div className="col-md-12 col-lg-4">
<div>
<article className="box-modern">
<div className="flex">
<div className="w-full h-44 bg-colorHeroOverlay relative">
<AboutUs />
<section className="!flex !flex-row px-[5vw] bg-black py-16 gap-5">
<div className="w-1/2">
<RealEstateContent />
</div>
<RealEstateForm />
</section>
<Featured />
<Category />
<GoogleReviewBox />
<ContactSection />
{/* <Slider>
{sliderData.map((q, idx) => (
<article key={idx} className="!flex w-full shadow-md m-5">
<div>
<div className="w-[350px] h-[350px] relative">
<Image
className="object-cover"
src="/images/why1.jpg"
src={`/images/home${idx + 1}.jpg`}
alt="Tailored Management, Trusted Care"
quality={100}
fill
/>
</div>
</div>
<div className="box-modern-main">
<h4 className="box-modern-title">Tailored Management, Trusted Care</h4>
<p className="text-colorText3">
Committed to providing a personalized structure to each client, with on-site management & a robust
property management
</p>
<div className="flex flex-col justify-center px-5">
<h4 className="box-modern-title !text-2xl">{q.title}</h4>
<p className="text-colorText3 !text-xl">{q.description}</p>
</div>
</article>
</div>
</div>
<div className="col-md-12 col-lg-4">
<div>
<article className="box-modern">
<div className="flex">
<div className="w-full h-44 bg-colorHeroOverlay relative">
<Image
className="object-cover"
src="/images/why2.jpg"
alt="20 Years of Real Estate Excellence"
quality={100}
fill
/>
</div>
</div>
<div className="box-modern-main">
<h4 className="box-modern-title">20 Years of Real Estate Excellence</h4>
<p className="text-colorText3">
We strive to provide a service that meets the needs of all our customers & are proud to have been
helping people with their real estate needs for the past 20 years
</p>
</div>
</article>
</div>
</div>
<div className="col-md-12 col-lg-4">
<div>
<article className="box-modern">
<div className="flex">
<div className="w-full h-44 bg-colorHeroOverlay relative">
<Image
className="object-cover"
src="/images/why3.jpg"
alt="Expert Guidance, Stress-Free Journeys"
quality={100}
fill
/>
</div>
</div>
<div className="box-modern-main">
<h4 className="box-modern-title">Expert Guidance, Stress-Free Journeys</h4>
<p className="text-colorText3">
We understand the real estate sector inside out & are committed to providing a professional
service to our clients. We strive to make the process of reaching your real estate goals as easy &
stress-free as possible
</p>
</div>
</article>
</div>
</div>
</div>
</div>
</section>
<GoogleReviewBox />
<ContactFormSection />
))}
</Slider> */}
</>
);
}

View File

@ -0,0 +1,53 @@
"use client"; // Required for animations and interactivity
import Image from "next/image";
import WhyChooseUs from "./WhyChooseUs";
export default function AboutUs() {
// Initialize animations
return (
<section className="container bg-white py-16 px-4 sm:px-6 lg:px-8">
<h2 className="heading-decoration-1 pb-16">
<span className="heading-inner">Why Dynamic Realty?</span>
</h2>
<div className="max-w-7xl mx-auto">
<div className="flex flex-col lg:flex-row items-center gap-12">
{/* Text Content (Left) */}
<div className="lg:w-full space-y-6" data-aos="fade-right">
<p className="text-lg text-gray-600">
<span className="font-semibold text-gold-600">DYNAMIC REALTY</span> is a full-service veteran-owned real
estate company based in Centerville, GA, established in 2004.
</p>
<p className="text-lg text-gray-600">
Our services include buying & selling, rentals, & property management. We are committed to providing a
personalized structure to each client, with on-site management & a robust property management division. We
strive to provide a service that meets the needs of all our customers & are proud to have been helping
people with their real estate needs for the past 20 years.
</p>
<div className="pt-2">
<span className="text-lg italic font-medium text-gold-600">Making Moves, Building Trust.</span>
</div>
</div>
{/* Image (Right) */}
<div className="lg:w-full" data-aos="fade-left">
<div className="relative rounded-lg overflow-hidden shadow-xl aspect-video">
<Image
src="/images/portrait-of-smiling-mature-couple-standing-in-fron-2024-09-21-17-43-42-utc.webp"
alt="Dynamic Realty Team"
fill
className="object-cover transition-transform duration-500 hover:scale-105 h-full"
priority
/>
{/* Optional: Overlay for visual polish */}
<div className="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent" />
</div>
</div>
</div>
<WhyChooseUs />
</div>
</section>
);
}

View File

@ -0,0 +1,93 @@
export default function Category() {
return (
<section className="section section-lg bg-default">
<div className="container">
<h2 className="heading-decoration-1">
<span className="heading-inner">Categories</span>
</h2>
<div className="row row-30">
<div className="col-md-6 col-lg-7">
<article className="box-category-outer">
<a className="box-category context-dark" href="search-results.html">
<div
className="box-category-image-outer"
style={{ backgroundImage: "url(images/featured-properties-17-480x287.jpg)" }}
></div>
<div className="box-category-caption">
<div className="box-category-caption-inner">
<h3 className="box-category-title">Studio Apartments</h3>
<p className="box-category-subtitle">8 Properties</p>
</div>
</div>
</a>
</article>
</div>
<div className="col-md-6 col-lg-5">
<article className="box-category-outer">
<a className="box-category context-dark" href="search-results.html">
<div
className="box-category-image-outer"
style={{ backgroundImage: "url(images/featured-properties-17-480x287.jpg)" }}
></div>
<div className="box-category-caption">
<div className="box-category-caption-inner">
<h3 className="box-category-title">Swimming Pool</h3>
<p className="box-category-subtitle">8 Properties</p>
</div>
</div>
</a>
</article>
</div>
<div className="col-md-6 col-lg-4">
<article className="box-category-outer">
<a className="box-category context-dark" href="search-results.html">
<div
className="box-category-image-outer "
style={{ backgroundImage: "url(images/featured-properties-17-480x287.jpg)" }}
></div>
<div className="box-category-caption">
<div className="box-category-caption-inner">
<h3 className="box-category-title">Luxury Houses</h3>
<p className="box-category-subtitle">8 Properties</p>
</div>
</div>
</a>
</article>
</div>
<div className="col-md-6 col-lg-4">
<article className="box-category-outer">
<a className="box-category context-dark" href="search-results.html">
<div
className="box-category-image-outer"
style={{ backgroundImage: "url(images/featured-properties-17-480x287.jpg)" }}
></div>
<div className="box-category-caption">
<div className="box-category-caption-inner">
<h3 className="box-category-title">Extra Bedroom</h3>
<p className="box-category-subtitle">8 Properties</p>
</div>
</div>
</a>
</article>
</div>
<div className="col-md-6 col-lg-4">
<article className="box-category-outer">
<a className="box-category context-dark" href="search-results.html">
<div
className="box-category-image-outer"
style={{ backgroundImage: "url(images/featured-properties-17-480x287.jpg)" }}
></div>
<div className="box-category-caption">
<div className="box-category-caption-inner">
<h3 className="box-category-title">Cozy Houses</h3>
<p className="box-category-subtitle">8 Properties</p>
</div>
</div>
</a>
</article>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,130 @@
export default function ContactSection() {
return (
<section className="section mb-16 bg-default">
<div className="container">
<div className="layout-bordered !gap-16 mt-16">
<div className="">
<div className="">
<h2>Contact Details</h2>
<p>
If you have any questions, just fill in the contact form, and we will answer you shortly. If you are
living nearby, come visit our office.
</p>
<div className="my-3" style={{ position: "relative" }}>
<div style={{ position: "relative", height: "300px", overflow: "hidden" }}>
<iframe
style={{ position: "absolute", top: 0, left: 0, width: "100%", height: "100%", border: 0 }}
loading="lazy"
allowFullScreen
src="https://maps.google.com/maps?q=100+N+Houston+Lake+Blvd.+Ste.+V+Centerville%2C+GA+31028&output=embed"
title="Google Map"
></iframe>
</div>
</div>
<div className="">
<dl className="text-md">
<dd>
<span className="icon mr-2 my-2 mdi-phone mdi"></span>
<a className="" href="tel:+14782259061">
(478) 225 9061
</a>
</dd>
</dl>
<dl className="text-md">
<dd>
<span className="icon mr-2 my-2 mdi mdi-email-outline"></span>
<a href="mailto:dynamic@dynamicrealtyga.com">dynamic@dynamicrealtyga.com</a>
</dd>
</dl>
<dl className="text-md">
<dd>
<span className="icon mr-2 my-2 mdi mdi-map-marker"></span>
<a href="https://maps.app.goo.gl/rqwVSiSpP4UMn5un7">
100 N Houston Lake Blvd. Centerville, GA 31028, United States
</a>
</dd>
</dl>
</div>
</div>
</div>
<div className="layout-bordered-main">
<div className="layout-bordered-main-inner">
<h2>Get in Touch</h2>
<form
className="rd-form rd-mailform"
data-form-output="form-output-global"
data-form-type="contact"
method="post"
>
<div className="row row-20">
<div className="col-md-12">
<div className="form-wrap">
<input
className="form-input"
id="contact-name"
type="text"
name="name"
data-constraints="@Required"
placeholder="Your Name"
/>
</div>
</div>
<div className="col-md-12">
<div className="form-wrap">
<input
className="form-input"
id="contact-email"
type="email"
name="email"
data-constraints="@Email @Required"
placeholder="Your Email Address"
/>
</div>
</div>
<div className="col-md-12">
<div className="form-wrap">
<input
className="form-input"
id="contact-phone"
type="text"
name="phone"
placeholder="Your Phone Number"
/>
</div>
</div>
<div className="col-md-12">
<div className="form-wrap">
<input
className="form-input"
id="subject"
type="text"
name="subject"
placeholder="Your subject"
/>
</div>
</div>
<div className="col-12">
<div className="form-wrap">
<textarea
className="form-input"
id="contact-message"
name="message"
data-constraints="@Required"
placeholder="Your Message"
></textarea>
</div>
</div>
<div className="col-md-12">
<button className="button button-sm button-primary" type="submit">
Send message
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
);
}

300
src/components/Featured.tsx Normal file
View File

@ -0,0 +1,300 @@
export default function Featured() {
return (
<section className="section pt-36">
<div className="container">
<div className="layout-4">
<h2 className="heading-decoration-1">
<span className="heading-inner">Featured Properties</span>
</h2>
<div className="layout-4-item">
<ul className="list-inline-bordered heading-7">
<li>
<a href="#">For Rent</a>
</li>
<li>
<a href="#">For Sale</a>
</li>
</ul>
</div>
</div>
<div className="row row-50">
<div className="col-md-6 col-lg-4">
<article className="product-classic">
<div className="product-classic-media">
<div
className="owl-carousel"
data-items="1"
data-nav="true"
data-stage-padding="0"
data-loop="false"
data-margin="0"
data-mouse-drag="false"
>
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
</div>
<div className="product-classic-price">
<span>$5000\mo</span>
</div>
</div>
<h4 className="product-classic-title">
<a href="single-property.html">401 Biscayne Boulevard, Miami</a>
</h4>
<div className="product-classic-divider"></div>
<ul className="product-classic-list">
<li>
<span className="icon mdi mdi-vector-square"></span>
<span>480 Sq Ft</span>
</li>
<li>
<span className="icon hotel-icon-10"></span>
<span>2 Bathrooms</span>
</li>
<li>
<span className="icon hotel-icon-05"></span>
<span>2 Bedrooms</span>
</li>
<li>
<span className="icon hotel-icon-26"></span>
<span>1 Garage</span>
</li>
</ul>
</article>
</div>
<div className="col-md-6 col-lg-4">
<article className="product-classic">
<div className="product-classic-media">
<div
className="owl-carousel"
data-items="1"
data-nav="true"
data-stage-padding="0"
data-loop="false"
data-margin="0"
data-mouse-drag="false"
>
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
</div>
<div className="product-classic-price">
<span>$2500\mo</span>
</div>
</div>
<h4 className="product-classic-title">
<a href="single-property.html">923 Folsom St, San Francisco</a>
</h4>
<div className="product-classic-divider"></div>
<ul className="product-classic-list">
<li>
<span className="icon mdi mdi-vector-square"></span>
<span>535 Sq Ft</span>
</li>
<li>
<span className="icon hotel-icon-10"></span>
<span>2 Bathrooms</span>
</li>
<li>
<span className="icon hotel-icon-05"></span>
<span>3 Bedrooms</span>
</li>
<li>
<span className="icon hotel-icon-26"></span>
<span>1 Garage</span>
</li>
</ul>
</article>
</div>
<div className="col-md-6 col-lg-4">
<article className="product-classic">
<div className="product-classic-media">
<div
className="owl-carousel"
data-items="1"
data-nav="true"
data-stage-padding="0"
data-loop="false"
data-margin="0"
data-mouse-drag="false"
>
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
</div>
<div className="product-classic-price">
<span>9340\mo</span>
</div>
</div>
<h4 className="product-classic-title">
<a href="single-property.html">225 Maywood Dr, San Francisco</a>
</h4>
<div className="product-classic-divider"></div>
<ul className="product-classic-list">
<li>
<span className="icon mdi mdi-vector-square"></span>
<span>435 Sq Ft</span>
</li>
<li>
<span className="icon hotel-icon-10"></span>
<span>1 Bathroom</span>
</li>
<li>
<span className="icon hotel-icon-05"></span>
<span>1 Bedroom</span>
</li>
<li>
<span className="icon hotel-icon-26"></span>
<span>1 Garage</span>
</li>
</ul>
</article>
</div>
<div className="col-md-6 col-lg-4">
<article className="product-classic">
<div className="product-classic-media">
<div
className="owl-carousel"
data-items="1"
data-nav="true"
data-stage-padding="0"
data-loop="false"
data-margin="0"
data-mouse-drag="false"
>
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
</div>
<div className="product-classic-price">
<span>$5550\mo</span>
</div>
</div>
<h4 className="product-classic-title">
<a href="single-property.html">35 Pond St, New York</a>
</h4>
<div className="product-classic-divider"></div>
<ul className="product-classic-list">
<li>
<span className="icon mdi mdi-vector-square"></span>
<span>430 Sq Ft</span>
</li>
<li>
<span className="icon hotel-icon-10"></span>
<span>2 Bathrooms</span>
</li>
<li>
<span className="icon hotel-icon-05"></span>
<span>3 Bedrooms</span>
</li>
<li>
<span className="icon hotel-icon-26"></span>
<span>1 Garage</span>
</li>
</ul>
</article>
</div>
<div className="col-md-6 col-lg-4">
<article className="product-classic">
<div className="product-classic-media">
<div
className="owl-carousel"
data-items="1"
data-nav="true"
data-stage-padding="0"
data-loop="false"
data-margin="0"
data-mouse-drag="false"
>
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
</div>
<div className="product-classic-price">
<span>$2520\mo</span>
</div>
</div>
<h4 className="product-classic-title">
<a href="single-property.html">182 3rd St, Seattle</a>
</h4>
<div className="product-classic-divider"></div>
<ul className="product-classic-list">
<li>
<span className="icon mdi mdi-vector-square"></span>
<span>630 Sq Ft</span>
</li>
<li>
<span className="icon hotel-icon-10"></span>
<span>3 Bathrooms</span>
</li>
<li>
<span className="icon hotel-icon-05"></span>
<span>3 Bedrooms</span>
</li>
<li>
<span className="icon hotel-icon-26"></span>
<span>2 Garages</span>
</li>
</ul>
</article>
</div>
<div className="col-md-6 col-lg-4">
<article className="product-classic">
<div className="product-classic-media">
<div
className="owl-carousel"
data-items="1"
data-nav="true"
data-stage-padding="0"
data-loop="false"
data-margin="0"
data-mouse-drag="false"
>
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
<img src="images/featured-properties-17-480x287.jpg" alt="" width="480" height="287" />
</div>
<div className="product-classic-price">
<span>$5000\mo</span>
</div>
</div>
<h4 className="product-classic-title">
<a href="single-property.html">623 Willow Rd, Dallas</a>
</h4>
<div className="product-classic-divider"></div>
<ul className="product-classic-list">
<li>
<span className="icon mdi mdi-vector-square"></span>
<span>530 Sq Ft</span>
</li>
<li>
<span className="icon hotel-icon-10"></span>
<span>2 Bathrooms</span>
</li>
<li>
<span className="icon hotel-icon-05"></span>
<span>2 Bedrooms</span>
</li>
<li>
<span className="icon hotel-icon-26"></span>
<span>2 Garages</span>
</li>
</ul>
</article>
</div>
<div className="col-12 text-center">
<a className="button button-primary" href="properties-grid.html">
View all properties
</a>
</div>
</div>
</div>
</section>
);
}

View File

View File

@ -1,9 +1,11 @@
import { reviews } from "@/datas/reviews";
export default function GoogleReviewBox() {
return (
<section className="section section-lg bg-colorSection2">
<div className="container">
<h2 className="heading-decoration-1">
<span className="heading-inner">Making Moves, Building Trust</span>
<span className="heading-inner">What Our Residents Are Saying</span>
</h2>
</div>
<div className="container container-wide">
@ -11,8 +13,8 @@ export default function GoogleReviewBox() {
className="owl-carousel"
data-items="1"
data-md-items="2"
data-lg-items="3"
data-xl-items="4"
data-lg-items="2"
data-xl-items="3"
data-dots="true"
data-nav="false"
data-stage-padding="0"
@ -20,84 +22,31 @@ export default function GoogleReviewBox() {
data-margin="30"
data-mouse-drag="false"
>
<article className="quote-modern">
<div className="quote-modern-inner">
<time className="quote-modern-time" dateTime="2021">
March 15, 2021
</time>
<div className="quote-modern-main">
<p>
Your property managers have been active in their response to repairs and always patient with our
frustrations. You have always found us wonderful tenants.
</p>
</div>
<div className="quote-modern-meta-outer">
<div className="quote-modern-meta">
<h4 className="quote-modern-cite">Karen Sanders</h4>
{reviews.map((q, idx) => (
<article key={"review" + idx} className="!flex bg-white p-12 h-full">
<div>
<time className="quote-modern-time" dateTime="2021">
{q.date}
</time>
<div className="quote-modern-main">
<p>{q.comment}</p>
</div>
</div>
</div>
</article>
<article className="quote-modern">
<div className="quote-modern-inner">
<time className="quote-modern-time" dateTime="2021">
March 15, 2021
</time>
<div className="quote-modern-main">
<p>
We recently rented an apartment through your site, and have been looked after by James Thompson. He
provided us with utmost support on every property issue.
</p>
</div>
<div className="quote-modern-meta-outer">
<div className="quote-modern-meta-outer">
<div className="quote-modern-meta">
<h4 className="quote-modern-cite">Walter Williams</h4>
<h4 className="quote-modern-cite">{q.name}</h4>
<p className="quote-modern-position">{q.job_title}</p>
</div>
</div>
</div>
</div>
</article>
<article className="quote-modern">
<div className="quote-modern-inner">
<time className="quote-modern-time" dateTime="2021">
March 15, 2021
</time>
<div className="quote-modern-main">
<p>
I have always found your team to be extremely prompt and professional with all dealings I have had
with them. You always keep me updated on the progress.
</p>
</div>
<div className="quote-modern-meta-outer">
<div className="quote-modern-meta-outer">
<div className="quote-modern-meta">
<h4 className="quote-modern-cite">Kate Anderson</h4>
</div>
</div>
</div>
</div>
</article>
<article className="quote-modern">
<div className="quote-modern-inner">
<time className="quote-modern-time" dateTime="2021">
March 15, 2021
</time>
<div className="quote-modern-main">
<p>
Your advice and support from our initial meeting through liaising with current tenants and a polished
marketing program all contributed to a great sale process, thanks!
</p>
</div>
<div className="quote-modern-meta-outer">
<div className="quote-modern-meta-outer">
<div className="quote-modern-meta">
<h4 className="quote-modern-cite">Peter Smith</h4>
</div>
</div>
</div>
</div>
</article>
<img
className="w-[200px] h-[200px] object-cover rounded-full"
src={q.profile_pict}
alt=""
width="57"
height="57"
/>
</article>
))}
</div>
</div>
</section>

View File

@ -28,7 +28,7 @@ export default function HeroSlider() {
]);
return (
<section className="section flex! flex-row! justify-end! relative! min-h-[900px]! lg:min-h-[600px]!">
<section className="section flex! flex-row! justify-center! relative! min-h-[900px]! lg:min-h-[700px]!">
<Swiper
className="absolute w-full h-full"
modules={[Autoplay]}
@ -49,7 +49,7 @@ export default function HeroSlider() {
objectFit: "cover",
}}
/>
<section className="section section-lg text-colorText2! bg-colorHeroOverlay/70 w-full h-full z-20">
<section className="section section-lg text-colorText2! bg-colorHeroOverlay/70 w-full h-full z-20 !flex flex-col">
<div className="container">
<div className="row">
<div className="col-12 col-lg-4 flex justify-center">

View File

@ -0,0 +1,188 @@
"use client";
const ProcessSteps = () => {
const data = [
{
id: "1",
icon: "icon-consultation",
image: "/images/process/1.jpg",
title: "Your information",
desc: "WInitial consultation to understand your needs, preferences, and budget.",
},
{
id: "2",
icon: "icon-design",
image: "/images/process/2.jpg",
title: "Co-signer contact information",
desc: "Financial review and co-signer verification if required.",
},
{
id: "3",
icon: "icon-wrench",
image: "/images/process/3.jpg",
title: "Review Application",
desc: "Property evaluation and document review with your agent.",
},
{
id: "4",
icon: "icon-inspection",
image: "/images/process/4.jpg",
title: "Payment",
desc: "Secure transaction processing and deposit handling.",
},
{
id: "5",
icon: "icon-inspection",
image: "/images/process/4.jpg",
title: "Fast Delivery & Project Success",
desc: "We deliver exactly what you need, when you need it. From your first quote to your final stone, were here to make sure your job gets done—on time and on point.",
},
];
return (
<section className={`section container process`}>
<div className="box-info-aside">
<div
className="card-group-custom card-group-corporate"
id="accordion1"
role="tablist"
aria-multiselectable="false"
>
<article className="card card-custom card-corporate">
<div className="card-header" id="accordion1-heading-1" role="tab">
<div className="card-title">
<a
className="card-link"
role="button"
data-toggle="collapse"
href="#accordion1-collapse-1"
aria-controls="accordion1-collapse-1"
aria-expanded="true"
>
<span>Why should I refer to a MyHome salesperson?</span>
<div className="card-arrow"></div>
</a>
</div>
</div>
<div
className="collapse show"
id="accordion1-collapse-1"
role="tabpanel"
aria-labelledby="accordion1-heading-1"
data-parent="#accordion1"
>
<div className="card-body">
<p>
A MyHome salesperson is more than just a sales person. They act on your behalf as your agent,
providing you with advice and guidance and doing a job helping you buy or sell a home. While it is
true they get paid for what they do, so do other professions that provide advice, guidance.
</p>
</div>
</div>
</article>
<article className="card card-custom card-corporate">
<div className="card-header" id="accordion1-heading-2" role="tab">
<div className="card-title">
<a
className="card-link collapsed"
role="button"
data-toggle="collapse"
href="#accordion1-collapse-2"
aria-controls="accordion1-collapse-2"
aria-expanded="false"
>
<span>Should I talk with a bank before looking at homes?</span>
<div className="card-arrow"></div>
</a>
</div>
</div>
<div
className="collapse"
id="accordion1-collapse-2"
role="tabpanel"
aria-labelledby="accordion1-heading-2"
data-parent="#accordion1"
>
<div className="card-body">
<p>
The answer to the question is YES! There are tons of reasons why you should talk with a bank and get
pre-approved before looking at homes. First and foremost, talking with a bank before looking at homes
can help you understand exactly how much you can afford. There is no reason to look at homes that are
listed for $250,000 if you can only afford up to $200,000.
</p>
</div>
</div>
</article>
<article className="card card-custom card-corporate">
<div className="card-header" id="accordion1-heading-3" role="tab">
<div className="card-title">
<a
className="card-link collapsed"
role="button"
data-toggle="collapse"
href="#accordion1-collapse-3"
aria-controls="accordion1-collapse-3"
aria-expanded="false"
>
<span>Should I buy or continue to rent?</span>
<div className="card-arrow"></div>
</a>
</div>
</div>
<div
className="collapse"
id="accordion1-collapse-3"
role="tabpanel"
aria-labelledby="accordion1-heading-3"
data-parent="#accordion1"
>
<div className="card-body">
<p>
Buying a home can be a very solid investment. This being said, renting can also be a better option for
some, depending on the circumstances. The current interest rates are incredible. A 30-year FHA
mortgage can be locked in at a rate of around 3.5%. Since the interest rates are so low, it actually
can be cheaper to pay a mortgage right now than paying rent.
</p>
</div>
</div>
</article>
<article className="card card-custom card-corporate">
<div className="card-header" id="accordion1-heading-4" role="tab">
<div className="card-title">
<a
className="card-link collapsed"
role="button"
data-toggle="collapse"
href="#accordion1-collapse-4"
aria-controls="accordion1-collapse-4"
aria-expanded="false"
>
<span>Can I find a rent-to-own property?</span>
<div className="card-arrow"></div>
</a>
</div>
</div>
<div
className="collapse"
id="accordion1-collapse-4"
role="tabpanel"
aria-labelledby="accordion1-heading-4"
data-parent="#accordion1"
>
<div className="card-body">
<p>
Of course you can, but the probability isnt very high. The same can be said about a rent-to-own
property. A common question from home buyers is whether rent-to-owns exist or whether an owner would
consider that option. They are out there, but there are somethings that you need to know before
agreeing to a rent-to-own.
</p>
</div>
</div>
</article>
</div>
</div>
</section>
);
};
export default ProcessSteps;

View File

@ -0,0 +1,50 @@
"use client";
import React from "react";
const RealEstateContent = () => {
return (
<div className="flex flex-col justify-center animate-fade-in-up">
<div className="mb-6">
<img
src="/images/photos.webp"
alt="Dynamic Realty Team"
className="object-cover duration-500 hover:scale-105 !h-[450px] !w-full"
/>
<div className="w-16 h-1 bg-gold-500 mb-4"></div>
<h1 className="text-4xl md:text-5xl font-serif font-bold text-white mb-4">
Discover Your <span className="text-gold-500">Dream</span> Residence
</h1>
<p className="text-gray-300 text-lg">
At Dynamic Realty, we offer a comprehensive range of realty services to meet the needs of our customers in
Central Georgia. Our services include buying & selling, renting, & property management. We understand the real
estate sector inside out & are committed to providing a professional service to our clients. We strive to make
the process of reaching your real estate goals as easy & stress-free as possible. Get in touch with us today
to find out more.
</p>
</div>
<button></button>
</div>
);
};
const FeatureItem = ({ text }: { text: string }) => {
return (
<div className="flex items-end">
<div className="flex-shrink-0">
<svg
className="w-5 h-5 text-gold-500"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M5 13l4 4L19 7"></path>
</svg>
</div>
<p className="ml-3 text-gray-300">{text}</p>
</div>
);
};
export default RealEstateContent;

View File

@ -0,0 +1,261 @@
"use client";
import Image from "next/image";
import { useState } from "react";
const RealEstateForm = () => {
const [formData, setFormData] = useState({
name: "",
email: "",
phone: "",
comments: "",
subject: "",
privacy: false,
});
const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) => {
const { name, value, type } = e.target;
const checked = type === "checkbox" ? (e.target as HTMLInputElement).checked : undefined;
setFormData((prev) => ({
...prev,
[name]: type === "checkbox" ? checked : value,
}));
};
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
console.log("Form submitted:", formData);
};
return (
<div
className="bg-dark rounded-xl shadow-2xl overflow-hidden border border-gray-700 animate-fade-in-up m-auto"
style={{ animationDelay: "0.2s" }}
>
<div className="p-8">
<div className="text-center mb-8">
<img
className="brand-logo-dark mb-3"
src="/images/logo2.png"
alt=""
width="242"
height="41"
srcSet="/images/logo2.png 2x"
/>
<h2 className="text-2xl font-serif font-bold text-white mb-2">
Interested in <span className="text-gold-500">buying or selling</span> ?
</h2>
<p className="text-gray-400">Leave us your info and we will get back to you.</p>
</div>
<form className="space-y-6" onSubmit={handleSubmit}>
<div className="space-y-4">
<div>
<div className="relative">
<input
type="text"
id="name"
name="name"
value={formData.name}
onChange={handleChange}
required
className="w-full px-4 py-3 bg-dark-900 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:border-gold-500 input-focus-effect transition-smooth"
placeholder="Your Name"
/>
<div className="absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none">
<svg
className="h-5 w-5 text-gray-500"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"
></path>
</svg>
</div>
</div>
</div>
<div className="flex gap-3">
<div className="relative flex-1">
<input
type="email"
id="email"
name="email"
value={formData.email}
onChange={handleChange}
required
className="w-full px-4 py-3 bg-dark-900 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:border-gold-500 input-focus-effect transition-smooth"
placeholder="Your Email Address"
/>
<div className="absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none">
<svg
className="h-5 w-5 text-gray-500"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
></path>
</svg>
</div>
</div>
<div className="relative flex-1">
<input
type="tel"
id="phone"
name="phone"
value={formData.phone}
onChange={handleChange}
className="w-full px-4 py-3 bg-dark-900 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:border-gold-500 input-focus-effect transition-smooth"
placeholder="Your Phone Number"
/>
<div className="absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none">
<svg
className="h-5 w-5 text-gray-500"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"
></path>
</svg>
</div>
</div>
</div>
<div className="relative flex-1">
<input
type="subject"
id="subject"
name="subject"
value={formData.subject}
onChange={handleChange}
required
className="w-full px-4 py-3 bg-dark-900 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:border-gold-500 input-focus-effect transition-smooth"
placeholder="Type the subject"
/>
<div className="absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none">
<svg
className="h-5 w-5 text-gray-500"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
></path>
</svg>
</div>
</div>
<div>
<div className="relative">
<textarea
id="comments"
name="comments"
rows={4}
value={formData.comments}
onChange={handleChange}
className="w-full px-4 py-3 bg-dark-900 border border-gray-700 rounded-lg text-white placeholder-gray-500 focus:outline-none focus:border-gold-500 input-focus-effect transition-smooth"
placeholder="Any specific requirements or questions?"
/>
<div className="absolute bottom-3 right-3 flex items-center pointer-events-none">
<svg
className="h-5 w-5 text-gray-500"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M8 10h.01M12 10h.01M16 10h.01M9 16H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-5l-5 5v-5z"
></path>
</svg>
</div>
</div>
</div>
</div>
<button
type="submit"
className="w-full flex justify-center items-center py-3 px-4 border border-transparent rounded-lg shadow-sm text-sm font-medium text-dark-900 bg-gold-500 hover:bg-gold-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gold-500 transition-smooth transform hover:scale-[1.02]"
>
Request Consultation
<svg
className="ml-2 -mr-1 w-5 h-5"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
</svg>
</button>
</form>
</div>
<div className="bg-[rgb(0,0,0,0.5)] px-8 py-4 border-t border-gray-800">
<div className="flex items-center justify-between">
<div className="flex items-center space-x-2">
<svg
className="h-5 w-5 text-gold-500"
fill="currentColor"
viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z"
clipRule="evenodd"
></path>
</svg>
<span className="text-sm text-gray-300">Dynamic Reality</span>
</div>
<div className="flex space-x-4">
<a href="https://facebook.com" target="_blank" className="text-gray-400 hover:text-gold-500 transition-all">
<svg className="h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M22 12.07C22 6.48 17.52 2 12 2S2 6.48 2 12.07c0 4.84 3.44 8.84 7.94 9.74v-6.9H7.08v-2.84h2.86V9.84c0-2.83 1.69-4.39 4.27-4.39 1.24 0 2.54.22 2.54.22v2.8h-1.43c-1.41 0-1.84.88-1.84 1.78v2.14h3.13l-.5 2.84h-2.63v6.9c4.5-.9 7.94-4.9 7.94-9.74z" />
</svg>
</a>
<a
href="https://instagram.com"
target="_blank"
className="text-gray-400 hover:text-gold-500 transition-all"
>
<svg className="h-5 w-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M7 2C4.2 2 2 4.2 2 7v10c0 2.8 2.2 5 5 5h10c2.8 0 5-2.2 5-5V7c0-2.8-2.2-5-5-5H7zm10 2c1.7 0 3 1.3 3 3v10c0 1.7-1.3 3-3 3H7c-1.7 0-3-1.3-3-3V7c0-1.7 1.3-3 3-3h10zm-5 3c-2.2 0-4 1.8-4 4s1.8 4 4 4a4 4 0 0 0 0-8zm0 6.5a2.5 2.5 0 1 1 0-5 2.5 2.5 0 0 1 0 5zM17.5 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z" />
</svg>
</a>
</div>
</div>
</div>
</div>
);
};
export default RealEstateForm;

20
src/components/Slider.tsx Normal file
View File

@ -0,0 +1,20 @@
export default function Slider({ children }) {
return (
<div
className="owl-carousel owl-carousel-stretch"
data-items="1"
data-sm-items="1"
data-md-items="1"
data-dots="true"
data-nav="false"
data-stage-padding="1"
data-loop="false"
data-margin="30"
data-autoplay="true"
data-autoplay-speed="3000"
data-mouse-drag="false"
>
{children}
</div>
);
}

View File

@ -0,0 +1,49 @@
"use client";
import { motion } from "framer-motion";
export default function WhyChooseUs() {
const points = [
{
title: "Personalized Approach",
content:
"Committed to providing a tailored structure to each client, with on-site management & a robust property management division.",
icon: "👔", // or use an actual icon library
},
{
title: "20 Years of Trust",
content:
"We strive to meet all our customers' needs and are proud to have helped people with real estate for the past two decades.",
icon: "🏆",
},
{
title: "Stress-Free Experience",
content:
"We understand real estate inside out and are committed to making your property journey as smooth as possible.",
icon: "✨",
},
];
return (
<section className="bg-white py-16 ">
<div className="max-w-7xl mx-auto">
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
{points.map((point, index) => (
<motion.div
key={index}
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
viewport={{ once: true }}
className="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow"
>
<div className="text-3xl mb-4">{point.icon}</div>
<h3 className="text-xl font-semibold text-gray-800 mb-3">{point.title}</h3>
<p className="text-gray-600">{point.content}</p>
</motion.div>
))}
</div>
</div>
</section>
);
}

View File

@ -53,35 +53,19 @@ export default async function Footer() {
</div>
</div>
<div className="col-lg-4">
{/* <h3 className="heading-square font-weight-sbold" data-item=".heading-square-item">
<span className="heading-square-item"></span>Newsletter Signup
<h3 className="heading-square font-weight-sbold" data-item=".heading-square-item">
<span className="heading-square-item" style={{ top: "14px" }}></span>Hours of Operations
</h3>
<p className="rd-mailform-label">Enter your e-mail to get the latest news of MyHome</p>
<form
className="rd-form rd-mailform rd-form-inline-1"
data-form-output="form-output-global"
data-form-type="subscribe"
method="post"
action="bat/rd-mailform.php"
>
<div className="form-wrap">
<input
className="form-input"
id="subscribe-form--email"
type="email"
name="email"
data-constraints="@Email @Required"
/>
<label className="form-label" htmlFor="subscribe-form--email">
Your e-mail
</label>
</div>
<div className="form-button">
<button className="button button-primary button-square" type="submit">
Subscribe
</button>
</div>
</form> */}
<div className="text-spacing-100" data-item=".icon">
Mon-Thu: 10am-5pm
</div>
<div className="text-spacing-100" data-item=".icon">
Fri: 10am-2pm
</div>
<div className="text-spacing-100" data-item=".icon">
Sat & Sun: Closed
</div>
<ul className="list-inline-1 space-x-5">
<li>
<a target="_blank" className="icon fa-facebook text-4xl!" href={shareUrl.facebook}></a>

View File

@ -22,7 +22,7 @@ export default function Header() {
data-xl-stick-up="true"
data-xxl-stick-up="true"
>
<div className="rd-navbar-aside-outer">
{/* <div className="rd-navbar-aside-outer">
<div className="rd-navbar-aside">
<div
className="rd-navbar-collapse-toggle rd-navbar-fixed-element-1"
@ -52,22 +52,11 @@ export default function Header() {
</div>
</li>
</ul>
<div className="rd-navbar-aside-item hidden lg:block">
<div className="block-inline">
<div className="unit unit-spacing-xs align-items-center">
<span className="unit-left">
<span className="icon text-middle mdi mdi-login"></span>
</span>
<span className="unit-body">
<a href="/admin/login">Login</a>
</span>
</div>
</div>
</div>
</div>
</div>
</div> */}
<div className="rd-navbar-main-outer">
<div className="rd-navbar-main">
<div className="rd-navbar-main !h-full">
<div className="rd-navbar-panel">
<button className="rd-navbar-toggle" data-rd-navbar-toggle=".rd-navbar-nav-wrap">
<span></span>
@ -337,6 +326,18 @@ export default function Header() {
</li>
</ul>
</div>
<div className="rd-navbar-aside-item hidden lg:block">
<div className="block-inline">
<div className="unit unit-spacing-xs align-items-center">
<span className="unit-left">
<span className="icon text-middle mdi mdi-login"></span>
</span>
<span className="unit-body text-[16px]">
<a href="/admin/login">Login</a>
</span>
</div>
</div>
</div>
</div>
</div>
</nav>

View File

@ -58,7 +58,7 @@ export const HeaderDropdownMenu: FC<HeaderDropdownMenuProps> = ({ list = [] }) =
</a>
<div className="pl-3 mt-2 space-y-2 collapse visible!" id={collapseId}>
{item.child.map((itemChild, itemChildIdx) => (
<a key={itemChildIdx} className={`rd-megamenu-list-link ${hrefClass}`} href={itemChild.href}>
<a key={itemChildIdx} className={`rd-megamenu-list-link !pr-12 ${hrefClass}`} href={itemChild.href}>
- {itemChild.title}
</a>
))}

View File

@ -7,18 +7,15 @@ export default function HeaderFeaturedHomes() {
"/images/home1.jpg",
"/images/home2.jpg",
"/images/home3.jpg",
"/images/home4.jpg",
"/images/home5.jpg",
"/images/home6.jpg",
];
return (
<div className="p-2">
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-1">
<div className="grid grid-cols-1 gap-1">
{images.map((src, index) => (
<div
key={index}
className="overflow-hidden rounded-lg shadow hover:shadow-lg transition-shadow duration-300 relative h-16"
className="overflow-hidden rounded-lg shadow hover:shadow-lg transition-shadow duration-300 relative h-[150px]"
>
<Image
src={src}

View File

@ -0,0 +1,76 @@
"use client";
import { motion } from "framer-motion";
import { Home, Star, Key, BarChart2, BookOpen } from "lucide-react";
export default function PremiumServices() {
const services = [
{
icon: <Home className="w-6 h-6" />,
title: "Tailored Recommendations",
description: "Property selections matching your unique lifestyle and investment goals",
},
{
icon: <Star className="w-6 h-6" />,
title: "Exclusive VIP Access",
description: "Priority access to off-market and premium listings",
},
{
icon: <Key className="w-6 h-6" />,
title: "Dedicated Consultant",
description: "Your personal luxury property expert guiding every step",
},
{
icon: <BarChart2 className="w-6 h-6" />,
title: "Full-Service Solutions",
description: "End-to-end services: buying, selling, rentals, and management",
},
{
icon: <BookOpen className="w-6 h-6" />,
title: "Educational Resources",
description: "Insights and tools for buyers, sellers, and investors",
},
];
return (
<section className="py-16 px-4 sm:px-6 lg:px-8 bg-white">
<div className="max-w-7xl mx-auto">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5 }}
viewport={{ once: true }}
className="text-center mb-12"
>
<h2 className="text-3xl font-bold text-gray-900">
<span className="text-blue-600">Premium</span> Services
</h2>
<p className="mt-4 text-lg text-gray-600 max-w-2xl mx-auto">
Experience real estate redefined with our exclusive offerings
</p>
</motion.div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{services.map((service, index) => (
<motion.div
key={index}
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: index * 0.1 }}
viewport={{ once: true }}
className="group bg-gray-50 p-6 rounded-xl border border-gray-200 hover:border-blue-200 transition-all hover:shadow-lg"
>
<div className="flex items-center mb-4">
<div className="p-3 rounded-full bg-blue-100 text-blue-600 group-hover:bg-blue-600 group-hover:text-white transition-colors">
{service.icon}
</div>
<h3 className="ml-4 text-xl font-semibold text-gray-800">{service.title}</h3>
</div>
<p className="text-gray-600 pl-16">{service.description}</p>
</motion.div>
))}
</div>
</div>
</section>
);
}

38
src/datas/home-slide.ts Normal file
View File

@ -0,0 +1,38 @@
export const sliderData = [
{
title: "Tailored Management, Trusted Care",
description:
"Committed to providing a personalized structure to each client, with on-site management & a robust property management",
},
{
title: "20 Years of Real Estate Excellence",
description:
"We strive to provide a service that meets the needs of all our customers & are proud to have been helping people with their real estate needs for the past 20 years",
},
{
title: "Expert Guidance, Stress-Free Journeys",
description:
"We understand the real estate sector inside out & are committed to providing a professional service to our clients. We strive to make the process of reaching your real estate goals as easy & stress-free as possible",
},
{
title: "Responsive Service, Real Results",
description:
"Our team is always ready to respond quickly and efficiently, ensuring you receive the attention and solutions you need at every stage of your property journey.",
},
{
title: "Integrity at Every Step",
description:
"We believe in doing the right thing. Our transparent and ethical approach builds trust and long-term relationships with every client.",
},
{
title: "Innovative Solutions, Proven Success",
description:
"By leveraging modern tools and market knowledge, we deliver smart strategies that produce tangible results for buyers, sellers, and investors.",
},
{
title: "Client-Focused, Community-Driven",
description:
"We dont just manage properties—we build community connections. Our focus is always on the people we serve and the neighborhoods we support.",
},
];

30
src/datas/process.ts Normal file
View File

@ -0,0 +1,30 @@
export const processData = [
{
id: "1",
icon: "icon-consultation",
image: "/images/process/1.jpg",
title: "Personalized Quote & Material Guidance",
desc: "We start by learning about your project and recommending the best rock, gravel, or hardscape materials. Youll get a clear, customized quote with no surprises.",
},
{
id: "2",
icon: "icon-design",
image: "/images/process/2.jpg",
title: "Easy Ordering & Scheduling",
desc: "Once youre ready, we lock in your materials and schedule delivery or pickup at a time that keeps your project on track.",
},
{
id: "3",
icon: "icon-wrench",
image: "/images/process/3.jpg",
title: "Expert Tips & On-Site Support",
desc: "Were more than a supplier—were a partner. Our team offers installation tips, layout guidance, and product insights to help you get it done right.",
},
{
id: "4",
icon: "icon-inspection",
image: "/images/process/4.jpg",
title: "Fast Delivery & Project Success",
desc: "We deliver exactly what you need, when you need it. From your first quote to your final stone, were here to make sure your job gets done—on time and on point.",
},
];

78
src/datas/reviews.ts Normal file
View File

@ -0,0 +1,78 @@
export const reviews = [
{
date: "2025-04-25",
comment:
"Dynamic Realty made buying my first investment property incredibly smooth. Their attention to detail was unmatched.",
profile_pict: "https://randomuser.me/api/portraits/men/32.jpg",
name: "James Carter",
job_title: "Real Estate Investor, Atlanta GA",
},
{
date: "2025-03-19",
comment:
"Professional, responsive, and extremely knowledgeable. They helped me sell my home above asking price in just 10 days.",
profile_pict: "https://randomuser.me/api/portraits/women/45.jpg",
name: "Stephanie Morales",
job_title: "Marketing Director",
},
{
date: "2025-02-11",
comment:
"Their team is top-notch. From property management to leasing, everything was handled efficiently and respectfully.",
profile_pict: "https://randomuser.me/api/portraits/men/41.jpg",
name: "Derrick Hughes",
job_title: "Landlord & Rental Property Owner",
},
{
date: "2025-01-30",
comment: "Ive worked with several agencies, but Dynamic Realtys boutique approach felt personal and trustworthy.",
profile_pict: "https://randomuser.me/api/portraits/women/62.jpg",
name: "Clara Newton",
job_title: "Interior Designer",
},
{
date: "2024-12-22",
comment: "Their team made relocation effortless. From property tours to closing, they were with us at every step.",
profile_pict: "https://randomuser.me/api/portraits/men/54.jpg",
name: "Tommy Reaves",
job_title: "Military Veteran",
},
{
date: "2024-11-10",
comment:
"I appreciated their transparency and knowledge about local market trends. I felt empowered to make the right decision.",
profile_pict: "https://randomuser.me/api/portraits/women/24.jpg",
name: "Meghan Alston",
job_title: "Tech Entrepreneur",
},
{
date: "2024-10-05",
comment: "What stood out was how they educated me through the process. I never felt rushed or uninformed.",
profile_pict: "https://randomuser.me/api/portraits/men/29.jpg",
name: "Carlos Dunn",
job_title: "First-Time Homebuyer",
},
{
date: "2024-09-17",
comment:
"Truly boutique. Their branding and professionalism made me feel I was working with a high-end firm without the fluff.",
profile_pict: "https://randomuser.me/api/portraits/women/39.jpg",
name: "Rachel Levine",
job_title: "Lifestyle Blogger",
},
{
date: "2024-08-22",
comment: "Dynamic Realty was a lifesaver when managing my rental properties while I was abroad. Highly recommend!",
profile_pict: "https://randomuser.me/api/portraits/men/61.jpg",
name: "Peter Kowalski",
job_title: "Remote Consultant",
},
{
date: "2024-07-11",
comment:
"A reliable partner in every sense. Their team helped me expand my real estate portfolio across Centerville.",
profile_pict: "https://randomuser.me/api/portraits/women/19.jpg",
name: "Angela Bryant",
job_title: "Portfolio Manager",
},
];

17034
yarn.lock

File diff suppressed because it is too large Load Diff