Foxnouns.NET/Foxnouns.Frontend/src/lib/components/IconButton.svelte

42 lines
854 B
Svelte
Raw Normal View History

2024-11-25 23:07:17 +01:00
<script lang="ts">
import { Icon } from "@sveltestrap/sveltestrap";
import type { MouseEventHandler } from "svelte/elements";
import tippy from "$lib/tippy";
type Props = {
icon: string;
tooltip: string;
color?: "primary" | "secondary" | "success" | "danger";
type?: "submit" | "reset" | "button";
id?: string;
onclick?: MouseEventHandler<HTMLButtonElement>;
outline?: boolean;
active?: boolean;
class?: string;
2024-11-25 23:07:17 +01:00
};
let {
icon,
tooltip,
color = "primary",
type,
id,
onclick,
outline,
active,
class: className,
}: Props = $props();
2024-11-25 23:07:17 +01:00
</script>
<button
{id}
{type}
use:tippy={{ content: tooltip }}
class="btn {outline ? `btn-outline-${color}` : `btn-${color}`} {className || ''}"
class:active
aria-pressed={active}
{onclick}
>
2024-11-25 23:07:17 +01:00
<Icon name={icon} />
<span class="visually-hidden">{tooltip}</span>
</button>