UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

69 lines (60 loc) 2.4 kB
@import "../style/base.css"; @layer components { .menu { /* Box (list reset + layout) */ list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--menu-gap, var(--space-xxsmall)); /* Typography */ font-family: var(--menu-font, var(--font-body)); font-size: var(--menu-size, var(--size-normal)); line-height: var(--menu-leading, var(--leading-normal)); color: var(--menu-color-text, var(--color-black)); } .item { margin: 0; } .link { /* Box */ display: block; padding-block: var(--menu-link-padding, var(--space-xxsmall)); padding-inline: var(--menu-link-padding, var(--space-xsmall)); border-radius: var(--menu-link-radius, var(--radius-xxsmall)); /* Style */ color: inherit; text-decoration: none; transition: all 120ms ease-in-out; /* Pseudo-classes */ &:hover, &:focus:not(:focus-visible) { background: var(--menu-link-color-hover-bg, color-mix(in oklch, var(--color-light) 60%, transparent)); color: var(--menu-link-color-hover-text, var(--color-black)); } &:focus-visible { outline: var(--menu-link-focus-border, var(--stroke-focus)) solid var(--menu-link-color-focus, var(--color-focus)); outline-offset: 1px; } &[aria-current="page"] { background: var(--menu-link-color-active-bg, var(--color-white)); color: var(--menu-link-color-active-text, var(--color-black)); font-weight: var(--menu-link-active-weight, var(--weight-strong)); } } /* "Proud" item — an ancestor of the active page; emphasised with a strong weight, and reveals its nested children. */ /* The active page is excluded so its own `[aria-current]` styling wins instead of the proud styling. */ .proud > .link:not([aria-current="page"]) { color: var(--menu-link-color-proud, var(--color-black)); font-weight: var(--menu-link-proud-weight, var(--weight-strong)); } /* Submenu — Blockquote-style left border to signal hierarchy. */ .menu .menu { margin-block: var(--menu-nested-spacing, var(--space-xxsmall)); /* Inset the border by the link's inline padding so it lines up with the parent item's label. */ margin-inline-start: var(--menu-link-padding, var(--space-xsmall)); border-inline-start: var(--menu-nested-border, var(--stroke-focus)) solid var(--menu-nested-color-border, var(--color-vivid)); padding-inline-start: var(--menu-nested-indent, var(--space-xsmall)); } }