diff --git a/src/App.jsx b/src/App.jsx
index 5ef8293f..efaff843 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -1,6 +1,6 @@
-import AdviceSection from './sections/Advice'
import ArtsSection from './sections/Art'
import UsersSection from './sections/Users'
+import AdviceSection from './sections/Advice'
import './App.css'
function App() {
diff --git a/src/sections/Advice/components/AdviceSlip.jsx b/src/sections/Advice/components/AdviceSlip.jsx
index e69de29b..cb70f6cf 100644
--- a/src/sections/Advice/components/AdviceSlip.jsx
+++ b/src/sections/Advice/components/AdviceSlip.jsx
@@ -0,0 +1,14 @@
+function AdviceSlip({random, fetchData, handleAddFavourites}) {
+ return (
+
+ Some Advice
+ {random && random.slip ? random.slip.advice : "Loading..."}
+
+
+
+
+ )
+}
+
+
+export default AdviceSlip;
\ No newline at end of file
diff --git a/src/sections/Advice/components/FavouriteSlipsList.jsx b/src/sections/Advice/components/FavouriteSlipsList.jsx
index e69de29b..638350a5 100644
--- a/src/sections/Advice/components/FavouriteSlipsList.jsx
+++ b/src/sections/Advice/components/FavouriteSlipsList.jsx
@@ -0,0 +1,15 @@
+
+function FavouriteSlipsList({favourites}) {
+ return (
+
+ Favourite Advice Slips
+
+ {favourites.map(slip => (
+ - {slip.advice}
+ ))}
+
+
+ )
+}
+
+export default FavouriteSlipsList
\ No newline at end of file
diff --git a/src/sections/Advice/index.jsx b/src/sections/Advice/index.jsx
index 0405f11f..ac38ba8b 100644
--- a/src/sections/Advice/index.jsx
+++ b/src/sections/Advice/index.jsx
@@ -1,9 +1,34 @@
+import { useEffect, useState } from "react"
+import FavouriteSlipsList from "./components/FavouriteSlipsList";
+import AdviceSlip from "./components/AdviceSlip";
+
function AdviceSection() {
+ const url = "https://api.adviceslip.com/advice";
+ const [random, setRandom] = useState("");
+ const [favourites, setFavourites] = useState([]);
+
+
+ const fetchData = async () => {
+ const response = await fetch(url);
+ const jsonData = await response.json();
+ setRandom(jsonData);
+ };
+ useEffect(() => {
+ fetchData();
+ }, []);
+
+ const handleAddFavourites = () => {
+ if (random && random.slip ){
+ if (!favourites.some(fav => fav.id === random.slip.id)) {
+ setFavourites([...favourites, random.slip]);
+ }
+ }
+ }
return (
)
}
diff --git a/src/sections/Art/components/ArtList.jsx b/src/sections/Art/components/ArtList.jsx
index e69de29b..4a01ee26 100644
--- a/src/sections/Art/components/ArtList.jsx
+++ b/src/sections/Art/components/ArtList.jsx
@@ -0,0 +1,13 @@
+import ArtListItem from "./ArtListItem"
+
+function ArtList({art, url}) {
+
+ return (
+
+
+ )
+}
+
+export default ArtList;
\ No newline at end of file
diff --git a/src/sections/Art/components/ArtListItem.jsx b/src/sections/Art/components/ArtListItem.jsx
index e69de29b..c104685c 100644
--- a/src/sections/Art/components/ArtListItem.jsx
+++ b/src/sections/Art/components/ArtListItem.jsx
@@ -0,0 +1,24 @@
+import PublicationHistoryList from "./PublicationHistoryList";
+
+function ArtListItem({art, url}) {
+
+ return (
+ <>
+
+ -
+
+

+
+ {art.title}
+ Artist: {art.artist}
+
+
+
+ >
+
+ )
+}
+
+export default ArtListItem;
\ No newline at end of file
diff --git a/src/sections/Art/components/PublicationHistoryList.jsx b/src/sections/Art/components/PublicationHistoryList.jsx
index d3f5a12f..8ea01fbf 100644
--- a/src/sections/Art/components/PublicationHistoryList.jsx
+++ b/src/sections/Art/components/PublicationHistoryList.jsx
@@ -1 +1,15 @@
+function PublicationHistoryList({art}) {
+ return (
+ <>
+ Publication History:
+
+ - {art.publicationHistory[0]}
+ - {art.publicationHistory[1]}
+ - {art.publicationHistory[2]}
+
+ >
+ )
+}
+
+export default PublicationHistoryList;
\ No newline at end of file
diff --git a/src/sections/Art/index.jsx b/src/sections/Art/index.jsx
index 0c74ffc2..9a58607b 100644
--- a/src/sections/Art/index.jsx
+++ b/src/sections/Art/index.jsx
@@ -1,10 +1,32 @@
-function ArtsSection() {
- return (
-
- )
+import {useEffect, useState} from "react"
+import ArtList from "./components/ArtList";
+
+function ArtListItem() {
+
+ const url = "https://boolean-uk-api-server.fly.dev";
+
+ const [data, setData] = useState([]);
+ const [filteredData, setFilteredData] = useState([]);
+
+ useEffect(() => {
+ const fetchData = async () => {
+ const reponse = await fetch(url+"/art");
+ const jsonData = await reponse.json();
+ setData(jsonData);
+ setFilteredData(jsonData);
+ };
+ fetchData();
+ }, []);
+
+ return (
+
+ Arts Section
+ {filteredData.map((art, index) => (
+
+ ))}
+
+
+ )
}
-export default ArtsSection
+export default ArtListItem;
\ No newline at end of file
diff --git a/src/sections/Users/components/UsersList.jsx b/src/sections/Users/components/UsersList.jsx
index e69de29b..ad349493 100644
--- a/src/sections/Users/components/UsersList.jsx
+++ b/src/sections/Users/components/UsersList.jsx
@@ -0,0 +1,13 @@
+import UsersListItem from "./UsersListItem"
+
+function UsersList({props}) {
+ const { user } = props
+ return (
+
+
+
+
+ )
+}
+
+export default UsersList
\ No newline at end of file
diff --git a/src/sections/Users/components/UsersListItem.jsx b/src/sections/Users/components/UsersListItem.jsx
index e69de29b..56aa30d5 100644
--- a/src/sections/Users/components/UsersListItem.jsx
+++ b/src/sections/Users/components/UsersListItem.jsx
@@ -0,0 +1,16 @@
+function UsersListItem(props) {
+ const { user } = props;
+ return (
+
+ -
+
+ {user.firstName} {user.lastName}
+ {user.email}
+
+
+ )
+}
+
+export default UsersListItem
\ No newline at end of file
diff --git a/src/sections/Users/index.jsx b/src/sections/Users/index.jsx
index 77332830..22b0a7fc 100644
--- a/src/sections/Users/index.jsx
+++ b/src/sections/Users/index.jsx
@@ -1,8 +1,29 @@
+import { useEffect, useState } from 'react'
+import UsersListItem from './components/UsersListItem';
+
function UsersSection() {
+
+ const url = "https://boolean-uk-api-server.fly.dev/isabelltran/contact";
+
+ const [data, setData] = useState([]);
+ const [filteredData, setFilteredData] = useState([]);
+
+ useEffect(() => {
+ const fetchData = async () => {
+ const response = await fetch(url);
+ const jsonData = await response.json();
+ setData(jsonData);
+ setFilteredData(jsonData);
+ };
+ fetchData();
+ }, []);
+
return (
Users Section
-
+ {filteredData.map((user, index) => (
+
+ ))}
)
}