@inkline/inkline
Version:
Inkline is the intuitive UI Components library that gives you a developer-friendly foundation for building high-quality, accessible, and customizable Vue.js 3 Design Systems.
150 lines (148 loc) • 7.39 kB
CSS
/**
* Hamburger menu
*/
.hamburger-menu {
opacity: var(--hamburger-menu--opacity, 0.75);
padding: var(--hamburger-menu--padding, var(--hamburger-menu--padding-top, 0) var(--hamburger-menu--padding-right, 0) var(--hamburger-menu--padding-bottom, 0) var(--hamburger-menu--padding-left, 0));
width: var(--hamburger-menu--bar--width);
height: calc(var(--hamburger-menu--bar--height) * 3 + var(--hamburger-menu--bar--spacing) * 2);
display: inline-flex;
position: relative;
box-sizing: content-box;
cursor: pointer;
transition-property: var(--hamburger-menu--transition-property, background-color, color, border-color);
transition-duration: var(--hamburger-menu--transition-duration, var(--transition-duration));
transition-timing-function: var(--hamburger-menu--transition-timing-function, var(--transition-timing-function));
}
.hamburger-menu:hover {
opacity: var(--hamburger-menu--hover--opacity, 1);
}
.hamburger-menu > .hamburger-menu-bars {
display: block;
top: 50%;
margin-top: calc(var(--hamburger-menu--bar--height) / -2);
}
.hamburger-menu > .hamburger-menu-bars, .hamburger-menu > .hamburger-menu-bars::before, .hamburger-menu > .hamburger-menu-bars::after {
width: var(--hamburger-menu--bar--width);
height: var(--hamburger-menu--bar--height);
border-radius: var(--hamburger-menu--bar--border-radius, var(--border-radius-sm));
background: var(--hamburger-menu--background);
position: absolute;
transition-property: var(--hamburger-menu--bar--transition-property, background-color, transform);
transition-duration: var(--hamburger-menu--bar--transition-duration, 175ms);
transition-timing-function: var(--hamburger-menu--bar--transition-timing-function, var(--transition-timing-function));
}
.hamburger-menu > .hamburger-menu-bars::before, .hamburger-menu > .hamburger-menu-bars::after {
content: "";
display: block;
}
.hamburger-menu > .hamburger-menu-bars::before {
top: calc(var(--hamburger-menu--bar--spacing) * -1 + var(--hamburger-menu--bar--height) * -1);
}
.hamburger-menu > .hamburger-menu-bars::after {
bottom: calc(var(--hamburger-menu--bar--spacing) * -1 + var(--hamburger-menu--bar--height) * -1);
}
.hamburger-menu.-close > .hamburger-menu-bars {
transition: transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19), background var(--hamburger-menu--bar--transition-duration, 175ms) var(--hamburger-menu--bar--transition-timing-function, var(--transition-timing-function));
}
.hamburger-menu.-close > .hamburger-menu-bars::before {
transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in, background var(--hamburger-menu--bar--transition-duration, 175ms) var(--hamburger-menu--bar--transition-timing-function, var(--transition-timing-function));
}
.hamburger-menu.-close > .hamburger-menu-bars::after {
transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19), background var(--hamburger-menu--bar--transition-duration, 175ms) var(--hamburger-menu--bar--transition-timing-function, var(--transition-timing-function));
}
.hamburger-menu.-close.-active > .hamburger-menu-bars {
transform: rotate(225deg);
transition: transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1);
}
.hamburger-menu.-close.-active > .hamburger-menu-bars::before {
top: 0;
opacity: 0;
transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out;
}
.hamburger-menu.-close.-active > .hamburger-menu-bars::after {
bottom: 0;
transform: rotate(-90deg);
transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1);
}
.hamburger-menu.-arrow-left.-active > .hamburger-menu-bars::before {
transform: translate3d(calc(var(--hamburger-menu--bar--width) * -0.2), 0, 0) rotate(-45deg) scale(0.7, 1);
}
.hamburger-menu.-arrow-left.-active > .hamburger-menu-bars::after {
transform: translate3d(calc(var(--hamburger-menu--bar--width) * -0.2), 0, 0) rotate(45deg) scale(0.7, 1);
}
.hamburger-menu.-arrow-right.-active > .hamburger-menu-bars::before {
transform: translate3d(calc(var(--hamburger-menu--bar--width) * 0.2), 0, 0) rotate(45deg) scale(0.7, 1);
}
.hamburger-menu.-arrow-right.-active > .hamburger-menu-bars::after {
transform: translate3d(calc(var(--hamburger-menu--bar--width) * 0.2), 0, 0) rotate(-45deg) scale(0.7, 1);
}
.hamburger-menu.-arrow-up.-active > .hamburger-menu-bars {
transform: rotate(-90deg);
}
.hamburger-menu.-arrow-up.-active > .hamburger-menu-bars::before {
transform: translate3d(calc(var(--hamburger-menu--bar--width) * 0.2), 0, 0) rotate(45deg) scale(0.7, 1);
}
.hamburger-menu.-arrow-up.-active > .hamburger-menu-bars::after {
transform: translate3d(calc(var(--hamburger-menu--bar--width) * 0.2), 0, 0) rotate(-45deg) scale(0.7, 1);
}
.hamburger-menu.-arrow-down.-active > .hamburger-menu-bars {
transform: rotate(90deg);
}
.hamburger-menu.-arrow-down.-active > .hamburger-menu-bars::before {
transform: translate3d(calc(var(--hamburger-menu--bar--width) * 0.2), 0, 0) rotate(45deg) scale(0.7, 1);
}
.hamburger-menu.-arrow-down.-active > .hamburger-menu-bars::after {
transform: translate3d(calc(var(--hamburger-menu--bar--width) * 0.2), 0, 0) rotate(-45deg) scale(0.7, 1);
}
.hamburger-menu.-minus.-active > .hamburger-menu-bars::before {
transform: translate3d(0, calc(var(--hamburger-menu--bar--spacing) + var(--hamburger-menu--bar--height)), 0);
}
.hamburger-menu.-minus.-active > .hamburger-menu-bars::after {
transform: translate3d(0, calc(var(--hamburger-menu--bar--spacing) * -1 + var(--hamburger-menu--bar--height) * -1), 0);
}
.hamburger-menu.-plus.-active > .hamburger-menu-bars::before {
transform: translate3d(0, calc(var(--hamburger-menu--bar--spacing) + var(--hamburger-menu--bar--height)), 0);
}
.hamburger-menu.-plus.-active > .hamburger-menu-bars::after {
transform: translate3d(0, calc(var(--hamburger-menu--bar--spacing) * -1 + var(--hamburger-menu--bar--height) * -1), 0) rotate(90deg);
}
/**
* Color variants
*/
.hamburger-menu.-light {
--hamburger-menu--background: var(--hamburger-menu--light--background, var(--color-dark));
}
.hamburger-menu.-dark {
--hamburger-menu--background: var(--hamburger-menu--dark--background, var(--color-light));
}
/**
* Size variants
*/
.hamburger-menu.-sm {
--hamburger-menu--bar--width: var(
--hamburger-menu--sm--bar--width,
calc(30px * var(--size-multiplier-sm))
);
--hamburger-menu--bar--height: var(--hamburger-menu--sm--bar--height, 2px);
--hamburger-menu--bar--spacing: var(--hamburger-menu--sm--bar--spacing, 4px);
--hamburger-menu--bar--border-radius: var(--hamburger-menu--sm--bar--border-radius, 1px);
}
.hamburger-menu.-md {
--hamburger-menu--bar--width: var(
--hamburger-menu--md--bar--width,
calc(30px * var(--size-multiplier-md))
);
--hamburger-menu--bar--height: var(--hamburger-menu--md--bar--height, 3px);
--hamburger-menu--bar--spacing: var(--hamburger-menu--md--bar--spacing, 5px);
--hamburger-menu--bar--border-radius: var(--hamburger-menu--md--bar--border-radius, 2px);
}
.hamburger-menu.-lg {
--hamburger-menu--bar--width: var(
--hamburger-menu--lg--bar--width,
calc(30px * var(--size-multiplier-lg))
);
--hamburger-menu--bar--height: var(--hamburger-menu--lg--bar--height, 4px);
--hamburger-menu--bar--spacing: var(--hamburger-menu--lg--bar--spacing, 6px);
--hamburger-menu--bar--border-radius: var(--hamburger-menu--lg--bar--border-radius, 3px);
}