import { computed } from 'vue';
const circumference = 2 * Math.PI * r
const progress = computed(() => {
return ($slidev.nav.currentPage / $slidev.nav.total) * circumference;
const offset = computed(() => {
return circumference - progress.value;
<footer class="abs-br m-3">
<svg w-8 viewBox="0 0 100 100">
<circle class="base-circle" cx="50" cy="50" :r="r" fill="none" :stroke-width="strokeWidth" />
<circle class="progress-circle" ref="progressCircle" cx="50" cy="50" :r="r" transform="rotate(-90 50 50)" fill="none" :stroke-width="strokeWidth" :stroke-dasharray="circumference" :stroke-dashoffset="offset"/>
<text class="progress-text" font-size="9" x="50" y="52" dominant-baseline="middle" text-anchor="middle">{{ $slidev.nav.currentPage }}</text>
--bg-stroke-color: #e2e8f0;
--progress-stroke-color: #b91c1c;
--text-fill-color: #020617;
stroke: var(--bg-stroke-color);
stroke: var(--progress-stroke-color);
fill: var(--text-fill-color);