diff --git a/Components/Profile/Profile.js b/Components/Profile/Profile.js new file mode 100644 index 00000000..8398f978 --- /dev/null +++ b/Components/Profile/Profile.js @@ -0,0 +1,16 @@ +import { Card } from "primereact/card"; + +function Profile({ profile }) { + return ( + } + title={profile.name} + subTitle={profile.username} + style={{ width: "200px" }} + > + ); +} + +export default Profile; diff --git a/package-lock.json b/package-lock.json index a5bcf263..27c38926 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,6 +6,7 @@ "": { "dependencies": { "next": "12.0.7", + "primeflex": "^2.0.0", "primeicons": "^5.0.0", "primereact": "^7.0.1", "react": "17.0.2", @@ -4481,6 +4482,11 @@ "node": ">= 0.8.0" } }, + "node_modules/primeflex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/primeflex/-/primeflex-2.0.0.tgz", + "integrity": "sha512-t6AG3iRI1rh04uI+9nC4JSlbKfA8PnpRDFtjyqi3rDSLRgdfOuhIiunJbjVQ4alnnCfuQAAbVyde1AKN9QxT/w==" + }, "node_modules/primeicons": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-5.0.0.tgz", @@ -8783,6 +8789,11 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "primeflex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/primeflex/-/primeflex-2.0.0.tgz", + "integrity": "sha512-t6AG3iRI1rh04uI+9nC4JSlbKfA8PnpRDFtjyqi3rDSLRgdfOuhIiunJbjVQ4alnnCfuQAAbVyde1AKN9QxT/w==" + }, "primeicons": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-5.0.0.tgz", diff --git a/package.json b/package.json index 5f912e11..f1411333 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "next": "12.0.7", + "primeflex": "^2.0.0", "primeicons": "^5.0.0", "primereact": "^7.0.1", "react": "17.0.2", diff --git a/pages/_app.js b/pages/_app.js index 92ddc2f3..d4163d48 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -3,6 +3,7 @@ import "../styles/globals.css"; import "primereact/resources/themes/lara-light-indigo/theme.css"; import "primereact/resources/primereact.min.css"; import "primeicons/primeicons.css"; +import "primeflex/primeflex.css"; function MyApp({ Component, pageProps }) { return ; diff --git a/pages/index.js b/pages/index.js index d61a6715..adc775dc 100644 --- a/pages/index.js +++ b/pages/index.js @@ -1,22 +1,35 @@ import Head from "next/head"; -import { Card } from "primereact/card"; +import { useState } from "react"; + +import { Menubar } from "primereact/menubar"; +import { InputText } from "primereact/inputtext"; + +import Profile from "../Components/Profile/Profile"; export async function getStaticProps() { const res = await fetch("http://localhost:3000/api/profiles"); - const data = await res.json(); + const profiles = await res.json(); return { - props: { data }, + props: { + profiles, + }, }; } -export default function Home({ data }) { - const card = (profile) => ( - }> - {profile.name} - - ); +export default function Home({ profiles }) { + const [list, setList] = useState(profiles); + const items = []; + + const search = (e) => + setList( + profiles.filter( + (profile) => + profile.name.includes(e.target.value) || + profile.username.includes(e.target.value) + ) + ); return (
@@ -26,9 +39,33 @@ export default function Home({ data }) {
-

Awesome GitHub Profiles

+ + {" "} + Awesome GitHub Profiles ({list.length}) + + } + end={ + + + + } + /> - {data && data.map((profile) => card(profile))} +
+ {profiles && + list + // .slice(0, 9) + .map((profile) => ( + + ))} +