blog/frontend/src/lib/home/framework/ui/TerminalCursor.svelte
SquidSpirit eb4b2f4d6a
Some checks failed
PR Title Check / pr-title-check (pull_request) Successful in 13s
Frontend CI / build (push) Failing after 44s
BLOG-58 refactor: remove nextjs code
2025-07-23 05:19:36 +08:00

28 lines
571 B
Svelte

<script lang="ts">
import { onDestroy, onMount } from 'svelte';
let isVisible: boolean = $state(true);
let interval: ReturnType<typeof setInterval> | null = null;
onMount(() => {
interval = setInterval(() => {
toggleVisibility();
setTimeout(toggleVisibility, 500);
}, 1000);
});
onDestroy(() => {
if (interval != null) {
clearInterval(interval);
interval = null;
}
});
function toggleVisibility() {
isVisible = !isVisible;
}
</script>
<span class="transition-opacity duration-200 {isVisible ? 'opacity-100' : 'opacity-0'}"></span>