From 77cdbb4774355399272fafa1f6657e6355b8d81b Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sun, 4 Oct 2020 00:59:35 -0400 Subject: [PATCH] Header+Footer: further implement new spec --- src/components/App/App.css | 52 +++++ src/components/Footer/Footer.css | 272 +++++++++++---------------- src/components/Footer/Footer.tsx | 197 +++++++++++-------- src/components/Header/Header.css | 47 ----- src/components/IconGrid/IconGrid.css | 4 +- src/lib/icons.ts | 13 +- 6 files changed, 293 insertions(+), 292 deletions(-) diff --git a/src/components/App/App.css b/src/components/App/App.css index c677734..b80c244 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -59,6 +59,7 @@ button.main-button { transition: all 0.2s ease; cursor: pointer; user-select: none; + margin: 0 24px 24px 0; } button.main-button:active { @@ -71,10 +72,20 @@ button.main-button:focus { outline: none; } +/* button.main-button:not(:last-child) { + margin: 0 24px 24px 0; +} */ + button.main-button svg { margin-right: 12px; } +.button-container { + display: flex; + flex-wrap: wrap; + /* gap: 24px; */ +} + a.main-link { text-decoration: none; position: relative; @@ -94,3 +105,44 @@ a.main-link:after { a.main-link:hover:after { width: 0%; } + +.links { + display: flex; + flex-flow: column wrap; + align-content: flex-start; + align-items: flex-start; + justify-content: center; + column-gap: 72px; + margin: 32px 0 64px; + max-height: 144px; +} + +.links > div { + margin: 0 0 24px 0; + display: flex; + align-items: center; +} + +.links svg { + margin-right: 12px; +} + +a.nav-link { + text-decoration: none; + position: relative; + color: black; +} + +a.nav-link:after { + content: ""; + position: absolute; + bottom: -2px; + left: 0; + width: 0%; + border-bottom: 1px solid black; + transition: 0.2s; +} + +a.nav-link:hover:after { + width: 100%; +} diff --git a/src/components/Footer/Footer.css b/src/components/Footer/Footer.css index cfb1fec..36ed79f 100644 --- a/src/components/Footer/Footer.css +++ b/src/components/Footer/Footer.css @@ -1,14 +1,5 @@ footer { - width: 100%; - position: relative; background-color: #925bff; - overflow: hidden; -} - -.container { - width: 100%; - max-width: 1280px; - margin: auto; } #back-to-top-button { @@ -18,189 +9,146 @@ footer { border-radius: 50%; } -.outro-content { - /* pointer-events: none; */ - z-index: 2; +#back-to-top-button img { + pointer-events: none; } -@media screen and (max-width: 759px) { - .outro h2 { - font-size: 28px; - line-height: 38px; - margin-bottom: 32px; +.container { + position: relative; + width: 100%; + max-width: 1240px; + margin: auto; +} + +.outro { + position: relative; + max-width: 666px; + margin: 0 8% 0; + padding-top: 72px; + /* overflow: hidden; */ +} + +.outro p { + font-size: 28px; + line-height: 40px; + margin: 0 0 32px; +} + +footer .links { + margin: 56px 0 48px; +} + +.fine-print { + position: relative; + margin: 72px 0 0; + padding-bottom: 32px; + overflow: hidden; +} + +.fine-print p { + font-size: 16px; + line-height: 24px; +} + +.illustrations-footer { + display: none; + user-select: none; + pointer-events: none; +} + +@media screen and (max-width: 719px) { + #back-to-top-button { + position: sticky; + top: calc(100% - 64px); + float: right; + display: flex; + align-items: center; + justify-content: center; + width: 48px; + height: 48px; + padding: 0; + margin: 16px; + z-index: 1; } - .fine-print { - margin: 80px 0 0; - font-size: 16px; - line-height: 24px; + #back-to-top-button img { + width: 24px; + height: 24px; + } + + footer .links { + margin: 0 0 64px; + } + + #command { + display: none; } #marker-green { - position: absolute; - top: 0; - left: 0; - transform: translate(324px, 610px); + display: none; } - - #phone { - position: absolute; - top: 0; - left: 0; - transform: translate(-140px, 570px); + + .illustrations-footer { + max-width: 100%; + height: 440px; + display: flex; + justify-content: center; + overflow: hidden; } } -@media screen and (min-width: 760px) and (max-width: 1023px) { - .outro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; - } - - .fine-print { - margin: 80px 0 0; - font-size: 20px; - line-height: 30px; - } - - #marker-green { - position: absolute; - top: 0; - left: 0; - transform: translate(544px, 500px); - } - - #phone { - position: absolute; - top: 0; - left: 0; - transform: translate(80px, 480px); - } -} - -@media screen and (max-width: 1023px) { +@media screen and (min-width: 720px) { .outro { - position: relative; - margin: 292px 10% 292px; + margin: 0 auto; } - #back-to-top { + .fine-print { + margin-top: 96px; + padding-bottom: 96px; + } + + #back-to-top-button { position: absolute; - top: 0; - left: 0; - transform: translate(-48px, -196px); + left: 70px; + top: -56px; + } + + #marker-green { + position: absolute; + left: 678px; + top: -218px; } #command { position: absolute; - top: 0; - left: 0; - transform: translate(640px, -228px); + right: -16px; + top: 144px; } } - - -@media screen and (min-width: 1024px) and (max-width: 1279px) { - footer { - height: 920px; - } - +@media screen and (min-width: 1239px) { .outro { - position: relative; - width: 666px; - margin: 160px auto 324px; + margin-left: 462px; } - .outro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; - } - - .fine-print { - margin: 96px 0 0; - font-size: 20px; - line-height: 30px; - } - - #back-to-top { + #back-to-top-button { position: absolute; - top: 0; - left: 0; - transform: translate(-212px, 0); - } - - #marker-green { - position: absolute; - top: 0; - left: 0; - transform: translate(384px, 512px); - } - - #phone { - position: absolute; - top: 0; - left: 0; - transform: translate(-80px, 476px); + left: 190px; + top: 276px; } #command { position: absolute; - top: 0; - left: 0; - transform: translate(706px, 360px); + left: 732px; + top: 512px; } -} -@media screen and (min-width: 1280px) { - .outro { - width: 660px; - position: relative; - margin: 160px 0 120px 468px; + .illustrations-footer { + display: initial; + position: absolute; + left: -240px; + top: 656px; + height: 584px; + overflow: hidden; } - - .outro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; - } - - .fine-print { - margin: 96px 0 0; - font-size: 20px; - line-height: 30px; - } - - #back-to-top { - position: absolute; - top: 0; - left: 0; - transform: translate(-320px, -12px); - } - - #marker-green { - position: absolute; - top: 0; - left: 0; - /* x and y-translate is wrong in spec? */ - transform: translate(-208px, 270px); - } - - #phone { - position: absolute; - top: 0; - left: 0; - /* y-translate is wrong in spec? */ - transform: translate(-684px, 236px); - } - - #command { - position: absolute; - top: 0; - left: 0; - /* y-translate is wrong in spec? */ - transform: translate(744px, 352px); - } -} +} \ No newline at end of file diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 1574349..e954303 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,62 +1,116 @@ -import React, { useState } from "react"; -import { motion } from "framer-motion"; -import { Heart } from "phosphor-react"; +import React from "react"; +import { ArrowElbowDownRight, Coffee, Heart } from "phosphor-react"; import uArrowUpLeft from "../../assets/u-arrow-up-left.svg"; import markerGreen from "../../assets/marker-green.svg"; -import phone from "../../assets/phone.svg"; -import phoneSpec from "../../assets/phone-spec.svg"; +import postIt from "../../assets/footer-mobile.svg"; import commandKey from "../../assets/command-key.svg"; import commandKeySpec from "../../assets/command-key-spec.svg"; import "./Footer.css"; type FooterProps = {}; -const variants = { - hidden: { opacity: 0, transition: { duration: 0.2 } }, - visible: { opacity: 1, transition: { duration: 0.2 } }, -}; - const Footer: React.FC = () => { - const [phoneHovered, setPhoneHovered] = useState(false); - return (
+
- {phoneHovered && ( - - )} - setPhoneHovered(true)} - onHoverEnd={() => setPhoneHovered(false)} - src={phone} + + -
-

- Phosphor is free and open source, licensed under{" "} +
+
+ - GNU GPL-3.0 + Download all - . If you enjoy these icons, please support us with a donation. -

+
+ + + + + +
+

+ We designed the icon library we always wanted to use. Easy to pick + up and plug in. Truly consistent in style and scale. Flexible to + multiple sizes and weights. Reserved enough to be multi-purpose, but + a little quirky, too. +

+

+ We're thankful for the open-source tools we've benefited from and + this is our small contribution towards a collaborative digital + community. +

+

+ Phosphor is licensed under{" "} + + GNU GPL-3.0 + + , free to use without attribution. If you enjoy these icons, please + support us with a donation. +

+
-

- Copyright © 2020 Phosphor Icons -
- Designed by{" "} + +

+
+

+ Copyright © 2020 Phosphor Icons. Phosphor Icons is designed by{" "} Helena Zhang {" "} - + built by{" "} + and built by{" "} - Tobias Fried + Toby Fried {" "} - 👩🏻‍💻👨‍💻🐈 + 🙇🏻‍♀️👨‍💻🐈 -
- Contact us at{" "} + . Contact us at{" "} hello@phosphoricons.com -

-

- See also:{" "} + . Check out our sister project:{" "} Phosphor for Android -

-

- Type set in{" "} + . Type set in{" "} Manrope - + {" "} + by Mikhail Sharanda.

+
-
- -
- - - +
+
+
diff --git a/src/components/Header/Header.css b/src/components/Header/Header.css index ad589c5..489f51c 100644 --- a/src/components/Header/Header.css +++ b/src/components/Header/Header.css @@ -45,53 +45,6 @@ header { opacity: 0; } -.button-container { - display: flex; - flex-wrap: wrap; - gap: 24px; -} - -.links { - display: flex; - flex-flow: column wrap; - align-content: flex-start; - align-items: flex-start; - justify-content: center; - column-gap: 72px; - margin: 56px 0 64px; - max-height: 144px; -} - -.links > div { - margin: 0 0 24px 0; - display: flex; - align-items: center; -} - -.links svg { - margin-right: 12px; -} - -a.nav-link { - text-decoration: none; - position: relative; - color: black; -} - -a.nav-link:after { - content: ""; - position: absolute; - bottom: -2px; - left: 0; - width: 0%; - border-bottom: 1px solid black; - transition: 0.2s; -} - -a.nav-link:hover:after { - width: 100%; -} - #paperclips-three { display: none; } diff --git a/src/components/IconGrid/IconGrid.css b/src/components/IconGrid/IconGrid.css index c431e22..077b34c 100644 --- a/src/components/IconGrid/IconGrid.css +++ b/src/components/IconGrid/IconGrid.css @@ -1,5 +1,5 @@ .grid-container { - padding: 0px 16px 4px; + padding: 32px 16px; min-height: 80vh; } @@ -171,5 +171,5 @@ .beacon { position: relative; - top: -64px; + top: -96px; } diff --git a/src/lib/icons.ts b/src/lib/icons.ts index 1b8b065..89c8077 100644 --- a/src/lib/icons.ts +++ b/src/lib/icons.ts @@ -2629,7 +2629,7 @@ export const icons: ReadonlyArray = [ Icon: Icon.GlobeHemisphereEast, }, { - name: "globe-hemispehere-west", + name: "globe-hemisphere-west", categories: [IconCategory.MAP], tags: [ "world", @@ -4077,7 +4077,16 @@ export const icons: ReadonlyArray = [ IconCategory.DEVELOPMENT, IconCategory.OTHER, ], - tags: ["packages", "bundles", "library", "libraries", "shipping"], + tags: [ + "packages", + "delivery", + "mail", + "postal service", + "bundles", + "library", + "libraries", + "shipping", + ], Icon: Icon.Package, }, {