├── src
├── style.css
├── postcss.config.js
├── assets
│ ├── vue.svg
│ └── main.css
├── stores
│ └── theme.js
├── store
│ └── index.js
├── App.vue
├── components
│ ├── HelloWorld.vue
│ ├── HeaderComponent.vue
│ └── FooterComponent.vue
├── views
│ ├── AboutView.vue
│ ├── ProjectsView.vue
│ ├── ContactView.vue
│ ├── Homeview.vue
│ ├── StudentsView.vue
│ ├── BlogView.vue
│ ├── AchievementsVIew.vue
│ ├── CoursesView.vue
│ ├── ScheduleView.vue
│ └── QAView.vue
├── router
│ └── index.js
└── main.js
├── .vscode
└── extensions.json
├── postcss.config.js
├── .gitignore
├── README.md
├── package.json
├── vite.config.js
├── public
└── vite.svg
├── index.html
└── tailwind.config.js
/src/style.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar"]
3 | }
4 |
--------------------------------------------------------------------------------
/src/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Vue 3 + Vite
2 |
3 | This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `
26 |
27 |
38 |
--------------------------------------------------------------------------------
/src/components/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 | {{ msg }}
13 |
14 |
15 |
16 |
17 | Edit
18 | components/HelloWorld.vue to test HMR
19 |
20 |
21 |
22 |
23 | Check out
24 | create-vue, the official Vue + Vite starter
27 |
28 |
29 | Learn more about IDE Support for Vue in the
30 | Vue Docs Scaling up Guide.
35 |
36 | Click on the Vite and Vue logos to learn more
37 |
38 |
39 |
44 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | // import { defineConfig } from 'vite'
2 | // import vue from '@vitejs/plugin-vue'
3 |
4 | // // https://vite.dev/config/
5 | // export default defineConfig({
6 | // plugins: [vue()],
7 | // })
8 |
9 |
10 |
11 |
12 | import { defineConfig } from 'vite'
13 | import vue from '@vitejs/plugin-vue'
14 | import path from 'path'
15 |
16 | export default defineConfig({
17 | plugins: [vue()],
18 | resolve: {
19 | alias: {
20 | '@': path.resolve(__dirname, './src'),
21 | },
22 | },
23 | server: {
24 | port: 3000,
25 | open: true,
26 | cors: true
27 | },
28 | build: {
29 | outDir: 'dist',
30 | assetsDir: 'assets',
31 | minify: 'terser',
32 | terserOptions: {
33 | compress: {
34 | drop_console: true,
35 | drop_debugger: true,
36 | },
37 | },
38 | rollupOptions: {
39 | output: {
40 | manualChunks: {
41 | 'vendor': ['vue', 'vue-router', 'pinia'],
42 | 'ui': ['@vueuse/core', '@vueuse/motion'],
43 | }
44 | }
45 | }
46 | }
47 | })
--------------------------------------------------------------------------------
/src/views/AboutView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Men haqimda
7 |
Professional o'qituvchi va dasturchi
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHistory } from "vue-router"
2 |
3 |
4 | const routes = [
5 | {
6 | path: "/",
7 | name: "home",
8 | component: () => import("../views/Homeview.vue"),
9 | },
10 | {
11 | path: "/achievements",
12 | name: "achievements",
13 | component: () => import("../views/AchievementsView.vue"),
14 | },
15 | {
16 | path: "/students",
17 | name: "students",
18 | component: () => import("../views/StudentsView.vue"),
19 | },
20 | {
21 | path: "/courses",
22 | name: "courses",
23 | component: () => import("../views/CoursesView.vue"),
24 | },
25 | {
26 | path: "/blog",
27 | name: "blog",
28 | component: () => import("../views/BlogView.vue"),
29 | },
30 | {
31 | path: "/schedule",
32 | name: "schedule",
33 | component: () => import("../views/ScheduleView.vue"),
34 | },
35 | {
36 | path: "/qa",
37 | name: "qa",
38 | component: () => import("../views/QAView.vue"),
39 | },
40 | {
41 | path: "/contact",
42 | name: "contact",
43 | component: () => import("../views/ContactView.vue"),
44 | },
45 | ]
46 |
47 | const router = createRouter({
48 | history: createWebHistory(import.meta.env.BASE_URL),
49 | routes,
50 | scrollBehavior() {
51 | return { top: 0 }
52 | },
53 | })
54 |
55 | export default router
56 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | AzamjonBro Portfolio
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/src/views/ProjectsView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Loyihalar
6 |
Mening eng yaxshi ishlarim
7 |
8 |
9 |
10 |
11 |
![]()
12 |
13 |
{{ project.title }}
14 |
{{ project.description }}
15 |
16 |
17 | {{ tech }}
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | const defaultConfig = require("shadcn/ui/tailwind.config")
3 |
4 | module.exports = {
5 | ...defaultConfig,
6 | content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}", "*.{js,ts,jsx,tsx,mdx}"],
7 | theme: {
8 | ...defaultConfig.theme,
9 | extend: {
10 | ...defaultConfig.theme.extend,
11 | colors: {
12 | ...defaultConfig.theme.extend.colors,
13 | primary: {
14 | ...defaultConfig.theme.extend.colors.primary,
15 | 50: "#eff6ff",
16 | 100: "#dbeafe",
17 | 200: "#bfdbfe",
18 | 300: "#93c5fd",
19 | 400: "#60a5fa",
20 | 500: "#3b82f6",
21 | 600: "#2563eb",
22 | 700: "#1d4ed8",
23 | 800: "#1e40af",
24 | 900: "#1e3a8a",
25 | },
26 | secondary: {
27 | ...defaultConfig.theme.extend.colors.secondary,
28 | 50: "#f0fdfa",
29 | 100: "#ccfbf1",
30 | 200: "#99f6e4",
31 | 300: "#5eead4",
32 | 400: "#2dd4bf",
33 | 500: "#14b8a6",
34 | 600: "#0d9488",
35 | 700: "#0f766e",
36 | 800: "#115e59",
37 | 900: "#134e4a",
38 | },
39 | accent: {
40 | ...defaultConfig.theme.extend.colors.accent,
41 | 50: "#f5f3ff",
42 | 100: "#ede9fe",
43 | 200: "#ddd6fe",
44 | 300: "#c4b5fd",
45 | 400: "#a78bfa",
46 | 500: "#8b5cf6",
47 | 600: "#7c3aed",
48 | 700: "#6d28d9",
49 | 800: "#5b21b6",
50 | 900: "#4c1d95",
51 | 950: "#3b0764",
52 | },
53 | destructive: {
54 | DEFAULT: "hsl(var(--destructive))",
55 | foreground: "hsl(var(--destructive-foreground))",
56 | },
57 | muted: {
58 | DEFAULT: "hsl(var(--muted))",
59 | foreground: "hsl(var(--muted-foreground))",
60 | },
61 | popover: {
62 | DEFAULT: "hsl(var(--popover))",
63 | foreground: "hsl(var(--popover-foreground))",
64 | },
65 | card: {
66 | DEFAULT: "hsl(var(--card))",
67 | foreground: "hsl(var(--card-foreground))",
68 | },
69 | },
70 | fontFamily: {
71 | sans: ["Montserrat", "sans-serif"],
72 | },
73 | boxShadow: {
74 | custom: "0 4px 20px -2px rgba(0, 0, 0, 0.1)",
75 | },
76 | animation: {
77 | "pulse-slow": "pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite",
78 | },
79 | },
80 | },
81 | plugins: [
82 | ...defaultConfig.plugins,
83 | require("@tailwindcss/typography"),
84 | require("@tailwindcss/forms"),
85 | require("tailwindcss-animate"),
86 | ],
87 | }
88 |
--------------------------------------------------------------------------------
/src/views/ContactView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Bog'lanish
7 |
Savollaringiz bo'lsa, menga xabar yuboring
8 |
9 |
10 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/HeaderComponent.vue:
--------------------------------------------------------------------------------
1 |
2 |
52 |
53 |
54 |
99 |
100 |
106 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from "vue"
2 | import { createPinia } from "pinia"
3 | import App from "./App.vue"
4 | import router from "./router"
5 | import { createI18n } from "vue-i18n"
6 | // import "./assets/main.css"
7 |
8 | // Tarjimalar
9 | const messages = {
10 | uz: {
11 | nav: {
12 | home: "Bosh sahifa",
13 | achievements: "Yutuqlar",
14 | students: "O'quvchilar",
15 | courses: "Kurslar",
16 | blog: "Blog",
17 | schedule: "Jadval",
18 | qa: "Savol-javob",
19 | contact: "Bog'lanish",
20 | },
21 | home: {
22 | hero: {
23 | title: "Zamonaviy ta'lim, zamonaviy yondashuv",
24 | subtitle: "Dasturlash va web-dizayn bo'yicha professional ta'lim",
25 | coursesButton: "Kurslarni ko'rish",
26 | contactButton: "Bog'lanish",
27 | },
28 | about: {
29 | title: "Men haqimda",
30 | description:
31 | "Professional o'qituvchi va dasturchi sifatida 10 yildan ortiq tajribaga egaman. Mening maqsadim - o'quvchilarni zamonaviy texnologiyalar bilan tanishtirish va ularga amaliy ko'nikmalarni o'rgatish.",
32 | readMoreButton: "Ko'proq o'qish",
33 | stats: {
34 | yearsExperience: "yillik tajriba",
35 | studentsCount: "o'quvchilar",
36 | coursesCount: "kurslar",
37 | awardsCount: "mukofotlar",
38 | },
39 | },
40 | courses: {
41 | title: "Mashhur kurslar",
42 | subtitle: "Eng ko'p talab qilinadigan va yuqori baholanadigan kurslarimiz",
43 | detailsButton: "Batafsil",
44 | allCoursesButton: "Barcha kurslar",
45 | },
46 | testimonials: {
47 | title: "O'quvchilar fikrlari",
48 | subtitle: "Bizning o'quvchilarimiz nima deyishadi",
49 | },
50 | cta: {
51 | title: "Karyerangizni bugun boshlang",
52 | description: "Zamonaviy dasturlash ko'nikmalarini o'rganing va IT sohasida muvaffaqiyatga erishing",
53 | button: "Ro'yxatdan o'tish",
54 | },
55 | },
56 | schedule: {
57 | title: "Dars jadvali",
58 | subtitle: "Joriy va kelgusi darslar jadvali",
59 | currentTime: "Hozirgi vaqt",
60 | currentClass: "Joriy dars",
61 | noCurrentClass: "Hozirda dars yo'q",
62 | weeklySchedule: "Haftalik jadval",
63 | time: "Vaqt",
64 | upcomingClasses: "Kelgusi darslar",
65 | class: "Dars",
66 | consultation: "Konsultatsiya",
67 | addToCalendar: "Taqvimga qo'shish",
68 | },
69 | students: {
70 | title: "O'quvchilar",
71 | subtitle: "Mening eng yaxshi o'quvchilarim va ularning yutuqlari",
72 | successMap: {
73 | title: "Muvaffaqiyat xaritasi",
74 | },
75 | testimonials: {
76 | title: "O'quvchilar fikrlari",
77 | },
78 | },
79 | courses: {
80 | title: "Kurslar",
81 | subtitle: "Barcha mavjud kurslar va o'quv dasturlari",
82 | categories: {
83 | all: "Barchasi",
84 | programming: "Dasturlash",
85 | design: "Dizayn",
86 | frontend: "Frontend",
87 | backend: "Backend",
88 | },
89 | paid: "Pullik",
90 | free: "Bepul",
91 | viewButton: "Ko'rish",
92 | youtube: {
93 | title: "YouTube darslari",
94 | viewAllButton: "Barcha videolarni ko'rish",
95 | },
96 | downloads: {
97 | title: "Yuklab olish uchun materiallar",
98 | downloadButton: "Yuklab olish",
99 | },
100 | },
101 | blog: {
102 | title: "Blog",
103 | subtitle: "Eng so'nggi maqolalar va yangiliklar",
104 | featured: "Tavsiya etilgan",
105 | readMore: "Ko'proq o'qish",
106 | searchPlaceholder: "Maqolalarni qidirish...",
107 | },
108 | achievements: {
109 | title: "Yutuqlar",
110 | subtitle: "Mening professional yutuqlarim va sertifikatlarim",
111 | tabs: {
112 | certificates: "Sertifikatlar",
113 | courses: "O'tilgan kurslar",
114 | awards: "Mukofotlar",
115 | },
116 | verifyButton: "Tekshirish",
117 | },
118 | },
119 | en: {
120 | nav: {
121 | home: "Home",
122 | achievements: "Achievements",
123 | students: "Students",
124 | courses: "Courses",
125 | blog: "Blog",
126 | schedule: "Schedule",
127 | qa: "Q&A",
128 | contact: "Contact",
129 | },
130 | // You can expand English content as needed
131 | },
132 | ru: {
133 | nav: {
134 | home: "Главная",
135 | achievements: "Достижения",
136 | students: "Студенты",
137 | courses: "Курсы",
138 | blog: "Блог",
139 | schedule: "Расписание",
140 | qa: "Вопросы",
141 | contact: "Контакты",
142 | },
143 | // You can expand Russian content as needed
144 | },
145 | }
146 |
147 | // Tilni tekshirish
148 | const supportedLanguages = ["uz", "en", "ru"]
149 | const savedLang = localStorage.getItem("language")
150 | const locale = supportedLanguages.includes(savedLang) ? savedLang : "uz"
151 |
152 | // i18n sozlamasi
153 | const i18n = createI18n({
154 | legacy: false,
155 | locale,
156 | fallbackLocale: "uz",
157 | messages,
158 | })
159 |
160 | // Vue ilovasini yaratish
161 | const app = createApp(App)
162 | const pinia = createPinia()
163 |
164 | app.use(router)
165 | app.use(pinia)
166 | app.use(i18n)
167 |
168 | app.mount("#app")
169 |
--------------------------------------------------------------------------------
/src/components/FooterComponent.vue:
--------------------------------------------------------------------------------
1 |
2 |
87 |
88 |
89 |
95 |
--------------------------------------------------------------------------------
/src/views/Homeview.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
![Background]()
8 |
9 |
10 |
11 |
14 |
{{ $t('home.hero.title') }}
15 |
{{ $t('home.hero.subtitle') }}
16 |
17 |
18 | {{ $t('home.hero.coursesButton') }}
19 |
20 |
21 | {{ $t('home.hero.contactButton') }}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
41 |
![Teacher]()
42 |
43 |
44 |
47 |
{{ $t('home.about.title') }}
48 |
{{ $t('home.about.description') }}
49 |
50 |
51 |
{{ stat.value }}
52 |
{{ $t(stat.label) }}
53 |
54 |
55 |
56 | {{ $t('home.about.readMoreButton') }}
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
70 |
{{ $t('home.courses.title') }}
71 |
{{ $t('home.courses.subtitle') }}
72 |
73 |
74 |
75 |
78 |
79 |
![]()
80 |
81 |
82 |
{{ course.title }}
83 |
84 | {{ course.category }}
85 |
86 |
87 |
{{ course.description }}
88 |
89 |
90 |
91 | {{ course.duration }}
92 |
93 |
94 | {{ $t('home.courses.detailsButton') }}
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 | {{ $t('home.courses.allCoursesButton') }}
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
115 |
{{ $t('home.testimonials.title') }}
116 |
{{ $t('home.testimonials.subtitle') }}
117 |
118 |
119 |
120 |
121 |
122 |
![Student]()
123 |
124 |
125 | "Bu o'qituvchi mening karyeramni butunlay o'zgartirdi. Men olgan bilim va yo'naltirish juda qimmatli edi."
126 |
127 |
Aziz Karimov
128 |
IT Park dasturchi
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
139 |
{{ $t('home.cta.title') }}
140 |
{{ $t('home.cta.description') }}
141 |
142 | {{ $t('home.cta.button') }}
143 |
144 |
145 |
146 |
147 |
148 |
149 |
194 |
--------------------------------------------------------------------------------
/src/views/StudentsView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{ $t('students.title') }}
6 |
{{ $t('students.subtitle') }}
7 |
8 |
9 |
10 |
11 |
18 |
19 |
![]()
20 |
21 |
22 |
{{ student.name }}
23 |
{{ student.position }}
24 |
25 |
26 |
27 |
28 |
29 |
30 | {{ student.company }}
31 |
32 |
33 |
34 | {{ student.education }}
35 |
36 |
{{ student.teacherNote }}
37 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
{{ $t('students.successMap.title') }}
55 |
56 |

57 |
58 |
65 |
66 |
67 |
68 |
69 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
{{ $t('students.testimonials.title') }}
84 |
85 |
86 |
93 |
94 |
95 |
![]()
96 |
97 |
98 |
{{ testimonial.name }}
99 |
{{ testimonial.position }}
100 |
101 |
102 |
103 |
104 |
105 |
{{ testimonial.text }}
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
232 |
233 |
--------------------------------------------------------------------------------
/src/views/BlogView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{ $t('blog.title') }}
6 |
{{ $t('blog.subtitle') }}
7 |
8 |
9 |
10 |
11 |
12 |
18 |
19 |
20 |
21 |
22 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
![]()
43 |
44 |
45 |
46 |
47 | {{ $t('blog.featured') }}
48 |
49 |
50 |
{{ featuredPost.title }}
51 |
{{ featuredPost.excerpt }}
52 |
53 |
54 |
![]()
55 |
56 |
{{ featuredPost.author.name }}
57 |
{{ featuredPost.date }}
58 |
59 |
60 |
61 | {{ $t('blog.readMore') }}
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
78 |
![]()
79 |
80 |
81 |
85 | #{{ tag }}
86 |
87 |
88 |
{{ post.title }}
89 |
{{ post.excerpt }}
90 |
91 |
92 |
![]()
93 |
{{ post.date }}
94 |
95 |
96 | {{ $t('blog.readMore') }}
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
133 |
134 |
135 |
136 |
137 |
138 |
--------------------------------------------------------------------------------
/src/views/AchievementsVIew.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{ $t('achievements.title') }}
6 |
{{ $t('achievements.subtitle') }}
7 |
8 |
9 |
10 |
11 |
23 |
24 |
25 |
26 |
48 |
49 |
50 |
73 |
74 |
75 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
108 |
109 |
110 |
![]()
111 |
112 |
113 |
114 |
{{ selectedItem.title }}
115 |
116 |
117 |
118 |
119 |
120 | {{ selectedItem.issuer || selectedItem.presenter || selectedItem.location }}
121 |
122 |
123 |
124 |
125 |
126 | {{ selectedItem.date }}
127 |
128 |
129 |
130 |
131 | {{ selectedItem.students }} students
132 |
133 |
134 |
135 |
{{ selectedItem.description }}
136 |
137 |
138 |
Skills Covered:
139 |
140 |
144 | {{ skill }}
145 |
146 |
147 |
148 |
149 |
154 | {{ $t('achievements.verifyButton') }}
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
298 |
299 |
--------------------------------------------------------------------------------
/src/views/CoursesView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{ $t('courses.title') }}
6 |
{{ $t('courses.subtitle') }}
7 |
8 |
9 |
10 |
11 |
23 |
24 |
25 |
26 |
27 |
34 |
35 |
![]()
36 |
37 |
44 | {{ course.isPaid ? $t('courses.paid') : $t('courses.free') }}
45 |
46 |
47 |
48 |
49 |
50 |
51 |
{{ course.title }}
52 |
53 | {{ course.category }}
54 |
55 |
56 |
57 |
{{ course.description }}
58 |
59 |
60 |
61 |
62 | {{ course.duration }}
63 |
64 |
65 |
66 | {{ course.lessons }} lessons
67 |
68 |
69 |
70 | {{ course.students }} students
71 |
72 |
73 |
74 | {{ course.rating }} ({{ course.reviews }})
75 |
76 |
77 |
78 |
79 | {{ course.price }}
80 | {{ $t('courses.free') }}
81 |
82 |
83 | {{ $t('courses.viewButton') }}
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
{{ $t('courses.youtube.title') }}
93 |
94 |
95 |
102 |
103 |
![]()
104 |
109 |
110 |
111 |
112 |
{{ video.title }}
113 |
114 | {{ video.views }} views
115 | {{ video.date }}
116 |
117 |
118 |
119 |
120 |
121 |
127 |
128 |
129 |
130 |
131 |
{{ $t('courses.downloads.title') }}
132 |
133 |
134 |
141 |
142 |
143 |
144 |
145 |
146 |
{{ download.title }}
147 |
{{ download.size }}
148 |
149 |
150 |
151 |
{{ download.description }}
152 |
153 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
--------------------------------------------------------------------------------
/src/views/ScheduleView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{ $t('schedule.title') }}
6 |
{{ $t('schedule.subtitle') }}
7 |
8 |
9 |
10 |
11 |
12 |
{{ $t('schedule.currentTime') }}
13 |
{{ currentTime }}
14 |
15 |
16 |
17 |
{{ $t('schedule.currentClass') }}
18 |
{{ currentClass.title }}
19 |
{{ currentClass.time }}
20 |
21 |
22 |
23 |
{{ $t('schedule.currentClass') }}
24 |
{{ $t('schedule.noCurrentClass') }}
25 |
26 |
27 |
28 |
29 |
30 |
31 |
{{ $t('schedule.weeklySchedule') }}
32 |
33 |
34 |
39 | {{ weekRange }}
40 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | {{ $t('schedule.time') }}
55 |
56 |
60 | {{ time }}
61 |
62 |
63 |
64 |
65 |
69 |
72 |
{{ day.name }}
73 |
{{ formatDate(day.date) }}
74 |
75 |
76 |
77 |
81 |
82 |
83 |
94 |
{{ event.title }}
95 |
{{ event.startTime }} - {{ event.endTime }}
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
{{ $t('schedule.upcomingClasses') }}
107 |
108 |
109 |
116 |
117 |
118 |
{{ event.title }}
119 |
126 | {{ event.type === 'class' ? $t('schedule.class') : $t('schedule.consultation') }}
127 |
128 |
129 |
130 |
131 |
132 | {{ formatFullDate(event.date) }}
133 |
134 |
135 |
136 |
137 | {{ event.startTime }} - {{ event.endTime }}
138 |
139 |
140 |
141 |
142 | {{ event.location }}
143 |
144 |
145 |
{{ event.description }}
146 |
147 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
--------------------------------------------------------------------------------
/src/views/QAView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
32 |
33 |
36 |
37 |
38 |
47 |
48 |
49 |
Bu javob foydali bo'ldimi?
50 |
51 |
54 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
Ko'p so'raladigan savollar
65 |
66 |
67 |
72 |
73 |
74 | {{ q.question }}
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
Savollar kategoriyalari
83 |
84 |
85 |
89 |
90 |
94 |
95 |
{{ category.description }}
96 |
97 |
98 | -
99 |
100 | {{ item }}
101 |
102 |
103 |
104 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
213 |
214 |
--------------------------------------------------------------------------------