boredgame/src/lib/components/Icon.svelte

36 lines
878 B
Svelte
Raw Normal View History

<script lang="ts">
import feather from 'feather-icons';
2022-07-28 00:05:54 +00:00
export const directions: string[] = ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'];
export let name: string;
2022-07-28 00:05:54 +00:00
export let direction: string = 'n';
export let strokeWidth: string | number;
export let stroke: string | number;
2022-07-28 00:05:54 +00:00
export let width: string = '1em';
export let height: string = '1em';
$: icon = feather.icons[name];
$: rotation = directions.indexOf(direction) * 45;
$: if (icon) {
2022-07-28 00:05:54 +00:00
if (stroke) icon.attrs['stroke'] = stroke;
if (strokeWidth) icon.attrs['stroke-width'] = strokeWidth;
}
</script>
{#if icon}
2022-07-28 00:05:54 +00:00
<svg {...icon.attrs} style="width: {width}; height: {height}; transform: rotate({rotation}deg);">
<g>
{@html icon.contents}
</g>
</svg>
{/if}
<style>
svg {
width: 1em;
height: 1em;
overflow: visible;
transform-origin: 50% 50%;
}
2022-07-28 00:05:54 +00:00
</style>