-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'deployment' of https://github.com/CodeSpace-Academy/ASE…
…_2024_GROUP_C into loading
- Loading branch information
Showing
5 changed files
with
86 additions
and
91 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
const fetchSingleRecipe = async (id) => { | ||
try { | ||
const res = await fetch(`https://dummyjson.com/recipes/${id}`, {cache : 'force-cache'}); | ||
if (!res.ok) { | ||
throw new Error("Fetch Product Failed"); | ||
} | ||
const data = await res.json(); | ||
return data; | ||
} catch (error) { | ||
console.error("Failed to Fetch Data:", error) | ||
} | ||
}; | ||
|
||
export default fetchSingleRecipe; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
const fetchRecipes = async () => { | ||
try { | ||
const res = await fetch("https://dummyjson.com/recipes", {cache : 'force-cache'}); | ||
if (!res.ok) { | ||
throw new Error("Fetch Products Failed"); | ||
} | ||
const data = await res.json(); | ||
return data; | ||
} catch (error) { | ||
console.error("Failed to Fetch Data:", error) | ||
} | ||
}; | ||
|
||
export default fetchRecipes; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import React from 'react'; | ||
|
||
const RecipeCard = ({ recipe }) => { | ||
return ( | ||
<div className="bg-white shadow-md rounded-lg overflow-hidden"> | ||
<img src={recipe.image} alt={recipe.title} className="w-full h-48 object-cover" /> | ||
<div className="p-4"> | ||
<h2 className="text-xl font-bold text-gray-800">{recipe.title}</h2> | ||
<p className="text-gray-600 mt-2">Prep time: {recipe.prepTimeMinutes} mins</p> | ||
<p className="text-gray-600">Cook time: {recipe.cookTimeMinutes} mins</p> | ||
<div className="flex items-center mt-2"> | ||
<span className="text-yellow-500">★</span> | ||
<span className="ml-2 text-gray-800">{recipe.rating}</span> | ||
</div> | ||
</div> | ||
</div> | ||
); | ||
}; | ||
|
||
export default RecipeCard; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
"use client" | ||
|
||
import React, { useEffect, useState } from 'react'; | ||
import RecipeCards from './RecipeCards'; | ||
|
||
const RecipeGrid = () => { | ||
const [recipes, setRecipes] = useState([]); | ||
|
||
useEffect(() => { | ||
const fetchRecipes = async () => { | ||
try { | ||
const response = await fetch('https://dummyjson.com/recipes'); | ||
const data = await response.json(); | ||
setRecipes(data.recipes); | ||
} catch (error) { | ||
console.error('Error fetching recipes:', error); | ||
} | ||
}; | ||
|
||
fetchRecipes(); | ||
}, []); | ||
|
||
return ( | ||
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6 p-6"> | ||
{recipes.map(recipe => ( | ||
<RecipeCards key={recipe.id} recipe={recipe} /> | ||
))} | ||
</div> | ||
); | ||
}; | ||
|
||
export default RecipeGrid; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,101 +1,16 @@ | ||
import Image from "next/image"; | ||
import RecipeGrid from "./components/RecipeGrid"; // Make sure the path is correct | ||
|
||
export default function Home() { | ||
return ( | ||
<div className="grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen p-8 pb-20 gap-16 sm:p-20 font-[family-name:var(--font-geist-sans)]"> | ||
<main className="flex flex-col gap-8 row-start-2 items-center sm:items-start"> | ||
<Image | ||
className="dark:invert" | ||
src="https://nextjs.org/icons/next.svg" | ||
alt="Next.js logo" | ||
width={180} | ||
height={38} | ||
priority | ||
/> | ||
<ol className="list-inside list-decimal text-sm text-center sm:text-left font-[family-name:var(--font-geist-mono)]"> | ||
<li className="mb-2"> | ||
Get started by editing{" "} | ||
<code className="bg-black/[.05] dark:bg-white/[.06] px-1 py-0.5 rounded font-semibold"> | ||
app/page.js | ||
</code> | ||
. | ||
</li> | ||
<li>Save and see your changes instantly.</li> | ||
</ol> | ||
|
||
<div className="flex gap-4 items-center flex-col sm:flex-row"> | ||
<a | ||
className="rounded-full border border-solid border-transparent transition-colors flex items-center justify-center bg-foreground text-background gap-2 hover:bg-[#383838] dark:hover:bg-[#ccc] text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5" | ||
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
<Image | ||
className="dark:invert" | ||
src="https://nextjs.org/icons/vercel.svg" | ||
alt="Vercel logomark" | ||
width={20} | ||
height={20} | ||
/> | ||
Deploy now | ||
</a> | ||
<a | ||
className="rounded-full border border-solid border-black/[.08] dark:border-white/[.145] transition-colors flex items-center justify-center hover:bg-[#f2f2f2] dark:hover:bg-[#1a1a1a] hover:border-transparent text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5 sm:min-w-44" | ||
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
Read our docs | ||
</a> | ||
</div> | ||
{/* RecipeGrid component added here */} | ||
<section className="w-full"> | ||
<RecipeGrid /> | ||
</section> | ||
</main> | ||
<footer className="row-start-3 flex gap-6 flex-wrap items-center justify-center"> | ||
<a | ||
className="flex items-center gap-2 hover:underline hover:underline-offset-4" | ||
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
<Image | ||
aria-hidden | ||
src="https://nextjs.org/icons/file.svg" | ||
alt="File icon" | ||
width={16} | ||
height={16} | ||
/> | ||
Learn | ||
</a> | ||
<a | ||
className="flex items-center gap-2 hover:underline hover:underline-offset-4" | ||
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
<Image | ||
aria-hidden | ||
src="https://nextjs.org/icons/window.svg" | ||
alt="Window icon" | ||
width={16} | ||
height={16} | ||
/> | ||
Examples | ||
</a> | ||
<a | ||
className="flex items-center gap-2 hover:underline hover:underline-offset-4" | ||
href="https://nextjs.org?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" | ||
target="_blank" | ||
rel="noopener noreferrer" | ||
> | ||
<Image | ||
aria-hidden | ||
src="https://nextjs.org/icons/globe.svg" | ||
alt="Globe icon" | ||
width={16} | ||
height={16} | ||
/> | ||
Go to nextjs.org → | ||
</a> | ||
</footer> | ||
|
||
</div> | ||
); | ||
} |