diff --git a/.env b/.env
new file mode 100644
index 0000000..cd41370
--- /dev/null
+++ b/.env
@@ -0,0 +1 @@
+VITE_API_URL=http://localhost:3000
\ No newline at end of file
diff --git a/bun.lock b/bun.lock
index 06b217b..2c0561c 100644
--- a/bun.lock
+++ b/bun.lock
@@ -5,12 +5,12 @@
"name": "irth-new",
"dependencies": {
"@tailwindcss/vite": "^4.1.3",
- "@tanstack/react-query": "^5.72.1",
+ "@tanstack/react-query": "^5.74.4",
"@tweenjs/tween.js": "^25.0.0",
"@uidotdev/usehooks": "^2.4.1",
"clsx": "^2.1.1",
"gsap": "^3.12.7",
- "ky": "^1.8.0",
+ "ky": "^1.8.1",
"motion": "^12.6.3",
"openmeteo": "^1.2.0",
"react": "^19.0.0",
@@ -216,9 +216,9 @@
"@tailwindcss/vite": ["@tailwindcss/vite@4.1.3", "", { "dependencies": { "@tailwindcss/node": "4.1.3", "@tailwindcss/oxide": "4.1.3", "tailwindcss": "4.1.3" }, "peerDependencies": { "vite": "^5.2.0 || ^6" } }, "sha512-lUI/QaDxLtlV52Lho6pu07CG9pSnRYLOPmKGIQjyHdTBagemc6HmgZxyjGAQ/5HMPrNeWBfTVIpQl0/jLXvWHQ=="],
- "@tanstack/query-core": ["@tanstack/query-core@5.72.1", "", {}, "sha512-nOu0EEkZuJ0BZnYgeaEfo44+psq1jBO7/zp3KudixD4dvgOVerrhAhDEKsWx2N7MxB59mjO4r0ddP/VqWGPK+Q=="],
+ "@tanstack/query-core": ["@tanstack/query-core@5.74.4", "", {}, "sha512-YuG0A0+3i9b2Gfo9fkmNnkUWh5+5cFhWBN0pJAHkHilTx6A0nv8kepkk4T4GRt4e5ahbtFj2eTtkiPcVU1xO4A=="],
- "@tanstack/react-query": ["@tanstack/react-query@5.72.1", "", { "dependencies": { "@tanstack/query-core": "5.72.1" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-4UEMyRx54xj144D2nDvDIMiXSG5BrqyCJrmyNoGbymNS+VWODcBDFrmRk9p2fe12UGZ4JtKPTNuW2Jg0aisUgQ=="],
+ "@tanstack/react-query": ["@tanstack/react-query@5.74.4", "", { "dependencies": { "@tanstack/query-core": "5.74.4" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-mAbxw60d4ffQ4qmRYfkO1xzRBPUEf/72Dgo3qqea0J66nIKuDTLEqQt0ku++SDFlMGMnB6uKDnEG1xD/TDse4Q=="],
"@tweenjs/tween.js": ["@tweenjs/tween.js@25.0.0", "", {}, "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A=="],
@@ -390,7 +390,7 @@
"keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
- "ky": ["ky@1.8.0", "", {}, "sha512-DoKGmG27nT8t/1F9gV8vNzggJ3mLAyD49J8tTMWHeZvS8qLc7GlyTieicYtFzvDznMe/q2u38peOjkWc5/pjvw=="],
+ "ky": ["ky@1.8.1", "", {}, "sha512-7Bp3TpsE+L+TARSnnDpk3xg8Idi8RwSLdj6CMbNWoOARIrGrbuLGusV0dYwbZOm4bB3jHNxSw8Wk/ByDqJEnDw=="],
"levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="],
diff --git a/package.json b/package.json
index 4c1b0ce..49a8c99 100644
--- a/package.json
+++ b/package.json
@@ -11,12 +11,12 @@
},
"dependencies": {
"@tailwindcss/vite": "^4.1.3",
- "@tanstack/react-query": "^5.72.1",
+ "@tanstack/react-query": "^5.74.4",
"@tweenjs/tween.js": "^25.0.0",
"@uidotdev/usehooks": "^2.4.1",
"clsx": "^2.1.1",
"gsap": "^3.12.7",
- "ky": "^1.8.0",
+ "ky": "^1.8.1",
"motion": "^12.6.3",
"openmeteo": "^1.2.0",
"react": "^19.0.0",
diff --git a/public/images/search/rove_home_dubai_marina.png b/public/images/search/rove_home_dubai_marina.png
new file mode 100644
index 0000000..4ab718b
Binary files /dev/null and b/public/images/search/rove_home_dubai_marina.png differ
diff --git a/public/images/search/rove_home_marasi_drive.png b/public/images/search/rove_home_marasi_drive.png
new file mode 100644
index 0000000..22d2c60
Binary files /dev/null and b/public/images/search/rove_home_marasi_drive.png differ
diff --git a/src/api/ky.ts b/src/api/ky.ts
new file mode 100644
index 0000000..6ba63a5
--- /dev/null
+++ b/src/api/ky.ts
@@ -0,0 +1,5 @@
+import ky from "ky";
+
+export const api = ky.create({
+ prefixUrl: import.meta.env.VITE_API_URL,
+});
diff --git a/src/components/Compass.tsx b/src/components/Compass.tsx
index b29f03c..9c2e39b 100644
--- a/src/components/Compass.tsx
+++ b/src/components/Compass.tsx
@@ -10,7 +10,7 @@ function Compass({ imgStyle }: CompassProps) {
diff --git a/src/components/FlatCard.tsx b/src/components/FlatCard.tsx
new file mode 100644
index 0000000..1686fd5
--- /dev/null
+++ b/src/components/FlatCard.tsx
@@ -0,0 +1,48 @@
+import { IUnit } from "../types/IUnit";
+import HeartIcon from "./icons/HeartIcon";
+import Button from "./ui/Button";
+
+function FlatCard({
+ project,
+ unitNo,
+ floor,
+ unitType,
+ squareFt,
+ salesPrice,
+}: IUnit) {
+ return (
+
+
+
+
{project}
+
+
+ {(unitNo.split("-")[0] === "W" ? "West" : "East") + " Wing"}
+
+
+
Floor {floor}
+
+
{unitNo}
+
+
+
+
+
+
+ {unitType},{" "}
+ {squareFt.toLocaleString(undefined, { maximumFractionDigits: 2 })}{" "}
+ Sqft
+
+
+ AED {Intl.NumberFormat("en").format(salesPrice)}
+
+
+
+ );
+}
+
+export default FlatCard;
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx
index 15c69cb..01e90d8 100644
--- a/src/components/Footer.tsx
+++ b/src/components/Footer.tsx
@@ -7,7 +7,7 @@ import TwitterIcon from "./icons/TwitterIcon";
function Footer() {
return (
-