diff --git a/src/App.jsx b/src/App.jsx
index 22ae1b9c0..bb062a03e 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -1,104 +1,28 @@
import './App.scss';
-// import postsFromServer from './api/posts.json';
-// import commentsFromServer from './api/comments.json';
-// import usersFromServer from './api/users.json';
+import postsFromServer from './api/posts.json';
+import commentsFromServer from './api/comments.json';
+import usersFromServer from './api/users.json';
+import { PostList } from './components/PostList';
-export const App = () => (
-
- Static list of posts
-
-
-
-
-
-
- est rerum tempore vitae sequi sint nihil reprehenderit dolor beatae ea
- dolores neque fugiat blanditiis voluptate porro vel nihil molestiae ut
- reiciendis qui aperiam non debitis possimus qui neque nisi nulla
-
-
-
-
-
No comments yet
-
-
-
-
-
doloremque illum aliquid sunt
+function getUserById(userId) {
+ return usersFromServer.find(user => user.id === userId) || null;
+}
-
- {' Posted by '}
+function getCommentsByPostId(postId) {
+ return commentsFromServer.filter(comment => comment.postId === postId);
+}
-
- Patricia Lebsack
-
-
-
+export const posts = postsFromServer.map(post => ({
+ ...post,
+ user: getUserById(post.userId),
+ comments: getCommentsByPostId(post.id),
+}));
-
- deserunt eos nobis asperiores et hic est debitis repellat molestiae
- optio nihil ratione ut eos beatae quibusdam distinctio maiores earum
- voluptates et aut adipisci ea maiores voluptas maxime
-
-
-
-
-
-
-
- dolorum voluptas laboriosam quisquam ab totam beatae et aut
- aliquid optio assumenda voluptas velit itaque quidem voluptatem
- tempore cupiditate in itaque sit molestiae minus dolores magni
-
-
-
-
-
+export const App = () => (
+
+ Static list of posts
-
- quia molestiae reprehenderit quasi aspernatur aut expedita
- occaecati aliquam eveniet laudantium omnis quibusdam delectus
- saepe quia accusamus maiores nam est cum et ducimus et vero
- voluptates excepturi deleniti ratione
-
-
-
-
-
+
);
diff --git a/src/App.scss b/src/App.scss
index 98bb3956c..643650952 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -5,32 +5,3 @@ iframe {
.App__title {
text-align: center;
}
-
-.PostInfo {
- margin: 10px auto;
- width: 90%;
- border: 1px solid #000;
- border-radius: 8px;
- background-color: lightgray;
- padding: 1em;
-
- &__title {
- margin: 0;
- }
-
- &__header {
- margin-bottom: 1em;
- }
-}
-
-.UserInfo {
- font-weight: bold;
-}
-
-.CommentList {
- display: flex;
- flex-direction: column;
- gap: 0.7em;
- background-color: #eee;
- padding: 1em;
-}
diff --git a/src/components/CommentInfo/CommentInfo.jsx b/src/components/CommentInfo/CommentInfo.jsx
index f99e27787..8192753f2 100644
--- a/src/components/CommentInfo/CommentInfo.jsx
+++ b/src/components/CommentInfo/CommentInfo.jsx
@@ -1 +1,15 @@
-export const CommentInfo = () => <>Put the comment here>;
+export const CommentInfo = ({ comment }) => (
+
+);
diff --git a/src/components/CommentList/CommentList.jsx b/src/components/CommentList/CommentList.jsx
index 263dfbc73..d1f0fa66e 100644
--- a/src/components/CommentList/CommentList.jsx
+++ b/src/components/CommentList/CommentList.jsx
@@ -1 +1,10 @@
-export const CommentList = () => <>Put the list here>;
+import { CommentInfo } from '../CommentInfo';
+import './CommentList.scss';
+
+export const CommentList = ({ comments }) => (
+
+ {comments.map(comment => (
+
+ ))}
+
+);
diff --git a/src/components/CommentList/CommentList.scss b/src/components/CommentList/CommentList.scss
index f1b40ee00..91c2ed5fb 100644
--- a/src/components/CommentList/CommentList.scss
+++ b/src/components/CommentList/CommentList.scss
@@ -1 +1,7 @@
-// add styles here
+.CommentList {
+ display: flex;
+ flex-direction: column;
+ gap: 0.7em;
+ background-color: #eee;
+ padding: 1em;
+}
diff --git a/src/components/PostInfo/PostInfo.jsx b/src/components/PostInfo/PostInfo.jsx
index eb3efb784..9fd2d14db 100644
--- a/src/components/PostInfo/PostInfo.jsx
+++ b/src/components/PostInfo/PostInfo.jsx
@@ -1 +1,31 @@
-export const PostInfo = () => <>Put the post here>;
+import { CommentList } from '../CommentList';
+import { UserInfo } from '../UserInfo/UserInfo';
+import './PostInfo.scss';
+
+export const PostInfo = ({ post }) => {
+ return (
+
+
+
{post.title}
+
+
+ {' Posted by '}
+
+ {post.user !== null && }
+
+
+
+
{post.body}
+
+ {post.comments.length > 0 ? (
+
+ ) : (
+ <>
+
+
+
No comments yet
+ >
+ )}
+
+ );
+};
diff --git a/src/components/PostInfo/PostInfo.scss b/src/components/PostInfo/PostInfo.scss
index f1b40ee00..1ad49fd34 100644
--- a/src/components/PostInfo/PostInfo.scss
+++ b/src/components/PostInfo/PostInfo.scss
@@ -1 +1,16 @@
-// add styles here
+.PostInfo {
+ margin: 10px auto;
+ width: 90%;
+ border: 1px solid #000;
+ border-radius: 8px;
+ background-color: lightgray;
+ padding: 1em;
+
+ &__title {
+ margin: 0;
+ }
+
+ &__header {
+ margin-bottom: 1em;
+ }
+}
diff --git a/src/components/PostList/PostList.jsx b/src/components/PostList/PostList.jsx
index 4487a96c9..c8d01aede 100644
--- a/src/components/PostList/PostList.jsx
+++ b/src/components/PostList/PostList.jsx
@@ -1 +1,9 @@
-export const PostList = () => <>Put the list here>;
+import { PostInfo } from '../PostInfo';
+
+export const PostList = ({ posts }) => (
+
+ {posts.map(post => (
+
+ ))}
+
+);
diff --git a/src/components/UserInfo/UserInfo.jsx b/src/components/UserInfo/UserInfo.jsx
index 6264e2f7e..9b9f6a3d3 100644
--- a/src/components/UserInfo/UserInfo.jsx
+++ b/src/components/UserInfo/UserInfo.jsx
@@ -1 +1,7 @@
-export const UserInfo = () => <>Put the user here>;
+import './UserInfo.scss';
+
+export const UserInfo = ({ user }) => (
+
+ {user.name}
+
+);
diff --git a/src/components/UserInfo/UserInfo.scss b/src/components/UserInfo/UserInfo.scss
index f1b40ee00..5080de7cd 100644
--- a/src/components/UserInfo/UserInfo.scss
+++ b/src/components/UserInfo/UserInfo.scss
@@ -1 +1,3 @@
-// add styles here
+.UserInfo {
+ font-weight: bold;
+}