From 141f1a30be0c5889e037f1795ca30c5aa0d23b13 Mon Sep 17 00:00:00 2001 From: Alireza Hassani Date: Thu, 13 Aug 2026 13:53:22 +0330 Subject: [PATCH] checkpoint before checking out main --- package.json | 2 +- prompt.txt | 25 +++ src/app/globals.css | 78 +++++++- src/app/layout.tsx | 23 ++- src/app/page.tsx | 92 +++------ src/components/home/AboutSanihome.tsx | 56 ++++++ src/components/home/BlogCarousel.tsx | 52 +++++ src/components/home/FeatureBar.tsx | 125 ++++++++++++ src/components/home/FeaturedCategories.tsx | 38 ++++ src/components/home/Footer.tsx | 81 ++++++++ src/components/home/Header.tsx | 187 ++++++++++++++++++ src/components/home/HeroSlider.tsx | 84 ++++++++ src/components/home/SamsungCarousel.tsx | 29 +++ src/components/home/SpecialSaleCarousel.tsx | 48 +++++ src/components/home/ThreeBanners.tsx | 36 ++++ src/components/home/TopBar.tsx | 14 ++ src/components/home/TopSellingCarousel.tsx | 28 +++ src/components/home/TwoBanners.tsx | 38 ++++ src/components/ui/Carousel.tsx | 79 ++++++++ src/components/ui/Placeholder.tsx | 26 +++ src/components/ui/ProductCard.tsx | 63 ++++++ src/components/ui/SectionTitle.tsx | 36 ++++ src/data/sample.ts | 201 ++++++++++++++++++++ 23 files changed, 1357 insertions(+), 84 deletions(-) create mode 100644 prompt.txt create mode 100644 src/components/home/AboutSanihome.tsx create mode 100644 src/components/home/BlogCarousel.tsx create mode 100644 src/components/home/FeatureBar.tsx create mode 100644 src/components/home/FeaturedCategories.tsx create mode 100644 src/components/home/Footer.tsx create mode 100644 src/components/home/Header.tsx create mode 100644 src/components/home/HeroSlider.tsx create mode 100644 src/components/home/SamsungCarousel.tsx create mode 100644 src/components/home/SpecialSaleCarousel.tsx create mode 100644 src/components/home/ThreeBanners.tsx create mode 100644 src/components/home/TopBar.tsx create mode 100644 src/components/home/TopSellingCarousel.tsx create mode 100644 src/components/home/TwoBanners.tsx create mode 100644 src/components/ui/Carousel.tsx create mode 100644 src/components/ui/Placeholder.tsx create mode 100644 src/components/ui/ProductCard.tsx create mode 100644 src/components/ui/SectionTitle.tsx create mode 100644 src/data/sample.ts diff --git a/package.json b/package.json index 6151a6f..686519b 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "sanihome-tmp", + "name": "sanihome", "version": "0.1.0", "private": true, "scripts": { diff --git a/prompt.txt b/prompt.txt new file mode 100644 index 0000000..340d913 --- /dev/null +++ b/prompt.txt @@ -0,0 +1,25 @@ +Create a website for home appliances store + +Create sample content +Lang:fa +Directions: rtl +Use next js +Color palette is red and dark red - light theme + +Design only homepage +Use Persian font like iran-yekan or kalameh or iran sans and some cool English font +Do not use images - show only placeholders with sizes + +Sections are: +Top header bar +Header +Slider- one slide in center and two slide beside each side be visible +Featured categories +Product Special sale carousel +Two banner +Product Top selling carousel +3 banner +Samsung brand product carousel +About sanihome +Latest blog carousel +footer \ No newline at end of file diff --git a/src/app/globals.css b/src/app/globals.css index a2dc41e..481eab9 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,26 +1,84 @@ @import "tailwindcss"; :root { - --background: #ffffff; - --foreground: #171717; + --background: #fafafa; + --foreground: #1a1a1a; + --surface: #ffffff; + --muted: #6b7280; + --border: #e5e7eb; + --red: #dc2626; + --red-dark: #991b1b; + --red-light: #fef2f2; + --red-muted: #fca5a5; } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); + --color-surface: var(--surface); + --color-muted: var(--muted); + --color-border: var(--border); + --color-red: var(--red); + --color-red-dark: var(--red-dark); + --color-red-light: var(--red-light); + --color-red-muted: var(--red-muted); + --font-sans: var(--font-vazirmatn); + --font-display: var(--font-syne); } -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; - } +* { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; } body { background: var(--background); color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; + font-family: var(--font-vazirmatn), system-ui, sans-serif; +} + +.font-display { + font-family: var(--font-syne), var(--font-vazirmatn), sans-serif; +} + +@keyframes fade-up { + from { + opacity: 0; + transform: translateY(16px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes slide-in { + from { + opacity: 0; + transform: translateX(24px); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +.animate-fade-up { + animation: fade-up 0.6s ease-out both; +} + +.animate-slide-in { + animation: slide-in 0.5s ease-out both; +} + +.carousel-track { + scrollbar-width: none; + -ms-overflow-style: none; +} + +.carousel-track::-webkit-scrollbar { + display: none; } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 9852c15..f9056df 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,27 +1,30 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; +import { Vazirmatn, Syne } from "next/font/google"; import "./globals.css"; -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], +const vazirmatn = Vazirmatn({ + variable: "--font-vazirmatn", + subsets: ["arabic", "latin"], + weight: ["400", "500", "600", "700"], }); -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", +const syne = Syne({ + variable: "--font-syne", subsets: ["latin"], + weight: ["600", "700", "800"], }); export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: "سانی‌هوم | فروشگاه لوازم خانگی", + description: "فروشگاه آنلاین لوازم خانگی — یخچال، لباسشویی، تلویزیون و بیشتر", }; export default function RootLayout({ children }: LayoutProps<"/">) { return ( {children} diff --git a/src/app/page.tsx b/src/app/page.tsx index c887311..3fef222 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,69 +1,35 @@ -import Image from "next/image"; +import { TopBar } from "@/components/home/TopBar"; +import { Header } from "@/components/home/Header"; +import { FeatureBar } from "@/components/home/FeatureBar"; +import { HeroSlider } from "@/components/home/HeroSlider"; +import { FeaturedCategories } from "@/components/home/FeaturedCategories"; +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 { AboutSanihome } from "@/components/home/AboutSanihome"; +import { BlogCarousel } from "@/components/home/BlogCarousel"; +import { Footer } from "@/components/home/Footer"; export default function Home() { return ( -
-
- Next.js logo -
-

- To get started, edit the{" "} - - page.tsx - {" "} - file. -

-

- Looking for a starting point or more instructions? Head over to{" "} - - Templates - {" "} - or the{" "} - - Learning - {" "} - center. -

-
-
- - Vercel logomark - Deploy Now - - - Documentation - -
+ <> + +
+
+ + + + + + + + + +
-
+