Dynavera/src/views/TrainingModule.vue

72 lines
1.8 KiB
Vue
Raw Normal View History

2025-11-26 22:46:25 +00:00
<script setup lang="ts">
import { ref } from 'vue';
2025-12-17 14:47:51 +00:00
import { Card, Typography, Row, Col, Tag, Button } from 'ant-design-vue';
2025-11-26 22:46:25 +00:00
const lessons = ref([
2025-12-17 14:47:51 +00:00
{
id: 'l1',
title: 'Getting Started',
summary: 'Overview of the codebase and conventions.',
type: 'Video',
},
{
id: 'l2',
title: 'Core Concepts',
summary: 'Key patterns and architecture.',
type: 'Article',
},
{
id: 'l3',
title: 'Hands-on Lab',
summary: 'Small task to practice.',
type: 'Practical',
},
2025-11-26 22:46:25 +00:00
]);
</script>
<template>
2025-12-17 14:47:51 +00:00
<div class="page">
<Typography.Title :level="2">Training Module</Typography.Title>
<Typography.Paragraph type="secondary"
>Interactive module with lessons and
checkpoints.</Typography.Paragraph
>
2025-11-26 22:46:25 +00:00
2025-12-17 14:47:51 +00:00
<Row :gutter="16">
<Col v-for="lesson in lessons" :key="lesson.id" :xs="24" :md="8">
<Card class="card" hoverable :bordered="false">
<Typography.Title :level="4">{{
lesson.title
}}</Typography.Title>
<Typography.Paragraph>{{
lesson.summary
}}</Typography.Paragraph>
<div class="lesson-footer">
<Tag color="purple">{{ lesson.type }}</Tag>
<Button type="primary" size="small">Open</Button>
</div>
</Card>
</Col>
</Row>
</div>
2025-11-26 22:46:25 +00:00
</template>
<style scoped>
2025-12-17 14:47:51 +00:00
.page {
max-width: 1100px;
margin: 0 auto;
padding: 1rem;
2025-11-26 22:46:25 +00:00
}
2025-12-17 14:47:51 +00:00
.card {
background: #0f172a;
border: 1px solid #1f2937;
color: #e5e7eb;
2025-11-26 22:46:25 +00:00
}
.lesson-footer {
2025-12-17 14:47:51 +00:00
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 0.75rem;
2025-11-26 22:46:25 +00:00
}
</style>