@vtmn/css-popover
Version:
Decathlon Design System - Vitamin specific CSS styles for popover component
285 lines (249 loc) • 5.27 kB
CSS
@keyframes fade-in{
from{
opacity:0;
}
to{
opacity:1;
}
}
@keyframes slide-left{
from{
transform:translateX(120%);
}
to{
transform:translateX(0);
}
}
@keyframes slide-right{
from{
transform:translateX(0);
}
to{
transform:translateX(120%);
}
}
@keyframes slide-down{
from{
transform:translateY(0);
}
to{
transform:translateY(120%);
}
}
@keyframes slide-up{
from{
transform:translateY(120%);
}
to{
transform:translateY(0);
}
}
@keyframes show-up{
from{
bottom:0;
}
to{
bottom:15px;
}
}
@keyframes fade-out{
from{
opacity:1;
}
to{
opacity:0;
}
}
@keyframes vanish{
from{
bottom:15px;
}
to{
bottom:0;
}
}
@keyframes linear-indeterminate{
0%{
transform:translateX(-100%);
}
60%{
transform:translateX(105%);
}
100%{
transform:translateX(105%);
}
}
@keyframes circle-indeterminate{
0%{
stroke-dashoffset:400;
transform:rotate(-0.25turn);
}
50%{
transform:rotate(0.75turn);
stroke-dashoffset:0;
}
100%{
stroke-dashoffset:400;
transform:rotate(2.75turn);
}
}
@keyframes circle-indeterminate-small{
0%{
stroke-dashoffset:200;
transform:rotate(-0.25turn);
}
50%{
transform:rotate(0.75turn);
stroke-dashoffset:0;
}
100%{
stroke-dashoffset:200;
transform:rotate(2.75turn);
}
}
@keyframes shimmer{
from{
transform:translateX(-100%);
}
to{
transform:translateX(100%);
}
}
.vtmn-popover{
position:relative;
cursor:pointer;
font-family:'Roboto', 'system-ui', '-apple-system', sans-serif;
outline:0;
}
.vtmn-popover > [role='dialog'] > .vtmn-popover_title{
margin-block:0.4rem;
margin-inline:0;
font-family:'Roboto', 'system-ui', '-apple-system', sans-serif;
font-weight:700;
font-size:1.6rem;
line-height:1.5;
align-self:flex-start;
}
.vtmn-popover > [role='dialog'] > .vtmn-popover_text{
margin-block:0.8rem;
margin-inline:0;
font-family:'Roboto', 'system-ui', '-apple-system', sans-serif;
font-weight:400;
font-size:1.4rem;
line-height:2rem;
align-self:flex-start;
text-align:left;
}
.vtmn-popover > [role='dialog'] > button{
margin:0;
align-self:flex-end;
}
.vtmn-popover > [role='dialog']{
box-sizing:border-box;
min-inline-size:25rem;
inline-size:auto;
box-shadow:0 1.2rem 1.2rem 0 hsla(200, 100%, 24.5%, 0.1);
border-radius:8px;
background-color:hsl(200, 100%, 4.7%);
color:hsl(0, 0%, 100%);
display:none;
position:absolute;
padding:1.6rem;
animation:fade-in 200ms ease-in-out forwards;
z-index:200;
cursor:default;
}
.vtmn-popover > [role='dialog']::after{
border-radius:0;
content:' ';
block-size:0;
inline-size:0;
position:absolute;
box-shadow:none;
}
.vtmn-popover:focus-within > [role='dialog']{
display:flex;
flex-direction:column;
justify-content:space-between;
pointer-events:auto;
}
.vtmn-popover:focus-visible{
outline:none;
box-shadow:0 0 0 0.4rem hsl(210, 14.3%, 94.5%), 0 0 0 0.6rem hsl(200, 100%, 4.7%);
}
.vtmn-popover[data-position^='top'] > [role='dialog']{
bottom:calc(100% + 1.5em);
left:50%;
transform:translateX(-50%);
}
.vtmn-popover[data-position^='top'] > [role='dialog']::after{
border-left:solid transparent 0.6em;
border-right:solid transparent 0.6em;
border-top:solid hsl(200, 100%, 4.7%) 0.65em;
bottom:-0.6em;
left:50%;
transform:translateX(-50%);
}
.vtmn-popover[data-position='top-left'] > [role='dialog']::after{
left:90%;
}
.vtmn-popover[data-position='top-left'] > [role='dialog']{
transform:translateX(-90%);
}
.vtmn-popover[data-position='top-right'] > [role='dialog']::after{
left:10%;
}
.vtmn-popover[data-position='top-right'] > [role='dialog']{
transform:translateX(-10%);
}
.vtmn-popover[data-position^='bottom'] > [role='dialog']{
top:calc(100% + 1.5em);
left:50%;
transform:translateX(-50%);
}
.vtmn-popover[data-position^='bottom'] > [role='dialog']::after{
border-left:solid transparent 0.6em;
border-right:solid transparent 0.6em;
border-bottom:solid hsl(200, 100%, 4.7%) 0.65em;
top:-0.6em;
left:50%;
transform:translateX(-50%);
}
.vtmn-popover[data-position='bottom-left'] > [role='dialog']::after{
left:90%;
}
.vtmn-popover[data-position='bottom-left'] > [role='dialog']{
transform:translateX(-90%);
}
.vtmn-popover[data-position='bottom-right'] > [role='dialog']::after{
left:10%;
}
.vtmn-popover[data-position='bottom-right'] > [role='dialog']{
transform:translateX(-10%);
}
.vtmn-popover[data-position='left'] > [role='dialog']{
top:50%;
left:-1.5em;
transform:translate(-100%, -50%);
}
.vtmn-popover[data-position='left'] > [role='dialog']::after{
border-top:solid transparent 0.6em;
border-bottom:solid transparent 0.6em;
border-left:solid hsl(200, 100%, 4.7%) 0.65em;
right:-0.6em;
top:50%;
transform:translateY(-50%);
}
.vtmn-popover[data-position='right'] > [role='dialog']{
top:50%;
right:-1.5em;
transform:translate(100%, -50%);
}
.vtmn-popover[data-position='right'] > [role='dialog']::after{
border-top:solid transparent 0.6em;
border-bottom:solid transparent 0.6em;
border-right:solid hsl(200, 100%, 4.7%) 0.65em;
left:-0.6em;
top:50%;
transform:translateY(-50%);
}