Files
website/src/lib/worldtodo/IconTile.svelte

42 lines
868 B
Svelte

<script lang="ts">
import type { Component } from 'svelte';
// A small coloured square with a white icon (decorative; always next to a text label).
let {
icon: Icon,
background,
size = 'md'
}: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
icon: Component<any>;
background: string;
size?: 'sm' | 'md' | 'lg';
} = $props();
const px = $derived(size === 'lg' ? 22 : size === 'sm' ? 12 : 15);
</script>
<span class="tile {size}" style:background aria-hidden="true"><Icon size={px} /></span>
<style>
.tile {
display: inline-flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
color: #fff;
border-radius: 0.5rem;
width: 1.85rem;
height: 1.85rem;
}
.sm {
width: 1.3rem;
height: 1.3rem;
border-radius: 999px;
}
.lg {
width: 2.75rem;
height: 2.75rem;
border-radius: 0.8rem;
}
</style>