diff --git a/src/components/ClientOnlyWorkflow/index.js b/src/components/ClientOnlyWorkflow/index.js index 4aaf973..88f71cc 100644 --- a/src/components/ClientOnlyWorkflow/index.js +++ b/src/components/ClientOnlyWorkflow/index.js @@ -1,4 +1,4 @@ -import React, { useRef, useEffect } from 'react'; +import React from 'react'; import clsx from 'clsx'; import styles from './styles.module.scss'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' @@ -64,43 +64,43 @@ export default function ClientOnlyWorkflow() {
- +

Thing

- +

Thing

- +

TD

- +

TM

- +

Domus TDD

- +

TD Tools

- +

Playground

- +

node-wot

- +

dart_wot

- +

Node-RED

diff --git a/src/components/ClientOnlyWorkflow/styles.module.scss b/src/components/ClientOnlyWorkflow/styles.module.scss index ab55900..9c2b5e1 100644 --- a/src/components/ClientOnlyWorkflow/styles.module.scss +++ b/src/components/ClientOnlyWorkflow/styles.module.scss @@ -14,14 +14,21 @@ ". tm . . dartWot" ". . domus . nodeRed"; + --_item-width: clamp(2.5rem, 1.7857142857142858rem + 3.571428571428571vw, 5rem); + --_item-gap: clamp(0.25rem, 0.17857142857142858rem + 0.35714285714285715vw, 0.5rem); + --_item-font-size: clamp(0.35rem, 0.25rem + 0.49999999999999994vw, 0.7rem); + --_item-inactive-icon: clamp(1.25rem, 0.9642857142857143rem + 1.4285714285714286vw, 2.25rem); + --_item-active-icon: clamp(1rem, 0.7857142857142857rem + 1.0714285714285714vw, 1.75rem); + --_item-translate-icon: clamp(0.2rem, 0.14285714285714288rem + 0.2857142857142857vw, 0.4rem); + &__line { position: absolute; } .line1 { - top: 6rem; - left: 6rem; - width: 8.25rem; + top: clamp(3rem, 2.142857142857143rem + 4.285714285714286vw, 6rem); + left: clamp(3rem, 2.142857142857143rem + 4.285714285714286vw, 6rem); + width: clamp(5rem, 4.071428571428571rem + 4.642857142857143vw, 8.25rem); height: auto; stroke-dasharray: 12rem; stroke-dashoffset: 12rem; @@ -29,29 +36,29 @@ } .line2 { - top: 6rem; - left: 14.6rem; + top: clamp(3.25rem, 2.5357142857142856rem + 3.571428571428571vw, 5.75rem); + left: clamp(8.5rem, 6.757142857142857rem + 8.714285714285714vw, 14.6rem); width: auto; - height: 14rem; + height: clamp(8rem, 6.214285714285714rem + 8.928571428571429vw, 14.25rem); stroke-dasharray: 15.5rem; stroke-dashoffset: 15.5rem; animation: animateLine2 10s ease-in-out infinite 250ms; } .line3 { - top: 11rem; - left: 22.25rem; + top: clamp(6.25rem, 4.892857142857143rem + 6.785714285714286vw, 11rem); + left: clamp(12.5rem, 9.714285714285715rem + 13.928571428571429vw, 22.25rem); width: auto; - height: 9rem; - stroke-dasharray: 10rem; - stroke-dashoffset: 10rem; + height: clamp(5rem, 3.857142857142857rem + 5.714285714285714vw, 9rem); + stroke-dasharray: 10.5rem; + stroke-dashoffset: 10.5rem; animation: animateLine3 10s ease-in-out infinite 250ms; } .line4 { - top: 20.5rem; - left: 6rem; - width: 2.75rem; + left: clamp(3.25rem, 2.4642857142857144rem + 3.9285714285714284vw, 6rem); + top: clamp(11.25rem, 8.607142857142858rem + 13.214285714285715vw, 20.5rem); + width: clamp(2rem, 1.7857142857142856rem + 1.0714285714285714vw, 2.75rem); height: auto; stroke-dasharray: 5rem; stroke-dashoffset: 5rem; @@ -59,20 +66,20 @@ } .line5 { - top: 14.5rem; - left: 9.5rem; + top: clamp(8.25rem, 6.464285714285714rem + 8.928571428571429vw, 14.5rem); + left: clamp(5.5rem, 4.357142857142858rem + 5.714285714285714vw, 9.5rem); width: auto; - height: 8.5rem; + height: clamp(4.75rem, 3.678571428571429rem + 5.357142857142857vw, 8.5rem); stroke-dasharray: 14.5rem; stroke-dashoffset: 14.5rem; animation: animateLine5 10s ease-in-out infinite 5.25s; } .line6 { - top: 14.5rem; - left: 22.5rem; + top: clamp(8.25rem, 6.464285714285714rem + 8.928571428571429vw, 14.5rem); + left: clamp(12.5rem, 9.642857142857142rem + 14.285714285714285vw, 22.5rem); width: auto; - height: 8.5rem; + height: clamp(5rem, 4rem + 5vw, 8.5rem); stroke-dasharray: 10.5rem; stroke-dashoffset: 10.5rem; animation: animateLine6 10s ease-in-out infinite 5.25s; @@ -225,7 +232,7 @@ &__item { aspect-ratio: 1/1; - min-width: clamp(4rem, 2.857142857142857rem + 2.380952380952381vw, 5rem); + min-width: var(--_item-width); background-color: var(--neutral-clr-75); border-radius: 5px; border: 1px solid var(--neutral-clr-300); @@ -238,8 +245,8 @@ gap: 0; p { - font-size: 0.6rem; - font-size: clamp(0.6rem, 0.4857142857142857rem + 0.23809523809523803vw, 0.7rem); + font-size: 0.35rem; + font-size: var(--_item-font-size); line-height: normal; font-weight: var(--fw-bold); font-family: var(--ff-primary); @@ -249,9 +256,9 @@ } .icon { - transform: translateY(.4rem); - font-size: 1.75rem; - font-size: clamp(1.75rem, 1.1785714285714286rem + 1.1904761904761905vw, 2.25rem); + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); transition: all 350ms ease-in-out; path { @@ -272,23 +279,22 @@ box-shadow: 0 0 0 var(--box-shadow-clr); gap: 0; } - 4% { border-color: var(--neutral-clr-75); background-color: var(--neutral-clr-50); transform: scale(1.05); box-shadow: 3px 3px 10px var(--box-shadow-clr); - gap: .5rem; + gap: 0.25rem; + gap: var(--_item-gap); } - 30% { border-color: var(--neutral-clr-75); background-color: var(--neutral-clr-50); transform: scale(1.05); box-shadow: 3px 3px 10px var(--box-shadow-clr); - gap: .5rem; + gap: 0.25rem; + gap: var(--_item-gap); } - 38% { border-color: var(--neutral-clr-300); background-color: var(--neutral-clr-75); @@ -296,7 +302,6 @@ box-shadow: 0 0 0 var(--box-shadow-clr); gap: 0; } - 100% { border-color: var(--neutral-clr-300); background-color: var(--neutral-clr-75); @@ -308,33 +313,29 @@ @keyframes showItemIconSvg { 0% { - transform: translateY(.4rem); - font-size: 1.75rem; - font-size: clamp(1.75rem, 1.1785714285714286rem + 1.1904761904761905vw, 2.25rem); + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); } - 6% { transform: translateY(0); - font-size: 1.5rem; - font-size: clamp(1.5rem, 1.2142857142857144rem + 0.5952380952380952vw, 1.75rem); + font-size: 1rem; + font-size: var(--_item-active-icon); } - 30% { transform: translateY(0); - font-size: 1.5rem; - font-size: clamp(1.5rem, 1.2142857142857144rem + 0.5952380952380952vw, 1.75rem); + font-size: 1rem; + font-size: var(--_item-active-icon); } - 38% { - transform: translateY(.4rem); - font-size: 1.75rem; - font-size: clamp(1.75rem, 1.1785714285714286rem + 1.1904761904761905vw, 2.25rem); + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); } - 100% { - transform: translateY(.4rem); - font-size: 1.75rem; - font-size: clamp(1.75rem, 1.1785714285714286rem + 1.1904761904761905vw, 2.25rem); + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); } } @@ -343,22 +344,18 @@ stroke-width: 20px; fill: var(--neutral-clr-75); } - 4% { stroke-width: 0; fill: var(--ifm-color-primary); } - 30% { stroke-width: 0; fill: var(--ifm-color-primary); } - 38% { stroke-width: 20px; fill: var(--neutral-clr-75); } - 100% { stroke-width: 20px; fill: var(--neutral-clr-75); @@ -370,22 +367,18 @@ stroke-width: 20px; fill: var(--neutral-clr-75); } - 4% { stroke-width: 0; fill: var(--ifm-color-secondary); } - 30% { stroke-width: 0; fill: var(--ifm-color-secondary); } - 38% { stroke-width: 20px; fill: var(--neutral-clr-75); } - 100% { stroke-width: 20px; fill: var(--neutral-clr-75); @@ -397,22 +390,18 @@ transform: translateY(.9rem); opacity: 0; } - 4% { transform: translateY(0); opacity: 1; } - 30% { transform: translateY(0); opacity: 1; } - 38% { transform: translateY(.9rem); opacity: 0; } - 100% { transform: translateY(.9rem); opacity: 0; @@ -423,19 +412,15 @@ 0% { stroke-dashoffset: 12rem; } - 4% { stroke-dashoffset: 0; } - 30% { stroke-dashoffset: 0; } - 38% { stroke-dashoffset: -12rem; } - 100% { stroke-dashoffset: -12rem; } @@ -445,19 +430,15 @@ 0% { stroke-dashoffset: 15.5rem; } - 4% { stroke-dashoffset: 0; } - 30% { stroke-dashoffset: 0; } - 38% { stroke-dashoffset: -15.5rem; } - 100% { stroke-dashoffset: -15.5rem; } @@ -465,23 +446,19 @@ @keyframes animateLine3 { 0% { - stroke-dashoffset: 10rem; + stroke-dashoffset: 10.5rem; } - 4% { stroke-dashoffset: 0; } - 30% { stroke-dashoffset: 0; } - 38% { - stroke-dashoffset: -10rem; + stroke-dashoffset: -10.5rem; } - 100% { - stroke-dashoffset: -10rem; + stroke-dashoffset: -10.5rem; } } @@ -489,19 +466,15 @@ 0% { stroke-dashoffset: 5rem; } - 4% { stroke-dashoffset: 0; } - 30% { stroke-dashoffset: 0; } - 38% { stroke-dashoffset: -5rem; } - 100% { stroke-dashoffset: -5rem; } @@ -511,19 +484,15 @@ 0% { stroke-dashoffset: 14.5rem; } - 4% { stroke-dashoffset: 0; } - 30% { stroke-dashoffset: 0; } - 38% { stroke-dashoffset: -14.5rem; } - 100% { stroke-dashoffset: -14.5rem; } @@ -533,19 +502,15 @@ 0% { stroke-dashoffset: 10.5rem; } - 4% { stroke-dashoffset: 0; } - 30% { stroke-dashoffset: 0; } - 38% { stroke-dashoffset: -10.5rem; } - 100% { stroke-dashoffset: -10.5rem; } diff --git a/src/components/FeedbackPrompt/styles.module.scss b/src/components/FeedbackPrompt/styles.module.scss index d0d4fc2..c1ca54b 100644 --- a/src/components/FeedbackPrompt/styles.module.scss +++ b/src/components/FeedbackPrompt/styles.module.scss @@ -20,6 +20,7 @@ width: 12rem; height: 1.5rem; overflow: hidden; + pointer-events: none; p { position: absolute; diff --git a/src/components/PlatformWorkflow/index.js b/src/components/PlatformWorkflow/index.js new file mode 100644 index 0000000..a7c7944 --- /dev/null +++ b/src/components/PlatformWorkflow/index.js @@ -0,0 +1,171 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faQuestion, faFile, faLaptopCode, faHouse, faScrewdriverWrench, faDisplay, faMobile, faCubes } from '@fortawesome/free-solid-svg-icons' + +export default function PlatformWorkflow() { + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +

Thing

+
+
+ +

Thing

+
+
+ + + + + + + + + + + + + + + +

Thingweb

+
+
+ +

TD

+
+
+ +

TM

+
+
+ +

Domus TDD

+
+
+ +

TD Tools

+
+
+ +

Playground

+
+
+ +

node-wot

+
+
+ +

dart_wot

+
+
+ +

Node-RED

+
+
+ ); +} \ No newline at end of file diff --git a/src/components/PlatformWorkflow/styles.module.scss b/src/components/PlatformWorkflow/styles.module.scss new file mode 100644 index 0000000..9f7430b --- /dev/null +++ b/src/components/PlatformWorkflow/styles.module.scss @@ -0,0 +1,583 @@ +.PlatformWorkflow { + position: relative; + padding: 1rem; + width: 100%; + height: 100%; + display: grid; + grid: repeat(5, 1fr); + gap: .5rem; + grid-template-areas: + ". td . nodeWot ." + "thing1 . . . tools" + "tm . thingweb . playground" + "domus . . . nodeRed" + ". thing2 . dartWot ."; + + --_item-width: clamp(2.5rem, 1.7857142857142858rem + 3.571428571428571vw, 5rem); + --_item-gap: clamp(0.25rem, 0.17857142857142858rem + 0.35714285714285715vw, 0.5rem); + --_item-font-size: clamp(0.35rem, 0.25rem + 0.49999999999999994vw, 0.7rem); + --_item-inactive-icon: clamp(1.25rem, 0.9642857142857143rem + 1.4285714285714286vw, 2.25rem); + --_item-active-icon: clamp(1rem, 0.7857142857142857rem + 1.0714285714285714vw, 1.75rem); + --_thingweb-inactive-icon: clamp(1.4rem, 1.0857142857142856rem + 1.5714285714285716vw, 2.5rem); + --_thingweb-active-icon: clamp(1.2rem, 1.0428571428571427rem + 0.7857142857142858vw, 1.75rem); + --_item-translate-icon: clamp(0.2rem, 0.14285714285714288rem + 0.2857142857142857vw, 0.4rem); + + &__line { + position: absolute; + } + + .line1 { + top: clamp(2.25rem, 1.9642857142857144rem + 1.4285714285714286vw, 3.25rem); + left: clamp(6.5rem, 5.214285714285714rem + 6.428571428571428vw, 11rem); + width: clamp(1.5rem, 1.1428571428571428rem + 1.7857142857142856vw, 2.75rem); + height: auto; + stroke-dasharray: 10rem; + stroke-dashoffset: 10rem; + animation: animateLine1 10s ease-in-out infinite 250ms; + } + .line2 { + top: clamp(2.25rem, 1.9642857142857144rem + 1.4285714285714286vw, 3.25rem); + left: clamp(8.5rem, 6.642857142857142rem + 9.285714285714286vw, 15rem); + width: clamp(1.5rem, 1.1428571428571428rem + 1.7857142857142856vw, 2.75rem); + height: auto; + stroke-dasharray: 10rem; + stroke-dashoffset: 10rem; + animation: animateLine1 10s ease-in-out infinite 250ms; + } + .line6 { + top: clamp(9.5rem, 7.428571428571429rem + 10.357142857142856vw, 16.75rem); + left: clamp(8.5rem, 6.642857142857142rem + 9.285714285714286vw, 15rem); + width: clamp(1.5rem, 1.1428571428571428rem + 1.7857142857142856vw, 2.75rem); + height: auto; + stroke-dasharray: 10rem; + stroke-dashoffset: 10rem; + animation: animateLine1 10s ease-in-out infinite 250ms; + } + .line7 { + top: clamp(9.4rem, 7.300000000000001rem + 10.5vw, 16.75rem); + left: clamp(6.4rem, 5.1571428571428575rem + 6.2142857142857135vw, 10.75rem); + width: clamp(1.65rem, 1.2642857142857142rem + 1.9285714285714288vw, 3rem); + height: auto; + stroke-dasharray: 10rem; + stroke-dashoffset: 10rem; + animation: animateLine1 10s ease-in-out infinite 250ms; + } + + .line3 { + top: clamp(5.25rem, 4.178571428571429rem + 5.357142857142857vw, 9rem); + left: clamp(9.5rem, 7.357142857142858rem + 10.714285714285714vw, 17rem); + width: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + height: auto; + stroke-dasharray: 10rem; + stroke-dashoffset: 10rem; + animation: animateLine1 10s ease-in-out infinite 250ms; + } + + .line5 { + top: clamp(8.75rem, 6.821428571428571rem + 9.642857142857142vw, 15.5rem); + left: clamp(9.5rem, 7.357142857142858rem + 10.714285714285714vw, 17rem); + width: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + height: auto; + stroke-dasharray: 10rem; + stroke-dashoffset: 10rem; + animation: animateLine1 10s ease-in-out infinite 250ms; + } + + .line8 { + top: clamp(8.75rem, 6.821428571428571rem + 9.642857142857142vw, 15.5rem); + left: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + width: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + height: auto; + stroke-dasharray: 10rem; + stroke-dashoffset: 10rem; + animation: animateLine1 10s ease-in-out infinite 250ms; + } + + .line10 { + top: clamp(5.25rem, 4.035714285714286rem + 6.071428571428571vw, 9.5rem); + left: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + width: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + height: auto; + stroke-dasharray: 10rem; + stroke-dashoffset: 10rem; + animation: animateLine1 10s ease-in-out infinite 250ms; + } + + .line4 { + top: clamp(8.25rem, 6.464285714285714rem + 8.928571428571429vw, 14.5rem); + left: clamp(9.5rem, 7.357142857142858rem + 10.714285714285714vw, 17rem); + width: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + height: auto; + stroke-dasharray: 6rem; + stroke-dashoffset: 6rem; + animation: animateLine2 10s ease-in-out infinite 250ms; + transform: rotate(180deg); + } + + .line9 { + top: clamp(8.25rem, 6.464285714285714rem + 8.928571428571429vw, 14.5rem); + left: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + width: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + height: auto; + stroke-dasharray: 6rem; + stroke-dashoffset: 6rem; + animation: animateLine2 10s ease-in-out infinite 250ms; + } + + + .thing1 { + grid-area: thing1; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showThingwebSvg 10s ease-in-out infinite; + path { + animation: showThingwebPath 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .thing2 { + grid-area: thing2; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showItemIconSvg 10s ease-in-out infinite; + path { + animation: showItemIconPathSecondary 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .td { + grid-area: td; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showItemIconSvg 10s ease-in-out infinite; + path { + animation: showItemIconPathSecondary 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .tm { + grid-area: tm; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showItemIconSvg 10s ease-in-out infinite; + path { + animation: showItemIconPathSecondary 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .nodeWot { + grid-area: nodeWot; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showItemIconSvg 10s ease-in-out infinite; + path { + animation: showItemIconPathPrimary 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .dartWot { + grid-area: dartWot; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showItemIconSvg 10s ease-in-out infinite; + path { + animation: showItemIconPathPrimary 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .nodeRed { + grid-area: nodeRed; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showItemIconSvg 10s ease-in-out infinite; + path { + animation: showItemIconPathSecondary 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .domus { + grid-area: domus; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showItemIconSvg 10s ease-in-out infinite; + path { + animation: showItemIconPathPrimary 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .tools { + grid-area: tools; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showItemIconSvg 10s ease-in-out infinite; + path { + animation: showItemIconPathSecondary 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .playground { + grid-area: playground; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showItemIconSvg 10s ease-in-out infinite; + path { + animation: showItemIconPathPrimary 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + .thingweb { + grid-area: thingweb; + animation: showItemBox 10s ease-in-out infinite; + .icon { + animation: showThingwebSvg 10s ease-in-out infinite; + path { + animation: showThingwebPath 10s ease-in-out infinite; + } + } + p { + animation: showItemText 10s ease-in-out infinite; + } + } + + &__item { + aspect-ratio: 1/1; + min-width: var(--_item-width); + background-color: var(--neutral-clr-75); + border-radius: 5px; + border: 1px solid var(--neutral-clr-300); + transition: all 350ms ease-in-out; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + overflow: hidden; + gap: 0; + + p { + font-size: 0.35rem; + font-size: var(--_item-font-size); + line-height: normal; + font-weight: var(--fw-bold); + font-family: var(--ff-primary); + opacity: 0; + transform: translateY(.9rem); + } + + .icon { + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); + + path { + stroke: var(--neutral-clr-300); + stroke-width: 20px; + fill: var(--neutral-clr-75); + } + + &.thingwebLogo { + height: var(--_thingweb-inactive-icon); + + path { + stroke-width: .75px; + } + } + } + } +} + +@keyframes showItemBox { + 0% { + border-color: var(--neutral-clr-300); + background-color: var(--neutral-clr-75); + transform: scale(1); + box-shadow: 0 0 0 var(--box-shadow-clr); + gap: 0; + } + + 4% { + border-color: var(--neutral-clr-75); + background-color: var(--neutral-clr-50); + transform: scale(1.05); + box-shadow: 3px 3px 10px var(--box-shadow-clr); + gap: 0.25rem; + gap: var(--_item-gap); + } + + 50% { + border-color: var(--neutral-clr-75); + background-color: var(--neutral-clr-50); + transform: scale(1.05); + box-shadow: 3px 3px 10px var(--box-shadow-clr); + gap: 0.25rem; + gap: var(--_item-gap); + } + + 58% { + border-color: var(--neutral-clr-300); + background-color: var(--neutral-clr-75); + transform: scale(1); + box-shadow: 0 0 0 var(--box-shadow-clr); + gap: 0; + } + + 100% { + border-color: var(--neutral-clr-300); + background-color: var(--neutral-clr-75); + transform: scale(1); + box-shadow: 0 0 0 var(--box-shadow-clr); + gap: 0; + } +} + +@keyframes showItemIconSvg { + 0% { + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); + } + + 6% { + transform: translateY(0); + font-size: 1rem; + font-size: var(--_item-active-icon); + } + + 50% { + transform: translateY(0); + font-size: 1rem; + font-size: var(--_item-active-icon); + } + + 58% { + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); + } + + 100% { + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); + } +} + +@keyframes showThingwebSvg { + 0% { + transform: translateY(var(--_item-translate-icon)); + height: var(--_thingweb-inactive-icon); + } + + 6% { + transform: translateY(0); + height: var(--_thingweb-active-icon); + } + + 50% { + transform: translateY(0); + height: var(--_thingweb-active-icon); + } + + 58% { + transform: translateY(var(--_item-translate-icon)); + height: var(--_thingweb-inactive-icon); + + } + + 100% { + transform: translateY(var(--_item-translate-icon)); + height: var(--_thingweb-inactive-icon); + + } +} + +@keyframes showThingwebPath { + 0% { + stroke-width: .75px; + fill: var(--neutral-clr-75); + } + + 4% { + stroke-width: 0; + fill: var(--ifm-color-primary); + } + + 50% { + stroke-width: 0; + fill: var(--ifm-color-primary); + } + + 58% { + stroke-width: .75px; + fill: var(--neutral-clr-75); + } + + 100% { + stroke-width: .75px; + fill: var(--neutral-clr-75); + } +} + +@keyframes showItemIconPathPrimary { + 0% { + stroke-width: 20px; + fill: var(--neutral-clr-75); + } + + 4% { + stroke-width: 0; + fill: var(--ifm-color-primary); + } + + 50% { + stroke-width: 0; + fill: var(--ifm-color-primary); + } + + 58% { + stroke-width: 20px; + fill: var(--neutral-clr-75); + } + + 100% { + stroke-width: 20px; + fill: var(--neutral-clr-75); + } +} + +@keyframes showItemIconPathSecondary { + 0% { + stroke-width: 20px; + fill: var(--neutral-clr-75); + } + + 4% { + stroke-width: 0; + fill: var(--ifm-color-secondary); + } + + 50% { + stroke-width: 0; + fill: var(--ifm-color-secondary); + } + + 58% { + stroke-width: 20px; + fill: var(--neutral-clr-75); + } + + 100% { + stroke-width: 20px; + fill: var(--neutral-clr-75); + } +} + +@keyframes showItemText { + 0% { + transform: translateY(.9rem); + opacity: 0; + } + + 4% { + transform: translateY(0); + opacity: 1; + } + + 50% { + transform: translateY(0); + opacity: 1; + } + + 58% { + transform: translateY(.9rem); + opacity: 0; + } + + 100% { + transform: translateY(.9rem); + opacity: 0; + } +} + +@keyframes animateLine1 { + 0% { + stroke-dashoffset: 10rem; + } + + 4% { + stroke-dashoffset: 0; + } + + 50% { + stroke-dashoffset: 0; + } + + 58% { + stroke-dashoffset: -10rem; + } + + 100% { + stroke-dashoffset: -10rem; + } +} + +@keyframes animateLine2 { + 0% { + stroke-dashoffset: 6rem; + } + + 4% { + stroke-dashoffset: 0; + } + + 50% { + stroke-dashoffset: 0; + } + + 58% { + stroke-dashoffset: -6rem; + } + + 100% { + stroke-dashoffset: -6rem; + } +} \ No newline at end of file diff --git a/src/components/SDKWorkflow/index.js b/src/components/SDKWorkflow/index.js index 941c073..b76c660 100644 --- a/src/components/SDKWorkflow/index.js +++ b/src/components/SDKWorkflow/index.js @@ -1,18 +1,102 @@ -import React, { useRef, useEffect } from 'react'; +import React from 'react'; import clsx from 'clsx'; import styles from './styles.module.scss'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' -import { faLightbulb, faTemperatureHalf, faFile, faLaptopCode, faDisplay, faMobile, faCubes, faTablet } from '@fortawesome/free-solid-svg-icons' +import { faFile, faLaptopCode, faDisplay, faMobile, faTablet } from '@fortawesome/free-solid-svg-icons' export default function SDKWorkflow() { return (
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- + + + + + + + + + + + + + + +

Thing

- + + + + + + + + + + + + + + +

Thing

diff --git a/src/components/SDKWorkflow/styles.module.scss b/src/components/SDKWorkflow/styles.module.scss index c0647cc..98f4269 100644 --- a/src/components/SDKWorkflow/styles.module.scss +++ b/src/components/SDKWorkflow/styles.module.scss @@ -4,19 +4,87 @@ width: 100%; height: 100%; display: grid; - grid: repeat(6, 1fr) / repeat(5, 1fr); + grid: repeat(5, 1fr); gap: .5rem; grid-template-areas: - ". . td . ." - ". . . . desktop" - "thing1 . . nodeWot ." + ". . td desktop ." + "thing1 . nodeWot . ." ". tm . . phone" "thing2 . dartWot . tablet" ". . . nodeRed ."; - // &__line { - // position: absolute; - // } + --_item-width: clamp(2.5rem, 1.7857142857142858rem + 3.571428571428571vw, 5rem); + --_item-gap: clamp(0.25rem, 0.17857142857142858rem + 0.35714285714285715vw, 0.5rem); + --_item-font-size: clamp(0.35rem, 0.25rem + 0.49999999999999994vw, 0.7rem); + --_item-inactive-icon: clamp(1.25rem, 0.9642857142857143rem + 1.4285714285714286vw, 2.25rem); + --_item-active-icon: clamp(1rem, 0.7857142857142857rem + 1.0714285714285714vw, 1.75rem); + --_thingweb-inactive-icon: clamp(1.4rem, 1.0857142857142856rem + 1.5714285714285716vw, 2.5rem); + --_thingweb-active-icon: clamp(1.2rem, 1.0428571428571427rem + 0.7857142857142858vw, 1.75rem); + --_item-translate-icon: clamp(0.2rem, 0.14285714285714288rem + 0.2857142857142857vw, 0.4rem); + + &__line { + position: absolute; + } + + .line1 { + top: clamp(5.25rem, 4.178571428571429rem + 5.357142857142857vw, 9rem); + left: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + width: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + height: auto; + stroke-dasharray: 8rem; + stroke-dashoffset: 8rem; + animation: animateLine1 10s ease-in-out infinite 250ms; + } + + .line2 { + top: clamp(3.35rem, 2.6642857142857146rem + 3.428571428571428vw, 5.75rem); + left: clamp(9.35rem, 7.235714285714286rem + 10.571428571428571vw, 16.75rem); + width: clamp(2rem, 1.5714285714285714rem + 2.142857142857143vw, 3.5rem); + height: auto; + stroke-dasharray: 6rem; + stroke-dashoffset: 6rem; + animation: animateLine2 10s ease-in-out infinite 250ms; + } + + .line3 { + top: clamp(11.25rem, 8.75rem + 12.5vw, 20rem); + left: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + width: clamp(3.5rem, 2.7857142857142856rem + 3.571428571428571vw, 6rem); + height: auto; + stroke-dasharray: 8rem; + stroke-dashoffset: 8rem; + animation: animateLine3 10s ease-in-out infinite 5.25s; + } + + .line4 { + top: clamp(8.25rem, 6.392857142857142rem + 9.285714285714286vw, 14.75rem); + left: clamp(8.25rem, 6.535714285714286rem + 8.571428571428571vw, 14.25rem); + width: clamp(5.75rem, 4.821428571428571rem + 4.642857142857143vw, 9rem); + height: auto; + stroke-dasharray: 11rem; + stroke-dashoffset: 11rem; + animation: animateLine4 10s ease-in-out infinite 5.25s; + } + + .line5 { + top: clamp(12.5rem, 9.642857142857142rem + 14.285714285714285vw, 22.5rem); + left: clamp(2.25rem, 2.0357142857142856rem + 1.0714285714285714vw, 3rem); + width: clamp(8rem, 6rem + 10vw, 15rem); + height: auto; + stroke-dasharray: 17rem; + stroke-dashoffset: 17rem; + animation: animateLine5 10s ease-in-out infinite 5.25s; + } + + .line6 { + top: clamp(12.5rem, 9.642857142857142rem + 14.285714285714285vw, 22.5rem); + left: clamp(12.25rem, 9.464285714285715rem + 13.928571428571429vw, 22rem); + width: clamp(2rem, 1.5rem + 2.5vw, 3.75rem); + height: auto; + stroke-dasharray: 6rem; + stroke-dashoffset: 6rem; + animation: animateLine6 10s ease-in-out infinite 5.25s; + } .thing1 { @@ -24,10 +92,10 @@ animation: showItemBox 10s ease-in-out infinite; .icon { - animation: showItemIconSvg 10s ease-in-out infinite; + animation: showThingwebSvg 10s ease-in-out infinite; path { - animation: showItemIconPathPrimary 10s ease-in-out infinite; + animation: showThingwebPath 10s ease-in-out infinite; } } @@ -41,10 +109,10 @@ animation: showItemBox 10s ease-in-out infinite 5s; .icon { - animation: showItemIconSvg 10s ease-in-out infinite 5s; + animation: showThingwebSvg 10s ease-in-out infinite 5s; path { - animation: showItemIconPathPrimary 10s ease-in-out infinite 5s; + animation: showThingwebPath 10s ease-in-out infinite 5s; } } @@ -59,19 +127,6 @@ .tm { grid-area: tm; - // animation: showItemBox 10s ease-in-out infinite 5s; - - // .icon { - // animation: showItemIconSvg 10s ease-in-out infinite 5s; - - // path { - // animation: showItemIconPathSecondary 10s ease-in-out infinite 5s; - // } - // } - - // p { - // animation: showItemText 10s ease-in-out infinite 5s; - // } } .nodeWot { @@ -178,7 +233,7 @@ &__item { aspect-ratio: 1/1; - min-width: clamp(4rem, 2.857142857142857rem + 2.380952380952381vw, 5rem); + min-width: var(--_item-width); background-color: var(--neutral-clr-75); border-radius: 5px; border: 1px solid var(--neutral-clr-300); @@ -191,28 +246,33 @@ gap: 0; p { - font-size: 0.6rem; - font-size: clamp(0.6rem, 0.4857142857142857rem + 0.23809523809523803vw, 0.7rem); + font-size: 0.35rem; + font-size: var(--_item-font-size); line-height: normal; font-weight: var(--fw-bold); font-family: var(--ff-primary); opacity: 0; transform: translateY(.9rem); - transition: all 350ms ease-in-out; } .icon { - transform: translateY(.4rem); - font-size: 1.75rem; - font-size: clamp(1.75rem, 1.1785714285714286rem + 1.1904761904761905vw, 2.25rem); - transition: all 350ms ease-in-out; + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); path { - transition: all 350ms ease-in-out; stroke: var(--neutral-clr-300); stroke-width: 20px; fill: var(--neutral-clr-75); } + + &.thingwebLogo { + height: var(--_thingweb-inactive-icon); + + path { + stroke-width: .75px; + } + } } } } @@ -231,7 +291,8 @@ background-color: var(--neutral-clr-50); transform: scale(1.05); box-shadow: 3px 3px 10px var(--box-shadow-clr); - gap: .5rem; + gap: 0.25rem; + gap: var(--_item-gap); } 30% { @@ -239,7 +300,8 @@ background-color: var(--neutral-clr-50); transform: scale(1.05); box-shadow: 3px 3px 10px var(--box-shadow-clr); - gap: .5rem; + gap: 0.25rem; + gap: var(--_item-gap); } 38% { @@ -261,33 +323,89 @@ @keyframes showItemIconSvg { 0% { - transform: translateY(.4rem); - font-size: 1.75rem; - font-size: clamp(1.75rem, 1.1785714285714286rem + 1.1904761904761905vw, 2.25rem); + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); + } + + 6% { + transform: translateY(0); + font-size: 1rem; + font-size: var(--_item-active-icon); + } + + 30% { + transform: translateY(0); + font-size: 1rem; + font-size: var(--_item-active-icon); + } + + 38% { + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); + } + + 100% { + transform: translateY(var(--_item-translate-icon)); + font-size: 1.25rem; + font-size: var(--_item-inactive-icon); + } +} + +@keyframes showThingwebSvg { + 0% { + transform: translateY(var(--_item-translate-icon)); + height: var(--_thingweb-inactive-icon); } 6% { transform: translateY(0); - font-size: 1.5rem; - font-size: clamp(1.5rem, 1.2142857142857144rem + 0.5952380952380952vw, 1.75rem); + height: var(--_thingweb-active-icon); } 30% { transform: translateY(0); - font-size: 1.5rem; - font-size: clamp(1.5rem, 1.2142857142857144rem + 0.5952380952380952vw, 1.75rem); + height: var(--_thingweb-active-icon); } 38% { - transform: translateY(.4rem); - font-size: 1.75rem; - font-size: clamp(1.75rem, 1.1785714285714286rem + 1.1904761904761905vw, 2.25rem); + transform: translateY(var(--_item-translate-icon)); + height: var(--_thingweb-inactive-icon); + } 100% { - transform: translateY(.4rem); - font-size: 1.75rem; - font-size: clamp(1.75rem, 1.1785714285714286rem + 1.1904761904761905vw, 2.25rem); + transform: translateY(var(--_item-translate-icon)); + height: var(--_thingweb-inactive-icon); + + } +} + +@keyframes showThingwebPath { + 0% { + stroke-width: .75px; + fill: var(--neutral-clr-75); + } + + 4% { + stroke-width: 0; + fill: var(--ifm-color-primary); + } + + 30% { + stroke-width: 0; + fill: var(--ifm-color-primary); + } + + 38% { + stroke-width: .75px; + fill: var(--neutral-clr-75); + } + + 100% { + stroke-width: .75px; + fill: var(--neutral-clr-75); } } @@ -370,4 +488,136 @@ transform: translateY(.9rem); opacity: 0; } +} + +@keyframes animateLine1 { + 0% { + stroke-dashoffset: 8rem; + } + + 4% { + stroke-dashoffset: 0; + } + + 30% { + stroke-dashoffset: 0; + } + + 38% { + stroke-dashoffset: -8rem; + } + + 100% { + stroke-dashoffset: -8rem; + } +} + +@keyframes animateLine2 { + 0% { + stroke-dashoffset: 6rem; + } + + 4% { + stroke-dashoffset: 0; + } + + 30% { + stroke-dashoffset: 0; + } + + 38% { + stroke-dashoffset: -6rem; + } + + 100% { + stroke-dashoffset: -6rem; + } +} + +@keyframes animateLine3 { + 0% { + stroke-dashoffset: 8rem; + } + + 4% { + stroke-dashoffset: 0; + } + + 30% { + stroke-dashoffset: 0; + } + + 38% { + stroke-dashoffset: -8rem; + } + + 100% { + stroke-dashoffset: -8rem; + } +} + +@keyframes animateLine4 { + 0% { + stroke-dashoffset: 11rem; + } + + 4% { + stroke-dashoffset: 0; + } + + 30% { + stroke-dashoffset: 0; + } + + 38% { + stroke-dashoffset: -11rem; + } + + 100% { + stroke-dashoffset: -11rem; + } +} + +@keyframes animateLine5 { + 0% { + stroke-dashoffset: 17rem; + } + + 4% { + stroke-dashoffset: 0; + } + + 30% { + stroke-dashoffset: 0; + } + + 38% { + stroke-dashoffset: -17rem; + } + + 100% { + stroke-dashoffset: -17rem; + } +} + +@keyframes animateLine6 { + 0% { + stroke-dashoffset: 6rem; + } + + 4% { + stroke-dashoffset: 0; + } + + 30% { + stroke-dashoffset: 0; + } + + 38% { + stroke-dashoffset: -6rem; + } + + 100% { + stroke-dashoffset: -6rem; + } } \ No newline at end of file diff --git a/src/components/ServicesSection/styles.module.scss b/src/components/ServicesSection/styles.module.scss index 320d997..4e3512a 100644 --- a/src/components/ServicesSection/styles.module.scss +++ b/src/components/ServicesSection/styles.module.scss @@ -17,8 +17,8 @@ .thing, .protocol { - width: 19rem; - height: 19rem; + width: 18rem; + height: 18rem; padding: 1rem; border-radius: 1rem; box-shadow: 1px 1px 10px var(--box-shadow-clr), inset 0px 0px 5px var(--box-shadow-clr); @@ -62,6 +62,7 @@ &__description { font-size: var(--fs-body-sm); color: var(--neutral-clr-600); + direction: ltr; } &__tags { @@ -97,7 +98,6 @@ @media screen and (min-width: 768px) { .servicesSection { - .thing, .protocol { height: 16rem; diff --git a/src/components/WorkflowsSection/index.js b/src/components/WorkflowsSection/index.js index cedab76..40f97c8 100644 --- a/src/components/WorkflowsSection/index.js +++ b/src/components/WorkflowsSection/index.js @@ -5,6 +5,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faThumbsUp } from '@fortawesome/free-solid-svg-icons' import ClientOnlyWorkflow from '@site/src/components/ClientOnlyWorkflow'; import SDKWorkflow from '@site/src/components/SDKWorkflow'; +import PlatformWorkflow from '@site/src/components/PlatformWorkflow'; export default function WorkflowsSection() { @@ -49,7 +50,7 @@ export default function WorkflowsSection() {
- +
@@ -91,7 +92,7 @@ export default function WorkflowsSection() {
- +

Platform

diff --git a/src/components/WorkflowsSection/styles.module.scss b/src/components/WorkflowsSection/styles.module.scss index c1c50db..a6217ee 100644 --- a/src/components/WorkflowsSection/styles.module.scss +++ b/src/components/WorkflowsSection/styles.module.scss @@ -39,18 +39,10 @@ gap: 2rem; transition: transform 500ms ease-in-out; - &[data-workflow="simple"] { + &[data-workflow="simple"], &[data-workflow="homogeneous"], &[data-workflow="professional"] { transform: translateX(0); } - &[data-workflow="homogeneous"] { - transform: translateX(-100%); - } - - &[data-workflow="professional"] { - transform: translateX(-200%); - } - &__illustration { order: 2; width: 100%; @@ -75,11 +67,12 @@ } .description { - font-size: var(--fs-body-lg); - margin-bottom: 2rem; + font-size: var(--fs-body-lg); + margin-bottom: 2rem; } - .description, .benefit { + .description, + .benefit { color: var(--neutral-clr-600); } @@ -88,7 +81,7 @@ &:not(:last-child) { margin-bottom: 1rem; } - + .icon { margin-right: 1rem; color: var(--ifm-color-primary); @@ -193,6 +186,19 @@ flex-direction: row; gap: 8rem; + &[data-workflow="simple"] { + transform: translateX(0); + } + + &[data-workflow="homogeneous"] { + transform: translateX(-100%); + } + + &[data-workflow="professional"] { + transform: translateX(-200%); + } + + &__illustration { order: 1; width: 50%;