diff --git a/frontend/src/app/products/[productId]/page.tsx b/frontend/src/app/products/[productId]/page.tsx
new file mode 100644
index 0000000..c0c9d3c
--- /dev/null
+++ b/frontend/src/app/products/[productId]/page.tsx
@@ -0,0 +1,9 @@
+import React from 'react'
+
+export default function ProductDetails(){
+ return(
+
+
Product Details
+
+ )
+}
diff --git a/frontend/src/app/products/page.tsx b/frontend/src/app/products/page.tsx
index ddfd2b6..180bf04 100644
--- a/frontend/src/app/products/page.tsx
+++ b/frontend/src/app/products/page.tsx
@@ -1,13 +1,71 @@
-import React from 'react'
-import MenuCard from '@/components/ui/MenuCard/MenuCard'
+"use client";
+import React, {useState} from "react";
+import MenuCard from "@/components/ui/MenuCard/MenuCard";
+import { useParams } from "next/navigation";
import Product from "@/../public/batch1/files_list.json";
+import Image from "next/image";
const Products = () => {
- return (
-
-
-
- )
-}
+ const catID = useParams();
+ const [maxPrice, setMaxPrice] = useState(100);
+ const [sort, setSort] = useState("asc");
-export default Products
\ No newline at end of file
+ return (
+
+
+
+
+
Filter by Price
+
+ 0
+ setMaxPrice(parseInt(e.target.value))} />
+ {maxPrice}
+
+
+
+
Sort by
+
+ 0
+ setSort("asc")} />
+
+
+
+ 0
+ setSort("desc")}/>
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Products;
diff --git a/frontend/src/components/Navbar/Navbar.tsx b/frontend/src/components/Navbar/Navbar.tsx
index 420474f..40f88ac 100644
--- a/frontend/src/components/Navbar/Navbar.tsx
+++ b/frontend/src/components/Navbar/Navbar.tsx
@@ -76,7 +76,7 @@ export default function Nav() {
About
-
+
0
diff --git a/frontend/src/components/ProductPage/ProductPage.css b/frontend/src/components/ProductPage/ProductPage.css
new file mode 100644
index 0000000..aad635f
--- /dev/null
+++ b/frontend/src/components/ProductPage/ProductPage.css
@@ -0,0 +1,5 @@
+.product {
+ padding: 20px 50px;
+ display: flex;
+ gap: 50px;
+}
diff --git a/frontend/src/components/ProductPage/ProductPage.tsx b/frontend/src/components/ProductPage/ProductPage.tsx
new file mode 100644
index 0000000..7bdf4fa
--- /dev/null
+++ b/frontend/src/components/ProductPage/ProductPage.tsx
@@ -0,0 +1,51 @@
+import React, { useState, useEffect } from "react";
+import Image from "next/image";
+import Link from "next/link";
+import "./ProductPage.css";
+
+const ProductPage = () => {
+ const [selectedImage, setSelectedImage] = useState(0);
+ const images = [
+ "https://ih1.redbubble.net/image.2997405810.0746/ssrco,slim_fit_t_shirt,womens,101010:01c5ca27c6,front,square_product,600x600.jpg",
+ "https://ih1.redbubble.net/image.2997405810.0746/ssrco,slim_fit_t_shirt,flatlay,101010:01c5ca27c6,front,wide_portrait,750x1000-bg,f8f8f8.jpg",
+ ];
+
+ return (
+
+
+
+ (setSelectedImage(0))}
+ />
+ setSelectedImage(1)}
+ alt="Profile picture"
+ />
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ProductPage;
diff --git a/frontend/src/components/ui/MenuCard/MenuCard.tsx b/frontend/src/components/ui/MenuCard/MenuCard.tsx
index e811d04..adbbb36 100644
--- a/frontend/src/components/ui/MenuCard/MenuCard.tsx
+++ b/frontend/src/components/ui/MenuCard/MenuCard.tsx
@@ -58,7 +58,7 @@ const MenuCard = ({ Menu }: any) => {
Out of Stock
)}
{/* Check if item is a favorite */}
- {menu_item.favorite === "yes" ? (
+ {/* {menu_item.favorite === "yes" ? (
{
/>
) : (
- )}
+ )} */}
{/* description text */}
diff --git a/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx
index 36496a2..245cd3c 100644
--- a/frontend/src/components/ui/button.tsx
+++ b/frontend/src/components/ui/button.tsx
@@ -1,9 +1,9 @@
import * as React from "react"
import { Slot } from "@radix-ui/react-slot"
import { cva, type VariantProps } from "class-variance-authority"
-
import { cn } from "@/lib/utils"
+
const buttonVariants = cva(
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
{