diff --git a/apps/kampus/app/odin/curriculum-list.ts b/apps/kampus/app/odin/curriculum-list.ts index 2d449456..fa2d990d 100644 --- a/apps/kampus/app/odin/curriculum-list.ts +++ b/apps/kampus/app/odin/curriculum-list.ts @@ -1,4 +1,7 @@ export interface Curriculum { + name: string; + url: string; + enabled: boolean; description: string; sections: Section[]; } @@ -13,245 +16,274 @@ interface CurriculumLesson { url: string; } -const foundationsCurriculum = { - description: `İşte her şeyin başladığı yer! Gerçek, çalışan web siteleri oluşturmak - için ihtiyacınız olan temel araçların hepsine pratik bir giriş. Web geliştiricilerinin - aslında ne yaptığını ve sonraki kurslar için ihtiyacınız olan temelleri öğreneceksiniz.`, +const foundationsCurriculum = + { + name: "Temel Bilgiler Serüveni", + url: "temel-bilgiler-seruveni", + enabled: true, + description: `İşte her şeyin başladığı yer! Gerçek, çalışan web siteleri oluşturmak + için ihtiyacınız olan temel araçların hepsine pratik bir giriş. Web geliştiricilerinin + aslında ne yaptığını ve sonraki kurslar için ihtiyacınız olan temelleri öğreneceksiniz.`, + sections: [ + { + header: "Başlangıç", + lessons: [ + { + title: "Kurs Nasıl Çalışacak?", + url: "temel-bilgiler/baslangic/kurs-nasil-calisacak", + }, + { + title: "Web Geliştirmeye Giriş", + url: "temel-bilgiler/baslangic/web-gelistirmeye-giris", + }, + { + title: "Motivasyon ve Düşünce Yapısı", + url: "temel-bilgiler/baslangic/motivasyon-ve-dusunce-yapisi", + }, + { + title: "Yardım İstemek", + url: "temel-bilgiler/baslangic/yardim-istemek", + }, + { + title: "Odin Topluluğuna Katıl", + url: "temel-bilgiler/baslangic/odin-topluluguna-katil", + }, + ], + }, + { + header: "Kurulumlar", + lessons: [ + { + title: "Bilgisayar Temelleri", + url: "temel-bilgiler/kurulumlar/bilgisayar-temelleri", + }, + { + title: "Web Nasıl Çalışır?", + url: "temel-bilgiler/kurulumlar/web-nasil-calisir", + }, + { + title: "Kuruluma Genel Bakış", + url: "temel-bilgiler/kurulumlar/kuruluma-genel-bakis", + }, + { + title: "Kurulumlar", + url: "temel-bilgiler/kurulumlar/kurulumlar", + }, + { + title: "Metin Düzenleyiciler", + url: "temel-bilgiler/kurulumlar/metin-duzenleyiciler", + }, + { + title: "Komut Satırı Temelleri", + url: "temel-bilgiler/kurulumlar/komut-satiri-temelleri", + }, + { title: "Setting up Git - Çeviriye ihtiyaç duyuluyor", url: "#" }, + ], + }, + { + header: "Git Temelleri", + lessons: [ + { + title: "Git'le Tanışın", + url: "git/git-temelleri/gitle-tanisin", + }, + { + title: "Git'e Giriş", + url: "git/git-temelleri/gite-giris", + }, + ], + }, + { + header: "HTML Temelleri", + lessons: [ + { + title: "HTML ve CSS'e Giriş", + url: "temel-bilgiler/html-css/html-temelleri/html-ve-csse-giris", + }, + { + title: "Elementler ve Etiketler", + url: "temel-bilgiler/html-css/html-temelleri/elementler-ve-etiketler", + }, + { + title: "HTML Şablonu", + url: "temel-bilgiler/html-css/html-temelleri/html-sablonu", + }, + { + title: "Metin İle Çalışma", + url: "temel-bilgiler/html-css/html-temelleri/metin-ile-calisma", + }, + { + title: "Listeler", + url: "temel-bilgiler/html-css/html-temelleri/listeler", + }, + { + title: "Linkler ve Resimler", + url: "temel-bilgiler/html-css/html-temelleri/linkler-ve-resimler", + }, + { + title: "Commit Mesajları", + url: "git/git-temelleri/commit-mesajlari", + }, + { + title: "Proje: Tarifler - Çeviriye ihtiyaç duyuluyor", + url: "#", + }, + ], + }, + { + header: "CSS Temelleri", + lessons: [ + { + title: "CSS'e Giriş", + url: "temel-bilgiler/html-css/css-temelleri/csse-giris", + }, + { + title: "Basamaklama", + url: "temel-bilgiler/html-css/css-temelleri/basamaklama", + }, + { + title: "HTML ve CSS İnceleme", + url: "temel-bilgiler/html-css/css-temelleri/html-ve-css-inceleme", + }, + { + title: "Kutu Modeli", + url: "temel-bilgiler/html-css/css-temelleri/kutu-modeli", + }, + { + title: "Blok ve Satır İçi Öğeler", + url: "temel-bilgiler/html-css/css-temelleri/blok-ve-satir-ici-ogeler", + }, + ], + }, + { + header: "Flexbox", + lessons: [ + { + title: "Introduction to Flexbox - Çeviriye ihtiyaç duyuluyor", + url: "#", + }, + { + title: "Grow ve Shrink", + url: "temel-bilgiler/html-css/flexbox/grow-ve-shrink", + }, + { + title: "Eksenler", + url: "temel-bilgiler/html-css/flexbox/eksenler", + }, + { + title: "Hizalama", + url: "temel-bilgiler/html-css/flexbox/hizalama", + }, + { + title: "Project: Landing Page - Çeviriye ihtiyaç duyuluyor", + url: "#", + }, + ], + }, + { + header: "JavaScript Temelleri", + lessons: [ + { + title: "JavaScript Temelleri Bölüm 1", + url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-1", + }, + { + title: "JavaScript Temelleri Bölüm 2", + url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-2", + }, + { + title: "JavaScript Geliştirici Araçları", + url: "temel-bilgiler/javascript-temelleri/javascript-gelistirici-araclari", + }, + { + title: "JavaScript Temelleri Bölüm 3", + url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-3", + }, + { + title: "Problem Çözme", + url: "temel-bilgiler/javascript-temelleri/problem-cozme", + }, + { + title: "Hataları Anlama", + url: "temel-bilgiler/javascript-temelleri/hatalari-anlama", + }, + { + title: "Proje: Taş Kağıt Makas", + url: "temel-bilgiler/javascript-temelleri/proje-tas-kagit-makas", + }, + { + title: "Temiz Kod", + url: "temel-bilgiler/javascript-temelleri/temiz-kod", + }, + { + title: "Node.js Setup - Çeviriye ihtiyaç duyuluyor", + url: "#", + }, + { + title: "JavaScript Temelleri Bölüm 4", + url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-4", + }, + { + title: "DOM Manipülasyonu ve Eventler", + url: "temel-bilgiler/javascript-temelleri/dom-manipulasyonu-ve-eventler", + }, + { + title: "Taş Kağıt Makas Projesine Geri Dönüş", + url: "temel-bilgiler/javascript-temelleri/tas-kagit-makas-projesine-geri-donus", + }, + { + title: "Proje: Çizim Tahtası", + url: "temel-bilgiler/javascript-temelleri/proje-cizim-tahtasi", + }, + { + title: "JavaScript Temelleri Bölüm 5", + url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-5", + }, + { + title: "Proje: Hesap Makinesi", + url: "temel-bilgiler/javascript-temelleri/proje-hesap-makinesi", + }, + ], + }, + { + header: "Her Şeyi Bir Araya Getirme", + lessons: [ + { + title: "Her Şeyi Bir Araya Getirme", + url: "temel-bilgiler/her-seyi-birlestirme/her-seyi-bir-araya-getirme-sonuc", + }, + ], + }, + ], + } as Curriculum; + +const FullStackJsCurriculum = { + name: "Full Stack JavaScript Serüveni", + description: `Bu yolculuk, sizi JavaScript müfredatımızın tamamından geçirir. + Kurslar, görüntülendikleri sırayla alınmalıdır. + JavaScript ve NodeJS kullanarak sıfırdan güzel, duyarlı web siteleri oluşturmak + için bilmeniz gereken her şeyi öğreneceksiniz.`, + enabled: false, + url: "https://github.com/kamp-us/monorepo/tree/dev/content/odin/intermediate_html_css", sections: [ { - header: "Başlangıç", - lessons: [ - { - title: "Kurs Nasıl Çalışacak?", - url: "temel-bilgiler/baslangic/kurs-nasil-calisacak", - }, - { - title: "Web Geliştirmeye Giriş", - url: "temel-bilgiler/baslangic/web-gelistirmeye-giris", - }, - { - title: "Motivasyon ve Düşünce Yapısı", - url: "temel-bilgiler/baslangic/motivasyon-ve-dusunce-yapisi", - }, - { - title: "Yardım İstemek", - url: "temel-bilgiler/baslangic/yardim-istemek", - }, - { - title: "Odin Topluluğuna Katıl", - url: "temel-bilgiler/baslangic/odin-topluluguna-katil", - }, - ], - }, - { - header: "Kurulumlar", - lessons: [ - { - title: "Bilgisayar Temelleri", - url: "temel-bilgiler/kurulumlar/bilgisayar-temelleri", - }, - { - title: "Web Nasıl Çalışır?", - url: "temel-bilgiler/kurulumlar/web-nasil-calisir", - }, - { - title: "Kuruluma Genel Bakış", - url: "temel-bilgiler/kurulumlar/kuruluma-genel-bakis", - }, - { - title: "Kurulumlar", - url: "temel-bilgiler/kurulumlar/kurulumlar", - }, - { - title: "Metin Düzenleyiciler", - url: "temel-bilgiler/kurulumlar/metin-duzenleyiciler", - }, - { - title: "Komut Satırı Temelleri", - url: "temel-bilgiler/kurulumlar/komut-satiri-temelleri", - }, - { title: "Setting up Git - Çeviriye ihtiyaç duyuluyor", url: "#" }, - ], - }, - { - header: "Git Temelleri", + header: "Test header", lessons: [ { - title: "Git'le Tanışın", - url: "git/git-temelleri/gitle-tanisin", - }, - { - title: "Git'e Giriş", - url: "git/git-temelleri/gite-giris", - }, - ], - }, - { - header: "HTML Temelleri", - lessons: [ - { - title: "HTML ve CSS'e Giriş", - url: "temel-bilgiler/html-css/html-temelleri/html-ve-csse-giris", - }, - { - title: "Elementler ve Etiketler", - url: "temel-bilgiler/html-css/html-temelleri/elementler-ve-etiketler", - }, - { - title: "HTML Şablonu", - url: "temel-bilgiler/html-css/html-temelleri/html-sablonu", - }, - { - title: "Metin İle Çalışmak", - url: "temel-bilgiler/html-css/html-temelleri/metin-ile-calismak", - }, - { - title: "Listeler", - url: "temel-bilgiler/html-css/html-temelleri/listeler", - }, - { - title: "Linkler ve Resimler", - url: "temel-bilgiler/html-css/html-temelleri/linkler-ve-resimler", - }, - { - title: "Commit Mesajları", - url: "git/git-temelleri/commit-mesajlari", - }, - { - title: "Proje: Tarifler - Çeviriye ihtiyaç duyuluyor", - url: "#", - }, - ], - }, - { - header: "CSS Temelleri", - lessons: [ - { - title: "CSS'e Giriş", - url: "temel-bilgiler/html-css/css-temelleri/csse-giris", - }, - { - title: "Basamaklama", - url: "temel-bilgiler/html-css/css-temelleri/basamaklama", - }, - { - title: "HTML ve CSS İnceleme", - url: "temel-bilgiler/html-css/css-temelleri/html-ve-css-inceleme", - }, - { - title: "Kutu Modeli", - url: "temel-bilgiler/html-css/css-temelleri/kutu-modeli", - }, - { - title: "Blok ve Satır İçi Öğeler", - url: "temel-bilgiler/html-css/css-temelleri/blok-ve-satir-ici-ogeler", - }, - ], - }, - { - header: "Flexbox", - lessons: [ - { - title: "Introduction to Flexbox - Çeviriye ihtiyaç duyuluyor", - url: "#", - }, - { - title: "Grow ve Shrink", - url: "temel-bilgiler/html-css/flexbox/grow-ve-shrink", - }, - { - title: 'Eksenler', - url: "temel-bilgiler/html-css/flexbox/eksenler", - }, - { - title: 'Hizalama', - url: "temel-bilgiler/html-css/flexbox/hizalama", - }, - { - title: "Project: Landing Page - Çeviriye ihtiyaç duyuluyor", - url: "#", - }, - ], - }, - { - header: "JavaScript Temelleri", - lessons: [ - { - title: "JavaScript Temelleri Bölüm 1", - url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-bolum-1", - }, - { - title: "JavaScript Temelleri Bölüm 2", - url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-bolum-2", - }, - { - title: "JavaScript Geliştirici Araçları", - url: "temel-bilgiler/javascript-temelleri/javascript-gelistirici-araclari", - }, - { - title: "JavaScript Temelleri Bölüm 3", - url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-bolum-3", - }, - { - title: "Problem Çözme", - url: "temel-bilgiler/javascript-temelleri/problem-cozme", - }, - { - title: "Hata Mesajlarını Anlamak", - url: "temel-bilgiler/javascript-temelleri/hata-mesajlarini-anlamak", - }, - { - title: "Proje: Taş Kağıt Makas", - url: "temel-bilgiler/javascript-temelleri/proje-tas-kagit-makas", - }, - { - title: "Temiz Kod", - url: "temel-bilgiler/javascript-temelleri/temiz-kod", - }, - { - title: "Node.js Setup - Çeviriye ihtiyaç duyuluyor", - url: "#", - }, - { - title: "JavaScript Temelleri Bölüm 4", - url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-bolum-4", - }, - { - title: "DOM Manipülasyonu ve Eventler", - url: "temel-bilgiler/javascript-temelleri/dom-manipulasyonu-ve-eventler", - }, - { - title: "Taş Kağıt Makas Projesine Geri Dönüş", - url: "temel-bilgiler/javascript-temelleri/tas-kagit-makas-projesine-geri-donus", - }, - { - title: "Proje: Çizim Tahtası", - url: "temel-bilgiler/javascript-temelleri/proje-cizim-tahtasi", - }, - { - title: "JavaScript Temelleri Bölüm 5", - url: "temel-bilgiler/javascript-temelleri/javascript-temelleri-bolum-5", - }, - { - title: "Proje: Hesap Makinesi", - url: "temel-bilgiler/javascript-temelleri/proje-hesap-makinesi", - }, - ], - }, - { - header: "Sonuç", - lessons: [ - { - title: "İlerlemek İstediğin Yolu Seç", - url: "temel-bilgiler/ilerlemek-istegin-yolu-sec", - }, - ], - }, - ], -} as Curriculum; + title: "test lesson", + url: "test-course-url", + } + ] + } + ] + } as Curriculum; + const curriculumList = { foundationsCurriculum, + FullStackJsCurriculum + }; export default curriculumList; + diff --git a/apps/kampus/app/odin/page.tsx b/apps/kampus/app/odin/page.tsx index aed27641..777702ee 100644 --- a/apps/kampus/app/odin/page.tsx +++ b/apps/kampus/app/odin/page.tsx @@ -3,11 +3,11 @@ import { BookOpenCheckIcon } from "lucide-react"; export default function OdinHome() { return ( - + - diff --git a/apps/kampus/app/odin/seruvenler/page.tsx b/apps/kampus/app/odin/seruvenler/page.tsx index 8ff56a83..f8ae8657 100644 --- a/apps/kampus/app/odin/seruvenler/page.tsx +++ b/apps/kampus/app/odin/seruvenler/page.tsx @@ -1,29 +1,20 @@ import { Flex } from "@radix-ui/themes"; +import curriculumList from "../curriculum-list"; import { HelpNeededJourney, Journey } from "./Journey"; -const paths = [ - { - title: "Temel Bilgiler Serüveni", - description: - "İşte her şeyin başladığı yer! Gerçek, çalışan web siteleri oluşturmak için ihtiyacınız olan temel araçların hepsine pratik bir giriş. Web geliştiricilerinin aslında ne yaptığını ve sonraki kurslar için ihtiyacınız olan temelleri öğreneceksiniz.", - enabled: true, - url: "/odin/temel-bilgiler-seruveni", - }, - { - title: "Full Stack JavaScript Serüveni", - description: `Bu yolculuk, sizi JavaScript müfredatımızın tamamından geçirir. - Kurslar, görüntülendikleri sırayla alınmalıdır. - JavaScript ve NodeJS kullanarak sıfırdan güzel, duyarlı web siteleri oluşturmak - için bilmeniz gereken her şeyi öğreneceksiniz.`, - enabled: false, - url: "https://github.com/kamp-us/monorepo/tree/dev/content/odin/intermediate_html_css", - }, -]; +const paths = Object.values(curriculumList).map((curriculum) => { + return { + title: curriculum.name, + description: curriculum.description, + enabled: curriculum.enabled, + url: curriculum.url, + }; +}); export default function SeruvenlerPage() { return ( - + {paths.map((path) => path.enabled ? ( { +export const CurriculumSection = (props: CurriculumSectionProps & { curriculumUrl: string }) => { const { lessons, header } = props.section; + const { curriculumUrl } = props; return ( @@ -18,7 +19,7 @@ export const CurriculumSection = (props: CurriculumSectionProps) => { const color = url === "#" ? "orange" : "teal"; return ( - + {title} diff --git a/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonActions.tsx b/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonActions.tsx index b25b113f..7ad5578f 100644 --- a/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonActions.tsx +++ b/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonActions.tsx @@ -1,8 +1,52 @@ +import { + ArrowRightIcon, + ExclamationTriangleIcon, + GitHubLogoIcon, + RocketIcon, +} from "@radix-ui/react-icons"; +import { Box, Button, Card, Flex, Separator } from "@radix-ui/themes"; import { graphql, useFragment } from "react-relay"; import { getOdinGithubEditUrl, getOdinGithubIssueUrl } from "~/features/kampus-url/kampus-github"; +import curriculumList, { Curriculum } from "../../curriculum-list"; import { type OdinLessonActions_path$key } from "./__generated__/OdinLessonActions_path.graphql"; +const getNextLesson = (currentTitle: string) => { + let currentCurriculumUrl = null; + let nextLessonUrl = null; + + for (let curriculumName in curriculumList) { + const curriculumItem = (curriculumList as { [key: string]: Curriculum })[curriculumName]; + if (curriculumItem) { + const lessons = (curriculumItem.sections || []).flatMap((section) => + section.lessons.map((lesson) => { + if (lesson.title === currentTitle) { + currentCurriculumUrl = `/odin/${curriculumItem.url}`; + } + return { + title: lesson.title, + url: lesson.url, + }; + }) + ); + + let currentLessonIndex = lessons.findIndex((lesson) => lesson.title === currentTitle); + + if (currentLessonIndex !== -1) { + while (lessons[currentLessonIndex + 1]?.url === "#") { + currentLessonIndex++; + } + nextLessonUrl = `${currentCurriculumUrl}/${lessons[currentLessonIndex + 1]?.url}`; + if (currentLessonIndex === lessons.length - 1) { + nextLessonUrl = null; + } + break; + } + } + } + + return { nextLessonUrl, currentCurriculumUrl }; +}; interface Props { lesson: OdinLessonActions_path$key | null; } @@ -25,16 +69,52 @@ export const OdinLessonActions = (props: Props) => { const contributionUrl = getOdinGithubEditUrl(lesson.path); const issueUrl = getOdinGithubIssueUrl({ title: lesson.title, path: lesson.path }); + const currentTitle = lesson.title; + + const { nextLessonUrl, currentCurriculumUrl } = getNextLesson(currentTitle); + return ( -
- -
+ + + + + + + Katkıda Bulunun + + + + + + Bir sorun bildir + + + + + + + + + {nextLessonUrl && ( + + + + )} + + + ); }; diff --git a/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonBody.tsx b/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonBody.tsx index c476475b..d0c7d6cc 100644 --- a/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonBody.tsx +++ b/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonBody.tsx @@ -1,5 +1,5 @@ import { graphql, useFragment } from "react-relay"; - +import { useEffect, useState } from 'react'; import { type OdinLessonBody_body$key } from "./__generated__/OdinLessonBody_body.graphql"; interface Props { @@ -18,11 +18,42 @@ const useOdinLessonBodyFragment = (key: OdinLessonBody_body$key | null) => export const OdinLessonBody = (props: Props) => { const body = useOdinLessonBodyFragment(props.body); + const [subtitles, setSubtitles] = useState<{ id: string, text: string }[]>([]); + + useEffect(() => { + if (body?.html) { + const parser = new DOMParser(); + const doc = parser.parseFromString(body.html, 'text/html'); + const h3Elements = doc.querySelectorAll('h3'); + const h3Texts = Array.from(h3Elements).map(h3 => ({ id: h3.id, text: h3.textContent || '' })); + setSubtitles(h3Texts); + } + }, [body?.html]); return ( -
+
+
+
+
+ +
+

Ders içeriği

+ +
    + {subtitles.map((subtitle, index) => ( +
  • +

    + {subtitle.text} +

    +
  • + ))} +
+
+
+
+ ); }; diff --git a/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonTitle.tsx b/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonTitle.tsx index c16b54e3..7f06bc6c 100644 --- a/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonTitle.tsx +++ b/apps/kampus/app/odin/temel-bilgiler-seruveni/[...lesson]/OdinLessonTitle.tsx @@ -2,6 +2,25 @@ import { graphql, useFragment } from "react-relay"; import { type OdinLessonTitle_title$key } from "./__generated__/OdinLessonTitle_title.graphql"; +import curriculumList, { Curriculum } from "../../curriculum-list"; + +const getCurrentCurriculum = (currentTitle: string): { name: string, url: string } | null => { + for (let curriculumName in curriculumList) { + const curriculumItem = (curriculumList as {[key: string]: Curriculum})[curriculumName]; + if (curriculumItem) { + for (let section of curriculumItem.sections) { + for (let lesson of section.lessons) { + if (lesson.title === currentTitle) { + return { name: curriculumItem.name, url: curriculumItem.url }; + } + } + } + } + } + return null; +}; + + interface Props { lesson: OdinLessonTitle_title$key | null; } @@ -18,6 +37,26 @@ const useOdinLessonTitleFragment = (key: OdinLessonTitle_title$key | null) => export const OdinLessonTitle = (props: Props) => { const lesson = useOdinLessonTitleFragment(props.lesson); + const currentTitle = lesson ? lesson.title : null; + + let currentCurriculumUrl = null; + let currentCurriculumName = null; + if (currentTitle) { + const currentCurriculum = getCurrentCurriculum(currentTitle); + currentCurriculumUrl = currentCurriculum?.url; + currentCurriculumName = currentCurriculum?.name; + } - return

{lesson?.title}

; + return
+
+ + Lesson Icon + +
+

{lesson?.title}

+ {currentCurriculumName} +
+
+
}; diff --git a/apps/kampus/app/odin/temel-bilgiler-seruveni/page.tsx b/apps/kampus/app/odin/temel-bilgiler-seruveni/page.tsx index ccd1ab9b..63244f79 100644 --- a/apps/kampus/app/odin/temel-bilgiler-seruveni/page.tsx +++ b/apps/kampus/app/odin/temel-bilgiler-seruveni/page.tsx @@ -4,22 +4,22 @@ import curriculumList from "../curriculum-list"; import { CurriculumSection } from "./CurriculumContent"; export default function TemelBilgilerSeruveni() { - const { description, sections } = curriculumList.foundationsCurriculum; + const temelBilgiler = curriculumList.foundationsCurriculum; return ( -
+
- Temel Bilgiler Serüveni + {temelBilgiler?.name} - {sections.length} bölüm + {temelBilgiler?.sections.length} bölüm - {description} - {sections.map((section, index) => { - return ; + {temelBilgiler?.description} + {temelBilgiler?.sections.map((section, sectionIndex) => { + return ; })} - +
- ); + ) }