flotilla/src/lib/components/Link.svelte

30 lines
560 B
Svelte
Raw Normal View History

2024-08-08 23:32:46 +00:00
<script lang="ts">
2024-10-15 19:02:11 +00:00
import {goto} from "$app/navigation"
2024-08-08 23:32:46 +00:00
2025-02-04 00:37:14 +00:00
interface Props {
href: string
external: boolean
replaceState: boolean
}
let {href, external = false, replaceState = false, ...restProps} = $props()
2024-10-11 22:29:54 +00:00
const go = (e: Event) => {
if (!external) {
e.preventDefault()
2024-10-24 18:52:02 +00:00
goto(href, {replaceState})
}
}
2024-08-08 23:32:46 +00:00
</script>
<a
{href}
2025-02-04 00:37:14 +00:00
{...restProps}
on:click|stopPropagation={go}
2025-02-04 00:37:14 +00:00
class="cursor-pointer {restProps.class}"
2024-08-08 23:32:46 +00:00
rel={external ? "noopener noreferer" : ""}
target={external ? "_blank" : ""}>
<slot />
</a>