ptitlutins/app/components/atoms/Badge.vue
2026-06-10 00:56:44 +02:00

48 lines
940 B
Vue

<template>
<span :class="['badge', `badge--${tone}`]">
<Icon v-if="icon" :name="icon" class="badge__icon" />
<slot />
</span>
</template>
<script setup lang="ts">
withDefaults(
defineProps<{
/** "violet" = brand tint pill, "neutral" = subtle gray pill. */
tone?: "neutral" | "violet"
/** Optional leading Carbon icon. */
icon?: string
}>(),
{ tone: "violet", icon: undefined },
)
</script>
<style scoped>
.badge {
display: inline-flex;
align-items: center;
gap: var(--space-1);
padding: 5px 10px;
border-radius: var(--radius-pill);
font-family: var(--font-body);
font-size: var(--text-xs);
font-weight: var(--weight-semibold);
line-height: 1;
}
.badge--violet {
background: var(--color-9);
color: var(--color-3);
}
.badge--neutral {
background: var(--neutral-10);
color: var(--neutral-70);
}
.badge__icon {
width: 0.875rem;
height: 0.875rem;
flex-shrink: 0;
}
</style>