From f32efc167d109194efa8a43ce3bee00b7c98365a Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Mon, 21 Oct 2019 12:36:46 -0500 Subject: [PATCH 01/83] First commit --- src/_assets/css/_clock.scss | 18 ++++++++++++++++++ src/_assets/css/main.scss | 1 + src/_assets/js/countdown.js | 35 +++++++++++++++++++++++++++++++++++ src/_includes/head.html | 3 +++ src/clock/index.html | 15 +++++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 src/_assets/css/_clock.scss create mode 100644 src/_assets/js/countdown.js create mode 100644 src/clock/index.html diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss new file mode 100644 index 00000000000..8d33fde7115 --- /dev/null +++ b/src/_assets/css/_clock.scss @@ -0,0 +1,18 @@ +.clock { + .countdown-container { + margin: 60px auto 234px; + text-align: center; + } + + .heading { + font-size: 20px; + margin: 60px 0 100px; + text-align: center; + } + + .time-number { + color: $site-color-primary; + font-size: 86px; + margin: 0; + } +} diff --git a/src/_assets/css/main.scss b/src/_assets/css/main.scss index 2a7f92fead4..f05f4c1e48f 100644 --- a/src/_assets/css/main.scss +++ b/src/_assets/css/main.scss @@ -26,6 +26,7 @@ @import '_landing-page'; @import '_homepage'; @import '_showcase'; +@import '_clock'; @import '_community'; @import '_create'; @import '_404'; diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js new file mode 100644 index 00000000000..5794143ba31 --- /dev/null +++ b/src/_assets/js/countdown.js @@ -0,0 +1,35 @@ +(function () { + const timeNumber = document.querySelector('.time-number'); + const eventTime = moment('21-10-2019 17:30:00', 'DD-MM-YYYY HH:mm:ss'); + + setInterval(function() { + const currentTime = moment(); + const diffTime = eventTime - currentTime; + + function digitsHandler(number) { + return number > 9 ? number : `0${number}`; + } + + if (diffTime > 0) { + // Duration left to the event + const duration = moment.duration(eventTime.diff(currentTime)); + + //Get Days + const days = digitsHandler(duration.days()); + + //Get hours + const hours = digitsHandler(duration.hours()); + + //Get Minutes + const minutes = digitsHandler(duration.minutes()); + + //Get seconds + const seconds = digitsHandler(duration.seconds()); + + timeNumber.innerText = `${days}:${hours}:${minutes}:${seconds}`; + } else { + time.innerText = "The event is right now"; + clearInterval(); + } + }, 1000); +}()); diff --git a/src/_includes/head.html b/src/_includes/head.html index e977da26a68..6ec09dfda91 100644 --- a/src/_includes/head.html +++ b/src/_includes/head.html @@ -40,6 +40,9 @@ {% for js in page.js -%} {% endfor -%} + {% if page.title == "Challenge" %} + + {% endif %} {% include head-diff2html.html -%} diff --git a/src/clock/index.html b/src/clock/index.html new file mode 100644 index 00000000000..93289336bdd --- /dev/null +++ b/src/clock/index.html @@ -0,0 +1,15 @@ +--- +title: Challenge +layout: landing +show_banner: False +body_class: clock +--- + +
+

Timing is everything. Stay tuned. xD

+
+

+
+
+ +{% asset countdown %} From 35510f89a1e2d819471706e7b63d7cd9d8ed40f4 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Mon, 21 Oct 2019 12:38:12 -0500 Subject: [PATCH 02/83] Minor change. --- src/clock/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/clock/index.html b/src/clock/index.html index 93289336bdd..42a7ce18367 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -6,7 +6,7 @@ ---
-

Timing is everything. Stay tuned. xD

+

Timing is everything. Stay tuned.

From f65d253ffc109f752bcb0f2efaa5c86f276f69f8 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Mon, 21 Oct 2019 13:25:50 -0500 Subject: [PATCH 03/83] Set styles for clock mobile version. --- src/_assets/css/_clock.scss | 11 ++++++++--- src/_assets/css/_showcase.scss | 5 ++--- src/_assets/css/_variables.scss | 1 + 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 8d33fde7115..2b6a92217dd 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -1,18 +1,23 @@ .clock { + background-color: $flutter-color-dark-blue; + font-family: $site-font-family-alt; + .countdown-container { margin: 60px auto 234px; + padding: 0; text-align: center; } .heading { - font-size: 20px; - margin: 60px 0 100px; + color: $site-color-white; + font-size: 18px; + margin: 152px 0 40px; text-align: center; } .time-number { color: $site-color-primary; - font-size: 86px; + font-size: 58px; margin: 0; } } diff --git a/src/_assets/css/_showcase.scss b/src/_assets/css/_showcase.scss index acabe565a49..93f62e07b08 100644 --- a/src/_assets/css/_showcase.scss +++ b/src/_assets/css/_showcase.scss @@ -1,6 +1,6 @@ .showcase { background-color: $site-color-codeblock-bg; - font-family: "Google Sans", "Roboto", sans-serif; + font-family: $site-font-family-alt; $site-color-paragraph: #555; $site-color-title: #212C34; @@ -221,13 +221,12 @@ $image_height_lg: 350px; $image_height_md: 280px; $image_height_sm: 200px; - $texture-bg-color: #232C33; $author-copy-color: #5bc8f8; color: $site-color-white; position: relative; &__texture { - background: $texture-bg-color none no-repeat center; + background: $flutter-color-dark-blue none no-repeat center; height: 100%; margin-left: calc(50% - 50vw); position: absolute; diff --git a/src/_assets/css/_variables.scss b/src/_assets/css/_variables.scss index f8a9ea28d11..b354b6d17fc 100644 --- a/src/_assets/css/_variables.scss +++ b/src/_assets/css/_variables.scss @@ -4,6 +4,7 @@ $flutter-color-blue-500: #1389FD; $flutter-color-dark-blue: #075b9a; $flutter-color-fuchsia: #FF2B5B; $flutter-color-light-blue: #E7F8FF; +$flutter-color-dark-blue: #232C33; $site-color-black: #000; $site-color-white: #FFF; $site-color-codeblock-bg: #F8F9FA; From ff4e40a8ad5d30c2ec016cdae3b1ad21fa1e5294 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Mon, 21 Oct 2019 14:01:48 -0500 Subject: [PATCH 04/83] Add styles for tablet and desktop breakpoints. --- src/_assets/css/_clock.scss | 18 ++++++++++++++++++ src/_includes/head.html | 4 ++-- src/_layouts/base.html | 5 +++-- src/clock/index.html | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 2b6a92217dd..3580d07eedb 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -13,11 +13,29 @@ font-size: 18px; margin: 152px 0 40px; text-align: center; + + @include media-breakpoint-up(md) { + font-size: 32px; + margin: 304px 0 56px; + } + + @include media-breakpoint-up(lg) { + font-size: 40px; + margin: 192px 0 88px; + } } .time-number { color: $site-color-primary; font-size: 58px; margin: 0; + + @include media-breakpoint-up(md) { + font-size: 110px; + } + + @include media-breakpoint-up(lg) { + font-size: 160px; + } } } diff --git a/src/_includes/head.html b/src/_includes/head.html index 6ec09dfda91..21c293b1549 100644 --- a/src/_includes/head.html +++ b/src/_includes/head.html @@ -40,8 +40,8 @@ {% for js in page.js -%} {% endfor -%} - {% if page.title == "Challenge" %} - + {% if page.title == "Clock" %} + {% endif %} {% include head-diff2html.html -%} diff --git a/src/_layouts/base.html b/src/_layouts/base.html index 88ad6696a41..7d196cfd855 100644 --- a/src/_layouts/base.html +++ b/src/_layouts/base.html @@ -15,8 +15,9 @@ {{ content }} - {%- include footer.html %} - + {% if page.title != "Clock" %} + {%- include footer.html %} + {% endif %} diff --git a/src/clock/index.html b/src/clock/index.html index 42a7ce18367..c651b7b7d0c 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -1,5 +1,5 @@ --- -title: Challenge +title: Clock layout: landing show_banner: False body_class: clock From 49ee8691bfaa5569951087598cd9f0b5e043f0ba Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Mon, 21 Oct 2019 15:18:33 -0500 Subject: [PATCH 05/83] Add extra-large viewport for countdown. --- src/_assets/css/_clock.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 3580d07eedb..7bd58ca44dc 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -37,5 +37,9 @@ @include media-breakpoint-up(lg) { font-size: 160px; } + + @include media-breakpoint-up(xl) { + font-size: 200px; + } } } From 22ada6db3baf319d667fbc2e5296463164150134 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Mon, 21 Oct 2019 16:25:20 -0500 Subject: [PATCH 06/83] Add extra large viewport for countdown font-size. --- src/_assets/css/_clock.scss | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 7bd58ca44dc..8b92f52db7e 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -39,7 +39,11 @@ } @include media-breakpoint-up(xl) { - font-size: 200px; + font-size: 200px; + } + + @include media-breakpoint-up(xxl) { + font-size: 230px; } } } From 634dd8761d891a3ccf98331dff08eb6426b0b1a9 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Mon, 21 Oct 2019 16:34:55 -0500 Subject: [PATCH 07/83] Minor change in digitsHandler function. --- src/_assets/js/countdown.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js index 5794143ba31..8e81dd3b5b9 100644 --- a/src/_assets/js/countdown.js +++ b/src/_assets/js/countdown.js @@ -1,15 +1,15 @@ (function () { const timeNumber = document.querySelector('.time-number'); - const eventTime = moment('21-10-2019 17:30:00', 'DD-MM-YYYY HH:mm:ss'); + const eventTime = moment('23-10-2019 17:30:00', 'DD-MM-YYYY HH:mm:ss'); + + function digitsHandler(number) { + return number > 9 ? number : `0${number}`; + } setInterval(function() { const currentTime = moment(); const diffTime = eventTime - currentTime; - function digitsHandler(number) { - return number > 9 ? number : `0${number}`; - } - if (diffTime > 0) { // Duration left to the event const duration = moment.duration(eventTime.diff(currentTime)); @@ -28,7 +28,7 @@ timeNumber.innerText = `${days}:${hours}:${minutes}:${seconds}`; } else { - time.innerText = "The event is right now"; + time.innerText = ""; clearInterval(); } }, 1000); From f40a83476e5c81442a631411af9739402ffed242 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 09:06:49 -0500 Subject: [PATCH 08/83] Add animations --- src/_assets/css/_clock.scss | 240 +++++++++++++++++- src/_assets/image/clock/Left_Rectangle_L.svg | 13 + src/_assets/image/clock/Left_Rectangle_M.svg | 13 + src/_assets/image/clock/Left_Rectangle_S.svg | 13 + src/_assets/image/clock/Oval_L.svg | 13 + src/_assets/image/clock/Oval_M.svg | 13 + src/_assets/image/clock/Oval_S.svg | 13 + src/_assets/image/clock/Right_Rectangle_L.svg | 13 + src/_assets/image/clock/Right_Rectangle_M.svg | 13 + src/_assets/image/clock/Right_Rectangle_S.svg | 13 + src/_assets/js/countdown.js | 49 ++-- src/clock/index.html | 31 ++- 12 files changed, 403 insertions(+), 34 deletions(-) create mode 100755 src/_assets/image/clock/Left_Rectangle_L.svg create mode 100755 src/_assets/image/clock/Left_Rectangle_M.svg create mode 100755 src/_assets/image/clock/Left_Rectangle_S.svg create mode 100755 src/_assets/image/clock/Oval_L.svg create mode 100755 src/_assets/image/clock/Oval_M.svg create mode 100755 src/_assets/image/clock/Oval_S.svg create mode 100755 src/_assets/image/clock/Right_Rectangle_L.svg create mode 100755 src/_assets/image/clock/Right_Rectangle_M.svg create mode 100755 src/_assets/image/clock/Right_Rectangle_S.svg diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 8b92f52db7e..015e1e43058 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -1,34 +1,145 @@ +@keyframes right-slide-in { + from { + right: -500px; + } + to { + right: 0; + } +} + +@keyframes left-slide-in { + from { + left: -300px; + } + to { + left: 0; + } +} + +@keyframes oval-slide-in-small { + from { + left: -650px; + bottom: -350px; + } + to { + left: 0; + bottom: 0; + } +} + + +@keyframes oval-slide-in { + from { + left: -650px; + bottom: -350px; + } + to { + left: 0; + bottom: -10%; + } +} + +@keyframes vertical-lines { + from { + height: 0%; + } + to { + height: 100%; + } +} + +@keyframes slide-in { + from { + bottom: -50px; + opacity: 0; + } + to { + bottom: 0; + opacity: 1; + } +} + .clock { background-color: $flutter-color-dark-blue; font-family: $site-font-family-alt; + .center { + position: absolute; + top: 50%; + transform: translateY(-50%); + width: 100%; + } + .countdown-container { - margin: 60px auto 234px; + margin: 60px auto 100px; padding: 0; text-align: center; } + .heading-container { + height: 40px; + margin: 152px 0 40px; + position: relative; + + @include media-breakpoint-up(md) { + font-size: 32px; + height: 52px; + margin: 304px 0 56px; + } + + @include media-breakpoint-up(lg) { + font-size: 40px; + height: 60px; + margin: 192px 0 88px; + } + } + .heading { + animation: slide-in 1s; + animation-fill-mode: both; color: $site-color-white; font-size: 18px; - margin: 152px 0 40px; + margin: 0; + position: absolute; text-align: center; + width: 100%; @include media-breakpoint-up(md) { font-size: 32px; - margin: 304px 0 56px; } @include media-breakpoint-up(lg) { font-size: 40px; - margin: 192px 0 88px; + } + } + + .time-unit-container { + display: inline-block; + height: 87px; + overflow: hidden; + position: relative; + width: 100%; + + @include media-breakpoint-up(md) { + height: 165px; + } + + @include media-breakpoint-up(lg) { + height: 260px; } } .time-number { + animation: slide-in 0.8s; + animation-fill-mode: both; color: $site-color-primary; font-size: 58px; margin: 0; + position: absolute; + text-align: center; + top: 0; + width: 100%; + z-index: 2; @include media-breakpoint-up(md) { font-size: 110px; @@ -39,11 +150,128 @@ } @include media-breakpoint-up(xl) { - font-size: 200px; - } + font-size: 200px; + } @include media-breakpoint-up(xxl) { font-size: 230px; } } + + .animations { + height: 92.6%; + overflow: hidden; + position: absolute; + top: 66px; + width: 100%; + } + + .vertical-line { + animation-duration: 1s; + animation-fill-mode: both; + animation-name: vertical-lines; + animation-timing-function: ease; + background-color: #384753; + position: fixed; + top: 0; + width: 1px; + + &--first { + animation-delay: 0s; + left: 4%; + } + + &--second { + animation-delay: 0.2s; + left: 27%; + } + + &--thrid { + animation-delay: 0.4s; + left: 50%; + } + + &--fourth { + animation-delay: 0.6s; + left: 73%; + } + + &--first, &--thrid { + display: none; + + @include media-breakpoint-up(lg) { + display: block; + } + } + } + + .svg-animated { + animation-duration: 1.2s; + animation-fill-mode: both; + animation-timing-function: cubic-bezier(0.87, 1.15, 1, 0.99); + position: absolute; + + &--left { + animation-name: left-slide-in; + bottom: 130px; + left: 0; + + @include media-breakpoint-up(md) { + bottom: unset; + top: 100px; + } + } + + &--right { + animation-name: right-slide-in; + right: 0; + top: 0; + } + + &--oval { + animation-name: oval-slide-in-small; + bottom: 0; + left: 0; + + @include media-breakpoint-up(md) { + animation-name: oval-slide-in; + } + } + + &--large { + display: none; + + @include media-breakpoint-up(md) { + display: none; + } + + @include media-breakpoint-up(lg) { + display: block; + } + } + + &--medium { + display: none; + + @include media-breakpoint-up(md) { + display: block; + } + + @include media-breakpoint-up(lg) { + display: none; + } + } + + &--small { + display: block; + + @include media-breakpoint-up(md) { + display: none; + } + + @include media-breakpoint-up(lg) { + display: none; + } + } + } } diff --git a/src/_assets/image/clock/Left_Rectangle_L.svg b/src/_assets/image/clock/Left_Rectangle_L.svg new file mode 100755 index 00000000000..df524fd9c80 --- /dev/null +++ b/src/_assets/image/clock/Left_Rectangle_L.svg @@ -0,0 +1,13 @@ + + + + Left_Rectangle_L + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/Left_Rectangle_M.svg b/src/_assets/image/clock/Left_Rectangle_M.svg new file mode 100755 index 00000000000..71af7209fa4 --- /dev/null +++ b/src/_assets/image/clock/Left_Rectangle_M.svg @@ -0,0 +1,13 @@ + + + + Left_Rectangle_M + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/Left_Rectangle_S.svg b/src/_assets/image/clock/Left_Rectangle_S.svg new file mode 100755 index 00000000000..3ff64d5b33c --- /dev/null +++ b/src/_assets/image/clock/Left_Rectangle_S.svg @@ -0,0 +1,13 @@ + + + + Left_Rectangle_S + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/Oval_L.svg b/src/_assets/image/clock/Oval_L.svg new file mode 100755 index 00000000000..75b7c18762d --- /dev/null +++ b/src/_assets/image/clock/Oval_L.svg @@ -0,0 +1,13 @@ + + + + Oval_L + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/Oval_M.svg b/src/_assets/image/clock/Oval_M.svg new file mode 100755 index 00000000000..ada44e349e0 --- /dev/null +++ b/src/_assets/image/clock/Oval_M.svg @@ -0,0 +1,13 @@ + + + + Oval_M + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/Oval_S.svg b/src/_assets/image/clock/Oval_S.svg new file mode 100755 index 00000000000..6e2e89a9115 --- /dev/null +++ b/src/_assets/image/clock/Oval_S.svg @@ -0,0 +1,13 @@ + + + + Oval_S + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/Right_Rectangle_L.svg b/src/_assets/image/clock/Right_Rectangle_L.svg new file mode 100755 index 00000000000..33e32823274 --- /dev/null +++ b/src/_assets/image/clock/Right_Rectangle_L.svg @@ -0,0 +1,13 @@ + + + + Right_Rectangle_L + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/Right_Rectangle_M.svg b/src/_assets/image/clock/Right_Rectangle_M.svg new file mode 100755 index 00000000000..4cabaff4c69 --- /dev/null +++ b/src/_assets/image/clock/Right_Rectangle_M.svg @@ -0,0 +1,13 @@ + + + + Right_Rectangle_M + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/Right_Rectangle_S.svg b/src/_assets/image/clock/Right_Rectangle_S.svg new file mode 100755 index 00000000000..173aaa569c6 --- /dev/null +++ b/src/_assets/image/clock/Right_Rectangle_S.svg @@ -0,0 +1,13 @@ + + + + Right_Rectangle_S + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js index 8e81dd3b5b9..50ab94f28f6 100644 --- a/src/_assets/js/countdown.js +++ b/src/_assets/js/countdown.js @@ -1,35 +1,38 @@ -(function () { - const timeNumber = document.querySelector('.time-number'); - const eventTime = moment('23-10-2019 17:30:00', 'DD-MM-YYYY HH:mm:ss'); +const timeNumber = document.querySelector('.time-number'); +const eventTime = moment('21-12-2019 17:30:00', 'DD-MM-YYYY HH:mm:ss'); + +function setTimer() { + const currentTime = moment(); + const diffTime = eventTime - currentTime; function digitsHandler(number) { return number > 9 ? number : `0${number}`; } - setInterval(function() { - const currentTime = moment(); - const diffTime = eventTime - currentTime; + if (diffTime > 0) { + // Duration left to the event + const duration = moment.duration(eventTime.diff(currentTime)); - if (diffTime > 0) { - // Duration left to the event - const duration = moment.duration(eventTime.diff(currentTime)); + //Get Days + const days = digitsHandler(duration.days()); - //Get Days - const days = digitsHandler(duration.days()); + //Get hours + const hours = digitsHandler(duration.hours()); - //Get hours - const hours = digitsHandler(duration.hours()); + //Get Minutes + const minutes = digitsHandler(duration.minutes()); - //Get Minutes - const minutes = digitsHandler(duration.minutes()); + //Get seconds + const seconds = digitsHandler(duration.seconds()); - //Get seconds - const seconds = digitsHandler(duration.seconds()); + timeNumber.innerText = `${days}:${hours}:${minutes}:${seconds}`; + } else { + timeNumber.innerText = "The event is right now"; + clearInterval(); + } +} - timeNumber.innerText = `${days}:${hours}:${minutes}:${seconds}`; - } else { - time.innerText = ""; - clearInterval(); - } - }, 1000); +(function () { + setTimer(); + setInterval(setTimer, 1000); }()); diff --git a/src/clock/index.html b/src/clock/index.html index c651b7b7d0c..6d3594e4fe9 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -1,14 +1,35 @@ --- title: Clock -layout: landing +layout: base show_banner: False body_class: clock --- -
-

Timing is everything. Stay tuned.

-
-

+
+
+
+

Time is everything. Stay tuned.

+
+
+
+

+
+
+
+
+ {% asset clock/Left_Rectangle_L.svg class='svg-animated svg-animated--left svg-animated--large' %} + {% asset clock/Right_Rectangle_L.svg class='svg-animated svg-animated--right svg-animated--large' %} + {% asset clock/Oval_L.svg class='svg-animated svg-animated--oval svg-animated--large' %} + {% asset clock/Left_Rectangle_M.svg class='svg-animated svg-animated--left svg-animated--medium' %} + {% asset clock/Right_Rectangle_M.svg class='svg-animated svg-animated--right svg-animated--medium' %} + {% asset clock/Oval_M.svg class='svg-animated svg-animated--oval svg-animated--medium' %} + {% asset clock/Left_Rectangle_S.svg class='svg-animated svg-animated--left svg-animated--small' %} + {% asset clock/Right_Rectangle_S.svg class='svg-animated svg-animated--right svg-animated--small' %} + {% asset clock/Oval_S.svg class='svg-animated svg-animated--oval svg-animated--small' %} +
+
+
+
From 268afaf85e5d0b96d591a7a0c377a427b0af968d Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 09:19:31 -0500 Subject: [PATCH 09/83] Optimize svg files. --- src/_assets/image/clock/Left_Rectangle_L.svg | 13 ------------- src/_assets/image/clock/Left_Rectangle_M.svg | 13 ------------- src/_assets/image/clock/Left_Rectangle_S.svg | 13 ------------- src/_assets/image/clock/Oval_L.svg | 13 ------------- src/_assets/image/clock/Oval_M.svg | 13 ------------- src/_assets/image/clock/Oval_S.svg | 13 ------------- src/_assets/image/clock/Right_Rectangle_L.svg | 13 ------------- src/_assets/image/clock/Right_Rectangle_M.svg | 13 ------------- src/_assets/image/clock/Right_Rectangle_S.svg | 13 ------------- .../image/clock/left_rectangle-large.svg | 1 + .../image/clock/left_rectangle-medium.svg | 1 + .../image/clock/left_rectangle-small.svg | 1 + src/_assets/image/clock/oval-large.svg | 1 + src/_assets/image/clock/oval-medium.svg | 1 + src/_assets/image/clock/oval-small.svg | 1 + .../image/clock/right_rectangle-large.svg | 1 + .../image/clock/right_rectangle-medium.svg | 1 + .../image/clock/right_rectangle-small.svg | 1 + src/clock/index.html | 18 +++++++++--------- 19 files changed, 18 insertions(+), 126 deletions(-) delete mode 100755 src/_assets/image/clock/Left_Rectangle_L.svg delete mode 100755 src/_assets/image/clock/Left_Rectangle_M.svg delete mode 100755 src/_assets/image/clock/Left_Rectangle_S.svg delete mode 100755 src/_assets/image/clock/Oval_L.svg delete mode 100755 src/_assets/image/clock/Oval_M.svg delete mode 100755 src/_assets/image/clock/Oval_S.svg delete mode 100755 src/_assets/image/clock/Right_Rectangle_L.svg delete mode 100755 src/_assets/image/clock/Right_Rectangle_M.svg delete mode 100755 src/_assets/image/clock/Right_Rectangle_S.svg create mode 100644 src/_assets/image/clock/left_rectangle-large.svg create mode 100644 src/_assets/image/clock/left_rectangle-medium.svg create mode 100644 src/_assets/image/clock/left_rectangle-small.svg create mode 100644 src/_assets/image/clock/oval-large.svg create mode 100644 src/_assets/image/clock/oval-medium.svg create mode 100644 src/_assets/image/clock/oval-small.svg create mode 100644 src/_assets/image/clock/right_rectangle-large.svg create mode 100644 src/_assets/image/clock/right_rectangle-medium.svg create mode 100644 src/_assets/image/clock/right_rectangle-small.svg diff --git a/src/_assets/image/clock/Left_Rectangle_L.svg b/src/_assets/image/clock/Left_Rectangle_L.svg deleted file mode 100755 index df524fd9c80..00000000000 --- a/src/_assets/image/clock/Left_Rectangle_L.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Left_Rectangle_L - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/Left_Rectangle_M.svg b/src/_assets/image/clock/Left_Rectangle_M.svg deleted file mode 100755 index 71af7209fa4..00000000000 --- a/src/_assets/image/clock/Left_Rectangle_M.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Left_Rectangle_M - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/Left_Rectangle_S.svg b/src/_assets/image/clock/Left_Rectangle_S.svg deleted file mode 100755 index 3ff64d5b33c..00000000000 --- a/src/_assets/image/clock/Left_Rectangle_S.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Left_Rectangle_S - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/Oval_L.svg b/src/_assets/image/clock/Oval_L.svg deleted file mode 100755 index 75b7c18762d..00000000000 --- a/src/_assets/image/clock/Oval_L.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Oval_L - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/Oval_M.svg b/src/_assets/image/clock/Oval_M.svg deleted file mode 100755 index ada44e349e0..00000000000 --- a/src/_assets/image/clock/Oval_M.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Oval_M - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/Oval_S.svg b/src/_assets/image/clock/Oval_S.svg deleted file mode 100755 index 6e2e89a9115..00000000000 --- a/src/_assets/image/clock/Oval_S.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Oval_S - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/Right_Rectangle_L.svg b/src/_assets/image/clock/Right_Rectangle_L.svg deleted file mode 100755 index 33e32823274..00000000000 --- a/src/_assets/image/clock/Right_Rectangle_L.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Right_Rectangle_L - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/Right_Rectangle_M.svg b/src/_assets/image/clock/Right_Rectangle_M.svg deleted file mode 100755 index 4cabaff4c69..00000000000 --- a/src/_assets/image/clock/Right_Rectangle_M.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Right_Rectangle_M - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/Right_Rectangle_S.svg b/src/_assets/image/clock/Right_Rectangle_S.svg deleted file mode 100755 index 173aaa569c6..00000000000 --- a/src/_assets/image/clock/Right_Rectangle_S.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Right_Rectangle_S - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/left_rectangle-large.svg b/src/_assets/image/clock/left_rectangle-large.svg new file mode 100644 index 00000000000..294ce6ceb77 --- /dev/null +++ b/src/_assets/image/clock/left_rectangle-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/left_rectangle-medium.svg b/src/_assets/image/clock/left_rectangle-medium.svg new file mode 100644 index 00000000000..c0f901b8a48 --- /dev/null +++ b/src/_assets/image/clock/left_rectangle-medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/left_rectangle-small.svg b/src/_assets/image/clock/left_rectangle-small.svg new file mode 100644 index 00000000000..faed4956b25 --- /dev/null +++ b/src/_assets/image/clock/left_rectangle-small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/oval-large.svg b/src/_assets/image/clock/oval-large.svg new file mode 100644 index 00000000000..0d971f05035 --- /dev/null +++ b/src/_assets/image/clock/oval-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/oval-medium.svg b/src/_assets/image/clock/oval-medium.svg new file mode 100644 index 00000000000..75ff92e4a2f --- /dev/null +++ b/src/_assets/image/clock/oval-medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/oval-small.svg b/src/_assets/image/clock/oval-small.svg new file mode 100644 index 00000000000..815b26c5bc3 --- /dev/null +++ b/src/_assets/image/clock/oval-small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/right_rectangle-large.svg b/src/_assets/image/clock/right_rectangle-large.svg new file mode 100644 index 00000000000..1e761afd0c7 --- /dev/null +++ b/src/_assets/image/clock/right_rectangle-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/right_rectangle-medium.svg b/src/_assets/image/clock/right_rectangle-medium.svg new file mode 100644 index 00000000000..326be148883 --- /dev/null +++ b/src/_assets/image/clock/right_rectangle-medium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/right_rectangle-small.svg b/src/_assets/image/clock/right_rectangle-small.svg new file mode 100644 index 00000000000..1d8ffd646ba --- /dev/null +++ b/src/_assets/image/clock/right_rectangle-small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/clock/index.html b/src/clock/index.html index 6d3594e4fe9..e49b4c0cdd1 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -17,15 +17,15 @@

Time is everything. Stay tuned.

- {% asset clock/Left_Rectangle_L.svg class='svg-animated svg-animated--left svg-animated--large' %} - {% asset clock/Right_Rectangle_L.svg class='svg-animated svg-animated--right svg-animated--large' %} - {% asset clock/Oval_L.svg class='svg-animated svg-animated--oval svg-animated--large' %} - {% asset clock/Left_Rectangle_M.svg class='svg-animated svg-animated--left svg-animated--medium' %} - {% asset clock/Right_Rectangle_M.svg class='svg-animated svg-animated--right svg-animated--medium' %} - {% asset clock/Oval_M.svg class='svg-animated svg-animated--oval svg-animated--medium' %} - {% asset clock/Left_Rectangle_S.svg class='svg-animated svg-animated--left svg-animated--small' %} - {% asset clock/Right_Rectangle_S.svg class='svg-animated svg-animated--right svg-animated--small' %} - {% asset clock/Oval_S.svg class='svg-animated svg-animated--oval svg-animated--small' %} + {% asset clock/left_rectangle-large.svg class='svg-animated svg-animated--left svg-animated--large' %} + {% asset clock/right_rectangle-large.svg class='svg-animated svg-animated--right svg-animated--large' %} + {% asset clock/oval-large.svg class='svg-animated svg-animated--oval svg-animated--large' %} + {% asset clock/left_rectangle-medium.svg class='svg-animated svg-animated--left svg-animated--medium' %} + {% asset clock/right_rectangle-medium.svg class='svg-animated svg-animated--right svg-animated--medium' %} + {% asset clock/oval-medium.svg class='svg-animated svg-animated--oval svg-animated--medium' %} + {% asset clock/left_rectangle-small.svg class='svg-animated svg-animated--left svg-animated--small' %} + {% asset clock/right_rectangle-small.svg class='svg-animated svg-animated--right svg-animated--small' %} + {% asset clock/oval-small.svg class='svg-animated svg-animated--oval svg-animated--small' %}
From 7fc8197b44f7dca1acd9891c7ddc23470a124733 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 10:07:20 -0500 Subject: [PATCH 10/83] Minor fix --- src/_assets/css/_clock.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 015e1e43058..c85e56d6b54 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -95,7 +95,7 @@ } .heading { - animation: slide-in 1s; + animation: slide-in 1s 0.8s; animation-fill-mode: both; color: $site-color-white; font-size: 18px; @@ -137,7 +137,6 @@ margin: 0; position: absolute; text-align: center; - top: 0; width: 100%; z-index: 2; @@ -175,6 +174,7 @@ position: fixed; top: 0; width: 1px; + z-index: -1; &--first { animation-delay: 0s; From ed6f94e95daf9658076715794183568c933bfe99 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 11:33:55 -0500 Subject: [PATCH 11/83] Remove unnecessary styles. --- src/_assets/css/_clock.scss | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index c85e56d6b54..12f1a033b41 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -71,26 +71,25 @@ } .countdown-container { - margin: 60px auto 100px; padding: 0; text-align: center; } .heading-container { height: 40px; - margin: 152px 0 40px; + margin: 0 0 40px; position: relative; @include media-breakpoint-up(md) { font-size: 32px; height: 52px; - margin: 304px 0 56px; + margin-bottom: 56px; } @include media-breakpoint-up(lg) { font-size: 40px; height: 60px; - margin: 192px 0 88px; + margin-bottom: 88px; } } @@ -158,7 +157,7 @@ } .animations { - height: 92.6%; + height: calc(100% - 66px); overflow: hidden; position: absolute; top: 66px; @@ -215,11 +214,17 @@ animation-name: left-slide-in; bottom: 130px; left: 0; + transform: scaleX(1.5); @include media-breakpoint-up(md) { bottom: unset; + transform: unset; top: 100px; } + + @include media-breakpoint-up(lg) { + transform: translateX(-30px); + } } &--right { From 558fac1f4a1056d7a6675ab335c642b398c9d776 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 11:56:18 -0500 Subject: [PATCH 12/83] Change variables scope. --- src/_assets/css/_clock.scss | 2 +- src/_assets/js/countdown.js | 50 ++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 12f1a033b41..2211c0baf9c 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -41,7 +41,7 @@ @keyframes vertical-lines { from { - height: 0%; + height: 0; } to { height: 100%; diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js index 50ab94f28f6..d3a1078a357 100644 --- a/src/_assets/js/countdown.js +++ b/src/_assets/js/countdown.js @@ -1,38 +1,38 @@ -const timeNumber = document.querySelector('.time-number'); -const eventTime = moment('21-12-2019 17:30:00', 'DD-MM-YYYY HH:mm:ss'); +(function () { + const timeNumber = document.querySelector('.time-number'); + const eventTime = moment('21-12-2019 17:30:00', 'DD-MM-YYYY HH:mm:ss'); -function setTimer() { - const currentTime = moment(); - const diffTime = eventTime - currentTime; + function setTimer() { + const currentTime = moment(); + const diffTime = eventTime - currentTime; - function digitsHandler(number) { - return number > 9 ? number : `0${number}`; - } + function digitsHandler(number) { + return number > 9 ? number : `0${number}`; + } - if (diffTime > 0) { - // Duration left to the event - const duration = moment.duration(eventTime.diff(currentTime)); + if (diffTime > 0) { + // Duration left to the event + const duration = moment.duration(eventTime.diff(currentTime)); - //Get Days - const days = digitsHandler(duration.days()); + //Get Days + const days = digitsHandler(duration.days()); - //Get hours - const hours = digitsHandler(duration.hours()); + //Get hours + const hours = digitsHandler(duration.hours()); - //Get Minutes - const minutes = digitsHandler(duration.minutes()); + //Get Minutes + const minutes = digitsHandler(duration.minutes()); - //Get seconds - const seconds = digitsHandler(duration.seconds()); + //Get seconds + const seconds = digitsHandler(duration.seconds()); - timeNumber.innerText = `${days}:${hours}:${minutes}:${seconds}`; - } else { - timeNumber.innerText = "The event is right now"; - clearInterval(); + timeNumber.innerText = `${days}:${hours}:${minutes}:${seconds}`; + } else { + timeNumber.innerText = "The event is right now"; + clearInterval(); + } } -} -(function () { setTimer(); setInterval(setTimer, 1000); }()); From 1917ea2f3ac52e6651b52dafb65db4dd7b7b3e74 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 15:37:21 -0500 Subject: [PATCH 13/83] Minor css change. --- src/_assets/css/_clock.scss | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 2211c0baf9c..1d89be4786c 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -18,24 +18,24 @@ @keyframes oval-slide-in-small { from { - left: -650px; bottom: -350px; + left: -650px; } to { - left: 0; bottom: 0; + left: 0; } } @keyframes oval-slide-in { from { - left: -650px; bottom: -350px; + left: -650px; } to { - left: 0; bottom: -10%; + left: 0; } } @@ -115,7 +115,6 @@ .time-unit-container { display: inline-block; height: 87px; - overflow: hidden; position: relative; width: 100%; From 5bcfdf55cecbaf8ebc2fccfe7e9eecd964a341b2 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 16:01:21 -0500 Subject: [PATCH 14/83] Change keyframe transition. --- src/_assets/css/_clock.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 1d89be4786c..e8a6c3423a9 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -50,11 +50,11 @@ @keyframes slide-in { from { - bottom: -50px; + transform: translateY(50px); opacity: 0; } to { - bottom: 0; + transform: none; opacity: 1; } } From 46e374ca7e5edc8e075a0f05197ae7d5a4918273 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 16:30:27 -0500 Subject: [PATCH 15/83] Adjust heading height. --- src/_assets/css/_clock.scss | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index e8a6c3423a9..42c4f292824 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -76,19 +76,19 @@ } .heading-container { - height: 40px; + height: 24px; margin: 0 0 40px; position: relative; @include media-breakpoint-up(md) { font-size: 32px; - height: 52px; + height: 36px; margin-bottom: 56px; } @include media-breakpoint-up(lg) { font-size: 40px; - height: 60px; + height: 48px; margin-bottom: 88px; } } @@ -99,7 +99,6 @@ color: $site-color-white; font-size: 18px; margin: 0; - position: absolute; text-align: center; width: 100%; @@ -133,7 +132,6 @@ color: $site-color-primary; font-size: 58px; margin: 0; - position: absolute; text-align: center; width: 100%; z-index: 2; From 4edaeaa2926d1eec3ed7f3f95afc709934e2f894 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 18:25:54 -0500 Subject: [PATCH 16/83] Add fixed with to digits container. --- src/_assets/css/_clock.scss | 21 +++++++++++++++++++++ src/_assets/js/countdown.js | 12 +++++++++--- src/clock/index.html | 4 +++- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 42c4f292824..693b1bb7145 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -153,6 +153,27 @@ } } + .digits_container { + display: inline-block; + width: 74px; + + @include media-breakpoint-up(md) { + width: 142px; + } + + @include media-breakpoint-up(lg) { + width: 200px; + } + + @include media-breakpoint-up(xl) { + width: 248px; + } + + @include media-breakpoint-up(xxl) { + width: 294px; + } + } + .animations { height: calc(100% - 66px); overflow: hidden; diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js index d3a1078a357..60af21b775b 100644 --- a/src/_assets/js/countdown.js +++ b/src/_assets/js/countdown.js @@ -1,5 +1,8 @@ (function () { - const timeNumber = document.querySelector('.time-number'); + const daysContainer = document.querySelector('.days-digits_container'); + const hoursContainer = document.querySelector('.hours-digits_container'); + const minutesContainer = document.querySelector('.minutes-digits_container'); + const secondsContainer = document.querySelector('.seconds-digits_container'); const eventTime = moment('21-12-2019 17:30:00', 'DD-MM-YYYY HH:mm:ss'); function setTimer() { @@ -26,9 +29,12 @@ //Get seconds const seconds = digitsHandler(duration.seconds()); - timeNumber.innerText = `${days}:${hours}:${minutes}:${seconds}`; + daysContainer.innerText = `${days}`; + hoursContainer.innerText = `${hours}`; + minutesContainer.innerText = `${minutes}`; + secondsContainer.innerText = `${seconds}`; } else { - timeNumber.innerText = "The event is right now"; + console.log('The event is now'); clearInterval(); } } diff --git a/src/clock/index.html b/src/clock/index.html index e49b4c0cdd1..c0851d7e765 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -12,7 +12,9 @@

Time is everything. Stay tuned.

-

+
+ ::: +
From 71a62bad901ba41e6e2ed30f81447e591474fe6f Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 22 Oct 2019 19:56:11 -0500 Subject: [PATCH 17/83] Minor change. --- src/_assets/css/_clock.scss | 128 ++++++++++++++++++------------------ src/clock/index.html | 3 +- 2 files changed, 65 insertions(+), 66 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 693b1bb7145..e47aef83322 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -1,64 +1,3 @@ -@keyframes right-slide-in { - from { - right: -500px; - } - to { - right: 0; - } -} - -@keyframes left-slide-in { - from { - left: -300px; - } - to { - left: 0; - } -} - -@keyframes oval-slide-in-small { - from { - bottom: -350px; - left: -650px; - } - to { - bottom: 0; - left: 0; - } -} - - -@keyframes oval-slide-in { - from { - bottom: -350px; - left: -650px; - } - to { - bottom: -10%; - left: 0; - } -} - -@keyframes vertical-lines { - from { - height: 0; - } - to { - height: 100%; - } -} - -@keyframes slide-in { - from { - transform: translateY(50px); - opacity: 0; - } - to { - transform: none; - opacity: 1; - } -} - .clock { background-color: $flutter-color-dark-blue; font-family: $site-font-family-alt; @@ -77,19 +16,17 @@ .heading-container { height: 24px; - margin: 0 0 40px; + margin: 0; position: relative; @include media-breakpoint-up(md) { font-size: 32px; height: 36px; - margin-bottom: 56px; } @include media-breakpoint-up(lg) { font-size: 40px; height: 48px; - margin-bottom: 88px; } } @@ -298,3 +235,66 @@ } } } + +// animations + +@keyframes right-slide-in { + from { + right: -500px; + } + to { + right: 0; + } +} + +@keyframes left-slide-in { + from { + left: -300px; + } + to { + left: 0; + } +} + +@keyframes oval-slide-in-small { + from { + bottom: -350px; + left: -650px; + } + to { + bottom: 0; + left: 0; + } +} + + +@keyframes oval-slide-in { + from { + bottom: -350px; + left: -650px; + } + to { + bottom: -10%; + left: 0; + } +} + +@keyframes vertical-lines { + from { + height: 0; + } + to { + height: 100%; + } +} + +@keyframes slide-in { + from { + transform: translateY(50px); + opacity: 0; + } + to { + transform: none; + opacity: 1; + } +} diff --git a/src/clock/index.html b/src/clock/index.html index c0851d7e765..a7a23b5a117 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -13,8 +13,7 @@

Time is everything. Stay tuned.

- ::: -
+ ::::
From e91f28bac99c25d66ad8758b99858156d4e9241d Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 23 Oct 2019 11:53:35 -0500 Subject: [PATCH 18/83] Remove unnecessary styles. --- src/_assets/css/_clock.scss | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index e47aef83322..f8c97e03ed9 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -31,7 +31,7 @@ } .heading { - animation: slide-in 1s 0.8s; + animation: slide-in 1s .8s; animation-fill-mode: both; color: $site-color-white; font-size: 18px; @@ -64,7 +64,7 @@ } .time-number { - animation: slide-in 0.8s; + animation: slide-in .8s; animation-fill-mode: both; color: $site-color-primary; font-size: 58px; @@ -131,22 +131,21 @@ z-index: -1; &--first { - animation-delay: 0s; left: 4%; } &--second { - animation-delay: 0.2s; + animation-delay: .2s; left: 27%; } &--thrid { - animation-delay: 0.4s; + animation-delay: .4s; left: 50%; } &--fourth { - animation-delay: 0.6s; + animation-delay: .6s; left: 73%; } @@ -162,7 +161,7 @@ .svg-animated { animation-duration: 1.2s; animation-fill-mode: both; - animation-timing-function: cubic-bezier(0.87, 1.15, 1, 0.99); + animation-timing-function: cubic-bezier(.87, 1.15, 1, .99); position: absolute; &--left { @@ -201,10 +200,6 @@ &--large { display: none; - @include media-breakpoint-up(md) { - display: none; - } - @include media-breakpoint-up(lg) { display: block; } @@ -228,10 +223,6 @@ @include media-breakpoint-up(md) { display: none; } - - @include media-breakpoint-up(lg) { - display: none; - } } } } From d86f41f7e23dded9d8d366a8bdf940c9c867614f Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 23 Oct 2019 16:20:39 -0500 Subject: [PATCH 19/83] Refactor geometric shapes animation. --- src/_assets/css/_clock.scss | 141 +++++------------- src/_assets/css/_showcase.scss | 2 +- src/_assets/css/_variables.scss | 2 +- .../image/clock/left_rectangle-large.svg | 1 - .../image/clock/left_rectangle-medium.svg | 1 - .../image/clock/left_rectangle-small.svg | 1 - src/_assets/image/clock/left_rectangle.svg | 13 ++ src/_assets/image/clock/oval-large.svg | 1 - src/_assets/image/clock/oval-medium.svg | 1 - src/_assets/image/clock/oval-small.svg | 1 - src/_assets/image/clock/oval.svg | 1 + .../image/clock/right_rectangle-large.svg | 1 - .../image/clock/right_rectangle-medium.svg | 1 - .../image/clock/right_rectangle-small.svg | 1 - src/_assets/image/clock/right_rectangle.svg | 1 + src/clock/index.html | 9 -- 16 files changed, 51 insertions(+), 127 deletions(-) delete mode 100644 src/_assets/image/clock/left_rectangle-large.svg delete mode 100644 src/_assets/image/clock/left_rectangle-medium.svg delete mode 100644 src/_assets/image/clock/left_rectangle-small.svg create mode 100644 src/_assets/image/clock/left_rectangle.svg delete mode 100644 src/_assets/image/clock/oval-large.svg delete mode 100644 src/_assets/image/clock/oval-medium.svg delete mode 100644 src/_assets/image/clock/oval-small.svg create mode 100644 src/_assets/image/clock/oval.svg delete mode 100644 src/_assets/image/clock/right_rectangle-large.svg delete mode 100644 src/_assets/image/clock/right_rectangle-medium.svg delete mode 100644 src/_assets/image/clock/right_rectangle-small.svg create mode 100644 src/_assets/image/clock/right_rectangle.svg diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index f8c97e03ed9..44f8d808b13 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -1,5 +1,5 @@ .clock { - background-color: $flutter-color-dark-blue; + background-color: $flutter-dark-blue-texture; font-family: $site-font-family-alt; .center { @@ -7,6 +7,7 @@ top: 50%; transform: translateY(-50%); width: 100%; + z-index: 99; } .countdown-container { @@ -112,11 +113,29 @@ } .animations { + animation-name: geometric-small-background; + animation-duration: 1.2s; + animation-fill-mode: both; + animation-timing-function: cubic-bezier(.87, 1.15, 1, .99); + background-image: asset_url('clock/left_rectangle.svg'), asset_url('clock/right_rectangle.svg'), asset_url('clock/oval.svg'); + background-position: bottom 90px left, top right, bottom left; + background-repeat: no-repeat; + background-size: 181px 247px, 140px 121px, 280px 163px; height: calc(100% - 66px); overflow: hidden; position: absolute; top: 66px; width: 100%; + + @include media-breakpoint-up(md) { + animation-name: geometric-medium-background; + background-size: 400px 556px, 317px 258px, auto; + background-position: top 150px left, top right, bottom left; + } + + @include media-breakpoint-up(lg) { + background-size: auto; + } } .vertical-line { @@ -157,135 +176,43 @@ } } } - - .svg-animated { - animation-duration: 1.2s; - animation-fill-mode: both; - animation-timing-function: cubic-bezier(.87, 1.15, 1, .99); - position: absolute; - - &--left { - animation-name: left-slide-in; - bottom: 130px; - left: 0; - transform: scaleX(1.5); - - @include media-breakpoint-up(md) { - bottom: unset; - transform: unset; - top: 100px; - } - - @include media-breakpoint-up(lg) { - transform: translateX(-30px); - } - } - - &--right { - animation-name: right-slide-in; - right: 0; - top: 0; - } - - &--oval { - animation-name: oval-slide-in-small; - bottom: 0; - left: 0; - - @include media-breakpoint-up(md) { - animation-name: oval-slide-in; - } - } - - &--large { - display: none; - - @include media-breakpoint-up(lg) { - display: block; - } - } - - &--medium { - display: none; - - @include media-breakpoint-up(md) { - display: block; - } - - @include media-breakpoint-up(lg) { - display: none; - } - } - - &--small { - display: block; - - @include media-breakpoint-up(md) { - display: none; - } - } - } } // animations - -@keyframes right-slide-in { - from { - right: -500px; - } - to { - right: 0; - } -} - -@keyframes left-slide-in { - from { - left: -300px; - } - to { - left: 0; - } -} - -@keyframes oval-slide-in-small { +@keyframes vertical-lines { from { - bottom: -350px; - left: -650px; + height: 0; } to { - bottom: 0; - left: 0; + height: 100%; } } - -@keyframes oval-slide-in { +@keyframes slide-in { from { - bottom: -350px; - left: -650px; + transform: translateY(50px); + opacity: 0; } to { - bottom: -10%; - left: 0; + transform: none; + opacity: 1; } } -@keyframes vertical-lines { +@keyframes geometric-medium-background { from { - height: 0; + background-position: top 150px left -270px, top right -488px, bottom -348px left -140px; } to { - height: 100%; + background-position: top 150px left, top right, bottom left; } } -@keyframes slide-in { +@keyframes geometric-small-background { from { - transform: translateY(50px); - opacity: 0; + background-position: bottom 90px left -144px, top right -140px, bottom -164px left -100px; } to { - transform: none; - opacity: 1; + background-position: bottom 90px left, top right, bottom left; } } diff --git a/src/_assets/css/_showcase.scss b/src/_assets/css/_showcase.scss index 93f62e07b08..c945522c380 100644 --- a/src/_assets/css/_showcase.scss +++ b/src/_assets/css/_showcase.scss @@ -226,7 +226,7 @@ position: relative; &__texture { - background: $flutter-color-dark-blue none no-repeat center; + background: $flutter-dark-blue-texture none no-repeat center; height: 100%; margin-left: calc(50% - 50vw); position: absolute; diff --git a/src/_assets/css/_variables.scss b/src/_assets/css/_variables.scss index b354b6d17fc..0e87a60c20f 100644 --- a/src/_assets/css/_variables.scss +++ b/src/_assets/css/_variables.scss @@ -4,7 +4,7 @@ $flutter-color-blue-500: #1389FD; $flutter-color-dark-blue: #075b9a; $flutter-color-fuchsia: #FF2B5B; $flutter-color-light-blue: #E7F8FF; -$flutter-color-dark-blue: #232C33; +$flutter-dark-blue-texture: #232C33; $site-color-black: #000; $site-color-white: #FFF; $site-color-codeblock-bg: #F8F9FA; diff --git a/src/_assets/image/clock/left_rectangle-large.svg b/src/_assets/image/clock/left_rectangle-large.svg deleted file mode 100644 index 294ce6ceb77..00000000000 --- a/src/_assets/image/clock/left_rectangle-large.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/left_rectangle-medium.svg b/src/_assets/image/clock/left_rectangle-medium.svg deleted file mode 100644 index c0f901b8a48..00000000000 --- a/src/_assets/image/clock/left_rectangle-medium.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/left_rectangle-small.svg b/src/_assets/image/clock/left_rectangle-small.svg deleted file mode 100644 index faed4956b25..00000000000 --- a/src/_assets/image/clock/left_rectangle-small.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/left_rectangle.svg b/src/_assets/image/clock/left_rectangle.svg new file mode 100644 index 00000000000..cc0d58e43bb --- /dev/null +++ b/src/_assets/image/clock/left_rectangle.svg @@ -0,0 +1,13 @@ + + + + Left_Rectangle_L + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/oval-large.svg b/src/_assets/image/clock/oval-large.svg deleted file mode 100644 index 0d971f05035..00000000000 --- a/src/_assets/image/clock/oval-large.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/oval-medium.svg b/src/_assets/image/clock/oval-medium.svg deleted file mode 100644 index 75ff92e4a2f..00000000000 --- a/src/_assets/image/clock/oval-medium.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/oval-small.svg b/src/_assets/image/clock/oval-small.svg deleted file mode 100644 index 815b26c5bc3..00000000000 --- a/src/_assets/image/clock/oval-small.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/oval.svg b/src/_assets/image/clock/oval.svg new file mode 100644 index 00000000000..0e6bf5aabbf --- /dev/null +++ b/src/_assets/image/clock/oval.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/right_rectangle-large.svg b/src/_assets/image/clock/right_rectangle-large.svg deleted file mode 100644 index 1e761afd0c7..00000000000 --- a/src/_assets/image/clock/right_rectangle-large.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/right_rectangle-medium.svg b/src/_assets/image/clock/right_rectangle-medium.svg deleted file mode 100644 index 326be148883..00000000000 --- a/src/_assets/image/clock/right_rectangle-medium.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/right_rectangle-small.svg b/src/_assets/image/clock/right_rectangle-small.svg deleted file mode 100644 index 1d8ffd646ba..00000000000 --- a/src/_assets/image/clock/right_rectangle-small.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/right_rectangle.svg b/src/_assets/image/clock/right_rectangle.svg new file mode 100644 index 00000000000..834386b876e --- /dev/null +++ b/src/_assets/image/clock/right_rectangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/clock/index.html b/src/clock/index.html index a7a23b5a117..cb081f56b84 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -18,15 +18,6 @@

Time is everything. Stay tuned.

- {% asset clock/left_rectangle-large.svg class='svg-animated svg-animated--left svg-animated--large' %} - {% asset clock/right_rectangle-large.svg class='svg-animated svg-animated--right svg-animated--large' %} - {% asset clock/oval-large.svg class='svg-animated svg-animated--oval svg-animated--large' %} - {% asset clock/left_rectangle-medium.svg class='svg-animated svg-animated--left svg-animated--medium' %} - {% asset clock/right_rectangle-medium.svg class='svg-animated svg-animated--right svg-animated--medium' %} - {% asset clock/oval-medium.svg class='svg-animated svg-animated--oval svg-animated--medium' %} - {% asset clock/left_rectangle-small.svg class='svg-animated svg-animated--left svg-animated--small' %} - {% asset clock/right_rectangle-small.svg class='svg-animated svg-animated--right svg-animated--small' %} - {% asset clock/oval-small.svg class='svg-animated svg-animated--oval svg-animated--small' %}
From 10e650fe851944d21a09b0b18efd973331dba086 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 23 Oct 2019 16:39:24 -0500 Subject: [PATCH 20/83] html refactor. --- src/_assets/css/_clock.scss | 36 ------------------------------------ src/clock/index.html | 11 +++-------- 2 files changed, 3 insertions(+), 44 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 44f8d808b13..acc9497dd3b 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -10,27 +10,6 @@ z-index: 99; } - .countdown-container { - padding: 0; - text-align: center; - } - - .heading-container { - height: 24px; - margin: 0; - position: relative; - - @include media-breakpoint-up(md) { - font-size: 32px; - height: 36px; - } - - @include media-breakpoint-up(lg) { - font-size: 40px; - height: 48px; - } - } - .heading { animation: slide-in 1s .8s; animation-fill-mode: both; @@ -49,21 +28,6 @@ } } - .time-unit-container { - display: inline-block; - height: 87px; - position: relative; - width: 100%; - - @include media-breakpoint-up(md) { - height: 165px; - } - - @include media-breakpoint-up(lg) { - height: 260px; - } - } - .time-number { animation: slide-in .8s; animation-fill-mode: both; diff --git a/src/clock/index.html b/src/clock/index.html index cb081f56b84..535d090d4c5 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -7,14 +7,9 @@
-
-

Time is everything. Stay tuned.

-
-
-
-
- ::::
-
+

Time is everything. Stay tuned.

+
+ ::::
From 23c68869c94e033b2fd3f7bbc1e0c8b85547a5d8 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 23 Oct 2019 16:47:17 -0500 Subject: [PATCH 21/83] Add show_footer front-matter variable --- _config.yml | 1 + src/_layouts/base.html | 2 +- src/clock/index.html | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index e0f8c53b212..1977f7b9d33 100644 --- a/_config.yml +++ b/_config.yml @@ -49,6 +49,7 @@ defaults: # below. To selectively enable a banner (say, on the homepage) add # `show_banner: true` to the page's frontmatter. show_banner: true + show_footer: true - scope: path: 'docs' values: diff --git a/src/_layouts/base.html b/src/_layouts/base.html index 7d196cfd855..2affe130726 100644 --- a/src/_layouts/base.html +++ b/src/_layouts/base.html @@ -15,7 +15,7 @@ {{ content }} - {% if page.title != "Clock" %} + {% if page.show_footer -%} {%- include footer.html %} {% endif %} diff --git a/src/clock/index.html b/src/clock/index.html index 535d090d4c5..d40caf6c926 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -2,6 +2,7 @@ title: Clock layout: base show_banner: False +show_footer: False body_class: clock --- From 3fc05eb20bd38e9c037f09c28e1ee202120a18e4 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 23 Oct 2019 17:45:04 -0500 Subject: [PATCH 22/83] Javascript Refactor. --- src/_assets/js/countdown.js | 43 ++++++++++++++++++++++++------------- src/_includes/head.html | 3 --- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js index 60af21b775b..183be23cd34 100644 --- a/src/_assets/js/countdown.js +++ b/src/_assets/js/countdown.js @@ -3,31 +3,44 @@ const hoursContainer = document.querySelector('.hours-digits_container'); const minutesContainer = document.querySelector('.minutes-digits_container'); const secondsContainer = document.querySelector('.seconds-digits_container'); - const eventTime = moment('21-12-2019 17:30:00', 'DD-MM-YYYY HH:mm:ss'); - - function setTimer() { - const currentTime = moment(); - const diffTime = eventTime - currentTime; + const eventTime = 'December 21 2019 17:30:00'; // TODO: Actual event day TBD + + // Returns remaining time in days, hours, minutes and seconds. + function getTimeRemaining() { + const t = Date.parse(eventTime) - Date.parse(new Date()); + const seconds = Math.floor( (t/1000) % 60 ); + const minutes = Math.floor( (t/1000/60) % 60 ); + const hours = Math.floor( (t/(1000*60*60)) % 24 ); + const days = Math.floor( t/(1000*60*60*24) ); + return { + 'total': t, + 'days': days, + 'hours': hours, + 'minutes': minutes, + 'seconds': seconds, + }; + } - function digitsHandler(number) { - return number > 9 ? number : `0${number}`; - } + // Adds a number if there's just one digit + function digitsHandler(number) { + return number > 9 ? number : `0${number}`; + } - if (diffTime > 0) { - // Duration left to the event - const duration = moment.duration(eventTime.diff(currentTime)); + function setTimer() { + const remainingTime = getTimeRemaining(); + if (remainingTime.total > 0) { //Get Days - const days = digitsHandler(duration.days()); + const days = digitsHandler(remainingTime.days); //Get hours - const hours = digitsHandler(duration.hours()); + const hours = digitsHandler(remainingTime.hours); //Get Minutes - const minutes = digitsHandler(duration.minutes()); + const minutes = digitsHandler(remainingTime.minutes); //Get seconds - const seconds = digitsHandler(duration.seconds()); + const seconds = digitsHandler(remainingTime.seconds); daysContainer.innerText = `${days}`; hoursContainer.innerText = `${hours}`; diff --git a/src/_includes/head.html b/src/_includes/head.html index 21c293b1549..e977da26a68 100644 --- a/src/_includes/head.html +++ b/src/_includes/head.html @@ -40,9 +40,6 @@ {% for js in page.js -%} {% endfor -%} - {% if page.title == "Clock" %} - - {% endif %} {% include head-diff2html.html -%} From 32fc8f27d98fb4708879090ec2634eb8a76ada16 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 23 Oct 2019 19:05:44 -0500 Subject: [PATCH 23/83] minor css change. --- src/_assets/css/_clock.scss | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index acc9497dd3b..0d93efcf735 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -47,7 +47,7 @@ } @include media-breakpoint-up(xl) { - font-size: 200px; + font-size: 180px; } @include media-breakpoint-up(xxl) { @@ -82,7 +82,6 @@ animation-fill-mode: both; animation-timing-function: cubic-bezier(.87, 1.15, 1, .99); background-image: asset_url('clock/left_rectangle.svg'), asset_url('clock/right_rectangle.svg'), asset_url('clock/oval.svg'); - background-position: bottom 90px left, top right, bottom left; background-repeat: no-repeat; background-size: 181px 247px, 140px 121px, 280px 163px; height: calc(100% - 66px); @@ -94,7 +93,6 @@ @include media-breakpoint-up(md) { animation-name: geometric-medium-background; background-size: 400px 556px, 317px 258px, auto; - background-position: top 150px left, top right, bottom left; } @include media-breakpoint-up(lg) { From 8260fafd18769879966f9d97db7b8efdf7f04010 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 23 Oct 2019 19:21:34 -0500 Subject: [PATCH 24/83] Fix 320px mobile issue. --- .firebaserc | 6 ++++-- src/_assets/css/_clock.scss | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.firebaserc b/.firebaserc index e428469277e..15a565ac1bc 100644 --- a/.firebaserc +++ b/.firebaserc @@ -13,6 +13,8 @@ "ft": "flutter-web-staging", "filip": "flutter-website-filiph-staging", "brianegan": "brianegan-flutter-staging", - "xster-staging": "flutter-website-staging-6f2ad" + "xster-staging": "flutter-website-staging-6f2ad", + "huge-qa": "huge-flutter-dev-qa", + "huge-staging": "huge-flutter-dev-staging" } -} \ No newline at end of file +} diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 0d93efcf735..c6ab4edfe13 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -32,7 +32,7 @@ animation: slide-in .8s; animation-fill-mode: both; color: $site-color-primary; - font-size: 58px; + font-size: 52px; margin: 0; text-align: center; width: 100%; @@ -57,7 +57,7 @@ .digits_container { display: inline-block; - width: 74px; + width: 68px; @include media-breakpoint-up(md) { width: 142px; From c7ad56c30e916dae426734dd8132c1ee7b75488e Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 24 Oct 2019 09:56:58 -0500 Subject: [PATCH 25/83] Undo .firebaserc changes. --- .firebaserc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.firebaserc b/.firebaserc index 15a565ac1bc..9a4151f0aea 100644 --- a/.firebaserc +++ b/.firebaserc @@ -13,8 +13,6 @@ "ft": "flutter-web-staging", "filip": "flutter-website-filiph-staging", "brianegan": "brianegan-flutter-staging", - "xster-staging": "flutter-website-staging-6f2ad", - "huge-qa": "huge-flutter-dev-qa", - "huge-staging": "huge-flutter-dev-staging" + "xster-staging": "flutter-website-staging-6f2ad" } } From 07183d1a25a3dc662fbedb1c53e0484982edd784 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 24 Oct 2019 10:09:33 -0500 Subject: [PATCH 26/83] Minor changes. --- src/_assets/css/_clock.scss | 3 ++- src/_assets/js/countdown.js | 9 +-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index c6ab4edfe13..6f06f7adc60 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -1,6 +1,7 @@ .clock { background-color: $flutter-dark-blue-texture; font-family: $site-font-family-alt; + $vertical-line-color: #384753; .center { position: absolute; @@ -105,7 +106,7 @@ animation-fill-mode: both; animation-name: vertical-lines; animation-timing-function: ease; - background-color: #384753; + background-color: $vertical-line-color; position: fixed; top: 0; width: 1px; diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js index 183be23cd34..278c3eb3875 100644 --- a/src/_assets/js/countdown.js +++ b/src/_assets/js/countdown.js @@ -21,7 +21,7 @@ }; } - // Adds a number if there's just one digit + // Adds a zero number if there's just one digit function digitsHandler(number) { return number > 9 ? number : `0${number}`; } @@ -30,16 +30,9 @@ const remainingTime = getTimeRemaining(); if (remainingTime.total > 0) { - //Get Days const days = digitsHandler(remainingTime.days); - - //Get hours const hours = digitsHandler(remainingTime.hours); - - //Get Minutes const minutes = digitsHandler(remainingTime.minutes); - - //Get seconds const seconds = digitsHandler(remainingTime.seconds); daysContainer.innerText = `${days}`; From d8b61032c9f42ac33ba0b230ec2220c21230632d Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Fri, 25 Oct 2019 12:12:55 -0500 Subject: [PATCH 27/83] First commit. --- src/_assets/css/_clock.scss | 12 ++++++++++++ src/_includes/banner.html | 1 + src/clock/index.html | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 6f06f7adc60..e92da373b29 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -139,6 +139,18 @@ } } } + + .share-twitter__paragraph { + color: $site-color-white; + font-size: 16px; + text-align: center; + } + + .learn-more__button { + display: block; + margin: 0 auto; + width: 120px; + } } // animations diff --git a/src/_includes/banner.html b/src/_includes/banner.html index d67520a5bb8..4297582800c 100644 --- a/src/_includes/banner.html +++ b/src/_includes/banner.html @@ -10,5 +10,6 @@ new on this site and the revamped Showcase page.
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod clock
{% endif -%} diff --git a/src/clock/index.html b/src/clock/index.html index d40caf6c926..d7d500c4d7b 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -12,6 +12,14 @@

Time is everything. Stay tuned.

::::
+ + +
From 9c04dd901ab47b39d87fc5582fa498bbea51bba3 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Wed, 30 Oct 2019 14:58:35 -0500 Subject: [PATCH 28/83] CTA changed with animation and spaces between elements modified --- src/_assets/css/_clock.scss | 2 +- src/clock/index.html | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index e92da373b29..cfaa8ba1eff 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -16,7 +16,7 @@ animation-fill-mode: both; color: $site-color-white; font-size: 18px; - margin: 0; + margin: 0 0 50px 0; text-align: center; width: 100%; diff --git a/src/clock/index.html b/src/clock/index.html index d7d500c4d7b..1248c190f31 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -12,12 +12,8 @@

Time is everything. Stay tuned.

::::
-
From 4cdea9948f86d603021ec9ecca698b1335634f68 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Wed, 30 Oct 2019 15:19:42 -0500 Subject: [PATCH 29/83] CTA changed with animation and spaces between elements modified --- src/_assets/css/_clock.scss | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index cfaa8ba1eff..c9489b2730f 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -22,10 +22,12 @@ @include media-breakpoint-up(md) { font-size: 32px; + margin-bottom: 60px; } @include media-breakpoint-up(lg) { font-size: 40px; + margin-bottom: 40px; } } @@ -141,9 +143,24 @@ } .share-twitter__paragraph { + animation: slide-in 1s 1.8s; + animation-fill-mode: both; color: $site-color-white; - font-size: 16px; + font-size: 14px; + margin-top: 32px; + padding: 0 37px; text-align: center; + width: 100%; + + @include media-breakpoint-up(md) { + font-size: 16px; + margin-top: 48px; + } + + @include media-breakpoint-up(lg) { + font-size: 20px; + margin-top: 64px; + } } .learn-more__button { From bf7412e86a427f1f06d225e53bb6dca01fea2013 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Wed, 30 Oct 2019 16:12:12 -0500 Subject: [PATCH 30/83] Fixes for clock script and element position --- src/_assets/css/_clock.scss | 5 ++++- src/_assets/js/countdown.js | 6 +++--- src/clock/index.html | 9 +++++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index c9489b2730f..c17388c565e 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -1,7 +1,8 @@ .clock { + $vertical-line-color: #384753; + background-color: $flutter-dark-blue-texture; font-family: $site-font-family-alt; - $vertical-line-color: #384753; .center { position: absolute; @@ -35,7 +36,9 @@ animation: slide-in .8s; animation-fill-mode: both; color: $site-color-primary; + display: flex; font-size: 52px; + justify-content: center; margin: 0; text-align: center; width: 100%; diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js index 278c3eb3875..a1a31df016e 100644 --- a/src/_assets/js/countdown.js +++ b/src/_assets/js/countdown.js @@ -1,9 +1,9 @@ -(function () { +document.addEventListener('DOMContentLoaded', () => { const daysContainer = document.querySelector('.days-digits_container'); const hoursContainer = document.querySelector('.hours-digits_container'); const minutesContainer = document.querySelector('.minutes-digits_container'); const secondsContainer = document.querySelector('.seconds-digits_container'); - const eventTime = 'December 21 2019 17:30:00'; // TODO: Actual event day TBD + const eventTime = 'November 18 2019 09:00:00'; // TODO: Actual event day TBD // Returns remaining time in days, hours, minutes and seconds. function getTimeRemaining() { @@ -47,4 +47,4 @@ setTimer(); setInterval(setTimer, 1000); -}()); +}); diff --git a/src/clock/index.html b/src/clock/index.html index 1248c190f31..bcd68d648f1 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -10,12 +10,17 @@

Time is everything. Stay tuned.

- :::: + 00 + : + 00 + : + 00 + : + 00
-
From e80aa335390b5a8b05d21babe94547cad6c6678b Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 31 Oct 2019 10:20:15 -0500 Subject: [PATCH 31/83] Slide in animations delay changed for clock --- src/_assets/css/_clock.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index c17388c565e..a6c9c508212 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -13,7 +13,7 @@ } .heading { - animation: slide-in 1s .8s; + animation: slide-in 1s .3s; animation-fill-mode: both; color: $site-color-white; font-size: 18px; @@ -33,7 +33,7 @@ } .time-number { - animation: slide-in .8s; + animation: slide-in 1s; animation-fill-mode: both; color: $site-color-primary; display: flex; @@ -146,7 +146,7 @@ } .share-twitter__paragraph { - animation: slide-in 1s 1.8s; + animation: slide-in 1s .6s; animation-fill-mode: both; color: $site-color-white; font-size: 14px; From 30a4f0bd2e56d153145a33d5941a845e8ec52885 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 31 Oct 2019 11:02:17 -0500 Subject: [PATCH 32/83] CTA copy changed --- src/clock/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/clock/index.html b/src/clock/index.html index bcd68d648f1..4235dba570b 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -19,7 +19,7 @@

Time is everything. Stay tuned.

00
From 53aa8830fab52a25e5cc282153031a1001cfe1e4 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 31 Oct 2019 11:16:18 -0500 Subject: [PATCH 33/83] Lorem text removed from banner --- src/_includes/banner.html | 1 - 1 file changed, 1 deletion(-) diff --git a/src/_includes/banner.html b/src/_includes/banner.html index 974d235c44f..9dbd9c96f74 100644 --- a/src/_includes/banner.html +++ b/src/_includes/banner.html @@ -8,6 +8,5 @@ Check out the event page for more details.
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod clock
{% endif -%} From d90a86212760acc7399cfb62079c979bbf917447 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 31 Oct 2019 14:06:57 -0500 Subject: [PATCH 34/83] Spaces fixed for clock and event date added --- src/_assets/css/_clock.scss | 15 ++++++++------- src/_assets/js/countdown.js | 8 +++++--- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index a6c9c508212..668f3a15082 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -6,7 +6,7 @@ .center { position: absolute; - top: 50%; + top: 53%; transform: translateY(-50%); width: 100%; z-index: 99; @@ -17,18 +17,18 @@ animation-fill-mode: both; color: $site-color-white; font-size: 18px; - margin: 0 0 50px 0; + margin: 0 0 24px 0; text-align: center; width: 100%; @include media-breakpoint-up(md) { font-size: 32px; - margin-bottom: 60px; + margin-bottom: 22px; } @include media-breakpoint-up(lg) { font-size: 40px; - margin-bottom: 40px; + margin-bottom: 20px; } } @@ -150,19 +150,20 @@ animation-fill-mode: both; color: $site-color-white; font-size: 14px; - margin-top: 32px; + margin-bottom: 0px; + margin-top: 20px; padding: 0 37px; text-align: center; width: 100%; @include media-breakpoint-up(md) { font-size: 16px; - margin-top: 48px; + margin-top: 22px; } @include media-breakpoint-up(lg) { font-size: 20px; - margin-top: 64px; + margin-top: 24px; } } diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js index a1a31df016e..20b44305a10 100644 --- a/src/_assets/js/countdown.js +++ b/src/_assets/js/countdown.js @@ -3,7 +3,9 @@ document.addEventListener('DOMContentLoaded', () => { const hoursContainer = document.querySelector('.hours-digits_container'); const minutesContainer = document.querySelector('.minutes-digits_container'); const secondsContainer = document.querySelector('.seconds-digits_container'); - const eventTime = 'November 18 2019 09:00:00'; // TODO: Actual event day TBD + const eventTime = new Date(Date.UTC(2019, 10, 18, 17, 0, 0)); + + let interval; // Returns remaining time in days, hours, minutes and seconds. function getTimeRemaining() { @@ -41,10 +43,10 @@ document.addEventListener('DOMContentLoaded', () => { secondsContainer.innerText = `${seconds}`; } else { console.log('The event is now'); - clearInterval(); + clearInterval(interval); } } setTimer(); - setInterval(setTimer, 1000); + interval = setInterval(setTimer, 1000); }); From 2ce619f6efeed94b6c254123a108f2c32820aadb Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 31 Oct 2019 14:37:29 -0500 Subject: [PATCH 35/83] Fix for copy in title --- src/clock/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/clock/index.html b/src/clock/index.html index 4235dba570b..eb86212472d 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -8,7 +8,7 @@
-

Time is everything. Stay tuned.

+

Timing is everything. Stay tuned.

00 : From d57ef6fd7b4de74056be7cb63f7ed9c4f0f305cc Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Fri, 1 Nov 2019 10:14:06 -0500 Subject: [PATCH 36/83] PR comments fixed --- .firebaserc | 2 +- src/_assets/image/clock/left_rectangle.svg | 15 ++------ src/_assets/js/countdown.js | 5 ++- src/clock/index.html | 42 +++++++++++----------- 4 files changed, 28 insertions(+), 36 deletions(-) diff --git a/.firebaserc b/.firebaserc index 9a4151f0aea..e428469277e 100644 --- a/.firebaserc +++ b/.firebaserc @@ -15,4 +15,4 @@ "brianegan": "brianegan-flutter-staging", "xster-staging": "flutter-website-staging-6f2ad" } -} +} \ No newline at end of file diff --git a/src/_assets/image/clock/left_rectangle.svg b/src/_assets/image/clock/left_rectangle.svg index cc0d58e43bb..3b2471505af 100644 --- a/src/_assets/image/clock/left_rectangle.svg +++ b/src/_assets/image/clock/left_rectangle.svg @@ -1,13 +1,4 @@ - - - Left_Rectangle_L - Created with Sketch. - - - - - - - - \ No newline at end of file + + + diff --git a/src/_assets/js/countdown.js b/src/_assets/js/countdown.js index 20b44305a10..fc970eb171a 100644 --- a/src/_assets/js/countdown.js +++ b/src/_assets/js/countdown.js @@ -42,7 +42,10 @@ document.addEventListener('DOMContentLoaded', () => { minutesContainer.innerText = `${minutes}`; secondsContainer.innerText = `${seconds}`; } else { - console.log('The event is now'); + daysContainer.innerText = '00'; + hoursContainer.innerText = '00'; + minutesContainer.innerText = '00'; + secondsContainer.innerText = '00'; clearInterval(interval); } } diff --git a/src/clock/index.html b/src/clock/index.html index eb86212472d..71c6573b8fc 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -6,28 +6,26 @@ body_class: clock --- -
-
-

Timing is everything. Stay tuned.

-
- 00 - : - 00 - : - 00 - : - 00 -
- +
+

Timing is everything. Stay tuned.

+
+ 00 + : + 00 + : + 00 + : + 00
-
-
-
-
-
-
-
+ +
+
+
+
+
+
+
{% asset countdown %} From 1bf8115acfb11730c2be74e2157e3d4f003f2981 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Fri, 1 Nov 2019 10:48:44 -0500 Subject: [PATCH 37/83] More comments fixed for PR --- src/_assets/css/_clock.scss | 42 +++++++++++----------- src/_assets/image/clock/left_rectangle.svg | 5 +-- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 668f3a15082..192c9b5ce6a 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -5,35 +5,36 @@ font-family: $site-font-family-alt; .center { - position: absolute; - top: 53%; - transform: translateY(-50%); - width: 100%; + align-items: center; + display: flex; + flex-direction: column; + height: calc(100vh - 66px); + justify-content: center; z-index: 99; } .heading { - animation: slide-in 1s .3s; + animation: clock-slide-in 1s .3s; animation-fill-mode: both; color: $site-color-white; font-size: 18px; - margin: 0 0 24px 0; + margin: 0 0 24px; text-align: center; width: 100%; @include media-breakpoint-up(md) { font-size: 32px; - margin-bottom: 22px; + margin: 0 0 22px; } @include media-breakpoint-up(lg) { font-size: 40px; - margin-bottom: 20px; + margin: 0 0 20px; } } .time-number { - animation: slide-in 1s; + animation: clock-slide-in 1s; animation-fill-mode: both; color: $site-color-primary; display: flex; @@ -83,7 +84,7 @@ } .animations { - animation-name: geometric-small-background; + animation-name: clock-geometric-small-background; animation-duration: 1.2s; animation-fill-mode: both; animation-timing-function: cubic-bezier(.87, 1.15, 1, .99); @@ -97,7 +98,7 @@ width: 100%; @include media-breakpoint-up(md) { - animation-name: geometric-medium-background; + animation-name: clock-geometric-medium-background; background-size: 400px 556px, 317px 258px, auto; } @@ -109,7 +110,7 @@ .vertical-line { animation-duration: 1s; animation-fill-mode: both; - animation-name: vertical-lines; + animation-name: clock-vertical-lines; animation-timing-function: ease; background-color: $vertical-line-color; position: fixed; @@ -146,24 +147,23 @@ } .share-twitter__paragraph { - animation: slide-in 1s .6s; + animation: clock-slide-in 1s .6s; animation-fill-mode: both; color: $site-color-white; font-size: 14px; - margin-bottom: 0px; - margin-top: 20px; + margin: 20px 0 0; padding: 0 37px; text-align: center; width: 100%; @include media-breakpoint-up(md) { font-size: 16px; - margin-top: 22px; + margin: 22px 0 0; } @include media-breakpoint-up(lg) { font-size: 20px; - margin-top: 24px; + margin: 24px 0 0; } } @@ -175,7 +175,7 @@ } // animations -@keyframes vertical-lines { +@keyframes clock-vertical-lines { from { height: 0; } @@ -184,7 +184,7 @@ } } -@keyframes slide-in { +@keyframes clock-slide-in { from { transform: translateY(50px); opacity: 0; @@ -195,7 +195,7 @@ } } -@keyframes geometric-medium-background { +@keyframes clock-geometric-medium-background { from { background-position: top 150px left -270px, top right -488px, bottom -348px left -140px; } @@ -204,7 +204,7 @@ } } -@keyframes geometric-small-background { +@keyframes clock-geometric-small-background { from { background-position: bottom 90px left -144px, top right -140px, bottom -164px left -100px; } diff --git a/src/_assets/image/clock/left_rectangle.svg b/src/_assets/image/clock/left_rectangle.svg index 3b2471505af..2dd23baa802 100644 --- a/src/_assets/image/clock/left_rectangle.svg +++ b/src/_assets/image/clock/left_rectangle.svg @@ -1,4 +1 @@ - - - - + From 85d79766946eb1776f7d511eab2088ea710f174e Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Fri, 1 Nov 2019 13:39:28 -0500 Subject: [PATCH 38/83] CTA z index fixed --- src/_assets/css/_clock.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 192c9b5ce6a..bb3634a0c5a 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -10,7 +10,6 @@ flex-direction: column; height: calc(100vh - 66px); justify-content: center; - z-index: 99; } .heading { @@ -96,6 +95,7 @@ position: absolute; top: 66px; width: 100%; + z-index: -1; @include media-breakpoint-up(md) { animation-name: clock-geometric-medium-background; From ecd1dcb540d3de0a917da605c5211f3d5f4c907a Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Wed, 6 Nov 2019 10:26:31 -0500 Subject: [PATCH 39/83] Flutter Clock contest phase 2 initial commit --- src/_assets/css/_clock-old.scss | 214 +++++++++++++++++++++ src/_assets/css/_clock.scss | 330 +++++++++++++++++--------------- src/_data/clock_cards.yml | 21 ++ src/_data/faqs.yml | 35 ++++ src/clock/index.html | 151 ++++++++++++++- 5 files changed, 594 insertions(+), 157 deletions(-) create mode 100644 src/_assets/css/_clock-old.scss create mode 100644 src/_data/clock_cards.yml create mode 100644 src/_data/faqs.yml diff --git a/src/_assets/css/_clock-old.scss b/src/_assets/css/_clock-old.scss new file mode 100644 index 00000000000..bb3634a0c5a --- /dev/null +++ b/src/_assets/css/_clock-old.scss @@ -0,0 +1,214 @@ +.clock { + $vertical-line-color: #384753; + + background-color: $flutter-dark-blue-texture; + font-family: $site-font-family-alt; + + .center { + align-items: center; + display: flex; + flex-direction: column; + height: calc(100vh - 66px); + justify-content: center; + } + + .heading { + animation: clock-slide-in 1s .3s; + animation-fill-mode: both; + color: $site-color-white; + font-size: 18px; + margin: 0 0 24px; + text-align: center; + width: 100%; + + @include media-breakpoint-up(md) { + font-size: 32px; + margin: 0 0 22px; + } + + @include media-breakpoint-up(lg) { + font-size: 40px; + margin: 0 0 20px; + } + } + + .time-number { + animation: clock-slide-in 1s; + animation-fill-mode: both; + color: $site-color-primary; + display: flex; + font-size: 52px; + justify-content: center; + margin: 0; + text-align: center; + width: 100%; + z-index: 2; + + @include media-breakpoint-up(md) { + font-size: 110px; + } + + @include media-breakpoint-up(lg) { + font-size: 160px; + } + + @include media-breakpoint-up(xl) { + font-size: 180px; + } + + @include media-breakpoint-up(xxl) { + font-size: 230px; + } + } + + .digits_container { + display: inline-block; + width: 68px; + + @include media-breakpoint-up(md) { + width: 142px; + } + + @include media-breakpoint-up(lg) { + width: 200px; + } + + @include media-breakpoint-up(xl) { + width: 248px; + } + + @include media-breakpoint-up(xxl) { + width: 294px; + } + } + + .animations { + animation-name: clock-geometric-small-background; + animation-duration: 1.2s; + animation-fill-mode: both; + animation-timing-function: cubic-bezier(.87, 1.15, 1, .99); + background-image: asset_url('clock/left_rectangle.svg'), asset_url('clock/right_rectangle.svg'), asset_url('clock/oval.svg'); + background-repeat: no-repeat; + background-size: 181px 247px, 140px 121px, 280px 163px; + height: calc(100% - 66px); + overflow: hidden; + position: absolute; + top: 66px; + width: 100%; + z-index: -1; + + @include media-breakpoint-up(md) { + animation-name: clock-geometric-medium-background; + background-size: 400px 556px, 317px 258px, auto; + } + + @include media-breakpoint-up(lg) { + background-size: auto; + } + } + + .vertical-line { + animation-duration: 1s; + animation-fill-mode: both; + animation-name: clock-vertical-lines; + animation-timing-function: ease; + background-color: $vertical-line-color; + position: fixed; + top: 0; + width: 1px; + z-index: -1; + + &--first { + left: 4%; + } + + &--second { + animation-delay: .2s; + left: 27%; + } + + &--thrid { + animation-delay: .4s; + left: 50%; + } + + &--fourth { + animation-delay: .6s; + left: 73%; + } + + &--first, &--thrid { + display: none; + + @include media-breakpoint-up(lg) { + display: block; + } + } + } + + .share-twitter__paragraph { + animation: clock-slide-in 1s .6s; + animation-fill-mode: both; + color: $site-color-white; + font-size: 14px; + margin: 20px 0 0; + padding: 0 37px; + text-align: center; + width: 100%; + + @include media-breakpoint-up(md) { + font-size: 16px; + margin: 22px 0 0; + } + + @include media-breakpoint-up(lg) { + font-size: 20px; + margin: 24px 0 0; + } + } + + .learn-more__button { + display: block; + margin: 0 auto; + width: 120px; + } +} + +// animations +@keyframes clock-vertical-lines { + from { + height: 0; + } + to { + height: 100%; + } +} + +@keyframes clock-slide-in { + from { + transform: translateY(50px); + opacity: 0; + } + to { + transform: none; + opacity: 1; + } +} + +@keyframes clock-geometric-medium-background { + from { + background-position: top 150px left -270px, top right -488px, bottom -348px left -140px; + } + to { + background-position: top 150px left, top right, bottom left; + } +} + +@keyframes clock-geometric-small-background { + from { + background-position: bottom 90px left -144px, top right -140px, bottom -164px left -100px; + } + to { + background-position: bottom 90px left, top right, bottom left; + } +} diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index bb3634a0c5a..64ba1e78ca8 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -1,214 +1,236 @@ .clock { - $vertical-line-color: #384753; - - background-color: $flutter-dark-blue-texture; + $clock-color-dark: #212c34; + $clock-color-white: #fff; + $clock-color-blue: #01579b; + $clock-color-light-blue: #aecbfa; + $clock-color-light-grey: #f8f9fa; + $clock-color-grey: #555; + font-family: $site-font-family-alt; - .center { - align-items: center; + // Styles for section clock__hero + &__hero { + align-content: center; + background-color: $clock-color-dark; display: flex; flex-direction: column; - height: calc(100vh - 66px); justify-content: center; - } - - .heading { - animation: clock-slide-in 1s .3s; - animation-fill-mode: both; - color: $site-color-white; - font-size: 18px; - margin: 0 0 24px; + padding: 8em; text-align: center; - width: 100%; + color: $clock-color-white; - @include media-breakpoint-up(md) { - font-size: 32px; - margin: 0 0 22px; + h1 { + margin-bottom: 21px; } - @include media-breakpoint-up(lg) { - font-size: 40px; - margin: 0 0 20px; + p { + margin-bottom: 0; + } + + a { + margin-top: 40px; } } - .time-number { - animation: clock-slide-in 1s; - animation-fill-mode: both; - color: $site-color-primary; - display: flex; - font-size: 52px; - justify-content: center; - margin: 0; - text-align: center; - width: 100%; - z-index: 2; + // Styles for section clock__wtm (What to make) + // Styles for wtm container + &__wtm { + padding: 8em; - @include media-breakpoint-up(md) { - font-size: 110px; + img { + width: 50%; } + } - @include media-breakpoint-up(lg) { - font-size: 160px; - } + // Styles for wtm copy + &__wtm-copy { + color: $clock-color-dark; + display: inline-block; + width: 50%; - @include media-breakpoint-up(xl) { - font-size: 180px; + h2 { + margin: 24px 0 32px; } - @include media-breakpoint-up(xxl) { - font-size: 230px; + ul { + font-weight: bold; + padding-left: 20px; + + li { + margin-top: 12px; + margin-bottom: 12px; + } } } - .digits_container { - display: inline-block; - width: 68px; + // Styles for section clock__prizes + // Styles for prizes container + &__prizes { + background-color: $clock-color-blue; + color: $clock-color-white; + text-align: center; + padding: 160px 80px; - @include media-breakpoint-up(md) { - width: 142px; + h2 { + margin: 0 0 80px; } - @include media-breakpoint-up(lg) { - width: 200px; + hr { + background-color: $clock-color-light-blue; + margin: 56px 0 32px; + width: 100%; } - @include media-breakpoint-up(xl) { - width: 248px; + > p { + font-size: 18px; } + } - @include media-breakpoint-up(xxl) { - width: 294px; + // Styles for prizes columns + &__prizes-columns { + display: flex; + justify-content: space-between; + text-align: center; + + > div { + width: 30%; } - } - .animations { - animation-name: clock-geometric-small-background; - animation-duration: 1.2s; - animation-fill-mode: both; - animation-timing-function: cubic-bezier(.87, 1.15, 1, .99); - background-image: asset_url('clock/left_rectangle.svg'), asset_url('clock/right_rectangle.svg'), asset_url('clock/oval.svg'); - background-repeat: no-repeat; - background-size: 181px 247px, 140px 121px, 280px 163px; - height: calc(100% - 66px); - overflow: hidden; - position: absolute; - top: 66px; - width: 100%; - z-index: -1; - - @include media-breakpoint-up(md) { - animation-name: clock-geometric-medium-background; - background-size: 400px 556px, 317px 258px, auto; - } - - @include media-breakpoint-up(lg) { - background-size: auto; + h4 { + font-size: 40px; + margin: 0 0 40px; } } - .vertical-line { - animation-duration: 1s; - animation-fill-mode: both; - animation-name: clock-vertical-lines; - animation-timing-function: ease; - background-color: $vertical-line-color; - position: fixed; - top: 0; - width: 1px; - z-index: -1; + // Styles for section clock__getting (Getting Started) + &__getting { + background-color: $clock-color-light-grey; + color: $clock-color-dark; + padding: 80px; + text-align: center; + + h4 { + font-size: 32px; + margin: 0 0 24px; + } - &--first { - left: 4%; + h6 { + color: $clock-color-grey; + font-size: 18px; + margin: 0 0 56px; } - &--second { - animation-delay: .2s; - left: 27%; + p { + margin: 80px 0 0; } + } - &--thrid { - animation-delay: .4s; - left: 50%; + &__getting-cards { + display: flex; + overflow-x: scroll; + padding-bottom: 56px; + + // Bootstrap styles override + .card { + border: none; + height: 300px; + text-align: left; + padding: 0; + margin-right: 28px; + + &:last-of-type { + margin-right: 0; + } } - &--fourth { - animation-delay: .6s; - left: 73%; + .card-body { + display: flex; + flex-direction: column; + padding: 24px; } - &--first, &--thrid { - display: none; + .card-title { + align-items: center; + background-color: #e6f8fe; + border-radius: 50%; + color: #1389fd; + display: flex; + font-size: 32px; + height: 48px; + justify-content: center; + margin-bottom: 40px; + text-align: center; + width: 48px; + } - @include media-breakpoint-up(lg) { - display: block; - } + .card-link { + bottom: 24px; + transform: rotate(45deg); + position: absolute; } } - .share-twitter__paragraph { - animation: clock-slide-in 1s .6s; - animation-fill-mode: both; - color: $site-color-white; - font-size: 14px; - margin: 20px 0 0; - padding: 0 37px; + // Styles for section clock__submit + &__submit { + background-color: $clock-color-light-grey; + color: $clock-color-dark; + margin: 80px; + padding: 80px; text-align: center; - width: 100%; - @include media-breakpoint-up(md) { - font-size: 16px; - margin: 22px 0 0; + h2 { + font-size: 48px; } - @include media-breakpoint-up(lg) { - font-size: 20px; - margin: 24px 0 0; + button { + font-size: 18px; + margin-top: 32px; + padding: 0.5rem 1em; } } - .learn-more__button { - display: block; - margin: 0 auto; - width: 120px; + // Styles for section clock__faqs + // Styles for general container + &__faqs { + background-color: $clock-color-light-grey; + display: flex; + justify-content: center; + padding: 80px; } -} -// animations -@keyframes clock-vertical-lines { - from { - height: 0; - } - to { - height: 100%; - } -} + // Styles for content and copy + &__faqs-container { + width: 844px; -@keyframes clock-slide-in { - from { - transform: translateY(50px); - opacity: 0; - } - to { - transform: none; - opacity: 1; - } -} + // Bootstrap styles override + .btn { + align-items: center; + color: $clock-color-dark; + display: flex; + justify-content: space-between; + padding: 0; + text-align: left; + width: 100%; + } -@keyframes clock-geometric-medium-background { - from { - background-position: top 150px left -270px, top right -488px, bottom -348px left -140px; - } - to { - background-position: top 150px left, top right, bottom left; - } -} + .card { + background-color: transparent; + border: none; + border-radius: 0; -@keyframes clock-geometric-small-background { - from { - background-position: bottom 90px left -144px, top right -140px, bottom -164px left -100px; - } - to { - background-position: bottom 90px left, top right, bottom left; + &:last-of-type { + .card-header { + border-bottom: 1px solid rgba(85, 85, 85, 0.2); + } + } + } + + .card-header { + background-color: transparent; + border-bottom: 0; + border-top: 1px solid rgba(85, 85, 85, 0.2); + border-radius: 0; + padding: 17px 0; + } } -} +} \ No newline at end of file diff --git a/src/_data/clock_cards.yml b/src/_data/clock_cards.yml new file mode 100644 index 00000000000..98df5e65f2b --- /dev/null +++ b/src/_data/clock_cards.yml @@ -0,0 +1,21 @@ +- title: Git clone this repo + redirect: '#' + +- title: How do you want to build your clock? + links: + + - text: 'Sample clock 1: Basic analog clock' + link: '#' + + - text: 'Sample clock 2: Decorative clock' + link: '#' + + - text: 'Create your own clock package' + link: '#' + +- title: Run your clock package using this clock customizer app + redirect: '#' + +- title: Run your clock using the clock customizer app + redirect: '#' + \ No newline at end of file diff --git a/src/_data/faqs.yml b/src/_data/faqs.yml new file mode 100644 index 00000000000..fedbfae4106 --- /dev/null +++ b/src/_data/faqs.yml @@ -0,0 +1,35 @@ +- title: What is Flutter Clock? + content: Flutter Clock is a contest where new and experienced developers can submit a project built using Flutter. It’s a fun way to learn Flutter, try building out interfaces, and possibly win prizes. + +- title: What is the judging criteria? + content: 'Each entry will be rated against the following rubric: visual beauty, code quality, novelty of idea, and overall execution.' + +- title: Who are the judges? + content: Entries will be judged by members of the Flutter team and experienced developers from the Flutter community. + +- title: What are the deadlines for the project? + content: You need to have your project submitted by April 7th at 11:59pm PST. + +- title: I submitted my project, can I make changes to it? + content: Yes, as long as your change occurs before April 7th at 11:59pm PST. + +- title: How will the winners be selected? + content: 'Judges will evaluate based on four criteria: visual beauty, code quality, novelty of idea, and overall execution.' + +- title: When will winners be selected? + content: Winners will be selected around April 25 and announced at Google I/O. + +- title: What are the prizes? + content: 1 grand prize winner will get an iMac Pro 5K
4 additional winners will get a Google Home Max
Up to 25 others will win a Google Home Mini + +- title: Can I submit more than one project? + content: No, we limit one project per participant. + +- title: I already have an approved app, can I submit that for the challenge? + content: Unfortunately, no. Only new apps or UI’s can be submitted for approval + +- title: Is there an age limit to participate? + content: You must not be a minor (per your local law) to be eligible to win. + +- title: If I have more questions, where should I go? + content: Take a look through our official rules. You can also send us an email to flutter-create@google.com. \ No newline at end of file diff --git a/src/clock/index.html b/src/clock/index.html index 71c6573b8fc..ae7b1a379a5 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -2,11 +2,156 @@ title: Clock layout: base show_banner: False -show_footer: False body_class: clock --- -
+
+

Flutter Clock

+

+ Flutter Clock is a contest that challenges you to build a clock face that
is beautiful and innovative with Flutter. +

+ + Share this with friends + +
+ +
+
+ +
+
+ What to make +

+ Create a beautiful clock face UI with Flutter. +

+

+ Entries will be judged by a panel of Google experts against the following four criteria: +

+
    +
  • + Visual beauty +
  • +
  • + Novelty of idea +
  • +
  • + Code quality +
  • +
  • + Overall execution +
  • +
+

+ All projects must be submitted by January 20, 11:59PM PST (GMT-8). +

+
+
+ +
+

+ Prizes +

+
+
+

+ Grand prize +

+

+ A Loaded Apple iMac Pro valued at approximately $10,000.* +

+
+
+

+ 4 winners +

+

+ Lenovo Smart Display with the Google Assistant - 10” (~$249.00 USD value) +

+
+
+

+ Up to 25 winners +

+

+ Quantity up to 25 - Lenovo Smart Clock with the Google Assistant (~$79.00 USD value) +

+
+
+
+

+ In addition, all submissions will receive a digital certificate of completion. Also, there is a chance that some of the clock
submissions will be considered to be integrated into the Lenovo Smart Clock's lineup of clock faces.
*(detailed specifications may vary based on availability and local country import law). +

+
+ +
+

+ Getting started +

+
+ Make sure to familiarize yourself with the submission guidelines and contest rules. +
+
+ {% for card in site.data.clock_cards %} +
+
+
{{ forloop.index }}
+
{{ card.title }}
+ {% if card.redirect %} + + + + {% endif %} + {% if card.links %} + {% for link in card.links %} + {{ link.text }} + {% endfor %} + {% endif %} +
+
+ {% endfor %} +
+

+ All projects must be submitted by January 20, 11:59PM PST (GMT-8). +

+
+ +
+
+

+ Create a novel user experience with
Flutter using 5KB or less of Dart code +

+ +
+
+ +
+
+

+ FAQs +

+
+ {% for faq in site.data.faqs %} +
+
+ +
+
+
+ {{ faq.content }} +
+
+
+ {% endfor %} +
+
+
+ + \ No newline at end of file From 4b5e8cdd884cdb9ce5bc35938c2e179615c5d1b3 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Fri, 8 Nov 2019 15:50:25 -0500 Subject: [PATCH 40/83] First commit. --- src/_assets/css/_clock.scss | 261 +++++++++++++++++++++- src/_data/clock/entries.yml | 12 + src/_data/clock/faqs.yml | 35 +++ src/_data/clock/getting_started_items.yml | 31 +++ src/_data/clock/prizes.yml | 12 + src/clock/index.html | 170 +++++++++++++- 6 files changed, 516 insertions(+), 5 deletions(-) create mode 100644 src/_data/clock/entries.yml create mode 100644 src/_data/clock/faqs.yml create mode 100644 src/_data/clock/getting_started_items.yml create mode 100644 src/_data/clock/prizes.yml diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index bb3634a0c5a..27e6b675580 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -1,6 +1,264 @@ +.clock { + $clock-color-dark: #212c34; + $clock-color-white: #fff; + $clock-color-blue: #01579b; + $clock-color-light-blue: #aecbfa; + $clock-color-light-grey: #f8f9fa; + $clock-color-grey: #555; + font-family: $site-font-family-alt; + + &__texture { + height: 100%; + margin-left: calc(50% - 50vw); + position: absolute; + width: 100vw; + } + + // Common styles for clock sections + &__section { + margin-left: calc(50% - 50vw); + margin-right: calc(50% - 50vw); + } + + // Styles for section clock__hero + &__hero { + background-color: $flutter-dark-blue-texture; + color: $site-color-white; + position: relative; + text-align: center; + + .heading { + margin: 100px auto 30px; + max-width: 344px; + } + + .twitter-link { + display: block; + margin-bottom: 100px; + } + + &__texture { + background-color: $flutter-dark-blue-texture; + } + } + + // Styles for section clock__wtm (What to make) + &__wtm { + position: relative; + + &__texture { + background-color: #FFF; + } + + &_container { + margin: 100px 0; + } + } + + &__wtm-text { + font-size: 12px; + } + + // Styles for wtm copy + &__wtm-copy { + color: $clock-color-dark; + + .subheading { + margin: 20px 0; + font-size: 30px; + } + + .paragraph { + font-size: 14px; + } + } + + &__wtm-entries { + margin-top: 80px; + + &_container { + margin: 60px 0; + } + + .heading { + font-size: 26px; + margin: 0 auto; + max-width: 630px; + text-align: center; + } + + .paragraph { + text-align: center; + } + + .entries__card { + height: 100%; + } + + .entries__card-body { + background-color: lightgray; + + .paragraph { + text-align: left; + margin-bottom: 50px; + max-width: 86px; + } + } + } + + // Styles for section clock__prizes + // Styles for prizes container + &__prizes { + background-color: $clock-color-blue; + color: $clock-color-white; + position: relative; + + &_container { + margin: 100px 0; + } + + ul { + padding: 0; + margin: 0; + } + + li { + list-style: none; + } + + hr { + background-color: $clock-color-light-blue; + margin: 56px 0; + width: 100%; + } + + .subheading { + font-size: 26px; + margin: 16px 0; + } + + .paragraph { + font-size: 14px; + } + + .info-paragraph { + font-size: 12px; + } + + &__texture { + background-color: $clock-color-blue; + } + } + + // Styles for section clock__getting (Getting Started) + &__getting { + color: $clock-color-dark; + + ul { + padding-left: 16px; + } + + li { + padding: 8px 0; + } + + &_container { + margin: 100px 0; + } + + .subheading { + font-size: 32px; + margin: 0 0 16px 0; + } + + .paragraph { + margin-bottom: 40px; + } + } + + // Styles for section clock__submit + &__submit { + background-color: $clock-color-light-grey; + color: $clock-color-dark; + text-align: center; + + &_container { + padding: 60px; + } + + .subheading { + font-size: 40px; + margin: 0; + } + + .submit-app__button { + font-size: 18px; + margin-top: 32px; + padding: 0.5rem 1em; + } + } + + // Styles for section clock__faqs + // Styles for general container + &__faqs { + margin-top: 100px; + padding-bottom: 100px; + position: relative; + + &__texture { + background-color: $clock-color-light-grey; + } + + &_container { + .faqs_button { + align-items: center; + color: $clock-color-dark; + display: flex; + justify-content: space-between; + padding: 0; + text-align: left; + width: 100%; + } + + .faqs_card { + &:last-of-type { + .card-header { + border-bottom: 1px solid rgba(85, 85, 85, 0.2); + } + } + } + + .faqs_card-header { + background-color: transparent; + border-bottom: 0; + border-top: 1px solid rgba(85, 85, 85, 0.2); + border-radius: 0; + padding: 17px 0; + } + } + } + + //dropdown button + .dropdown__button { + box-shadow: none; + outline: none; + } + /* + .dropdown__button[aria-expanded="false"]::after { + content: " >"; + } + + .dropdown__button[aria-expanded="true"]::after { + content: " <"; + }*/ +} + + + +/* .clock { $vertical-line-color: #384753; - + background-color: $flutter-dark-blue-texture; font-family: $site-font-family-alt; @@ -212,3 +470,4 @@ background-position: bottom 90px left, top right, bottom left; } } +*/ diff --git a/src/_data/clock/entries.yml b/src/_data/clock/entries.yml new file mode 100644 index 00000000000..370133fadd6 --- /dev/null +++ b/src/_data/clock/entries.yml @@ -0,0 +1,12 @@ +- title: Visual beauty + logo: 'fa-play-circle' + +- title: Novelty of idea + logo: 'fa-play-circle' + +- title: Code quality + logo: 'fa-play-circle' + +- title: Overall execution + logo: 'fa-play-circle' + diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml new file mode 100644 index 00000000000..fedbfae4106 --- /dev/null +++ b/src/_data/clock/faqs.yml @@ -0,0 +1,35 @@ +- title: What is Flutter Clock? + content: Flutter Clock is a contest where new and experienced developers can submit a project built using Flutter. It’s a fun way to learn Flutter, try building out interfaces, and possibly win prizes. + +- title: What is the judging criteria? + content: 'Each entry will be rated against the following rubric: visual beauty, code quality, novelty of idea, and overall execution.' + +- title: Who are the judges? + content: Entries will be judged by members of the Flutter team and experienced developers from the Flutter community. + +- title: What are the deadlines for the project? + content: You need to have your project submitted by April 7th at 11:59pm PST. + +- title: I submitted my project, can I make changes to it? + content: Yes, as long as your change occurs before April 7th at 11:59pm PST. + +- title: How will the winners be selected? + content: 'Judges will evaluate based on four criteria: visual beauty, code quality, novelty of idea, and overall execution.' + +- title: When will winners be selected? + content: Winners will be selected around April 25 and announced at Google I/O. + +- title: What are the prizes? + content: 1 grand prize winner will get an iMac Pro 5K
4 additional winners will get a Google Home Max
Up to 25 others will win a Google Home Mini + +- title: Can I submit more than one project? + content: No, we limit one project per participant. + +- title: I already have an approved app, can I submit that for the challenge? + content: Unfortunately, no. Only new apps or UI’s can be submitted for approval + +- title: Is there an age limit to participate? + content: You must not be a minor (per your local law) to be eligible to win. + +- title: If I have more questions, where should I go? + content: Take a look through our official rules. You can also send us an email to flutter-create@google.com. \ No newline at end of file diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml new file mode 100644 index 00000000000..bf8ec5f19ea --- /dev/null +++ b/src/_data/clock/getting_started_items.yml @@ -0,0 +1,31 @@ +- title: Git clone this repo + link_text: github.com/flutter/flutter_clock + link: '#' + +- title: How do you want to build your clock? + subItems: + - text: 'Sample clock 1: Basic analog clock' + link_text: github.com/flutter/flutter_clock/analog_clock + link: '#' + - text: 'Sample clock 2: A slightly decorative digital clock that changes UI based on the API:' + link_text: github.com/flutter/flutter_clock/digital_clock + link: '#' + - text: 'Make your own clock package using' + link_text: flutter create -template=package + link: '#' + +- title: Run your clock package using this clock customizer app + is_dropdown: true + content: content 1 + +- title: Run your clock using the clock customizer app + is_dropdown: true + content: content 2 + +- title: Develop your clock UI + is_dropdown: true + content: content 3 + +- title: Submit your final project + text: Submit your final project using this form. See submission guidelines for eligibility requirements + redirect: '#' diff --git a/src/_data/clock/prizes.yml b/src/_data/clock/prizes.yml new file mode 100644 index 00000000000..89022e33bd0 --- /dev/null +++ b/src/_data/clock/prizes.yml @@ -0,0 +1,12 @@ +- title: Grand Prize + paragraph: > + A Loaded Apple iMac Pro valued at approximately $10,000 (detailed specifications may vary based on + availability and local country import law). + +- title: 4 winners + paragraph: Lenovo Smart Display with the Google Assistant - 10" (~$249.00 USD value) + +- title: Up to 25 winners + paragraph: Quantity up to 25 - Lenovo smart Clock with the Google Assistant (~$79.00 USD value) + + diff --git a/src/clock/index.html b/src/clock/index.html index 71c6573b8fc..45184741eae 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -1,12 +1,174 @@ --- title: Clock -layout: base +layout: landing show_banner: False -show_footer: False body_class: clock --- -
+
+
+
+
+

Take the Flutter Clock challenge

+ +
+
+
+ +
+
+
+
+ {% asset homepage/news-1.jpg alt='A news item image' class="card-img-top" %} +
+
+ What to make +

+ Create a beautiful clock face UI with Flutter. +

+

+ Build a beautiful clock face UI with Flutter for a change to win an iMac Pro. Lenovo Smart Display or Lenovo Smart Clock. +

+
+
+

Entries will be judged by a panel of Google experts against the following criteria:

+
+ {% for entry in site.data.clock.entries %} +
+
+
+

{{entry.title}}

+ +
+
+
+ {% endfor %} +
+

+ All projects must be submitted by January 20, 11:59PM PST (GMT-8). +

+
+
+
+ +
+
+
+
+ Prizes +
    + {% for prize in site.data.clock.prizes %} +
  • +

    {{prize.title}}

    +

    {{prize.paragraph}}

    +
  • + {% endfor %} +
+
+
+ {% asset homepage/news-1.jpg alt='A news item image' class="card-img-top" %} +
+
+
+

+ In addition, all submissions will receive a digital certificate of completion. Also, there is a change + that some of the clock submissions will be considered to be integrated into the Lenovo Smart clock's + lineup of clock faces. +

+
+
+
+ +
+
+
+

Getting started.

+

Make sure to familiarize yourself with the submission guidelines and contest rules.

+
    + {% for item in site.data.clock.getting_started_items %} +
  • + {% if item.is_dropdown %} +
    +
    + +
    +
    +
    + {{ item.content }} +
    +
    +
    + {% else %} + {{item.title}} + {% if item.link %} + {{item.link_text}} + {% endif %} + {% if item.subItems %} +
      + {% for subItem in item.subItems %} +
    1. + {{subItem.text}} + {% if subItem.link %} + {{subItem.link_text}} + {% endif %} +
    2. + {% endfor %} +
    + {% endif %} + {% endif %} +
  • + {% endfor %} +
+
+
+
+ +
+
+
+

+ Create a novel user experience with Flutter using 5KB or less of Dart code +

+ +
+
+
+ +
+
+
+
+

FAQs

+
+ {% for faq in site.data.clock.faqs %} +
+
+ +
+
+
+ {{ faq.content }} +
+
+
+ {% endfor %} +
+
+
+
+ + From 42e374ef86d203e6efa0c62615ae8238c9316c89 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 13 Nov 2019 09:41:03 -0500 Subject: [PATCH 41/83] Update copy --- src/_assets/css/_clock.scss | 157 ++++++++++----- src/_assets/css/_variables.scss | 1 + .../image/clock/hero-pattern__background.svg | 1 + .../image/clock/prizes__background.svg | 1 + .../image/clock/wtm__background-bottom.svg | 1 + .../image/clock/wtm__background-top.svg | 1 + src/_data/clock/faqs.yml | 184 ++++++++++++++++-- src/_data/clock/getting_started_items.yml | 77 +++++--- src/clock/index.html | 133 ++++++++----- 9 files changed, 417 insertions(+), 139 deletions(-) create mode 100644 src/_assets/image/clock/hero-pattern__background.svg create mode 100644 src/_assets/image/clock/prizes__background.svg create mode 100644 src/_assets/image/clock/wtm__background-bottom.svg create mode 100644 src/_assets/image/clock/wtm__background-top.svg diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 27e6b675580..6ab4f6c697f 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -24,21 +24,41 @@ &__hero { background-color: $flutter-dark-blue-texture; color: $site-color-white; + padding-bottom: 104px; position: relative; text-align: center; .heading { - margin: 100px auto 30px; - max-width: 344px; + + } + + .youtube-link, .twitter-link { + color: $twitter-color; + font-size: 18px; + + i { + margin-right: 5px; + } } .twitter-link { - display: block; - margin-bottom: 100px; + display: inline-block; + margin-bottom: 8px; } &__texture { background-color: $flutter-dark-blue-texture; + background-image: asset_url('clock/hero-pattern__background.svg'); + background-repeat: no-repeat; + background-size: cover; + } + + @include media-breakpoint-up(lg) { + .heading { + font-size: 72px; + margin: 120px auto 40px; + max-width: 642px; + } } } @@ -48,6 +68,9 @@ &__texture { background-color: #FFF; + background-image: asset_url('clock/wtm__background-bottom.svg'), asset_url('clock/wtm__background-top.svg'); + background-position: right bottom -20px, left top 100px; + background-repeat: no-repeat; } &_container { @@ -55,44 +78,47 @@ } } - &__wtm-text { - font-size: 12px; - } - // Styles for wtm copy &__wtm-copy { - color: $clock-color-dark; + color: $clock-color-dark; //TODO: Change for a variable .subheading { - margin: 20px 0; - font-size: 30px; + margin: 0 0 24px; + font-size: 56px; } .paragraph { + font-size: 20px; + } + + .paragraph-conditions { + font-family: $site-font-family-base; font-size: 14px; + margin: 0; } } &__wtm-entries { - margin-top: 80px; + margin-top: 72px; &_container { - margin: 60px 0; + margin-bottom: 80px; } .heading { - font-size: 26px; - margin: 0 auto; + font-size: 32px; + margin: 0 auto 88px; max-width: 630px; text-align: center; } - .paragraph { - text-align: center; - } - .entries__card { - height: 100%; + padding: 0 14px; + + .card { + height: 190px; + max-width: 190px; + } } .entries__card-body { @@ -106,6 +132,10 @@ } } + &__wtm-logos { + + } + // Styles for section clock__prizes // Styles for prizes container &__prizes { @@ -113,10 +143,6 @@ color: $clock-color-white; position: relative; - &_container { - margin: 100px 0; - } - ul { padding: 0; margin: 0; @@ -132,21 +158,34 @@ width: 100%; } + &_container { + margin: 160px 0; + } + + .prizes-text { + display: inline-block; + font-size: 20px; + margin-bottom: 16px; + } + .subheading { - font-size: 26px; - margin: 16px 0; + font-size: 40px; + margin: 24px 0; } .paragraph { - font-size: 14px; + font-size: 20px; } .info-paragraph { - font-size: 12px; + font-size: 18px; } &__texture { background-color: $clock-color-blue; + background-image: asset_url('clock/prizes__background.svg'); + background-position: right 50px top 150px; + background-repeat: no-repeat; } } @@ -154,25 +193,42 @@ &__getting { color: $clock-color-dark; - ul { + ol { padding-left: 16px; } li { - padding: 8px 0; + font-size: 20px; + font-weight: 500; + padding: 16px 0; } &_container { - margin: 100px 0; + margin: 80px 0; } .subheading { - font-size: 32px; + font-size: 56px; margin: 0 0 16px 0; } .paragraph { - margin-bottom: 40px; + margin-bottom: 24px; + } + + .sub-item { + font-family: $site-font-family-base; + font-size: 18px; + font-weight: normal; + padding: 8px 0; + + .sub-item { + list-style: none; + } + } + + .sub-item:last-child { + padding-bottom: 16px; } } @@ -183,18 +239,19 @@ text-align: center; &_container { - padding: 60px; + padding: 80px; } .subheading { - font-size: 40px; - margin: 0; + font-size: 48px; + margin: 0 auto 32px; + max-width: 626px; + text-align: center; } .submit-app__button { font-size: 18px; - margin-top: 32px; - padding: 0.5rem 1em; + padding: 16px 24px; } } @@ -202,7 +259,6 @@ // Styles for general container &__faqs { margin-top: 100px; - padding-bottom: 100px; position: relative; &__texture { @@ -210,6 +266,8 @@ } &_container { + padding: 80px 0; + .faqs_button { align-items: center; color: $clock-color-dark; @@ -236,6 +294,14 @@ padding: 17px 0; } } + + .subheading { + font-size: 56px; + } + + .faq__card-body { + padding: 0 24px 24px 0; + } } //dropdown button @@ -243,14 +309,13 @@ box-shadow: none; outline: none; } - /* - .dropdown__button[aria-expanded="false"]::after { - content: " >"; - } - .dropdown__button[aria-expanded="true"]::after { - content: " <"; - }*/ + + .dropdown__button[aria-expanded="true"] { + i { + transform: rotate(180deg); + } + } } diff --git a/src/_assets/css/_variables.scss b/src/_assets/css/_variables.scss index 0e87a60c20f..50a9036ea1e 100644 --- a/src/_assets/css/_variables.scss +++ b/src/_assets/css/_variables.scss @@ -14,6 +14,7 @@ $site-color-body: #4A4A4A; $site-color-body-light: rgba(74/255, 74/255, 74/255, .8); $site-color-footer: #303c42; $site-color-primary: $flutter-color-blue-500; +$twitter-color: #60CAF6; // Fonts $site-font-family-base: 'Roboto', sans-serif; diff --git a/src/_assets/image/clock/hero-pattern__background.svg b/src/_assets/image/clock/hero-pattern__background.svg new file mode 100644 index 00000000000..40dd9abca0d --- /dev/null +++ b/src/_assets/image/clock/hero-pattern__background.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/prizes__background.svg b/src/_assets/image/clock/prizes__background.svg new file mode 100644 index 00000000000..4a368de2f64 --- /dev/null +++ b/src/_assets/image/clock/prizes__background.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/wtm__background-bottom.svg b/src/_assets/image/clock/wtm__background-bottom.svg new file mode 100644 index 00000000000..87c2b52dc5f --- /dev/null +++ b/src/_assets/image/clock/wtm__background-bottom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_assets/image/clock/wtm__background-top.svg b/src/_assets/image/clock/wtm__background-top.svg new file mode 100644 index 00000000000..cb5189b85d4 --- /dev/null +++ b/src/_assets/image/clock/wtm__background-top.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index fedbfae4106..a0725823178 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -1,35 +1,181 @@ - title: What is Flutter Clock? - content: Flutter Clock is a contest where new and experienced developers can submit a project built using Flutter. It’s a fun way to learn Flutter, try building out interfaces, and possibly win prizes. + content: > + Flutter Clock is a skills-based contest offered by Google, including participation by the Flutter, Google Assistant, + and Lenovo teams, and aims to advance the UI ecosystem for smart displays such as Lenovo Smart Clocks. Flutter Clock + challenges you to use Flutter to build a beautiful and innovative clock face application. - title: What is the judging criteria? - content: 'Each entry will be rated against the following rubric: visual beauty, code quality, novelty of idea, and overall execution.' + content: > + Each entry will be rated against the following rubric: Visual beauty, Novelty of idea, Code quality, and Overall + execution (including accessibility). - title: Who are the judges? - content: Entries will be judged by members of the Flutter team and experienced developers from the Flutter community. + content: > + Entries will be judged by employees of Google and/or individuals from the Flutter open source community that are + experienced developers and designers. -- title: What are the deadlines for the project? - content: You need to have your project submitted by April 7th at 11:59pm PST. +- title: What are the deadlines for the contest? + content: > + You need to have your clock submitted via the Google form by January 20th, 11:59pm PST (GMT - 8), and published + publicly on Github by February 5th, 11:59pm PST (GMT - 8). -- title: I submitted my project, can I make changes to it? - content: Yes, as long as your change occurs before April 7th at 11:59pm PST. +- title: I submitted my clock. Can I make changes to it? + content: > + Yes, as long as your changes occur before January 20th, 11:59pm PST (GMT - 8). -- title: How will the winners be selected? - content: 'Judges will evaluate based on four criteria: visual beauty, code quality, novelty of idea, and overall execution.' - -- title: When will winners be selected? - content: Winners will be selected around April 25 and announced at Google I/O. +- title: When will the winners be selected? + content: > + Winners will be selected around February 10th and announced around February 25th. - title: What are the prizes? - content: 1 grand prize winner will get an iMac Pro 5K
4 additional winners will get a Google Home Max
Up to 25 others will win a Google Home Mini + content: > +

1 grand prize winner receives:

+ A loaded Apple iMac Pro valued at approximately USD $10,000 (detailed specifications may vary based on availability + and applicable law in the potential winner’s country of residence). +

4 winners each receive:

+ A 10” Lenovo Smart Display with Google Assistant (~$249.00 USD value) (based on availability and applicable law in + the potential winner’s country of residence). +

Up to 25 Winners each receive:

+ A Lenovo Smart Clock with the Google Assistant (~$79.00 USD value) (based on local availability and applicable law + in the potential winner’s country of residence). +

In addition, all participants who submit complete and valid entries will receive a digital certificate of + completion when their code repository is made public by February 5th, 2020. Also, some submissions may be integrated + into the Lenovo Smart Clock's lineup of clock faces, or may be used as inspiration for future clock faces.

+ +- title: What do I submit? + content: > + See the submission instructions in the ‘Getting started’ section, and the Official Rules for more details. + +- title: Can I submit more than one entry? + content: > + We limit entries to one per participant. We encourage you to submit your best entry! In the event of multiple + submissions from a single participant, we'll only judge the most recent. + +- title: I've already built a clock face; can I submit that for the challenge? + content: > + Unfortunately, no. Only new clock faces built after November 18th, 2019 can be submitted for consideration. + +- title: Can I make fresh updates to an existing clock face built in the past, and submit that? + content: > + No, you must submit a new clock face started for this contest to qualify. + +- title: Does the clock have to show the time? + content: > + The viewer should be able to tell the time. Whether that be with digits, clock hands, a sundial shadow, or colors + flashing in Morse code, there should be some way for a user to reliably determine the time. (It’s OK if telling the + time requires some thinking.) +- title: Do I need to add any extra functionality like alarms or stopwatches? + content: > + No, this will not be considered by the judges when determining winners. +- title: Does the clock have to use data retrieved from ClockModel? + content: > + No. We provide the ClockModel mockable API for system-level information on the Lenovo Smart Clock. This API is + available to you in your clock face, but using it is not required. + +- title: Must my clock have both a dark and light mode? Should I animate the transition between dark and light mode? + content: > + No, to both questions. The Lenovo Smart Clock has a feature that animates a clock between dark and light mode based + on the room's brightness. You can use it to determine a dark and light theme, but it's not required. You can also + animate between themes using, for example, an AnimatedBuilder or ValueListenableBuilder, but it's also not required. + +- title: Does the clock have to show other information, such as weather and date? + content: > + No. We provide the ClockModel, a mockable API including weather information on the Lenovo Smart Clock. You don't + have to display or use any of this information. + +- title: How do I change the clock settings (e.g. weather, location, 24 hr time format)? + content: > + Tap the sample clock face to show/hide the settings cog in the top right corner, and then tap on the settings cog. + +- title: What language(s) should the clock use? + content: > + Any. If you have words in your clock, consider + internationalizing + them. Note that written parts of your submission must be in English to be eligible for judging, and your submission must, at a minimum, support English language + evaluation. However, we will not judge your clock face for language inclusion. Please ensure that your clock face’s + text does not include profanity in any language, and is built and submitted in accordance with the + + Official Rules. -- title: Can I submit more than one project? - content: No, we limit one project per participant. +- title: What accessibility requirements should I add? + content: > + Google values accessibility, and it will be a consideration in your submission as part of the “overall execution” + criteria. Check the + Flutter accessibility page for details. -- title: I already have an approved app, can I submit that for the challenge? - content: Unfortunately, no. Only new apps or UI’s can be submitted for approval +- title: > + Will the judgement of my clock have the same UX considerations as for the Lenovo Smart Clock? For example: Should I + consider how the clock looks in a bedroom setting, or in a dimly lit room? Must I consider use cases such as the + user waking up in the middle of the night, or viewing the clock from across the room? + content: > + No. See the judging criteria in the + Official + Rules for more details. + +- title: What tips do you have to check the performance of my clock? + content: > + Take a look at Flutter performance profiling, + and enable the feature in the + Flutter + Inspector to see whether frames are being drawn redundantly. - title: Is there an age limit to participate? - content: You must not be a minor (per your local law) to be eligible to win. + content: > + You must not be a minor (per your country of residence) to be eligible for the contest. + +- title: Can I use Flare animations? + content: > + Yes, you can use Flare animations in your submission. + +- title: > + Can I store data in a separate file? For example, can I store a list of ways to say 'Good Morning' in a JSON file? + content: > + Yes. Make sure to include such files as assets in your submission. + +- title: Do contest submissions have to be formatted by the Dart formatter? + content: > + Yes. This ensures more consistent and readable code. + You can do this from your IDE or at the command + line. + +- title: Speaking of code formatting, what are some good coding practices for Flutter? + content: > + Check out Effective Dart. + (Note that the Flutter codebase has its own formatting guidelines and doesn't adhere to Effective Dart.) + +- title: Can a team of people submit a single clock? + content: > + A team of people can work on a single clock, but the person submitting the clock through our form should be + authorized to submit the clock (including all code and assets) on behalf of every person in the entire team, and + each winning clock is only eligible for 1 prize. + +- title: Do assets (art, fonts) also have to be created by participants? + content: > + All assets must comply with our + Official + Rules for submissions, and participants must either create or have permission to use (e.g. via a license) and + submit all parts of their submission. - title: If I have more questions, where should I go? - content: Take a look through our official rules. You can also send us an email to flutter-create@google.com. \ No newline at end of file + content: > + Take a look through our + Official + Rules and, if you still have questions, please + file a Flutter Clock GitHub issue. + +- title: How can I share my clock face online? + content: > + We’re glad you asked! Flutter’s web support is in technical preview and you can use to share your clock face online. + Once you enable web support, test your app by selecting + Chrome as the target device in your IDE, or at the command line with flutter run -d chrome. Build a web + version of your app for deployment using flutter build web. Then, you can host it using + GitHub Pages, + Firebase + , or any other web hosting solution. If you share a link to your app on social media, be sure to include the + #FlutterClock hashtag! + +- title: My clock looks or behaves differently on web! What do I do? + content: > + We will not be judging your clock on web. Web is currently in technical preview and is missing some features, but is + a great way to share your app with others. diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index bf8ec5f19ea..e94b6095741 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -1,31 +1,58 @@ -- title: Git clone this repo - link_text: github.com/flutter/flutter_clock - link: '#' +- title: > + Download the Flutter Clock GitHub repo using git clone. -- title: How do you want to build your clock? +- title: > + Choose a sample clock and enter that folder using: cd /flutter-clock/_clock subItems: - - text: 'Sample clock 1: Basic analog clock' - link_text: github.com/flutter/flutter_clock/analog_clock - link: '#' - - text: 'Sample clock 2: A slightly decorative digital clock that changes UI based on the API:' - link_text: github.com/flutter/flutter_clock/digital_clock - link: '#' - - text: 'Make your own clock package using' - link_text: flutter create -template=package - link: '#' + - text: > + Sample clock 1: Basic analog clock. + - text: > + Sample clock 2: Basic digital clock. -- title: Run your clock package using this clock customizer app - is_dropdown: true - content: content 1 +- title: Run the clock app in your IDE, or by using flutter run at the command line. -- title: Run your clock using the clock customizer app - is_dropdown: true - content: content 2 +- title: > + Build your clock inside a folder called _clock. You can build upon the existing code, or you can start from + scratch. Either use flutter create . from the project root of an existing folder, or flutter create to + start a new project. If you are new to Flutter, check out the + Write your first Flutter app codelab. -- title: Develop your clock UI - is_dropdown: true - content: content 3 +- title: > + Prepare your clock for submission: + subItems: + - text: > + Format the Dart code. + - text: > + Verify that your clock builds and runs on + + the latest Flutter stable channel. + - text: > + In your _clock directory, reduce the clock’s size: + subItems: + - text: > + Delete the _clock/ios, _clock/android, and _clock/web (if present) folders. + - text: > + Run flutter clean. + - text: > + In your /flutter-clock folder, zip these two folders: + subItems: + - text: > + Delete the _clock/ios, _clock/android, and _clock/web (if present) folders. + - text: > + Run flutter clean. -- title: Submit your final project - text: Submit your final project using this form. See submission guidelines for eligibility requirements - redirect: '#' +- title: > + Verify that your .zip file works, using the following steps: + subItems: + - text: > + flutter channel stable + - text: > + flutter upgrade + - text: > + unzip .zip + - text: > + cd _clock + - text: > + flutter create + - text: > + flutter run (on Android or iOS in landscape) diff --git a/src/clock/index.html b/src/clock/index.html index 45184741eae..fd8fb238770 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -10,9 +10,16 @@
@@ -24,20 +31,24 @@

Take the Flutter Clock challenge

{% asset homepage/news-1.jpg alt='A news item image' class="card-img-top" %}
- What to make

- Create a beautiful clock face UI with Flutter. + Create a beautiful clock face UI.

- Build a beautiful clock face UI with Flutter for a change to win an iMac Pro. Lenovo Smart Display or Lenovo Smart Clock. + Build a beautiful clock face UI with Flutter for the Lenovo Smart Clock for a chance to win an iMac Pro, + Lenovo Smart Display, or Lenovo Smart Clock. +

+

+ All projects must be submitted by January 20, 2020, 11:59PM PST

+

(GMT-8).

Entries will be judged by a panel of Google experts against the following criteria:

{% for entry in site.data.clock.entries %} -
-
+
+

{{entry.title}}

@@ -46,9 +57,12 @@

Entries will be judged by a panel of Google experts against

{% endfor %}
-

- All projects must be submitted by January 20, 11:59PM PST (GMT-8). -

+
+
+

Flutter Clock contest is brought to you in partnership with Google Assistant and Lenovo!

+
Flutter
+
Google Assistant
+
Lenovo
@@ -57,7 +71,7 @@

Entries will be judged by a panel of Google experts against
- Prizes + Prizes
    {% for prize in site.data.clock.prizes %}
  • @@ -84,47 +98,32 @@

    {{prize.title}}

    -

    Getting started.

    +

    Getting started

    Make sure to familiarize yourself with the submission guidelines and contest rules.

    -
      +
        {% for item in site.data.clock.getting_started_items %}
      1. - {% if item.is_dropdown %} -
        -
        - -
        -
        -
        - {{ item.content }} -
        -
        -
        - {% else %} {{item.title}} - {% if item.link %} - {{item.link_text}} - {% endif %} {% if item.subItems %} -
          - {% for subItem in item.subItems %} -
        1. - {{subItem.text}} - {% if subItem.link %} - {{subItem.link_text}} - {% endif %} -
        2. - {% endfor %} -
        - {% endif %} +
          + {% for subItem in item.subItems %} +
        1. + {{subItem.text}} + {% if subItem.subItems %} +
            + {% for subItemSecondLevel in subItem.subItems%} +
          1. - {{subItemSecondLevel.text}}
          2. + {% endfor %} +
          + {% endif %} +
        2. + {% endfor %} +
        {% endif %}
      2. {% endfor %} -
    +
    @@ -133,10 +132,10 @@

    Getting started.

    - Create a novel user experience with Flutter using 5KB or less of Dart code + Enter your clock face for a chance to win

    @@ -146,18 +145,18 @@

    -

    FAQs

    +

    FAQ

    {% for faq in site.data.clock.faqs %}
    -
    -
    +
    {{ faq.content }}
    @@ -190,4 +189,40 @@

    Timing is everything. Stay tuned.

    +
  • + {% if item.is_dropdown %} +
    +
    + +
    +
    +
    + {{ item.content }} +
    +
    +
    + {% else %} + {{item.title}} + {% if item.link %} + {{item.link_text}} + {% endif %} + {% if item.subItems %} +
      + {% for subItem in item.subItems %} +
    1. + {{subItem.text}} + {% if subItem.link %} + {{subItem.link_text}} + {% endif %} +
    2. + {% endfor %} +
    + {% endif %} + {% endif %} +
  • + + {% asset countdown %} --> From 858b8f22346bf9f2f4e6c28822b12f20a2008495 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 13 Nov 2019 11:55:50 -0500 Subject: [PATCH 42/83] Add video modal --- src/clock/index.html | 70 ++++++++------------------------------------ 1 file changed, 12 insertions(+), 58 deletions(-) diff --git a/src/clock/index.html b/src/clock/index.html index fd8fb238770..4a0b4df5839 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -16,7 +16,7 @@

    Take the Flutter Clock challenge

    - + Watch video

    @@ -167,62 +167,16 @@

    FAQ

- From fe623e7c6d851f3c5d754dd42edb08b1142092f6 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 13 Nov 2019 12:29:03 -0500 Subject: [PATCH 43/83] Add iMac image to prizes section --- src/_assets/css/_clock.scss | 223 +------------------------------ src/_assets/image/clock/iMac.png | Bin 0 -> 147926 bytes src/clock/index.html | 4 +- 3 files changed, 6 insertions(+), 221 deletions(-) create mode 100644 src/_assets/image/clock/iMac.png diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 6ab4f6c697f..c03ef6e1a2a 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -162,6 +162,10 @@ margin: 160px 0; } + &_image { + padding-top: 126px; + } + .prizes-text { display: inline-block; font-size: 20px; @@ -317,222 +321,3 @@ } } } - - - -/* -.clock { - $vertical-line-color: #384753; - - background-color: $flutter-dark-blue-texture; - font-family: $site-font-family-alt; - - .center { - align-items: center; - display: flex; - flex-direction: column; - height: calc(100vh - 66px); - justify-content: center; - } - - .heading { - animation: clock-slide-in 1s .3s; - animation-fill-mode: both; - color: $site-color-white; - font-size: 18px; - margin: 0 0 24px; - text-align: center; - width: 100%; - - @include media-breakpoint-up(md) { - font-size: 32px; - margin: 0 0 22px; - } - - @include media-breakpoint-up(lg) { - font-size: 40px; - margin: 0 0 20px; - } - } - - .time-number { - animation: clock-slide-in 1s; - animation-fill-mode: both; - color: $site-color-primary; - display: flex; - font-size: 52px; - justify-content: center; - margin: 0; - text-align: center; - width: 100%; - z-index: 2; - - @include media-breakpoint-up(md) { - font-size: 110px; - } - - @include media-breakpoint-up(lg) { - font-size: 160px; - } - - @include media-breakpoint-up(xl) { - font-size: 180px; - } - - @include media-breakpoint-up(xxl) { - font-size: 230px; - } - } - - .digits_container { - display: inline-block; - width: 68px; - - @include media-breakpoint-up(md) { - width: 142px; - } - - @include media-breakpoint-up(lg) { - width: 200px; - } - - @include media-breakpoint-up(xl) { - width: 248px; - } - - @include media-breakpoint-up(xxl) { - width: 294px; - } - } - - .animations { - animation-name: clock-geometric-small-background; - animation-duration: 1.2s; - animation-fill-mode: both; - animation-timing-function: cubic-bezier(.87, 1.15, 1, .99); - background-image: asset_url('clock/left_rectangle.svg'), asset_url('clock/right_rectangle.svg'), asset_url('clock/oval.svg'); - background-repeat: no-repeat; - background-size: 181px 247px, 140px 121px, 280px 163px; - height: calc(100% - 66px); - overflow: hidden; - position: absolute; - top: 66px; - width: 100%; - z-index: -1; - - @include media-breakpoint-up(md) { - animation-name: clock-geometric-medium-background; - background-size: 400px 556px, 317px 258px, auto; - } - - @include media-breakpoint-up(lg) { - background-size: auto; - } - } - - .vertical-line { - animation-duration: 1s; - animation-fill-mode: both; - animation-name: clock-vertical-lines; - animation-timing-function: ease; - background-color: $vertical-line-color; - position: fixed; - top: 0; - width: 1px; - z-index: -1; - - &--first { - left: 4%; - } - - &--second { - animation-delay: .2s; - left: 27%; - } - - &--thrid { - animation-delay: .4s; - left: 50%; - } - - &--fourth { - animation-delay: .6s; - left: 73%; - } - - &--first, &--thrid { - display: none; - - @include media-breakpoint-up(lg) { - display: block; - } - } - } - - .share-twitter__paragraph { - animation: clock-slide-in 1s .6s; - animation-fill-mode: both; - color: $site-color-white; - font-size: 14px; - margin: 20px 0 0; - padding: 0 37px; - text-align: center; - width: 100%; - - @include media-breakpoint-up(md) { - font-size: 16px; - margin: 22px 0 0; - } - - @include media-breakpoint-up(lg) { - font-size: 20px; - margin: 24px 0 0; - } - } - - .learn-more__button { - display: block; - margin: 0 auto; - width: 120px; - } -} - -// animations -@keyframes clock-vertical-lines { - from { - height: 0; - } - to { - height: 100%; - } -} - -@keyframes clock-slide-in { - from { - transform: translateY(50px); - opacity: 0; - } - to { - transform: none; - opacity: 1; - } -} - -@keyframes clock-geometric-medium-background { - from { - background-position: top 150px left -270px, top right -488px, bottom -348px left -140px; - } - to { - background-position: top 150px left, top right, bottom left; - } -} - -@keyframes clock-geometric-small-background { - from { - background-position: bottom 90px left -144px, top right -140px, bottom -164px left -100px; - } - to { - background-position: bottom 90px left, top right, bottom left; - } -} -*/ diff --git a/src/_assets/image/clock/iMac.png b/src/_assets/image/clock/iMac.png new file mode 100644 index 0000000000000000000000000000000000000000..ad5f9558c0b0cd37c7a99a8c22385dabc25214c6 GIT binary patch literal 147926 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.title}} {% endfor %} -
- {% asset homepage/news-1.jpg alt='A news item image' class="card-img-top" %} +
+ {% asset clock/iMac.png class="card-img-top" %}

From 274e9f723d11091aa8d8528f698aabef6b67ec1d Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 13 Nov 2019 15:07:39 -0500 Subject: [PATCH 44/83] Add code style to getting started section. --- src/_assets/css/_clock.scss | 14 +++++- src/_assets/css/_variables.scss | 1 + src/_data/clock/getting_started_items.yml | 53 ++++++++++++++--------- src/_data/clock/prizes.yml | 13 ++++-- src/_includes/head.html | 2 +- src/clock/index.html | 11 +++-- 6 files changed, 62 insertions(+), 32 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index c03ef6e1a2a..3b24a6f803a 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -5,6 +5,7 @@ $clock-color-light-blue: #aecbfa; $clock-color-light-grey: #f8f9fa; $clock-color-grey: #555; + $color-code-block: #252525; font-family: $site-font-family-alt; &__texture { @@ -211,12 +212,18 @@ margin: 80px 0; } + .code-font { + color: $color-code-block; + font-family: $site-font-family-courier; + } + .subheading { font-size: 56px; margin: 0 0 16px 0; } .paragraph { + font-size: 18px; margin-bottom: 24px; } @@ -232,7 +239,7 @@ } .sub-item:last-child { - padding-bottom: 16px; + padding-bottom: 0; } } @@ -320,4 +327,9 @@ transform: rotate(180deg); } } + + .no-list-style { + list-style: none; + margin-left: -16px; + } } diff --git a/src/_assets/css/_variables.scss b/src/_assets/css/_variables.scss index 50a9036ea1e..43db0d078b3 100644 --- a/src/_assets/css/_variables.scss +++ b/src/_assets/css/_variables.scss @@ -21,6 +21,7 @@ $site-font-family-base: 'Roboto', sans-serif; $site-font-family-alt: 'Google Sans', 'Roboto', sans-serif; $site-font-family-icon: 'Material Icons'; $site-font-family-monospace: 'Roboto Mono', monospace; +$site-font-family-courier: 'Courier', monospace; $site-font-icon: 24px/1 $site-font-family-icon; // Layout diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index e94b6095741..886a9caae95 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -1,21 +1,28 @@ - title: > - Download the Flutter Clock GitHub repo using git clone. + Download the Flutter Clock GitHub repo using + git clone. - title: > - Choose a sample clock and enter that folder using: cd /flutter-clock/_clock + Choose a sample clock and enter that folder using: + cd /flutter-clock/<name>_clock subItems: - text: > Sample clock 1: Basic analog clock. - text: > Sample clock 2: Basic digital clock. -- title: Run the clock app in your IDE, or by using flutter run at the command line. +- title: > + Run the clock app in your IDE, or by using flutter run at the command line. - title: > - Build your clock inside a folder called _clock. You can build upon the existing code, or you can start from - scratch. Either use flutter create . from the project root of an existing folder, or flutter create to - start a new project. If you are new to Flutter, check out the - Write your first Flutter app codelab. + Build your clock inside a folder called <name>_clock. + noListItemStyle: true + subItems: + - text: > + You can build upon the existing code (analog_clock or + digital_clock), or you can start from scratch (create <name>_clock). If you + are new to Flutter, check out the Write your first Flutter + app codelab. - title: > Prepare your clock for submission: @@ -27,32 +34,38 @@ the latest Flutter stable channel. - text: > - In your _clock directory, reduce the clock’s size: + In your <name>_clock directory, reduce the clock’s size: subItems: - text: > - Delete the _clock/ios, _clock/android, and _clock/web (if present) folders. + Delete the <name>_clock/ios, + <name>_clock/android, and + <name>_clock/web (if present) folders. - text: > - Run flutter clean. + Run flutter clean. - text: > - In your /flutter-clock folder, zip these two folders: + In your /flutter-clock folder, zip these two folders: subItems: - text: > - Delete the _clock/ios, _clock/android, and _clock/web (if present) folders. + flutter_clock_helper (unedited) - text: > - Run flutter clean. + <name>_clock (your clock) - title: > - Verify that your .zip file works, using the following steps: + Verify that your .zip file works, using the following steps: + noListItemStyle: true subItems: - text: > - flutter channel stable + flutter channel stable - text: > - flutter upgrade + flutter upgrade - text: > - unzip .zip + unzip .zip - text: > - cd _clock + cd <name>_clock - text: > - flutter create + flutter create - text: > - flutter run (on Android or iOS in landscape) + flutter run (on Android or iOS in landscape) +- title: > + + Submit your clock. diff --git a/src/_data/clock/prizes.yml b/src/_data/clock/prizes.yml index 89022e33bd0..5cc2b257ba4 100644 --- a/src/_data/clock/prizes.yml +++ b/src/_data/clock/prizes.yml @@ -1,12 +1,17 @@ - title: Grand Prize paragraph: > - A Loaded Apple iMac Pro valued at approximately $10,000 (detailed specifications may vary based on - availability and local country import law). + A loaded Apple iMac Pro valued at approximately $10,000 + (detailed specifications may vary based on availability and applicable law in the potential winner’s country of + residence) - title: 4 winners - paragraph: Lenovo Smart Display with the Google Assistant - 10" (~$249.00 USD value) + paragraph: > + A Lenovo 10" Smart Display with the Google Assistant + (~$249.00 USD value) (based on availability and applicable law in the potential winner’s country of residence) - title: Up to 25 winners - paragraph: Quantity up to 25 - Lenovo smart Clock with the Google Assistant (~$79.00 USD value) + paragraph: > + A Lenovo Smart Clock with the Google Assistant + (~$79.00 USD value) (based on availability and applicable law in the potential winner’s country of residence) diff --git a/src/_includes/head.html b/src/_includes/head.html index e977da26a68..aa51a07d3d5 100644 --- a/src/_includes/head.html +++ b/src/_includes/head.html @@ -27,7 +27,7 @@ {% assign og_image_path = page.image | default: layout.image | default: '/images/flutter-logo-sharing.png' %} - + {% asset main.css %} {% for css in page.css -%} {% asset '{{css}}' %} diff --git a/src/clock/index.html b/src/clock/index.html index a30cb0201f2..9f916dcdc84 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -87,9 +87,9 @@

{{prize.title}}


- In addition, all submissions will receive a digital certificate of completion. Also, there is a change - that some of the clock submissions will be considered to be integrated into the Lenovo Smart clock's - lineup of clock faces. + All complete and valid submissions will receive a digital certificate of completion. In addition, some + of the clock contest submissions might be integrated into the Lenovo Smart Clock's lineup of clock + faces, or used as inspiration for future clock faces!

@@ -99,8 +99,7 @@

{{prize.title}}

Getting started

-

Make sure to familiarize yourself with the submission guidelines and contest rules.

+

Use the following instructions to get started:

    {% for item in site.data.clock.getting_started_items %}
  1. @@ -108,7 +107,7 @@

    Getting started

    {% if item.subItems %}
      {% for subItem in item.subItems %} -
    1. +
    2. {{subItem.text}} {% if subItem.subItems %}
        From e07e0e22d61e3fe4f7a7da51a008492e7ed6ffbb Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 13 Nov 2019 16:04:33 -0500 Subject: [PATCH 45/83] Add Submission requirements. --- src/_assets/css/_clock.scss | 23 ++++++++++- src/_data/clock/submission_requirements.yml | 42 +++++++++++++++++++++ src/clock/index.html | 25 ++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 src/_data/clock/submission_requirements.yml diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 3b24a6f803a..acad0f7050d 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -247,6 +247,7 @@ &__submit { background-color: $clock-color-light-grey; color: $clock-color-dark; + margin-bottom: 80px; text-align: center; &_container { @@ -266,8 +267,28 @@ } } + &__submissions { + li { + padding: 8px 0; + } + + .subheading { + font-size: 32px; + margin: 0 0 16px; + } + + .paragraph { + font-size: 18px; + } + + .title { + font-size: 18px; + font-weight: 500; + margin: 0; + } + } + // Styles for section clock__faqs - // Styles for general container &__faqs { margin-top: 100px; position: relative; diff --git a/src/_data/clock/submission_requirements.yml b/src/_data/clock/submission_requirements.yml new file mode 100644 index 00000000000..e65c8ff7f42 --- /dev/null +++ b/src/_data/clock/submission_requirements.yml @@ -0,0 +1,42 @@ +- title: > + Design and data notes: + subItems: + - text: > + The ClockModel API with mock data is provided to you. Using this API is optional, but it provides system + information such as the brightness mode, weather, and time format. + - text: > + The clock design should use landscape mode, with a 5:3 aspect ratio. + - text: > + You may use Material Design icons. + - text: > + All other assets, fonts, icons, images, and so on should be your own, or licensed under a BSD-3, or OFL license + (for fonts). + - text: > + Your clock should not: + subItems: + - text: > + Have user interaction (such as tapping, gestures, dragging, mouse, keyboard, and so on). + - text: > + Play audio, including an alarm. + - text: > + Make network requests. + - text: > + Collect data in violation of applicable laws (including privacy laws). + - text: > + Contain copyrighted or trademarked content. + +- title: > + Submissions: + subItems: + - text: > + + Submit your final clock by January 20th, 11:59pm PST (GMT-8). + - text: > + Your clock must be made public on GitHub under a BSD-3 license (with assets + under a BSD-3 or OFL license, as appropriate) before February 5th, 2020. Your repo can be private during the + contest period. + - text: > + Specify on the submission form which platform (Android or iOS) you would like the judges to use when evaluating + your submission. Judges will not be testing on web. + - text: > + Please also submit an MP4 video (of less than 30 seconds) of your clock and a screenshot via the form. diff --git a/src/clock/index.html b/src/clock/index.html index 9f916dcdc84..b15e80e4e52 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -140,6 +140,31 @@

+
+
+
+

+ Submission Requirements +

+

+ Here are the requirements, including some guidelines, for contest submissions. See the contest’s + Official Rules for full details. +

+ + {% for item in site.data.clock.submission_requirements %} +

{{item.title}}

+
    + {% for subItem in item.subItems %} +
  • + - {{subItem.text}} +
  • + {% endfor %} +
+ {% endfor %} +
+
+
+
From b7d9ae139eb0e91b4db466f94235b71b3ca8e3d1 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Wed, 13 Nov 2019 16:07:50 -0500 Subject: [PATCH 46/83] What to make styles fixed for background --- src/_assets/css/_clock.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index a678d7c5fa4..9c063fad2ed 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -70,7 +70,7 @@ &__texture { background-color: #FFF; background-image: asset_url('clock/wtm__background-bottom.svg'), asset_url('clock/wtm__background-top.svg'); - background-position: right bottom 57%, left top 100px; + background-position: right bottom 72vh, left top 100px; background-repeat: no-repeat; } From d4b146553faa6e471cb91c4a0356a986c03f64e0 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Wed, 13 Nov 2019 17:49:42 -0500 Subject: [PATCH 47/83] Add Contest requirements. --- src/_assets/css/_clock.scss | 16 ++++++- src/_data/clock/contest_rules.yml | 49 +++++++++++++++++++++ src/_data/clock/getting_started_items.yml | 4 +- src/clock/index.html | 53 ++++++++++++++++++----- 4 files changed, 108 insertions(+), 14 deletions(-) create mode 100644 src/_data/clock/contest_rules.yml diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index acad0f7050d..b805da46771 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -267,11 +267,18 @@ } } - &__submissions { + // Style for submissions + &__submissions, &__contest { + padding: 48px 0; + li { padding: 8px 0; } + hr { + margin: 40px 0 0; + } + .subheading { font-size: 32px; margin: 0 0 16px; @@ -288,9 +295,13 @@ } } + // Style for contest + &__contest { + padding: 0 0 80px; + } + // Styles for section clock__faqs &__faqs { - margin-top: 100px; position: relative; &__texture { @@ -329,6 +340,7 @@ .subheading { font-size: 56px; + margin: 0 0 56px; } .faq__card-body { diff --git a/src/_data/clock/contest_rules.yml b/src/_data/clock/contest_rules.yml new file mode 100644 index 00000000000..807f31f50a5 --- /dev/null +++ b/src/_data/clock/contest_rules.yml @@ -0,0 +1,49 @@ +- title: > + All work must be that of the contest entrant. +- title: > + Only one submission per entrant. If you submit multiple, we will review only the most recent. +- title: > + Do not submit a clock that already existed before the announcement of this contest. +- title: > + Clocks may not be submitted by any person who is a minor at the time of entry. +- title: > + Alphabet or Google employees and contractors, Lenovo employees and contractors, contest judges, and members of their + immediate families are not eligible to enter. +- title: > + Persons from the following countries or regions can submit entries but will not be considered eligible for the + contest due to local rules and restrictions, including exclusion from judging and prizes: Italy, Brazil, Quebec, + and Mexico. +- title: > + Persons from the following embargoed countries or regions should not submit entries and will not be considered + eligible for the contest, including exclusion from judging and prizes: Crimea, Cuba, Iran, Syria, North Korea, + and Sudan. +- title: > + Entries will be collected via the website using an online + Google form. +- title: > + Submissions must not be derogatory, offensive, threatening, defamatory, disparaging, libellous or contain any + content that is inappropriate, indecent, sexual, profane, torturous, slanderous, discriminatory in any way, or that + promotes hatred or harm against any group or person, or otherwise does not comply with the theme and spirit of the + contest. +- title: > + Submissions must not contain content, material, or any element that is unlawful, or otherwise in violation of or + contrary to all applicable federal, state, or local laws and regulations including the laws or regulations in any + state where the clock and supporting statement are created. +- title: > + Submissions must not contain any content, material, or element that displays any third party advertising, slogan, + logo, trademark, representation of characters indicating a sponsorship or endorsement by a third party, commercial + entity, or that are not within the spirit of the Contest, as determined by the Sponsor, in its sole discretion. +- title: > + Submissions must be original, unpublished works that do not contain, incorporate, or otherwise use any content, + material, or element that is owned by a third party or entity. +- title: > + Submissions cannot contain any content, element, or material that violates a third party's publicity, privacy, or + intellectual property rights. +- title: > + The submission must not be the subject of any actual or threatened litigation or claim. +- title: > + The entrant does not include any disparaging remarks relating to the Sponsor or a third party. + + + + diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index 886a9caae95..e45917a4938 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -7,9 +7,9 @@ cd /flutter-clock/<name>_clock subItems: - text: > - Sample clock 1: Basic analog clock. + Sample clock 1: Basic analog clock. - text: > - Sample clock 2: Basic digital clock. + Sample clock 2: Basic digital clock. - title: > Run the clock app in your IDE, or by using flutter run at the command line. diff --git a/src/clock/index.html b/src/clock/index.html index b15e80e4e52..4f4c432e8a0 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -146,21 +146,54 @@

Submission Requirements

-

+

Here are the requirements, including some guidelines, for contest submissions. See the contest’s - Official Rules for full details. + + Official Rules for full details.

{% for item in site.data.clock.submission_requirements %} -

{{item.title}}

-
    - {% for subItem in item.subItems %} -
  • - - {{subItem.text}} -
  • - {% endfor %} -
+

{{item.title}}

+
    + {% for subItem in item.subItems %} +
  • + - {{subItem.text}} + {% if subItem.subItems %} +
      + {% for subItemSecondLevel in item.subItems %} +
    • + - {{subItemSecondLevel.text}} +
    • + {% endfor %} +
    + {% endif %} +
  • + {% endfor %} +
{% endfor %} +
+
+
+ + +
+
+
+

+ Contest Rules +

+

+ Full details and rules are provided in our + + Official Rules. Here’s a summary of some of the key points: +

+
    + {% for item in site.data.clock.contest_rules %} +
  • + - {{item.title}} +
  • + {% endfor %} +
From ea9831c28c7b1918fb604c14628953af5a088f51 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 10:57:53 -0500 Subject: [PATCH 48/83] Fix comments. --- src/_data/clock/faqs.yml | 28 +++++++++++---------- src/_data/clock/getting_started_items.yml | 14 +++++------ src/_data/clock/prizes.yml | 10 +++++--- src/_data/clock/submission_requirements.yml | 14 ++++++----- src/clock/index.html | 4 +-- 5 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index a0725823178..69231528676 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -29,22 +29,24 @@ - title: What are the prizes? content: > -

1 grand prize winner receives:

- A loaded Apple iMac Pro valued at approximately USD $10,000 (detailed specifications may vary based on availability - and applicable law in the potential winner’s country of residence). -

4 winners each receive:

- A 10” Lenovo Smart Display with Google Assistant (~$249.00 USD value) (based on availability and applicable law in - the potential winner’s country of residence). -

Up to 25 Winners each receive:

- A Lenovo Smart Clock with the Google Assistant (~$79.00 USD value) (based on local availability and applicable law - in the potential winner’s country of residence). + 1 grand prize winner receives: +

A loaded Apple iMac Pro valued at approximately USD $10,000 (detailed specifications may vary based on availability + and applicable law in the potential winner’s country of residence).

+ 4 winners each receive: +

A 10” Lenovo Smart Display with Google Assistant (~$249.00 USD value) (based on availability and applicable law in + the potential winner’s country of residence).

+ Up to 25 Winners each receive: +

A Lenovo Smart Clock with the Google Assistant (~$79.00 USD value) (based on local availability and applicable law + in the potential winner’s country of residence).

In addition, all participants who submit complete and valid entries will receive a digital certificate of completion when their code repository is made public by February 5th, 2020. Also, some submissions may be integrated into the Lenovo Smart Clock's lineup of clock faces, or may be used as inspiration for future clock faces.

- title: What do I submit? content: > - See the submission instructions in the ‘Getting started’ section, and the Official Rules for more details. + See the submission instructions in the ‘Getting started’ section, and the + Official + Rules for more details. - title: Can I submit more than one entry? content: > @@ -91,7 +93,7 @@ content: > Any. If you have words in your clock, consider internationalizing - them. Note that written parts of your submission must be in English to be eligible for judging, and your submission must, at a minimum, support English language + them. Note that written parts of your submission must be in English to be eligible for judging, and your submission must, at a minimum, support English language evaluation. However, we will not judge your clock face for language inclusion. Please ensure that your clock face’s text does not include profanity in any language, and is built and submitted in accordance with the @@ -114,8 +116,8 @@ - title: What tips do you have to check the performance of my clock? content: > - Take a look at Flutter performance profiling, - and enable the Flutter performance profiling, + and enable the performance overlay feature in the Flutter Inspector to see whether frames are being drawn redundantly. diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index e45917a4938..ecc8e786e1d 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -4,7 +4,7 @@ - title: > Choose a sample clock and enter that folder using: - cd /flutter-clock/<name>_clock + cd <path-to-repo>/flutter_clock/<name>_clock subItems: - text: > Sample clock 1: Basic analog clock. @@ -20,9 +20,9 @@ subItems: - text: > You can build upon the existing code (analog_clock or - digital_clock), or you can start from scratch (create <name>_clock). If you - are new to Flutter, check out the Write your first Flutter - app codelab. + digital_clock), or you can start from scratch (flutter create <name>_clock). + If you are new to Flutter, check out the + Write your first Flutter app codelab. - title: > Prepare your clock for submission: @@ -43,7 +43,7 @@ - text: > Run flutter clean. - text: > - In your /flutter-clock folder, zip these two folders: + In your <path-to-repo>/flutter_clock folder, zip these two folders: subItems: - text: > flutter_clock_helper (unedited) @@ -51,7 +51,7 @@ <name>_clock (your clock) - title: > - Verify that your .zip file works, using the following steps: + Verify that your <project>.zip file works, using the following steps: noListItemStyle: true subItems: - text: > @@ -59,7 +59,7 @@ - text: > flutter upgrade - text: > - unzip .zip + unzip <project>.zip - text: > cd <name>_clock - text: > diff --git a/src/_data/clock/prizes.yml b/src/_data/clock/prizes.yml index 5cc2b257ba4..f5d68384677 100644 --- a/src/_data/clock/prizes.yml +++ b/src/_data/clock/prizes.yml @@ -1,17 +1,21 @@ -- title: Grand Prize +- title: > + Grand prize: paragraph: > A loaded Apple iMac Pro valued at approximately $10,000 (detailed specifications may vary based on availability and applicable law in the potential winner’s country of residence) -- title: 4 winners +- title: > + 4 winners: paragraph: > A Lenovo 10" Smart Display with the Google Assistant (~$249.00 USD value) (based on availability and applicable law in the potential winner’s country of residence) -- title: Up to 25 winners +- title: > + Up to 25 winners: paragraph: > A Lenovo Smart Clock with the Google Assistant (~$79.00 USD value) (based on availability and applicable law in the potential winner’s country of residence) + diff --git a/src/_data/clock/submission_requirements.yml b/src/_data/clock/submission_requirements.yml index e65c8ff7f42..da5f1ca73b0 100644 --- a/src/_data/clock/submission_requirements.yml +++ b/src/_data/clock/submission_requirements.yml @@ -7,10 +7,11 @@ - text: > The clock design should use landscape mode, with a 5:3 aspect ratio. - text: > - You may use Material Design icons. + You may use Material Design icons. - text: > - All other assets, fonts, icons, images, and so on should be your own, or licensed under a BSD-3, or OFL license - (for fonts). + All other assets, fonts, icons, images, and so on should be your own, or licensed under a + BSD-3, or + OFL license (for fonts). - text: > Your clock should not: subItems: @@ -32,9 +33,10 @@ Submit your final clock by January 20th, 11:59pm PST (GMT-8). - text: > - Your clock must be made public on GitHub under a BSD-3 license (with assets - under a BSD-3 or OFL license, as appropriate) before February 5th, 2020. Your repo can be private during the - contest period. + Your clock must be made public on GitHub under a + BSD-3 license (with assets under a BSD-3 or + OFL license, as appropriate) before February 5th, 2020. + Your repo can be private during the contest period. - text: > Specify on the submission form which platform (Android or iOS) you would like the judges to use when evaluating your submission. Judges will not be testing on web. diff --git a/src/clock/index.html b/src/clock/index.html index 4f4c432e8a0..8482d105d02 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -32,7 +32,7 @@

Take the Flutter Clock challenge

- Create a beautiful clock face UI. + Create a beautiful clock face UI

Build a beautiful clock face UI with Flutter for the Lenovo Smart Clock for a chance to win an iMac Pro, @@ -160,7 +160,7 @@

{{item.title}}

- {{subItem.text}} {% if subItem.subItems %}
    - {% for subItemSecondLevel in item.subItems %} + {% for subItemSecondLevel in subItem.subItems %}
  • - {{subItemSecondLevel.text}}
  • From 62f77878962d0644310477591560faa44326572d Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 14 Nov 2019 10:58:24 -0500 Subject: [PATCH 49/83] Mobile breakpoint added --- src/_assets/css/_clock.scss | 275 +++++++++++++++++--- src/_data/clock/submission_requirements.yml | 2 +- src/clock/index.html | 42 +-- 3 files changed, 256 insertions(+), 63 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 9bd35ca5cfd..cdc8f05b7d2 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -30,7 +30,8 @@ text-align: center; .heading { - + font-size: 32px; + margin: 120px 27px 40px 27px; } .youtube-link, .twitter-link { @@ -75,21 +76,33 @@ } &_container { - margin: 100px 0; + margin: 80px 0; + } + + @include media-breakpoint-up(lg) { + + &_container { + margin: 100px 0; + } + + &__texture { + background-position: right bottom 50vh, left top 100px; + } } } // Styles for wtm copy &__wtm-copy { - color: $clock-color-dark; //TODO: Change for a variable + color: $clock-color-dark; + margin-bottom: 96px; .subheading { - margin: 0 0 24px; - font-size: 56px; + font-size: 24px; + margin: 40px 0 24px; } .paragraph { - font-size: 20px; + font-size: 16px; } .paragraph-conditions { @@ -97,20 +110,37 @@ font-size: 14px; margin: 0; } + + @include media-breakpoint-up(lg) { + display: flex; + flex-direction: column; + justify-content: center; + margin-bottom: 0; + + .subheading { + font-size: 56px; + margin: 0 0 24px; + } + + .paragraph { + font-size: 20px; + } + } } &__wtm-entries { - margin-top: 72px; + margin-top: 80px; &_container { display: flex; justify-content: space-between; - margin-bottom: 80px; + flex-wrap: wrap; + margin-bottom: 64px; } .heading { - font-size: 32px; - margin: 0 auto 88px; + font-size: 20px; + margin: 0 auto 40px; max-width: 630px; text-align: center; } @@ -119,19 +149,55 @@ background-color: #F8F9FA; border: none; border-radius: 8px; - height: 190px; - width: 190px; + height: 40vw; + margin-bottom: 16px; + width: 48%; + + &:nth-of-type(4), &:nth-of-type(3) { + margin-bottom: 0; + } } .entries__card-body { position: relative; .paragraph { - font-size: 20px; + font-size: 16px; + line-height: 20px; text-align: left; - margin-bottom: 50px; } + .fas { + bottom: 16px; + left: 16px; + position: absolute; + width: 34px; + } + } + + @include media-breakpoint-up(lg) { + margin-top: 72px; + + &_container { + margin-bottom: 80px; + } + + .heading { + font-size: 32px; + margin: 0 auto 88px; + } + + .card { + height: 190px; + margin-bottom: 0; + width: 190px; + } + + .paragraph { + font-size: 20px; + margin-bottom: 50px; + } + .fas { bottom: 24px; left: 24px; @@ -144,15 +210,30 @@ &__wtm-logos { .logos-heading { - font-size: 20px; - margin-bottom: 40px; + font-size: 16px; + margin-bottom: 24px; } .logos-container { align-items: center; display: flex; + flex-direction: column; + height: 250px; justify-content: space-evenly; } + + @include media-breakpoint-up(lg) { + + .logos-heading { + font-size: 20px; + margin-bottom: 40px; + } + + .logos-container { + flex-direction: row; + height: auto; + } + } } // Styles for section clock__prizes @@ -173,35 +254,37 @@ hr { background-color: $clock-color-light-blue; - margin: 56px 0; + margin: 40px 0; width: 100%; } &_container { - margin: 160px 0; + margin: 80px 0; } &_image { - padding-top: 126px; + margin-bottom: 40px; } .prizes-text { display: inline-block; - font-size: 20px; + font-size: 16px; margin-bottom: 16px; } .subheading { - font-size: 40px; - margin: 24px 0; + font-size: 20px; + margin: 8px 0; } .paragraph { - font-size: 20px; + font-size: 14px; + margin-bottom: 24px; } .info-paragraph { - font-size: 18px; + font-size: 14px; + margin-bottom: 0; } &__texture { @@ -210,6 +293,39 @@ background-position: right 50px top 150px; background-repeat: no-repeat; } + + @include media-breakpoint-up(lg) { + + &_container { + margin: 160px 0; + } + + &_image { + padding-top: 126px; + } + + .prizes-text { + font-size: 20px; + } + + .subheading { + font-size: 40px; + margin: 24px 0; + } + + .paragraph { + font-size: 20px; + margin-bottom: inherit; + } + + .info-paragraph { + font-size: 18px; + } + + hr { + margin: 56px 0; + } + } } // Styles for section clock__getting (Getting Started) @@ -221,7 +337,7 @@ } li { - font-size: 20px; + font-size: 16px; font-weight: 500; padding: 16px 0; } @@ -236,18 +352,18 @@ } .subheading { - font-size: 56px; + font-size: 24px; margin: 0 0 16px 0; } .paragraph { - font-size: 18px; + font-size: 14px; margin-bottom: 24px; } .sub-item { font-family: $site-font-family-base; - font-size: 18px; + font-size: 14px; font-weight: normal; padding: 8px 0; @@ -259,56 +375,119 @@ .sub-item:last-child { padding-bottom: 0; } + + @include media-breakpoint-up(lg) { + + .subheading { + font-size: 56px; + } + + .paragraph { + font-size: 18px; + } + + li { + font-size: 20px; + } + + .sub-item { + font-size: 18px; + } + } } // Styles for section clock__submit &__submit { background-color: $clock-color-light-grey; color: $clock-color-dark; - margin-bottom: 80px; + margin: 0 -25px 80px -25px; + padding-left: 0; + padding-right: 0; text-align: center; &_container { - padding: 80px; + padding: 80px 16px; } .subheading { - font-size: 48px; + font-size: 24px; margin: 0 auto 32px; - max-width: 626px; text-align: center; } .submit-app__button { - font-size: 18px; + font-size: 14px; padding: 16px 24px; } + + @include media-breakpoint-up(lg) { + margin: 0 0 80px 0; + + &_container { + padding: 80px; + } + + .subheading { + font-size: 48px; + max-width: 626px; + } + + .submit-app__button { + font-size: 18px; + } + } } &__submissions { li { + font-size: 14px; padding: 8px 0; } .subheading { - font-size: 32px; + font-size: 20px; margin: 0 0 16px; } .paragraph { - font-size: 18px; + font-size: 14px; + margin-bottom: 0; } .title { - font-size: 18px; - font-weight: 500; - margin: 0; + font-size: 14px; + font-weight: 600; + margin: 40px 0 16px; + } + + .code-font { + color: $color-code-block; + font-family: $site-font-family-courier; + } + + @include media-breakpoint-up(lg) { + li { + font-size: 18px; + } + + .subheading { + font-size: 32px; + } + + .paragraph { + font-size: 18px; + } + + .title { + font-size: 18px; + margin: 0; + } } } // Styles for section clock__faqs &__faqs { - margin-top: 100px; + margin-top: 80px; position: relative; &__texture { @@ -346,12 +525,26 @@ } .subheading { - font-size: 56px; + font-size: 24px; + margin: 0 0 40px; } .faq__card-body { + font-size: 14px; padding: 0 24px 24px 0; } + + @include media-breakpoint-up(lg) { + margin-top: 100px; + + .subheading { + font-size: 56px; + } + + .faq__card-body { + font-size: 18px; + } + } } //dropdown button @@ -371,4 +564,4 @@ list-style: none; margin-left: -16px; } -} +} \ No newline at end of file diff --git a/src/_data/clock/submission_requirements.yml b/src/_data/clock/submission_requirements.yml index e65c8ff7f42..e6560c1ac6a 100644 --- a/src/_data/clock/submission_requirements.yml +++ b/src/_data/clock/submission_requirements.yml @@ -2,7 +2,7 @@ Design and data notes: subItems: - text: > - The ClockModel API with mock data is provided to you. Using this API is optional, but it provides system + The ClockModel API with mock data is provided to you. Using this API is optional, but it provides system information such as the brightness mode, weather, and time format. - text: > The clock design should use landscape mode, with a 5:3 aspect ratio. diff --git a/src/clock/index.html b/src/clock/index.html index 4e545f762db..d74074c2cf3 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -22,7 +22,7 @@

    Take the Flutter Clock challenge

    - + Watch video

    @@ -32,13 +32,13 @@

    Take the Flutter Clock challenge

    -
    -
    +
    +
    {% asset clock/Lenovo-WTM.png alt='Lenovo Clock' class="card-img-top" %}
    -
    +

    - Create a beautiful clock face UI. + Create a beautiful clock face UI

    Build a beautiful clock face UI with Flutter for the Lenovo Smart Clock for a chance to win an iMac Pro, @@ -49,9 +49,9 @@

    (GMT-8).

    -
    +

    Entries will be judged by a panel of Google experts against the following criteria:

    -
    +
    {% for entry in site.data.clock.entries %}
    @@ -62,9 +62,9 @@

    Entries will be judged by a panel of Google experts against {% endfor %}

    -
    -

    Flutter Clock contest is brought to you in partnership with Google Assistant and Lenovo!

    -
    +
    +

    Flutter Clock contest is brought to you in partnership with Google Assistant and Lenovo!

    +
    {% asset clock/Flutter-logo.svg alt='Flutter Logo' %} {% asset clock/G-Assistant-logo.svg alt='Google Assistant Logo' %} {% asset clock/Lenovo-logo.svg alt='Lenovo Logo' %} @@ -76,7 +76,7 @@

    Entries will be judged by a panel of Google experts against
    -
    +
    Prizes
      {% for prize in site.data.clock.prizes %} @@ -87,10 +87,10 @@

      {{prize.title}}

      {% endfor %}
    -
    +
    {% asset clock/iMac.png class="card-img-top" %}
    -
    +

    All complete and valid submissions will receive a digital certificate of completion. In addition, some @@ -102,8 +102,8 @@

    {{prize.title}}

    -
    -
    +
    +

    Getting started

    Use the following instructions to get started:

      @@ -134,7 +134,7 @@

      Getting started

    -
    +

    Enter your clock face for a chance to win @@ -147,12 +147,12 @@

    -
    -
    +
    +

    Submission Requirements

    -

    +

    Here are the requirements, including some guidelines, for contest submissions. See the contest’s Official Rules for full details.

    @@ -171,10 +171,10 @@

    {{item.title}}

    -
    +
    -
    +

    FAQ

    {% for faq in site.data.clock.faqs %} From 9e25ec26cf77f73488c35fb63aaa7c9afb693969 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 14 Nov 2019 11:19:28 -0500 Subject: [PATCH 50/83] Submissions section design fixed --- src/_assets/css/_clock.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index a82ab3d74d2..d93b28b4c32 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -457,7 +457,7 @@ .paragraph { font-size: 14px; - margin-bottom: 0; + margin-bottom: 40px; } .title { From 570cddd49c0de2b09a2383d7cee21b8cdf165ad6 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 12:00:04 -0500 Subject: [PATCH 51/83] Fix comments. --- src/_assets/css/_clock.scss | 26 ++++++++++++++------- src/_data/clock/faqs.yml | 10 ++++---- src/_data/clock/submission_requirements.yml | 4 ++-- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index b805da46771..39ec4b6f6b3 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -6,6 +6,8 @@ $clock-color-light-grey: #f8f9fa; $clock-color-grey: #555; $color-code-block: #252525; + + color: $clock-color-grey; font-family: $site-font-family-alt; &__texture { @@ -179,6 +181,7 @@ } .paragraph { + font-family: $site-font-family-base; font-size: 20px; } @@ -196,7 +199,7 @@ // Styles for section clock__getting (Getting Started) &__getting { - color: $clock-color-dark; + color: $clock-color-grey; ol { padding-left: 16px; @@ -212,17 +215,14 @@ margin: 80px 0; } - .code-font { - color: $color-code-block; - font-family: $site-font-family-courier; - } - .subheading { + color: $clock-color-dark; font-size: 56px; margin: 0 0 16px 0; } .paragraph { + font-family: $site-font-family-base; font-size: 18px; margin-bottom: 24px; } @@ -269,6 +269,8 @@ // Style for submissions &__submissions, &__contest { + font-family: $site-font-family-base; + font-size: 18px; padding: 48px 0; li { @@ -280,6 +282,7 @@ } .subheading { + font-family: $site-font-family-alt; font-size: 32px; margin: 0 0 16px; } @@ -289,6 +292,7 @@ } .title { + font-family: $site-font-family-base; font-size: 18px; font-weight: 500; margin: 0; @@ -313,7 +317,7 @@ .faqs_button { align-items: center; - color: $clock-color-dark; + color: $clock-color-grey; display: flex; justify-content: space-between; padding: 0; @@ -339,12 +343,14 @@ } .subheading { + color: $clock-color-dark; font-size: 56px; margin: 0 0 56px; } .faq__card-body { - padding: 0 24px 24px 0; + font-family: $site-font-family-base; + padding: 0 40px 24px 0; } } @@ -354,6 +360,10 @@ outline: none; } + .code-font { + color: $color-code-block; + font-family: $site-font-family-courier; + } .dropdown__button[aria-expanded="true"] { i { diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index 69231528676..82586d97c5a 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -159,6 +159,11 @@ Rules for submissions, and participants must either create or have permission to use (e.g. via a license) and submit all parts of their submission. +- title: My clock looks or behaves differently on web! What do I do? + content: > + We will not be judging your clock on web. Web is currently in technical preview and is missing some features, but is + a great way to share your app with others. + - title: If I have more questions, where should I go? content: > Take a look through our @@ -176,8 +181,3 @@ Firebase , or any other web hosting solution. If you share a link to your app on social media, be sure to include the #FlutterClock hashtag! - -- title: My clock looks or behaves differently on web! What do I do? - content: > - We will not be judging your clock on web. Web is currently in technical preview and is missing some features, but is - a great way to share your app with others. diff --git a/src/_data/clock/submission_requirements.yml b/src/_data/clock/submission_requirements.yml index da5f1ca73b0..a26a6c9c8cd 100644 --- a/src/_data/clock/submission_requirements.yml +++ b/src/_data/clock/submission_requirements.yml @@ -2,8 +2,8 @@ Design and data notes: subItems: - text: > - The ClockModel API with mock data is provided to you. Using this API is optional, but it provides system - information such as the brightness mode, weather, and time format. + The ClockModel API with mock data is provided to you. Using this API is optional, + but it provides system information such as the brightness mode, weather, and time format. - text: > The clock design should use landscape mode, with a 5:3 aspect ratio. - text: > From 71deb4f8ea7bc93d8c69494cc964bffe3d339c48 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 12:39:26 -0500 Subject: [PATCH 52/83] Fix comments. --- src/_assets/css/_clock.scss | 6 +++--- src/clock/index.html | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 39ec4b6f6b3..e4c0cc3d5e4 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -83,11 +83,10 @@ // Styles for wtm copy &__wtm-copy { - color: $clock-color-dark; //TODO: Change for a variable - .subheading { - margin: 0 0 24px; + color: $clock-color-dark; font-size: 56px; + margin: 0 0 24px; } .paragraph { @@ -109,6 +108,7 @@ } .heading { + color: $clock-color-dark; font-size: 32px; margin: 0 auto 88px; max-width: 630px; diff --git a/src/clock/index.html b/src/clock/index.html index 8482d105d02..4fb1eaf8bbf 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -59,7 +59,7 @@

    Entries will be judged by a panel of Google experts against

    -

    Flutter Clock contest is brought to you in partnership with Google Assistant and Lenovo!

    +

    Flutter Clock contest is brought to you in partnership with Google Assistant and Lenovo

    Flutter
    Google Assistant
    Lenovo
    From 9abf72cd0f6f935cec602f1f915586e09edbda5d Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 13:19:16 -0500 Subject: [PATCH 53/83] Minor changes. --- src/_assets/css/_clock.scss | 24 +++++++++--------------- src/clock/index.html | 4 ++-- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index e4c0cc3d5e4..22fd62b89a0 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -1,6 +1,5 @@ .clock { $clock-color-dark: #212c34; - $clock-color-white: #fff; $clock-color-blue: #01579b; $clock-color-light-blue: #aecbfa; $clock-color-light-grey: #f8f9fa; @@ -9,6 +8,7 @@ color: $clock-color-grey; font-family: $site-font-family-alt; + font-size: 18px; &__texture { height: 100%; @@ -37,7 +37,6 @@ .youtube-link, .twitter-link { color: $twitter-color; - font-size: 18px; i { margin-right: 5px; @@ -70,7 +69,7 @@ position: relative; &__texture { - background-color: #FFF; + background-color: $site-color-white;; background-image: asset_url('clock/wtm__background-bottom.svg'), asset_url('clock/wtm__background-top.svg'); background-position: right bottom -20px, left top 100px; background-repeat: no-repeat; @@ -143,7 +142,8 @@ // Styles for prizes container &__prizes { background-color: $clock-color-blue; - color: $clock-color-white; + color: $site-color-white; + font-family: $site-font-family-base; position: relative; ul { @@ -181,14 +181,9 @@ } .paragraph { - font-family: $site-font-family-base; font-size: 20px; } - .info-paragraph { - font-size: 18px; - } - &__texture { background-color: $clock-color-blue; background-image: asset_url('clock/prizes__background.svg'); @@ -199,8 +194,6 @@ // Styles for section clock__getting (Getting Started) &__getting { - color: $clock-color-grey; - ol { padding-left: 16px; } @@ -223,7 +216,6 @@ .paragraph { font-family: $site-font-family-base; - font-size: 18px; margin-bottom: 24px; } @@ -270,9 +262,12 @@ // Style for submissions &__submissions, &__contest { font-family: $site-font-family-base; - font-size: 18px; padding: 48px 0; + ul { + padding-left: 16px; + } + li { padding: 8px 0; } @@ -282,13 +277,12 @@ } .subheading { - font-family: $site-font-family-alt; font-size: 32px; margin: 0 0 16px; } .paragraph { - font-size: 18px; + margin-bottom: 40px; } .title { diff --git a/src/clock/index.html b/src/clock/index.html index 4fb1eaf8bbf..ea2afe18f51 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -146,7 +146,7 @@

    Submission Requirements

    -

    +

    Here are the requirements, including some guidelines, for contest submissions. See the contest’s Official Rules for full details. @@ -182,7 +182,7 @@

    {{item.title}}

    Contest Rules

    -

    +

    Full details and rules are provided in our Official Rules. Here’s a summary of some of the key points: From c9b0985a5e38714048f04625c115ae83d6548439 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 13:54:27 -0500 Subject: [PATCH 54/83] Modify prize link. --- src/_assets/css/_clock.scss | 20 +++++++++++++------- src/_data/clock/prizes.yml | 16 +++++++++------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 22fd62b89a0..0bdc4e0105a 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -10,6 +10,7 @@ font-family: $site-font-family-alt; font-size: 18px; + // Background texture shared by all sections &__texture { height: 100%; margin-left: calc(50% - 50vw); @@ -69,7 +70,7 @@ position: relative; &__texture { - background-color: $site-color-white;; + background-color: $site-color-white; background-image: asset_url('clock/wtm__background-bottom.svg'), asset_url('clock/wtm__background-top.svg'); background-position: right bottom -20px, left top 100px; background-repeat: no-repeat; @@ -99,6 +100,7 @@ } } + // Styles for wtm entries &__wtm-entries { margin-top: 72px; @@ -139,7 +141,6 @@ } // Styles for section clock__prizes - // Styles for prizes container &__prizes { background-color: $clock-color-blue; color: $site-color-white; @@ -169,6 +170,13 @@ padding-top: 126px; } + &__texture { + background-color: $clock-color-blue; + background-image: asset_url('clock/prizes__background.svg'); + background-position: right 50px top 150px; + background-repeat: no-repeat; + } + .prizes-text { display: inline-block; font-size: 20px; @@ -184,11 +192,9 @@ font-size: 20px; } - &__texture { - background-color: $clock-color-blue; - background-image: asset_url('clock/prizes__background.svg'); - background-position: right 50px top 150px; - background-repeat: no-repeat; + .prize-link { + color: $site-color-white; + text-decoration: underline; } } diff --git a/src/_data/clock/prizes.yml b/src/_data/clock/prizes.yml index f5d68384677..7de94f5103d 100644 --- a/src/_data/clock/prizes.yml +++ b/src/_data/clock/prizes.yml @@ -1,21 +1,23 @@ - title: > Grand prize: paragraph: > - A loaded Apple iMac Pro valued at approximately $10,000 - (detailed specifications may vary based on availability and applicable law in the potential winner’s country of - residence) + A loaded Apple iMac Pro valued at + approximately $10,000 (detailed specifications may vary based on availability and applicable law in the potential + winner’s country of residence) - title: > 4 winners: paragraph: > - A Lenovo 10" Smart Display with the Google Assistant - (~$249.00 USD value) (based on availability and applicable law in the potential winner’s country of residence) + A Lenovo 10" Smart Display with the + Google Assistant (~$249.00 USD value) (based on availability and applicable law in the potential winner’s country + of residence) - title: > Up to 25 winners: paragraph: > - A Lenovo Smart Clock with the Google Assistant - (~$79.00 USD value) (based on availability and applicable law in the potential winner’s country of residence) + A Lenovo Smart Clock with the Google + Assistant (~$79.00 USD value) (based on availability and applicable law in the potential winner’s country of + residence) From 57fe011f363009fa8a402d55230cfcfbf1f905a0 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 14 Nov 2019 14:25:29 -0500 Subject: [PATCH 55/83] Mobile design comments fixed --- .firebaserc | 16 ++++- src/_assets/css/_clock.scss | 22 +++++-- .../clock/hero-pattern__background-mobile.svg | 62 +++++++++++++++++++ 3 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 src/_assets/image/clock/hero-pattern__background-mobile.svg diff --git a/.firebaserc b/.firebaserc index 53cce64f853..e428469277e 100644 --- a/.firebaserc +++ b/.firebaserc @@ -1,6 +1,18 @@ { "projects": { - "qa": "huge-flutter-dev-qa" - "staging": "huge-flutter-dev-staging" + "default": "flutter-dev-230821", + "flutter-dev": "flutter-dev-230821", + "flutter-io": "sweltering-fire-2088", + "staging-1": "flutter-io-staging-1", + "staging-2": "flutter-io-staging-2", + "pc2": "ng2-io", + "sz": "sz-flutter", + "sz2": "sz-flutter-2", + "kw": "kw-flutter-1", + "kw2": "kw-flutter-2", + "ft": "flutter-web-staging", + "filip": "flutter-website-filiph-staging", + "brianegan": "brianegan-flutter-staging", + "xster-staging": "flutter-website-staging-6f2ad" } } \ No newline at end of file diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 60a719739f7..415712cbf33 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -51,7 +51,7 @@ &__texture { background-color: $flutter-dark-blue-texture; - background-image: asset_url('clock/hero-pattern__background.svg'); + background-image: asset_url('clock/hero-pattern__background-mobile.svg'); background-repeat: no-repeat; background-size: cover; } @@ -62,6 +62,13 @@ margin: 120px auto 40px; max-width: 642px; } + + &__texture { + background-color: $flutter-dark-blue-texture; + background-image: asset_url('clock/hero-pattern__background.svg'); + background-repeat: no-repeat; + background-size: cover; + } } } @@ -72,8 +79,9 @@ &__texture { background-color: $site-color-white;; background-image: asset_url('clock/wtm__background-bottom.svg'), asset_url('clock/wtm__background-top.svg'); - background-position: right bottom 72vh, left top 100px; + background-position: right top 200px, left top 50px; background-repeat: no-repeat; + background-size: 25%, 35%; } &_container { @@ -88,6 +96,7 @@ &__texture { background-position: right bottom 50vh, left top 100px; + background-size: initial; } } } @@ -95,7 +104,6 @@ // Styles for wtm copy &__wtm-copy { color: $clock-color-dark; - margin-bottom: 96px; .subheading { color: $clock-color-dark; @@ -294,8 +302,9 @@ &__texture { background-color: $clock-color-blue; background-image: asset_url('clock/prizes__background.svg'); - background-position: right 50px top 150px; + background-position: right 20px top 25px; background-repeat: no-repeat; + background-size: 90%, 100%; } @include media-breakpoint-up(lg) { @@ -308,6 +317,11 @@ padding-top: 126px; } + &__texture { + background-position: right 50px top 150px; + background-size: inherit; + } + .prizes-text { font-size: 20px; } diff --git a/src/_assets/image/clock/hero-pattern__background-mobile.svg b/src/_assets/image/clock/hero-pattern__background-mobile.svg new file mode 100644 index 00000000000..43a80b5c1a6 --- /dev/null +++ b/src/_assets/image/clock/hero-pattern__background-mobile.svg @@ -0,0 +1,62 @@ + + + + BG_Mob_1 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 214fcf3a398a51f774f3ffa979c622b102dde3da Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 14 Nov 2019 14:35:33 -0500 Subject: [PATCH 56/83] Comments fixed for font sizes and links in prizes --- src/_assets/css/_clock.scss | 8 +++++--- src/clock/index.html | 3 +-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 9b771eda5ad..0a33670a414 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -206,9 +206,11 @@ width: 190px; } - .paragraph { - font-size: 20px; - margin-bottom: 50px; + .entries__card-body { + .paragraph { + font-size: 20px; + margin-bottom: 50px; + } } .fas { diff --git a/src/clock/index.html b/src/clock/index.html index bd35f1a6a4d..13fb2d19f4b 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -45,9 +45,8 @@

    Lenovo Smart Display, or Lenovo Smart Clock.

    - All projects must be submitted by January 20, 2020, 11:59PM PST + All projects must be submitted by January 20, 2020, 11:59PM PST (GMT-8).

    -

    (GMT-8).

    Entries will be judged by a panel of Google experts against the following criteria:

    From 4126e057f1d808504ab567633bac1a034f9b18a9 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 15:19:37 -0500 Subject: [PATCH 57/83] Fix comments. --- src/_assets/css/_clock.scss | 12 ++++++------ src/clock/index.html | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index e3761c9bc60..e95b411b434 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -80,7 +80,7 @@ &_container { margin: 80px 0; } - + @include media-breakpoint-up(lg) { &_container { @@ -202,7 +202,7 @@ font-size: 20px; margin-bottom: 50px; } - + .fas { bottom: 24px; left: 24px; @@ -381,7 +381,7 @@ .sub-item:last-child { padding-bottom: 0; } - + @include media-breakpoint-up(lg) { .subheading { @@ -449,9 +449,9 @@ font-family: $site-font-family-base; ul { - padding-left: 16px; + padding-left: 18px; } - + li { font-size: 14px; padding: 8px 0; @@ -593,4 +593,4 @@ list-style: none; margin-left: -16px; } -} \ No newline at end of file +} diff --git a/src/clock/index.html b/src/clock/index.html index bd35f1a6a4d..8a767360e18 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -162,13 +162,13 @@

    {{item.title}}

      {% for subItem in item.subItems %} -
    • - - {{subItem.text}} +
    • + {{subItem.text}} {% if subItem.subItems %}
        {% for subItemSecondLevel in subItem.subItems %} -
      • - - {{subItemSecondLevel.text}} +
      • + {{subItemSecondLevel.text}}
      • {% endfor %}
      @@ -195,8 +195,8 @@

        {% for item in site.data.clock.contest_rules %} -
      • - - {{item.title}} +
      • + {{item.title}}
      • {% endfor %}
      From ad6ed14d81b5d8abe64c1073b92c33cf365224a7 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 15:34:43 -0500 Subject: [PATCH 58/83] Fix comments. --- src/_data/clock/faqs.yml | 6 +++--- src/clock/index.html | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index 82586d97c5a..cb863a06771 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -1,8 +1,8 @@ - title: What is Flutter Clock? content: > - Flutter Clock is a skills-based contest offered by Google, including participation by the Flutter, Google Assistant, - and Lenovo teams, and aims to advance the UI ecosystem for smart displays such as Lenovo Smart Clocks. Flutter Clock - challenges you to use Flutter to build a beautiful and innovative clock face application. + Flutter Clock is a skills-based contest offered by Google, including participation by the Flutter, Google + Assistant, and Lenovo teams. Flutter Clock challenges you to use Flutter to build a beautiful and innovative clock + face application. - title: What is the judging criteria? content: > diff --git a/src/clock/index.html b/src/clock/index.html index 8a767360e18..b6176c0698d 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -93,7 +93,7 @@

      {{prize.title}}


      - All complete and valid submissions will receive a digital certificate of completion. In addition, some + All complete and valid submissions will receive a digital certificate of completion. Some of the clock contest submissions might be integrated into the Lenovo Smart Clock's lineup of clock faces, or used as inspiration for future clock faces!

      @@ -104,7 +104,7 @@

      {{prize.title}}

      -

      Getting started

      +

      Getting Started

      Use the following instructions to get started:

        {% for item in site.data.clock.getting_started_items %} From e7bca1c8a5387ae4ac9dec57c00183516db60c8f Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 15:56:38 -0500 Subject: [PATCH 59/83] Fix comments v205. --- src/_data/clock/faqs.yml | 6 +++--- src/clock/index.html | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index cb863a06771..110bd396ce7 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -29,10 +29,10 @@ - title: What are the prizes? content: > - 1 grand prize winner receives: + 1 Grand Prize Winner receives:

        A loaded Apple iMac Pro valued at approximately USD $10,000 (detailed specifications may vary based on availability and applicable law in the potential winner’s country of residence).

        - 4 winners each receive: + 4 Winners each receive:

        A 10” Lenovo Smart Display with Google Assistant (~$249.00 USD value) (based on availability and applicable law in the potential winner’s country of residence).

        Up to 25 Winners each receive: @@ -44,7 +44,7 @@ - title: What do I submit? content: > - See the submission instructions in the ‘Getting started’ section, and the + See the submission instructions in the ‘Getting Started’ section, and the Official Rules for more details. diff --git a/src/clock/index.html b/src/clock/index.html index b6176c0698d..cd675ad9d78 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -63,7 +63,9 @@

        Entries will be judged by a panel of Google experts against

      -

      Flutter Clock contest is brought to you in partnership with Google Assistant and Lenovo!

      +

      + Flutter Clock contest is brought to you in partnership with Google Assistant and Lenovo. +

      {% asset clock/Flutter-logo.svg alt='Flutter Logo' %} {% asset clock/G-Assistant-logo.svg alt='Google Assistant Logo' %} @@ -93,7 +95,7 @@

      {{prize.title}}


      - All complete and valid submissions will receive a digital certificate of completion. Some + All complete and valid submissions will receive a digital certificate of completion. In addition, some of the clock contest submissions might be integrated into the Lenovo Smart Clock's lineup of clock faces, or used as inspiration for future clock faces!

      From 3c748beaea957d1ea60dd017149602703e2474a0 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 16:03:35 -0500 Subject: [PATCH 60/83] Fix comments. --- src/_assets/css/_clock.scss | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 7e6465b3685..b8174e44962 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -104,8 +104,6 @@ // Styles for wtm copy &__wtm-copy { - color: $clock-color-dark; - .subheading { color: $clock-color-dark; font-size: 24px; @@ -314,7 +312,7 @@ background-repeat: no-repeat; background-size: 90%, 100%; } - + .prize-link { color: $site-color-white; text-decoration: underline; From 09d262cc5f96da40b70ac14c5f393c3993c9196e Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 14 Nov 2019 16:10:57 -0500 Subject: [PATCH 61/83] Tablet responsive added --- src/_assets/css/_clock.scss | 100 +++++++++++++++++++++++++++++++----- src/_data/clock/prizes.yml | 6 +-- src/clock/index.html | 13 ++--- 3 files changed, 98 insertions(+), 21 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 0a33670a414..02a69469fd1 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -57,11 +57,9 @@ background-size: cover; } - @include media-breakpoint-up(lg) { + @include media-breakpoint-up(sm) { .heading { - font-size: 72px; - margin: 120px auto 40px; - max-width: 642px; + font-size: 38px; } &__texture { @@ -71,6 +69,14 @@ background-size: cover; } } + + @include media-breakpoint-up(lg) { + .heading { + font-size: 72px; + margin: 120px auto 40px; + max-width: 642px; + } + } } // Styles for section clock__wtm (What to make) @@ -88,6 +94,13 @@ &_container { margin: 80px 0; } + + @include media-breakpoint-up(sm) { + &__texture { + background-position: right top 450px, left top 50px; + background-size: 15%, 25%; + } + } @include media-breakpoint-up(lg) { @@ -122,6 +135,12 @@ margin: 0; } + @include media-breakpoint-up(sm) { + .subheading { + font-size: 32px; + } + } + @include media-breakpoint-up(lg) { display: flex; flex-direction: column; @@ -188,10 +207,22 @@ } } + @include media-breakpoint-up(sm) { + .heading { + font-size: 24px; + } + + .card { + height: 20vw; + width: 24%; + } + } + @include media-breakpoint-up(lg) { margin-top: 72px; &_container { + flex-wrap: initial; margin-bottom: 80px; } @@ -201,9 +232,9 @@ } .card { - height: 190px; + height: 185px; margin-bottom: 0; - width: 190px; + width: 185px; } .entries__card-body { @@ -237,17 +268,20 @@ justify-content: space-evenly; } + @include media-breakpoint-up(sm) { + + .logos-container { + flex-direction: row; + height: auto; + } + } + @include media-breakpoint-up(lg) { .logos-heading { font-size: 20px; margin-bottom: 40px; } - - .logos-container { - flex-direction: row; - height: auto; - } } } @@ -322,6 +356,20 @@ text-decoration: underline; } + @include media-breakpoint-up(sm) { + &_container { + margin: 160px 0 80px; + } + + .prizes-text { + font-size: 20px; + } + + .subheading { + font-size: 24px; + } + } + @include media-breakpoint-up(lg) { &_container { @@ -404,6 +452,16 @@ .sub-item:last-child { padding-bottom: 0; } + + @include media-breakpoint-up(sm) { + .subheading { + font-size: 32px; + } + + .sub-item { + font-size: 16px; + } + } @include media-breakpoint-up(lg) { @@ -429,7 +487,7 @@ &__submit { background-color: $clock-color-light-grey; color: $clock-color-dark; - margin: 0 -25px 80px -25px; + margin: 0 calc(50% - 50vw) 80px calc(50% - 50vw); padding-left: 0; padding-right: 0; text-align: center; @@ -449,6 +507,12 @@ padding: 16px 24px; } + @include media-breakpoint-up(sm) { + .subheading { + font-size: 32px; + } + } + @include media-breakpoint-up(lg) { margin: 0 0 80px 0; @@ -506,6 +570,12 @@ font-family: $site-font-family-courier; } + @include media-breakpoint-up(sm) { + .subheading { + font-size: 24px; + } + } + @include media-breakpoint-up(lg) { li { font-size: 18px; @@ -582,6 +652,12 @@ padding: 0 24px 24px 0; } + @include media-breakpoint-up(sm) { + .subheading { + font-size: 32px; + } + } + @include media-breakpoint-up(lg) { margin-top: 100px; diff --git a/src/_data/clock/prizes.yml b/src/_data/clock/prizes.yml index 7de94f5103d..89e8c3283b3 100644 --- a/src/_data/clock/prizes.yml +++ b/src/_data/clock/prizes.yml @@ -3,21 +3,21 @@ paragraph: > A loaded Apple iMac Pro valued at approximately $10,000 (detailed specifications may vary based on availability and applicable law in the potential - winner’s country of residence) + winner’s country of residence) * - title: > 4 winners: paragraph: > A Lenovo 10" Smart Display with the Google Assistant (~$249.00 USD value) (based on availability and applicable law in the potential winner’s country - of residence) + of residence) * - title: > Up to 25 winners: paragraph: > A Lenovo Smart Clock with the Google Assistant (~$79.00 USD value) (based on availability and applicable law in the potential winner’s country of - residence) + residence) * diff --git a/src/clock/index.html b/src/clock/index.html index 13fb2d19f4b..dac212c8186 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -18,7 +18,7 @@

      Take the Flutter Clock challenge

      target="_blank" rel="noopener noreferrer" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');"> - Share #FlutterClock with friends + Share #FlutterClock with friends :)

      @@ -33,10 +33,10 @@

      Take the Flutter Clock challenge

      -
      +
      {% asset clock/Lenovo-WTM.png alt='Lenovo Clock' class="card-img-top" %}
      -
      +

      Create a beautiful clock face UI

      @@ -75,7 +75,7 @@

      Entries will be judged by a panel of Google experts against
      -
      +
      Prizes
        {% for prize in site.data.clock.prizes %} @@ -86,7 +86,7 @@

        {{prize.title}}

        {% endfor %}
      -
      +
      {% asset clock/iMac.png class="card-img-top" %}
      @@ -94,7 +94,8 @@

      {{prize.title}}

      All complete and valid submissions will receive a digital certificate of completion. In addition, some of the clock contest submissions might be integrated into the Lenovo Smart Clock's lineup of clock - faces, or used as inspiration for future clock faces! + faces, or used as inspiration for future clock faces!

      + *based on availability and applicable law in the potential winner’s country of residence

      From b7e16dbe4f223f6ad668166e8c4bc13dd9a8b80f Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 16:23:48 -0500 Subject: [PATCH 62/83] Fix comments --- src/_assets/css/_clock.scss | 1 + src/_data/clock/faqs.yml | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index b8174e44962..3aaa59f37a2 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -543,6 +543,7 @@ align-items: center; color: $clock-color-grey; display: flex; + font-size: 20px; justify-content: space-between; padding: 0; text-align: left; diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index 110bd396ce7..ef68eebeb46 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -177,7 +177,6 @@ Once you enable web support, test your app by selecting Chrome as the target device in your IDE, or at the command line with flutter run -d chrome. Build a web version of your app for deployment using flutter build web. Then, you can host it using - GitHub Pages, - Firebase - , or any other web hosting solution. If you share a link to your app on social media, be sure to include the + GitHub Pages, Firebase, + or any other web hosting solution. If you share a link to your app on social media, be sure to include the #FlutterClock hashtag! From 541d9d90ee03ae7de3b072771f94f0b43840bae8 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 14 Nov 2019 16:27:46 -0500 Subject: [PATCH 63/83] Icons not found problem in progress --- src/_assets/css/_clock.scss | 4 ++-- src/_assets/css/_variables.scss | 2 +- src/_includes/head.html | 3 ++- src/clock/index.html | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index d72f5a36dcc..14d3419100c 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -565,7 +565,7 @@ .code-font { color: $color-code-block; - font-family: $site-font-family-courier; + // font-family: $site-font-family-courier; } @include media-breakpoint-up(sm) { @@ -677,7 +677,7 @@ .code-font { color: $color-code-block; - font-family: $site-font-family-courier; + // font-family: $site-font-family-courier; } .dropdown__button[aria-expanded="true"] { diff --git a/src/_assets/css/_variables.scss b/src/_assets/css/_variables.scss index 43db0d078b3..f7388510ee6 100644 --- a/src/_assets/css/_variables.scss +++ b/src/_assets/css/_variables.scss @@ -21,7 +21,7 @@ $site-font-family-base: 'Roboto', sans-serif; $site-font-family-alt: 'Google Sans', 'Roboto', sans-serif; $site-font-family-icon: 'Material Icons'; $site-font-family-monospace: 'Roboto Mono', monospace; -$site-font-family-courier: 'Courier', monospace; +// $site-font-family-courier: 'Courier', monospace; $site-font-icon: 24px/1 $site-font-family-icon; // Layout diff --git a/src/_includes/head.html b/src/_includes/head.html index aa51a07d3d5..06a22e609e0 100644 --- a/src/_includes/head.html +++ b/src/_includes/head.html @@ -27,7 +27,8 @@ {% assign og_image_path = page.image | default: layout.image | default: '/images/flutter-logo-sharing.png' %} - + + {% asset main.css %} {% for css in page.css -%} {% asset '{{css}}' %} diff --git a/src/clock/index.html b/src/clock/index.html index cd279ccdcc1..ffca35d6741 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -18,7 +18,7 @@

      Take the Flutter Clock challenge

      target="_blank" rel="noopener noreferrer" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');"> - Share #FlutterClock with friends :) + Share #FlutterClock with friends

      From 7800ba7a40ec80c01c4ac0bd04e21fed63c4d7b0 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 14 Nov 2019 16:38:43 -0500 Subject: [PATCH 64/83] Material icons problem in progress --- src/_assets/css/_clock.scss | 4 ++-- src/_assets/css/_variables.scss | 2 +- src/_includes/head.html | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 465956909dd..50962393205 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -565,7 +565,7 @@ .code-font { color: $color-code-block; - // font-family: $site-font-family-courier; + font-family: $site-font-family-courier; } @include media-breakpoint-up(sm) { @@ -678,7 +678,7 @@ .code-font { color: $color-code-block; - // font-family: $site-font-family-courier; + font-family: $site-font-family-courier; } .dropdown__button[aria-expanded="true"] { diff --git a/src/_assets/css/_variables.scss b/src/_assets/css/_variables.scss index f7388510ee6..43db0d078b3 100644 --- a/src/_assets/css/_variables.scss +++ b/src/_assets/css/_variables.scss @@ -21,7 +21,7 @@ $site-font-family-base: 'Roboto', sans-serif; $site-font-family-alt: 'Google Sans', 'Roboto', sans-serif; $site-font-family-icon: 'Material Icons'; $site-font-family-monospace: 'Roboto Mono', monospace; -// $site-font-family-courier: 'Courier', monospace; +$site-font-family-courier: 'Courier', monospace; $site-font-icon: 24px/1 $site-font-family-icon; // Layout diff --git a/src/_includes/head.html b/src/_includes/head.html index 06a22e609e0..ecccb533ee6 100644 --- a/src/_includes/head.html +++ b/src/_includes/head.html @@ -27,8 +27,7 @@ {% assign og_image_path = page.image | default: layout.image | default: '/images/flutter-logo-sharing.png' %} - - + {% asset main.css %} {% for css in page.css -%} {% asset '{{css}}' %} From 0aa5109f254294033a4ad14c59ff908b11c7738b Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 16:56:26 -0500 Subject: [PATCH 65/83] Fix comments. --- .firebaserc | 6 ++++-- site-shared | 2 +- src/_data/clock/faqs.yml | 6 +++--- src/_data/clock/prizes.yml | 12 ++++++------ src/clock/index.html | 7 +++---- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.firebaserc b/.firebaserc index e428469277e..15a565ac1bc 100644 --- a/.firebaserc +++ b/.firebaserc @@ -13,6 +13,8 @@ "ft": "flutter-web-staging", "filip": "flutter-website-filiph-staging", "brianegan": "brianegan-flutter-staging", - "xster-staging": "flutter-website-staging-6f2ad" + "xster-staging": "flutter-website-staging-6f2ad", + "huge-qa": "huge-flutter-dev-qa", + "huge-staging": "huge-flutter-dev-staging" } -} \ No newline at end of file +} diff --git a/site-shared b/site-shared index 6b58b3872ca..a480c72c397 160000 --- a/site-shared +++ b/site-shared @@ -1 +1 @@ -Subproject commit 6b58b3872ca0cd25eff3258e0ef4ab0eb2440e5e +Subproject commit a480c72c397dd1562a4a4b765db16e19748cdfd6 diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index ef68eebeb46..f64679f328b 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -30,13 +30,13 @@ - title: What are the prizes? content: > 1 Grand Prize Winner receives: -

      A loaded Apple iMac Pro valued at approximately USD $10,000 (detailed specifications may vary based on availability +

      A loaded Apple iMac Pro valued at approximately USD $10,000* (detailed specifications may vary based on availability and applicable law in the potential winner’s country of residence).

      4 Winners each receive: -

      A 10” Lenovo Smart Display with Google Assistant (~$249.00 USD value) (based on availability and applicable law in +

      A 10” Lenovo Smart Display with Google Assistant (~$249.00 USD value)* (based on availability and applicable law in the potential winner’s country of residence).

      Up to 25 Winners each receive: -

      A Lenovo Smart Clock with the Google Assistant (~$79.00 USD value) (based on local availability and applicable law +

      A Lenovo Smart Clock with the Google Assistant (~$79.00 USD value)* (based on local availability and applicable law in the potential winner’s country of residence).

      In addition, all participants who submit complete and valid entries will receive a digital certificate of completion when their code repository is made public by February 5th, 2020. Also, some submissions may be integrated diff --git a/src/_data/clock/prizes.yml b/src/_data/clock/prizes.yml index 89e8c3283b3..8c7a4003a7e 100644 --- a/src/_data/clock/prizes.yml +++ b/src/_data/clock/prizes.yml @@ -2,22 +2,22 @@ Grand prize: paragraph: > A loaded Apple iMac Pro valued at - approximately $10,000 (detailed specifications may vary based on availability and applicable law in the potential - winner’s country of residence) * + approximately USD $10,000* (detailed specifications may vary based on availability and applicable law in the potential + winner’s country of residence) - title: > 4 winners: paragraph: > A Lenovo 10" Smart Display with the - Google Assistant (~$249.00 USD value) (based on availability and applicable law in the potential winner’s country - of residence) * + Google Assistant (~$249.00 USD value)* (based on availability and applicable law in the potential winner’s country + of residence) - title: > Up to 25 winners: paragraph: > A Lenovo Smart Clock with the Google - Assistant (~$79.00 USD value) (based on availability and applicable law in the potential winner’s country of - residence) * + Assistant (~$79.00 USD value)* (based on availability and applicable law in the potential winner’s country of + residence) diff --git a/src/clock/index.html b/src/clock/index.html index ffca35d6741..94ca46d6ccc 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -94,10 +94,9 @@

      {{prize.title}}


      - All complete and valid submissions will receive a digital certificate of completion. In addition, some - of the clock contest submissions might be integrated into the Lenovo Smart Clock's lineup of clock - faces, or used as inspiration for future clock faces!

      - *based on availability and applicable law in the potential winner’s country of residence + All complete and valid submissions will receive a digital certificate of completion. Some of the clock + contest submissions might be integrated into the Lenovo Smart Clock's lineup of clock faces, or used as + inspiration for future clock faces!

      From b16c300fde780001301c17137ae92a74d12510cf Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 17:14:36 -0500 Subject: [PATCH 66/83] Fix prize capital letters. --- src/_data/clock/faqs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index f64679f328b..79e2649fc65 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -29,7 +29,7 @@ - title: What are the prizes? content: > - 1 Grand Prize Winner receives: + 1 Grand prize winner receives:

      A loaded Apple iMac Pro valued at approximately USD $10,000* (detailed specifications may vary based on availability and applicable law in the potential winner’s country of residence).

      4 Winners each receive: From 4ff043848d23a699f658beea8d321f665c6ba656 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 14 Nov 2019 17:27:14 -0500 Subject: [PATCH 67/83] Material Icons loading problem solved --- src/_includes/head.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_includes/head.html b/src/_includes/head.html index ecccb533ee6..e977da26a68 100644 --- a/src/_includes/head.html +++ b/src/_includes/head.html @@ -27,7 +27,7 @@ {% assign og_image_path = page.image | default: layout.image | default: '/images/flutter-logo-sharing.png' %} - + {% asset main.css %} {% for css in page.css -%} {% asset '{{css}}' %} From 82813fc539d8c5f5a981840f26e4c89347e8c54a Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Thu, 14 Nov 2019 17:30:15 -0500 Subject: [PATCH 68/83] Merge --- .firebaserc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.firebaserc b/.firebaserc index 15a565ac1bc..9a4151f0aea 100644 --- a/.firebaserc +++ b/.firebaserc @@ -13,8 +13,6 @@ "ft": "flutter-web-staging", "filip": "flutter-website-filiph-staging", "brianegan": "brianegan-flutter-staging", - "xster-staging": "flutter-website-staging-6f2ad", - "huge-qa": "huge-flutter-dev-qa", - "huge-staging": "huge-flutter-dev-staging" + "xster-staging": "flutter-website-staging-6f2ad" } } From 032e26a73794624a1005d6e4f416610ce563995c Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 17:44:45 -0500 Subject: [PATCH 69/83] Fix getting started link --- src/_data/clock/getting_started_items.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index ecc8e786e1d..2c8410473c8 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -1,5 +1,5 @@ - title: > - Download the Flutter Clock GitHub repo using + Download the Flutter Clock GitHub repo using git clone. - title: > From c59937b7ca3abdd5a89c6087567e16d57f97fd03 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Thu, 14 Nov 2019 17:48:06 -0500 Subject: [PATCH 70/83] Fix getting started redirection. --- src/_data/clock/getting_started_items.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index 2c8410473c8..f4d5c1a976d 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -1,5 +1,5 @@ - title: > - Download the Flutter Clock GitHub repo using + Download the Flutter Clock GitHub repo using git clone. - title: > From 357d7ee234b81ee42f2f9cf285592d085f2a2a1d Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Fri, 15 Nov 2019 10:30:17 -0500 Subject: [PATCH 71/83] Fix comments --- src/_assets/css/_clock.scss | 8 ++++---- src/clock/index.html | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 50962393205..c580824ff9c 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -101,7 +101,7 @@ background-size: 15%, 25%; } } - + @include media-breakpoint-up(lg) { &_container { @@ -271,7 +271,7 @@ .logos-container { flex-direction: row; height: auto; - } + } } @include media-breakpoint-up(lg) { @@ -443,7 +443,7 @@ padding: 8px 0; .sub-item { - list-style: none; + list-style-type: circle; } } @@ -460,7 +460,7 @@ font-size: 16px; } } - + @include media-breakpoint-up(lg) { .subheading { diff --git a/src/clock/index.html b/src/clock/index.html index 94ca46d6ccc..65c0e716e72 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -117,11 +117,11 @@

      Getting Started

    • {{subItem.text}} {% if subItem.subItems %} -
        +
          {% for subItemSecondLevel in subItem.subItems%} -
        • - {{subItemSecondLevel.text}}
        • +
        • {{subItemSecondLevel.text}}
        • {% endfor %} -
      +
    {% endif %} {% endfor %} @@ -140,9 +140,9 @@

    Getting Started

    Enter your clock face for a chance to win

    - +
    From 32703100f8262842dd95e79eb982d28083d60949 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Fri, 15 Nov 2019 11:20:32 -0500 Subject: [PATCH 72/83] Issues fixed for hero background images --- src/_assets/css/_clock.scss | 39 +++++++++--- .../clock/hero-pattern__background-mobile.svg | 62 ------------------- .../image/clock/hero-pattern__background.svg | 1 - src/_assets/image/clock/hero/hero-circle.svg | 13 ++++ src/_assets/image/clock/hero/hero-clock.svg | 26 ++++++++ src/_assets/image/clock/hero/hero-diamond.svg | 11 ++++ src/_assets/image/clock/hero/hero-dots.svg | 26 ++++++++ src/_assets/image/clock/hero/hero-oval.svg | 12 ++++ src/clock/index.html | 16 ++--- 9 files changed, 128 insertions(+), 78 deletions(-) delete mode 100644 src/_assets/image/clock/hero-pattern__background-mobile.svg delete mode 100644 src/_assets/image/clock/hero-pattern__background.svg create mode 100755 src/_assets/image/clock/hero/hero-circle.svg create mode 100755 src/_assets/image/clock/hero/hero-clock.svg create mode 100755 src/_assets/image/clock/hero/hero-diamond.svg create mode 100755 src/_assets/image/clock/hero/hero-dots.svg create mode 100755 src/_assets/image/clock/hero/hero-oval.svg diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 50962393205..8c26407dc65 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -52,21 +52,26 @@ &__texture { background-color: $flutter-dark-blue-texture; - background-image: asset_url('clock/hero-pattern__background-mobile.svg'); + background-image: asset_url('clock/hero/hero-circle.svg'), + asset_url('clock/hero/hero-clock.svg'), + asset_url('clock/hero/hero-diamond.svg'), + asset_url('clock/hero/hero-dots.svg'), + asset_url('clock/hero/hero-oval.svg'); background-repeat: no-repeat; - background-size: cover; + background-position: top 61px right -220px, bottom -50px right -80px, bottom -50px left -200px, top -30px center,top 100px left -250px; + background-size: 320px, 280px, 270px, 90px, 310px; } @include media-breakpoint-up(sm) { .heading { font-size: 38px; } + } + @include media-breakpoint-up(md) { &__texture { - background-color: $flutter-dark-blue-texture; - background-image: asset_url('clock/hero-pattern__background.svg'); - background-repeat: no-repeat; - background-size: cover; + background-position: top 43px right -70%, bottom 20px right -20px, bottom -30% left 30px, top -40px center,top 30px left -60%; + background-size: 55%, 30%, 25%, 14%, 50%; } } @@ -76,6 +81,17 @@ margin: 120px auto 40px; max-width: 642px; } + + &__texture { + background-position: top 43px right -20px, bottom 74px right -20px, bottom -10px left 231px, top -40px center,top 30px left -20px; + background-size: 30%, 20%, 12%, 8%, 20%; + } + } + + @include media-breakpoint-up(xl) { + &__texture { + background-size: 20%, 15%, 10%, 5%, 15%; + } } } @@ -271,7 +287,11 @@ .logos-container { flex-direction: row; height: auto; - } + } + + .wtm-logo { + max-height: 35px; + } } @include media-breakpoint-up(lg) { @@ -280,6 +300,10 @@ font-size: 20px; margin-bottom: 40px; } + + .wtm-logo { + max-height: initial; + } } } @@ -619,6 +643,7 @@ justify-content: space-between; padding: 0; text-align: left; + user-select: text; width: 100%; } diff --git a/src/_assets/image/clock/hero-pattern__background-mobile.svg b/src/_assets/image/clock/hero-pattern__background-mobile.svg deleted file mode 100644 index 43a80b5c1a6..00000000000 --- a/src/_assets/image/clock/hero-pattern__background-mobile.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - BG_Mob_1 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/_assets/image/clock/hero-pattern__background.svg b/src/_assets/image/clock/hero-pattern__background.svg deleted file mode 100644 index 40dd9abca0d..00000000000 --- a/src/_assets/image/clock/hero-pattern__background.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-circle.svg b/src/_assets/image/clock/hero/hero-circle.svg new file mode 100755 index 00000000000..09af6844256 --- /dev/null +++ b/src/_assets/image/clock/hero/hero-circle.svg @@ -0,0 +1,13 @@ + + + + 3 + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-clock.svg b/src/_assets/image/clock/hero/hero-clock.svg new file mode 100755 index 00000000000..0b6ac052b98 --- /dev/null +++ b/src/_assets/image/clock/hero/hero-clock.svg @@ -0,0 +1,26 @@ + + + + Clock 2 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-diamond.svg b/src/_assets/image/clock/hero/hero-diamond.svg new file mode 100755 index 00000000000..afaeceab906 --- /dev/null +++ b/src/_assets/image/clock/hero/hero-diamond.svg @@ -0,0 +1,11 @@ + + + + 4 + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-dots.svg b/src/_assets/image/clock/hero/hero-dots.svg new file mode 100755 index 00000000000..d5eb6f5fe3b --- /dev/null +++ b/src/_assets/image/clock/hero/hero-dots.svg @@ -0,0 +1,26 @@ + + + + 1 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-oval.svg b/src/_assets/image/clock/hero/hero-oval.svg new file mode 100755 index 00000000000..d9cdbdf6ce8 --- /dev/null +++ b/src/_assets/image/clock/hero/hero-oval.svg @@ -0,0 +1,12 @@ + + + + Clock 1 + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/clock/index.html b/src/clock/index.html index 94ca46d6ccc..9e8ae929333 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -66,9 +66,9 @@

    Entries will be judged by a panel of Google experts against Flutter Clock contest is brought to you in partnership with Google Assistant and Lenovo.

    - {% asset clock/Flutter-logo.svg alt='Flutter Logo' %} - {% asset clock/G-Assistant-logo.svg alt='Google Assistant Logo' %} - {% asset clock/Lenovo-logo.svg alt='Lenovo Logo' %} + {% asset clock/Flutter-logo.svg alt='Flutter Logo' class='wtm-logo' %} + {% asset clock/G-Assistant-logo.svg alt='Google Assistant Logo' class='wtm-logo' %} + {% asset clock/Lenovo-logo.svg alt='Lenovo Logo' class='wtm-logo' %}

    @@ -210,8 +210,8 @@

    FAQ

    -
    - {% for faq in site.data.clock.faqs %} + {% for faq in site.data.clock.faqs %} +
    -
    +
    {{ faq.content }}
    - {% endfor %} -
    +
    + {% endfor %}

    From d8f494e061bb1d41edf0f365c92e23e28df96132 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Fri, 15 Nov 2019 11:51:47 -0500 Subject: [PATCH 73/83] Issues fixed for open external links --- src/_data/clock/contest_rules.yml | 2 +- src/_data/clock/faqs.yml | 26 ++++++++++----------- src/_data/clock/getting_started_items.yml | 10 ++++---- src/_data/clock/prizes.yml | 6 ++--- src/_data/clock/submission_requirements.yml | 14 +++++------ src/clock/index.html | 4 ++-- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/_data/clock/contest_rules.yml b/src/_data/clock/contest_rules.yml index 807f31f50a5..32bdd18bebe 100644 --- a/src/_data/clock/contest_rules.yml +++ b/src/_data/clock/contest_rules.yml @@ -19,7 +19,7 @@ and Sudan. - title: > Entries will be collected via the website using an online - Google form. + Google form. - title: > Submissions must not be derogatory, offensive, threatening, defamatory, disparaging, libellous or contain any content that is inappropriate, indecent, sexual, profane, torturous, slanderous, discriminatory in any way, or that diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index 79e2649fc65..9e94415a3b3 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -45,8 +45,8 @@ - title: What do I submit? content: > See the submission instructions in the ‘Getting Started’ section, and the - Official - Rules for more details. + + Official Rules for more details. - title: Can I submit more than one entry? content: > @@ -96,7 +96,7 @@ them. Note that written parts of your submission must be in English to be eligible for judging, and your submission must, at a minimum, support English language evaluation. However, we will not judge your clock face for language inclusion. Please ensure that your clock face’s text does not include profanity in any language, and is built and submitted in accordance with the - + Official Rules. - title: What accessibility requirements should I add? @@ -111,8 +111,8 @@ user waking up in the middle of the night, or viewing the clock from across the room? content: > No. See the judging criteria in the - Official - Rules for more details. + + Official Rules for more details. - title: What tips do you have to check the performance of my clock? content: > @@ -128,7 +128,7 @@ - title: Can I use Flare animations? content: > - Yes, you can use Flare animations in your submission. + Yes, you can use Flare animations in your submission. - title: > Can I store data in a separate file? For example, can I store a list of ways to say 'Good Morning' in a JSON file? @@ -143,7 +143,7 @@ - title: Speaking of code formatting, what are some good coding practices for Flutter? content: > - Check out Effective Dart. + Check out Effective Dart. (Note that the Flutter codebase has its own formatting guidelines and doesn't adhere to Effective Dart.) - title: Can a team of people submit a single clock? @@ -155,8 +155,8 @@ - title: Do assets (art, fonts) also have to be created by participants? content: > All assets must comply with our - Official - Rules for submissions, and participants must either create or have permission to use (e.g. via a license) and + + Official Rules for submissions, and participants must either create or have permission to use (e.g. via a license) and submit all parts of their submission. - title: My clock looks or behaves differently on web! What do I do? @@ -167,9 +167,9 @@ - title: If I have more questions, where should I go? content: > Take a look through our - Official - Rules and, if you still have questions, please - file a Flutter Clock GitHub issue. + + Official Rules and, if you still have questions, please + file a Flutter Clock GitHub issue. - title: How can I share my clock face online? content: > @@ -177,6 +177,6 @@ Once you enable web support, test your app by selecting Chrome as the target device in your IDE, or at the command line with flutter run -d chrome. Build a web version of your app for deployment using flutter build web. Then, you can host it using - GitHub Pages, Firebase, + GitHub Pages, Firebase, or any other web hosting solution. If you share a link to your app on social media, be sure to include the #FlutterClock hashtag! diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index f4d5c1a976d..2e2b4f56245 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -1,5 +1,5 @@ - title: > - Download the Flutter Clock GitHub repo using + Download the Flutter Clock GitHub repo using git clone. - title: > @@ -7,9 +7,9 @@ cd <path-to-repo>/flutter_clock/<name>_clock subItems: - text: > - Sample clock 1: Basic analog clock. + Sample clock 1: Basic analog clock. - text: > - Sample clock 2: Basic digital clock. + Sample clock 2: Basic digital clock. - title: > Run the clock app in your IDE, or by using flutter run at the command line. @@ -31,7 +31,7 @@ Format the Dart code. - text: > Verify that your clock builds and runs on - + the latest Flutter stable channel. - text: > In your <name>_clock directory, reduce the clock’s size: @@ -67,5 +67,5 @@ - text: > flutter run (on Android or iOS in landscape) - title: > - + Submit your clock. diff --git a/src/_data/clock/prizes.yml b/src/_data/clock/prizes.yml index 8c7a4003a7e..98dfcfbc1b0 100644 --- a/src/_data/clock/prizes.yml +++ b/src/_data/clock/prizes.yml @@ -1,21 +1,21 @@ - title: > Grand prize: paragraph: > - A loaded Apple iMac Pro valued at + A loaded Apple iMac Pro valued at approximately USD $10,000* (detailed specifications may vary based on availability and applicable law in the potential winner’s country of residence) - title: > 4 winners: paragraph: > - A Lenovo 10" Smart Display with the + A Lenovo 10" Smart Display with the Google Assistant (~$249.00 USD value)* (based on availability and applicable law in the potential winner’s country of residence) - title: > Up to 25 winners: paragraph: > - A Lenovo Smart Clock with the Google + A Lenovo Smart Clock with the Google Assistant (~$79.00 USD value)* (based on availability and applicable law in the potential winner’s country of residence) diff --git a/src/_data/clock/submission_requirements.yml b/src/_data/clock/submission_requirements.yml index a26a6c9c8cd..a1ac890fc60 100644 --- a/src/_data/clock/submission_requirements.yml +++ b/src/_data/clock/submission_requirements.yml @@ -7,11 +7,11 @@ - text: > The clock design should use landscape mode, with a 5:3 aspect ratio. - text: > - You may use Material Design icons. + You may use Material Design icons. - text: > All other assets, fonts, icons, images, and so on should be your own, or licensed under a - BSD-3, or - OFL license (for fonts). + BSD-3, or + OFL license (for fonts). - text: > Your clock should not: subItems: @@ -30,12 +30,12 @@ Submissions: subItems: - text: > - + Submit your final clock by January 20th, 11:59pm PST (GMT-8). - text: > - Your clock must be made public on GitHub under a - BSD-3 license (with assets under a BSD-3 or - OFL license, as appropriate) before February 5th, 2020. + Your clock must be made public on GitHub under a + BSD-3 license (with assets under a BSD-3 or + OFL license, as appropriate) before February 5th, 2020. Your repo can be private during the contest period. - text: > Specify on the submission form which platform (Android or iOS) you would like the judges to use when evaluating diff --git a/src/clock/index.html b/src/clock/index.html index 3d3ba2b4751..8a71f30bd31 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -155,7 +155,7 @@

    Here are the requirements, including some guidelines, for contest submissions. See the contest’s - + Official Rules for full details.

    @@ -191,7 +191,7 @@

    Full details and rules are provided in our - + Official Rules. Here’s a summary of some of the key points:

      From 2bbe4380ae691c3f558594738bdff3a444d10d0e Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Fri, 15 Nov 2019 12:07:42 -0500 Subject: [PATCH 74/83] Fix comments. --- src/_data/clock/faqs.yml | 12 ++++++------ src/_data/clock/getting_started_items.yml | 6 ++++-- src/_data/clock/prizes.yml | 12 ++++++------ 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/_data/clock/faqs.yml b/src/_data/clock/faqs.yml index 9e94415a3b3..9be562a054a 100644 --- a/src/_data/clock/faqs.yml +++ b/src/_data/clock/faqs.yml @@ -30,13 +30,13 @@ - title: What are the prizes? content: > 1 Grand prize winner receives: -

      A loaded Apple iMac Pro valued at approximately USD $10,000* (detailed specifications may vary based on availability - and applicable law in the potential winner’s country of residence).

      +

      A loaded Apple iMac Pro valued at ~$10,000 USD (detailed specifications may vary based on availability and + applicable law in the potential winner’s country of residence).

      4 Winners each receive: -

      A 10” Lenovo Smart Display with Google Assistant (~$249.00 USD value)* (based on availability and applicable law in - the potential winner’s country of residence).

      +

      A Lenovo 10" Smart Display with the Google Assistant valued at ~$249.00 USD (based on availability and applicable + law in the potential winner’s country of residence).

      Up to 25 Winners each receive: -

      A Lenovo Smart Clock with the Google Assistant (~$79.00 USD value)* (based on local availability and applicable law +

      A Lenovo Smart Clock with the Google Assistant valued at ~$79.00 USD (based on availability and applicable law in the potential winner’s country of residence).

      In addition, all participants who submit complete and valid entries will receive a digital certificate of completion when their code repository is made public by February 5th, 2020. Also, some submissions may be integrated @@ -143,7 +143,7 @@ - title: Speaking of code formatting, what are some good coding practices for Flutter? content: > - Check out Effective Dart. + Check out Effective Dart. (Note that the Flutter codebase has its own formatting guidelines and doesn't adhere to Effective Dart.) - title: Can a team of people submit a single clock? diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index 2e2b4f56245..b90e5dd81c6 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -7,9 +7,11 @@ cd <path-to-repo>/flutter_clock/<name>_clock subItems: - text: > - Sample clock 1: Basic analog clock. + Sample clock 1: + Basic analog clock. - text: > - Sample clock 2: Basic digital clock. + Sample clock 2: + Basic digital clock. - title: > Run the clock app in your IDE, or by using flutter run at the command line. diff --git a/src/_data/clock/prizes.yml b/src/_data/clock/prizes.yml index 98dfcfbc1b0..0ba938598f9 100644 --- a/src/_data/clock/prizes.yml +++ b/src/_data/clock/prizes.yml @@ -1,22 +1,22 @@ - title: > Grand prize: paragraph: > - A loaded Apple iMac Pro valued at - approximately USD $10,000* (detailed specifications may vary based on availability and applicable law in the potential + A loaded Apple iMac Pro + valued at ~$10,000 USD (detailed specifications may vary based on availability and applicable law in the potential winner’s country of residence) - title: > 4 winners: paragraph: > - A Lenovo 10" Smart Display with the - Google Assistant (~$249.00 USD value)* (based on availability and applicable law in the potential winner’s country - of residence) + A Lenovo 10" Smart Display + with the Google Assistant valued at ~$249.00 USD (based on availability and applicable law in the potential winner’s + country of residence) - title: > Up to 25 winners: paragraph: > A Lenovo Smart Clock with the Google - Assistant (~$79.00 USD value)* (based on availability and applicable law in the potential winner’s country of + Assistant valued at ~$79.00 USD (based on availability and applicable law in the potential winner’s country of residence) From b1827f734b0c1c61ccaa5db6dca40013eb5339af Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Fri, 15 Nov 2019 14:53:40 -0500 Subject: [PATCH 75/83] Fix comments --- src/_assets/css/_clock.scss | 4 ++-- src/_data/clock/prizes.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index be08c4ee14d..79c627ae26b 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -26,7 +26,7 @@ // Styles for section clock__hero &__hero { - background-color: $flutter-dark-blue-texture; + background-color: $clock-color-dark; color: $site-color-white; padding-bottom: 104px; position: relative; @@ -125,7 +125,7 @@ } &__texture { - background-position: right bottom 50vh, left top 100px; + background-position: right bottom 586px, left top 100px; background-size: initial; } } diff --git a/src/_data/clock/prizes.yml b/src/_data/clock/prizes.yml index 0ba938598f9..fb972a3d4ed 100644 --- a/src/_data/clock/prizes.yml +++ b/src/_data/clock/prizes.yml @@ -8,7 +8,7 @@ - title: > 4 winners: paragraph: > - A Lenovo 10" Smart Display + A Lenovo 10" Smart Display with the Google Assistant valued at ~$249.00 USD (based on availability and applicable law in the potential winner’s country of residence) From 924f4e8b324756c22f7cccb78a7489fba77a029f Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Fri, 15 Nov 2019 15:01:37 -0500 Subject: [PATCH 76/83] Design fixes for svgs positions --- src/_assets/css/_clock.scss | 25 +++++++++++++++++++------ src/clock/index.html | 10 ++++++---- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index be08c4ee14d..6a000e0f34a 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -83,14 +83,20 @@ } &__texture { - background-position: top 43px right -20px, bottom 74px right -20px, bottom -10px left 231px, top -40px center,top 30px left -20px; - background-size: 30%, 20%, 12%, 8%, 20%; + background-position: top 43px right -20px, bottom 74px right -20px, bottom -30px left 200px, top -40px center,top 30px left -20px; + background-size: 35%, 25%, 18%, 11%, 30%; } } @include media-breakpoint-up(xl) { &__texture { - background-size: 20%, 15%, 10%, 5%, 15%; + background-size: 30%, 22%, 15%, 8%, 25%; + } + } + + @media screen and (min-width: 1800px) { + &__texture { + background-size: 30%, 20%, 10%, 5%, 15%; } } } @@ -125,7 +131,7 @@ } &__texture { - background-position: right bottom 50vh, left top 100px; + background-position: top 520px right, left top 100px; background-size: initial; } } @@ -224,6 +230,7 @@ @include media-breakpoint-up(sm) { .heading { font-size: 24px; + line-height: 32px; } .card { @@ -242,6 +249,7 @@ .heading { font-size: 32px; + line-height: initial; margin: 0 auto 88px; } @@ -279,7 +287,11 @@ display: flex; flex-direction: column; height: 250px; - justify-content: space-evenly; + justify-content: space-around; + } + + .wtm-logo { + max-height: 35px; } @include media-breakpoint-up(sm) { @@ -287,10 +299,11 @@ .logos-container { flex-direction: row; height: auto; + justify-content: space-evenly; } .wtm-logo { - max-height: 35px; + max-width: 30%; } } diff --git a/src/clock/index.html b/src/clock/index.html index 8a71f30bd31..60617b0f1e9 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -4,6 +4,10 @@ show_banner: False body_class: clock --- +{% assign url_links = "&url=https://flutter.dev/clock" %} +{% assign hashtags = "hashtags=FlutterClock" %} +{% assign twitter_url = "https://twitter.com/intent/tweet?" | append: hashtags | append: url_links %} +{% assign window_options = "menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600" %}

      @@ -13,11 +17,9 @@

      Take the Flutter Clock challenge

      From ed75418d0d2ef0f6b10055b38ff3047d2466f738 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Fri, 15 Nov 2019 15:03:05 -0500 Subject: [PATCH 77/83] Minor fix for line height in wtm section heading --- src/_assets/css/_clock.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 3eeb8ecc3c0..eb600703e0a 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -192,6 +192,7 @@ .heading { color: $clock-color-dark; font-size: 20px; + line-height: 32px; margin: 0 auto 40px; max-width: 630px; text-align: center; @@ -230,7 +231,6 @@ @include media-breakpoint-up(sm) { .heading { font-size: 24px; - line-height: 32px; } .card { From 5d61e3f75ec00af4289a2fa187df64aaef28f919 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Fri, 15 Nov 2019 15:32:55 -0500 Subject: [PATCH 78/83] change hero background-color --- src/_assets/css/_clock.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index eb600703e0a..a522a478a13 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -51,7 +51,7 @@ } &__texture { - background-color: $flutter-dark-blue-texture; + background-color: $clock-color-dark; background-image: asset_url('clock/hero/hero-circle.svg'), asset_url('clock/hero/hero-clock.svg'), asset_url('clock/hero/hero-diamond.svg'), From 31d50896c15511765f52f053837c62dd013b86cb Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Fri, 15 Nov 2019 15:40:18 -0500 Subject: [PATCH 79/83] Icons size in cards fixed --- src/_assets/css/_clock.scss | 18 ++++++++++++------ src/clock/index.html | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index eb600703e0a..3a18df062c5 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -237,6 +237,12 @@ height: 20vw; width: 24%; } + + .entries__card-body { + .fas { + width: 41px; + } + } } @include media-breakpoint-up(lg) { @@ -264,13 +270,13 @@ font-size: 20px; margin-bottom: 50px; } - } - .fas { - bottom: 24px; - left: 24px; - position: absolute; - width: 48px; + .fas { + bottom: 24px; + left: 24px; + position: absolute; + width: 48px; + } } } } diff --git a/src/clock/index.html b/src/clock/index.html index 60617b0f1e9..0f7fe81c342 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -20,7 +20,7 @@

      Take the Flutter Clock challenge

      href="#" title="Share to Twitter" onclick="javascript:window.open(encodeURI('{{ twitter_url }}'), '', '{{ window_options }}');"> - Share #FlutterClock with friends + Share #FlutterClock with friends :)

      From 6701aaf6db7861f9936146cba9404dbd89171fb6 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Mon, 18 Nov 2019 09:03:28 -0500 Subject: [PATCH 80/83] Design fixes for wtm section --- src/_assets/css/_clock.scss | 15 ++++++++++++--- src/_data/clock/getting_started_items.yml | 4 ++-- src/clock/index.html | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 1981552233f..8a8692462c1 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -213,6 +213,7 @@ .entries__card-body { position: relative; + padding: 24px 16px; .paragraph { font-size: 16px; @@ -251,21 +252,29 @@ &_container { flex-wrap: initial; margin-bottom: 80px; + justify-content: center; } .heading { font-size: 32px; - line-height: initial; + line-height: 40px; margin: 0 auto 88px; } .card { - height: 185px; + height: 190px; margin-bottom: 0; - width: 185px; + width: 190px; + margin-right: 28px; + + &:last-of-type { + margin-right: 0; + } } .entries__card-body { + padding: 24px; + .paragraph { font-size: 20px; margin-bottom: 50px; diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index b90e5dd81c6..d802dc12753 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -7,10 +7,10 @@ cd <path-to-repo>/flutter_clock/<name>_clock subItems: - text: > - Sample clock 1: + Sample clock 1: Basic analog clock. - text: > - Sample clock 2: + Sample clock 2: Basic digital clock. - title: > diff --git a/src/clock/index.html b/src/clock/index.html index 0f7fe81c342..60617b0f1e9 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -20,7 +20,7 @@

      Take the Flutter Clock challenge

      href="#" title="Share to Twitter" onclick="javascript:window.open(encodeURI('{{ twitter_url }}'), '', '{{ window_options }}');"> - Share #FlutterClock with friends :) + Share #FlutterClock with friends

      From c704c12aaa6564bad6b0b93a52262ad23e4cd425 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Mon, 18 Nov 2019 09:13:45 -0500 Subject: [PATCH 81/83] SVG optimizations and PR files arrenged --- .firebaserc | 2 +- src/_assets/css/_clock-old.scss | 214 ------------------ src/_assets/image/clock/Flutter-logo.svg | 10 +- src/_assets/image/clock/hero/hero-circle.svg | 14 +- src/_assets/image/clock/hero/hero-clock.svg | 27 +-- src/_assets/image/clock/hero/hero-diamond.svg | 12 +- src/_assets/image/clock/hero/hero-dots.svg | 27 +-- src/_assets/image/clock/hero/hero-oval.svg | 13 +- 8 files changed, 7 insertions(+), 312 deletions(-) delete mode 100644 src/_assets/css/_clock-old.scss mode change 100755 => 100644 src/_assets/image/clock/hero/hero-circle.svg mode change 100755 => 100644 src/_assets/image/clock/hero/hero-clock.svg mode change 100755 => 100644 src/_assets/image/clock/hero/hero-diamond.svg mode change 100755 => 100644 src/_assets/image/clock/hero/hero-dots.svg mode change 100755 => 100644 src/_assets/image/clock/hero/hero-oval.svg diff --git a/.firebaserc b/.firebaserc index 9a4151f0aea..e428469277e 100644 --- a/.firebaserc +++ b/.firebaserc @@ -15,4 +15,4 @@ "brianegan": "brianegan-flutter-staging", "xster-staging": "flutter-website-staging-6f2ad" } -} +} \ No newline at end of file diff --git a/src/_assets/css/_clock-old.scss b/src/_assets/css/_clock-old.scss deleted file mode 100644 index bb3634a0c5a..00000000000 --- a/src/_assets/css/_clock-old.scss +++ /dev/null @@ -1,214 +0,0 @@ -.clock { - $vertical-line-color: #384753; - - background-color: $flutter-dark-blue-texture; - font-family: $site-font-family-alt; - - .center { - align-items: center; - display: flex; - flex-direction: column; - height: calc(100vh - 66px); - justify-content: center; - } - - .heading { - animation: clock-slide-in 1s .3s; - animation-fill-mode: both; - color: $site-color-white; - font-size: 18px; - margin: 0 0 24px; - text-align: center; - width: 100%; - - @include media-breakpoint-up(md) { - font-size: 32px; - margin: 0 0 22px; - } - - @include media-breakpoint-up(lg) { - font-size: 40px; - margin: 0 0 20px; - } - } - - .time-number { - animation: clock-slide-in 1s; - animation-fill-mode: both; - color: $site-color-primary; - display: flex; - font-size: 52px; - justify-content: center; - margin: 0; - text-align: center; - width: 100%; - z-index: 2; - - @include media-breakpoint-up(md) { - font-size: 110px; - } - - @include media-breakpoint-up(lg) { - font-size: 160px; - } - - @include media-breakpoint-up(xl) { - font-size: 180px; - } - - @include media-breakpoint-up(xxl) { - font-size: 230px; - } - } - - .digits_container { - display: inline-block; - width: 68px; - - @include media-breakpoint-up(md) { - width: 142px; - } - - @include media-breakpoint-up(lg) { - width: 200px; - } - - @include media-breakpoint-up(xl) { - width: 248px; - } - - @include media-breakpoint-up(xxl) { - width: 294px; - } - } - - .animations { - animation-name: clock-geometric-small-background; - animation-duration: 1.2s; - animation-fill-mode: both; - animation-timing-function: cubic-bezier(.87, 1.15, 1, .99); - background-image: asset_url('clock/left_rectangle.svg'), asset_url('clock/right_rectangle.svg'), asset_url('clock/oval.svg'); - background-repeat: no-repeat; - background-size: 181px 247px, 140px 121px, 280px 163px; - height: calc(100% - 66px); - overflow: hidden; - position: absolute; - top: 66px; - width: 100%; - z-index: -1; - - @include media-breakpoint-up(md) { - animation-name: clock-geometric-medium-background; - background-size: 400px 556px, 317px 258px, auto; - } - - @include media-breakpoint-up(lg) { - background-size: auto; - } - } - - .vertical-line { - animation-duration: 1s; - animation-fill-mode: both; - animation-name: clock-vertical-lines; - animation-timing-function: ease; - background-color: $vertical-line-color; - position: fixed; - top: 0; - width: 1px; - z-index: -1; - - &--first { - left: 4%; - } - - &--second { - animation-delay: .2s; - left: 27%; - } - - &--thrid { - animation-delay: .4s; - left: 50%; - } - - &--fourth { - animation-delay: .6s; - left: 73%; - } - - &--first, &--thrid { - display: none; - - @include media-breakpoint-up(lg) { - display: block; - } - } - } - - .share-twitter__paragraph { - animation: clock-slide-in 1s .6s; - animation-fill-mode: both; - color: $site-color-white; - font-size: 14px; - margin: 20px 0 0; - padding: 0 37px; - text-align: center; - width: 100%; - - @include media-breakpoint-up(md) { - font-size: 16px; - margin: 22px 0 0; - } - - @include media-breakpoint-up(lg) { - font-size: 20px; - margin: 24px 0 0; - } - } - - .learn-more__button { - display: block; - margin: 0 auto; - width: 120px; - } -} - -// animations -@keyframes clock-vertical-lines { - from { - height: 0; - } - to { - height: 100%; - } -} - -@keyframes clock-slide-in { - from { - transform: translateY(50px); - opacity: 0; - } - to { - transform: none; - opacity: 1; - } -} - -@keyframes clock-geometric-medium-background { - from { - background-position: top 150px left -270px, top right -488px, bottom -348px left -140px; - } - to { - background-position: top 150px left, top right, bottom left; - } -} - -@keyframes clock-geometric-small-background { - from { - background-position: bottom 90px left -144px, top right -140px, bottom -164px left -100px; - } - to { - background-position: bottom 90px left, top right, bottom left; - } -} diff --git a/src/_assets/image/clock/Flutter-logo.svg b/src/_assets/image/clock/Flutter-logo.svg index 73bdb1ec0fd..16b21690eaa 100644 --- a/src/_assets/image/clock/Flutter-logo.svg +++ b/src/_assets/image/clock/Flutter-logo.svg @@ -1,9 +1 @@ - - - - - - - - - + \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-circle.svg b/src/_assets/image/clock/hero/hero-circle.svg old mode 100755 new mode 100644 index 09af6844256..af1476254b7 --- a/src/_assets/image/clock/hero/hero-circle.svg +++ b/src/_assets/image/clock/hero/hero-circle.svg @@ -1,13 +1 @@ - - - - 3 - Created with Sketch. - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-clock.svg b/src/_assets/image/clock/hero/hero-clock.svg old mode 100755 new mode 100644 index 0b6ac052b98..3f2b6bfb715 --- a/src/_assets/image/clock/hero/hero-clock.svg +++ b/src/_assets/image/clock/hero/hero-clock.svg @@ -1,26 +1 @@ - - - - Clock 2 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-diamond.svg b/src/_assets/image/clock/hero/hero-diamond.svg old mode 100755 new mode 100644 index afaeceab906..3c428dbe6f3 --- a/src/_assets/image/clock/hero/hero-diamond.svg +++ b/src/_assets/image/clock/hero/hero-diamond.svg @@ -1,11 +1 @@ - - - - 4 - Created with Sketch. - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-dots.svg b/src/_assets/image/clock/hero/hero-dots.svg old mode 100755 new mode 100644 index d5eb6f5fe3b..f33192e1fe3 --- a/src/_assets/image/clock/hero/hero-dots.svg +++ b/src/_assets/image/clock/hero/hero-dots.svg @@ -1,26 +1 @@ - - - - 1 - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/_assets/image/clock/hero/hero-oval.svg b/src/_assets/image/clock/hero/hero-oval.svg old mode 100755 new mode 100644 index d9cdbdf6ce8..13ae243f2cd --- a/src/_assets/image/clock/hero/hero-oval.svg +++ b/src/_assets/image/clock/hero/hero-oval.svg @@ -1,12 +1 @@ - - - - Clock 1 - Created with Sketch. - - - - - - - \ No newline at end of file + \ No newline at end of file From a23c66a8bafaf35b56bb953068010dd7b937ea53 Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Mon, 18 Nov 2019 09:26:17 -0500 Subject: [PATCH 82/83] Update copy. --- src/_data/clock/getting_started_items.yml | 4 ++-- src/_data/clock/submission_requirements.yml | 2 +- src/clock/index.html | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/_data/clock/getting_started_items.yml b/src/_data/clock/getting_started_items.yml index d802dc12753..288495875e6 100644 --- a/src/_data/clock/getting_started_items.yml +++ b/src/_data/clock/getting_started_items.yml @@ -43,7 +43,7 @@ <name>_clock/android, and <name>_clock/web (if present) folders. - text: > - Run flutter clean. + Run flutter clean. - text: > In your <path-to-repo>/flutter_clock folder, zip these two folders: subItems: @@ -65,7 +65,7 @@ - text: > cd <name>_clock - text: > - flutter create + flutter create . - text: > flutter run (on Android or iOS in landscape) - title: > diff --git a/src/_data/clock/submission_requirements.yml b/src/_data/clock/submission_requirements.yml index a1ac890fc60..ded76864c1e 100644 --- a/src/_data/clock/submission_requirements.yml +++ b/src/_data/clock/submission_requirements.yml @@ -41,4 +41,4 @@ Specify on the submission form which platform (Android or iOS) you would like the judges to use when evaluating your submission. Judges will not be testing on web. - text: > - Please also submit an MP4 video (of less than 30 seconds) of your clock and a screenshot via the form. + Please also submit a video (of less than 30 seconds) of your clock and a screenshot via the form. diff --git a/src/clock/index.html b/src/clock/index.html index 60617b0f1e9..83786a73701 100644 --- a/src/clock/index.html +++ b/src/clock/index.html @@ -108,7 +108,9 @@

      {{prize.title}}

      Getting Started

      -

      Use the following instructions to get started:

      +

      + Use the following instructions to get started. Also, make sure to familiarize yourself with the submission requirements and contest rules. +

        {% for item in site.data.clock.getting_started_items %}
      1. From aa6aeb84ca1b00787b992e3296ea0a5157ffe7c5 Mon Sep 17 00:00:00 2001 From: Omar Gonzalez Date: Mon, 18 Nov 2019 10:38:22 -0500 Subject: [PATCH 83/83] Design fix for cards sizes in mobile --- src/_assets/css/_clock.scss | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/_assets/css/_clock.scss b/src/_assets/css/_clock.scss index 8a8692462c1..f3239e32deb 100644 --- a/src/_assets/css/_clock.scss +++ b/src/_assets/css/_clock.scss @@ -235,8 +235,8 @@ } .card { - height: 20vw; - width: 24%; + height: 135px; + width: 22%; } .entries__card-body { @@ -319,6 +319,14 @@ .wtm-logo { max-width: 30%; + + &:first-of-type { + max-height: 30px; + } + + &:last-of-type { + max-height: 20px; + } } } @@ -331,6 +339,14 @@ .wtm-logo { max-height: initial; + + &:first-of-type { + max-height: 40px; + } + + &:last-of-type { + max-height: initial; + } } } }