);
From bd332423beb3af86e7453478f481f4fb7206d43c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A1bio=20Moreira?=
Date: Wed, 9 May 2018 16:52:14 +0100
Subject: [PATCH 04/10] feat(ui-toolkit): define next section for empty link
---
packages/ui-toolkit/src/styleguide/bottomNav.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/packages/ui-toolkit/src/styleguide/bottomNav.js b/packages/ui-toolkit/src/styleguide/bottomNav.js
index 5d98c6d4..1133d335 100644
--- a/packages/ui-toolkit/src/styleguide/bottomNav.js
+++ b/packages/ui-toolkit/src/styleguide/bottomNav.js
@@ -19,7 +19,8 @@ const previousAndNextSections = data => {
const items = data.items;
const link = data.link;
const sectionNames = items.map(item => item.name);
- const index = items.findIndex(item => item.name === link);
+ const index =
+ data.link === '/' ? 0 : items.findIndex(item => item.name === link);
let ret = { prevSection: null, nextSection: null };
if (index > -1) {
From 77fd895b6c081a00be6da814cef3ccc97324c82c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A1bio=20Moreira?=
Date: Fri, 11 May 2018 17:38:50 +0100
Subject: [PATCH 05/10] feat(ui-toolkit): add parallax header after scroll
---
.../ui-toolkit/src/styleguide/parallax.js | 25 +++++++++++++++++--
.../ui-toolkit/src/styleguide/renderer.js | 2 +-
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/packages/ui-toolkit/src/styleguide/parallax.js b/packages/ui-toolkit/src/styleguide/parallax.js
index 54850055..8298402c 100644
--- a/packages/ui-toolkit/src/styleguide/parallax.js
+++ b/packages/ui-toolkit/src/styleguide/parallax.js
@@ -53,10 +53,19 @@ const Img = styled.img`
const gutterWidth = 47 + 70;
const windowWidth = (window || {}).outerWidth + 70;
+const isScrolledOutsideView = () => {
+ const elem = document.getElementById('parallaxWrapper');
+ const eleHeight = elem.clientHeight;
+ const scrollY = window.scrollY;
+
+ return scrollY > eleHeight;
+};
+
export default class extends Component {
state = {
value: parseInt(windowWidth / gutterWidth, 10),
- windowWidth
+ windowWidth,
+ show: true
};
render() {
@@ -67,13 +76,25 @@ export default class extends Component {
});
});
+ if (this.props.hideAfterScroll) {
+ window.addEventListener('scroll', () => {
+ if (this.state.show && isScrolledOutsideView()) {
+ this.setState({ show: false });
+ }
+ });
+ }
+
const array = Array.apply(null, { length: this.state.value }).map(
Number.call,
Number
);
+ if (!this.state.show) {
+ return null;
+ }
+
return (
-
+
{array.map((g, i) => (
))}
diff --git a/packages/ui-toolkit/src/styleguide/renderer.js b/packages/ui-toolkit/src/styleguide/renderer.js
index e8246f60..60655620 100644
--- a/packages/ui-toolkit/src/styleguide/renderer.js
+++ b/packages/ui-toolkit/src/styleguide/renderer.js
@@ -61,7 +61,7 @@ const StyleGuideRenderer = ({
- {link === '/' ? : null}
+ {link === '/' ? : null}
From 882085a170013c4239081d43fab8a3e3596380a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A1bio=20Moreira?=
Date: Mon, 14 May 2018 12:18:59 +0100
Subject: [PATCH 06/10] feat(ui-toolkit): skip parallax header after user
scrolls
---
.../ui-toolkit/src/styleguide/parallax.js | 48 ++++++++++++++-----
1 file changed, 37 insertions(+), 11 deletions(-)
diff --git a/packages/ui-toolkit/src/styleguide/parallax.js b/packages/ui-toolkit/src/styleguide/parallax.js
index 8298402c..b34a45e0 100644
--- a/packages/ui-toolkit/src/styleguide/parallax.js
+++ b/packages/ui-toolkit/src/styleguide/parallax.js
@@ -53,12 +53,17 @@ const Img = styled.img`
const gutterWidth = 47 + 70;
const windowWidth = (window || {}).outerWidth + 70;
+let isScrolling;
+
const isScrolledOutsideView = () => {
const elem = document.getElementById('parallaxWrapper');
- const eleHeight = elem.clientHeight;
- const scrollY = window.scrollY;
+ if (elem) {
+ const eleHeight = elem.clientHeight;
+ const scrollY = window.scrollY;
- return scrollY > eleHeight;
+ return scrollY >= eleHeight;
+ }
+ return true;
};
export default class extends Component {
@@ -68,6 +73,35 @@ export default class extends Component {
show: true
};
+ componentDidMount() {
+ if (this.props.hideAfterScroll) {
+ isScrolledOutsideView()
+ ? this.setState({ show: false })
+ : window.addEventListener('scroll', this.scrollStopHandler);
+ }
+ }
+
+ scrollStopHandler = () => {
+ window.clearTimeout(isScrolling);
+ isScrolling = setTimeout(() => {
+ isScrolledOutsideView()
+ ? this.setState({ show: false }, () =>
+ window.removeEventListener('scroll', this.scrollStopHandler)
+ )
+ : this.skipParallax();
+ }, 66);
+ };
+
+ skipParallax = () => {
+ if (this.state.show) {
+ window.scroll({
+ top: document.getElementsByTagName('header')[0].offsetTop,
+ left: 0,
+ behavior: 'smooth'
+ });
+ }
+ };
+
render() {
window.addEventListener('resize', () => {
this.setState({
@@ -76,14 +110,6 @@ export default class extends Component {
});
});
- if (this.props.hideAfterScroll) {
- window.addEventListener('scroll', () => {
- if (this.state.show && isScrolledOutsideView()) {
- this.setState({ show: false });
- }
- });
- }
-
const array = Array.apply(null, { length: this.state.value }).map(
Number.call,
Number
From f388e52549c02e9c141b5f1f2f8b5c22f8b7a81f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A1bio=20Moreira?=
Date: Mon, 14 May 2018 14:24:55 +0100
Subject: [PATCH 07/10] fix(ui-toolkit): add margin to playground tab headers
---
.../ui-toolkit/src/styleguide/playground.js | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/packages/ui-toolkit/src/styleguide/playground.js b/packages/ui-toolkit/src/styleguide/playground.js
index cfab188a..45fff648 100644
--- a/packages/ui-toolkit/src/styleguide/playground.js
+++ b/packages/ui-toolkit/src/styleguide/playground.js
@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import styled from 'styled-components';
import is from 'styled-is';
import remcalc from 'remcalc';
+import { Margin } from 'styled-components-spacing';
const Wrapper = styled.section``;
@@ -124,14 +125,16 @@ class Playground extends Component {
return (
-
-
-
+
+
+
+
+
{states.length
? states.map((state, i) => (
From 155a06528176719050daea21018715f8b346674b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A1bio=20Moreira?=
Date: Mon, 14 May 2018 16:50:00 +0100
Subject: [PATCH 08/10] feat(ui-toolkit): update spacing guidelines
---
packages/ui-toolkit/src/grids/Baseline.md | 13 -
packages/ui-toolkit/src/grids/Readme.md | 14 +
.../ui-toolkit/src/grids/inline-example.svg | 89 ++++
packages/ui-toolkit/src/grids/inline.svg | 20 +
.../ui-toolkit/src/grids/inset-example.svg | 168 +++++++
packages/ui-toolkit/src/grids/inset.svg | 74 ++++
packages/ui-toolkit/src/grids/spacing.svg | 14 +
.../src/grids/squish-inset-example.svg | 416 ++++++++++++++++++
.../ui-toolkit/src/grids/squish-inset.svg | 90 ++++
.../ui-toolkit/src/grids/stack-example.svg | 103 +++++
packages/ui-toolkit/src/grids/stack.svg | 24 +
packages/ui-toolkit/src/grids/vertical.md | 121 +++++
packages/ui-toolkit/styleguide.config.js | 12 +-
13 files changed, 1144 insertions(+), 14 deletions(-)
delete mode 100644 packages/ui-toolkit/src/grids/Baseline.md
create mode 100644 packages/ui-toolkit/src/grids/inline-example.svg
create mode 100644 packages/ui-toolkit/src/grids/inline.svg
create mode 100644 packages/ui-toolkit/src/grids/inset-example.svg
create mode 100644 packages/ui-toolkit/src/grids/inset.svg
create mode 100644 packages/ui-toolkit/src/grids/spacing.svg
create mode 100644 packages/ui-toolkit/src/grids/squish-inset-example.svg
create mode 100644 packages/ui-toolkit/src/grids/squish-inset.svg
create mode 100644 packages/ui-toolkit/src/grids/stack-example.svg
create mode 100644 packages/ui-toolkit/src/grids/stack.svg
create mode 100644 packages/ui-toolkit/src/grids/vertical.md
diff --git a/packages/ui-toolkit/src/grids/Baseline.md b/packages/ui-toolkit/src/grids/Baseline.md
deleted file mode 100644
index 2211de4b..00000000
--- a/packages/ui-toolkit/src/grids/Baseline.md
+++ /dev/null
@@ -1,13 +0,0 @@
-### Baseline & Spacing
-
-Most of the horizontal spacing between different elements and components is derived from 6 px. For example, the most common horizontal distance between elements of a component or components is 18 px. Another, less frequent, measurement is 12 px. The choice between 6, 12 or 18 px is based on visual and functional proximity of objects.
-
-```jsx noeditor
-const baseline = require('./baseline.svg');
-
-
-```
diff --git a/packages/ui-toolkit/src/grids/Readme.md b/packages/ui-toolkit/src/grids/Readme.md
index f4fa968a..8eb55a8f 100644
--- a/packages/ui-toolkit/src/grids/Readme.md
+++ b/packages/ui-toolkit/src/grids/Readme.md
@@ -33,3 +33,17 @@ const small = require('./small.svg');
marginBottom: 40
}} src={small} />
```
+
+### Baseline & Spacing
+
+Most of the horizontal spacing between different elements and components is derived from 6 px. For example, the most common horizontal distance between elements of a component or components is 18 px. Another, less frequent, measurement is 12 px. The choice between 6, 12 or 18 px is based on visual and functional proximity of objects.
+
+```jsx noeditor
+const baseline = require('./baseline.svg');
+
+
+```
diff --git a/packages/ui-toolkit/src/grids/inline-example.svg b/packages/ui-toolkit/src/grids/inline-example.svg
new file mode 100644
index 00000000..a0db7540
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/inline-example.svg
@@ -0,0 +1,89 @@
+
diff --git a/packages/ui-toolkit/src/grids/inline.svg b/packages/ui-toolkit/src/grids/inline.svg
new file mode 100644
index 00000000..0d950869
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/inline.svg
@@ -0,0 +1,20 @@
+
diff --git a/packages/ui-toolkit/src/grids/inset-example.svg b/packages/ui-toolkit/src/grids/inset-example.svg
new file mode 100644
index 00000000..e6c7d9ba
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/inset-example.svg
@@ -0,0 +1,168 @@
+
diff --git a/packages/ui-toolkit/src/grids/inset.svg b/packages/ui-toolkit/src/grids/inset.svg
new file mode 100644
index 00000000..43ad179d
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/inset.svg
@@ -0,0 +1,74 @@
+
diff --git a/packages/ui-toolkit/src/grids/spacing.svg b/packages/ui-toolkit/src/grids/spacing.svg
new file mode 100644
index 00000000..496ade33
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/spacing.svg
@@ -0,0 +1,14 @@
+
diff --git a/packages/ui-toolkit/src/grids/squish-inset-example.svg b/packages/ui-toolkit/src/grids/squish-inset-example.svg
new file mode 100644
index 00000000..d1ba06e2
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/squish-inset-example.svg
@@ -0,0 +1,416 @@
+
diff --git a/packages/ui-toolkit/src/grids/squish-inset.svg b/packages/ui-toolkit/src/grids/squish-inset.svg
new file mode 100644
index 00000000..83e68171
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/squish-inset.svg
@@ -0,0 +1,90 @@
+
diff --git a/packages/ui-toolkit/src/grids/stack-example.svg b/packages/ui-toolkit/src/grids/stack-example.svg
new file mode 100644
index 00000000..d77b8bdb
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/stack-example.svg
@@ -0,0 +1,103 @@
+
diff --git a/packages/ui-toolkit/src/grids/stack.svg b/packages/ui-toolkit/src/grids/stack.svg
new file mode 100644
index 00000000..18ab1073
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/stack.svg
@@ -0,0 +1,24 @@
+
diff --git a/packages/ui-toolkit/src/grids/vertical.md b/packages/ui-toolkit/src/grids/vertical.md
new file mode 100644
index 00000000..7054e8ff
--- /dev/null
+++ b/packages/ui-toolkit/src/grids/vertical.md
@@ -0,0 +1,121 @@
+### Spacing
+
+In order to mainitain visual consistency and to make building as painless as possible, Triton employs a series of pre-defined spacing values and a variety of ways to implement those values.
+
+### Spacing values
+
+When defining the space necessary between and within components, alway use one of these pre-defined values. By using only 5 preset values, we can minimize inconsistency and ensure meaningful use of whitespace.
+
+```jsx noeditor
+const spacing = require('./spacing.svg');
+
+
+```
+
+### Stack - Vertical spacing
+
+Stack, or the vertical spacing between elements, uses all of the values provided above and is the most common form of spacing used in Triton. Stack is used to seperate components from one another, but is not used for internal padding of cards.
+
+```jsx noeditor
+const stack = require('./stack.svg');
+
+
+```
+
+
Stack example
+
+```jsx noeditor
+const stackExample = require('./stack-example.svg');
+
+
+```
+
+### Inline - Horizontal spacing
+
+Inline, or the horizontal spacing between elements, is used to provide additional horizontal spacing when an element is not attached directly to the grid. Inline uses all the spacing values, except for the ‘Giant’ size, as when inline get’s to that size, designers should aim to attach components to the underlying grid instead of using spacing values.
+
+```jsx noeditor
+const inline = require('./inline.svg');
+
+
+```
+
+
Inline example
+
+```jsx noeditor
+const inlineExample = require('./inline-example.svg');
+
+
+```
+
+### Uniform Inset — Interior padding
+
+Uniform Inset, or the equal padding on the interior of a component, takes the place of stack and inline when attempting to correctly space the contents of a card or component. Uniform inset adopts all but the ‘Giant’ spacing value to avoid an overwhelming amount of white-space in the card designs.
+
+```jsx noeditor
+const inset = require('./inset.svg');
+
+
+```
+
+
Uniform Inset example
+
+```jsx noeditor
+const insetExample = require('./inset-example.svg');
+
+
+```
+
+### Squish Inset — Irregular interior padding
+
+Squish inset, or irregular interior padding, adopts similar patterns of use to the ‘Uniform inset’ except has a different application of the spacing values. The ‘Squish inset’ has less padding on the top and bottom compared to left and right.
+
+```jsx noeditor
+const squishInset = require('./squish-inset.svg');
+
+
+```
+
+
Squish Inset example
+
+```jsx noeditor
+const squishInsetExample = require('./squish-inset-example.svg');
+
+
+```
diff --git a/packages/ui-toolkit/styleguide.config.js b/packages/ui-toolkit/styleguide.config.js
index ea6e9905..096a5eb2 100644
--- a/packages/ui-toolkit/styleguide.config.js
+++ b/packages/ui-toolkit/styleguide.config.js
@@ -60,7 +60,17 @@ module.exports = {
name: 'Grids',
content: 'src/grids/Readme.md',
description:
- 'Triton’s grid aims to have maximum coverage over a wide range of devices. With a maximum container width of 964px, we are able to display the main desktop experience all the way down to a tradional landscape tablet device.'
+ 'Triton’s grid aims to have maximum coverage over a wide range of devices. With a maximum container width of 964px, we are able to display the main desktop experience all the way down to a tradional landscape tablet device.',
+ sections: [
+ {
+ name: 'Horizontal',
+ content: 'src/grids/Readme.md'
+ },
+ {
+ name: 'Vertical',
+ content: 'src/grids/vertical.md'
+ }
+ ]
},
{
name: 'Superscript',
From a1154b2520e694364a0d49a188ca2eb306d7fc96 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A1bio=20Moreira?=
Date: Mon, 14 May 2018 18:29:34 +0100
Subject: [PATCH 09/10] feat(ui-toolkit): improve parallax scroll behaviour
---
.../ui-toolkit/src/styleguide/parallax.js | 32 +++++++++++++------
.../ui-toolkit/src/styleguide/renderer.js | 2 +-
2 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/packages/ui-toolkit/src/styleguide/parallax.js b/packages/ui-toolkit/src/styleguide/parallax.js
index b34a45e0..14c8c638 100644
--- a/packages/ui-toolkit/src/styleguide/parallax.js
+++ b/packages/ui-toolkit/src/styleguide/parallax.js
@@ -82,18 +82,19 @@ export default class extends Component {
}
scrollStopHandler = () => {
- window.clearTimeout(isScrolling);
- isScrolling = setTimeout(() => {
- isScrolledOutsideView()
- ? this.setState({ show: false }, () =>
- window.removeEventListener('scroll', this.scrollStopHandler)
- )
- : this.skipParallax();
- }, 66);
+ window.removeEventListener('scroll', this.scrollStopHandler);
+ window.addEventListener('scroll', this.checkpoint);
+
+ isScrolledOutsideView()
+ ? this.setState({ show: false })
+ : this.skipParallax();
};
skipParallax = () => {
- if (this.state.show) {
+ if (
+ this.state.show &&
+ window.scrollY < document.getElementsByTagName('header')[0].offsetTop
+ ) {
window.scroll({
top: document.getElementsByTagName('header')[0].offsetTop,
left: 0,
@@ -102,6 +103,13 @@ export default class extends Component {
}
};
+ checkpoint = () => {
+ if (isScrolledOutsideView()) {
+ window.removeEventListener('scroll', this.checkpoint);
+ this.setState({ show: false });
+ }
+ };
+
render() {
window.addEventListener('resize', () => {
this.setState({
@@ -124,7 +132,7 @@ export default class extends Component {
{array.map((g, i) => (
))}
-
+
@@ -136,6 +144,10 @@ export default class extends Component {
elements, components and guidelines, for anyone developing
products within the Joyent and Triton ecosystems.