Skip to content
tcpsystemsui

Theme

Colour scheme
Accent
Density
Radius
Esc

UptimeStrip

One block per period with text for every block.

beta

Try it

  1. Day 1: operational
  2. Day 2: operational
  3. Day 3: degraded
  4. Day 4: operational
Svelte
<UptimeStrip label="Service uptime" days={[{"label":"Day 1","state":"ok"},{"label":"Day 2","state":"ok"},{"label":"Day 3","state":"degraded"},{"label":"Day 4","state":"ok"}]} />

Examples

Service status

API Gateway

  1. Nov 6: operational
  2. Nov 5: operational
  3. Nov 4: operational
  4. Nov 3: operational
  5. Nov 2: operational
  6. Nov 1: operational
  7. Oct 31: operational
  8. Oct 30: operational
  9. Oct 29: operational
  10. Oct 28: operational
  11. Oct 27: degraded
  12. Oct 26: operational
  13. Oct 25: operational
  14. Oct 24: operational
  15. Oct 23: operational
  16. Oct 22: operational
  17. Oct 21: operational
  18. Oct 20: operational
  19. Oct 19: operational
  20. Oct 18: operational
  21. Oct 17: operational
  22. Oct 16: operational
  23. Oct 15: operational
  24. Oct 14: operational
  25. Oct 13: operational
  26. Oct 12: operational
  27. Oct 11: operational
  28. Oct 10: operational
  29. Oct 9: operational
  30. Oct 8: operational

99.7% uptime

Database Primary

  1. Nov 6: operational
  2. Nov 5: operational
  3. Nov 4: operational
  4. Nov 3: operational
  5. Nov 2: operational
  6. Nov 1: operational
  7. Oct 31: operational
  8. Oct 30: operational
  9. Oct 29: operational
  10. Oct 28: operational
  11. Oct 27: operational
  12. Oct 26: operational
  13. Oct 25: operational
  14. Oct 24: operational
  15. Oct 23: operational
  16. Oct 22: operational
  17. Oct 21: operational
  18. Oct 20: operational
  19. Oct 19: operational
  20. Oct 18: operational
  21. Oct 17: operational
  22. Oct 16: operational
  23. Oct 15: operational
  24. Oct 14: operational
  25. Oct 13: operational
  26. Oct 12: operational
  27. Oct 11: operational
  28. Oct 10: operational
  29. Oct 9: operational
  30. Oct 8: operational

100% uptime

CDN Edge

  1. Nov 6: operational
  2. Nov 5: degraded
  3. Nov 4: operational
  4. Nov 3: operational
  5. Nov 2: operational
  6. Nov 1: down
  7. Oct 31: operational
  8. Oct 30: operational
  9. Oct 29: operational
  10. Oct 28: degraded
  11. Oct 27: operational
  12. Oct 26: operational
  13. Oct 25: operational
  14. Oct 24: operational
  15. Oct 23: operational
  16. Oct 22: operational
  17. Oct 21: operational
  18. Oct 20: operational
  19. Oct 19: operational
  20. Oct 18: operational
  21. Oct 17: operational
  22. Oct 16: operational
  23. Oct 15: operational
  24. Oct 14: operational
  25. Oct 13: operational
  26. Oct 12: operational
  27. Oct 11: operational
  28. Oct 10: operational
  29. Oct 9: operational
  30. Oct 8: operational

96.3% uptime

Service status.svelte
<script lang="ts">
	import UptimeStrip from '@tcpsystems/ui/foundation/UptimeStrip';
	import Stack from '@tcpsystems/ui/foundation/Stack';
	import Grid from '@tcpsystems/ui/foundation/Grid';
	import Text from '@tcpsystems/ui/foundation/Text';
</script>

