Links: extract external navigation links component

The Header and Footer shared some duplicated code related to external
links. We moved the markup and CSS into a separate Links component to
DRY it up.

We currently apply a 'line-through' style to the Figma links, since they
are not yet implemented. This is a visual treatment only an needs fixed
before production release!
This commit is contained in:
rektdeckard
2020-10-10 16:03:26 -04:00
parent 413aa24d3b
commit 1a2c3ef1de
5 changed files with 128 additions and 187 deletions

View File

@@ -113,45 +113,3 @@ a.main-link:after {
a.main-link:hover:after { a.main-link:hover:after {
width: 0%; width: 0%;
} }
.links {
display: flex;
flex-flow: column wrap;
align-content: flex-start;
align-items: flex-start;
justify-content: center;
/* column-gap: 72px; */
/* -webkit-column-gap: 72px; */
margin: 32px 0 64px;
max-height: 144px;
}
.links > div {
margin: 0 72px 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%;
}

View File

@@ -1,12 +1,10 @@
import React from "react"; import React from "react";
import { ArrowElbowDownRight, Coffee, Heart } from "phosphor-react"; import { Coffee, Heart } from "phosphor-react";
import { OutboundLink } from "react-ga";
import uArrowUpLeft from "../../assets/u-arrow-up-left.svg"; import uArrowUpLeft from "../../assets/u-arrow-up-left.svg";
import markerGreen from "../../assets/marker-green.svg"; import markerGreen from "../../assets/marker-green.svg";
import postIt from "../../assets/footer-mobile.svg"; import postIt from "../../assets/footer-mobile.svg";
// import commandKey from "../../assets/command-key.svg"; import Links from "../Links/Links";
// import commandKeySpec from "../../assets/command-key-spec.svg";
import "./Footer.css"; import "./Footer.css";
type FooterProps = {}; type FooterProps = {};
@@ -35,73 +33,7 @@ const Footer: React.FC<FooterProps> = () => {
src={commandKey} src={commandKey}
alt="" alt=""
/> */} /> */}
<div className="links"> <Links />
<div>
<ArrowElbowDownRight size={24} />
<OutboundLink
className="nav-link"
to="https://phosphoricons.com/assets/phosphor-icons.zip"
eventLabel="Download all"
download
type="application/zip"
>
Download all
</OutboundLink>
</div>
<div>
<ArrowElbowDownRight size={24} />
<OutboundLink
className="nav-link"
to="#"
eventLabel="Figma library"
>
Figma library
</OutboundLink>
</div>
<div>
<ArrowElbowDownRight size={24} />
<OutboundLink
className="nav-link"
to="#"
eventLabel="Figma plugin"
>
Figma plugin
</OutboundLink>
</div>
<div>
<ArrowElbowDownRight size={24} />
<a
className="nav-link"
href="https://github.com/phosphor-icons/phosphor-web/issues"
>
Request an icon
</a>
</div>
<div>
<ArrowElbowDownRight size={24} />
<span>
<a className="nav-link" href="https://paypal.me/minoraxis">
Donate on PayPal
</a>
{" / "}
<a
className="nav-link"
href="https://patreon.com/phosphoricons"
>
Patreon
</a>
</span>
</div>
<div>
<ArrowElbowDownRight size={24} />
<a
className="nav-link"
href="https://github.com/phosphor-icons/phosphor-web"
>
Github
</a>
</div>
</div>
<p> <p>
We designed the icon library we always wanted to use. Easy to pick 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 up and plug in. Truly consistent in style and scale. Flexible to

View File

