|
<script lang="ts"> |
|
import LayoutRow from "@graphite/components/layout/LayoutRow.svelte"; |
|
import TextButton from "@graphite/components/widgets/buttons/TextButton.svelte"; |
|
|
|
export let labels: string[]; |
|
export let disabled = false; |
|
export let tooltip: string | undefined = undefined; |
|
|
|
export let action: (index: number) => void; |
|
</script> |
|
|
|
<LayoutRow class="breadcrumb-trail-buttons" {tooltip}> |
|
{#each labels as label, index} |
|
<TextButton {label} emphasized={index === labels.length - 1} {disabled} action={() => !disabled && index !== labels.length - 1 && action(index)} /> |
|
{/each} |
|
</LayoutRow> |
|
|
|
<style lang="scss" global> |
|
.breadcrumb-trail-buttons { |
|
.text-button { |
|
position: relative; |
|
|
|
&:not(:first-of-type) { |
|
border-top-left-radius: 0; |
|
border-bottom-left-radius: 0; |
|
|
|
&::before { |
|
content: ""; |
|
position: absolute; |
|
top: 0; |
|
left: -4px; |
|
width: 0; |
|
height: 0; |
|
border-style: solid; |
|
border-width: 12px 0 12px 4px; |
|
border-color: var(--button-background-color) var(--button-background-color) var(--button-background-color) transparent; |
|
} |
|
} |
|
|
|
&:not(:last-of-type) { |
|
border-top-right-radius: 0; |
|
border-bottom-right-radius: 0; |
|
|
|
&::after { |
|
content: ""; |
|
position: absolute; |
|
top: 0; |
|
right: -4px; |
|
width: 0; |
|
height: 0; |
|
border-style: solid; |
|
border-width: 12px 0 12px 4px; |
|
border-color: transparent transparent transparent var(--button-background-color); |
|
} |
|
} |
|
|
|
&:last-of-type { |
|
// Make this non-functional button not change color on hover |
|
pointer-events: none; |
|
} |
|
} |
|
} |
|
</style> |
|
|