| @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); |
| } |
| } |
| } |