@coinmeca/ui
Version:
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
185 lines (165 loc) • 6.57 kB
JSX
import { Root } from "../../../lib/style";
import { css, styled } from "styled-components";
export const Style = styled.div `
font-size: ${({ $scale }) => $scale}em;
position: relative;
display: flex;
width: 100%;
height: 100%;
justify-content: center;
& > * {
&:first-child {
& > * {
position: absolute;
top: 0;
left: 0;
display: flex;
justify-content: center;
align-items: ${({ $vertical }) => ($vertical === "top" ? "flex-start" : $vertical === "bottom" ? "flex-end" : "center")};
width: -webkit-fill-available;
height: -webkit-fill-available;
padding: ${({ $padding }) => `${$padding}em`};
${({ $nav, $padding }) => $nav && `padding-${$nav}: ${$padding * 2}em`};
text-align: center;
transition: 0.3s ease;
overflow: hidden;
& > * {
width: 100%;
&:last-child {
transition: 0.15s 0.05s ease;
opacity: 0;
& > * {
& > *:nth-child(1) {
transition: 0.15s 0.075s ease;
opacity: 0;
}
& > *:nth-child(2) {
transition: 0.15s 0.1s ease;
opacity: 0;
}
& > *:nth-child(2) {
transition: 0.15s 0.15s ease;
opacity: 0;
}
}
}
}
&[data-active="false"] {
opacity: 0;
transform: translateX(-15%);
pointer-events: none;
& > *:last-child {
transform: translateX(-5%);
& > * {
& > *:nth-child(1),
& > *:nth-child(2),
& > *:nth-child(3) {
transform: translateX(-2.5%);
}
}
}
}
&[data-active="true"] ~ [data-active="false"] {
transform: translateX(15%);
& > *:last-child {
transform: translateX(5%);
& > * {
& > *:nth-child(1),
& > *:nth-child(2),
& > *:nth-child(3) {
transform: translateX(2.5%);
}
}
}
}
&[data-active="true"] {
transform: translateX(0);
pointer-events: initial;
opacity: 1;
& > *:last-child {
transform: translateX(0%);
opacity: 1;
& > * {
& > *:nth-child(1),
& > *:nth-child(2),
& > *:nth-child(3) {
transform: translateX(0%);
opacity: inherit;
}
}
}
}
@media all and (min-width: ${Root.Device.Desktop}px) {
padding: ${({ $padding }) => `${$padding}em ${$padding * 2}em`};
${({ $nav, $padding }) => $nav && `padding-${$nav}: ${$padding}em`};
}
@media all and (max-width: ${Root.Device.Tablet}px) {
${({ $nav, $padding }) => $nav && `padding-${$nav}: ${$padding / 2}em`};
}
}
}
${({ $nav, $horizon, $timer, $padding }) => $nav &&
css `
&:last-child:not(:only-child) {
position: absolute;
display: flex;
height: auto;
${$nav && `${$nav}: 0;`}
${$horizon !== "center" && `${$horizon}: 0;`}
padding: ${$padding}em;
gap: 1em;
text-align: center;
@media all and (min-width: ${Root.Device.Desktop}px) {
padding: ${$padding}em ${$padding * 2}em;
}
& > * {
background: rgba(var(--white), var(--o045));
display: inline-block;
width: 0.5em;
height: 0.5em;
vertical-align: top;
cursor: pointer;
transition: 0.3s ease;
& ~ & {
margin-left: 1em;
}
&[data-active="true"] {
width: 8em;
background-image: linear-gradient(rgb(var(--white)), rgb(var(--white)));
background-size: 100% 100%;
background-position: left;
background-repeat: no-repeat;
animation: slide both 1 ${$timer / 1000}s ease;
}
}
}
`}
}
@media all and (max-width: ${Root.Device.Tablet}px) {
& > * {
&:first-child {
& > * {
padding: ${({ $padding }) => `${$padding * 0.875}em`};
}
}
}
}
@media all and (max-width: ${Root.Device.Mobile}px) {
& > * {
&:first-child {
& > * {
padding: ${({ $padding }) => `${$padding * 0.75}em`};
}
}
}
}
@keyframes slide {
0% {
background-size: 0% 100%;
}
100% {
background-size: 100% 100%;
}
}
`;
//# sourceMappingURL=Slide.styled.jsx.map