Frontend kısmında iyileştirmeler yapıldı. Fixlendi
This commit is contained in:
parent
5fe6d25933
commit
711eeef127
|
|
@ -0,0 +1,33 @@
|
||||||
|
@media screen and (max-width: 900px) {
|
||||||
|
.root {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.columns {
|
||||||
|
display: flex;
|
||||||
|
gap: 1.5rem;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 900px) {
|
||||||
|
.columns {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.image {
|
||||||
|
width: 50%;
|
||||||
|
max-width: 1280px;
|
||||||
|
aspect-ratio: 16 / 9;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: var(--border-radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.buyButton {
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.description {
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
import Container from "@/components/Container";
|
||||||
|
import styles from "./page.module.css";
|
||||||
|
import { COURSES } from "@/mockData";
|
||||||
|
import { formatPrice } from "@/utils";
|
||||||
|
import CourseGrid from "@/components/CourseGrid";
|
||||||
|
|
||||||
|
export default function CategoryPage({ params }) {
|
||||||
|
// Seçilen kategoriye göre kursları filtrele
|
||||||
|
const filteredCourses = COURSES.filter(
|
||||||
|
(course) => course.category.slug === params.categorySlug
|
||||||
|
);
|
||||||
|
|
||||||
|
// Eğer filtrelenen kurslar boşsa, isteğe bağlı bir mesaj gösterebilirsiniz
|
||||||
|
if (filteredCourses.length === 0) {
|
||||||
|
return (
|
||||||
|
<main className={styles.root}>
|
||||||
|
<Container>
|
||||||
|
<section>
|
||||||
|
<div>
|
||||||
|
<h1 className={styles.sectionTitle}>Bu kategoriye ait kurs bulunamadı.</h1>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</Container>
|
||||||
|
</main>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filtrelenen kurslar varsa, her bir kurs için ayrı bir blok oluşturun
|
||||||
|
return (
|
||||||
|
<main className={styles.root}>
|
||||||
|
<Container>
|
||||||
|
<section>
|
||||||
|
<div>
|
||||||
|
<h1 className={styles.sectionTitle}>{params.categorySlug}</h1>
|
||||||
|
<h2 className={styles.sectionTitle}>Çok Satanlar</h2>
|
||||||
|
<CourseGrid courses={filteredCourses} />
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</Container>
|
||||||
|
</main>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -21,6 +21,9 @@ export default function CourseDetailPage({ params }) {
|
||||||
<button className={cn(styles.buyButton, "btn btn-primary")}>
|
<button className={cn(styles.buyButton, "btn btn-primary")}>
|
||||||
Satın Al: {formatPrice(course.price)}
|
Satın Al: {formatPrice(course.price)}
|
||||||
</button>
|
</button>
|
||||||
|
<button className={cn(styles.buyButton, "btn btn-primary")}>
|
||||||
|
Eğitime Başla
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,24 @@
|
||||||
|
import Link from "next/link";
|
||||||
import Container from "@/components/Container";
|
import Container from "@/components/Container";
|
||||||
import CourseGrid from "@/components/CourseGrid";
|
import CourseGrid from "@/components/CourseGrid";
|
||||||
import { COURSES } from "@/mockData";
|
import { CATEGORIES, COURSES } from "@/mockData";
|
||||||
import styles from "./page.module.css";
|
import styles from "./page.module.css";
|
||||||
|
|
||||||
export default function HomePage() {
|
export default function HomePage() {
|
||||||
return (
|
return (
|
||||||
<main className={styles.root}>
|
<main className={styles.root}>
|
||||||
<Container>
|
<Container>
|
||||||
|
{/* Kategorilerin buton gibi yan yana dizilmiş hali */}
|
||||||
|
<div className={styles.categories}>
|
||||||
|
{CATEGORIES.map((category) => (
|
||||||
|
<Link key={category.slug} href={`/kategoriler/${category.slug}`}>
|
||||||
|
<div className={styles.categoryButton}>
|
||||||
|
<span>{category.name}</span>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h1 className={styles.sectionTitle}>Çok Satanlar</h1>
|
<h1 className={styles.sectionTitle}>Çok Satanlar</h1>
|
||||||
<CourseGrid courses={COURSES} />
|
<CourseGrid courses={COURSES} />
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,17 @@
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.categories {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.categoryButton {
|
||||||
|
padding: 8px;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Header.js
|
||||||
import { ConnectButton } from "@rainbow-me/rainbowkit";
|
import { ConnectButton } from "@rainbow-me/rainbowkit";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import styles from "./Header.module.css";
|
import styles from "./Header.module.css";
|
||||||
|
|
@ -11,6 +12,14 @@ export default function Header() {
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<div className={styles.nav}>
|
<div className={styles.nav}>
|
||||||
|
{/* Arama butonu ekleniyor */}
|
||||||
|
<div className={styles.search}>
|
||||||
|
<input className={styles["search-input"]} type="text" placeholder="Ara..." />
|
||||||
|
<button className={styles["search-button"]} type="button">
|
||||||
|
Ara
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<Link href="/hesabim" className="btn btn-flat">
|
<Link href="/hesabim" className="btn btn-flat">
|
||||||
Hesabım
|
Hesabım
|
||||||
</Link>
|
</Link>
|
||||||
|
|
|
||||||
|
|
@ -18,3 +18,23 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 2.5rem;
|
gap: 2.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.search {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
/* input yerine .search-input class'ını kullan */
|
||||||
|
.search-input {
|
||||||
|
padding: 8px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* button yerine .search-button class'ını kullan */
|
||||||
|
.search-button {
|
||||||
|
padding: 8px 16px;
|
||||||
|
background-color: #ff0000;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,12 @@
|
||||||
|
// categories
|
||||||
|
export const CATEGORIES = [
|
||||||
|
{ slug: "blokzincir", name: "Blokzincir" },
|
||||||
|
{ slug: "ön-yüz", name: "Frontend" },
|
||||||
|
{ slug: "linux", name: "Linux" },
|
||||||
|
{ slug: "yapay-zeka", name: "Yapay Zeka" },
|
||||||
|
];
|
||||||
|
|
||||||
|
// courses
|
||||||
export const COURSES = [
|
export const COURSES = [
|
||||||
{
|
{
|
||||||
id: "6a3753e8-5f4e-4f4d-a05e-44b84b8f7aed",
|
id: "6a3753e8-5f4e-4f4d-a05e-44b84b8f7aed",
|
||||||
|
|
@ -5,10 +14,25 @@ export const COURSES = [
|
||||||
description:
|
description:
|
||||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||||
price: "0.05",
|
price: "0.05",
|
||||||
|
start: "",
|
||||||
imageUrl: "https://osmannyildiz.tk/cublearn/akinci.webp",
|
imageUrl: "https://osmannyildiz.tk/cublearn/akinci.webp",
|
||||||
instructor: {
|
instructor: {
|
||||||
name: "Baturalp Güvenç",
|
name: "Baturalp Güvenç",
|
||||||
},
|
},
|
||||||
|
category: CATEGORIES.find((category) => category.slug === "blokzincir"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "6a3753e8-5f4e-4f4d-a05e-44b84b8f7aed",
|
||||||
|
name: "Audit",
|
||||||
|
description:
|
||||||
|
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||||
|
price: "0.05",
|
||||||
|
start: "",
|
||||||
|
imageUrl: "https://osmannyildiz.tk/cublearn/akinci.webp",
|
||||||
|
instructor: {
|
||||||
|
name: "Mehmet Hayırlı",
|
||||||
|
},
|
||||||
|
category: CATEGORIES.find((category) => category.slug === "blokzincir"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "c7253736-5756-4a64-a072-917c66afa877",
|
id: "c7253736-5756-4a64-a072-917c66afa877",
|
||||||
|
|
@ -16,10 +40,12 @@ export const COURSES = [
|
||||||
description:
|
description:
|
||||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||||
price: "0.05",
|
price: "0.05",
|
||||||
|
start: "",
|
||||||
imageUrl: "https://osmannyildiz.tk/cublearn/elmacik.webp",
|
imageUrl: "https://osmannyildiz.tk/cublearn/elmacik.webp",
|
||||||
instructor: {
|
instructor: {
|
||||||
name: "Furkan Ayvaz",
|
name: "Furkan Ayvaz",
|
||||||
},
|
},
|
||||||
|
category: CATEGORIES.find((category) => category.slug === "ön-yüz"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "59a8f94b-7358-4ffe-bced-a54cccc93e64",
|
id: "59a8f94b-7358-4ffe-bced-a54cccc93e64",
|
||||||
|
|
@ -27,9 +53,23 @@ export const COURSES = [
|
||||||
description:
|
description:
|
||||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||||
price: "0.05",
|
price: "0.05",
|
||||||
|
start: "",
|
||||||
imageUrl: "https://osmannyildiz.tk/cublearn/masalik.webp",
|
imageUrl: "https://osmannyildiz.tk/cublearn/masalik.webp",
|
||||||
instructor: {
|
instructor: {
|
||||||
name: "Berk Çiçek",
|
name: "Berk Çiçek",
|
||||||
},
|
},
|
||||||
|
category: CATEGORIES.find((category) => category.slug === "linux"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "6a375fae8-5f4e-4244d-a05e-44b84b8adaf7aed",
|
||||||
|
name: "Yapay Zekaya Giriş",
|
||||||
|
description: "Hosta La Vista!",
|
||||||
|
price: "0.05",
|
||||||
|
imageUrl: "https://osmannyildiz.tk/cublearn/akinci.webp",
|
||||||
|
instructor: {
|
||||||
|
name: "Muhammed Akıncı",
|
||||||
|
},
|
||||||
|
category: CATEGORIES.find((category) => category.slug === "yapay-zeka"),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
Loading…
Reference in New Issue