diff --git a/Frontend-Learner/components/layout/AppHeader.vue b/Frontend-Learner/components/layout/AppHeader.vue
new file mode 100644
index 00000000..dc65c0ee
--- /dev/null
+++ b/Frontend-Learner/components/layout/AppHeader.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Frontend-Learner/components/layout/AppSidebar.vue b/Frontend-Learner/components/layout/AppSidebar.vue
new file mode 100644
index 00000000..edb71d2e
--- /dev/null
+++ b/Frontend-Learner/components/layout/AppSidebar.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
e-Learning v0.1.0
+
© 2026
+
+
+
+
+
diff --git a/Frontend-Learner/components/layout/LandingHeader.vue b/Frontend-Learner/components/layout/LandingHeader.vue
new file mode 100644
index 00000000..105f0718
--- /dev/null
+++ b/Frontend-Learner/components/layout/LandingHeader.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
diff --git a/Frontend-Learner/components/layout/MobileNav.vue b/Frontend-Learner/components/layout/MobileNav.vue
new file mode 100644
index 00000000..e61c6ed3
--- /dev/null
+++ b/Frontend-Learner/components/layout/MobileNav.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
diff --git a/Frontend-Learner/composables/useThemeMode.ts b/Frontend-Learner/composables/useThemeMode.ts
index c7fa778a..ec01317a 100644
--- a/Frontend-Learner/composables/useThemeMode.ts
+++ b/Frontend-Learner/composables/useThemeMode.ts
@@ -13,17 +13,7 @@ export const useThemeMode = () => {
localStorage.setItem('theme', value ? 'dark' : 'light')
}
- const initTheme = () => {
- if (!process.client) return
- const saved = localStorage.getItem('theme') // 'dark' | 'light' | null
- const prefersDark = window.matchMedia?.('(prefers-color-scheme: dark)')?.matches ?? false
- const value = saved ? saved === 'dark' : prefersDark
- isDark.value = value
- applyTheme(value)
- }
-
- onMounted(initTheme)
watch(isDark, (v) => applyTheme(v))
diff --git a/Frontend-Learner/pages/browse/discovery.vue b/Frontend-Learner/pages/browse/discovery.vue
index 24762653..5b784688 100644
--- a/Frontend-Learner/pages/browse/discovery.vue
+++ b/Frontend-Learner/pages/browse/discovery.vue
@@ -283,15 +283,15 @@ onMounted(() => {
-
-
+
+
{{ $t('course.courseContent') }}
-
-
-
+
+
+
Chapter {{ Number(index) + 1 }}
{{ getLocalizedText(chapter.title) }}
@@ -300,13 +300,13 @@ onMounted(() => {
-
-
+
+
-
+
{{ Number(lIndex) + 1 }}
-
{{ getLocalizedText(lesson.title) }}
+
{{ getLocalizedText(lesson.title) }}
{{ lesson.duration_minutes || 0 }}:00
diff --git a/Frontend-Learner/pages/browse/opencovery.vue b/Frontend-Learner/pages/browse/opencovery.vue
deleted file mode 100644
index df486d9e..00000000
--- a/Frontend-Learner/pages/browse/opencovery.vue
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- กลับหน้ารายการคอร์ส
-
-
-
-
-
-
-
-
-
-
{{ course.title }}
-
- {{ course.description }}
-
-
-
-
-
สิ่งที่คุณจะได้เรียนรู้
-
-
-
-
-
-
เนื้อหาในคอร์ส
-
-
-
- {{ chapter.title }}
- {{ chapter.lessonCount }} บทเรียน
-
-
-
-
- 🎥 {{ lesson.title }}
-
- {{ lesson.duration }}
-
-
-
-
-
-
-
-
-
-
-
- {{ course.originalPrice }}
- {{ course.price }}
-
-
-
- ลงทะเบียนเรียนทันที
-
-
-
-
- ระยะเวลาเรียน
- {{ course.duration }}
-
-
- จำนวนบทเรียน
- {{ course.lessons }} บท
-
-
- ใบประกาศนียบัตร
- {{ course.certificate ? 'มี' : 'ไม่มี' }}
-
-
- ระดับ
- เหมาะสำหรับทุกคน
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Frontend-Learner/pages/classroom/learning.vue b/Frontend-Learner/pages/classroom/learning.vue
index e751a930..936bdd92 100644
--- a/Frontend-Learner/pages/classroom/learning.vue
+++ b/Frontend-Learner/pages/classroom/learning.vue
@@ -255,7 +255,7 @@ onBeforeUnmount(() => {
{{ $t('classroom.backToDashboard') }}
-
+
{{ courseData ? getLocalizedText(courseData.course.title) : $t('classroom.loadingTitle') }}
@@ -279,7 +279,7 @@ onBeforeUnmount(() => {