All files / src/lib/components ConnectionStatus.svelte

0% Statements 0/4
0% Branches 0/3
0% Functions 0/1
0% Lines 0/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55                                                                                                             
<script lang="ts">
	import { subscribeToStatus, connectionStatus } from '$lib/powersync';
 
	let status = $state(connectionStatus.value);
 
	$effect(() => {
		const unsub = subscribeToStatus((s) => {
			status = s;
		});
		return unsub;
	});
</script>
 
<span class="connection-status" data-status={status}>
	<span class="dot" aria-hidden="true"></span>
	<span class="label">
		{#if status === 'online'}
			Online
		{:else if Istatus === 'syncing'}
			Syncing
		{:else}
			Offline
		{/if}
	</span>
</span>
 
<style>
	.connection-status {
		display: inline-flex;
		align-items: center;
		gap: 0.35em;
		font-size: 0.85em;
	}
 
	.dot {
		display: inline-block;
		width: 0.6em;
		height: 0.6em;
		border-radius: 50%;
		background-color: #9ca3af; /* default: offline grey */
	}
 
	[data-status='online'] .dot {
		background-color: #22c55e; /* green */
	}
 
	[data-status='syncing'] .dot {
		background-color: #f59e0b; /* amber */
	}
 
	[data-status='offline'] .dot {
		background-color: #9ca3af; /* grey */
	}
</style>