diff --git a/.claude/launch.json b/.claude/launch.json new file mode 100644 index 0000000..b209e6a --- /dev/null +++ b/.claude/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.0.1", + "configurations": [ + { + "name": "sanihome-dev", + "runtimeExecutable": "npm", + "runtimeArgs": ["run", "dev"], + "port": 3000 + } + ] +} diff --git a/package-lock.json b/package-lock.json index 7ed4306..e0fbce9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { - "name": "sanihome-tmp", + "name": "sanihome", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "sanihome-tmp", + "name": "sanihome", "version": "0.1.0", "dependencies": { "next": "16.3.0", "react": "19.2.8", - "react-dom": "19.2.8" + "react-dom": "19.2.8", + "swiper": "^14.1.0" }, "devDependencies": { "@tailwindcss/postcss": "^4", @@ -631,9 +632,6 @@ "cpu": [ "arm" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -650,9 +648,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -669,9 +664,6 @@ "cpu": [ "ppc64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -688,9 +680,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -707,9 +696,6 @@ "cpu": [ "s390x" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -726,9 +712,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -745,9 +728,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -764,9 +744,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -783,9 +760,6 @@ "cpu": [ "arm" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -808,9 +782,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -833,9 +804,6 @@ "cpu": [ "ppc64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -858,9 +826,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -883,9 +848,6 @@ "cpu": [ "s390x" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -908,9 +870,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -933,9 +892,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -958,9 +914,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1228,9 +1181,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1247,9 +1197,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1266,9 +1213,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1285,9 +1229,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1526,9 +1467,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1546,9 +1484,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1566,9 +1501,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1586,9 +1518,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -2139,9 +2068,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2156,9 +2082,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -2173,9 +2096,6 @@ "loong64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2190,9 +2110,6 @@ "loong64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -2207,9 +2124,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2224,9 +2138,6 @@ "riscv64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2241,9 +2152,6 @@ "riscv64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -2258,9 +2166,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2275,9 +2180,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -2292,9 +2194,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -4979,9 +4878,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5003,9 +4899,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5027,9 +4920,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -5051,9 +4941,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -6372,6 +6259,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/swiper": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-14.1.0.tgz", + "integrity": "sha512-ppit/AqmGvThKlXy4I1/9N/gEyb9s/BDHWciWNeIxbfteFKUhPQXrYuOMKszomXKd9WiLd+/0vKdPHW+0N0mhA==", + "funding": [ + { + "type": "custom", + "url": "https://sponsors.nolimits4web.com" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nolimits4web" + } + ], + "license": "MIT", + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/tailwindcss": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz", diff --git a/package.json b/package.json index 686519b..9dbf527 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "dependencies": { "next": "16.3.0", "react": "19.2.8", - "react-dom": "19.2.8" + "react-dom": "19.2.8", + "swiper": "^14.1.0" }, "devDependencies": { "@tailwindcss/postcss": "^4", diff --git a/public/images/banner/4.jpg b/public/images/banner/4.jpg new file mode 100644 index 0000000..cbbc840 Binary files /dev/null and b/public/images/banner/4.jpg differ diff --git a/public/images/banner/5.jpg b/public/images/banner/5.jpg new file mode 100644 index 0000000..66476f8 Binary files /dev/null and b/public/images/banner/5.jpg differ diff --git a/public/images/banner3/6.jpg b/public/images/banner3/6.jpg new file mode 100644 index 0000000..a39e535 Binary files /dev/null and b/public/images/banner3/6.jpg differ diff --git a/public/images/banner3/7.jpg b/public/images/banner3/7.jpg new file mode 100644 index 0000000..869f59f Binary files /dev/null and b/public/images/banner3/7.jpg differ diff --git a/public/images/banner3/8.jpg b/public/images/banner3/8.jpg new file mode 100644 index 0000000..000f1c8 Binary files /dev/null and b/public/images/banner3/8.jpg differ diff --git a/public/images/logo.png b/public/images/logo.png new file mode 100644 index 0000000..028bd26 Binary files /dev/null and b/public/images/logo.png differ diff --git a/public/images/slider/1.jpg b/public/images/slider/1.jpg new file mode 100644 index 0000000..4a12d7d Binary files /dev/null and b/public/images/slider/1.jpg differ diff --git a/public/images/slider/2.jpg b/public/images/slider/2.jpg new file mode 100644 index 0000000..ee322b8 Binary files /dev/null and b/public/images/slider/2.jpg differ diff --git a/public/images/slider/3.jpg b/public/images/slider/3.jpg new file mode 100644 index 0000000..3c5a801 Binary files /dev/null and b/public/images/slider/3.jpg differ diff --git a/src/app/page.tsx b/src/app/page.tsx index 3fef222..8943a97 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -7,29 +7,49 @@ import { SpecialSaleCarousel } from "@/components/home/SpecialSaleCarousel"; import { TwoBanners } from "@/components/home/TwoBanners"; import { TopSellingCarousel } from "@/components/home/TopSellingCarousel"; import { ThreeBanners } from "@/components/home/ThreeBanners"; -import { SamsungCarousel } from "@/components/home/SamsungCarousel"; +import { BrandGroupCarousels } from "@/components/home/BrandGroupCarousels"; import { AboutSanihome } from "@/components/home/AboutSanihome"; import { BlogCarousel } from "@/components/home/BlogCarousel"; import { Footer } from "@/components/home/Footer"; +import { + getBusinessInfo, + getCategories, + getCategoryGroups, + getProducts, + getBrandGroups, + getStoreSpecials, +} from "@/lib/meshkee"; + +export default async function Home() { + const [categoryGroups, categories, storeSpecials, productsResult, brandGroups, businessInfo] = + await Promise.all([ + getCategoryGroups(), + getCategories(), + getStoreSpecials(), + getProducts({ pageSize: 12 }), + getBrandGroups(), + getBusinessInfo(), + ]); + + const specialSaleProducts = storeSpecials[0]?.items ?? []; -export default function Home() { return ( <> -
+
- + - + - + - +
-