UNPKG

@hummingbirdui/hummingbird

Version:

An open-source system designed for rapid development, without sacrificing the granular control of utility-first CSS.

179 lines (163 loc) 5.28 kB
@utility nav { @layer base { --nav-bg: transparent; --nav-link-padding-x: --spacing(4); --nav-link-padding-y: --spacing(2); --nav-link-font-weight: var(--font-weight-medium); --nav-link-color: var(--text-color-muted); --nav-link-font-size: var(--text-base); --nav-link-line-height: 1.5; --nav-link-disabled-color: var(--color-disabled-color); --nav-link-active-color: unset; --nav-link-focus-ring-color: --alpha(var(--nav-link-active-color) / 30%); @apply flex flex-wrap pl-0 mb-0 list-none bg-[var(--nav-bg)]; .nav-link.active, .show > .nav-link { @apply text-[var(--nav-link-active-color)]; } } } @utility nav-link { @layer base { @apply block px-[var(--nav-link-padding-x)] py-[var(--nav-link-padding-y)] text-[length:var(--nav-link-font-size)] font-[var(--nav-link-font-weight)] text-[var(--nav-link-color)] leading-[var(--nav-link-line-height)] no-underline bg-none border-0 cursor-pointer transition-colors duration-150 ease-in-out; @variant focus-visible { @apply outline-0 ring-4 ring-[var(--nav-link-focus-ring-color)]; } &.disabled, &:disabled { @apply text-[var(--nav-link-disabled-color)] pointer-events-none cursor-default; } } } @utility nav-underline { @layer base { --nav-underline-gap: 0; --nav-underline-border-width: 2px; --nav-link-active-color: var(--color-primary); @apply gap-[var(--nav-underline-gap)]; .nav-link { @apply border-b-[length:var(--nav-underline-border-width)] border-transparent; } .nav-link.active, .show > .nav-link { @apply border-b-current; } } } @utility nav-tabs { @layer components { --nav-link-active-color: var(--color-primary); --nav-tabs-border-width: 1px; --nav-tabs-border-color: var(--border-color-base); --nav-tabs-border-radius: var(--radius-md); --nav-tabs-link-hover-border-color: var(--border-color-light); --nav-tabs-link-active-bg: var(--background-color-default); --nav-tabs-link-active-border-color: var(--border-color-base) var(--border-color-base) var(--nav-tabs-link-active-bg); @apply border-b-[length:var(--nav-tabs-border-width)] border-[var(--nav-tabs-border-color)]; .nav-link { @apply -mb-[length:var(--nav-tabs-border-width)] border-[length:var(--nav-tabs-border-width)] border-transparent rounded-t-[var(--nav-tabs-border-radius)]; &:hover, &:focus { @apply isolate border-[var(--nav-tabs-link-hover-border-color)]; } } .nav-link.active, .show > .nav-link { @apply border-[var(--nav-tabs-link-active-border-color)] bg-[var(--nav-tabs-link-active-bg)]; } } } @utility tab-pane { @layer base { display: none; } } @utility tab-content { @layer base { > .tab-pane.active { display: block; } } } @utility nav-primary { @layer base { --nav-bg: var(--color-primary); --nav-link-color: --alpha(var(--color-contrast) / 50%); --nav-link-disabled-color: --alpha(var(--color-contrast) / 30%); --nav-link-active-color: var(--color-contrast); --nav-link-focus-ring-color: --alpha(var(--color-primary-dark) / 30%); } } @utility nav-secondary { @layer base { --nav-bg: var(--color-secondary); --nav-link-color: --alpha(var(--color-contrast) / 50%); --nav-link-disabled-color: --alpha(var(--color-contrast) / 30%); --nav-link-active-color: var(--color-contrast); --nav-link-focus-ring-color: --alpha(var(--color-secondary-dark) / 30%); } } @utility nav-info { @layer base { --nav-bg: var(--color-info); --nav-link-color: --alpha(var(--color-contrast) / 50%); --nav-link-disabled-color: --alpha(var(--color-contrast) / 30%); --nav-link-active-color: var(--color-contrast); --nav-link-focus-ring-color: --alpha(var(--color-info-dark) / 30%); } } @utility nav-success { @layer base { --nav-bg: var(--color-success); --nav-link-color: --alpha(var(--color-contrast) / 50%); --nav-link-disabled-color: --alpha(var(--color-contrast) / 30%); --nav-link-active-color: var(--color-contrast); --nav-link-focus-ring-color: --alpha(var(--color-success-dark) / 30%); } } @utility nav-warning { @layer base { --nav-bg: var(--color-warning); --nav-link-color: --alpha(var(--color-contrast) / 50%); --nav-link-disabled-color: --alpha(var(--color-contrast) / 30%); --nav-link-active-color: var(--color-contrast); --nav-link-focus-ring-color: --alpha(var(--color-warning-dark) / 30%); } } @utility nav-danger { @layer base { --nav-bg: var(--color-danger); --nav-link-color: --alpha(var(--color-contrast) / 50%); --nav-link-disabled-color: --alpha(var(--color-contrast) / 30%); --nav-link-active-color: var(--color-contrast); --nav-link-focus-ring-color: --alpha(var(--color-danger-dark) / 30%); } } @utility nav-neutral { @layer base { --nav-bg: var(--color-dark); --nav-link-color: --alpha(var(--color-white) / 70%); --nav-link-disabled-color: --alpha(var(--color-white) / 30%); --nav-link-active-color: var(--color-white); --nav-link-focus-ring-color: --alpha(var(--color-dark) / 80%); } }