blob: 0a96da8143264b296ecc38a40a420fc26695fa54 [file] [edit]
@use "functions" as *;
@use "mixins/border-radius" as *;
@use "mixins/mask-icon" as *;
@use "mixins/transition" as *;
@use "mixins/tokens" as *;
$breadcrumb-tokens: () !default;
// scss-docs-start breadcrumb-tokens
// stylelint-disable-next-line scss/dollar-variable-default
$breadcrumb-tokens: defaults(
(
--breadcrumb-font-size: inherit,
--breadcrumb-bg: transparent,
--breadcrumb-border-radius: var(--radius-5),
--breadcrumb-divider-color: var(--fg-4),
--breadcrumb-divider-icon: #{escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/></svg>"))},
--breadcrumb-divider-width: .375rem,
--breadcrumb-divider-height: .75rem,
--breadcrumb-link-padding-x: .75rem,
--breadcrumb-link-padding-y: .25rem,
--breadcrumb-link-color: var(--fg-3),
--breadcrumb-link-hover-color: var(--fg-2),
--breadcrumb-link-hover-bg: var(--bg-1),
--breadcrumb-link-active-color: var(--fg-1),
--breadcrumb-link-border-radius: var(--radius-7),
),
$breadcrumb-tokens
);
// scss-docs-end breadcrumb-tokens
@layer components {
.breadcrumb {
@include tokens($breadcrumb-tokens);
display: flex;
flex-wrap: wrap;
align-items: center;
padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);
margin-bottom: 0;
font-size: var(--breadcrumb-font-size);
list-style-type: "";
background-color: var(--breadcrumb-bg);
@include border-radius(var(--breadcrumb-border-radius));
}
.breadcrumb-item {
display: flex;
}
.breadcrumb-divider {
margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);
color: var(--breadcrumb-divider-color);
// Render a default chevron, painted with `currentcolor` via a mask, when the
// divider has no explicit content. Any content (an inline SVG, a text
// character, etc.) added to the element overrides this default.
&:empty::before {
display: block;
width: var(--breadcrumb-divider-width);
height: var(--breadcrumb-divider-height);
content: "";
background-color: currentcolor;
@include mask-icon(var(--breadcrumb-divider-icon));
}
}
.breadcrumb-link {
position: relative;
display: flex;
align-items: center;
justify-content: center;
min-height: 2.25rem;
padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);
color: var(--breadcrumb-link-color);
text-decoration: none;
@include border-radius(var(--breadcrumb-link-border-radius));
@include transition(.1s text-decoration-color ease-in-out);
&:hover {
z-index: 2;
color: var(--breadcrumb-link-hover-color);
background-color: var(--breadcrumb-link-hover-bg);
}
&.active {
color: var(--breadcrumb-link-active-color);
}
}
}