diff --git a/commons/home.js b/commons/home.js index c438e6b..b0b6b5b 100644 --- a/commons/home.js +++ b/commons/home.js @@ -1,23 +1,51 @@ -import { useState } from "react"; +import { useEffect, useState } from "react"; import Searchbar from "../components/searchbar"; import Link from "next/link"; export default function Home({ rehberler }) { const [search, setSearch] = useState(""); - const filteredPosts = - search.length === 0 - ? rehberler - : rehberler.filter((rehber) => - rehber.fields.title.toLowerCase().includes(search.toLowerCase()) - ); + const [posts, setPosts] = useState([]); + const [currentPage, setCurrentPage] = useState(1); + const [postsPerPage] = useState(15); + + const indexOfLastPost = currentPage * postsPerPage; + const indexOfFirstPost = indexOfLastPost - postsPerPage; + const currentPosts = posts.slice(indexOfFirstPost, indexOfLastPost); + + const pageNumbers = []; + for (let i = 1; i <= Math.ceil(rehberler.length / postsPerPage); i++) { + pageNumbers.push(i); + } + + const paginate = (pageNumber) => setCurrentPage(pageNumber); + + useEffect(() => { + const fetchPosts = async () => { + let filteredPosts = + search.length === 0 + ? rehberler + : rehberler.filter((rehber) => + rehber.fields.title.toLowerCase().includes(search.toLowerCase()) + ); + + setCurrentPage(1); + setPosts(filteredPosts); + }; + + fetchPosts(); + }, [search.length]); return (
- -

Rehberler

+ +
- {filteredPosts.slice(0, 21).map((rehber) => ( + {currentPosts.map((rehber) => (
  • {rehber.fields.title} @@ -25,6 +53,14 @@ export default function Home({ rehberler }) {
  • ))}
    + +
    ); } diff --git a/styles/abstracts/_include-media.scss b/styles/abstracts/_include-media.scss index f3c696b..50cccd5 100644 --- a/styles/abstracts/_include-media.scss +++ b/styles/abstracts/_include-media.scss @@ -29,8 +29,8 @@ /// $breakpoints: ('phone': 320px); /// $breakpoints: ( - "smallest": 25em, - // 400 px + "smallest": 22em, + // 352 px "smaller": 34.375em, // 550 px "small": 43.75em, diff --git a/styles/base/_base.scss b/styles/base/_base.scss index a2572d1..3c84375 100644 --- a/styles/base/_base.scss +++ b/styles/base/_base.scss @@ -24,3 +24,10 @@ body { background-color: hsl(10, 5%, 42%); color: #bdb7af; } + +.container { + min-height: 100vh; + display: grid; + grid-template-rows: auto 1fr auto; + align-items: center; +} diff --git a/styles/base/_typography.scss b/styles/base/_typography.scss index 0094893..131ed76 100644 --- a/styles/base/_typography.scss +++ b/styles/base/_typography.scss @@ -46,7 +46,7 @@ a { code { background-color: #383838; - line-height: 2; + line-height: 1.7; font-size: 1.6rem; } diff --git a/styles/pages/homepage.scss b/styles/pages/homepage.scss index c73bffd..f4ba0ce 100644 --- a/styles/pages/homepage.scss +++ b/styles/pages/homepage.scss @@ -1,30 +1,57 @@ .homepage { display: grid; - justify-content: center; justify-items: center; + grid-template-rows: auto auto 58rem; padding-top: 2rem; - list-style-type: none; + &_heading-1 { padding-top: 1rem; } - &_posts { - display: grid; - justify-content: center; - grid-template-columns: repeat(3, 1fr); - grid-template-rows: repeat(8, 12rem); - width: 55%; + h1 { + grid-row: 1; + margin-bottom: 1rem; + } + &_posts { li { - margin-top: 2rem; - margin-right: 2rem; - text-align: center; + margin-top: 1rem; } } - @include media("