From c010e3ab367f88c46b32c900aed763bb6734ad2e Mon Sep 17 00:00:00 2001 From: Jerome Cukier Date: Mon, 2 Oct 2017 10:13:13 -0700 Subject: [PATCH] Typography refresh (#26) * Typography last refresh with logo and badges * sight touch up of descriptions --- src/components/Badge.js | 5 +++ src/components/Home.js | 9 +++- src/mdRoutes.js | 11 +++-- src/styles/_index.scss | 85 ++++++++++++++++++++++++++----------- static/images/vis-logo.png | Bin 0 -> 13576 bytes 5 files changed, 80 insertions(+), 30 deletions(-) create mode 100644 src/components/Badge.js create mode 100644 static/images/vis-logo.png diff --git a/src/components/Badge.js b/src/components/Badge.js new file mode 100644 index 00000000..d9759f53 --- /dev/null +++ b/src/components/Badge.js @@ -0,0 +1,5 @@ +import React from 'react'; + +export default function Bagdge({tag, key}) { + return (
{tag}
); +} diff --git a/src/components/Home.js b/src/components/Home.js index d8bcad4f..ce03fb16 100644 --- a/src/components/Home.js +++ b/src/components/Home.js @@ -1,13 +1,14 @@ import React from 'react' import Footer from 'components/Footer' - +import Badge from './Badge.js'; import lessons from 'mdRoutes' function Home() { return (
+ vis-logo

Vis Academy

Tutorials and classes prepared by the Uber visualization team

@@ -18,7 +19,9 @@ function Home() { {d.name}

{d.name}

{d.desc}

- {'GET STARTED!'} +
+ {(d.badges || []).map((d, i) => Badge({tag: d, key: i}))} +
))} @@ -31,3 +34,5 @@ function Home() { } export default Home + +// {'GET STARTED!'} \ No newline at end of file diff --git a/src/mdRoutes.js b/src/mdRoutes.js index 98b47515..3714c5dc 100644 --- a/src/mdRoutes.js +++ b/src/mdRoutes.js @@ -76,7 +76,8 @@ export default [{ }, { name: 'Building a Geospatial App', desc: 'Learn how to create maps, layer data on top of them and draw charts with the Uber vis libraries.', - image: 'images/geospatial-app/geospatial-app.png', + image: 'images/geospatial-app/geospatial-app.png', + badges: ['react-vis', 'react-map-gl', 'deck.gl'], path: '/building-a-geospatial-app', data: [ { @@ -141,8 +142,9 @@ export default [{ ] }, { name: 'Building a Graph Vis', - desc: 'Learn how to create a graph visualization with d3-force layout.', - image: 'images/graph-vis/cover.png', + desc: 'Learn how to create a graph visualization in webGL, with d3-force layout.', + image: 'images/graph-vis/cover.png', + badges: ['deck.gl'], path: '/graph-vis', data: [ { @@ -169,7 +171,8 @@ export default [{ }, { name: 'Custom Layers', desc: 'Advanced topic: learn how to create your own deck.gl layers.', - image: 'images/custom-layers/cover.png', + image: 'images/custom-layers/cover.png', + badges: ['deck.gl'], path: '/custom-layers', data: [ { diff --git a/src/styles/_index.scss b/src/styles/_index.scss index 682594bb..b6161ba4 100644 --- a/src/styles/_index.scss +++ b/src/styles/_index.scss @@ -1,47 +1,67 @@ @import "~react-vis/dist/main.scss"; @import "./_variables.scss"; -.Home { - background-color: #E5E5E4; - +.title { + height: 300px; + width: 100%; + margin: 6em auto 1em; + max-width: 72rem; + img { + position: absolute; + z-index: -1; + } + h1, p { + margin-left: 213px; + } h1 { - font-size: 6em; - font-weight: 400; + font-size: 2em; + font-weight: 600; } p { - font-size: 1.6em; - line-height: 1.5; + font-size: 4em; + font-weight: 400; } +} - h3 { - font-size: 1.8em; - } +.badges { + position: absolute; + right: 1rem; + bottom: 1rem; } -.title { - width: 100%; - text-align: center; - * { - margin: 1em auto; - max-width: 600px; - } - p { - font-size: 3em; +.badge { + border: 1px solid #979797; + border-radius: 4px; + display: inline-block; + font-size: calc(5em / 9); + padding: 0 5px; + margin: 0 5px 0 0; + line-height: 2em; + text-transform: uppercase; + transition: color 0.5s, border-color 0.5s, background 0.5s; + &:hover { + background: white; + color: $primary !important; } } .lesson-card { background-color: white; color: #494949; - + font-size: 1.5em; width: 20rem; max-width: 80vw; height: 30rem; margin: 2rem; padding: 1.5rem 1rem 1rem; + position: relative; box-shadow: 0 0 5px rgba(black, 0.2); transition: background-color 250ms, box-shadow 0.3s, color 250ms, transform 250ms; + h3 { + font-size: 1.2em; + } + .btn { transition: color 250ms ease-in; padding: 0.5rem 2rem; @@ -61,6 +81,10 @@ .btn { color: white; } + .badge { + color: white; + border-color: white; + } } } @@ -176,14 +200,27 @@ ul.insert { @media screen and (max-width: $mobile) { .Home { - h1 { - font-size: 3em; - } .title { + margin: 2rem auto; + h1 { + margin: 1rem 1rem 1rem 2rem ; + } + img { + height: 100px; + } p { - margin: 1em auto; + margin: 1rem 1rem 1rem 2rem ; + font-size: 1em; max-width: 80%; } + height: 100px; + } + .lesson-card { + margin: 1rem 2rem; + max-width: none; + img { + width: 50%; + } } } } diff --git a/static/images/vis-logo.png b/static/images/vis-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e969482fbb1397073bc2e64e53e038679fff79d3 GIT binary patch literal 13576 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 TQ4{vBO*oordaCuxwo(5BzIimg literal 0 HcmV?d00001