From e73aeb2b40a4fb7fe652d024c2aecea567fe6e75 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Tue, 25 Jul 2017 16:05:23 -0400 Subject: [PATCH] Initial commit --- .editorconfig | 9 + .eslintrc | 18 + .gitignore | 3 + LICENSE.md | 7 + README.md | 13 + css/alerts.css | 29 + css/badges.css | 21 + css/buttons.css | 92 ++ css/content.css | 200 +++ css/forms.css | 320 +++++ css/loaders.css | 58 + css/normalize.css | 447 ++++++ css/shoelace.css | 24 + css/tables.css | 42 + css/tabs.css | 52 + css/utilities.css | 174 +++ css/variables.css | 219 +++ dist/shoelace.min.css | 323 +++++ docs/docs.css | 110 ++ docs/index.html | 1259 +++++++++++++++++ gulpfile.js | 85 ++ js/tabs.js | 51 + package-lock.json | 2983 +++++++++++++++++++++++++++++++++++++++++ package.json | 21 + 24 files changed, 6560 insertions(+) create mode 100644 .editorconfig create mode 100644 .eslintrc create mode 100644 .gitignore create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 css/alerts.css create mode 100644 css/badges.css create mode 100644 css/buttons.css create mode 100644 css/content.css create mode 100644 css/forms.css create mode 100644 css/loaders.css create mode 100644 css/normalize.css create mode 100644 css/shoelace.css create mode 100644 css/tables.css create mode 100644 css/tabs.css create mode 100644 css/utilities.css create mode 100644 css/variables.css create mode 100644 dist/shoelace.min.css create mode 100644 docs/docs.css create mode 100644 docs/index.html create mode 100644 gulpfile.js create mode 100644 js/tabs.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..c6c8b362 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..f36614ca --- /dev/null +++ b/.eslintrc @@ -0,0 +1,18 @@ +{ + "rules": { + "comma-dangle": ["warn"], + "eqeqeq": ["warn"], + "no-console": ["off"], + "indent": ["error", 2], + "quotes": ["error", "single"], + "linebreak-style": ["error", "unix"], + "no-unused-vars": ["warn", { "vars": "all", "args": "after-used" }], + "prefer-arrow-callback": ["warn"], + "semi": ["error", "always"] + }, + "env": { + "node": true, + "es6": true + }, + "extends": "eslint:recommended" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0ca0b3d8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store + +node_modules/ diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..6afec3fb --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,7 @@ +Copyright (c) 2017 A Beautiful Site, LLC + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..5c8a40b4 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# 👟 Shoelace.css + +A back to the basics CSS starter kit. For when you don’t need the whole boot. + +--- + +Shoelace is a starter kit, not a framework. Think of it as a CSS reset sprinkled with helpful components. Bootstrap users will find it familiar, yet refreshing. + +Just link to the stylesheet, add your customizations, and start building stuff. + +Shoelace is highly customizable through CSS variables. It doesn’t require Less, Sass, or any preprocessing at all. The minified version is only 31KB. + +[Documentation & Examples](https://labs.abeautifulsite.net/shoelace-css/docs/) diff --git a/css/alerts.css b/css/alerts.css new file mode 100644 index 00000000..67481171 --- /dev/null +++ b/css/alerts.css @@ -0,0 +1,29 @@ +/*! Shoelace alerts */ + +.alert { + color: var(--alert-color); + background-color: var(--alert-bg-color-primary); + border-radius: var(--alert-border-radius); + padding: var(--alert-spacing-y) var(--alert-spacing-x); + margin-top: 0; + margin-bottom: 1rem; +} + +.alert:empty { + display: none; +} + +.alert-success { background-color: var(--alert-bg-color-success); } +.alert-info { background-color: var(--alert-bg-color-info); } +.alert-warning { background-color: var(--alert-bg-color-warning); } +.alert-danger { background-color: var(--alert-bg-color-danger); } +.alert-inverse { background-color: var(--alert-bg-color-inverse); } + +.alert a { + color: inherit; + text-decoration: underline; +} + +.alert :last-child { + margin-bottom: 0; +} diff --git a/css/badges.css b/css/badges.css new file mode 100644 index 00000000..cf133fcd --- /dev/null +++ b/css/badges.css @@ -0,0 +1,21 @@ +/*! Shoelace badges */ + +.badge { + font-size: var(--badge-font-size); + color: var(--badge-color); + background-color: var(--badge-bg-color-primary); + border-radius: var(--badge-border-radius); + padding: var(--badge-spacing-y) var(--badge-spacing-x); + vertical-align: baseline; + display: inline-block; +} + +.badge:empty { + display: none; +} + +.badge-success { background-color: var(--badge-bg-color-success); } +.badge-info { background-color: var(--badge-bg-color-info); } +.badge-warning { background-color: var(--badge-bg-color-warning); } +.badge-danger { background-color: var(--badge-bg-color-danger); } +.badge-inverse { background-color: var(--badge-bg-color-inverse); } diff --git a/css/buttons.css b/css/buttons.css new file mode 100644 index 00000000..fbec36a7 --- /dev/null +++ b/css/buttons.css @@ -0,0 +1,92 @@ +/*! Shoelace buttons */ + +button, +.button { + font-family: var(--button-font-family); + font-size: var(--button-font-size); + font-weight: var(--button-font-weight); + text-align: center; + text-decoration: none; + color: var(--button-color); + background-color: var(--button-bg-color-primary); + border-radius: var(--button-border-radius); + border: none; + height: var(--input-height); + line-height: 1; + user-select: none; + vertical-align: middle; + white-space: nowrap; + padding: calc(var(--component-spacing) * .5) calc(var(--component-spacing) * .75); + box-shadow: var(--button-box-shadow); + cursor: pointer; + display: inline-block; + transition: .1s box-shadow, .1s background-color, .1s color; +} + +.button-small { + font-size: calc(var(--button-font-size) * .8); + height: var(--input-height-small); + padding: calc(var(--component-spacing) * .25) calc(var(--component-spacing) * .5); +} + +.button-big { + font-size: calc(var(--button-font-size) * 1.2); + height: var(--input-height-big); + padding: calc(var(--component-spacing) * .75) calc(var(--component-spacing) * 1); +} + +.button-block { + width: 100% !important; + display: block; +} + +.button-block + .button-block { + margin-top: 1rem; +} + +button:hover, +.button:hover { + color: var(--button-color); + text-decoration: none; +} + +button:hover:not(:disabled), +.button:hover:not(.disabled) { + box-shadow: var(--button-box-shadow-hover); +} + +button:active:not(:disabled), +.button.active:not(.disabled) { + color: var(--button-color); + box-shadow: var(--button-box-shadow-active); +} + +button:disabled, +.button.disabled { + opacity: .5; + cursor: not-allowed; +} + +.button-success { background-color: var(--button-bg-color-success); } +.button-info { background-color: var(--button-bg-color-info); } +.button-warning { background-color: var(--button-bg-color-warning); } +.button-danger { background-color: var(--button-bg-color-danger); } +.button-inverse { background-color: var(--button-bg-color-inverse); } + +.button-link { + background-color: transparent; + color: var(--link-color); + text-decoration: var(--link-text-decoration); + box-shadow: none; +} + +.button-link:hover:not(:disabled) { + background-color: transparent; + color: var(--link-color-hover); + text-decoration: var(--link-text-decoration-hover); + box-shadow: none; +} + +label.button input[type="file"] { + display: none; +} diff --git a/css/content.css b/css/content.css new file mode 100644 index 00000000..b22a3924 --- /dev/null +++ b/css/content.css @@ -0,0 +1,200 @@ +/*! Shoelace content */ + +/* Box sizing reset */ +html { + box-sizing: border-box; +} + +*, *:before, *:after { + box-sizing: inherit; +} + +/*************************************************************************************************** +* The basics +***************************************************************************************************/ + +body { + background: var(--body-bg-color); + font-family: var(--font-family); + font-weight: var(--font-weight); + font-size: var(--font-size); + font-weight: var(--font-weight-normal); + color: var(--body-color); + line-height: var(--line-height); +} + +a { + color: var(--link-color); + text-decoration: var(--link-text-decoration); +} + +a:hover { + color: var(--link-color-hover); + text-decoration: var(--link-text-decoration-hover); +} + +abbr[title] { + text-decoration: none; + border-bottom: dashed 2px currentcolor; +} + +b, strong { + font-weight: var(--font-weight-bold); +} + +big { + font-size: var(--font-size-big); +} + +blockquote { + font-size: var(--font-size-big); + border-left: solid .4rem var(--component-border-color); + padding: .5rem .5rem .5rem 1rem; + margin-bottom: 1rem; + margin-left: 0; +} + +code { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--code-color); + background-color: var(--code-bg-color); + border-radius: var(--code-border-radius); + padding: var(--code-spacing-y) var(--code-spacing-x); +} + +del { + color: var(--color-red); +} + +figure { + margin-top: 0; + margin-bottom: 1rem; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: var(--headings-font-family); + font-weight: var(--headings-font-weight); + line-height: var(--headings-line-height); + color: var(--headings-color); + margin-top: 0; + margin-bottom: var(--headings-margin-bottom); +} + +h1 { font-size: var(--headings-font-size-h1); } +h2 { font-size: var(--headings-font-size-h2); } +h3 { font-size: var(--headings-font-size-h3); } +h4 { font-size: var(--headings-font-size-h4); } +h5 { font-size: var(--headings-font-size-h5); } +h6 { font-size: var(--headings-font-size-h6); } + +hr { + border: none; + border-top: solid var(--hr-width) var(--component-border-color); + margin-top: var(--component-spacing-big); + margin-bottom: var(--component-spacing-big); +} + +img { + height: auto; + max-width: 100%; + vertical-align: middle; +} + +ins { + color: var(--color-green); +} + +kbd { + font-family: var(--font-family-monospace); + font-size: var(--kbd-font-size); + color: var(--kbd-color); + background-color: var(--kbd-bg-color); + border-radius: var(--kbd-border-radius); + padding: var(--kbd-spacing-y) var(--kbd-spacing-x); +} + +mark { + color: var(--mark-color); + background-color: var(--mark-bg-color); + padding: var(--mark-spacing-y) var(--mark-spacing-x); +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +pre { + max-height: var(--pre-max-height); + overflow-y: auto; + font-family: var(--font-family-monospace); + color: var(--pre-color); + background-color: var(--pre-bg-color); + border-radius: var(--pre-border-radius); + padding: 1rem; + margin-top: 0; + margin-bottom: 1rem; +} + +small { + font-size: var(--font-size-small); +} + +/*************************************************************************************************** +* Lists +***************************************************************************************************/ + +dl, +ol, +ul { + line-height: var(--line-height); + margin-top: 0; + margin-bottom: 1rem; +} + +dt { + font-weight: var(--font-weight-bold); +} + +dd { + margin-left: 0; + margin-bottom: 1rem; +} + +ol ol, +ol ul, +ul ol, +ul ul { + margin-bottom: 0; +} + +/*************************************************************************************************** +* Placeholders +***************************************************************************************************/ + +::-webkit-input-placeholder { color: var(--placeholder-color); } +::-moz-placeholder { color: var(--placeholder-color); } +:-ms-input-placeholder { color: var(--placeholder-color); } +:-moz-placeholder { color: var(--placeholder-color); } + +/*************************************************************************************************** +* Selections +***************************************************************************************************/ + +::-moz-selection { + background-color: var(--selection-bg-color); + color: var(--selection-color); + text-shadow: none !important; +} + +::selection { + background-color: var(--selection-bg-color); + color: var(--selection-color); + text-shadow: none !important; +} diff --git a/css/forms.css b/css/forms.css new file mode 100644 index 00000000..16aa05c9 --- /dev/null +++ b/css/forms.css @@ -0,0 +1,320 @@ +/*! Shoelace forms */ + +fieldset { + border: solid var(--fieldset-border-width) var(--fieldset-border-color); + border-radius: var(--fieldset-border-radius); + padding: var(--component-spacing) calc(var(--component-spacing) * 1.5); + margin-bottom: 1rem; +} + +fieldset legend { + font-weight: var(--font-weight-bold); + padding: 0 .25rem; +} + +label { + display: inline-block; + margin-bottom: .25rem; +} + +label + label { + margin-left: 1rem; +} + +input[type="color"], +input[type="date"], +input[type="datetime-local"], +input[type="email"], +input[type="month"], +input[type="number"], +input[type="password"], +input[type="search"], +input[type="tel"], +input[type="text"], +input[type="time"], +input[type="url"], +input[type="week"], +select, +textarea { + width: 100%; + font-family: var(--input-font-family); + font-size: var(--input-font-size); + font-weight: var(--input-font-weight); + color: var(--input-color); + border: solid var(--input-border-width) var(--input-border-color); + border-radius: var(--input-border-radius); + box-shadow: var(--input-box-shadow); + background-color: var(--input-bg-color); + height: var(--input-height); + line-height: 1; + vertical-align: middle; + display: block; + padding: calc(var(--component-spacing) * .5); + margin: 0; + transition: .1s border-color, .1s background-color, .1s color; + -moz-appearance: none; + -webkit-appearance: none; +} + +input[type="color"]:focus, +input[type="date"]:focus, +input[type="datetime-local"]:focus, +input[type="email"]:focus, +input[type="month"]:focus, +input[type="number"]:focus, +input[type="password"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="text"]:focus, +input[type="time"]:focus, +input[type="url"]:focus, +input[type="week"]:focus, +select:focus, +textarea:focus { + outline: none; + border-color: var(--input-border-focus-color); +} + +select { + position: relative; + background-image: url('data:image/svg+xml;charset=utf8,%3C?xml version="1.0" encoding="utf-8"?%3E%3Csvg width="1792" height="1792" fill="#000" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z"/%3E%3C/svg%3E'); + background-position: right .4rem center; + background-repeat: no-repeat; + background-size: .8rem; + padding-top: 0; + padding-bottom: 0; + padding-right: calc(var(--component-spacing) * .5 + 1rem); +} + +textarea { + height: auto; + resize: vertical; + line-height: var(--line-height); +} + +input[type="checkbox"], +input[type="radio"] { + padding: 0; +} + +input[disabled] { + opacity: .5; + cursor: not-allowed; +} + +input[readonly] { + background-color: var(--input-readonly-bg-color); +} + +input.input-small, +select.input-small { + font-size: calc(var(--input-font-size) * .8); + height: var(--input-height-small); +} + +textarea.input-small { + font-size: calc(var(--input-font-size) * .8); +} + +input.input-big, +select.input-big { + font-size: calc(var(--input-font-size) * 1.2); + height: var(--input-height-big); +} + +textarea.input-big { + font-size: calc(var(--input-font-size) * 1.2); +} + +/* Range styles courtesy of http://danielstern.ca/range.css/ */ +input[type=range] { + -webkit-appearance: none; + width: 100%; + margin: 1rem 0; +} + +input[type=range]:focus { + outline: none; +} + +input[type=range]::-webkit-slider-runnable-track { + width: 100%; + height: .5rem; + cursor: pointer; + background: var(--input-range-track-color); + border-radius: var(--input-border-radius); + border: none; + box-shadow: var(--input-range-track-box-shadow); +} + +input[type=range]::-webkit-slider-thumb { + border: none; + width: 1.5rem; + height: 1.5rem; + border-radius: 50%; + background: var(--input-range-thumb-color); + cursor: pointer; + -webkit-appearance: none; + margin-top: -.5rem; +} + +input[type=range]:focus::-webkit-slider-runnable-track { + background: var(--input-range-track-color); +} + +input[type=range]::-moz-range-track { + width: 100%; + height: .5rem; + cursor: pointer; + background: var(--input-range-track-color); + border-radius: var(--input-border-radius); + border: none; + box-shadow: var(--input-range-track-box-shadow); +} + +input[type=range]::-moz-range-thumb { + border: none; + height: 1.5rem; + width: 1.5rem; + border-radius: 50%; + background: var(--input-range-thumb-color); + cursor: pointer; +} + +input[type=range]::-ms-track { + width: 100%; + height: .5rem; + cursor: pointer; + background: transparent; + border-color: transparent; + color: transparent; +} + +input[type=range]::-ms-fill-lower { + background: #2f6ea5; + border: none; + border-radius: var(--input-border-radius); +} + +input[type=range]::-ms-fill-upper { + background: var(--input-range-track-color); + border: none; + border-radius: var(--input-border-radius); +} + +input[type=range]::-ms-thumb { + border: none; + height: .5rem; + width: .5rem; + border-radius: 50%; + background: var(--input-range-thumb-color); + cursor: pointer; +} + +input[type=range]:focus::-ms-fill-lower { + background: var(--input-range-track-color); +} + +input[type=range]:focus::-ms-fill-upper { + background: var(--input-range-track-color); +} + +/* Input fields */ +.input-block { + margin-bottom: 1rem; +} + +/* Input groups */ +.input-group { + width: 100%; + display: flex; + margin-bottom: 1rem; +} + +.input-group > input, +.input-group > button, +.input-group > .button { + border-radius: 0; +} + +.input-group > input:first-child, +.input-group > button:first-child, +.input-group > .button:first-child { + border-top-left-radius: var(--input-border-radius); + border-bottom-left-radius: var(--input-border-radius); +} + +.input-group > input:last-child, +.input-group > button:last-child, +.input-group > .button:last-child { + border-top-right-radius: var(--input-border-radius); + border-bottom-right-radius: var(--input-border-radius); +} + +.input-group > input + input { + border-left-width: 0; +} + +.input-group > input + input:focus { + border-left-width: var(--input-border-width); + margin-left: calc(var(--input-border-width) * -1); +} + +/* Input addons */ +.input-addon { + color: var(--text-muted); + height: var(--input-height); + line-height: var(--input-height); + border-top: solid var(--input-border-width) var(--input-border-color); + border-bottom: solid var(--input-border-width) var(--input-border-color); + background: #f8f8f8; + padding: 0 calc(var(--component-spacing) * .5); + white-space: nowrap; +} + +.input-addon-small { + font-size: calc(var(--input-font-size) * .8); + height: var(--input-height-small); + line-height: var(--input-height-small); +} + +.input-addon-big { + font-size: calc(var(--input-font-size) * 1.2); + height: var(--input-height-big); + line-height: var(--input-height-big); +} + +.input-addon:first-child { + border-left: solid var(--input-border-width) var(--input-border-color); + border-top-left-radius: var(--input-border-radius); + border-bottom-left-radius: var(--input-border-radius); +} + +.input-addon:last-child { + border-right: solid var(--input-border-width) var(--input-border-color); + border-top-right-radius: var(--input-border-radius); + border-bottom-right-radius: var(--input-border-radius); +} + +/* Validation */ +.input-invalid label { + color: var(--input-invalid-color) !important; +} + +.input-invalid, +.input-invalid input, +.input-invalid select { + color: var(--input-invalid-color) !important; + border-color: var(--input-invalid-border-color) !important; +} + +.input-valid label { + color: var(--input-valid-color) !important; +} + +.input-valid, +.input-valid input, +.input-valid select { + color: var(--input-valid-color) !important; + border-color: var(--input-valid-border-color) !important; +} diff --git a/css/loaders.css b/css/loaders.css new file mode 100644 index 00000000..212ef461 --- /dev/null +++ b/css/loaders.css @@ -0,0 +1,58 @@ +/*! Shoelace loaders */ + +@keyframes loader { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.loader, +.loader-bg::after { + width: var(--loader-size); + height: var(--loader-size); + border-radius: 50%; + border: solid var(--loader-width) var(--loader-bg-color); + border-top-color: var(--loader-color); + border-left-color: var(--loader-color); + display: inline-block; + animation: loader var(--loader-speed) linear infinite; + vertical-align: middle; + margin: var(--loader-spacing-y) var(--loader-spacing-x); +} + +.loader-small, +.loader-bg-small::after { + border-width: calc(var(--loader-width) / 2); + width: calc(var(--loader-size) / 2); + height: calc(var(--loader-size) / 2); +} + +.loader-big, +.loader-bg-big::after { + border-width: calc(var(--loader-width) * 1.5); + width: calc(var(--loader-size) * 2); + height: calc(var(--loader-size) * 2); +} + +.loader-bg { + position: relative !important; +} + +.loader-bg::after { + content: ''; + position: absolute; + top: calc(50% - var(--loader-size) / 2); + left: calc(50% - var(--loader-size) / 2); + margin: 0; +} + +.loader-bg-small::after { + position: absolute; + top: calc(50% - var(--loader-size) / 4); + left: calc(50% - var(--loader-size) / 4); +} + +.loader-bg-big::after { + position: absolute; + top: calc(50% - var(--loader-size) / 1); + left: calc(50% - var(--loader-size) / 1); +} diff --git a/css/normalize.css b/css/normalize.css new file mode 100644 index 00000000..57f93c84 --- /dev/null +++ b/css/normalize.css @@ -0,0 +1,447 @@ +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers (opinionated). + */ + +body { + margin: 0; +} + +/** + * Add the correct display in IE 9-. + */ + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ + +figcaption, +figure, +main { /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8. + */ + +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * 1. Remove the bottom border in Chrome 57- and Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. + */ + +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ + +details, /* 1 */ +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ + +template { + display: none; +} + +/* Hidden + ========================================================================== */ + +/** + * Add the correct display in IE 10-. + */ + +[hidden] { + display: none; +} \ No newline at end of file diff --git a/css/shoelace.css b/css/shoelace.css new file mode 100644 index 00000000..c7f8e4c3 --- /dev/null +++ b/css/shoelace.css @@ -0,0 +1,24 @@ +/*! + Shoelace.css - 1.0.0-beta1 + (c) A Beautiful Site, LLC + + Released under the MIT license + Source: https://github.com/claviska/shoelace-css +*/ + +/* Reset */ +@import url('normalize.css'); + +/* Shoelace variables and base styles */ +@import url('variables.css'); +@import url('content.css'); + +/* Components */ +@import url('alerts.css'); +@import url('badges.css'); +@import url('buttons.css'); +@import url('forms.css'); +@import url('loaders.css'); +@import url('tabs.css'); +@import url('tables.css'); +@import url('utilities.css'); diff --git a/css/tables.css b/css/tables.css new file mode 100644 index 00000000..e80a5b91 --- /dev/null +++ b/css/tables.css @@ -0,0 +1,42 @@ +/*! Shoelace tables */ + +.table { + width: 100%; + border-collapse: collapse; + margin-bottom: 1rem; +} + +.table caption { + caption-side: bottom; + font-size: var(--font-size-small); + color: var(--text-muted); + text-align: center; + padding-top: var(--table-spacing-y); +} + +.table th { + text-align: left; + background: var(--table-header-bg-color); + border-bottom: solid calc(var(--table-border-width) * 2) var(--table-border-color); + padding: var(--table-spacing-y) var(--table-spacing-x); +} + +.table td { + border-bottom: solid var(--table-border-width) var(--table-border-color); + padding: var(--table-spacing-y) var(--table-spacing-x); +} + +.table.table-striped tr:nth-child(odd) td { + background-color: var(--table-stripe-bg-color); +} + +.table.table-bordered { + border: solid var(--table-border-width) var(--table-border-color); +} + +.table.table-bordered th, +.table.table-bordered td { + border-style: solid; + border-width: var(--table-border-width); + border-color: var(--table-border-color); +} diff --git a/css/tabs.css b/css/tabs.css new file mode 100644 index 00000000..5a783268 --- /dev/null +++ b/css/tabs.css @@ -0,0 +1,52 @@ +/*! Shoelace tabs */ + +.tabs { + width: 100%; + margin-bottom: 1rem; +} + +.tabs-nav { + margin-bottom: 1rem; + user-select: none; +} + +.tabs-nav a { + color: var(--tab-color); + text-decoration: none; + background-color: var(--tab-bg-color); + border-radius: var(--tab-border-radius); + padding: var(--tab-spacing-y) var(--tab-spacing-x); + display: inline-block; +} + +.tabs-nav a:hover { + color: var(--tab-color-hover); + background-color: var(--tab-bg-color-hover); + text-decoration: none; +} + +.tabs-nav a.active { + color: var(--tab-color-active); + background-color: var(--tab-bg-color-active); + cursor: default; +} + +.tabs-nav a.disabled { + color: var(--tab-color-disabled); + background-color: var(--tab-bg-color-disabled); + cursor: not-allowed; +} + +.tabs-pane { + border: solid var(--tab-pane-border-width) var(--tab-pane-border-color); + border-radius: .25rem; + padding: var(--tab-pane-spacing-y) var(--tab-pane-spacing-x); +} + +.tabs-pane:not(.active) { + display: none; +} + +.tabs-pane :last-child { + margin-bottom: 0; +} diff --git a/css/utilities.css b/css/utilities.css new file mode 100644 index 00000000..b24c290d --- /dev/null +++ b/css/utilities.css @@ -0,0 +1,174 @@ +/*! Shoelace utilties */ + +/*************************************************************************************************** +* Float utilities +***************************************************************************************************/ + +.clearfix::before, +.clearfix::after { + content: ''; + display: table; +} + +.clearfix::after { + clear: both; +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +/*************************************************************************************************** +* Sizing utilities +***************************************************************************************************/ + +.width-0 { width: 0% !important; } +.width-5 { width: 5% !important; } +.width-10 { width: 10% !important; } +.width-15 { width: 15% !important; } +.width-20 { width: 10% !important; } +.width-25 { width: 25% !important; } +.width-30 { width: 30% !important; } +.width-35 { width: 35% !important; } +.width-40 { width: 40% !important; } +.width-45 { width: 45% !important; } +.width-50 { width: 50% !important; } +.width-55 { width: 55% !important; } +.width-60 { width: 60% !important; } +.width-65 { width: 65% !important; } +.width-70 { width: 70% !important; } +.width-75 { width: 75% !important; } +.width-80 { width: 80% !important; } +.width-85 { width: 85% !important; } +.width-90 { width: 90% !important; } +.width-95 { width: 95% !important; } +.width-100 { width: 100% !important; } + +.height-0 { height: 0% !important; } +.height-5 { height: 5% !important; } +.height-10 { height: 10% !important; } +.height-15 { height: 15% !important; } +.height-20 { height: 10% !important; } +.height-25 { height: 25% !important; } +.height-30 { height: 30% !important; } +.height-35 { height: 35% !important; } +.height-40 { height: 40% !important; } +.height-45 { height: 45% !important; } +.height-50 { height: 50% !important; } +.height-55 { height: 55% !important; } +.height-60 { height: 60% !important; } +.height-65 { height: 65% !important; } +.height-70 { height: 70% !important; } +.height-75 { height: 75% !important; } +.height-80 { height: 80% !important; } +.height-85 { height: 85% !important; } +.height-90 { height: 90% !important; } +.height-95 { height: 95% !important; } +.height-100 { height: 100% !important; } + +/*************************************************************************************************** +* Spacing utilities +***************************************************************************************************/ + +.m-none { margin: 0 !important; } +.m-x-none { margin-left: 0 !important; margin-right: 0 !important; } +.m-y-none { margin-top: 0 !important; margin-bottom: 0 !important; } +.m-t-none { margin-top: 0 !important; } +.m-r-none { margin-right: 0 !important; } +.m-b-none { margin-bottom: 0 !important; } +.m-l-none { margin-left: 0 !important; } + +.m-small { margin: var(--spacing-small) !important; } +.m-x-small { margin-left: var(--spacing-small) !important; margin-right: var(--spacing-small) !important; } +.m-y-small { margin-top: var(--spacing-small) !important; margin-bottom: var(--spacing-small) !important; } +.m-t-small { margin-top: var(--spacing-small) !important; } +.m-r-small { margin-right: var(--spacing-small) !important; } +.m-b-small { margin-bottom: var(--spacing-small) !important; } +.m-l-small { margin-left: var(--spacing-small) !important; } + +.m-medium { margin: var(--spacing-medium) !important; } +.m-x-medium { margin-left: var(--spacing-medium) !important; margin-right: var(--spacing-medium) !important; } +.m-y-medium { margin-top: var(--spacing-medium) !important; margin-bottom: var(--spacing-medium) !important; } +.m-t-medium { margin-top: var(--spacing-medium) !important; } +.m-r-medium { margin-right: var(--spacing-medium) !important; } +.m-b-medium { margin-bottom: var(--spacing-medium) !important; } +.m-l-medium { margin-left: var(--spacing-medium) !important; } + +.m-big { margin: var(--spacing-big) !important; } +.m-x-big { margin-left: var(--spacing-big) !important; margin-right: var(--spacing-big) !important; } +.m-y-big { margin-top: var(--spacing-big) !important; margin-bottom: var(--spacing-big) !important; } +.m-t-big { margin-top: var(--spacing-big) !important; } +.m-r-big { margin-right: var(--spacing-big) !important; } +.m-b-big { margin-bottom: var(--spacing-big) !important; } +.m-l-big { margin-left: var(--spacing-big) !important; } + +.p-none { padding: 0 !important; } +.p-x-none { padding-left: 0 !important; padding-right: 0 !important; } +.p-y-none { padding-top: 0 !important; padding-bottom: 0 !important; } +.p-t-none { padding-top: 0 !important; } +.p-r-none { padding-right: 0 !important; } +.p-b-none { padding-bottom: 0 !important; } +.p-l-none { padding-left: 0 !important; } + +.p-small { padding: var(--spacing-small) !important; } +.p-x-small { padding-left: var(--spacing-small) !important; padding-right: var(--spacing-small) !important; } +.p-y-small { padding-top: var(--spacing-small) !important; padding-bottom: var(--spacing-small) !important; } +.p-t-small { padding-top: var(--spacing-small) !important; } +.p-r-small { padding-right: var(--spacing-small) !important; } +.p-b-small { padding-bottom: var(--spacing-small) !important; } +.p-l-small { padding-left: var(--spacing-small) !important; } + +.p-medium { padding: var(--spacing-medium) !important; } +.p-x-medium { padding-left: var(--spacing-medium) !important; padding-right: var(--spacing-medium) !important; } +.p-y-medium { padding-top: var(--spacing-medium) !important; padding-bottom: var(--spacing-medium) !important; } +.p-t-medium { padding-top: var(--spacing-medium) !important; } +.p-r-medium { padding-right: var(--spacing-medium) !important; } +.p-b-medium { padding-bottom: var(--spacing-medium) !important; } +.p-l-medium { padding-left: var(--spacing-medium) !important; } + +.p-big { padding: var(--spacing-big) !important; } +.p-x-big { padding-left: var(--spacing-big) !important; padding-right: var(--spacing-big) !important; } +.p-y-big { padding-top: var(--spacing-big) !important; padding-bottom: var(--spacing-big) !important; } +.p-t-big { padding-top: var(--spacing-big) !important; } +.p-r-big { padding-right: var(--spacing-big) !important; } +.p-b-big { padding-bottom: var(--spacing-big) !important; } +.p-l-big { padding-left: var(--spacing-big) !important; } + +.m-x-auto { margin-left: auto !important; margin-right: auto !important; } + +/*************************************************************************************************** +* Text utilities +***************************************************************************************************/ + +/* Text color */ +.text-success { color: var(--state-success) !important; } +.text-info { color: var(--state-info) !important; } +.text-warning { color: var(--state-warning) !important; } +.text-danger { color: var(--state-danger) !important; } +.text-muted { color: var(--text-muted) !important; } + +/* Text size */ +.text-small { font-size: var(--font-size-small) !important; } +.text-big { font-size: var(--font-size-big) !important; } + +/* Text style */ +.text-bold { font-weight: var(--font-weight-bold) !important; } +.text-italic { font-style: italic !important; } + +/* Text alignment */ +.text-left { text-align: left !important; } +.text-right { text-align: right !important; } +.text-center { text-align: center !important; } +.text-justify { text-align: justify !important; } + +/* Text case */ +.text-lowercase { text-transform: lowercase !important; } +.text-uppercase { text-transform: uppercase !important; } +.text-capitalize { text-transform: capitalize !important; } + +/* Text wrapping */ +.text-nowrap { white-space: nowrap !important; } diff --git a/css/variables.css b/css/variables.css new file mode 100644 index 00000000..5eb683b6 --- /dev/null +++ b/css/variables.css @@ -0,0 +1,219 @@ +/*! Shoelace variables */ + +:root { + /* Fonts */ + --font-family-sans-serif: sans-serif; + --font-family-serif: serif; + --font-family-system: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --font-family-monospace: Menlo, Consolas, "DejaVu Sans Mono", monospace; + + /* Colors (most courtesy of http://clrs.cc/) */ + --color-primary: tomato; + --color-white: white; + --color-navy: #001f3f; + --color-blue: #0074d9; + --color-aqua: #7fdbff; + --color-teal: #39cccc; + --color-olive: #3d9970; + --color-green: #2ecc40; + --color-lime: #01ff70; + --color-yellow: #ffdc00; + --color-orange: #ff851b; + --color-red: #ff4136; + --color-maroon: #85144b; + --color-fuchsia: #f012be; + --color-purple: #b10dc9; + --color-black: #111; + --color-gray: #aaa; + --color-silver: #ddd; + + /* States */ + --state-success: var(--color-green); + --state-info: var(--color-aqua); + --state-warning: var(--color-orange); + --state-danger: var(--color-red); + --state-inverse: var(--color-black); + + /* Components */ + --component-bg-color: #f2f2f2; + --component-border-color: #ddd; + --component-border-radius: .25rem; + --component-border-width: 1px; + --component-spacing: 1rem; + --component-spacing-big: 2rem; + --component-spacing-small: .5rem; + + /* Content */ + --body-bg-color: var(--color-white); + --body-color: var(--color-black); + --font-family: var(--font-family-system); + --font-size: 1rem; /* Most browsers use a default font size of 16px */ + --font-size-big: 1.25rem; + --font-size-small: .875rem; + --font-weight-light: 300; + --font-weight: 400; + --font-weight-bold: 700; + --line-height: 1.5; + --text-muted: var(--color-gray); + + --code-font-size: 90%; + --code-color: var(--color-olive); + --code-border-radius: var(--component-border-radius); + --code-bg-color: var(--component-bg-color); + --code-spacing-x: calc(var(--font-size) * .4); + --code-spacing-y: calc(var(--font-size) * .2); + + --headings-font-family: var(--font-family-system); + --headings-font-weight: var(--font-weight-light); + --headings-line-height: 1.1; + --headings-margin-bottom: .5rem; + --headings-color: inherit; + --headings-font-size-h1: 2.5rem; + --headings-font-size-h2: 2rem; + --headings-font-size-h3: 1.75rem; + --headings-font-size-h4: 1.5rem; + --headings-font-size-h5: 1.25rem; + --headings-font-size-h6: 1rem; + + --hr-width: 1px; + + --kbd-font-size: 90%; + --kbd-color: var(--color-white); + --kbd-border-radius: var(--component-border-radius); + --kbd-bg-color: var(--color-black); + --kbd-spacing-x: calc(var(--font-size) * .4); + --kbd-spacing-y: calc(var(--font-size) * .2); + + --link-color: var(--color-primary); + --link-text-decoration: none; + --link-color-hover: var(--link-color); + --link-text-decoration-hover: underline; + + --mark-color: inherit; + --mark-bg-color: var(--color-yellow); + --mark-spacing-x: calc(var(--font-size) * .4); + --mark-spacing-y: calc(var(--font-size) * .2); + + --placeholder-color: var(--text-muted); + + --pre-color: var(--code-color); + --pre-border-radius: var(--component-border-radius); + --pre-bg-color: var(--code-bg-color); + --pre-max-height: none; + + --selection-color: var(--color-white); + --selection-bg-color: var(--color-primary); + + /* Alerts */ + --alert-color: var(--color-white); + --alert-border-radius: var(--component-border-radius); + --alert-bg-color-primary: var(--color-primary); + --alert-bg-color-success: var(--state-success); + --alert-bg-color-info: var(--state-info); + --alert-bg-color-warning: var(--state-warning); + --alert-bg-color-danger: var(--state-danger); + --alert-bg-color-inverse: var(--state-inverse); + --alert-spacing-x: var(--component-spacing); + --alert-spacing-y: var(--component-spacing); + + /* Badges */ + --badge-font-size: .9rem; + --badge-color: var(--color-white); + --badge-border-radius: var(--component-border-radius); + --badge-bg-color-primary: var(--color-primary); + --badge-bg-color-success: var(--state-success); + --badge-bg-color-info: var(--state-info); + --badge-bg-color-warning: var(--state-warning); + --badge-bg-color-danger: var(--state-danger); + --badge-bg-color-inverse: var(--state-inverse); + --badge-spacing-x: calc(var(--component-spacing) * .4); + --badge-spacing-y: calc(var(--component-spacing) * .15); + + /* Buttons */ + --button-font-family: inherit; + --button-font-weight: inherit; + --button-font-size: var(--font-size); + --button-color: var(--color-white); + --button-border-radius: var(--component-border-radius); + --button-box-shadow: inset 0 2px 0 rgba(255, 255, 255, .1), inset 0 -2px 0 rgba(0, 0, 0, .1); + --button-box-shadow-hover: inset 0 2px 5rem rgba(0, 0, 0, .1), inset 0 -2px 0 rgba(0, 0, 0, .1); + --button-box-shadow-active: inset 0 2px 5rem rgba(0, 0, 0, .1), inset 0 2px 0 rgba(0, 0, 0, .1); + --button-bg-color-primary: var(--color-primary); + --button-bg-color-success: var(--state-success); + --button-bg-color-info: var(--state-info); + --button-bg-color-warning: var(--state-warning); + --button-bg-color-danger: var(--state-danger); + --button-bg-color-inverse: var(--state-inverse); + + /* Forms */ + --fieldset-border-color: var(--component-border-color); + --fieldset-border-width: var(--component-border-width); + --fieldset-border-radius: var(--component-border-radius); + --fieldset-spacing-x: var(--component-spacing); + --fieldset-spacing-y: var(--component-spacing); + + --input-font-family: inherit; + --input-font-size: var(--font-size); + --input-font-weight: inherit; + --input-height: 2rem; + --input-height-big: 2.75rem; + --input-height-small: 1.25rem; + --input-color: var(--body-color); + --input-border-color: var(--component-border-color); + --input-border-focus-color: var(--color-primary); + --input-border-width: 1px; + --input-border-radius: var(--component-border-radius); + --input-bg-color: var(--color-white); + --input-box-shadow: inset 0 1px 0 rgba(0, 0, 0, .05); + --input-readonly-bg-color: var(--component-bg-color); + --input-range-track-color: var(--component-bg-color); + --input-range-track-box-shadow: inset 0 1px 0 rgba(0, 0, 0, .05); + --input-range-thumb-color: var(--color-primary); + --input-range-thumb-height: 2rem; + + --input-invalid-color: var(--state-danger); + --input-invalid-border-color: var(--state-danger); + --input-valid-color: var(--state-success); + --input-valid-border-color: var(--state-success); + + /* Loaders */ + --loader-bg-color: var(--component-bg-color); + --loader-color: var(--color-primary); + --loader-size: 2rem; + --loader-width: .25rem; + --loader-speed: 750ms; + --loader-spacing-x: var(--component-spacing-small); + --loader-spacing-y: 0; + + /* Spacing Utilties */ + --spacing-small: var(--component-spacing); + --spacing-medium: calc(var(--component-spacing) * 2); + --spacing-big: calc(var(--component-spacing) * 4); + + /* Tabs */ + --tab-bg-color: var(--body-bg); + --tab-bg-color-hover: var(--body-bg); + --tab-bg-color-active: var(--link-color); + --tab-bg-color-disabled: var(--body-bg); + --tab-border-radius: var(--component-border-radius); + --tab-color: var(--link-color); + --tab-color-hover: var(--link-color-hover); + --tab-color-active: var(--color-white); + --tab-color-disabled: var(--text-muted); + --tab-spacing-x: var(--component-spacing); + --tab-spacing-y: calc(var(--component-spacing) / 2); + + --tab-pane-border-color: var(--component-border-color); + --tab-pane-border-radius: var(--component-border-radius); + --tab-pane-border-width: var(--component-border-width); + --tab-pane-spacing-x: var(--component-spacing); + --tab-pane-spacing-y: var(--component-spacing); + + /* Tables */ + --table-border-color: var(--component-border-color); + --table-border-width: var(--component-border-width); + --table-header-bg-color: transparent; + --table-stripe-bg-color: var(--component-bg-color); + --table-spacing-x: calc(var(--component-spacing-small) * 1.5); + --table-spacing-y: var(--component-spacing-small); +} diff --git a/dist/shoelace.min.css b/dist/shoelace.min.css new file mode 100644 index 00000000..5fd5fad1 --- /dev/null +++ b/dist/shoelace.min.css @@ -0,0 +1,323 @@ +/*! + Shoelace.css - 1.0.0-beta1 + (c) A Beautiful Site, LLC + + Released under the MIT license + Source: https://github.com/claviska/shoelace-css +*/ +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ +html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} +body{margin:0} +article,aside,footer,header,nav,section{display:block} +h1{font-size:2em;margin:.67em 0} +figcaption,figure,main{display:block} +figure{margin:1em 40px} +hr{box-sizing:content-box;height:0;overflow:visible} +pre{font-family:monospace,monospace;font-size:1em} +a{background-color:transparent;-webkit-text-decoration-skip:objects} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:inherit} +b,strong{font-weight:bolder} +code,kbd,samp{font-family:monospace,monospace;font-size:1em} +dfn{font-style:italic} +mark{background-color:#ff0;color:#000} +small{font-size:80%} +sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-.25em} +sup{top:-.5em} +audio,video{display:inline-block} +audio:not([controls]){display:none;height:0} +img{border-style:none} +svg:not(:root){overflow:hidden} +button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0} +button,input{overflow:visible} +button,select{text-transform:none} +[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button} +[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0} +[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText} +fieldset{padding:.35em .75em .625em} +legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal} +progress{display:inline-block;vertical-align:baseline} +textarea{overflow:auto} +[type=checkbox],[type=radio]{box-sizing:border-box;padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +details,menu{display:block} +summary{display:list-item} +canvas{display:inline-block} +template{display:none} +[hidden]{display:none} +/*! Shoelace variables */ +:root{--font-family-sans-serif:sans-serif;--font-family-serif:serif;--font-family-system:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-family-monospace:Menlo,Consolas,"DejaVu Sans Mono",monospace;--color-primary:tomato;--color-white:white;--color-navy:#001f3f;--color-blue:#0074d9;--color-aqua:#7fdbff;--color-teal:#39cccc;--color-olive:#3d9970;--color-green:#2ecc40;--color-lime:#01ff70;--color-yellow:#ffdc00;--color-orange:#ff851b;--color-red:#ff4136;--color-maroon:#85144b;--color-fuchsia:#f012be;--color-purple:#b10dc9;--color-black:#111;--color-gray:#aaa;--color-silver:#ddd;--state-success:var(--color-green);--state-info:var(--color-aqua);--state-warning:var(--color-orange);--state-danger:var(--color-red);--state-inverse:var(--color-black);--component-bg-color:#f2f2f2;--component-border-color:#ddd;--component-border-radius:.25rem;--component-border-width:1px;--component-spacing:1rem;--component-spacing-big:2rem;--component-spacing-small:.5rem;--body-bg-color:var(--color-white);--body-color:var(--color-black);--font-family:var(--font-family-system);--font-size:1rem;--font-size-big:1.25rem;--font-size-small:.875rem;--font-weight-light:300;--font-weight:400;--font-weight-bold:700;--line-height:1.5;--text-muted:var(--color-gray);--code-font-size:90%;--code-color:var(--color-olive);--code-border-radius:var(--component-border-radius);--code-bg-color:var(--component-bg-color);--code-spacing-x:calc(var(--font-size) * .4);--code-spacing-y:calc(var(--font-size) * .2);--headings-font-family:var(--font-family-system);--headings-font-weight:var(--font-weight-light);--headings-line-height:1.1;--headings-margin-bottom:.5rem;--headings-color:inherit;--headings-font-size-h1:2.5rem;--headings-font-size-h2:2rem;--headings-font-size-h3:1.75rem;--headings-font-size-h4:1.5rem;--headings-font-size-h5:1.25rem;--headings-font-size-h6:1rem;--hr-width:1px;--kbd-font-size:90%;--kbd-color:var(--color-white);--kbd-border-radius:var(--component-border-radius);--kbd-bg-color:var(--color-black);--kbd-spacing-x:calc(var(--font-size) * .4);--kbd-spacing-y:calc(var(--font-size) * .2);--link-color:var(--color-primary);--link-text-decoration:none;--link-color-hover:var(--link-color);--link-text-decoration-hover:underline;--mark-color:inherit;--mark-bg-color:var(--color-yellow);--mark-spacing-x:calc(var(--font-size) * .4);--mark-spacing-y:calc(var(--font-size) * .2);--placeholder-color:var(--text-muted);--pre-color:var(--code-color);--pre-border-radius:var(--component-border-radius);--pre-bg-color:var(--code-bg-color);--pre-max-height:none;--selection-color:var(--color-white);--selection-bg-color:var(--color-primary);--alert-color:var(--color-white);--alert-border-radius:var(--component-border-radius);--alert-bg-color-primary:var(--color-primary);--alert-bg-color-success:var(--state-success);--alert-bg-color-info:var(--state-info);--alert-bg-color-warning:var(--state-warning);--alert-bg-color-danger:var(--state-danger);--alert-bg-color-inverse:var(--state-inverse);--alert-spacing-x:var(--component-spacing);--alert-spacing-y:var(--component-spacing);--badge-font-size:.9rem;--badge-color:var(--color-white);--badge-border-radius:var(--component-border-radius);--badge-bg-color-primary:var(--color-primary);--badge-bg-color-success:var(--state-success);--badge-bg-color-info:var(--state-info);--badge-bg-color-warning:var(--state-warning);--badge-bg-color-danger:var(--state-danger);--badge-bg-color-inverse:var(--state-inverse);--badge-spacing-x:calc(var(--component-spacing) * .4);--badge-spacing-y:calc(var(--component-spacing) * .15);--button-font-family:inherit;--button-font-weight:inherit;--button-font-size:var(--font-size);--button-color:var(--color-white);--button-border-radius:var(--component-border-radius);--button-box-shadow:inset 0 2px 0 rgba(255, 255, 255, .1),inset 0 -2px 0 rgba(0, 0, 0, .1);--button-box-shadow-hover:inset 0 2px 5rem rgba(0, 0, 0, .1),inset 0 -2px 0 rgba(0, 0, 0, .1);--button-box-shadow-active:inset 0 2px 5rem rgba(0, 0, 0, .1),inset 0 2px 0 rgba(0, 0, 0, .1);--button-bg-color-primary:var(--color-primary);--button-bg-color-success:var(--state-success);--button-bg-color-info:var(--state-info);--button-bg-color-warning:var(--state-warning);--button-bg-color-danger:var(--state-danger);--button-bg-color-inverse:var(--state-inverse);--fieldset-border-color:var(--component-border-color);--fieldset-border-width:var(--component-border-width);--fieldset-border-radius:var(--component-border-radius);--fieldset-spacing-x:var(--component-spacing);--fieldset-spacing-y:var(--component-spacing);--input-font-family:inherit;--input-font-size:var(--font-size);--input-font-weight:inherit;--input-height:2rem;--input-height-big:2.75rem;--input-height-small:1.25rem;--input-color:var(--body-color);--input-border-color:var(--component-border-color);--input-border-focus-color:var(--color-primary);--input-border-width:1px;--input-border-radius:var(--component-border-radius);--input-bg-color:var(--color-white);--input-box-shadow:inset 0 1px 0 rgba(0, 0, 0, .05);--input-readonly-bg-color:var(--component-bg-color);--input-range-track-color:var(--component-bg-color);--input-range-track-box-shadow:inset 0 1px 0 rgba(0, 0, 0, .05);--input-range-thumb-color:var(--color-primary);--input-range-thumb-height:2rem;--input-invalid-color:var(--state-danger);--input-invalid-border-color:var(--state-danger);--input-valid-color:var(--state-success);--input-valid-border-color:var(--state-success);--loader-bg-color:var(--component-bg-color);--loader-color:var(--color-primary);--loader-size:2rem;--loader-width:.25rem;--loader-speed:750ms;--loader-spacing-x:var(--component-spacing-small);--loader-spacing-y:0;--spacing-small:var(--component-spacing);--spacing-medium:calc(var(--component-spacing) * 2);--spacing-big:calc(var(--component-spacing) * 4);--tab-bg-color:var(--body-bg);--tab-bg-color-hover:var(--body-bg);--tab-bg-color-active:var(--link-color);--tab-bg-color-disabled:var(--body-bg);--tab-border-radius:var(--component-border-radius);--tab-color:var(--link-color);--tab-color-hover:var(--link-color-hover);--tab-color-active:var(--color-white);--tab-color-disabled:var(--text-muted);--tab-spacing-x:var(--component-spacing);--tab-spacing-y:calc(var(--component-spacing) / 2);--tab-pane-border-color:var(--component-border-color);--tab-pane-border-radius:var(--component-border-radius);--tab-pane-border-width:var(--component-border-width);--tab-pane-spacing-x:var(--component-spacing);--tab-pane-spacing-y:var(--component-spacing);--table-border-color:var(--component-border-color);--table-border-width:var(--component-border-width);--table-header-bg-color:transparent;--table-stripe-bg-color:var(--component-bg-color);--table-spacing-x:calc(var(--component-spacing-small) * 1.5);--table-spacing-y:var(--component-spacing-small)} +/*! Shoelace content */ +html{box-sizing:border-box} +*,:after,:before{box-sizing:inherit} +body{background:var(--body-bg-color);font-family:var(--font-family);font-weight:var(--font-weight);font-size:var(--font-size);font-weight:var(--font-weight-normal);color:var(--body-color);line-height:var(--line-height)} +a{color:var(--link-color);text-decoration:var(--link-text-decoration)} +a:hover{color:var(--link-color-hover);text-decoration:var(--link-text-decoration-hover)} +abbr[title]{text-decoration:none;border-bottom:dashed 2px currentcolor} +b,strong{font-weight:var(--font-weight-bold)} +big{font-size:var(--font-size-big)} +blockquote{font-size:var(--font-size-big);border-left:solid .4rem var(--component-border-color);padding:.5rem .5rem .5rem 1rem;margin-bottom:1rem;margin-left:0} +code{font-family:var(--font-family-monospace);font-size:var(--code-font-size);color:var(--code-color);background-color:var(--code-bg-color);border-radius:var(--code-border-radius);padding:var(--code-spacing-y) var(--code-spacing-x)} +del{color:var(--color-red)} +figure{margin-top:0;margin-bottom:1rem} +h1,h2,h3,h4,h5,h6{font-family:var(--headings-font-family);font-weight:var(--headings-font-weight);line-height:var(--headings-line-height);color:var(--headings-color);margin-top:0;margin-bottom:var(--headings-margin-bottom)} +h1{font-size:var(--headings-font-size-h1)} +h2{font-size:var(--headings-font-size-h2)} +h3{font-size:var(--headings-font-size-h3)} +h4{font-size:var(--headings-font-size-h4)} +h5{font-size:var(--headings-font-size-h5)} +h6{font-size:var(--headings-font-size-h6)} +hr{border:none;border-top:solid var(--hr-width) var(--component-border-color);margin-top:var(--component-spacing-big);margin-bottom:var(--component-spacing-big)} +img{height:auto;max-width:100%;vertical-align:middle} +ins{color:var(--color-green)} +kbd{font-family:var(--font-family-monospace);font-size:var(--kbd-font-size);color:var(--kbd-color);background-color:var(--kbd-bg-color);border-radius:var(--kbd-border-radius);padding:var(--kbd-spacing-y) var(--kbd-spacing-x)} +mark{color:var(--mark-color);background-color:var(--mark-bg-color);padding:var(--mark-spacing-y) var(--mark-spacing-x)} +p{margin-top:0;margin-bottom:1rem} +pre{max-height:var(--pre-max-height);overflow-y:auto;font-family:var(--font-family-monospace);color:var(--pre-color);background-color:var(--pre-bg-color);border-radius:var(--pre-border-radius);padding:1rem;margin-top:0;margin-bottom:1rem} +small{font-size:var(--font-size-small)} +dl,ol,ul{line-height:var(--line-height);margin-top:0;margin-bottom:1rem} +dt{font-weight:var(--font-weight-bold)} +dd{margin-left:0;margin-bottom:1rem} +ol ol,ol ul,ul ol,ul ul{margin-bottom:0} +::-webkit-input-placeholder{color:var(--placeholder-color)} +::-moz-placeholder{color:var(--placeholder-color)} +:-ms-input-placeholder{color:var(--placeholder-color)} +:-moz-placeholder{color:var(--placeholder-color)} +::-moz-selection{background-color:var(--selection-bg-color);color:var(--selection-color);text-shadow:none!important} +::selection{background-color:var(--selection-bg-color);color:var(--selection-color);text-shadow:none!important} +/*! Shoelace alerts */ +.alert{color:var(--alert-color);background-color:var(--alert-bg-color-primary);border-radius:var(--alert-border-radius);padding:var(--alert-spacing-y) var(--alert-spacing-x);margin-top:0;margin-bottom:1rem} +.alert:empty{display:none} +.alert-success{background-color:var(--alert-bg-color-success)} +.alert-info{background-color:var(--alert-bg-color-info)} +.alert-warning{background-color:var(--alert-bg-color-warning)} +.alert-danger{background-color:var(--alert-bg-color-danger)} +.alert-inverse{background-color:var(--alert-bg-color-inverse)} +.alert a{color:inherit;text-decoration:underline} +.alert :last-child{margin-bottom:0} +/*! Shoelace badges */ +.badge{font-size:var(--badge-font-size);color:var(--badge-color);background-color:var(--badge-bg-color-primary);border-radius:var(--badge-border-radius);padding:var(--badge-spacing-y) var(--badge-spacing-x);vertical-align:baseline;display:inline-block} +.badge:empty{display:none} +.badge-success{background-color:var(--badge-bg-color-success)} +.badge-info{background-color:var(--badge-bg-color-info)} +.badge-warning{background-color:var(--badge-bg-color-warning)} +.badge-danger{background-color:var(--badge-bg-color-danger)} +.badge-inverse{background-color:var(--badge-bg-color-inverse)} +/*! Shoelace buttons */ +.button,button{font-family:var(--button-font-family);font-size:var(--button-font-size);font-weight:var(--button-font-weight);text-align:center;text-decoration:none;color:var(--button-color);background-color:var(--button-bg-color-primary);border-radius:var(--button-border-radius);border:none;height:var(--input-height);line-height:1;user-select:none;vertical-align:middle;white-space:nowrap;padding:calc(var(--component-spacing) * .5) calc(var(--component-spacing) * .75);box-shadow:var(--button-box-shadow);cursor:pointer;display:inline-block;transition:.1s box-shadow,.1s background-color,.1s color} +.button-small{font-size:calc(var(--button-font-size) * .8);height:var(--input-height-small);padding:calc(var(--component-spacing) * .25) calc(var(--component-spacing) * .5)} +.button-big{font-size:calc(var(--button-font-size) * 1.2);height:var(--input-height-big);padding:calc(var(--component-spacing) * .75) calc(var(--component-spacing) * 1)} +.button-block{width:100%!important;display:block} +.button-block+.button-block{margin-top:1rem} +.button:hover,button:hover{color:var(--button-color);text-decoration:none} +.button:hover:not(.disabled),button:hover:not(:disabled){box-shadow:var(--button-box-shadow-hover)} +.button.active:not(.disabled),button:active:not(:disabled){color:var(--button-color);box-shadow:var(--button-box-shadow-active)} +.button.disabled,button:disabled{opacity:.5;cursor:not-allowed} +.button-success{background-color:var(--button-bg-color-success)} +.button-info{background-color:var(--button-bg-color-info)} +.button-warning{background-color:var(--button-bg-color-warning)} +.button-danger{background-color:var(--button-bg-color-danger)} +.button-inverse{background-color:var(--button-bg-color-inverse)} +.button-link{background-color:transparent;color:var(--link-color);text-decoration:var(--link-text-decoration);box-shadow:none} +.button-link:hover:not(:disabled){background-color:transparent;color:var(--link-color-hover);text-decoration:var(--link-text-decoration-hover);box-shadow:none} +label.button input[type=file]{display:none} +/*! Shoelace forms */ +fieldset{border:solid var(--fieldset-border-width) var(--fieldset-border-color);border-radius:var(--fieldset-border-radius);padding:var(--component-spacing) calc(var(--component-spacing) * 1.5);margin-bottom:1rem} +fieldset legend{font-weight:var(--font-weight-bold);padding:0 .25rem} +label{display:inline-block;margin-bottom:.25rem} +label+label{margin-left:1rem} +input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{width:100%;font-family:var(--input-font-family);font-size:var(--input-font-size);font-weight:var(--input-font-weight);color:var(--input-color);border:solid var(--input-border-width) var(--input-border-color);border-radius:var(--input-border-radius);box-shadow:var(--input-box-shadow);background-color:var(--input-bg-color);height:var(--input-height);line-height:1;vertical-align:middle;display:block;padding:calc(var(--component-spacing) * .5);margin:0;transition:.1s border-color,.1s background-color,.1s color;-moz-appearance:none;-webkit-appearance:none} +input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{outline:0;border-color:var(--input-border-focus-color)} +select{position:relative;background-image:url('data:image/svg+xml;charset=utf8,%3C?xml version="1.0" encoding="utf-8"?%3E%3Csvg width="1792" height="1792" fill="#000" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z"/%3E%3C/svg%3E');background-position:right .4rem center;background-repeat:no-repeat;background-size:.8rem;padding-top:0;padding-bottom:0;padding-right:calc(var(--component-spacing) * .5 + 1rem)} +textarea{height:auto;resize:vertical;line-height:var(--line-height)} +input[type=checkbox],input[type=radio]{padding:0} +input[disabled]{opacity:.5;cursor:not-allowed} +input[readonly]{background-color:var(--input-readonly-bg-color)} +input.input-small,select.input-small{font-size:calc(var(--input-font-size) * .8);height:var(--input-height-small)} +textarea.input-small{font-size:calc(var(--input-font-size) * .8)} +input.input-big,select.input-big{font-size:calc(var(--input-font-size) * 1.2);height:var(--input-height-big)} +textarea.input-big{font-size:calc(var(--input-font-size) * 1.2)} +input[type=range]{-webkit-appearance:none;width:100%;margin:1rem 0} +input[type=range]:focus{outline:0} +input[type=range]::-webkit-slider-runnable-track{width:100%;height:.5rem;cursor:pointer;background:var(--input-range-track-color);border-radius:var(--input-border-radius);border:none;box-shadow:var(--input-range-track-box-shadow)} +input[type=range]::-webkit-slider-thumb{border:none;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--input-range-thumb-color);cursor:pointer;-webkit-appearance:none;margin-top:-.5rem} +input[type=range]:focus::-webkit-slider-runnable-track{background:var(--input-range-track-color)} +input[type=range]::-moz-range-track{width:100%;height:.5rem;cursor:pointer;background:var(--input-range-track-color);border-radius:var(--input-border-radius);border:none;box-shadow:var(--input-range-track-box-shadow)} +input[type=range]::-moz-range-thumb{border:none;height:1.5rem;width:1.5rem;border-radius:50%;background:var(--input-range-thumb-color);cursor:pointer} +input[type=range]::-ms-track{width:100%;height:.5rem;cursor:pointer;background:0 0;border-color:transparent;color:transparent} +input[type=range]::-ms-fill-lower{background:#2f6ea5;border:none;border-radius:var(--input-border-radius)} +input[type=range]::-ms-fill-upper{background:var(--input-range-track-color);border:none;border-radius:var(--input-border-radius)} +input[type=range]::-ms-thumb{border:none;height:.5rem;width:.5rem;border-radius:50%;background:var(--input-range-thumb-color);cursor:pointer} +input[type=range]:focus::-ms-fill-lower{background:var(--input-range-track-color)} +input[type=range]:focus::-ms-fill-upper{background:var(--input-range-track-color)} +.input-block{margin-bottom:1rem} +.input-group{width:100%;display:flex;margin-bottom:1rem} +.input-group>.button,.input-group>button,.input-group>input{border-radius:0} +.input-group>.button:first-child,.input-group>button:first-child,.input-group>input:first-child{border-top-left-radius:var(--input-border-radius);border-bottom-left-radius:var(--input-border-radius)} +.input-group>.button:last-child,.input-group>button:last-child,.input-group>input:last-child{border-top-right-radius:var(--input-border-radius);border-bottom-right-radius:var(--input-border-radius)} +.input-group>input+input{border-left-width:0} +.input-group>input+input:focus{border-left-width:var(--input-border-width);margin-left:calc(var(--input-border-width) * -1)} +.input-addon{color:var(--text-muted);height:var(--input-height);line-height:var(--input-height);border-top:solid var(--input-border-width) var(--input-border-color);border-bottom:solid var(--input-border-width) var(--input-border-color);background:#f8f8f8;padding:0 calc(var(--component-spacing) * .5);white-space:nowrap} +.input-addon-small{font-size:calc(var(--input-font-size) * .8);height:var(--input-height-small);line-height:var(--input-height-small)} +.input-addon-big{font-size:calc(var(--input-font-size) * 1.2);height:var(--input-height-big);line-height:var(--input-height-big)} +.input-addon:first-child{border-left:solid var(--input-border-width) var(--input-border-color);border-top-left-radius:var(--input-border-radius);border-bottom-left-radius:var(--input-border-radius)} +.input-addon:last-child{border-right:solid var(--input-border-width) var(--input-border-color);border-top-right-radius:var(--input-border-radius);border-bottom-right-radius:var(--input-border-radius)} +.input-invalid label{color:var(--input-invalid-color)!important} +.input-invalid,.input-invalid input,.input-invalid select{color:var(--input-invalid-color)!important;border-color:var(--input-invalid-border-color)!important} +.input-valid label{color:var(--input-valid-color)!important} +.input-valid,.input-valid input,.input-valid select{color:var(--input-valid-color)!important;border-color:var(--input-valid-border-color)!important} +/*! Shoelace loaders */ +@keyframes loader{ +0%{transform:rotate(0)} +100%{transform:rotate(360deg)} +} +.loader,.loader-bg::after{width:var(--loader-size);height:var(--loader-size);border-radius:50%;border:solid var(--loader-width) var(--loader-bg-color);border-top-color:var(--loader-color);border-left-color:var(--loader-color);display:inline-block;animation:loader var(--loader-speed) linear infinite;vertical-align:middle;margin:var(--loader-spacing-y) var(--loader-spacing-x)} +.loader-bg-small::after,.loader-small{border-width:calc(var(--loader-width)/ 2);width:calc(var(--loader-size)/ 2);height:calc(var(--loader-size)/ 2)} +.loader-bg-big::after,.loader-big{border-width:calc(var(--loader-width) * 1.5);width:calc(var(--loader-size) * 2);height:calc(var(--loader-size) * 2)} +.loader-bg{position:relative!important} +.loader-bg::after{content:'';position:absolute;top:calc(50% - var(--loader-size)/ 2);left:calc(50% - var(--loader-size)/ 2);margin:0} +.loader-bg-small::after{position:absolute;top:calc(50% - var(--loader-size)/ 4);left:calc(50% - var(--loader-size)/ 4)} +.loader-bg-big::after{position:absolute;top:calc(50% - var(--loader-size)/ 1);left:calc(50% - var(--loader-size)/ 1)} +/*! Shoelace tabs */ +.tabs{width:100%;margin-bottom:1rem} +.tabs-nav{margin-bottom:1rem;user-select:none} +.tabs-nav a{color:var(--tab-color);text-decoration:none;background-color:var(--tab-bg-color);border-radius:var(--tab-border-radius);padding:var(--tab-spacing-y) var(--tab-spacing-x);display:inline-block} +.tabs-nav a:hover{color:var(--tab-color-hover);background-color:var(--tab-bg-color-hover);text-decoration:none} +.tabs-nav a.active{color:var(--tab-color-active);background-color:var(--tab-bg-color-active);cursor:default} +.tabs-nav a.disabled{color:var(--tab-color-disabled);background-color:var(--tab-bg-color-disabled);cursor:not-allowed} +.tabs-pane{border:solid var(--tab-pane-border-width) var(--tab-pane-border-color);border-radius:.25rem;padding:var(--tab-pane-spacing-y) var(--tab-pane-spacing-x)} +.tabs-pane:not(.active){display:none} +.tabs-pane :last-child{margin-bottom:0} +/*! Shoelace tables */ +.table{width:100%;border-collapse:collapse;margin-bottom:1rem} +.table caption{caption-side:bottom;font-size:var(--font-size-small);color:var(--text-muted);text-align:center;padding-top:var(--table-spacing-y)} +.table th{text-align:left;background:var(--table-header-bg-color);border-bottom:solid calc(var(--table-border-width) * 2) var(--table-border-color);padding:var(--table-spacing-y) var(--table-spacing-x)} +.table td{border-bottom:solid var(--table-border-width) var(--table-border-color);padding:var(--table-spacing-y) var(--table-spacing-x)} +.table.table-striped tr:nth-child(odd) td{background-color:var(--table-stripe-bg-color)} +.table.table-bordered{border:solid var(--table-border-width) var(--table-border-color)} +.table.table-bordered td,.table.table-bordered th{border-style:solid;border-width:var(--table-border-width);border-color:var(--table-border-color)} +/*! Shoelace utilties */ +.clearfix::after,.clearfix::before{content:'';display:table} +.clearfix::after{clear:both} +.float-left{float:left!important} +.float-right{float:right!important} +.width-0{width:0%!important} +.width-5{width:5%!important} +.width-10{width:10%!important} +.width-15{width:15%!important} +.width-20{width:10%!important} +.width-25{width:25%!important} +.width-30{width:30%!important} +.width-35{width:35%!important} +.width-40{width:40%!important} +.width-45{width:45%!important} +.width-50{width:50%!important} +.width-55{width:55%!important} +.width-60{width:60%!important} +.width-65{width:65%!important} +.width-70{width:70%!important} +.width-75{width:75%!important} +.width-80{width:80%!important} +.width-85{width:85%!important} +.width-90{width:90%!important} +.width-95{width:95%!important} +.width-100{width:100%!important} +.height-0{height:0%!important} +.height-5{height:5%!important} +.height-10{height:10%!important} +.height-15{height:15%!important} +.height-20{height:10%!important} +.height-25{height:25%!important} +.height-30{height:30%!important} +.height-35{height:35%!important} +.height-40{height:40%!important} +.height-45{height:45%!important} +.height-50{height:50%!important} +.height-55{height:55%!important} +.height-60{height:60%!important} +.height-65{height:65%!important} +.height-70{height:70%!important} +.height-75{height:75%!important} +.height-80{height:80%!important} +.height-85{height:85%!important} +.height-90{height:90%!important} +.height-95{height:95%!important} +.height-100{height:100%!important} +.m-none{margin:0!important} +.m-x-none{margin-left:0!important;margin-right:0!important} +.m-y-none{margin-top:0!important;margin-bottom:0!important} +.m-t-none{margin-top:0!important} +.m-r-none{margin-right:0!important} +.m-b-none{margin-bottom:0!important} +.m-l-none{margin-left:0!important} +.m-small{margin:var(--spacing-small)!important} +.m-x-small{margin-left:var(--spacing-small)!important;margin-right:var(--spacing-small)!important} +.m-y-small{margin-top:var(--spacing-small)!important;margin-bottom:var(--spacing-small)!important} +.m-t-small{margin-top:var(--spacing-small)!important} +.m-r-small{margin-right:var(--spacing-small)!important} +.m-b-small{margin-bottom:var(--spacing-small)!important} +.m-l-small{margin-left:var(--spacing-small)!important} +.m-medium{margin:var(--spacing-medium)!important} +.m-x-medium{margin-left:var(--spacing-medium)!important;margin-right:var(--spacing-medium)!important} +.m-y-medium{margin-top:var(--spacing-medium)!important;margin-bottom:var(--spacing-medium)!important} +.m-t-medium{margin-top:var(--spacing-medium)!important} +.m-r-medium{margin-right:var(--spacing-medium)!important} +.m-b-medium{margin-bottom:var(--spacing-medium)!important} +.m-l-medium{margin-left:var(--spacing-medium)!important} +.m-big{margin:var(--spacing-big)!important} +.m-x-big{margin-left:var(--spacing-big)!important;margin-right:var(--spacing-big)!important} +.m-y-big{margin-top:var(--spacing-big)!important;margin-bottom:var(--spacing-big)!important} +.m-t-big{margin-top:var(--spacing-big)!important} +.m-r-big{margin-right:var(--spacing-big)!important} +.m-b-big{margin-bottom:var(--spacing-big)!important} +.m-l-big{margin-left:var(--spacing-big)!important} +.p-none{padding:0!important} +.p-x-none{padding-left:0!important;padding-right:0!important} +.p-y-none{padding-top:0!important;padding-bottom:0!important} +.p-t-none{padding-top:0!important} +.p-r-none{padding-right:0!important} +.p-b-none{padding-bottom:0!important} +.p-l-none{padding-left:0!important} +.p-small{padding:var(--spacing-small)!important} +.p-x-small{padding-left:var(--spacing-small)!important;padding-right:var(--spacing-small)!important} +.p-y-small{padding-top:var(--spacing-small)!important;padding-bottom:var(--spacing-small)!important} +.p-t-small{padding-top:var(--spacing-small)!important} +.p-r-small{padding-right:var(--spacing-small)!important} +.p-b-small{padding-bottom:var(--spacing-small)!important} +.p-l-small{padding-left:var(--spacing-small)!important} +.p-medium{padding:var(--spacing-medium)!important} +.p-x-medium{padding-left:var(--spacing-medium)!important;padding-right:var(--spacing-medium)!important} +.p-y-medium{padding-top:var(--spacing-medium)!important;padding-bottom:var(--spacing-medium)!important} +.p-t-medium{padding-top:var(--spacing-medium)!important} +.p-r-medium{padding-right:var(--spacing-medium)!important} +.p-b-medium{padding-bottom:var(--spacing-medium)!important} +.p-l-medium{padding-left:var(--spacing-medium)!important} +.p-big{padding:var(--spacing-big)!important} +.p-x-big{padding-left:var(--spacing-big)!important;padding-right:var(--spacing-big)!important} +.p-y-big{padding-top:var(--spacing-big)!important;padding-bottom:var(--spacing-big)!important} +.p-t-big{padding-top:var(--spacing-big)!important} +.p-r-big{padding-right:var(--spacing-big)!important} +.p-b-big{padding-bottom:var(--spacing-big)!important} +.p-l-big{padding-left:var(--spacing-big)!important} +.m-x-auto{margin-left:auto!important;margin-right:auto!important} +.text-success{color:var(--state-success)!important} +.text-info{color:var(--state-info)!important} +.text-warning{color:var(--state-warning)!important} +.text-danger{color:var(--state-danger)!important} +.text-muted{color:var(--text-muted)!important} +.text-small{font-size:var(--font-size-small)!important} +.text-big{font-size:var(--font-size-big)!important} +.text-bold{font-weight:var(--font-weight-bold)!important} +.text-italic{font-style:italic!important} +.text-left{text-align:left!important} +.text-right{text-align:right!important} +.text-center{text-align:center!important} +.text-justify{text-align:justify!important} +.text-lowercase{text-transform:lowercase!important} +.text-uppercase{text-transform:uppercase!important} +.text-capitalize{text-transform:capitalize!important} +.text-nowrap{white-space:nowrap!important} \ No newline at end of file diff --git a/docs/docs.css b/docs/docs.css new file mode 100644 index 00000000..9bb302ad --- /dev/null +++ b/docs/docs.css @@ -0,0 +1,110 @@ +body { + border-top: solid .3rem var(--color-primary); +} + +.body-wrap { + max-width: 44rem; + padding: 1rem; + margin: 2rem auto; +} + +h1[id]:not(:first-child), +h2[id]:not(:first-child), +h3[id]:not(:first-child), +h4[id]:not(:first-child) { + margin-top: 3rem; +} + +h3[id], +h4[id] { + color: var(--color-gray); +} + +header { + border-bottom: solid var(--component-border-width) var(--component-border-color); + padding-bottom: var(--component-spacing); + margin-bottom: var(--component-spacing-big); +} + +footer { + border-top: solid var(--component-border-width) var(--component-border-color); + text-align: center; + padding-top: var(--component-spacing-big); + margin-top: var(--component-spacing-big); +} + +h2[id] { + border-bottom: solid var(--component-border-width) var(--component-border-color); + padding-bottom: .25rem; + margin-bottom: 1rem; +} + +/* Column helpers */ +.two-column { + column-count: 2; + column-gap: 2rem; +} + +@media (max-width: 50rem) { + .two-column { + column-count: 1; + column-gap: 0; + } +} + +/* Sizing examples */ +.width-sizing-example { + border: solid 1px var(--component-border-color); + padding: 1rem; + margin-bottom: 1rem; +} + +.width-sizing-example div { + background: var(--color-primary); + color: white; + text-align: center; + padding: .25rem; + margin-bottom: 1rem; +} + +.width-sizing-example div:last-child { + margin-bottom: 0; +} + +.height-sizing-example { + border: solid 1px var(--component-border-color); + height: 15rem; + padding: 1rem .5rem; + margin-bottom: 1rem; +} + +.height-sizing-example div { + width: calc(25% - 1rem); + float: left; + background: var(--color-primary); + color: white; + text-align: center; + padding: .25rem; + margin: 0 .5rem; +} + +/* Loader example */ +.loader-example div { + float: left; + width: 6rem; + height: 6rem; + border: dashed 1px var(--component-border-color); + margin-right: .5rem; +} + +/* Tabs example */ +.tabs-vertical-example { + display: grid; + grid-template-columns: 25% 75%; + grid-gap: 2rem; + padding-right: 2rem; +} + +.tabs-vertical-example .tabs-nav a { + display: block; +} diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..097c6a11 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,1259 @@ + + + + + + + + + + Shoelace.css: a back to the basics CSS starter kit + + + +
+
+

👟 Shoelace.css

+

+ A back to the basics CSS starter kit. For when you don’t need the whole boot. +

+
+ + + +

+ Shoelace is a starter kit, not a framework. Think of it as a CSS reset sprinkled with helpful + components. Bootstrap users will find it familiar, yet refreshing. +

+

+ Shoelace is highly customizable through + + CSS variables. It doesn’t require Less, Sass, or any preprocessing at all. The minified + version is only 31KB. +

+ +

+ Just link to the stylesheet, add your customizations, and start + building stuff. +

+
+<link rel="stylesheet" href="dist/shoelace.min.css">
+
+

+ The purpose of this project is to provide a modern, lightweight, customizable, and extensible + boilerplate for building websites and web applications. +

+

+ Shoelace was created by @claviska for + Surreal CMS. It is available under the MIT license. + Love it? Consider making a small donation. + 🙌 +

+ + + +

Contents

+ + +

Customizing

+

+ You can customize Shoelace without editing core files. This makes it easier to update later + on. To add customizations, simply override one or more of the CSS variables found in + variables.css in your own stylesheet. +

+

+ For example, you can customize the default text color and background like this: +

+
+:root {
+  --body-color: white;
+  --body-bg-color: black;
+}
+
+

+ Refer to variables.css for a complete list of variables in Shoelace. +

+ +

Using Variables

+

+ You can use any of Shoelace’s variables in your own stylesheet. This makes it easy to reuse + colors, paddings, etc. without hardcoding them, and provides a foundation for building your + own components to extend Shoelace. +

+
+  .your-selector {
+    color: var(--state-danger);
+  }
+
+ + + +

Content

+

+ Shoelace gives you an easy way to customize most HTML elements with variables. You don’t need + to apply any classes to achieve these styles — just use the appropriate elements. +

+

+ For easier spacing, Shoelace removes top margins and applies a bottom margin to block + elements. By default, text sizing and spacing is measured in rem and + em units. +

+ +

Headings <h1> – <h6>

+

Heading 1

+

Heading 2

+

Heading 3

+

Heading 4

+
Heading 5
+
Heading 6
+ +

Paragraphs <p>

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quaerat excepturi repellendus + nostrum dolorum dignissimos quis non, minus debitis laborum vero cupiditate sequi neque, + magnam dolore nemo possimus, soluta ducimus eaque. +

+

+ Blanditiis ea qui, veritatis animi recusandae praesentium magnam. Commodi placeat, laboriosam + accusamus laudantium quasi eveniet soluta illo ducimus quis doloremque mollitia, officia + pariatur deleniti reprehenderit, maxime, dicta libero vero cum. +

+ +

Ordered Lists <ol>

+
    +
  1. List item 1
  2. +
  3. List item 2 +
      +
    1. Nested item 1
    2. +
    3. Nested item 2
    4. +
    5. Nested item 3
    6. +
    +
  4. +
  5. List item 3
  6. +
+ +

Unordered Lists <ul>

+ + +

Definition Lists <dl>

+
+
Term 1
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Earum autem perferendis + exercitationem asperiores fuga incidunt, nam dicta amet. Dolor eligendi nisi praesentium + placeat officiis esse corporis molestiae. Doloremque accusamus, vel! +
+
Term 2
+
+ Veritatis repellendus porro ipsam beatae temporibus natus id adipisci nobis accusantium + quidem eum fugit cupiditate deleniti nisi nesciunt dicta officia, enim, atque corporis neque + error. Unde saepe molestiae hic voluptatibus? +
+
+ +

Blockquotes <blockquote>

+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia ipsam enim reprehenderit + placeat ab voluptate totam suscipit voluptas, culpa pariatur eos quas, sequi unde perferendis + officiis! Officiis eligendi eaque facilis. +
+ +

Preformatted Text <pre>

+
+CLS
+SCREEN 13
+PRINT "SHOELACE IS AWESOME"
+
+ +

Text Formats

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ElementExample
<strong>This is strong text
<em>This is emphasized text
<u>This is underlined text
<s>This is strikethrough text
<a>This is link text
<small>This is small text
<big>This is big text
<sup>This is superscript text
<sub>This is subscript text
<code>This is code text
<samp>This is samp text
<var>This is var text
<kbd>This is kbd text
<abbr>This is abbr text
<del>This is del text
<ins>This is ins text
<mark>This is mark text
+ + + +

Alerts

+

+ Create an alert by applying the alert alert-[modifier] class to an element such + as a div. +

+
+  <div class="alert">Default</div>
+  <div class="alert alert-success">Success</div>
+  <div class="alert alert-info">Info</span>
+  <div class="alert alert-warning">Warning</div>
+  <div class="alert alert-danger">Danger</div>
+  <div class="alert alert-inverse">Inverse</div>
+
+
This is a default alert with link
+
This is a success alert with link
+
This is an info alert with link
+
This is a warning alert with link
+
This is a danger alert with link
+
This is an inverse alert with link
+ + + +

Badges

+

+ Create a badge by applying the badge badge-[state] class to an element such as a + <span>. Badges are sized relative to their parent element. +

+
+  <span class="badge">Default</span>
+  <span class="badge badge-success">Success</span>
+  <span class="badge badge-info">Info</span>
+  <span class="badge badge-warning">Warning</span>
+  <span class="badge badge-danger">Danger</span>
+  <span class="badge badge-inverse">Inverse</span>
+
+

+ Default + Success + Info + Warning + Danger + Inverse +

+ + + +

Buttons

+

+ To create a button, use the <button> element or apply the + button class to another element such as an <a>. You can change + a button’s appearance using the button-[state] modifier. +

+
+<button type="button">Default</button>
+<button type="button" class="button-success">Success</button>
+<button type="button" class="button-info">Info</button>
+<button type="button" class="button-warning">Warning</button>
+<button type="button" class="button-danger">Danger</button>
+<button type="button" class="button-inverse">Inverse</button>
+<button type="button" class="button button-link">Link</button>
+
+

+ + + + + + + +

+

+ Use the button-small and button-big modifiers to change the size of + a button. +

+

+ + + +

+

+ Use the button-block modifier to make the button span the entire width of its + parent element. You can also mix and match modifiers as needed. +

+

+ + + +

+

+ Disabled buttons look like this. Set the disabled property on + <button> elements to achieve this effect. For all other elements, apply + class="disabled" instead. +

+

+ + + + + + +

+

+ You can force buttons to have an active state by applying the active class. +

+

+ + + + + + +

+ +

File Buttons

+

+ File inputs are notoriously hard to style properly in every browser. Shoelace offers file + buttons as an alternative. These are much easier to style consistently, but come with the + caveat that the name (or number) of files selected will not be automatically shown to the + user. This aspect of a file button’s UX can be handled effectively with JavaScript, but this + is left as an excercise + for the user. +

+

+ File buttons are simply label elements with the button class and a + nested file input. +

+
+<label class="button"><input type="file"></label>
+
+

+ +

+ + + +

Forms

+

+ Shoelace gives you beautiful forms without hassle. Most form controls don’t need a special + class for styling. +

+ +

Form Controls

+

+ Form controls are styled at 100% of the width of their parent element. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Input TypeExample
checkbox +
+ +
date
email
+ file +
+ + File inputs aren’t supported. Use a file button instead. + +
+ +
number
password
radio +
+ +
range
search
select + +
text
textarea
time
+

+ You can change the size of most form controls with the input-small and + input-big modifiers. +

+
+<input type="text" class="input-small" placeholder="Small">
+<input type="text" placeholder="Default">
+<input type="text" class="input-big" placeholder="Big">
+
+<select class="input-small"><option>Item</option></select>
+<select><option>Item</option></select>
+<select class="input-big"><option>Item</option></select>
+
+ +
+

+

+

+

+

+

+
+

+ Disabled form controls look like this: +

+
+ +
+
+ + +
+

+ Read-only form controls look like this: +

+
+ +
+ +

Form Groups

+

+ Related form controls can be grouped in a <fieldset>. An optional + legend can be used to display a name for the group. +

+
+<fieldset>
+  <legend>User</legend>
+  ...
+</fieldset>
+
+
+ Login +
+ + +
+
+ + +
+
+ +
+
+ +
+
+ +

Input Blocks

+

+ For proper spacing of individual form controls and labels, wrap them in + input-block elements. +

+
+<div class="input-block">
+  <label>Name</label>
+  <input type="text">
+</div>
+
+<div class="input-block">
+  <label>Email</label>
+  <input type="email">
+</div>
+
+<div class="input-block">
+  <label><input type="checkbox"> Remember me</label>
+</div>
+
+
+ + +
+
+ + +
+
+ +
+ +

Input Groups

+

+ Form controls and buttons can be grouped by wrapping them in input-group + containers. +

+
+<div class="input-group">
+  <input type="text">
+  <button type="button" class="button">Submit</button>
+</div>
+
+<div class="input-group">
+  <button type="button" class="button">Submit</button>
+  <input type="text">
+</div>
+
+<div class="input-group">
+  <input type="text" placeholder="First">
+  <input type="text" placeholder="Middle">
+  <input type="text" placeholder="Last">
+  <button type="button" class="button">Submit</button>
+</div>
+
+<div class="input-group">
+  <button type="button" class="button">Option 1</button>
+  <button type="button" class="button">Option 2</button>
+  <button type="button" class="button">Option 3</button>
+</div>
+
+
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + + + +
+
+ +
+
+ + + +
+
+ +

Input Addons

+

+ To create an input addon, use <span class="input-addon">. Addons + can appear anywhere inside an input group. Use the input-addon-[size] + modifier to change the size to match adjacent form controls. +

+
+<div class="input-group">
+  <span class="input-addon input-addon-small">$</span>
+  <input type="text" class="input-small">
+  <span class="input-addon input-addon-small">.00</span>
+</div>
+
+<div class="input-group">
+  <span class="input-addon">$</span>
+  <input type="text">
+  <span class="input-addon">.00</span>
+</div>
+
+<div class="input-group">
+  <span class="input-addon input-addon-big">$</span>
+  <input type="text" class="input-big">
+  <span class="input-addon input-addon-big">.00</span>
+</div>
+
+ +
+
+ $ + + .00 +
+
+ +
+
+ $ + + .00 +
+
+ +
+
+ $ + + .00 +
+
+ +

Validation

+

+ Form controls can be made valid or invalid using the input-valid and + input-invalid modifiers. It’s better to apply modifiers to the surrounding + input-block so labels will be styled as well, but modifiers can be applied + directly to form controls as needed. +

+
+<div class="input-block input-valid">
+  <label>Valid</label>
+  <input type="text">
+</div>
+
+<div class="input-block input-invalid">
+  <label>Invalid</label>
+  <input type="text">
+</div>
+
+
+
+ + +
+ +
+ + +
+
+ + + +

Loaders

+

+ Create a pure CSS loader by applying the loader class to an empty + <span> element. You can use the loader-small and + loader-big modifiers to change the size. +

+
+<span class="loader loader-small"></span>
+<span class="loader"></span>
+<span class="loader loader-big"></span>
+
+

+ + + +

+ +

+ You can simulate a background loader using loader-bg. This is achieved using + position: relative on the container and the ::after pseudo-element. + You can use the loader-bg-small and loader-bg-big modifiers to + change the size. +

+
+<div class="loader-bg loader-bg-small"></div>
+<div class="loader-bg"></div>
+<div class="loader-bg loader-bg-big"></div>
+
+
+
+
+
+
+ + + +

Tabs

+

+ Tab sets can be created using the markup below. By default, Shoelace renders tabs as pills + because they look better than traditional tabs when rendered on smaller screens. +

+

+ Note the class names used for the main container, the tab navs, and the tab panes. Also note + that each tabs links to its respective tab pane’s id. +

+

+ To disable a tab, add disabled to the appropriate tab nav. +

+
+<div class="tabs">
+  <nav class="tabs-nav">
+    <a href="#tab-1" class="active">Tab 1</a>
+    <a href="#tab-2">Tab 2</a>
+    <a href="#tab-3">Tab 3</a>
+    <a href="#" class="disabled">Disabled</a>
+  </nav>
+
+  <div class="tabs-pane active" id="tab-1">
+    ...
+  </div>
+
+  <div class="tabs-pane" id="tab-2">
+    ...
+  </div>
+
+  <div class="tabs-pane" id="tab-3">
+    ...
+  </div>
+</div>
+
+ +
+ + +
+

Tab 1

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Qui repellat ea magni magnam + assumenda voluptas accusantium nemo. Iusto beatae illum mollitia aut quasi odit facilis + officiis, laudantium debitis! Excepturi, quis! +

+
+ +
+

Tab 2

+

+ Atque eius voluptatibus ipsa ex totam odit, quidem illo distinctio sit! Quod quae minus, + aut itaque. Mollitia, dolore! Facere molestiae necessitatibus sint recusandae incidunt + pariatur labore iste vel, velit odit. +

+
+ +
+

Tab 3

+

+ Aperiam asperiores optio iusto qui nisi, perspiciatis, ipsum, tenetur explicabo earum et + laboriosam odit magni maxime quos molestias aspernatur laudantium harum placeat tempora + quae necessitatibus, aut dignissimos totam non! Quod. +

+
+
+ +

+ Tabs are not interactive by default! Shoelace is a CSS starter kit, not a + framework. For convenience, a lightweight sample script is provided to demonstrate how to + make tabs interactive. +

+
+<script src="js/tabs.js"></script>
+
+ +

Vertical Tabs

+

+

+ Tabs can be made vertical by adding custom CSS rules. Shoelace doesn’t include these styles by + default because of the many ways tabs can be positioned, customized, and made responsive. +

+

+ Here’s an example of vertical tabs that uses the CSS grid. The markup is exactly the same as + the previous example, except the tabs container has a custom class and the following custom + styles. +

+
+.tabs-vertical-example {
+  display: grid;
+  grid-template-columns: 25% 75%;
+  grid-gap: 2rem;
+  padding-right: 2rem;
+}
+
+.tabs-vertical-example .tabs-nav a {
+  display: block;
+}
+
+
+ + +
+

Tab 1

+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Qui repellat ea magni magnam + assumenda voluptas accusantium nemo. Iusto beatae illum mollitia aut quasi odit facilis + officiis, laudantium debitis! Excepturi, quis! +

+
+ +
+

Tab 2

+

+ Atque eius voluptatibus ipsa ex totam odit, quidem illo distinctio sit! Quod quae minus, + aut itaque. Mollitia, dolore! Facere molestiae necessitatibus sint recusandae incidunt + pariatur labore iste vel, velit odit. +

+
+ +
+

Tab 3

+

+ Aperiam asperiores optio iusto qui nisi, perspiciatis, ipsum, tenetur explicabo earum et + laboriosam odit magni maxime quos molestias aspernatur laudantium harum placeat tempora + quae necessitatibus, aut dignissimos totam non! Quod. +

+
+
+ + + +

Tables

+

+ By default, tables are plain and unstyled. To create a styled table, apply the + table class to a table element. +

+
+<table class="table">
+  <thead>
+    <tr><th>Item</th><th>Price</th></tr>
+  </thead>
+  <tbody>
+    <tr><td>Shoe Freshener</td><td>$4.79</td></tr>
+    <tr><td>Shoe Glue</td><td>$2.50</td></tr>
+    <tr><td>Shoe Polish</td><td>$5.25</td></tr>
+    <tr><td>Shoelaces</td><td>$3.99</td></tr>
+  </tbody>
+</table>
+
+ + + + + + + + + + +
ItemPrice
Shoe Freshener$4.79
Shoe Glue$2.50
Shoe Polish$5.25
Shoelaces$3.99
+ +

Striped Tables

+

+ Use the table-striped modifier to add stripes to alternating rows. +

+
+<table class="table table-striped">
+  ...
+</table>
+
+ + + + + + + + + + +
ItemPrice
Shoe Freshener$4.79
Shoe Glue$2.50
Shoe Polish$5.25
Shoelaces$3.99
+ +

Bordered Tables

+

+ Use the table-bordered modifier to add a border to the table. +

+
+<table class="table table-bordered">
+  ...
+</table>
+
+ + + + + + + + + + +
ItemPrice
Shoe Freshener$4.79
Shoe Glue$2.50
Shoe Polish$5.25
Shoelaces$3.99
+ + + +

Utilities

+

+ Shoelace provides a number of helpful utility classes that make prototyping easier. +

+ +

Text Utilities

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassExample
text-successThis is success text
text-infoThis is info text
text-warningThis is warning text
text-dangerThis is danger text
text-mutedThis is muted text
text-smallThis is small text
text-bigThis is big text
text-boldThis is bold text
text-italicThis is italic text
text-leftThis is left-aligned text
text-centerThis is centered text
text-rightThis is right-aligned text
text-justifyThis is justified text
text-nowrapThis is text that won’t wrap
text-lowercaseThis is lowercase text
text-uppercaseThis is uppercase text
text-capitalizeThis is capitalized text
+ +

Float Utilities

+

+ Float utilities are provided to easily float elements to the left or right. Just apply the + float-left or float-right class to an element to float it + left or right. +

+

+ A clearfix utility is also available to clear floated elements. Just apply the + clearfix class to the appropriate element. +

+ +

Sizing Utilities

+

+ Sizing utilities can be used to set a relative width or height on any element. Just apply + a width-[%] or height-[%] class and the appropriate element will be + sized accordingly. Sizes are available from 0 – 100 in multiples of five. +

+
+<div class="width-25">25%</div>
+<div class="width-50">50%</div>
+<div class="width-75">75%</div>
+<div class="width-100">100%</div>
+
+<div class="height-25">25%</div>
+<div class="height-50">50%</div>
+<div class="height-75">75%</div>
+<div class="height-100">100%</div>
+
+
+
25%
+
50%
+
75%
+
100%
+
+ +
+
25%
+
50%
+
75%
+
100%
+
+ +

Spacing Utilities

+

+ Spacing utilties can be used to add or remove paddings and margins to any element. Just apply + the desired class and the appropriate element will receive the respective padding/margin. +

+

+ Class names are prefixed with m- or p- for margin and padding, + respectively. To apply a padding/margin to all sides of an element, use the following + classes: +

+
+p-[none|small|medium|big]
+m-[none|small|medium|big]
+
+Example: class="p-none m-big"
+
+

+ To apply a padding/margin to a specific side of an element, use one or more of the following + classes: +

+
+p-[top|right|bottom|left|x|y]-[none|small|medium|big]
+m-[top|right|bottom|left|x|y]-[none|small|medium|big]
+
+Example: class="p-left-medium m-bottom-none"
+
+

+ You can also use m-x-auto to horizontally center a fixed width block. +

+ + + +

Grid System

+

+ Shoelace doesn’t ship with a grid system because + + you don’t need one. You should use the CSS Grid + Layout instead. +

+

+ If you have an obligation to support older browsers, consider using the Bootstrap grid + without any extras. +

+ + + +

Icons

+

+ Shoelace doesn’t bundle its own icons, but you can easily include your favorite library such + as Font Awesome. They work superbly together. +

+

+ This decision was intentional. It keeps Shoelace light and makes it more customizable. +

+ + + +

Browser Support

+

+ TL;DR — you can use Shoelace as-is if you don’t care about Internet Explorer and older + browsers (Edge is fine). If you need to support older browsers, just make sure to use a + grid system and Myth as a + polyfill. +

+

+ Browser support for CSS variables is pretty + good, but if you need to support Internet Explorer, consider using + Myth as a polyfill. Myth lets you write standards-compliant + CSS and “fixes” it for unsupportive browsers. +

+

+ Browser support for the CSS Grid is very good, + but if you need to support older browsers you can use a grid system + instead. +

+

+ Browser support for calc is + excellent. Shoelace uses this internally for + relative calculations. You can use it along with CSS variables too. +

+

+ Browser support for color modifiers is non-existent. + There is a draft, so + hopefully that will change soon. Shoelace doesn’t use this feature, but it will when support + improves. +

+

+ Browser support for custom media queries is non-existent. + There is a draft, so + hopefully that will change soon. Shoelace doesn’t use this feature, but it will when support + improves. +

+ +
+

+ Shoelace 1.0.0 beta · + ©2017 A Beautiful Site, LLC +

+
+ +
+ + + + + diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 00000000..9d23309c --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,85 @@ +'use strict'; + +const Gulp = require('gulp-help')(require('gulp')); +const Chalk = require('chalk'); +const CleanCSS = require('gulp-clean-css'); +const Del = require('del'); +const Path = require('path'); +const Rename = require('gulp-rename'); +const Watch = require('gulp-watch'); + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Config +//////////////////////////////////////////////////////////////////////////////////////////////////// + +let styles = { + source: Path.join(__dirname, 'css/shoelace.css'), + target: Path.join(__dirname, 'dist') +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Build functions +//////////////////////////////////////////////////////////////////////////////////////////////////// + +// Compiles styles in source and outputs them in target +function buildStyles(source, target) { + console.log(Chalk.yellow('Building styles...')); + return Gulp.src(source) + .pipe(Rename({ suffix: '.min' })) + .pipe(CleanCSS({ + format: 'keep-breaks', + specialComments: 'all' + })) + .on('error', (err) => { + console.error(Chalk.red(err.message)); + }) + .pipe(Gulp.dest(target)) + .on('end', () => { + console.log(Chalk.green('✔︎ Styles at ' + new Date())); + }); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Build tasks +//////////////////////////////////////////////////////////////////////////////////////////////////// + +// Build styles +Gulp.task('build:styles', 'Build styles.', ['clean:styles'], () => { + buildStyles(styles.source, styles.target); +}); + +// Build all +Gulp.task('build', 'Run all build tasks.', [ + 'build:styles' +]); + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Clean tasks +//////////////////////////////////////////////////////////////////////////////////////////////////// + +// Clean styles +Gulp.task('clean:styles', 'Delete generated styles.', () => { + return Del(styles.target); +}); + +// Clean all +Gulp.task('clean', 'Delete all generated files.', [ + 'clean:styles' +]); + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Other tasks +//////////////////////////////////////////////////////////////////////////////////////////////////// + +// Watch for changes +Gulp.task('watch', 'Watch files and automatically build assets on change.', () => { + // Watch styles + Gulp.src(styles.source) + .pipe(Watch(styles.source)) + .on('change', () => { + buildStyles(styles.source, styles.target); + }); +}); + +// Default +Gulp.task('default', 'Run the default task.', ['help']); diff --git a/js/tabs.js b/js/tabs.js new file mode 100644 index 00000000..81a4b236 --- /dev/null +++ b/js/tabs.js @@ -0,0 +1,51 @@ +// +// Example tabs plugin for Shoelace +// +// This plugin demonstrates one way to add interactivity to Shoelace tabs. You don't need to +// initialize it. Just include jQuery along with this script and everything will just work. +// +// If you don't have a local copy of jQuery, you can load it via CDN: +// +// +// +// Don't want to use jQuery? No problem! This is a just sample script to demonstrate how tabs can be +// made interactive. You can write your own to replace it using vanilla JS or any other library you +// want. +// +// Tabs not toggling? +// - Make sure you've included this script: +// - Make sure your tabs are structured properly per the docs +// - Make sure your tab navs and tab panes have the correct IDs +// +// To disable a tab, add the "disabled" class to the appropriate tab nav. +// +// To programmatically show or hide a tab, apply the "active" class to the appropriate tab nav and +// tab pane. (Make sure to remove the "active" class from other active navs/panes first!) +// +$(function() { + 'use strict'; + + // Watch for clicks on tabs + $('.tabs-nav').on('click', 'a', function(event) { + var tabset = $(this).closest('.tabs'); + var tab = this; + + event.preventDefault(); + + // Ignore tabs without an href or with the "disabled" class + if(!tab.hash || $(tab).is('.disabled')) return; + + // Make the selected tab active + $(tab) + .siblings().removeClass('active').end() + .addClass('active'); + + // Make the appropriate tab pane active + $(tabset) + .find('.tabs-pane').removeClass('active').end() + .find(tab.hash).addClass('active'); + }); +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..8790a344 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2983 @@ +{ + "name": "shoelace-css", + "version": "1.0.0-beta1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-slice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", + "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "binary-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz", + "integrity": "sha1-ZlBsFs5vTWkopbPNajPKQelB43s=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.0", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "clean-css": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.7.tgz", + "integrity": "sha1-ua6k+FZ5iJzz6ui0A0nsTr390DI=", + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "dateformat": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", + "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "1.0.2" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dev": true, + "requires": { + "fs-exists-sync": "0.1.0" + } + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true, + "requires": { + "once": "1.3.3" + }, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + } + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "findup-sync": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "dev": true, + "requires": { + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" + } + }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "is-plain-object": "2.0.4", + "object.defaults": "1.1.0", + "object.pick": "1.2.0", + "parse-filepath": "1.0.1" + }, + "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + } + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flagged-respawn": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true, + "requires": { + "globule": "0.1.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "requires": { + "glob": "4.5.3", + "glob2base": "0.0.12", + "minimatch": "2.0.10", + "ordered-read-streams": "0.1.0", + "through2": "0.6.5", + "unique-stream": "1.0.0" + }, + "dependencies": { + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "2.0.10", + "once": "1.4.0" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true, + "requires": { + "gaze": "0.5.2" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "0.1.1" + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true, + "requires": { + "global-prefix": "0.1.5", + "is-windows": "0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.4", + "is-windows": "0.2.0", + "which": "1.2.14" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "requires": { + "glob": "3.1.21", + "lodash": "1.0.2", + "minimatch": "0.2.14" + }, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "requires": { + "graceful-fs": "1.2.3", + "inherits": "1.0.2", + "minimatch": "0.2.14" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true, + "requires": { + "natives": "1.1.0" + } + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "requires": { + "archy": "1.0.0", + "chalk": "1.1.3", + "deprecated": "0.0.1", + "gulp-util": "3.0.8", + "interpret": "1.0.3", + "liftoff": "2.3.0", + "minimist": "1.2.0", + "orchestrator": "0.3.8", + "pretty-hrtime": "1.0.3", + "semver": "4.3.6", + "tildify": "1.2.0", + "v8flags": "2.1.1", + "vinyl-fs": "0.3.14" + } + }, + "gulp-clean-css": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-3.7.0.tgz", + "integrity": "sha1-VLM1JtyJmTCUn7N7TKz4UcXV2Ts=", + "dev": true, + "requires": { + "clean-css": "4.1.7", + "gulp-util": "3.0.8", + "through2": "2.0.3", + "vinyl-sourcemaps-apply": "0.2.1" + } + }, + "gulp-help": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/gulp-help/-/gulp-help-1.6.1.tgz", + "integrity": "sha1-Jh2xhuGDl/7z9qLCLpwxW/qIrgw=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "object-assign": "3.0.0" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + } + } + }, + "gulp-rename": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", + "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", + "dev": true + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.0.0", + "fancy-log": "1.3.0", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + } + } + }, + "gulp-watch": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/gulp-watch/-/gulp-watch-4.3.11.tgz", + "integrity": "sha1-Fi/FY96fx3DpH5p845VVE6mhGMA=", + "dev": true, + "requires": { + "anymatch": "1.3.0", + "chokidar": "1.7.0", + "glob-parent": "3.1.0", + "gulp-util": "3.0.8", + "object-assign": "4.1.1", + "path-is-absolute": "1.0.1", + "readable-stream": "2.3.3", + "slash": "1.0.0", + "vinyl": "1.2.0", + "vinyl-file": "2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "1.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "dev": true, + "requires": { + "is-relative": "0.2.1", + "is-windows": "0.2.0" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.9.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "dev": true, + "requires": { + "is-unc-path": "0.1.2" + } + }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "dev": true, + "requires": { + "unc-path-regex": "0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "liftoff": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", + "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", + "dev": true, + "requires": { + "extend": "3.0.1", + "findup-sync": "0.4.3", + "fined": "1.1.0", + "flagged-respawn": "0.3.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.mapvalues": "4.6.0", + "rechoir": "0.6.2", + "resolve": "1.3.3" + } + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true, + "optional": true + }, + "natives": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.0.2" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "1.0.1", + "array-slice": "1.0.0", + "for-own": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", + "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=", + "dev": true, + "requires": { + "isobject": "2.1.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "requires": { + "end-of-stream": "0.1.5", + "sequencify": "0.0.7", + "stream-consume": "0.1.0" + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "parse-filepath": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", + "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "dev": true, + "requires": { + "is-absolute": "0.2.6", + "map-cache": "0.2.2", + "path-root": "0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "0.1.2" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.3.3" + } + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true, + "requires": { + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "stream-consume": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true, + "requires": { + "first-chunk-stream": "1.0.0", + "is-utf8": "0.2.1" + } + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "dev": true, + "requires": { + "first-chunk-stream": "2.0.0", + "strip-bom": "2.0.0" + }, + "dependencies": { + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "1.1.1" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "1.0.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0", + "strip-bom-stream": "2.0.0", + "vinyl": "1.2.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "requires": { + "defaults": "1.0.3", + "glob-stream": "3.1.18", + "glob-watcher": "0.0.6", + "graceful-fs": "3.0.11", + "mkdirp": "0.5.1", + "strip-bom": "1.0.0", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..887fd74f --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "shoelace-css", + "description": "A back to the basics CSS starter kit.", + "version": "1.0.0-beta1", + "author": "Cory LaViska", + "homepage": "https://labs.abeautifulsite.net/shoelace-css/docs/", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/claviska/shoelace-css" + }, + "devDependencies": { + "chalk": "^1.1.3", + "del": "^2.2.1", + "gulp-clean-css": "^3.0.3", + "gulp-help": "^1.6.1", + "gulp-rename": "^1.2.2", + "gulp-watch": "^4.3.9", + "gulp": "^3.9.1" + } +}