@@ -1,12 +1,6 @@
import React from "react"; import React from "react";
import { import { ArrowCircleUpRight, ArrowCircleDown } from "phosphor-react";
ArrowCircleUpRight,
ArrowCircleDown,
ArrowElbowDownRight,
} from "phosphor-react";
import { OutboundLink } from "react-ga";
import "./Header.css";
import markerPurple from "../../assets/marker-purple.svg"; import markerPurple from "../../assets/marker-purple.svg";
import paperclips from "../../assets/paperclips-header-mobile.svg"; import paperclips from "../../assets/paperclips-header-mobile.svg";
import paperclipsThree from "../../assets/paperclips-header.svg"; import paperclipsThree from "../../assets/paperclips-header.svg";
@@ -22,6 +16,8 @@ import receipt from "../../assets/receipt.svg";
import receiptSpec from "../../assets/receipt-spec.svg"; import receiptSpec from "../../assets/receipt-spec.svg";
import calculator from "../../assets/calculator.svg"; import calculator from "../../assets/calculator.svg";
import calculatorSpec from "../../assets/calculator-spec.svg"; import calculatorSpec from "../../assets/calculator-spec.svg";
import Links from "../Links/Links";
import "./Header.css";
type HeaderProps = {}; type HeaderProps = {};
@@ -74,73 +70,7 @@ const Header: React.FC<HeaderProps> = () => {
Explore icons Explore icons
</button> </button>
</div> </div>
<div className="links"> <Links />
<div>
<ArrowElbowDownRight size={24} />
<OutboundLink
className="nav-link"
to="https://phosphoricons.com/assets/phosphor-icons.zip"
eventLabel="Download all"
download
type="application/zip"
>
Download all
</OutboundLink>
</div>
<div>
<ArrowElbowDownRight size={24} />
<OutboundLink
className="nav-link"
to="#"
eventLabel="Figma library"
>
Figma library
</OutboundLink>
</div>
<div>
<ArrowElbowDownRight size={24} />
<OutboundLink
className="nav-link"
to="#"
eventLabel="Figma plugin"
>
Figma plugin
</OutboundLink>
</div>
<div>
<ArrowElbowDownRight size={24} />
<a
className="nav-link"
href="https://github.com/phosphor-icons/phosphor-web/issues"
>
Request an icon
</a>
</div>
<div>
<ArrowElbowDownRight size={24} />
<span>
<a className="nav-link" href="https://paypal.me/minoraxis">
Donate on PayPal
</a>
{" / "}
<a
className="nav-link"
href="https://patreon.com/phosphoricons"
>
Patreon
</a>
</span>
</div>
<div>
<ArrowElbowDownRight size={24} />
<a
className="nav-link"
href="https://github.com/phosphor-icons/phosphor-web"
>
Github
</a>
</div>
</div>
</div> </div>
<div className="illustrations-bottom"> <div className="illustrations-bottom">
<img id="cutting-mat" src={cuttingMatSpec} alt="" /> <img id="cutting-mat" src={cuttingMatSpec} alt="" />

View File

@@ -0,0 +1,41 @@
.links {
display: flex;
flex-flow: column wrap;
align-content: flex-start;
align-items: flex-start;
justify-content: center;
/* column-gap: 72px; */
/* -webkit-column-gap: 72px; */
margin: 32px 0 64px;
max-height: 144px;
}
.links > div {
margin: 0 72px 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%;
}

View File

@@ -0,0 +1,80 @@
import React from "react";
import { OutboundLink } from "react-ga";
import { ArrowElbowDownRight } from "phosphor-react";
import "./Links.css";
interface LinksProps {}
const Links: React.FC<LinksProps> = () => {
return (
<div className="links">
<div>
<ArrowElbowDownRight size={24} />
<OutboundLink
className="nav-link"
to="https://phosphoricons.com/assets/phosphor-icons.zip"
eventLabel="Download all"
download
type="application/zip"
>
Download all
</OutboundLink>
</div>
<div>
<ArrowElbowDownRight size={24} />
<OutboundLink
className="nav-link"
to="#"
eventLabel="Figma library"
style={{ textDecoration: "line-through" }}
>
Figma library
</OutboundLink>
</div>
<div>
<ArrowElbowDownRight size={24} />
<OutboundLink
className="nav-link"
to="#"
eventLabel="Figma plugin"
style={{ textDecoration: "line-through" }}
>
Figma plugin
</OutboundLink>
</div>
<div>
<ArrowElbowDownRight size={24} />
<a
className="nav-link"
href="https://github.com/phosphor-icons/phosphor-web/issues"
>
Request an icon
</a>
</div>
<div>
<ArrowElbowDownRight size={24} />
<span>
<a className="nav-link" href="https://paypal.me/minoraxis">
Donate on PayPal
</a>
{" / "}
<a className="nav-link" href="https://patreon.com/phosphoricons">
Patreon
</a>
</span>
</div>
<div>
<ArrowElbowDownRight size={24} />
<a
className="nav-link"
href="https://github.com/phosphor-icons/phosphor-web"
>
Github
</a>
</div>
</div>
);
};
export default Links;