From 96321ffcf58472da4db6a8b9312810cc490ff349 Mon Sep 17 00:00:00 2001 From: Jelaletdin12 Date: Sun, 22 Mar 2026 20:45:18 +0500 Subject: [PATCH] added mobile category page --- app/[locale]/categories/page.tsx | 20 ++++++++++++++ components/layout/ui/SearchBar.tsx | 24 ++++++++--------- features/cart/components/OrderSummary.tsx | 17 +++++++++--- .../category/components/CategoriesClient.tsx | 27 +++++++++++++++++++ features/home/components/CategoryGrid.tsx | 23 ++++++++++++---- features/home/components/ProductCard.tsx | 2 +- 6 files changed, 91 insertions(+), 22 deletions(-) create mode 100644 app/[locale]/categories/page.tsx create mode 100644 features/category/components/CategoriesClient.tsx diff --git a/app/[locale]/categories/page.tsx b/app/[locale]/categories/page.tsx new file mode 100644 index 0000000..0e7c78b --- /dev/null +++ b/app/[locale]/categories/page.tsx @@ -0,0 +1,20 @@ +import type { Metadata } from "next"; +import CategoriesClient from "@/features/category/components/CategoriesClient"; + +type Props = { + params: Promise<{ locale: string }>; +}; + +export async function generateMetadata({ + params, +}: Props): Promise { + return { + title: "Categories | SmartElectronics", + }; +} + +export default async function CategoriesPage(props: Props) { + const params = await props.params; + + return ; +} diff --git a/components/layout/ui/SearchBar.tsx b/components/layout/ui/SearchBar.tsx index 0902698..2e3a26f 100644 --- a/components/layout/ui/SearchBar.tsx +++ b/components/layout/ui/SearchBar.tsx @@ -49,20 +49,18 @@ export default function SearchBar({ }, [searchParams, pathname]); React.useEffect(() => { - // Debounce updates to the URL query when typing on search page - if (pathname?.includes("/search")) { - const delayDebounceFn = setTimeout(() => { - const q = searchParams?.get("q") || ""; - const curVal = searchValue.trim(); - if (curVal !== q && curVal !== "") { - router.push(`/${locale}/search?q=${encodeURIComponent(curVal)}`); - } else if (curVal === "" && q !== "") { - router.push(`/${locale}/search`); - } - }, 500); + // Debounce updates to the URL query when typing + const delayDebounceFn = setTimeout(() => { + const q = searchParams?.get("q") || ""; + const curVal = searchValue.trim(); + if (curVal !== q && curVal !== "") { + router.push(`/${locale}/search?q=${encodeURIComponent(curVal)}`); + } else if (curVal === "" && q !== "" && pathname?.includes("/search")) { + router.push(`/${locale}/search`); + } + }, 500); - return () => clearTimeout(delayDebounceFn); - } + return () => clearTimeout(delayDebounceFn); }, [searchValue, pathname, router, locale, searchParams]); const performSearch = () => { diff --git a/features/cart/components/OrderSummary.tsx b/features/cart/components/OrderSummary.tsx index 741601d..f04231b 100644 --- a/features/cart/components/OrderSummary.tsx +++ b/features/cart/components/OrderSummary.tsx @@ -99,7 +99,8 @@ export default function OrderSummary({ paymentType && isPhoneValid && name.trim() !== "" && - lastName.trim() !== ""; + lastName.trim() !== "" && + note.trim() !== ""; const handlePhoneChange = (e: React.ChangeEvent) => { const input = e.target.value; @@ -289,16 +290,26 @@ export default function OrderSummary({ {/* Note */}
-