<Stack data-gap="lg">
	<Grid min="sm" gap="lg">
		<Stack data-gap="sm">
			<Text><strong>API Gateway</strong></Text>
			<UptimeStrip
				label="API Gateway uptime - last 30 days"
				days={[
					{ label: 'Nov 6', state: 'ok' }, { label: 'Nov 5', state: 'ok' }, { label: 'Nov 4', state: 'ok' }, { label: 'Nov 3', state: 'ok' }, { label: 'Nov 2', state: 'ok' }, { label: 'Nov 1', state: 'ok' }, { label: 'Oct 31', state: 'ok' },
					{ label: 'Oct 30', state: 'ok' }, { label: 'Oct 29', state: 'ok' }, { label: 'Oct 28', state: 'ok' }, { label: 'Oct 27', state: 'degraded' }, { label: 'Oct 26', state: 'ok' }, { label: 'Oct 25', state: 'ok' }, { label: 'Oct 24', state: 'ok' }, { label: 'Oct 23', state: 'ok' }, { label: 'Oct 22', state: 'ok' }, { label: 'Oct 21', state: 'ok' },
					{ label: 'Oct 20', state: 'ok' }, { label: 'Oct 19', state: 'ok' }, { label: 'Oct 18', state: 'ok' }, { label: 'Oct 17', state: 'ok' }, { label: 'Oct 16', state: 'ok' }, { label: 'Oct 15', state: 'ok' }, { label: 'Oct 14', state: 'ok' }, { label: 'Oct 13', state: 'ok' }, { label: 'Oct 12', state: 'ok' }, { label: 'Oct 11', state: 'ok' }, { label: 'Oct 10', state: 'ok' }, { label: 'Oct 9', state: 'ok' }, { label: 'Oct 8', state: 'ok' },
				]}
			/>
			<Text size="sm" tone="muted">99.7% uptime</Text>
		</Stack>

		<Stack data-gap="sm">
			<Text><strong>Database Primary</strong></Text>
			<UptimeStrip
				label="Database Primary uptime - last 30 days"
				days={[
					{ label: 'Nov 6', state: 'ok' }, { label: 'Nov 5', state: 'ok' }, { label: 'Nov 4', state: 'ok' }, { label: 'Nov 3', state: 'ok' }, { label: 'Nov 2', state: 'ok' }, { label: 'Nov 1', state: 'ok' }, { label: 'Oct 31', state: 'ok' },
					{ label: 'Oct 30', state: 'ok' }, { label: 'Oct 29', state: 'ok' }, { label: 'Oct 28', state: 'ok' }, { label: 'Oct 27', state: 'ok' }, { label: 'Oct 26', state: 'ok' }, { label: 'Oct 25', state: 'ok' }, { label: 'Oct 24', state: 'ok' }, { label: 'Oct 23', state: 'ok' }, { label: 'Oct 22', state: 'ok' }, { label: 'Oct 21', state: 'ok' },
					{ label: 'Oct 20', state: 'ok' }, { label: 'Oct 19', state: 'ok' }, { label: 'Oct 18', state: 'ok' }, { label: 'Oct 17', state: 'ok' }, { label: 'Oct 16', state: 'ok' }, { label: 'Oct 15', state: 'ok' }, { label: 'Oct 14', state: 'ok' }, { label: 'Oct 13', state: 'ok' }, { label: 'Oct 12', state: 'ok' }, { label: 'Oct 11', state: 'ok' }, { label: 'Oct 10', state: 'ok' }, { label: 'Oct 9', state: 'ok' }, { label: 'Oct 8', state: 'ok' },
				]}
			/>
			<Text size="sm" tone="muted">100% uptime</Text>
		</Stack>

		<Stack data-gap="sm">
			<Text><strong>CDN Edge</strong></Text>
			<UptimeStrip
				label="CDN Edge uptime - last 30 days"
				days={[
					{ label: 'Nov 6', state: 'ok' }, { label: 'Nov 5', state: 'degraded' }, { label: 'Nov 4', state: 'ok' }, { label: 'Nov 3', state: 'ok' }, { label: 'Nov 2', state: 'ok' }, { label: 'Nov 1', state: 'down' }, { label: 'Oct 31', state: 'ok' },
					{ label: 'Oct 30', state: 'ok' }, { label: 'Oct 29', state: 'ok' }, { label: 'Oct 28', state: 'degraded' }, { label: 'Oct 27', state: 'ok' }, { label: 'Oct 26', state: 'ok' }, { label: 'Oct 25', state: 'ok' }, { label: 'Oct 24', state: 'ok' }, { label: 'Oct 23', state: 'ok' }, { label: 'Oct 22', state: 'ok' }, { label: 'Oct 21', state: 'ok' },
					{ label: 'Oct 20', state: 'ok' }, { label: 'Oct 19', state: 'ok' }, { label: 'Oct 18', state: 'ok' }, { label: 'Oct 17', state: 'ok' }, { label: 'Oct 16', state: 'ok' }, { label: 'Oct 15', state: 'ok' }, { label: 'Oct 14', state: 'ok' }, { label: 'Oct 13', state: 'ok' }, { label: 'Oct 12', state: 'ok' }, { label: 'Oct 11', state: 'ok' }, { label: 'Oct 10', state: 'ok' }, { label: 'Oct 9', state: 'ok' }, { label: 'Oct 8', state: 'ok' },
				]}
			/>
			<Text size="sm" tone="muted">96.3% uptime</Text>
		</Stack>
	</Grid>
