diff --git a/.gitignore b/.gitignore index 41358cc..14b4743 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* +# Ignore .css files +/src/**/*.css diff --git a/package.json b/package.json index b664a8a..0441391 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,13 @@ "colorable": "^1.0.5", "mobx": "^3.1.11", "mobx-react": "^4.2.1", + "node-sass-chokidar": "^0.0.3", + "npm-run-all": "^4.0.2", "prop-types": "^15.5.10", "rc-tooltip": "^3.4.7", "react": "^15.5.4", "react-clipboard.js": "^1.1.2", + "react-css-collapse": "^3.0.2", "react-dom": "^15.5.4", "react-markdown": "^2.5.0", "react-router-dom": "^4.1.1", @@ -21,8 +24,11 @@ "react-scripts": "^1.0.7" }, "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", + "build-css": "node-sass-chokidar src/ -o src/", + "watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive", + "start-js": "react-scripts start", + "start": "npm-run-all -p watch-css start-js", + "build": "npm run build-css && react-scripts build", "test": "react-scripts test --env=jsdom", "eject": "react-scripts eject" } diff --git a/src/components/App/App.css b/src/components/App/App.css deleted file mode 100644 index c6fc10e..0000000 --- a/src/components/App/App.css +++ /dev/null @@ -1,22 +0,0 @@ -.tlbx-body { - background: #f0f0f0; -} - -.tlbx-h2 { text-align: center; } - -.styleguide { - display: grid; - grid-template-columns: minmax(200px, 20vw) 1fr; - min-height: 100vh; -} - -.tlbx-sidebar-wrapper { - grid-column: 1; - background-color: #F0F0F2; -} - -.tlbx-content-wrapper { - grid-column: 2; - align-self: start; - margin-left: 18px; -} diff --git a/src/components/App/App.js b/src/components/App/App.js index 3384909..359ea4d 100644 --- a/src/components/App/App.js +++ b/src/components/App/App.js @@ -35,11 +35,14 @@ class App extends Component { const path = `components/${group}/${slug}/`; const config = yaml.load(`${path}/${slug}.yml`); const content = this.getMarkup(path, slug); - const variants = config && config.variants ? Object.keys(config.variants).map(key => { - const variantSlug = `${slug}-${key}`; + const variants = config && config.variants ? config.variants.map(key => { + // Make sure we put the slug to lowercase, to avoid issues on + // Case Sensitive systems (GH Pages) + const variantSlug = (`${slug}-${key}`).toLowerCase(); + return { slug: variantSlug, - title: config.variants[key], + title: key, content: this.getMarkup(path, variantSlug), }; }) : null; @@ -88,6 +91,9 @@ class App extends Component { if (hasStyleguideShell) { return (
+
+ Tools +
diff --git a/src/components/App/App.scss b/src/components/App/App.scss new file mode 100644 index 0000000..7c04bce --- /dev/null +++ b/src/components/App/App.scss @@ -0,0 +1,32 @@ +@import '../../variables.scss'; + +.tlbx-body { + background: $body-bg; +} + +.tlbx-h2 { text-align: center; } + +.styleguide { + display: grid; + grid-template-columns: 60px 240px 1fr; + min-height: 100vh; + max-width: 100%; +} + +.tlbx-toolbar-wrapper { + grid-column: 1; + background-color: $color-primary; + color: white; +} + +.tlbx-sidebar-wrapper { + grid-column: 2; + background-color: $gray-lighter; +} + +.tlbx-content-wrapper { + grid-column: 3; + align-self: start; + padding: 0 1rem; + overflow: hidden; +} diff --git a/src/components/Item/Item.css b/src/components/Item/Item.css deleted file mode 100644 index e7f8f80..0000000 --- a/src/components/Item/Item.css +++ /dev/null @@ -1,8 +0,0 @@ -.tlbx-item-code { - margin: 2rem 0 0; -} - -.tlbx-item-code pre { - padding: 0.6rem; - box-shadow: inset 0 0 0 2px rgba(255,255,255,0.4); -} \ No newline at end of file diff --git a/src/components/Item/Item.js b/src/components/Item/Item.js index 44c4ded..f4d2a95 100644 --- a/src/components/Item/Item.js +++ b/src/components/Item/Item.js @@ -1,5 +1,6 @@ import React, { Component } from 'react'; import { inject, observer } from 'mobx-react'; +import PropTypes from 'prop-types'; import SyntaxHighlighter, { registerLanguage } from 'react-syntax-highlighter/dist/light'; import xml from 'react-syntax-highlighter/dist/languages/xml'; @@ -18,7 +19,7 @@ class Item extends Component { {title}
@@ -26,6 +27,15 @@ class Item extends Component { language='html' style={atomOneDark} wrapLines={true} + showLineNumbers={true} + lineNumberContainerStyle={{ + padding: '0.5em 0.5em 1em 0.5em', + float: 'left', + margin: '-0.5em 0 -0.5em -0.5em', + textAlign: 'right', + backgroundColor: 'rgba(255,255,255,0.1)', + marginRight: '0.5em' + }} > {this.props.children} @@ -35,4 +45,12 @@ class Item extends Component { } } +Item.PropTypes = { + title: PropTypes.string, + wrapper: PropTypes.string, + slug: PropTypes.string, + background: PropTypes.string, + children: PropTypes.string.isRequired, +} + export default inject('store')(observer(Item)); diff --git a/src/components/Item/Item.scss b/src/components/Item/Item.scss new file mode 100644 index 0000000..49db112 --- /dev/null +++ b/src/components/Item/Item.scss @@ -0,0 +1,19 @@ +@import '../../variables.scss'; + +.tlbx-item-code { + + margin: 2rem 0 0; +} + +.tlbx-item-code pre { + padding: 0.6rem; + box-shadow: inset 0 0 0 2px rgba(255,255,255,0.4); + + // Code sample + code:last-child { + // Hide last empty line (:empty not working, because React) + > span:last-of-type { + display: none; + } + } +} diff --git a/src/components/Sidebar/Sidebar.css b/src/components/Sidebar/Sidebar.css deleted file mode 100644 index ea4dfc1..0000000 --- a/src/components/Sidebar/Sidebar.css +++ /dev/null @@ -1,9 +0,0 @@ -.toolbox-sidebar { - height: 100vh; - padding: 0 2em; - border-right: 1px solid #333; -} - -/* .tlbx-sidebar { - padding: 2em; -} */ diff --git a/src/components/Sidebar/Sidebar.js b/src/components/Sidebar/Sidebar.js index c5840a1..23e5fa4 100644 --- a/src/components/Sidebar/Sidebar.js +++ b/src/components/Sidebar/Sidebar.js @@ -1,25 +1,20 @@ import React, { Component } from 'react'; import { inject, observer } from 'mobx-react'; -import { NavLink } from 'react-router-dom' -import PropTypes from 'prop-types'; +import { NavLink, withRouter } from 'react-router-dom' + +import SidebarItem from '../SidebarItem/SidebarItem'; import './Sidebar.css'; class Sidebar extends Component { render() { - const noComponents = ( -
  • - - No components yet.
    - Run $ yo toolbox:generate -
    -
  • - ); return (
    -
      +

      Toolbox Design System

      + +
      • - Home + Home
      • Colors @@ -29,34 +24,11 @@ class Sidebar extends Component { {Object.keys(this.props.store.components).map((group, key) => { if (group === 'docs') return null; - return ( -
        - {group} -
          - {this.props.store.components[group].map((component, key) => { - const path = `/${group}/${component.name}`; - - return ( -
        • - - {component.title} - -
        • - ) - })} - {this.props.store.components[group].length === 0 && noComponents} -
        -
        - ) + return })} -
    ); } } -Sidebar.propTypes = { - components: PropTypes.object, -}; - -export default inject('store')(observer(Sidebar)); +export default withRouter(inject('store')(observer(Sidebar))); diff --git a/src/components/Sidebar/Sidebar.scss b/src/components/Sidebar/Sidebar.scss new file mode 100644 index 0000000..acc124b --- /dev/null +++ b/src/components/Sidebar/Sidebar.scss @@ -0,0 +1,20 @@ +@import '../../variables.scss'; + +.tlbx-sidebar { + padding: 1em 0; + + a { + color: $body-color; + text-decoration: none; + } +} + +.tlbx-sidebar-title { + font-size: 1rem; + margin: 0 1rem 1rem; + + span { + font-weight: 200; + } +} + diff --git a/src/components/SidebarItem/SidebarItem.js b/src/components/SidebarItem/SidebarItem.js new file mode 100644 index 0000000..9de4049 --- /dev/null +++ b/src/components/SidebarItem/SidebarItem.js @@ -0,0 +1,79 @@ +import React, { Component } from 'react'; +import { inject, observer } from 'mobx-react'; +import { NavLink, withRouter } from 'react-router-dom' +import Collapse from 'react-css-collapse'; +import PropTypes from 'prop-types'; + +import './SidebarItem.css'; + +class SidebarItem extends Component { + constructor() { + super(); + + this.state = { + active: false, + } + + this.toggleComponentsList = this.toggleComponentsList.bind(this); + } + + toggleComponentsList() { + this.setState({ + active: !this.state.active, + }); + } + + componentDidMount() { + const regex = new RegExp(`^/${this.props.group}/`); + const isCurrent = this.props.location.pathname.match(regex); + + this.setState({ + active: !!isCurrent + }) + } + + render() { + const noComponents = ( +
  • + + No components yet.
    + Run $ yo toolbox:generate +
    +
  • + ); + + + return ( +
    + + +
      + {this.props.store.components[this.props.group].map((component, key) => { + const path = `/${this.props.group}/${component.name}`; + + return ( +
    • + + {component.title} + +
    • + ) + })} + {this.props.store.components[this.props.group].length === 0 && noComponents} +
    +
    +
    + ); + } +} + +SidebarItem.propTypes = { + group: PropTypes.string.isRequired, + match: PropTypes.object.isRequired, + location: PropTypes.object.isRequired, + history: PropTypes.object.isRequired +}; + +export default withRouter(inject('store')(observer(SidebarItem))); diff --git a/src/components/SidebarItem/SidebarItem.scss b/src/components/SidebarItem/SidebarItem.scss new file mode 100644 index 0000000..7ed3a7f --- /dev/null +++ b/src/components/SidebarItem/SidebarItem.scss @@ -0,0 +1,87 @@ +@import '../../variables.scss'; + +.tlbx-sidebar-item { + display: flex; + margin: 0 0 0.5rem 0; + width: 100%; + padding-right: 1rem; + padding-left: 1rem; + border: 0; + background: none; + cursor: pointer; + text-transform: capitalize; + font-size: 1rem; + + &:hover { + color: $link-hover-color; + } + + &:after { + content: ''; + line-height: 0; + align-self: center; + margin-left: auto; + margin-right: 1rem; + display: block; + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid $link-color; + font-size: 0; + line-height: 0; + } + + .tlbx-open & { + &:after { + transform: rotate(180deg); + } + } +} + +.tlbx-sidebar-collapse { + transition: height 250ms cubic-bezier(.4, 0, .2, 1); +} + +.tlbx-sidebar-item-list { + margin-top: 0; + list-style: none; + padding: 0; + + a { + display: block; + position: relative; + padding: 0.25rem 0.5rem 0.25rem 2rem; + color: $body-color; + transition: color 250ms ease; + + &:before { + content: ''; + position: absolute; + top: 0; + left: 0; + height: 100%; + border-left: 0 solid $link-color; + transition: border-width 100ms ease; + } + + &.active, + &:hover { + color: $link-color; + text-decoration: none; + + &:before { + border-left-width: 4px; + } + } + + &.active { + font-weight: bold; + } + } +} + +.tlbx-sidebar-item-list-empty { + display: block; + margin-left: 1rem; +} diff --git a/src/index.css b/src/index.css deleted file mode 100644 index ea1e941..0000000 --- a/src/index.css +++ /dev/null @@ -1,4 +0,0 @@ -body { - margin: 0; - padding: 0; -} diff --git a/src/index.scss b/src/index.scss new file mode 100644 index 0000000..899fe1f --- /dev/null +++ b/src/index.scss @@ -0,0 +1,8 @@ +@import 'variables.scss'; + +body { + margin: 0; + padding: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + color: $body-color; +} diff --git a/src/variables.scss b/src/variables.scss new file mode 100644 index 0000000..9ff0900 --- /dev/null +++ b/src/variables.scss @@ -0,0 +1,14 @@ + +// Colors +$black: #010a15; +$white: #f0f0f0; +$color-primary: #003baf; +$color-secondary-light: #3474a8; +$color-secondary-dark: #012f4d; +$gray-lighter: #f3f4f7; + + +$body-color: $black; +$body-bg: $white; +$link-color: $color-secondary-light; +$link-hover-color: $color-secondary-dark; diff --git a/src/views/Colors/Colors.js b/src/views/Colors/Colors.js index 4d321e1..5005442 100644 --- a/src/views/Colors/Colors.js +++ b/src/views/Colors/Colors.js @@ -106,22 +106,6 @@ class Colors extends Component { Aa - {/* { - return ( -
    - {Object.keys(combination.accessibility).map(color => { - return ( -
    - {`${color}: ${combination.accessibility[color] ? '✔︎' : '✘'}`} -
    - )})} - Contrast: {Math.round(combination.contrast * 10) / 10}:1 -
    - ); - }} - /> */} ) diff --git a/src/views/Colors/Colors.css b/src/views/Colors/Colors.scss similarity index 100% rename from src/views/Colors/Colors.css rename to src/views/Colors/Colors.scss diff --git a/src/views/Page/Page.css b/src/views/Page/Page.scss similarity index 100% rename from src/views/Page/Page.css rename to src/views/Page/Page.scss diff --git a/src/views/Single/Single.js b/src/views/Single/Single.js index ee24877..fcd68e9 100644 --- a/src/views/Single/Single.js +++ b/src/views/Single/Single.js @@ -72,7 +72,7 @@ class Single extends Component { title={variant.title} slug={`tlbx-${this.state.component.slug}-${variant.slug}`} > - {variant.markup} + {variant.markup} ); })} @@ -92,7 +92,9 @@ class Single extends Component { wrapper={this.state.component.wrapper || ''} background={this.state.component.background} slug={`tlbx-${this.state.component.slug}`} - >{this.state.content} + > + {this.state.content} + {variants}
    diff --git a/src/views/Single/Single.css b/src/views/Single/Single.scss similarity index 100% rename from src/views/Single/Single.css rename to src/views/Single/Single.scss diff --git a/yarn.lock b/yarn.lock index 24626bf..95b9f4c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -285,6 +285,10 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1282,7 +1286,7 @@ cheerio@^0.18.0: htmlparser2 "~3.8.1" lodash "~2.4.1" -chokidar@^1.6.0, chokidar@^1.7.0: +chokidar@^1.6.0, chokidar@^1.6.1, chokidar@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -1656,6 +1660,21 @@ cross-spawn@4.0.2: lru-cache "^4.0.1" which "^1.2.9" +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -2070,7 +2089,7 @@ duplexer2@^0.1.4: dependencies: readable-stream "^2.0.2" -duplexer@^0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -2147,6 +2166,16 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.4.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.0.tgz#3b00385e85729932beffa9163bbea1234e932914" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.0" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + es-abstract@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" @@ -2414,6 +2443,18 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" +event-stream@~3.3.0: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" @@ -2707,6 +2748,10 @@ fresh@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + fs-extra@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" @@ -2770,6 +2815,12 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gaze@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" + dependencies: + globule "^1.0.0" + generate-function@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" @@ -2829,7 +2880,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@~7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2865,6 +2916,14 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globule@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" + dependencies: + glob "~7.1.1" + lodash "~4.17.4" + minimatch "~3.0.2" + good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" @@ -3456,7 +3515,7 @@ is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" -is-regex@^1.0.3: +is-regex@^1.0.3, is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" dependencies: @@ -3815,7 +3874,7 @@ jest@20.0.4: dependencies: jest-cli "^20.0.4" -js-base64@^2.1.9, js-base64@~2.1.8: +js-base64@^2.1.8, js-base64@^2.1.9, js-base64@~2.1.8: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" @@ -3999,6 +4058,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + loader-fs-cache@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" @@ -4054,6 +4122,10 @@ lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" +lodash.clonedeep@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + lodash.cond@^4.3.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" @@ -4086,6 +4158,10 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +lodash.mergewith@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" + lodash.template@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" @@ -4103,7 +4179,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.3.0: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.3.0, lodash@~4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -4167,6 +4243,10 @@ map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" @@ -4274,7 +4354,7 @@ minimatch@3.0.3: dependencies: brace-expansion "^1.0.0" -minimatch@3.0.x, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.x, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -4327,7 +4407,7 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -nan@^2.3.0: +nan@^2.3.0, nan@^2.3.2: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" @@ -4362,6 +4442,24 @@ node-forge@0.6.33: version "0.6.33" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc" +node-gyp@^3.3.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "2" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -4417,10 +4515,52 @@ node-pre-gyp@^0.6.36: tar "^2.2.1" tar-pack "^3.4.0" +node-sass-chokidar@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/node-sass-chokidar/-/node-sass-chokidar-0.0.3.tgz#ba460efe41c8f14ce800aaa3606a7acbb1e630d1" + dependencies: + async-foreach "^0.1.3" + chokidar "^1.6.1" + get-stdin "^4.0.1" + glob "^7.0.3" + meow "^3.7.0" + node-sass "^4.5.3" + sass-graph "^2.1.1" + stdout-stream "^1.4.0" + +node-sass@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.3.2" + node-gyp "^3.3.1" + npmlog "^4.0.0" + request "^2.79.0" + sass-graph "^2.1.1" + stdout-stream "^1.4.0" + node-status-codes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -4456,7 +4596,19 @@ normalize-url@^1.4.0: query-string "^4.1.0" sort-keys "^1.0.0" -npmlog@^4.0.2: +npm-run-all@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.0.2.tgz#a84669348e6db6ccbe052200b4cdb6bfe034a4fe" + dependencies: + chalk "^1.1.3" + cross-spawn "^5.0.1" + minimatch "^3.0.2" + ps-tree "^1.0.1" + read-pkg "^2.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -4591,7 +4743,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" -osenv@^0.1.0, osenv@^0.1.4: +osenv@0, osenv@^0.1.0, osenv@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" dependencies: @@ -4712,6 +4864,18 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + pbkdf2@^3.0.3: version "3.0.12" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" @@ -5136,6 +5300,12 @@ prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" +ps-tree@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" + dependencies: + event-stream "~3.3.0" + pseudo-classes@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/pseudo-classes/-/pseudo-classes-0.0.1.tgz#dec983d94a68d03ddfdef3f07c44af9f6c223a5b" @@ -5273,6 +5443,10 @@ react-clipboard.js@^1.1.2: clipboard "^1.6.1" prop-types "^15.5.0" +react-css-collapse@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/react-css-collapse/-/react-css-collapse-3.0.2.tgz#26958b0545dfdc62d49701e51ff1f931ee199950" + react-dev-utils@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-3.0.2.tgz#1a42263e9b6aa11dcb45d69dfe5eb1b354bd5531" @@ -5429,6 +5603,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + readable-stream@1.0: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -5603,7 +5785,7 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.48.0, request@^2.79.0, request@^2.81.0: +request@2, request@^2.48.0, request@^2.79.0, request@^2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: @@ -5754,6 +5936,15 @@ sane@~1.6.0: walker "~1.0.5" watch "~0.10.0" +sass-graph@^2.1.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + sax@^1.2.1, sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -5764,6 +5955,13 @@ schema-utils@^0.3.0: dependencies: ajv "^5.0.0" +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -5788,6 +5986,10 @@ semver-diff@^2.0.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + send@0.15.3: version "0.15.3" resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309" @@ -5863,7 +6065,17 @@ shallowequal@^0.2.2: dependencies: lodash.keys "^3.1.2" -shell-quote@1.6.1: +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shell-quote@1.6.1, shell-quote@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" dependencies: @@ -5963,7 +6175,7 @@ source-map@0.5.6, source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -source-map@^0.4.4, source-map@~0.4.2: +source-map@^0.4.2, source-map@^0.4.4, source-map@~0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" dependencies: @@ -6016,6 +6228,12 @@ specificity@^0.1.4: version "0.1.6" resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.1.6.tgz#aa501048f96e69485ddc95ef9f7a5b77f01232aa" +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -6042,6 +6260,12 @@ stdin@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/stdin/-/stdin-0.0.1.tgz#d3041981aaec3dfdbc77a1b38d6372e38f5fb71e" +stdout-stream@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" + dependencies: + readable-stream "^2.0.1" + stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" @@ -6049,6 +6273,12 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + stream-http@^2.3.1: version "2.7.2" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" @@ -6084,6 +6314,14 @@ string-width@^2.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string.prototype.padend@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + string.prototype.repeat@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" @@ -6231,7 +6469,7 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" -tar@^2.2.1: +tar@^2.0.0, tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" dependencies: @@ -6257,7 +6495,7 @@ throat@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/throat/-/throat-3.2.0.tgz#50cb0670edbc40237b9e347d7e1f88e4620af836" -through@^2.3.6: +through@2, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -6703,6 +6941,12 @@ which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" +which@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + which@^1.2.12, which@^1.2.9: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" @@ -6832,7 +7076,7 @@ yargs@^6.0.0: y18n "^3.2.1" yargs-parser "^4.2.0" -yargs@^7.0.2: +yargs@^7.0.0, yargs@^7.0.2: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" dependencies: