@@ -132,21 +177,30 @@ import { onMounted, ref } from 'vue'
import { RouterLink } from 'vue-router'
import ContactInquiryForm from '@/components/ContactInquiryForm.vue'
import { coursesApi } from '@/api/coursesApi'
+import { classesApi } from '@/api/classesApi'
import { useAuthStore } from '@/stores/authStore'
-import { formatPrice, toPersianDigits } from '@/utils/format'
+import { formatPrice, formatJalali, formatDaysUntilStart, toPersianDigits } from '@/utils/format'
const auth = useAuthStore()
const courses = ref([])
+const classes = ref([])
const coursesLoading = ref(true)
+const classesLoading = ref(true)
onMounted(async () => {
try {
- const res = await coursesApi.getAll({ limit: 50, sort: '-createdAt' })
- courses.value = res.data || []
+ const [coursesRes, classesRes] = await Promise.all([
+ coursesApi.getAll({ limit: 50, sort: '-createdAt' }),
+ classesApi.getAll({ limit: 50 })
+ ])
+ courses.value = coursesRes.data || []
+ classes.value = classesRes.data || []
} catch {
courses.value = []
+ classes.value = []
} finally {
coursesLoading.value = false
+ classesLoading.value = false
}
})
@@ -396,6 +450,22 @@ onMounted(async () => {
color: var(--ink-soft);
}
+.price-stack {
+ display: flex;
+ flex-direction: column;
+ gap: 0.15rem;
+}
+
+.price-old {
+ font-size: 0.82rem;
+ color: var(--ink-soft);
+ text-decoration: line-through;
+}
+
+.classes-section {
+ background: var(--chalk);
+}
+
.course-cta {
display: inline-flex;
margin-top: 0.85rem;