diff --git a/Frontend-Learner/assets/css/main.css b/Frontend-Learner/assets/css/main.css
index db18a4fb..960858a7 100644
--- a/Frontend-Learner/assets/css/main.css
+++ b/Frontend-Learner/assets/css/main.css
@@ -27,7 +27,7 @@
/* Typography */
/* Typography */
--font-main:
- "Prompt", "Sarabun", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI",
+ "Prompt", "Inter", "Sarabun", -apple-system, BlinkMacSystemFont, "Segoe UI",
"Roboto", "Helvetica Neue", Arial, sans-serif;
/* Layout */
@@ -634,6 +634,7 @@ ul {
}
.font-bold {
font-weight: 700;
+ letter-spacing: normal;
}
.w-full {
width: 100%;
diff --git a/Frontend-Learner/components/layout/AppHeader.vue b/Frontend-Learner/components/layout/AppHeader.vue
index b8ef5613..ab1444d8 100644
--- a/Frontend-Learner/components/layout/AppHeader.vue
+++ b/Frontend-Learner/components/layout/AppHeader.vue
@@ -69,15 +69,7 @@ const searchText = ref('')
-
-
-
-
-
-
- 2
-
diff --git a/Frontend-Learner/components/layout/LandingFooter.vue b/Frontend-Learner/components/layout/LandingFooter.vue
new file mode 100644
index 00000000..ac3ed521
--- /dev/null
+++ b/Frontend-Learner/components/layout/LandingFooter.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
diff --git a/Frontend-Learner/components/layout/LandingHeader.vue b/Frontend-Learner/components/layout/LandingHeader.vue
index 19ad4d27..ee6d8fd9 100644
--- a/Frontend-Learner/components/layout/LandingHeader.vue
+++ b/Frontend-Learner/components/layout/LandingHeader.vue
@@ -3,22 +3,35 @@
* @file LandingHeader.vue
* @description The main header for the public landing pages.
* Features a transparent background that becomes solid/glass upon scrolling.
+ * Responsive: Collapses into a drawer on mobile (md breakpoint).
*/
// Track scrolling state to adjust header styling
const isScrolled = ref(false)
const { isAuthenticated } = useAuth()
+// Mobile Drawer State
+const mobileMenuOpen = ref(false)
const handleScroll = () => {
isScrolled.value = window.scrollY > 20
}
+// Lock body scroll when mobile menu is open
+watch(mobileMenuOpen, (isOpen) => {
+ if (isOpen) {
+ document.body.style.overflow = 'hidden'
+ } else {
+ document.body.style.overflow = ''
+ }
+})
+
onMounted(() => {
window.addEventListener('scroll', handleScroll)
})
onUnmounted(() => {
window.removeEventListener('scroll', handleScroll)
+ document.body.style.overflow = '' // Cleanup
})
@@ -28,139 +41,180 @@ onUnmounted(() => {
- Transitions between transparent and glass effect based on scroll.
-->
-
-
-
-
-
-
- E
-
-
-
- E-Learning
-
-
- Platform
-
-
+
+
+
+
+ E
+
+
+
+ E-Learning
+
+
+ Platform
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
{{ $t('auth.login') }}
-
+
+
+
{{ $t('auth.getStarted') }}
+
-
+
{{ $t('landing.goToDashboard') }}
+
+
+
+
+
+
+
+
+
diff --git a/Frontend-Learner/error.vue b/Frontend-Learner/error.vue
index 4d957a3b..75540c71 100644
--- a/Frontend-Learner/error.vue
+++ b/Frontend-Learner/error.vue
@@ -86,7 +86,7 @@ const handleError = () => {
background-color: var(--bg-body);
color: var(--text-main);
padding: 24px;
- font-family: 'Inter', 'Prompt', 'Sarabun', sans-serif;
+ font-family: var(--font-main);
}
.error-content {
diff --git a/Frontend-Learner/layouts/default.vue b/Frontend-Learner/layouts/default.vue
index 42ef7e83..8bd52170 100644
--- a/Frontend-Learner/layouts/default.vue
+++ b/Frontend-Learner/layouts/default.vue
@@ -53,6 +53,6 @@ const toggleLeftDrawer = () => {
diff --git a/Frontend-Learner/layouts/landing.vue b/Frontend-Learner/layouts/landing.vue
index c05167bf..75e90c7e 100644
--- a/Frontend-Learner/layouts/landing.vue
+++ b/Frontend-Learner/layouts/landing.vue
@@ -36,6 +36,9 @@ onMounted(() => {
+
+
+
diff --git a/Frontend-Learner/nuxt.config.ts b/Frontend-Learner/nuxt.config.ts
index b3079964..ed929816 100644
--- a/Frontend-Learner/nuxt.config.ts
+++ b/Frontend-Learner/nuxt.config.ts
@@ -69,7 +69,7 @@ export default defineNuxtConfig({
{
rel: "stylesheet",
// โหลด Font: Inter, Prompt, Sarabun
- href: "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Prompt:wght@300;400;500;600;700;800;900&family=Sarabun:wght@300;400;500;600;700;800&display=swap",
+ href: "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Prompt:wght@300;400;500;600;700;800;900&family=Sarabun:wght@300;400;500;600;700;800&family=Poppins:wght@300;400;500;600;700;800;900&display=swap",
},
],
},
diff --git a/Frontend-Learner/pages/dashboard/index.vue b/Frontend-Learner/pages/dashboard/index.vue
index 08ba4d77..191c62b8 100644
--- a/Frontend-Learner/pages/dashboard/index.vue
+++ b/Frontend-Learner/pages/dashboard/index.vue
@@ -91,17 +91,7 @@ const sideCourses = computed(() => enrolledCourses.value.slice(1, 3))
-
-
-
-
- สวัสดี {{ currentUser?.firstName || 'User' }} 😊
-
-
- เข้าถึง +490 หลักสูตรออนไลน์สำหรับสมาชิกรายปี เพื่อบรรลุเป้าหมายด้านอาชีพและพัฒนาการเรียนรู้สำหรับคุณ ✨
-
-
-
+
@@ -109,8 +99,8 @@ const sideCourses = computed(() => enrolledCourses.value.slice(1, 3))
เรียนต่อกับคอร์สของคุณ
-
- การเรียนของฉัน
+
+ คอร์สเรียนของฉัน
@@ -120,20 +110,19 @@ const sideCourses = computed(() => enrolledCourses.value.slice(1, 3))
-
COURSE
+
COURSE
{{ getLocalizedText(heroCourse.title) }}
-
-
{{ heroCourse.completed_lessons }}/{{ heroCourse.total_lessons }} บทเรียน
+
{{ heroCourse.progress }}%
- เรียนต่อ
+ {{ heroCourse.progress === 100 ? 'เรียนอีกครั้ง' : 'เรียนต่อ' }}
@@ -150,11 +139,10 @@ const sideCourses = computed(() => enrolledCourses.value.slice(1, 3))
-
-
{{ course.completed_lessons }}/{{ course.total_lessons }} บทเรียน
-
เรียนต่อ
+
+ {{ course.progress === 100 ? 'เรียนอีกครั้ง' : 'เรียนต่อ' }}
@@ -174,7 +162,8 @@ const sideCourses = computed(() => enrolledCourses.value.slice(1, 3))
คุณสามารถเลือกเรียนคอร์สเรียนที่คุณเป็นเจ้าของ
-
+
+
enrolledCourses.value.slice(1, 3))
flat
rounded
no-caps
- class="text-purple-600 hover:bg-purple-50 px-6 py-2 font-bold group-hover:scale-105 transition-transform"
+ class="text-blue-600 hover:bg-blue-50 px-6 py-2 font-bold group-hover:scale-105 transition-transform"
to="/dashboard/my-courses"
>
ดูทั้งหมด
+
+
+
+
+
+
+
ยังไม่มีคอร์สเรียนในคลัง
+
เริ่มเรียนรู้สิ่งใหม่ๆ วันนี้ เลือกดูคอร์สเรียนที่น่าสนใจเพื่อพัฒนาทักษะของคุณ
+
+ ดูคอร์สเรียนทั้งหมด
+
+
diff --git a/Frontend-Learner/pages/index.vue b/Frontend-Learner/pages/index.vue
index 1e4026d7..de7ea2e6 100644
--- a/Frontend-Learner/pages/index.vue
+++ b/Frontend-Learner/pages/index.vue
@@ -121,7 +121,7 @@ onMounted(() => {
E-Learning Platform
-
+
คอร์สเรียนออนไลน์
เพิ่มทักษะยุคดิจิทัล
@@ -176,7 +176,7 @@ onMounted(() => {
-
+
เพราะ “ก้าวแรก” ของการพัฒนาตัวเอง ท้าทายเสมอ
@@ -184,27 +184,31 @@ onMounted(() => {
-
+