last updates: add product page

This commit is contained in:
nabijonovdavronbek619@gmail.com
2025-12-24 12:00:04 +05:00
parent 52945dc5d8
commit de12e23af1
6 changed files with 13 additions and 10 deletions

View File

@@ -1,8 +1,8 @@
import { ShowCase } from "@/components/ShowCase"; import { ShowCase } from "@/components/ShowCase";
import { About } from "@/components/About"; import { About } from "@/components/About";
import { ProductsGrid } from "@/components/ProductsGrid";
import { FAQ } from "@/components/FAQ"; import { FAQ } from "@/components/FAQ";
import { ContactForm } from "@/components/ContactForm"; import { ContactForm } from "@/components/ContactForm";
import { ProductsGrid } from "@/components/productSection/ProductsGrid";
const HERO_IMAGES = [ const HERO_IMAGES = [
"/product/product.jpg", "/product/product.jpg",

View File

@@ -15,7 +15,7 @@ interface ProductModalProps {
export function ProductModal({ product, onClose }: ProductModalProps) { export function ProductModal({ product, onClose }: ProductModalProps) {
const { t } = useLanguage(); const { t } = useLanguage();
const setProductName = useProductStore((state)=>state.setProductName); const setProductName = useProductStore((state) => state.setProductName);
return ( return (
<AnimatePresence> <AnimatePresence>
@@ -50,7 +50,7 @@ export function ProductModal({ product, onClose }: ProductModalProps) {
{/* Content */} {/* Content */}
<div className="p-6"> <div className="p-6">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-8"> <div className="grid grid-cols-1 md:grid-cols-2 gap-8 mb-8">
{/* 3D Viewer / Gallery */} {/* 3D Viewer / Gallery */}
<div> <div>
<ProductViewer <ProductViewer
@@ -92,7 +92,10 @@ export function ProductModal({ product, onClose }: ProductModalProps) {
<div className="space-y-3"> <div className="space-y-3">
<Link href="#contact"> <Link href="#contact">
<motion.button <motion.button
onClick={()=>{onClose(); setProductName(product.nameKey)}} onClick={() => {
onClose();
setProductName(product.nameKey);
}}
whileHover={{ scale: 1.05 }} whileHover={{ scale: 1.05 }}
whileTap={{ scale: 0.95 }} whileTap={{ scale: 0.95 }}
className="w-full px-6 py-3 bg-blue-600 text-white rounded-lg font-semibold hover:bg-blue-700 transition-colors" className="w-full px-6 py-3 bg-blue-600 text-white rounded-lg font-semibold hover:bg-blue-700 transition-colors"

View File

@@ -2,14 +2,14 @@
import { useState } from "react"; import { useState } from "react";
import { motion } from "framer-motion"; import { motion } from "framer-motion";
import { ProductCard } from "./ProductCard";
import { getAllProducts } from "@/lib/products"; import { getAllProducts } from "@/lib/products";
import type { Product } from "@/lib/products"; import type { Product } from "@/lib/products";
import { ProductModal } from "./ProductModal";
import Image from "next/image"; import Image from "next/image";
import { useLanguage } from "@/context/language-context"; import { useLanguage } from "@/context/language-context";
import Link from "next/link"; import Link from "next/link";
import { ChevronsRight } from "lucide-react"; import { ChevronsRight } from "lucide-react";
import { ProductCard } from "./ProductCard";
import { ProductModal } from "./ProductModal";
// hello everyone // hello everyone

View File

@@ -2,9 +2,9 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import EmptyState from "./emptyData"; import EmptyState from "./emptyData";
import { GET } from "@/lib/allProducts"; import { GET } from "@/lib/allProducts";
import { ProductModal } from "../ProductModal"; import { ProductModal } from "../productSection/ProductModal";
import { motion } from "framer-motion"; import { motion } from "framer-motion";
import { ProductCard } from "../ProductCard"; import { ProductCard } from "../productSection/ProductCard";
const itemVariants = { const itemVariants = {
hidden: { opacity: 0, y: 20 }, hidden: { opacity: 0, y: 20 },
@@ -14,13 +14,13 @@ const itemVariants = {
export default function Products() { export default function Products() {
const [allProducts, setAllProducts] = useState<any>(null); const [allProducts, setAllProducts] = useState<any>(null);
const [selectedProduct, setSelectedProduct] = useState<any>(null); const [selectedProduct, setSelectedProduct] = useState<any>(null);
useEffect(() => {
const all = GET(); const all = GET();
useEffect(() => {
all && Array.isArray(all) && all.length > 0 all && Array.isArray(all) && all.length > 0
? setAllProducts(all) ? setAllProducts(all)
: setAllProducts([]); : setAllProducts([]);
setAllProducts; setAllProducts;
}, []); }, [all]);
const handleViewDetails = (slug: string) => { const handleViewDetails = (slug: string) => {
const product = allProducts.find((p: any) => p.slug === slug); const product = allProducts.find((p: any) => p.slug === slug);
if (product) { if (product) {