@helpwave/hightide
Version:
helpwave's component and theming library
187 lines (157 loc) • 4.23 kB
CSS
@keyframes expand-top {
from {
transform: translateY(-100%) translateX(-50%);
}
to {
transform: translateY(0) translateX(-50%);
}
}
@keyframes expand-bottom {
from {
transform: translateY(100%) translateX(-50%);
}
to {
transform: translateY(0) translateX(-50%);
}
}
@keyframes expand-left {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0);
}
}
@keyframes expand-right {
from {
transform: translateX(100%);
}
to {
transform: translateX(0);
}
}
@layer components {
.drawer-screen-cover {
@apply fixed inset-0 h-screen w-screen;
&:not([data-open]) {
@apply touch-none pointer-events-none;
}
}
[data-name="drawer-background"] {
@apply fixed inset-0 w-screen h-screen bg-overlay-shadow;
&[data-state="opening"] {
animation-duration: var(--animation-duration-in);
}
&[data-state="closing"] {
animation-duration: var(--animation-duration-out);
animation-direction: reverse;
}
&[data-state="opening"],
&[data-state="closing"] {
animation-name: fade-in;
animation-fill-mode: forwards;
}
}
.drawer-container {
@apply fixed bg-overlay-background text-overlay-text overflow-hidden;
animation-timing-function: ease-out;
animation-fill-mode: forwards;
&[data-state="opening"] {
animation-duration: var(--animation-duration-in);
}
&[data-state="closing"] {
animation-duration: var(--animation-duration-out);
animation-direction: reverse;
}
&[data-alignment="top"],
&[data-alignment="bottom"] {
width: calc(min(256 * var(--spacing), 100vw));
height: calc(95vh - var(--drawer-depth, 0) * var(--drawer-indent, 0px));
@variant tablet {
height: calc(95vh - var(--drawer-depth, 0) * var(--drawer-indent, 0px));
}
@variant desktop {
height: calc(95vh - var(--drawer-depth, 0) * var(--drawer-indent, 0px));
}
}
&[data-alignment="right"],
&[data-alignment="left"] {
@apply h-screen;
width: calc(95vw - var(--drawer-depth, 0) * var(--drawer-indent, 0px));
@variant tablet {
width: calc(70vw - var(--drawer-depth, 0) * var(--drawer-indent, 0px));
}
@variant desktop {
width: calc(50vw - var(--drawer-depth, 0) * var(--drawer-indent, 0px));
}
}
&[data-alignment="top"] {
@apply top-0 left-1/2 rounded-b-lg;
transform: translateY(-100%) translateX(-50%);
&[data-state="opening"],
&[data-state="closing"] {
animation-name: expand-top;
}
&[data-state="opened"] {
transform: translateY(0) translateX(-50%);
}
}
&[data-alignment="bottom"] {
@apply bottom-0 left-1/2 rounded-t-lg;
transform: translateY(100%) translateX(-50%);
&[data-state="opening"],
&[data-state="closing"] {
animation-name: expand-bottom;
}
&[data-state="opened"] {
transform: translateY(0) translateX(-50%);
}
}
&[data-alignment="left"] {
@apply top-0 left-0 rounded-r-lg;
transform: translateX(-100%);
&[data-state="opening"],
&[data-state="closing"] {
animation-name: expand-left;
}
&[data-state="opened"] {
transform: translateX(0);
}
}
&[data-alignment="right"] {
@apply top-0 right-0 rounded-l-lg;
transform: translateX(100%);
&[data-state="opening"],
&[data-state="closing"] {
animation-name: expand-right;
}
&[data-state="opened"] {
transform: translateX(0);
}
}
}
.drawer-close-button-positioner {
@apply absolute right-2 top-2;
}
.drawer-content {
@apply flex flex-col-0 h-full w-full overflow-y-auto;
}
.drawer-header {
@apply sticky top-0 bg-overlay-background pt-4 px-4;
}
.drawer-title {
@apply typography-title-lg mr-8;
}
.drawer-description {
@apply text-description;
}
.drawer-footer {
@apply sticky bottom-0 bg-overlay-background pb-4 px-4;
}
.drawer-main-content {
@apply flex-col-2 px-4 grow;
&[data-no-outer-scrolling] {
@apply overflow-hidden h-full;
}
}
}