diff --git a/src/sections/Advice/components/AdviceSlip.jsx b/src/sections/Advice/components/AdviceSlip.jsx
index e69de29b..594e8503 100644
--- a/src/sections/Advice/components/AdviceSlip.jsx
+++ b/src/sections/Advice/components/AdviceSlip.jsx
@@ -0,0 +1,49 @@
+import React from "react";
+import { useState, useEffect } from "react";
+
+function AdviceSlip({ url, setFavourite, favourites }) {
+ const [data, setData] = useState([]);
+ const [loading, setLoading] = useState(true);
+
+ useEffect(() => {
+ handleFetch();
+ }, []);
+
+ const handleFetch = () => {
+ setLoading(true);
+ fetch(url)
+ .then((res) => res.json())
+ .then((result) => {
+ setData(result);
+ setLoading(false);
+ })
+ .catch((error) => {
+ console.error("Fetch error:", error);
+ setLoading(false);
+ });
+ };
+
+ const AddFavourite = (favId) => {
+ if (favourites.includes(favId)) {
+ return;
+ }
+ setFavourite((prevIds) => [...prevIds, favId]);
+ };
+
+ if (loading) {
+ return ;
+ }
+
+ return (
+
+ Some Advice
+ {data.slip.advice}
+
+
+
+ );
+}
+
+export default AdviceSlip;
diff --git a/src/sections/Advice/components/FavouriteSlipItem.jsx b/src/sections/Advice/components/FavouriteSlipItem.jsx
new file mode 100644
index 00000000..652069ff
--- /dev/null
+++ b/src/sections/Advice/components/FavouriteSlipItem.jsx
@@ -0,0 +1,32 @@
+import React from "react";
+import { useState, useEffect } from "react";
+
+function FavouriteSlipItem({ url, id }) {
+ const [data, setData] = useState([]);
+ const [loading, setLoading] = useState(true);
+
+ useEffect(() => {
+ fetch(url + "/" + id)
+ .then((res) => res.json())
+ .then((result) => {
+ setData(result);
+ setLoading(false);
+ })
+ .catch((error) => {
+ console.error("Fetch error:", error);
+ setLoading(false);
+ });
+ }, []);
+
+ useEffect(() => {
+ console.log(data);
+ }, [data]);
+
+ if (loading) {
+ return ;
+ }
+
+ return
{data.slip.advice};
+}
+
+export default FavouriteSlipItem;
diff --git a/src/sections/Advice/components/FavouriteSlipsList.jsx b/src/sections/Advice/components/FavouriteSlipsList.jsx
index e69de29b..10ef9e10 100644
--- a/src/sections/Advice/components/FavouriteSlipsList.jsx
+++ b/src/sections/Advice/components/FavouriteSlipsList.jsx
@@ -0,0 +1,22 @@
+import React from "react";
+import { useEffect } from "react";
+import FavouriteSlipItem from "./FavouriteSlipItem";
+
+function FavouriteSlipsList({ url, favourites }) {
+ useEffect(() => {
+ console.log(favourites);
+ }, [favourites]);
+
+ return (
+
+ Favourite Advice Slips
+
+ {favourites.map((item, index) => (
+
+ ))}
+
+
+ );
+}
+
+export default FavouriteSlipsList;
diff --git a/src/sections/Advice/index.jsx b/src/sections/Advice/index.jsx
index 0405f11f..5ef6ad4a 100644
--- a/src/sections/Advice/index.jsx
+++ b/src/sections/Advice/index.jsx
@@ -1,11 +1,23 @@
+import { useState } from "react";
+import AdviceSlip from "./components/AdviceSlip";
+import FavouriteSlipsList from "./components/FavouriteSlipsList";
+
function AdviceSection() {
+ const apiUrl = "https://api.adviceslip.com/advice";
+
+ const [favourites, setFavourites] = useState([]);
+
return (
- )
+ );
}
-export default AdviceSection
+export default AdviceSection;
diff --git a/src/sections/Art/components/ArtList.jsx b/src/sections/Art/components/ArtList.jsx
index e69de29b..9ffa291a 100644
--- a/src/sections/Art/components/ArtList.jsx
+++ b/src/sections/Art/components/ArtList.jsx
@@ -0,0 +1,14 @@
+import React from "react";
+import ArtListItem from "./ArtListItem";
+
+function ArtList({ data, url }) {
+ return (
+
+ {data.map((item, index) => (
+
+ ))}
+
+ );
+}
+
+export default ArtList;
diff --git a/src/sections/Art/components/ArtListItem.jsx b/src/sections/Art/components/ArtListItem.jsx
index e69de29b..96e43c26 100644
--- a/src/sections/Art/components/ArtListItem.jsx
+++ b/src/sections/Art/components/ArtListItem.jsx
@@ -0,0 +1,18 @@
+import PublicationHistoryList from "./PublicationHistoryList";
+
+function ArtListItem({ entity, url }) {
+ return (
+
+ ArtListItem
+
+

+
+ {entity.title}
+ Artist: {entity.artist}
+ Publication History:
+
+
+ );
+}
+
+export default ArtListItem;
diff --git a/src/sections/Art/components/PublicationHistoryList.jsx b/src/sections/Art/components/PublicationHistoryList.jsx
index d3f5a12f..83eb45d3 100644
--- a/src/sections/Art/components/PublicationHistoryList.jsx
+++ b/src/sections/Art/components/PublicationHistoryList.jsx
@@ -1 +1,13 @@
+import React from "react";
+function PublicationHistoryList({ publications }) {
+ return (
+
+ {publications.map((item, index) => (
+ - {item}
+ ))}
+
+ );
+}
+
+export default PublicationHistoryList;
diff --git a/src/sections/Art/index.jsx b/src/sections/Art/index.jsx
index 0c74ffc2..cbf56c18 100644
--- a/src/sections/Art/index.jsx
+++ b/src/sections/Art/index.jsx
@@ -1,10 +1,48 @@
+import { useState, useEffect } from "react";
+import ArtList from "./components/ArtList";
+
function ArtsSection() {
+ const apiUrl = "https://boolean-uk-api-server.fly.dev/art";
+ const imgUrl = "https://boolean-uk-api-server.fly.dev";
+ const [data, setData] = useState([]);
+ const [loading, setLoading] = useState(true);
+
+ useEffect(() => {
+ fetch(apiUrl)
+ .then((res) => res.json())
+ .then((result) => {
+ setData(result);
+ setLoading(false);
+ })
+ .catch((error) => {
+ console.error("Fetch error:", error);
+ setLoading(false);
+ });
+ }, []);
+
+ /*
+ useEffect(() => {
+ console.log(data);
+ }, [data])
+ */
+
+ if (loading) {
+ return (
+
+ );
+ }
+
return (
- )
+ );
}
-export default ArtsSection
+export default ArtsSection;
diff --git a/src/sections/Users/components/UsersList.jsx b/src/sections/Users/components/UsersList.jsx
index e69de29b..f90d2fed 100644
--- a/src/sections/Users/components/UsersList.jsx
+++ b/src/sections/Users/components/UsersList.jsx
@@ -0,0 +1,16 @@
+import React from "react";
+import UsersListItem from "./UsersListItem";
+
+function UsersList({ data }) {
+ return (
+
+
+ {data.map((item, index) => (
+
+ ))}
+
+
+ );
+}
+
+export default UsersList;
diff --git a/src/sections/Users/components/UsersListItem.jsx b/src/sections/Users/components/UsersListItem.jsx
index e69de29b..099f6a9b 100644
--- a/src/sections/Users/components/UsersListItem.jsx
+++ b/src/sections/Users/components/UsersListItem.jsx
@@ -0,0 +1,22 @@
+import React from "react";
+
+function UsersListItem({ entity }) {
+ const style = {
+ background: entity.favouriteColour,
+ };
+
+ return (
+
+
+
+ {entity.firstName} {entity.lastName}
+
+ Email: {entity.email}
+
+ );
+}
+
+export default UsersListItem;
diff --git a/src/sections/Users/index.jsx b/src/sections/Users/index.jsx
index 77332830..b310d1c7 100644
--- a/src/sections/Users/index.jsx
+++ b/src/sections/Users/index.jsx
@@ -1,10 +1,47 @@
+import { useState, useEffect } from "react";
+import UsersList from "./components/UsersList";
+
function UsersSection() {
+ const apiUrl = "https://boolean-uk-api-server.fly.dev/JakubMroz4/contact";
+ const [data, setData] = useState([]);
+ const [loading, setLoading] = useState(true);
+
+ useEffect(() => {
+ fetch(apiUrl)
+ .then((res) => res.json())
+ .then((result) => {
+ setData(result);
+ setLoading(false);
+ })
+ .catch((error) => {
+ console.error("Fetch error:", error);
+ setLoading(false);
+ });
+ }, []);
+
+ /*
+ useEffect(() => {
+ console.log(data);
+ }, [data])
+ */
+
+ if (loading) {
+ return (
+
+ );
+ }
+
return (
- )
+ );
}
-export default UsersSection
+export default UsersSection;