Styles for letter index

This commit is contained in:
Tom Raithel
2017-02-12 21:39:35 +01:00
parent 7ac1e97a7d
commit d96380a57f
13 changed files with 109 additions and 12 deletions

View File

@@ -32,6 +32,7 @@
"postcss-easy-import": "2.0.0", "postcss-easy-import": "2.0.0",
"postcss-nested": "1.0.0", "postcss-nested": "1.0.0",
"pug": "2.0.0-beta9", "pug": "2.0.0-beta9",
"vue": "2.1.10",
"walk": "2.3.9", "walk": "2.3.9",
"webpack": "2.2.0" "webpack": "2.2.0"
} }

View File

@@ -1,12 +1,43 @@
extends ../templates/default-page.pug extends ../templates/default-page.pug
block vars block vars
- var noLogo=true
- var title='Technologies Overview' - var title='Technologies Overview'
block content block content
.headline-group .headline-group
.hero-headline .hero-headline
| Technologies Overview | Technologies Overview
div.item-index .filter
each items, letter in groupByFirstLetter(radar) .nav
.item-index__letter= letter .nav__item
a.badge.badge--big.badge--neutral(href='#') all
each items, ringName in groupByRing(radar)
.nav__item
a.badge.badge--big.badge--empty(href='#')= ringName
div.letter-index
each items, letter in groupByFirstLetter(radar)
.letter-index__group
.letter-index__letter= letter
.letter-index__items
.item-list
.item-list__list
each item in items
a.item.item--no-leading-border.item--no-trailing-border(href=`/${item.quadrant}/${item.name}.html`)
.split.split--align-top
.split__left
.item__title
= item.attributes.title
if item.isNew
= ' '
span.is-new new
if item.attributes.info
.item__info= item.attributes.info
.split__right
.nav
.nav__item
= translate(item.quadrant)
.nav__item
span(class=`badge badge--${item.attributes.ring}`)
= item.attributes.ring

View File

@@ -10,6 +10,7 @@
--color-orange: #FAA03D; --color-orange: #FAA03D;
--color-blue: #40A7D1; --color-blue: #40A7D1;
--color-marine: #688190; --color-marine: #688190;
--color-red: #F1235A;
--color-brand: #F59134; --color-brand: #F59134;
} }

View File

@@ -1,6 +1,7 @@
.badge { .badge {
color: var(--color-white); color: var(--color-white);
display: inline-block; display: inline-block;
box-sizing: border-box;
padding: 0 15px; padding: 0 15px;
text-transform: uppercase; text-transform: uppercase;
border-radius: 13px; border-radius: 13px;
@@ -8,6 +9,8 @@
line-height: 25px; line-height: 25px;
height: 25px; height: 25px;
overflow: hidden; overflow: hidden;
text-decoration: none;
border: 1px solid var(--color-gray-normal);
&--big { &--big {
border-radius: 15px; border-radius: 15px;
@@ -17,17 +20,25 @@
padding: 0 20px; padding: 0 20px;
} }
&--neutral {
background: var(--color-gray-normal);
border-color: var(--color-gray-normal);
}
&--adopt { &--adopt {
background: var(--color-green); background: var(--color-green);
border-color: var(--color-green);
} }
&--trial { &--trial {
background: var(--color-orange); background: var(--color-orange);
border-color: var(--color-orange);
} }
&--assess { &--assess {
background: var(--color-blue); background: var(--color-blue);
border-color: var(--color-blue);
} }
&--hold { &--hold {
background: var(--color-marine); background: var(--color-marine);
border-color: var(--color-marine);
} }
} }

View File

@@ -0,0 +1,3 @@
.filter {
margin-bottom: 40px;
}

View File

@@ -0,0 +1,10 @@
.is-new {
font-size: 9px;
background: var(--color-red);
display: inline-block;
padding: 3px 8px;
border-radius: 10px;
position: relative;
vertical-align: top;
margin-top: -2px;
}

View File

@@ -4,6 +4,7 @@
display: block; display: block;
text-decoration: none; text-decoration: none;
transition: background 200ms ease-out; transition: background 200ms ease-out;
color: var(--color-gray-normal);
&.is-active { &.is-active {
background: var(--color-gray-dark-alt); background: var(--color-gray-dark-alt);
@@ -23,6 +24,12 @@
} }
} }
&--no-trailing-border {
&:last-child {
border-bottom: none;
}
}
&__title { &__title {
font-size: 16px; font-size: 16px;
color: var(--color-white); color: var(--color-white);

View File

@@ -0,0 +1,16 @@
.letter-index {
margin-bottom: 60px;
&__group {
border-top: 1px solid var(--color-gray-normal);
position: relative;
padding: 0 0 0 200px;
min-height: 100px;
}
&__letter {
font-size: 50px;
color: var(--color-gray-normal);
position: absolute;
left: 50px;
top: 10px;
}
}

View File

@@ -1,6 +1,7 @@
.nav { .nav {
white-space: nowrap;
&__item { &__item {
display: inline-block; display: inline-flex;
& + .nav__item { & + .nav__item {
margin-left: 20px; margin-left: 20px;
} }

View File

@@ -2,7 +2,11 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
&--align-top {
align-items: flex-start;
}
&__left { &__left {
flex: 0 1 auto; flex: 0 1 auto;
} }

View File

@@ -36,14 +36,21 @@ const addItemToQuadrant = (quadrant = {}, item) => ({
}); });
export const groupByFirstLetter = (items) => ( export const groupByFirstLetter = (items) => (
items.reduce((letterIned, item) => ({ items.reduce((letterIndex, item) => ({
...letterIned, ...letterIndex,
[getFirstLetter(item)]: addItemToFirstLetterIndex(letterIned[getFirstLetter(item)], item), [getFirstLetter(item)]: addItemToList(letterIndex[getFirstLetter(item)], item),
}), {}) }), {})
); );
const addItemToFirstLetterIndex = (letterIned = [], item) => ([ export const groupByRing = (items) => (
...letterIned, items.reduce((rings, item) => ({
...rings,
[item.attributes.ring]: addItemToList(rings[item.attributes.ring], item),
}), {})
);
const addItemToList = (list = [], item) => ([
...list,
item, item,
]); ]);

View File

@@ -1,6 +1,10 @@
import pug from 'pug'; import pug from 'pug';
import { relativePath } from './file'; import { relativePath } from './file';
import { groupByQuadrants, groupByFirstLetter } from './radar'; import {
groupByQuadrants,
groupByFirstLetter,
groupByRing,
} from './radar';
const templateFolder = 'templates'; const templateFolder = 'templates';
@@ -17,6 +21,7 @@ export const vars = (vars) => ({
}, },
groupByQuadrants, groupByQuadrants,
groupByFirstLetter, groupByFirstLetter,
groupByRing,
...vars, ...vars,
}) })

View File

@@ -6,7 +6,7 @@ block body
.branding .branding
if noLogo if noLogo
.branding__backlink .branding__backlink
a.icon-link(href='/') AOE Technology Radar a.icon-link.icon-link--primary(href='/') AOE Technology Radar
if !noLogo if !noLogo
a.branding__logo(href='/') a.branding__logo(href='/')
img(src='/assets/logo.svg') img(src='/assets/logo.svg')