</Stack>

Compact

Auth Service

99.9%
  1. Day 14: operational
  2. Day 13: operational
  3. Day 12: operational
  4. Day 11: degraded
  5. Day 10: operational
  6. Day 9: operational
  7. Day 8: operational
  8. Day 7: operational
  9. Day 6: operational
  10. Day 5: operational
  11. Day 4: operational
  12. Day 3: operational
  13. Day 2: operational
  14. Day 1: operational

Search Index

99.5%
  1. Day 14: operational
  2. Day 13: operational
  3. Day 12: operational
  4. Day 11: operational
  5. Day 10: operational
  6. Day 9: operational
  7. Day 8: operational
  8. Day 7: down
  9. Day 6: operational
  10. Day 5: operational
  11. Day 4: degraded
  12. Day 3: operational
  13. Day 2: operational
  14. Day 1: operational

Queue Worker

100%
  1. Day 14: operational
  2. Day 13: operational
  3. Day 12: operational
  4. Day 11: operational
  5. Day 10: operational
  6. Day 9: operational
  7. Day 8: operational
  8. Day 7: operational
  9. Day 6: operational
  10. Day 5: operational
  11. Day 4: operational
  12. Day 3: operational
  13. Day 2: operational
  14. Day 1: operational

Cache Layer

99.8%
  1. Day 14: operational
  2. Day 13: degraded
  3. Day 12: operational
  4. Day 11: operational
  5. Day 10: operational
  6. Day 9: operational
  7. Day 8: operational
  8. Day 7: operational
  9. Day 6: operational
  10. Day 5: operational
  11. Day 4: operational
  12. Day 3: operational
  13. Day 2: operational
  14. Day 1: operational
Compact.svelte
<script lang="ts">
	import UptimeStrip from '@tcpsystems/ui/foundation/UptimeStrip';
	import Stack from '@tcpsystems/ui/foundation/Stack';
	import Grid from '@tcpsystems/ui/foundation/Grid';
	import Text from '@tcpsystems/ui/foundation/Text';
	import Badge from '@tcpsystems/ui/foundation/Badge';
	import Cluster from '@tcpsystems/ui/foundation/Cluster';

	const services: { name: string; uptime: string; days: { label: string; state: 'ok' | 'degraded' | 'down' | 'none' }[] }[] = [
		{ name: 'Auth Service', uptime: '99.9%', days: Array.from({ length: 14 }, (_, i) => ({ label: `Day ${14-i}`, state: i === 3 ? 'degraded' : 'ok' })) },
		{ name: 'Search Index', uptime: '99.5%', days: Array.from({ length: 14 }, (_, i) => ({ label: `Day ${14-i}`, state: i === 7 ? 'down' : i === 10 ? 'degraded' : 'ok' })) },
		{ name: 'Queue Worker', uptime: '100%', days: Array.from({ length: 14 }, (_, i) => ({ label: `Day ${14-i}`, state: 'ok' })) },
		{ name: 'Cache Layer', uptime: '99.8%', days: Array.from({ length: 14 }, (_, i) => ({ label: `Day ${14-i}`, state: i === 1 ? 'degraded' : 'ok' })) }
	];
</script>

<Stack data-gap="lg">
	<Grid min="sm" gap="md">
		{#each services as { name, uptime, days }}
			<Stack data-gap="xs">
				<Cluster>
					<Text size="sm"><strong>{name}</strong></Text>
					<Badge tone="ok">{uptime}</Badge>
				</Cluster>
				<UptimeStrip label={`${name} uptime - last 14 days`} {days} />
			</Stack>
		{/each}
	</Grid>
</Stack>

API

Import
import UptimeStrip from '@tcpsystems/ui/foundation/UptimeStrip';
PropTypeDefault
daysDay[]none
labelstringnone
HookKind
.tcp-uptimeRoot class
data-stateData attribute