Deploy / deploy (push) Has been cancelled
学生端:目录 + 居中限宽正文 + 可收起的示例代码栏;目录改成三态圆点, 顶部加总进度;上一课/下一课栏桌面端固定在底部。 教师端:汇总卡片、学生状态标签与筛选(未开始/7 天没学/只读不练等)、 最后学习补「N 天前」、按练习表加「没人一次对/多数人卡住」提示。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
25 lines
660 B
Vue
25 lines
660 B
Vue
<script setup lang="ts">
|
|
import { MdPreview } from "md-editor-v3"
|
|
import "md-editor-v3/lib/preview.css"
|
|
import type { Segment } from "../composables/useExerciseParse"
|
|
|
|
defineProps<{ segments: Segment[]; lang?: string }>()
|
|
|
|
const isDark = useDark()
|
|
const ExerciseWidget = defineAsyncComponent(
|
|
() => import("./ExerciseWidget.vue"),
|
|
)
|
|
</script>
|
|
|
|
<template>
|
|
<template v-for="(seg, i) in segments" :key="i">
|
|
<MdPreview
|
|
v-if="seg.type === 'md'"
|
|
preview-theme="vuepress"
|
|
:theme="isDark ? 'dark' : 'light'"
|
|
:model-value="seg.content"
|
|
/>
|
|
<ExerciseWidget v-else :exercise="seg.exercise" :lang="lang" />
|
|
</template>
|
|
</template>
|