| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516 |
- @import "../variables";
- @import "variables";
- @import "terminal";
- @import "storefront";
- @import "admin-ui";
- @import "cube";
- @import "data-flow";
- .vendure-intro {
- --color-top: #17c1ff;
- --color-left: #30c6fd;
- --color-right: #13b7f3;
- --color-shadow: rgba(94, 94, 94, 0);
- --width-unit: 9vw;
- --border-width: calc(.0 * var(--width-unit));
- --border-style: dashed;
- --front-border-width: 0;
- --border-color: rgb(95, 95, 95);
- background: radial-gradient(ellipse at center, rgba(255,255,255,1) 0%, rgba(255,255,255,1) 56%, #d7d8d1 100%);
- margin: 0;
- overflow: hidden;
- box-sizing: border-box;
- height: 100vh;
- padding-top: 10vh;
- transition: padding-top 0.2s;
- @media all and (max-width: $sm-breakpoint) {
- padding-top: 10vh;
- }
- @media all and (min-height: 1000px) {
- padding-top: 5vh;
- }
- @media all and (min-width: $lg-breakpoint) {
- // --width-unit: 10vh;
- }
- }
- .intro-container {
- max-width: $container-max-width;
- margin: auto;
- position: relative;
- transition: opacity 1s;
- opacity: 0;
- &.visible {
- opacity: 1;
- }
- }
- .scene {
- perspective: calc(10 * var(--width-unit));
- transform-style: preserve-3d;
- display: flex;
- align-items: center;
- justify-content: center;
- height: 40vw;
- transform: rotateX(-45deg);
- transition: transform $transition-duration, perspective $transition-duration;
- font-family: sans-serif;
- @media all and (min-height: 1000px) {
- height: 50vw;
- }
- }
- .intro-title {
- top: 18vw;
- right: 36px;
- position: absolute;
- text-align: right;
- max-width: $lg-breakpoint;
- margin: auto;
- opacity: 0;
- transform: translateY(-20px);
- visibility: hidden;
- transition: visibility 0s, opacity 2s, transform 2.5s ease-out;
- &.visible {
- opacity: 1;
- transform: translateY(0);
- visibility: visible;
- }
- a:link, a:visited {
- color: $color-link;
- text-decoration: none;
- }
- a:hover {
- color: $color-link;
- }
- h1 {
- color: $brand-color;
- font-size: calc(0.9 * var(--width-unit));
- margin: 0 0 15px;
- font-family: $brand-font-face;
- }
- .subhead {
- max-width: calc(4 * var(--width-unit));
- font-size: calc(0.3 * var(--width-unit));
- color: desaturate($brand-color, 50%);
- margin: auto;
- }
- .more-icon {
- width: calc(1 * var(--width-unit));
- transform: rotateZ(180deg);
- opacity: 0.1;
- }
- @media all and (min-width: $lg-breakpoint) {
- h1 {
- font-size: 6em;
- }
- .subhead {
- font-size: 2em;
- }
- .more-icon {
- width: 7em;
- };
- }
- @media all and (min-height: 1000px) {
- top: 26vw;
- }
- @media all and (max-width: $sm-breakpoint) {
- top: 60vw;
- right: 0;
- text-align: center;
- padding: 0 24px;
- h1 {
- font-size: 4em;
- }
- .subhead {
- font-size: 1.5em;
- max-width: 100%;
- }
- }
- }
- .intro-controls {
- z-index: 1;
- text-align: center;
- .jump {
- button {
- border-radius: 50%;
- border: 1px;
- padding: 0;
- background-color: $gray-100;
- width: 16px;
- height: 16px;
- transition: background-color 0.8s;
- &.active {
- background-color: $gray-200;
- }
- }
- }
- button#replay {
- border: none;
- background: none;
- opacity: 0;
- transition: opacity 4s;
- &.visible {
- opacity: 0.3;
- }
- }
- }
- .intro-gql-logo {
- filter: saturate(0%);
- }
- /*
- * Makes the cubes aligned in a row
- */
- @mixin aligned {
- &.scene {
- transform: rotateX(0);
- }
- .cube {
- transform: rotateY(0);
- margin: calc(0.5 * var(--width-unit));
- }
- .cube__face {
- background-color: transparent;
- }
- .cube__face--front {
- background-color: $terminal-color;
- box-shadow: $shadow;
- }
- }
- @mixin focus-terminal {
- .cube1, .cube3 {
- max-width: 0px;
- .cube__face {
- background-color: transparent;
- box-shadow: 0px 6px 15px -2px transparent;
- }
- }
- .cube2 {
- .cube__face {
- background-color: transparent;
- box-shadow: 0px 6px 15px -2px transparent;
- }
- }
- .intro-terminal {
- font-size: calc(0.24 * var(--width-unit));
- width: calc(4 * var(--width-unit));
- height: calc(4 * var(--width-unit));
- top: calc(-1 * var(--width-unit));
- left: calc(-1 * var(--width-unit));
- box-shadow: $shadow;
- }
- .intro-text-area {
- padding: calc(0.4 * var(--width-unit)) calc(0.18 * var(--width-unit));
- }
- .intro-terminal-controls {
- position: relative;
- margin-left: calc(0.21 * var(--width-unit));
- margin-top: calc(0.07 * var(--width-unit));
- width: calc(0.1 * var(--width-unit));
- height: calc(0.1 * var(--width-unit));
- &:before {
- left: calc(-0.15 * var(--width-unit));
- width: calc(0.1 * var(--width-unit));
- height: calc(0.1 * var(--width-unit));
- }
- &:after {
- left: calc(0.15 * var(--width-unit));
- width: calc(0.1 * var(--width-unit));
- height: calc(0.1 * var(--width-unit));
- }
- }
- }
- @mixin dataFlowing {
- .data-flow-left {
- width: calc(1 * var(--width-unit));
- left: calc(-1 * var(--width-unit));
- transition: width 0.5s 0.3s, left 0.5s 0.3s;
- }
- .data-flow-right {
- width: calc(1 * var(--width-unit));
- right: calc(-1 * var(--width-unit));
- transition: width 0.5s 0.6s, right 0.5s 0.6s;
- }
- .cube1 {
- .cube__face--front {
- background-color: $brand-color;
- transition: background-color 0.3s 0.8s;
- }
- }
- .cube3 {
- .cube__face--front {
- background-color: $brand-color;
- transition: background-color 0.3s 1.1s;
- }
- }
- .intro-gql-logo {
- opacity: 1;
- transition: opacity 4.6s;
- img {
- transform: translateY(0);
- }
- }
- }
- .scene-0 {
- @include aligned;
- @include focus-terminal;
- .intro-admin-ui, .intro-storefront {
- opacity: 0;
- }
- }
- .scene-1 {
- @include aligned;
- @include focus-terminal;
- .intro-admin-ui, .intro-storefront {
- opacity: 0;
- }
- }
- .scene-2 {
- @include aligned;
- .intro-admin-ui, .intro-storefront {
- opacity: 0;
- }
- .cube__face--front {
- background-color: $terminal-color;
- }
- .cube1 {
- .cube__face {
- transition: background-color 0.8s 0s, box-shadow 0.5s 0s;
- }
- }
- .cube2 {
- .cube__face {
- transition: background-color 0.8s 1s, box-shadow 0.5s 0.4s;
- }
- }
- .cube3 {
- .cube__face {
- transition: background-color 0.8s 0.3s, box-shadow 0.5s 0.3s;
- }
- }
- }
- .scene-3 {
- @include aligned;
- @include dataFlowing;
- .intro-admin-ui, .intro-storefront {
- opacity: 0;
- }
- }
- .scene-4 {
- @include aligned;
- @include dataFlowing;
- .intro-admin-ui {
- opacity: 1;
- transition: opacity 0.8s 0.3s;
- }
- .intro-storefront {
- opacity: 1;
- transition: opacity 0.8s 0.5s;
- }
- }
- .scene-5 {
- .intro-admin-ui {
- opacity: 0;
- transition: opacity 0.2s;
- }
- .intro-storefront {
- opacity: 0;
- transition: opacity 0.2s;
- }
- .intro-gql-logo {
- opacity: 1;
- }
- .intro-terminal {
- opacity: 0;
- }
- .cube2, .cube3 {
- .cube__face--front {
- background-color: var(--color-right);
- }
- }
- $cube-easing: cubic-bezier(.11,.73,.84,.55);
- $cube-duration: 0.5s;
- .cube1 {
- .cube__face {
- transition: transform $cube-duration, background-color 0.1s 0.1s;
- }
- }
- .cube2 {
- .cube__face {
- transition: transform $cube-duration, background-color 0.3s 0.1s;
- }
- }
- .cube3 {
- .cube__face {
- transition: transform $cube-duration, background-color 0.1s 0.1s;
- }
- }
- .cube__face {
- --projection: 1.3;
- &.cube__face--front {
- animation: projectFront;
- animation-duration: $cube-duration;
- animation-fill-mode: both;
- animation-timing-function: $cube-easing;
- }
- &.cube__face--right {
- transform: rotateY( 90deg) translateZ(calc(1 * var(--width-unit)));
- }
- &.cube__face--back {
- transform: rotateY(180deg) translateZ(calc(1 * var(--width-unit)));
- }
- &.cube__face--left {
- animation: projectLeft;
- animation-duration: $cube-duration;
- animation-fill-mode: both;
- animation-timing-function: $cube-easing;
- }
- &.cube__face--top {
- animation: projectTop;
- animation-duration: $cube-duration;
- animation-fill-mode: both;
- animation-timing-function: $cube-easing;
- }
- &.cube__face--bottom {
- transform: rotateX(-90deg) translateZ(calc(1 * var(--width-unit)));
- }
- }
- }
- .scene-6 {
- @media all and (min-width: $sm-breakpoint) {
- transform: rotateX(-45deg) translateX(calc(-2 * var(--width-unit)));
- }
- .cube {
- transition: none;
- }
- .intro-admin-ui {
- opacity: 0;
- transition: opacity 0.2s;
- }
- .intro-storefront {
- opacity: 0;
- transition: opacity 0.2s;
- }
- .intro-gql-logo {
- opacity: 1;
- }
- .intro-terminal {
- opacity: 0;
- }
- .cube2, .cube3 {
- .cube__face--front {
- background-color: var(--color-right);
- }
- }
- .cube__face {
- transition: none;
- }
- $shimmerDuration: 8s;
- $shimmerTiming: ease-in-out;
- .cube1 {
- .cube__face--top { animation: shimmerTop $shimmerDuration $shimmerTiming $shimmerDuration * 0.02 infinite; }
- .cube__face--left { animation: shimmerLeft $shimmerDuration $shimmerTiming infinite; }
- }
- .cube2 {
- .cube__face--top { animation: shimmerTop $shimmerDuration $shimmerTiming $shimmerDuration * 0.05 infinite; }
- .cube__face--left { animation: shimmerLeft $shimmerDuration $shimmerTiming $shimmerDuration * 0.05 infinite; }
- .cube__face--front { animation: shimmerRight $shimmerDuration $shimmerTiming $shimmerDuration * 0.082 infinite; }
- }
- .cube3 {
- .cube__face--top { animation: shimmerTop $shimmerDuration $shimmerTiming $shimmerDuration * 0.1 infinite; }
- .cube__face--front { animation: shimmerRight $shimmerDuration $shimmerTiming $shimmerDuration * 0.12 infinite; }
- }
- }
- @keyframes projectFront {
- 0% {
- transform: rotateY(0deg) translateZ(calc(1 * var(--width-unit)));
- }
- 20% {
- transform: rotateY(0deg) translateZ(calc(var(--projection) * var(--width-unit)));
- }
- 100% {
- transform: rotateY(0deg) translateZ(calc(1 * var(--width-unit)));
- }
- }
- @keyframes projectLeft {
- 0% {
- transform: rotateY(-90deg) translateZ(calc(1 * var(--width-unit)));
- }
- 20% {
- transform: rotateY(-90deg) translateZ(calc(var(--projection) * var(--width-unit)));
- }
- 100% {
- transform: rotateY(-90deg) translateZ(calc(1 * var(--width-unit)));
- }
- }
- @keyframes projectTop {
- 0% {
- transform: rotateX( 90deg) translateZ(calc(1 * var(--width-unit)));
- }
- 20% {
- transform: rotateX( 90deg) translateZ(calc(var(--projection) * var(--width-unit)));
- }
- 100% {
- transform: rotateX( 90deg) translateZ(calc(1 * var(--width-unit)));
- }
- }
- @keyframes shimmerTop {
- 10% {
- background-color: #99e9ff;
- }
- 20% {
- background-color: var(--color-top);
- }
- }
- @keyframes shimmerLeft {
- 10% {
- background-color: #99e4ff;;
- }
- 20% {
- background-color: var(--color-left);
- }
- }
- @keyframes shimmerRight {
- 10% {
- background-color: #40ccff;;
- }
- 20% {
- background-color: var(--color-right);
- }
- }
|