diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 95b7e776..00000000 --- a/.editorconfig +++ /dev/null @@ -1,15 +0,0 @@ -root = true -[*] -insert_final_newline = true -[*.js] -indent_style = space -indent_size = 2 -[*.json] -indent_style = space -indent_size = 2 -[*.less] -indent_style = space -indent_size = 2 -[*.sass] -indent_style = space -indent_size = 2 diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 8c811400..00000000 --- a/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# https://git-scm.com/docs/gitignore -# https://help.github.com/articles/ignoring-files -# Example .gitignore files: https://github.com/github/gitignore - - -# Jekyll metadata -_gh_pages -_site -docs/.jekyll-metadata -docs/dist - -*.log -.sass-cache -Thumbs.db -.DS_Store -/node_modules/ -.grunt/ -/bower_components/ -.build* -/_SpecRunner.html -Gemfile.lock -dist/sassc - - -# not needed on gh-pages branch -Gruntfile.js -LICENSE.md -CONTRIBUTING.md -package.json -README.md -docs -less -sass -scripts -meteor -bower.json -testcase.html -package.js -.versions -ISSUE_TEMPLATE.md -material-design-color-palette.jpg -grunt/** diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 730a8bf5..00000000 --- a/.npmignore +++ /dev/null @@ -1,17 +0,0 @@ -demo\ -fonts\ -scripts\ -test\ - -.editorconfig -.gitignore -.jshintrc -.npmignore -.travis.yml -.versions -bootstrap-elements.html -bower.json -CONTRIBUTING.md -Gruntfile.js -index.html -package.js diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..ab5413fd --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,128 @@ +## **TLDR;** Issues will be closed unless they are accompanied by a test case using one of our [CodePen templates](#codepen-templates). + +# Contributing + +Looking to contribute something to bootstrap-material-design? **Here's how you can help.** + +Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved. + +Following these guidelines helps to communicate that you **respect the time of the developers** managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing patches and features. + + +## Using the issue tracker +The [issue tracker](https://github.com/FezVrasta/bootstrap-material-design/issues) is the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests) and [submitting pull requests](#pull-requests), but please respect the following restrictions: + +* Please **do not** use the issue tracker for personal support requests. [Stack Overflow `bootstrap-material-design`](https://stackoverflow.com/questions/tagged/bootstrap-material-design) tag) is the best place to get help. + +* Please **do not** derail or troll issues. Keep the discussion on topic and respect the opinions of others. + +* Please **do not** post comments consisting solely of "+1" or ":thumbsup:". Use [GitHub's "reactions" feature](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments) instead. We reserve the right to delete comments which violate this rule. + +* Please **do not** open issues or pull requests regarding the code in dependencies such as: [`Bootstrap`](https://github.com/twbs/bootstrap) (open them in their respective repositories). + +* Please **do not** open issues without clearly stating the problem and desired result. [See the bug reports section](#bug-reports) for more information on creating effective issues. + +* Please **close your own issue** once it is resolved. + + +## Bug reports +A bug is a _demonstrable problem_ that is caused by the code in the repository. Good bug reports are extremely helpful, so thanks! + +Guidelines for bug reports: + +1. **Use the GitHub issue search** — check if the issue has already been reported. + +2. **Check if the issue has been fixed** — try to reproduce it using the latest `master` or development branch in the repository. + +3. **Isolate the problem** — create a [reduced test case](https://css-tricks.com/reduced-test-cases/) using one of **our** [Codepen templates](#codepen-templates). + +A good bug report shouldn't leave others needing to chase you up for more information. Please try to be as detailed as possible in your report. What is your environment? What steps will reproduce the issue? What browser(s) and OS experience the problem? Do other browsers show the bug differently? What would you expect to be the outcome? All these details will help people to fix any potential bugs. + +## Codepen templates +When submitting an issue, you must submit a Codepen demonstrating your issue. Please be sure to use the template below that is specific for your version: + +- [`v4` Codepen template](http://codepen.io/rosskevin/pen/eJMMVB) +- [`v3` Codepen template](http://codepen.io/rosskevin/pen/VvRgrN) + + +## Why was my issue summarily closed? +Please don't take this the wrong way, but we receive a lot of issues and in order to effectively help, we need you to follow the guidelines. + +We try our best to maintain a great project, and do so with a considerable amount of our personal time and effort. Following these guidelines facilitates an efficient way to communicate about bugs or simply help. Failure to follow these guidelines leads to confusion and wasted time. + +Many times, we find that the process of creating the [Codepen test case](#codepen-templates) solves the user's problem, and shows that an interaction with code outside this library are causing undesirable side effects. + +If you do not take the time to read and follow these guidelines (including submitting a reduced test case with _**our** Codepen template_), then why should we take more time to help you? + + +## Feature requests +Feature requests are welcome, but take a moment to find out whether your idea fits with the scope and aims of the project and the [Google Material Design specification itself](http://www.google.com/design/spec/material-design/introduction.html). It's up to *you* to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible. + +## Pull requests +Good pull requests—patches, improvements, new features—are a fantastic help. They should remain focused in scope and avoid containing unrelated commits. + +**Please ask first** before embarking on any significant pull request (e.g. implementing features, refactoring code, porting to a different language), otherwise you risk spending a lot of time working on something that the project's developers might not want to merge into the project. + +Please adhere to the [coding guidelines](#code-guidelines) used throughout the project (indentation, accurate comments, etc.) and any other requirements (such as test coverage). + +**In general, do not edit `dist` or `gh-pages` files directly!** Those files are automatically generated. + +Similarly, when contributing to the documentation, you should edit the documentation source files in the docs directory. + +Adhering to the following process is the best way to get your work included in the project: + +1. [Fork](https://help.github.com/fork-a-repo/) the project, clone your fork, + and configure the remotes: + + ```bash + # Clone your fork of the repo into the current directory + git clone https://github.com//bootstrap-material-design.git + # Navigate to the newly cloned directory + cd bootstrap-material-design + # Assign the original repo to a remote called "upstream" + git remote add upstream https://github.com/FezVrasta/bootstrap-material-design.git + ``` + +2. If you cloned a while ago, get the latest changes from upstream: + + ```bash + git checkout master + git pull upstream master + ``` + +3. Create a new topic branch (off the main project development branch) to contain your feature, change, or fix: + + ```bash + git checkout -b + ``` + +4. Commit your changes in logical chunks with messages written in english. Please adhere to these [git commit message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) or your code is unlikely be merged into the main project. + +5. Locally merge (or rebase) the upstream development branch into your topic branch: + + ```bash + git pull [--rebase] upstream master + ``` + +6. Push your topic branch up to your fork: + + ```bash + git push origin + ``` + +7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) with a clear title and description against the `master` branch. Referenc any open issue in the description so it is automatically linked. + +**IMPORTANT**: By submitting a patch, you agree to allow the project owners to license your work under the terms of the [MIT License](LICENSE) (if it includes code changes) and under the terms of the [Creative Commons Attribution 3.0 Unported License](docs/LICENSE) (if it includes documentation changes). + + +## Code guidelines + +### HTML +[Adhere to the Code Guide.](http://codeguide.co/#html) + +- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags). +- Use CDNs and HTTPS for third-party JS when possible. We don't use protocol-relative URLs in this case because they break when viewing the page locally via `file://`. +- Use [WAI-ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) attributes in documentation examples to promote accessibility. + +### Coding styles +Before committing ensure your changes follow our coding standards by running `gulp` for `v4` or `grunt dist docs` for `v3`. This will run the various code style check tools and provide feedback. diff --git a/HACKING.md b/HACKING.md new file mode 100644 index 00000000..60e61dc9 --- /dev/null +++ b/HACKING.md @@ -0,0 +1,17 @@ +# Hacking Material Design for Bootstrap + +This project makes use of Gulp to build all our source codes. + +You can get a full list of available commands running: + +``` +npm run gulp -- --tasks +``` + +Then, simply run: + +``` +npm run gulp dist:default // or any other task name +``` + +To trigger the relative task and run it. diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..eea48109 --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,26 @@ + + +#### Test Case +_(Codepen URL here)_ + +#### Summary +_A summary of the issue and the browser/OS environment in which it occurs. If suitable, include the steps required to reproduce the bug._ + +#### Expected result +_Description of expectation, mockup, etc._ + +#### Additional Information +_Any other information you want to share that is relevant to the issue being reported. This might include the lines of code that you have identified as causing the bug, and potential solutions (and your opinions on their merits)._ diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..4199bf6f --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,30 @@ +The MIT License (MIT) + +Copyright (c) 2015-2016, Federico Zivolo and contributors - https://github.com/FezVrasta/bootstrap-material-design + +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. + + +## Acknowledgements: + +- Some original Bootstrap code and documentation http://getbootstrap.com +`Copyright (c) 2011-2015 Twitter, Inc` + +- Some original MDL code http://www.getmdl.io/ +`Copyright 2015 Google Inc. All Rights Reserved.` diff --git a/README.md b/README.md new file mode 100644 index 00000000..31262066 --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +

Material Design for Bootstrap

+ +Material Design for Bootstrap is the best way to use [Material Design guidelines by Google](http://www.google.com/design/spec/material-design/introduction.html) +in your Bootstrap 4 based application. +Since this is a fully customizable version of Bootstrap, just include Material Design for Bootstrap CSS instead of Bootstrap CSS, and include the JavaScript at +the end of your document (just before the `` tag), and everything will be converted to Material Design. + + +## Documentation + +- [Getting Started](http://fezvrasta.github.io/bootstrap-material-design/getting-started/introduction/) +- [Building](http://fezvrasta.github.io/bootstrap-material-design/getting-started/building/) +- [Material Design components](http://fezvrasta.github.io/bootstrap-material-design/material-design/list-groups/) +- [Bootstrap default rendering reference documentation](http://fezvrasta.github.io/bootstrap-material-design/components/buttons/) +- [Migration](http://fezvrasta.github.io/bootstrap-material-design/migration/) + + +## Support + +The things to do are a lot and the time is little, if you are a passionate developer +with experience with Bootstrap and Material Design for Bootstrap and you have some spare +time, please consider becoming a contributor of this project! +If you are interested contact @FezVrasta or just adopt one of our [issues](https://github.com/FezVrasta/bootstrap-material-design/issues). + +If you like this project you may support it by [donating](http://fezvrasta.github.io/bootstrap-material-design), starring this repository or reporting issues. +All issues filed should be reduced to a [CodePen](http://codepen.io/rosskevin/pen/eJMMVB) test case where possible. + + +## Contributing + +### Development +If you want to get involved, please do so by submitting pull requests. +Before undertaking any major PR effort, please check the [existing issues](https://github.com/FezVrasta/bootstrap-material-design/issues). +If there isn't one, please file a new issue so we can discuss and assign the work so effort is not duplicated. +Thank you! + +### Standard guidelines +Please read through our [contributing guidelines](CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. + +Moreover, if your pull request contains JavaScript patches or features, you must include relevant unit tests. All HTML and CSS should conform to the [Code Guide](http://codeguide.co/), maintained by [Mark Otto](https://github.com/mdo), one of Bootstrap's founders. + +Editor preferences are available in the [editor config](https://github.com/FezVrasta/bootstrap-material-design/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at . + + +## Versioning + +For transparency into our release cycle and in striving to maintain backward compatibility, this project is maintained under +[the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible. + +See [the Releases section of our GitHub project](https://github.com/fezvrasta/bootstrap-material-design/releases) for changelogs +of each release version. + + +## License +[MIT License](LICENSE.md) diff --git a/about/index.html b/about/index.html new file mode 100644 index 00000000..53527ef0 --- /dev/null +++ b/about/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/assets/brand/bootstrap-outline.svg b/assets/brand/bootstrap-outline.svg new file mode 100755 index 00000000..8af91343 --- /dev/null +++ b/assets/brand/bootstrap-outline.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/brand/bootstrap-punchout.svg b/assets/brand/bootstrap-punchout.svg new file mode 100755 index 00000000..8dd9005d --- /dev/null +++ b/assets/brand/bootstrap-punchout.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/brand/bootstrap-social-logo.png b/assets/brand/bootstrap-social-logo.png new file mode 100755 index 00000000..97a7d87b Binary files /dev/null and b/assets/brand/bootstrap-social-logo.png differ diff --git a/assets/brand/bootstrap-social.png b/assets/brand/bootstrap-social.png new file mode 100755 index 00000000..26c7ac9c Binary files /dev/null and b/assets/brand/bootstrap-social.png differ diff --git a/assets/brand/bootstrap-solid.svg b/assets/brand/bootstrap-solid.svg new file mode 100755 index 00000000..05de97a5 --- /dev/null +++ b/assets/brand/bootstrap-solid.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/css/docs.css b/assets/css/docs.css new file mode 100644 index 00000000..6e8f552d --- /dev/null +++ b/assets/css/docs.css @@ -0,0 +1,1347 @@ +/*! + * Bootstrap Docs (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors + * Copyright 2011-2017 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */ +.bd-navbar { + min-height: 4rem; + background-color: #3F51B5; + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.05), inset 0 -1px 0 rgba(0, 0, 0, 0.1); } + @media (max-width: 991px) { + .bd-navbar { + padding-right: .5rem; + padding-left: .5rem; } + .bd-navbar .navbar-nav-scroll { + max-width: 100%; + height: 2.5rem; + margin-top: .25rem; + overflow: hidden; + font-size: .875rem; } + .bd-navbar .navbar-nav-scroll .navbar-nav { + padding-bottom: 2rem; + overflow-x: auto; + white-space: nowrap; + -webkit-overflow-scrolling: touch; } } + @media (min-width: 768px) { + @supports (position: sticky) { + .bd-navbar { + position: sticky; + top: 0; + z-index: 1071; } } } + .bd-navbar .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; + color: #cdbfe3; } + .bd-navbar .navbar-nav .nav-link.active, .bd-navbar .navbar-nav .nav-link:hover { + color: #fff; + background-color: transparent; } + .bd-navbar .navbar-nav .nav-link.active { + font-weight: 500; } + .bd-navbar .navbar-nav-svg { + display: inline-block; + width: 1rem; + height: 1rem; + vertical-align: text-top; } + .bd-navbar .dropdown-menu { + font-size: .875rem; } + .bd-navbar .dropdown-item.active { + font-weight: 500; + color: #212529; + background-color: transparent; + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23292b2c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: .4rem .6rem; + background-size: .75rem .75rem; } + .bd-navbar .nav-item { + position: relative; } + +.bd-masthead { + position: relative; + padding: 3rem 15px; } + .bd-masthead h1 { + line-height: 1; } + .bd-masthead .btn { + width: 100%; + padding: .8rem 2rem; + font-size: 1.25rem; + font-weight: 500; } + .bd-masthead .carbonad { + margin-top: 0 !important; + margin-bottom: -3rem !important; } + @media (min-width: 576px) { + .bd-masthead { + padding-top: 5rem; + padding-bottom: 5rem; } + .bd-masthead .carbonad { + margin-bottom: 0 !important; } } + @media (min-width: 768px) { + .bd-masthead h1 { + font-size: 4rem; } + .bd-masthead .carbonad { + margin-top: 3rem !important; } } + +.bd-pretext { + overflow: hidden; + resize: none; } + +.half-rule { + width: 6rem; + margin: 2.5rem 0; } + +.masthead-followup .bd-clipboard { + display: none; } + +.masthead-followup .highlight { + padding: .5rem 0; + background-color: transparent; } + +.bd-featured-sites { + margin-right: -1px; + margin-left: -1px; } + +.bd-featured-sites .col-6 { + padding: 1px; } + +.bd-featured-sites .img-fluid { + margin-top: 0; } + +@media (min-width: 768px) { + .bd-featured-sites .col-sm-3:first-child img { + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem; } + .bd-featured-sites .col-sm-3:last-child img { + border-top-right-radius: .25rem; + border-bottom-right-radius: .25rem; } } + +#carbonads { + position: static; + display: block; + max-width: 400px; + padding: 15px 15px 15px 160px; + margin: 2rem 0; + overflow: hidden; + font-size: 13px; + line-height: 1.4; + text-align: left; + background-color: rgba(0, 0, 0, 0.05); } + #carbonads a { + color: #333; + text-decoration: none; } + @media (min-width: 576px) { + #carbonads { + max-width: 330px; + border-radius: 4px; } } + +.carbon-img { + float: left; + margin-left: -145px; } + +.carbon-poweredby { + display: block; + color: #777 !important; } + +.bd-content { + order: 1; } + .bd-content > h2[id], + .bd-content > h3[id], + .bd-content > h4[id] { + pointer-events: none; } + .bd-content > h2[id] > div, + .bd-content > h2[id] > a, + .bd-content > h3[id] > div, + .bd-content > h3[id] > a, + .bd-content > h4[id] > div, + .bd-content > h4[id] > a { + pointer-events: auto; } + .bd-content > h2[id]::before, + .bd-content > h3[id]::before, + .bd-content > h4[id]::before { + display: block; + height: 6rem; + margin-top: -6rem; + visibility: hidden; + content: ""; } + .bd-content > table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; } + @media (max-width: 991px) { + .bd-content > table { + display: block; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; } } + .bd-content > table > thead > tr > th, + .bd-content > table > thead > tr > td, + .bd-content > table > tbody > tr > th, + .bd-content > table > tbody > tr > td, + .bd-content > table > tfoot > tr > th, + .bd-content > table > tfoot > tr > td { + padding: 0.75rem; + vertical-align: top; + border: 1px solid rgba(0, 0, 0, 0.06); } + .bd-content > table > thead > tr > th > p:last-child, + .bd-content > table > thead > tr > td > p:last-child, + .bd-content > table > tbody > tr > th > p:last-child, + .bd-content > table > tbody > tr > td > p:last-child, + .bd-content > table > tfoot > tr > th > p:last-child, + .bd-content > table > tfoot > tr > td > p:last-child { + margin-bottom: 0; } + .bd-content > table td:first-child > code { + white-space: nowrap; } + +.bd-content > h2:not(:first-child) { + margin-top: 3rem; } + +.bd-content > h3 { + margin-top: 1.5rem; } + +.bd-content > ul li, +.bd-content > ol li { + margin-bottom: .25rem; } + +@media (min-width: 992px) { + .bd-content > ul, + .bd-content > ol, + .bd-content > p { + max-width: 80%; } } + +.bd-title { + margin-top: 1rem; + margin-bottom: .5rem; + font-weight: 300; } + @media (min-width: 576px) { + .bd-title { + font-size: 3rem; } } + +.bd-lead { + font-size: 1.125rem; + font-weight: 300; } + @media (min-width: 576px) { + .bd-lead { + max-width: 80%; + margin-bottom: 1rem; + font-size: 1.5rem; } } + +.bd-text-purple { + color: #3F51B5; } + +.bd-text-purple-bright { + color: #6e7dd3; } + +.bd-pageheader { + padding: 2rem 15px; + margin-bottom: 1.5rem; + color: #cdbfe3; + text-align: center; + background-color: #3F51B5; } + .bd-pageheader .container { + position: relative; } + .bd-pageheader h1 { + font-size: 3rem; + font-weight: normal; + color: #fff; } + .bd-pageheader p { + margin-bottom: 0; + font-size: 1.25rem; + font-weight: 300; } + @media (min-width: 576px) { + .bd-pageheader { + padding-top: 4rem; + padding-bottom: 4rem; + margin-bottom: 3rem; + text-align: left; } + .bd-pageheader .carbonad { + margin: 2rem 0 0 !important; } } + @media (min-width: 768px) { + .bd-pageheader h1 { + font-size: 4rem; } + .bd-pageheader p { + font-size: 1.5rem; } } + @media (min-width: 992px) { + .bd-pageheader h1, + .bd-pageheader p { + margin-right: 380px; } + .bd-pageheader .carbonad { + position: absolute; + top: 0; + right: .75rem; + margin: 0 !important; } } + +#skippy { + display: block; + padding: 1em; + color: #fff; + background-color: #3F51B5; + outline: 0; } + #skippy .skiplink-text { + padding: .5em; + outline: 1px dotted; } + +.bd-toc { + order: 2; + padding-top: 1.5rem; + padding-bottom: 1.5rem; + font-size: .875rem; } + @supports (position: sticky) { + .bd-toc { + position: sticky; + top: 4rem; + max-height: calc(100vh - 4rem); + overflow-y: auto; } } + +.section-nav { + padding-left: 0; + border-left: 1px solid #eee; } + .section-nav ul { + padding-left: 1rem; } + .section-nav ul ul { + display: none; } + +.toc-entry { + display: block; } + .toc-entry a { + display: block; + padding: .125rem 1.5rem; + color: #99979c; } + .toc-entry a:hover { + color: #2196f3; + text-decoration: none; } + +.bd-sidebar { + order: 0; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); } + @media (min-width: 768px) { + .bd-sidebar { + border-right: 1px solid rgba(0, 0, 0, 0.1); } + @supports (position: sticky) { + .bd-sidebar { + position: sticky; + top: 4rem; + z-index: 1000; + max-height: calc(100vh - 4rem); } } } + @media (min-width: 1200px) { + .bd-sidebar { + max-width: 320px; } } + +.bd-links { + padding-top: 1rem; + padding-bottom: 1rem; + margin-right: -15px; + margin-left: -15px; } + @media (min-width: 768px) { + @supports (position: sticky) { + .bd-links { + max-height: calc(100vh - 9rem); + overflow-y: auto; } } } + @media (min-width: 768px) { + .bd-links { + display: block !important; } } + +.bd-search { + position: relative; + padding: 1rem 15px; + margin-right: -15px; + margin-left: -15px; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); } + .bd-search .form-control:focus { + border-color: #6e7dd3; + box-shadow: 0 0 0 3px rgba(110, 125, 211, 0.25); } + +.bd-search-docs-toggle { + line-height: 1; + color: #212529; } + +.bd-sidenav { + display: none; } + +.bd-toc-link { + display: block; + padding: .25rem 1.5rem; + font-weight: 500; + color: rgba(0, 0, 0, 0.65); } + .bd-toc-link:hover { + color: rgba(0, 0, 0, 0.85); + text-decoration: none; } + +.bd-toc-item.active { + margin-bottom: 1rem; } + .bd-toc-item.active:not(:first-child) { + margin-top: 1rem; } + .bd-toc-item.active > .bd-toc-link { + color: rgba(0, 0, 0, 0.85); } + .bd-toc-item.active > .bd-toc-link:hover { + background-color: transparent; } + .bd-toc-item.active > .bd-sidenav { + display: block; } + +.bd-sidebar .nav > li > a { + display: block; + padding: .25rem 1.5rem; + font-size: 90%; + color: rgba(0, 0, 0, 0.65); } + +.bd-sidebar .nav > li > a:hover { + color: rgba(0, 0, 0, 0.85); + text-decoration: none; + background-color: transparent; } + +.bd-sidebar .nav > .active > a, +.bd-sidebar .nav > .active:hover > a { + font-weight: 500; + color: rgba(0, 0, 0, 0.85); + background-color: transparent; } + +.bd-footer { + font-size: 85%; + text-align: center; + background-color: #f7f7f7; } + .bd-footer a { + font-weight: 500; + color: #495057; } + .bd-footer a:hover, .bd-footer a:focus { + color: #2196f3; } + .bd-footer p { + margin-bottom: 0; } + @media (min-width: 576px) { + .bd-footer { + text-align: left; } } + +.bd-footer-links { + padding-left: 0; + margin-bottom: 1rem; } + .bd-footer-links li { + display: inline-block; } + .bd-footer-links li + li { + margin-left: 1rem; } + +.bd-example-row .row + .row { + margin-top: 1rem; } + +.bd-example-row .row > .col, +.bd-example-row .row > [class^="col-"] { + padding-top: .75rem; + padding-bottom: .75rem; + background-color: rgba(86, 61, 124, 0.15); + border: 1px solid rgba(86, 61, 124, 0.2); } + +.bd-example-row .flex-items-top, +.bd-example-row .flex-items-middle, +.bd-example-row .flex-items-bottom { + min-height: 6rem; + background-color: rgba(255, 0, 0, 0.1); } + +.bd-example-row-flex-cols .row { + min-height: 10rem; + background-color: rgba(255, 0, 0, 0.1); } + +.bd-highlight { + background-color: rgba(63, 81, 181, 0.15); + border: 1px solid rgba(63, 81, 181, 0.15); } + +.example-container { + width: 800px; + margin-right: auto; + margin-left: auto; + padding-right: 15px; + padding-left: 15px; + width: 100%; } + +.example-row { + display: flex; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; } + +.example-content-main { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; } + @media (min-width: 576px) { + .example-content-main { + flex: 0 0 50%; + max-width: 50%; } } + @media (min-width: 992px) { + .example-content-main { + flex: 0 0 66.66667%; + max-width: 66.66667%; } } + +.example-content-secondary { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; } + @media (min-width: 576px) { + .example-content-secondary { + flex: 0 0 50%; + max-width: 50%; } } + @media (min-width: 992px) { + .example-content-secondary { + flex: 0 0 33.33333%; + max-width: 33.33333%; } } + +.bd-example-container { + min-width: 16rem; + max-width: 25rem; + margin-right: auto; + margin-left: auto; } + +.bd-example-container-header { + height: 3rem; + margin-bottom: .5rem; + background-color: white; + border-radius: .25rem; } + +.bd-example-container-sidebar { + float: right; + width: 4rem; + height: 8rem; + background-color: #9acffa; + border-radius: .25rem; } + +.bd-example-container-body { + height: 8rem; + margin-right: 4.5rem; + background-color: #98a2db; + border-radius: .25rem; } + +.bd-example-container-fluid { + max-width: none; } + +.bd-example { + position: relative; + padding: 1rem; + margin: 1rem -15px; + border: solid #f7f7f9; + border-width: .2rem 0 0; } + .bd-example::after { + display: block; + clear: both; + content: ""; } + @media (min-width: 576px) { + .bd-example { + padding: 1.5rem; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + border-width: .2rem; } } + .bd-example + .highlight, + .bd-example + .clipboard + .highlight { + margin-top: 0; } + .bd-example + p { + margin-top: 2rem; } + .bd-example .pos-f-t { + position: relative; + margin: -1rem; } + @media (min-width: 576px) { + .bd-example .pos-f-t { + margin: -1.5rem; } } + .bd-example > .form-control + .form-control { + margin-top: .5rem; } + .bd-example > .nav + .nav, + .bd-example > .alert + .alert, + .bd-example > .navbar + .navbar, + .bd-example > .progress + .progress, + .bd-example > .progress + .btn { + margin-top: 1rem; } + .bd-example > .dropdown-menu:first-child { + position: static; + display: block; } + .bd-example > .form-group:last-child { + margin-bottom: 0; } + +.bd-example > .close { + float: none; } + +.bd-example-type .table .type-info { + color: #999; + vertical-align: middle; } + +.bd-example-type .table td { + padding: 1rem 0; + border-color: #eee; } + +.bd-example-type .table tr:first-child td { + border-top: 0; } + +.bd-example-type h1, +.bd-example-type h2, +.bd-example-type h3, +.bd-example-type h4, +.bd-example-type h5, +.bd-example-type h6 { + margin: 0; } + +.bd-example-bg-classes p { + padding: 1rem; } + +.bd-example > img + img { + margin-left: .5rem; } + +.bd-example > .btn-group { + margin-top: .25rem; + margin-bottom: .25rem; } + +.bd-example > .btn-toolbar + .btn-toolbar { + margin-top: .5rem; } + +.bd-example-control-sizing select, +.bd-example-control-sizing input[type="text"] + input[type="text"] { + margin-top: .5rem; } + +.bd-example-form .input-group { + margin-bottom: .5rem; } + +.bd-example > textarea.form-control { + resize: vertical; } + +.bd-example > .list-group { + max-width: 400px; } + +.bd-example .fixed-top, +.bd-example .sticky-top { + position: static; + margin: -1rem -1rem 1rem; } + +.bd-example .fixed-bottom { + position: static; + margin: 1rem -1rem -1rem; } + +@media (min-width: 576px) { + .bd-example .fixed-top, + .bd-example .sticky-top { + margin: -1.5rem -1.5rem 1rem; } + .bd-example .fixed-bottom { + margin: 1rem -1.5rem -1.5rem; } } + +.bd-example .pagination { + margin-top: .5rem; + margin-bottom: .5rem; } + +.bd-example-modal { + background-color: #fafafa; } + .bd-example-modal .modal { + position: relative; + top: auto; + right: auto; + bottom: auto; + left: auto; + z-index: 1; + display: block; } + .bd-example-modal .modal-dialog { + left: auto; + margin-right: auto; + margin-left: auto; } + +.modal.show { + z-index: 1072; } + .modal.show .tooltip, .modal.show .popover { + z-index: 1073; } + +.modal-backdrop { + z-index: 1071; } + +.bd-example-tabs .nav-tabs { + margin-bottom: 1rem; } + +.bd-example-tooltips { + text-align: center; } + +.bd-example-tooltips > .btn { + margin-top: .25rem; + margin-bottom: .25rem; } + +.bs-tooltip-top-docs .arrow, +.bs-tooltip-bottom-docs .arrow { + left: 50%; } + +.bs-tooltip-right-docs .arrow, +.bs-tooltip-left-docs .arrow { + top: 50%; } + +.bd-example-popover-static { + padding-bottom: 1.5rem; + background-color: #f9f9f9; } + +.bd-example-popover-static .popover { + position: relative; + display: block; + float: left; + width: 260px; + margin: 1.25rem; } + +.bs-popover-top-docs .arrow, +.bs-popover-bottom-docs .arrow { + left: 50%; } + +.bs-popover-right-docs .arrow, +.bs-popover-left-docs .arrow { + top: 50%; } + +.tooltip-demo a { + white-space: nowrap; } + +.bd-example-tooltip-static .tooltip { + position: relative; + display: inline-block; + margin: 10px 20px; + opacity: 1; } + +.scrollspy-example { + position: relative; + height: 200px; + margin-top: .5rem; + overflow: auto; } + +.scrollspy-example-2 { + position: relative; + height: 350px; + overflow: auto; } + +.bd-example-border-utils [class^="border"] { + display: inline-block; + width: 5rem; + height: 5rem; + margin: .25rem; + background-color: #f5f5f5; + border: 1px solid; } + +.highlight { + padding: 1rem; + margin: 1rem -15px; + background-color: #f7f7f9; + -ms-overflow-style: -ms-autohiding-scrollbar; } + @media (min-width: 576px) { + .highlight { + padding: 1.5rem; + margin-right: 0; + margin-left: 0; } } + +.highlight pre { + padding: 0; + margin-top: 0; + margin-bottom: 0; + background-color: transparent; + border: 0; } + +.highlight pre code { + font-size: inherit; + color: #212529; } + +.table-responsive .highlight pre { + white-space: normal; } + +.bd-table th small { + display: block; + font-weight: normal; + color: #999; } + +.btn-bd-purple { + font-weight: 500; + color: #6e7dd3; + border-color: #6e7dd3; } + .btn-bd-purple:hover, .btn-bd-purple:active { + color: #fff; + background-color: #6e7dd3; + border-color: #6e7dd3; } + +.btn-bd-yellow { + font-weight: 500; + color: #ffe484; + border-color: #ffe484; } + .btn-bd-yellow:hover, .btn-bd-yellow:active { + color: #2a2730; + background-color: #ffe484; + border-color: #ffe484; } + +.bd-callout { + padding: 1.25rem; + margin-top: 1.25rem; + margin-bottom: 1.25rem; + border: 1px solid #eee; + border-left-width: .25rem; + border-radius: .25rem; } + +.bd-callout h4 { + margin-top: 0; + margin-bottom: .25rem; } + +.bd-callout p:last-child { + margin-bottom: 0; } + +.bd-callout code { + border-radius: .25rem; } + +.bd-callout + .bd-callout { + margin-top: -.25rem; } + +.bd-callout-info { + border-left-color: #5bc0de; } + .bd-callout-info h4 { + color: #5bc0de; } + +.bd-callout-warning { + border-left-color: #f0ad4e; } + .bd-callout-warning h4 { + color: #f0ad4e; } + +.bd-callout-danger { + border-left-color: #d9534f; } + .bd-callout-danger h4 { + color: #d9534f; } + +.bd-examples .img-thumbnail { + margin-bottom: .75rem; } + +.bd-examples h4 { + margin-bottom: .25rem; } + +.bd-examples p { + margin-bottom: 1.25rem; } + +@media (max-width: 480px) { + .bd-examples { + margin-right: -.75rem; + margin-left: -.75rem; } + .bd-examples > [class^="col-"] { + padding-right: .75rem; + padding-left: .75rem; } } + +.bd-team { + margin-bottom: 1.5rem; } + .bd-team .team-member { + line-height: 2rem; + color: #555; } + .bd-team .team-member:hover, + .bd-team .team-member:focus { + color: #333; } + .bd-team .team-member:hover { + text-decoration: none; } + .bd-team .github-btn { + float: right; + width: 180px; + height: 1.25rem; + margin-top: .25rem; + border: 0; } + .bd-team img { + float: left; + width: 2rem; + margin-right: .5rem; + border-radius: .25rem; } + +.bd-browser-bugs td p { + margin-bottom: 0; } + +.bd-browser-bugs th:first-child { + width: 18%; } + +.bd-brand-logos { + display: table; + width: 100%; + margin-bottom: 1rem; + overflow: hidden; + color: #3F51B5; + background-color: #f9f9f9; + border-radius: .25rem; } + +.bd-brand-item { + padding: 4rem 0; + text-align: center; } + +.bd-brand-item + .bd-brand-item { + border-top: 1px solid #fff; } + +.bd-brand-logos .inverse { + color: #fff; + background-color: #3F51B5; } + +.bd-brand-item h1, +.bd-brand-item h3 { + margin-top: 0; + margin-bottom: 0; } + +.bd-brand-item .bd-booticon { + margin-right: auto; + margin-left: auto; } + +@media (min-width: 768px) { + .bd-brand-item { + display: table-cell; + width: 1%; } + .bd-brand-item + .bd-brand-item { + border-top: 0; + border-left: 1px solid #fff; } + .bd-brand-item h1 { + font-size: 4rem; } } + +.color-swatches { + margin: 0 -5px; + overflow: hidden; } + +.color-swatch { + float: left; + width: 4rem; + height: 4rem; + margin-right: .25rem; + margin-left: .25rem; + border-radius: .25rem; } + @media (min-width: 768px) { + .color-swatch { + width: 6rem; + height: 6rem; } } + +.color-swatches .bd-purple { + background-color: #3F51B5; } + +.color-swatches .bd-purple-light { + background-color: #cdbfe3; } + +.color-swatches .bd-purple-lighter { + background-color: #e5e1ea; } + +.color-swatches .bd-gray { + background-color: #f9f9f9; } + +.swatch-blue { + background-color: #2196f3; + color: #fff; } + +.swatch-indigo { + background-color: #3f51b5; + color: #fff; } + +.swatch-purple { + background-color: #9c27b0; + color: #fff; } + +.swatch-pink { + background-color: #e91e63; + color: #fff; } + +.swatch-red { + background-color: #f44336; + color: #fff; } + +.swatch-orange { + background-color: #ff9800; + color: #111; } + +.swatch-yellow { + background-color: #ffeb3b; + color: #111; } + +.swatch-green { + background-color: #4caf50; + color: #fff; } + +.swatch-teal { + background-color: #009688; + color: #fff; } + +.swatch-cyan { + background-color: #00bcd4; + color: #fff; } + +.swatch-white { + background-color: #fff; + color: #111; } + +.swatch-gray { + background-color: #868e96; + color: #fff; } + +.swatch-gray-dark { + background-color: #343a40; + color: #fff; } + +.swatch-primary { + background-color: #2196f3; + color: #fff; } + +.swatch-secondary { + background-color: #868e96; + color: #fff; } + +.swatch-success { + background-color: #4caf50; + color: #fff; } + +.swatch-info { + background-color: #00bcd4; + color: #fff; } + +.swatch-warning { + background-color: #ffeb3b; + color: #111; } + +.swatch-danger { + background-color: #f44336; + color: #fff; } + +.swatch-light { + background-color: #f8f9fa; + color: #111; } + +.swatch-dark { + background-color: #343a40; + color: #fff; } + +.swatch-100 { + background-color: #f8f9fa; + color: #111; } + +.swatch-200 { + background-color: #e9ecef; + color: #111; } + +.swatch-300 { + background-color: #dee2e6; + color: #111; } + +.swatch-400 { + background-color: #ced4da; + color: #111; } + +.swatch-500 { + background-color: #adb5bd; + color: #111; } + +.swatch-600 { + background-color: #868e96; + color: #fff; } + +.swatch-700 { + background-color: #495057; + color: #fff; } + +.swatch-800 { + background-color: #343a40; + color: #fff; } + +.swatch-900 { + background-color: #212529; + color: #fff; } + +.bd-clipboard { + position: relative; + display: none; + float: right; } + .bd-clipboard + .highlight { + margin-top: 0; } + +.btn-clipboard { + position: absolute; + top: .5rem; + right: .5rem; + z-index: 10; + display: block; + padding: .25rem .5rem; + font-size: 75%; + color: #818a91; + cursor: pointer; + background-color: transparent; + border: 0; + border-radius: .25rem; } + .btn-clipboard:hover { + color: #fff; + background-color: #027de7; } + +@media (min-width: 768px) { + .bd-clipboard { + display: block; } } + +.hll { + background-color: #ffc; } + +.c { + color: #999; } + +.k { + color: #069; } + +.o { + color: #555; } + +.cm { + color: #999; } + +.cp { + color: #099; } + +.c1 { + color: #999; } + +.cs { + color: #999; } + +.gd { + background-color: #fcc; + border: 1px solid #c00; } + +.ge { + font-style: italic; } + +.gr { + color: #f00; } + +.gh { + color: #030; } + +.gi { + background-color: #cfc; + border: 1px solid #0c0; } + +.go { + color: #aaa; } + +.gp { + color: #009; } + +.gu { + color: #030; } + +.gt { + color: #9c6; } + +.kc { + color: #069; } + +.kd { + color: #069; } + +.kn { + color: #069; } + +.kp { + color: #069; } + +.kr { + color: #069; } + +.kt { + color: #078; } + +.m { + color: #f60; } + +.s { + color: #d44950; } + +.na { + color: #4f9fcf; } + +.nb { + color: #366; } + +.nc { + color: #0a8; } + +.no { + color: #360; } + +.nd { + color: #99f; } + +.ni { + color: #999; } + +.ne { + color: #c00; } + +.nf { + color: #c0f; } + +.nl { + color: #99f; } + +.nn { + color: #0cf; } + +.nt { + color: #2f6f9f; } + +.nv { + color: #033; } + +.ow { + color: #000; } + +.w { + color: #bbb; } + +.mf { + color: #f60; } + +.mh { + color: #f60; } + +.mi { + color: #f60; } + +.mo { + color: #f60; } + +.sb { + color: #c30; } + +.sc { + color: #c30; } + +.sd { + font-style: italic; + color: #c30; } + +.s2 { + color: #c30; } + +.se { + color: #c30; } + +.sh { + color: #c30; } + +.si { + color: #a00; } + +.sx { + color: #c30; } + +.sr { + color: #3aa; } + +.s1 { + color: #c30; } + +.ss { + color: #fc3; } + +.bp { + color: #366; } + +.vc { + color: #033; } + +.vg { + color: #033; } + +.vi { + color: #033; } + +.il { + color: #f60; } + +.css .o, +.css .o + .nt, +.css .nt + .nt { + color: #999; } + +.language-bash::before { + color: #009; + content: "$ "; + user-select: none; } + +.language-powershell::before { + color: #009; + content: "PM> "; + user-select: none; } + +.anchorjs-link { + font-weight: normal; + color: rgba(33, 150, 243, 0.5); + transition: color .16s linear; } + .anchorjs-link:hover { + color: #2196f3; + text-decoration: none; } + +.algolia-autocomplete { + display: block !important; + flex: 1; } + .algolia-autocomplete .ds-dropdown-menu { + width: 100%; + min-width: 0 !important; + max-width: none !important; + padding: .75rem 0 !important; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.175); } + @media (min-width: 768px) { + .algolia-autocomplete .ds-dropdown-menu { + width: 175%; } } + .algolia-autocomplete .ds-dropdown-menu::before { + display: none !important; } + .algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { + padding: 0 !important; + overflow: visible !important; + background-color: transparent !important; + border: 0 !important; } + .algolia-autocomplete .ds-dropdown-menu .ds-suggestions { + margin-top: 0 !important; } + .algolia-autocomplete .algolia-docsearch-suggestion { + padding: 0 !important; + overflow: visible !important; } + .algolia-autocomplete .algolia-docsearch-suggestion--category-header { + padding: .125rem 1rem !important; + margin-top: 0 !important; + font-size: .875rem !important; + font-weight: 500 !important; + color: #6e7dd3 !important; + border-bottom: 0 !important; } + .algolia-autocomplete .algolia-docsearch-suggestion--wrapper { + float: none !important; + padding-top: 0 !important; } + .algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { + float: none !important; + width: auto !important; + padding: 0 !important; + text-align: left !important; } + .algolia-autocomplete .algolia-docsearch-suggestion--content { + float: none !important; + width: auto !important; + padding: 0 !important; } + .algolia-autocomplete .algolia-docsearch-suggestion--content::before { + display: none !important; } + .algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { + padding-top: .75rem !important; + margin-top: .75rem !important; + border-top: 1px solid rgba(0, 0, 0, 0.1); } + .algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { + display: none !important; } + .algolia-autocomplete .algolia-docsearch-suggestion--title { + display: block; + padding: .25rem 1rem !important; + margin-bottom: 0 !important; + font-size: .875rem !important; + font-weight: 400 !important; } + .algolia-autocomplete .algolia-docsearch-suggestion--text { + padding: 0 1rem .5rem !important; + margin-top: -.25rem; + font-size: .875rem !important; + font-weight: normal; + line-height: 1.25 !important; } + .algolia-autocomplete .algolia-docsearch-footer { + float: none !important; + width: auto !important; + height: auto !important; + padding: .75rem 1rem 0; + font-size: .75rem !important; + line-height: 1 !important; + color: #767676 !important; + border-top: 1px solid rgba(0, 0, 0, 0.1); } + .algolia-autocomplete .algolia-docsearch-footer--logo { + display: inline !important; + overflow: visible !important; + color: inherit !important; + text-indent: 0 !important; + background: none !important; } + .algolia-autocomplete .algolia-docsearch-suggestion--highlight { + color: #5f2dab; + background-color: rgba(154, 132, 187, 0.12); } + .algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { + box-shadow: inset 0 -2px 0 0 rgba(95, 45, 171, 0.5) !important; } + .algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { + background-color: rgba(208, 189, 236, 0.15) !important; } diff --git a/assets/css/docs.min.css b/assets/css/docs.min.css new file mode 100644 index 00000000..da824514 --- /dev/null +++ b/assets/css/docs.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap Docs (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors + * Copyright 2011-2017 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */.bd-navbar{min-height:4rem;background-color:#3f51b5;box-shadow:0 .5rem 1rem rgba(0,0,0,.05),inset 0 -1px 0 rgba(0,0,0,.1)}@media (max-width:991px){.bd-navbar{padding-right:.5rem;padding-left:.5rem}.bd-navbar .navbar-nav-scroll{max-width:100%;height:2.5rem;margin-top:.25rem;overflow:hidden;font-size:.875rem}.bd-navbar .navbar-nav-scroll .navbar-nav{padding-bottom:2rem;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}}@media (min-width:768px){@supports (position:sticky){.bd-navbar{position:sticky;top:0;z-index:4}}}.bd-navbar .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem;color:#cdbfe3}.bd-navbar .navbar-nav .nav-link.active,.bd-navbar .navbar-nav .nav-link:hover{color:#fff;background-color:transparent}.bd-navbar .navbar-nav .nav-link.active{font-weight:500}.bd-navbar .navbar-nav-svg{display:inline-block;width:1rem;height:1rem;vertical-align:text-top}.bd-navbar .dropdown-menu{font-size:.875rem}.bd-navbar .dropdown-item.active{font-weight:500;color:#212529;background-color:transparent;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23292b2c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:.4rem .6rem;background-size:.75rem .75rem}.bd-masthead,.bd-navbar .nav-item{position:relative}.bd-masthead{padding:3rem 15px}.bd-masthead h1{line-height:1}.bd-masthead .btn{width:100%;padding:.8rem 2rem;font-size:1.25rem;font-weight:500}.bd-masthead .carbonad{margin-top:0!important;margin-bottom:-3rem!important}@media (min-width:576px){.bd-masthead{padding-top:5rem;padding-bottom:5rem}.bd-masthead .carbonad{margin-bottom:0!important}}@media (min-width:768px){.bd-masthead h1{font-size:4rem}.bd-masthead .carbonad{margin-top:3rem!important}}.bd-pretext{overflow:hidden;resize:none}.half-rule{width:6rem;margin:2.5rem 0}.masthead-followup .bd-clipboard{display:none}.masthead-followup .highlight{padding:.5rem 0;background-color:transparent}.bd-featured-sites{margin-right:-1px;margin-left:-1px}.bd-featured-sites .col-6{padding:1px}.bd-featured-sites .img-fluid{margin-top:0}@media (min-width:768px){.bd-featured-sites .col-sm-3:first-child img{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bd-featured-sites .col-sm-3:last-child img{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}}#carbonads{position:static;display:block;max-width:400px;padding:15px 15px 15px 160px;margin:2rem 0;overflow:hidden;font-size:13px;line-height:1.4;text-align:left;background-color:rgba(0,0,0,.05)}#carbonads a{color:#333;text-decoration:none}@media (min-width:576px){#carbonads{max-width:330px;border-radius:4px}}.carbon-img{float:left;margin-left:-145px}.carbon-poweredby{display:block;color:#777!important}.bd-content{order:1}.bd-content>h2[id],.bd-content>h3[id],.bd-content>h4[id]{pointer-events:none}.bd-content>h2[id]>a,.bd-content>h2[id]>div,.bd-content>h3[id]>a,.bd-content>h3[id]>div,.bd-content>h4[id]>a,.bd-content>h4[id]>div{pointer-events:auto}.bd-content>h2[id]:before,.bd-content>h3[id]:before,.bd-content>h4[id]:before{display:block;height:6rem;margin-top:-6rem;visibility:hidden;content:""}.bd-content>table{width:100%;max-width:100%;margin-bottom:1rem}@media (max-width:991px){.bd-content>table{display:block;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}}.bd-content>table>tbody>tr>td,.bd-content>table>tbody>tr>th,.bd-content>table>tfoot>tr>td,.bd-content>table>tfoot>tr>th,.bd-content>table>thead>tr>td,.bd-content>table>thead>tr>th{padding:.75rem;vertical-align:top;border:1px solid rgba(0,0,0,.06)}.bd-content>table>tbody>tr>td>p:last-child,.bd-content>table>tbody>tr>th>p:last-child,.bd-content>table>tfoot>tr>td>p:last-child,.bd-content>table>tfoot>tr>th>p:last-child,.bd-content>table>thead>tr>td>p:last-child,.bd-content>table>thead>tr>th>p:last-child{margin-bottom:0}.bd-content>table td:first-child>code{white-space:nowrap}.bd-content>h2:not(:first-child){margin-top:3rem}.bd-content>h3{margin-top:1.5rem}.bd-content>ol li,.bd-content>ul li{margin-bottom:.25rem}@media (min-width:992px){.bd-content>ol,.bd-content>p,.bd-content>ul{max-width:80%}}.bd-title{margin-top:1rem;margin-bottom:.5rem;font-weight:300}@media (min-width:576px){.bd-title{font-size:3rem}}.bd-lead{font-size:1.125rem;font-weight:300}@media (min-width:576px){.bd-lead{max-width:80%;margin-bottom:1rem;font-size:1.5rem}}.bd-text-purple{color:#3f51b5}.bd-text-purple-bright{color:#6e7dd3}.bd-pageheader{padding:2rem 15px;margin-bottom:1.5rem;color:#cdbfe3;text-align:center;background-color:#3f51b5}.bd-pageheader .container{position:relative}.bd-pageheader h1{font-size:3rem;font-weight:400;color:#fff}.bd-pageheader p{margin-bottom:0;font-size:1.25rem;font-weight:300}@media (min-width:576px){.bd-pageheader{padding-top:4rem;padding-bottom:4rem;margin-bottom:3rem;text-align:left}.bd-pageheader .carbonad{margin:2rem 0 0!important}}@media (min-width:768px){.bd-pageheader h1{font-size:4rem}.bd-pageheader p{font-size:1.5rem}}@media (min-width:992px){.bd-pageheader h1,.bd-pageheader p{margin-right:380px}.bd-pageheader .carbonad{position:absolute;top:0;right:.75rem;margin:0!important}}#skippy{display:block;padding:1em;color:#fff;background-color:#3f51b5;outline:0}#skippy .skiplink-text{padding:.5em;outline:1px dotted}.bd-toc{order:2;padding-top:1.5rem;padding-bottom:1.5rem;font-size:.875rem}@supports (position:sticky){.bd-toc{position:sticky;top:4rem;max-height:calc(100vh - 4rem);overflow-y:auto}}.section-nav{padding-left:0;border-left:1px solid #eee}.section-nav ul{padding-left:1rem}.section-nav ul ul{display:none}.toc-entry,.toc-entry a{display:block}.toc-entry a{padding:.125rem 1.5rem;color:#99979c}.toc-entry a:hover{color:#2196f3;text-decoration:none}.bd-sidebar{order:0;border-bottom:1px solid rgba(0,0,0,.1)}@media (min-width:768px){.bd-sidebar{border-right:1px solid rgba(0,0,0,.1)}@supports (position:sticky){.bd-sidebar{position:sticky;top:4rem;z-index:3;max-height:calc(100vh - 4rem)}}}@media (min-width:1200px){.bd-sidebar{max-width:320px}}.bd-links{padding-top:1rem;padding-bottom:1rem;margin-right:-15px;margin-left:-15px}@media (min-width:768px){@supports (position:sticky){.bd-links{max-height:calc(100vh - 9rem);overflow-y:auto}}}@media (min-width:768px){.bd-links{display:block!important}}.bd-search{position:relative;padding:1rem 15px;margin-right:-15px;margin-left:-15px;border-bottom:1px solid rgba(0,0,0,.05)}.bd-search .form-control:focus{border-color:#6e7dd3;box-shadow:0 0 0 3px rgba(110,125,211,.25)}.bd-search-docs-toggle{line-height:1;color:#212529}.bd-sidenav{display:none}.bd-toc-link{display:block;padding:.25rem 1.5rem;font-weight:500;color:rgba(0,0,0,.65)}.bd-toc-link:hover{color:rgba(0,0,0,.85);text-decoration:none}.bd-toc-item.active{margin-bottom:1rem}.bd-toc-item.active:not(:first-child){margin-top:1rem}.bd-toc-item.active>.bd-toc-link{color:rgba(0,0,0,.85)}.bd-toc-item.active>.bd-toc-link:hover{background-color:transparent}.bd-toc-item.active>.bd-sidenav{display:block}.bd-sidebar .nav>li>a{display:block;padding:.25rem 1.5rem;font-size:90%;color:rgba(0,0,0,.65)}.bd-sidebar .nav>li>a:hover{color:rgba(0,0,0,.85);text-decoration:none;background-color:transparent}.bd-sidebar .nav>.active:hover>a,.bd-sidebar .nav>.active>a{font-weight:500;color:rgba(0,0,0,.85);background-color:transparent}.bd-footer{font-size:85%;text-align:center;background-color:#f7f7f7}.bd-footer a{font-weight:500;color:#495057}.bd-footer a:focus,.bd-footer a:hover{color:#2196f3}.bd-footer p{margin-bottom:0}@media (min-width:576px){.bd-footer{text-align:left}}.bd-footer-links{padding-left:0;margin-bottom:1rem}.bd-footer-links li{display:inline-block}.bd-footer-links li+li{margin-left:1rem}.bd-example-row .row+.row{margin-top:1rem}.bd-example-row .row>.col,.bd-example-row .row>[class^=col-]{padding-top:.75rem;padding-bottom:.75rem;background-color:rgba(86,61,124,.15);border:1px solid rgba(86,61,124,.2)}.bd-example-row .flex-items-bottom,.bd-example-row .flex-items-middle,.bd-example-row .flex-items-top{min-height:6rem;background-color:rgba(255,0,0,.1)}.bd-example-row-flex-cols .row{min-height:10rem;background-color:rgba(255,0,0,.1)}.bd-highlight{background-color:rgba(63,81,181,.15);border:1px solid rgba(63,81,181,.15)}.example-container{width:800px;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px;width:100%}.example-row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.example-content-main{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.example-content-main{flex:0 0 50%;max-width:50%}}@media (min-width:992px){.example-content-main{flex:0 0 66.66667%;max-width:66.66667%}}.example-content-secondary{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.example-content-secondary{flex:0 0 50%;max-width:50%}}@media (min-width:992px){.example-content-secondary{flex:0 0 33.33333%;max-width:33.33333%}}.bd-example-container{min-width:16rem;max-width:25rem;margin-right:auto;margin-left:auto}.bd-example-container-header{height:3rem;margin-bottom:.5rem;background-color:#fff;border-radius:.25rem}.bd-example-container-sidebar{float:right;width:4rem;height:8rem;background-color:#9acffa;border-radius:.25rem}.bd-example-container-body{height:8rem;margin-right:4.5rem;background-color:#98a2db;border-radius:.25rem}.bd-example-container-fluid{max-width:none}.bd-example{position:relative;padding:1rem;margin:1rem -15px;border:solid #f7f7f9;border-width:.2rem 0 0}.bd-example:after{display:block;clear:both;content:""}@media (min-width:576px){.bd-example{padding:1.5rem;margin-right:0;margin-bottom:0;margin-left:0;border-width:.2rem}}.bd-example+.clipboard+.highlight,.bd-example+.highlight{margin-top:0}.bd-example+p{margin-top:2rem}.bd-example .pos-f-t{position:relative;margin:-1rem}@media (min-width:576px){.bd-example .pos-f-t{margin:-1.5rem}}.bd-example>.form-control+.form-control{margin-top:.5rem}.bd-example>.alert+.alert,.bd-example>.nav+.nav,.bd-example>.navbar+.navbar,.bd-example>.progress+.btn,.bd-example>.progress+.progress{margin-top:1rem}.bd-example>.dropdown-menu:first-child{position:static;display:block}.bd-example>.form-group:last-child{margin-bottom:0}.bd-example>.close{float:none}.bd-example-type .table .type-info{color:#999;vertical-align:middle}.bd-example-type .table td{padding:1rem 0;border-color:#eee}.bd-example-type .table tr:first-child td{border-top:0}.bd-example-type h1,.bd-example-type h2,.bd-example-type h3,.bd-example-type h4,.bd-example-type h5,.bd-example-type h6{margin:0}.bd-example-bg-classes p{padding:1rem}.bd-example>img+img{margin-left:.5rem}.bd-example>.btn-group{margin-top:.25rem;margin-bottom:.25rem}.bd-example-control-sizing input[type=text]+input[type=text],.bd-example-control-sizing select,.bd-example>.btn-toolbar+.btn-toolbar{margin-top:.5rem}.bd-example-form .input-group{margin-bottom:.5rem}.bd-example>textarea.form-control{resize:vertical}.bd-example>.list-group{max-width:400px}.bd-example .fixed-top,.bd-example .sticky-top{position:static;margin:-1rem -1rem 1rem}.bd-example .fixed-bottom{position:static;margin:1rem -1rem -1rem}@media (min-width:576px){.bd-example .fixed-top,.bd-example .sticky-top{margin:-1.5rem -1.5rem 1rem}.bd-example .fixed-bottom{margin:1rem -1.5rem -1.5rem}}.bd-example .pagination{margin-top:.5rem;margin-bottom:.5rem}.bd-example-modal{background-color:#fafafa}.bd-example-modal .modal{position:relative;top:auto;right:auto;bottom:auto;left:auto;z-index:1;display:block}.bd-example-modal .modal-dialog{left:auto;margin-right:auto;margin-left:auto}.modal.show{z-index:5}.modal.show .popover,.modal.show .tooltip{z-index:6}.modal-backdrop{z-index:4}.bd-example-tabs .nav-tabs{margin-bottom:1rem}.bd-example-tooltips{text-align:center}.bd-example-tooltips>.btn{margin-top:.25rem;margin-bottom:.25rem}.bs-tooltip-bottom-docs .arrow,.bs-tooltip-top-docs .arrow{left:50%}.bs-tooltip-left-docs .arrow,.bs-tooltip-right-docs .arrow{top:50%}.bd-example-popover-static{padding-bottom:1.5rem;background-color:#f9f9f9}.bd-example-popover-static .popover{position:relative;display:block;float:left;width:260px;margin:1.25rem}.bs-popover-bottom-docs .arrow,.bs-popover-top-docs .arrow{left:50%}.bs-popover-left-docs .arrow,.bs-popover-right-docs .arrow{top:50%}.tooltip-demo a{white-space:nowrap}.bd-example-tooltip-static .tooltip{position:relative;display:inline-block;margin:10px 20px;opacity:1}.scrollspy-example{position:relative;height:200px;margin-top:.5rem;overflow:auto}.scrollspy-example-2{position:relative;height:350px;overflow:auto}.bd-example-border-utils [class^=border]{display:inline-block;width:5rem;height:5rem;margin:.25rem;background-color:#f5f5f5;border:1px solid}.highlight{padding:1rem;margin:1rem -15px;background-color:#f7f7f9;-ms-overflow-style:-ms-autohiding-scrollbar}@media (min-width:576px){.highlight{padding:1.5rem;margin-right:0;margin-left:0}}.highlight pre{padding:0;margin-top:0;margin-bottom:0;background-color:transparent;border:0}.highlight pre code{font-size:inherit;color:#212529}.table-responsive .highlight pre{white-space:normal}.bd-table th small{display:block;font-weight:400;color:#999}.btn-bd-purple{font-weight:500;color:#6e7dd3;border-color:#6e7dd3}.btn-bd-purple:active,.btn-bd-purple:hover{color:#fff;background-color:#6e7dd3;border-color:#6e7dd3}.btn-bd-yellow{font-weight:500;color:#ffe484;border-color:#ffe484}.btn-bd-yellow:active,.btn-bd-yellow:hover{color:#2a2730;background-color:#ffe484;border-color:#ffe484}.bd-callout{padding:1.25rem;margin-top:1.25rem;margin-bottom:1.25rem;border:1px solid #eee;border-left-width:.25rem;border-radius:.25rem}.bd-callout h4{margin-top:0;margin-bottom:.25rem}.bd-callout p:last-child{margin-bottom:0}.bd-callout code{border-radius:.25rem}.bd-callout+.bd-callout{margin-top:-.25rem}.bd-callout-info{border-left-color:#5bc0de}.bd-callout-info h4{color:#5bc0de}.bd-callout-warning{border-left-color:#f0ad4e}.bd-callout-warning h4{color:#f0ad4e}.bd-callout-danger{border-left-color:#d9534f}.bd-callout-danger h4{color:#d9534f}.bd-examples .img-thumbnail{margin-bottom:.75rem}.bd-examples h4{margin-bottom:.25rem}.bd-examples p{margin-bottom:1.25rem}@media (max-width:480px){.bd-examples{margin-right:-.75rem;margin-left:-.75rem}.bd-examples>[class^=col-]{padding-right:.75rem;padding-left:.75rem}}.bd-team{margin-bottom:1.5rem}.bd-team .team-member{line-height:2rem;color:#555}.bd-team .team-member:focus,.bd-team .team-member:hover{color:#333}.bd-team .team-member:hover{text-decoration:none}.bd-team .github-btn{float:right;width:180px;height:1.25rem;margin-top:.25rem;border:0}.bd-team img{float:left;width:2rem;margin-right:.5rem;border-radius:.25rem}.bd-browser-bugs td p{margin-bottom:0}.bd-browser-bugs th:first-child{width:18%}.bd-brand-logos{display:table;width:100%;margin-bottom:1rem;overflow:hidden;color:#3f51b5;background-color:#f9f9f9;border-radius:.25rem}.bd-brand-item{padding:4rem 0;text-align:center}.bd-brand-item+.bd-brand-item{border-top:1px solid #fff}.bd-brand-logos .inverse{color:#fff;background-color:#3f51b5}.bd-brand-item h1,.bd-brand-item h3{margin-top:0;margin-bottom:0}.bd-brand-item .bd-booticon{margin-right:auto;margin-left:auto}@media (min-width:768px){.bd-brand-item{display:table-cell;width:1%}.bd-brand-item+.bd-brand-item{border-top:0;border-left:1px solid #fff}.bd-brand-item h1{font-size:4rem}}.color-swatches{margin:0 -5px;overflow:hidden}.color-swatch{float:left;width:4rem;height:4rem;margin-right:.25rem;margin-left:.25rem;border-radius:.25rem}@media (min-width:768px){.color-swatch{width:6rem;height:6rem}}.color-swatches .bd-purple{background-color:#3f51b5}.color-swatches .bd-purple-light{background-color:#cdbfe3}.color-swatches .bd-purple-lighter{background-color:#e5e1ea}.color-swatches .bd-gray{background-color:#f9f9f9}.swatch-blue{background-color:#2196f3;color:#fff}.swatch-indigo{background-color:#3f51b5;color:#fff}.swatch-purple{background-color:#9c27b0;color:#fff}.swatch-pink{background-color:#e91e63;color:#fff}.swatch-red{background-color:#f44336;color:#fff}.swatch-orange{background-color:#ff9800;color:#111}.swatch-yellow{background-color:#ffeb3b;color:#111}.swatch-green{background-color:#4caf50;color:#fff}.swatch-teal{background-color:#009688;color:#fff}.swatch-cyan{background-color:#00bcd4;color:#fff}.swatch-white{background-color:#fff;color:#111}.swatch-gray{background-color:#868e96;color:#fff}.swatch-gray-dark{background-color:#343a40;color:#fff}.swatch-primary{background-color:#2196f3;color:#fff}.swatch-secondary{background-color:#868e96;color:#fff}.swatch-success{background-color:#4caf50;color:#fff}.swatch-info{background-color:#00bcd4;color:#fff}.swatch-warning{background-color:#ffeb3b;color:#111}.swatch-danger{background-color:#f44336;color:#fff}.swatch-light{background-color:#f8f9fa;color:#111}.swatch-dark{background-color:#343a40;color:#fff}.swatch-100{background-color:#f8f9fa;color:#111}.swatch-200{background-color:#e9ecef;color:#111}.swatch-300{background-color:#dee2e6;color:#111}.swatch-400{background-color:#ced4da;color:#111}.swatch-500{background-color:#adb5bd;color:#111}.swatch-600{background-color:#868e96;color:#fff}.swatch-700{background-color:#495057;color:#fff}.swatch-800{background-color:#343a40;color:#fff}.swatch-900{background-color:#212529;color:#fff}.bd-clipboard{position:relative;display:none;float:right}.bd-clipboard+.highlight{margin-top:0}.btn-clipboard{position:absolute;top:.5rem;right:.5rem;z-index:2;display:block;padding:.25rem .5rem;font-size:75%;color:#818a91;cursor:pointer;background-color:transparent;border:0;border-radius:.25rem}.btn-clipboard:hover{color:#fff;background-color:#027de7}@media (min-width:768px){.bd-clipboard{display:block}}.hll{background-color:#ffc}.c{color:#999}.k{color:#069}.o{color:#555}.cm{color:#999}.cp{color:#099}.c1,.cs{color:#999}.gd{background-color:#fcc;border:1px solid #c00}.ge{font-style:italic}.gr{color:red}.gh{color:#030}.gi{background-color:#cfc;border:1px solid #0c0}.go{color:#aaa}.gp{color:#009}.gu{color:#030}.gt{color:#9c6}.kc,.kd,.kn,.kp,.kr{color:#069}.kt{color:#078}.m{color:#f60}.s{color:#d44950}.na{color:#4f9fcf}.nb{color:#366}.nc{color:#0a8}.no{color:#360}.nd{color:#99f}.ni{color:#999}.ne{color:#c00}.nf{color:#c0f}.nl{color:#99f}.nn{color:#0cf}.nt{color:#2f6f9f}.nv{color:#033}.ow{color:#000}.w{color:#bbb}.mf,.mh,.mi,.mo{color:#f60}.sb,.sc,.sd{color:#c30}.sd{font-style:italic}.s2,.se,.sh{color:#c30}.si{color:#a00}.sx{color:#c30}.sr{color:#3aa}.s1{color:#c30}.ss{color:#fc3}.bp{color:#366}.vc,.vg,.vi{color:#033}.il{color:#f60}.css .nt+.nt,.css .o,.css .o+.nt{color:#999}.language-bash:before{color:#009;content:"$ ";user-select:none}.language-powershell:before{color:#009;content:"PM> ";user-select:none}.anchorjs-link{font-weight:400;color:rgba(33,150,243,.5);transition:color .16s linear}.anchorjs-link:hover{color:#2196f3;text-decoration:none}.algolia-autocomplete{display:block!important;flex:1}.algolia-autocomplete .ds-dropdown-menu{width:100%;min-width:0!important;max-width:none!important;padding:.75rem 0!important;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.175)}@media (min-width:768px){.algolia-autocomplete .ds-dropdown-menu{width:175%}}.algolia-autocomplete .ds-dropdown-menu:before{display:none!important}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{padding:0!important;overflow:visible!important;background-color:transparent!important;border:0!important}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{margin-top:0!important}.algolia-autocomplete .algolia-docsearch-suggestion{padding:0!important;overflow:visible!important}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{padding:.125rem 1rem!important;margin-top:0!important;font-size:.875rem!important;font-weight:500!important;color:#6e7dd3!important;border-bottom:0!important}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{float:none!important;padding-top:0!important}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:none!important;width:auto!important;padding:0!important;text-align:left!important}.algolia-autocomplete .algolia-docsearch-suggestion--content{float:none!important;width:auto!important;padding:0!important}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{display:none!important}.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header{padding-top:.75rem!important;margin-top:.75rem!important;border-top:1px solid rgba(0,0,0,.1)}.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column{display:none!important}.algolia-autocomplete .algolia-docsearch-suggestion--title{display:block;padding:.25rem 1rem!important;margin-bottom:0!important;font-size:.875rem!important;font-weight:400!important}.algolia-autocomplete .algolia-docsearch-suggestion--text{padding:0 1rem .5rem!important;margin-top:-.25rem;font-size:.875rem!important;font-weight:400;line-height:1.25!important}.algolia-autocomplete .algolia-docsearch-footer{float:none!important;width:auto!important;height:auto!important;padding:.75rem 1rem 0;font-size:.75rem!important;line-height:1!important;color:#767676!important;border-top:1px solid rgba(0,0,0,.1)}.algolia-autocomplete .algolia-docsearch-footer--logo{display:inline!important;overflow:visible!important;color:inherit!important;text-indent:0!important;background:none!important}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#5f2dab;background-color:rgba(154,132,187,.12)}.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{box-shadow:inset 0 -2px 0 0 rgba(95,45,171,.5)!important}.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content{background-color:rgba(208,189,236,.15)!important} \ No newline at end of file diff --git a/assets/img/MD4B.svg b/assets/img/MD4B.svg new file mode 100644 index 00000000..53960fa1 --- /dev/null +++ b/assets/img/MD4B.svg @@ -0,0 +1,61 @@ + + + + Untitled + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/bootstrap-stack.png b/assets/img/bootstrap-stack.png new file mode 100755 index 00000000..7cae17fe Binary files /dev/null and b/assets/img/bootstrap-stack.png differ diff --git a/assets/img/bootstrap-themes.png b/assets/img/bootstrap-themes.png new file mode 100755 index 00000000..3876a18e Binary files /dev/null and b/assets/img/bootstrap-themes.png differ diff --git a/assets/img/mk-pro-banner.jpg b/assets/img/mk-pro-banner.jpg new file mode 100644 index 00000000..feb6522b Binary files /dev/null and b/assets/img/mk-pro-banner.jpg differ diff --git a/assets/img/mk-pro-banner.png b/assets/img/mk-pro-banner.png new file mode 100644 index 00000000..5b7b3303 Binary files /dev/null and b/assets/img/mk-pro-banner.png differ diff --git a/assets/js/docs.min.js b/assets/js/docs.min.js new file mode 100755 index 00000000..a0ccb498 --- /dev/null +++ b/assets/js/docs.min.js @@ -0,0 +1,19 @@ +!function(e,t){"use strict";"function"==typeof define&&define.amd?define([],t):"object"==typeof module&&module.exports?module.exports=t():(e.AnchorJS=t(),e.anchors=new e.AnchorJS)}(this,function(){"use strict";function e(e){function t(e){e.icon=e.hasOwnProperty("icon")?e.icon:"",e.visible=e.hasOwnProperty("visible")?e.visible:"hover",e.placement=e.hasOwnProperty("placement")?e.placement:"right",e.class=e.hasOwnProperty("class")?e.class:"",e.truncate=e.hasOwnProperty("truncate")?Math.floor(e.truncate):64}function n(e){var t;if("string"==typeof e||e instanceof String)t=[].slice.call(document.querySelectorAll(e));else{if(!(Array.isArray(e)||e instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");t=[].slice.call(e)}return t}function r(){if(null===document.head.querySelector("style.anchorjs")){var e,t=document.createElement("style");t.className="anchorjs",t.appendChild(document.createTextNode("")),e=document.head.querySelector('[rel="stylesheet"], style'),void 0===e?document.head.appendChild(t):document.head.insertBefore(t,e),t.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",t.sheet.cssRules.length),t.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",t.sheet.cssRules.length),t.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",t.sheet.cssRules.length),t.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',t.sheet.cssRules.length)}}this.options=e||{},this.elements=[],t(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(e){var i,o,a,s,l,c,u,h,d,f,A,p,g=[];if(t(this.options),p=this.options.visible,"touch"===p&&(p=this.isTouchDevice()?"always":"hover"),e||(e="h1, h2, h3, h4, h5, h6"),i=n(e),0===i.length)return!1;for(r(),o=document.querySelectorAll("[id]"),a=[].map.call(o,function(e){return e.id}),l=0;l-1,n=e.lastChild&&(" "+e.lastChild.className+" ").indexOf(" anchorjs-link ")>-1;return t||n||!1}}return e}),function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Clipboard=e()}}(function(){var e;return function e(t,n,r){function i(a,s){if(!n[a]){if(!t[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[a]={exports:{}};t[a][0].call(u.exports,function(e){var n=t[a][1][e];return i(n?n:e)},u,u.exports,e,t,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a0&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var e=this,t="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=document.body.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[t?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,document.body.appendChild(this.fakeElem),this.selectedText=(0,r.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(document.body.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(document.body.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,r.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.target&&this.target.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":i(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function(){return this._target}}]),e}();e.exports=a})},{select:5}],8:[function(t,n,r){!function(i,o){if("function"==typeof e&&e.amd)e(["module","./clipboard-action","tiny-emitter","good-listener"],o);else if(void 0!==r)o(n,t("./clipboard-action"),t("tiny-emitter"),t("good-listener"));else{var a={exports:{}};o(a,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=a.exports}}(this,function(e,t,n,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n="data-clipboard-"+e;if(t.hasAttribute(n))return t.getAttribute(n)}var c=i(t),u=i(n),h=i(r),d=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText}},{key:"listenClick",value:function(e){var t=this;this.listener=(0,h.default)(e,"click",function(e){return t.onClick(e)})}},{key:"onClick",value:function(e){var t=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new c.default({action:this.action(t),target:this.target(t),text:this.text(t),trigger:t,emitter:this})}},{key:"defaultAction",value:function(e){return l("action",e)}},{key:"defaultTarget",value:function(e){var t=l("target",e);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(e){return l("text",e)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof e?[e]:e,n=!!document.queryCommandSupported;return t.forEach(function(e){n=n&&!!document.queryCommandSupported(e)}),n}}]),t}(u.default);e.exports=f})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)}),/*! + +Holder - client side image placeholders +Version 2.9.4+cabil +© 2016 Ivan Malopinsky - http://imsky.co + +Site: http://holderjs.com +Issues: https://github.com/imsky/holder/issues +License: MIT + +*/ +!function(e){if(e.document){var t=e.document;t.querySelectorAll||(t.querySelectorAll=function(n){var r,i=t.createElement("style"),o=[];for(t.documentElement.firstChild.appendChild(i),t._qsa=[],i.styleSheet.cssText=n+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",e.scrollBy(0,0),i.parentNode.removeChild(i);t._qsa.length;)r=t._qsa.shift(),r.style.removeAttribute("x-qsa"),o.push(r);return t._qsa=null,o}),t.querySelector||(t.querySelector=function(e){var n=t.querySelectorAll(e);return n.length?n[0]:null}),t.getElementsByClassName||(t.getElementsByClassName=function(e){return e=String(e).replace(/^|\s+/g,"."),t.querySelectorAll(e)}),Object.keys||(Object.keys=function(e){if(e!==Object(e))throw TypeError("Object.keys called on non-object");var t,n=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&n.push(t);return n}),Array.prototype.forEach||(Array.prototype.forEach=function(e){if(void 0===this||null===this)throw TypeError();var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw TypeError();var r,i=arguments[1];for(r=0;r>16&255)),i.push(String.fromCharCode(o>>8&255)),i.push(String.fromCharCode(255&o)),a=0,o=0),r+=1;return 12===a?(o>>=4,i.push(String.fromCharCode(255&o))):18===a&&(o>>=2,i.push(String.fromCharCode(o>>8&255)),i.push(String.fromCharCode(255&o))),i.join("")},e.btoa=e.btoa||function(e){e=String(e);var n,r,i,o,a,s,l,c=0,u=[];if(/[^\x00-\xFF]/.test(e))throw Error("InvalidCharacterError");for(;c>2,a=(3&n)<<4|r>>4,s=(15&r)<<2|i>>6,l=63&i,c===e.length+2?(s=64,l=64):c===e.length+1&&(l=64),u.push(t.charAt(o),t.charAt(a),t.charAt(s),t.charAt(l));return u.join("")}}(e),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(e){var t=this.__proto__||this.constructor.prototype;return e in this&&(!(e in t)||t[e]!==this[e])}),function(){if("performance"in e==0&&(e.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in e.performance==0){var t=Date.now();performance.timing&&performance.timing.navigationStart&&(t=performance.timing.navigationStart),e.performance.now=function(){return Date.now()-t}}}(),e.requestAnimationFrame||(e.webkitRequestAnimationFrame&&e.webkitCancelAnimationFrame?function(e){e.requestAnimationFrame=function(t){return webkitRequestAnimationFrame(function(){t(e.performance.now())})},e.cancelAnimationFrame=e.webkitCancelAnimationFrame}(e):e.mozRequestAnimationFrame&&e.mozCancelAnimationFrame?function(e){e.requestAnimationFrame=function(t){return mozRequestAnimationFrame(function(){t(e.performance.now())})},e.cancelAnimationFrame=e.mozCancelAnimationFrame}(e):function(e){e.requestAnimationFrame=function(t){return e.setTimeout(t,1e3/60)},e.cancelAnimationFrame=e.clearTimeout}(e))}}(this),function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Holder=t():e.Holder=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){(function(t){function r(e,t,n,r){var a=i(n.substr(n.lastIndexOf(e.domain)),e);a&&o({mode:null,el:r,flags:a,engineSettings:t})}function i(e,t){var n={theme:S(O.settings.themes.gray,null),stylesheets:t.stylesheets,instanceOptions:t},r=e.indexOf("?"),i=[e];r!==-1&&(i=[e.slice(0,r),e.slice(r+1)]);var o=i[0].split("/");n.holderURL=e;var a=o[1],s=a.match(/([\d]+p?)x([\d]+p?)/);if(!s)return!1;if(n.fluid=a.indexOf("p")!==-1,n.dimensions={width:s[1].replace("p","%"),height:s[2].replace("p","%")},2===i.length){var l=g.parse(i[1]);if(v.truthy(l.ratio)){n.fluid=!0;var c=parseFloat(n.dimensions.width.replace("%","")),u=parseFloat(n.dimensions.height.replace("%",""));u=Math.floor(u/c*100),c=100,n.dimensions.width=c+"%",n.dimensions.height=u+"%"}if(n.auto=v.truthy(l.auto),l.bg&&(n.theme.bg=v.parseColor(l.bg)),l.fg&&(n.theme.fg=v.parseColor(l.fg)),l.bg&&!l.fg&&(n.autoFg=!0),l.theme&&n.instanceOptions.themes.hasOwnProperty(l.theme)&&(n.theme=S(n.instanceOptions.themes[l.theme],null)),l.text&&(n.text=l.text),l.textmode&&(n.textmode=l.textmode),l.size&&(n.size=l.size),l.font&&(n.font=l.font),l.align&&(n.align=l.align),l.lineWrap&&(n.lineWrap=l.lineWrap),n.nowrap=v.truthy(l.nowrap),n.outline=v.truthy(l.outline),v.truthy(l.random)){O.vars.cache.themeKeys=O.vars.cache.themeKeys||Object.keys(n.instanceOptions.themes);var h=O.vars.cache.themeKeys[0|Math.random()*O.vars.cache.themeKeys.length];n.theme=S(n.instanceOptions.themes[h],null)}}return n}function o(e){var t=e.mode,n=e.el,r=e.flags,i=e.engineSettings,o=r.dimensions,s=r.theme,l=o.width+"x"+o.height;t=null==t?r.fluid?"fluid":"image":t;if(null!=r.text&&(s.text=r.text,"object"===n.nodeName.toLowerCase())){for(var h=s.text.split("\\n"),d=0;d1){var b,x=0,E=0,C=0;y=new s.Group("line"+C),"left"!==e.align&&"right"!==e.align||(o=e.width*(1-2*(1-r)));for(var S=0;S=o||T===!0)&&(t(p,y,x,p.properties.leading),p.add(y),x=0,E+=p.properties.leading,C+=1,y=new s.Group("line"+C),y.y=E),T!==!0&&(v.moveTo(x,0),x+=g.spaceWidth+k.width,y.add(v))}if(t(p,y,x,p.properties.leading),p.add(y),"left"===e.align)p.moveTo(e.width-i,null,null);else if("right"===e.align){for(b in p.children)y=p.children[b],y.moveTo(e.width-y.width,null,null);p.moveTo(0-(e.width-i),null,null)}else{for(b in p.children)y=p.children[b],y.moveTo((p.width-y.width)/2,null,null);p.moveTo((e.width-p.width)/2,null,null)}p.moveTo(null,(e.height-p.height)/2,null),(e.height-p.height)/2<0&&p.moveTo(null,0,null)}else v=new s.Text(e.text),y=new s.Group("line0"),y.add(v),p.add(y),"left"===e.align?p.moveTo(e.width-i,null,null):"right"===e.align?p.moveTo(0-(e.width-i),null,null):p.moveTo((e.width-g.boundingBox.width)/2,null,null),p.moveTo(null,(e.height-g.boundingBox.height)/2,null);return a}function l(e,t,n,r){var i=parseInt(e,10),o=parseInt(t,10),a=Math.max(i,o),s=Math.min(i,o),l=.8*Math.min(s,a*r);return Math.round(Math.max(n,l))}function c(e){var t;t=null==e||null==e.nodeType?O.vars.resizableImages:[e];for(var n=0,r=t.length;n1){n.nodeValue="";for(var g=0;g=0?t:1)}function o(e){w?i(e):x.push(e)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function e(){document.removeEventListener("DOMContentLoaded",e,!1),document.readyState="complete"},!1),document.readyState="loading");var a=e.document,s=a.documentElement,l="load",c=!1,u="on"+l,h="complete",d="readyState",f="attachEvent",A="detachEvent",p="addEventListener",g="DOMContentLoaded",m="onreadystatechange",v="removeEventListener",y=p in a,b=c,w=c,x=[];if(a[d]===h)i(t);else if(y)a[p](g,n,c),e[p](l,n,c);else{a[f](m,n),e[f](u,n);try{b=null==e.frameElement&&s}catch(e){}b&&b.doScroll&&function e(){if(!w){try{b.doScroll("left")}catch(t){return i(e,50)}r(),t()}}()}return o.version="1.4.0",o.isReady=function(){return w},o}(window)},function(e,t,n){var r=encodeURIComponent,i=decodeURIComponent,o=n(4),a=n(5),s=/(\w+)\[(\d+)\]/,l=/\w+\.\w+/;t.parse=function(e){if("string"!=typeof e)return{};if(""===(e=o(e)))return{};"?"===e.charAt(0)&&(e=e.slice(1));for(var t={},n=e.split("&"),r=0;r=0;r--)n=e.charCodeAt(r),n>128?t.unshift(["&#",n,";"].join("")):t.unshift(e[r]);return t.join("")},t.imageExists=function(e,t){var n=new Image;n.onerror=function(){t.call(this,!1)},n.onload=function(){t.call(this,!0)},n.src=e},t.decodeHtmlEntity=function(e){return e.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(t)})},t.dimensionCheck=function(e){var t={height:e.clientHeight,width:e.clientWidth};return!(!t.height||!t.width)&&t},t.truthy=function(e){return"string"==typeof e?"true"===e||"yes"===e||"1"===e||"on"===e||"✓"===e:!!e},t.parseColor=function(e){var t,n=e.match(/(^(?:#?)[0-9a-f]{6}$)|(^(?:#?)[0-9a-f]{3}$)/i);return null!==n?(t=n[1]||n[2],"#"!==t[0]?"#"+t:t):(n=e.match(/^rgb\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/),null!==n?t="rgb("+n.slice(1).join(",")+")":(n=e.match(/^rgba\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0\.\d{1,}|1)\)$/),null!==n?t="rgba("+n.slice(1).join(",")+")":null))},t.canvasRatio=function(){var t=1,n=1;if(e.document){var r=e.document.createElement("canvas");if(r.getContext){var i=r.getContext("2d");t=e.devicePixelRatio||1,n=i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1}}return t/n}}).call(t,function(){return this}())},function(e,t,n){(function(e){var r=n(9),i="http://www.w3.org/2000/svg";t.initSVG=function(e,t,n){var o,a,s=!1;e&&e.querySelector?null===(a=e.querySelector("style"))&&(s=!0):(e=r.newEl("svg",i),s=!0),s&&(o=r.newEl("defs",i),a=r.newEl("style",i),r.setAttr(a,{type:"text/css"}),o.appendChild(a),e.appendChild(o)),e.webkitMatchesSelector&&e.setAttribute("xmlns",i);for(var l=0;l=0;l--){var c=s.createProcessingInstruction("xml-stylesheet",'href="'+a[l]+'" rel="stylesheet"');s.insertBefore(c,s.firstChild)}s.removeChild(s.documentElement),o=i.serializeToString(s)}var u=i.serializeToString(t);return u=u.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),o+u}}}).call(t,function(){return this}())},function(e,t){(function(e){t.newEl=function(t,n){if(e.document)return null==n?e.document.createElement(t):e.document.createElementNS(n,t)},t.setAttr=function(e,t){for(var n in t)e.setAttribute(n,t[n])},t.createXML=function(){if(e.DOMParser)return(new DOMParser).parseFromString("","application/xml")},t.getNodeArray=function(t){var n=null;return"string"==typeof t?n=document.querySelectorAll(t):e.NodeList&&t instanceof e.NodeList?n=t:e.Node&&t instanceof e.Node?n=[t]:e.HTMLCollection&&t instanceof e.HTMLCollection?n=t:t instanceof Array?n=t:null===t&&(n=[]),n=Array.prototype.slice.call(n)}}).call(t,function(){return this}())},function(e,t){var n=function(e,t){"string"==typeof e&&(this.original=e,"#"===e.charAt(0)&&(e=e.slice(1)),/[^a-f0-9]+/i.test(e)||(3===e.length&&(e=e.replace(/./g,"$&$&")),6===e.length&&(this.alpha=1,t&&t.alpha&&(this.alpha=t.alpha),this.set(parseInt(e,16)))))};n.rgb2hex=function(e,t,n){function r(e){var t=(0|e).toString(16);return e<16&&(t="0"+t),t}return[e,t,n].map(r).join("")},n.hsl2rgb=function(e,t,n){var r=e/60,i=(1-Math.abs(2*n-1))*t,o=i*(1-Math.abs(parseInt(r)%2-1)),a=n-i/2,s=0,l=0,c=0;return r>=0&&r<1?(s=i,l=o):r>=1&&r<2?(s=o,l=i):r>=2&&r<3?(l=i,c=o):r>=3&&r<4?(l=o,c=i):r>=4&&r<5?(s=o,c=i):r>=5&&r<6&&(s=i,c=o),s+=a,l+=a,c+=a,s=parseInt(255*s),l=parseInt(255*l),c=parseInt(255*c),[s,l,c]},n.prototype.set=function(e){this.raw=e;var t=(16711680&this.raw)>>16,n=(65280&this.raw)>>8,r=255&this.raw,i=.2126*t+.7152*n+.0722*r,o=-.09991*t-.33609*n+.436*r,a=.615*t-.55861*n-.05639*r;return this.rgb={r:t,g:n,b:r},this.yuv={y:i,u:o,v:a},this},n.prototype.lighten=function(e){var t=Math.min(1,Math.max(0,Math.abs(e)))*(e<0?-1:1),r=255*t|0,i=Math.min(255,Math.max(0,this.rgb.r+r)),o=Math.min(255,Math.max(0,this.rgb.g+r)),a=Math.min(255,Math.max(0,this.rgb.b+r));return new n(n.rgb2hex(i,o,a))},n.prototype.toHex=function(e){return(e?"#":"")+this.raw.toString(16)},n.prototype.lighterThan=function(e){return e instanceof n||(e=new n(e)),this.yuv.y>e.yuv.y},n.prototype.blendAlpha=function(e){e instanceof n||(e=new n(e));var t=e,r=this,i=t.alpha*t.rgb.r+(1-t.alpha)*r.rgb.r,o=t.alpha*t.rgb.g+(1-t.alpha)*r.rgb.g,a=t.alpha*t.rgb.b+(1-t.alpha)*r.rgb.b;return new n(n.rgb2hex(i,o,a))},e.exports=n},function(e,t){e.exports={version:"2.9.4",svg_ns:"http://www.w3.org/2000/svg"}},function(e,t,n){function r(e,t){return h.element({tag:t,width:e.width,height:e.height,fill:e.properties.fill})}function i(e){return c.cssProps({fill:e.fill,"font-weight":e.font.weight,"font-family":e.font.family+", monospace","font-size":e.font.size+e.font.units})}function o(e,t,n){var r=n/2;return["M",r,r,"H",e-r,"V",t-r,"H",r,"V",0,"M",0,r,"L",e,t-r,"M",0,t-r,"L",e,r].join(" ")}var a=n(13),s=n(8),l=n(11),c=n(7),u=l.svg_ns,h={element:function(e){var t=e.tag,n=e.content||"";return delete e.tag,delete e.content,[t,n,e]}};e.exports=function(e,t){var n=t.engineSettings,l=n.stylesheets,c=l.map(function(e){return''}).join("\n"),d="holder_"+Number(new Date).toString(16),f=e.root,A=f.children.holderTextGroup,p="#"+d+" text { "+i(A.properties)+" } ";A.y+=.8*A.textPositionData.boundingBox.height;var g=[];Object.keys(A.children).forEach(function(e){var t=A.children[e];Object.keys(t.children).forEach(function(e){var n=t.children[e],r=A.x+t.x+n.x,i=A.y+t.y+n.y,o=h.element({tag:"text",content:n.properties.text,x:r,y:i});g.push(o)})});var m=h.element({tag:"g",content:g}),v=null;if(f.children.holderBg.properties.outline){var y=f.children.holderBg.properties.outline;v=h.element({tag:"path",d:o(f.children.holderBg.width,f.children.holderBg.height,y.width),"stroke-width":y.width,stroke:y.fill,fill:"none"})}var b=r(f.children.holderBg,"rect"),w=[];w.push(b),y&&w.push(v),w.push(m);var x=h.element({tag:"g",id:d,content:w}),E=h.element({tag:"style",content:p,type:"text/css"}),C=h.element({tag:"defs",content:E}),S=h.element({tag:"svg",content:[C,x],width:f.properties.width,height:f.properties.height,xmlns:u,viewBox:[0,0,f.properties.width,f.properties.height].join(" "),preserveAspectRatio:"none"}),k=a(S);return k=c+k[0],s.svgStringToDataURI(k,"background"===t.mode)}},function(e,t,n){n(14),e.exports=function e(t,n,r){"use strict";function i(e,t){if(null!==t&&t!==!1&&void 0!==t)return"string"!=typeof t&&"object"!=typeof t?String(t):t}var o,a,s,l,c=1,u=!0;if(r=r||{},"string"==typeof t[0])t[0]=function(e){var t=e.match(/^[\w-]+/),n={tag:t?t[0]:"div",attr:{},children:[]},i=e.match(/#([\w-]+)/),o=e.match(/\$([\w-]+)/),a=e.match(/\.[\w-]+/g);return i&&(n.attr.id=i[1],r[i[1]]=n),o&&(r[o[1]]=n),a&&(n.attr.class=a.join(" ").replace(/\./g,"")),e.match(/&$/g)&&(u=!1),n}(t[0]);else{if(!Array.isArray(t[0]))throw new Error("First element of array must be a string, or an array and not "+JSON.stringify(t[0]));c=0}for(;c/g,">")}(t[c])),t[0].children.push(t[c]);else if("number"==typeof t[c])t[0].children.push(t[c]);else if(Array.isArray(t[c])){if(Array.isArray(t[c][0])){if(t[c].reverse().forEach(function(e){t.splice(c+1,0,e)}),0!==c)continue;c++}e(t[c],n,r),t[c][0]&&t[0].children.push(t[c][0])}else if("function"==typeof t[c])s=t[c];else{if("object"!=typeof t[c])throw new TypeError('"'+t[c]+'" is not allowed as a value.');for(a in t[c])t[c].hasOwnProperty(a)&&null!==t[c][a]&&t[c][a]!==!1&&("style"===a&&"object"==typeof t[c][a]?t[0].attr[a]=JSON.stringify(t[c][a],i).slice(2,-2).replace(/","/g,";").replace(/":"/g,":").replace(/\\"/g,"'"):t[0].attr[a]=t[c][a])}}if(t[0]!==!1){o="<"+t[0].tag;for(l in t[0].attr)t[0].attr.hasOwnProperty(l)&&(o+=" "+l+'="'+function(e){return e||0===e?String(e).replace(/&/g,"&").replace(/"/g,"""):""}(t[0].attr[l])+'"');o+=">",t[0].children.forEach(function(e){o+=e}),o+="",t[0]=o}return r[0]=t[0],s&&s(t[0]),r}},function(e,t){"use strict";function n(e){var t=""+e,n=r.exec(t);if(!n)return t;var i,o="",a=0,s=0;for(a=n.index;a]/;e.exports=n},function(e,t,n){var r=n(9),i=n(7);e.exports=function(){var e=r.newEl("canvas"),t=null;return function(n){null==t&&(t=e.getContext("2d"));var r=i.canvasRatio(),o=n.root;e.width=r*o.properties.width,e.height=r*o.properties.height,t.textBaseline="middle";var a=o.children.holderBg,s=r*a.width,l=r*a.height;t.fillStyle=a.properties.fill,t.fillRect(0,0,s,l),a.properties.outline&&(t.strokeStyle=a.properties.outline.fill,t.lineWidth=a.properties.outline.width,t.moveTo(1,1),t.lineTo(s-1,1),t.lineTo(s-1,l-1),t.lineTo(1,l-1),t.lineTo(1,1),t.moveTo(0,1),t.lineTo(s,l-1),t.moveTo(0,l-1),t.lineTo(s,1),t.stroke());var c=o.children.holderTextGroup;t.font=c.properties.font.weight+" "+r*c.properties.font.size+c.properties.font.units+" "+c.properties.font.family+", monospace",t.fillStyle=c.properties.fill;for(var u in c.children){var h=c.children[u];for(var d in h.children){var f=h.children[d],A=r*(c.x+h.x+f.x),p=r*(c.y+h.y+f.y+c.properties.leading/2);t.fillText(f.properties.text,A,p)}}return e.toDataURL("image/png")}}()}])}),function(e,t){t&&(Holder=e.Holder)}(this,"undefined"!=typeof Meteor&&"undefined"!=typeof Package),/*! + * JavaScript for Bootstrap's docs (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors + * Copyright 2011-2017 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */ +function(e){"use strict";e(function(){e(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),e('[data-toggle="popover"]').popover(),e(".tooltip-test").tooltip(),e(".popover-test").popover(),e('.bd-example-indeterminate [type="checkbox"]').prop("indeterminate",!0),e('.bd-content [href="#"]').click(function(e){e.preventDefault()}),e("#exampleModal").on("show.bs.modal",function(t){var n=e(t.relatedTarget),r=n.data("whatever"),i=e(this);i.find(".modal-title").text("New message to "+r),i.find(".modal-body input").val(r)}),e(".bd-toggle-animated-progress").on("click",function(){e(this).siblings(".progress").find(".progress-bar-striped").toggleClass("progress-bar-animated")}),e(".highlight").each(function(){e(this).before('
Copy
'),e(".btn-clipboard").tooltip()});var t=new Clipboard(".btn-clipboard",{target:function(e){return e.parentNode.nextElementSibling}});t.on("success",function(t){e(t.trigger).attr("title","Copied!").tooltip("_fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("_fixTitle"),t.clearSelection()}),t.on("error",function(t){var n=/Mac/i.test(navigator.userAgent)?"⌘":"Ctrl-",r="Press "+n+"C to copy";e(t.trigger).attr("title",r).tooltip("_fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("_fixTitle")})})}(jQuery),function(){"use strict";anchors.options.placement="left",anchors.add(".bd-content > h1, .bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5")}(); \ No newline at end of file diff --git a/assets/js/ie-emulation-modes-warning.js b/assets/js/ie-emulation-modes-warning.js new file mode 100755 index 00000000..c8f0bcac --- /dev/null +++ b/assets/js/ie-emulation-modes-warning.js @@ -0,0 +1,52 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ +/*! + * Copyright 2014-2015 The Bootstrap Authors + * Copyright 2014-2015 Twitter, Inc. + * + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */ +// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes. +(function () { + 'use strict' + + function emulatedIEMajorVersion() { + var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent) + if (groups === null) { + return null + } + var ieVersionNum = parseInt(groups[1], 10) + var ieMajorVersion = Math.floor(ieVersionNum) + return ieMajorVersion + } + + function actualNonEmulatedIEMajorVersion() { + // Detects the actual version of IE in use, even if it's in an older-IE emulation mode. + // IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx + // @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx + var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // eslint-disable-line no-new-func + if (jscriptVersion === undefined) { + return 11 // IE11+ not in emulation mode + } + if (jscriptVersion < 9) { + return 8 // IE8 (or lower; haven't tested on IE<8) + } + return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode + } + + var ua = window.navigator.userAgent + if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) { + return // Opera, which might pretend to be IE + } + var emulated = emulatedIEMajorVersion() + if (emulated === null) { + return // Not IE + } + var nonEmulated = actualNonEmulatedIEMajorVersion() + + if (emulated !== nonEmulated) { + window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!') + } +}()) diff --git a/assets/js/ie10-viewport-bug-workaround.js b/assets/js/ie10-viewport-bug-workaround.js new file mode 100755 index 00000000..b335ef94 --- /dev/null +++ b/assets/js/ie10-viewport-bug-workaround.js @@ -0,0 +1,24 @@ +/*! + * IE10 viewport hack for Surface/desktop Windows 8 bug + * Copyright 2014-2017 The Bootstrap Authors + * Copyright 2014-2017 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// See the Getting Started docs for more information: +// https://getbootstrap.com/getting-started/#support-ie10-width + +(function () { + 'use strict' + + if (navigator.userAgent.match(/IEMobile\/10\.0/)) { + var msViewportStyle = document.createElement('style') + msViewportStyle.appendChild( + document.createTextNode( + '@-ms-viewport{width:auto!important}' + ) + ) + document.head.appendChild(msViewportStyle) + } + +}()) diff --git a/assets/js/src/application.js b/assets/js/src/application.js new file mode 100755 index 00000000..9a328f08 --- /dev/null +++ b/assets/js/src/application.js @@ -0,0 +1,121 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S ALL JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ + +/*! + * JavaScript for Bootstrap's docs (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors + * Copyright 2011-2017 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */ + +/* global Clipboard, anchors */ + +(function($) { + 'use strict'; + + $(function() { + $('body').bootstrapMaterialDesign(); + + // Indeterminate checkbox example + $('.bd-example-indeterminate [type="checkbox"]').prop( + 'indeterminate', + true + ); + + // Tooltip and popover demos + $('.tooltip-demo').tooltip({ + selector: '[data-toggle="tooltip"]', + container: 'body', + }); + + $('[data-toggle="popover"]').popover(); + + // Demos within modals + $('.tooltip-test').tooltip(); + $('.popover-test').popover(); + + // Indeterminate checkbox example + $('.bd-example-indeterminate [type="checkbox"]').prop( + 'indeterminate', + true + ); + + // Disable empty links in docs examples + $('.bd-content [href="#"]').click(function(e) { + e.preventDefault(); + }); + + // Modal relatedTarget demo + $('#exampleModal').on('show.bs.modal', function(event) { + var $button = $(event.relatedTarget); // Button that triggered the modal + var recipient = $button.data('whatever'); // Extract info from data-* attributes + // If necessary, you could initiate an AJAX request here (and then do the updating in a callback). + // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead. + var $modal = $(this); + $modal.find('.modal-title').text('New message to ' + recipient); + $modal.find('.modal-body input').val(recipient); + }); + + // Activate animated progress bar + $('.bd-toggle-animated-progress').on('click', function() { + $(this) + .siblings('.progress') + .find('.progress-bar-striped') + .toggleClass('progress-bar-animated'); + }); + + // Insert copy to clipboard button before .highlight + $('.highlight').each(function() { + var btnHtml = + '
'; + $(this).before(btnHtml); + $('.btn-clipboard').tooltip().on('mouseleave', function() { + // explicitly hide tooltip, since after clicking it remains + // focused (as it's a button), so tooltip would otherwise + // remain visible until focus is moved away + $(this).tooltip('hide'); + }); + }); + + var clipboard = new Clipboard('.btn-clipboard', { + target: function(trigger) { + return trigger.parentNode.nextElementSibling; + }, + }); + + clipboard.on('success', function(e) { + $(e.trigger) + .attr('title', 'Copied!') + .tooltip('_fixTitle') + .tooltip('show') + .attr('title', 'Copy to clipboard') + .tooltip('_fixTitle'); + + e.clearSelection(); + }); + + clipboard.on('error', function(e) { + var modifierKey = /Mac/i.test(navigator.userAgent) ? '\u2318' : 'Ctrl-'; + var fallbackMsg = 'Press ' + modifierKey + 'C to copy'; + + $(e.trigger) + .attr('title', fallbackMsg) + .tooltip('_fixTitle') + .tooltip('show') + .attr('title', 'Copy to clipboard') + .tooltip('_fixTitle'); + }); + + anchors.options = { + icon: '#', + }; + anchors.add( + '.bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5' + ); + $( + '.bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5' + ).wrapInner('
'); + }); +})(jQuery); diff --git a/assets/js/vendor/anchor.min.js b/assets/js/vendor/anchor.min.js new file mode 100755 index 00000000..35575f1c --- /dev/null +++ b/assets/js/vendor/anchor.min.js @@ -0,0 +1,6 @@ +/** + * AnchorJS - v4.0.0 - 2017-06-02 + * https://github.com/bryanbraun/anchorjs + * Copyright (c) 2017 Bryan Braun; Licensed MIT + */ +!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";function A(A){function e(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.class=A.hasOwnProperty("class")?A.class:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64}function t(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}function n(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}this.options=A||{},this.elements=[],e(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var i,o,s,c,r,a,h,l,u,d,f,g,p=[];if(e(this.options),"touch"===(g=this.options.visible)&&(g=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(i=t(A)).length)return this;for(n(),o=document.querySelectorAll("[id]"),s=[].map.call(o,function(A){return A.id}),r=0;r\]\.\/\(\)\*\\]/g;return this.options.truncate||e(this.options),A.trim().replace(/\'/gi,"").replace(t,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&(" "+A.firstChild.className+" ").indexOf(" anchorjs-link ")>-1,t=A.lastChild&&(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ")>-1;return e||t||!1}}return A}); \ No newline at end of file diff --git a/assets/js/vendor/clipboard.min.js b/assets/js/vendor/clipboard.min.js new file mode 100755 index 00000000..90fd15b1 --- /dev/null +++ b/assets/js/vendor/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v1.7.1 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!c&&l)return l(a,!0);if(r)return r(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n||t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a0&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function t(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function t(){var e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px";var o=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=o+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function t(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function t(){this.selectedText=(0,i.default)(this.target),this.copyText()}},{key:"copyText",value:function t(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function t(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function t(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function t(){this.removeFake()}},{key:"action",set:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function t(){return this._action}},{key:"target",set:function t(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":r(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function t(){return this._target}}]),t}();t.exports=c})},{select:5}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if(void 0!==o)r(n,e("./clipboard-action"),e("tiny-emitter"),e("good-listener"));else{var a={exports:{}};r(a,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=a.exports}}(this,function(t,e,n,o){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function l(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var s=i(e),u=i(n),f=i(o),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===d(e.container)?e.container:document.body}},{key:"listenClick",value:function t(e){var n=this;this.listener=(0,f.default)(e,"click",function(t){return n.onClick(t)})}},{key:"onClick",value:function t(e){var n=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new s.default({action:this.action(n),target:this.target(n),text:this.text(n),container:this.container,trigger:n,emitter:this})}},{key:"defaultAction",value:function t(e){return l("action",e)}},{key:"defaultTarget",value:function t(e){var n=l("target",e);if(n)return document.querySelector(n)}},{key:"defaultText",value:function t(e){return l("text",e)}},{key:"destroy",value:function t(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],n="string"==typeof e?[e]:e,o=!!document.queryCommandSupported;return n.forEach(function(t){o=o&&!!document.queryCommandSupported(t)}),o}}]),e}(u.default);t.exports=p})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)}); \ No newline at end of file diff --git a/assets/js/vendor/holder.min.js b/assets/js/vendor/holder.min.js new file mode 100755 index 00000000..62255af4 --- /dev/null +++ b/assets/js/vendor/holder.min.js @@ -0,0 +1,13 @@ +/*! + +Holder - client side image placeholders +Version 2.9.4+cabil +© 2016 Ivan Malopinsky - http://imsky.co + +Site: http://holderjs.com +Issues: https://github.com/imsky/holder/issues +License: MIT + +*/ +!function(e){if(e.document){var t=e.document;t.querySelectorAll||(t.querySelectorAll=function(n){var r,i=t.createElement("style"),o=[];for(t.documentElement.firstChild.appendChild(i),t._qsa=[],i.styleSheet.cssText=n+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",e.scrollBy(0,0),i.parentNode.removeChild(i);t._qsa.length;)r=t._qsa.shift(),r.style.removeAttribute("x-qsa"),o.push(r);return t._qsa=null,o}),t.querySelector||(t.querySelector=function(e){var n=t.querySelectorAll(e);return n.length?n[0]:null}),t.getElementsByClassName||(t.getElementsByClassName=function(e){return e=String(e).replace(/^|\s+/g,"."),t.querySelectorAll(e)}),Object.keys||(Object.keys=function(e){if(e!==Object(e))throw TypeError("Object.keys called on non-object");var t,n=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&n.push(t);return n}),Array.prototype.forEach||(Array.prototype.forEach=function(e){if(void 0===this||null===this)throw TypeError();var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw TypeError();var r,i=arguments[1];for(r=0;r>16&255)),i.push(String.fromCharCode(o>>8&255)),i.push(String.fromCharCode(255&o)),a=0,o=0),r+=1;return 12===a?(o>>=4,i.push(String.fromCharCode(255&o))):18===a&&(o>>=2,i.push(String.fromCharCode(o>>8&255)),i.push(String.fromCharCode(255&o))),i.join("")},e.btoa=e.btoa||function(e){e=String(e);var n,r,i,o,a,s,l,h=0,u=[];if(/[^\x00-\xFF]/.test(e))throw Error("InvalidCharacterError");for(;h>2,a=(3&n)<<4|r>>4,s=(15&r)<<2|i>>6,l=63&i,h===e.length+2?(s=64,l=64):h===e.length+1&&(l=64),u.push(t.charAt(o),t.charAt(a),t.charAt(s),t.charAt(l));return u.join("")}}(e),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(e){var t=this.__proto__||this.constructor.prototype;return e in this&&(!(e in t)||t[e]!==this[e])}),function(){if("performance"in e==!1&&(e.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in e.performance==!1){var t=Date.now();performance.timing&&performance.timing.navigationStart&&(t=performance.timing.navigationStart),e.performance.now=function(){return Date.now()-t}}}(),e.requestAnimationFrame||(e.webkitRequestAnimationFrame&&e.webkitCancelAnimationFrame?!function(e){e.requestAnimationFrame=function(t){return webkitRequestAnimationFrame(function(){t(e.performance.now())})},e.cancelAnimationFrame=e.webkitCancelAnimationFrame}(e):e.mozRequestAnimationFrame&&e.mozCancelAnimationFrame?!function(e){e.requestAnimationFrame=function(t){return mozRequestAnimationFrame(function(){t(e.performance.now())})},e.cancelAnimationFrame=e.mozCancelAnimationFrame}(e):!function(e){e.requestAnimationFrame=function(t){return e.setTimeout(t,1e3/60)},e.cancelAnimationFrame=e.clearTimeout}(e))}}(this),function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Holder=t():e.Holder=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){(function(t){function r(e,t,n,r){var a=i(n.substr(n.lastIndexOf(e.domain)),e);a&&o({mode:null,el:r,flags:a,engineSettings:t})}function i(e,t){var n={theme:k(O.settings.themes.gray,null),stylesheets:t.stylesheets,instanceOptions:t},r=e.indexOf("?"),i=[e];r!==-1&&(i=[e.slice(0,r),e.slice(r+1)]);var o=i[0].split("/");n.holderURL=e;var a=o[1],s=a.match(/([\d]+p?)x([\d]+p?)/);if(!s)return!1;if(n.fluid=a.indexOf("p")!==-1,n.dimensions={width:s[1].replace("p","%"),height:s[2].replace("p","%")},2===i.length){var l=v.parse(i[1]);if(w.truthy(l.ratio)){n.fluid=!0;var h=parseFloat(n.dimensions.width.replace("%","")),u=parseFloat(n.dimensions.height.replace("%",""));u=Math.floor(100*(u/h)),h=100,n.dimensions.width=h+"%",n.dimensions.height=u+"%"}if(n.auto=w.truthy(l.auto),l.bg&&(n.theme.bg=w.parseColor(l.bg)),l.fg&&(n.theme.fg=w.parseColor(l.fg)),l.bg&&!l.fg&&(n.autoFg=!0),l.theme&&n.instanceOptions.themes.hasOwnProperty(l.theme)&&(n.theme=k(n.instanceOptions.themes[l.theme],null)),l.text&&(n.text=l.text),l.textmode&&(n.textmode=l.textmode),l.size&&(n.size=l.size),l.font&&(n.font=l.font),l.align&&(n.align=l.align),l.lineWrap&&(n.lineWrap=l.lineWrap),n.nowrap=w.truthy(l.nowrap),n.outline=w.truthy(l.outline),w.truthy(l.random)){O.vars.cache.themeKeys=O.vars.cache.themeKeys||Object.keys(n.instanceOptions.themes);var c=O.vars.cache.themeKeys[0|Math.random()*O.vars.cache.themeKeys.length];n.theme=k(n.instanceOptions.themes[c],null)}}return n}function o(e){var t=e.mode,n=e.el,r=e.flags,i=e.engineSettings,o=r.dimensions,s=r.theme,l=o.width+"x"+o.height;t=null==t?r.fluid?"fluid":"image":t;var c=/holder_([a-z]+)/g,d=!1;if(null!=r.text&&(s.text=r.text,"object"===n.nodeName.toLowerCase())){for(var f=s.text.split("\\n"),p=0;p1){var b,x=0,A=0,C=0;w=new s.Group("line"+C),"left"!==e.align&&"right"!==e.align||(o=e.width*(1-2*(1-r)));for(var E=0;E=o||T===!0)&&(t(g,w,x,g.properties.leading),g.add(w),x=0,A+=g.properties.leading,C+=1,w=new s.Group("line"+C),w.y=A),T!==!0&&(v.moveTo(x,0),x+=m.spaceWidth+k.width,w.add(v))}if(t(g,w,x,g.properties.leading),g.add(w),"left"===e.align)g.moveTo(e.width-i,null,null);else if("right"===e.align){for(b in g.children)w=g.children[b],w.moveTo(e.width-w.width,null,null);g.moveTo(0-(e.width-i),null,null)}else{for(b in g.children)w=g.children[b],w.moveTo((g.width-w.width)/2,null,null);g.moveTo((e.width-g.width)/2,null,null)}g.moveTo(null,(e.height-g.height)/2,null),(e.height-g.height)/2<0&&g.moveTo(null,0,null)}else v=new s.Text(e.text),w=new s.Group("line0"),w.add(v),g.add(w),"left"===e.align?g.moveTo(e.width-i,null,null):"right"===e.align?g.moveTo(0-(e.width-i),null,null):g.moveTo((e.width-m.boundingBox.width)/2,null,null),g.moveTo(null,(e.height-m.boundingBox.height)/2,null);return a}function l(e,t,n,r){var i=parseInt(e,10),o=parseInt(t,10),a=Math.max(i,o),s=Math.min(i,o),l=.8*Math.min(s,a*r);return Math.round(Math.max(n,l))}function h(e){var t;t=null==e||null==e.nodeType?O.vars.resizableImages:[e];for(var n=0,r=t.length;n1){n.nodeValue="";for(var v=0;v=0?t:1)}function o(e){x?i(e):S.push(e)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function C(){document.removeEventListener("DOMContentLoaded",C,!1),document.readyState="complete"},!1),document.readyState="loading");var a=e.document,s=a.documentElement,l="load",h=!1,u="on"+l,c="complete",d="readyState",f="attachEvent",p="detachEvent",g="addEventListener",m="DOMContentLoaded",v="onreadystatechange",y="removeEventListener",w=g in a,b=h,x=h,S=[];if(a[d]===c)i(t);else if(w)a[g](m,n,h),e[g](l,n,h);else{a[f](v,n),e[f](u,n);try{b=null==e.frameElement&&s}catch(A){}b&&b.doScroll&&!function E(){if(!x){try{b.doScroll("left")}catch(e){return i(E,50)}r(),t()}}()}return o.version="1.4.0",o.isReady=function(){return x},o}e.exports="undefined"!=typeof window&&n(window)},function(e,t,n){var r=encodeURIComponent,i=decodeURIComponent,o=n(4),a=n(5),s=/(\w+)\[(\d+)\]/,l=/\w+\.\w+/;t.parse=function(e){if("string"!=typeof e)return{};if(e=o(e),""===e)return{};"?"===e.charAt(0)&&(e=e.slice(1));for(var t={},n=e.split("&"),r=0;r=0;r--)n=e.charCodeAt(r),n>128?t.unshift(["&#",n,";"].join("")):t.unshift(e[r]);return t.join("")},t.imageExists=function(e,t){var n=new Image;n.onerror=function(){t.call(this,!1)},n.onload=function(){t.call(this,!0)},n.src=e},t.decodeHtmlEntity=function(e){return e.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(t)})},t.dimensionCheck=function(e){var t={height:e.clientHeight,width:e.clientWidth};return!(!t.height||!t.width)&&t},t.truthy=function(e){return"string"==typeof e?"true"===e||"yes"===e||"1"===e||"on"===e||"✓"===e:!!e},t.parseColor=function(e){var t,n=/(^(?:#?)[0-9a-f]{6}$)|(^(?:#?)[0-9a-f]{3}$)/i,r=/^rgb\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/,i=/^rgba\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0\.\d{1,}|1)\)$/,o=e.match(n);return null!==o?(t=o[1]||o[2],"#"!==t[0]?"#"+t:t):(o=e.match(r),null!==o?t="rgb("+o.slice(1).join(",")+")":(o=e.match(i),null!==o?t="rgba("+o.slice(1).join(",")+")":null))},t.canvasRatio=function(){var t=1,n=1;if(e.document){var r=e.document.createElement("canvas");if(r.getContext){var i=r.getContext("2d");t=e.devicePixelRatio||1,n=i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1}}return t/n}}).call(t,function(){return this}())},function(e,t,n){(function(e){var r=n(9),i="http://www.w3.org/2000/svg",o=8;t.initSVG=function(e,t,n){var a,s,l=!1;e&&e.querySelector?(s=e.querySelector("style"),null===s&&(l=!0)):(e=r.newEl("svg",i),l=!0),l&&(a=r.newEl("defs",i),s=r.newEl("style",i),r.setAttr(s,{type:"text/css"}),a.appendChild(s),e.appendChild(a)),e.webkitMatchesSelector&&e.setAttribute("xmlns",i);for(var h=0;h=0;l--){var h=s.createProcessingInstruction("xml-stylesheet",'href="'+a[l]+'" rel="stylesheet"');s.insertBefore(h,s.firstChild)}s.removeChild(s.documentElement),o=i.serializeToString(s)}var u=i.serializeToString(t);return u=u.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),o+u}}}).call(t,function(){return this}())},function(e,t){(function(e){t.newEl=function(t,n){if(e.document)return null==n?e.document.createElement(t):e.document.createElementNS(n,t)},t.setAttr=function(e,t){for(var n in t)e.setAttribute(n,t[n])},t.createXML=function(){if(e.DOMParser)return(new DOMParser).parseFromString("","application/xml")},t.getNodeArray=function(t){var n=null;return"string"==typeof t?n=document.querySelectorAll(t):e.NodeList&&t instanceof e.NodeList?n=t:e.Node&&t instanceof e.Node?n=[t]:e.HTMLCollection&&t instanceof e.HTMLCollection?n=t:t instanceof Array?n=t:null===t&&(n=[]),n=Array.prototype.slice.call(n)}}).call(t,function(){return this}())},function(e,t){var n=function(e,t){"string"==typeof e&&(this.original=e,"#"===e.charAt(0)&&(e=e.slice(1)),/[^a-f0-9]+/i.test(e)||(3===e.length&&(e=e.replace(/./g,"$&$&")),6===e.length&&(this.alpha=1,t&&t.alpha&&(this.alpha=t.alpha),this.set(parseInt(e,16)))))};n.rgb2hex=function(e,t,n){function r(e){var t=(0|e).toString(16);return e<16&&(t="0"+t),t}return[e,t,n].map(r).join("")},n.hsl2rgb=function(e,t,n){var r=e/60,i=(1-Math.abs(2*n-1))*t,o=i*(1-Math.abs(parseInt(r)%2-1)),a=n-i/2,s=0,l=0,h=0;return r>=0&&r<1?(s=i,l=o):r>=1&&r<2?(s=o,l=i):r>=2&&r<3?(l=i,h=o):r>=3&&r<4?(l=o,h=i):r>=4&&r<5?(s=o,h=i):r>=5&&r<6&&(s=i,h=o),s+=a,l+=a,h+=a,s=parseInt(255*s),l=parseInt(255*l),h=parseInt(255*h),[s,l,h]},n.prototype.set=function(e){this.raw=e;var t=(16711680&this.raw)>>16,n=(65280&this.raw)>>8,r=255&this.raw,i=.2126*t+.7152*n+.0722*r,o=-.09991*t-.33609*n+.436*r,a=.615*t-.55861*n-.05639*r;return this.rgb={r:t,g:n,b:r},this.yuv={y:i,u:o,v:a},this},n.prototype.lighten=function(e){var t=Math.min(1,Math.max(0,Math.abs(e)))*(e<0?-1:1),r=255*t|0,i=Math.min(255,Math.max(0,this.rgb.r+r)),o=Math.min(255,Math.max(0,this.rgb.g+r)),a=Math.min(255,Math.max(0,this.rgb.b+r)),s=n.rgb2hex(i,o,a);return new n(s)},n.prototype.toHex=function(e){return(e?"#":"")+this.raw.toString(16)},n.prototype.lighterThan=function(e){return e instanceof n||(e=new n(e)),this.yuv.y>e.yuv.y},n.prototype.blendAlpha=function(e){e instanceof n||(e=new n(e));var t=e,r=this,i=t.alpha*t.rgb.r+(1-t.alpha)*r.rgb.r,o=t.alpha*t.rgb.g+(1-t.alpha)*r.rgb.g,a=t.alpha*t.rgb.b+(1-t.alpha)*r.rgb.b;return new n(n.rgb2hex(i,o,a))},e.exports=n},function(e,t){e.exports={version:"2.9.4",svg_ns:"http://www.w3.org/2000/svg"}},function(e,t,n){function r(e,t){return c.element({tag:t,width:e.width,height:e.height,fill:e.properties.fill})}function i(e){return h.cssProps({fill:e.fill,"font-weight":e.font.weight,"font-family":e.font.family+", monospace","font-size":e.font.size+e.font.units})}function o(e,t,n){var r=n/2;return["M",r,r,"H",e-r,"V",t-r,"H",r,"V",0,"M",0,r,"L",e,t-r,"M",0,t-r,"L",e,r].join(" ")}var a=n(13),s=n(8),l=n(11),h=n(7),u=l.svg_ns,c={element:function(e){var t=e.tag,n=e.content||"";return delete e.tag,delete e.content,[t,n,e]}};e.exports=function(e,t){var n=t.engineSettings,l=n.stylesheets,h=l.map(function(e){return''}).join("\n"),d="holder_"+Number(new Date).toString(16),f=e.root,p=f.children.holderTextGroup,g="#"+d+" text { "+i(p.properties)+" } ";p.y+=.8*p.textPositionData.boundingBox.height;var m=[];Object.keys(p.children).forEach(function(e){var t=p.children[e];Object.keys(t.children).forEach(function(e){var n=t.children[e],r=p.x+t.x+n.x,i=p.y+t.y+n.y,o=c.element({tag:"text",content:n.properties.text,x:r,y:i});m.push(o)})});var v=c.element({tag:"g",content:m}),y=null;if(f.children.holderBg.properties.outline){var w=f.children.holderBg.properties.outline;y=c.element({tag:"path",d:o(f.children.holderBg.width,f.children.holderBg.height,w.width),"stroke-width":w.width,stroke:w.fill,fill:"none"})}var b=r(f.children.holderBg,"rect"),x=[];x.push(b),w&&x.push(y),x.push(v);var S=c.element({tag:"g",id:d,content:x}),A=c.element({tag:"style",content:g,type:"text/css"}),C=c.element({tag:"defs",content:A}),E=c.element({tag:"svg",content:[C,S],width:f.properties.width,height:f.properties.height,xmlns:u,viewBox:[0,0,f.properties.width,f.properties.height].join(" "),preserveAspectRatio:"none"}),k=a(E);k=h+k[0];var T=s.svgStringToDataURI(k,"background"===t.mode);return T}},function(e,t,n){n(14);e.exports=function r(e,t,n){"use strict";function i(e){var t=e.match(/^[\w-]+/),r={tag:t?t[0]:"div",attr:{},children:[]},i=e.match(/#([\w-]+)/),o=e.match(/\$([\w-]+)/),a=e.match(/\.[\w-]+/g);return i&&(r.attr.id=i[1],n[i[1]]=r),o&&(n[o[1]]=r),a&&(r.attr["class"]=a.join(" ").replace(/\./g,"")),e.match(/&$/g)&&(f=!1),r}function o(e,t){if(null!==t&&t!==!1&&void 0!==t)return"string"!=typeof t&&"object"!=typeof t?String(t):t}function a(e){return e||0===e?String(e).replace(/&/g,"&").replace(/"/g,"""):""}function s(e){return String(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}var l,h,u,c,d=1,f=!0;if(n=n||{},"string"==typeof e[0])e[0]=i(e[0]);else{if(!Array.isArray(e[0]))throw new Error("First element of array must be a string, or an array and not "+JSON.stringify(e[0]));d=0}for(;d",e[0]=l}return n[0]=e[0],u&&u(e[0]),n}},function(e,t){"use strict";function n(e){var t=""+e,n=r.exec(t);if(!n)return t;var i,o="",a=0,s=0;for(a=n.index;a]/;e.exports=n},function(e,t,n){var r=n(9),i=n(7);e.exports=function(){var e=r.newEl("canvas"),t=null;return function(n){null==t&&(t=e.getContext("2d"));var r=i.canvasRatio(),o=n.root;e.width=r*o.properties.width,e.height=r*o.properties.height,t.textBaseline="middle";var a=o.children.holderBg,s=r*a.width,l=r*a.height,h=2,u=h/2;t.fillStyle=a.properties.fill,t.fillRect(0,0,s,l),a.properties.outline&&(t.strokeStyle=a.properties.outline.fill,t.lineWidth=a.properties.outline.width,t.moveTo(u,u),t.lineTo(s-u,u),t.lineTo(s-u,l-u),t.lineTo(u,l-u),t.lineTo(u,u),t.moveTo(0,u),t.lineTo(s,l-u),t.moveTo(0,l-u),t.lineTo(s,u),t.stroke());var c=o.children.holderTextGroup;t.font=c.properties.font.weight+" "+r*c.properties.font.size+c.properties.font.units+" "+c.properties.font.family+", monospace",t.fillStyle=c.properties.fill;for(var d in c.children){var f=c.children[d];for(var p in f.children){var g=f.children[p],m=r*(c.x+f.x+g.x),v=r*(c.y+f.y+g.y+c.properties.leading/2);t.fillText(g.properties.text,m,v)}}return e.toDataURL("image/png")}}()}])}),function(e,t){t&&(Holder=e.Holder); +}(this,"undefined"!=typeof Meteor&&"undefined"!=typeof Package); \ No newline at end of file diff --git a/assets/js/vendor/jquery-slim.min.js b/assets/js/vendor/jquery-slim.min.js new file mode 100755 index 00000000..105d00e6 --- /dev/null +++ b/assets/js/vendor/jquery-slim.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a); +}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}}),r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var _a,ab=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?_a:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),_a={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ab[b]||r.find.attr;ab[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ab[g],ab[g]=e,e=null!=c(a,b,d)?g:null,ab[g]=f),e}});var bb=/^(?:input|select|textarea|button)$/i,cb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function db(a){var b=a.match(L)||[];return b.join(" ")}function eb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,eb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,eb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,eb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=eb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+db(eb(c))+" ").indexOf(b)>-1)return!0;return!1}});var fb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(fb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:db(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var gb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!gb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,gb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var hb=/\[\]$/,ib=/\r?\n/g,jb=/^(?:submit|button|image|reset|file)$/i,kb=/^(?:input|select|textarea|keygen)/i;function lb(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||hb.test(a)?d(a,e):lb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d); +});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)lb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)lb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&kb.test(this.nodeName)&&!jb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ib,"\r\n")}}):{name:b.name,value:c.replace(ib,"\r\n")}}).get()}}),r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="
",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var mb=a.jQuery,nb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=nb),b&&a.jQuery===r&&(a.jQuery=mb),r},b||(a.jQuery=a.$=r),r}); diff --git a/assets/js/vendor/popper.min.js b/assets/js/vendor/popper.min.js new file mode 100755 index 00000000..ce33a863 --- /dev/null +++ b/assets/js/vendor/popper.min.js @@ -0,0 +1,4 @@ +/* + Copyright (C) Federico Zivolo 2017 + Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). + */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=window.getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e||-1!==['HTML','BODY','#document'].indexOf(e.nodeName))return window.document.body;var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll)/.test(r+s+p)?e:n(o(e))}function r(e){var o=e&&e.offsetParent,i=o&&o.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(o.nodeName)&&'static'===t(o,'position')?r(o):o:window.document.documentElement}function p(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||r(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function d(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return window.document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,a=document.createRange();a.setStart(i,0),a.setEnd(n,0);var f=a.commonAncestorContainer;if(e!==f&&t!==f||i.contains(n))return p(f)?f:r(f);var l=s(e);return l.host?d(l.host,t):d(e,s(t).host)}function a(e){var t=1=o.clientWidth&&i>=o.clientHeight}),f=0i[e]&&!t.escapeWithReference&&(n=z(p[o],i[e]-('right'===e?p.width:p.height))),pe({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=se({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=V,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var o=t.element;if('string'==typeof o){if(o=e.instance.popper.querySelector(o),!o)return e;}else if(!e.instance.popper.contains(o))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var i=e.placement.split('-')[0],n=e.offsets,r=n.popper,p=n.reference,s=-1!==['left','right'].indexOf(i),d=s?'height':'width',a=s?'top':'left',f=s?'left':'top',l=s?'bottom':'right',m=O(o)[d];p[l]-mr[l]&&(e.offsets.popper[a]+=p[a]+m-r[l]);var h=p[a]+p[d]/2-m/2,g=h-c(e.offsets.popper)[a];return g=_(z(r[d]-m,g),0),e.arrowElement=o,e.offsets.arrow={},e.offsets.arrow[a]=Math.round(g),e.offsets.arrow[f]='',e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=w(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=L(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case fe.FLIP:p=[i,n];break;case fe.CLOCKWISE:p=K(i);break;case fe.COUNTERCLOCKWISE:p=K(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=L(i);var a=e.offsets.popper,f=e.offsets.reference,l=V,m='left'===i&&l(a.right)>l(f.left)||'right'===i&&l(a.left)l(f.top)||'bottom'===i&&l(a.top)l(o.right),g=l(a.top)l(o.bottom),b='left'===i&&h||'right'===i&&c||'top'===i&&g||'bottom'===i&&u,y=-1!==['top','bottom'].indexOf(i),w=!!t.flipVariations&&(y&&'start'===r&&h||y&&'end'===r&&c||!y&&'start'===r&&g||!y&&'end'===r&&u);(m||b||w)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),w&&(r=j(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=se({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=N(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[t]-(s?n[p?'width':'height']:0),e.placement=L(t),e.offsets.popper=c(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right - - - - - - - - - Bootstrap Material - - - - - - - - - - - - - - - - - - - -Fork me on GitHub - -
- - - - -
-
-
- - -
- -
- -
- -
- -
- -
- -
-
-
- - - -
- - -
-
- -

Flat buttons default - no class needed

-

- btn only - .active - Default - Primary - Success - Info - Warning - Danger - Link -

- - -

Raised buttons .btn-raised

-

- .active - Default - Primary - Success - Info - Warning - Danger - Link -

- - -

Disabled buttons

- -
- -

flat - default - no class needed

-

- btn only - Default - Primary - Success - Info - Warning - Danger - Link -

- - -

.btn-raised

-

- Default - Primary - Success - Info - Warning - Danger - Link -

-
- -

Button sizes

- -

- Large button - Default button - Small button - xs button -

- -

Floating action buttons a.k.a fab

-

- grade - grade - grade - grade - grade - grade -

-

.btn-group-sm .btn-fab or .btn-fab-mini

-

- grade - grade - grade - grade - grade - grade -

- -
-
-

Group variations with .btn-raised

- -

Button groups

- - - - -

btn-lg.btn-block.btn-raised

- - - -
-

btn-group.btn-group-justified.btn-group-raised

-
- Left - Middle - Right -
- -

disabled btn-group.btn-group-justified.btn-group-raised

-
-
- Left - Middle - Right -
-
-
- -
-

btn-toolbar

-
-
- 1 - 2 - 3 - 4 -
- -
- 5 - 6 - 7 -
- - -
-
- -
-

.btn-group-vertical

- -
- - -
-
-
- - -
-
-
- -
-
- - - -
-
-
-

Heading 1

- -

Heading 2

- -

Heading 3

-

Heading 4

-
Heading 5
-
Heading 6
- -

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

-
-
-
-
-

Example body text

- -

Nullam quis risus eget - urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula. -

- -

- This line of text is meant to be treated as fine print. -

-

The following snippet of text is rendered as bold text.

- -

The following snippet of text is rendered as italicized text.

- -

An abbreviation of the word attribute is attr.

-
- -
-
-
-

Emphasis classes

- -

Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.

- -

Nullam id dolor id nibh ultricies vehicula ut id elit.

- -

Etiam porta sem malesuada magna mollis euismod.

- -

Donec ullamcorper nulla non metus auctor fringilla.

- -

Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

- -

Maecenas sed diam eget risus varius blandit sit amet non magna.

-
- -
-
- - - -
-
-

Blockquotes

-
-
-
-
-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

- Someone famous in Source Title -
-
-
-
-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

- Someone famous in Source Title -
-
-
-
-
- - -
- -
-
- -
-
-
- - - -
- -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Column headingColumn headingColumn heading
1Column contentColumn contentColumn content
2Column contentColumn contentColumn content
3Column contentColumn contentColumn content
4Column contentColumn contentColumn content
5Column contentColumn contentColumn content
6Column contentColumn contentColumn content
7Column contentColumn contentColumn content
-
-
-
-
- - -
-
-
- -
-
- -
-
-
-
-
- Legend -
- - -
- -
-
-
- - -
- - - -
-
-
-
-
- - -
-
-
-
-
-
- -
-
-
-
- - -
- - -
-
-
- - -
- - A longer block of help text that breaks onto a new line and may extend beyond one line. -
-
-
- - -
-
- -
-
- -
-
-
-
- - -
- -
-
-
- - -
- -
-
-
-
- - -
-
-
-
-
-
-
- -
-
- - -
- -
- - -

You should really write something here

-
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- -
- $ - - - - -
-
- -
-
- $ - - -

The label is inside the input-group so that it is positioned properly as a placeholder.

- - - -
-
- -
- - -
- - - - -
-
- -
- -
- - - - -
-
- - -
- -
-
-
- - -
- -
-
- -
-
- -
-
- - -
- -
-
-

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

-
-
-

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit.

-
- - -
-
-
- -
- - -
- - - - - -
- -
-
- - -
-
-

Pagination

- -
- - - - - -
-
-
-

Pager

- -
- - - -
-
-
- -
-
-
- - -
- -
-
- -
-
- -
-
-

Alerts

- -
-
- -

Warning!

- -

Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, - vel scelerisque nisl consectetur et.

-
-
-
-
-
-
-
-
- - Oh snap! - Change a few things up and try submitting again. -
-
-
-
-
-
- - Well done! You successfully read - this important alert message. -
-
-
-
-
-
- - Heads up! This - alert needs your attention, but it's not super important. -
-
-
-
-
-
-

Labels

- -
- Default - Primary - Success - Warning - Danger - Info -
-
-
-

Badges

- - -
-
-
- - -
- -
-
- - -

Basic

- -
-
-
-
-
- -

Contextual alternatives

- -
-
-
-
- -
-
-
- -
-
-
- -
-
-
-
- -

Striped

- -
-
-
-
- -
-
-
- -
-
-
- -
-
-
-
- -

Animated

- -
-
-
-
-
- -

Stacked

- -
-
-
-
-
-
-
-
-
-
- - - -
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Read more about noUiSlider here.

-
-
-
- - -
- -
-
- -
-
-

Jumbotron

- -

This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.

- -

Learn more

-
-
-
-
- - -
-
-

List groups

-
-
-
-
-
-
-
-
- folder -
-
-
15m
-

Tile with a label

- -

Donec id elit non mi porta gravida at eget metus.

-
-
-
-
-
- folder -
-
-
10m
-

Tile with a label

- -

Maecenas sed diam eget risus varius blandit.

-
-
-
-
-
- folder -
-
-
8m
-

Tile with a label

- -

Maecenas sed diam eget risus varius blandit.

-
-
-
-
-
-
-
-
-
-
-
- folder -
-
-
info
-

Tile with an icon

- -

Donec id elit non mi porta gravida at eget metus.

-
-
-
-
-
- folder -
-
-
info
-

Tile with an icon

- -

Maecenas sed diam eget risus varius blandit.

-
-
-
-
-
- folder -
-
-
info
-

Tile with an icon

- -

Maecenas sed diam eget risus varius blandit.

-
-
-
-
-
-
-
-
-
-
-
- icon -
-
-

Tile with avatar

- -

Donec id elit non mi porta gravida at eget metus

-
-
-
-
-
- icon -
-
-

Tile with another avatar

- -

Maecenas sed diam eget risus varius blandit.

-
-
-
-
-
- -
-
-

Tile with a checkbox in it

- -

Donec id elit non mi risus varius blandit.

-
-
-
-
-
-
-
- - -
-
-

Panels

-
-
-
-
-
-
-
- Basic panel -
-
- -
-
Panel heading
-
- Panel content -
-
- -
-
- Panel content -
- -
-
-
-
-
-
-
-

Panel primary

-
-
- Panel content -
-
- -
-
-

Panel success

-
-
- Panel content -
-
- -
-
-

Panel warning

-
-
- Panel content -
-
-
-
-
-
-
-
-

Panel danger

-
-
- Panel content -
-
- -
-
-

Panel info

-
-
- Panel content -
-
-
-
-
- -
-
-

Wells

-
-
-
-
-
-
- Look, I'm in a well! -
-
-
-
-
-
- Look, I'm in a small well! -
-
-
-
-
-
- Look, I'm in a large well! -
-
-
-
-
- - -
- -
-
- -
-
-
-
-

Modals

- -
- -
-
-
-

Popovers

- -
- - - - - - - -
-

Tooltips

- -
- - - - - - - -
-
-
-
-
-

Snackbars and toasts (with SnackbarJS)

- -

SnackbarJS is the ad-hoc developed plugin to create snackbars and toasts, read more about it on the - official page of the project.

- -
- - - -
-
-
-
- - -
-
- - - - - - - - - - - - - diff --git a/demo/imgs/banner.jpg b/demo/imgs/banner.jpg deleted file mode 100644 index 80b6092c..00000000 Binary files a/demo/imgs/banner.jpg and /dev/null differ diff --git a/demo/imgs/gittip-button.jpg b/demo/imgs/gittip-button.jpg deleted file mode 100644 index aa8baef1..00000000 Binary files a/demo/imgs/gittip-button.jpg and /dev/null differ diff --git a/demo/imgs/issues-button.jpg b/demo/imgs/issues-button.jpg deleted file mode 100644 index e6207e6e..00000000 Binary files a/demo/imgs/issues-button.jpg and /dev/null differ diff --git a/demo/imgs/mdp_banner.jpg b/demo/imgs/mdp_banner.jpg deleted file mode 100644 index b16874f1..00000000 Binary files a/demo/imgs/mdp_banner.jpg and /dev/null differ diff --git a/demo/imgs/mkp_banner.jpg b/demo/imgs/mkp_banner.jpg deleted file mode 100644 index dfecb4b7..00000000 Binary files a/demo/imgs/mkp_banner.jpg and /dev/null differ diff --git a/dist/css/bootstrap-material-design.css b/dist/css/bootstrap-material-design.css deleted file mode 100644 index 2fb4dd54..00000000 --- a/dist/css/bootstrap-material-design.css +++ /dev/null @@ -1,3426 +0,0 @@ -/* - -To get this list of colors inject jQuery at http://www.google.com/design/spec/style/color.html#color-color-palette - -Then, run this script to get the list. - - -(function() { - var colors = {}, main = {}; - $(".color-group").each(function() { - var color = $(this).find(".name").text().trim().toLowerCase().replace(" ", "-"); - colors[color] = {}; - - $(this).find(".color").not(".main-color").each(function() { - var shade = $(this).find(".shade").text().trim(), - hex = $(this).find(".hex").text().trim(); - - colors[color][shade] = hex; - }); - main[color] = color + "-" + $(this).find(".main-color .shade").text().trim(); - - }); - var LESS = ""; - $.each(colors, function(name, shades) { - LESS += "\n\n"; - $.each(shades, function(shade, hex) { - LESS += "@" + name + "-" + shade + ": " + hex + ";\n"; - }); - if (main[name]) { - LESS += "@" + name + ": " + main[name] + ";\n"; - } - }); - console.log(LESS); -})(); - - -*/ -/* ANIMATION */ -/* SHADOWS */ -/* Shadows (from mdl http://www.getmdl.io/) */ -body { - background-color: #EEEEEE; -} -body.inverse { - background: #333333; -} -body.inverse, -body.inverse .form-control { - color: rgba(255,255,255, 0.84); -} -body.inverse .modal, -body.inverse .panel-default, -body.inverse .card, -body.inverse .modal .form-control, -body.inverse .panel-default .form-control, -body.inverse .card .form-control { - background-color: initial; - color: initial; -} -body, -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4 { - font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif; - font-weight: 300; -} -h5, -h6 { - font-weight: 400; -} -a, -a:hover, -a:focus { - color: #009688; -} -a .material-icons, -a:hover .material-icons, -a:focus .material-icons { - vertical-align: middle; -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 0; -} -.form-horizontal .radio { - margin-bottom: 10px; -} -.form-horizontal label { - text-align: right; -} -.form-horizontal label.control-label { - margin: 0; -} -body .container .well.well-sm, -body .container-fluid .well.well-sm { - padding: 10px; -} -body .container .well.well-lg, -body .container-fluid .well.well-lg { - padding: 26px; -} -body .container .well, -body .container-fluid .well, -body .container .jumbotron, -body .container-fluid .jumbotron { - background-color: #fff; - padding: 19px; - margin-bottom: 20px; - -webkit-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); - box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); - border-radius: 2px; - border: 0; -} -body .container .well p, -body .container-fluid .well p, -body .container .jumbotron p, -body .container-fluid .jumbotron p { - font-weight: 300; -} -body .container .well, -body .container-fluid .well, -body .container .jumbotron, -body .container-fluid .jumbotron, -body .container .well-default, -body .container-fluid .well-default, -body .container .jumbotron-default, -body .container-fluid .jumbotron-default { - background-color: #ffffff; -} -body .container .well-inverse, -body .container-fluid .well-inverse, -body .container .jumbotron-inverse, -body .container-fluid .jumbotron-inverse { - background-color: #3f51b5; -} -body .container .well-primary, -body .container-fluid .well-primary, -body .container .jumbotron-primary, -body .container-fluid .jumbotron-primary { - background-color: #009688; -} -body .container .well-success, -body .container-fluid .well-success, -body .container .jumbotron-success, -body .container-fluid .jumbotron-success { - background-color: #4caf50; -} -body .container .well-info, -body .container-fluid .well-info, -body .container .jumbotron-info, -body .container-fluid .jumbotron-info { - background-color: #03a9f4; -} -body .container .well-warning, -body .container-fluid .well-warning, -body .container .jumbotron-warning, -body .container-fluid .jumbotron-warning { - background-color: #ff5722; -} -body .container .well-danger, -body .container-fluid .well-danger, -body .container .jumbotron-danger, -body .container-fluid .jumbotron-danger { - background-color: #f44336; -} -.btn, -.input-group-btn .btn { - border: none; - border-radius: 2px; - position: relative; - padding: 8px 30px; - margin: 10px 1px; - font-size: 14px; - font-weight: 500; - text-transform: uppercase; - letter-spacing: 0; - will-change: box-shadow, transform; - -webkit-transition: -webkit-box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); - -o-transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); - transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); - outline: 0; - cursor: pointer; - text-decoration: none; - background: transparent; -} -.btn::-moz-focus-inner, -.input-group-btn .btn::-moz-focus-inner { - border: 0; -} -.btn:not(.btn-raised), -.input-group-btn .btn:not(.btn-raised) { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn:not(.btn-raised), -.input-group-btn .btn:not(.btn-raised), -.btn:not(.btn-raised).btn-default, -.input-group-btn .btn:not(.btn-raised).btn-default { - color: rgba(0,0,0, 0.87); -} -.btn:not(.btn-raised).btn-inverse, -.input-group-btn .btn:not(.btn-raised).btn-inverse { - color: #3f51b5; -} -.btn:not(.btn-raised).btn-primary, -.input-group-btn .btn:not(.btn-raised).btn-primary { - color: #009688; -} -.btn:not(.btn-raised).btn-success, -.input-group-btn .btn:not(.btn-raised).btn-success { - color: #4caf50; -} -.btn:not(.btn-raised).btn-info, -.input-group-btn .btn:not(.btn-raised).btn-info { - color: #03a9f4; -} -.btn:not(.btn-raised).btn-warning, -.input-group-btn .btn:not(.btn-raised).btn-warning { - color: #ff5722; -} -.btn:not(.btn-raised).btn-danger, -.input-group-btn .btn:not(.btn-raised).btn-danger { - color: #f44336; -} -.btn:not(.btn-raised):not(.btn-link):hover, -.input-group-btn .btn:not(.btn-raised):not(.btn-link):hover, -.btn:not(.btn-raised):not(.btn-link):focus, -.input-group-btn .btn:not(.btn-raised):not(.btn-link):focus { - background-color: rgba(153, 153, 153, 0.2); -} -.theme-dark .btn:not(.btn-raised):not(.btn-link):hover, -.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):hover, -.theme-dark .btn:not(.btn-raised):not(.btn-link):focus, -.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):focus { - background-color: rgba(204, 204, 204, 0.15); -} -.btn.btn-raised, -.input-group-btn .btn.btn-raised, -.btn.btn-fab, -.input-group-btn .btn.btn-fab, -.btn-group-raised .btn, -.btn-group-raised .input-group-btn .btn, -.btn.btn-raised.btn-default, -.input-group-btn .btn.btn-raised.btn-default, -.btn.btn-fab.btn-default, -.input-group-btn .btn.btn-fab.btn-default, -.btn-group-raised .btn.btn-default, -.btn-group-raised .input-group-btn .btn.btn-default { - background-color: #EEEEEE; - color: rgba(0,0,0, 0.87); -} -.btn.btn-raised.btn-inverse, -.input-group-btn .btn.btn-raised.btn-inverse, -.btn.btn-fab.btn-inverse, -.input-group-btn .btn.btn-fab.btn-inverse, -.btn-group-raised .btn.btn-inverse, -.btn-group-raised .input-group-btn .btn.btn-inverse { - background-color: #3f51b5; - color: #ffffff; -} -.btn.btn-raised.btn-primary, -.input-group-btn .btn.btn-raised.btn-primary, -.btn.btn-fab.btn-primary, -.input-group-btn .btn.btn-fab.btn-primary, -.btn-group-raised .btn.btn-primary, -.btn-group-raised .input-group-btn .btn.btn-primary { - background-color: #009688; - color: rgba(255,255,255, 0.84); -} -.btn.btn-raised.btn-success, -.input-group-btn .btn.btn-raised.btn-success, -.btn.btn-fab.btn-success, -.input-group-btn .btn.btn-fab.btn-success, -.btn-group-raised .btn.btn-success, -.btn-group-raised .input-group-btn .btn.btn-success { - background-color: #4caf50; - color: rgba(255,255,255, 0.84); -} -.btn.btn-raised.btn-info, -.input-group-btn .btn.btn-raised.btn-info, -.btn.btn-fab.btn-info, -.input-group-btn .btn.btn-fab.btn-info, -.btn-group-raised .btn.btn-info, -.btn-group-raised .input-group-btn .btn.btn-info { - background-color: #03a9f4; - color: rgba(255,255,255, 0.84); -} -.btn.btn-raised.btn-warning, -.input-group-btn .btn.btn-raised.btn-warning, -.btn.btn-fab.btn-warning, -.input-group-btn .btn.btn-fab.btn-warning, -.btn-group-raised .btn.btn-warning, -.btn-group-raised .input-group-btn .btn.btn-warning { - background-color: #ff5722; - color: rgba(255,255,255, 0.84); -} -.btn.btn-raised.btn-danger, -.input-group-btn .btn.btn-raised.btn-danger, -.btn.btn-fab.btn-danger, -.input-group-btn .btn.btn-fab.btn-danger, -.btn-group-raised .btn.btn-danger, -.btn-group-raised .input-group-btn .btn.btn-danger { - background-color: #f44336; - color: rgba(255,255,255, 0.84); -} -.btn.btn-raised:not(.btn-link), -.input-group-btn .btn.btn-raised:not(.btn-link), -.btn-group-raised .btn:not(.btn-link), -.btn-group-raised .input-group-btn .btn:not(.btn-link) { - -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); -} -.btn.btn-raised:not(.btn-link):hover, -.input-group-btn .btn.btn-raised:not(.btn-link):hover, -.btn-group-raised .btn:not(.btn-link):hover, -.btn-group-raised .input-group-btn .btn:not(.btn-link):hover, -.btn.btn-raised:not(.btn-link):focus, -.input-group-btn .btn.btn-raised:not(.btn-link):focus, -.btn-group-raised .btn:not(.btn-link):focus, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus, -.btn.btn-raised:not(.btn-link).active, -.input-group-btn .btn.btn-raised:not(.btn-link).active, -.btn-group-raised .btn:not(.btn-link).active, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active, -.btn.btn-raised:not(.btn-link):active, -.input-group-btn .btn.btn-raised:not(.btn-link):active, -.btn-group-raised .btn:not(.btn-link):active, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active { - outline: 0; -} -.btn.btn-raised:not(.btn-link):hover, -.input-group-btn .btn.btn-raised:not(.btn-link):hover, -.btn-group-raised .btn:not(.btn-link):hover, -.btn-group-raised .input-group-btn .btn:not(.btn-link):hover, -.btn.btn-raised:not(.btn-link):focus, -.input-group-btn .btn.btn-raised:not(.btn-link):focus, -.btn-group-raised .btn:not(.btn-link):focus, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus, -.btn.btn-raised:not(.btn-link).active, -.input-group-btn .btn.btn-raised:not(.btn-link).active, -.btn-group-raised .btn:not(.btn-link).active, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active, -.btn.btn-raised:not(.btn-link):active, -.input-group-btn .btn.btn-raised:not(.btn-link):active, -.btn-group-raised .btn:not(.btn-link):active, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active, -.btn.btn-raised:not(.btn-link):hover.btn-default, -.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-default, -.btn-group-raised .btn:not(.btn-link):hover.btn-default, -.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-default, -.btn.btn-raised:not(.btn-link):focus.btn-default, -.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-default, -.btn-group-raised .btn:not(.btn-link):focus.btn-default, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-default, -.btn.btn-raised:not(.btn-link).active.btn-default, -.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-default, -.btn-group-raised .btn:not(.btn-link).active.btn-default, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-default, -.btn.btn-raised:not(.btn-link):active.btn-default, -.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-default, -.btn-group-raised .btn:not(.btn-link):active.btn-default, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-default { - background-color: #e4e4e4; -} -.btn.btn-raised:not(.btn-link):hover.btn-inverse, -.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-inverse, -.btn-group-raised .btn:not(.btn-link):hover.btn-inverse, -.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-inverse, -.btn.btn-raised:not(.btn-link):focus.btn-inverse, -.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-inverse, -.btn-group-raised .btn:not(.btn-link):focus.btn-inverse, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-inverse, -.btn.btn-raised:not(.btn-link).active.btn-inverse, -.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-inverse, -.btn-group-raised .btn:not(.btn-link).active.btn-inverse, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-inverse, -.btn.btn-raised:not(.btn-link):active.btn-inverse, -.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-inverse, -.btn-group-raised .btn:not(.btn-link):active.btn-inverse, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-inverse { - background-color: #495bc0; -} -.btn.btn-raised:not(.btn-link):hover.btn-primary, -.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-primary, -.btn-group-raised .btn:not(.btn-link):hover.btn-primary, -.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-primary, -.btn.btn-raised:not(.btn-link):focus.btn-primary, -.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-primary, -.btn-group-raised .btn:not(.btn-link):focus.btn-primary, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-primary, -.btn.btn-raised:not(.btn-link).active.btn-primary, -.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-primary, -.btn-group-raised .btn:not(.btn-link).active.btn-primary, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-primary, -.btn.btn-raised:not(.btn-link):active.btn-primary, -.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-primary, -.btn-group-raised .btn:not(.btn-link):active.btn-primary, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-primary { - background-color: #00aa9a; -} -.btn.btn-raised:not(.btn-link):hover.btn-success, -.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-success, -.btn-group-raised .btn:not(.btn-link):hover.btn-success, -.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-success, -.btn.btn-raised:not(.btn-link):focus.btn-success, -.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-success, -.btn-group-raised .btn:not(.btn-link):focus.btn-success, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-success, -.btn.btn-raised:not(.btn-link).active.btn-success, -.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-success, -.btn-group-raised .btn:not(.btn-link).active.btn-success, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-success, -.btn.btn-raised:not(.btn-link):active.btn-success, -.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-success, -.btn-group-raised .btn:not(.btn-link):active.btn-success, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-success { - background-color: #59b75c; -} -.btn.btn-raised:not(.btn-link):hover.btn-info, -.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-info, -.btn-group-raised .btn:not(.btn-link):hover.btn-info, -.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-info, -.btn.btn-raised:not(.btn-link):focus.btn-info, -.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-info, -.btn-group-raised .btn:not(.btn-link):focus.btn-info, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-info, -.btn.btn-raised:not(.btn-link).active.btn-info, -.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-info, -.btn-group-raised .btn:not(.btn-link).active.btn-info, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-info, -.btn.btn-raised:not(.btn-link):active.btn-info, -.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-info, -.btn-group-raised .btn:not(.btn-link):active.btn-info, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-info { - background-color: #0fb2fc; -} -.btn.btn-raised:not(.btn-link):hover.btn-warning, -.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-warning, -.btn-group-raised .btn:not(.btn-link):hover.btn-warning, -.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-warning, -.btn.btn-raised:not(.btn-link):focus.btn-warning, -.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-warning, -.btn-group-raised .btn:not(.btn-link):focus.btn-warning, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-warning, -.btn.btn-raised:not(.btn-link).active.btn-warning, -.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-warning, -.btn-group-raised .btn:not(.btn-link).active.btn-warning, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-warning, -.btn.btn-raised:not(.btn-link):active.btn-warning, -.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-warning, -.btn-group-raised .btn:not(.btn-link):active.btn-warning, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-warning { - background-color: #ff6736; -} -.btn.btn-raised:not(.btn-link):hover.btn-danger, -.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-danger, -.btn-group-raised .btn:not(.btn-link):hover.btn-danger, -.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-danger, -.btn.btn-raised:not(.btn-link):focus.btn-danger, -.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-danger, -.btn-group-raised .btn:not(.btn-link):focus.btn-danger, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-danger, -.btn.btn-raised:not(.btn-link).active.btn-danger, -.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-danger, -.btn-group-raised .btn:not(.btn-link).active.btn-danger, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-danger, -.btn.btn-raised:not(.btn-link):active.btn-danger, -.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-danger, -.btn-group-raised .btn:not(.btn-link):active.btn-danger, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-danger { - background-color: #f55549; -} -.btn.btn-raised:not(.btn-link).active, -.input-group-btn .btn.btn-raised:not(.btn-link).active, -.btn-group-raised .btn:not(.btn-link).active, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active, -.btn.btn-raised:not(.btn-link):active, -.input-group-btn .btn.btn-raised:not(.btn-link):active, -.btn-group-raised .btn:not(.btn-link):active, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active, -.btn.btn-raised:not(.btn-link).active:hover, -.input-group-btn .btn.btn-raised:not(.btn-link).active:hover, -.btn-group-raised .btn:not(.btn-link).active:hover, -.btn-group-raised .input-group-btn .btn:not(.btn-link).active:hover, -.btn.btn-raised:not(.btn-link):active:hover, -.input-group-btn .btn.btn-raised:not(.btn-link):active:hover, -.btn-group-raised .btn:not(.btn-link):active:hover, -.btn-group-raised .input-group-btn .btn:not(.btn-link):active:hover { - -webkit-box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); -} -.btn.btn-raised:not(.btn-link):focus, -.input-group-btn .btn.btn-raised:not(.btn-link):focus, -.btn-group-raised .btn:not(.btn-link):focus, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus, -.btn.btn-raised:not(.btn-link):focus.active, -.input-group-btn .btn.btn-raised:not(.btn-link):focus.active, -.btn-group-raised .btn:not(.btn-link):focus.active, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active, -.btn.btn-raised:not(.btn-link):focus:active, -.input-group-btn .btn.btn-raised:not(.btn-link):focus:active, -.btn-group-raised .btn:not(.btn-link):focus:active, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active, -.btn.btn-raised:not(.btn-link):focus:hover, -.input-group-btn .btn.btn-raised:not(.btn-link):focus:hover, -.btn-group-raised .btn:not(.btn-link):focus:hover, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:hover, -.btn.btn-raised:not(.btn-link):focus.active:hover, -.input-group-btn .btn.btn-raised:not(.btn-link):focus.active:hover, -.btn-group-raised .btn:not(.btn-link):focus.active:hover, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active:hover, -.btn.btn-raised:not(.btn-link):focus:active:hover, -.input-group-btn .btn.btn-raised:not(.btn-link):focus:active:hover, -.btn-group-raised .btn:not(.btn-link):focus:active:hover, -.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active:hover { - -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36); - box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36); -} -.btn.btn-fab, -.input-group-btn .btn.btn-fab { - border-radius: 50%; - font-size: 24px; - height: 56px; - margin: auto; - min-width: 56px; - width: 56px; - padding: 0; - overflow: hidden; - -webkit-box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24); - box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24); - position: relative; - line-height: normal; -} -.btn.btn-fab .ripple-container, -.input-group-btn .btn.btn-fab .ripple-container { - border-radius: 50%; -} -.btn.btn-fab.btn-fab-mini, -.input-group-btn .btn.btn-fab.btn-fab-mini, -.btn-group-sm .btn.btn-fab, -.btn-group-sm .input-group-btn .btn.btn-fab { - height: 40px; - min-width: 40px; - width: 40px; -} -.btn.btn-fab.btn-fab-mini.material-icons, -.input-group-btn .btn.btn-fab.btn-fab-mini.material-icons, -.btn-group-sm .btn.btn-fab.material-icons, -.btn-group-sm .input-group-btn .btn.btn-fab.material-icons { - top: 0px; - left: 0px; -} -.btn.btn-fab i.material-icons, -.input-group-btn .btn.btn-fab i.material-icons { - position: absolute; - top: 50%; - left: 50%; - -webkit-transform: translate(-12px, -12px); - -ms-transform: translate(-12px, -12px); - -o-transform: translate(-12px, -12px); - transform: translate(-12px, -12px); - line-height: 24px; - width: 24px; -} -.btn i.material-icons, -.input-group-btn .btn i.material-icons { - vertical-align: middle; -} -.btn.btn-lg, -.input-group-btn .btn.btn-lg, -.btn-group-lg .btn, -.btn-group-lg .input-group-btn .btn { - font-size: 16px; -} -.btn.btn-sm, -.input-group-btn .btn.btn-sm, -.btn-group-sm .btn, -.btn-group-sm .input-group-btn .btn { - padding: 5px 20px; - font-size: 12px; -} -.btn.btn-xs, -.input-group-btn .btn.btn-xs, -.btn-group-xs .btn, -.btn-group-xs .input-group-btn .btn { - padding: 4px 15px; - font-size: 10px; -} -fieldset[disabled][disabled] .btn, -fieldset[disabled][disabled] .input-group-btn .btn, -fieldset[disabled][disabled] .btn-group, -fieldset[disabled][disabled] .btn-group-vertical, -.btn.disabled, -.input-group-btn .btn.disabled, -.btn-group.disabled, -.btn-group-vertical.disabled, -.btn:disabled, -.input-group-btn .btn:disabled, -.btn-group:disabled, -.btn-group-vertical:disabled, -.btn[disabled][disabled], -.input-group-btn .btn[disabled][disabled], -.btn-group[disabled][disabled], -.btn-group-vertical[disabled][disabled] { - color: rgba(0, 0, 0, 0.26); - background: transparent; -} -.theme-dark fieldset[disabled][disabled] .btn, -.theme-dark fieldset[disabled][disabled] .input-group-btn .btn, -.theme-dark fieldset[disabled][disabled] .btn-group, -.theme-dark fieldset[disabled][disabled] .btn-group-vertical, -.theme-dark .btn.disabled, -.theme-dark .input-group-btn .btn.disabled, -.theme-dark .btn-group.disabled, -.theme-dark .btn-group-vertical.disabled, -.theme-dark .btn:disabled, -.theme-dark .input-group-btn .btn:disabled, -.theme-dark .btn-group:disabled, -.theme-dark .btn-group-vertical:disabled, -.theme-dark .btn[disabled][disabled], -.theme-dark .input-group-btn .btn[disabled][disabled], -.theme-dark .btn-group[disabled][disabled], -.theme-dark .btn-group-vertical[disabled][disabled] { - color: rgba(255, 255, 255, 0.3); -} -fieldset[disabled][disabled] .btn.btn-raised, -fieldset[disabled][disabled] .input-group-btn .btn.btn-raised, -fieldset[disabled][disabled] .btn-group.btn-raised, -fieldset[disabled][disabled] .btn-group-vertical.btn-raised, -.btn.disabled.btn-raised, -.input-group-btn .btn.disabled.btn-raised, -.btn-group.disabled.btn-raised, -.btn-group-vertical.disabled.btn-raised, -.btn:disabled.btn-raised, -.input-group-btn .btn:disabled.btn-raised, -.btn-group:disabled.btn-raised, -.btn-group-vertical:disabled.btn-raised, -.btn[disabled][disabled].btn-raised, -.input-group-btn .btn[disabled][disabled].btn-raised, -.btn-group[disabled][disabled].btn-raised, -.btn-group-vertical[disabled][disabled].btn-raised, -fieldset[disabled][disabled] .btn.btn-group-raised, -fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised, -fieldset[disabled][disabled] .btn-group.btn-group-raised, -fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised, -.btn.disabled.btn-group-raised, -.input-group-btn .btn.disabled.btn-group-raised, -.btn-group.disabled.btn-group-raised, -.btn-group-vertical.disabled.btn-group-raised, -.btn:disabled.btn-group-raised, -.input-group-btn .btn:disabled.btn-group-raised, -.btn-group:disabled.btn-group-raised, -.btn-group-vertical:disabled.btn-group-raised, -.btn[disabled][disabled].btn-group-raised, -.input-group-btn .btn[disabled][disabled].btn-group-raised, -.btn-group[disabled][disabled].btn-group-raised, -.btn-group-vertical[disabled][disabled].btn-group-raised, -fieldset[disabled][disabled] .btn.btn-raised.active, -fieldset[disabled][disabled] .input-group-btn .btn.btn-raised.active, -fieldset[disabled][disabled] .btn-group.btn-raised.active, -fieldset[disabled][disabled] .btn-group-vertical.btn-raised.active, -.btn.disabled.btn-raised.active, -.input-group-btn .btn.disabled.btn-raised.active, -.btn-group.disabled.btn-raised.active, -.btn-group-vertical.disabled.btn-raised.active, -.btn:disabled.btn-raised.active, -.input-group-btn .btn:disabled.btn-raised.active, -.btn-group:disabled.btn-raised.active, -.btn-group-vertical:disabled.btn-raised.active, -.btn[disabled][disabled].btn-raised.active, -.input-group-btn .btn[disabled][disabled].btn-raised.active, -.btn-group[disabled][disabled].btn-raised.active, -.btn-group-vertical[disabled][disabled].btn-raised.active, -fieldset[disabled][disabled] .btn.btn-group-raised.active, -fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised.active, -fieldset[disabled][disabled] .btn-group.btn-group-raised.active, -fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised.active, -.btn.disabled.btn-group-raised.active, -.input-group-btn .btn.disabled.btn-group-raised.active, -.btn-group.disabled.btn-group-raised.active, -.btn-group-vertical.disabled.btn-group-raised.active, -.btn:disabled.btn-group-raised.active, -.input-group-btn .btn:disabled.btn-group-raised.active, -.btn-group:disabled.btn-group-raised.active, -.btn-group-vertical:disabled.btn-group-raised.active, -.btn[disabled][disabled].btn-group-raised.active, -.input-group-btn .btn[disabled][disabled].btn-group-raised.active, -.btn-group[disabled][disabled].btn-group-raised.active, -.btn-group-vertical[disabled][disabled].btn-group-raised.active, -fieldset[disabled][disabled] .btn.btn-raised:active, -fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:active, -fieldset[disabled][disabled] .btn-group.btn-raised:active, -fieldset[disabled][disabled] .btn-group-vertical.btn-raised:active, -.btn.disabled.btn-raised:active, -.input-group-btn .btn.disabled.btn-raised:active, -.btn-group.disabled.btn-raised:active, -.btn-group-vertical.disabled.btn-raised:active, -.btn:disabled.btn-raised:active, -.input-group-btn .btn:disabled.btn-raised:active, -.btn-group:disabled.btn-raised:active, -.btn-group-vertical:disabled.btn-raised:active, -.btn[disabled][disabled].btn-raised:active, -.input-group-btn .btn[disabled][disabled].btn-raised:active, -.btn-group[disabled][disabled].btn-raised:active, -.btn-group-vertical[disabled][disabled].btn-raised:active, -fieldset[disabled][disabled] .btn.btn-group-raised:active, -fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:active, -fieldset[disabled][disabled] .btn-group.btn-group-raised:active, -fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:active, -.btn.disabled.btn-group-raised:active, -.input-group-btn .btn.disabled.btn-group-raised:active, -.btn-group.disabled.btn-group-raised:active, -.btn-group-vertical.disabled.btn-group-raised:active, -.btn:disabled.btn-group-raised:active, -.input-group-btn .btn:disabled.btn-group-raised:active, -.btn-group:disabled.btn-group-raised:active, -.btn-group-vertical:disabled.btn-group-raised:active, -.btn[disabled][disabled].btn-group-raised:active, -.input-group-btn .btn[disabled][disabled].btn-group-raised:active, -.btn-group[disabled][disabled].btn-group-raised:active, -.btn-group-vertical[disabled][disabled].btn-group-raised:active, -fieldset[disabled][disabled] .btn.btn-raised:focus:not(:active), -fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:focus:not(:active), -fieldset[disabled][disabled] .btn-group.btn-raised:focus:not(:active), -fieldset[disabled][disabled] .btn-group-vertical.btn-raised:focus:not(:active), -.btn.disabled.btn-raised:focus:not(:active), -.input-group-btn .btn.disabled.btn-raised:focus:not(:active), -.btn-group.disabled.btn-raised:focus:not(:active), -.btn-group-vertical.disabled.btn-raised:focus:not(:active), -.btn:disabled.btn-raised:focus:not(:active), -.input-group-btn .btn:disabled.btn-raised:focus:not(:active), -.btn-group:disabled.btn-raised:focus:not(:active), -.btn-group-vertical:disabled.btn-raised:focus:not(:active), -.btn[disabled][disabled].btn-raised:focus:not(:active), -.input-group-btn .btn[disabled][disabled].btn-raised:focus:not(:active), -.btn-group[disabled][disabled].btn-raised:focus:not(:active), -.btn-group-vertical[disabled][disabled].btn-raised:focus:not(:active), -fieldset[disabled][disabled] .btn.btn-group-raised:focus:not(:active), -fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:focus:not(:active), -fieldset[disabled][disabled] .btn-group.btn-group-raised:focus:not(:active), -fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:focus:not(:active), -.btn.disabled.btn-group-raised:focus:not(:active), -.input-group-btn .btn.disabled.btn-group-raised:focus:not(:active), -.btn-group.disabled.btn-group-raised:focus:not(:active), -.btn-group-vertical.disabled.btn-group-raised:focus:not(:active), -.btn:disabled.btn-group-raised:focus:not(:active), -.input-group-btn .btn:disabled.btn-group-raised:focus:not(:active), -.btn-group:disabled.btn-group-raised:focus:not(:active), -.btn-group-vertical:disabled.btn-group-raised:focus:not(:active), -.btn[disabled][disabled].btn-group-raised:focus:not(:active), -.input-group-btn .btn[disabled][disabled].btn-group-raised:focus:not(:active), -.btn-group[disabled][disabled].btn-group-raised:focus:not(:active), -.btn-group-vertical[disabled][disabled].btn-group-raised:focus:not(:active) { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-group, -.btn-group-vertical { - position: relative; - margin: 10px 1px; -} -.btn-group.open > .dropdown-toggle.btn, -.btn-group-vertical.open > .dropdown-toggle.btn, -.btn-group.open > .dropdown-toggle.btn.btn-default, -.btn-group-vertical.open > .dropdown-toggle.btn.btn-default { - background-color: #EEEEEE; -} -.btn-group.open > .dropdown-toggle.btn.btn-inverse, -.btn-group-vertical.open > .dropdown-toggle.btn.btn-inverse { - background-color: #3f51b5; -} -.btn-group.open > .dropdown-toggle.btn.btn-primary, -.btn-group-vertical.open > .dropdown-toggle.btn.btn-primary { - background-color: #009688; -} -.btn-group.open > .dropdown-toggle.btn.btn-success, -.btn-group-vertical.open > .dropdown-toggle.btn.btn-success { - background-color: #4caf50; -} -.btn-group.open > .dropdown-toggle.btn.btn-info, -.btn-group-vertical.open > .dropdown-toggle.btn.btn-info { - background-color: #03a9f4; -} -.btn-group.open > .dropdown-toggle.btn.btn-warning, -.btn-group-vertical.open > .dropdown-toggle.btn.btn-warning { - background-color: #ff5722; -} -.btn-group.open > .dropdown-toggle.btn.btn-danger, -.btn-group-vertical.open > .dropdown-toggle.btn.btn-danger { - background-color: #f44336; -} -.btn-group .dropdown-menu, -.btn-group-vertical .dropdown-menu { - border-radius: 0 0 2px 2px; -} -.btn-group.btn-group-raised, -.btn-group-vertical.btn-group-raised { - -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); -} -.btn-group .btn + .btn, -.btn-group-vertical .btn + .btn, -.btn-group .btn, -.btn-group-vertical .btn, -.btn-group .btn:active, -.btn-group-vertical .btn:active, -.btn-group .btn-group, -.btn-group-vertical .btn-group { - margin: 0; -} -.checkbox label, -label.checkbox-inline { - cursor: pointer; - padding-left: 0; - color: rgba(0,0,0, 0.26); -} -.form-group.is-focused .checkbox label, -.form-group.is-focused label.checkbox-inline { - color: rgba(0,0,0, 0.26); -} -.form-group.is-focused .checkbox label:hover, -.form-group.is-focused label.checkbox-inline:hover, -.form-group.is-focused .checkbox label:focus, -.form-group.is-focused label.checkbox-inline:focus { - color: rgba(0,0,0, .54); -} -fieldset[disabled] .form-group.is-focused .checkbox label, -fieldset[disabled] .form-group.is-focused label.checkbox-inline { - color: rgba(0,0,0, 0.26); -} -.checkbox input[type=checkbox], -label.checkbox-inline input[type=checkbox] { - opacity: 0; - position: absolute; - margin: 0; - z-index: -1; - width: 0; - height: 0; - overflow: hidden; - left: 0; - pointer-events: none; -} -.checkbox .checkbox-material, -label.checkbox-inline .checkbox-material { - vertical-align: middle; - position: relative; - top: 3px; -} -.checkbox .checkbox-material:before, -label.checkbox-inline .checkbox-material:before { - display: block; - position: absolute; - top: -5px; - left: 0; - content: ""; - background-color: rgba(0, 0, 0, 0.84); - height: 20px; - width: 20px; - border-radius: 100%; - z-index: 1; - opacity: 0; - margin: 0; - -webkit-transform: scale3d(2.3, 2.3, 1); - transform: scale3d(2.3, 2.3, 1); -} -.checkbox .checkbox-material .check, -label.checkbox-inline .checkbox-material .check { - position: relative; - display: inline-block; - width: 20px; - height: 20px; - border: 2px solid rgba(0,0,0, .54); - border-radius: 2px; - overflow: hidden; - z-index: 1; -} -.checkbox .checkbox-material .check:before, -label.checkbox-inline .checkbox-material .check:before { - position: absolute; - content: ""; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - display: block; - margin-top: -4px; - margin-left: 6px; - width: 0; - height: 0; - -webkit-box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0 inset; - box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0 inset; -} -.checkbox input[type=checkbox]:focus + .checkbox-material .check:after, -label.checkbox-inline input[type=checkbox]:focus + .checkbox-material .check:after { - opacity: 0.2; -} -.checkbox input[type=checkbox]:focus:checked + .checkbox-material:before, -label.checkbox-inline input[type=checkbox]:focus:checked + .checkbox-material:before { - -webkit-animation: rippleOn 500ms; - -o-animation: rippleOn 500ms; - animation: rippleOn 500ms; -} -.checkbox input[type=checkbox]:focus:checked + .checkbox-material .check:before, -label.checkbox-inline input[type=checkbox]:focus:checked + .checkbox-material .check:before { - -webkit-animation: checkbox-on 0.3s forwards; - -o-animation: checkbox-on 0.3s forwards; - animation: checkbox-on 0.3s forwards; -} -.checkbox input[type=checkbox]:focus:checked + .checkbox-material .check:after, -label.checkbox-inline input[type=checkbox]:focus:checked + .checkbox-material .check:after { - -webkit-animation: rippleOn 500ms forwards; - -o-animation: rippleOn 500ms forwards; - animation: rippleOn 500ms forwards; -} -.checkbox input[type=checkbox]:focus:not(:checked) + .checkbox-material:before, -label.checkbox-inline input[type=checkbox]:focus:not(:checked) + .checkbox-material:before { - -webkit-animation: rippleOff 500ms; - -o-animation: rippleOff 500ms; - animation: rippleOff 500ms; -} -.checkbox input[type=checkbox]:focus:not(:checked) + .checkbox-material .check:before, -label.checkbox-inline input[type=checkbox]:focus:not(:checked) + .checkbox-material .check:before { - -webkit-animation: checkbox-off 0.3s forwards; - -o-animation: checkbox-off 0.3s forwards; - animation: checkbox-off 0.3s forwards; -} -.checkbox input[type=checkbox]:focus:not(:checked) + .checkbox-material .check:after, -label.checkbox-inline input[type=checkbox]:focus:not(:checked) + .checkbox-material .check:after { - -webkit-animation: rippleOff 500ms forwards; - -o-animation: rippleOff 500ms forwards; - animation: rippleOff 500ms forwards; -} -.checkbox input[type=checkbox]:checked + .checkbox-material .check, -label.checkbox-inline input[type=checkbox]:checked + .checkbox-material .check { - color: #009688; - border-color: #009688; -} -.checkbox input[type=checkbox]:checked + .checkbox-material .check:before, -label.checkbox-inline input[type=checkbox]:checked + .checkbox-material .check:before { - color: #009688; - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; -} -fieldset[disabled] .checkbox, -fieldset[disabled] label.checkbox-inline, -fieldset[disabled] .checkbox input[type=checkbox], -fieldset[disabled] label.checkbox-inline input[type=checkbox], -.checkbox input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check:before, -label.checkbox-inline input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check:before, -.checkbox input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check, -label.checkbox-inline input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check, -.checkbox input[type=checkbox][disabled] + .circle, -label.checkbox-inline input[type=checkbox][disabled] + .circle { - opacity: 0.5; -} -.checkbox input[type=checkbox][disabled] + .checkbox-material .check:after, -label.checkbox-inline input[type=checkbox][disabled] + .checkbox-material .check:after { - background-color: rgba(0,0,0, 0.87); - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); -} -@-webkit-keyframes checkbox-on { - 0% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; - } - 50% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; - } - 100% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; - } -} -@-o-keyframes checkbox-on { - 0% { - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; - } - 50% { - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; - } - 100% { - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; - } -} -@keyframes checkbox-on { - 0% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; - } - 50% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; - } - 100% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; - } -} -@-webkit-keyframes checkbox-off { - 0% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - } - 25% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - } - 50% { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - margin-top: -4px; - margin-left: 6px; - width: 0; - height: 0; - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; - } - 51% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - margin-top: -2px; - margin-left: -2px; - width: 20px; - height: 20px; - -webkit-box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 10px inset; - box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 10px inset; - } - 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - margin-top: -2px; - margin-left: -2px; - width: 20px; - height: 20px; - -webkit-box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 0 inset; - box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 0 inset; - } -} -@-o-keyframes checkbox-off { - 0% { - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - } - 25% { - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - } - 50% { - -o-transform: rotate(45deg); - transform: rotate(45deg); - margin-top: -4px; - margin-left: 6px; - width: 0; - height: 0; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; - } - 51% { - -o-transform: rotate(0deg); - transform: rotate(0deg); - margin-top: -2px; - margin-left: -2px; - width: 20px; - height: 20px; - box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 10px inset; - } - 100% { - -o-transform: rotate(0deg); - transform: rotate(0deg); - margin-top: -2px; - margin-left: -2px; - width: 20px; - height: 20px; - box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 0 inset; - } -} -@keyframes checkbox-off { - 0% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - } - 25% { - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; - } - 50% { - -webkit-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - margin-top: -4px; - margin-left: 6px; - width: 0; - height: 0; - -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; - box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; - } - 51% { - -webkit-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - margin-top: -2px; - margin-left: -2px; - width: 20px; - height: 20px; - -webkit-box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 10px inset; - box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 10px inset; - } - 100% { - -webkit-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - margin-top: -2px; - margin-left: -2px; - width: 20px; - height: 20px; - -webkit-box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 0 inset; - box-shadow: 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0 0 0 0, - 0px 0 0 0 inset; - } -} -@-webkit-keyframes rippleOn { - 0% { - opacity: 0; - } - 50% { - opacity: 0.2; - } - 100% { - opacity: 0; - } -} -@-o-keyframes rippleOn { - 0% { - opacity: 0; - } - 50% { - opacity: 0.2; - } - 100% { - opacity: 0; - } -} -@keyframes rippleOn { - 0% { - opacity: 0; - } - 50% { - opacity: 0.2; - } - 100% { - opacity: 0; - } -} -@-webkit-keyframes rippleOff { - 0% { - opacity: 0; - } - 50% { - opacity: 0.2; - } - 100% { - opacity: 0; - } -} -@-o-keyframes rippleOff { - 0% { - opacity: 0; - } - 50% { - opacity: 0.2; - } - 100% { - opacity: 0; - } -} -@keyframes rippleOff { - 0% { - opacity: 0; - } - 50% { - opacity: 0.2; - } - 100% { - opacity: 0; - } -} -.togglebutton { - vertical-align: middle; -} -.togglebutton, -.togglebutton label, -.togglebutton input, -.togglebutton .toggle { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.togglebutton label { - cursor: pointer; - color: rgba(0,0,0, 0.26); -} -.form-group.is-focused .togglebutton label { - color: rgba(0,0,0, 0.26); -} -.form-group.is-focused .togglebutton label:hover, -.form-group.is-focused .togglebutton label:focus { - color: rgba(0,0,0, .54); -} -fieldset[disabled] .form-group.is-focused .togglebutton label { - color: rgba(0,0,0, 0.26); -} -.togglebutton label input[type=checkbox] { - opacity: 0; - width: 0; - height: 0; -} -.togglebutton label .toggle { - text-align: left; -} -.togglebutton label .toggle, -.togglebutton label input[type=checkbox][disabled] + .toggle { - content: ""; - display: inline-block; - width: 30px; - height: 15px; - background-color: rgba(80, 80, 80, 0.7); - border-radius: 15px; - margin-right: 15px; - -webkit-transition: background 0.3s ease; - -o-transition: background 0.3s ease; - transition: background 0.3s ease; - vertical-align: middle; -} -.togglebutton label .toggle:after { - content: ""; - display: inline-block; - width: 20px; - height: 20px; - background-color: #F1F1F1; - border-radius: 20px; - position: relative; - -webkit-box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); - left: -5px; - top: -2px; - -webkit-transition: left 0.3s ease, background 0.3s ease, -webkit-box-shadow 0.1s ease; - -o-transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease; - transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease; -} -.togglebutton label input[type=checkbox][disabled] + .toggle:after, -.togglebutton label input[type=checkbox][disabled]:checked + .toggle:after { - background-color: #BDBDBD; -} -.togglebutton label input[type=checkbox] + .toggle:active:after, -.togglebutton label input[type=checkbox][disabled] + .toggle:active:after { - -webkit-box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.1); -} -.togglebutton label input[type=checkbox]:checked + .toggle:after { - left: 15px; -} -.togglebutton label input[type=checkbox]:checked + .toggle { - background-color: rgba(0, 150, 136, 0.5); -} -.togglebutton label input[type=checkbox]:checked + .toggle:after { - background-color: #009688; -} -.togglebutton label input[type=checkbox]:checked + .toggle:active:after { - -webkit-box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 150, 136, 0.1); - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 150, 136, 0.1); -} -.radio label, -label.radio-inline { - cursor: pointer; - padding-left: 45px; - position: relative; - color: rgba(0,0,0, 0.26); -} -.form-group.is-focused .radio label, -.form-group.is-focused label.radio-inline { - color: rgba(0,0,0, 0.26); -} -.form-group.is-focused .radio label:hover, -.form-group.is-focused label.radio-inline:hover, -.form-group.is-focused .radio label:focus, -.form-group.is-focused label.radio-inline:focus { - color: rgba(0,0,0, .54); -} -fieldset[disabled] .form-group.is-focused .radio label, -fieldset[disabled] .form-group.is-focused label.radio-inline { - color: rgba(0,0,0, 0.26); -} -.radio span, -label.radio-inline span { - display: block; - position: absolute; - left: 10px; - top: 2px; - -webkit-transition-duration: 0.2s; - -o-transition-duration: 0.2s; - transition-duration: 0.2s; -} -.radio .circle, -label.radio-inline .circle { - border: 2px solid rgba(0,0,0, .54); - height: 15px; - width: 15px; - border-radius: 100%; -} -.radio .check, -label.radio-inline .check { - height: 15px; - width: 15px; - border-radius: 100%; - background-color: #009688; - -webkit-transform: scale3d(0, 0, 0); - transform: scale3d(0, 0, 0); -} -.radio .check:after, -label.radio-inline .check:after { - display: block; - position: absolute; - content: ""; - background-color: rgba(0,0,0, 0.87); - left: -18px; - top: -18px; - height: 50px; - width: 50px; - border-radius: 100%; - z-index: 1; - opacity: 0; - margin: 0; - -webkit-transform: scale3d(1.5, 1.5, 1); - transform: scale3d(1.5, 1.5, 1); -} -.radio input[type=radio]:focus:not(:checked) ~ .check:after, -label.radio-inline input[type=radio]:focus:not(:checked) ~ .check:after { - -webkit-animation: rippleOff 500ms; - -o-animation: rippleOff 500ms; - animation: rippleOff 500ms; -} -.radio input[type=radio]:focus:checked ~ .check:after, -label.radio-inline input[type=radio]:focus:checked ~ .check:after { - -webkit-animation: rippleOn 500ms; - -o-animation: rippleOn 500ms; - animation: rippleOn 500ms; -} -.radio input[type=radio], -label.radio-inline input[type=radio] { - opacity: 0; - height: 0; - width: 0; - overflow: hidden; -} -.radio input[type=radio]:checked ~ .check, -label.radio-inline input[type=radio]:checked ~ .check, -.radio input[type=radio]:checked ~ .circle, -label.radio-inline input[type=radio]:checked ~ .circle { - opacity: 1; -} -.radio input[type=radio]:checked ~ .check, -label.radio-inline input[type=radio]:checked ~ .check { - background-color: #009688; -} -.radio input[type=radio]:checked ~ .circle, -label.radio-inline input[type=radio]:checked ~ .circle { - border-color: #009688; -} -.radio input[type=radio]:checked ~ .check, -label.radio-inline input[type=radio]:checked ~ .check { - -webkit-transform: scale3d(0.55, 0.55, 1); - transform: scale3d(0.55, 0.55, 1); -} -.radio input[type=radio][disabled] ~ .check, -label.radio-inline input[type=radio][disabled] ~ .check, -.radio input[type=radio][disabled] ~ .circle, -label.radio-inline input[type=radio][disabled] ~ .circle { - opacity: 0.26; -} -.radio input[type=radio][disabled] ~ .check, -label.radio-inline input[type=radio][disabled] ~ .check { - background-color: #000000; -} -.radio input[type=radio][disabled] ~ .circle, -label.radio-inline input[type=radio][disabled] ~ .circle { - border-color: #000000; -} -.theme-dark .radio input[type=radio][disabled] ~ .check, -.theme-dark label.radio-inline input[type=radio][disabled] ~ .check, -.theme-dark .radio input[type=radio][disabled] ~ .circle, -.theme-dark label.radio-inline input[type=radio][disabled] ~ .circle { - opacity: 0.3; -} -.theme-dark .radio input[type=radio][disabled] ~ .check, -.theme-dark label.radio-inline input[type=radio][disabled] ~ .check { - background-color: #ffffff; -} -.theme-dark .radio input[type=radio][disabled] ~ .circle, -.theme-dark label.radio-inline input[type=radio][disabled] ~ .circle { - border-color: #ffffff; -} -@keyframes rippleOn { - 0% { - opacity: 0; - } - 50% { - opacity: 0.2; - } - 100% { - opacity: 0; - } -} -@keyframes rippleOff { - 0% { - opacity: 0; - } - 50% { - opacity: 0.2; - } - 100% { - opacity: 0; - } -} -legend { - margin-bottom: 22px; - font-size: 24px; -} -output { - padding-top: 8px; - font-size: 16px; - line-height: 1.42857143; -} -.form-control { - height: 38px; - padding: 7px 0; - font-size: 16px; - line-height: 1.42857143; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 38px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 24px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 44px; - } -} -.radio label, -.checkbox label { - min-height: 22px; -} -.form-control-static { - padding-top: 8px; - padding-bottom: 8px; - min-height: 38px; -} -.input-sm .input-sm { - height: 24px; - padding: 3px 0; - font-size: 11px; - line-height: 1.5; - border-radius: 0; -} -.input-sm select.input-sm { - height: 24px; - line-height: 24px; -} -.input-sm textarea.input-sm, -.input-sm select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 24px; - padding: 3px 0; - font-size: 11px; - line-height: 1.5; -} -.form-group-sm select.form-control { - height: 24px; - line-height: 24px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 24px; - min-height: 33px; - padding: 4px 0; - font-size: 11px; - line-height: 1.5; -} -.input-lg .input-lg { - height: 44px; - padding: 9px 0; - font-size: 18px; - line-height: 1.3333333; - border-radius: 0; -} -.input-lg select.input-lg { - height: 44px; - line-height: 44px; -} -.input-lg textarea.input-lg, -.input-lg select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 44px; - padding: 9px 0; - font-size: 18px; - line-height: 1.3333333; -} -.form-group-lg select.form-control { - height: 44px; - line-height: 44px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 44px; - min-height: 40px; - padding: 10px 0; - font-size: 18px; - line-height: 1.3333333; -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 8px; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 30px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 8px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 12.9999997px; - font-size: 18px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 4px; - font-size: 11px; - } -} -.label { - border-radius: 1px; - padding: .3em .6em; -} -.label, -.label.label-default { - background-color: #9e9e9e; -} -.label.label-inverse { - background-color: #3f51b5; -} -.label.label-primary { - background-color: #009688; -} -.label.label-success { - background-color: #4caf50; -} -.label.label-info { - background-color: #03a9f4; -} -.label.label-warning { - background-color: #ff5722; -} -.label.label-danger { - background-color: #f44336; -} -.form-control, -.form-group .form-control { - border: 0; - background-image: -webkit-gradient(linear, left top, left bottom, from(#009688), to(#009688)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); - background-image: -webkit-linear-gradient(#009688, #009688), -webkit-linear-gradient(#D2D2D2, #D2D2D2); - background-image: -o-linear-gradient(#009688, #009688), -o-linear-gradient(#D2D2D2, #D2D2D2); - background-image: linear-gradient(#009688, #009688), linear-gradient(#D2D2D2, #D2D2D2); - -webkit-background-size: 0 2px, 100% 1px; - background-size: 0 2px, 100% 1px; - background-repeat: no-repeat; - background-position: center bottom, center -webkit-calc(100% - 1px); - background-position: center bottom, center calc(100% - 1px); - background-color: rgba(0, 0, 0, 0); - -webkit-transition: background 0s ease-out; - -o-transition: background 0s ease-out; - transition: background 0s ease-out; - float: none; - -webkit-box-shadow: none; - box-shadow: none; - border-radius: 0; -} -.form-control::-moz-placeholder, -.form-group .form-control::-moz-placeholder { - color: #BDBDBD; - font-weight: 400; -} -.form-control:-ms-input-placeholder, -.form-group .form-control:-ms-input-placeholder { - color: #BDBDBD; - font-weight: 400; -} -.form-control::-webkit-input-placeholder, -.form-group .form-control::-webkit-input-placeholder { - color: #BDBDBD; - font-weight: 400; -} -.form-control[readonly], -.form-group .form-control[readonly], -.form-control[disabled], -.form-group .form-control[disabled], -fieldset[disabled] .form-control, -fieldset[disabled] .form-group .form-control { - background-color: rgba(0, 0, 0, 0); -} -.form-control[disabled], -.form-group .form-control[disabled], -fieldset[disabled] .form-control, -fieldset[disabled] .form-group .form-control { - background-image: none; - border-bottom: 1px dotted #D2D2D2; -} -.form-group { - position: relative; -} -.form-group.label-static label.control-label, -.form-group.label-placeholder label.control-label, -.form-group.label-floating label.control-label { - position: absolute; - pointer-events: none; - -webkit-transition: 0.3s ease all; - -o-transition: 0.3s ease all; - transition: 0.3s ease all; -} -.form-group.label-floating label.control-label { - will-change: left, top, contents; -} -.form-group.label-placeholder:not(.is-empty) label.control-label { - display: none; -} -.form-group .help-block { - position: absolute; - display: none; -} -.form-group.is-focused .form-control { - outline: none; - background-image: -webkit-gradient(linear, left top, left bottom, from(#009688), to(#009688)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); - background-image: -webkit-linear-gradient(#009688, #009688), -webkit-linear-gradient(#D2D2D2, #D2D2D2); - background-image: -o-linear-gradient(#009688, #009688), -o-linear-gradient(#D2D2D2, #D2D2D2); - background-image: linear-gradient(#009688, #009688), linear-gradient(#D2D2D2, #D2D2D2); - -webkit-background-size: 100% 2px, 100% 1px; - background-size: 100% 2px, 100% 1px; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition-duration: 0.3s; - -o-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.form-group.is-focused .form-control .material-input:after { - background-color: #009688; -} -.form-group.is-focused label, -.form-group.is-focused label.control-label { - color: #009688; -} -.form-group.is-focused.label-placeholder label, -.form-group.is-focused.label-placeholder label.control-label { - color: #BDBDBD; -} -.form-group.is-focused .help-block { - display: block; -} -.form-group.has-warning .form-control { - -webkit-box-shadow: none; - box-shadow: none; -} -.form-group.has-warning.is-focused .form-control { - background-image: -webkit-gradient(linear, left top, left bottom, from(#ff5722), to(#ff5722)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); - background-image: -webkit-linear-gradient(#ff5722, #ff5722), -webkit-linear-gradient(#D2D2D2, #D2D2D2); - background-image: -o-linear-gradient(#ff5722, #ff5722), -o-linear-gradient(#D2D2D2, #D2D2D2); - background-image: linear-gradient(#ff5722, #ff5722), linear-gradient(#D2D2D2, #D2D2D2); -} -.form-group.has-warning label.control-label, -.form-group.has-warning .help-block { - color: #ff5722; -} -.form-group.has-error .form-control { - -webkit-box-shadow: none; - box-shadow: none; -} -.form-group.has-error.is-focused .form-control { - background-image: -webkit-gradient(linear, left top, left bottom, from(#f44336), to(#f44336)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); - background-image: -webkit-linear-gradient(#f44336, #f44336), -webkit-linear-gradient(#D2D2D2, #D2D2D2); - background-image: -o-linear-gradient(#f44336, #f44336), -o-linear-gradient(#D2D2D2, #D2D2D2); - background-image: linear-gradient(#f44336, #f44336), linear-gradient(#D2D2D2, #D2D2D2); -} -.form-group.has-error label.control-label, -.form-group.has-error .help-block { - color: #f44336; -} -.form-group.has-success .form-control { - -webkit-box-shadow: none; - box-shadow: none; -} -.form-group.has-success.is-focused .form-control { - background-image: -webkit-gradient(linear, left top, left bottom, from(#4caf50), to(#4caf50)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); - background-image: -webkit-linear-gradient(#4caf50, #4caf50), -webkit-linear-gradient(#D2D2D2, #D2D2D2); - background-image: -o-linear-gradient(#4caf50, #4caf50), -o-linear-gradient(#D2D2D2, #D2D2D2); - background-image: linear-gradient(#4caf50, #4caf50), linear-gradient(#D2D2D2, #D2D2D2); -} -.form-group.has-success label.control-label, -.form-group.has-success .help-block { - color: #4caf50; -} -.form-group.has-info .form-control { - -webkit-box-shadow: none; - box-shadow: none; -} -.form-group.has-info.is-focused .form-control { - background-image: -webkit-gradient(linear, left top, left bottom, from(#03a9f4), to(#03a9f4)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); - background-image: -webkit-linear-gradient(#03a9f4, #03a9f4), -webkit-linear-gradient(#D2D2D2, #D2D2D2); - background-image: -o-linear-gradient(#03a9f4, #03a9f4), -o-linear-gradient(#D2D2D2, #D2D2D2); - background-image: linear-gradient(#03a9f4, #03a9f4), linear-gradient(#D2D2D2, #D2D2D2); -} -.form-group.has-info label.control-label, -.form-group.has-info .help-block { - color: #03a9f4; -} -.form-group textarea { - resize: none; -} -.form-group textarea ~ .form-control-highlight { - margin-top: -11px; -} -.form-group select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} -.form-group select ~ .material-input:after { - display: none; -} -.form-control { - margin-bottom: 7px; -} -.form-control::-moz-placeholder { - font-size: 16px; - line-height: 1.42857143; - color: #BDBDBD; - font-weight: 400; -} -.form-control:-ms-input-placeholder { - font-size: 16px; - line-height: 1.42857143; - color: #BDBDBD; - font-weight: 400; -} -.form-control::-webkit-input-placeholder { - font-size: 16px; - line-height: 1.42857143; - color: #BDBDBD; - font-weight: 400; -} -.checkbox label, -.radio label, -label { - font-size: 16px; - line-height: 1.42857143; - color: #BDBDBD; - font-weight: 400; -} -label.control-label { - font-size: 12px; - line-height: 1.07142857; - font-weight: 400; - margin: 16px 0 0 0; -} -.help-block { - margin-top: 0; - font-size: 12px; -} -.form-group { - padding-bottom: 7px; - margin: 28px 0 0 0; -} -.form-group .form-control { - margin-bottom: 7px; -} -.form-group .form-control::-moz-placeholder { - font-size: 16px; - line-height: 1.42857143; - color: #BDBDBD; - font-weight: 400; -} -.form-group .form-control:-ms-input-placeholder { - font-size: 16px; - line-height: 1.42857143; - color: #BDBDBD; - font-weight: 400; -} -.form-group .form-control::-webkit-input-placeholder { - font-size: 16px; - line-height: 1.42857143; - color: #BDBDBD; - font-weight: 400; -} -.form-group .checkbox label, -.form-group .radio label, -.form-group label { - font-size: 16px; - line-height: 1.42857143; - color: #BDBDBD; - font-weight: 400; -} -.form-group label.control-label { - font-size: 12px; - line-height: 1.07142857; - font-weight: 400; - margin: 16px 0 0 0; -} -.form-group .help-block { - margin-top: 0; - font-size: 12px; -} -.form-group.label-floating label.control-label, -.form-group.label-placeholder label.control-label { - top: -7px; - font-size: 16px; - line-height: 1.42857143; -} -.form-group.label-static label.control-label, -.form-group.label-floating.is-focused label.control-label, -.form-group.label-floating:not(.is-empty) label.control-label { - top: -30px; - left: 0; - font-size: 12px; - line-height: 1.07142857; -} -.form-group.label-floating input.form-control:-webkit-autofill ~ label.control-label label.control-label { - top: -30px; - left: 0; - font-size: 12px; - line-height: 1.07142857; -} -.form-group.form-group-sm { - padding-bottom: 3px; - margin: 21px 0 0 0; -} -.form-group.form-group-sm .form-control { - margin-bottom: 3px; -} -.form-group.form-group-sm .form-control::-moz-placeholder { - font-size: 11px; - line-height: 1.5; - color: #BDBDBD; - font-weight: 400; -} -.form-group.form-group-sm .form-control:-ms-input-placeholder { - font-size: 11px; - line-height: 1.5; - color: #BDBDBD; - font-weight: 400; -} -.form-group.form-group-sm .form-control::-webkit-input-placeholder { - font-size: 11px; - line-height: 1.5; - color: #BDBDBD; - font-weight: 400; -} -.form-group.form-group-sm .checkbox label, -.form-group.form-group-sm .radio label, -.form-group.form-group-sm label { - font-size: 11px; - line-height: 1.5; - color: #BDBDBD; - font-weight: 400; -} -.form-group.form-group-sm label.control-label { - font-size: 9px; - line-height: 1.125; - font-weight: 400; - margin: 16px 0 0 0; -} -.form-group.form-group-sm .help-block { - margin-top: 0; - font-size: 9px; -} -.form-group.form-group-sm.label-floating label.control-label, -.form-group.form-group-sm.label-placeholder label.control-label { - top: -11px; - font-size: 11px; - line-height: 1.5; -} -.form-group.form-group-sm.label-static label.control-label, -.form-group.form-group-sm.label-floating.is-focused label.control-label, -.form-group.form-group-sm.label-floating:not(.is-empty) label.control-label { - top: -25px; - left: 0; - font-size: 9px; - line-height: 1.125; -} -.form-group.form-group-sm.label-floating input.form-control:-webkit-autofill ~ label.control-label label.control-label { - top: -25px; - left: 0; - font-size: 9px; - line-height: 1.125; -} -.form-group.form-group-lg { - padding-bottom: 9px; - margin: 30px 0 0 0; -} -.form-group.form-group-lg .form-control { - margin-bottom: 9px; -} -.form-group.form-group-lg .form-control::-moz-placeholder { - font-size: 18px; - line-height: 1.3333333; - color: #BDBDBD; - font-weight: 400; -} -.form-group.form-group-lg .form-control:-ms-input-placeholder { - font-size: 18px; - line-height: 1.3333333; - color: #BDBDBD; - font-weight: 400; -} -.form-group.form-group-lg .form-control::-webkit-input-placeholder { - font-size: 18px; - line-height: 1.3333333; - color: #BDBDBD; - font-weight: 400; -} -.form-group.form-group-lg .checkbox label, -.form-group.form-group-lg .radio label, -.form-group.form-group-lg label { - font-size: 18px; - line-height: 1.3333333; - color: #BDBDBD; - font-weight: 400; -} -.form-group.form-group-lg label.control-label { - font-size: 14px; - line-height: 0.99999998; - font-weight: 400; - margin: 16px 0 0 0; -} -.form-group.form-group-lg .help-block { - margin-top: 0; - font-size: 14px; -} -.form-group.form-group-lg.label-floating label.control-label, -.form-group.form-group-lg.label-placeholder label.control-label { - top: -5px; - font-size: 18px; - line-height: 1.3333333; -} -.form-group.form-group-lg.label-static label.control-label, -.form-group.form-group-lg.label-floating.is-focused label.control-label, -.form-group.form-group-lg.label-floating:not(.is-empty) label.control-label { - top: -32px; - left: 0; - font-size: 14px; - line-height: 0.99999998; -} -.form-group.form-group-lg.label-floating input.form-control:-webkit-autofill ~ label.control-label label.control-label { - top: -32px; - left: 0; - font-size: 14px; - line-height: 0.99999998; -} -select.form-control { - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - border-radius: 0; -} -.form-group.is-focused select.form-control { - -webkit-box-shadow: none; - box-shadow: none; - border-color: #D2D2D2; -} -select.form-control[multiple], -.form-group.is-focused select.form-control[multiple] { - height: 85px; -} -.input-group-btn .btn { - margin: 0 0 7px 0; -} -.form-group.form-group-sm .input-group-btn .btn { - margin: 0 0 3px 0; -} -.form-group.form-group-lg .input-group-btn .btn { - margin: 0 0 9px 0; -} -.input-group .input-group-btn { - padding: 0 12px; -} -.input-group .input-group-addon { - border: 0; - background: transparent; -} -.form-group input[type=file] { - opacity: 0; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 100; -} -legend { - border-bottom: 0; -} -.list-group { - border-radius: 0; -} -.list-group .list-group-item { - background-color: transparent; - overflow: hidden; - border: 0; - border-radius: 0; - padding: 0 16px; -} -.list-group .list-group-item.baseline { - border-bottom: 1px solid #cecece; -} -.list-group .list-group-item.baseline:last-child { - border-bottom: none; -} -.list-group .list-group-item .row-picture, -.list-group .list-group-item .row-action-primary { - display: inline-block; - padding-right: 16px; -} -.list-group .list-group-item .row-picture img, -.list-group .list-group-item .row-action-primary img, -.list-group .list-group-item .row-picture i, -.list-group .list-group-item .row-action-primary i, -.list-group .list-group-item .row-picture label, -.list-group .list-group-item .row-action-primary label { - display: block; - width: 56px; - height: 56px; -} -.list-group .list-group-item .row-picture img, -.list-group .list-group-item .row-action-primary img { - background: rgba(0, 0, 0, 0.1); - padding: 1px; -} -.list-group .list-group-item .row-picture img.circle, -.list-group .list-group-item .row-action-primary img.circle { - border-radius: 100%; -} -.list-group .list-group-item .row-picture i, -.list-group .list-group-item .row-action-primary i { - background: rgba(0, 0, 0, 0.25); - border-radius: 100%; - text-align: center; - line-height: 56px; - font-size: 20px; - color: white; -} -.list-group .list-group-item .row-picture label, -.list-group .list-group-item .row-action-primary label { - margin-left: 7px; - margin-right: -7px; - margin-top: 5px; - margin-bottom: -5px; -} -.list-group .list-group-item .row-picture label .checkbox-material, -.list-group .list-group-item .row-action-primary label .checkbox-material { - left: -10px; -} -.list-group .list-group-item .row-content { - display: inline-block; - width: -webkit-calc(100% - 92px); - width: calc(100% - 92px); - min-height: 66px; -} -.list-group .list-group-item .row-content .action-secondary { - position: absolute; - right: 16px; - top: 16px; -} -.list-group .list-group-item .row-content .action-secondary i { - font-size: 20px; - color: rgba(0, 0, 0, 0.25); - cursor: pointer; -} -.list-group .list-group-item .row-content .action-secondary ~ * { - max-width: -webkit-calc(100% - 30px); - max-width: calc(100% - 30px); -} -.list-group .list-group-item .row-content .least-content { - position: absolute; - right: 16px; - top: 0; - color: rgba(0, 0, 0, 0.54); - font-size: 14px; -} -.list-group .list-group-item .list-group-item-heading { - color: rgba(0, 0, 0, 0.77); - font-size: 20px; - line-height: 29px; -} -.list-group .list-group-item.active:hover, -.list-group .list-group-item.active:focus { - background: rgba(0, 0, 0, 0.15); - outline: 10px solid rgba(0, 0, 0, 0.15); -} -.list-group .list-group-item.active .list-group-item-heading, -.list-group .list-group-item.active .list-group-item-text { - color: rgba(0,0,0, 0.87); -} -.list-group .list-group-separator { - clear: both; - overflow: hidden; - margin-top: 10px; - margin-bottom: 10px; -} -.list-group .list-group-separator:before { - content: ""; - width: -webkit-calc(100% - 90px); - width: calc(100% - 90px); - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - float: right; -} -.navbar { - background-color: #009688; - border: 0; - border-radius: 0; -} -.navbar .navbar-brand { - position: relative; - height: 60px; - line-height: 30px; - color: inherit; -} -.navbar .navbar-brand:hover, -.navbar .navbar-brand:focus { - color: inherit; - background-color: transparent; -} -.navbar .navbar-text { - color: inherit; - margin-top: 20px; - margin-bottom: 20px; -} -.navbar .navbar-nav > li > a { - color: inherit; - padding-top: 20px; - padding-bottom: 20px; -} -.navbar .navbar-nav > li > a:hover, -.navbar .navbar-nav > li > a:focus { - color: inherit; - background-color: transparent; -} -.navbar .navbar-nav > .active > a, -.navbar .navbar-nav > .active > a:hover, -.navbar .navbar-nav > .active > a:focus { - color: inherit; - background-color: rgba(255, 255, 255, 0.1); -} -.navbar .navbar-nav > .disabled > a, -.navbar .navbar-nav > .disabled > a:hover, -.navbar .navbar-nav > .disabled > a:focus { - color: inherit; - background-color: transparent; - opacity: 0.9; -} -.navbar .navbar-toggle { - border: 0; -} -.navbar .navbar-toggle:hover, -.navbar .navbar-toggle:focus { - background-color: transparent; -} -.navbar .navbar-toggle .icon-bar { - background-color: inherit; - border: 1px solid; -} -.navbar .navbar-default .navbar-toggle, -.navbar .navbar-inverse .navbar-toggle { - border-color: transparent; -} -.navbar .navbar-collapse, -.navbar .navbar-form { - border-color: rgba(0, 0, 0, 0.1); -} -.navbar .navbar-nav > .open > a, -.navbar .navbar-nav > .open > a:hover, -.navbar .navbar-nav > .open > a:focus { - background-color: transparent; - color: inherit; -} -@media (max-width: 767px) { - .navbar .navbar-nav .navbar-text { - color: inherit; - margin-top: 15px; - margin-bottom: 15px; - } - .navbar .navbar-nav .open .dropdown-menu > .dropdown-header { - border: 0; - color: inherit; - } - .navbar .navbar-nav .open .dropdown-menu .divider { - border-bottom: 1px solid; - opacity: 0.08; - } - .navbar .navbar-nav .open .dropdown-menu > li > a { - color: inherit; - } - .navbar .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar .navbar-nav .open .dropdown-menu > li > a:focus { - color: inherit; - background-color: transparent; - } - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: inherit; - background-color: transparent; - } - .navbar .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: inherit; - background-color: transparent; - } -} -.navbar .navbar-link { - color: inherit; -} -.navbar .navbar-link:hover { - color: inherit; -} -.navbar .btn-link { - color: inherit; -} -.navbar .btn-link:hover, -.navbar .btn-link:focus { - color: inherit; -} -.navbar .btn-link[disabled]:hover, -fieldset[disabled] .navbar .btn-link:hover, -.navbar .btn-link[disabled]:focus, -fieldset[disabled] .navbar .btn-link:focus { - color: inherit; -} -.navbar .navbar-form { - margin-top: 16px; -} -.navbar .navbar-form .form-group { - margin: 0; - padding: 0; -} -.navbar .navbar-form .form-group .material-input:before, -.navbar .navbar-form .form-group.is-focused .material-input:after { - background-color: inherit; -} -.navbar .navbar-form .form-group .form-control, -.navbar .navbar-form .form-control { - border-color: inherit; - color: inherit; - padding: 0; - margin: 0; - height: 28px; - font-size: 14px; - line-height: 1.42857143; -} -.navbar, -.navbar.navbar-default { - background-color: #009688; - color: rgba(255,255,255, 0.84); -} -.navbar .navbar-form .form-group input.form-control::-moz-placeholder, -.navbar.navbar-default .navbar-form .form-group input.form-control::-moz-placeholder, -.navbar .navbar-form input.form-control::-moz-placeholder, -.navbar.navbar-default .navbar-form input.form-control::-moz-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar .navbar-form .form-group input.form-control:-ms-input-placeholder, -.navbar.navbar-default .navbar-form .form-group input.form-control:-ms-input-placeholder, -.navbar .navbar-form input.form-control:-ms-input-placeholder, -.navbar.navbar-default .navbar-form input.form-control:-ms-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar .navbar-form .form-group input.form-control::-webkit-input-placeholder, -.navbar.navbar-default .navbar-form .form-group input.form-control::-webkit-input-placeholder, -.navbar .navbar-form input.form-control::-webkit-input-placeholder, -.navbar.navbar-default .navbar-form input.form-control::-webkit-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar .dropdown-menu, -.navbar.navbar-default .dropdown-menu { - border-radius: 2px; -} -.navbar .dropdown-menu li > a, -.navbar.navbar-default .dropdown-menu li > a { - font-size: 16px; - padding: 13px 16px; -} -.navbar .dropdown-menu li > a:hover, -.navbar.navbar-default .dropdown-menu li > a:hover, -.navbar .dropdown-menu li > a:focus, -.navbar.navbar-default .dropdown-menu li > a:focus { - color: #009688; - background-color: #eeeeee; -} -.navbar .dropdown-menu .active > a, -.navbar.navbar-default .dropdown-menu .active > a { - background-color: #009688; - color: rgba(255,255,255, 0.84); -} -.navbar .dropdown-menu .active > a:hover, -.navbar.navbar-default .dropdown-menu .active > a:hover, -.navbar .dropdown-menu .active > a:focus, -.navbar.navbar-default .dropdown-menu .active > a:focus { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-inverse { - background-color: #3f51b5; - color: #ffffff; -} -.navbar.navbar-inverse .navbar-form .form-group input.form-control::-moz-placeholder, -.navbar.navbar-inverse .navbar-form input.form-control::-moz-placeholder { - color: #ffffff; -} -.navbar.navbar-inverse .navbar-form .form-group input.form-control:-ms-input-placeholder, -.navbar.navbar-inverse .navbar-form input.form-control:-ms-input-placeholder { - color: #ffffff; -} -.navbar.navbar-inverse .navbar-form .form-group input.form-control::-webkit-input-placeholder, -.navbar.navbar-inverse .navbar-form input.form-control::-webkit-input-placeholder { - color: #ffffff; -} -.navbar.navbar-inverse .dropdown-menu { - border-radius: 2px; -} -.navbar.navbar-inverse .dropdown-menu li > a { - font-size: 16px; - padding: 13px 16px; -} -.navbar.navbar-inverse .dropdown-menu li > a:hover, -.navbar.navbar-inverse .dropdown-menu li > a:focus { - color: #3f51b5; - background-color: #eeeeee; -} -.navbar.navbar-inverse .dropdown-menu .active > a { - background-color: #3f51b5; - color: #ffffff; -} -.navbar.navbar-inverse .dropdown-menu .active > a:hover, -.navbar.navbar-inverse .dropdown-menu .active > a:focus { - color: #ffffff; -} -.navbar.navbar-primary { - background-color: #009688; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-primary .navbar-form .form-group input.form-control::-moz-placeholder, -.navbar.navbar-primary .navbar-form input.form-control::-moz-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-primary .navbar-form .form-group input.form-control:-ms-input-placeholder, -.navbar.navbar-primary .navbar-form input.form-control:-ms-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-primary .navbar-form .form-group input.form-control::-webkit-input-placeholder, -.navbar.navbar-primary .navbar-form input.form-control::-webkit-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-primary .dropdown-menu { - border-radius: 2px; -} -.navbar.navbar-primary .dropdown-menu li > a { - font-size: 16px; - padding: 13px 16px; -} -.navbar.navbar-primary .dropdown-menu li > a:hover, -.navbar.navbar-primary .dropdown-menu li > a:focus { - color: #009688; - background-color: #eeeeee; -} -.navbar.navbar-primary .dropdown-menu .active > a { - background-color: #009688; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-primary .dropdown-menu .active > a:hover, -.navbar.navbar-primary .dropdown-menu .active > a:focus { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-success { - background-color: #4caf50; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-success .navbar-form .form-group input.form-control::-moz-placeholder, -.navbar.navbar-success .navbar-form input.form-control::-moz-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-success .navbar-form .form-group input.form-control:-ms-input-placeholder, -.navbar.navbar-success .navbar-form input.form-control:-ms-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-success .navbar-form .form-group input.form-control::-webkit-input-placeholder, -.navbar.navbar-success .navbar-form input.form-control::-webkit-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-success .dropdown-menu { - border-radius: 2px; -} -.navbar.navbar-success .dropdown-menu li > a { - font-size: 16px; - padding: 13px 16px; -} -.navbar.navbar-success .dropdown-menu li > a:hover, -.navbar.navbar-success .dropdown-menu li > a:focus { - color: #4caf50; - background-color: #eeeeee; -} -.navbar.navbar-success .dropdown-menu .active > a { - background-color: #4caf50; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-success .dropdown-menu .active > a:hover, -.navbar.navbar-success .dropdown-menu .active > a:focus { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-info { - background-color: #03a9f4; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-info .navbar-form .form-group input.form-control::-moz-placeholder, -.navbar.navbar-info .navbar-form input.form-control::-moz-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-info .navbar-form .form-group input.form-control:-ms-input-placeholder, -.navbar.navbar-info .navbar-form input.form-control:-ms-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-info .navbar-form .form-group input.form-control::-webkit-input-placeholder, -.navbar.navbar-info .navbar-form input.form-control::-webkit-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-info .dropdown-menu { - border-radius: 2px; -} -.navbar.navbar-info .dropdown-menu li > a { - font-size: 16px; - padding: 13px 16px; -} -.navbar.navbar-info .dropdown-menu li > a:hover, -.navbar.navbar-info .dropdown-menu li > a:focus { - color: #03a9f4; - background-color: #eeeeee; -} -.navbar.navbar-info .dropdown-menu .active > a { - background-color: #03a9f4; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-info .dropdown-menu .active > a:hover, -.navbar.navbar-info .dropdown-menu .active > a:focus { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-warning { - background-color: #ff5722; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-warning .navbar-form .form-group input.form-control::-moz-placeholder, -.navbar.navbar-warning .navbar-form input.form-control::-moz-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-warning .navbar-form .form-group input.form-control:-ms-input-placeholder, -.navbar.navbar-warning .navbar-form input.form-control:-ms-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-warning .navbar-form .form-group input.form-control::-webkit-input-placeholder, -.navbar.navbar-warning .navbar-form input.form-control::-webkit-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-warning .dropdown-menu { - border-radius: 2px; -} -.navbar.navbar-warning .dropdown-menu li > a { - font-size: 16px; - padding: 13px 16px; -} -.navbar.navbar-warning .dropdown-menu li > a:hover, -.navbar.navbar-warning .dropdown-menu li > a:focus { - color: #ff5722; - background-color: #eeeeee; -} -.navbar.navbar-warning .dropdown-menu .active > a { - background-color: #ff5722; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-warning .dropdown-menu .active > a:hover, -.navbar.navbar-warning .dropdown-menu .active > a:focus { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-danger { - background-color: #f44336; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-danger .navbar-form .form-group input.form-control::-moz-placeholder, -.navbar.navbar-danger .navbar-form input.form-control::-moz-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-danger .navbar-form .form-group input.form-control:-ms-input-placeholder, -.navbar.navbar-danger .navbar-form input.form-control:-ms-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-danger .navbar-form .form-group input.form-control::-webkit-input-placeholder, -.navbar.navbar-danger .navbar-form input.form-control::-webkit-input-placeholder { - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-danger .dropdown-menu { - border-radius: 2px; -} -.navbar.navbar-danger .dropdown-menu li > a { - font-size: 16px; - padding: 13px 16px; -} -.navbar.navbar-danger .dropdown-menu li > a:hover, -.navbar.navbar-danger .dropdown-menu li > a:focus { - color: #f44336; - background-color: #eeeeee; -} -.navbar.navbar-danger .dropdown-menu .active > a { - background-color: #f44336; - color: rgba(255,255,255, 0.84); -} -.navbar.navbar-danger .dropdown-menu .active > a:hover, -.navbar.navbar-danger .dropdown-menu .active > a:focus { - color: rgba(255,255,255, 0.84); -} -.navbar-inverse { - background-color: #3f51b5; -} -@media (max-width: 1199px) { - .navbar .navbar-brand { - height: 50px; - padding: 10px 15px; - } - .navbar .navbar-form { - margin-top: 10px; - } - .navbar .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.dropdown-menu { - border: 0; - -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); -} -.dropdown-menu .divider { - background-color: rgba(0, 0, 0, 0.12); -} -.dropdown-menu li { - overflow: hidden; - position: relative; -} -.dropdown-menu li a:hover { - background-color: transparent; - color: #009688; -} -.alert { - border: 0; - border-radius: 0; -} -.alert, -.alert.alert-default { - background-color: rgba(255,255,255, 0.84); - color: rgba(255,255,255, 0.84); -} -.alert a, -.alert.alert-default a, -.alert .alert-link, -.alert.alert-default .alert-link { - color: rgba(255,255,255, 0.84); -} -.alert.alert-inverse { - background-color: #3f51b5; - color: #ffffff; -} -.alert.alert-inverse a, -.alert.alert-inverse .alert-link { - color: #ffffff; -} -.alert.alert-primary { - background-color: #009688; - color: rgba(255,255,255, 0.84); -} -.alert.alert-primary a, -.alert.alert-primary .alert-link { - color: rgba(255,255,255, 0.84); -} -.alert.alert-success { - background-color: #4caf50; - color: rgba(255,255,255, 0.84); -} -.alert.alert-success a, -.alert.alert-success .alert-link { - color: rgba(255,255,255, 0.84); -} -.alert.alert-info { - background-color: #03a9f4; - color: rgba(255,255,255, 0.84); -} -.alert.alert-info a, -.alert.alert-info .alert-link { - color: rgba(255,255,255, 0.84); -} -.alert.alert-warning { - background-color: #ff5722; - color: rgba(255,255,255, 0.84); -} -.alert.alert-warning a, -.alert.alert-warning .alert-link { - color: rgba(255,255,255, 0.84); -} -.alert.alert-danger { - background-color: #f44336; - color: rgba(255,255,255, 0.84); -} -.alert.alert-danger a, -.alert.alert-danger .alert-link { - color: rgba(255,255,255, 0.84); -} -.alert-info, -.alert-danger, -.alert-warning, -.alert-success { - color: rgba(255,255,255, 0.84); -} -.alert-default a, -.alert-default .alert-link { - color: rgba(0,0,0, 0.87); -} -.progress { - height: 4px; - border-radius: 0; - -webkit-box-shadow: none; - box-shadow: none; - background: #c8c8c8; -} -.progress .progress-bar { - -webkit-box-shadow: none; - box-shadow: none; -} -.progress .progress-bar, -.progress .progress-bar.progress-bar-default { - background-color: #009688; -} -.progress .progress-bar.progress-bar-inverse { - background-color: #3f51b5; -} -.progress .progress-bar.progress-bar-primary { - background-color: #009688; -} -.progress .progress-bar.progress-bar-success { - background-color: #4caf50; -} -.progress .progress-bar.progress-bar-info { - background-color: #03a9f4; -} -.progress .progress-bar.progress-bar-warning { - background-color: #ff5722; -} -.progress .progress-bar.progress-bar-danger { - background-color: #f44336; -} -.text-warning { - color: #ff5722; -} -.text-primary { - color: #009688; -} -.text-danger { - color: #f44336; -} -.text-success { - color: #4caf50; -} -.text-info { - color: #03a9f4; -} -.nav-tabs { - background: #009688; -} -.nav-tabs > li > a { - color: #FFFFFF; - border: 0; - margin: 0; -} -.nav-tabs > li > a:hover { - background-color: transparent; - border: 0; -} -.nav-tabs > li > a, -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - background-color: transparent !important; - border: 0 !important; - color: #FFFFFF !important; - font-weight: 500; -} -.nav-tabs > li.disabled > a, -.nav-tabs > li.disabled > a:hover { - color: rgba(255, 255, 255, 0.5); -} -.popover, -.tooltip-inner { - color: #ececec; - line-height: 1em; - background: rgba(101, 101, 101, 0.9); - border: none; - border-radius: 2px; - -webkit-box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); - box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); -} -.tooltip, -.tooltip.in { - opacity: 1; -} -.popover .arrow, -.tooltip .arrow, -.popover .tooltip-arrow, -.tooltip .tooltip-arrow { - display: none; -} -.card { - /***** Make height equal to width (http://stackoverflow.com/a/6615994) ****/ - display: inline-block; - position: relative; - width: 100%; - /**************************************************************************/ - border-radius: 2px; - color: rgba(0,0,0, 0.87); - background: #fff; - -webkit-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); - box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); -} -.card .card-height-indicator { - margin-top: 100%; -} -.card .card-content { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} -.card .card-image { - height: 60%; - position: relative; - overflow: hidden; -} -.card .card-image img { - width: 100%; - height: 100%; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - pointer-events: none; -} -.card .card-image .card-image-headline { - position: absolute; - bottom: 16px; - left: 18px; - color: #fff; - font-size: 2em; -} -.card .card-body { - height: 30%; - padding: 18px; -} -.card .card-footer { - height: 10%; - padding: 18px; -} -.card .card-footer button, -.card .card-footer a { - margin: 0 !important; - position: relative; - bottom: 25px; - width: auto; -} -.card .card-footer button:first-child, -.card .card-footer a:first-child { - left: -15px; -} -.modal-content { - -webkit-box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); - box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); - border-radius: 2px; - border: none; -} -.modal-content .modal-header { - border-bottom: none; - padding-top: 24px; - padding-right: 24px; - padding-bottom: 0; - padding-left: 24px; -} -.modal-content .modal-body { - padding-top: 24px; - padding-right: 24px; - padding-bottom: 16px; - padding-left: 24px; -} -.modal-content .modal-footer { - border-top: none; - padding: 7px; -} -.modal-content .modal-footer button { - margin: 0; - padding-left: 16px; - padding-right: 16px; - width: auto; -} -.modal-content .modal-footer button.pull-left { - padding-left: 5px; - padding-right: 5px; - position: relative; - left: -5px; -} -.modal-content .modal-footer button + button { - margin-bottom: 16px; -} -.modal-content .modal-body + .modal-footer { - padding-top: 0; -} -.modal-backdrop { - background: rgba(0, 0, 0, 0.3); -} -.panel { - border-radius: 2px; - border: 0; - -webkit-box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); - box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); -} -.panel > .panel-heading, -.panel.panel-default > .panel-heading { - background-color: #eeeeee; -} -.panel.panel-inverse > .panel-heading { - background-color: #3f51b5; -} -.panel.panel-primary > .panel-heading { - background-color: #009688; -} -.panel.panel-success > .panel-heading { - background-color: #4caf50; -} -.panel.panel-info > .panel-heading { - background-color: #03a9f4; -} -.panel.panel-warning > .panel-heading { - background-color: #ff5722; -} -.panel.panel-danger > .panel-heading { - background-color: #f44336; -} -[class*="panel-"] > .panel-heading { - color: rgba(255,255,255, 0.84); - border: 0; -} -.panel-default > .panel-heading, -.panel:not([class*="panel-"]) > .panel-heading { - color: rgba(0,0,0, 0.87); -} -.panel-footer { - background-color: #eeeeee; -} -hr.on-dark { - color: #1a1a1a; -} -hr.on-light { - color: #ffffff; -} -@media (-webkit-min-device-pixel-ratio: 0.75), (min--moz-device-pixel-ratio: 0.75), (-o-device-pixel-ratio: 3/4), (min-device-pixel-ratio: 0.75), (-o-min-device-pixel-ratio: 3/4), (min-resolution: 0.75dppx), (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 5/4), (min-resolution: 120dpi) { - hr { - height: 0.75px; - } -} -@media (-webkit-min-device-pixel-ratio: 1), (min--moz-device-pixel-ratio: 1), (-o-device-pixel-ratio: 1), (min-device-pixel-ratio: 1), (-o-min-device-pixel-ratio: 1/1), (min-resolution: 1dppx), (-webkit-min-device-pixel-ratio: 1.6666666666666667), (-o-min-device-pixel-ratio: 5/3), (min-resolution: 160dpi) { - hr { - height: 1px; - } -} -@media (-webkit-min-device-pixel-ratio: 1.33), (min--moz-device-pixel-ratio: 1.33), (-o-device-pixel-ratio: 133/100), (min-device-pixel-ratio: 1.33), (-o-min-device-pixel-ratio: 133/100), (min-resolution: 1.33dppx), (-webkit-min-device-pixel-ratio: 2.21875), (-o-min-device-pixel-ratio: 71/32), (min-resolution: 213dpi) { - hr { - height: 1.333px; - } -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-device-pixel-ratio: 3/2), (min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx), (-webkit-min-device-pixel-ratio: 2.5), (-o-min-device-pixel-ratio: 5/2), (min-resolution: 240dpi) { - hr { - height: 1.5px; - } -} -@media (-webkit-min-device-pixel-ratio: 2), (min--moz-device-pixel-ratio: 2), (-o-device-pixel-ratio: 2/1), (min-device-pixel-ratio: 2), (-o-min-device-pixel-ratio: 2/1), (min-resolution: 2dppx), (-webkit-min-device-pixel-ratio: 3.9583333333333335), (-o-min-device-pixel-ratio: 95/24), (min-resolution: 380dpi) { - hr { - height: 2px; - } -} -@media (-webkit-min-device-pixel-ratio: 3), (min--moz-device-pixel-ratio: 3), (-o-device-pixel-ratio: 3/1), (min-device-pixel-ratio: 3), (-o-min-device-pixel-ratio: 3/1), (min-resolution: 3dppx), (-webkit-min-device-pixel-ratio: 5), (-o-min-device-pixel-ratio: 5/1), (min-resolution: 480dpi) { - hr { - height: 3px; - } -} -@media (-webkit-min-device-pixel-ratio: 4), (min--moz-device-pixel-ratio: 4), (-o-device-pixel-ratio: 4/1), (min-device-pixel-ratio: 3), (-o-min-device-pixel-ratio: 4/1), (min-resolution: 4dppx), (-webkit-min-device-pixel-ratio: 6.666666666666667), (-o-min-device-pixel-ratio: 20/3), (min-resolution: 640dpi) { - hr { - height: 4px; - } -} -* { - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - -webkit-tap-highlight-color: transparent; -} -*:focus { - outline: 0; -} -.snackbar { - background-color: #323232; - color: rgba(255,255,255, 0.84); - font-size: 14px; - border-radius: 2px; - -webkit-box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); - box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); - height: 0; - -webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, padding 0s linear 0.2s, height 0s linear 0.2s; - -o-transition: -o-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, padding 0s linear 0.2s, height 0s linear 0.2s; - transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, padding 0s linear 0.2s, height 0s linear 0.2s; - -webkit-transform: translateY(200%); - -ms-transform: translateY(200%); - -o-transform: translateY(200%); - transform: translateY(200%); -} -.snackbar.snackbar-opened { - padding: 14px 15px; - margin-bottom: 20px; - height: auto; - -webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, height 0s linear 0.2s; - -o-transition: -o-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, height 0s linear 0.2s; - transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, height 0s linear 0.2s; - -webkit-transform: none; - -ms-transform: none; - -o-transform: none; - transform: none; -} -.snackbar.toast { - border-radius: 200px; -} -.noUi-target, -.noUi-target * { - -webkit-touch-callout: none; - -ms-touch-action: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.noUi-base { - width: 100%; - height: 100%; - position: relative; -} -.noUi-origin { - position: absolute; - right: 0; - top: 0; - left: 0; - bottom: 0; -} -.noUi-handle { - position: relative; - z-index: 1; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.noUi-stacking .noUi-handle { - z-index: 10; -} -.noUi-state-tap .noUi-origin { - -webkit-transition: left 0.3s, top 0.3s; - -o-transition: left 0.3s, top 0.3s; - transition: left 0.3s, top 0.3s; -} -.noUi-state-drag * { - cursor: inherit !important; -} -.noUi-horizontal { - height: 10px; -} -.noUi-handle { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 12px; - height: 12px; - left: -10px; - top: -5px; - cursor: ew-resize; - border-radius: 100%; - -webkit-transition: all 0.2s ease-out; - -o-transition: all 0.2s ease-out; - transition: all 0.2s ease-out; - border: 1px solid; -} -.noUi-vertical .noUi-handle { - margin-left: 5px; - cursor: ns-resize; -} -.noUi-horizontal.noUi-extended { - padding: 0 15px; -} -.noUi-horizontal.noUi-extended .noUi-origin { - right: -15px; -} -.noUi-background { - height: 2px; - margin: 20px 0; -} -.noUi-origin { - margin: 0; - border-radius: 0; - height: 2px; - background: #c8c8c8; -} -.noUi-origin[style^="left: 0"] .noUi-handle { - background-color: #fff; - border: 2px solid #c8c8c8; -} -.noUi-origin[style^="left: 0"] .noUi-handle.noUi-active { - border-width: 1px; -} -.noUi-target { - border-radius: 2px; -} -.noUi-horizontal { - height: 2px; - margin: 15px 0; -} -.noUi-vertical { - height: 100%; - width: 2px; - margin: 0 15px; - display: inline-block; -} -.noUi-handle.noUi-active { - -webkit-transform: scale3d(2.5, 2.5, 1); - transform: scale3d(2.5, 2.5, 1); -} -[disabled].noUi-slider { - opacity: 0.5; -} -[disabled] .noUi-handle { - cursor: not-allowed; -} -.slider { - background: #c8c8c8; -} -.slider.noUi-connect, -.slider.slider-default.noUi-connect { - background-color: #009688; -} -.slider.slider-inverse.noUi-connect { - background-color: #3f51b5; -} -.slider.slider-primary.noUi-connect { - background-color: #009688; -} -.slider.slider-success.noUi-connect { - background-color: #4caf50; -} -.slider.slider-info.noUi-connect { - background-color: #03a9f4; -} -.slider.slider-warning.noUi-connect { - background-color: #ff5722; -} -.slider.slider-danger.noUi-connect { - background-color: #f44336; -} -.slider .noUi-connect, -.slider.slider-default .noUi-connect { - background-color: #009688; -} -.slider.slider-inverse .noUi-connect { - background-color: #3f51b5; -} -.slider.slider-primary .noUi-connect { - background-color: #009688; -} -.slider.slider-success .noUi-connect { - background-color: #4caf50; -} -.slider.slider-info .noUi-connect { - background-color: #03a9f4; -} -.slider.slider-warning .noUi-connect { - background-color: #ff5722; -} -.slider.slider-danger .noUi-connect { - background-color: #f44336; -} -.slider .noUi-handle, -.slider.slider-default .noUi-handle { - background-color: #009688; -} -.slider.slider-inverse .noUi-handle { - background-color: #3f51b5; -} -.slider.slider-primary .noUi-handle { - background-color: #009688; -} -.slider.slider-success .noUi-handle { - background-color: #4caf50; -} -.slider.slider-info .noUi-handle { - background-color: #03a9f4; -} -.slider.slider-warning .noUi-handle { - background-color: #ff5722; -} -.slider.slider-danger .noUi-handle { - background-color: #f44336; -} -.slider .noUi-handle, -.slider.slider-default .noUi-handle { - border-color: #009688; -} -.slider.slider-inverse .noUi-handle { - border-color: #3f51b5; -} -.slider.slider-primary .noUi-handle { - border-color: #009688; -} -.slider.slider-success .noUi-handle { - border-color: #4caf50; -} -.slider.slider-info .noUi-handle { - border-color: #03a9f4; -} -.slider.slider-warning .noUi-handle { - border-color: #ff5722; -} -.slider.slider-danger .noUi-handle { - border-color: #f44336; -} -.selectize-control.single, -.selectize-control.multi { - padding: 0; -} -.selectize-control.single .selectize-input, -.selectize-control.multi .selectize-input, -.selectize-control.single .selectize-input.input-active, -.selectize-control.multi .selectize-input.input-active { - cursor: text; - background: transparent; - -webkit-box-shadow: none; - box-shadow: none; - border: 0; - padding: 0; - height: 100%; - font-size: 14px; - line-height: 30px; -} -.selectize-control.single .selectize-input .has-items, -.selectize-control.multi .selectize-input .has-items, -.selectize-control.single .selectize-input.input-active .has-items, -.selectize-control.multi .selectize-input.input-active .has-items { - padding: 0; -} -.selectize-control.single .selectize-input:after, -.selectize-control.multi .selectize-input:after, -.selectize-control.single .selectize-input.input-active:after, -.selectize-control.multi .selectize-input.input-active:after { - right: 5px; - position: absolute; - font-size: 25px; - content: "\e5c5"; - font-family: 'Material Icons'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.selectize-control.single .selectize-input input, -.selectize-control.multi .selectize-input input, -.selectize-control.single .selectize-input.input-active input, -.selectize-control.multi .selectize-input.input-active input { - font-size: 14px; - outline: 0; - border: 0; - background: transparent; -} -.selectize-control.single .selectize-input.label-floating-fix input, -.selectize-control.multi .selectize-input.label-floating-fix input, -.selectize-control.single .selectize-input.input-active.label-floating-fix input, -.selectize-control.multi .selectize-input.input-active.label-floating-fix input { - opacity: 0; -} -.selectize-control.single .selectize-input > div, -.selectize-control.multi .selectize-input > div, -.selectize-control.single .selectize-input.input-active > div, -.selectize-control.multi .selectize-input.input-active > div, -.selectize-control.single .selectize-input > .item, -.selectize-control.multi .selectize-input > .item, -.selectize-control.single .selectize-input.input-active > .item, -.selectize-control.multi .selectize-input.input-active > .item { - display: inline-block; - margin: 0 8px 3px 0; - padding: 0; - background: transparent; - border: 0; -} -.selectize-control.single .selectize-input > div:after, -.selectize-control.multi .selectize-input > div:after, -.selectize-control.single .selectize-input.input-active > div:after, -.selectize-control.multi .selectize-input.input-active > div:after, -.selectize-control.single .selectize-input > .item:after, -.selectize-control.multi .selectize-input > .item:after, -.selectize-control.single .selectize-input.input-active > .item:after, -.selectize-control.multi .selectize-input.input-active > .item:after { - content: ","; -} -.selectize-control.single .selectize-input > div:last-of-type:after, -.selectize-control.multi .selectize-input > div:last-of-type:after, -.selectize-control.single .selectize-input.input-active > div:last-of-type:after, -.selectize-control.multi .selectize-input.input-active > div:last-of-type:after, -.selectize-control.single .selectize-input > .item:last-of-type:after, -.selectize-control.multi .selectize-input > .item:last-of-type:after, -.selectize-control.single .selectize-input.input-active > .item:last-of-type:after, -.selectize-control.multi .selectize-input.input-active > .item:last-of-type:after { - content: ""; -} -.selectize-control.single .selectize-input > div.active, -.selectize-control.multi .selectize-input > div.active, -.selectize-control.single .selectize-input.input-active > div.active, -.selectize-control.multi .selectize-input.input-active > div.active, -.selectize-control.single .selectize-input > .item.active, -.selectize-control.multi .selectize-input > .item.active, -.selectize-control.single .selectize-input.input-active > .item.active, -.selectize-control.multi .selectize-input.input-active > .item.active { - font-weight: bold; - background: transparent; - border: 0; -} -.selectize-control.single .selectize-dropdown, -.selectize-control.multi .selectize-dropdown { - position: absolute; - z-index: 1000; - border: 0; - width: 100% !important; - left: 0 !important; - height: auto; - background-color: #FFF; - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); - border-radius: 2px; - padding: 0; - margin-top: 3px; -} -.selectize-control.single .selectize-dropdown .active, -.selectize-control.multi .selectize-dropdown .active { - background-color: inherit; -} -.selectize-control.single .selectize-dropdown .highlight, -.selectize-control.multi .selectize-dropdown .highlight { - background-color: #d5d8ff; -} -.selectize-control.single .selectize-dropdown .selected, -.selectize-control.multi .selectize-dropdown .selected, -.selectize-control.single .selectize-dropdown .selected.active, -.selectize-control.multi .selectize-dropdown .selected.active { - background-color: #EEEEEE; -} -.selectize-control.single .selectize-dropdown [data-selectable], -.selectize-control.multi .selectize-dropdown [data-selectable], -.selectize-control.single .selectize-dropdown .optgroup-header, -.selectize-control.multi .selectize-dropdown .optgroup-header { - padding: 10px 20px; - cursor: pointer; -} -.selectize-control.single .dropdown-active ~ .selectize-dropdown, -.selectize-control.multi .dropdown-active ~ .selectize-dropdown { - display: block; -} -.dropdownjs::after { - right: 5px; - top: 3px; - font-size: 25px; - position: absolute; - font-family: 'Material Icons'; - font-style: normal; - font-weight: 400; - content: "\e5c5"; - pointer-events: none; - color: #757575; -} -/*# sourceMappingURL=bootstrap-material-design.css.map */ \ No newline at end of file diff --git a/dist/css/bootstrap-material-design.css.map b/dist/css/bootstrap-material-design.css.map deleted file mode 100644 index a93d0d21..00000000 --- a/dist/css/bootstrap-material-design.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap-material-design.css","/less/_core.less","/less/_form.less","/less/_welljumbo.less","/less/_shadows.less","/less/_mixins.less","/less/_buttons.less","/less/_checkboxes.less","/less/_togglebutton.less","/less/_radios.less","/less/_inputs-size.less","/less/_inputs.less","/less/_lists.less","/less/_navbar.less","/less/_alerts.less","/less/_progress.less","/less/_typography.less","/less/_tabs.less","/less/_popups.less","/less/_cards.less","/less/_dialogs.less","/less/_panels.less","/less/_dividers.less","/less/plugins/_plugin-snackbarjs.less","/less/plugins/_plugin-nouislider.less","/less/plugins/_plugin-selectize.less","/less/plugins/_plugin-dropdownjs.less"],"names":[],"mappings":"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E,+BAAA;Cb63DT;AK1hEC;EQsIE,0BAAA;EACA,eAAA;Cbu5DH;AKllEC;;EQgMM,eAAA;Cbs5DP;AKrlEC;;EQ+LM,eAAA;Cb05DP;AKxlEC;;EQ8LM,eAAA;Cb85DP;AK1iEC;EQgJI,mBAAA;Cb65DL;AK7iEC;EQkJM,gBAAA;EACA,mBAAA;Cb85DP;Aa75DO;;EAEE,eAAA;EACA,0BAAA;Cb+5DT;AKtjEC;EQ+JM,0BAAA;EACA,eAAA;Cb05DP;Aa/5DO;;EAEE,eAAA;Cbi6DT;AKxjEC;EQgIE,0BAAA;EACA,+BAAA;Cb27DH;AKtnEC;;EQgMM,+BAAA;Cb07DP;AKznEC;;EQ+LM,+BAAA;Cb87DP;AK5nEC;;EQ8LM,+BAAA;Cbk8DP;AKxkEC;EQ0II,mBAAA;Cbi8DL;AK3kEC;EQ4IM,gBAAA;EACA,mBAAA;Cbk8DP;Aaj8DO;;EAEE,eAAA;EACA,0BAAA;Cbm8DT;AKplEC;EQyJM,0BAAA;EACA,+BAAA;Cb87DP;Aan8DO;;EAEE,+BAAA;Cbq8DT;AKvlEC;EQ2HE,0BAAA;EACA,+BAAA;Cb+9DH;AK1pEC;;EQgMM,+BAAA;Cb89DP;AK7pEC;;EQ+LM,+BAAA;Cbk+DP;AKhqEC;;EQ8LM,+BAAA;Cbs+DP;AKvmEC;EQqII,mBAAA;Cbq+DL;AK1mEC;EQuIM,gBAAA;EACA,mBAAA;Cbs+DP;Aar+DO;;EAEE,eAAA;EACA,0BAAA;Cbu+DT;AKnnEC;EQoJM,0BAAA;EACA,+BAAA;Cbk+DP;Aav+DO;;EAEE,+BAAA;Cby+DT;AKtnEC;EQsHE,0BAAA;EACA,+BAAA;CbmgEH;AK9rEC;;EQgMM,+BAAA;CbkgEP;AKjsEC;;EQ+LM,+BAAA;CbsgEP;AKpsEC;;EQ8LM,+BAAA;Cb0gEP;AKtoEC;EQgII,mBAAA;CbygEL;AKzoEC;EQkIM,gBAAA;EACA,mBAAA;Cb0gEP;AazgEO;;EAEE,eAAA;EACA,0BAAA;Cb2gET;AKlpEC;EQ+IM,0BAAA;EACA,+BAAA;CbsgEP;Aa3gEO;;EAEE,+BAAA;Cb6gET;AKrpEC;EQiHE,0BAAA;EACA,+BAAA;CbuiEH;AKluEC;;EQgMM,+BAAA;CbsiEP;AKruEC;;EQ+LM,+BAAA;Cb0iEP;AKxuEC;;EQ8LM,+BAAA;Cb8iEP;AKrqEC;EQ2HI,mBAAA;Cb6iEL;AKxqEC;EQ6HM,gBAAA;EACA,mBAAA;Cb8iEP;Aa7iEO;;EAEE,eAAA;EACA,0BAAA;Cb+iET;AKjrEC;EQ0IM,0BAAA;EACA,+BAAA;Cb0iEP;Aa/iEO;;EAEE,+BAAA;CbijET;AKprEC;EQ4GE,0BAAA;EACA,+BAAA;Cb2kEH;AKtwEC;;EQgMM,+BAAA;Cb0kEP;AKzwEC;;EQ+LM,+BAAA;Cb8kEP;AK5wEC;;EQ8LM,+BAAA;CbklEP;AKpsEC;EQsHI,mBAAA;CbilEL;AKvsEC;EQwHM,gBAAA;EACA,mBAAA;CbklEP;AajlEO;;EAEE,eAAA;EACA,0BAAA;CbmlET;AKhtEC;EQqIM,0BAAA;EACA,+BAAA;Cb8kEP;AanlEO;;EAEE,+BAAA;CbqlET;Aa7kEC;EACE,0BAAA;Cb+kEH;Aa7jED;EACA;IAbM,aAAA;IACA,mBAAA;Gb6kEH;EajkEH;IATM,iBAAA;Gb6kEH;EapkEH;IALM,kBAAA;IACA,qBAAA;Gb4kEH;CACF;ACnwED;EACE,UAAA;EACA,oDAAA;UAAA,4CAAA;CDqwED;ACvwED;EAII,sCAAA;CDswEH;AC1wED;EAOI,iBAAA;EACA,mBAAA;CDswEH;AC9wED;EAUM,8BAAA;EACA,eAAA;CDuwEL;Acv0ED;EACI,UAAA;EACA,iBAAA;Cdy0EH;AK3xEC;;ES1CM,0CAAA;EACA,+BAAA;Cdy0EP;AKhyEC;;;;EStCU,+BAAA;Cd40EX;AKhyEC;EShDM,0BAAA;EACA,eAAA;Cdm1EP;AKpyEC;;ES5CU,eAAA;Cdo1EX;AKlyEC;EStDM,0BAAA;EACA,+BAAA;Cd21EP;AKtyEC;;ESlDU,+BAAA;Cd41EX;AKryEC;ES3DM,0BAAA;EACA,+BAAA;Cdm2EP;AKzyEC;;ESvDU,+BAAA;Cdo2EX;AKxyEC;EShEM,0BAAA;EACA,+BAAA;Cd22EP;AK5yEC;;ES5DU,+BAAA;Cd42EX;AK3yEC;ESrEM,0BAAA;EACA,+BAAA;Cdm3EP;AK/yEC;;ESjEU,+BAAA;Cdo3EX;AK9yEC;ES1EM,0BAAA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","file":"bootstrap-material-design.css"} \ No newline at end of file diff --git a/dist/css/bootstrap-material-design.min.css b/dist/css/bootstrap-material-design.min.css deleted file mode 100644 index 1e72e8f7..00000000 --- a/dist/css/bootstrap-material-design.min.css +++ /dev/null @@ -1,2 +0,0 @@ -body{background-color:#EEE}body.inverse{background:#333}body.inverse,body.inverse .form-control{color:rgba(255,255,255,.84)}body.inverse .card,body.inverse .card .form-control,body.inverse .modal,body.inverse .modal .form-control,body.inverse .panel-default,body.inverse .panel-default .form-control{background-color:initial;color:initial}.h1,.h2,.h3,.h4,body,h1,h2,h3,h4,h5,h6{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:300}h5,h6{font-weight:400}a,a:focus,a:hover{color:#009688}a .material-icons,a:focus .material-icons,a:hover .material-icons{vertical-align:middle}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:0}.form-horizontal .radio{margin-bottom:10px}.form-horizontal label{text-align:right}.form-horizontal label.control-label{margin:0}body .container .well.well-sm,body .container-fluid .well.well-sm{padding:10px}body .container .well.well-lg,body .container-fluid .well.well-lg{padding:26px}body .container .jumbotron,body .container .well,body .container-fluid .jumbotron,body .container-fluid .well{background-color:#fff;padding:19px;margin-bottom:20px;-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);border-radius:2px;border:0}body .container .jumbotron p,body .container .well p,body .container-fluid .jumbotron p,body .container-fluid .well p{font-weight:300}body .container .jumbotron,body .container .jumbotron-default,body .container .well,body .container .well-default,body .container-fluid .jumbotron,body .container-fluid .jumbotron-default,body .container-fluid .well,body .container-fluid .well-default{background-color:#fff}body .container .jumbotron-inverse,body .container .well-inverse,body .container-fluid .jumbotron-inverse,body .container-fluid .well-inverse{background-color:#3f51b5}body .container .jumbotron-primary,body .container .well-primary,body .container-fluid .jumbotron-primary,body .container-fluid .well-primary{background-color:#009688}body .container .jumbotron-success,body .container .well-success,body .container-fluid .jumbotron-success,body .container-fluid .well-success{background-color:#4caf50}body .container .jumbotron-info,body .container .well-info,body .container-fluid .jumbotron-info,body .container-fluid .well-info{background-color:#03a9f4}body .container .jumbotron-warning,body .container .well-warning,body .container-fluid .jumbotron-warning,body .container-fluid .well-warning{background-color:#ff5722}body .container .jumbotron-danger,body .container .well-danger,body .container-fluid .jumbotron-danger,body .container-fluid .well-danger{background-color:#f44336}.btn,.input-group-btn .btn{border:none;border-radius:2px;position:relative;padding:8px 30px;margin:10px 1px;font-size:14px;font-weight:500;text-transform:uppercase;letter-spacing:0;will-change:box-shadow,transform;-webkit-transition:-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);-o-transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);outline:0;cursor:pointer;text-decoration:none;background:0 0}.btn::-moz-focus-inner,.input-group-btn .btn::-moz-focus-inner{border:0}.btn:not(.btn-raised),.input-group-btn .btn:not(.btn-raised){-webkit-box-shadow:none;box-shadow:none}.btn:not(.btn-raised),.btn:not(.btn-raised).btn-default,.input-group-btn .btn:not(.btn-raised),.input-group-btn .btn:not(.btn-raised).btn-default{color:rgba(0,0,0,.87)}.btn:not(.btn-raised).btn-inverse,.input-group-btn .btn:not(.btn-raised).btn-inverse{color:#3f51b5}.btn:not(.btn-raised).btn-primary,.input-group-btn .btn:not(.btn-raised).btn-primary{color:#009688}.btn:not(.btn-raised).btn-success,.input-group-btn .btn:not(.btn-raised).btn-success{color:#4caf50}.btn:not(.btn-raised).btn-info,.input-group-btn .btn:not(.btn-raised).btn-info{color:#03a9f4}.btn:not(.btn-raised).btn-warning,.input-group-btn .btn:not(.btn-raised).btn-warning{color:#ff5722}.btn:not(.btn-raised).btn-danger,.input-group-btn .btn:not(.btn-raised).btn-danger{color:#f44336}.btn:not(.btn-raised):not(.btn-link):focus,.btn:not(.btn-raised):not(.btn-link):hover,.input-group-btn .btn:not(.btn-raised):not(.btn-link):focus,.input-group-btn .btn:not(.btn-raised):not(.btn-link):hover{background-color:rgba(153,153,153,.2)}.theme-dark .btn:not(.btn-raised):not(.btn-link):focus,.theme-dark .btn:not(.btn-raised):not(.btn-link):hover,.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):focus,.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):hover{background-color:rgba(204,204,204,.15)}.btn-group-raised .btn,.btn-group-raised .btn.btn-default,.btn-group-raised .input-group-btn .btn,.btn-group-raised .input-group-btn .btn.btn-default,.btn.btn-fab,.btn.btn-fab.btn-default,.btn.btn-raised,.btn.btn-raised.btn-default,.input-group-btn .btn.btn-fab,.input-group-btn .btn.btn-fab.btn-default,.input-group-btn .btn.btn-raised,.input-group-btn .btn.btn-raised.btn-default{background-color:#EEE;color:rgba(0,0,0,.87)}.btn-group-raised .btn.btn-inverse,.btn-group-raised .input-group-btn .btn.btn-inverse,.btn.btn-fab.btn-inverse,.btn.btn-raised.btn-inverse,.input-group-btn .btn.btn-fab.btn-inverse,.input-group-btn .btn.btn-raised.btn-inverse{background-color:#3f51b5;color:#fff}.btn-group-raised .btn.btn-primary,.btn-group-raised .input-group-btn .btn.btn-primary,.btn.btn-fab.btn-primary,.btn.btn-raised.btn-primary,.input-group-btn .btn.btn-fab.btn-primary,.input-group-btn .btn.btn-raised.btn-primary{background-color:#009688;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-success,.btn-group-raised .input-group-btn .btn.btn-success,.btn.btn-fab.btn-success,.btn.btn-raised.btn-success,.input-group-btn .btn.btn-fab.btn-success,.input-group-btn .btn.btn-raised.btn-success{background-color:#4caf50;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-info,.btn-group-raised .input-group-btn .btn.btn-info,.btn.btn-fab.btn-info,.btn.btn-raised.btn-info,.input-group-btn .btn.btn-fab.btn-info,.input-group-btn .btn.btn-raised.btn-info{background-color:#03a9f4;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-warning,.btn-group-raised .input-group-btn .btn.btn-warning,.btn.btn-fab.btn-warning,.btn.btn-raised.btn-warning,.input-group-btn .btn.btn-fab.btn-warning,.input-group-btn .btn.btn-raised.btn-warning{background-color:#ff5722;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-danger,.btn-group-raised .input-group-btn .btn.btn-danger,.btn.btn-fab.btn-danger,.btn.btn-raised.btn-danger,.input-group-btn .btn.btn-fab.btn-danger,.input-group-btn .btn.btn-raised.btn-danger{background-color:#f44336;color:rgba(255,255,255,.84)}.btn-group-raised .btn:not(.btn-link),.btn-group-raised .input-group-btn .btn:not(.btn-link),.btn.btn-raised:not(.btn-link),.input-group-btn .btn.btn-raised:not(.btn-link){-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.btn-group-raised .btn:not(.btn-link).active,.btn-group-raised .btn:not(.btn-link):active,.btn-group-raised .btn:not(.btn-link):focus,.btn-group-raised .btn:not(.btn-link):hover,.btn-group-raised .input-group-btn .btn:not(.btn-link).active,.btn-group-raised .input-group-btn .btn:not(.btn-link):active,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover,.btn.btn-raised:not(.btn-link).active,.btn.btn-raised:not(.btn-link):active,.btn.btn-raised:not(.btn-link):focus,.btn.btn-raised:not(.btn-link):hover,.input-group-btn .btn.btn-raised:not(.btn-link).active,.input-group-btn .btn.btn-raised:not(.btn-link):active,.input-group-btn .btn.btn-raised:not(.btn-link):focus,.input-group-btn .btn.btn-raised:not(.btn-link):hover{outline:0}.btn-group-raised .btn:not(.btn-link).active,.btn-group-raised .btn:not(.btn-link).active.btn-default,.btn-group-raised .btn:not(.btn-link):active,.btn-group-raised .btn:not(.btn-link):active.btn-default,.btn-group-raised .btn:not(.btn-link):focus,.btn-group-raised .btn:not(.btn-link):focus.btn-default,.btn-group-raised .btn:not(.btn-link):hover,.btn-group-raised .btn:not(.btn-link):hover.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link).active,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link):active,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-default,.btn.btn-raised:not(.btn-link).active,.btn.btn-raised:not(.btn-link).active.btn-default,.btn.btn-raised:not(.btn-link):active,.btn.btn-raised:not(.btn-link):active.btn-default,.btn.btn-raised:not(.btn-link):focus,.btn.btn-raised:not(.btn-link):focus.btn-default,.btn.btn-raised:not(.btn-link):hover,.btn.btn-raised:not(.btn-link):hover.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link).active,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link):active,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link):focus,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link):hover,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-default{background-color:#e4e4e4}.btn-group-raised .btn:not(.btn-link).active.btn-inverse,.btn-group-raised .btn:not(.btn-link):active.btn-inverse,.btn-group-raised .btn:not(.btn-link):focus.btn-inverse,.btn-group-raised .btn:not(.btn-link):hover.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-inverse,.btn.btn-raised:not(.btn-link).active.btn-inverse,.btn.btn-raised:not(.btn-link):active.btn-inverse,.btn.btn-raised:not(.btn-link):focus.btn-inverse,.btn.btn-raised:not(.btn-link):hover.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-inverse{background-color:#495bc0}.btn-group-raised .btn:not(.btn-link).active.btn-primary,.btn-group-raised .btn:not(.btn-link):active.btn-primary,.btn-group-raised .btn:not(.btn-link):focus.btn-primary,.btn-group-raised .btn:not(.btn-link):hover.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-primary,.btn.btn-raised:not(.btn-link).active.btn-primary,.btn.btn-raised:not(.btn-link):active.btn-primary,.btn.btn-raised:not(.btn-link):focus.btn-primary,.btn.btn-raised:not(.btn-link):hover.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-primary{background-color:#00aa9a}.btn-group-raised .btn:not(.btn-link).active.btn-success,.btn-group-raised .btn:not(.btn-link):active.btn-success,.btn-group-raised .btn:not(.btn-link):focus.btn-success,.btn-group-raised .btn:not(.btn-link):hover.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-success,.btn.btn-raised:not(.btn-link).active.btn-success,.btn.btn-raised:not(.btn-link):active.btn-success,.btn.btn-raised:not(.btn-link):focus.btn-success,.btn.btn-raised:not(.btn-link):hover.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-success{background-color:#59b75c}.btn-group-raised .btn:not(.btn-link).active.btn-info,.btn-group-raised .btn:not(.btn-link):active.btn-info,.btn-group-raised .btn:not(.btn-link):focus.btn-info,.btn-group-raised .btn:not(.btn-link):hover.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-info,.btn.btn-raised:not(.btn-link).active.btn-info,.btn.btn-raised:not(.btn-link):active.btn-info,.btn.btn-raised:not(.btn-link):focus.btn-info,.btn.btn-raised:not(.btn-link):hover.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-info{background-color:#0fb2fc}.btn-group-raised .btn:not(.btn-link).active.btn-warning,.btn-group-raised .btn:not(.btn-link):active.btn-warning,.btn-group-raised .btn:not(.btn-link):focus.btn-warning,.btn-group-raised .btn:not(.btn-link):hover.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-warning,.btn.btn-raised:not(.btn-link).active.btn-warning,.btn.btn-raised:not(.btn-link):active.btn-warning,.btn.btn-raised:not(.btn-link):focus.btn-warning,.btn.btn-raised:not(.btn-link):hover.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-warning{background-color:#ff6736}.btn-group-raised .btn:not(.btn-link).active.btn-danger,.btn-group-raised .btn:not(.btn-link):active.btn-danger,.btn-group-raised .btn:not(.btn-link):focus.btn-danger,.btn-group-raised .btn:not(.btn-link):hover.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-danger,.btn.btn-raised:not(.btn-link).active.btn-danger,.btn.btn-raised:not(.btn-link):active.btn-danger,.btn.btn-raised:not(.btn-link):focus.btn-danger,.btn.btn-raised:not(.btn-link):hover.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-danger{background-color:#f55549}.btn-group-raised .btn:not(.btn-link).active,.btn-group-raised .btn:not(.btn-link).active:hover,.btn-group-raised .btn:not(.btn-link):active,.btn-group-raised .btn:not(.btn-link):active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link).active,.btn-group-raised .input-group-btn .btn:not(.btn-link).active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):active,.btn-group-raised .input-group-btn .btn:not(.btn-link):active:hover,.btn.btn-raised:not(.btn-link).active,.btn.btn-raised:not(.btn-link).active:hover,.btn.btn-raised:not(.btn-link):active,.btn.btn-raised:not(.btn-link):active:hover,.input-group-btn .btn.btn-raised:not(.btn-link).active,.input-group-btn .btn.btn-raised:not(.btn-link).active:hover,.input-group-btn .btn.btn-raised:not(.btn-link):active,.input-group-btn .btn.btn-raised:not(.btn-link):active:hover{-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.btn-group-raised .btn:not(.btn-link):focus,.btn-group-raised .btn:not(.btn-link):focus.active,.btn-group-raised .btn:not(.btn-link):focus.active:hover,.btn-group-raised .btn:not(.btn-link):focus:active,.btn-group-raised .btn:not(.btn-link):focus:active:hover,.btn-group-raised .btn:not(.btn-link):focus:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:hover,.btn.btn-raised:not(.btn-link):focus,.btn.btn-raised:not(.btn-link):focus.active,.btn.btn-raised:not(.btn-link):focus.active:hover,.btn.btn-raised:not(.btn-link):focus:active,.btn.btn-raised:not(.btn-link):focus:active:hover,.btn.btn-raised:not(.btn-link):focus:hover,.input-group-btn .btn.btn-raised:not(.btn-link):focus,.input-group-btn .btn.btn-raised:not(.btn-link):focus.active,.input-group-btn .btn.btn-raised:not(.btn-link):focus.active:hover,.input-group-btn .btn.btn-raised:not(.btn-link):focus:active,.input-group-btn .btn.btn-raised:not(.btn-link):focus:active:hover,.input-group-btn .btn.btn-raised:not(.btn-link):focus:hover{-webkit-box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36)}.btn.btn-fab,.input-group-btn .btn.btn-fab{border-radius:50%;font-size:24px;height:56px;margin:auto;min-width:56px;width:56px;padding:0;overflow:hidden;-webkit-box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);position:relative;line-height:normal}.btn.btn-fab .ripple-container,.input-group-btn .btn.btn-fab .ripple-container{border-radius:50%}.btn-group-sm .btn.btn-fab,.btn-group-sm .input-group-btn .btn.btn-fab,.btn.btn-fab.btn-fab-mini,.input-group-btn .btn.btn-fab.btn-fab-mini{height:40px;min-width:40px;width:40px}.btn-group-sm .btn.btn-fab.material-icons,.btn-group-sm .input-group-btn .btn.btn-fab.material-icons,.btn.btn-fab.btn-fab-mini.material-icons,.input-group-btn .btn.btn-fab.btn-fab-mini.material-icons{top:0;left:0}.btn.btn-fab i.material-icons,.input-group-btn .btn.btn-fab i.material-icons{position:absolute;top:50%;left:50%;-webkit-transform:translate(-12px,-12px);-ms-transform:translate(-12px,-12px);-o-transform:translate(-12px,-12px);transform:translate(-12px,-12px);line-height:24px;width:24px}.btn i.material-icons,.input-group-btn .btn i.material-icons{vertical-align:middle}.btn-group-lg .btn,.btn-group-lg .input-group-btn .btn,.btn.btn-lg,.input-group-btn .btn.btn-lg{font-size:16px}.btn-group-sm .btn,.btn-group-sm .input-group-btn .btn,.btn.btn-sm,.input-group-btn .btn.btn-sm{padding:5px 20px;font-size:12px}.btn-group-xs .btn,.btn-group-xs .input-group-btn .btn,.btn.btn-xs,.input-group-btn .btn.btn-xs{padding:4px 15px;font-size:10px}.btn-group-vertical.disabled,.btn-group-vertical:disabled,.btn-group-vertical[disabled][disabled],.btn-group.disabled,.btn-group:disabled,.btn-group[disabled][disabled],.btn.disabled,.btn:disabled,.btn[disabled][disabled],.input-group-btn .btn.disabled,.input-group-btn .btn:disabled,.input-group-btn .btn[disabled][disabled],fieldset[disabled][disabled] .btn,fieldset[disabled][disabled] .btn-group,fieldset[disabled][disabled] .btn-group-vertical,fieldset[disabled][disabled] .input-group-btn .btn{color:rgba(0,0,0,.26);background:0 0}.theme-dark .btn-group-vertical.disabled,.theme-dark .btn-group-vertical:disabled,.theme-dark .btn-group-vertical[disabled][disabled],.theme-dark .btn-group.disabled,.theme-dark .btn-group:disabled,.theme-dark .btn-group[disabled][disabled],.theme-dark .btn.disabled,.theme-dark .btn:disabled,.theme-dark .btn[disabled][disabled],.theme-dark .input-group-btn .btn.disabled,.theme-dark .input-group-btn .btn:disabled,.theme-dark .input-group-btn .btn[disabled][disabled],.theme-dark fieldset[disabled][disabled] .btn,.theme-dark fieldset[disabled][disabled] .btn-group,.theme-dark fieldset[disabled][disabled] .btn-group-vertical,.theme-dark fieldset[disabled][disabled] .input-group-btn .btn{color:rgba(255,255,255,.3)}.btn-group-vertical.disabled.btn-group-raised,.btn-group-vertical.disabled.btn-group-raised.active,.btn-group-vertical.disabled.btn-group-raised:active,.btn-group-vertical.disabled.btn-group-raised:focus:not(:active),.btn-group-vertical.disabled.btn-raised,.btn-group-vertical.disabled.btn-raised.active,.btn-group-vertical.disabled.btn-raised:active,.btn-group-vertical.disabled.btn-raised:focus:not(:active),.btn-group-vertical:disabled.btn-group-raised,.btn-group-vertical:disabled.btn-group-raised.active,.btn-group-vertical:disabled.btn-group-raised:active,.btn-group-vertical:disabled.btn-group-raised:focus:not(:active),.btn-group-vertical:disabled.btn-raised,.btn-group-vertical:disabled.btn-raised.active,.btn-group-vertical:disabled.btn-raised:active,.btn-group-vertical:disabled.btn-raised:focus:not(:active),.btn-group-vertical[disabled][disabled].btn-group-raised,.btn-group-vertical[disabled][disabled].btn-group-raised.active,.btn-group-vertical[disabled][disabled].btn-group-raised:active,.btn-group-vertical[disabled][disabled].btn-group-raised:focus:not(:active),.btn-group-vertical[disabled][disabled].btn-raised,.btn-group-vertical[disabled][disabled].btn-raised.active,.btn-group-vertical[disabled][disabled].btn-raised:active,.btn-group-vertical[disabled][disabled].btn-raised:focus:not(:active),.btn-group.disabled.btn-group-raised,.btn-group.disabled.btn-group-raised.active,.btn-group.disabled.btn-group-raised:active,.btn-group.disabled.btn-group-raised:focus:not(:active),.btn-group.disabled.btn-raised,.btn-group.disabled.btn-raised.active,.btn-group.disabled.btn-raised:active,.btn-group.disabled.btn-raised:focus:not(:active),.btn-group:disabled.btn-group-raised,.btn-group:disabled.btn-group-raised.active,.btn-group:disabled.btn-group-raised:active,.btn-group:disabled.btn-group-raised:focus:not(:active),.btn-group:disabled.btn-raised,.btn-group:disabled.btn-raised.active,.btn-group:disabled.btn-raised:active,.btn-group:disabled.btn-raised:focus:not(:active),.btn-group[disabled][disabled].btn-group-raised,.btn-group[disabled][disabled].btn-group-raised.active,.btn-group[disabled][disabled].btn-group-raised:active,.btn-group[disabled][disabled].btn-group-raised:focus:not(:active),.btn-group[disabled][disabled].btn-raised,.btn-group[disabled][disabled].btn-raised.active,.btn-group[disabled][disabled].btn-raised:active,.btn-group[disabled][disabled].btn-raised:focus:not(:active),.btn.disabled.btn-group-raised,.btn.disabled.btn-group-raised.active,.btn.disabled.btn-group-raised:active,.btn.disabled.btn-group-raised:focus:not(:active),.btn.disabled.btn-raised,.btn.disabled.btn-raised.active,.btn.disabled.btn-raised:active,.btn.disabled.btn-raised:focus:not(:active),.btn:disabled.btn-group-raised,.btn:disabled.btn-group-raised.active,.btn:disabled.btn-group-raised:active,.btn:disabled.btn-group-raised:focus:not(:active),.btn:disabled.btn-raised,.btn:disabled.btn-raised.active,.btn:disabled.btn-raised:active,.btn:disabled.btn-raised:focus:not(:active),.btn[disabled][disabled].btn-group-raised,.btn[disabled][disabled].btn-group-raised.active,.btn[disabled][disabled].btn-group-raised:active,.btn[disabled][disabled].btn-group-raised:focus:not(:active),.btn[disabled][disabled].btn-raised,.btn[disabled][disabled].btn-raised.active,.btn[disabled][disabled].btn-raised:active,.btn[disabled][disabled].btn-raised:focus:not(:active),.input-group-btn .btn.disabled.btn-group-raised,.input-group-btn .btn.disabled.btn-group-raised.active,.input-group-btn .btn.disabled.btn-group-raised:active,.input-group-btn .btn.disabled.btn-group-raised:focus:not(:active),.input-group-btn .btn.disabled.btn-raised,.input-group-btn .btn.disabled.btn-raised.active,.input-group-btn .btn.disabled.btn-raised:active,.input-group-btn .btn.disabled.btn-raised:focus:not(:active),.input-group-btn .btn:disabled.btn-group-raised,.input-group-btn .btn:disabled.btn-group-raised.active,.input-group-btn .btn:disabled.btn-group-raised:active,.input-group-btn .btn:disabled.btn-group-raised:focus:not(:active),.input-group-btn .btn:disabled.btn-raised,.input-group-btn .btn:disabled.btn-raised.active,.input-group-btn .btn:disabled.btn-raised:active,.input-group-btn .btn:disabled.btn-raised:focus:not(:active),.input-group-btn .btn[disabled][disabled].btn-group-raised,.input-group-btn .btn[disabled][disabled].btn-group-raised.active,.input-group-btn .btn[disabled][disabled].btn-group-raised:active,.input-group-btn .btn[disabled][disabled].btn-group-raised:focus:not(:active),.input-group-btn .btn[disabled][disabled].btn-raised,.input-group-btn .btn[disabled][disabled].btn-raised.active,.input-group-btn .btn[disabled][disabled].btn-raised:active,.input-group-btn .btn[disabled][disabled].btn-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised,fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised.active,fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:active,fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group-vertical.btn-raised,fieldset[disabled][disabled] .btn-group-vertical.btn-raised.active,fieldset[disabled][disabled] .btn-group-vertical.btn-raised:active,fieldset[disabled][disabled] .btn-group-vertical.btn-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group.btn-group-raised,fieldset[disabled][disabled] .btn-group.btn-group-raised.active,fieldset[disabled][disabled] .btn-group.btn-group-raised:active,fieldset[disabled][disabled] .btn-group.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group.btn-raised,fieldset[disabled][disabled] .btn-group.btn-raised.active,fieldset[disabled][disabled] .btn-group.btn-raised:active,fieldset[disabled][disabled] .btn-group.btn-raised:focus:not(:active),fieldset[disabled][disabled] .btn.btn-group-raised,fieldset[disabled][disabled] .btn.btn-group-raised.active,fieldset[disabled][disabled] .btn.btn-group-raised:active,fieldset[disabled][disabled] .btn.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .btn.btn-raised,fieldset[disabled][disabled] .btn.btn-raised.active,fieldset[disabled][disabled] .btn.btn-raised:active,fieldset[disabled][disabled] .btn.btn-raised:focus:not(:active),fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised,fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised.active,fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:active,fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .input-group-btn .btn.btn-raised,fieldset[disabled][disabled] .input-group-btn .btn.btn-raised.active,fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:active,fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:focus:not(:active){-webkit-box-shadow:none;box-shadow:none}.btn-group,.btn-group-vertical{position:relative;margin:10px 1px}.btn-group-vertical.open>.dropdown-toggle.btn,.btn-group-vertical.open>.dropdown-toggle.btn.btn-default,.btn-group.open>.dropdown-toggle.btn,.btn-group.open>.dropdown-toggle.btn.btn-default{background-color:#EEE}.btn-group-vertical.open>.dropdown-toggle.btn.btn-inverse,.btn-group.open>.dropdown-toggle.btn.btn-inverse{background-color:#3f51b5}.btn-group-vertical.open>.dropdown-toggle.btn.btn-primary,.btn-group.open>.dropdown-toggle.btn.btn-primary{background-color:#009688}.btn-group-vertical.open>.dropdown-toggle.btn.btn-success,.btn-group.open>.dropdown-toggle.btn.btn-success{background-color:#4caf50}.btn-group-vertical.open>.dropdown-toggle.btn.btn-info,.btn-group.open>.dropdown-toggle.btn.btn-info{background-color:#03a9f4}.btn-group-vertical.open>.dropdown-toggle.btn.btn-warning,.btn-group.open>.dropdown-toggle.btn.btn-warning{background-color:#ff5722}.btn-group-vertical.open>.dropdown-toggle.btn.btn-danger,.btn-group.open>.dropdown-toggle.btn.btn-danger{background-color:#f44336}.btn-group .dropdown-menu,.btn-group-vertical .dropdown-menu{border-radius:0 0 2px 2px}.btn-group-vertical.btn-group-raised,.btn-group.btn-group-raised{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.btn-group .btn,.btn-group .btn+.btn,.btn-group .btn-group,.btn-group .btn:active,.btn-group-vertical .btn,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn-group,.btn-group-vertical .btn:active{margin:0}.checkbox label,label.checkbox-inline{cursor:pointer;padding-left:0;color:rgba(0,0,0,.26)}.form-group.is-focused .checkbox label,.form-group.is-focused label.checkbox-inline{color:rgba(0,0,0,.26)}.form-group.is-focused .checkbox label:focus,.form-group.is-focused .checkbox label:hover,.form-group.is-focused label.checkbox-inline:focus,.form-group.is-focused label.checkbox-inline:hover{color:rgba(0,0,0,.54)}fieldset[disabled] .form-group.is-focused .checkbox label,fieldset[disabled] .form-group.is-focused label.checkbox-inline{color:rgba(0,0,0,.26)}.checkbox input[type=checkbox],label.checkbox-inline input[type=checkbox]{opacity:0;position:absolute;margin:0;z-index:-1;width:0;height:0;overflow:hidden;left:0;pointer-events:none}.checkbox .checkbox-material,label.checkbox-inline .checkbox-material{vertical-align:middle;position:relative;top:3px}.checkbox .checkbox-material:before,label.checkbox-inline .checkbox-material:before{display:block;position:absolute;top:-5px;left:0;content:"";background-color:rgba(0,0,0,.84);height:20px;width:20px;border-radius:100%;z-index:1;opacity:0;margin:0;-webkit-transform:scale3d(2.3,2.3,1);transform:scale3d(2.3,2.3,1)}.checkbox .checkbox-material .check,label.checkbox-inline .checkbox-material .check{position:relative;display:inline-block;width:20px;height:20px;border:2px solid rgba(0,0,0,.54);border-radius:2px;overflow:hidden;z-index:1}.checkbox .checkbox-material .check:before,label.checkbox-inline .checkbox-material .check:before{position:absolute;content:"";-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);display:block;margin-top:-4px;margin-left:6px;width:0;height:0;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}.checkbox input[type=checkbox]:focus+.checkbox-material .check:after,label.checkbox-inline input[type=checkbox]:focus+.checkbox-material .check:after{opacity:.2}.checkbox input[type=checkbox]:focus:checked+.checkbox-material:before,label.checkbox-inline input[type=checkbox]:focus:checked+.checkbox-material:before{-webkit-animation:rippleOn .5s;-o-animation:rippleOn .5s;animation:rippleOn .5s}.checkbox input[type=checkbox]:focus:checked+.checkbox-material .check:before,label.checkbox-inline input[type=checkbox]:focus:checked+.checkbox-material .check:before{-webkit-animation:checkbox-on .3s forwards;-o-animation:checkbox-on .3s forwards;animation:checkbox-on .3s forwards}.checkbox input[type=checkbox]:focus:checked+.checkbox-material .check:after,label.checkbox-inline input[type=checkbox]:focus:checked+.checkbox-material .check:after{-webkit-animation:rippleOn .5s forwards;-o-animation:rippleOn .5s forwards;animation:rippleOn .5s forwards}.checkbox input[type=checkbox]:focus:not(:checked)+.checkbox-material:before,label.checkbox-inline input[type=checkbox]:focus:not(:checked)+.checkbox-material:before{-webkit-animation:rippleOff .5s;-o-animation:rippleOff .5s;animation:rippleOff .5s}.checkbox input[type=checkbox]:focus:not(:checked)+.checkbox-material .check:before,label.checkbox-inline input[type=checkbox]:focus:not(:checked)+.checkbox-material .check:before{-webkit-animation:checkbox-off .3s forwards;-o-animation:checkbox-off .3s forwards;animation:checkbox-off .3s forwards}.checkbox input[type=checkbox]:focus:not(:checked)+.checkbox-material .check:after,label.checkbox-inline input[type=checkbox]:focus:not(:checked)+.checkbox-material .check:after{-webkit-animation:rippleOff .5s forwards;-o-animation:rippleOff .5s forwards;animation:rippleOff .5s forwards}.checkbox input[type=checkbox]:checked+.checkbox-material .check,label.checkbox-inline input[type=checkbox]:checked+.checkbox-material .check{color:#009688;border-color:#009688}.checkbox input[type=checkbox]:checked+.checkbox-material .check:before,label.checkbox-inline input[type=checkbox]:checked+.checkbox-material .check:before{color:#009688;-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}.checkbox input[type=checkbox][disabled]+.circle,.checkbox input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check,.checkbox input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check:before,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox input[type=checkbox],fieldset[disabled] label.checkbox-inline,fieldset[disabled] label.checkbox-inline input[type=checkbox],label.checkbox-inline input[type=checkbox][disabled]+.circle,label.checkbox-inline input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check,label.checkbox-inline input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check:before{opacity:.5}.checkbox input[type=checkbox][disabled]+.checkbox-material .check:after,label.checkbox-inline input[type=checkbox][disabled]+.checkbox-material .check:after{background-color:rgba(0,0,0,.87);-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}@-webkit-keyframes checkbox-on{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px}50%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px}100%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}}@-o-keyframes checkbox-on{0%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px}50%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px}100%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}}@keyframes checkbox-on{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px}50%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px}100%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}}@-webkit-keyframes checkbox-off{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}25%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}50%{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-top:-4px;margin-left:6px;width:0;height:0;-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset}51%{-webkit-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset}100%{-webkit-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}}@-o-keyframes checkbox-off{0%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}25%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}50%{-o-transform:rotate(45deg);transform:rotate(45deg);margin-top:-4px;margin-left:6px;width:0;height:0;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset}51%{-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset}100%{-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}}@keyframes checkbox-off{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}25%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}50%{-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);margin-top:-4px;margin-left:6px;width:0;height:0;-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset}51%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset}100%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}}@-webkit-keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@-o-keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@-webkit-keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@-o-keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}.togglebutton{vertical-align:middle}.togglebutton,.togglebutton .toggle,.togglebutton input,.togglebutton label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.togglebutton label{cursor:pointer;color:rgba(0,0,0,.26)}.form-group.is-focused .togglebutton label{color:rgba(0,0,0,.26)}.form-group.is-focused .togglebutton label:focus,.form-group.is-focused .togglebutton label:hover{color:rgba(0,0,0,.54)}fieldset[disabled] .form-group.is-focused .togglebutton label{color:rgba(0,0,0,.26)}.togglebutton label input[type=checkbox]{opacity:0;width:0;height:0}.togglebutton label .toggle{text-align:left}.togglebutton label .toggle,.togglebutton label input[type=checkbox][disabled]+.toggle{content:"";display:inline-block;width:30px;height:15px;background-color:rgba(80,80,80,.7);border-radius:15px;margin-right:15px;-webkit-transition:background .3s ease;-o-transition:background .3s ease;transition:background .3s ease;vertical-align:middle}.togglebutton label .toggle:after{content:"";display:inline-block;width:20px;height:20px;background-color:#F1F1F1;border-radius:20px;position:relative;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.4);box-shadow:0 1px 3px 1px rgba(0,0,0,.4);left:-5px;top:-2px;-webkit-transition:left .3s ease,background .3s ease,-webkit-box-shadow .1s ease;-o-transition:left .3s ease,background .3s ease,box-shadow .1s ease;transition:left .3s ease,background .3s ease,box-shadow .1s ease}.togglebutton label input[type=checkbox][disabled]+.toggle:after,.togglebutton label input[type=checkbox][disabled]:checked+.toggle:after{background-color:#BDBDBD}.togglebutton label input[type=checkbox]+.toggle:active:after,.togglebutton label input[type=checkbox][disabled]+.toggle:active:after{-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.1)}.togglebutton label input[type=checkbox]:checked+.toggle:after{left:15px}.togglebutton label input[type=checkbox]:checked+.toggle{background-color:rgba(0,150,136,.5)}.togglebutton label input[type=checkbox]:checked+.toggle:after{background-color:#009688}.togglebutton label input[type=checkbox]:checked+.toggle:active:after{-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,150,136,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,150,136,.1)}.radio label,label.radio-inline{cursor:pointer;padding-left:45px;position:relative;color:rgba(0,0,0,.26)}.form-group.is-focused .radio label,.form-group.is-focused label.radio-inline{color:rgba(0,0,0,.26)}.form-group.is-focused .radio label:focus,.form-group.is-focused .radio label:hover,.form-group.is-focused label.radio-inline:focus,.form-group.is-focused label.radio-inline:hover{color:rgba(0,0,0,.54)}fieldset[disabled] .form-group.is-focused .radio label,fieldset[disabled] .form-group.is-focused label.radio-inline{color:rgba(0,0,0,.26)}.radio span,label.radio-inline span{display:block;position:absolute;left:10px;top:2px;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.radio .circle,label.radio-inline .circle{border:2px solid rgba(0,0,0,.54);height:15px;width:15px;border-radius:100%}.radio .check,label.radio-inline .check{height:15px;width:15px;border-radius:100%;background-color:#009688;-webkit-transform:scale3d(0,0,0);transform:scale3d(0,0,0)}.radio .check:after,label.radio-inline .check:after{display:block;position:absolute;content:"";background-color:rgba(0,0,0,.87);left:-18px;top:-18px;height:50px;width:50px;border-radius:100%;z-index:1;opacity:0;margin:0;-webkit-transform:scale3d(1.5,1.5,1);transform:scale3d(1.5,1.5,1)}.radio input[type=radio]:focus:not(:checked)~.check:after,label.radio-inline input[type=radio]:focus:not(:checked)~.check:after{-webkit-animation:rippleOff .5s;-o-animation:rippleOff .5s;animation:rippleOff .5s}.radio input[type=radio]:focus:checked~.check:after,label.radio-inline input[type=radio]:focus:checked~.check:after{-webkit-animation:rippleOn .5s;-o-animation:rippleOn .5s;animation:rippleOn .5s}.radio input[type=radio],label.radio-inline input[type=radio]{opacity:0;height:0;width:0;overflow:hidden}.radio input[type=radio]:checked~.check,.radio input[type=radio]:checked~.circle,label.radio-inline input[type=radio]:checked~.check,label.radio-inline input[type=radio]:checked~.circle{opacity:1}.radio input[type=radio]:checked~.check,label.radio-inline input[type=radio]:checked~.check{background-color:#009688}.radio input[type=radio]:checked~.circle,label.radio-inline input[type=radio]:checked~.circle{border-color:#009688}.radio input[type=radio]:checked~.check,label.radio-inline input[type=radio]:checked~.check{-webkit-transform:scale3d(.55,.55,1);transform:scale3d(.55,.55,1)}.radio input[type=radio][disabled]~.check,.radio input[type=radio][disabled]~.circle,label.radio-inline input[type=radio][disabled]~.check,label.radio-inline input[type=radio][disabled]~.circle{opacity:.26}.radio input[type=radio][disabled]~.check,label.radio-inline input[type=radio][disabled]~.check{background-color:#000}.radio input[type=radio][disabled]~.circle,label.radio-inline input[type=radio][disabled]~.circle{border-color:#000}.theme-dark .radio input[type=radio][disabled]~.check,.theme-dark .radio input[type=radio][disabled]~.circle,.theme-dark label.radio-inline input[type=radio][disabled]~.check,.theme-dark label.radio-inline input[type=radio][disabled]~.circle{opacity:.3}.theme-dark .radio input[type=radio][disabled]~.check,.theme-dark label.radio-inline input[type=radio][disabled]~.check{background-color:#fff}.theme-dark .radio input[type=radio][disabled]~.circle,.theme-dark label.radio-inline input[type=radio][disabled]~.circle{border-color:#fff}@keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}legend{margin-bottom:22px;font-size:24px}output{padding-top:8px;font-size:16px;line-height:1.42857143}.form-control{height:38px;padding:7px 0;font-size:16px;line-height:1.42857143}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:38px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:24px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:44px}}.checkbox label,.radio label{min-height:22px}.form-control-static{padding-top:8px;padding-bottom:8px;min-height:38px}.input-sm .input-sm{height:24px;padding:3px 0;font-size:11px;line-height:1.5;border-radius:0}.input-sm select.input-sm{height:24px;line-height:24px}.input-sm select[multiple].input-sm,.input-sm textarea.input-sm{height:auto}.form-group-sm .form-control{height:24px;padding:3px 0;font-size:11px;line-height:1.5}.form-group-sm select.form-control{height:24px;line-height:24px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:24px;min-height:33px;padding:4px 0;font-size:11px;line-height:1.5}.input-lg .input-lg{height:44px;padding:9px 0;font-size:18px;line-height:1.3333333;border-radius:0}.input-lg select.input-lg{height:44px;line-height:44px}.input-lg select[multiple].input-lg,.input-lg textarea.input-lg{height:auto}.form-group-lg .form-control{height:44px;padding:9px 0;font-size:18px;line-height:1.3333333}.form-group-lg select.form-control{height:44px;line-height:44px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:44px;min-height:40px;padding:10px 0;font-size:18px;line-height:1.3333333}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:8px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:30px}@media (min-width:768px){.form-horizontal .control-label{padding-top:8px}}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:13px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:4px;font-size:11px}}.label{border-radius:1px;padding:.3em .6em}.label,.label.label-default{background-color:#9e9e9e}.label.label-inverse{background-color:#3f51b5}.label.label-primary{background-color:#009688}.label.label-success{background-color:#4caf50}.label.label-info{background-color:#03a9f4}.label.label-warning{background-color:#ff5722}.label.label-danger{background-color:#f44336}.form-control,.form-group .form-control{border:0;background-image:-webkit-gradient(linear,left top,left bottom,from(#009688),to(#009688)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#009688,#009688),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#009688,#009688),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#009688,#009688),linear-gradient(#D2D2D2,#D2D2D2);-webkit-background-size:0 2px,100% 1px;background-size:0 2px,100% 1px;background-repeat:no-repeat;background-position:center bottom,center -webkit-calc(100% - 1px);background-position:center bottom,center calc(100% - 1px);background-color:rgba(0,0,0,0);-webkit-transition:background 0s ease-out;-o-transition:background 0s ease-out;transition:background 0s ease-out;float:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.form-control::-moz-placeholder,.form-group .form-control::-moz-placeholder{color:#BDBDBD;font-weight:400}.form-control:-ms-input-placeholder,.form-group .form-control:-ms-input-placeholder{color:#BDBDBD;font-weight:400}.form-control::-webkit-input-placeholder,.form-group .form-control::-webkit-input-placeholder{color:#BDBDBD;font-weight:400}.form-control[disabled],.form-control[readonly],.form-group .form-control[disabled],.form-group .form-control[readonly],fieldset[disabled] .form-control,fieldset[disabled] .form-group .form-control{background-color:rgba(0,0,0,0)}.form-control[disabled],.form-group .form-control[disabled],fieldset[disabled] .form-control,fieldset[disabled] .form-group .form-control{background-image:none;border-bottom:1px dotted #D2D2D2}.form-group{position:relative}.form-group.label-floating label.control-label,.form-group.label-placeholder label.control-label,.form-group.label-static label.control-label{position:absolute;pointer-events:none;-webkit-transition:.3s ease all;-o-transition:.3s ease all;transition:.3s ease all}.form-group.label-floating label.control-label{will-change:left,top,contents}.form-group.label-placeholder:not(.is-empty) label.control-label{display:none}.form-group .help-block{position:absolute;display:none}.form-group.is-focused .form-control{outline:0;background-image:-webkit-gradient(linear,left top,left bottom,from(#009688),to(#009688)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#009688,#009688),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#009688,#009688),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#009688,#009688),linear-gradient(#D2D2D2,#D2D2D2);-webkit-background-size:100% 2px,100% 1px;background-size:100% 2px,100% 1px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.form-group.is-focused .form-control .material-input:after{background-color:#009688}.form-group.is-focused label,.form-group.is-focused label.control-label{color:#009688}.form-group.is-focused.label-placeholder label,.form-group.is-focused.label-placeholder label.control-label{color:#BDBDBD}.form-group.is-focused .help-block{display:block}.form-group.has-warning .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-warning.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#ff5722),to(#ff5722)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#ff5722,#ff5722),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#ff5722,#ff5722),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#ff5722,#ff5722),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-warning .help-block,.form-group.has-warning label.control-label{color:#ff5722}.form-group.has-error .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-error.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#f44336),to(#f44336)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#f44336,#f44336),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#f44336,#f44336),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#f44336,#f44336),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-error .help-block,.form-group.has-error label.control-label{color:#f44336}.form-group.has-success .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-success.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#4caf50),to(#4caf50)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#4caf50,#4caf50),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#4caf50,#4caf50),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#4caf50,#4caf50),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-success .help-block,.form-group.has-success label.control-label{color:#4caf50}.form-group.has-info .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-info.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#03a9f4),to(#03a9f4)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#03a9f4,#03a9f4),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#03a9f4,#03a9f4),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#03a9f4,#03a9f4),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-info .help-block,.form-group.has-info label.control-label{color:#03a9f4}.form-group textarea{resize:none}.form-group textarea~.form-control-highlight{margin-top:-11px}.form-group select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-group select~.material-input:after{display:none}.form-control{margin-bottom:7px}.form-control::-moz-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-control:-ms-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-control::-webkit-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.checkbox label,.radio label,label{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}label.control-label{font-size:12px;line-height:1.07142857;font-weight:400;margin:16px 0 0 0}.help-block{margin-top:0;font-size:12px}.form-group{padding-bottom:7px;margin:28px 0 0 0}.form-group .form-control{margin-bottom:7px}.form-group .form-control::-moz-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group .form-control:-ms-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group .form-control::-webkit-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group .checkbox label,.form-group .radio label,.form-group label{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group label.control-label{font-size:12px;line-height:1.07142857;font-weight:400;margin:16px 0 0 0}.form-group .help-block{margin-top:0;font-size:12px}.form-group.label-floating label.control-label,.form-group.label-placeholder label.control-label{top:-7px;font-size:16px;line-height:1.42857143}.form-group.label-floating.is-focused label.control-label,.form-group.label-floating:not(.is-empty) label.control-label,.form-group.label-static label.control-label{top:-30px;left:0;font-size:12px;line-height:1.07142857}.form-group.label-floating input.form-control:-webkit-autofill~label.control-label label.control-label{top:-30px;left:0;font-size:12px;line-height:1.07142857}.form-group.form-group-sm{padding-bottom:3px;margin:21px 0 0 0}.form-group.form-group-sm .form-control{margin-bottom:3px}.form-group.form-group-sm .form-control::-moz-placeholder{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm .form-control:-ms-input-placeholder{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm .form-control::-webkit-input-placeholder{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm .checkbox label,.form-group.form-group-sm .radio label,.form-group.form-group-sm label{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm label.control-label{font-size:9px;line-height:1.125;font-weight:400;margin:16px 0 0 0}.form-group.form-group-sm .help-block{margin-top:0;font-size:9px}.form-group.form-group-sm.label-floating label.control-label,.form-group.form-group-sm.label-placeholder label.control-label{top:-11px;font-size:11px;line-height:1.5}.form-group.form-group-sm.label-floating.is-focused label.control-label,.form-group.form-group-sm.label-floating:not(.is-empty) label.control-label,.form-group.form-group-sm.label-static label.control-label{top:-25px;left:0;font-size:9px;line-height:1.125}.form-group.form-group-sm.label-floating input.form-control:-webkit-autofill~label.control-label label.control-label{top:-25px;left:0;font-size:9px;line-height:1.125}.form-group.form-group-lg{padding-bottom:9px;margin:30px 0 0 0}.form-group.form-group-lg .form-control{margin-bottom:9px}.form-group.form-group-lg .form-control::-moz-placeholder{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg .form-control:-ms-input-placeholder{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg .form-control::-webkit-input-placeholder{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg .checkbox label,.form-group.form-group-lg .radio label,.form-group.form-group-lg label{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg label.control-label{font-size:14px;line-height:.99999998;font-weight:400;margin:16px 0 0 0}.form-group.form-group-lg .help-block{margin-top:0;font-size:14px}.form-group.form-group-lg.label-floating label.control-label,.form-group.form-group-lg.label-placeholder label.control-label{top:-5px;font-size:18px;line-height:1.3333333}.form-group.form-group-lg.label-floating.is-focused label.control-label,.form-group.form-group-lg.label-floating:not(.is-empty) label.control-label,.form-group.form-group-lg.label-static label.control-label{top:-32px;left:0;font-size:14px;line-height:.99999998}.form-group.form-group-lg.label-floating input.form-control:-webkit-autofill~label.control-label label.control-label{top:-32px;left:0;font-size:14px;line-height:.99999998}select.form-control{border:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.form-group.is-focused select.form-control{-webkit-box-shadow:none;box-shadow:none;border-color:#D2D2D2}.form-group.is-focused select.form-control[multiple],select.form-control[multiple]{height:85px}.input-group-btn .btn{margin:0 0 7px 0}.form-group.form-group-sm .input-group-btn .btn{margin:0 0 3px 0}.form-group.form-group-lg .input-group-btn .btn{margin:0 0 9px 0}.input-group .input-group-btn{padding:0 12px}.input-group .input-group-addon{border:0;background:0 0}.form-group input[type=file]{opacity:0;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}legend{border-bottom:0}.list-group{border-radius:0}.list-group .list-group-item{background-color:transparent;overflow:hidden;border:0;border-radius:0;padding:0 16px}.list-group .list-group-item.baseline{border-bottom:1px solid #cecece}.list-group .list-group-item.baseline:last-child{border-bottom:none}.list-group .list-group-item .row-action-primary,.list-group .list-group-item .row-picture{display:inline-block;padding-right:16px}.list-group .list-group-item .row-action-primary i,.list-group .list-group-item .row-action-primary img,.list-group .list-group-item .row-action-primary label,.list-group .list-group-item .row-picture i,.list-group .list-group-item .row-picture img,.list-group .list-group-item .row-picture label{display:block;width:56px;height:56px}.list-group .list-group-item .row-action-primary img,.list-group .list-group-item .row-picture img{background:rgba(0,0,0,.1);padding:1px}.list-group .list-group-item .row-action-primary img.circle,.list-group .list-group-item .row-picture img.circle{border-radius:100%}.list-group .list-group-item .row-action-primary i,.list-group .list-group-item .row-picture i{background:rgba(0,0,0,.25);border-radius:100%;text-align:center;line-height:56px;font-size:20px;color:#fff}.list-group .list-group-item .row-action-primary label,.list-group .list-group-item .row-picture label{margin-left:7px;margin-right:-7px;margin-top:5px;margin-bottom:-5px}.list-group .list-group-item .row-action-primary label .checkbox-material,.list-group .list-group-item .row-picture label .checkbox-material{left:-10px}.list-group .list-group-item .row-content{display:inline-block;width:-webkit-calc(100% - 92px);width:calc(100% - 92px);min-height:66px}.list-group .list-group-item .row-content .action-secondary{position:absolute;right:16px;top:16px}.list-group .list-group-item .row-content .action-secondary i{font-size:20px;color:rgba(0,0,0,.25);cursor:pointer}.list-group .list-group-item .row-content .action-secondary~*{max-width:-webkit-calc(100% - 30px);max-width:calc(100% - 30px)}.list-group .list-group-item .row-content .least-content{position:absolute;right:16px;top:0;color:rgba(0,0,0,.54);font-size:14px}.list-group .list-group-item .list-group-item-heading{color:rgba(0,0,0,.77);font-size:20px;line-height:29px}.list-group .list-group-item.active:focus,.list-group .list-group-item.active:hover{background:rgba(0,0,0,.15);outline:10px solid rgba(0,0,0,.15)}.list-group .list-group-item.active .list-group-item-heading,.list-group .list-group-item.active .list-group-item-text{color:rgba(0,0,0,.87)}.list-group .list-group-separator{clear:both;overflow:hidden;margin-top:10px;margin-bottom:10px}.list-group .list-group-separator:before{content:"";width:-webkit-calc(100% - 90px);width:calc(100% - 90px);border-bottom:1px solid rgba(0,0,0,.1);float:right}.navbar{background-color:#009688;border:0;border-radius:0}.navbar .navbar-brand{position:relative;height:60px;line-height:30px;color:inherit}.navbar .navbar-brand:focus,.navbar .navbar-brand:hover{color:inherit;background-color:transparent}.navbar .navbar-text{color:inherit;margin-top:20px;margin-bottom:20px}.navbar .navbar-nav>li>a{color:inherit;padding-top:20px;padding-bottom:20px}.navbar .navbar-nav>li>a:focus,.navbar .navbar-nav>li>a:hover{color:inherit;background-color:transparent}.navbar .navbar-nav>.active>a,.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{color:inherit;background-color:rgba(255,255,255,.1)}.navbar .navbar-nav>.disabled>a,.navbar .navbar-nav>.disabled>a:focus,.navbar .navbar-nav>.disabled>a:hover{color:inherit;background-color:transparent;opacity:.9}.navbar .navbar-toggle{border:0}.navbar .navbar-toggle:focus,.navbar .navbar-toggle:hover{background-color:transparent}.navbar .navbar-toggle .icon-bar{background-color:inherit;border:1px solid}.navbar .navbar-default .navbar-toggle,.navbar .navbar-inverse .navbar-toggle{border-color:transparent}.navbar .navbar-collapse,.navbar .navbar-form{border-color:rgba(0,0,0,.1)}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:transparent;color:inherit}@media (max-width:767px){.navbar .navbar-nav .navbar-text{color:inherit;margin-top:15px;margin-bottom:15px}.navbar .navbar-nav .open .dropdown-menu>.dropdown-header{border:0;color:inherit}.navbar .navbar-nav .open .dropdown-menu .divider{border-bottom:1px solid;opacity:.08}.navbar .navbar-nav .open .dropdown-menu>li>a{color:inherit}.navbar .navbar-nav .open .dropdown-menu>li>a:focus,.navbar .navbar-nav .open .dropdown-menu>li>a:hover{color:inherit;background-color:transparent}.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:inherit;background-color:transparent}.navbar .navbar-nav .open .dropdown-menu>.disabled>a,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:inherit;background-color:transparent}}.navbar .navbar-link{color:inherit}.navbar .navbar-link:hover{color:inherit}.navbar .btn-link{color:inherit}.navbar .btn-link:focus,.navbar .btn-link:hover{color:inherit}.navbar .btn-link[disabled]:focus,.navbar .btn-link[disabled]:hover,fieldset[disabled] .navbar .btn-link:focus,fieldset[disabled] .navbar .btn-link:hover{color:inherit}.navbar .navbar-form{margin-top:16px}.navbar .navbar-form .form-group{margin:0;padding:0}.navbar .navbar-form .form-group .material-input:before,.navbar .navbar-form .form-group.is-focused .material-input:after{background-color:inherit}.navbar .navbar-form .form-control,.navbar .navbar-form .form-group .form-control{border-color:inherit;color:inherit;padding:0;margin:0;height:28px;font-size:14px;line-height:1.42857143}.navbar,.navbar.navbar-default{background-color:#009688;color:rgba(255,255,255,.84)}.navbar .navbar-form .form-group input.form-control::-moz-placeholder,.navbar .navbar-form input.form-control::-moz-placeholder,.navbar.navbar-default .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-default .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar .navbar-form input.form-control:-ms-input-placeholder,.navbar.navbar-default .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-default .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar .navbar-form input.form-control::-webkit-input-placeholder,.navbar.navbar-default .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-default .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar .dropdown-menu,.navbar.navbar-default .dropdown-menu{border-radius:2px}.navbar .dropdown-menu li>a,.navbar.navbar-default .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar .dropdown-menu li>a:focus,.navbar .dropdown-menu li>a:hover,.navbar.navbar-default .dropdown-menu li>a:focus,.navbar.navbar-default .dropdown-menu li>a:hover{color:#009688;background-color:#eee}.navbar .dropdown-menu .active>a,.navbar.navbar-default .dropdown-menu .active>a{background-color:#009688;color:rgba(255,255,255,.84)}.navbar .dropdown-menu .active>a:focus,.navbar .dropdown-menu .active>a:hover,.navbar.navbar-default .dropdown-menu .active>a:focus,.navbar.navbar-default .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-inverse{background-color:#3f51b5;color:#fff}.navbar.navbar-inverse .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-inverse .navbar-form input.form-control::-moz-placeholder{color:#fff}.navbar.navbar-inverse .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-inverse .navbar-form input.form-control:-ms-input-placeholder{color:#fff}.navbar.navbar-inverse .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-inverse .navbar-form input.form-control::-webkit-input-placeholder{color:#fff}.navbar.navbar-inverse .dropdown-menu{border-radius:2px}.navbar.navbar-inverse .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-inverse .dropdown-menu li>a:focus,.navbar.navbar-inverse .dropdown-menu li>a:hover{color:#3f51b5;background-color:#eee}.navbar.navbar-inverse .dropdown-menu .active>a{background-color:#3f51b5;color:#fff}.navbar.navbar-inverse .dropdown-menu .active>a:focus,.navbar.navbar-inverse .dropdown-menu .active>a:hover{color:#fff}.navbar.navbar-primary{background-color:#009688;color:rgba(255,255,255,.84)}.navbar.navbar-primary .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-primary .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-primary .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-primary .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-primary .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-primary .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-primary .dropdown-menu{border-radius:2px}.navbar.navbar-primary .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-primary .dropdown-menu li>a:focus,.navbar.navbar-primary .dropdown-menu li>a:hover{color:#009688;background-color:#eee}.navbar.navbar-primary .dropdown-menu .active>a{background-color:#009688;color:rgba(255,255,255,.84)}.navbar.navbar-primary .dropdown-menu .active>a:focus,.navbar.navbar-primary .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-success{background-color:#4caf50;color:rgba(255,255,255,.84)}.navbar.navbar-success .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-success .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-success .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-success .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-success .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-success .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-success .dropdown-menu{border-radius:2px}.navbar.navbar-success .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-success .dropdown-menu li>a:focus,.navbar.navbar-success .dropdown-menu li>a:hover{color:#4caf50;background-color:#eee}.navbar.navbar-success .dropdown-menu .active>a{background-color:#4caf50;color:rgba(255,255,255,.84)}.navbar.navbar-success .dropdown-menu .active>a:focus,.navbar.navbar-success .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-info{background-color:#03a9f4;color:rgba(255,255,255,.84)}.navbar.navbar-info .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-info .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-info .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-info .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-info .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-info .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-info .dropdown-menu{border-radius:2px}.navbar.navbar-info .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-info .dropdown-menu li>a:focus,.navbar.navbar-info .dropdown-menu li>a:hover{color:#03a9f4;background-color:#eee}.navbar.navbar-info .dropdown-menu .active>a{background-color:#03a9f4;color:rgba(255,255,255,.84)}.navbar.navbar-info .dropdown-menu .active>a:focus,.navbar.navbar-info .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-warning{background-color:#ff5722;color:rgba(255,255,255,.84)}.navbar.navbar-warning .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-warning .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-warning .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-warning .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-warning .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-warning .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-warning .dropdown-menu{border-radius:2px}.navbar.navbar-warning .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-warning .dropdown-menu li>a:focus,.navbar.navbar-warning .dropdown-menu li>a:hover{color:#ff5722;background-color:#eee}.navbar.navbar-warning .dropdown-menu .active>a{background-color:#ff5722;color:rgba(255,255,255,.84)}.navbar.navbar-warning .dropdown-menu .active>a:focus,.navbar.navbar-warning .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-danger{background-color:#f44336;color:rgba(255,255,255,.84)}.navbar.navbar-danger .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-danger .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-danger .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-danger .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-danger .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-danger .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-danger .dropdown-menu{border-radius:2px}.navbar.navbar-danger .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-danger .dropdown-menu li>a:focus,.navbar.navbar-danger .dropdown-menu li>a:hover{color:#f44336;background-color:#eee}.navbar.navbar-danger .dropdown-menu .active>a{background-color:#f44336;color:rgba(255,255,255,.84)}.navbar.navbar-danger .dropdown-menu .active>a:focus,.navbar.navbar-danger .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar-inverse{background-color:#3f51b5}@media (max-width:1199px){.navbar .navbar-brand{height:50px;padding:10px 15px}.navbar .navbar-form{margin-top:10px}.navbar .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.dropdown-menu{border:0;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.26);box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.dropdown-menu .divider{background-color:rgba(0,0,0,.12)}.dropdown-menu li{overflow:hidden;position:relative}.dropdown-menu li a:hover{background-color:transparent;color:#009688}.alert{border:0;border-radius:0}.alert,.alert.alert-default{background-color:rgba(255,255,255,.84);color:rgba(255,255,255,.84)}.alert .alert-link,.alert a,.alert.alert-default .alert-link,.alert.alert-default a{color:rgba(255,255,255,.84)}.alert.alert-inverse{background-color:#3f51b5;color:#fff}.alert.alert-inverse .alert-link,.alert.alert-inverse a{color:#fff}.alert.alert-primary{background-color:#009688;color:rgba(255,255,255,.84)}.alert.alert-primary .alert-link,.alert.alert-primary a{color:rgba(255,255,255,.84)}.alert.alert-success{background-color:#4caf50;color:rgba(255,255,255,.84)}.alert.alert-success .alert-link,.alert.alert-success a{color:rgba(255,255,255,.84)}.alert.alert-info{background-color:#03a9f4;color:rgba(255,255,255,.84)}.alert.alert-info .alert-link,.alert.alert-info a{color:rgba(255,255,255,.84)}.alert.alert-warning{background-color:#ff5722;color:rgba(255,255,255,.84)}.alert.alert-warning .alert-link,.alert.alert-warning a{color:rgba(255,255,255,.84)}.alert.alert-danger{background-color:#f44336;color:rgba(255,255,255,.84)}.alert.alert-danger .alert-link,.alert.alert-danger a{color:rgba(255,255,255,.84)}.alert-danger,.alert-info,.alert-success,.alert-warning{color:rgba(255,255,255,.84)}.alert-default .alert-link,.alert-default a{color:rgba(0,0,0,.87)}.progress{height:4px;border-radius:0;-webkit-box-shadow:none;box-shadow:none;background:#c8c8c8}.progress .progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar,.progress .progress-bar.progress-bar-default{background-color:#009688}.progress .progress-bar.progress-bar-inverse{background-color:#3f51b5}.progress .progress-bar.progress-bar-primary{background-color:#009688}.progress .progress-bar.progress-bar-success{background-color:#4caf50}.progress .progress-bar.progress-bar-info{background-color:#03a9f4}.progress .progress-bar.progress-bar-warning{background-color:#ff5722}.progress .progress-bar.progress-bar-danger{background-color:#f44336}.text-warning{color:#ff5722}.text-primary{color:#009688}.text-danger{color:#f44336}.text-success{color:#4caf50}.text-info{color:#03a9f4}.nav-tabs{background:#009688}.nav-tabs>li>a{color:#FFF;border:0;margin:0}.nav-tabs>li>a:hover{background-color:transparent;border:0}.nav-tabs>li>a,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background-color:transparent!important;border:0!important;color:#FFF!important;font-weight:500}.nav-tabs>li.disabled>a,.nav-tabs>li.disabled>a:hover{color:rgba(255,255,255,.5)}.popover,.tooltip-inner{color:#ececec;line-height:1em;background:rgba(101,101,101,.9);border:none;border-radius:2px;-webkit-box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12)}.tooltip,.tooltip.in{opacity:1}.popover .arrow,.popover .tooltip-arrow,.tooltip .arrow,.tooltip .tooltip-arrow{display:none}.card{display:inline-block;position:relative;width:100%;border-radius:2px;color:rgba(0,0,0,.87);background:#fff;-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.card .card-height-indicator{margin-top:100%}.card .card-content{position:absolute;top:0;bottom:0;left:0;right:0}.card .card-image{height:60%;position:relative;overflow:hidden}.card .card-image img{width:100%;height:100%;border-top-left-radius:2px;border-top-right-radius:2px;pointer-events:none}.card .card-image .card-image-headline{position:absolute;bottom:16px;left:18px;color:#fff;font-size:2em}.card .card-body{height:30%;padding:18px}.card .card-footer{height:10%;padding:18px}.card .card-footer a,.card .card-footer button{margin:0!important;position:relative;bottom:25px;width:auto}.card .card-footer a:first-child,.card .card-footer button:first-child{left:-15px}.modal-content{-webkit-box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22);box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22);border-radius:2px;border:none}.modal-content .modal-header{border-bottom:none;padding-top:24px;padding-right:24px;padding-bottom:0;padding-left:24px}.modal-content .modal-body{padding-top:24px;padding-right:24px;padding-bottom:16px;padding-left:24px}.modal-content .modal-footer{border-top:none;padding:7px}.modal-content .modal-footer button{margin:0;padding-left:16px;padding-right:16px;width:auto}.modal-content .modal-footer button.pull-left{padding-left:5px;padding-right:5px;position:relative;left:-5px}.modal-content .modal-footer button+button{margin-bottom:16px}.modal-content .modal-body+.modal-footer{padding-top:0}.modal-backdrop{background:rgba(0,0,0,.3)}.panel{border-radius:2px;border:0;-webkit-box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12)}.panel.panel-default>.panel-heading,.panel>.panel-heading{background-color:#eee}.panel.panel-inverse>.panel-heading{background-color:#3f51b5}.panel.panel-primary>.panel-heading{background-color:#009688}.panel.panel-success>.panel-heading{background-color:#4caf50}.panel.panel-info>.panel-heading{background-color:#03a9f4}.panel.panel-warning>.panel-heading{background-color:#ff5722}.panel.panel-danger>.panel-heading{background-color:#f44336}[class*=panel-]>.panel-heading{color:rgba(255,255,255,.84);border:0}.panel-default>.panel-heading,.panel:not([class*=panel-])>.panel-heading{color:rgba(0,0,0,.87)}.panel-footer{background-color:#eee}hr.on-dark{color:#1a1a1a}hr.on-light{color:#fff}@media (-webkit-min-device-pixel-ratio:0.75),(min--moz-device-pixel-ratio:0.75),(-o-device-pixel-ratio:3/4),(min-device-pixel-ratio:0.75),(-o-min-device-pixel-ratio:3/4),(min-resolution:0.75dppx),(-webkit-min-device-pixel-ratio:1.25),(-o-min-device-pixel-ratio:5/4),(min-resolution:120dpi){hr{height:.75px}}@media (-webkit-min-device-pixel-ratio:1),(min--moz-device-pixel-ratio:1),(-o-device-pixel-ratio:1),(min-device-pixel-ratio:1),(-o-min-device-pixel-ratio:1/1),(min-resolution:1dppx),(-webkit-min-device-pixel-ratio:1.6666666666666667),(-o-min-device-pixel-ratio:5/3),(min-resolution:160dpi){hr{height:1px}}@media (-webkit-min-device-pixel-ratio:1.33),(min--moz-device-pixel-ratio:1.33),(-o-device-pixel-ratio:133/100),(min-device-pixel-ratio:1.33),(-o-min-device-pixel-ratio:133/100),(min-resolution:1.33dppx),(-webkit-min-device-pixel-ratio:2.21875),(-o-min-device-pixel-ratio:71/32),(min-resolution:213dpi){hr{height:1.33px}}@media (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-device-pixel-ratio:3/2),(min-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:3/2),(min-resolution:1.5dppx),(-webkit-min-device-pixel-ratio:2.5),(-o-min-device-pixel-ratio:5/2),(min-resolution:240dpi){hr{height:1.5px}}@media (-webkit-min-device-pixel-ratio:2),(min--moz-device-pixel-ratio:2),(-o-device-pixel-ratio:2/1),(min-device-pixel-ratio:2),(-o-min-device-pixel-ratio:2/1),(min-resolution:2dppx),(-webkit-min-device-pixel-ratio:3.9583333333333335),(-o-min-device-pixel-ratio:95/24),(min-resolution:380dpi){hr{height:2px}}@media (-webkit-min-device-pixel-ratio:3),(min--moz-device-pixel-ratio:3),(-o-device-pixel-ratio:3/1),(min-device-pixel-ratio:3),(-o-min-device-pixel-ratio:3/1),(min-resolution:3dppx),(-webkit-min-device-pixel-ratio:5),(-o-min-device-pixel-ratio:5/1),(min-resolution:480dpi){hr{height:3px}}@media (-webkit-min-device-pixel-ratio:4),(min--moz-device-pixel-ratio:4),(-o-device-pixel-ratio:4/1),(min-device-pixel-ratio:3),(-o-min-device-pixel-ratio:4/1),(min-resolution:4dppx),(-webkit-min-device-pixel-ratio:6.666666666666667),(-o-min-device-pixel-ratio:20/3),(min-resolution:640dpi){hr{height:4px}}*{-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-tap-highlight-color:transparent}:focus{outline:0}.snackbar{background-color:#323232;color:rgba(255,255,255,.84);font-size:14px;border-radius:2px;-webkit-box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);height:0;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,padding 0s linear .2s,height 0s linear .2s;-o-transition:-o-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,padding 0s linear .2s,height 0s linear .2s;transition:transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,padding 0s linear .2s,height 0s linear .2s;-webkit-transform:translateY(200%);-ms-transform:translateY(200%);-o-transform:translateY(200%);transform:translateY(200%)}.snackbar.snackbar-opened{padding:14px 15px;margin-bottom:20px;height:auto;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,height 0s linear .2s;-o-transition:-o-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,height 0s linear .2s;transition:transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,height 0s linear .2s;-webkit-transform:none;-ms-transform:none;-o-transform:none;transform:none}.snackbar.toast{border-radius:200px}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-ms-touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0}.noUi-handle{position:relative;z-index:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-stacking .noUi-handle{z-index:10}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;-o-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:10px}.noUi-handle{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:12px;height:12px;left:-10px;top:-5px;cursor:ew-resize;border-radius:100%;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out;border:1px solid}.noUi-vertical .noUi-handle{margin-left:5px;cursor:ns-resize}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-background{height:2px;margin:20px 0}.noUi-origin{margin:0;border-radius:0;height:2px;background:#c8c8c8}.noUi-origin[style^="left: 0"] .noUi-handle{background-color:#fff;border:2px solid #c8c8c8}.noUi-origin[style^="left: 0"] .noUi-handle.noUi-active{border-width:1px}.noUi-target{border-radius:2px}.noUi-horizontal{height:2px;margin:15px 0}.noUi-vertical{height:100%;width:2px;margin:0 15px;display:inline-block}.noUi-handle.noUi-active{-webkit-transform:scale3d(2.5,2.5,1);transform:scale3d(2.5,2.5,1)}[disabled].noUi-slider{opacity:.5}[disabled] .noUi-handle{cursor:not-allowed}.slider{background:#c8c8c8}.slider.noUi-connect,.slider.slider-default.noUi-connect{background-color:#009688}.slider.slider-inverse.noUi-connect{background-color:#3f51b5}.slider.slider-primary.noUi-connect{background-color:#009688}.slider.slider-success.noUi-connect{background-color:#4caf50}.slider.slider-info.noUi-connect{background-color:#03a9f4}.slider.slider-warning.noUi-connect{background-color:#ff5722}.slider.slider-danger.noUi-connect{background-color:#f44336}.slider .noUi-connect,.slider.slider-default .noUi-connect{background-color:#009688}.slider.slider-inverse .noUi-connect{background-color:#3f51b5}.slider.slider-primary .noUi-connect{background-color:#009688}.slider.slider-success .noUi-connect{background-color:#4caf50}.slider.slider-info .noUi-connect{background-color:#03a9f4}.slider.slider-warning .noUi-connect{background-color:#ff5722}.slider.slider-danger .noUi-connect{background-color:#f44336}.slider .noUi-handle,.slider.slider-default .noUi-handle{background-color:#009688}.slider.slider-inverse .noUi-handle{background-color:#3f51b5}.slider.slider-primary .noUi-handle{background-color:#009688}.slider.slider-success .noUi-handle{background-color:#4caf50}.slider.slider-info .noUi-handle{background-color:#03a9f4}.slider.slider-warning .noUi-handle{background-color:#ff5722}.slider.slider-danger .noUi-handle{background-color:#f44336}.slider .noUi-handle,.slider.slider-default .noUi-handle{border-color:#009688}.slider.slider-inverse .noUi-handle{border-color:#3f51b5}.slider.slider-primary .noUi-handle{border-color:#009688}.slider.slider-success .noUi-handle{border-color:#4caf50}.slider.slider-info .noUi-handle{border-color:#03a9f4}.slider.slider-warning .noUi-handle{border-color:#ff5722}.slider.slider-danger .noUi-handle{border-color:#f44336}.selectize-control.multi,.selectize-control.single{padding:0}.selectize-control.multi .selectize-input,.selectize-control.multi .selectize-input.input-active,.selectize-control.single .selectize-input,.selectize-control.single .selectize-input.input-active{cursor:text;background:0 0;-webkit-box-shadow:none;box-shadow:none;border:0;padding:0;height:100%;font-size:14px;line-height:30px}.selectize-control.multi .selectize-input .has-items,.selectize-control.multi .selectize-input.input-active .has-items,.selectize-control.single .selectize-input .has-items,.selectize-control.single .selectize-input.input-active .has-items{padding:0}.selectize-control.multi .selectize-input.input-active:after,.selectize-control.multi .selectize-input:after,.selectize-control.single .selectize-input.input-active:after,.selectize-control.single .selectize-input:after{right:5px;position:absolute;font-size:25px;content:"\e5c5";font-family:'Material Icons';speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.selectize-control.multi .selectize-input input,.selectize-control.multi .selectize-input.input-active input,.selectize-control.single .selectize-input input,.selectize-control.single .selectize-input.input-active input{font-size:14px;outline:0;border:0;background:0 0}.selectize-control.multi .selectize-input.input-active.label-floating-fix input,.selectize-control.multi .selectize-input.label-floating-fix input,.selectize-control.single .selectize-input.input-active.label-floating-fix input,.selectize-control.single .selectize-input.label-floating-fix input{opacity:0}.selectize-control.multi .selectize-input.input-active>.item,.selectize-control.multi .selectize-input.input-active>div,.selectize-control.multi .selectize-input>.item,.selectize-control.multi .selectize-input>div,.selectize-control.single .selectize-input.input-active>.item,.selectize-control.single .selectize-input.input-active>div,.selectize-control.single .selectize-input>.item,.selectize-control.single .selectize-input>div{display:inline-block;margin:0 8px 3px 0;padding:0;background:0 0;border:0}.selectize-control.multi .selectize-input.input-active>.item:after,.selectize-control.multi .selectize-input.input-active>div:after,.selectize-control.multi .selectize-input>.item:after,.selectize-control.multi .selectize-input>div:after,.selectize-control.single .selectize-input.input-active>.item:after,.selectize-control.single .selectize-input.input-active>div:after,.selectize-control.single .selectize-input>.item:after,.selectize-control.single .selectize-input>div:after{content:","}.selectize-control.multi .selectize-input.input-active>.item:last-of-type:after,.selectize-control.multi .selectize-input.input-active>div:last-of-type:after,.selectize-control.multi .selectize-input>.item:last-of-type:after,.selectize-control.multi .selectize-input>div:last-of-type:after,.selectize-control.single .selectize-input.input-active>.item:last-of-type:after,.selectize-control.single .selectize-input.input-active>div:last-of-type:after,.selectize-control.single .selectize-input>.item:last-of-type:after,.selectize-control.single .selectize-input>div:last-of-type:after{content:""}.selectize-control.multi .selectize-input.input-active>.item.active,.selectize-control.multi .selectize-input.input-active>div.active,.selectize-control.multi .selectize-input>.item.active,.selectize-control.multi .selectize-input>div.active,.selectize-control.single .selectize-input.input-active>.item.active,.selectize-control.single .selectize-input.input-active>div.active,.selectize-control.single .selectize-input>.item.active,.selectize-control.single .selectize-input>div.active{font-weight:700;background:0 0;border:0}.selectize-control.multi .selectize-dropdown,.selectize-control.single .selectize-dropdown{position:absolute;z-index:1000;border:0;width:100%!important;left:0!important;height:auto;background-color:#FFF;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);border-radius:2px;padding:0;margin-top:3px}.selectize-control.multi .selectize-dropdown .active,.selectize-control.single .selectize-dropdown .active{background-color:inherit}.selectize-control.multi .selectize-dropdown .highlight,.selectize-control.single .selectize-dropdown .highlight{background-color:#d5d8ff}.selectize-control.multi .selectize-dropdown .selected,.selectize-control.multi .selectize-dropdown .selected.active,.selectize-control.single .selectize-dropdown .selected,.selectize-control.single .selectize-dropdown .selected.active{background-color:#EEE}.selectize-control.multi .selectize-dropdown .optgroup-header,.selectize-control.multi .selectize-dropdown [data-selectable],.selectize-control.single .selectize-dropdown .optgroup-header,.selectize-control.single .selectize-dropdown [data-selectable]{padding:10px 20px;cursor:pointer}.selectize-control.multi .dropdown-active~.selectize-dropdown,.selectize-control.single .dropdown-active~.selectize-dropdown{display:block}.dropdownjs::after{right:5px;top:3px;font-size:25px;position:absolute;font-family:'Material Icons';font-style:normal;font-weight:400;content:"\e5c5";pointer-events:none;color:#757575} -/*# sourceMappingURL=bootstrap-material-design.min.css.map */ \ No newline at end of file diff --git a/dist/css/bootstrap-material-design.min.css.map b/dist/css/bootstrap-material-design.min.css.map deleted file mode 100644 index 93c75513..00000000 --- a/dist/css/bootstrap-material-design.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/_core.less","less/_form.less","less/_welljumbo.less","less/_shadows.less","less/_mixins.less","less/_buttons.less","less/_checkboxes.less","dist/css/bootstrap-material-design.css","bootstrap-material-design.css","less/_togglebutton.less","less/_radios.less","less/_inputs-size.less","less/_inputs.less","less/_lists.less","less/_navbar.less","less/_alerts.less","less/_progress.less","less/_typography.less","less/_tabs.less","less/_popups.less","less/_cards.less","less/_dialogs.less","less/_panels.less","less/_dividers.less","less/plugins/_plugin-snackbarjs.less","less/plugins/_plugin-nouislider.less","less/plugins/_plugin-selectize.less"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/css/ripples.css b/dist/css/ripples.css deleted file mode 100644 index cc88c40f..00000000 --- a/dist/css/ripples.css +++ /dev/null @@ -1,47 +0,0 @@ -.withripple { - position: relative; -} -.ripple-container { - position: absolute; - top: 0; - left: 0; - z-index: 1; - width: 100%; - height: 100%; - overflow: hidden; - border-radius: inherit; - pointer-events: none; -} -.ripple { - position: absolute; - width: 20px; - height: 20px; - margin-left: -10px; - margin-top: -10px; - border-radius: 100%; - background-color: #000; - background-color: rgba(0, 0, 0, 0.05); - -webkit-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 50%; - -ms-transform-origin: 50%; - -o-transform-origin: 50%; - transform-origin: 50%; - opacity: 0; - pointer-events: none; -} -.ripple.ripple-on { - -webkit-transition: opacity 0.15s ease-in 0s, -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; - -o-transition: opacity 0.15s ease-in 0s, -o-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; - transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; - opacity: 0.1; -} -.ripple.ripple-out { - -webkit-transition: opacity 0.1s linear 0s !important; - -o-transition: opacity 0.1s linear 0s !important; - transition: opacity 0.1s linear 0s !important; - opacity: 0; -} -/*# sourceMappingURL=ripples.css.map */ \ No newline at end of file diff --git a/dist/css/ripples.css.map b/dist/css/ripples.css.map deleted file mode 100644 index e52d9785..00000000 --- a/dist/css/ripples.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["/less/ripples.less","ripples.css"],"names":[],"mappings":"AAAA;EACI,mBAAA;CCCH;ADCD;EACI,mBAAA;EACA,OAAA;EACA,QAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,iBAAA;EACA,uBAAA;EACA,qBAAA;CCCH;ADCD;EACI,mBAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,oBAAA;EACA,uBAAA;EACA,sCAAA;EACA,4BAAA;MAAA,wBAAA;OAAA,uBAAA;UAAA,oBAAA;EACA,8BAAA;MAAA,0BAAA;OAAA,yBAAA;UAAA,sBAAA;EACA,WAAA;EACA,qBAAA;CCCH;ADCD;EACI,uGAAA;OAAA,6FAAA;UAAA,uFAAA;EACA,aAAA;CCCH;ADCD;EACI,sDAAA;OAAA,iDAAA;UAAA,8CAAA;EACA,WAAA;CCCH","file":"ripples.css","sourcesContent":[".withripple {\n position: relative;\n}\n.ripple-container {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: inherit;\n pointer-events: none;\n}\n.ripple {\n position: absolute;\n width: 20px;\n height: 20px;\n margin-left: -10px;\n margin-top: -10px;\n border-radius: 100%;\n background-color: #000; // fallback color\n background-color: rgba(0,0,0,0.05);\n transform: scale(1);\n transform-origin: 50%;\n opacity: 0;\n pointer-events: none;\n}\n.ripple.ripple-on {\n transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;\n opacity: 0.1;\n}\n.ripple.ripple-out {\n transition: opacity 0.1s linear 0s !important;\n opacity: 0;\n}\n",".withripple {\n position: relative;\n}\n.ripple-container {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: inherit;\n pointer-events: none;\n}\n.ripple {\n position: absolute;\n width: 20px;\n height: 20px;\n margin-left: -10px;\n margin-top: -10px;\n border-radius: 100%;\n background-color: #000;\n background-color: rgba(0, 0, 0, 0.05);\n transform: scale(1);\n transform-origin: 50%;\n opacity: 0;\n pointer-events: none;\n}\n.ripple.ripple-on {\n transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;\n opacity: 0.1;\n}\n.ripple.ripple-out {\n transition: opacity 0.1s linear 0s !important;\n opacity: 0;\n}\n/*# sourceMappingURL=ripples.css.map */"]} \ No newline at end of file diff --git a/dist/css/ripples.min.css b/dist/css/ripples.min.css deleted file mode 100644 index 80151ded..00000000 --- a/dist/css/ripples.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.withripple{position:relative}.ripple-container{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;overflow:hidden;border-radius:inherit;pointer-events:none}.ripple{position:absolute;width:20px;height:20px;margin-left:-10px;margin-top:-10px;border-radius:100%;background-color:#000;background-color:rgba(0,0,0,.05);-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);-webkit-transform-origin:50%;-ms-transform-origin:50%;-o-transform-origin:50%;transform-origin:50%;opacity:0;pointer-events:none}.ripple.ripple-on{-webkit-transition:opacity .15s ease-in 0s,-webkit-transform .5s cubic-bezier(.4,0,.2,1) .1s;-o-transition:opacity .15s ease-in 0s,-o-transform .5s cubic-bezier(.4,0,.2,1) .1s;transition:opacity .15s ease-in 0s,transform .5s cubic-bezier(.4,0,.2,1) .1s;opacity:.1}.ripple.ripple-out{-webkit-transition:opacity .1s linear 0s!important;-o-transition:opacity .1s linear 0s!important;transition:opacity .1s linear 0s!important;opacity:0} -/*# sourceMappingURL=ripples.min.css.map */ \ No newline at end of file diff --git a/dist/css/ripples.min.css.map b/dist/css/ripples.min.css.map deleted file mode 100644 index 43b7a707..00000000 --- a/dist/css/ripples.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/ripples.less"],"names":[],"mappings":"AAAA,YACI,SAAA,SAEJ,kBACI,SAAA,SACA,IAAA,EACA,KAAA,EACA,QAAA,EACA,MAAA,KACA,OAAA,KACA,SAAA,OACA,cAAA,QACA,eAAA,KAEJ,QACI,SAAA,SACA,MAAA,KACA,OAAA,KACA,YAAA,MACA,WAAA,MACA,cAAA,KACA,iBAAA,KACA,iBAAA,gBACA,kBAAA,SAAA,cAAA,SAAA,aAAA,SAAA,UAAA,SACA,yBAAA,IAAA,qBAAA,IAAA,oBAAA,IAAA,iBAAA,IACA,QAAA,EACA,eAAA,KAEJ,kBACI,mBAAA,QAAA,KAAA,QAAA,GAAA,kBAAA,IAAA,wBAAA,IAAA,cAAA,QAAA,KAAA,QAAA,GAAA,aAAA,IAAA,wBAAA,IAAA,WAAA,QAAA,KAAA,QAAA,GAAA,UAAA,IAAA,wBAAA,IACA,QAAA,GAEJ,mBACI,mBAAA,QAAA,IAAA,OAAA,aAAA,cAAA,QAAA,IAAA,OAAA,aAAA,WAAA,QAAA,IAAA,OAAA,aACA,QAAA"} \ No newline at end of file diff --git a/dist/js/material.js b/dist/js/material.js deleted file mode 100644 index 819152e1..00000000 --- a/dist/js/material.js +++ /dev/null @@ -1,352 +0,0 @@ -/* globals jQuery */ - -(function ($) { - // Selector to select only not already processed elements - $.expr[":"].notmdproc = function (obj) { - if ($(obj).data("mdproc")) { - return false; - } else { - return true; - } - }; - - function _isChar(evt) { - if (typeof evt.which == "undefined") { - return true; - } else if (typeof evt.which == "number" && evt.which > 0) { - return ( - !evt.ctrlKey - && !evt.metaKey - && !evt.altKey - && evt.which != 8 // backspace - && evt.which != 9 // tab - && evt.which != 13 // enter - && evt.which != 16 // shift - && evt.which != 17 // ctrl - && evt.which != 20 // caps lock - && evt.which != 27 // escape - ); - } - return false; - } - - function _addFormGroupFocus(element) { - var $element = $(element); - if (!$element.prop('disabled')) { // this is showing as undefined on chrome but works fine on firefox?? - $element.closest(".form-group").addClass("is-focused"); - } - } - - function _toggleDisabledState($element, state) { - var $target; - if ($element.hasClass('checkbox-inline') || $element.hasClass('radio-inline')) { - $target = $element; - } else { - $target = $element.closest('.checkbox').length ? $element.closest('.checkbox') : $element.closest('.radio'); - } - return $target.toggleClass('disabled', state); - } - - function _toggleTypeFocus($input) { - var disabledToggleType = false; - if ($input.is($.material.options.checkboxElements) || $input.is($.material.options.radioElements)) { - disabledToggleType = true; - } - $input.closest('label').hover(function () { - var $i = $(this).find('input'); - var isDisabled = $i.prop('disabled'); // hack because the _addFormGroupFocus() wasn't identifying the property on chrome - if (disabledToggleType) { - _toggleDisabledState($(this), isDisabled); - } - if (!isDisabled) { - _addFormGroupFocus($i); // need to find the input so we can check disablement - } - }, - function () { - _removeFormGroupFocus($(this).find('input')); - }); - } - - function _removeFormGroupFocus(element) { - $(element).closest(".form-group").removeClass("is-focused"); // remove class from form-group - } - - $.material = { - "options": { - // These options set what will be started by $.material.init() - "validate": true, - "input": true, - "ripples": true, - "checkbox": true, - "togglebutton": true, - "radio": true, - "arrive": true, - "autofill": false, - - "withRipples": [ - ".btn:not(.btn-link)", - ".card-image", - ".navbar a:not(.withoutripple)", - ".dropdown-menu a", - ".nav-tabs a:not(.withoutripple)", - ".withripple", - ".pagination li:not(.active):not(.disabled) a:not(.withoutripple)" - ].join(","), - "inputElements": "input.form-control, textarea.form-control, select.form-control", - "checkboxElements": ".checkbox > label > input[type=checkbox], label.checkbox-inline > input[type=checkbox]", - "togglebuttonElements": ".togglebutton > label > input[type=checkbox]", - "radioElements": ".radio > label > input[type=radio], label.radio-inline > input[type=radio]" - }, - "checkbox": function (selector) { - // Add fake-checkbox to material checkboxes - var $input = $((selector) ? selector : this.options.checkboxElements) - .filter(":notmdproc") - .data("mdproc", true) - .after(""); - - _toggleTypeFocus($input); - }, - "togglebutton": function (selector) { - // Add fake-checkbox to material checkboxes - var $input = $((selector) ? selector : this.options.togglebuttonElements) - .filter(":notmdproc") - .data("mdproc", true) - .after(""); - - _toggleTypeFocus($input); - }, - "radio": function (selector) { - // Add fake-radio to material radios - var $input = $((selector) ? selector : this.options.radioElements) - .filter(":notmdproc") - .data("mdproc", true) - .after(""); - - _toggleTypeFocus($input); - }, - "input": function (selector) { - $((selector) ? selector : this.options.inputElements) - .filter(":notmdproc") - .data("mdproc", true) - .each(function () { - var $input = $(this); - - // Requires form-group standard markup (will add it if necessary) - var $formGroup = $input.closest(".form-group"); // note that form-group may be grandparent in the case of an input-group - if ($formGroup.length === 0 && $input.attr('type') !== "hidden" && !$input.attr('hidden')) { - $input.wrap("
"); - $formGroup = $input.closest(".form-group"); // find node after attached (otherwise additional attachments don't work) - } - - // Legacy - Add hint label if using the old shorthand data-hint attribute on the input - if ($input.attr("data-hint")) { - $input.after("

" + $input.attr("data-hint") + "

"); - $input.removeAttr("data-hint"); - } - - // Legacy - Change input-sm/lg to form-group-sm/lg instead (preferred standard and simpler css/less variants) - var legacySizes = { - "input-lg": "form-group-lg", - "input-sm": "form-group-sm" - }; - $.each(legacySizes, function (legacySize, standardSize) { - if ($input.hasClass(legacySize)) { - $input.removeClass(legacySize); - $formGroup.addClass(standardSize); - } - }); - - // Legacy - Add label-floating if using old shorthand - if ($input.hasClass("floating-label")) { - var placeholder = $input.attr("placeholder"); - $input.attr("placeholder", null).removeClass("floating-label"); - var id = $input.attr("id"); - var forAttribute = ""; - if (id) { - forAttribute = "for='" + id + "'"; - } - $formGroup.addClass("label-floating"); - $input.after(""); - } - - // Set as empty if is empty (damn I must improve this...) - if ($input.val() === null || $input.val() == "undefined" || $input.val() === "") { - $formGroup.addClass("is-empty"); - } - - // Support for file input - if ($formGroup.find("input[type=file]").length > 0) { - $formGroup.addClass("is-fileinput"); - } - }); - }, - "attachInputEventHandlers": function () { - var validate = this.options.validate; - - $(document) - .on("keydown paste", ".form-control", function (e) { - if (_isChar(e)) { - $(this).closest(".form-group").removeClass("is-empty"); - } - }) - .on("keyup change", ".form-control", function () { - var $input = $(this); - var $formGroup = $input.closest(".form-group"); - var isValid = (typeof $input[0].checkValidity === "undefined" || $input[0].checkValidity()); - - if ($input.val() === "") { - $formGroup.addClass("is-empty"); - } - else { - $formGroup.removeClass("is-empty"); - } - - // Validation events do not bubble, so they must be attached directly to the input: http://jsfiddle.net/PEpRM/1/ - // Further, even the bind method is being caught, but since we are already calling #checkValidity here, just alter - // the form-group on change. - // - // NOTE: I'm not sure we should be intervening regarding validation, this seems better as a README and snippet of code. - // BUT, I've left it here for backwards compatibility. - if (validate) { - if (isValid) { - $formGroup.removeClass("has-error"); - } - else { - $formGroup.addClass("has-error"); - } - } - }) - .on("focus", ".form-control, .form-group.is-fileinput", function () { - _addFormGroupFocus(this); - }) - .on("blur", ".form-control, .form-group.is-fileinput", function () { - _removeFormGroupFocus(this); - }) - // make sure empty is added back when there is a programmatic value change. - // NOTE: programmatic changing of value using $.val() must trigger the change event i.e. $.val('x').trigger('change') - .on("change", ".form-group input", function () { - var $input = $(this); - if ($input.attr("type") == "file") { - return; - } - - var $formGroup = $input.closest(".form-group"); - var value = $input.val(); - if (value) { - $formGroup.removeClass("is-empty"); - } else { - $formGroup.addClass("is-empty"); - } - }) - // set the fileinput readonly field with the name of the file - .on("change", ".form-group.is-fileinput input[type='file']", function () { - var $input = $(this); - var $formGroup = $input.closest(".form-group"); - var value = ""; - $.each(this.files, function (i, file) { - value += file.name + ", "; - }); - value = value.substring(0, value.length - 2); - if (value) { - $formGroup.removeClass("is-empty"); - } else { - $formGroup.addClass("is-empty"); - } - $formGroup.find("input.form-control[readonly]").val(value); - }); - }, - "ripples": function (selector) { - $((selector) ? selector : this.options.withRipples).ripples(); - }, - "autofill": function () { - // This part of code will detect autofill when the page is loading (username and password inputs for example) - var loading = setInterval(function () { - $("input[type!=checkbox]").each(function () { - var $this = $(this); - if ($this.val() && $this.val() !== $this.attr("value")) { - $this.trigger("change"); - } - }); - }, 100); - - // After 10 seconds we are quite sure all the needed inputs are autofilled then we can stop checking them - setTimeout(function () { - clearInterval(loading); - }, 10000); - }, - "attachAutofillEventHandlers": function () { - // Listen on inputs of the focused form (because user can select from the autofill dropdown only when the input has focus) - var focused; - $(document) - .on("focus", "input", function () { - var $inputs = $(this).parents("form").find("input").not("[type=file]"); - focused = setInterval(function () { - $inputs.each(function () { - var $this = $(this); - if ($this.val() !== $this.attr("value")) { - $this.trigger("change"); - } - }); - }, 100); - }) - .on("blur", ".form-group input", function () { - clearInterval(focused); - }); - }, - "init": function (options) { - this.options = $.extend({}, this.options, options); - var $document = $(document); - - if ($.fn.ripples && this.options.ripples) { - this.ripples(); - } - if (this.options.input) { - this.input(); - this.attachInputEventHandlers(); - } - if (this.options.checkbox) { - this.checkbox(); - } - if (this.options.togglebutton) { - this.togglebutton(); - } - if (this.options.radio) { - this.radio(); - } - if (this.options.autofill) { - this.autofill(); - this.attachAutofillEventHandlers(); - } - - if (document.arrive && this.options.arrive) { - if ($.fn.ripples && this.options.ripples) { - $document.arrive(this.options.withRipples, function () { - $.material.ripples($(this)); - }); - } - if (this.options.input) { - $document.arrive(this.options.inputElements, function () { - $.material.input($(this)); - }); - } - if (this.options.checkbox) { - $document.arrive(this.options.checkboxElements, function () { - $.material.checkbox($(this)); - }); - } - if (this.options.radio) { - $document.arrive(this.options.radioElements, function () { - $.material.radio($(this)); - }); - } - if (this.options.togglebutton) { - $document.arrive(this.options.togglebuttonElements, function () { - $.material.togglebutton($(this)); - }); - } - - } - } - }; - -})(jQuery); diff --git a/dist/js/material.min.js b/dist/js/material.min.js deleted file mode 100644 index 774bf8dd..00000000 --- a/dist/js/material.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(a){function b(a){return"undefined"==typeof a.which?!0:"number"==typeof a.which&&a.which>0?!a.ctrlKey&&!a.metaKey&&!a.altKey&&8!=a.which&&9!=a.which&&13!=a.which&&16!=a.which&&17!=a.which&&20!=a.which&&27!=a.which:!1}function c(b){var c=a(b);c.prop("disabled")||c.closest(".form-group").addClass("is-focused")}function d(a,b){var c;return c=a.hasClass("checkbox-inline")||a.hasClass("radio-inline")?a:a.closest(".checkbox").length?a.closest(".checkbox"):a.closest(".radio"),c.toggleClass("disabled",b)}function e(b){var e=!1;(b.is(a.material.options.checkboxElements)||b.is(a.material.options.radioElements))&&(e=!0),b.closest("label").hover(function(){var b=a(this).find("input"),f=b.prop("disabled");e&&d(a(this),f),f||c(b)},function(){f(a(this).find("input"))})}function f(b){a(b).closest(".form-group").removeClass("is-focused")}a.expr[":"].notmdproc=function(b){return a(b).data("mdproc")?!1:!0},a.material={options:{validate:!0,input:!0,ripples:!0,checkbox:!0,togglebutton:!0,radio:!0,arrive:!0,autofill:!1,withRipples:[".btn:not(.btn-link)",".card-image",".navbar a:not(.withoutripple)",".dropdown-menu a",".nav-tabs a:not(.withoutripple)",".withripple",".pagination li:not(.active):not(.disabled) a:not(.withoutripple)"].join(","),inputElements:"input.form-control, textarea.form-control, select.form-control",checkboxElements:".checkbox > label > input[type=checkbox], label.checkbox-inline > input[type=checkbox]",togglebuttonElements:".togglebutton > label > input[type=checkbox]",radioElements:".radio > label > input[type=radio], label.radio-inline > input[type=radio]"},checkbox:function(b){var c=a(b?b:this.options.checkboxElements).filter(":notmdproc").data("mdproc",!0).after("");e(c)},togglebutton:function(b){var c=a(b?b:this.options.togglebuttonElements).filter(":notmdproc").data("mdproc",!0).after("");e(c)},radio:function(b){var c=a(b?b:this.options.radioElements).filter(":notmdproc").data("mdproc",!0).after("");e(c)},input:function(b){a(b?b:this.options.inputElements).filter(":notmdproc").data("mdproc",!0).each(function(){var b=a(this),c=b.closest(".form-group");0!==c.length||"hidden"===b.attr("type")||b.attr("hidden")||(b.wrap("
"),c=b.closest(".form-group")),b.attr("data-hint")&&(b.after("

"+b.attr("data-hint")+"

"),b.removeAttr("data-hint"));var d={"input-lg":"form-group-lg","input-sm":"form-group-sm"};if(a.each(d,function(a,d){b.hasClass(a)&&(b.removeClass(a),c.addClass(d))}),b.hasClass("floating-label")){var e=b.attr("placeholder");b.attr("placeholder",null).removeClass("floating-label");var f=b.attr("id"),g="";f&&(g="for='"+f+"'"),c.addClass("label-floating"),b.after("")}(null===b.val()||"undefined"==b.val()||""===b.val())&&c.addClass("is-empty"),c.find("input[type=file]").length>0&&c.addClass("is-fileinput")})},attachInputEventHandlers:function(){var d=this.options.validate;a(document).on("keydown paste",".form-control",function(c){b(c)&&a(this).closest(".form-group").removeClass("is-empty")}).on("keyup change",".form-control",function(){var b=a(this),c=b.closest(".form-group"),e="undefined"==typeof b[0].checkValidity||b[0].checkValidity();""===b.val()?c.addClass("is-empty"):c.removeClass("is-empty"),d&&(e?c.removeClass("has-error"):c.addClass("has-error"))}).on("focus",".form-control, .form-group.is-fileinput",function(){c(this)}).on("blur",".form-control, .form-group.is-fileinput",function(){f(this)}).on("change",".form-group input",function(){var b=a(this);if("file"!=b.attr("type")){var c=b.closest(".form-group"),d=b.val();d?c.removeClass("is-empty"):c.addClass("is-empty")}}).on("change",".form-group.is-fileinput input[type='file']",function(){var b=a(this),c=b.closest(".form-group"),d="";a.each(this.files,function(a,b){d+=b.name+", "}),d=d.substring(0,d.length-2),d?c.removeClass("is-empty"):c.addClass("is-empty"),c.find("input.form-control[readonly]").val(d)})},ripples:function(b){a(b?b:this.options.withRipples).ripples()},autofill:function(){var b=setInterval(function(){a("input[type!=checkbox]").each(function(){var b=a(this);b.val()&&b.val()!==b.attr("value")&&b.trigger("change")})},100);setTimeout(function(){clearInterval(b)},1e4)},attachAutofillEventHandlers:function(){var b;a(document).on("focus","input",function(){var c=a(this).parents("form").find("input").not("[type=file]");b=setInterval(function(){c.each(function(){var b=a(this);b.val()!==b.attr("value")&&b.trigger("change")})},100)}).on("blur",".form-group input",function(){clearInterval(b)})},init:function(b){this.options=a.extend({},this.options,b);var c=a(document);a.fn.ripples&&this.options.ripples&&this.ripples(),this.options.input&&(this.input(),this.attachInputEventHandlers()),this.options.checkbox&&this.checkbox(),this.options.togglebutton&&this.togglebutton(),this.options.radio&&this.radio(),this.options.autofill&&(this.autofill(),this.attachAutofillEventHandlers()),document.arrive&&this.options.arrive&&(a.fn.ripples&&this.options.ripples&&c.arrive(this.options.withRipples,function(){a.material.ripples(a(this))}),this.options.input&&c.arrive(this.options.inputElements,function(){a.material.input(a(this))}),this.options.checkbox&&c.arrive(this.options.checkboxElements,function(){a.material.checkbox(a(this))}),this.options.radio&&c.arrive(this.options.radioElements,function(){a.material.radio(a(this))}),this.options.togglebutton&&c.arrive(this.options.togglebuttonElements,function(){a.material.togglebutton(a(this))}))}}}(jQuery); -//# sourceMappingURL=material.min.js.map \ No newline at end of file diff --git a/dist/js/material.min.js.map b/dist/js/material.min.js.map deleted file mode 100644 index 5134776c..00000000 --- a/dist/js/material.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["material.js"],"names":["$","_isChar","evt","which","ctrlKey","metaKey","altKey","_addFormGroupFocus","element","$element","prop","closest","addClass","_toggleDisabledState","state","$target","hasClass","length","toggleClass","_toggleTypeFocus","$input","disabledToggleType","is","material","options","checkboxElements","radioElements","hover","$i","this","find","isDisabled","_removeFormGroupFocus","removeClass","expr","notmdproc","obj","data","validate","input","ripples","checkbox","togglebutton","radio","arrive","autofill","withRipples","join","inputElements","togglebuttonElements","selector","filter","after","each","$formGroup","attr","wrap","removeAttr","legacySizes","input-lg","input-sm","legacySize","standardSize","placeholder","id","forAttribute","val","attachInputEventHandlers","document","on","e","isValid","checkValidity","value","files","i","file","name","substring","loading","setInterval","$this","trigger","setTimeout","clearInterval","attachAutofillEventHandlers","focused","$inputs","parents","not","init","extend","$document","fn","jQuery"],"mappings":"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","file":"material.min.js"} \ No newline at end of file diff --git a/dist/js/ripples.js b/dist/js/ripples.js deleted file mode 100644 index 82b67884..00000000 --- a/dist/js/ripples.js +++ /dev/null @@ -1,324 +0,0 @@ -/* Copyright 2014+, Federico Zivolo, LICENSE at https://github.com/FezVrasta/bootstrap-material-design/blob/master/LICENSE.md */ -/* globals jQuery, navigator */ - -(function($, window, document, undefined) { - - "use strict"; - - /** - * Define the name of the plugin - */ - var ripples = "ripples"; - - - /** - * Get an instance of the plugin - */ - var self = null; - - - /** - * Define the defaults of the plugin - */ - var defaults = {}; - - - /** - * Create the main plugin function - */ - function Ripples(element, options) { - self = this; - - this.element = $(element); - - this.options = $.extend({}, defaults, options); - - this._defaults = defaults; - this._name = ripples; - - this.init(); - } - - - /** - * Initialize the plugin - */ - Ripples.prototype.init = function() { - var $element = this.element; - - $element.on("mousedown touchstart", function(event) { - /** - * Verify if the user is just touching on a device and return if so - */ - if(self.isTouch() && event.type === "mousedown") { - return; - } - - - /** - * Verify if the current element already has a ripple wrapper element and - * creates if it doesn't - */ - if(!($element.find(".ripple-container").length)) { - $element.append("
"); - } - - - /** - * Find the ripple wrapper - */ - var $wrapper = $element.children(".ripple-container"); - - - /** - * Get relY and relX positions - */ - var relY = self.getRelY($wrapper, event); - var relX = self.getRelX($wrapper, event); - - - /** - * If relY and/or relX are false, return the event - */ - if(!relY && !relX) { - return; - } - - - /** - * Get the ripple color - */ - var rippleColor = self.getRipplesColor($element); - - - /** - * Create the ripple element - */ - var $ripple = $("
"); - - $ripple - .addClass("ripple") - .css({ - "left": relX, - "top": relY, - "background-color": rippleColor - }); - - - /** - * Append the ripple to the wrapper - */ - $wrapper.append($ripple); - - - /** - * Make sure the ripple has the styles applied (ugly hack but it works) - */ - (function() { return window.getComputedStyle($ripple[0]).opacity; })(); - - - /** - * Turn on the ripple animation - */ - self.rippleOn($element, $ripple); - - - /** - * Call the rippleEnd function when the transition "on" ends - */ - setTimeout(function() { - self.rippleEnd($ripple); - }, 500); - - - /** - * Detect when the user leaves the element - */ - $element.on("mouseup mouseleave touchend", function() { - $ripple.data("mousedown", "off"); - - if($ripple.data("animating") === "off") { - self.rippleOut($ripple); - } - }); - - }); - }; - - - /** - * Get the new size based on the element height/width and the ripple width - */ - Ripples.prototype.getNewSize = function($element, $ripple) { - - return (Math.max($element.outerWidth(), $element.outerHeight()) / $ripple.outerWidth()) * 2.5; - }; - - - /** - * Get the relX - */ - Ripples.prototype.getRelX = function($wrapper, event) { - var wrapperOffset = $wrapper.offset(); - - if(!self.isTouch()) { - /** - * Get the mouse position relative to the ripple wrapper - */ - return event.pageX - wrapperOffset.left; - } else { - /** - * Make sure the user is using only one finger and then get the touch - * position relative to the ripple wrapper - */ - event = event.originalEvent; - - if(event.touches.length === 1) { - return event.touches[0].pageX - wrapperOffset.left; - } - - return false; - } - }; - - - /** - * Get the relY - */ - Ripples.prototype.getRelY = function($wrapper, event) { - var wrapperOffset = $wrapper.offset(); - - if(!self.isTouch()) { - /** - * Get the mouse position relative to the ripple wrapper - */ - return event.pageY - wrapperOffset.top; - } else { - /** - * Make sure the user is using only one finger and then get the touch - * position relative to the ripple wrapper - */ - event = event.originalEvent; - - if(event.touches.length === 1) { - return event.touches[0].pageY - wrapperOffset.top; - } - - return false; - } - }; - - - /** - * Get the ripple color - */ - Ripples.prototype.getRipplesColor = function($element) { - - var color = $element.data("ripple-color") ? $element.data("ripple-color") : window.getComputedStyle($element[0]).color; - - return color; - }; - - - /** - * Verify if the client browser has transistion support - */ - Ripples.prototype.hasTransitionSupport = function() { - var thisBody = document.body || document.documentElement; - var thisStyle = thisBody.style; - - var support = ( - thisStyle.transition !== undefined || - thisStyle.WebkitTransition !== undefined || - thisStyle.MozTransition !== undefined || - thisStyle.MsTransition !== undefined || - thisStyle.OTransition !== undefined - ); - - return support; - }; - - - /** - * Verify if the client is using a mobile device - */ - Ripples.prototype.isTouch = function() { - return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); - }; - - - /** - * End the animation of the ripple - */ - Ripples.prototype.rippleEnd = function($ripple) { - $ripple.data("animating", "off"); - - if($ripple.data("mousedown") === "off") { - self.rippleOut($ripple); - } - }; - - - /** - * Turn off the ripple effect - */ - Ripples.prototype.rippleOut = function($ripple) { - $ripple.off(); - - if(self.hasTransitionSupport()) { - $ripple.addClass("ripple-out"); - } else { - $ripple.animate({"opacity": 0}, 100, function() { - $ripple.trigger("transitionend"); - }); - } - - $ripple.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function() { - $ripple.remove(); - }); - }; - - - /** - * Turn on the ripple effect - */ - Ripples.prototype.rippleOn = function($element, $ripple) { - var size = self.getNewSize($element, $ripple); - - if(self.hasTransitionSupport()) { - $ripple - .css({ - "-ms-transform": "scale(" + size + ")", - "-moz-transform": "scale(" + size + ")", - "-webkit-transform": "scale(" + size + ")", - "transform": "scale(" + size + ")" - }) - .addClass("ripple-on") - .data("animating", "on") - .data("mousedown", "on"); - } else { - $ripple.animate({ - "width": Math.max($element.outerWidth(), $element.outerHeight()) * 2, - "height": Math.max($element.outerWidth(), $element.outerHeight()) * 2, - "margin-left": Math.max($element.outerWidth(), $element.outerHeight()) * (-1), - "margin-top": Math.max($element.outerWidth(), $element.outerHeight()) * (-1), - "opacity": 0.2 - }, 500, function() { - $ripple.trigger("transitionend"); - }); - } - }; - - - /** - * Create the jquery plugin function - */ - $.fn.ripples = function(options) { - return this.each(function() { - if(!$.data(this, "plugin_" + ripples)) { - $.data(this, "plugin_" + ripples, new Ripples(this, options)); - } - }); - }; - -})(jQuery, window, document); diff --git a/dist/js/ripples.min.js b/dist/js/ripples.min.js deleted file mode 100644 index 5c01e4c1..00000000 --- a/dist/js/ripples.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(a,b,c,d){"use strict";function e(b,c){g=this,this.element=a(b),this.options=a.extend({},h,c),this._defaults=h,this._name=f,this.init()}var f="ripples",g=null,h={};e.prototype.init=function(){var c=this.element;c.on("mousedown touchstart",function(d){if(!g.isTouch()||"mousedown"!==d.type){c.find(".ripple-container").length||c.append('
');var e=c.children(".ripple-container"),f=g.getRelY(e,d),h=g.getRelX(e,d);if(f||h){var i=g.getRipplesColor(c),j=a("
");j.addClass("ripple").css({left:h,top:f,"background-color":i}),e.append(j),function(){return b.getComputedStyle(j[0]).opacity}(),g.rippleOn(c,j),setTimeout(function(){g.rippleEnd(j)},500),c.on("mouseup mouseleave touchend",function(){j.data("mousedown","off"),"off"===j.data("animating")&&g.rippleOut(j)})}}})},e.prototype.getNewSize=function(a,b){return Math.max(a.outerWidth(),a.outerHeight())/b.outerWidth()*2.5},e.prototype.getRelX=function(a,b){var c=a.offset();return g.isTouch()?(b=b.originalEvent,1===b.touches.length?b.touches[0].pageX-c.left:!1):b.pageX-c.left},e.prototype.getRelY=function(a,b){var c=a.offset();return g.isTouch()?(b=b.originalEvent,1===b.touches.length?b.touches[0].pageY-c.top:!1):b.pageY-c.top},e.prototype.getRipplesColor=function(a){var c=a.data("ripple-color")?a.data("ripple-color"):b.getComputedStyle(a[0]).color;return c},e.prototype.hasTransitionSupport=function(){var a=c.body||c.documentElement,b=a.style,e=b.transition!==d||b.WebkitTransition!==d||b.MozTransition!==d||b.MsTransition!==d||b.OTransition!==d;return e},e.prototype.isTouch=function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},e.prototype.rippleEnd=function(a){a.data("animating","off"),"off"===a.data("mousedown")&&g.rippleOut(a)},e.prototype.rippleOut=function(a){a.off(),g.hasTransitionSupport()?a.addClass("ripple-out"):a.animate({opacity:0},100,function(){a.trigger("transitionend")}),a.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(){a.remove()})},e.prototype.rippleOn=function(a,b){var c=g.getNewSize(a,b);g.hasTransitionSupport()?b.css({"-ms-transform":"scale("+c+")","-moz-transform":"scale("+c+")","-webkit-transform":"scale("+c+")",transform:"scale("+c+")"}).addClass("ripple-on").data("animating","on").data("mousedown","on"):b.animate({width:2*Math.max(a.outerWidth(),a.outerHeight()),height:2*Math.max(a.outerWidth(),a.outerHeight()),"margin-left":-1*Math.max(a.outerWidth(),a.outerHeight()),"margin-top":-1*Math.max(a.outerWidth(),a.outerHeight()),opacity:.2},500,function(){b.trigger("transitionend")})},a.fn.ripples=function(b){return this.each(function(){a.data(this,"plugin_"+f)||a.data(this,"plugin_"+f,new e(this,b))})}}(jQuery,window,document); -//# sourceMappingURL=ripples.min.js.map \ No newline at end of file diff --git a/dist/js/ripples.min.js.map b/dist/js/ripples.min.js.map deleted file mode 100644 index 90f64363..00000000 --- a/dist/js/ripples.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["ripples.js"],"names":["$","window","document","undefined","Ripples","element","options","self","this","extend","defaults","_defaults","_name","ripples","init","prototype","$element","on","event","isTouch","type","find","append","$wrapper","children","relY","getRelY","relX","getRelX","rippleColor","getRipplesColor","$ripple","addClass","css","left","top","background-color","getComputedStyle","opacity","rippleOn","setTimeout","rippleEnd","data","rippleOut","getNewSize","Math","max","outerWidth","outerHeight","wrapperOffset","offset","originalEvent","touches","length","pageX","pageY","color","hasTransitionSupport","thisBody","body","documentElement","thisStyle","style","support","transition","WebkitTransition","MozTransition","MsTransition","OTransition","test","navigator","userAgent","off","animate","trigger","remove","size","-ms-transform","-moz-transform","-webkit-transform","transform","width","height","margin-left","margin-top","fn","each","jQuery"],"mappings":"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","file":"ripples.min.js"} \ No newline at end of file diff --git a/docs/4.0/about/brand/index.html b/docs/4.0/about/brand/index.html new file mode 100644 index 00000000..6d956ec3 --- /dev/null +++ b/docs/4.0/about/brand/index.html @@ -0,0 +1,1320 @@ + + + + + + + + + Brand guidelines · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Brand guidelines

+

Documentation and examples for Bootstrap's logo and brand usage guidelines.

+ + +

Have a need for Bootstrap’s brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. These guidelines were inspired by MailChimp’s Brand Assets.

+ + + +

Use either the Bootstrap mark (a capital B) or the standard logo (just Bootstrap). It should always appear in San Francisco Display Semibold. Do not use the Twitter bird in association with Bootstrap.

+ +
+
+ Bootstrap +
+
+ Bootstrap +
+
+
+
+ Bootstrap +
+
+ Bootstrap +
+
+ +

Download mark

+ +

Download the Bootstrap mark in one of three styles, each available as an SVG file. Right click, Save as.

+ +
+
+ Bootstrap +
+
+ Bootstrap +
+
+ Bootstrap +
+
+ +

Name

+ +

The project and framework should always be referred to as Bootstrap. No Twitter before it, no capital s, and no abbreviations except for one, a capital B.

+ +
+
+ Bootstrap + Right +
+
+ BootStrap + Wrong +
+
+ Twitter Bootstrap + Wrong +
+
+ +

Colors

+ +

Our docs and branding use a handful of primary colors to differentiate what is Bootstrap from what is in Bootstrap. In other words, if it’s purple, it’s representative of Bootstrap.

+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/about/history/index.html b/docs/4.0/about/history/index.html new file mode 100644 index 00000000..4c558997 --- /dev/null +++ b/docs/4.0/about/history/index.html @@ -0,0 +1,1246 @@ + + + + + + + + + History · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

History

+

A brief overview of the history of Bootstrap.

+ + +

Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world.

+ +

Bootstrap was created at Twitter in mid-2010 by @mdo and @fat. Prior to being an open-sourced framework, Bootstrap was known as Twitter Blueprint. A few months into development, Twitter held its first Hack Week and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today.

+ +

Originally released on , we’ve since had over twenty releases, including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/about/license/index.html b/docs/4.0/about/license/index.html new file mode 100644 index 00000000..d2d4c12a --- /dev/null +++ b/docs/4.0/about/license/index.html @@ -0,0 +1,1276 @@ + + + + + + + + + License FAQs · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

License FAQs

+

Commonly asked questions about Bootstrap's open source license.

+ + +

Bootstrap is released under the MIT license and is copyright 2017 Twitter. Boiled down to smaller chunks, it can be described with the following conditions.

+ +

It requires you to:

+ +
    +
  • Keep the license and copyright notice included in Bootstrap’s CSS and JavaScript files when you use them in your works
  • +
+ +

It permits you to:

+ +
    +
  • Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes
  • +
  • Use Bootstrap in packages or distributions that you create
  • +
  • Modify the source code
  • +
  • Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license
  • +
+ +

It forbids you to:

+ +
    +
  • Hold the authors and license owners liable for damages as Bootstrap is provided without warranty
  • +
  • Hold the creators or copyright holders of Bootstrap liable
  • +
  • Redistribute any piece of Bootstrap without proper attribution
  • +
  • Use any marks owned by Twitter in any way that might state or imply that Twitter endorses your distribution
  • +
  • Use any marks owned by Twitter in any way that might state or imply that you created the Twitter software in question
  • +
+ +

It does not require you to:

+ +
    +
  • Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it
  • +
  • Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged)
  • +
+ +

The full Bootstrap license is located in the project repository for more information.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/about/team/index.html b/docs/4.0/about/team/index.html new file mode 100644 index 00000000..61dd2692 --- /dev/null +++ b/docs/4.0/about/team/index.html @@ -0,0 +1,1328 @@ + + + + + + + + + Team · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Team

+

An overview of the founding team and core contributors to Bootstrap.

+ + +

Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community.

+ + + +

Get involved with Bootstrap development by opening an issue or submitting a pull request. Read our contributing guidelines for information on how we develop.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/about/translations/index.html b/docs/4.0/about/translations/index.html new file mode 100644 index 00000000..8f2cc67a --- /dev/null +++ b/docs/4.0/about/translations/index.html @@ -0,0 +1,1254 @@ + + + + + + + + + Translations · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Translations

+

Links to community-translated Bootstrap documentation sites.

+ + +

Community members have translated Bootstrap’s documentation into various languages. None are officially supported and they may not always be up to date.

+ + + +

We don’t help organize or host translations, we just link to them.

+ +

Finished a new or better translation? Open a pull request to add it to our list.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/browser-bugs/index.html b/docs/4.0/browser-bugs/index.html new file mode 100644 index 00000000..981a96d7 --- /dev/null +++ b/docs/4.0/browser-bugs/index.html @@ -0,0 +1,1925 @@ + + + + + + + + + Wall of browser bugs · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Wall of browser bugs

+

+ + +

Bootstrap currently works around several outstanding browser bugs in major browsers to deliver the best cross-browser experience possible. Some bugs, like those listed below, cannot be solved by us.

+ +

We publicly list browser bugs that are impacting us here, in the hopes of expediting the process of fixing them. For information on Bootstrap’s browser compatibility, see our browser compatibility docs.

+ +

See also:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Browser(s)Summary of bugUpstream bug(s)Bootstrap issue(s)
Edge +

Visual artifacts in scrollable modal dialogs

+
Edge issue #9011176 +#20755 +
Edge +

Native browser tooltip for title shows on first keyboard focus (in addition to custom tooltip component)

+
Edge issue #6793560 +#18692 +
Edge +

Hovered element still remains in :hover state after scrolling away.

+
Edge issue #5381673 +#14211 +
Edge +

CSS border-radius sometimes causes lines of bleed-through of the background-color of the parent element.

+
Edge issue #3342037 +#16671 +
Edge +

background of <tr> is only applied to first child cell instead of all cells in the row

+
Edge issue #5865620 +#18504 +
Edge +

@-ms-viewport{width: device-width;} has side-effect of making scrollbars auto-hide

+
Edge issue #7165383 +#18543 +
Edge +

Background color from lower layer bleeds through transparent border in some cases

+
Edge issue #6274505 +#18228 +
Edge +

Hovering over descendant SVG element fires mouseleave event at ancestor

+
Edge issue #7787318 +#19670 +
Edge +

Active position: fixed; <button> flickers when scrolling

+
Edge issue #8770398 +#20507 +
Firefox +

.table-bordered with an empty <tbody> is missing borders.

+
Mozilla bug #1023761 +#13453 +
Firefox +

If the disabled state of a form control is changed via JavaScript, the normal state doesn’t return after refreshing the page.

+
Mozilla bug #654072 +#793 +
Firefox +

focus events should not be fired at the document object

+
Mozilla bug #1228802 +#18365 +
Firefox +

Wide floated table doesn’t wrap onto new line

+
Mozilla bug #1277782 +#19839 +
Firefox +

Mouse sometimes not within element for purposes of mouseenter/mouseleave when it’s within SVG elements

+
Mozilla bug #577785 +#19670 +
Firefox +

Layout with floated columns breaks when printing

+
Mozilla bug #1315994 +#21092 +
Firefox (Windows) +

Right border of <select> menu is sometimes missing when screen is set to uncommon resolution

+
Mozilla bug #545685 +#15990 +
Firefox (OS X & Linux) +

Badge widget causes bottom border of Tabs widget to unexpectedly not overlap

+
Mozilla bug #1259972 +#19626 +
Chrome (Android) +

Tapping on an <input> in a scrollable overlay doesn’t scroll the <input> into view

+
Chromium issue #595210 +#17338 +
Chrome (OS X) +

Clicking above <input type="number"> increment button flashes the decrement button.

+
Chromium issue #419108 +Offshoot of #8350 & Chromium issue #337668 +
Chrome +

CSS infinite linear animation with alpha transparency leaks memory.

+
Chromium issue #429375 +#14409 +
Chrome +

table-cell borders not overlapping despite margin-right: -1px

+
Chromium issue #568691 +#17438, #14237 +
Chrome +

Clicking scrollbar in <select multiple> with overflowed options will select nearby <option>

+
Chromium issue #597642 +#19810 +
Chrome +

Don’t make :hover sticky on touch-friendly webpages

+
Chromium issue #370155 +#12832 +
Chrome +

position: absolute element that’s wider than its column is incorrectly clipped to column boundary

+
Chromium issue #269061 +#20161 +
Chrome (Windows & Linux) +

Animation glitch when returning to inactive tab after animations occurred while tab was hidden.

+
Chromium issue #449180 +#15298 +
Safari +

rem units in media queries should be calculated using font-size: initial, not the root element’s font-size

+
WebKit bug #156684 +#17403 +
Safari +

Link to container with id and tabindex results in container being ignored by VoiceOver (affects skip links)

+
WebKit bug #163658 +#20732 +
Safari (OS X) +

px, em, and rem should all behave the same in media queries when page zoom is applied

+
WebKit bug #156687 +#17403 +
Safari (OS X) +

Weird button behavior with some <input type="number"> elements.

+
WebKit bug #137269, Apple Safari Radar #18834768 +#8350, Normalize #283, Chromium issue #337668 +
Safari (OS X) +

Small font size when printing webpage with fixed-width .container.

+
WebKit bug #138192, Apple Safari Radar #19435018 +#14868 +
Safari (iOS) +

transform: translate3d(0,0,0); rendering bug.

+
WebKit bug #138162, Apple Safari Radar #18804973 +#14603 +
Safari (iOS) +

Text input’s cursor doesn’t move while scrolling the page.

+
WebKit bug #138201, Apple Safari Radar #18819624 +#14708 +
Safari (iOS) +

Can’t move cursor to start of text after entering long string of text into <input type="text">

+
WebKit bug #148061, Apple Safari Radar #22299624 +#16988 +
Safari (iOS) +

display: block causes text of temporal <input>s to become vertically misaligned

+
WebKit bug #139848, Apple Safari Radar #19434878 +#11266, #13098 +
Safari (iOS) +

Tapping on <body> doesn’t fire click events

+
WebKit bug #151933 +#16028 +
Safari (iOS) +

position:fixed is incorrectly positioned when tab bar is visible on iPhone 6S+ Safari

+
WebKit bug #153056 +#18859 +
Safari (iOS) +

Tapping into an <input> within a position:fixed element scrolls to the top of the page

+
WebKit bug #153224, Apple Safari Radar #24235301 +#17497 +
Safari (iOS) +

<body> with overflow:hidden CSS is scrollable on iOS

+
WebKit bug #153852 +#14839 +
Safari (iOS) +

Scroll gesture in text field in position:fixed element sometimes scrolls <body> instead of scrollable ancestor

+
WebKit bug #153856 +#14839 +
Safari (iOS) +

Modal with -webkit-overflow-scrolling: touch doesn’t become scrollable after added text makes it taller

+
WebKit bug #158342 +#17695 +
Safari (iOS) +

Don’t make :hover sticky on touch-friendly webpages

+
WebKit bug #158517 +#12832 +
Safari (iOS) +

Element which is position:fixed disappears after opening a <select> menu

+
WebKit bug #162362 +#20759 +
Safari (iPad Pro) +

Rendering of descendants of position: fixed element gets clipped on iPad Pro in Landscape orientation

+
WebKit bug #152637, Apple Safari Radar #24030853 +#18738 +
+ +

Most wanted features

+ +

There are several features specified in Web standards which would allow us to make Bootstrap more robust, elegant, or performant, but aren’t yet implemented in certain browsers, thus preventing us from taking advantage of them.

+ +

We publicly list these “most wanted” feature requests here, in the hopes of expediting the process of getting them implemented.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Browser(s)Summary of featureUpstream issue(s)Bootstrap issue(s)
Edge +

Focusable elements should fire focus event / receive :focus styling when they receive Narrator/accessibility focus

+
Microsoft A11y UserVoice idea #16717318 +#20732 +
Edge +

Implement the :dir() pseudo-class from Selectors Level 4

+
Edge UserVoice idea #12299532 +#19984 +
Edge +

Implement sticky positioning from CSS Positioned Layout Level 3

+
Edge UserVoice idea #6263621 +#17021 +
Edge +

Implement the HTML5 <dialog> element

+
Edge UserVoice idea #6508895 +#20175 +
Edge +

Fire a transitioncancel event when a CSS transition is canceled

+
Edge UserVoice idea #15939898 +#20618 +
Edge +

Implement the of <selector-list> clause of the :nth-child() pseudo-class

+
Edge UserVoice idea #15944476 +#20143 +
Firefox +

Implement the of <selector-list> clause of the :nth-child() pseudo-class

+
Mozilla bug #854148 +#20143 +
Firefox +

Implement the HTML5 <dialog> element

+
Mozilla bug #840640 +#20175 +
Firefox +

When virtual focus is on a button or link, fire actual focus on the element, too

+
Mozilla bug #1000082 +#20732 +
Chrome +

Fire a transitioncancel event when a CSS transition is canceled

+
Chromium issue #642487 +Chromium issue #437860 +
Chrome +

Implement the of <selector-list> clause of the :nth-child() pseudo-class

+
Chromium issue #304163 +#20143 +
Chrome +

Implement the :dir() pseudo-class from Selectors Level 4

+
Chromium issue #576815 +#19984 +
Safari +

Fire a transitioncancel event when a CSS transition is canceled

+
WebKit bug #161535 +#20618 +
Safari +

Implement the :dir() pseudo-class from Selectors Level 4

+
WebKit bug #64861 +#19984 +
Safari +

Implement the HTML5 <dialog> element

+
WebKit bug #84635 +#20175 +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/alerts/index.html b/docs/4.0/components/alerts/index.html new file mode 100644 index 00000000..22124775 --- /dev/null +++ b/docs/4.0/components/alerts/index.html @@ -0,0 +1,1497 @@ + + + + + + + + + Alerts · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Alerts

+

Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.

+ + +

Examples

+ +

Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the four required contextual classes (e.g., .alert-success). For inline dismissal, use the alerts jQuery plugin.

+ +
+ + + + + + + + +
+
<div class="alert alert-primary" role="alert">
+  This is a primary alert—check it out!
+</div>
+<div class="alert alert-secondary" role="alert">
+  This is a secondary alert—check it out!
+</div>
+<div class="alert alert-success" role="alert">
+  This is a success alert—check it out!
+</div>
+<div class="alert alert-danger" role="alert">
+  This is a danger alert—check it out!
+</div>
+<div class="alert alert-warning" role="alert">
+  This is a warning alert—check it out!
+</div>
+<div class="alert alert-info" role="alert">
+  This is a info alert—check it out!
+</div>
+<div class="alert alert-light" role="alert">
+  This is a light alert—check it out!
+</div>
+<div class="alert alert-dark" role="alert">
+  This is a dark alert—check it out!
+</div>
+ +
+

Conveying meaning to assistive technologies

+ +

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .sr-only class.

+
+ + + +

Use the .alert-link utility class to quickly provide matching colored links within any alert.

+ +
+ + + + + + + + +
+
<div class="alert alert-primary" role="alert">
+  This is a primary alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
+</div>
+<div class="alert alert-secondary" role="alert">
+  This is a secondary alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
+</div>
+<div class="alert alert-success" role="alert">
+  This is a success alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
+</div>
+<div class="alert alert-danger" role="alert">
+  This is a danger alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
+</div>
+<div class="alert alert-warning" role="alert">
+  This is a warning alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
+</div>
+<div class="alert alert-info" role="alert">
+  This is a info alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
+</div>
+<div class="alert alert-light" role="alert">
+  This is a light alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
+</div>
+<div class="alert alert-dark" role="alert">
+  This is a dark alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
+</div>
+ +

Additional content

+ +

Alerts can also contain additional HTML elements like headings, paragraphs and dividers.

+ +
+ +
+
<div class="alert alert-success" role="alert">
+  <h4 class="alert-heading">Well done!</h4>
+  <p>Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.</p>
+  <hr>
+  <p class="mb-0">Whenever you need to, be sure to use margin utilities to keep things nice and tidy.</p>
+</div>
+ +

Dismissing

+ +

Using the alert JavaScript plugin, it’s possible to dismiss any alert inline. Here’s how:

+ +
    +
  • Be sure you’ve loaded the alert plugin, or the compiled Bootstrap JavaScript.
  • +
  • If you’re building our JS from source, it requires util.js. The compiled version includes this.
  • +
  • Add a dismiss button and the .alert-dismissible class, which adds extra padding to the right of the alert and positions the .close button.
  • +
  • On the dismiss button, add the data-dismiss="alert" attribute, which triggers the JavaScript functionality. Be sure to use the <button> element with it for proper behavior across all devices.
  • +
  • To animate alerts when dismissing them, be sure to add the .fade and .show classes.
  • +
+ +

You can see this in action with a live demo:

+ +
+ +
+
<div class="alert alert-warning alert-dismissible fade show" role="alert">
+  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+    <span aria-hidden="true">&times;</span>
+  </button>
+  <strong>Holy guacamole!</strong> You should check in on some of those fields below.
+</div>
+ +

JavaScript behavior

+ +

Triggers

+ +

Enable dismissal of an alert via JavaScript:

+ +
$(".alert").alert()
+ +

Or with data attributes on a button within the alert, as demonstrated above:

+ +
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
+  <span aria-hidden="true">&times;</span>
+</button>
+ +

Note that closing an alert will remove it from the DOM.

+ +

Methods

+ + + + + + + + + + + + + + + + + + +
MethodDescription
$().alert()Makes an alert listen for click events on descendant elements which have the data-dismiss="alert" attribute. (Not necessary when using the data-api’s auto-initialization.)
$().alert('close')Closes an alert by removing it from the DOM. If the .fade and .show classes are present on the element, the alert will fade out before it is removed.
+ +
$(".alert").alert('close')
+ +

Events

+ +

Bootstrap’s alert plugin exposes a few events for hooking into alert functionality.

+ + + + + + + + + + + + + + + + + + +
EventDescription
close.bs.alertThis event fires immediately when the close instance method is called.
closed.bs.alertThis event is fired when the alert has been closed (will wait for CSS transitions to complete).
+ +
$('#myAlert').on('closed.bs.alert', function () {
+  // do something…
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/badge/index.html b/docs/4.0/components/badge/index.html new file mode 100644 index 00000000..02d95a57 --- /dev/null +++ b/docs/4.0/components/badge/index.html @@ -0,0 +1,1377 @@ + + + + + + + + + Badges · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Badges

+

Documentation and examples for badges, our small count and labeling component.

+ + +

Example

+ +

Badges scale to match the size of the immediate parent element by using relative font sizing and em units.

+ +
+
Example heading New
+
Example heading New
+
Example heading New
+
Example heading New
+
Example heading New
+
Example heading New
+
+ +
<h1>Example heading <span class="badge badge-secondary">New</span></h1>
+<h2>Example heading <span class="badge badge-secondary">New</span></h2>
+<h3>Example heading <span class="badge badge-secondary">New</span></h3>
+<h4>Example heading <span class="badge badge-secondary">New</span></h4>
+<h5>Example heading <span class="badge badge-secondary">New</span></h5>
+<h6>Example heading <span class="badge badge-secondary">New</span></h6>
+ +

Badges can be used as part of links or buttons to provide a counter.

+ +
+ +
+
<button class="btn btn-primary">
+  Notifications <span class="badge badge-light">4</span>
+</button>
+ +

Note that depending on how they are used, badges may be confusing for users of screen readers and similar assistive technologies. While the styling of badges provides a visual cue as to their purpose, these users will simply be presented with the content of the badge. Depending on the specific situation, these badges may seem like random additional words or numbers at the end of a sentence, link, or button.

+ +

Unless the context is clear (as with the “Notifications” example, where it is understood that the “4” is the number of notifications), consider including additional context with a visually hidden piece of additional text.

+ +
+ +
+
<button class="btn btn-primary">
+  Profile <span class="badge badge-light">9</span>
+  <span class="sr-only">unread messages</span>
+</button>
+ +

Contextual variations

+ +

Add any of the below mentioned modifier classes to change the appearance of a badge.

+ +
+Primary +Secondary +Success +Danger +Warning +Info +Light +Dark +
+
<span class="badge badge-primary">Primary</span>
+<span class="badge badge-secondary">Secondary</span>
+<span class="badge badge-success">Success</span>
+<span class="badge badge-danger">Danger</span>
+<span class="badge badge-warning">Warning</span>
+<span class="badge badge-info">Info</span>
+<span class="badge badge-light">Light</span>
+<span class="badge badge-dark">Dark</span>
+ +
+

Conveying meaning to assistive technologies

+ +

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .sr-only class.

+
+ +

Pill badges

+ +

Use the .badge-pill modifier class to make badges more rounded (with a larger border-radius and additional horizontal padding). Useful if you miss the badges from v3.

+ +
+Primary +Secondary +Success +Danger +Warning +Info +Light +Dark +
+
<span class="badge badge-pill badge-primary">Primary</span>
+<span class="badge badge-pill badge-secondary">Secondary</span>
+<span class="badge badge-pill badge-success">Success</span>
+<span class="badge badge-pill badge-danger">Danger</span>
+<span class="badge badge-pill badge-warning">Warning</span>
+<span class="badge badge-pill badge-info">Info</span>
+<span class="badge badge-pill badge-light">Light</span>
+<span class="badge badge-pill badge-dark">Dark</span>
+ + + +

Using the .badge classes with the <a> element quickly provide actionable badges with hover and focus states.

+ + +
<a href="#" class="badge badge-primary">Primary</a>
+<a href="#" class="badge badge-secondary">Secondary</a>
+<a href="#" class="badge badge-success">Success</a>
+<a href="#" class="badge badge-danger">Danger</a>
+<a href="#" class="badge badge-warning">Warning</a>
+<a href="#" class="badge badge-info">Info</a>
+<a href="#" class="badge badge-light">Light</a>
+<a href="#" class="badge badge-dark">Dark</a>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/breadcrumb/index.html b/docs/4.0/components/breadcrumb/index.html new file mode 100644 index 00000000..4d97080e --- /dev/null +++ b/docs/4.0/components/breadcrumb/index.html @@ -0,0 +1,1287 @@ + + + + + + + + + Breadcrumb · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Breadcrumb

+

Indicate the current page's location within a navigational hierarchy that automatically adds separators via CSS.

+ + +

Separators are automatically added in CSS through ::before and content.

+ +
+ + + +
+
<ol class="breadcrumb">
+  <li class="breadcrumb-item active">Home</li>
+</ol>
+<ol class="breadcrumb">
+  <li class="breadcrumb-item"><a href="#">Home</a></li>
+  <li class="breadcrumb-item active">Library</li>
+</ol>
+<ol class="breadcrumb">
+  <li class="breadcrumb-item"><a href="#">Home</a></li>
+  <li class="breadcrumb-item"><a href="#">Library</a></li>
+  <li class="breadcrumb-item active">Data</li>
+</ol>
+ +

Similar to our navigation components, breadcrumbs work fine with or without the usage of list markup.

+ +
+ +
+
<nav class="breadcrumb">
+  <a class="breadcrumb-item" href="#">Home</a>
+  <a class="breadcrumb-item" href="#">Library</a>
+  <a class="breadcrumb-item" href="#">Data</a>
+  <span class="breadcrumb-item active">Bootstrap</span>
+</nav>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/button-group/index.html b/docs/4.0/components/button-group/index.html new file mode 100644 index 00000000..c0b1035b --- /dev/null +++ b/docs/4.0/components/button-group/index.html @@ -0,0 +1,1502 @@ + + + + + + + + + Button group · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Button group

+

Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.

+ + +

Basic example

+ +

Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.

+ +
+
+ + + +
+
+
<div class="btn-group" role="group" aria-label="Basic example">
+  <button type="button" class="btn btn-secondary">Left</button>
+  <button type="button" class="btn btn-secondary">Middle</button>
+  <button type="button" class="btn btn-secondary">Right</button>
+</div>
+ +
+

Ensure correct role and provide a label

+ +

In order for assistive technologies (such as screen readers) to convey that a series of buttons is grouped, an appropriate role attribute needs to be provided. For button groups, this would be role="group", while toolbars should have a role="toolbar".

+ +

In addition, groups and toolbars should be given an explicit label, as most assistive technologies will otherwise not announce them, despite the presence of the correct role attribute. In the examples provided here, we use aria-label, but alternatives such as aria-labelledby can also be used.

+
+

Button toolbar

+ +

Combine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.

+ +
+ +
+
<div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
+  <div class="btn-group mr-2" role="group" aria-label="First group">
+    <button type="button" class="btn btn-secondary">1</button>
+    <button type="button" class="btn btn-secondary">2</button>
+    <button type="button" class="btn btn-secondary">3</button>
+    <button type="button" class="btn btn-secondary">4</button>
+  </div>
+  <div class="btn-group mr-2" role="group" aria-label="Second group">
+    <button type="button" class="btn btn-secondary">5</button>
+    <button type="button" class="btn btn-secondary">6</button>
+    <button type="button" class="btn btn-secondary">7</button>
+  </div>
+  <div class="btn-group" role="group" aria-label="Third group">
+    <button type="button" class="btn btn-secondary">8</button>
+  </div>
+</div>
+ +

Feel free to mix input groups with button groups in your toolbars. Similar to the example above, you’ll likely need some utilities though to space things properly.

+ +
+ + + +
+
<div class="btn-toolbar mb-3" role="toolbar" aria-label="Toolbar with button groups">
+  <div class="btn-group mr-2" role="group" aria-label="First group">
+    <button type="button" class="btn btn-secondary">1</button>
+    <button type="button" class="btn btn-secondary">2</button>
+    <button type="button" class="btn btn-secondary">3</button>
+    <button type="button" class="btn btn-secondary">4</button>
+  </div>
+  <div class="input-group">
+    <span class="input-group-addon" id="btnGroupAddon">@</span>
+    <input type="text" class="form-control" placeholder="Input group example" aria-label="Input group example" aria-describedby="btnGroupAddon">
+  </div>
+</div>
+
+<div class="btn-toolbar justify-content-between" role="toolbar" aria-label="Toolbar with button groups">
+  <div class="btn-group" role="group" aria-label="First group">
+    <button type="button" class="btn btn-secondary">1</button>
+    <button type="button" class="btn btn-secondary">2</button>
+    <button type="button" class="btn btn-secondary">3</button>
+    <button type="button" class="btn btn-secondary">4</button>
+  </div>
+  <div class="input-group">
+    <span class="input-group-addon" id="btnGroupAddon2">@</span>
+    <input type="text" class="form-control" placeholder="Input group example" aria-label="Input group example" aria-describedby="btnGroupAddon2">
+  </div>
+</div>
+ +

Sizing

+ +

Instead of applying button sizing classes to every button in a group, just add .btn-group-* to each .btn-group, including each one when nesting multiple groups.

+ +
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +
<div class="btn-group btn-group-lg" role="group" aria-label="...">...</div>
+<div class="btn-group" role="group" aria-label="...">...</div>
+<div class="btn-group btn-group-sm" role="group" aria-label="...">...</div>
+ +

Nesting

+ +

Place a .btn-group within another .btn-group when you want dropdown menus mixed with a series of buttons.

+ +
+
+ + + +
+ + +
+
+
+
<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
+  <button type="button" class="btn btn-secondary">1</button>
+  <button type="button" class="btn btn-secondary">2</button>
+
+  <div class="btn-group" role="group">
+    <button id="btnGroupDrop1" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+      Dropdown
+    </button>
+    <div class="dropdown-menu" aria-labelledby="btnGroupDrop1">
+      <a class="dropdown-item" href="#">Dropdown link</a>
+      <a class="dropdown-item" href="#">Dropdown link</a>
+    </div>
+  </div>
+</div>
+ +

Vertical variation

+ +

Make a set of buttons appear vertically stacked rather than horizontally. Split button dropdowns are not supported here.

+ +
+
+ + + + + + +
+
+ +
+
+ + +
+ + +
+ + +
+ + +
+
+ + +
+
+ + +
+
+
+ +
<div class="btn-group-vertical">
+  ...
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/buttons/index.html b/docs/4.0/components/buttons/index.html new file mode 100644 index 00000000..3d357c86 --- /dev/null +++ b/docs/4.0/components/buttons/index.html @@ -0,0 +1,1507 @@ + + + + + + + + + Buttons · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Buttons

+

Use Bootstrap's custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.

+ + +

Examples

+ +

Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.

+ +
+ + + + + + + + + + +
+
<button type="button" class="btn btn-primary">Primary</button>
+<button type="button" class="btn btn-secondary">Secondary</button>
+<button type="button" class="btn btn-success">Success</button>
+<button type="button" class="btn btn-danger">Danger</button>
+<button type="button" class="btn btn-warning">Warning</button>
+<button type="button" class="btn btn-info">Info</button>
+<button type="button" class="btn btn-light">Light</button>
+<button type="button" class="btn btn-dark">Dark</button>
+
+<button type="button" class="btn btn-link">Link</button>
+ +
+

Conveying meaning to assistive technologies

+ +

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .sr-only class.

+
+ +

Button tags

+ +

The .btn classes are designed to be used with the <button> element. However, you can also use these classes on <a> or <input> elements (though some browsers may apply a slightly different rendering).

+ +

When using button classes on <a> elements that are used to trigger in-page functionality (like collapsing content), rather than linking to new pages or sections within the current page, these links should be given a role="button" to appropriately convey their purpose to assistive technologies such as screen readers.

+ +
+Link + + + + +
+
<a class="btn btn-primary" href="#" role="button">Link</a>
+<button class="btn btn-primary" type="submit">Button</button>
+<input class="btn btn-primary" type="button" value="Input">
+<input class="btn btn-primary" type="submit" value="Submit">
+<input class="btn btn-primary" type="reset" value="Reset">
+ +

Outline buttons

+ +

In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.

+ +
+ + + + + + + + +
+
<button type="button" class="btn btn-outline-primary">Primary</button>
+<button type="button" class="btn btn-outline-secondary">Secondary</button>
+<button type="button" class="btn btn-outline-success">Success</button>
+<button type="button" class="btn btn-outline-danger">Danger</button>
+<button type="button" class="btn btn-outline-warning">Warning</button>
+<button type="button" class="btn btn-outline-info">Info</button>
+<button type="button" class="btn btn-outline-light">Light</button>
+<button type="button" class="btn btn-outline-dark">Dark</button>
+ +

Sizes

+ +

Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.

+ +
+ + +
+
<button type="button" class="btn btn-primary btn-lg">Large button</button>
+<button type="button" class="btn btn-secondary btn-lg">Large button</button>
+ +
+ + +
+
<button type="button" class="btn btn-primary btn-sm">Small button</button>
+<button type="button" class="btn btn-secondary btn-sm">Small button</button>
+ +

Create block level buttons—those that span the full width of a parent—by adding .btn-block.

+ +
+ + +
+
<button type="button" class="btn btn-primary btn-lg btn-block">Block level button</button>
+<button type="button" class="btn btn-secondary btn-lg btn-block">Block level button</button>
+ +

Active state

+ +

Buttons will appear pressed (with a darker background, darker border, and inset shadow) when active. There’s no need to add a class to <button>s as they use a pseudo-class. However, you can still force the same active appearance with .active (and include the aria-pressed="true" attribute) should you need to replicate the state programmatically.

+ + +
<a href="#" class="btn btn-primary btn-lg active" role="button" aria-pressed="true">Primary link</a>
+<a href="#" class="btn btn-secondary btn-lg active" role="button" aria-pressed="true">Link</a>
+ +

Disabled state

+ +

Make buttons look inactive by adding the disabled boolean attribute to any <button> element.

+ +
+ + +
+
<button type="button" class="btn btn-lg btn-primary" disabled>Primary button</button>
+<button type="button" class="btn btn-secondary btn-lg" disabled>Button</button>
+ +

Disabled buttons using the <a> element behave a bit different:

+ +
    +
  • <a>s don’t support the disabled attribute, so you must add the .disabled class to make it visually appear disabled.
  • +
  • Some future-friendly styles are included to disable all pointer-events on anchor buttons. In browsers which support that property, you won’t see the disabled cursor at all.
  • +
  • Disabled buttons should include the aria-disabled="true" attribute to indicate the state of the element to assistive technologies.
  • +
+ + +
<a href="#" class="btn btn-primary btn-lg disabled" role="button" aria-disabled="true">Primary link</a>
+<a href="#" class="btn btn-secondary btn-lg disabled" role="button" aria-disabled="true">Link</a>
+ +
+ + +

The .disabled class uses pointer-events: none to try to disable the link functionality of <a>s, but that CSS property is not yet standardized. In addition, even in browsers that do support pointer-events: none, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, add a tabindex="-1" attribute on these links (to prevent them from receiving keyboard focus) and use custom JavaScript to disable their functionality.

+
+ +

Button plugin

+ +

Do more with buttons. Control button states or create groups of buttons for more components like toolbars.

+ +

Toggle states

+ +

Add data-toggle="button" to toggle a button’s active state. If you’re pre-toggling a button, you must manually add the .active class and aria-pressed="true" to the <button>.

+ +
+ +
+
<button type="button" class="btn btn-primary" data-toggle="button" aria-pressed="false" autocomplete="off">
+  Single toggle
+</button>
+ +

Checkbox and radio buttons

+ +

Bootstrap’s .button styles can be applied to other elements, such as <label>s, to provide checkbox or radio style button toggling. Add data-toggle="buttons" to a .btn-group containing those modified buttons to enable toggling in their respective styles.

+ +

The checked state for these buttons is only updated via click event on the button. If you use another method to update the input—e.g., with <input type="reset"> or by manually applying the input’s checked property—you’ll need to toggle .active on the <label> manually.

+ +

Note that pre-checked buttons require you to manually add the .active class to the input’s <label>.

+ +
+
+ + + +
+
+
<div class="btn-group" data-toggle="buttons">
+  <label class="btn btn-secondary active">
+    <input type="checkbox" checked autocomplete="off"> Checkbox 1 (pre-checked)
+  </label>
+  <label class="btn btn-secondary">
+    <input type="checkbox" autocomplete="off"> Checkbox 2
+  </label>
+  <label class="btn btn-secondary">
+    <input type="checkbox" autocomplete="off"> Checkbox 3
+  </label>
+</div>
+ +
+
+ + + +
+
+
<div class="btn-group" data-toggle="buttons">
+  <label class="btn btn-secondary active">
+    <input type="radio" name="options" id="option1" autocomplete="off" checked> Radio 1 (preselected)
+  </label>
+  <label class="btn btn-secondary">
+    <input type="radio" name="options" id="option2" autocomplete="off"> Radio 2
+  </label>
+  <label class="btn btn-secondary">
+    <input type="radio" name="options" id="option3" autocomplete="off"> Radio 3
+  </label>
+</div>
+ +

Methods

+ + + + + + + + + + + + + + +
MethodDescription
$().button('toggle')Toggles push state. Gives the button the appearance that it has been activated.
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/card/index.html b/docs/4.0/components/card/index.html new file mode 100644 index 00000000..a01c7717 --- /dev/null +++ b/docs/4.0/components/card/index.html @@ -0,0 +1,2661 @@ + + + + + + + + + Cards · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + +
+ +
+ + +
+

Cards

+

Bootstrap's cards provide a flexible and extensible content container with multiple variants and options.

+ + +

About

+ +

A card is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options.

+ +

If you’re familiar with Bootstrap 3, cards replace our old panels, wells, and thumbnails. Similar functionality to those components is available as modifier classes for cards.

+ +

Example

+ +

Cards are built with as little markup and styles as possible, but still manage to deliver a ton of control and customization. Built with flexbox, they offer easy alignment and mix well with other Bootstrap components.

+ +

Below is an example of a basic card with mixed content and a fixed width. Cards have no fixed width to start, so they’ll naturally fill the full width of its parent element. This is easily customized with our various sizing options.

+ +
+
+ Card image cap +
+

Card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+ Go somewhere +
+
+
+
<div class="card" style="width: 20rem;">
+  <img class="card-img-top" src="..." alt="Card image cap">
+  <div class="card-body">
+    <h4 class="card-title">Card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+</div>
+ +

Content types

+ +

Cards support a wide variety of content, including images, text, list groups, links, and more. Below are examples of what’s supported.

+ +

Blocks

+ +

The building block of a card is the .card-body. Use it whenever you need a padded section within a card.

+ +
+
+
+ This is some text within a card block. +
+
+
+
<div class="card">
+  <div class="card-body">
+    This is some text within a card block.
+  </div>
+</div>
+ + + +

Card titles are used by adding .card-title to a <h*> tag. In the same way, links are added and placed next to each other by adding .card-link to a <a> tag.

+ +

Subtitles are used by adding a .card-subtitle to a <h*> tag. If the .card-title and the .card-subtitle items are placed in a .card-body item, the card title and subtitle are aligned nicely.

+ +
+
+
+

Card title

+
Card subtitle
+

Some quick example text to build on the card title and make up the bulk of the card's content.

+ Card link + Another link +
+
+
+
<div class="card" style="width: 20rem;">
+  <div class="card-body">
+    <h4 class="card-title">Card title</h4>
+    <h6 class="card-subtitle mb-2 text-muted">Card subtitle</h6>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+    <a href="#" class="card-link">Card link</a>
+    <a href="#" class="card-link">Another link</a>
+  </div>
+</div>
+ +

Images

+ +

.card-img-top places an image to the top of the card. With .card-text, text can be added to the card. Text within .card-text can also be styled with the standard HTML tags.

+ +
+
+ Card image cap +
+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
<div class="card" style="width: 20rem;">
+  <img class="card-img-top" src="..." alt="Card image cap">
+  <div class="card-body">
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+ +

List groups

+ +

Create lists of content in a card with a flush list group.

+ +
+
+
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Vestibulum at eros
  • +
+
+
+
<div class="card" style="width: 20rem;">
+  <ul class="list-group list-group-flush">
+    <li class="list-group-item">Cras justo odio</li>
+    <li class="list-group-item">Dapibus ac facilisis in</li>
+    <li class="list-group-item">Vestibulum at eros</li>
+  </ul>
+</div>
+ +

Kitchen sink

+ +

Mix and match multiple content types to create the card you need, or throw everything in there. Shown below are image styles, blocks, text styles, and a list group—all wrapped in a fixed-width card.

+ +
+
+ Card image cap +
+

Card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Vestibulum at eros
  • +
+ +
+
+
<div class="card" style="width: 20rem;">
+  <img class="card-img-top" src="..." alt="Card image cap">
+  <div class="card-body">
+    <h4 class="card-title">Card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+  <ul class="list-group list-group-flush">
+    <li class="list-group-item">Cras justo odio</li>
+    <li class="list-group-item">Dapibus ac facilisis in</li>
+    <li class="list-group-item">Vestibulum at eros</li>
+  </ul>
+  <div class="card-body">
+    <a href="#" class="card-link">Card link</a>
+    <a href="#" class="card-link">Another link</a>
+  </div>
+</div>
+ + + +

Add an optional header and/or footer within a card.

+ +
+
+
+ Featured +
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+
+
<div class="card">
+  <div class="card-header">
+    Featured
+  </div>
+  <div class="card-body">
+    <h4 class="card-title">Special title treatment</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+</div>
+ +

Card headers can be styled by adding .card-header to <h*> elements.

+ +
+
+

Featured

+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+
+
<div class="card">
+  <h4 class="card-header">Featured</h4>
+  <div class="card-body">
+    <h4 class="card-title">Special title treatment</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+</div>
+ +
+
+
+ Quote +
+
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
Someone famous in Source Title
+
+
+
+
+
<div class="card">
+  <div class="card-header">
+    Quote
+  </div>
+  <div class="card-body">
+    <blockquote class="blockquote mb-0">
+      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+      <footer class="blockquote-footer">Someone famous in <cite title="Source Title">Source Title</cite></footer>
+    </blockquote>
+  </div>
+</div>
+ +
+
+
+ Featured +
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+ +
+
+
<div class="card text-center">
+  <div class="card-header">
+    Featured
+  </div>
+  <div class="card-body">
+    <h4 class="card-title">Special title treatment</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+  <div class="card-footer text-muted">
+    2 days ago
+  </div>
+</div>
+ +

Sizing

+ +

Cards assume no specific width to start, so they’ll be 100% wide unless otherwise stated. You can change this as needed with custom CSS, grid classes, grid Sass mixins, or utilities.

+ +

Using grid markup

+ +

Using the grid, wrap cards in columns and rows as needed.

+ +
+
+
+
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+
+
+
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+
+
+
+
<div class="row">
+  <div class="col-sm-6">
+    <div class="card">
+      <div class="card-body">
+        <h4 class="card-title">Special title treatment</h4>
+        <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+        <a href="#" class="btn btn-primary">Go somewhere</a>
+      </div>
+    </div>
+  </div>
+  <div class="col-sm-6">
+    <div class="card">
+      <div class="card-body">
+        <h4 class="card-title">Special title treatment</h4>
+        <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+        <a href="#" class="btn btn-primary">Go somewhere</a>
+      </div>
+    </div>
+  </div>
+</div>
+ +

Using utilities

+ +

Use our handful of available sizing utilities to quickly set a card’s width.

+ +
+
+
+

Card title

+

With supporting text below as a natural lead-in to additional content.

+ Button +
+
+ +
+
+

Card title

+

With supporting text below as a natural lead-in to additional content.

+ Button +
+
+
+
<div class="card w-75">
+  <div class="card-body">
+    <h4 class="card-title">Card title</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Button</a>
+  </div>
+</div>
+
+<div class="card w-50">
+  <div class="card-body">
+    <h4 class="card-title">Card title</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Button</a>
+  </div>
+</div>
+ +

Using custom CSS

+ +

Use custom CSS in your stylesheets or as inline styles to set a width.

+ +
+
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+
+
<div class="card" style="width: 20rem;">
+  <div class="card-body">
+    <h4 class="card-title">Special title treatment</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+</div>
+ +

Text alignment

+ +

You can quickly change the text alignment of any card—in its entirety or specific parts—with our text align classes.

+ +
+
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+ +
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+ +
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+
+
<div class="card" style="width: 20rem;">
+  <div class="card-body">
+    <h4 class="card-title">Special title treatment</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+</div>
+
+<div class="card text-center" style="width: 20rem;">
+  <div class="card-body">
+    <h4 class="card-title">Special title treatment</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+</div>
+
+<div class="card text-right" style="width: 20rem;">
+  <div class="card-body">
+    <h4 class="card-title">Special title treatment</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+</div>
+ + + +

Add some navigation to a card’s header (or block) with Bootstrap’s nav components.

+ +
+
+
+ +
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+
+
<div class="card text-center">
+  <div class="card-header">
+    <ul class="nav nav-tabs card-header-tabs">
+      <li class="nav-item">
+        <a class="nav-link active" href="#">Active</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Link</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link disabled" href="#">Disabled</a>
+      </li>
+    </ul>
+  </div>
+  <div class="card-body">
+    <h4 class="card-title">Special title treatment</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+</div>
+ +
+
+
+ +
+
+

Special title treatment

+

With supporting text below as a natural lead-in to additional content.

+ Go somewhere +
+
+
+
<div class="card text-center">
+  <div class="card-header">
+    <ul class="nav nav-pills card-header-pills">
+      <li class="nav-item">
+        <a class="nav-link active" href="#">Active</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Link</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link disabled" href="#">Disabled</a>
+      </li>
+    </ul>
+  </div>
+  <div class="card-body">
+    <h4 class="card-title">Special title treatment</h4>
+    <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
+    <a href="#" class="btn btn-primary">Go somewhere</a>
+  </div>
+</div>
+ +

Images

+ +

Cards include a few options for working with images. Choose from appending “image caps” at either end of a card, overlaying images with card content, or simply embedding the image in a card.

+ +

Image caps

+ +

Similar to headers and footers, cards can include top and bottom “image caps”—images at the top or bottom of a card.

+ +
+
+ Card image cap +
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+

Last updated 3 mins ago

+
+
+
+
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+

Last updated 3 mins ago

+
+ Card image cap +
+
+
<div class="card mb-3">
+  <img class="card-img-top" src="..." alt="Card image cap">
+  <div class="card-body">
+    <h4 class="card-title">Card title</h4>
+    <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+    <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+  </div>
+</div>
+<div class="card">
+  <div class="card-body">
+    <h4 class="card-title">Card title</h4>
+    <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+    <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+  </div>
+  <img class="card-img-bottom" src="..." alt="Card image cap">
+</div>
+ +

Image overlays

+ +

Turn an image into a card background and overlay your card’s text. Depending on the image, you may or may not need additional styles or utilities.

+ +
+
+ Card image +
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+

Last updated 3 mins ago

+
+
+
+
<div class="card bg-dark text-white">
+  <img class="card-img" src="..." alt="Card image">
+  <div class="card-img-overlay">
+    <h4 class="card-title">Card title</h4>
+    <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+    <p class="card-text">Last updated 3 mins ago</p>
+  </div>
+</div>
+ +

Card styles

+ +

Cards include various options for customizing their backgrounds, borders, and color.

+ +

Background and color

+ +

Use text and background utilities to change the appearance of a card.

+ +
+
+
Header
+
+

Primary card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Secondary card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Success card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Danger card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Warning card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Info card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Light card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Dark card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
<div class="card text-white bg-primary mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body">
+    <h4 class="card-title">Primary card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card text-white bg-secondary mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body">
+    <h4 class="card-title">Secondary card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card text-white bg-success mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body">
+    <h4 class="card-title">Success card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card text-white bg-danger mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body">
+    <h4 class="card-title">Danger card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card text-white bg-warning mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body">
+    <h4 class="card-title">Warning card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card text-white bg-info mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body">
+    <h4 class="card-title">Info card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card bg-light mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body">
+    <h4 class="card-title">Light card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card text-white bg-dark mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body">
+    <h4 class="card-title">Dark card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+ +
+

Conveying meaning to assistive technologies

+ +

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .sr-only class.

+
+ +

Border

+ +

Use border utilities to change just the border-color of a card. Note that you can put .text-{color} classes on the parent .card or a subset of the card’s contents as shown below.

+ +
+
+
Header
+
+

Primary card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Secondary card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Success card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Danger card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Warning card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Info card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Light card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
Header
+
+

Dark card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+
+
+
<div class="card border-primary mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body text-primary">
+    <h4 class="card-title">Primary card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card border-secondary mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body text-secondary">
+    <h4 class="card-title">Secondary card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card border-success mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body text-success">
+    <h4 class="card-title">Success card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card border-danger mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body text-danger">
+    <h4 class="card-title">Danger card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card border-warning mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body text-warning">
+    <h4 class="card-title">Warning card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card border-info mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body text-info">
+    <h4 class="card-title">Info card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card border-light mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body">
+    <h4 class="card-title">Light card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+<div class="card border-dark mb-3" style="max-width: 20rem;">
+  <div class="card-header">Header</div>
+  <div class="card-body text-dark">
+    <h4 class="card-title">Dark card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+</div>
+ +

Mixins utilities

+ +

You can also change the borders on the card header and footer as needed, and even remove their background-color with .bg-transparent.

+ +
+
+
Header
+
+

Success card title

+

Some quick example text to build on the card title and make up the bulk of the card's content.

+
+ +
+
+
<div class="card border-success mb-3" style="max-width: 20rem;">
+  <div class="card-header bg-transparent border-success">Header</div>
+  <div class="card-body text-success">
+    <h4 class="card-title">Success card title</h4>
+    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
+  </div>
+  <div class="card-footer bg-transparent border-success">Footer</div>
+</div>
+ +

Card layout

+ +

In addition to styling the content within cards, Bootstrap includes a few options for laying out series of cards. For the time being, these layout options are not yet responsive.

+ +

Card groups

+ +

Use card groups to render cards as a single, attached element with equal width and height columns. Card groups use display: flex; to achieve their uniform sizing.

+ +
+
+
+ Card image cap +
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+

Last updated 3 mins ago

+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional content.

+

Last updated 3 mins ago

+
+
+
+ Card image cap +
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

+

Last updated 3 mins ago

+
+
+
+
+
<div class="card-group">
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+    </div>
+  </div>
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
+      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+    </div>
+  </div>
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
+      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+    </div>
+  </div>
+</div>
+ +

When using card groups with footers, their content will automatically line up.

+ +
+
+
+ Card image cap +
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+ +
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional content.

+
+ +
+
+ Card image cap +
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

+
+ +
+
+
+
<div class="card-group">
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+    </div>
+    <div class="card-footer">
+      <small class="text-muted">Last updated 3 mins ago</small>
+    </div>
+  </div>
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
+    </div>
+    <div class="card-footer">
+      <small class="text-muted">Last updated 3 mins ago</small>
+    </div>
+  </div>
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
+    </div>
+    <div class="card-footer">
+      <small class="text-muted">Last updated 3 mins ago</small>
+    </div>
+  </div>
+</div>
+ +

Card decks

+ +

Need a set of equal width and height cards that aren’t attached to one another? Use card decks.

+ +
+
+
+ Card image cap +
+

Card title

+

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+

Last updated 3 mins ago

+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional content.

+

Last updated 3 mins ago

+
+
+
+ Card image cap +
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

+

Last updated 3 mins ago

+
+
+
+
+
<div class="card-deck">
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+    </div>
+  </div>
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
+      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+    </div>
+  </div>
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
+      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+    </div>
+  </div>
+</div>
+ +

Just like with card groups, card footers in decks will automatically line up.

+ +
+
+
+ Card image cap +
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+ +
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional content.

+
+ +
+
+ Card image cap +
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

+
+ +
+
+
+
<div class="card-deck">
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+    </div>
+    <div class="card-footer">
+      <small class="text-muted">Last updated 3 mins ago</small>
+    </div>
+  </div>
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
+    </div>
+    <div class="card-footer">
+      <small class="text-muted">Last updated 3 mins ago</small>
+    </div>
+  </div>
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
+    </div>
+    <div class="card-footer">
+      <small class="text-muted">Last updated 3 mins ago</small>
+    </div>
+  </div>
+</div>
+ +

Card columns

+ +

Cards can be organized into Masonry-like columns with just CSS by wrapping them in .card-columns. Cards are built with CSS column properties instead of flexbox for easier alignment. Cards are ordered from top to bottom and left to right.

+ +

Heads up! Your mileage with card columns may vary. To prevent cards breaking across columns, we must set them to display: inline-block as column-break-inside: avoid isn’t a bulletproof solution yet.

+ +
+
+
+ Card image cap +
+

Card title that wraps to a new line

+

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+
+
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
+ + Someone famous in Source Title + +
+
+
+
+ Card image cap +
+

Card title

+

This card has supporting text below as a natural lead-in to additional content.

+

Last updated 3 mins ago

+
+
+
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat.

+
+ + Someone famous in Source Title + +
+
+
+
+
+

Card title

+

This card has supporting text below as a natural lead-in to additional content.

+

Last updated 3 mins ago

+
+
+
+ Card image +
+
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
+ + Someone famous in Source Title + +
+
+
+
+
+

Card title

+

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

+

Last updated 3 mins ago

+
+
+
+
+
<div class="card-columns">
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title that wraps to a new line</h4>
+      <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+    </div>
+  </div>
+  <div class="card p-3">
+    <blockquote class="blockquote mb-0 card-body">
+      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+      <footer class="blockquote-footer">
+        <small class="text-muted">
+          Someone famous in <cite title="Source Title">Source Title</cite>
+        </small>
+      </footer>
+    </blockquote>
+  </div>
+  <div class="card">
+    <img class="card-img-top" src="..." alt="Card image cap">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
+      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+    </div>
+  </div>
+  <div class="card bg-primary p-3 text-center">
+    <blockquote class="blockquote mb-0">
+      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat.</p>
+      <footer class="blockquote-footer">
+        <small>
+          Someone famous in <cite title="Source Title">Source Title</cite>
+        </small>
+      </footer>
+    </blockquote>
+  </div>
+  <div class="card text-center">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
+      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+    </div>
+  </div>
+  <div class="card">
+    <img class="card-img" src="..." alt="Card image">
+  </div>
+  <div class="card p-3 text-right">
+    <blockquote class="blockquote mb-0">
+      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+      <footer class="blockquote-footer">
+        <small class="text-muted">
+          Someone famous in <cite title="Source Title">Source Title</cite>
+        </small>
+      </footer>
+    </blockquote>
+  </div>
+  <div class="card">
+    <div class="card-body">
+      <h4 class="card-title">Card title</h4>
+      <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
+      <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
+    </div>
+  </div>
+</div>
+ +

Card columns can also be extended and customized with some additional code. Shown below is an extension of the .card-columns class using the same CSS we use—CSS columns— to generate a set of responsive tiers for changing the number of columns.

+ +
.card-columns {
+  @include media-breakpoint-only(lg) {
+    column-count: 4;
+  }
+  @include media-breakpoint-only(xl) {
+    column-count: 5;
+  }
+}
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/carousel/index.html b/docs/4.0/components/carousel/index.html new file mode 100644 index 00000000..0fbd993d --- /dev/null +++ b/docs/4.0/components/carousel/index.html @@ -0,0 +1,1633 @@ + + + + + + + + + Carousel · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Carousel

+

A slideshow component for cycling through elements—images or slides of text—like a carousel.

+ + +

How it works

+ +

The carousel is a slideshow for cycling through a series of content, built with CSS 3D transforms and a bit of JavaScript. It works with a series of images, text, or custom markup. It also includes support for previous/next controls and indicators.

+ +

In browsers where the Page Visibility API is supported, the carousel will avoid sliding when the webpage is not visible to the user (such as when the browser tab is inactive, the browser window is minimized, etc.).

+ +

Please be aware that nested carousels are not supported, and carousels are generally not compliant with accessibility standards.

+ +

Lastly, if you’re building our JS from source, it requires util.js.

+ +

Example

+ +

Carousels don’t automatically normalize slide dimensions. As such, you may need to use additional utilities or custom styles to appropriately size content. While carousels support previous/next controls and indicators, they’re not explicitly required. Add and customize as you see fit.

+ +

Be sure to set a unique id on the .carousel for optional controls, especially if you’re using multiple carousels on a single page.

+ +

Slides only

+ +

Here’s a carousel with slides only. Note the presence of the .d-block and .img-fluid on carousel images to prevent browser default image alignment.

+ +
+ +
+
<div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel">
+  <div class="carousel-inner">
+    <div class="carousel-item active">
+      <img class="d-block w-100" src="..." alt="First slide">
+    </div>
+    <div class="carousel-item">
+      <img class="d-block w-100" src="..." alt="Second slide">
+    </div>
+    <div class="carousel-item">
+      <img class="d-block w-100" src="..." alt="Third slide">
+    </div>
+  </div>
+</div>
+ +

With controls

+ +

Adding in the previous and next controls:

+ +
+ +
+
<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
+  <div class="carousel-inner">
+    <div class="carousel-item active">
+      <img class="d-block w-100" src="..." alt="First slide">
+    </div>
+    <div class="carousel-item">
+      <img class="d-block w-100" src="..." alt="Second slide">
+    </div>
+    <div class="carousel-item">
+      <img class="d-block w-100" src="..." alt="Third slide">
+    </div>
+  </div>
+  <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
+    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
+    <span class="sr-only">Previous</span>
+  </a>
+  <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
+    <span class="carousel-control-next-icon" aria-hidden="true"></span>
+    <span class="sr-only">Next</span>
+  </a>
+</div>
+ +

With indicators

+ +

You can also add the indicators to the carousel, alongside the controls, too.

+ +
+ +
+
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
+  <ol class="carousel-indicators">
+    <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
+    <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
+    <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
+  </ol>
+  <div class="carousel-inner">
+    <div class="carousel-item active">
+      <img class="d-block w-100" src="..." alt="First slide">
+    </div>
+    <div class="carousel-item">
+      <img class="d-block w-100" src="..." alt="Second slide">
+    </div>
+    <div class="carousel-item">
+      <img class="d-block w-100" src="..." alt="Third slide">
+    </div>
+  </div>
+  <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
+    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
+    <span class="sr-only">Previous</span>
+  </a>
+  <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
+    <span class="carousel-control-next-icon" aria-hidden="true"></span>
+    <span class="sr-only">Next</span>
+  </a>
+</div>
+ +
+

Initial active element required

+ +

The .active class needs to be added to one of the slides. Otherwise, the carousel will not be visible.

+
+ +

With captions

+ +

Add captions to your slides easily with the .carousel-caption element within any .carousel-item. They can be easily hidden on smaller viewports, as shown below, with optional display utilities. We hide them initially with .d-none and bring them back on medium-sized devices with .d-md-block.

+ +
+ +
+ +
<div class="carousel-item">
+  <img src="..." alt="...">
+  <div class="carousel-caption d-none d-md-block">
+    <h3>...</h3>
+    <p>...</p>
+  </div>
+</div>
+ +

Usage

+ +

Via data attributes

+ +

Use data attributes to easily control the position of the carousel. data-slide accepts the keywords prev or next, which alters the slide position relative to its current position. Alternatively, use data-slide-to to pass a raw slide index to the carousel data-slide-to="2", which shifts the slide position to a particular index beginning with 0.

+ +

The data-ride="carousel" attribute is used to mark a carousel as animating starting at page load. It cannot be used in combination with (redundant and unnecessary) explicit JavaScript initialization of the same carousel.

+ +

Via JavaScript

+ +

Call carousel manually with:

+ +
$('.carousel').carousel()
+ +

Options

+ +

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-interval="".

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
intervalnumber5000The amount of time to delay between automatically cycling an item. If false, carousel will not automatically cycle.
keyboardbooleantrueWhether the carousel should react to keyboard events.
pausestring | boolean"hover"

If set to "hover", pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave. If set to false, hovering over the carousel won't pause it.

+

On touch-enabled devices, when set to "hover", cycling will pause on touchend (once the user finished interacting with the carousel) for two intervals, before automatically resuming. Note that this is in addition to the above mouse behavior.

ridestringfalseAutoplays the carousel after the user manually cycles the first item. If "carousel", autoplays the carousel on load.
wrapbooleantrueWhether the carousel should cycle continuously or have hard stops.
+ +

Methods

+ +
+

Asynchronous methods and transitions

+ +

All API methods are asynchronous and start a transition. They returns to the caller as soon as the transition is started but before it ends. In addition, a method call on a transitioning component will be ignored.

+ +

See our Javascript documentation for more informations.

+
+ +

.carousel(options)

+ +

Initializes the carousel with an optional options object and starts cycling through items.

+ +
$('.carousel').carousel({
+  interval: 2000
+})
+ +

.carousel('cycle')

+ +

Cycles through the carousel items from left to right.

+ +

.carousel('pause')

+ +

Stops the carousel from cycling through items.

+ +

.carousel(number)

+ +

Cycles the carousel to a particular frame (0 based, similar to an array). Returns to the caller before the target item has been shown (i.e. before the slid.bs.carousel event occurs).

+ +

.carousel('prev')

+ +

Cycles to the previous item. Returns to the caller before the previous item has been shown (i.e. before the slid.bs.carousel event occurs).

+ +

.carousel('next')

+ +

Cycles to the next item. Returns to the caller before the next item has been shown (i.e. before the slid.bs.carousel event occurs).

+ +

Events

+ +

Bootstrap’s carousel class exposes two events for hooking into carousel functionality. Both events have the following additional properties:

+ +
    +
  • direction: The direction in which the carousel is sliding (either "left" or "right").
  • +
  • relatedTarget: The DOM element that is being slid into place as the active item.
  • +
  • from: The index of the current item
  • +
  • to: The index of the next item
  • +
+ +

All carousel events are fired at the carousel itself (i.e. at the <div class="carousel">).

+ + + + + + + + + + + + + + + + + + +
Event TypeDescription
slide.bs.carouselThis event fires immediately when the slide instance method is invoked.
slid.bs.carouselThis event is fired when the carousel has completed its slide transition.
+ +
$('#myCarousel').on('slide.bs.carousel', function () {
+  // do something…
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/collapse/index.html b/docs/4.0/components/collapse/index.html new file mode 100644 index 00000000..863403f4 --- /dev/null +++ b/docs/4.0/components/collapse/index.html @@ -0,0 +1,1650 @@ + + + + + + + + + Collapse · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Collapse

+

Toggle the visibility of content across your project with a few classes and our JavaScript plugins.

+ + +

Example

+ +

Click the buttons below to show and hide another element via class changes:

+ +
    +
  • .collapse hides content
  • +
  • .collapsing is applied during transitions
  • +
  • .collapse.show shows content
  • +
+ +

You can use a link with the href attribute, or a button with the data-target attribute. In both cases, the data-toggle="collapse" is required.

+ +
+

+ + +

+
+
+ Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. +
+
+
+
<p>
+  <a class="btn btn-primary" data-toggle="collapse" href="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
+    Link with href
+  </a>
+  <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
+    Button with data-target
+  </button>
+</p>
+<div class="collapse" id="collapseExample">
+  <div class="card card-body">
+    Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
+  </div>
+</div>
+ +

Multiple targets

+ +

A <button> or <a> can show and hide multiple elements by referencing them with a JQuery selector in its href or data-target attribute. +Multiple <button> or <a> can show and hide an element if they each reference it with their href or data-target attribute

+ +
+

+ + + +

+
+
+
+
+ Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. +
+
+
+
+
+
+ Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. +
+
+
+
+
+
<p>
+  <a class="btn btn-primary" data-toggle="collapse" href="#multiCollapseExample1" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle first element</a>
+  <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle second element</button>
+  <button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse" aria-expanded="false" aria-controls="multiCollapseExample1 multiCollapseExample2">Toggle both elements</button>
+</p>
+<div class="row">
+  <div class="col">
+    <div class="collapse multi-collapse" id="multiCollapseExample1">
+      <div class="card card-body">
+        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
+      </div>
+    </div>
+  </div>
+  <div class="col">
+    <div class="collapse multi-collapse" id="multiCollapseExample2">
+      <div class="card card-body">
+        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
+      </div>
+    </div>
+  </div>
+</div>
+ +

Accordion example

+ +

Using the card component, you can extend the default collapse behavior to create an accordion.

+ +
+
+
+ + +
+
+ Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
+
+
+
+ +
+
+ Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
+
+
+
+ +
+
+ Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
+
+
+
+
+
<div id="accordion" role="tablist">
+  <div class="card">
+    <div class="card-header" role="tab" id="headingOne">
+      <h5 class="mb-0">
+        <a data-toggle="collapse" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
+          Collapsible Group Item #1
+        </a>
+      </h5>
+    </div>
+
+    <div id="collapseOne" class="collapse show" role="tabpanel" aria-labelledby="headingOne" data-parent="#accordion">
+      <div class="card-body">
+        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
+      </div>
+    </div>
+  </div>
+  <div class="card">
+    <div class="card-header" role="tab" id="headingTwo">
+      <h5 class="mb-0">
+        <a class="collapsed" data-toggle="collapse" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
+          Collapsible Group Item #2
+        </a>
+      </h5>
+    </div>
+    <div id="collapseTwo" class="collapse" role="tabpanel" aria-labelledby="headingTwo" data-parent="#accordion">
+      <div class="card-body">
+        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
+      </div>
+    </div>
+  </div>
+  <div class="card">
+    <div class="card-header" role="tab" id="headingThree">
+      <h5 class="mb-0">
+        <a class="collapsed" data-toggle="collapse" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
+          Collapsible Group Item #3
+        </a>
+      </h5>
+    </div>
+    <div id="collapseThree" class="collapse" role="tabpanel" aria-labelledby="headingThree" data-parent="#accordion">
+      <div class="card-body">
+        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
+      </div>
+    </div>
+  </div>
+</div>
+ +

You can also create accordions with custom markup. Add the data-children attribute and specify a set of sibling elements to toggle (e.g., .item). Then, use the same attributes and classes as shown above for connecting toggles to their associated content.

+ +
+
+
+ + Toggle item + +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed pretium lorem non vestibulum scelerisque. Proin a vestibulum sem, eget tristique massa. Aliquam lacinia rhoncus nibh quis ornare. +

+
+
+
+ +
+

+ Donec at ipsum dignissim, rutrum turpis scelerisque, tristique lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus nec dui turpis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. +

+
+
+
+
+
<div id="exampleAccordion" data-children=".item">
+  <div class="item">
+    <a data-toggle="collapse" data-parent="#exampleAccordion" href="#exampleAccordion1" aria-expanded="true" aria-controls="exampleAccordion1">
+      Toggle item
+    </a>
+    <div id="exampleAccordion1" class="collapse show" role="tabpanel">
+      <p class="mb-3">
+        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed pretium lorem non vestibulum scelerisque. Proin a vestibulum sem, eget tristique massa. Aliquam lacinia rhoncus nibh quis ornare.
+      </p>
+    </div>
+  </div>
+  <div class="item">
+    <a data-toggle="collapse" data-parent="#exampleAccordion" href="#exampleAccordion2" aria-expanded="false" aria-controls="exampleAccordion2">
+      Toggle item 2
+    </a>
+    <div id="exampleAccordion2" class="collapse" role="tabpanel">
+      <p class="mb-3">
+        Donec at ipsum dignissim, rutrum turpis scelerisque, tristique lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus nec dui turpis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+      </p>
+    </div>
+  </div>
+</div>
+ +

Accessibility

+ +

Be sure to add aria-expanded to the control element. This attribute explicitly conveys the current state of the collapsible element tied to the control to screen readers and similar assistive technologies. If the collapsible element is closed by default, the attribute on the control element should have a value of aria-expanded="false". If you’ve set the collapsible element to be open by default using the show class, set aria-expanded="true" on the control instead. The plugin will automatically toggle this attribute on the control based on whether or not the collapsible element has been opened or closed (via JavaScript, or because the user triggered another control element also tied to the same collapsbile element).

+ +

Additionally, if your control element is targeting a single collapsible element – i.e. the data-target attribute is pointing to an id selector – you may add an additional aria-controls attribute to the control element, containing the id of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself.

+ +

Usage

+ +

The collapse plugin utilizes a few classes to handle the heavy lifting:

+ +
    +
  • .collapse hides the content
  • +
  • .collapse.show shows the content
  • +
  • .collapsing is added when the transition starts, and removed when it finishes
  • +
+ +

These classes can be found in _transitions.scss.

+ +

Via data attributes

+ +

Just add data-toggle="collapse" and a data-target to the element to automatically assign control of one or more collapsible elements. The data-target attribute accepts a CSS selector to apply the collapse to. Be sure to add the class collapse to the collapsible element. If you’d like it to default open, add the additional class show.

+ +

To add accordion-like group management to a collapsible area, add the data attribute data-parent="#selector". Refer to the demo to see this in action.

+ +

Via JavaScript

+ +

Enable manually with:

+ +
$('.collapse').collapse()
+ +

Options

+ +

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-parent="".

+ + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
parentselectorfalseIf a selector is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the card class). The attribute has to be set on the target collapsible area.
togglebooleantrueToggles the collapsible element on invocation
+ +

Methods

+ +
+

Asynchronous methods and transitions

+ +

All API methods are asynchronous and start a transition. They returns to the caller as soon as the transition is started but before it ends. In addition, a method call on a transitioning component will be ignored.

+ +

See our Javascript documentation for more informations.

+
+ +

.collapse(options)

+ +

Activates your content as a collapsible element. Accepts an optional options object.

+ +
$('#myCollapsible').collapse({
+  toggle: false
+})
+ +

.collapse('toggle')

+ +

Toggles a collapsible element to shown or hidden. **Returns to the caller before the collapsible element has actually been shown or hidden (i.e. before the shown.bs.collapse or hidden.bs.collapse event occurs).

+ +

.collapse('show')

+ +

Shows a collapsible element. Returns to the caller before the collapsible element has actually been shown (i.e. before the shown.bs.collapse event occurs).

+ +

.collapse('hide')

+ +

Hides a collapsible element. Returns to the caller before the collapsible element has actually been hidden (i.e. before the hidden.bs.collapse event occurs).

+ +

Events

+ +

Bootstrap’s collapse class exposes a few events for hooking into collapse functionality.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.collapseThis event fires immediately when the show instance method is called.
shown.bs.collapseThis event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete).
hide.bs.collapseThis event is fired immediately when the hide method has been called.
hidden.bs.collapseThis event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete).
+ +
$('#myCollapsible').on('hidden.bs.collapse', function () {
+  // do something…
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/dropdowns/index.html b/docs/4.0/components/dropdowns/index.html new file mode 100644 index 00000000..5eff8b10 --- /dev/null +++ b/docs/4.0/components/dropdowns/index.html @@ -0,0 +1,2032 @@ + + + + + + + + + Dropdowns · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Dropdowns

+

Toggle contextual overlays for displaying lists of links and more with the Bootstrap dropdown plugin.

+ + +

Overview

+ +

Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They’re made interactive with the included Bootstrap dropdown JavaScript plugin. They’re toggled by clicking, not by hovering; this is an intentional design decision.

+ +

Dropdowns are built on a third party library, Popper.js, which provides dynamic positioning and viewport detection. Be sure to include popper.min.js before Bootstrap’s JavaScript.

+ +

If you’re building our JS from source, it requires util.js.

+ +

Accessibility

+ +

The WAI ARIA standard defines an actual role="menu" widget, but this is specific to application-like menus which trigger actions or functions. ARIA menus can only contain menu items, checkbox menu items, radio button menu items, radio button groups, and sub-menus.

+ +

Bootstrap’s dropdowns, on the other hand, are designed to be generic and applicable to a variety of situations and markup structures. For instance, it is possible to create dropdowns that contain additional inputs and form controls, such as search fields or login forms. For this reason, Bootstrap does not expect (nor automatically add) any of the role and aria- attributes required for true ARIA menus. Authors will have to include these more specific attributes themselves.

+ +

However, Bootstrap does add built-in support for most standard keyboard menu interactions, such as the ability to move through individual .dropdown-item elements using the cursor keys and close the menu with the ESC key.

+ +

Examples

+ +

Wrap the dropdown’s toggle (your button or link) and the dropdown menu within .dropdown, or another element that declares position: relative;. Dropdowns can be triggered from <a> or <button> elements to better fit your potential needs.

+ +

Single button dropdowns

+ +

Any single .btn can be turned into a dropdown toggle with some markup changes. Here’s how you can put them to work with either <button> elements:

+ +
+ +
+
<div class="dropdown">
+  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Dropdown button
+  </button>
+  <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
+    <a class="dropdown-item" href="#">Action</a>
+    <a class="dropdown-item" href="#">Another action</a>
+    <a class="dropdown-item" href="#">Something else here</a>
+  </div>
+</div>
+ +

And with <a> elements:

+ + +
<div class="dropdown show">
+  <a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Dropdown link
+  </a>
+
+  <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
+    <a class="dropdown-item" href="#">Action</a>
+    <a class="dropdown-item" href="#">Another action</a>
+    <a class="dropdown-item" href="#">Something else here</a>
+  </div>
+</div>
+ +

The best part is you can do this with any button variant, too:

+ + + +
<!-- Example single danger button -->
+<div class="btn-group">
+  <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Action
+  </button>
+  <div class="dropdown-menu">
+    <a class="dropdown-item" href="#">Action</a>
+    <a class="dropdown-item" href="#">Another action</a>
+    <a class="dropdown-item" href="#">Something else here</a>
+    <div class="dropdown-divider"></div>
+    <a class="dropdown-item" href="#">Separated link</a>
+  </div>
+</div>
+ +

Split button dropdowns

+ +

Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of .dropdown-toggle-split for proper spacing around the dropdown caret.

+ +

We use this extra class to reduce the horizontal padding on either side of the caret by 25% and remove the margin-left that’s added for regular button dropdowns. Those extra changes keep the caret centered in the split button and provide a more appropriately sized hit area next to the main button.

+ +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ +
<!-- Example split danger button -->
+<div class="btn-group">
+  <button type="button" class="btn btn-danger">Action</button>
+  <button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <span class="sr-only">Toggle Dropdown</span>
+  </button>
+  <div class="dropdown-menu">
+    <a class="dropdown-item" href="#">Action</a>
+    <a class="dropdown-item" href="#">Another action</a>
+    <a class="dropdown-item" href="#">Something else here</a>
+    <div class="dropdown-divider"></div>
+    <a class="dropdown-item" href="#">Separated link</a>
+  </div>
+</div>
+ +

Sizing

+ +

Button dropdowns work with buttons of all sizes, including default and split dropdown buttons.

+ +
+ + +
+ + +
<!-- Large button groups (default and split) -->
+<div class="btn-group">
+  <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Large button
+  </button>
+  <div class="dropdown-menu">
+    ...
+  </div>
+</div>
+<div class="btn-group">
+  <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Large button
+  </button>
+  <button type="button" class="btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <span class="sr-only">Toggle Dropdown</span>
+  </button>
+  <div class="dropdown-menu">
+    ...
+  </div>
+</div>
+
+<!-- Small button groups (default and split) -->
+<div class="btn-group">
+  <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Small button
+  </button>
+  <div class="dropdown-menu">
+    ...
+  </div>
+</div>
+<div class="btn-group">
+  <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Small button
+  </button>
+  <button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <span class="sr-only">Toggle Dropdown</span>
+  </button>
+  <div class="dropdown-menu">
+    ...
+  </div>
+</div>
+ +

Dropup variation

+ +

Trigger dropdown menus above elements by adding .dropup to the parent element.

+ +
+ + +
+ + + +
+
+ +
<!-- Default dropup button -->
+<div class="btn-group dropup">
+  <button type="button" class="btn btn-secondary">Dropup</button>
+  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <span class="sr-only">Toggle Dropdown</span>
+  </button>
+  <div class="dropdown-menu">
+    <!-- Dropdown menu links -->
+  </div>
+</div>
+
+<!-- Split dropup button -->
+<div class="btn-group dropup">
+  <button type="button" class="btn btn-secondary">
+    Split dropup
+  </button>
+  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <span class="sr-only">Toggle Dropdown</span>
+  </button>
+  <div class="dropdown-menu">
+    <!-- Dropdown menu links -->
+  </div>
+</div>
+ + + +

Historically dropdown menu contents had to be links, but that’s no longer the case with v4. Now you can optionally use <button> elements in your dropdowns instead of just <a>s.

+ +
+ +
+
<div class="dropdown">
+  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Dropdown
+  </button>
+  <div class="dropdown-menu" aria-labelledby="dropdownMenu2">
+    <button class="dropdown-item" type="button">Action</button>
+    <button class="dropdown-item" type="button">Another action</button>
+    <button class="dropdown-item" type="button">Something else here</button>
+  </div>
+</div>
+ + + +

By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. Add .dropdown-menu-right to a .dropdown-menu to right align the dropdown menu.

+ +
+

Heads up! Dropdowns are positioned only with CSS and may need some additional styles for exact alignment.

+
+ +
+
+ + +
+
+
<div class="btn-group">
+  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    This dropdown's menu is right-aligned
+  </button>
+  <div class="dropdown-menu dropdown-menu-right">
+    <button class="dropdown-item" type="button">Action</button>
+    <button class="dropdown-item" type="button">Another action</button>
+    <button class="dropdown-item" type="button">Something else here</button>
+  </div>
+</div>
+ + + +

Add a header to label sections of actions in any dropdown menu.

+ +
+ +
+
<div class="dropdown-menu">
+  <h6 class="dropdown-header">Dropdown header</h6>
+  <a class="dropdown-item" href="#">Action</a>
+  <a class="dropdown-item" href="#">Another action</a>
+</div>
+ + + +

Separate groups of related menu items with a divider.

+ + +
<div class="dropdown-menu">
+  <a class="dropdown-item" href="#">Action</a>
+  <a class="dropdown-item" href="#">Another action</a>
+  <a class="dropdown-item" href="#">Something else here</a>
+  <div class="dropdown-divider"></div>
+  <a class="dropdown-item" href="#">Separated link</a>
+</div>
+ + + +

Put a form within a dropdown menu, or make it into a dropdown menu, and use margin or padding utilities to give it the negative space you require.

+ +
+ +
+
<div class="dropdown-menu">
+  <form class="px-4 py-3">
+    <div class="form-group">
+      <label for="exampleDropdownFormEmail1">Email address</label>
+      <input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com">
+    </div>
+    <div class="form-group">
+      <label for="exampleDropdownFormPassword1">Password</label>
+      <input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password">
+    </div>
+    <div class="form-check">
+      <label class="form-check-label">
+        <input type="checkbox" class="form-check-input">
+        Remember me
+      </label>
+    </div>
+    <button type="submit" class="btn btn-primary">Sign in</button>
+  </form>
+  <div class="dropdown-divider"></div>
+  <a class="dropdown-item" href="#">New around here? Sign up</a>
+  <a class="dropdown-item" href="#">Forgot password?</a>
+</div>
+ +
+ +
+
<form class="dropdown-menu p-4">
+  <div class="form-group">
+    <label for="exampleDropdownFormEmail2">Email address</label>
+    <input type="email" class="form-control" id="exampleDropdownFormEmail2" placeholder="email@example.com">
+  </div>
+  <div class="form-group">
+    <label for="exampleDropdownFormPassword2">Password</label>
+    <input type="password" class="form-control" id="exampleDropdownFormPassword2" placeholder="Password">
+  </div>
+  <div class="form-check">
+    <label class="form-check-label">
+      <input type="checkbox" class="form-check-input">
+      Remember me
+    </label>
+  </div>
+  <button type="submit" class="btn btn-primary">Sign in</button>
+</form>
+ +

Disabled menu items

+ +

Add .disabled to items in the dropdown to style them as disabled.

+ + +
<div class="dropdown-menu">
+  <a class="dropdown-item" href="#">Regular link</a>
+  <a class="dropdown-item disabled" href="#">Disabled link</a>
+  <a class="dropdown-item" href="#">Another link</a>
+</div>
+ +

Usage

+ +

Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the .show class on the parent list item. The data-toggle="dropdown" attribute is relied on for closing dropdown menus at an application level, so it’s a good idea to always use it.

+ +
+

On touch-enabled devices, opening a dropdown adds empty ($.noop) mouseover handlers to the immediate children of the <body> element. This admittedly ugly hack is necessary to work around a quirk in iOS’ event delegation, which would otherwise prevent a tap anywhere outside of the dropdown from triggering the code that closes the dropdown. Once the dropdown is closed, these additional empty mouseover handlers are removed.

+
+ +

Via data attributes

+ +

Add data-toggle="dropdown" to a link or button to toggle a dropdown.

+ +
<div class="dropdown">
+  <button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Dropdown trigger
+  </button>
+  <div class="dropdown-menu" aria-labelledby="dLabel">
+    ...
+  </div>
+</div>
+ +

Via JavaScript

+ +

Call the dropdowns via JavaScript:

+ +
$('.dropdown-toggle').dropdown()
+ +
+
data-toggle="dropdown" still required
+ +

Regardless of whether you call your dropdown via JavaScript or instead use the data-api, data-toggle="dropdown" is always required to be present on the dropdown’s trigger element.

+
+ +

Options

+ +

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-placement="".

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
placementstring'bottom' +

How to position the popover - top | bottom.

+
offsetnumber | string0Offset of the dropdown relative to its target. For more information refer to Popper.js's offset docs.
flipbooleantrueAllow Dropdown to flip in case of an overlapping on the reference element. For more information refer to Popper.js's flip docs.
+ +

Methods

+ + + + + + + + + + + + + + + + + + +
MethodDescription
$().dropdown('toggle')Toggles the dropdown menu of a given navbar or tabbed navigation.
$().dropdown('update')Updates the position of an element’s dropdown.
+ +

Events

+ +

All dropdown events are fired at the .dropdown-menu’s parent element and have a relatedTarget property, whose value is the toggling anchor element.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
EventDescription
show.bs.dropdownThis event fires immediately when the show instance method is called.
shown.bs.dropdownThis event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete).
hide.bs.dropdownThis event is fired immediately when the hide instance method has been called.
hidden.bs.dropdownThis event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete).
+ +
$('#myDropdown').on('show.bs.dropdown', function () {
+  // do something…
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/forms/index.html b/docs/4.0/components/forms/index.html new file mode 100644 index 00000000..96cf7334 --- /dev/null +++ b/docs/4.0/components/forms/index.html @@ -0,0 +1,2999 @@ + + + + + + + + + Forms · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Forms

+

Examples and usage guidelines for form control styles, layout options, and custom components for creating a wide variety of forms.

+ + +

Overview

+ +

Bootstrap’s form controls expand on our Rebooted form styles with classes. Use these classes to opt into their customized displays for a more consistent rendering across browsers and devices.

+ +

Be sure to use an appropriate type attribute on all inputs (e.g., email for email address or number for numerical information) to take advantage of newer input controls like email verification, number selection, and more.

+ +

Here’s a quick example to demonstrate Bootstrap’s form styles. Keep reading for documentation on required classes, form layout, and more.

+ +
+
+
+ + + We'll never share your email with anyone else. +
+
+ + +
+
+ +
+ +
+
+
<form>
+  <div class="form-group">
+    <label for="exampleInputEmail1">Email address</label>
+    <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
+    <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
+  </div>
+  <div class="form-group">
+    <label for="exampleInputPassword1">Password</label>
+    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
+  </div>
+  <div class="form-check">
+    <label class="form-check-label">
+      <input type="checkbox" class="form-check-input">
+      Check me out
+    </label>
+  </div>
+  <button type="submit" class="btn btn-primary">Submit</button>
+</form>
+ +

Form controls

+ +

Textual form controls—like <input>s, <select>s, and <textarea>s—are styled with the .form-control class. Included are styles for general appearance, focus state, sizing, and more.

+ +

Be sure to explore our custom forms to further style <select>s.

+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
<form>
+  <div class="form-group">
+    <label for="exampleFormControlInput1">Email address</label>
+    <input type="email" class="form-control" id="exampleFormControlInput1" placeholder="name@example.com">
+  </div>
+  <div class="form-group">
+    <label for="exampleFormControlSelect1">Example select</label>
+    <select class="form-control" id="exampleFormControlSelect1">
+      <option>1</option>
+      <option>2</option>
+      <option>3</option>
+      <option>4</option>
+      <option>5</option>
+    </select>
+  </div>
+  <div class="form-group">
+    <label for="exampleFormControlSelect2">Example multiple select</label>
+    <select multiple class="form-control" id="exampleFormControlSelect2">
+      <option>1</option>
+      <option>2</option>
+      <option>3</option>
+      <option>4</option>
+      <option>5</option>
+    </select>
+  </div>
+  <div class="form-group">
+    <label for="exampleFormControlTextarea1">Example textarea</label>
+    <textarea class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
+  </div>
+</form>
+ +

For file inputs, swap the .form-control for .form-control-file.

+ +
+
+
+ + +
+
+
+
<form>
+  <div class="form-group">
+    <label for="exampleFormControlFile1">Example file input</label>
+    <input type="file" class="form-control-file" id="exampleFormControlFile1">
+  </div>
+</form>
+ +

Sizing

+ +

Set heights using classes like .form-control-lg and .form-control-sm.

+ +
+ + + +
+
<input class="form-control form-control-lg" type="text" placeholder=".form-control-lg">
+<input class="form-control" type="text" placeholder="Default input">
+<input class="form-control form-control-sm" type="text" placeholder=".form-control-sm">
+ +
+ + + +
+
<select class="form-control form-control-lg">
+  <option>Large select</option>
+</select>
+<select class="form-control">
+  <option>Default select</option>
+</select>
+<select class="form-control form-control-sm">
+  <option>Small select</option>
+</select>
+ +

Readonly

+ +

Add the readonly boolean attribute on an input to prevent modification of the input’s value. Read-only inputs appear lighter (just like disabled inputs), but retain the standard cursor.

+ +
+ +
+
<input class="form-control" type="text" placeholder="Readonly input here…" readonly>
+ +

Readonly plain text

+ +

If you want to have <input readonly> elements in your form styled as plain text, use the .form-control-plaintext class to remove the default form field styling and preserve the correct margin and padding.

+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
<form>
+  <div class="form-group row">
+    <label for="staticEmail" class="col-sm-2 col-form-label">Email</label>
+    <div class="col-sm-10">
+      <input type="text" readonly class="form-control-plaintext" id="staticEmail" value="email@example.com">
+    </div>
+  </div>
+  <div class="form-group row">
+    <label for="inputPassword" class="col-sm-2 col-form-label">Password</label>
+    <div class="col-sm-10">
+      <input type="password" class="form-control" id="inputPassword" placeholder="Password">
+    </div>
+  </div>
+</form>
+ +
+
+
+ + +
+
+ + +
+ +
+
+
<form class="form-inline">
+  <div class="form-group">
+    <label for="staticEmail2" class="sr-only">Email</label>
+    <input type="text" readonly class="form-control-plaintext" id="staticEmail2" value="email@example.com">
+  </div>
+  <div class="form-group mx-sm-3">
+    <label for="inputPassword2" class="sr-only">Password</label>
+    <input type="password" class="form-control" id="inputPassword2" placeholder="Password">
+  </div>
+  <button type="submit" class="btn btn-primary">Confirm identity</button>
+</form>
+ +

Checkboxes and radios

+ +

Default checkboxes and radios are improved upon with the help of .form-check, a single class for both input types that improves the layout and behavior of their HTML elements. Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.

+ +

Disabled checkboxes and radios are supported, but to provide a not-allowed cursor on hover of the parent <label>, you’ll need to add the .disabled class to the parent .form-check. The disabled class will also lighten the text color to help indicate the input’s state.

+ +

Default (stacked)

+ +

By default, any number of checkboxes and radios that are immediate sibling will be vertically stacked and appropriately spaced with .form-check.

+ +
+
+ +
+
+ +
+
+
<div class="form-check">
+  <label class="form-check-label">
+    <input class="form-check-input" type="checkbox" value="">
+    Option one is this and that&mdash;be sure to include why it's great
+  </label>
+</div>
+<div class="form-check disabled">
+  <label class="form-check-label">
+    <input class="form-check-input" type="checkbox" value="" disabled>
+    Option two is disabled
+  </label>
+</div>
+ +
+
+ +
+
+ +
+
+ +
+
+
<div class="form-check">
+  <label class="form-check-label">
+    <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
+    Option one is this and that&mdash;be sure to include why it's great
+  </label>
+</div>
+<div class="form-check">
+  <label class="form-check-label">
+    <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
+    Option two can be something else and selecting it will deselect option one
+  </label>
+</div>
+<div class="form-check disabled">
+  <label class="form-check-label">
+    <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled>
+    Option three is disabled
+  </label>
+</div>
+ +

Inline

+ +

Group checkboxes or radios on the same horizontal row by adding .form-check-inline to any .form-check.

+ +
+
+ +
+
+ +
+
+ +
+
+
<div class="form-check form-check-inline">
+  <label class="form-check-label">
+    <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1"> 1
+  </label>
+</div>
+<div class="form-check form-check-inline">
+  <label class="form-check-label">
+    <input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="option2"> 2
+  </label>
+</div>
+<div class="form-check form-check-inline disabled">
+  <label class="form-check-label">
+    <input class="form-check-input" type="checkbox" id="inlineCheckbox3" value="option3" disabled> 3
+  </label>
+</div>
+ +
+
+ +
+
+ +
+
+ +
+
+
<div class="form-check form-check-inline">
+  <label class="form-check-label">
+    <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1"> 1
+  </label>
+</div>
+<div class="form-check form-check-inline">
+  <label class="form-check-label">
+    <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2"> 2
+  </label>
+</div>
+<div class="form-check form-check-inline disabled">
+  <label class="form-check-label">
+    <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3" disabled> 3
+  </label>
+</div>
+ +

Without labels

+ +

Add .position-static to inputs within .form-check that don’t have any label text. Remember to still provide some form of label for assistive technologies (for instance, using aria-label).

+ +
+
+ +
+
+ +
+
+
<div class="form-check">
+  <label class="form-check-label">
+    <input class="form-check-input position-static" type="checkbox" id="blankCheckbox" value="option1" aria-label="...">
+  </label>
+</div>
+<div class="form-check">
+  <label class="form-check-label">
+    <input class="form-check-input position-static" type="radio" name="blankRadio" id="blankRadio1" value="option1" aria-label="...">
+  </label>
+</div>
+ +

Layout

+ +

Since Bootstrap applies display: block and width: 100% to almost all our form controls, forms will by default stack vertically. Additional classes can be used to vary this layout on a per-form basis.

+ +

Form groups

+ +

The .form-group class is the easiest way to add some structure to forms. Its only purpose is to provide margin-bottom around a label and control pairing. As a bonus, since it’s a class you can use it with <fieldset>s, <div>s, or nearly any other element.

+ +
+
+
+ + +
+
+ + +
+
+
+
<form>
+  <div class="form-group">
+    <label class="form-control-label" for="formGroupExampleInput">Example label</label>
+    <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
+  </div>
+  <div class="form-group">
+    <label class="form-control-label" for="formGroupExampleInput2">Another label</label>
+    <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
+  </div>
+</form>
+ +

Form grid

+ +

More complex forms can be built using our grid classes. Use these for form layouts that require multiple columns, varied widths, and additional alignment options.

+ +
+
+
+
+ +
+
+ +
+
+
+
+
<form>
+  <div class="row">
+    <div class="col">
+      <input type="text" class="form-control" placeholder="First name">
+    </div>
+    <div class="col">
+      <input type="text" class="form-control" placeholder="Last name">
+    </div>
+  </div>
+</form>
+ +

Form row

+ +

You may also swap .row for .form-row, a variation of our standard grid row that overrides the default column gutters for tighter and more compact layouts.

+ +
+
+
+
+ +
+
+ +
+
+
+
+
<form>
+  <div class="form-row">
+    <div class="col">
+      <input type="text" class="form-control" placeholder="First name">
+    </div>
+    <div class="col">
+      <input type="text" class="form-control" placeholder="Last name">
+    </div>
+  </div>
+</form>
+ +

More complex layouts can also be created with the grid system.

+ +
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
+
+ +
+
+
<form>
+  <div class="form-row">
+    <div class="form-group col-md-6">
+      <label for="inputEmail4" class="col-form-label">Email</label>
+      <input type="email" class="form-control" id="inputEmail4" placeholder="Email">
+    </div>
+    <div class="form-group col-md-6">
+      <label for="inputPassword4" class="col-form-label">Password</label>
+      <input type="password" class="form-control" id="inputPassword4" placeholder="Password">
+    </div>
+  </div>
+  <div class="form-group">
+    <label for="inputAddress" class="col-form-label">Address</label>
+    <input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
+  </div>
+  <div class="form-group">
+    <label for="inputAddress2" class="col-form-label">Address 2</label>
+    <input type="text" class="form-control" id="inputAddress2" placeholder="Apartment, studio, or floor">
+  </div>
+  <div class="form-row">
+    <div class="form-group col-md-6">
+      <label for="inputCity" class="col-form-label">City</label>
+      <input type="text" class="form-control" id="inputCity">
+    </div>
+    <div class="form-group col-md-4">
+      <label for="inputState" class="col-form-label">State</label>
+      <select id="inputState" class="form-control">Choose</select>
+    </div>
+    <div class="form-group col-md-2">
+      <label for="inputZip" class="col-form-label">Zip</label>
+      <input type="text" class="form-control" id="inputZip">
+    </div>
+  </div>
+  <div class="form-group">
+    <div class="form-check">
+      <label class="form-check-label">
+        <input class="form-check-input" type="checkbox"> Check me out
+      </label>
+    </div>
+  </div>
+  <button type="submit" class="btn btn-primary">Sign in</button>
+</form>
+ +

Horizontal form

+ +

Create horizontal forms with the grid by adding the .row class to form groups and using the .col-*-* classes to specify the width of your labels and controls.

+ +

Be sure to add .col-form-label to your <label>s as well so they’re vertically centered with their associated form controls. For <legend> elements, you can use .col-form-legend to make them appear similar to regular <label> elements.

+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ Radios +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
Checkbox
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
<div class="container">
+  <form>
+    <div class="form-group row">
+      <label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
+      <div class="col-sm-10">
+        <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
+      </div>
+    </div>
+    <div class="form-group row">
+      <label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
+      <div class="col-sm-10">
+        <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
+      </div>
+    </div>
+    <fieldset class="form-group">
+      <div class="row">
+        <legend class="col-form-legend col-sm-2">Radios</legend>
+        <div class="col-sm-10">
+          <div class="form-check">
+            <label class="form-check-label">
+              <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
+              Option one is this and that&mdash;be sure to include why it's great
+            </label>
+          </div>
+          <div class="form-check">
+            <label class="form-check-label">
+              <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
+              Option two can be something else and selecting it will deselect option one
+            </label>
+          </div>
+          <div class="form-check disabled">
+            <label class="form-check-label">
+              <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
+              Option three is disabled
+            </label>
+          </div>
+        </div>
+      </div>
+    </fieldset>
+    <div class="form-group row">
+      <div class="col-sm-2">Checkbox</div>
+      <div class="col-sm-10">
+        <div class="form-check">
+          <label class="form-check-label">
+            <input class="form-check-input" type="checkbox"> Check me out
+          </label>
+        </div>
+      </div>
+    </div>
+    <div class="form-group row">
+      <div class="col-sm-10">
+        <button type="submit" class="btn btn-primary">Sign in</button>
+      </div>
+    </div>
+  </form>
+</div>
+ +

Column sizing

+ +

As shown in the previous examples, our grid system allows you to place any number of .cols within a .row or .form-row. They’ll split the available width equally between them. You may also pick a subset of your columns to take up more or less space, while the remaining .cols equally split the rest, with specific column classes like .col-7.

+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
<form>
+  <div class="form-row">
+    <div class="col-7">
+      <input type="text" class="form-control" placeholder="City">
+    </div>
+    <div class="col">
+      <input type="text" class="form-control" placeholder="State">
+    </div>
+    <div class="col">
+      <input type="text" class="form-control" placeholder="Zip">
+    </div>
+  </div>
+</form>
+ +

Auto-sizing

+ +

The example below uses a flexbox utility to vertically center the contents and changes .col to .col-auto so that your columns only take up as much space as needed. Put another way, the column sizes itself based on the contents.

+ +
+
+
+
+ + +
+
+ +
+
@
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+
<form>
+  <div class="form-row align-items-center">
+    <div class="col-auto">
+      <label class="sr-only" for="inlineFormInput">Name</label>
+      <input type="text" class="form-control mb-2 mb-sm-0" id="inlineFormInput" placeholder="Jane Doe">
+    </div>
+    <div class="col-auto">
+      <label class="sr-only" for="inlineFormInputGroup">Username</label>
+      <div class="input-group mb-2 mb-sm-0">
+        <div class="input-group-addon">@</div>
+        <input type="text" class="form-control" id="inlineFormInputGroup" placeholder="Username">
+      </div>
+    </div>
+    <div class="col-auto">
+      <div class="form-check mb-2 mb-sm-0">
+        <label class="form-check-label">
+          <input class="form-check-input" type="checkbox"> Remember me
+        </label>
+      </div>
+    </div>
+    <div class="col-auto">
+      <button type="submit" class="btn btn-primary">Submit</button>
+    </div>
+  </div>
+</form>
+ +

You can then remix that once again with size-specific column classes.

+ +
+
+
+
+ + +
+
+ +
+
@
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+
<form>
+  <div class="form-row align-items-center">
+    <div class="col-sm-3">
+      <label class="sr-only" for="inlineFormInputName">Name</label>
+      <input type="text" class="form-control mb-2 mb-sm-0" id="inlineFormInputName" placeholder="Jane Doe">
+    </div>
+    <div class="col-sm-3">
+      <label class="sr-only" for="inlineFormInputGroupUsername">Username</label>
+      <div class="input-group mb-2 mb-sm-0">
+        <div class="input-group-addon">@</div>
+        <input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username">
+      </div>
+    </div>
+    <div class="col-auto">
+      <div class="form-check mb-2 mb-sm-0">
+        <label class="form-check-label">
+          <input class="form-check-input" type="checkbox"> Remember me
+        </label>
+      </div>
+    </div>
+    <div class="col-auto">
+      <button type="submit" class="btn btn-primary">Submit</button>
+    </div>
+  </div>
+</form>
+ +

And of course custom form controls are supported.

+ +
+
+
+
+ + +
+
+ +
+
+ +
+
+
+
+
<form>
+  <div class="form-row align-items-center">
+    <div class="col-auto">
+      <label class="mr-sm-2" for="inlineFormCustomSelect">Preference</label>
+      <select class="custom-select mb-2 mr-sm-2 mb-sm-0" id="inlineFormCustomSelect">
+        <option selected>Choose...</option>
+        <option value="1">One</option>
+        <option value="2">Two</option>
+        <option value="3">Three</option>
+      </select>
+    </div>
+    <div class="col-auto">
+      <label class="custom-control custom-checkbox mb-2 mr-sm-2 mb-sm-0">
+        <input type="checkbox" class="custom-control-input">
+        <span class="custom-control-indicator"></span>
+        <span class="custom-control-description">Remember my preference</span>
+      </label>
+    </div>
+    <div class="col-auto">
+      <button type="submit" class="btn btn-primary">Submit</button>
+    </div>
+  </div>
+</form>
+ +

Inline forms

+ +

Use the .form-inline class to display a series of labels, form controls, and buttons on a single horizontal row. Form controls within inline forms vary slightly from their default states.

+ +
    +
  • Controls are display: flex, collapsing any HTML white space and allowing you to provide alignment control with spacing and flexbox utilities.
  • +
  • Controls and input groups receive width: auto to override the Bootstrap default width: 100%.
  • +
  • Controls only appear inline in viewports that are at least 576px wide to account for narrow viewports on mobile devices.
  • +
+ +

You may need to manually address the width and alignment of individual form controls with spacing utilities (as shown below). Lastly, be sure to always include a <label> with each form control, even if you need to hide it from non-screenreader visitors with .sr-only.

+ +
+
+ + + + +
+
@
+ +
+ +
+ +
+ + +
+
+
<form class="form-inline">
+  <label class="sr-only" for="inlineFormInputName2">Name</label>
+  <input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0" id="inlineFormInputName2" placeholder="Jane Doe">
+
+  <label class="sr-only" for="inlineFormInputGroupUsername2">Username</label>
+  <div class="input-group mb-2 mr-sm-2 mb-sm-0">
+    <div class="input-group-addon">@</div>
+    <input type="text" class="form-control" id="inlineFormInputGroupUsername2" placeholder="Username">
+  </div>
+
+  <div class="form-check mb-2 mr-sm-2 mb-sm-0">
+    <label class="form-check-label">
+      <input class="form-check-input" type="checkbox"> Remember me
+    </label>
+  </div>
+
+  <button type="submit" class="btn btn-primary">Submit</button>
+</form>
+ +

Custom form controls and selects are also supported.

+ +
+
+ + + + + + +
+
+
<form class="form-inline">
+  <label class="mr-sm-2" for="inlineFormCustomSelectPref">Preference</label>
+  <select class="custom-select mb-2 mr-sm-2 mb-sm-0" id="inlineFormCustomSelectPref">
+    <option selected>Choose...</option>
+    <option value="1">One</option>
+    <option value="2">Two</option>
+    <option value="3">Three</option>
+  </select>
+
+  <label class="custom-control custom-checkbox mb-2 mr-sm-2 mb-sm-0">
+    <input type="checkbox" class="custom-control-input">
+    <span class="custom-control-indicator"></span>
+    <span class="custom-control-description">Remember my preference</span>
+  </label>
+
+  <button type="submit" class="btn btn-primary">Submit</button>
+</form>
+ +
+

Alternatives to hidden labels

+

Assistive technologies such as screen readers will have trouble with your forms if you don’t include a label for every input. For these inline forms, you can hide the labels using the .sr-only class. There are further alternative methods of providing a label for assistive technologies, such as the aria-label, aria-labelledby or title attribute. If none of these are present, assistive technologies may resort to using the placeholder attribute, if present, but note that use of placeholder as a replacement for other labelling methods is not advised.

+
+ +

Help text

+ +

Block-level help text in forms can be created using .form-text (previously known as .help-block in v3). Inline help text can be flexibly implemented using any inline HTML element and utility classes like .text-muted.

+ +
+
Associating help text with form controls
+ +

Help text should be explicitly associated with the form control it relates to using the aria-describedby attribute. This will ensure that assistive technologies—such as screen readers—will announce this help text when the user focuses or enters the control.

+
+ +

Help text below inputs can be styled with .form-text. This class includes display: block and adds some top margin for easy spacing from the inputs above.

+ +
+ + + + Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji. + +
+
<label for="inputPassword5">Password</label>
+<input type="password" id="inputPassword5" class="form-control" aria-describedby="passwordHelpBlock">
+<small id="passwordHelpBlock" class="form-text text-muted">
+  Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji.
+</small>
+ +

Inline text can use any typical inline HTML element (be it a <small>, <span>, or something else) with nothing more than a utility class.

+ +
+
+
+ + + + Must be 8-20 characters long. + +
+
+
+
<form class="form-inline">
+  <div class="form-group">
+    <label for="inputPassword6">Password</label>
+    <input type="password" id="inputPassword6" class="form-control mx-sm-3" aria-describedby="passwordHelpInline">
+    <small id="passwordHelpInline" class="text-muted">
+      Must be 8-20 characters long.
+    </small>
+  </div>
+</form>
+ +

Disabled forms

+ +

Add the disabled boolean attribute on an input to prevent user interactions and make it appear lighter.

+ +
<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
+ +

Add the disabled attribute to a <fieldset> to disable all the controls within.

+ +
+
+
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+
<form>
+  <fieldset disabled>
+    <div class="form-group">
+      <label for="disabledTextInput">Disabled input</label>
+      <input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
+    </div>
+    <div class="form-group">
+      <label for="disabledSelect">Disabled select menu</label>
+      <select id="disabledSelect" class="form-control">
+        <option>Disabled select</option>
+      </select>
+    </div>
+    <div class="checkbox">
+      <label>
+        <input type="checkbox"> Can't check this
+      </label>
+    </div>
+    <button type="submit" class="btn btn-primary">Submit</button>
+  </fieldset>
+</form>
+ +
+

Caveat with anchors

+ +

By default, browsers will treat all native form controls (<input>, <select> and <button> elements) inside a <fieldset disabled> as disabled, preventing both keyboard and mouse interactions on them. However, if your form also includes <a ... class="btn btn-*"> elements, these will only be given a style of pointer-events: none. As noted in the section about disabled state for buttons (and specifically in the sub-section for anchor elements), this CSS property is not yet standardized and isn’t fully supported in Opera 18 and below, or in Internet Explorer 11, and won’t prevent keyboard users from being able to focus or activate these links. So to be safe, use custom JavaScript to disable such links.

+
+ +
+

Cross-browser compatibility

+ +

While Bootstrap will apply these styles in all browsers, Internet Explorer 11 and below don’t fully support the disabled attribute on a <fieldset>. Use custom JavaScript to disable the fieldset in these browsers.

+
+ +

Validation

+ +

Provide valuable, actionable feedback to your users with HTML5 form validation–available in all our supported browsers. Choose from the browser default validation feedback, or implement custom messages with our built-in classes and starter JavaScript.

+ +
+

We highly recommend custom validation styles as native browser defaults are not announced to screen readers.

+
+ +

How it works

+ +

Here’s how form validation works with Bootstrap:

+ +
    +
  • HTML form validation is applied via CSS’s two pseudo-classes, :invalid and :valid. It applies to <input>, <select>, and <textarea> elements.
  • +
  • Bootstrap scopes the :invalid and :valid styles to parent .was-validated class, usually applied to the <form>. Otherwise, any required field without a value shows up as invalid on page load. This way, you may choose when to activate them (typically after form submission is attempted).
  • +
  • As a fallback, .is-invalid and .is-valid classes may be used instead of the pseudo-classes for server side validation. They do not require a .was-validated parent class.
  • +
  • Due to constraints in how CSS works, we cannot (at present) apply styles to a <label> that comes before a form control in the DOM without the help of custom JavaScript.
  • +
  • All modern browsers support the constraint validation API, a series of JavaScript methods for validating form controls.
  • +
  • Feedback messages may utilize the browser defaults (different for each browser, and unstylable via CSS) or our custom feedback styles with additional HTML and CSS.
  • +
  • You may provide custom validity messages with setCustomValidity in JavaScript.
  • +
+ +

With that in mind, consider the following demos for our custom form validation styles, optional server side classes, and browser defaults.

+ +

Custom styles

+ +

For custom Bootstrap form validation messages, you’ll need to add the novalidate boolean attribute to your <form>. This disables the browser default feedback tooltips, but still provides access to the form validation APIs in JavaScript. Try to submit the form below; our JavaScript will intercept the submit button and relay feedback to you.

+ +

When attempting to submit, you’ll see the :invalid and :valid styles applied to your form controls.

+ +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+ Please provide a valid city. +
+
+
+ + +
+ Please provide a valid state. +
+
+
+ + +
+ Please provide a valid zip. +
+
+
+ +
+ + +
+
<form class="container" id="needs-validation" novalidate>
+  <div class="row">
+    <div class="col-md-6 mb-3">
+      <label for="validationCustom01">First name</label>
+      <input type="text" class="form-control" id="validationCustom01" placeholder="First name" value="Mark" required>
+    </div>
+    <div class="col-md-6 mb-3">
+      <label for="validationCustom02">Last name</label>
+      <input type="text" class="form-control" id="validationCustom02" placeholder="Last name" value="Otto" required>
+    </div>
+  </div>
+  <div class="row">
+    <div class="col-md-6 mb-3">
+      <label for="validationCustom03">City</label>
+      <input type="text" class="form-control" id="validationCustom03" placeholder="City" required>
+      <div class="invalid-feedback">
+        Please provide a valid city.
+      </div>
+    </div>
+    <div class="col-md-3 mb-3">
+      <label for="validationCustom04">State</label>
+      <input type="text" class="form-control" id="validationCustom04" placeholder="State" required>
+      <div class="invalid-feedback">
+        Please provide a valid state.
+      </div>
+    </div>
+    <div class="col-md-3 mb-3">
+      <label for="validationCustom05">Zip</label>
+      <input type="text" class="form-control" id="validationCustom05" placeholder="Zip" required>
+      <div class="invalid-feedback">
+        Please provide a valid zip.
+      </div>
+    </div>
+  </div>
+  <button class="btn btn-primary" type="submit">Submit form</button>
+</form>
+
+<script>
+// Example starter JavaScript for disabling form submissions if there are invalid fields
+(function() {
+  "use strict";
+  window.addEventListener("load", function() {
+    var form = document.getElementById("needs-validation");
+    form.addEventListener("submit", function(event) {
+      if (form.checkValidity() == false) {
+        event.preventDefault();
+        event.stopPropagation();
+      }
+      form.classList.add("was-validated");
+    }, false);
+  }, false);
+}());
+</script>
+ +

Browser defaults

+ +

Not interested in custom validation feedback messages or writing JavaScript to change form behaviors? All good, you can use the browser defaults. Try submitting the form below. Depending on your browser and OS, you’ll see a slightly different style of feedback.

+ +

While these feedback styles cannot be styled with CSS, you can still customize the feedback text through JavaScript.

+ +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+ Please provide a valid city. +
+
+
+ + +
+ Please provide a valid state. +
+
+
+ + +
+ Please provide a valid zip. +
+
+
+ + +
+
+
<form>
+  <div class="row">
+    <div class="col-md-6 mb-3">
+      <label for="validationDefault01">First name</label>
+      <input type="text" class="form-control" id="validationDefault01" placeholder="First name" value="Mark" required>
+    </div>
+    <div class="col-md-6 mb-3">
+      <label for="validationDefault02">Last name</label>
+      <input type="text" class="form-control" id="validationDefault02" placeholder="Last name" value="Otto" required>
+    </div>
+  </div>
+  <div class="row">
+    <div class="col-md-6 mb-3">
+      <label for="validationDefault03">City</label>
+      <input type="text" class="form-control" id="validationDefault03" placeholder="City" required>
+      <div class="invalid-feedback">
+        Please provide a valid city.
+      </div>
+    </div>
+    <div class="col-md-3 mb-3">
+      <label for="validationDefault04">State</label>
+      <input type="text" class="form-control" id="validationDefault04" placeholder="State" required>
+      <div class="invalid-feedback">
+        Please provide a valid state.
+      </div>
+    </div>
+    <div class="col-md-3 mb-3">
+      <label for="validationDefault05">Zip</label>
+      <input type="text" class="form-control" id="validationDefault05" placeholder="Zip" required>
+      <div class="invalid-feedback">
+        Please provide a valid zip.
+      </div>
+    </div>
+  </div>
+
+  <button class="btn btn-primary" type="submit">Submit form</button>
+</form>
+ +

Server side

+ +

We recommend using client side validation, but in case you require server side, you can indicate invalid and valid form fields with .is-invalid and .is-valid. Note that .invalid-feedback is also supported with these classes.

+ +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+ Please provide a valid city. +
+
+
+ + +
+ Please provide a valid state. +
+
+
+ + +
+ Please provide a valid zip. +
+
+
+ + +
+
+
<form>
+  <div class="row">
+    <div class="col-md-6 mb-3">
+      <label for="validationServer01">First name</label>
+      <input type="text" class="form-control is-valid" id="validationServer01" placeholder="First name" value="Mark" required>
+    </div>
+    <div class="col-md-6 mb-3">
+      <label for="validationServer02">Last name</label>
+      <input type="text" class="form-control is-valid" id="validationServer02" placeholder="Last name" value="Otto" required>
+    </div>
+  </div>
+  <div class="row">
+    <div class="col-md-6 mb-3">
+      <label for="validationServer03">City</label>
+      <input type="text" class="form-control is-invalid" id="validationServer03" placeholder="City" required>
+      <div class="invalid-feedback">
+        Please provide a valid city.
+      </div>
+    </div>
+    <div class="col-md-3 mb-3">
+      <label for="validationServer04">State</label>
+      <input type="text" class="form-control is-invalid" id="validationServer04" placeholder="State" required>
+      <div class="invalid-feedback">
+        Please provide a valid state.
+      </div>
+    </div>
+    <div class="col-md-3 mb-3">
+      <label for="validationServer05">Zip</label>
+      <input type="text" class="form-control is-invalid" id="validationServer05" placeholder="Zip" required>
+      <div class="invalid-feedback">
+        Please provide a valid zip.
+      </div>
+    </div>
+  </div>
+
+  <button class="btn btn-primary" type="submit">Submit form</button>
+</form>
+ +

Supported elements

+ +

Our example forms show native textual <input>s above, but form validation styles are available for our custom form controls, too.

+ +
+
+ + +
+ + +
+ + + + +
+
+
<form class="was-validated">
+  <label class="custom-control custom-checkbox">
+    <input type="checkbox" class="custom-control-input" required>
+    <span class="custom-control-indicator"></span>
+    <span class="custom-control-description">Check this custom checkbox</span>
+  </label>
+
+  <div class="custom-controls-stacked d-block my-3">
+    <label class="custom-control custom-radio">
+      <input id="radioStacked1" name="radio-stacked" type="radio" class="custom-control-input" required>
+      <span class="custom-control-indicator"></span>
+      <span class="custom-control-description">Toggle this custom radio</span>
+    </label>
+    <label class="custom-control custom-radio">
+      <input id="radioStacked2" name="radio-stacked" type="radio" class="custom-control-input" required>
+      <span class="custom-control-indicator"></span>
+      <span class="custom-control-description">Or toggle this other custom radio</span>
+    </label>
+  </div>
+
+  <select class="custom-select d-block my-3" required>
+    <option value="">Open this select menu</option>
+    <option value="1">One</option>
+    <option value="2">Two</option>
+    <option value="3">Three</option>
+  </select>
+
+  <label class="custom-file">
+    <input type="file" id="file" class="custom-file-input" required>
+    <span class="custom-file-control"></span>
+  </label>
+</form>
+ +

Custom forms

+ +

For even more customization and cross browser consistency, use our completely custom form elements to replace the browser defaults. They’re built on top of semantic and accessible markup, so they’re solid replacements for any default form control.

+ +

Checkboxes and radios

+ +

Each checkbox and radio is wrapped in a <label> for three reasons:

+ +
    +
  • It provides a larger hit areas for checking the control.
  • +
  • It provides a helpful and semantic wrapper to help us replace the default <input>s.
  • +
  • It triggers the state of the <input> automatically, meaning no JavaScript is required.
  • +
+ +

We hide the default <input> with opacity and use the .custom-control-indicator to build a new custom form indicator in its place. Unfortunately we can’t build a custom one from just the <input> because CSS’s content doesn’t work on that element.

+ +

We use the sibling selector (~) for all our <input> states—like :checked—to properly style our custom form indicator. When combined with the .custom-control-description class, we can also style the text for each item based on the <input>’s state.

+ +

In the checked states, we use base64 embedded SVG icons from Open Iconic. This provides us the best control for styling and positioning across browsers and devices.

+ +

Checkboxes

+ +
+ +
+
<label class="custom-control custom-checkbox">
+  <input type="checkbox" class="custom-control-input">
+  <span class="custom-control-indicator"></span>
+  <span class="custom-control-description">Check this custom checkbox</span>
+</label>
+ +

Custom checkboxes can also utilize the :indeterminate pseudo class when manually set via JavaScript (there is no available HTML attribute for specifying it).

+ +
+ +
+ +

If you’re using jQuery, something like this should suffice:

+ +
$('.your-checkbox').prop('indeterminate', true)
+ +

Radios

+ +
+ + +
+
<label class="custom-control custom-radio">
+  <input id="radio1" name="radio" type="radio" class="custom-control-input">
+  <span class="custom-control-indicator"></span>
+  <span class="custom-control-description">Toggle this custom radio</span>
+</label>
+<label class="custom-control custom-radio">
+  <input id="radio2" name="radio" type="radio" class="custom-control-input">
+  <span class="custom-control-indicator"></span>
+  <span class="custom-control-description">Or toggle this other custom radio</span>
+</label>
+ +

Disabled

+ +

Custom checkboxes and radios can also be disabled. Add the disabled boolean attribute to the <input> and the custom indicator and label description will be automatically styled.

+ +
+ + + +
+
<label class="custom-control custom-checkbox">
+  <input type="checkbox" class="custom-control-input" disabled>
+  <span class="custom-control-indicator"></span>
+  <span class="custom-control-description">Check this custom checkbox</span>
+</label>
+
+<label class="custom-control custom-radio">
+  <input id="radio3" name="radioDisabled" type="radio" class="custom-control-input" disabled>
+  <span class="custom-control-indicator"></span>
+  <span class="custom-control-description">Toggle this custom radio</span>
+</label>
+ +

Stacked

+ +

Custom checkboxes and radios are inline to start. Add a parent with class .custom-controls-stacked to ensure each form control is on separate lines.

+ +
+
+ + +
+
+
<div class="custom-controls-stacked">
+  <label class="custom-control custom-radio">
+    <input id="radioStacked3" name="radio-stacked" type="radio" class="custom-control-input">
+    <span class="custom-control-indicator"></span>
+    <span class="custom-control-description">Toggle this custom radio</span>
+  </label>
+  <label class="custom-control custom-radio">
+    <input id="radioStacked4" name="radio-stacked" type="radio" class="custom-control-input">
+    <span class="custom-control-indicator"></span>
+    <span class="custom-control-description">Or toggle this other custom radio</span>
+  </label>
+</div>
+ +

Select menu

+ +

Custom <select> menus need only a custom class, .custom-select to trigger the custom styles.

+ +
+ +
+
<select class="custom-select">
+  <option selected>Open this select menu</option>
+  <option value="1">One</option>
+  <option value="2">Two</option>
+  <option value="3">Three</option>
+</select>
+ +

File browser

+ +

The file input is the most gnarly of the bunch and require additional JavaScript if you’d like to hook them up with functional Choose file… and selected file name text.

+ +
+ +
+
<label class="custom-file">
+  <input type="file" id="file2" class="custom-file-input">
+  <span class="custom-file-control"></span>
+</label>
+ +

Here’s how it works:

+ +
    +
  • We wrap the <input> in a <label> so the custom control properly triggers the file browser.
  • +
  • We hide the default file <input> via opacity.
  • +
  • We use :after to generate a custom background and directive (Choose file…).
  • +
  • We use :before to generate and position the Browse button.
  • +
  • We declare a height on the <input> for proper spacing for surrounding content.
  • +
+ +

In other words, it’s an entirely custom element, all generated via CSS.

+ +

Translating or customizing the strings

+ +

The :lang() pseudo-class is used to allow for easy translation of the “Browse” and “Choose file…” text into other languages. Simply override or add entries to the $custom-file-text SCSS variable with the relevant language tag and localized strings. The English strings can be customized the same way. For example, here’s how one might add a Spanish translation (Spanish’s language code is es):

+ +
$custom-file-text: (
+  placeholder: (
+    en: "Choose file...",
+    es: "Seleccionar archivo..."
+  ),
+  button-label: (
+    en: "Browse",
+    es: "Navegar"
+  )
+);
+ +

You’ll need to set the language of your document (or subtree thereof) correctly in order for the correct text to be shown. This can be done using the lang attribute or the Content-Language HTTP header, among other methods.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/index.html b/docs/4.0/components/index.html new file mode 100644 index 00000000..ce63cfc7 --- /dev/null +++ b/docs/4.0/components/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/4.0/components/input-group/index.html b/docs/4.0/components/input-group/index.html new file mode 100644 index 00000000..051db5e5 --- /dev/null +++ b/docs/4.0/components/input-group/index.html @@ -0,0 +1,1660 @@ + + + + + + + + + Input group · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Input group

+

Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs.

+ + +

Basic example

+ +

Place one add-on or button on either side of an input. You may also place one on both sides of an input. We do not support multiple form-controls in a single input group and <label>s must come outside the input group.

+ +
+
+ @ + +
+
+
+ + @example.com +
+
+ +
+ https://example.com/users/ + +
+
+
+ $ + + .00 +
+
+
+ $ + 0.00 + +
+
+
<div class="input-group">
+  <span class="input-group-addon" id="basic-addon1">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
+</div>
+<br>
+<div class="input-group">
+  <input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="basic-addon2">
+  <span class="input-group-addon" id="basic-addon2">@example.com</span>
+</div>
+<br>
+<label for="basic-url">Your vanity URL</label>
+<div class="input-group">
+  <span class="input-group-addon" id="basic-addon3">https://example.com/users/</span>
+  <input type="text" class="form-control" id="basic-url" aria-describedby="basic-addon3">
+</div>
+<br>
+<div class="input-group">
+  <span class="input-group-addon">$</span>
+  <input type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
+  <span class="input-group-addon">.00</span>
+</div>
+<br>
+<div class="input-group">
+  <span class="input-group-addon">$</span>
+  <span class="input-group-addon">0.00</span>
+  <input type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
+</div>
+ +

Sizing

+ +

Add the relative form sizing classes to the .input-group itself and contents within will automatically resize—no need for repeating the form control size classes on each element.

+ +
+
+ @ + +
+
+
+ @ + +
+
+
<div class="input-group input-group-lg">
+  <span class="input-group-addon" id="sizing-addon1">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="sizing-addon1">
+</div>
+<br>
+<div class="input-group input-group-sm">
+  <span class="input-group-addon" id="sizing-addon2">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="sizing-addon2">
+</div>
+ +

Checkboxes and radio addons

+ +

Place any checkbox or radio option within an input group’s addon instead of text.

+ +
+
+
+
+ + + + +
+
+
+
+ + + + +
+
+
+
+
<div class="row">
+  <div class="col-lg-6">
+    <div class="input-group">
+      <span class="input-group-addon">
+        <input type="checkbox" aria-label="Checkbox for following text input">
+      </span>
+      <input type="text" class="form-control" aria-label="Text input with checkbox">
+    </div>
+  </div>
+  <div class="col-lg-6">
+    <div class="input-group">
+      <span class="input-group-addon">
+        <input type="radio" aria-label="Radio button for following text input">
+      </span>
+      <input type="text" class="form-control" aria-label="Text input with radio button">
+    </div>
+  </div>
+</div>
+ +

Multiple addons

+ +

Multiple add-ons are supported and can be mixed with checkbox and radio input versions.

+ +
+
+
+
+ + + + $ + +
+
+
+
+ $ + 0.00 + +
+
+
+
+
<div class="row">
+  <div class="col-lg-6">
+    <div class="input-group">
+      <span class="input-group-addon">
+        <input type="checkbox" aria-label="Checkbox for following text input">
+      </span>
+      <span class="input-group-addon">$</span>
+      <input type="text" class="form-control" aria-label="Text input with checkbox">
+    </div>
+  </div>
+  <div class="col-lg-6">
+    <div class="input-group">
+      <span class="input-group-addon">$</span>
+      <span class="input-group-addon">0.00</span>
+      <input type="text" class="form-control" aria-label="Text input with radio button">
+    </div>
+  </div>
+</div>
+ +

Button addons

+ +

Buttons in input groups must wrapped in a .input-group-btn for proper alignment and sizing. This is required due to default browser styles that cannot be overridden.

+ +
+
+
+
+ + + + +
+
+
+
+ + + + +
+
+
+
+
+
+
+ + + + + + + +
+
+
+
+
<div class="row">
+  <div class="col-lg-6">
+    <div class="input-group">
+      <span class="input-group-btn">
+        <button class="btn btn-secondary" type="button">Go!</button>
+      </span>
+      <input type="text" class="form-control" placeholder="Search for..." aria-label="Search for...">
+    </div>
+  </div>
+  <div class="col-lg-6">
+    <div class="input-group">
+      <input type="text" class="form-control" placeholder="Search for..." aria-label="Search for...">
+      <span class="input-group-btn">
+        <button class="btn btn-secondary" type="button">Go!</button>
+      </span>
+    </div>
+  </div>
+</div>
+<br>
+<div class="row">
+  <div class="col-lg-offset-3 col-lg-6">
+    <div class="input-group">
+      <span class="input-group-btn">
+        <button class="btn btn-secondary" type="button">Hate it</button>
+      </span>
+      <input type="text" class="form-control" placeholder="Product name" aria-label="Product name">
+      <span class="input-group-btn">
+        <button class="btn btn-secondary" type="button">Love it</button>
+      </span>
+    </div>
+  </div>
+</div>
+ +

Buttons with dropdowns

+ +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
<div class="row">
+  <div class="col-lg-6">
+    <div class="input-group">
+      <div class="input-group-btn">
+        <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+          Action
+        </button>
+        <div class="dropdown-menu">
+          <a class="dropdown-item" href="#">Action</a>
+          <a class="dropdown-item" href="#">Another action</a>
+          <a class="dropdown-item" href="#">Something else here</a>
+          <div role="separator" class="dropdown-divider"></div>
+          <a class="dropdown-item" href="#">Separated link</a>
+        </div>
+      </div>
+      <input type="text" class="form-control" aria-label="Text input with dropdown button">
+    </div>
+  </div>
+  <div class="col-lg-6">
+    <div class="input-group">
+      <input type="text" class="form-control" aria-label="Text input with dropdown button">
+      <div class="input-group-btn">
+        <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+          Action
+        </button>
+        <div class="dropdown-menu dropdown-menu-right">
+          <a class="dropdown-item" href="#">Action</a>
+          <a class="dropdown-item" href="#">Another action</a>
+          <a class="dropdown-item" href="#">Something else here</a>
+          <div role="separator" class="dropdown-divider"></div>
+          <a class="dropdown-item" href="#">Separated link</a>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+ +

Segmented buttons

+ +
+
+
+
+
+ + + +
+ +
+
+
+
+ +
+ + + +
+
+
+
+
+
<div class="row">
+  <div class="col-lg-6">
+    <div class="input-group">
+      <div class="input-group-btn">
+        <button type="button" class="btn btn-secondary">Action</button>
+        <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+          <span class="sr-only">Toggle Dropdown</span>
+        </button>
+        <div class="dropdown-menu">
+          <a class="dropdown-item" href="#">Action</a>
+          <a class="dropdown-item" href="#">Another action</a>
+          <a class="dropdown-item" href="#">Something else here</a>
+          <div role="separator" class="dropdown-divider"></div>
+          <a class="dropdown-item" href="#">Separated link</a>
+        </div>
+      </div>
+      <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
+    </div>
+  </div>
+  <div class="col-lg-6">
+    <div class="input-group">
+      <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
+      <div class="input-group-btn">
+        <button type="button" class="btn btn-secondary">Action</button>
+        <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+          <span class="sr-only">Toggle Dropdown</span>
+        </button>
+        <div class="dropdown-menu dropdown-menu-right">
+          <a class="dropdown-item" href="#">Action</a>
+          <a class="dropdown-item" href="#">Another action</a>
+          <a class="dropdown-item" href="#">Something else here</a>
+          <div role="separator" class="dropdown-divider"></div>
+          <a class="dropdown-item" href="#">Separated link</a>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+ +

Accessibility

+ +

Screen readers will have trouble with your forms if you don’t include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies.

+ +

The exact technique to be used (<label> elements hidden using the .sr-only class, or use of the aria-label and aria-labelledby attributes, possibly in combination with aria-describedby) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you’re implementing. The examples in this section provide a few suggested, case-specific approaches.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/jumbotron/index.html b/docs/4.0/components/jumbotron/index.html new file mode 100644 index 00000000..9a4ee7e5 --- /dev/null +++ b/docs/4.0/components/jumbotron/index.html @@ -0,0 +1,1281 @@ + + + + + + + + + Jumbotron · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Jumbotron

+

Lightweight, flexible component for showcasing hero unit style content.

+ + +

A lightweight, flexible component that can optionally extend the entire viewport to showcase key marketing messages on your site.

+ +
+
+

Hello, world!

+

This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.

+
+

It uses utility classes for typography and spacing to space content out within the larger container.

+

+ Learn more +

+
+
+
<div class="jumbotron">
+  <h1 class="display-3">Hello, world!</h1>
+  <p class="lead">This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.</p>
+  <hr class="my-4">
+  <p>It uses utility classes for typography and spacing to space content out within the larger container.</p>
+  <p class="lead">
+    <a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a>
+  </p>
+</div>
+ +

To make the jumbotron full width, and without rounded corners, add the .jumbotron-fluid modifier class and add a .container or .container-fluid within.

+ +
+
+
+

Fluid jumbotron

+

This is a modified jumbotron that occupies the entire horizontal space of its parent.

+
+
+
+
<div class="jumbotron jumbotron-fluid">
+  <div class="container">
+    <h1 class="display-3">Fluid jumbotron</h1>
+    <p class="lead">This is a modified jumbotron that occupies the entire horizontal space of its parent.</p>
+  </div>
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/list-group/index.html b/docs/4.0/components/list-group/index.html new file mode 100644 index 00000000..cd339999 --- /dev/null +++ b/docs/4.0/components/list-group/index.html @@ -0,0 +1,1740 @@ + + + + + + + + + List group · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

List group

+

List groups are a flexible and powerful component for displaying a series of content. Modify and extend them to support just about any content within.

+ + +

Basic example

+ +

The most basic list group is an unordered list with list items and the proper classes. Build upon it with the options that follow, or with your own CSS as needed.

+ +
+
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Morbi leo risus
  • +
  • Porta ac consectetur ac
  • +
  • Vestibulum at eros
  • +
+
+
<ul class="list-group">
+  <li class="list-group-item">Cras justo odio</li>
+  <li class="list-group-item">Dapibus ac facilisis in</li>
+  <li class="list-group-item">Morbi leo risus</li>
+  <li class="list-group-item">Porta ac consectetur ac</li>
+  <li class="list-group-item">Vestibulum at eros</li>
+</ul>
+ +

Active items

+ +

Add .active to a .list-group-item to indicate the current active selection.

+ +
+
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Morbi leo risus
  • +
  • Porta ac consectetur ac
  • +
  • Vestibulum at eros
  • +
+
+
<ul class="list-group">
+  <li class="list-group-item active">Cras justo odio</li>
+  <li class="list-group-item">Dapibus ac facilisis in</li>
+  <li class="list-group-item">Morbi leo risus</li>
+  <li class="list-group-item">Porta ac consectetur ac</li>
+  <li class="list-group-item">Vestibulum at eros</li>
+</ul>
+ +

Disabled items

+ +

Add .disabled to a .list-group-item to make it appear disabled. Note that some elements with .disabled will also require custom JavaScript to fully disable their click events (e.g., links).

+ +
+
    +
  • Cras justo odio
  • +
  • Dapibus ac facilisis in
  • +
  • Morbi leo risus
  • +
  • Porta ac consectetur ac
  • +
  • Vestibulum at eros
  • +
+
+
<ul class="list-group">
+  <li class="list-group-item disabled">Cras justo odio</li>
+  <li class="list-group-item">Dapibus ac facilisis in</li>
+  <li class="list-group-item">Morbi leo risus</li>
+  <li class="list-group-item">Porta ac consectetur ac</li>
+  <li class="list-group-item">Vestibulum at eros</li>
+</ul>
+ + + +

Use <a>s or <button>s to create actionable list group items with hover, disabled, and active states by adding .list-group-item-action. We separate these pseudo-classes to ensure list groups made of non-interactive elements (like <li>s or <div>s) don’t provide a click or tap affordance.

+ +

Be sure to not use the standard .btn classes here.

+ + +
<div class="list-group">
+  <a href="#" class="list-group-item active">
+    Cras justo odio
+  </a>
+  <a href="#" class="list-group-item list-group-item-action">Dapibus ac facilisis in</a>
+  <a href="#" class="list-group-item list-group-item-action">Morbi leo risus</a>
+  <a href="#" class="list-group-item list-group-item-action">Porta ac consectetur ac</a>
+  <a href="#" class="list-group-item list-group-item-action disabled">Vestibulum at eros</a>
+</div>
+ +

With <button>s, you can also make use of the disabled attribute instead of the .disabled class. Sadly, <a>s don’t support the disabled attribute.

+ +
+
+ + + + + +
+
+
<div class="list-group">
+  <button type="button" class="list-group-item list-group-item-action active">
+    Cras justo odio
+  </button>
+  <button type="button" class="list-group-item list-group-item-action">Dapibus ac facilisis in</button>
+  <button type="button" class="list-group-item list-group-item-action">Morbi leo risus</button>
+  <button type="button" class="list-group-item list-group-item-action">Porta ac consectetur ac</button>
+  <button type="button" class="list-group-item list-group-item-action" disabled>Vestibulum at eros</button>
+</div>
+ +

Contextual classes

+ +

Use contextual classes to style list items with a stateful background and color.

+ +
+
    +
  • Dapibus ac facilisis in
  • + + +
  • This is a primary list group item
  • +
  • This is a secondary list group item
  • +
  • This is a success list group item
  • +
  • This is a danger list group item
  • +
  • This is a warning list group item
  • +
  • This is a info list group item
  • +
  • This is a light list group item
  • +
  • This is a dark list group item
  • +
+
+
<ul class="list-group">
+  <li class="list-group-item">Dapibus ac facilisis in</li>
+
+  
+  <li class="list-group-item list-group-item-primary">This is a primary list group item</li>
+  <li class="list-group-item list-group-item-secondary">This is a secondary list group item</li>
+  <li class="list-group-item list-group-item-success">This is a success list group item</li>
+  <li class="list-group-item list-group-item-danger">This is a danger list group item</li>
+  <li class="list-group-item list-group-item-warning">This is a warning list group item</li>
+  <li class="list-group-item list-group-item-info">This is a info list group item</li>
+  <li class="list-group-item list-group-item-light">This is a light list group item</li>
+  <li class="list-group-item list-group-item-dark">This is a dark list group item</li>
+</ul>
+ +

Contextual classes also work with .list-group-item-action. Note the addition of the hover styles here not present in the previous example. Also supported is the .active state; apply it to indicate an active selection on a contextual list group item.

+ + +
<div class="list-group">
+  <a href="#" class="list-group-item list-group-item-action">Dapibus ac facilisis in</a>
+
+  
+  <a href="#" class="list-group-item list-group-item-action list-group-item-primary">This is a primary list group item</a>
+  <a href="#" class="list-group-item list-group-item-action list-group-item-secondary">This is a secondary list group item</a>
+  <a href="#" class="list-group-item list-group-item-action list-group-item-success">This is a success list group item</a>
+  <a href="#" class="list-group-item list-group-item-action list-group-item-danger">This is a danger list group item</a>
+  <a href="#" class="list-group-item list-group-item-action list-group-item-warning">This is a warning list group item</a>
+  <a href="#" class="list-group-item list-group-item-action list-group-item-info">This is a info list group item</a>
+  <a href="#" class="list-group-item list-group-item-action list-group-item-light">This is a light list group item</a>
+  <a href="#" class="list-group-item list-group-item-action list-group-item-dark">This is a dark list group item</a>
+</div>
+ +
+

Conveying meaning to assistive technologies

+ +

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .sr-only class.

+
+ +

With badges

+ +

Add badges to any list group item to show unread counts, activity, and more with the help of some utilities.

+ +
+
    +
  • + Cras justo odio + 14 +
  • +
  • + Dapibus ac facilisis in + 2 +
  • +
  • + Morbi leo risus + 1 +
  • +
+
+
<ul class="list-group">
+  <li class="list-group-item d-flex justify-content-between align-items-center">
+    Cras justo odio
+    <span class="badge badge-default badge-pill">14</span>
+  </li>
+  <li class="list-group-item d-flex justify-content-between align-items-center">
+    Dapibus ac facilisis in
+    <span class="badge badge-default badge-pill">2</span>
+  </li>
+  <li class="list-group-item d-flex justify-content-between align-items-center">
+    Morbi leo risus
+    <span class="badge badge-default badge-pill">1</span>
+  </li>
+</ul>
+ +

Custom content

+ +

Add nearly any HTML within, even for linked list groups like the one below, with the help of flexbox utilities.

+ + +
<div class="list-group">
+  <a href="#" class="list-group-item list-group-item-action flex-column align-items-start active">
+    <div class="d-flex w-100 justify-content-between">
+      <h5 class="mb-1">List group item heading</h5>
+      <small>3 days ago</small>
+    </div>
+    <p class="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
+    <small>Donec id elit non mi porta.</small>
+  </a>
+  <a href="#" class="list-group-item list-group-item-action flex-column align-items-start">
+    <div class="d-flex w-100 justify-content-between">
+      <h5 class="mb-1">List group item heading</h5>
+      <small class="text-muted">3 days ago</small>
+    </div>
+    <p class="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
+    <small class="text-muted">Donec id elit non mi porta.</small>
+  </a>
+  <a href="#" class="list-group-item list-group-item-action flex-column align-items-start">
+    <div class="d-flex w-100 justify-content-between">
+      <h5 class="mb-1">List group item heading</h5>
+      <small class="text-muted">3 days ago</small>
+    </div>
+    <p class="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
+    <small class="text-muted">Donec id elit non mi porta.</small>
+  </a>
+</div>
+ +

JavaScript behavior

+ +

Use the tab JavaScript plugin—include it individually or through the compiled bootstrap.js file—to extend our list group to create tabbable panes of local content.

+ +
+
+
+ +
+
+ +
+
+
+ +
<div class="row">
+  <div class="col-4">
+    <div class="list-group" id="list-tab" role="tablist">
+      <a class="list-group-item list-group-item-action active" id="list-home-list" data-toggle="list" href="#list-home" role="tab" aria-controls="home">Home</a>
+      <a class="list-group-item list-group-item-action" id="list-profile-list" data-toggle="list" href="#list-profile" role="tab" aria-controls="profile">Profile</a>
+      <a class="list-group-item list-group-item-action" id="list-messages-list" data-toggle="list" href="#list-messages" role="tab" aria-controls="messages">Messages</a>
+      <a class="list-group-item list-group-item-action" id="list-settings-list" data-toggle="list" href="#list-settings" role="tab" aria-controls="settings">Settings</a>
+    </div>
+  </div>
+  <div class="col-8">
+    <div class="tab-content" id="nav-tabContent">
+      <div class="tab-pane fade show active" id="list-home" role="tabpanel" aria-labelledby="list-home-list">...</div>
+      <div class="tab-pane fade" id="list-profile" role="tabpanel" aria-labelledby="list-profile-list">...</div>
+      <div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list">...</div>
+      <div class="tab-pane fade" id="list-settings" role="tabpanel" aria-labelledby="list-settings-list">...</div>
+    </div>
+  </div>
+</div>
+ +

Using data attributes

+ +

You can activate a list group navigation without writing any JavaScript by simply specifying data-toggle="list" or on an element. Use these data attributes on .list-group-item.

+ +
+ +
<!-- List group -->
+<div class="list-group" id="myList" role="tablist">
+  <a class="list-group-item list-group-item-action active" data-toggle="list" href="#home" role="tab">Home</a>
+  <a class="list-group-item list-group-item-action" data-toggle="list" href="#profile" role="tab">Profile</a>
+  <a class="list-group-item list-group-item-action" data-toggle="list" href="#messages" role="tab">Messages</a>
+  <a class="list-group-item list-group-item-action" data-toggle="list" href="#settings" role="tab">Settings</a>
+</div>
+
+<!-- Tab panes -->
+<div class="tab-content">
+  <div class="tab-pane active" id="home" role="tabpanel">...</div>
+  <div class="tab-pane" id="profile" role="tabpanel">...</div>
+  <div class="tab-pane" id="messages" role="tabpanel">...</div>
+  <div class="tab-pane" id="settings" role="tabpanel">...</div>
+</div>
+ +
+ +

Via JavaScript

+ +

Enable tabbable list item via JavaScript (each list item needs to be activated individually):

+ +
$('#myList a').click(function (e) {
+  e.preventDefault()
+  $(this).tab('show')
+})
+ +

You can activate individual list item in several ways:

+ +
$('#myList a[href="#profile"]').tab('show') // Select tab by name
+$('#myList a:first').tab('show') // Select first tab
+$('#myList a:last').tab('show') // Select last tab
+$('#myList li:eq(2) a').tab('show') // Select third tab (0-indexed)
+ +

Fade effect

+ +

To make tabs panel fade in, add .fade to each .tab-pane. The first tab pane must also have .show to make the initial content visible.

+ +
<div class="tab-content">
+  <div class="tab-pane fade show active" id="home" role="tabpanel">...</div>
+  <div class="tab-pane fade" id="profile" role="tabpanel">...</div>
+  <div class="tab-pane fade" id="messages" role="tabpanel">...</div>
+  <div class="tab-pane fade" id="settings" role="tabpanel">...</div>
+</div>
+ +

Methods

+ +

$().tab

+ +

Activates a list item element and content container. Tab should have either a data-target or an href targeting a container node in the DOM.

+ +
<div class="list-group" id="myList" role="tablist">
+  <a class="list-group-item list-group-item-action active" data-toggle="list" href="#home" role="tab">Home</a>
+  <a class="list-group-item list-group-item-action" data-toggle="list" href="#profile" role="tab">Profile</a>
+  <a class="list-group-item list-group-item-action" data-toggle="list" href="#messages" role="tab">Messages</a>
+  <a class="list-group-item list-group-item-action" data-toggle="list" href="#settings" role="tab">Settings</a>
+</div>
+
+<div class="tab-content">
+  <div class="tab-pane active" id="home" role="tabpanel">...</div>
+  <div class="tab-pane" id="profile" role="tabpanel">...</div>
+  <div class="tab-pane" id="messages" role="tabpanel">...</div>
+  <div class="tab-pane" id="settings" role="tabpanel">...</div>
+</div>
+
+<script>
+  $(function () {
+    $('#myList a:last').tab('show')
+  })
+</script>
+ +

.tab(‘show’)

+ +

Selects the given list item and shows its associated pane. Any other list item that was previously selected becomes unselected and its associated pane is hidden. Returns to the caller before the tab pane has actually been shown (for example, before the shown.bs.tab event occurs).

+ +
$('#someListItem').tab('show')
+ +

Events

+ +

When showing a new tab, the events fire in the following order:

+ +
    +
  1. hide.bs.tab (on the current active tab)
  2. +
  3. show.bs.tab (on the to-be-shown tab)
  4. +
  5. hidden.bs.tab (on the previous active tab, the same one as for the hide.bs.tab event)
  6. +
  7. shown.bs.tab (on the newly-active just-shown tab, the same one as for the show.bs.tab event)
  8. +
+ +

If no tab was already active, the hide.bs.tab and hidden.bs.tab events will not be fired.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Event typeDescription
show.bs.tabThis event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
shown.bs.tabThis event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
hide.bs.tabThis event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use event.target and event.relatedTarget to target the current active tab and the new soon-to-be-active tab, respectively.
hidden.bs.tabThis event fires after a new tab is shown (and thus the previous active tab is hidden). Use event.target and event.relatedTarget to target the previous active tab and the new active tab, respectively.
+ +
$('a[data-toggle="list"]').on('shown.bs.tab', function (e) {
+  e.target // newly activated tab
+  e.relatedTarget // previous active tab
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/modal/index.html b/docs/4.0/components/modal/index.html new file mode 100644 index 00000000..929adbf7 --- /dev/null +++ b/docs/4.0/components/modal/index.html @@ -0,0 +1,1946 @@ + + + + + + + + + Modal · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Modal

+

Use Bootstrap's JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

+ + +

How it works

+ +

Before getting started with Bootstrap’s modal component, be sure to read the following as our menu options have recently changed.

+ +
    +
  • Modals are built with HTML, CSS, and JavaScript. They’re positioned over everything else in the document and remove scroll from the <body> so that modal content scrolls instead.
  • +
  • Clicking on the modal “backdrop” will automatically close the modal.
  • +
  • Bootstrap only supports one modal window at a time. Nested modals aren’t supported as we believe them to be poor user experiences.
  • +
  • Modals use position: fixed, which can sometimes be a bit particular about its rendering. Whenever possible, place your modal HTML in a top-level position to avoid potential interference from other elements. You’ll likely run into issues when nesting a .modal within another fixed element.
  • +
  • Once again, due to position: fixed, there are some caveats with using modals on mobile devices. See our browser support docs for details.
  • +
  • Due to how HTML5 defines its semantics, the autofocus HTML attribute has no effect in Bootstrap modals. To achieve the same effect, use some custom JavaScript:
  • +
+ +
$('#myModal').on('shown.bs.modal', function () {
+  $('#myInput').focus()
+})
+ +

Keep reading for demos and usage guidelines.

+ +

Examples

+ + + +

Below is a static modal example (meaning its position and display have been overridden). Included are the modal header, modal body (required for padding), and modal footer (optional). We ask that you include modal headers with dismiss actions whenever possible, or provide another explicit dismiss action.

+ +
+ +
+ +
<div class="modal">
+  <div class="modal-dialog" role="document">
+    <div class="modal-content">
+      <div class="modal-header">
+        <h5 class="modal-title">Modal title</h5>
+        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+          <span aria-hidden="true">&times;</span>
+        </button>
+      </div>
+      <div class="modal-body">
+        <p>Modal body text goes here.</p>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-primary">Save changes</button>
+        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+      </div>
+    </div>
+  </div>
+</div>
+ +

Live demo

+ +

Toggle a working modal demo by clicking the button below. It will slide down and fade in from the top of the page.

+ + + +
+ +
+ +
<!-- Button trigger modal -->
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
+  Launch demo modal
+</button>
+
+<!-- Modal -->
+<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+  <div class="modal-dialog" role="document">
+    <div class="modal-content">
+      <div class="modal-header">
+        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
+        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+          <span aria-hidden="true">&times;</span>
+        </button>
+      </div>
+      <div class="modal-body">
+        ...
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+        <button type="button" class="btn btn-primary">Save changes</button>
+      </div>
+    </div>
+  </div>
+</div>
+ +

Scrolling long content

+ +

When modals become too long for the user’s viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean.

+ + + +
+ +
+ +
<!-- Button trigger modal -->
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalLong">
+  Launch demo modal
+</button>
+
+<!-- Modal -->
+<div class="modal fade" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
+  <div class="modal-dialog" role="document">
+    <div class="modal-content">
+      <div class="modal-header">
+        <h5 class="modal-title" id="exampleModalLongTitle">Modal title</h5>
+        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+          <span aria-hidden="true">&times;</span>
+        </button>
+      </div>
+      <div class="modal-body">
+        ...
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+        <button type="button" class="btn btn-primary">Save changes</button>
+      </div>
+    </div>
+  </div>
+</div>
+ +

Tooltips and popovers

+ +

Tooltips and popovers can be placed within modals as needed. When modals are closed, any tooltips and popovers within are also automatically dismissed.

+ + + +
+ +
+ +
<div class="modal-body">
+  <h5>Popover in a modal</h5>
+  <p>This <a href="#" role="button" class="btn btn-secondary popover-test" title="Popover title" data-content="Popover body content is set in this attribute.">button</a> triggers a popover on click.</p>
+  <hr>
+  <h5>Tooltips in a modal</h5>
+  <p><a href="#" class="tooltip-test" title="Tooltip">This link</a> and <a href="#" class="tooltip-test" title="Tooltip">that link</a> have tooltips on hover.</p>
+</div>
+ +

Using the grid

+ +

Utilize the Bootstrap grid system within a modal by nesting .container-fluid within the .modal-body. Then, use the normal grid system classes as you would anywhere else.

+ + + +
+ +
+ +
<div class="modal-body">
+  <div class="container-fluid">
+    <div class="row">
+      <div class="col-md-4">.col-md-4</div>
+      <div class="col-md-4 ml-auto">.col-md-4 .ml-auto</div>
+    </div>
+    <div class="row">
+      <div class="col-md-3 ml-auto">.col-md-3 .ml-auto</div>
+      <div class="col-md-2 ml-auto">.col-md-2 .ml-auto</div>
+    </div>
+    <div class="row">
+      <div class="col-md-6 ml-auto">.col-md-6 .ml-auto</div>
+    </div>
+    <div class="row">
+      <div class="col-sm-9">
+        Level 1: .col-sm-9
+        <div class="row">
+          <div class="col-8 col-sm-6">
+            Level 2: .col-8 .col-sm-6
+          </div>
+          <div class="col-4 col-sm-6">
+            Level 2: .col-4 .col-sm-6
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+ +

Varying modal content

+ +

Have a bunch of buttons that all trigger the same modal with slightly different contents? Use event.relatedTarget and HTML data-* attributes (possibly via jQuery) to vary the contents of the modal depending on which button was clicked.

+ +

Below is a live demo followed by example HTML and JavaScript. For more information, read the modal events docs for details on relatedTarget.

+ +
+ + + + + +
+
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Open modal for @getbootstrap</button>
+
+<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+  <div class="modal-dialog" role="document">
+    <div class="modal-content">
+      <div class="modal-header">
+        <h5 class="modal-title" id="exampleModalLabel">New message</h5>
+        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+          <span aria-hidden="true">&times;</span>
+        </button>
+      </div>
+      <div class="modal-body">
+        <form>
+          <div class="form-group">
+            <label for="recipient-name" class="form-control-label">Recipient:</label>
+            <input type="text" class="form-control" id="recipient-name">
+          </div>
+          <div class="form-group">
+            <label for="message-text" class="form-control-label">Message:</label>
+            <textarea class="form-control" id="message-text"></textarea>
+          </div>
+        </form>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+        <button type="button" class="btn btn-primary">Send message</button>
+      </div>
+    </div>
+  </div>
+</div>
+ +
$('#exampleModal').on('show.bs.modal', function (event) {
+  var button = $(event.relatedTarget) // Button that triggered the modal
+  var recipient = button.data('whatever') // Extract info from data-* attributes
+  // If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
+  // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
+  var modal = $(this)
+  modal.find('.modal-title').text('New message to ' + recipient)
+  modal.find('.modal-body input').val(recipient)
+})
+ +

Remove animation

+ +

For modals that simply appear rather than fade in to view, remove the .fade class from your modal markup.

+ +
<div class="modal" tabindex="-1" role="dialog" aria-labelledby="..." aria-hidden="true">
+  ...
+</div>
+ +

Dynamic heights

+ +

If the height of a modal changes while it is open, you should call $('#myModal').data('bs.modal').handleUpdate() or $('#myModal').modal('handleUpdate') to readjust the modal’s position in case a scrollbar appears.

+ +

Accessibility

+ +

Be sure to add role="dialog" and aria-labelledby="...", referencing the modal title, to .modal, and role="document" to the .modal-dialog itself. Additionally, you may give a description of your modal dialog with aria-describedby on .modal.

+ +

Embedding YouTube videos

+ +

Embedding YouTube videos in modals requires additional JavaScript not in Bootstrap to automatically stop playback and more. See this helpful Stack Overflow post for more information.

+ +

Optional sizes

+ +

Modals have two optional sizes, available via modifier classes to be placed on a .modal-dialog. These sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports.

+ +
+ + +
+ +
<!-- Large modal -->
+<button class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-lg">Large modal</button>
+
+<div class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
+  <div class="modal-dialog modal-lg">
+    <div class="modal-content">
+      ...
+    </div>
+  </div>
+</div>
+
+<!-- Small modal -->
+<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-sm">Small modal</button>
+
+<div class="modal fade bd-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
+  <div class="modal-dialog modal-sm">
+    <div class="modal-content">
+      ...
+    </div>
+  </div>
+</div>
+ + + + + +

Usage

+ +

The modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also adds .modal-open to the <body> to override default scrolling behavior and generates a .modal-backdrop to provide a click area for dismissing shown modals when clicking outside the modal.

+ +

Via data attributes

+ +

Activate a modal without writing JavaScript. Set data-toggle="modal" on a controller element, like a button, along with a data-target="#foo" or href="#foo" to target a specific modal to toggle.

+ +
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
+ +

Via JavaScript

+ +

Call a modal with id myModal with a single line of JavaScript:

+ +
$('#myModal').modal(options)
+ +

Options

+ +

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-backdrop="".

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
backdropboolean or the string 'static'trueIncludes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal on click.
keyboardbooleantrueCloses the modal when escape key is pressed
focusbooleantruePuts the focus on the modal when initialized.
showbooleantrueShows the modal when initialized.
+ +

Methods

+ +
+

Asynchronous methods and transitions

+ +

All API methods are asynchronous and start a transition. They returns to the caller as soon as the transition is started but before it ends. In addition, a method call on a transitioning component will be ignored.

+ +

See our Javascript documentation for more informations.

+
+ +

.modal(options)

+ +

Activates your content as a modal. Accepts an optional options object.

+ +
$('#myModal').modal({
+  keyboard: false
+})
+ +

.modal('toggle')

+ +

Manually toggles a modal. Returns to the caller before the modal has actually been shown or hidden (i.e. before the shown.bs.modal or hidden.bs.modal event occurs).

+ +
$('#myModal').modal('toggle')
+ +

.modal('show')

+ +

Manually opens a modal. Returns to the caller before the modal has actually been shown (i.e. before the shown.bs.modal event occurs).

+ +
$('#myModal').modal('show')
+ +

.modal('hide')

+ +

Manually hides a modal. Returns to the caller before the modal has actually been hidden (i.e. before the hidden.bs.modal event occurs).

+ +
$('#myModal').modal('hide')
+ +

.modal('handleUpdate')

+ +

Manually readjust the modal’s position if the height of a modal changes while it is open (i.e. in case a scrollbar appears).

+ +
$('#myModal').modal('handleUpdate')
+ +

Events

+ +

Bootstrap’s modal class exposes a few events for hooking into modal functionality. All modal events are fired at the modal itself (i.e. at the <div class="modal">).

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.modalThis event fires immediately when the show instance method is called. If caused by a click, the clicked element is available as the relatedTarget property of the event.
shown.bs.modalThis event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the relatedTarget property of the event.
hide.bs.modalThis event is fired immediately when the hide instance method has been called.
hidden.bs.modalThis event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete).
+ +
$('#myModal').on('hidden.bs.modal', function (e) {
+  // do something...
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/navbar/index.html b/docs/4.0/components/navbar/index.html new file mode 100644 index 00000000..b8bdee86 --- /dev/null +++ b/docs/4.0/components/navbar/index.html @@ -0,0 +1,2072 @@ + + + + + + + + + Navbar · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Navbar

+

Documentation and examples for Bootstrap's powerful, responsive navigation header, the navbar. Includes support for branding, navigation, and more, including support for our collapse plugin.

+ + +

How it works

+ +

Here’s what you need to know before getting started with the navbar:

+ +
    +
  • Navbars require a wrapping .navbar with .navbar-expand{-sm|-md|-lg|-xl} for responsive collapsing and color scheme classes.
  • +
  • Navbars and their contents are fluid by default. Use optional containers to limit their horizontal width.
  • +
  • Navbars and their contents are built with flexbox, providing easy alignment options via utility classes.
  • +
  • Navbars are responsive by default, but you can easily modify them to change that. Responsive behavior depends on our Collapse JavaScript plugin.
  • +
  • Ensure accessibility by using a <nav> element or, if using a more generic element such as a <div>, add a role="navigation" to every navbar to explicitly identify it as a landmark region for users of assistive technologies.
  • +
+ +

Read on for an example and list of supported sub-components.

+ +

Supported content

+ +

Navbars come with built-in support for a handful of sub-components. Choose from the following as needed:

+ +
    +
  • .navbar-brand for your company, product, or project name.
  • +
  • .navbar-nav for a full-height and lightweight navigation (including support for dropdowns).
  • +
  • .navbar-toggler for use with our collapse plugin and other navigation toggling behaviors.
  • +
  • .form-inline for any form controls and actions.
  • +
  • .navbar-text for adding vertically centered strings of text.
  • +
  • .collapse.navbar-collapse for grouping and hiding navbar contents by a parent breakpoint.
  • +
+ +

Here’s an example of all the sub-components included in a responsive light-themed navbar that automatically collapses at the lg (large) breakpoint.

+ +
+ +
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
+  <a class="navbar-brand" href="#">Navbar</a>
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
+
+  <div class="collapse navbar-collapse" id="navbarSupportedContent">
+    <ul class="navbar-nav mr-auto">
+      <li class="nav-item active">
+        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Link</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link disabled" href="#">Disabled</a>
+      </li>
+    </ul>
+    <form class="form-inline my-2 my-lg-0">
+      <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
+      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+    </form>
+  </div>
+</nav>
+ +

Brand

+ +

The .navbar-brand can be applied to most elements, but an anchor works best as some elements might require utility classes or custom styles.

+ +
+ + + + + +
+
<!-- As a link -->
+<nav class="navbar navbar-light bg-light">
+  <a class="navbar-brand" href="#">Navbar</a>
+</nav>
+
+<!-- As a heading -->
+<nav class="navbar navbar-light bg-light">
+  <span class="h1" class="navbar-brand mb-0">Navbar</span>
+</nav>
+ +

Adding images to the .navbar-brand will likely always require custom styles or utilities to properly size. Here are some examples to demonstrate.

+ +
+ + +
+
<!-- Just an image -->
+<nav class="navbar navbar-light bg-light">
+  <a class="navbar-brand" href="#">
+    <img src="/assets/brand/bootstrap-solid.svg" width="30" height="30" alt="">
+  </a>
+</nav>
+ + +
<!-- Image and text -->
+<nav class="navbar navbar-light bg-light">
+  <a class="navbar-brand" href="#">
+    <img src="/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt="">
+    Bootstrap
+  </a>
+</nav>
+ + + +

Navbar navigation links build on our .nav options with their own modifier class and require the use of toggler classes for proper responsive styling. Navigation in navbars will also grow to occupy as much horizontal space as possible to keep your navbar contents securely aligned.

+ +

Active states—with .active—to indicate the current page can be applied directly to .nav-links or their immediate parent .nav-items.

+ +
+ +
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
+  <a class="navbar-brand" href="#">Navbar</a>
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
+  <div class="collapse navbar-collapse" id="navbarNav">
+    <ul class="navbar-nav">
+      <li class="nav-item active">
+        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Features</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Pricing</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link disabled" href="#">Disabled</a>
+      </li>
+    </ul>
+  </div>
+</nav>
+ +

And because we use classes for our navs, you can avoid the list-based approach entirely if you like.

+ +
+ +
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
+  <a class="navbar-brand" href="#">Navbar</a>
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
+  <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
+    <div class="navbar-nav">
+      <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a>
+      <a class="nav-item nav-link" href="#">Features</a>
+      <a class="nav-item nav-link" href="#">Pricing</a>
+      <a class="nav-item nav-link disabled" href="#">Disabled</a>
+    </div>
+  </div>
+</nav>
+ +

You may also utilize dropdowns in your navbar nav. Dropdown menus require a wrapping element for positioning, so be sure to use separate and nested elements for .nav-item and .nav-link as shown below.

+ +
+ +
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
+  <a class="navbar-brand" href="#">Navbar</a>
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
+  <div class="collapse navbar-collapse" id="navbarNavDropdown">
+    <ul class="navbar-nav">
+      <li class="nav-item active">
+        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Features</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Pricing</a>
+      </li>
+      <li class="nav-item dropdown">
+        <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+          Dropdown link
+        </a>
+        <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
+          <a class="dropdown-item" href="#">Action</a>
+          <a class="dropdown-item" href="#">Another action</a>
+          <a class="dropdown-item" href="#">Something else here</a>
+        </div>
+      </li>
+    </ul>
+  </div>
+</nav>
+ +

Forms

+ +

Place various form controls and components within a navbar with .form-inline.

+ +
+ +
+
<nav class="navbar navbar-light bg-light">
+  <form class="form-inline">
+    <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
+    <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+  </form>
+</nav>
+ +

Align the contents of your inline forms with utilities as needed.

+ +
+ +
+
<nav class="navbar navbar-light bg-light justify-content-between">
+  <a class="navbar-brand">Navbar</a>
+  <form class="form-inline">
+    <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
+    <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+  </form>
+</nav>
+ +

Input groups work, too:

+ +
+ +
+
<nav class="navbar navbar-light bg-light">
+  <form class="form-inline">
+    <div class="input-group">
+      <span class="input-group-addon" id="basic-addon1">@</span>
+      <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
+    </div>
+  </form>
+</nav>
+ +

Various buttons are supported as part of these navbar forms, too. This is also a great reminder that vertical alignment utilities can be used to align different sized elements.

+ +
+ +
+
<nav class="navbar navbar-light bg-light">
+  <form class="form-inline">
+    <button class="btn btn-outline-success" type="button">Main button</button>
+    <button class="btn btn-sm align-middle btn-outline-secondary" type="button">Smaller button</button>
+  </form>
+</nav>
+ +

Text

+ +

Navbars may contain bits of text with the help of .navbar-text. This class adjusts vertical alignment and horizontal spacing for strings of text.

+ +
+ +
+
<nav class="navbar navbar-light bg-light">
+  <span class="navbar-text">
+    Navbar text with an inline element
+  </span>
+</nav>
+ +

Mix and match with other components and utilities as needed.

+ +
+ +
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
+  <a class="navbar-brand" href="#">Navbar w/ text</a>
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
+  <div class="collapse navbar-collapse" id="navbarText">
+    <ul class="navbar-nav mr-auto">
+      <li class="nav-item active">
+        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Features</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Pricing</a>
+      </li>
+    </ul>
+    <span class="navbar-text">
+      Navbar text with an inline element
+    </span>
+  </div>
+</nav>
+ +

Color schemes

+ +

Theming the navbar has never been easier thanks to the combination of theming classes and background-color utilities. Choose from .navbar-light for use with light background colors, or .navbar-dark for dark background colors. Then, customize with .bg-* utilities.

+ +
+ + + + + +
+ +
<nav class="navbar navbar-dark bg-dark">
+  <!-- Navbar content -->
+</nav>
+
+<nav class="navbar navbar-dark bg-primary">
+  <!-- Navbar content -->
+</nav>
+
+<nav class="navbar navbar-light" style="background-color: #e3f2fd;">
+  <!-- Navbar content -->
+</nav>
+ +

Containers

+ +

Although it’s not required, you can wrap a navbar in a .container to center it on a page or add one within to only center the contents of a fixed or static top navbar.

+ +
+
+ +
+
+
<div class="container">
+  <nav class="navbar navbar-expand-lg navbar-light bg-light">
+    <a class="navbar-brand" href="#">Navbar</a>
+  </nav>
+</div>
+ +

When the container is within your navbar, its horizontal padding is removed at breakpoints lower than your specified .navbar-expand{-sm|-md|-lg|-xl} class. This ensures we’re not doubling up on padding unnecessarily on lower viewports when your navbar is collapsed.

+ +
+ +
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
+  <div class="container">
+    <a class="navbar-brand" href="#">Navbar</a>
+  </div>
+</nav>
+ +

Placement

+ +

Use our position utilities to place navbars in non-static positions. Choose from fixed to the top, fixed to the bottom, or stickied to the top. Note that position: sticky, used for .sticky-top, isn’t fully supported in every browser.

+ +
+ +
+
<nav class="navbar navbar-light bg-light">
+  <a class="navbar-brand" href="#">Full width</a>
+</nav>
+ +
+ +
+
<nav class="navbar fixed-top navbar-light bg-light">
+  <a class="navbar-brand" href="#">Fixed top</a>
+</nav>
+ +
+ +
+
<nav class="navbar fixed-bottom navbar-light bg-light">
+  <a class="navbar-brand" href="#">Fixed bottom</a>
+</nav>
+ +
+ +
+
<nav class="navbar sticky-top navbar-light bg-light">
+  <a class="navbar-brand" href="#">Sticky top</a>
+</nav>
+ +

Responsive behaviors

+ +

Navbars can utilize .navbar-toggler, .navbar-collapse, and .navbar-expand{-sm|-md|-lg|-xl} classes to change when their content collapses behind a button. In combination with other utilities, you can easily choose when to show or hide particular elements.

+ +

For navbars that never collapse, add the .navbar-expand class on the navbar. For navbars that always collapse, don’t add any .navbar-expand class.

+ +

Toggler

+ +

Navbar togglers are left-aligned by default, but should they follow a sibling element like a .navbar-brand, they’ll automatically be aligned to the far right. Reversing your markup will reverse the placement of the toggler. Below are examples of different toggle styles.

+ +

With no .navbar-brand shown in lowest breakpoint:

+ +
+ +
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
+  <div class="collapse navbar-collapse" id="navbarTogglerDemo01">
+    <a class="navbar-brand" href="#">Hidden brand</a>
+    <ul class="navbar-nav mr-auto mt-2 mt-lg-0">
+      <li class="nav-item active">
+        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Link</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link disabled" href="#">Disabled</a>
+      </li>
+    </ul>
+    <form class="form-inline my-2 my-lg-0">
+      <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
+      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+    </form>
+  </div>
+</nav>
+ +

With a brand name shown on the left and toggler on the right:

+ +
+ +
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
+  <a class="navbar-brand" href="#">Navbar</a>
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
+
+  <div class="collapse navbar-collapse" id="navbarTogglerDemo02">
+    <ul class="navbar-nav mr-auto mt-2 mt-lg-0">
+      <li class="nav-item active">
+        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Link</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link disabled" href="#">Disabled</a>
+      </li>
+    </ul>
+    <form class="form-inline my-2 my-lg-0">
+      <input class="form-control mr-sm-2" type="text" placeholder="Search">
+      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+    </form>
+  </div>
+</nav>
+ +

With a toggler on the left and brand name on the right:

+ +
+ +
+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo03" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
+  <a class="navbar-brand" href="#">Navbar</a>
+
+  <div class="collapse navbar-collapse" id="navbarTogglerDemo03">
+    <ul class="navbar-nav mr-auto mt-2 mt-lg-0">
+      <li class="nav-item active">
+        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link" href="#">Link</a>
+      </li>
+      <li class="nav-item">
+        <a class="nav-link disabled" href="#">Disabled</a>
+      </li>
+    </ul>
+    <form class="form-inline my-2 my-lg-0">
+      <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
+      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
+    </form>
+  </div>
+</nav>
+ +

External content

+ +

Sometimes you want to use the collapse plugin to trigger hidden content elsewhere on the page. Because our plugin works on the id and data-target matching, that’s easily done!

+ +
+
+ + +
+
+
<div class="pos-f-t">
+  <div class="collapse" id="navbarToggleExternalContent">
+    <div class="bg-dark p-4">
+      <h4 class="text-white">Collapsed content</h4>
+      <span class="text-muted">Toggleable via the navbar brand.</span>
+    </div>
+  </div>
+  <nav class="navbar navbar-dark bg-dark">
+    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">
+      <span class="navbar-toggler-icon"></span>
+    </button>
+  </nav>
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/navs/index.html b/docs/4.0/components/navs/index.html new file mode 100644 index 00000000..ebcb6dda --- /dev/null +++ b/docs/4.0/components/navs/index.html @@ -0,0 +1,2108 @@ + + + + + + + + + Navs · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Navs

+

Documentation and examples for how to use Bootstrap's included navigation components.

+ + +

Base nav

+ +

Navigation available in Bootstrap share general markup and styles, from the base .nav class to the active and disabled states. Swap modifier classes to switch between each style.

+ +

The base .nav component is built with flexbox and provide a strong foundation for building all types of navigation components. It includes some style overrides (for working with lists), some link padding for larger hit areas, and basic disabled styling.

+ +
+

The base .nav component does not include any .active state. The following examples include the class, mainly to demonstrate that this particular class does not trigger any special styling.

+
+ +
+ +
+
<ul class="nav">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ +

Classes are used throughout, so your markup can be super flexible. Use <ul>s like above, or roll your own with say a <nav> element. Because the .nav uses display: flex, the nav links behave the same as nav items would, but without the extra markup.

+ +
+ +
+
<nav class="nav">
+  <a class="nav-link active" href="#">Active</a>
+  <a class="nav-link" href="#">Link</a>
+  <a class="nav-link" href="#">Link</a>
+  <a class="nav-link disabled" href="#">Disabled</a>
+</nav>
+ +

Available styles

+ +

Change the style of .navs component with modifiers and utilities. Mix and match as needed, or build your own.

+ +

Horizontal alignment

+ +

Change the horizontal alignment of your nav with flexbox utilities. By default, navs are left-aligned, but you can easily change them to center or right aligned.

+ +

Centered with .justify-content-center:

+ +
+ +
+
<ul class="nav justify-content-center">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ +

Right-aligned with .justify-content-end:

+ +
+ +
+
<ul class="nav justify-content-end">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ +

Vertical

+ +

Stack your navigation by changing the flex item direction with the .flex-column utility. Need to stack them on some viewports but not others? Use the responsive versions (e.g., .flex-sm-column).

+ +
+ +
+
<ul class="nav flex-column">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ +

As always, vertical navigation is possible without <ul>s, too.

+ +
+ +
+
<nav class="nav flex-column">
+  <a class="nav-link active" href="#">Active</a>
+  <a class="nav-link" href="#">Link</a>
+  <a class="nav-link" href="#">Link</a>
+  <a class="nav-link disabled" href="#">Disabled</a>
+</nav>
+ +

Tabs

+ +

Takes the basic nav from above and adds the .nav-tabs class to generate a tabbed interface. Use them to create tabbable regions with our tab JavaScript plugin.

+ +
+ +
+
<ul class="nav nav-tabs">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ +

Pills

+ +

Take that same HTML, but use .nav-pills instead:

+ +
+ +
+
<ul class="nav nav-pills">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ +

Fill and justify

+ +

Force your .nav’s contents to extend the full available width one of two modifier classes. To proportionately fill all available space with your .nav-items, use .nav-fill. Notice that all horizontal space is occupied, but not every nav item has the same width.

+ +
+ +
+
<ul class="nav nav-pills nav-fill">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Longer nav link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ +

When using a <nav>-based navigation, be sure to include .nav-item on the anchors.

+ +
+ +
+
<nav class="nav nav-pills nav-fill">
+  <a class="nav-item nav-link active" href="#">Active</a>
+  <a class="nav-item nav-link" href="#">Link</a>
+  <a class="nav-item nav-link" href="#">Link</a>
+  <a class="nav-item nav-link disabled" href="#">Disabled</a>
+</nav>
+ +

For equal-width elements, use .nav-justified. All horizontal space will be occupied by nav links, but unlike the .nav-fill above, every nav item will be the same width.

+ + +
<nav class="nav nav-pills nav-justified">
+  <a class="nav-link active" href="#">Active</a>
+  <a class="nav-link" href="#">Longer nav link</a>
+  <a class="nav-link" href="#">Link</a>
+  <a class="nav-link disabled" href="#">Disabled</a>
+</nav>
+ +

Similar to the .nav-fill example using a <nav>-based navigation, be sure to include .nav-item on the anchors.

+ +
+ +
+
<nav class="nav nav-pills nav-justified">
+  <a class="nav-item nav-link active" href="#">Active</a>
+  <a class="nav-item nav-link" href="#">Link</a>
+  <a class="nav-item nav-link" href="#">Link</a>
+  <a class="nav-item nav-link disabled" href="#">Disabled</a>
+</nav>
+ +

Working with flex utilities

+ +

If you need responsive nav variations, consider using a series of flexbox utilities. While more verbose, these utilities offer greater customization across responsive breakpoints. In the example below, our nav will be stacked on the lowest breakpoint, then adapt to a horizontal layout that fills the available width starting from the small breakpoint.

+ +
+ +
+
<nav class="nav nav-pills flex-column flex-sm-row">
+  <a class="flex-sm-fill text-sm-center nav-link active" href="#">Active</a>
+  <a class="flex-sm-fill text-sm-center nav-link" href="#">Link</a>
+  <a class="flex-sm-fill text-sm-center nav-link" href="#">Link</a>
+  <a class="flex-sm-fill text-sm-center nav-link disabled" href="#">Disabled</a>
+</nav>
+ +

Regarding accessibility

+ +

If you’re using navs to provide a navigation bar, be sure to add a role="navigation" to the most logical parent container of the <ul>, or wrap a <nav> element around the whole navigation. Do not add the role to the <ul> itself, as this would prevent it from being announced as an actual list by assistive technologies.

+ +

Note that navigation bars, even if visually styled as tabs with the .nav-tabs class, should not be given role="tablist", role="tab" or role="tabpanel" attributes. These are only appropriate for dynamic tabbed interfaces, as described in the WAI ARIA Authoring Practices. See JavaScript behavior for dynamic tabbed interfaces in this section for an example.

+ +

Using dropdowns

+ +

Add dropdown menus with a little extra HTML and the dropdowns JavaScript plugin.

+ +

Tabs with dropdowns

+ + +
<ul class="nav nav-tabs">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item dropdown">
+    <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
+    <div class="dropdown-menu">
+      <a class="dropdown-item" href="#">Action</a>
+      <a class="dropdown-item" href="#">Another action</a>
+      <a class="dropdown-item" href="#">Something else here</a>
+      <div class="dropdown-divider"></div>
+      <a class="dropdown-item" href="#">Separated link</a>
+    </div>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ +

Pills with dropdowns

+ + +
<ul class="nav nav-pills">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item dropdown">
+    <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
+    <div class="dropdown-menu">
+      <a class="dropdown-item" href="#">Action</a>
+      <a class="dropdown-item" href="#">Another action</a>
+      <a class="dropdown-item" href="#">Something else here</a>
+      <div class="dropdown-divider"></div>
+      <a class="dropdown-item" href="#">Separated link</a>
+    </div>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ +

JavaScript behavior

+ +

Use the tab JavaScript plugin—include it individually or through the compiled bootstrap.js file—to extend our navigational tabs and pills to create tabbable panes of local content, even via dropdown menus.

+ +

If you’re building our JS from source, it requires util.js.

+ +

Dynamic tabbed interfaces, as described in the WAI ARIA Authoring Practices, require role="tablist", role="tab", role="tabpanel", and additional aria- attributes in order to convey their structure, functionality and current state to users of assistive technologies (such as screen readers).

+ +
+ +
+
+

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

+
+
+

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

+
+ + +
+
+ +
<ul class="nav nav-tabs" id="myTab" role="tablist">
+  <li class="nav-item">
+    <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-expanded="true">Home</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile">Profile</a>
+  </li>
+  <li class="nav-item dropdown">
+    <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
+      Dropdown
+    </a>
+    <div class="dropdown-menu">
+      <a class="dropdown-item" id="dropdown1-tab" href="#dropdown1" role="tab" data-toggle="tab" aria-controls="dropdown1">@fat</a>
+      <a class="dropdown-item" id="dropdown2-tab" href="#dropdown2" role="tab" data-toggle="tab" aria-controls="dropdown2">@mdo</a>
+    </div>
+  </li>
+</ul>
+<div class="tab-content" id="myTabContent">
+  <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div>
+  <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
+  <div class="tab-pane fade" id="dropdown1" role="tabpanel" aria-labelledby="dropdown1-tab">...</div>
+  <div class="tab-pane fade" id="dropdown2" role="tabpanel" aria-labelledby="dropdown2-tab">...</div>
+</div>
+ +

To help fit your needs, this works with <ul>-based markup, as shown above, as well as <nav>-based markup shown below.

+ +
+ + +
+ +
<nav class="nav nav-tabs" id="myTab" role="tablist">
+  <a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab" href="#nav-home" role="tab" aria-controls="nav-home" aria-expanded="true">Home</a>
+  <a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab" href="#nav-profile" role="tab" aria-controls="nav-profile">Profile</a>
+  <div class="dropdown">
+    <a class="nav-item nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
+      Dropdown
+    </a>
+    <div class="dropdown-menu">
+      <a class="dropdown-item" id="nav-dropdown1-tab" href="#nav-dropdown1" role="tab" data-toggle="tab" aria-controls="nav-dropdown1">@fat</a>
+      <a class="dropdown-item" id="nav-dropdown2-tab" href="#nav-dropdown2" role="tab" data-toggle="tab" aria-controls="nav-dropdown2">@mdo</a>
+    </div>
+  </div>
+</nav>
+<div class="tab-content" id="nav-tabContent">
+  <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab">...</div>
+  <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab">...</div>
+  <div class="tab-pane fade" id="nav-dropdown1" role="tabpanel" aria-labelledby="nav-dropdown1-tab">...</div>
+  <div class="tab-pane fade" id="nav-dropdown2" role="tabpanel" aria-labelledby="nav-dropdown2-tab">...</div>
+</div>
+ +

The tabs plugin also works with pills.

+ +
+ +
+
+

Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud.

+
+
+

Ad pariatur nostrud pariatur exercitation ipsum ipsum culpa mollit commodo mollit ex. Aute sunt incididunt amet commodo est sint nisi deserunt pariatur do. Aliquip ex eiusmod voluptate exercitation cillum id incididunt elit sunt. Qui minim sit magna Lorem id et dolore velit Lorem amet exercitation duis deserunt. Anim id labore elit adipisicing ut in id occaecat pariatur ut ullamco ea tempor duis.

+
+
+

Est quis nulla laborum officia ad nisi ex nostrud culpa Lorem excepteur aliquip dolor aliqua irure ex. Nulla ut duis ipsum nisi elit fugiat commodo sunt reprehenderit laborum veniam eu veniam. Eiusmod minim exercitation fugiat irure ex labore incididunt do fugiat commodo aliquip sit id deserunt reprehenderit aliquip nostrud. Amet ex cupidatat excepteur aute veniam incididunt mollit cupidatat esse irure officia elit do ipsum ullamco Lorem. Ullamco ut ad minim do mollit labore ipsum laboris ipsum commodo sunt tempor enim incididunt. Commodo quis sunt dolore aliquip aute tempor irure magna enim minim reprehenderit. Ullamco consectetur culpa veniam sint cillum aliqua incididunt velit ullamco sunt ullamco quis quis commodo voluptate. Mollit nulla nostrud adipisicing aliqua cupidatat aliqua pariatur mollit voluptate voluptate consequat non.

+
+
+

Tempor anim aliquip qui nisi sit minim ex in cupidatat ipsum adipisicing. Ad non magna anim id ullamco do dolor sit adipisicing nulla exercitation. Qui Lorem eiusmod sint in laboris pariatur est adipisicing non sunt occaecat in mollit culpa sit. Aliquip id duis do do quis mollit ut duis. Non dolor reprehenderit do esse nostrud deserunt non eiusmod minim anim sit voluptate ipsum. Nulla elit aliqua do sunt labore velit anim nisi dolor nostrud consectetur fugiat ex qui velit ex tempor. Do cillum qui anim aliquip id cillum duis ex laboris tempor incididunt sint dolor ullamco tempor. Fugiat laboris enim anim veniam aliquip cillum irure.

+
+
+
+ +
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
+  <li class="nav-item">
+    <a class="nav-link active" id="pills-home-tab" data-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-expanded="true">Home</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" id="pills-profile-tab" data-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-expanded="true">Profile</a>
+  </li>
+  <li class="nav-item dropdown">
+    <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
+    <div class="dropdown-menu">
+      <a class="dropdown-item" id="pills-dropdown1-tab" href="#pills-dropdown1" role="tab" data-toggle="pill" aria-controls="pills-dropdown1">@fat</a>
+      <a class="dropdown-item" id="pills-dropdown2-tab" href="#pills-dropdown2" role="tab" data-toggle="pill" aria-controls="pills-dropdown2">@mdo</a>
+    </div>
+  </li>
+</ul>
+<div class="tab-content" id="pills-tabContent">
+  <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">...</div>
+  <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">...</div>
+  <div class="tab-pane fade" id="pills-dropdown1" role="tabpanel" aria-labelledby="pills-dropdown1-tab">...</div>
+  <div class="tab-pane fade" id="pills-dropdown2" role="tabpanel" aria-labelledby="pills-dropdown2-tab">...</div>
+</div>
+ +

And with vertical pills.

+ +
+
+
+ +
+
+
+
+

Cillum ad ut irure tempor velit nostrud occaecat ullamco aliqua anim Lorem sint. Veniam sint duis incididunt do esse magna mollit excepteur laborum qui. Id id reprehenderit sit est eu aliqua occaecat quis et velit excepteur laborum mollit dolore eiusmod. Ipsum dolor in occaecat commodo et voluptate minim reprehenderit mollit pariatur. Deserunt non laborum enim et cillum eu deserunt excepteur ea incididunt minim occaecat.

+
+
+

Culpa dolor voluptate do laboris laboris irure reprehenderit id incididunt duis pariatur mollit aute magna pariatur consectetur. Eu veniam duis non ut dolor deserunt commodo et minim in quis laboris ipsum velit id veniam. Quis ut consectetur adipisicing officia excepteur non sit. Ut et elit aliquip labore Lorem enim eu. Ullamco mollit occaecat dolore ipsum id officia mollit qui esse anim eiusmod do sint minim consectetur qui.

+
+
+

Fugiat id quis dolor culpa eiusmod anim velit excepteur proident dolor aute qui magna. Ad proident laboris ullamco esse anim Lorem Lorem veniam quis Lorem irure occaecat velit nostrud magna nulla. Velit et et proident Lorem do ea tempor officia dolor. Reprehenderit Lorem aliquip labore est magna commodo est ea veniam consectetur.

+
+
+

Eu dolore ea ullamco dolore Lorem id cupidatat excepteur reprehenderit consectetur elit id dolor proident in cupidatat officia. Voluptate excepteur commodo labore nisi cillum duis aliqua do. Aliqua amet qui mollit consectetur nulla mollit velit aliqua veniam nisi id do Lorem deserunt amet. Culpa ullamco sit adipisicing labore officia magna elit nisi in aute tempor commodo eiusmod.

+
+
+
+
+
+ +
<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist">
+  <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-expanded="true">Home</a>
+  <a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-expanded="true">Profile</a>
+  <a class="nav-link" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-expanded="true">Messages</a>
+  <a class="nav-link" id="v-pills-settings-tab" data-toggle="pill" href="#v-pills-settings" role="tab" aria-controls="v-pills-settings" aria-expanded="true">Settings</a>
+</div>
+<div class="tab-content" id="v-pills-tabContent">
+  <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">...</div>
+  <div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab">...</div>
+  <div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab">...</div>
+  <div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab">...</div>
+</div>
+ +

Using data attributes

+ +

You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-toggle="tab" or data-toggle="pill" on an element. Use these data attributes on .nav-tabs or .nav-pills.

+ +
<!-- Nav tabs -->
+<ul class="nav nav-tabs" id="myTab" role="tablist">
+  <li class="nav-item">
+    <a class="nav-link active" data-toggle="tab" href="#home" role="tab">Home</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" data-toggle="tab" href="#profile" role="tab">Profile</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" data-toggle="tab" href="#messages" role="tab">Messages</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" data-toggle="tab" href="#settings" role="tab">Settings</a>
+  </li>
+</ul>
+
+<!-- Tab panes -->
+<div class="tab-content">
+  <div class="tab-pane active" id="home" role="tabpanel">...</div>
+  <div class="tab-pane" id="profile" role="tabpanel">...</div>
+  <div class="tab-pane" id="messages" role="tabpanel">...</div>
+  <div class="tab-pane" id="settings" role="tabpanel">...</div>
+</div>
+ +

Via JavaScript

+ +

Enable tabbable tabs via JavaScript (each tab needs to be activated individually):

+ +
$('#myTab a').click(function (e) {
+  e.preventDefault()
+  $(this).tab('show')
+})
+ +

You can activate individual tabs in several ways:

+ +
$('#myTab a[href="#profile"]').tab('show') // Select tab by name
+$('#myTab a:first').tab('show') // Select first tab
+$('#myTab a:last').tab('show') // Select last tab
+$('#myTab li:eq(2) a').tab('show') // Select third tab (0-indexed)
+ +

Fade effect

+ +

To make tabs fade in, add .fade to each .tab-pane. The first tab pane must also have .show to make the initial content visible.

+ +
<div class="tab-content">
+  <div class="tab-pane fade show active" id="home" role="tabpanel">...</div>
+  <div class="tab-pane fade" id="profile" role="tabpanel">...</div>
+  <div class="tab-pane fade" id="messages" role="tabpanel">...</div>
+  <div class="tab-pane fade" id="settings" role="tabpanel">...</div>
+</div>
+ +

Methods

+ +
+

Asynchronous methods and transitions

+ +

All API methods are asynchronous and start a transition. They returns to the caller as soon as the transition is started but before it ends. In addition, a method call on a transitioning component will be ignored.

+ +

See our Javascript documentation for more informations.

+
+ +

$().tab

+ +

Activates a tab element and content container. Tab should have either a data-target or an href targeting a container node in the DOM.

+ +
<ul class="nav nav-tabs" id="myTab" role="tablist">
+  <li class="nav-item">
+    <a class="nav-link active" data-toggle="tab" href="#home" role="tab" aria-controls="home">Home</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" data-toggle="tab" href="#profile" role="tab" aria-controls="profile">Profile</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" data-toggle="tab" href="#messages" role="tab" aria-controls="messages">Messages</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" data-toggle="tab" href="#settings" role="tab" aria-controls="settings">Settings</a>
+  </li>
+</ul>
+
+<div class="tab-content">
+  <div class="tab-pane active" id="home" role="tabpanel">...</div>
+  <div class="tab-pane" id="profile" role="tabpanel">...</div>
+  <div class="tab-pane" id="messages" role="tabpanel">...</div>
+  <div class="tab-pane" id="settings" role="tabpanel">...</div>
+</div>
+
+<script>
+  $(function () {
+    $('#myTab a:last').tab('show')
+  })
+</script>
+ +

.tab(‘show’)

+ +

Selects the given tab and shows its associated pane. Any other tab that was previously selected becomes unselected and its associated pane is hidden. Returns to the caller before the tab pane has actually been shown (i.e. before the shown.bs.tab event occurs).

+ +
$('#someTab').tab('show')
+ +

Events

+ +

When showing a new tab, the events fire in the following order:

+ +
    +
  1. hide.bs.tab (on the current active tab)
  2. +
  3. show.bs.tab (on the to-be-shown tab)
  4. +
  5. hidden.bs.tab (on the previous active tab, the same one as for the hide.bs.tab event)
  6. +
  7. shown.bs.tab (on the newly-active just-shown tab, the same one as for the show.bs.tab event)
  8. +
+ +

If no tab was already active, then the hide.bs.tab and hidden.bs.tab events will not be fired.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.tabThis event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
shown.bs.tabThis event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
hide.bs.tabThis event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use event.target and event.relatedTarget to target the current active tab and the new soon-to-be-active tab, respectively.
hidden.bs.tabThis event fires after a new tab is shown (and thus the previous active tab is hidden). Use event.target and event.relatedTarget to target the previous active tab and the new active tab, respectively.
+ +
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
+  e.target // newly activated tab
+  e.relatedTarget // previous active tab
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/pagination/index.html b/docs/4.0/components/pagination/index.html new file mode 100644 index 00000000..e55722e5 --- /dev/null +++ b/docs/4.0/components/pagination/index.html @@ -0,0 +1,1527 @@ + + + + + + + + + Pagination · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Pagination

+

Documentation and examples for showing pagination to indicate a series of related content exists across multiple pages.

+ + +

Overview

+ +

We use a large block of connected links for our pagination, making links hard to miss and easily scalable—all while providing large hit areas. Pagination is built with list HTML elements so screen readers can announce the number of available links. Use a wrapping <nav> element to identify it as a navigation section to screen readers and other assistive technologies.

+ +

In addition, as pages likely have more than one such navigation section, it’s advisable to provide a descriptive aria-label for the <nav> to reflect its purpose. For example, if the pagination component is used to navigate between a set of search results, an appropriate label could be aria-label="Search results pages".

+ +
+ +
+
<nav aria-label="Page navigation example">
+  <ul class="pagination">
+    <li class="page-item"><a class="page-link" href="#">Previous</a></li>
+    <li class="page-item"><a class="page-link" href="#">1</a></li>
+    <li class="page-item"><a class="page-link" href="#">2</a></li>
+    <li class="page-item"><a class="page-link" href="#">3</a></li>
+    <li class="page-item"><a class="page-link" href="#">Next</a></li>
+  </ul>
+</nav>
+ +

Working with icons

+ +

Looking to use an icon or symbol in place of text for some pagination links? Be sure to provide proper screen reader support with aria attributes and the .sr-only utility.

+ +
+ +
+
<nav aria-label="Page navigation example">
+  <ul class="pagination">
+    <li class="page-item">
+      <a class="page-link" href="#" aria-label="Previous">
+        <span aria-hidden="true">&laquo;</span>
+        <span class="sr-only">Previous</span>
+      </a>
+    </li>
+    <li class="page-item"><a class="page-link" href="#">1</a></li>
+    <li class="page-item"><a class="page-link" href="#">2</a></li>
+    <li class="page-item"><a class="page-link" href="#">3</a></li>
+    <li class="page-item">
+      <a class="page-link" href="#" aria-label="Next">
+        <span aria-hidden="true">&raquo;</span>
+        <span class="sr-only">Next</span>
+      </a>
+    </li>
+  </ul>
+</nav>
+ +

Disabled and active states

+ +

Pagination links are customizable for different circumstances. Use .disabled for links that appear un-clickable and .active to indicate the current page.

+ +

While the .disabled class uses pointer-events: none to try to disable the link functionality of <a>s, that CSS property is not yet standardized and doesn’t account for keyboard navigation. As such, you should always add tabindex="-1" on disabled links and use custom JavaScript to fully disable their functionality.

+ +
+ +
+
<nav aria-label="...">
+  <ul class="pagination">
+    <li class="page-item disabled">
+      <a class="page-link" href="#" tabindex="-1">Previous</a>
+    </li>
+    <li class="page-item"><a class="page-link" href="#">1</a></li>
+    <li class="page-item active">
+      <a class="page-link" href="#">2 <span class="sr-only">(current)</span></a>
+    </li>
+    <li class="page-item"><a class="page-link" href="#">3</a></li>
+    <li class="page-item">
+      <a class="page-link" href="#">Next</a>
+    </li>
+  </ul>
+</nav>
+ +

You can optionally swap out active or disabled anchors for <span>, or omit the anchor in the case of the prev/next arrows, to remove click functionality and prevent keyboard focus while retaining intended styles.

+ +
+ +
+
<nav aria-label="...">
+  <ul class="pagination">
+    <li class="page-item disabled">
+      <span class="page-link">Previous</span>
+    </li>
+    <li class="page-item"><a class="page-link" href="#">1</a></li>
+    <li class="page-item active">
+      <span class="page-link">
+        2
+        <span class="sr-only">(current)</span>
+      </span>
+    </li>
+    <li class="page-item"><a class="page-link" href="#">3</a></li>
+    <li class="page-item">
+      <a class="page-link" href="#">Next</a>
+    </li>
+  </ul>
+</nav>
+ +

Sizing

+ +

Fancy larger or smaller pagination? Add .pagination-lg or .pagination-sm for additional sizes.

+ +
+ +
+
<nav aria-label="...">
+  <ul class="pagination pagination-lg">
+    <li class="page-item disabled">
+      <a class="page-link" href="#" tabindex="-1">Previous</a>
+    </li>
+    <li class="page-item"><a class="page-link" href="#">1</a></li>
+    <li class="page-item"><a class="page-link" href="#">2</a></li>
+    <li class="page-item"><a class="page-link" href="#">3</a></li>
+    <li class="page-item">
+      <a class="page-link" href="#">Next</a>
+    </li>
+  </ul>
+</nav>
+ +
+ +
+
<nav aria-label="...">
+  <ul class="pagination pagination-sm">
+    <li class="page-item disabled">
+      <a class="page-link" href="#" tabindex="-1">Previous</a>
+    </li>
+    <li class="page-item"><a class="page-link" href="#">1</a></li>
+    <li class="page-item"><a class="page-link" href="#">2</a></li>
+    <li class="page-item"><a class="page-link" href="#">3</a></li>
+    <li class="page-item">
+      <a class="page-link" href="#">Next</a>
+    </li>
+  </ul>
+</nav>
+ +

Alignment

+ +

Change the alignment of pagination components with flexbox utilities.

+ +
+ +
+
<nav aria-label="Page navigation example">
+  <ul class="pagination justify-content-center">
+    <li class="page-item disabled">
+      <a class="page-link" href="#" tabindex="-1">Previous</a>
+    </li>
+    <li class="page-item"><a class="page-link" href="#">1</a></li>
+    <li class="page-item"><a class="page-link" href="#">2</a></li>
+    <li class="page-item"><a class="page-link" href="#">3</a></li>
+    <li class="page-item">
+      <a class="page-link" href="#">Next</a>
+    </li>
+  </ul>
+</nav>
+ +
+ +
+
<nav aria-label="Page navigation example">
+  <ul class="pagination justify-content-end">
+    <li class="page-item disabled">
+      <a class="page-link" href="#" tabindex="-1">Previous</a>
+    </li>
+    <li class="page-item"><a class="page-link" href="#">1</a></li>
+    <li class="page-item"><a class="page-link" href="#">2</a></li>
+    <li class="page-item"><a class="page-link" href="#">3</a></li>
+    <li class="page-item">
+      <a class="page-link" href="#">Next</a>
+    </li>
+  </ul>
+</nav>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/popovers/index.html b/docs/4.0/components/popovers/index.html new file mode 100644 index 00000000..ea6709c3 --- /dev/null +++ b/docs/4.0/components/popovers/index.html @@ -0,0 +1,1652 @@ + + + + + + + + + Popovers · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Popovers

+

Documentation and examples for adding Bootstrap popovers, like those found in iOS, to any element on your site.

+ + +

Overview

+ +

Things to know when using the popover plugin:

+ +
    +
  • Popovers rely on the 3rd party library Popper.js for positioning. You must include popper.min.js before bootstrap.js in order for popovers to work!
  • +
  • Popovers require the tooltip plugin as a dependency.
  • +
  • If building our JS from source, it requires util.js.
  • +
  • Popovers are opt-in for performance reasons, so you must initialize them yourself.
  • +
  • Zero-length title and content values will never show a popover.
  • +
  • Specify container: 'body' to avoid rendering problems in more complex components (like our input groups, button groups, etc).
  • +
  • Triggering popovers on hidden elements will not work.
  • +
  • Popovers for .disabled or disabled elements must be triggered on a wrapper element.
  • +
  • When triggered from hyperlinks that span multiple lines, popovers will be centered. Use white-space: nowrap; on your <a>s to avoid this behavior.
  • +
  • Popovers must be hidden before their corresponding elements have been removed from the DOM.
  • +
+ +

Got all that? Great, let’s see how they work with some examples.

+ +

Example: Enable popovers everywhere

+ +

One way to initialize all popovers on a page would be to select them by their data-toggle attribute:

+ +
$(function () {
+  $('[data-toggle="popover"]').popover()
+})
+ +

Example: Using the container option

+ +

When you have some styles on a parent element that interfere with a popover, you’ll want to specify a custom container so that the popover’s HTML appears within that element instead.

+ +
$(function () {
+  $('.example-popover').popover({
+    container: 'body'
+  })
+})
+ +

Static popover

+ +

Four options are available: top, right, bottom, and left aligned.

+ +
+
+
+

Popover top

+
+

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

+
+
+ +
+
+

Popover right

+
+

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

+
+
+ +
+
+

Popover bottom

+
+

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

+
+
+ +
+
+

Popover left

+
+

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

+
+
+ +
+
+ +

Live demo

+ +
+ +
+
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
+ +

Four directions

+ +
+
+ + + + +
+
+ +
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
+  Popover on top
+</button>
+
+<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
+  Popover on right
+</button>
+
+<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Vivamus
+sagittis lacus vel augue laoreet rutrum faucibus.">
+  Popover on bottom
+</button>
+
+<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="left" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
+  Popover on left
+</button>
+ +

Dismiss on next click

+ +

Use the focus trigger to dismiss popovers on the next click that the user makes.

+ +
+

Specific markup required for dismiss-on-next-click

+ +

For proper cross-browser and cross-platform behavior, you must use the <a> tag, not the <button> tag, and you also must include a tabindex attribute.

+
+ + +
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
+ +
$('.popover-dismiss').popover({
+  trigger: 'focus'
+})
+ +

Usage

+ +

Enable popovers via JavaScript:

+ +
$('#example').popover(options)
+ +

Options

+ +

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
animationbooleantrueApply a CSS fade transition to the popover
containerstring | falsefalse +

Appends the popover to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.

+
contentstring | element | function'' +

Default content value if data-content attribute isn't present.

+

If a function is given, it will be called with its this reference set to the element that the popover is attached to.

+
delaynumber | object0 +

Delay showing and hiding the popover (ms) - does not apply to manual trigger type

+

If a number is supplied, delay is applied to both hide/show

+

Object structure is: delay: { "show": 500, "hide": 100 }

+
htmlbooleanfalseInsert HTML into the popover. If false, jQuery's text method will be used to insert content into the DOM. Use text if you're worried about XSS attacks.
placementstring | function'right' +

How to position the popover - auto | top | bottom | left | right.
When auto is specified, it will dynamically reorient the popover.

+

When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the popover instance.

+
selectorstringfalseIf a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See this and an informative example.
templatestring'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' +

Base HTML to use when creating the popover.

+

The popover's title will be injected into the .popover-header.

+

The popover's content will be injected into the .popover-body.

+

.arrow will become the popover's arrow.

+

The outermost wrapper element should have the .popover class.

+
titlestring | element | function'' +

Default title value if title attribute isn't present.

+

If a function is given, it will be called with its this reference set to the element that the popover is attached to.

+
triggerstring'click'How popover is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.
offsetnumber | string0Offset of the popover relative to its target. For more information refer to Popper.js's offset docs.
fallbackPlacementstring | array'flip'Allow to specify which position Popper will use on fallback. For more information refer to + Popper.js's behavior docs
+ +
+

Data attributes for individual popovers

+ +

Options for individual popovers can alternatively be specified through the use of data attributes, as explained above.

+
+ +

Methods

+ +
+

Asynchronous methods and transitions

+ +

All API methods are asynchronous and start a transition. They returns to the caller as soon as the transition is started but before it ends. In addition, a method call on a transitioning component will be ignored.

+ +

See our Javascript documentation for more informations.

+
+ +

$().popover(options)

+ +

Initializes popovers for an element collection.

+ +

.popover('show')

+ +

Reveals an element’s popover. Returns to the caller before the popover has actually been shown (i.e. before the shown.bs.popover event occurs). This is considered a “manual” triggering of the popover. Popovers whose both title and content are zero-length are never displayed.

+ +
$('#element').popover('show')
+ +

.popover('hide')

+ +

Hides an element’s popover. Returns to the caller before the popover has actually been hidden (i.e. before the hidden.bs.popover event occurs). This is considered a “manual” triggering of the popover.

+ +
$('#element').popover('hide')
+ +

.popover('toggle')

+ +

Toggles an element’s popover. Returns to the caller before the popover has actually been shown or hidden (i.e. before the shown.bs.popover or hidden.bs.popover event occurs). This is considered a “manual” triggering of the popover.

+ +
$('#element').popover('toggle')
+ +

.popover('dispose')

+ +

Hides and destroys an element’s popover. Popovers that use delegation (which are created using the selector option) cannot be individually destroyed on descendant trigger elements.

+ +
$('#element').popover('dispose')
+ +

.popover('enable')

+ +

Gives an element’s popover the ability to be shown. Popovers are enabled by default.

+ +
$('#element').popover('enable')
+ +

.popover('disable')

+ +

Removes the ability for an element’s popover to be shown. The popover will only be able to be shown if it is re-enabled.

+ +
$('#element').popover('disable')
+ +

.popover('toggleEnabled')

+ +

Toggles the ability for an element’s popover to be shown or hidden.

+ +
$('#element').popover('toggleEnabled')
+ +

.popover('update')

+ +

Updates the position of an element’s popover.

+ +
$('#element').popover('update')
+ +

Events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.popoverThis event fires immediately when the show instance method is called.
shown.bs.popoverThis event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete).
hide.bs.popoverThis event is fired immediately when the hide instance method has been called.
hidden.bs.popoverThis event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete).
inserted.bs.popoverThis event is fired after the show.bs.popover event when the tooltip template has been added to the DOM.
+ +
$('#myPopover').on('hidden.bs.popover', function () {
+  // do something…
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/progress/index.html b/docs/4.0/components/progress/index.html new file mode 100644 index 00000000..936e7b22 --- /dev/null +++ b/docs/4.0/components/progress/index.html @@ -0,0 +1,1446 @@ + + + + + + + + + Progress · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Progress

+

Documentation and examples for using Bootstrap custom progress bars featuring support for stacked bars, animated backgrounds, and text labels.

+ + +

How it works

+ +

Progress components are built with two HTML elements, some CSS to set the width, and a few attributes. We don’t use the HTML5 <progress> element, ensuring you can stack progress bars, animate them, and place text labels over them.

+ +
    +
  • We use the .progress as a wrapper to indicate the max value of the progress bar.
  • +
  • We use the inner .progress-bar to indicate the progress so far.
  • +
  • The .progress-bar requires an inline style, utility class, or custom CSS to set their width.
  • +
  • The .progress-bar also requires some role and aria attributes to make it accessible.
  • +
+ +

Put that all together, and you have the following examples.

+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<div class="progress">
+  <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar" role="progressbar" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar" role="progressbar" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+ +

Bootstrap provides a handful of utilities for setting width. Depending on your needs, these may help with quickly configuring progress.

+ +
+
+
+
+
+
<div class="progress">
+  <div class="progress-bar w-75" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+ +

Labels

+ +

Add labels to your progress bars by placing text within the .progress-bar.

+ +
+
+
25%
+
+
+
<div class="progress">
+  <div class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">25%</div>
+</div>
+ +

Height

+ +

We only set a height value on the .progress, so if you change that value the inner .progress-bar will automatically resize accordingly.

+ +
+
+
+
+
+
+
+
+
<div class="progress" style="height: 1px;">
+  <div class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress" style="height: 20px;">
+  <div class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+ +

Backgrounds

+ +

Use background utility classes to change the appearance of individual progress bars.

+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<div class="progress">
+  <div class="progress-bar bg-success" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar bg-info" role="progressbar" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar bg-warning" role="progressbar" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar bg-danger" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+ +

Multiple bars

+ +

Include multiple progress bars in a progress component if you need.

+ +
+
+
+
+
+
+
+
<div class="progress">
+  <div class="progress-bar" role="progressbar" style="width: 15%" aria-valuenow="15" aria-valuemin="0" aria-valuemax="100"></div>
+  <div class="progress-bar bg-success" role="progressbar" style="width: 30%" aria-valuenow="30" aria-valuemin="0" aria-valuemax="100"></div>
+  <div class="progress-bar bg-info" role="progressbar" style="width: 20%" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+ +

Striped

+ +

Add .progress-bar-striped to any .progress-bar to apply a stripe via CSS gradient over the progress bar’s background color.

+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<div class="progress">
+  <div class="progress-bar progress-bar-striped" role="progressbar" style="width: 10%" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar progress-bar-striped bg-success" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar progress-bar-striped bg-info" role="progressbar" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar progress-bar-striped bg-warning" role="progressbar" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+<div class="progress">
+  <div class="progress-bar progress-bar-striped bg-danger" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
+</div>
+ +

Animated stripes

+ +

The striped gradient can also be animated. Add .progress-bar-animated to .progress-bar to animate the stripes right to left via CSS3 animations.

+ +

Animated progress bars don’t work in Opera 12—as they don’t support CSS3 animations.

+ +
+
+
+
+ +
+ +
<div class="progress">
+  <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 75%"></div>
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/scrollspy/index.html b/docs/4.0/components/scrollspy/index.html new file mode 100644 index 00000000..d47fa46f --- /dev/null +++ b/docs/4.0/components/scrollspy/index.html @@ -0,0 +1,1610 @@ + + + + + + + + + Scrollspy · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Scrollspy

+

Automatically update Bootstrap navigation or list group components based on scroll position to indicate which link is currently active in the viewport.

+ + +

How it works

+ +

Scrollspy has a few requirements to function properly:

+ +
    +
  • If building our JS from source, it requires util.js.
  • +
  • It must to be used on a Bootstrap nav component or list group.
  • +
  • Scrollspy requires position: relative; on the element you’re spying on, usually the <body>.
  • +
  • When spying on elements other than the <body>, be sure to have a height set and overflow-y: scroll; applied.
  • +
  • Anchors (<a>) are required and must point to an element with that id.
  • +
+ +

When successfully implemented, your nav or list group will update accordingly, moving the .active class from one item to the next based on their associated targets.

+ +

Example in navbar

+ +

Scroll the area below the navbar and watch the active class change. The dropdown items will be highlighted as well.

+ +
+ +
+

@fat

+

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

+

@mdo

+

Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

+

one

+

Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.

+

two

+

In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.

+

three

+

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

+

Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. +

+
+
+ +
<nav id="navbar-example2" class="navbar navbar-light bg-light">
+  <a class="navbar-brand" href="#">Navbar</a>
+  <ul class="nav nav-pills">
+    <li class="nav-item">
+      <a class="nav-link" href="#fat">@fat</a>
+    </li>
+    <li class="nav-item">
+      <a class="nav-link" href="#mdo">@mdo</a>
+    </li>
+    <li class="nav-item dropdown">
+      <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
+      <div class="dropdown-menu">
+        <a class="dropdown-item" href="#one">one</a>
+        <a class="dropdown-item" href="#two">two</a>
+        <div role="separator" class="dropdown-divider"></div>
+        <a class="dropdown-item" href="#three">three</a>
+      </div>
+    </li>
+  </ul>
+</nav>
+<div data-spy="scroll" data-target="#navbar-example2" data-offset="0">
+  <h4 id="fat">@fat</h4>
+  <p>...</p>
+  <h4 id="mdo">@mdo</h4>
+  <p>...</p>
+  <h4 id="one">one</h4>
+  <p>...</p>
+  <h4 id="two">two</h4>
+  <p>...</p>
+  <h4 id="three">three</h4>
+  <p>...</p>
+</div>
+ +

Example with nested nav

+ +

Scrollspy also works with nested .navs. If a nested .nav is .active, its parents will also be .active. Scroll the area next to the navbar and watch the active class change.

+ +
+
+
+ +
+
+
+

Item 1

+

Ex consequat commodo adipisicing exercitation aute excepteur occaecat ullamco duis aliqua id magna ullamco eu. Do aute ipsum ipsum ullamco cillum consectetur ut et aute consectetur labore. Fugiat laborum incididunt tempor eu consequat enim dolore proident. Qui laborum do non excepteur nulla magna eiusmod consectetur in. Aliqua et aliqua officia quis et incididunt voluptate non anim reprehenderit adipisicing dolore ut consequat deserunt mollit dolore. Aliquip nulla enim veniam non fugiat id cupidatat nulla elit cupidatat commodo velit ut eiusmod cupidatat elit dolore.

+
Item 1-1
+

Amet tempor mollit aliquip pariatur excepteur commodo do ea cillum commodo Lorem et occaecat elit qui et. Aliquip labore ex ex esse voluptate occaecat Lorem ullamco deserunt. Aliqua cillum excepteur irure consequat id quis ea. Sit proident ullamco aute magna pariatur nostrud labore. Reprehenderit aliqua commodo eiusmod aliquip est do duis amet proident magna consectetur consequat eu commodo fugiat non quis. Enim aliquip exercitation ullamco adipisicing voluptate excepteur minim exercitation minim minim commodo adipisicing exercitation officia nisi adipisicing. Anim id duis qui consequat labore adipisicing sint dolor elit cillum anim et fugiat.

+
Item 2-2
+

Cillum nisi deserunt magna eiusmod qui eiusmod velit voluptate pariatur laborum sunt enim. Irure laboris mollit consequat incididunt sint et culpa culpa incididunt adipisicing magna magna occaecat. Nulla ipsum cillum eiusmod sint elit excepteur ea labore enim consectetur in labore anim. Proident ullamco ipsum esse elit ut Lorem eiusmod dolor et eiusmod. Anim occaecat nulla in non consequat eiusmod velit incididunt.

+

Item 2

+

Quis magna Lorem anim amet ipsum do mollit sit cillum voluptate ex nulla tempor. Laborum consequat non elit enim exercitation cillum aliqua consequat id aliqua. Esse ex consectetur mollit voluptate est in duis laboris ad sit ipsum anim Lorem. Incididunt veniam velit elit elit veniam Lorem aliqua quis ullamco deserunt sit enim elit aliqua esse irure. Laborum nisi sit est tempor laborum mollit labore officia laborum excepteur commodo non commodo dolor excepteur commodo. Ipsum fugiat ex est consectetur ipsum commodo tempor sunt in proident.

+

Item 3

+

Quis anim sit do amet fugiat dolor velit sit ea ea do reprehenderit culpa duis. Nostrud aliqua ipsum fugiat minim proident occaecat excepteur aliquip culpa aute tempor reprehenderit. Deserunt tempor mollit elit ex pariatur dolore velit fugiat mollit culpa irure ullamco est ex ullamco excepteur.

+
Item 3-1
+

Deserunt quis elit Lorem eiusmod amet enim enim amet minim Lorem proident nostrud. Ea id dolore anim exercitation aute fugiat labore voluptate cillum do laboris labore. Ex velit exercitation nisi enim labore reprehenderit labore nostrud ut ut. Esse officia sunt duis aliquip ullamco tempor eiusmod deserunt irure nostrud irure. Ullamco proident veniam laboris ea consectetur magna sunt ex exercitation aliquip minim enim culpa occaecat exercitation. Est tempor excepteur aliquip laborum consequat do deserunt laborum esse eiusmod irure proident ipsum esse qui.

+
Item 3-2
+

Labore sit culpa commodo elit adipisicing sit aliquip elit proident voluptate minim mollit nostrud aute reprehenderit do. Mollit excepteur eu Lorem ipsum anim commodo sint labore Lorem in exercitation velit incididunt. Occaecat consectetur nisi in occaecat proident minim enim sunt reprehenderit exercitation cupidatat et do officia. Aliquip consequat ad labore labore mollit ut amet. Sit pariatur tempor proident in veniam culpa aliqua excepteur elit magna fugiat eiusmod amet officia.

+
+
+
+
+ +
<nav id="navbar-example3" class="navbar navbar-light bg-light">
+  <a class="navbar-brand" href="#">Navbar</a>
+  <nav class="nav nav-pills flex-column">
+    <a class="nav-link" href="#item-1">Item 1</a>
+    <nav class="nav nav-pills flex-column">
+      <a class="nav-link ml-3 my-1" href="#item-1-1">Item 1-1</a>
+      <a class="nav-link ml-3 my-1" href="#item-1-2">Item 1-2</a>
+    </nav>
+    <a class="nav-link" href="#item-2">Item2</a>
+    <a class="nav-link" href="#item-3">Item3</a>
+    <nav class="nav nav-pills flex-column">
+      <a class="nav-link ml-3 my-1" href="#item-3-1">Item 3-1</a>
+      <a class="nav-link ml-3 my-1" href="#item-3-2">Item 3-2</a>
+    </nav>
+  </nav>
+</nav>
+
+<div data-spy="scroll" data-target="#navbar-example3" data-offset="0">
+  <h4 id="item-1">Item 1</h4>
+  <p>...</p>
+  <h5 id="item-1-1">Item 1-1</h5>
+  <p>...</p>
+  <h5 id="item-1-2">Item 2-2</h5>
+  <p>...</p>
+  <h4 id="item-2">Item 2</h4>
+  <p>...</p>
+  <h4 id="item-3">Item 3</h4>
+  <p>...</p>
+  <h5 id="item-3-1">Item 3-1</h5>
+  <p>...</p>
+  <h5 id="item-3-2">Item 3-2</h5>
+  <p>...</p>
+</div>
+ +

Example with list-group

+ +

Scrollspy also works with .list-groups. Scroll the area next to the list group and watch the active class change.

+ +
+
+
+ +
+
+
+

Item 1

+

Ex consequat commodo adipisicing exercitation aute excepteur occaecat ullamco duis aliqua id magna ullamco eu. Do aute ipsum ipsum ullamco cillum consectetur ut et aute consectetur labore. Fugiat laborum incididunt tempor eu consequat enim dolore proident. Qui laborum do non excepteur nulla magna eiusmod consectetur in. Aliqua et aliqua officia quis et incididunt voluptate non anim reprehenderit adipisicing dolore ut consequat deserunt mollit dolore. Aliquip nulla enim veniam non fugiat id cupidatat nulla elit cupidatat commodo velit ut eiusmod cupidatat elit dolore.

+

Item 2

+

Quis magna Lorem anim amet ipsum do mollit sit cillum voluptate ex nulla tempor. Laborum consequat non elit enim exercitation cillum aliqua consequat id aliqua. Esse ex consectetur mollit voluptate est in duis laboris ad sit ipsum anim Lorem. Incididunt veniam velit elit elit veniam Lorem aliqua quis ullamco deserunt sit enim elit aliqua esse irure. Laborum nisi sit est tempor laborum mollit labore officia laborum excepteur commodo non commodo dolor excepteur commodo. Ipsum fugiat ex est consectetur ipsum commodo tempor sunt in proident.

+

Item 3

+

Quis anim sit do amet fugiat dolor velit sit ea ea do reprehenderit culpa duis. Nostrud aliqua ipsum fugiat minim proident occaecat excepteur aliquip culpa aute tempor reprehenderit. Deserunt tempor mollit elit ex pariatur dolore velit fugiat mollit culpa irure ullamco est ex ullamco excepteur.

+

Item 4

+

Quis anim sit do amet fugiat dolor velit sit ea ea do reprehenderit culpa duis. Nostrud aliqua ipsum fugiat minim proident occaecat excepteur aliquip culpa aute tempor reprehenderit. Deserunt tempor mollit elit ex pariatur dolore velit fugiat mollit culpa irure ullamco est ex ullamco excepteur.

+
+
+
+
+ +
<div id="list-example" class="list-group">
+  <a class="list-group-item list-group-item-action" href="#list-item-1">Item 1</a>
+  <a class="list-group-item list-group-item-action" href="#list-item-2">Item2</a>
+  <a class="list-group-item list-group-item-action" href="#list-item-3">Item 3</a>
+  <a class="list-group-item list-group-item-action" href="#list-item-4">Item 4</a>
+</div>
+<div data-spy="scroll" data-target="#list-example" data-offset="0" class="scrollspy-example">
+  <h4 id="list-item-1">Item 1</h4>
+  <p>...</p>
+  <h4 id="list-item-2">Item 2</h4>
+  <p>...</p>
+  <h4 id="list-item-3">Item 3</h4>
+  <p>...</p>
+  <h4 id="list-item-4">Item 4</h4>
+  <p>...</p>
+</div>
+ +

Usage

+ +

Via data attributes

+ +

To easily add scrollspy behavior to your topbar navigation, add data-spy="scroll" to the element you want to spy on (most typically this would be the <body>). Then add the data-target attribute with the ID or class of the parent element of any Bootstrap .nav component.

+ +
body {
+  position: relative;
+}
+ +
<body data-spy="scroll" data-target="#navbar-example">
+  ...
+  <div id="navbar-example">
+    <ul class="nav nav-tabs" role="tablist">
+      ...
+    </ul>
+  </div>
+  ...
+</body>
+ +

Via JavaScript

+ +

After adding position: relative; in your CSS, call the scrollspy via JavaScript:

+ +
$('body').scrollspy({ target: '#navbar-example' })
+ +
+

Resolvable ID targets required

+ +

Navbar links must have resolvable id targets. For example, a <a href="#home">home</a> must correspond to something in the DOM like <div id="home"></div>.

+
+ +
+

Non-:visible target elements ignored

+ +

Target elements that are not :visible according to jQuery will be ignored and their corresponding nav items will never be highlighted.

+
+ +

Methods

+ +

.scrollspy('refresh')

+ +

When using scrollspy in conjunction with adding or removing of elements from the DOM, you’ll need to call the refresh method like so:

+ +
$('[data-spy="scroll"]').each(function () {
+  var $spy = $(this).scrollspy('refresh')
+})
+ +

Options

+ +

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset="".

+ + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
offsetnumber10Pixels to offset from top when calculating position of scroll.
+ +

Events

+ + + + + + + + + + + + + + +
Event TypeDescription
activate.bs.scrollspyThis event fires whenever a new item becomes activated by the scrollspy.
+ +
$('#myScrollspy').on('activate.bs.scrollspy', function () {
+  // do something…
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/components/tooltips/index.html b/docs/4.0/components/tooltips/index.html new file mode 100644 index 00000000..57293c41 --- /dev/null +++ b/docs/4.0/components/tooltips/index.html @@ -0,0 +1,1621 @@ + + + + + + + + + Tooltips · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Tooltips

+

Documentation and examples for adding custom Bootstrap tooltips with CSS and JavaScript using CSS3 for animations and data-attributes for local title storage.

+ + +

Overview

+ +

Things to know when using the tooltip plugin:

+ +
    +
  • Tooltips rely on the 3rd party library Popper.js for positioning. You must include popper.min.js before bootstrap.js in order for tooltips to work!
  • +
  • If building our JS from source, it requires util.js.
  • +
  • Tooltips are opt-in for performance reasons, so you must initialize them yourself.
  • +
  • Tooltips with zero-length titles are never displayed.
  • +
  • Specify container: 'body' to avoid rendering problems in more complex components (like our input groups, button groups, etc).
  • +
  • Triggering tooltips on hidden elements will not work.
  • +
  • Tooltips for .disabled or disabled elements must be triggered on a wrapper element.
  • +
  • When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use white-space: nowrap; on your <a>s to avoid this behavior.
  • +
  • Tooltips must be hidden before their corresponding elements have been removed from the DOM.
  • +
+ +

Got all that? Great, let’s see how they work with some examples.

+ +

Example: Enable tooltips everywhere

+ +

One way to initialize all tooltips on a page would be to select them by their data-toggle attribute:

+ +
$(function () {
+  $('[data-toggle="tooltip"]').tooltip()
+})
+ +

Examples

+ +

Hover over the links below to see tooltips:

+ +
+

Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral. +

+
+ +

Static demo

+ +

Four options are available: top, right, bottom, and left aligned.

+ +
+ + + + +
+ +

Interactive demo

+ +

Hover over the buttons below to see their tooltips.

+ +
+
+ + + + + +
+
+ +
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="Tooltip on top">
+  Tooltip on top
+</button>
+<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="right" title="Tooltip on right">
+  Tooltip on right
+</button>
+<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">
+  Tooltip on bottom
+</button>
+<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="left" title="Tooltip on left">
+  Tooltip on left
+</button>
+ +

And with custom HTML added:

+ +
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-html="true" title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
+  Tooltip with HTML
+</button>
+ +

Usage

+ +

The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element.

+ +

Trigger the tooltip via JavaScript:

+ +
$('#example').tooltip(options)
+ +

Markup

+ +

The required markup for a tooltip is only a data attribute and title on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to top by the plugin).

+ +
+

Making tooltips work for keyboard and assistive technology users

+ +

You should only add tooltips to HTML elements that are traditionally keyboard-focusable and interactive (such as links or form controls). Although arbitrary HTML elements (such as <span>s) can be made focusable by adding the tabindex="0" attribute, this will add potentially annoying and confusing tab stops on non-interactive elements for keyboard users. In addition, most assistive technologies currently do not announce the tooltip in this situation.

+
+ +
<!-- HTML to write -->
+<a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
+
+<!-- Generated markup by the plugin -->
+<div class="tooltip bs-tooltip-top" role="tooltip">
+  <div class="arrow"></div>
+  <div class="tooltip-inner">
+    Some tooltip text!
+  </div>
+</div>
+ +

Options

+ +

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
animationbooleantrueApply a CSS fade transition to the tooltip
containerstring | element | falsefalse +

Appends the tooltip to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize.

+
delaynumber | object0 +

Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type

+

If a number is supplied, delay is applied to both hide/show

+

Object structure is: delay: { "show": 500, "hide": 100 }

+
htmlbooleanfalse +

Allow HTML in the tooltip.

+

If true, HTML tags in the tooltip's title will be rendered in the tooltip. If false, jQuery's text method will be used to insert content into the DOM.

+

Use text if you're worried about XSS attacks.

+
placementstring | function'top' +

How to position the tooltip - auto | top | bottom | left | right.
When auto is specified, it will dynamically reorient the tooltip.

+

When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the tooltip instance.

+
selectorstringfalseIf a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See this and an informative example.
templatestring'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>' +

Base HTML to use when creating the tooltip.

+

The tooltip's title will be injected into the .tooltip-inner.

+

.arrow will become the tooltip's arrow.

+

The outermost wrapper element should have the .tooltip class.

+
titlestring | element | function'' +

Default title value if title attribute isn't present.

+

If a function is given, it will be called with its this reference set to the element that the tooltip is attached to.

+
triggerstring'hover focus'How tooltip is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.
offsetnumber | string0Offset of the tooltip relative to its target. For more information refer to Popper.js's offset docs.
fallbackPlacementstring | array'flip'Allow to specify which position Popper will use on fallback. For more information refer to + Popper.js's behavior docs
+ +
+

Data attributes for individual tooltips

+ +

Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above.

+
+ +

Methods

+ +
+

Asynchronous methods and transitions

+ +

All API methods are asynchronous and start a transition. They returns to the caller as soon as the transition is started but before it ends. In addition, a method call on a transitioning component will be ignored.

+ +

See our Javascript documentation for more informations.

+
+ +

$().tooltip(options)

+ +

Attaches a tooltip handler to an element collection.

+ +

.tooltip('show')

+ +

Reveals an element’s tooltip. Returns to the caller before the tooltip has actually been shown (i.e. before the shown.bs.tooltip event occurs). This is considered a “manual” triggering of the tooltip. Tooltips with zero-length titles are never displayed.

+ +
$('#element').tooltip('show')
+ +

.tooltip('hide')

+ +

Hides an element’s tooltip. Returns to the caller before the tooltip has actually been hidden (i.e. before the hidden.bs.tooltip event occurs). This is considered a “manual” triggering of the tooltip.

+ +
$('#element').tooltip('hide')
+ +

.tooltip('toggle')

+ +

Toggles an element’s tooltip. Returns to the caller before the tooltip has actually been shown or hidden (i.e. before the shown.bs.tooltip or hidden.bs.tooltip event occurs). This is considered a “manual” triggering of the tooltip.

+ +
$('#element').tooltip('toggle')
+ +

.tooltip('dispose')

+ +

Hides and destroys an element’s tooltip. Tooltips that use delegation (which are created using the selector option) cannot be individually destroyed on descendant trigger elements.

+ +
$('#element').tooltip('dispose')
+ +

.tooltip('enable')

+ +

Gives an element’s tooltip the ability to be shown. Tooltips are enabled by default.

+ +
$('#element').tooltip('enable')
+ +

.tooltip('disable')

+ +

Removes the ability for an element’s tooltip to be shown. The tooltip will only be able to be shown if it is re-enabled.

+ +
$('#element').tooltip('disable')
+ +

.tooltip('toggleEnabled')

+ +

Toggles the ability for an element’s tooltip to be shown or hidden.

+ +
$('#element').tooltip('toggleEnabled')
+ +

.tooltip('update')

+ +

Updates the position of an element’s tooltip.

+ +
$('#element').tooltip('update')
+ +

Events

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.tooltipThis event fires immediately when the show instance method is called.
shown.bs.tooltipThis event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete).
hide.bs.tooltipThis event is fired immediately when the hide instance method has been called.
hidden.bs.tooltipThis event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete).
inserted.bs.tooltipThis event is fired after the show.bs.tooltip event when the tooltip template has been added to the DOM.
+ +
$('#myTooltip').on('hidden.bs.tooltip', function () {
+  // do something…
+})
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/content/code/index.html b/docs/4.0/content/code/index.html new file mode 100644 index 00000000..910e51f3 --- /dev/null +++ b/docs/4.0/content/code/index.html @@ -0,0 +1,1302 @@ + + + + + + + + + Code · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Code

+

Documentation and examples for displaying inline and multiline blocks of code with Bootstrap.

+ + +

Inline code

+ +

Wrap inline snippets of code with <code>. Be sure to escape HTML angle brackets.

+ +
+For example, <section> should be wrapped as inline. +
+
For example, <code>&lt;section&gt;</code> should be wrapped as inline.
+ +

Code blocks

+ +

Use <pre>s for multiple lines of code. Once again, be sure to escape any angle brackets in the code for proper rendering. You may optionally add the .pre-scrollable class, which will set a max-height of 350px and provide a y-axis scrollbar.

+ +
+
<p>Sample text here...</p>
+<p>And another line of sample text here...</p>
+
+
+
<pre><code>&lt;p&gt;Sample text here...&lt;/p&gt;
+&lt;p&gt;And another line of sample text here...&lt;/p&gt;
+</code></pre>
+ +

Variables

+ +

For indicating variables use the <var> tag.

+ +
+y = mx + b +
+
<var>y</var> = <var>m</var><var>x</var> + <var>b</var>
+ +

User input

+ +

Use the <kbd> to indicate input that is typically entered via keyboard.

+ +
+To switch directories, type cd followed by the name of the directory.
+To edit settings, press ctrl + , +
+
To switch directories, type <kbd>cd</kbd> followed by the name of the directory.<br>
+To edit settings, press <kbd><kbd>ctrl</kbd> + <kbd>,</kbd></kbd>
+ +

Sample output

+ +

For indicating sample output from a program use the <samp> tag.

+ +
+This text is meant to be treated as sample output from a computer program. +
+
<samp>This text is meant to be treated as sample output from a computer program.</samp>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/content/figures/index.html b/docs/4.0/content/figures/index.html new file mode 100644 index 00000000..ff5ac4f0 --- /dev/null +++ b/docs/4.0/content/figures/index.html @@ -0,0 +1,1269 @@ + + + + + + + + + Figures · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Figures

+

Documentation and examples for displaying related images and text with the figure component in Bootstrap.

+ + +

Anytime you need to display a piece of content—like an image with an optional caption, consider using a <figure>.

+ +

Use the included .figure , .figure-img and .figure-caption classes to provide some baseline styles for the HTML5 <figure> and <figcaption> elements. Images in figures have no explicit size, so be sure to add the .img-fluid class to your <img> to make it responsive.

+ +
+
+ A generic square placeholder image with rounded corners in a figure. +
A caption for the above image.
+
+
+
<figure class="figure">
+  <img src="..." class="figure-img img-fluid rounded" alt="A generic square placeholder image with rounded corners in a figure.">
+  <figcaption class="figure-caption">A caption for the above image.</figcaption>
+</figure>
+ +

Aligning the figure’s caption is easy with our text utilities.

+ +
+
+ A generic square placeholder image with rounded corners in a figure. +
A caption for the above image.
+
+
+
<figure class="figure">
+  <img src="..." class="figure-img img-fluid rounded" alt="A generic square placeholder image with rounded corners in a figure.">
+  <figcaption class="figure-caption text-right">A caption for the above image.</figcaption>
+</figure>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/content/images/index.html b/docs/4.0/content/images/index.html new file mode 100644 index 00000000..79b7bdfc --- /dev/null +++ b/docs/4.0/content/images/index.html @@ -0,0 +1,1309 @@ + + + + + + + + + Images · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Images

+

Documentation and examples for opting images into responsive behavior (so they never become larger than their parent elements) and add lightweight styles to them—all via classes.

+ + +

Responsive images

+ +

Images in Bootstrap are made responsive with .img-fluid. max-width: 100%; and height: auto; are applied to the image so that it scales with the parent element.

+ +
+ Generic responsive image +
+ +
<img src="..." class="img-fluid" alt="Responsive image">
+ +
+

SVG images and IE 10

+ +

In Internet Explorer 10, SVG images with .img-fluid are disproportionately sized. To fix this, add width: 100% \9; where necessary. This fix improperly sizes other image formats, so Bootstrap doesn’t apply it automatically.

+
+ +

Image thumbnails

+ +

In addition to our border-radius utilities, you can use .img-thumbnail to give an image a rounded 1px border appearance.

+ +
+ A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera +
+ +
<img src="..." alt="..." class="img-thumbnail">
+ +

Aligning images

+ +

Align images with the helper float classes or text alignment classes. block-level images can be centered using the .mx-auto margin utility class.

+ +
+ A generic square placeholder image with rounded corners + A generic square placeholder image with rounded corners +
+ +
<img src="..." class="rounded float-left" alt="...">
+<img src="..." class="rounded float-right" alt="...">
+ +
+ A generic square placeholder image with rounded corners +
+ +
<img src="..." class="rounded mx-auto d-block" alt="...">
+ +
+
+ A generic square placeholder image with rounded corners +
+
+ +
<div class="text-center">
+  <img src="..." class="rounded" alt="...">
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/content/index.html b/docs/4.0/content/index.html new file mode 100644 index 00000000..fa05c3f6 --- /dev/null +++ b/docs/4.0/content/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/4.0/content/reboot/index.html b/docs/4.0/content/reboot/index.html new file mode 100644 index 00000000..94b7f314 --- /dev/null +++ b/docs/4.0/content/reboot/index.html @@ -0,0 +1,1637 @@ + + + + + + + + + Reboot · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Reboot

+

Reboot, a collection of element-specific CSS changes in a single file, kickstart Bootstrap to provide an elegant, consistent, and simple baseline to build upon.

+ + +

Approach

+ +

Reboot builds upon Normalize, providing many HTML elements with somewhat opinionated styles using only element selectors. Additional styling is done only with classes. For example, we reboot some <table> styles for a simpler baseline and later provide .table, .table-bordered, and more.

+ +

Here are our guidelines and reasons for choosing what to override in Reboot:

+ +
    +
  • Update some browser default values to use rems instead of ems for scalable component spacing.
  • +
  • Avoid margin-top. Vertical margins can collapse, yielding unexpected results. More importantly though, a single direction of margin is a simpler mental model.
  • +
  • For easier scaling across device sizes, block elements should use rems for margins.
  • +
  • Keep declarations of font-related properties to a minimum, using inherit whenever possible.
  • +
+ +

Page defaults

+ +

The <html> and <body> elements are updated to provide better page-wide defaults. More specifically:

+ +
    +
  • The box-sizing is globally set on every element—including *:before and *:after, to border-box. This ensures that the declared width of element is never exceeded due to padding or border. +
      +
    • No base font-size is declared on the <html>, but 16px is assumed (the browser default). font-size: 1rem is applied on the <body> for easy responsive type-scaling via media queries while respecting user preferences and ensuring a more accessible approach.
    • +
    +
  • +
  • The <body> also sets a global font-family, line-height, and text-align. This is inherited later by some form elements to prevent font inconsistencies.
  • +
  • For safety, the <body> has a declared background-color, defaulting to #fff.
  • +
+ +

Native font stack

+ +

The default web fonts (Helvetica Neue, Helvetica, and Arial) have been dropped in Bootstrap 4 and replaced with a “native font stack” for optimum text rendering on every device and OS. Read more about native font stacks in this Smashing Magazine article.

+ +
$font-family-sans-serif:
+  // Safari for OS X and iOS (San Francisco)
+  -apple-system,
+  // Chrome >= 56 for OS X (San Francisco), Windows, Linux and Android
+  system-ui,
+  // Chrome < 56 for OS X (San Francisco)
+  BlinkMacSystemFont,
+  // Windows
+  "Segoe UI",
+  // Android
+  "Roboto",
+  // Basic web fallback
+  "Helvetica Neue", Arial, sans-serif !default;
+ +

This font-family is applied to the <body> and automatically inherited globally throughout Bootstrap. To switch the global font-family, update $font-family-base and recompile Bootstrap.

+ +

Headings and paragraphs

+ +

All heading elements—e.g., <h1>—and <p> are reset to have their margin-top removed. Headings have margin-bottom: .5rem added and paragraphs margin-bottom: 1rem for easy spacing.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HeadingExample
+

<h1></h1>

+ +
h1. Bootstrap heading
+

<h2></h2>

+ +
h2. Bootstrap heading
+

<h3></h3>

+ +
h3. Bootstrap heading
+

<h4></h4>

+ +
h4. Bootstrap heading
+

<h5></h5>

+ +
h5. Bootstrap heading
+

<h6></h6>

+ +
h6. Bootstrap heading
+ +

Lists

+ +

All lists—<ul>, <ol>, and <dl>—have their margin-top removed and a margin-bottom: 1rem. Nested lists have no margin-bottom.

+ +
+ +
    +
  • Lorem ipsum dolor sit amet
  • +
  • Consectetur adipiscing elit
  • +
  • Integer molestie lorem at massa
  • +
  • Facilisis in pretium nisl aliquet
  • +
  • Nulla volutpat aliquam velit +
      +
    • Phasellus iaculis neque
    • +
    • Purus sodales ultricies
    • +
    • Vestibulum laoreet porttitor sem
    • +
    • Ac tristique libero volutpat at
    • +
    +
  • +
  • Faucibus porta lacus fringilla vel
  • +
  • Aenean sit amet erat nunc
  • +
  • Eget porttitor lorem
  • +
+ +
    +
  1. Lorem ipsum dolor sit amet
  2. +
  3. Consectetur adipiscing elit
  4. +
  5. Integer molestie lorem at massa
  6. +
  7. Facilisis in pretium nisl aliquet
  8. +
  9. Nulla volutpat aliquam velit
  10. +
  11. Faucibus porta lacus fringilla vel
  12. +
  13. Aenean sit amet erat nunc
  14. +
  15. Eget porttitor lorem
  16. +
+ +
+ +

For simpler styling, clear hierarchy, and better spacing, description lists have updated margins. <dd>s reset margin-left to 0 and add margin-bottom: .5rem. <dt>s are bolded.

+ +
+ +
+
Description lists
+
A description list is perfect for defining terms.
+
Euismod
+
Vestibulum id ligula porta felis euismod semper eget lacinia odio sem.
+
Donec id elit non mi porta gravida at eget metus.
+
Malesuada porta
+
Etiam porta sem malesuada magna mollis euismod.
+
+ +
+ +

Preformatted text

+ +

The <pre> element is reset to remove its margin-top and use rem units for its margin-bottom.

+ +
+ +
+.example-element {
+  margin-bottom: 1rem;
+}
+
+ +
+ +

Tables

+ +

Tables are slightly adjusted to style <caption>s, collapse borders, and ensure consistent text-align throughout. Additional changes for borders, padding, and more come with the .table class.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ This is an example table, and this is its caption to describe the contents. +
Table headingTable headingTable headingTable heading
Table cellTable cellTable cellTable cell
Table cellTable cellTable cellTable cell
Table cellTable cellTable cellTable cell
+
+ +

Forms

+ +

Various form elements have been rebooted for simpler base styles. Here are some of the most notable changes:

+ +
    +
  • <fieldset>s have no borders, padding, or margin so they can be easily used as wrappers for individual inputs or groups of inputs.
  • +
  • <legend>s, like fieldsets, have also been restyled to be displayed as a heading of sorts.
  • +
  • <label>s are set to display: inline-block to allow margin to be applied.
  • +
  • <input>s, <select>s, <textarea>s, and <button>s are mostly addressed by Normalize, but Reboot removes their margin and sets line-height: inherit, too.
  • +
  • <textarea>s are modified to only be resizable vertically as horizontal resizing often “breaks” page layout.
  • +
+ +

These changes, and more, are demonstrated below.

+ +
+
+ Example legend + +

+ + +

+ +

+ + +

+ +

+ +

+ +

+ + + +

+ +

+ + +

+ +

+ + +

+ +

+ + 100 +

+ +

+ + + +

+ +

+ + + +

+
+
+ +

Misc elements

+ +

Address

+ +

The <address> element is updated to reset the browser default font-style from italic to normal. line-height is also now inherited, and margin-bottom: 1rem has been added. <address>s are for presenting contact information for the nearest ancestor (or an entire body of work). Preserve formatting by ending lines with <br>.

+ +
+
+ Twitter, Inc.
+ 1355 Market St, Suite 900
+ San Francisco, CA 94103
+ P: (123) 456-7890 +
+ +
+ Full Name
+ first.last@example.com +
+
+ +

Blockquote

+ +

The default margin on blockquotes is 1em 40px, so we reset that to 0 0 1rem for something more consistent with other elements.

+ +
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
Someone famous in Source Title
+
+
+ +

Inline elements

+ +

The <abbr> element receives basic styling to make it stand out amongst paragraph text.

+ +
+ Nulla attr vitae elit libero, a pharetra augue. +
+ +

HTML5 [hidden] attribute

+ +

HTML5 adds a new global attribute named [hidden], which is styled as display: none by default. Borrowing an idea from PureCSS, we improve upon this default by making [hidden] { display: none !important; } to help prevent its display from getting accidentally overridden. While [hidden] isn’t natively supported by IE10, the explicit declaration in our CSS gets around that problem.

+ +
<input type="text" hidden>
+ +
+

jQuery incompatibility

+ +

[hidden] is not compatible with jQuery’s $(...).hide() and $(...).show() methods. This could potentially change in jQuery 3, but we’re not holding our breath. Therefore, we don’t currently especially endorse [hidden] over other techniques for managing the display of elements.

+
+ +

To merely toggle the visibility of an element, meaning its display is not modified and the element can still affect the flow of the document, use the .invisible class instead.

+ +

Click delay optimization for touch

+ +

Traditionally, browsers on touchscreen devices have a delay of approximately 300ms between the end of a “tap” – the moment when a finger/stylus is lifted from screen – and the click event being fired. This delay is necessary for these browsers to correctly handle “double-tap to zoom” gestures without prematurely triggering actions or links after the first “tap”, but it can make your site feel slightly sluggish and unresponsive.

+ +

Most mobile browsers automatically optimize away this 300ms delay for sites that use the width=device-width property as part of their responsive meta tag (as well as for sites that disable zooming, for instance with user-scalable=no, though this practice is strongly discouraged for accessibility and usability reasons). The biggest exceptions here are IE11 on Windows Phone 8.1, and iOS Safari (and any other iOS WebView-based browser) prior to iOS 9.3.

+ +

On touch-enabled laptop/desktop devices, IE11 and Microsoft Edge are currently the only browsers with “double-tap to zoom” functionality. As the responsive meta tag is ignored by all desktop browsers, using width=device-width will have no effect on the 300ms delay here.

+ +

To address this problem in IE11 and Microsoft Edge on desktop, as well as IE11 on Windows Phone 8.1, Bootstrap explicitly uses the touch-action:manipulation CSS property on all interactive elements (such as buttons and links). This property essentially disables double-tap functionality on those elements, eliminating the 300ms delay.

+ +

In the case of old iOS versions (prior to 9.3), the suggested approach is to use additional scripts such as FastClick to explicitly work around the delay.

+ +

For further details, see the compatibility table for suppressing 300ms delay for touchscreen interactions.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/content/tables/index.html b/docs/4.0/content/tables/index.html new file mode 100644 index 00000000..d92e3f0e --- /dev/null +++ b/docs/4.0/content/tables/index.html @@ -0,0 +1,2363 @@ + + + + + + + + + Tables · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Tables

+

Documentation and examples for opt-in styling of tables (given their prevelant use in JavaScript plugins) with Bootstrap.

+ + +

Examples

+ +

Due to the widespread use of tables across third-party widgets like calendars and date pickers, we’ve designed our tables to be opt-in. Just add the base class .table to any <table>, then extend with custom styles or our various included modifier classes.

+ +

Using the most basic table markup, here’s how .table-based tables look in Bootstrap. All table styles are inherited in Bootstrap 4, meaning any nested tables will be styled in the same manner as the parent.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+
<table class="table">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td>Larry</td>
+      <td>the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +

You can also invert the colors—with light text on dark backgrounds—with .table-inverse.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+
<table class="table table-inverse">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td>Larry</td>
+      <td>the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +

Table head options

+ +

Similar to default and inverse tables, use one of two modifier classes to make <thead>s appear light or dark gray.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+
<table class="table">
+  <thead class="thead-inverse">
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td>Larry</td>
+      <td>the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+
+<table class="table">
+  <thead class="thead-default">
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td>Larry</td>
+      <td>the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +

Striped rows

+ +

Use .table-striped to add zebra-striping to any table row within the <tbody>.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+
<table class="table table-striped">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td>Larry</td>
+      <td>the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+
<table class="table table-striped table-inverse">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td>Larry</td>
+      <td>the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +

Bordered table

+ +

Add .table-bordered for borders on all sides of the table and cells.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2MarkOtto@TwBootstrap
3JacobThornton@fat
4Larry the Bird@twitter
+
+
<table class="table table-bordered">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@TwBootstrap</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">4</th>
+      <td colspan="2">Larry the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2MarkOtto@TwBootstrap
3JacobThornton@fat
4Larry the Bird@twitter
+
+
<table class="table table-bordered table-inverse">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@TwBootstrap</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">4</th>
+      <td colspan="2">Larry the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +

Hoverable rows

+ +

Add .table-hover to enable a hover state on table rows within a <tbody>.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
<table class="table table-hover">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td colspan="2">Larry the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
<table class="table table-hover table-inverse">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td colspan="2">Larry the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +

Small table

+ +

Add .table-sm to make tables more compact by cutting cell padding in half.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
<table class="table table-sm">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td colspan="2">Larry the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
+
+
<table class="table table-sm table-inverse">
+  <thead>
+    <tr>
+      <th>#</th>
+      <th>First Name</th>
+      <th>Last Name</th>
+      <th>Username</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <th scope="row">1</th>
+      <td>Mark</td>
+      <td>Otto</td>
+      <td>@mdo</td>
+    </tr>
+    <tr>
+      <th scope="row">2</th>
+      <td>Jacob</td>
+      <td>Thornton</td>
+      <td>@fat</td>
+    </tr>
+    <tr>
+      <th scope="row">3</th>
+      <td colspan="2">Larry the Bird</td>
+      <td>@twitter</td>
+    </tr>
+  </tbody>
+</table>
+ +

Contextual classes

+ +

Use contextual classes to color table rows or individual cells.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeColumn headingColumn headingColumn heading
ActiveColumn contentColumn contentColumn content
DefaultColumn contentColumn contentColumn content
PrimaryColumn contentColumn contentColumn content
SecondaryColumn contentColumn contentColumn content
SuccessColumn contentColumn contentColumn content
DangerColumn contentColumn contentColumn content
WarningColumn contentColumn contentColumn content
InfoColumn contentColumn contentColumn content
LightColumn contentColumn contentColumn content
DarkColumn contentColumn contentColumn content
+
+ +
<!-- On rows -->
+<tr class="table-active">...</tr>
+
+<tr class="table-primary">...</tr>
+<tr class="table-secondary">...</tr>
+<tr class="table-success">...</tr>
+<tr class="table-danger">...</tr>
+<tr class="table-warning">...</tr>
+<tr class="table-info">...</tr>
+<tr class="table-light">...</tr>
+<tr class="table-dark">...</tr>
+
+<!-- On cells (`td` or `th`) -->
+<tr>
+  <td class="table-active">...</td>
+  
+  <td class="table-primary">...</td>
+  <td class="table-secondary">...</td>
+  <td class="table-success">...</td>
+  <td class="table-danger">...</td>
+  <td class="table-warning">...</td>
+  <td class="table-info">...</td>
+  <td class="table-light">...</td>
+  <td class="table-dark">...</td>
+</tr>
+ +

Regular table background variants are not available with the inverse table, however, you may use text or background utilities to achieve similar styles.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#Column headingColumn headingColumn heading
1Column contentColumn contentColumn content
2Column contentColumn contentColumn content
3Column contentColumn contentColumn content
4Column contentColumn contentColumn content
5Column contentColumn contentColumn content
6Column contentColumn contentColumn content
7Column contentColumn contentColumn content
8Column contentColumn contentColumn content
9Column contentColumn contentColumn content
+
+ +
<!-- On rows -->
+<tr class="bg-primary">...</tr>
+<tr class="bg-success">...</tr>
+<tr class="bg-warning">...</tr>
+<tr class="bg-danger">...</tr>
+<tr class="bg-info">...</tr>
+
+<!-- On cells (`td` or `th`) -->
+<tr>
+  <td class="bg-primary">...</td>
+  <td class="bg-success">...</td>
+  <td class="bg-warning">...</td>
+  <td class="bg-danger">...</td>
+  <td class="bg-info">...</td>
+</tr>
+ +
+

Conveying meaning to assistive technologies

+ +

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .sr-only class.

+
+ +

Responsive tables

+ +

Create responsive tables by adding .table-responsive to any .table to make them scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables.

+ +
+

Vertical clipping/truncation

+ +

Responsive tables make use of overflow-y: hidden, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets.

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#Table headingTable headingTable headingTable headingTable headingTable heading
1Table cellTable cellTable cellTable cellTable cellTable cell
2Table cellTable cellTable cellTable cellTable cellTable cell
3Table cellTable cellTable cellTable cellTable cellTable cell
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#Table headingTable headingTable headingTable headingTable headingTable heading
1Table cellTable cellTable cellTable cellTable cellTable cell
2Table cellTable cellTable cellTable cellTable cellTable cell
3Table cellTable cellTable cellTable cellTable cellTable cell
+
+ +
<table class="table table-responsive">
+  ...
+</table>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/content/typography/index.html b/docs/4.0/content/typography/index.html new file mode 100644 index 00000000..7e03f202 --- /dev/null +++ b/docs/4.0/content/typography/index.html @@ -0,0 +1,1664 @@ + + + + + + + + + Typography · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Typography

+

Documentation and examples for Bootstrap typography, including global settings, headings, body text, lists, and more.

+ + +

Global settings

+ +

Bootstrap sets basic global display, typography, and link styles. When more control is needed, check out the textual utility classes.

+ +
    +
  • Use a native font stack that selects the best font-family for each OS and device.
  • +
  • For a more inclusive and accessible type scale, we assume the browser default root font-size (typically 16px) so visitors can customize their browser defaults as needed.
  • +
  • Use the $font-family-base, $font-size-base, and $line-height-base attributes as our typographic base applied to the <body>.
  • +
  • Set the global link color via $link-color and apply link underlines only on :hover.
  • +
  • Use $body-bg to set a background-color on the <body> (#fff by default).
  • +
+ +

These styles can be found within _reboot.scss, and the global variables are defined in _variables.scss.

+ +

Headings

+ +

All HTML headings, <h1> through <h6>, are available.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HeadingExample
+

<h1></h1>

+ +
h1. Bootstrap heading
+

<h2></h2>

+ +
h2. Bootstrap heading
+

<h3></h3>

+ +
h3. Bootstrap heading
+

<h4></h4>

+ +
h4. Bootstrap heading
+

<h5></h5>

+ +
h5. Bootstrap heading
+

<h6></h6>

+ +
h6. Bootstrap heading
+ +
<h1>h1. Bootstrap heading</h1>
+<h2>h2. Bootstrap heading</h2>
+<h3>h3. Bootstrap heading</h3>
+<h4>h4. Bootstrap heading</h4>
+<h5>h5. Bootstrap heading</h5>
+<h6>h6. Bootstrap heading</h6>
+ +

.h1 through .h6 classes are also available, for when you want to match the font styling of a heading but cannot use the associated HTML element.

+ +
+

h1. Bootstrap heading

+

h2. Bootstrap heading

+

h3. Bootstrap heading

+

h4. Bootstrap heading

+

h5. Bootstrap heading

+

h6. Bootstrap heading

+
+
<p class="h1">h1. Bootstrap heading</p>
+<p class="h2">h2. Bootstrap heading</p>
+<p class="h3">h3. Bootstrap heading</p>
+<p class="h4">h4. Bootstrap heading</p>
+<p class="h5">h5. Bootstrap heading</p>
+<p class="h6">h6. Bootstrap heading</p>
+ +

Customizing headings

+ +

Use the included utility classes to recreate the small secondary heading text from Bootstrap 3.

+ +
+ + Fancy display heading + With faded secondary text + +
+ +
<h3>
+  Fancy display heading
+  <small class="text-muted">With faded secondary text</small>
+</h3>
+ +

Display headings

+ +

Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a display heading—a larger, slightly more opinionated heading style.

+ +
+ + + + + + + + + + + + + + + +
Display 1
Display 2
Display 3
Display 4
+
+ +
<h1 class="display-1">Display 1</h1>
+<h1 class="display-2">Display 2</h1>
+<h1 class="display-3">Display 3</h1>
+<h1 class="display-4">Display 4</h1>
+ +

Lead

+ +

Make a paragraph stand out by adding .lead.

+ +
+

+ Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus. +

+
+
<p class="lead">
+  Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.
+</p>
+ +

Inline text elements

+ +

Styling for common inline HTML5 elements.

+ +
+

You can use the mark tag to highlight text.

+

This line of text is meant to be treated as deleted text.

+

This line of text is meant to be treated as no longer accurate.

+

This line of text is meant to be treated as an addition to the document.

+

This line of text will render as underlined

+

This line of text is meant to be treated as fine print.

+

This line rendered as bold text.

+

This line rendered as italicized text.

+
+
<p>You can use the mark tag to <mark>highlight</mark> text.</p>
+<p><del>This line of text is meant to be treated as deleted text.</del></p>
+<p><s>This line of text is meant to be treated as no longer accurate.</s></p>
+<p><ins>This line of text is meant to be treated as an addition to the document.</ins></p>
+<p><u>This line of text will render as underlined</u></p>
+<p><small>This line of text is meant to be treated as fine print.</small></p>
+<p><strong>This line rendered as bold text.</strong></p>
+<p><em>This line rendered as italicized text.</em></p>
+ +

.mark and .small classes are also available to apply the same styles as <mark> and <small> while avoiding any unwanted semantic implications that the tags would bring.

+ +

While not shown above, feel free to use <b> and <i> in HTML5. <b> is meant to highlight words or phrases without conveying additional importance while <i> is mostly for voice, technical terms, etc.

+ +

Text utilities

+ +

Change text alignment, transform, style, weight, and color with our text utilities.

+ +

Abbreviations

+ +

Stylized implementation of HTML’s <abbr> element for abbreviations and acronyms to show the expanded version on hover. Abbreviations have a default underline and gain a help cursor to provide additional context on hover and to users of assistive technologies.

+ +

Add .initialism to an abbreviation for a slightly smaller font-size.

+ +
+

attr

+

HTML

+
+
<p><abbr title="attribute">attr</abbr></p>
+<p><abbr title="HyperText Markup Language" class="initialism">HTML</abbr></p>
+ +

Blockquotes

+ +

For quoting blocks of content from another source within your document. Wrap <blockquote class="blockquote"> around any HTML as the quote.

+ +
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
+
+
<blockquote class="blockquote">
+  <p class="mb-0">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+</blockquote>
+ +

Naming a source

+ +

Add a <footer class="blockquote-footer"> for identifying the source. Wrap the name of the source work in <cite>.

+ +
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
Someone famous in Source Title
+
+
+
<blockquote class="blockquote">
+  <p class="mb-0">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+  <footer class="blockquote-footer">Someone famous in <cite title="Source Title">Source Title</cite></footer>
+</blockquote>
+ +

Alignment

+ +

Use text utilities as needed to change the alignment of your blockquote.

+ +
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
Someone famous in Source Title
+
+
+
<blockquote class="blockquote text-center">
+  <p class="mb-0">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+  <footer class="blockquote-footer">Someone famous in <cite title="Source Title">Source Title</cite></footer>
+</blockquote>
+ +
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
Someone famous in Source Title
+
+
+
<blockquote class="blockquote text-right">
+  <p class="mb-0">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+  <footer class="blockquote-footer">Someone famous in <cite title="Source Title">Source Title</cite></footer>
+</blockquote>
+ +

Lists

+ +

Unstyled

+ +

Remove the default list-style and left margin on list items (immediate children only). This only applies to immediate children list items, meaning you will need to add the class for any nested lists as well.

+ +
+
    +
  • Lorem ipsum dolor sit amet
  • +
  • Consectetur adipiscing elit
  • +
  • Integer molestie lorem at massa
  • +
  • Facilisis in pretium nisl aliquet
  • +
  • Nulla volutpat aliquam velit +
      +
    • Phasellus iaculis neque
    • +
    • Purus sodales ultricies
    • +
    • Vestibulum laoreet porttitor sem
    • +
    • Ac tristique libero volutpat at
    • +
    +
  • +
  • Faucibus porta lacus fringilla vel
  • +
  • Aenean sit amet erat nunc
  • +
  • Eget porttitor lorem
  • +
+
+
<ul class="list-unstyled">
+  <li>Lorem ipsum dolor sit amet</li>
+  <li>Consectetur adipiscing elit</li>
+  <li>Integer molestie lorem at massa</li>
+  <li>Facilisis in pretium nisl aliquet</li>
+  <li>Nulla volutpat aliquam velit
+    <ul>
+      <li>Phasellus iaculis neque</li>
+      <li>Purus sodales ultricies</li>
+      <li>Vestibulum laoreet porttitor sem</li>
+      <li>Ac tristique libero volutpat at</li>
+    </ul>
+  </li>
+  <li>Faucibus porta lacus fringilla vel</li>
+  <li>Aenean sit amet erat nunc</li>
+  <li>Eget porttitor lorem</li>
+</ul>
+ +

Inline

+ +

Remove a list’s bullets and apply some light margin with a combination of two classes, .list-inline and .list-inline-item.

+ +
+
    +
  • Lorem ipsum
  • +
  • Phasellus iaculis
  • +
  • Nulla volutpat
  • +
+
+
<ul class="list-inline">
+  <li class="list-inline-item">Lorem ipsum</li>
+  <li class="list-inline-item">Phasellus iaculis</li>
+  <li class="list-inline-item">Nulla volutpat</li>
+</ul>
+ +

Description list alignment

+ +

Align terms and descriptions horizontally by using our grid system’s predefined classes (or semantic mixins). For longer terms, you can optionally add a .text-truncate class to truncate the text with an ellipsis.

+ +
+
+
Description lists
+
A description list is perfect for defining terms.
+ +
Euismod
+
+

Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.

+

Donec id elit non mi porta gravida at eget metus.

+
+ +
Malesuada porta
+
Etiam porta sem malesuada magna mollis euismod.
+ +
Truncated term is truncated
+
Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
+ +
Nesting
+
+
+
Nested definition list
+
Aenean posuere, tortor sed cursus feugiat, nunc augue blandit nunc.
+
+
+
+
+
<dl class="row">
+  <dt class="col-sm-3">Description lists</dt>
+  <dd class="col-sm-9">A description list is perfect for defining terms.</dd>
+
+  <dt class="col-sm-3">Euismod</dt>
+  <dd class="col-sm-9">
+    <p>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</p>
+    <p>Donec id elit non mi porta gravida at eget metus.</p>
+  </dd>
+
+  <dt class="col-sm-3">Malesuada porta</dt>
+  <dd class="col-sm-9">Etiam porta sem malesuada magna mollis euismod.</dd>
+
+  <dt class="col-sm-3 text-truncate">Truncated term is truncated</dt>
+  <dd class="col-sm-9">Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</dd>
+
+  <dt class="col-sm-3">Nesting</dt>
+  <dd class="col-sm-9">
+    <dl class="row">
+      <dt class="col-sm-4">Nested definition list</dt>
+      <dd class="col-sm-8">Aenean posuere, tortor sed cursus feugiat, nunc augue blandit nunc.</dd>
+    </dl>
+  </dd>
+</dl>
+ +

Responsive typography

+ +

Responsive typography refers to scaling text and components by simply adjusting the root element’s font-size within a series of media queries. Bootstrap doesn’t do this for you, but it’s fairly easy to add if you need it.

+ +

Here’s an example of it in practice. Choose whatever font-sizes and media queries you wish.

+ +
html {
+  font-size: 14px;
+}
+
+@include media-breakpoint-up(sm) {
+  html {
+    font-size: 16px;
+  }
+}
+
+@include media-breakpoint-up(md) {
+  html {
+    font-size: 20px;
+  }
+}
+
+@include media-breakpoint-up(lg) {
+  html {
+    font-size: 28px;
+  }
+}
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/examples/album/album.css b/docs/4.0/examples/album/album.css new file mode 100755 index 00000000..1d052298 --- /dev/null +++ b/docs/4.0/examples/album/album.css @@ -0,0 +1,58 @@ +body { + min-height: 75rem; /* Can be removed; just added for demo purposes */ +} + +.navbar { + margin-bottom: 0; +} + +.jumbotron { + padding-top: 6rem; + padding-bottom: 6rem; + margin-bottom: 0; + background-color: #fff; +} + +.jumbotron p:last-child { + margin-bottom: 0; +} + +.jumbotron-heading { + font-weight: 300; +} + +.jumbotron .container { + max-width: 40rem; +} + +.album { + min-height: 50rem; /* Can be removed; just added for demo purposes */ + padding-top: 3rem; + padding-bottom: 3rem; + background-color: #f7f7f7; +} + +.card { + float: left; + width: 33.333%; + padding: .75rem; + margin-bottom: 2rem; + border: 0; +} + +.card > img { + margin-bottom: .75rem; +} + +.card-text { + font-size: 85%; +} + +footer { + padding-top: 3rem; + padding-bottom: 3rem; +} + +footer p { + margin-bottom: .25rem; +} diff --git a/docs/4.0/examples/album/index.html b/docs/4.0/examples/album/index.html new file mode 100755 index 00000000..d9c514c5 --- /dev/null +++ b/docs/4.0/examples/album/index.html @@ -0,0 +1,132 @@ + + + + + + + + + + Album example for Bootstrap + + + + + + + + + + + + + +
+
+

Album example

+

Something short and leading about the collection below—its contents, the creator, etc. Make it short and sweet, but not too short so folks don't simply skip over it entirely.

+

+ Main call to action + Secondary action +

+
+
+ +
+
+ +
+
+ Card image cap +

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+
+ Card image cap +

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+
+ Card image cap +

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+ +
+ Card image cap +

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+
+ Card image cap +

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+
+ Card image cap +

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+ +
+ Card image cap +

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+
+ Card image cap +

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+
+ Card image cap +

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

+
+
+ +
+
+ + + + + + + + + + + + + + + diff --git a/docs/4.0/examples/blog/blog.css b/docs/4.0/examples/blog/blog.css new file mode 100755 index 00000000..5fed5642 --- /dev/null +++ b/docs/4.0/examples/blog/blog.css @@ -0,0 +1,166 @@ +/* + * Globals + */ + +@media (min-width: 48em) { + html { + font-size: 18px; + } +} + +body { + font-family: Georgia, "Times New Roman", Times, serif; + color: #555; +} + +h1, .h1, +h2, .h2, +h3, .h3, +h4, .h4, +h5, .h5, +h6, .h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: normal; + color: #333; +} + + +/* + * Override Bootstrap's default container. + */ + +.container { + max-width: 60rem; +} + + +/* + * Masthead for nav + */ + +.blog-masthead { + margin-bottom: 3rem; + background-color: #428bca; + -webkit-box-shadow: inset 0 -.1rem .25rem rgba(0,0,0,.1); + box-shadow: inset 0 -.1rem .25rem rgba(0,0,0,.1); +} + +/* Nav links */ +.nav-link { + position: relative; + padding: 1rem; + font-weight: 500; + color: #cdddeb; +} +.nav-link:hover, +.nav-link:focus { + color: #fff; + background-color: transparent; +} + +/* Active state gets a caret at the bottom */ +.nav-link.active { + color: #fff; +} +.nav-link.active:after { + position: absolute; + bottom: 0; + left: 50%; + width: 0; + height: 0; + margin-left: -.3rem; + vertical-align: middle; + content: ""; + border-right: .3rem solid transparent; + border-bottom: .3rem solid; + border-left: .3rem solid transparent; +} + + +/* + * Blog name and description + */ + +.blog-header { + padding-bottom: 1.25rem; + margin-bottom: 2rem; + border-bottom: .05rem solid #eee; +} +.blog-title { + margin-bottom: 0; + font-size: 2rem; + font-weight: normal; +} +.blog-description { + font-size: 1.1rem; + color: #999; +} + +@media (min-width: 40em) { + .blog-title { + font-size: 3.5rem; + } +} + + +/* + * Main column and sidebar layout + */ + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 1rem; + /*margin: 0 -1rem 1rem;*/ +} +.sidebar-module-inset { + padding: 1rem; + background-color: #f5f5f5; + border-radius: .25rem; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + + +/* Pagination */ +.blog-pagination { + margin-bottom: 4rem; +} +.blog-pagination > .btn { + border-radius: 2rem; +} + + +/* + * Blog posts + */ + +.blog-post { + margin-bottom: 4rem; +} +.blog-post-title { + margin-bottom: .25rem; + font-size: 2.5rem; +} +.blog-post-meta { + margin-bottom: 1.25rem; + color: #999; +} + + +/* + * Footer + */ + +.blog-footer { + padding: 2.5rem 0; + color: #999; + text-align: center; + background-color: #f9f9f9; + border-top: .05rem solid #e5e5e5; +} +.blog-footer p:last-child { + margin-bottom: 0; +} diff --git a/docs/4.0/examples/blog/index.html b/docs/4.0/examples/blog/index.html new file mode 100755 index 00000000..a583507c --- /dev/null +++ b/docs/4.0/examples/blog/index.html @@ -0,0 +1,166 @@ + + + + + + + + + + Blog Template for Bootstrap + + + + + + + + + + +
+ +
+ +
+
+

The Bootstrap Blog

+

An example blog template built with Bootstrap.

+
+
+ +
+ +
+ +
+ +
+

Sample blog post

+ + +

This blog post shows a few different types of content that's supported and styled with Bootstrap. Basic typography, images, and code are all supported.

+
+

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.

+
+

Curabitur blandit tempus porttitor. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit.

+
+

Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.

+

Heading

+

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

+

Sub-heading

+

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

+
Example code block
+

Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.

+

Sub-heading

+

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

+
    +
  • Praesent commodo cursus magna, vel scelerisque nisl consectetur et.
  • +
  • Donec id elit non mi porta gravida at eget metus.
  • +
  • Nulla vitae elit libero, a pharetra augue.
  • +
+

Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.

+
    +
  1. Vestibulum id ligula porta felis euismod semper.
  2. +
  3. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
  4. +
  5. Maecenas sed diam eget risus varius blandit sit amet non magna.
  6. +
+

Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis.

+
+ +
+

Another blog post

+ + +

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.

+
+

Curabitur blandit tempus porttitor. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit.

+
+

Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.

+

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

+
+ +
+

New feature

+ + +

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

+
    +
  • Praesent commodo cursus magna, vel scelerisque nisl consectetur et.
  • +
  • Donec id elit non mi porta gravida at eget metus.
  • +
  • Nulla vitae elit libero, a pharetra augue.
  • +
+

Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.

+

Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.

+
+ + + +
+ +
+ + + +
+ +
+ +
+ + + + + + + + + + + + + + diff --git a/docs/4.0/examples/carousel/carousel.css b/docs/4.0/examples/carousel/carousel.css new file mode 100755 index 00000000..5fbdea52 --- /dev/null +++ b/docs/4.0/examples/carousel/carousel.css @@ -0,0 +1,91 @@ +/* GLOBAL STYLES +-------------------------------------------------- */ +/* Padding below the footer and lighter body text */ + +body { + padding-top: 3rem; + padding-bottom: 3rem; + color: #5a5a5a; +} + + +/* CUSTOMIZE THE CAROUSEL +-------------------------------------------------- */ + +/* Carousel base class */ +.carousel { + margin-bottom: 4rem; +} +/* Since positioning the image, we need to help out the caption */ +.carousel-caption { + z-index: 10; + bottom: 3rem; +} + +/* Declare heights because of positioning of img element */ +.carousel-item { + height: 32rem; + background-color: #777; +} +.carousel-item > img { + position: absolute; + top: 0; + left: 0; + min-width: 100%; + height: 32rem; +} + + +/* MARKETING CONTENT +-------------------------------------------------- */ + +/* Center align the text within the three columns below the carousel */ +.marketing .col-lg-4 { + margin-bottom: 1.5rem; + text-align: center; +} +.marketing h2 { + font-weight: normal; +} +.marketing .col-lg-4 p { + margin-right: .75rem; + margin-left: .75rem; +} + + +/* Featurettes +------------------------- */ + +.featurette-divider { + margin: 5rem 0; /* Space out the Bootstrap
more */ +} + +/* Thin out the marketing headings */ +.featurette-heading { + font-weight: 300; + line-height: 1; + letter-spacing: -.05rem; +} + + +/* RESPONSIVE CSS +-------------------------------------------------- */ + +@media (min-width: 40em) { + /* Bump up size of carousel content */ + .carousel-caption p { + margin-bottom: 1.25rem; + font-size: 1.25rem; + line-height: 1.4; + } + + .featurette-heading { + font-size: 50px; + } +} + +@media (min-width: 62em) { + .featurette-heading { + margin-top: 7rem; + } +} diff --git a/docs/4.0/examples/carousel/index.html b/docs/4.0/examples/carousel/index.html new file mode 100755 index 00000000..8756b3fa --- /dev/null +++ b/docs/4.0/examples/carousel/index.html @@ -0,0 +1,186 @@ + + + + + + + + + + Carousel Template for Bootstrap + + + + + + + + + + + + + + + + + +
+ + +
+
+ Generic placeholder image +

Heading

+

Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.

+

View details »

+
+
+ Generic placeholder image +

Heading

+

Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh.

+

View details »

+
+
+ Generic placeholder image +

Heading

+

Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

+

View details »

+
+
+ + + + +
+ +
+
+

First featurette heading. It'll blow your mind.

+

Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.

+
+
+ Generic placeholder image +
+
+ +
+ +
+
+

Oh yeah, it's that good. See for yourself.

+

Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.

+
+
+ Generic placeholder image +
+
+ +
+ +
+
+

And lastly, this one. Checkmate.

+

Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.

+
+
+ Generic placeholder image +
+
+ +
+ + + + + + + +
+ + + + + + + + + + + + + + diff --git a/docs/4.0/examples/cover/cover.css b/docs/4.0/examples/cover/cover.css new file mode 100755 index 00000000..8a89cde5 --- /dev/null +++ b/docs/4.0/examples/cover/cover.css @@ -0,0 +1,160 @@ +/* + * Globals + */ + +/* Links */ +a, +a:focus, +a:hover { + color: #fff; +} + +/* Custom default button */ +.btn-secondary, +.btn-secondary:hover, +.btn-secondary:focus { + color: #333; + text-shadow: none; /* Prevent inheritance from `body` */ + background-color: #fff; + border: .05rem solid #fff; +} + + +/* + * Base structure + */ + +html, +body { + height: 100%; + background-color: #333; +} +body { + color: #fff; + text-align: center; + text-shadow: 0 .05rem .1rem rgba(0,0,0,.5); +} + +/* Extra markup and styles for table-esque vertical and horizontal centering */ +.site-wrapper { + display: table; + width: 100%; + height: 100%; /* For at least Firefox */ + min-height: 100%; + -webkit-box-shadow: inset 0 0 5rem rgba(0,0,0,.5); + box-shadow: inset 0 0 5rem rgba(0,0,0,.5); +} +.site-wrapper-inner { + display: table-cell; + vertical-align: top; +} +.cover-container { + margin-right: auto; + margin-left: auto; +} + +/* Padding for spacing */ +.inner { + padding: 2rem; +} + + +/* + * Header + */ + +.masthead { + margin-bottom: 2rem; +} + +.masthead-brand { + margin-bottom: 0; +} + +.nav-masthead .nav-link { + padding: .25rem 0; + font-weight: bold; + color: rgba(255,255,255,.5); + background-color: transparent; + border-bottom: .25rem solid transparent; +} + +.nav-masthead .nav-link:hover, +.nav-masthead .nav-link:focus { + border-bottom-color: rgba(255,255,255,.25); +} + +.nav-masthead .nav-link + .nav-link { + margin-left: 1rem; +} + +.nav-masthead .active { + color: #fff; + border-bottom-color: #fff; +} + +@media (min-width: 48em) { + .masthead-brand { + float: left; + } + .nav-masthead { + float: right; + } +} + + +/* + * Cover + */ + +.cover { + padding: 0 1.5rem; +} +.cover .btn-lg { + padding: .75rem 1.25rem; + font-weight: bold; +} + + +/* + * Footer + */ + +.mastfoot { + color: rgba(255,255,255,.5); +} + + +/* + * Affix and center + */ + +@media (min-width: 40em) { + /* Pull out the header and footer */ + .masthead { + position: fixed; + top: 0; + } + .mastfoot { + position: fixed; + bottom: 0; + } + /* Start the vertical centering */ + .site-wrapper-inner { + vertical-align: middle; + } + /* Handle the widths */ + .masthead, + .mastfoot, + .cover-container { + width: 100%; /* Must be percentage or pixels for horizontal alignment */ + } +} + +@media (min-width: 62em) { + .masthead, + .mastfoot, + .cover-container { + width: 42rem; + } +} diff --git a/docs/4.0/examples/cover/index.html b/docs/4.0/examples/cover/index.html new file mode 100755 index 00000000..078b0998 --- /dev/null +++ b/docs/4.0/examples/cover/index.html @@ -0,0 +1,68 @@ + + + + + + + + + + Cover Template for Bootstrap + + + + + + + + + + +
+ +
+ +
+ +
+
+

Cover

+ +
+
+ +
+

Cover your page.

+

Cover is a one-page template for building simple and beautiful home pages. Download, edit the text, and add your own fullscreen background photo to make it your own.

+

+ Learn more +

+
+ +
+
+

Cover template for Bootstrap, by @mdo.

+
+
+ +
+ +
+ +
+ + + + + + + + + + + diff --git a/docs/4.0/examples/dashboard/dashboard.css b/docs/4.0/examples/dashboard/dashboard.css new file mode 100755 index 00000000..b1248cd6 --- /dev/null +++ b/docs/4.0/examples/dashboard/dashboard.css @@ -0,0 +1,70 @@ +/* + * Base structure + */ + +/* Move down content because we have a fixed navbar that is 3.5rem tall */ +body { + padding-top: 3.5rem; +} + +/* + * Typography + */ + +h1 { + margin-bottom: 20px; + padding-bottom: 9px; + border-bottom: 1px solid #eee; +} + +/* + * Sidebar + */ + +.sidebar { + position: fixed; + top: 51px; + bottom: 0; + left: 0; + z-index: 1000; + padding: 20px; + overflow-x: hidden; + overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ + border-right: 1px solid #eee; +} + +/* Sidebar navigation */ +.sidebar { + padding-left: 0; + padding-right: 0; +} + +.sidebar .nav { + margin-bottom: 20px; +} + +.sidebar .nav-item { + width: 100%; +} + +.sidebar .nav-item + .nav-item { + margin-left: 0; +} + +.sidebar .nav-link { + border-radius: 0; +} + +/* + * Dashboard + */ + + /* Placeholders */ +.placeholders { + padding-bottom: 3rem; +} + +.placeholder img { + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} diff --git a/docs/4.0/examples/dashboard/index.html b/docs/4.0/examples/dashboard/index.html new file mode 100755 index 00000000..ab98e3a8 --- /dev/null +++ b/docs/4.0/examples/dashboard/index.html @@ -0,0 +1,262 @@ + + + + + + + + + + Dashboard Template for Bootstrap + + + + + + + + + + + +
+
+ + +
+

Dashboard

+ +
+
+ Generic placeholder thumbnail +

Label

+
Something else
+
+
+ Generic placeholder thumbnail +

Label

+ Something else +
+
+ Generic placeholder thumbnail +

Label

+ Something else +
+
+ Generic placeholder thumbnail +

Label

+ Something else +
+
+ +

Section title

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#HeaderHeaderHeaderHeader
1,001Loremipsumdolorsit
1,002ametconsecteturadipiscingelit
1,003IntegernecodioPraesent
1,003liberoSedcursusante
1,004dapibusdiamSednisi
1,005Nullaquissemat
1,006nibhelementumimperdietDuis
1,007sagittisipsumPraesentmauris
1,008Fuscenectellussed
1,009auguesemperportaMauris
1,010massaVestibulumlaciniaarcu
1,011egetnullaClassaptent
1,012tacitisociosquadlitora
1,013torquentperconubianostra
1,014perinceptoshimenaeosCurabitur
1,015sodalesligulainlibero
+
+
+
+
+ + + + + + + + + + + diff --git a/docs/4.0/examples/grid/grid.css b/docs/4.0/examples/grid/grid.css new file mode 100755 index 00000000..5f7e1af6 --- /dev/null +++ b/docs/4.0/examples/grid/grid.css @@ -0,0 +1,27 @@ +body { + padding-top: 2rem; + padding-bottom: 2rem; +} + +h3 { + margin-top: 2rem; +} + +.row { + margin-bottom: 1rem; +} +.row .row { + margin-top: 1rem; + margin-bottom: 0; +} +[class*="col-"] { + padding-top: 1rem; + padding-bottom: 1rem; + background-color: rgba(86,61,124,.15); + border: 1px solid rgba(86,61,124,.2); +} + +hr { + margin-top: 2rem; + margin-bottom: 2rem; +} diff --git a/docs/4.0/examples/grid/index.html b/docs/4.0/examples/grid/index.html new file mode 100755 index 00000000..5424d15c --- /dev/null +++ b/docs/4.0/examples/grid/index.html @@ -0,0 +1,141 @@ + + + + + + + + + + Grid Template for Bootstrap + + + + + + + + + +
+ +

Bootstrap grid examples

+

Basic grid layouts to get you familiar with building within the Bootstrap grid system.

+ +

Five grid tiers

+

There are five tiers to the Bootstrap grid system, one for each range of devices we support. Each tier starts at a minimum viewport size and automatically applies to the larger devices unless overridden.

+ +
+
.col-4
+
.col-4
+
.col-4
+
+ +
+
.col-sm-4
+
.col-sm-4
+
.col-sm-4
+
+ +
+
.col-md-4
+
.col-md-4
+
.col-md-4
+
+ +
+
.col-lg-4
+
.col-lg-4
+
.col-lg-4
+
+ +
+
.col-xl-4
+
.col-xl-4
+
.col-xl-4
+
+ +

Three equal columns

+

Get three equal-width columns starting at desktops and scaling to large desktops. On mobile devices, tablets and below, the columns will automatically stack.

+
+
.col-md-4
+
.col-md-4
+
.col-md-4
+
+ +

Three unequal columns

+

Get three columns starting at desktops and scaling to large desktops of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.

+
+
.col-md-3
+
.col-md-6
+
.col-md-3
+
+ +

Two columns

+

Get two columns starting at desktops and scaling to large desktops.

+
+
.col-md-8
+
.col-md-4
+
+ +

Full width, single column

+

No grid classes are necessary for full-width elements.

+ +
+ +

Two columns with two nested columns

+

Per the documentation, nesting is easy—just put a row of columns within an existing column. This gives you two columns starting at desktops and scaling to large desktops, with another two (equal widths) within the larger column.

+

At mobile device sizes, tablets and down, these columns and their nested columns will stack.

+
+
+ .col-md-8 +
+
.col-md-6
+
.col-md-6
+
+
+
.col-md-4
+
+ +
+ +

Mixed: mobile and desktop

+

The Bootstrap v4 grid system has five tiers of classes: xs (extra small), sm (small), md (medium), lg (large), and xl (extra large). You can use nearly any combination of these classes to create more dynamic and flexible layouts.

+

Each tier of classes scales up, meaning if you plan on setting the same widths for xs and sm, you only need to specify xs.

+
+
.col-12 .col-md-8
+
.col-6 .col-md-4
+
+
+
.col-6 .col-md-4
+
.col-6 .col-md-4
+
.col-6 .col-md-4
+
+
+
.col-6
+
.col-6
+
+ +
+ +

Mixed: mobile, tablet, and desktop

+

+
+
.col-12 .col-sm-6 .col-lg-8
+
.col-6 .col-lg-4
+
+
+
.col-6 .col-sm-4
+
.col-6 .col-sm-4
+
.col-6 .col-sm-4
+
+ +
+ + + + + + + diff --git a/docs/4.0/examples/index.html b/docs/4.0/examples/index.html new file mode 100644 index 00000000..e365cd7f --- /dev/null +++ b/docs/4.0/examples/index.html @@ -0,0 +1,353 @@ + + + + + + + + + Examples · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + + +
+
+

Examples

+

Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts.

+ + +

Download the Bootstrap source code to snag these examples.

+ +

Framework

+ +

Examples that focus on implementing uses of built-in components provided by Bootstrap.

+ +
+
+ + +

Starter template

+
+

Nothing but the basics: compiled CSS and JavaScript.

+
+
+ + +

Grids

+
+

Multiple examples of grid layouts with all four tiers, nesting, and more.

+
+
+ +
+ + +

Jumbotron

+
+

Build around the jumbotron with a navbar and some basic grid columns.

+
+
+ + +

Narrow jumbotron

+
+

Build a more custom page by narrowing the default container and jumbotron.

+
+
+ + + +

Taking the default navbar component and showing how it can be moved, placed, and extended.

+ +
+
+ + +

Navbar

+
+

Super basic template that includes the navbar along with some additional content.

+
+
+ + +

Static top navbar

+
+

Super basic template with a static top navbar along with some additional content.

+
+
+ +
+ + +

Fixed navbar

+
+

Super basic template with a fixed top navbar along with some additional content.

+
+
+ +

Custom components

+ +

Brand new components and templates to help folks quickly get started with Bootstrap and demonstrate best practices for adding onto the framework.

+ +
+
+ + +

Album

+
+

Simple one-page template for photo galleries, portfolios, and more.

+
+
+ + +

Cover

+
+

A one-page template for building simple and beautiful home pages.

+
+
+ +
+ + +

Carousel

+
+

Customize the navbar and carousel, then add some new components.

+
+
+ + +

Blog

+
+

Simple two-column blog layout with custom navigation, header, and type.

+
+
+ +
+ + +

Dashboard

+
+

Basic admin dashboard shell with fixed sidebar and navbar.

+
+
+ + +

Sign-in page

+
+

Custom form layout and design for a simple sign in form.

+
+
+ +
+ + +

Justified nav

+
+

Create a custom navbar with justified links. Heads up! Not too Safari friendly.

+
+
+ + +

Sticky footer

+
+

Attach a footer to the bottom of the viewport when the content is shorter than it.

+
+
+ +
+ + +

Sticky footer w/ navbar

+
+

Attach a footer to the bottom of the viewport with a fixed top navbar.

+
+
+ +

Experiments

+ +

Examples that focus on future-friendly features or techniques.

+ +
+
+ + +

Offcanvas

+
+

Build a toggleable off-canvas navigation menu for use with Bootstrap.

+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/examples/jumbotron/index.html b/docs/4.0/examples/jumbotron/index.html new file mode 100755 index 00000000..67931bba --- /dev/null +++ b/docs/4.0/examples/jumbotron/index.html @@ -0,0 +1,101 @@ + + + + + + + + + + Jumbotron Template for Bootstrap + + + + + + + + + + + + + +
+
+

Hello, world!

+

This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.

+

Learn more »

+
+
+ +
+ +
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

+

View details »

+
+
+ +
+ +
+

© Company 2017

+
+
+ + + + + + + + + + + + diff --git a/docs/4.0/examples/jumbotron/jumbotron.css b/docs/4.0/examples/jumbotron/jumbotron.css new file mode 100755 index 00000000..d751264e --- /dev/null +++ b/docs/4.0/examples/jumbotron/jumbotron.css @@ -0,0 +1,4 @@ +/* Move down content because we have a fixed navbar that is 3.5rem tall */ +body { + padding-top: 3.5rem; +} diff --git a/docs/4.0/examples/justified-nav/index.html b/docs/4.0/examples/justified-nav/index.html new file mode 100755 index 00000000..5c618f36 --- /dev/null +++ b/docs/4.0/examples/justified-nav/index.html @@ -0,0 +1,104 @@ + + + + + + + + + + Justified Nav Template for Bootstrap + + + + + + + + + + +
+ +
+

Project name

+ + +
+ + +
+

Marketing stuff!

+

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet.

+

Get started today

+
+ + +
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.

+

View details »

+
+
+ + +
+

© Company 2017

+
+ +
+ + + + + + + + + + + + diff --git a/docs/4.0/examples/justified-nav/justified-nav.css b/docs/4.0/examples/justified-nav/justified-nav.css new file mode 100755 index 00000000..2f6de026 --- /dev/null +++ b/docs/4.0/examples/justified-nav/justified-nav.css @@ -0,0 +1,55 @@ +body { + padding-top: 20px; +} + +.footer { + padding-top: 40px; + padding-bottom: 40px; + margin-top: 40px; + border-top: 1px solid #eee; +} + +/* Main marketing message and sign up button */ +.jumbotron { + text-align: center; + background-color: transparent; +} +.jumbotron .btn { + padding: 14px 24px; + font-size: 21px; +} + +.navbar { + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7),to(#eee)); + background-image: -webkit-linear-gradient(top, #f7f7f7 0%,#eee 100%); + background-image: -o-linear-gradient(top, #f7f7f7 0%,#eee 100%); + background-image: linear-gradient(to bottom, #f7f7f7 0%,#eee 100%); + border: 1px solid #e5e5e5; +} + +@media (min-width: 768px) { + .navbar-nav { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + } + + .navbar-nav .nav-item { + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + } +} + +/* Responsive: Portrait tablets and up */ +@media screen and (min-width: 768px) { + /* Remove the padding we set earlier */ + .masthead, + .marketing, + .footer { + padding-right: 0; + padding-left: 0; + } +} diff --git a/docs/4.0/examples/narrow-jumbotron/index.html b/docs/4.0/examples/narrow-jumbotron/index.html new file mode 100755 index 00000000..f2d3c19d --- /dev/null +++ b/docs/4.0/examples/narrow-jumbotron/index.html @@ -0,0 +1,81 @@ + + + + + + + + + + Narrow Jumbotron Template for Bootstrap + + + + + + + + + + +
+
+ +

Project name

+
+ +
+

Jumbotron heading

+

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

+

Sign up today

+
+ +
+
+

Subheading

+

Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.

+ +

Subheading

+

Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.

+ +

Subheading

+

Maecenas sed diam eget risus varius blandit sit amet non magna.

+
+ +
+

Subheading

+

Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum.

+ +

Subheading

+

Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum.

+ +

Subheading

+

Maecenas sed diam eget risus varius blandit sit amet non magna.

+
+
+ +
+

© Company 2017

+
+ +
+ + + + + + + diff --git a/docs/4.0/examples/narrow-jumbotron/narrow-jumbotron.css b/docs/4.0/examples/narrow-jumbotron/narrow-jumbotron.css new file mode 100755 index 00000000..28cf7738 --- /dev/null +++ b/docs/4.0/examples/narrow-jumbotron/narrow-jumbotron.css @@ -0,0 +1,79 @@ +/* Space out content a bit */ +body { + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} + +/* Everything but the jumbotron gets side spacing for mobile first views */ +.header, +.marketing, +.footer { + padding-right: 1rem; + padding-left: 1rem; +} + +/* Custom page header */ +.header { + padding-bottom: 1rem; + border-bottom: .05rem solid #e5e5e5; +} +/* Make the masthead heading the same height as the navigation */ +.header h3 { + margin-top: 0; + margin-bottom: 0; + line-height: 3rem; +} + +/* Custom page footer */ +.footer { + padding-top: 1.5rem; + color: #777; + border-top: .05rem solid #e5e5e5; +} + +/* Customize container */ +@media (min-width: 48em) { + .container { + max-width: 46rem; + } +} +.container-narrow > hr { + margin: 2rem 0; +} + +/* Main marketing message and sign up button */ +.jumbotron { + text-align: center; + border-bottom: .05rem solid #e5e5e5; +} +.jumbotron .btn { + padding: .75rem 1.5rem; + font-size: 1.5rem; +} + +/* Supporting marketing content */ +.marketing { + margin: 3rem 0; +} +.marketing p + h4 { + margin-top: 1.5rem; +} + +/* Responsive: Portrait tablets and up */ +@media screen and (min-width: 48em) { + /* Remove the padding we set earlier */ + .header, + .marketing, + .footer { + padding-right: 0; + padding-left: 0; + } + /* Space out the masthead */ + .header { + margin-bottom: 2rem; + } + /* Remove the bottom border on the jumbotron for visual effect */ + .jumbotron { + border-bottom: 0; + } +} diff --git a/docs/4.0/examples/navbar-top-fixed/index.html b/docs/4.0/examples/navbar-top-fixed/index.html new file mode 100755 index 00000000..dd39e036 --- /dev/null +++ b/docs/4.0/examples/navbar-top-fixed/index.html @@ -0,0 +1,64 @@ + + + + + + + + + + Fixed top navbar example for Bootstrap + + + + + + + + + + + + +
+
+

Navbar example

+

This example is a quick exercise to illustrate how fixed to top navbar works. As you scroll, it will remain fixed to the top of your browser's viewport.

+ View navbar docs » +
+
+ + + + + + + + + + + + diff --git a/docs/4.0/examples/navbar-top-fixed/navbar-top-fixed.css b/docs/4.0/examples/navbar-top-fixed/navbar-top-fixed.css new file mode 100755 index 00000000..c77c0c14 --- /dev/null +++ b/docs/4.0/examples/navbar-top-fixed/navbar-top-fixed.css @@ -0,0 +1,5 @@ +/* Show it is fixed to the top */ +body { + min-height: 75rem; + padding-top: 4.5rem; +} diff --git a/docs/4.0/examples/navbar-top/index.html b/docs/4.0/examples/navbar-top/index.html new file mode 100755 index 00000000..a385bb4f --- /dev/null +++ b/docs/4.0/examples/navbar-top/index.html @@ -0,0 +1,64 @@ + + + + + + + + + + Top navbar example for Bootstrap + + + + + + + + + + + + +
+
+

Navbar example

+

This example is a quick exercise to illustrate how the top-aligned navbar works. As you scroll, this navbar remains in its original position and moves with the rest of the page.

+ View navbar docs » +
+
+ + + + + + + + + + + + diff --git a/docs/4.0/examples/navbar-top/navbar-top.css b/docs/4.0/examples/navbar-top/navbar-top.css new file mode 100755 index 00000000..25bbdde0 --- /dev/null +++ b/docs/4.0/examples/navbar-top/navbar-top.css @@ -0,0 +1,4 @@ +/* Show it's not fixed to the top */ +body { + min-height: 75rem; +} diff --git a/docs/4.0/examples/navbars/index.html b/docs/4.0/examples/navbars/index.html new file mode 100755 index 00000000..0371687c --- /dev/null +++ b/docs/4.0/examples/navbars/index.html @@ -0,0 +1,348 @@ + + + + + + + + + + Navbar Template for Bootstrap + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+

Navbar examples

+

This example is a quick exercise to illustrate how the navbar and its contents work. Some navbars extend the width of the viewport, others are confined within a .container. For positioning of navbars, checkout the top and fixed top examples.

+

At the smallest breakpoint, the collapse plugin is used to hide the links and show a menu button to toggle the collapsed content.

+

+ View navbar docs » +

+
+
+
+ + + + + + + + + + + + diff --git a/docs/4.0/examples/navbars/navbar.css b/docs/4.0/examples/navbars/navbar.css new file mode 100755 index 00000000..04f8c6b7 --- /dev/null +++ b/docs/4.0/examples/navbars/navbar.css @@ -0,0 +1,8 @@ +body { + /*padding-top: 20px;*/ + padding-bottom: 20px; +} + +.navbar { + margin-bottom: 20px; +} diff --git a/docs/4.0/examples/offcanvas/index.html b/docs/4.0/examples/offcanvas/index.html new file mode 100755 index 00000000..6b2cda18 --- /dev/null +++ b/docs/4.0/examples/offcanvas/index.html @@ -0,0 +1,136 @@ + + + + + + + + + + Off Canvas Template for Bootstrap + + + + + + + + + + + + +
+ +
+ +
+

+ +

+
+

Hello, world!

+

This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

+
+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+
+ + +
+ +
+ +
+

© Company 2017

+
+ +
+ + + + + + + + + + + + + diff --git a/docs/4.0/examples/offcanvas/offcanvas.css b/docs/4.0/examples/offcanvas/offcanvas.css new file mode 100755 index 00000000..6047cb30 --- /dev/null +++ b/docs/4.0/examples/offcanvas/offcanvas.css @@ -0,0 +1,69 @@ +/* + * Style tweaks + * -------------------------------------------------- + */ +html, +body { + overflow-x: hidden; /* Prevent scroll on narrow devices */ +} +body { + padding-top: 70px; +} +footer { + padding: 30px 0; +} + +/* + * Off Canvas + * -------------------------------------------------- + */ +@media screen and (max-width: 767px) { + .row-offcanvas { + position: relative; + -webkit-transition: all .25s ease-out; + -o-transition: all .25s ease-out; + transition: all .25s ease-out; + } + + .row-offcanvas-right { + right: 0; + } + + .row-offcanvas-left { + left: 0; + } + + .row-offcanvas-right + .sidebar-offcanvas { + right: -100%; /* 12 columns */ + } + + .row-offcanvas-right.active + .sidebar-offcanvas { + right: -50%; /* 6 columns */ + } + + .row-offcanvas-left + .sidebar-offcanvas { + left: -100%; /* 12 columns */ + } + + .row-offcanvas-left.active + .sidebar-offcanvas { + left: -50%; /* 6 columns */ + } + + .row-offcanvas-right.active { + right: 50%; /* 6 columns */ + } + + .row-offcanvas-left.active { + left: 50%; /* 6 columns */ + } + + .sidebar-offcanvas { + position: absolute; + top: 0; + width: 50%; /* 6 columns */ + } +} diff --git a/docs/4.0/examples/offcanvas/offcanvas.js b/docs/4.0/examples/offcanvas/offcanvas.js new file mode 100755 index 00000000..d14cd68b --- /dev/null +++ b/docs/4.0/examples/offcanvas/offcanvas.js @@ -0,0 +1,5 @@ +$(document).ready(function () { + $('[data-toggle="offcanvas"]').click(function () { + $('.row-offcanvas').toggleClass('active') + }); +}); diff --git a/docs/4.0/examples/screenshots/album.jpg b/docs/4.0/examples/screenshots/album.jpg new file mode 100755 index 00000000..127d9a97 Binary files /dev/null and b/docs/4.0/examples/screenshots/album.jpg differ diff --git a/docs/4.0/examples/screenshots/blog.jpg b/docs/4.0/examples/screenshots/blog.jpg new file mode 100755 index 00000000..54dd4eee Binary files /dev/null and b/docs/4.0/examples/screenshots/blog.jpg differ diff --git a/docs/4.0/examples/screenshots/carousel.jpg b/docs/4.0/examples/screenshots/carousel.jpg new file mode 100755 index 00000000..50086368 Binary files /dev/null and b/docs/4.0/examples/screenshots/carousel.jpg differ diff --git a/docs/4.0/examples/screenshots/cover.jpg b/docs/4.0/examples/screenshots/cover.jpg new file mode 100755 index 00000000..0b22c000 Binary files /dev/null and b/docs/4.0/examples/screenshots/cover.jpg differ diff --git a/docs/4.0/examples/screenshots/dashboard.jpg b/docs/4.0/examples/screenshots/dashboard.jpg new file mode 100755 index 00000000..6595c049 Binary files /dev/null and b/docs/4.0/examples/screenshots/dashboard.jpg differ diff --git a/docs/4.0/examples/screenshots/equal-height-columns.jpg b/docs/4.0/examples/screenshots/equal-height-columns.jpg new file mode 100755 index 00000000..63b043f4 Binary files /dev/null and b/docs/4.0/examples/screenshots/equal-height-columns.jpg differ diff --git a/docs/4.0/examples/screenshots/grid.jpg b/docs/4.0/examples/screenshots/grid.jpg new file mode 100755 index 00000000..ef624e86 Binary files /dev/null and b/docs/4.0/examples/screenshots/grid.jpg differ diff --git a/docs/4.0/examples/screenshots/jumbotron-narrow.jpg b/docs/4.0/examples/screenshots/jumbotron-narrow.jpg new file mode 100755 index 00000000..3af127c0 Binary files /dev/null and b/docs/4.0/examples/screenshots/jumbotron-narrow.jpg differ diff --git a/docs/4.0/examples/screenshots/jumbotron.jpg b/docs/4.0/examples/screenshots/jumbotron.jpg new file mode 100755 index 00000000..aaf7f30e Binary files /dev/null and b/docs/4.0/examples/screenshots/jumbotron.jpg differ diff --git a/docs/4.0/examples/screenshots/justified-nav.jpg b/docs/4.0/examples/screenshots/justified-nav.jpg new file mode 100755 index 00000000..098bf6fb Binary files /dev/null and b/docs/4.0/examples/screenshots/justified-nav.jpg differ diff --git a/docs/4.0/examples/screenshots/navbar-fixed.jpg b/docs/4.0/examples/screenshots/navbar-fixed.jpg new file mode 100755 index 00000000..419bb7e5 Binary files /dev/null and b/docs/4.0/examples/screenshots/navbar-fixed.jpg differ diff --git a/docs/4.0/examples/screenshots/navbar-static.jpg b/docs/4.0/examples/screenshots/navbar-static.jpg new file mode 100755 index 00000000..29f1643c Binary files /dev/null and b/docs/4.0/examples/screenshots/navbar-static.jpg differ diff --git a/docs/4.0/examples/screenshots/navbar.jpg b/docs/4.0/examples/screenshots/navbar.jpg new file mode 100755 index 00000000..b58877c0 Binary files /dev/null and b/docs/4.0/examples/screenshots/navbar.jpg differ diff --git a/docs/4.0/examples/screenshots/non-responsive.jpg b/docs/4.0/examples/screenshots/non-responsive.jpg new file mode 100755 index 00000000..4262d5dd Binary files /dev/null and b/docs/4.0/examples/screenshots/non-responsive.jpg differ diff --git a/docs/4.0/examples/screenshots/offcanvas.jpg b/docs/4.0/examples/screenshots/offcanvas.jpg new file mode 100755 index 00000000..5bb3ca1f Binary files /dev/null and b/docs/4.0/examples/screenshots/offcanvas.jpg differ diff --git a/docs/4.0/examples/screenshots/sign-in.jpg b/docs/4.0/examples/screenshots/sign-in.jpg new file mode 100755 index 00000000..e3309bdf Binary files /dev/null and b/docs/4.0/examples/screenshots/sign-in.jpg differ diff --git a/docs/4.0/examples/screenshots/starter-template.jpg b/docs/4.0/examples/screenshots/starter-template.jpg new file mode 100755 index 00000000..ba99c7e4 Binary files /dev/null and b/docs/4.0/examples/screenshots/starter-template.jpg differ diff --git a/docs/4.0/examples/screenshots/sticky-footer-navbar.jpg b/docs/4.0/examples/screenshots/sticky-footer-navbar.jpg new file mode 100755 index 00000000..05b7d8d2 Binary files /dev/null and b/docs/4.0/examples/screenshots/sticky-footer-navbar.jpg differ diff --git a/docs/4.0/examples/screenshots/sticky-footer.jpg b/docs/4.0/examples/screenshots/sticky-footer.jpg new file mode 100755 index 00000000..b0914f53 Binary files /dev/null and b/docs/4.0/examples/screenshots/sticky-footer.jpg differ diff --git a/docs/4.0/examples/screenshots/theme.jpg b/docs/4.0/examples/screenshots/theme.jpg new file mode 100755 index 00000000..2b966ff9 Binary files /dev/null and b/docs/4.0/examples/screenshots/theme.jpg differ diff --git a/docs/4.0/examples/signin/index.html b/docs/4.0/examples/signin/index.html new file mode 100755 index 00000000..78136981 --- /dev/null +++ b/docs/4.0/examples/signin/index.html @@ -0,0 +1,46 @@ + + + + + + + + + + Signin Template for Bootstrap + + + + + + + + + + +
+ + + +
+ + + + + + + + diff --git a/docs/4.0/examples/signin/signin.css b/docs/4.0/examples/signin/signin.css new file mode 100755 index 00000000..7c1fa419 --- /dev/null +++ b/docs/4.0/examples/signin/signin.css @@ -0,0 +1,39 @@ +body { + padding-top: 40px; + padding-bottom: 40px; + background-color: #eee; +} + +.form-signin { + max-width: 330px; + padding: 15px; + margin: 0 auto; +} +.form-signin .form-signin-heading, +.form-signin .checkbox { + margin-bottom: 10px; +} +.form-signin .checkbox { + font-weight: normal; +} +.form-signin .form-control { + position: relative; + height: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 10px; + font-size: 16px; +} +.form-signin .form-control:focus { + z-index: 2; +} +.form-signin input[type="email"] { + margin-bottom: -1px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.form-signin input[type="password"] { + margin-bottom: 10px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} diff --git a/docs/4.0/examples/starter-template/index.html b/docs/4.0/examples/starter-template/index.html new file mode 100755 index 00000000..db50b7f7 --- /dev/null +++ b/docs/4.0/examples/starter-template/index.html @@ -0,0 +1,74 @@ + + + + + + + + + + Starter Template for Bootstrap + + + + + + + + + + + + +
+ +
+

Bootstrap starter template

+

Use this document as a way to quickly start any new project.
All you get is this text and a mostly barebones HTML document.

+
+ +
+ + + + + + + + + + + + diff --git a/docs/4.0/examples/starter-template/starter-template.css b/docs/4.0/examples/starter-template/starter-template.css new file mode 100755 index 00000000..5f64cd29 --- /dev/null +++ b/docs/4.0/examples/starter-template/starter-template.css @@ -0,0 +1,7 @@ +body { + padding-top: 5rem; +} +.starter-template { + padding: 3rem 1.5rem; + text-align: center; +} diff --git a/docs/4.0/examples/sticky-footer-navbar/index.html b/docs/4.0/examples/sticky-footer-navbar/index.html new file mode 100755 index 00000000..950243b8 --- /dev/null +++ b/docs/4.0/examples/sticky-footer-navbar/index.html @@ -0,0 +1,72 @@ + + + + + + + + + + Sticky Footer Navbar Template for Bootstrap + + + + + + + + + + + + + + +
+
+

Sticky footer with fixed navbar

+
+

Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS. A fixed navbar has been added with padding-top: 60px; on the body > .container.

+

Back to the default sticky footer minus the navbar.

+
+ +
+
+ Place sticky footer content here. +
+
+ + + + + + + + + + + + diff --git a/docs/4.0/examples/sticky-footer-navbar/sticky-footer-navbar.css b/docs/4.0/examples/sticky-footer-navbar/sticky-footer-navbar.css new file mode 100755 index 00000000..07fd56a6 --- /dev/null +++ b/docs/4.0/examples/sticky-footer-navbar/sticky-footer-navbar.css @@ -0,0 +1,37 @@ +/* Sticky footer styles +-------------------------------------------------- */ +html { + position: relative; + min-height: 100%; +} +body { + /* Margin bottom by footer height */ + margin-bottom: 60px; +} +.footer { + position: absolute; + bottom: 0; + width: 100%; + /* Set the fixed height of the footer here */ + height: 60px; + line-height: 60px; /* Vertically center the text there */ + background-color: #f5f5f5; +} + + +/* Custom page CSS +-------------------------------------------------- */ +/* Not required for template or sticky footer method. */ + +body > .container { + padding: 60px 15px 0; +} + +.footer > .container { + padding-right: 15px; + padding-left: 15px; +} + +code { + font-size: 80%; +} diff --git a/docs/4.0/examples/sticky-footer/index.html b/docs/4.0/examples/sticky-footer/index.html new file mode 100755 index 00000000..69e3fdc7 --- /dev/null +++ b/docs/4.0/examples/sticky-footer/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + Sticky Footer Template for Bootstrap + + + + + + + + + + + +
+
+

Sticky footer

+
+

Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.

+

Use the sticky footer with a fixed navbar if need be, too.

+
+ +
+
+ Place sticky footer content here. +
+
+ + + + + + + + diff --git a/docs/4.0/examples/sticky-footer/sticky-footer.css b/docs/4.0/examples/sticky-footer/sticky-footer.css new file mode 100755 index 00000000..46578d1a --- /dev/null +++ b/docs/4.0/examples/sticky-footer/sticky-footer.css @@ -0,0 +1,30 @@ +/* Sticky footer styles +-------------------------------------------------- */ +html { + position: relative; + min-height: 100%; +} +body { + /* Margin bottom by footer height */ + margin-bottom: 60px; +} +.footer { + position: absolute; + bottom: 0; + width: 100%; + /* Set the fixed height of the footer here */ + height: 60px; + line-height: 60px; /* Vertically center the text there */ + background-color: #f5f5f5; +} + + +/* Custom page CSS +-------------------------------------------------- */ +/* Not required for template or sticky footer method. */ + +.container { + width: auto; + max-width: 680px; + padding: 0 15px; +} diff --git a/docs/4.0/examples/tooltip-viewport/index.html b/docs/4.0/examples/tooltip-viewport/index.html new file mode 100755 index 00000000..3b2840fe --- /dev/null +++ b/docs/4.0/examples/tooltip-viewport/index.html @@ -0,0 +1,48 @@ + + + + + + + + + + Tooltip Viewport Example for Bootstrap + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + diff --git a/docs/4.0/examples/tooltip-viewport/tooltip-viewport.css b/docs/4.0/examples/tooltip-viewport/tooltip-viewport.css new file mode 100755 index 00000000..26aa2e34 --- /dev/null +++ b/docs/4.0/examples/tooltip-viewport/tooltip-viewport.css @@ -0,0 +1,26 @@ +body { + height: 1200px; +} +.tooltip { + min-width: 250px; + max-width: 500px; +} +.tooltip .tooltip-inner { + min-width: 250px; + max-width: 500px; + min-height: 100px; + text-align: left; +} +.container-viewport { + position: absolute; + top: 100px; + right: 250px; + left: 250px; + height: 300px; + background-color: #eee; +} +.btn-bottom { + position: absolute; + bottom: 0; + left: 0; +} diff --git a/docs/4.0/examples/tooltip-viewport/tooltip-viewport.js b/docs/4.0/examples/tooltip-viewport/tooltip-viewport.js new file mode 100755 index 00000000..e87f4eec --- /dev/null +++ b/docs/4.0/examples/tooltip-viewport/tooltip-viewport.js @@ -0,0 +1,18 @@ +$(document).ready(function () { + $('.tooltip-right').tooltip({ + placement: 'right', + viewport: {selector: 'body', padding: 2} + }) + $('.tooltip-bottom').tooltip({ + placement: 'bottom', + viewport: {selector: 'body', padding: 2} + }) + $('.tooltip-viewport-right').tooltip({ + placement: 'right', + viewport: {selector: '.container-viewport', padding: 2} + }) + $('.tooltip-viewport-bottom').tooltip({ + placement: 'bottom', + viewport: {selector: '.container-viewport', padding: 2} + }) +}) diff --git a/docs/4.0/extend/approach/index.html b/docs/4.0/extend/approach/index.html new file mode 100644 index 00000000..21382630 --- /dev/null +++ b/docs/4.0/extend/approach/index.html @@ -0,0 +1,1242 @@ + + + + + + + + + Approach · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Approach

+

+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/extend/icons/index.html b/docs/4.0/extend/icons/index.html new file mode 100644 index 00000000..a01d9796 --- /dev/null +++ b/docs/4.0/extend/icons/index.html @@ -0,0 +1,1264 @@ + + + + + + + + + Icons · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Icons

+

Guidance and suggestions for using external icon libraries with Bootstrap.

+ + +

Bootstrap doesn’t include an icon library by default, but we have a handful of recommendations for you to choose from. While most icon sets include multiple file formats, we prefer SVG implementations for their improved accessibility and vector support.

+ +

Preferred

+

We’ve tested and used these icon sets ourselves.

+ + + +

More options

+

While we haven’t tried these out, they do look promising and provide multiple formats—including SVG.

+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/extend/index.html b/docs/4.0/extend/index.html new file mode 100644 index 00000000..51df1cd1 --- /dev/null +++ b/docs/4.0/extend/index.html @@ -0,0 +1,1242 @@ + + + + + + + + + Extend · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Extend

+

+ + +

todo: this entire page

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/accessibility/index.html b/docs/4.0/getting-started/accessibility/index.html new file mode 100644 index 00000000..ad602388 --- /dev/null +++ b/docs/4.0/getting-started/accessibility/index.html @@ -0,0 +1,1298 @@ + + + + + + + + + Accessibility · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Accessibility

+

A brief overview of Bootstrap's features and limitations for the creation of accessible content.

+ + +

Bootstrap provides an easy-to-use framework of ready-made styles, layout tools, and interactive components, allowing developers to create websites and applications that are visually appealing, functionally rich, and accessible out of the box.

+ +

Overview and Limitations

+ +

The overall accessibility of any project built with Bootstrap depends in large part on the author’s markup, additional styling, and scripting they’ve included. However, provided that these have been implemented correctly, it should be perfectly possible to create websites and applications with Bootstrap that fulfill WCAG 2.0 (A/AA/AAA), Section 508 and similar accessibility standards and requirements.

+ +

Structural markup

+ +

Bootstrap’s styling and layout can be applied to a wide range of markup structures. This documentation aims to provide developers with best practice examples to demonstrate the use of Bootstrap itself and illustrate appropriate semantic markup, including ways in which potential accessibility concerns can be addressed.

+ +

Interactive components

+ +

Bootstrap’s interactive components—such as modal dialogs, dropdown menus and custom tooltips—are designed to work for touch, mouse and keyboard users. Through the use of relevant WAI-ARIA roles and attributes, these components should also be understandable and operable using assistive technologies (such as screen readers).

+ +

Because Bootstrap’s components are purposely designed to be fairly generic, authors may need to include further ARIA roles and attributes, as well as JavaScript behavior, to more accurately convey the precise nature and functionality of their component. This is usually noted in the documentation.

+ +

Color contrast

+ +

Most colors that currently make up Bootstrap’s default palette—used throughout the framework for things such as button variations, alert variations, form validation indicators—lead to insufficient color contrast (below the recommended WCAG 2.0 color contrast ratio of 4.5:1) when used against a light background. Authors will need to manually modify/extend these default colors to ensure adequate color contrast ratios.

+ +

Visually hidden content

+ +

Content which should be visually hidden, but remain accessible to assistive technologies such as screen readers, can be styled using the .sr-only class. This can be useful in situations where additional visual information or cues (such as meaning denoted through the use of color) need to also be conveyed to non-visual users.

+ +
<p class="text-danger">
+  <span class="sr-only">Danger: </span>
+  This action is not reversible
+</p>
+ +

For visually hidden interactive controls, such as traditional “skip” links, .sr-only can be combined with the .sr-only-focusable class. This will ensure that the control becomes visible once focused (for sighted keyboard users).

+ +
<a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
+ +

Additional resources

+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/best-practices/index.html b/docs/4.0/getting-started/best-practices/index.html new file mode 100644 index 00000000..8ce8bd24 --- /dev/null +++ b/docs/4.0/getting-started/best-practices/index.html @@ -0,0 +1,1255 @@ + + + + + + + + + Best practices · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Best practices

+

Learn about some of the best practices we've gathered from years of working on and using Bootstrap.

+ + +

We’ve designed and developed Bootstrap to work in a number of environments. Here are some of the best practices we’ve gathered from years of working on and using it ourselves.

+ +
+

Heads up! This copy is a work in progress.

+
+ +

General outline

+
    +
  • Working with CSS
  • +
  • Working with Sass files
  • +
  • Building new CSS components
  • +
  • Working with flexbox
  • +
  • Ask in Slack
  • +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/browsers-devices/index.html b/docs/4.0/getting-started/browsers-devices/index.html new file mode 100644 index 00000000..5d8c8a76 --- /dev/null +++ b/docs/4.0/getting-started/browsers-devices/index.html @@ -0,0 +1,1432 @@ + + + + + + + + + Browsers and devices · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Browsers and devices

+

Learn about the browsers and devices, from modern to told, that are supported by Bootstrap, including known quirks and bugs for each.

+ + +

Supported browsers

+ +

Bootstrap supports the latest, stable releases of all major browsers and platforms. On Windows, we support Internet Explorer 10-11 / Microsoft Edge.

+ +

Alternative browsers which use the latest version of WebKit, Blink, or Gecko, whether directly or via the platform’s web view API, are not explicitly supported. However, Bootstrap should (in most cases) display and function correctly in these browsers as well. More specific support information is provided below.

+ +

Mobile devices

+ +

Generally speaking, Bootstrap supports the latest versions of each major platform’s default browsers. Note that proxy browsers (such as Opera Mini, Opera Mobile’s Turbo mode, UC Browser Mini, Amazon Silk) are not supported.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ChromeFirefoxSafariAndroid Browser & WebViewMicrosoft Edge
AndroidSupportedSupportedN/AAndroid v5.0+ supportedN/A
iOSSupportedSupportedSupportedN/AN/A
Windows 10 MobileN/AN/AN/AN/ASupported
+ +

Desktop browsers

+ +

Similarly, the latest versions of most desktop browsers are supported.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ChromeFirefoxInternet ExplorerMicrosoft EdgeOperaSafari
MacSupportedSupportedN/AN/ASupportedSupported
WindowsSupportedSupportedSupported, IE10+SupportedSupportedNot supported
+ +

For Firefox, in addition to the latest normal stable release, we also support the latest Extended Support Release (ESR) version of Firefox.

+ +

Unofficially, Bootstrap should look and behave well enough in Chromium and Chrome for Linux, Firefox for Linux, and Internet Explorer 9, though they are not officially supported.

+ +

For a list of some of the browser bugs that Bootstrap has to grapple with, see our Wall of browser bugs.

+ +

Internet Explorer

+ +

Internet Explorer 10+ is supported; IE9 and down is not. Please be aware that some CSS3 properties and HTML5 elements are not fully supported in IE10, or require prefixed properties for full functionality. Visit Can I use… for details on browser support of CSS3 and HTML5 features.

+ +

If you require IE8-9 support, use Bootstrap 3. It’s the most stable version of our code and is still supported by our team for critical bugfixes and documentation changes. However, no new features will be added to it.

+ +

Modals and dropdowns on mobile

+ +

Overflow and scrolling

+ +

Support for overflow: hidden; on the <body> element is quite limited in iOS and Android. To that end, when you scroll past the top or bottom of a modal in either of those devices’ browsers, the <body> content will begin to scroll. See Chrome bug #175502 (fixed in Chrome v40) and WebKit bug #153852.

+ +

iOS text fields and scrolling

+ +

As of iOS 9.2, while a modal is open, if the initial touch of a scroll gesture is within the boundary of a textual <input> or a <textarea>, the <body> content underneath the modal will be scrolled instead of the modal itself. See WebKit bug #153856.

+ + + +

The .dropdown-backdrop element isn’t used on iOS in the nav because of the complexity of z-indexing. Thus, to close dropdowns in navbars, you must directly click the dropdown element (or any other element which will fire a click event in iOS).

+ +

Browser zooming

+ +

Page zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.

+ +

Sticky :hover/:focus on mobile

+

Even though real hovering isn’t possible on most touchscreens, most mobile browsers emulate hovering support and make :hover “sticky”. In other words, :hover styles start applying after tapping an element and only stop applying after the user taps some other element. On mobile-first sites, this behavior is normally undesirable.

+ +

Bootstrap includes a workaround for this, although it is disabled by default. By setting $enable-hover-media-query to true when compiling from Sass, Bootstrap will use mq4-hover-shim to disable :hover styles in browsers that emulate hovering, thus preventing sticky :hover styles. There are some caveats to this workaround; see the shim’s documentation for details.

+ +

Printing

+ +

Even in some modern browsers, printing can be quirky.

+ +

As of Safari v8.0, use of the fixed-width .container class can cause Safari to use an unusually small font size when printing. See issue #14868 and WebKit bug #138192 for more details. One potential workaround is the following CSS:

+ +
@media print {
+  .container {
+    width: auto;
+  }
+}
+ +

Android stock browser

+ +

Out of the box, Android 4.1 (and even some newer releases apparently) ship with the Browser app as the default web browser of choice (as opposed to Chrome). Unfortunately, the Browser app has lots of bugs and inconsistencies with CSS in general.

+ +

Select menu

+ +

On <select> elements, the Android stock browser will not display the side controls if there is a border-radius and/or border applied. (See this StackOverflow question for details.) Use the snippet of code below to remove the offending CSS and render the <select> as an unstyled element on the Android stock browser. The user agent sniffing avoids interference with Chrome, Safari, and Mozilla browsers.

+ +
<script>
+$(function () {
+  var nua = navigator.userAgent
+  var isAndroid = (nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 && nua.indexOf('AppleWebKit') > -1 && nua.indexOf('Chrome') === -1)
+  if (isAndroid) {
+    $('select.form-control').removeClass('form-control').css('width', '100%')
+  }
+})
+</script>
+ +

Want to see an example? Check out this JS Bin demo.

+ +

Validators

+ +

In order to provide the best possible experience to old and buggy browsers, Bootstrap uses CSS browser hacks in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren’t yet fully standardized, but these are used purely for progressive enhancement.

+ +

These validation warnings don’t matter in practice since the non-hacky portion of our CSS does fully validate and the hacky portions don’t interfere with the proper functioning of the non-hacky portion, hence why we deliberately ignore these particular warnings.

+ +

Our HTML docs likewise have some trivial and inconsequential HTML validation warnings due to our inclusion of a workaround for a certain Firefox bug.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/build-tools/index.html b/docs/4.0/getting-started/build-tools/index.html new file mode 100644 index 00000000..890bec22 --- /dev/null +++ b/docs/4.0/getting-started/build-tools/index.html @@ -0,0 +1,1318 @@ + + + + + + + + + Build tools · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Build tools

+

Learn how to use Bootstrap's included npm scripts to build our documentation, compile source code, run tests, and more.

+ + +

Tooling setup

+ +

Bootstrap uses NPM scripts for its build system. Our package.json includes convenient methods for working with the framework, including compiling code, running tests, and more.

+ +

To use our build system and run our documentation locally, you’ll need a copy of Bootstrap’s source files and Node. Follow these steps and you should be ready to rock:

+ +
    +
  1. Download and install Node, which we use to manage our dependencies.
  2. +
  3. Navigate to the root /bootstrap directory and run npm install to install our local dependencies listed in package.json.
  4. +
  5. Install Ruby, install Bundler with gem install bundler, and finally run bundle install. This will install all Ruby dependencies, such as Jekyll and plugins. + +
  6. +
+ +

When completed, you’ll be able to run the various commands provided from the command line.

+ +

Using NPM scripts

+ +

Our package.json includes the following commands and tasks:

+ + + + + + + + + + + + + + + + + + + + + + +
TaskDescription
npm testRun npm test to run tests locally and compile the CSS and JavaScript into /dist. Uses Sass, Autoprefixer, and UglifyJS.
npm run distnpm run dist creates the /dist directory with compiled files. Uses Sass, Autoprefixer, and UglifyJS.
npm run docsBuilds and tests CSS, JavaScript, and other assets which are used when running the documentation locally via npm run docs-serve.
+ +

Autoprefixer

+ +

Bootstrap uses Autoprefixer (included in our build process) to automatically add vendor prefixes to some CSS properties at build time. Doing so saves us time and code by allowing us to write key parts of our CSS a single time while eliminating the need for vendor mixins like those found in v3.

+ +

We maintain the list of browsers supported through Autoprefixer in a separate file within our GitHub repository. See /build/postcss.config.js for details.

+ +

Local documentation

+ +

Running our documentation locally requires the use of Jekyll, a decently flexible static site generator that provides us: basic includes, Markdown-based files, templates, and more. Here’s how to get it started:

+ +
    +
  1. Run through the tooling setup above to install Jekyll (the site builder) and other Ruby dependencies with bundle install.
  2. +
  3. From the root /bootstrap directory, run npm run docs-serve in the command line.
  4. +
  5. Open http://localhost:9001 in your browser, and voilà.
  6. +
+ +

Learn more about using Jekyll by reading its documentation.

+ +

Troubleshooting

+ +

Should you encounter problems with installing dependencies, uninstall all previous dependency versions (global and local). Then, rerun npm install.

+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/contents/index.html b/docs/4.0/getting-started/contents/index.html new file mode 100644 index 00000000..d6d90f46 --- /dev/null +++ b/docs/4.0/getting-started/contents/index.html @@ -0,0 +1,1280 @@ + + + + + + + + + Contents · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Contents

+

Discover what's included in Bootstrap, including our precompiled and source code flavors. Remember, Bootstrap's JavaScript plugins require jQuery.

+ + +

Precompiled Bootstrap

+ +

Once downloaded, unzip the compressed folder and you’ll see something like this:

+ + + +
bootstrap/
+├── css/
+│   ├── bootstrap.css
+│   ├── bootstrap.css.map
+│   ├── bootstrap.min.css
+│   └── bootstrap.min.css.map
+└── js/
+    ├── bootstrap.js
+    └── bootstrap.min.js
+ +

This is the most basic form of Bootstrap: precompiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). CSS source maps (bootstrap.*.map) are available for use with certain browsers’ developer tools.

+ +

Bootstrap source code

+ +

The Bootstrap source code download includes the precompiled CSS and JavaScript assets, along with source Sass, JavaScript, and documentation. More specifically, it includes the following and more:

+ +
bootstrap/
+├── dist/
+│   ├── css/
+│   └── js/
+├── docs/
+│   └── examples/
+├── js/
+└── scss/
+ +

The scss/ and js/ are the source code for our CSS and JavaScript. The dist/ folder includes everything listed in the precompiled download section above. The docs/ folder includes the source code for our documentation, and examples/ of Bootstrap usage. Beyond that, any other included file provides support for packages, license information, and development.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/download/index.html b/docs/4.0/getting-started/download/index.html new file mode 100644 index 00000000..50bc2ac2 --- /dev/null +++ b/docs/4.0/getting-started/download/index.html @@ -0,0 +1,1348 @@ + + + + + + + + + Download · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Download

+

Download Bootstrap to get the compiled CSS and JavaScript, source code, or include it with your favorite package managers like npm, Bower, RubyGems, and more.

+ + +

Compiled CSS and JS

+ +

Download ready-to-use compiled code for Bootstrap v4.0.0-beta to easily drop into your project, which includes:

+ +
    +
  • Compiled and minified CSS bundles (default, grid-only, and Reboot-only)
  • +
  • Compiled and minified JavaScript plugins
  • +
+ +

This doesn’t include documentation, source files, or any optional JavaScript dependencies (jQuery and Popper.js).

+ +

Download

+ +

Source files

+ +

Compile Bootstrap with your own asset pipeline by downloading our source Sass, JavaScript, and documentation files. This option requires some additional tooling:

+ +
    +
  • Sass compiler (Libsass or Ruby Sass is supported) for compiling your CSS.
  • +
  • Autoprefixer for CSS vendor prefixing
  • +
+ +

Should you require build tools, they are included for developing Bootstrap and it’s docs, but they’re likely unsuitable for your own purposes.

+ +

Download source

+ +

Bootstrap CDN

+ +

Skip the download with the Bootstrap CDN to deliver cached version of Bootstrap’s compiled CSS and JS to your project.

+ +
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap-material-design.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap-material-design.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
+ +

If you’re using our compiled JavaScript, don’t forget to include CDN versions of jQuery and Popper.js before it.

+ +
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
+ +

Package managers

+ +

Pull in Bootstrap’s source files into nearly any project with some of the most popular package managers. No matter the package manager, Bootstrap will require a Sass compiler and Autoprefixer for a setup that matches our official compiled versions.

+ +

npm

+ +

Install Bootstrap in your Node powered apps with the npm package:

+ +
npm install bootstrap-material-design@4.0.0-beta
+ +

require('bootstrap') will load all of Bootstrap’s jQuery plugins onto the jQuery object. The bootstrap module itself does not export anything. You can manually load Bootstrap’s jQuery plugins individually by loading the /js/*.js files under the package’s top-level directory.

+ +

Bootstrap’s package.json contains some additional metadata under the following keys:

+ +
    +
  • sass - path to Bootstrap’s main Sass source file
  • +
  • style - path to Bootstrap’s non-minified CSS that’s been precompiled using the default settings (no customization)
  • +
+ +

RubyGems

+ +

Install Bootstrap in your Ruby apps using Bundler (recommended) and RubyGems by adding the following line to your Gemfile:

+ +
gem 'bootstrap-material-design', '~> 4.0.0.beta'
+ +

Alternatively, if you’re not using Bundler, you can install the gem by running this command:

+ +
gem install bootstrap-material-design -v 4.0.0.beta
+ +

See the gem’s README for further details.

+ +

Composer

+ +

You can also install and manage Bootstrap’s Sass and JavaScript using Composer:

+ +
composer require twbs/bootstrap:4.0.0-beta
+ +

Bower

+ +

Install and manage Bootstrap’s Sass and JavaScript using Bower.

+ +
bower install bootstrap-material-design#v4.0.0-beta
+ +

NuGet

+ +

If you develop in .NET, you can also install and manage Bootstrap’s CSS or Sass and JavaScript using NuGet:

+ +
Install-Package bootstrap-material-design -Pre
+ +
Install-Package bootstrap-material-design.sass -Pre
+ +

The -Pre is required until Bootstrap v4 has a stable release.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/index.html b/docs/4.0/getting-started/index.html new file mode 100644 index 00000000..f10bd822 --- /dev/null +++ b/docs/4.0/getting-started/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/4.0/getting-started/introduction/index.html b/docs/4.0/getting-started/introduction/index.html new file mode 100644 index 00000000..d877d190 --- /dev/null +++ b/docs/4.0/getting-started/introduction/index.html @@ -0,0 +1,1353 @@ + + + + + + + + + Introduction · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Introduction

+

Get started with Bootstrap, the world's most popular framework for building responsive, mobile-first sites, with the Bootstrap CDN and a template starter page.

+ + +

Quick start

+ +

Looking to quickly add Bootstrap to your project? Use the Bootstrap CDN, provided for free by the folks at MaxCDN. Using a package manager or need to download the source files? Head to the downloads page.

+ +

Copy-paste the stylesheet <link> into your <head> before all other stylesheets to load our CSS.

+ +
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap-material-design.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
+ +

Add our optional JavaScript plugins, jQuery, and Popper.js) near the end of your pages, right before the closing </body> tag. Be sure to place jQuery and Popper.js first, as our JavaScript plugins depend on them. While we use jQuery’s slim build in our docs, the full version is also supported.

+ +
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap-material-design.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
+ +

And that’s it—you’re on your way to a fully Bootstrapped site. If you’re at all unsure about the general page structure, keep reading for an example page template.

+ +

Starter template

+ +

Be sure to have your pages set up with the latest design and development standards. That means using an HTML5 doctype and including a viewport meta tag for proper responsive behaviors. Put it all together and your pages should look like this:

+ +
<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <!-- Required meta tags -->
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+
+    <!-- Bootstrap CSS -->
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap-material-design.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
+  </head>
+  <body>
+    <h1>Hello, world!</h1>
+
+    <!-- Optional JavaScript -->
+    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
+    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap-material-design.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
+  </body>
+</html>
+ +

That’s all you need for overall page requirements. Visit the Layout docs or our official examples to start laying out your site’s content and components.

+ +

Important globals

+ +

Bootstrap employs a handful of important global styles and settings that you’ll need to be aware of when using it, all of which are almost exclusively geared towards the normalization of cross browser styles. Let’s dive in.

+ +

HTML5 doctype

+ +

Bootstrap requires the use of the HTML5 doctype. Without it, you’ll see some funky incomplete styling, but including it shouldn’t cause any considerable hiccups.

+ +
<!DOCTYPE html>
+<html lang="en">
+  ...
+</html>
+ +

Responsive meta tag

+ +

Bootstrap is developed mobile first, a strategy in which we optimize code for mobile devices first and then scale up components as necessary using CSS media queries. To ensure proper rendering and touch zooming for all devices, add the responsive viewport meta tag to your <head>.

+ +
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ +

You can see an example of this in action in the starter template.

+ +

Box-sizing

+ +

For more straightforward sizing in CSS, we switch the global box-sizing value from content-box to border-box. This ensures padding does not affect the final computed width of an element, but it can cause problems with some third party software like Google Maps and Google Custom Search Engine.

+ +

On the rare occasion you need to override it, use something like the following:

+ +
.selector-for-some-widget {
+  box-sizing: content-box;
+}
+ +

With the above snippet, nested elements—including generated content via :before and :after—will all inherit the specified box-sizing for that .selector-for-some-widget.

+ +

Learn more about box model and sizing at CSS Tricks.

+ +

Reboot

+ +

For improved cross-browser rendering, we use Reboot to correct inconsistencies across browsers and devices while providing slightly more opinionated resets to common HTML elements.

+ +

Community

+ +

Stay up to date on the development of Bootstrap and reach out to the community with these helpful resources.

+ +
    +
  • Follow @getbootstrap on Twitter.
  • +
  • Read and subscribe to The Official Bootstrap Blog.
  • +
  • Join the official Slack room.
  • +
  • Chat with fellow Bootstrappers in IRC. On the irc.freenode.net server, in the ##bootstrap channel.
  • +
  • Implementation help may be found at Stack Overflow (tagged bootstrap-4).
  • +
  • Developers should use the keyword bootstrap on packages which modify or add to the functionality of Bootstrap when distributing through npm or similar delivery mechanisms for maximum discoverability.
  • +
+ +

You can also follow @getbootstrap on Twitter for the latest gossip and awesome music videos.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/javascript/index.html b/docs/4.0/getting-started/javascript/index.html new file mode 100644 index 00000000..d77d3309 --- /dev/null +++ b/docs/4.0/getting-started/javascript/index.html @@ -0,0 +1,1364 @@ + + + + + + + + + JavaScript · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

JavaScript

+

Bring Bootstrap to life with our optional JavaScript plugins built on jQuery. Learn about each plugin, our data and programmatic API options, and more.

+ + +

Individual or compiled

+ +

Plugins can be included individually (using Bootstrap’s individual *.js files), or all at once using bootstrap.js or the minified bootstrap.min.js (don’t include both).

+ +

Dependencies

+ +

Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. Also note that all plugins depend on jQuery (this means jQuery must be included before the plugin files). Consult our bower.json to see which versions of jQuery are supported.

+ +

Our tooltips and popovers also depend on Popper.js.

+ +

Data attributes

+ +

Nearly all Bootstrap plugins can be enabled and configured through HTML alone with data attributes (our preferred way of using JavaScript functionality). Be sure to only use one set of data attributes on a single element (e.g., you cannot trigger a tooltip and modal from the same button.)

+ +

However, in some situations it may be desirable to disable this functionality. To disable the data attribute API, unbind all events on the document namespaced with data-api like so:

+ +
$(document).off('.data-api')
+ +

Alternatively, to target a specific plugin, just include the plugin’s name as a namespace along with the data-api namespace like this:

+ +
$(document).off('.alert.data-api')
+ +

Events

+ +

Bootstrap provides custom events for most plugins’ unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. show) is triggered at the start of an event, and its past participle form (ex. shown) is triggered on the completion of an action.

+ +

All infinitive events provide preventDefault() functionality. This provides the ability to stop the execution of an action before it starts. Returning false from an event handler will also automatically call preventDefault().

+ +
$('#myModal').on('show.bs.modal', function (e) {
+  if (!data) return e.preventDefault() // stops modal from being shown
+})
+ +

Programmatic API

+ +

We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.

+ +
$('.btn.danger').button('toggle').addClass('fat')
+ +

All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):

+ +
$('#myModal').modal()                      // initialized with defaults
+$('#myModal').modal({ keyboard: false })   // initialized with no keyboard
+$('#myModal').modal('show')                // initializes and invokes show immediately
+ +

Each plugin also exposes its raw constructor on a Constructor property: $.fn.popover.Constructor. If you’d like to get a particular plugin instance, retrieve it directly from an element: $('[rel="popover"]').data('popover').

+ +

Asynchronous functions and transitions

+ +

All programmatic API methods are asynchronous and returns to the caller once the transition is started but before it ends.

+ +

In order to execute an action once the transition is complete, you can listen to the corresponding event.

+ +
$('#myCollapse').on('shown.bs.collapse', function (e) {
+  // Action to execute once the collapsible area is expanded
+})
+ +

In addition a method call on a transitioning component will be ignored.

+ +
$('#myCarousel').on('slid.bs.carousel', function (e) {
+  $('#myCarousel').carousel('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished
+})
+
+$('#myCarousel').carousel('1') // Will start sliding to the slide 1 and returns to the caller
+$('#myCarousel').carousel('2') // !! Will be ignored, as the transition to the slide 1 is not finished !!
+ +

Default settings

+

You can change the default settings for a plugin by modifying the plugin’s Constructor.Default object:

+ +
$.fn.modal.Constructor.Default.keyboard = false // changes default for the modal plugin's `keyboard` option to false
+ +

No conflict

+ +

Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call .noConflict on the plugin you wish to revert the value of.

+ +
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
+$.fn.bootstrapBtn = bootstrapButton            // give $().bootstrapBtn the Bootstrap functionality
+ +

Version numbers

+ +

The version of each of Bootstrap’s jQuery plugins can be accessed via the VERSION property of the plugin’s constructor. For example, for the tooltip plugin:

+ +
$.fn.tooltip.Constructor.VERSION // => "4.0.0-beta"
+ +

No special fallbacks when JavaScript is disabled

+ +

Bootstrap’s plugins don’t fall back particularly gracefully when JavaScript is disabled. If you care about the user experience in this case, use <noscript> to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks.

+ +
+

Third-party libraries

+ +

Bootstrap does not officially support third-party JavaScript libraries like Prototype or jQuery UI. Despite .noConflict and namespaced events, there may be compatibility problems that you need to fix on your own.

+
+ +

Util

+ +

All Bootstrap Javascript depend on util.js and it has to be included alongside the other JS files. If you’re using the compiled (or minified) bootstrap.js, there is no need to include this—it’s already there.

+ +

util.js includes utility functions and a basic helper for transitionEnd events as well as a CSS transition emulator. It’s used by the other plugins to check for CSS transition support and to catch hanging transitions.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/options/index.html b/docs/4.0/getting-started/options/index.html new file mode 100644 index 00000000..c187bdb2 --- /dev/null +++ b/docs/4.0/getting-started/options/index.html @@ -0,0 +1,1507 @@ + + + + + + + + + Customization options · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Customization options

+

Customize Bootstrap 4 with our new built-in Sass variables for global style preferences for easy theming and component changes.

+ + +

Customizing variables

+ +

Every Sass variable in Bootstrap 4 includes the !default flag, meaning you can override that default value in your own Sass even after that original variable’s been defined. Copy and paste variables as needed, modify the values, remove the !default flag, and recompile.

+ +

For example, to change out the background-color and color for the <body>, you’d do the following:

+ +
$body-bg:    $gray-900;
+$body-color: $gray-600;
+ +

Do the same for any variable you need to override, including the global options listed below.

+ +

Global options

+ +

Customize Bootstrap 4 with our built-in custom variables file and easily toggle global CSS preferences with new $enable-* Sass variables. Override a variable’s value and recompile with npm run test as needed.

+ +

You can find and customize these variables for key global options in our _variables.scss file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VariableValuesDescription
$spacer1rem (default), or any value > 0Specifies the default spacer value to programmatically generate our spacer utilities.
$enable-roundedtrue (default) or falseEnables predefined border-radius styles on various components.
$enable-shadowstrue or false (default)Enables predefined box-shadow styles on various components.
$enable-gradientstrue or false (default)Enables predefined gradients via background-image styles on various components.
$enable-transitionstrue (default) or falseEnables predefined transitions on various components.
$enable-hover-media-querytrue or false (default)
$enable-grid-classestrue (default) or falseEnables the generation of CSS classes for the grid system (e.g., .container, .row, .col-md-1, etc.).
$enable-print-stylestrue (default) or falseEnables styles for optimizing printing.
+ +

Color

+ +

Many of Bootstrap’s various components and utilities are built through a series of colors defined in a Sass map. This map can be looped over in Sass to quickly generate a series of rulesets.

+ +

All colors

+ +

All colors available in Bootstrap 4, available as Sass variables and a Sass map in our scss/_variables.scss file. This will be expanded upon in subsequent minor releases to add additional shades, much like the grayscale palette we already include.

+ +
+ +
+ +
Blue
+ +
+ +
+ +
Indigo
+ +
+ +
+ +
Purple
+ +
+ +
+ +
Pink
+ +
+ +
+ +
Red
+ +
+ +
+ +
Orange
+ +
+ +
+ +
Yellow
+ +
+ +
+ +
Green
+ +
+ +
+ +
Teal
+ +
+ +
+ +
Cyan
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +

Here’s how you can use these in your Sass:

+ +
// With variable
+.alpha { color: $purple; }
+
+// From the Sass map with our `color()` function
+.beta { color: color("purple"); }
+ +

Color utility classes are also available for setting color and background-color.

+ +
+

In the future, we’ll aim to provide Sass maps and variables for shades of each color as we’ve done with the grayscale colors below.

+
+ +

Theme colors

+ +

We use a subset of all colors to create a smaller color palette for generating color schemes, also available as Sass variables and a Sass map in our scss/_variables.scss file.

+ +
+ +
+
Primary
+
+ +
+
Secondary
+
+ +
+
Success
+
+ +
+
Danger
+
+ +
+
Warning
+
+ +
+
Info
+
+ +
+
Light
+
+ +
+
Dark
+
+ +
+ +

Grays

+ +

An expansive set of gray variables and a Sass map in scss/_variables.scss for consistent shades of gray across your project.

+ +
+
+ +
100
+ +
200
+ +
300
+ +
400
+ +
500
+ +
600
+ +
700
+ +
800
+ +
900
+ +
+
+ +

Within _variables.scss, you’ll find our color variables and Sass map. Here’s an example of the $colors Sass map:

+ +
$colors: (
+  red: $red,
+  orange: $orange,
+  yellow: $yellow,
+  green: $green,
+  teal: $teal,
+  blue: $blue,
+  pink: $pink,
+  purple: $purple,
+  white: $white,
+  gray: $gray-600,
+  gray-dark: $gray-900
+) !default;
+ +

Add, remove, or modify values within the map to update how they’re used in many other components. Unfortunately at this time, not every component utilizes this Sass map. Future updates will strive to improve upon this. Until then, plan on making use of the ${color} variables and this Sass map.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/getting-started/webpack/index.html b/docs/4.0/getting-started/webpack/index.html new file mode 100644 index 00000000..1655188c --- /dev/null +++ b/docs/4.0/getting-started/webpack/index.html @@ -0,0 +1,1334 @@ + + + + + + + + + Webpack · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Webpack

+

Learn how to include Bootstrap in your project using Webpack 2.

+ + +

Installing Bootstrap

+ +

Install bootstrap as a node module using npm.

+ +

Importing JavaScript

+ +

Import Bootstrap’s JavaScript by adding this line to your app’s entry point (usually index.js or app.js):

+ +
import 'bootstrap';
+ +

Alternatively, you may import plugins individually as needed:

+ +
import 'bootstrap/js/dist/util';
+import 'bootstrap/js/dist/dropdown';
+...
+ +

Bootstrap is dependent on jQuery and Popper, so npm will install them for you if needed. But they must be explicitly provided by webpack. Add the following code to the plugins section in your webpack config file:

+ +
  plugins: [
+    ...
+      new webpack.ProvidePlugin({
+        $: 'jquery',
+        jQuery: 'jquery',
+        'window.jQuery': 'jquery',
+        Popper: ['popper.js', 'default'],
+        // In case you imported plugins individually, you must also require them here:
+        Util: "exports-loader?Util!bootstrap/js/dist/util",
+        Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown",
+        ...
+      })
+    ...
+  ]
+ +
+

Notice that if you chose to import plugins individually, you must also install exports-loader

+
+ +

Importing Styles

+ +

Importing Precompiled SASS

+ +

To enjoy the full potential of Bootstrap and customize it to your needs, use the source files as a part of your project’s bundling process.

+ +

First, create your own _custom.scss and use it to override the built-in custom variables. Then, use your main sass file to import your custom variables, followed by Bootstrap:

+ +
@import "custom";
+@import "~bootstrap/scss/bootstrap";
+ +

For Bootstrap to compile, make sure you install and use the required loaders: sass-loader, postcss-loader with Autoprefixer. With minimal setup, your webpack config should include this rule or similar:

+ +
  ...
+  {
+    test: /\.(scss)$/,
+    use: [{
+      loader: 'style-loader', // inject CSS to page
+    }, {
+      loader: 'css-loader', // translates CSS into CommonJS modules
+    }, {
+      loader: 'postcss-loader', // Run post css actions
+      options: {
+        plugins: function () { // post css plugins, can be exported to postcss.config.js
+          return [
+            require('precss'),
+            require('autoprefixer')
+          ];
+        }
+      }
+    }, {
+      loader: 'sass-loader' // compiles SASS to CSS
+    }]
+  },
+  ...
+ +

Importing Compiled CSS

+ +

Alternatively, you may use Bootstrap’s ready-to-use css by simply adding this line to your project’s entry point:

+ +
import 'bootstrap/dist/css/bootstrap-material-design.min.css';
+ +

In this case you may use your existing rule for css without any special modifications to webpack config.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/index.html b/docs/4.0/index.html new file mode 100644 index 00000000..f10bd822 --- /dev/null +++ b/docs/4.0/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/4.0/layout/grid/index.html b/docs/4.0/layout/grid/index.html new file mode 100644 index 00000000..ef985f8b --- /dev/null +++ b/docs/4.0/layout/grid/index.html @@ -0,0 +1,2253 @@ + + + + + + + + + Grid system · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Grid system

+

Use our powerful mobile-first flexbox grid to build layouts of all shapes and sizes thanks to a twelve column system, five default responsive tiers, Sass variables and mixins, and dozens of predefined classes.

+ + +

How it works

+ +

Bootstrap’s grid system uses a series of containers, rows, and columns to layout and align content. It’s built with flexbox and is fully responsive. Below is an example and an in-depth look at how the grid comes together.

+ +
+
+
+
+ One of three columns +
+
+ One of three columns +
+
+ One of three columns +
+
+
+
+ +

The above example creates three equal-width columns on small, medium, large, and extra large devices using our predefined grid classes. Those columns are centered in the page with the parent .container.

+ +

Breaking it down, here’s how it works:

+ +
    +
  • Containers provide a means to center your site’s contents. Use .container for fixed width or .container-fluid for full width.
  • +
  • Rows are horizontal groups of columns that ensure your columns are lined up properly. We use the negative margin method on .row to ensure all your content is aligned properly down the left side.
  • +
  • Content should be placed within columns, and only columns may be immediate children of rows.
  • +
  • Thanks to flexbox, grid columns without a set width will automatically layout with equal widths. For example, four instances of .col-sm will each automatically be 25% wide for small breakpoints.
  • +
  • Column classes indicate the number of columns you’d like to use out of the possible 12 per row. So, if you want three equal-width columns, you can use .col-sm-4.
  • +
  • Column widths are set in percentages, so they’re always fluid and sized relative to their parent element.
  • +
  • Columns have horizontal padding to create the gutters between individual columns, however, you can remove the margin from rows and padding from columns with .no-gutters on the .row.
  • +
  • There are five grid tiers, one for each responsive breakpoint: all breakpoints (extra small), small, medium, large, and extra large.
  • +
  • Grid tiers are based on minimum widths, meaning they apply to that one tier and all those above it (e.g., .col-sm-4 applies to small, medium, large, and extra large devices).
  • +
  • You can use predefined grid classes or Sass mixins for more semantic markup.
  • +
+ +

Be aware of the limitations and bugs around flexbox, like the inability to use some HTML elements as flex containers.

+ +

Sounds good? Great, let’s move on to seeing all that in an example.

+ +

Grid options

+ +

While Bootstrap uses ems or rems for defining most sizes, pxs are used for grid breakpoints and container widths. This is because the viewport width is in pixels and does not change with the font size.

+ +

See how aspects of the Bootstrap grid system work across multiple devices with a handy table.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Extra small
+ <576px +
+ Small
+ ≥576px +
+ Medium
+ ≥768px +
+ Large
+ ≥992px +
+ Extra large
+ ≥1200px +
Max container widthNone (auto)540px720px960px1140px
Class prefix.col-.col-sm-.col-md-.col-lg-.col-xl-
# of columns12
Gutter width30px (15px on each side of a column)
NestableYes
Column orderingYes
+ +

Auto-layout columns

+ +

Utilize breakpoint-specific column classes for easy column sizing without an explicit numbered class like .col-sm-6.

+ +

Equal-width

+ +

For example, here are two grid layouts that apply to every device and viewport, from xs to xl. Add any number of unit-less classes for each breakpoint you need and every column will be the same width.

+ +
+ +
+
+
+
+ 1 of 2 +
+
+ 2 of 2 +
+
+
+
+ 1 of 3 +
+
+ 2 of 3 +
+
+ 3 of 3 +
+
+
+
<div class="container">
+  <div class="row">
+    <div class="col">
+      1 of 2
+    </div>
+    <div class="col">
+      2 of 2
+    </div>
+  </div>
+  <div class="row">
+    <div class="col">
+      1 of 3
+    </div>
+    <div class="col">
+      2 of 3
+    </div>
+    <div class="col">
+      3 of 3
+    </div>
+  </div>
+</div>
+ +
+ +

Equal-width columns can be broken into multiple lines, but there is a Safari flexbox bug that prevents this from working without an explicit flex-basis or border. Our example works thanks to the border being set; you can do the same with .col { border: 1px solid transparent; }. Alternatively, you can set the flex-basis to the width of the column (e.g., .col { flex: 1 0 50%; }).

+ +

Both these fixes have been documented in a reduced test case outside Bootstrap.

+ +
+ +
+
+
+
Column
+
Column
+
+
Column
+
Column
+
+
+
<div class="container">
+  <div class="row">
+    <div class="col">Column</div>
+    <div class="col">Column</div>
+    <div class="w-100"></div>
+    <div class="col">Column</div>
+    <div class="col">Column</div>
+  </div>
+</div>
+ +
+ +

Setting one column width

+ +

Auto-layout for flexbox grid columns also means you can set the width of one column and have the sibling columns automatically resize around it. You may use predefined grid classes (as shown below), grid mixins, or inline widths. Note that the other columns will resize no matter the width of the center column.

+ +
+ +
+
+
+
+ 1 of 3 +
+
+ 2 of 3 (wider) +
+
+ 3 of 3 +
+
+
+
+ 1 of 3 +
+
+ 2 of 3 (wider) +
+
+ 3 of 3 +
+
+
+
<div class="container">
+  <div class="row">
+    <div class="col">
+      1 of 3
+    </div>
+    <div class="col-6">
+      2 of 3 (wider)
+    </div>
+    <div class="col">
+      3 of 3
+    </div>
+  </div>
+  <div class="row">
+    <div class="col">
+      1 of 3
+    </div>
+    <div class="col-5">
+      2 of 3 (wider)
+    </div>
+    <div class="col">
+      3 of 3
+    </div>
+  </div>
+</div>
+ +
+ +

Variable width content

+ +

Use col-{breakpoint}-auto classes to size columns based on the natural width of their content.

+ +
+ +
+
+
+
+ 1 of 3 +
+
+ Variable width content +
+
+ 3 of 3 +
+
+
+
+ 1 of 3 +
+
+ Variable width content +
+
+ 3 of 3 +
+
+
+
<div class="container">
+  <div class="row justify-content-md-center">
+    <div class="col col-lg-2">
+      1 of 3
+    </div>
+    <div class="col-md-auto">
+      Variable width content
+    </div>
+    <div class="col col-lg-2">
+      3 of 3
+    </div>
+  </div>
+  <div class="row">
+    <div class="col">
+      1 of 3
+    </div>
+    <div class="col-md-auto">
+      Variable width content
+    </div>
+    <div class="col col-lg-2">
+      3 of 3
+    </div>
+  </div>
+</div>
+ +
+ +

Equal-width multi-row

+ +

Create equal-width columns that span multiple rows by inserting a .w-100 where you want the columns to break to a new line. Make the breaks responsive by mixing the .w-100 with some responsive display utilities.

+ +
+ +
+
+
col
+
col
+
+
col
+
col
+
+
<div class="row">
+  <div class="col">col</div>
+  <div class="col">col</div>
+  <div class="w-100"></div>
+  <div class="col">col</div>
+  <div class="col">col</div>
+</div>
+ +
+ +

Responsive classes

+ +

Bootstrap’s grid includes five tiers of predefined classes for building complex responsive layouts. Customize the size of your columns on extra small, small, medium, large, or extra large devices however you see fit.

+ +

All breakpoints

+ +

For grids that are the same from the smallest of devices to the largest, use the .col and .col-* classes. Specify a numbered class when you need a particularly sized column; otherwise, feel free to stick to .col.

+ +
+ +
+
+
col
+
col
+
col
+
col
+
+
+
col-8
+
col-4
+
+
<div class="row">
+  <div class="col">col</div>
+  <div class="col">col</div>
+  <div class="col">col</div>
+  <div class="col">col</div>
+</div>
+<div class="row">
+  <div class="col-8">col-8</div>
+  <div class="col-4">col-4</div>
+</div>
+ +
+ +

Stacked to horizontal

+ +

Using a single set of .col-sm-* classes, you can create a basic grid system that starts out stacked on extra small devices before becoming horizontal on desktop (medium) devices.

+ +
+ +
+
+
col-sm-8
+
col-sm-4
+
+
+
col-sm
+
col-sm
+
col-sm
+
+
<div class="row">
+  <div class="col-sm-8">col-sm-8</div>
+  <div class="col-sm-4">col-sm-4</div>
+</div>
+<div class="row">
+  <div class="col-sm">col-sm</div>
+  <div class="col-sm">col-sm</div>
+  <div class="col-sm">col-sm</div>
+</div>
+ +
+ +

Mix and match

+ +

Don’t want your columns to simply stack in some grid tiers? Use a combination of different classes for each tier as needed. See the example below for a better idea of how it all works.

+ +
+ +
+ +
+
.col-12 .col-md-8
+
.col-6 .col-md-4
+
+ + +
+
.col-6 .col-md-4
+
.col-6 .col-md-4
+
.col-6 .col-md-4
+
+ + +
+
.col-6
+
.col-6
+
+
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
+<div class="row">
+  <div class="col-12 col-md-8">.col-12 .col-md-8</div>
+  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
+</div>
+
+<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
+<div class="row">
+  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
+  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
+  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
+</div>
+
+<!-- Columns are always 50% wide, on mobile and desktop -->
+<div class="row">
+  <div class="col-6">.col-6</div>
+  <div class="col-6">.col-6</div>
+</div>
+ +
+ +

Alignment

+ +

Use flexbox alignment utilities to vertically and horizontally align columns.

+ +

Vertical alignment

+ +
+ +
+
+
+
+ One of three columns +
+
+ One of three columns +
+
+ One of three columns +
+
+
+
+ One of three columns +
+
+ One of three columns +
+
+ One of three columns +
+
+
+
+ One of three columns +
+
+ One of three columns +
+
+ One of three columns +
+
+
+
<div class="container">
+  <div class="row align-items-start">
+    <div class="col">
+      One of three columns
+    </div>
+    <div class="col">
+      One of three columns
+    </div>
+    <div class="col">
+      One of three columns
+    </div>
+  </div>
+  <div class="row align-items-center">
+    <div class="col">
+      One of three columns
+    </div>
+    <div class="col">
+      One of three columns
+    </div>
+    <div class="col">
+      One of three columns
+    </div>
+  </div>
+  <div class="row align-items-end">
+    <div class="col">
+      One of three columns
+    </div>
+    <div class="col">
+      One of three columns
+    </div>
+    <div class="col">
+      One of three columns
+    </div>
+  </div>
+</div>
+ +
+ +
+ +
+
+
+
+ One of three columns +
+
+ One of three columns +
+
+ One of three columns +
+
+
+
<div class="container">
+  <div class="row">
+    <div class="col align-self-start">
+      One of three columns
+    </div>
+    <div class="col align-self-center">
+      One of three columns
+    </div>
+    <div class="col align-self-end">
+      One of three columns
+    </div>
+  </div>
+</div>
+ +
+ +

Horizontal alignment

+ +
+ +
+
+
+
+ One of two columns +
+
+ One of two columns +
+
+
+
+ One of two columns +
+
+ One of two columns +
+
+
+
+ One of two columns +
+
+ One of two columns +
+
+
+
+ One of two columns +
+
+ One of two columns +
+
+
+
+ One of two columns +
+
+ One of two columns +
+
+
+
<div class="container">
+  <div class="row justify-content-start">
+    <div class="col-4">
+      One of two columns
+    </div>
+    <div class="col-4">
+      One of two columns
+    </div>
+  </div>
+  <div class="row justify-content-center">
+    <div class="col-4">
+      One of two columns
+    </div>
+    <div class="col-4">
+      One of two columns
+    </div>
+  </div>
+  <div class="row justify-content-end">
+    <div class="col-4">
+      One of two columns
+    </div>
+    <div class="col-4">
+      One of two columns
+    </div>
+  </div>
+  <div class="row justify-content-around">
+    <div class="col-4">
+      One of two columns
+    </div>
+    <div class="col-4">
+      One of two columns
+    </div>
+  </div>
+  <div class="row justify-content-between">
+    <div class="col-4">
+      One of two columns
+    </div>
+    <div class="col-4">
+      One of two columns
+    </div>
+  </div>
+</div>
+ +
+ +

No gutters

+ +

The gutters between columns in our predefined grid classes can be removed with .no-gutters. This removes the negative margins from .row and the horizontal padding from all immediate children columns.

+ +

Here’s the source code for creating these styles. Note that column overrides are scoped to only the first children columns and are targeted via attribute selector. While this generates a more specific selector, column padding can still be further customized with spacing utilities.

+ +

Need an edge-to-edge design? Drop the parent .container or .container-fluid.

+ +
.no-gutters {
+  margin-right: 0;
+  margin-left: 0;
+
+  > .col,
+  > [class*="col-"] {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+ +

In practice, here’s how it looks. Note you can continue to use this with all other predefined grid classes (including column widths, responsive tiers, reorders, and more).

+ +
+ +
+
+
.col-12 .col-sm-6 .col-md-8
+
.col-6 .col-md-4
+
+
<div class="row no-gutters">
+  <div class="col-12 col-sm-6 col-md-8">.col-12 .col-sm-6 .col-md-8</div>
+  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
+</div>
+ +
+ +

Column wrapping

+ +

If more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.

+ +
+ +
+
+
.col-9
+
.col-4
Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.
+
.col-6
Subsequent columns continue along the new line.
+
+
<div class="row">
+  <div class="col-9">.col-9</div>
+  <div class="col-4">.col-4<br>Since 9 + 4 = 13 &gt; 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.</div>
+  <div class="col-6">.col-6<br>Subsequent columns continue along the new line.</div>
+</div>
+ +
+ +

Column resets

+ +

With the handful of grid tiers available, you’re bound to run into issues where, at certain breakpoints, your columns don’t clear quite right as one is taller than the other. To fix that, use a combination of a .clearfix and our responsive display utilities.

+ +
+ +
+
+
.col-6 .col-sm-3
+
.col-6 .col-sm-3
+ + +
+ +
.col-6 .col-sm-3
+
.col-6 .col-sm-3
+
+
<div class="row">
+  <div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
+  <div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
+
+  <!-- Add the extra clearfix for only the required viewport -->
+  <div class="clearfix d-none d-sm-block"></div>
+
+  <div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
+  <div class="col-6 col-sm-3">.col-6 .col-sm-3</div>
+</div>
+ +
+ +

Reordering

+ +

Flex order

+ +

Use .order- classes for controlling the visual order of your content. These classes are responsive, so you can set the order by breakpoint (e.g., .order-1.order-md-2). Includes support for 1 through 12 across all five grid tiers.

+ +
+ +
+
+
+
+ First, but unordered +
+
+ Second, but last +
+
+ Third, but first +
+
+
+
<div class="container">
+  <div class="row">
+    <div class="col">
+      First, but unordered
+    </div>
+    <div class="col order-12">
+      Second, but last
+    </div>
+    <div class="col order-1">
+      Third, but first
+    </div>
+  </div>
+</div>
+ +
+ +

Offsetting columns

+ +

With the move to flexbox in v4, we no longer have v3’s style of offset classes. Instead, use margin utilities like .mr-auto to force sibling columns away from one another.

+ +
+ +
+
+
.col-md-4
+
.col-md-4 .ml-auto
+
+
+
.col-md-3 .ml-md-auto
+
.col-md-3 .ml-md-auto
+
+
+
.col-auto .mr-auto
+
.col-auto
+
+
<div class="row">
+  <div class="col-md-4">.col-md-4</div>
+  <div class="col-md-4 ml-auto">.col-md-4 .ml-auto</div>
+</div>
+<div class="row">
+  <div class="col-md-3 ml-md-auto">.col-md-3 .ml-md-auto</div>
+  <div class="col-md-3 ml-md-auto">.col-md-3 .ml-md-auto</div>
+</div>
+<div class="row">
+  <div class="col-auto mr-auto">.col-auto .mr-auto</div>
+  <div class="col-auto">.col-auto</div>
+</div>
+ +
+ +

Nesting

+ +

To nest your content with the default grid, add a new .row and set of .col-sm-* columns within an existing .col-sm-* column. Nested rows should include a set of columns that add up to 12 or fewer (it is not required that you use all 12 available columns).

+ +
+ +
+
+
+ Level 1: .col-sm-9 +
+
+ Level 2: .col-8 .col-sm-6 +
+
+ Level 2: .col-4 .col-sm-6 +
+
+
+
+
<div class="row">
+  <div class="col-sm-9">
+    Level 1: .col-sm-9
+    <div class="row">
+      <div class="col-8 col-sm-6">
+        Level 2: .col-8 .col-sm-6
+      </div>
+      <div class="col-4 col-sm-6">
+        Level 2: .col-4 .col-sm-6
+      </div>
+    </div>
+  </div>
+</div>
+ +
+ +

Sass mixins

+ +

When using Bootstrap’s source Sass files, you have the option of using Sass variables and mixins to create custom, semantic, and responsive page layouts. Our predefined grid classes use these same variables and mixins to provide a whole suite of ready-to-use classes for fast responsive layouts.

+ +

Variables

+ +

Variables and maps determine the number of columns, the gutter width, and the media query point at which to begin floating columns. We use these to generate the predefined grid classes documented above, as well as for the custom mixins listed below.

+ +
$grid-columns:      12;
+$grid-gutter-width: 30px;
+
+$grid-breakpoints: (
+  // Extra small screen / phone
+  xs: 0,
+  // Small screen / phone
+  sm: 576px,
+  // Medium screen / tablet
+  md: 768px,
+  // Large screen / desktop
+  lg: 992px,
+  // Extra large screen / wide desktop
+  xl: 1200px
+);
+
+$container-max-widths: (
+  sm: 540px,
+  md: 720px,
+  lg: 960px,
+  xl: 1140px
+);
+ +

Mixins

+ +

Mixins are used in conjunction with the grid variables to generate semantic CSS for individual grid columns.

+ +
// Creates a wrapper for a series of columns
+@include make-row();
+
+// Make the element grid-ready (applying everything but the width)
+@include make-col-ready();
+@include make-col($size, $columns: $grid-columns);
+ +

Example usage

+ +

You can modify the variables to your own custom values, or just use the mixins with their default values. Here’s an example of using the default settings to create a two-column layout with a gap between.

+ +
.example-container {
+  width: 800px;
+  @include make-container();
+}
+
+.example-row {
+  @include make-row();
+}
+
+.example-content-main {
+  @include make-col-ready();
+
+  @include media-breakpoint-up(sm) {
+    @include make-col(6);
+  }
+  @include media-breakpoint-up(lg) {
+    @include make-col(8);
+  }
+}
+
+.example-content-secondary {
+  @include make-col-ready();
+
+  @include media-breakpoint-up(sm) {
+    @include make-col(6);
+  }
+  @include media-breakpoint-up(lg) {
+    @include make-col(4);
+  }
+}
+ +
+
+
+
Main content
+
Secondary content
+
+
+
+
<div class="example-container">
+  <div class="example-row">
+    <div class="example-content-main">Main content</div>
+    <div class="example-content-secondary">Secondary content</div>
+  </div>
+</div>
+ +

Customizing the grid

+ +

Using our built-in grid Sass variables and maps, it’s possible to completely customize the predefined grid classes. Change the number of tiers, the media query dimensions, and the container widths—then recompile.

+ +

Columns and gutters

+ +

The number of grid columns can be modified via Sass variables. $grid-columns is used to generate the widths (in percent) of each individual column while $grid-gutter-width allows breakpoint-specific widths that are divided evenly across padding-left and padding-right for the column gutters.

+ +
$grid-columns: 12 !default;
+$grid-gutter-width: 30px !default;
+ +

Grid tiers

+ +

Moving beyond the columns themselves, you may also customize the number of grid tiers. If you wanted just four grid tiers, you’d update the $grid-breakpoints and $container-max-widths to something like this:

+ +
$grid-breakpoints: (
+  xs: 0,
+  sm: 480px,
+  md: 768px,
+  lg: 1024px
+);
+
+$container-max-widths: (
+  sm: 420px,
+  md: 720px,
+  lg: 960px
+);
+ +

When making any changes to the Sass variables or maps, you’ll need to save your changes and recompile. Doing so will out a brand new set of predefined grid classes for column widths and ordering. Responsive visibility utilities will also be updated to use the custom breakpoints.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/layout/index.html b/docs/4.0/layout/index.html new file mode 100644 index 00000000..17e6adb5 --- /dev/null +++ b/docs/4.0/layout/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/4.0/layout/media-object/index.html b/docs/4.0/layout/media-object/index.html new file mode 100644 index 00000000..e3b3b9e6 --- /dev/null +++ b/docs/4.0/layout/media-object/index.html @@ -0,0 +1,1504 @@ + + + + + + + + + Media object · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Media object

+

Documentation and examples for Bootstrap's media object to construct highly repetitive components like blog comments, tweets, and the like.

+ + +

Example

+ +

The media object helps build complex and repetitive components where some media is positioned alongside content that doesn’t wrap around said media. Plus, it does this with only two required classes thanks to flexbox.

+ +

Below is an example of a single media object. Only two classes are required—the wrapping .media and the .media-body around your content. Optional padding and margin can be controlled through spacing utilities.

+ +
+
+ Generic placeholder image +
+
Media heading
+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
+
+
+
<div class="media">
+  <img class="d-flex mr-3" src="..." alt="Generic placeholder image">
+  <div class="media-body">
+    <h5 class="mt-0">Media heading</h5>
+    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+  </div>
+</div>
+ +
+
Flexbug #12: Inline elements aren’t treated as flex items
+ +

Internet Explorer 10-11 do not render inline elements like links or images (or ::before and ::after pseudo-elements) as flex items. The only workaround is to set a non-inline display value (e.g., block, inline-block, or flex). We suggest using .d-flex, one of our display utilities, as an easy fix.

+ +

Source: Flexbugs on GitHub

+
+ +

Nesting

+ +

Media objects can be infinitely nested, though we suggest you stop at some point. Place nested .media within the .media-body of a parent media object.

+ +
+
+ Generic placeholder image +
+
Media heading
+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. + +
+ + Generic placeholder image + +
+
Media heading
+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
+
+
+
+
+
<div class="media">
+  <img class="d-flex mr-3" src="..." alt="Generic placeholder image">
+  <div class="media-body">
+    <h5 class="mt-0">Media heading</h5>
+    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+
+    <div class="media mt-3">
+      <a class="d-flex pr-3" href="#">
+        <img src="..." alt="Generic placeholder image">
+      </a>
+      <div class="media-body">
+        <h5 class="mt-0">Media heading</h5>
+        Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+      </div>
+    </div>
+  </div>
+</div>
+ +

Alignment

+ +

Media in a media object can be aligned with flexbox utilities to the top (default), middle, or end of your .media-body content.

+ +
+
+ Generic placeholder image +
+
Top-aligned media
+

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

+

Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

+
+
+
+
<div class="media">
+  <img class="d-flex align-self-start mr-3" src="..." alt="Generic placeholder image">
+  <div class="media-body">
+    <h5 class="mt-0">Top-aligned media</h5>
+    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
+    <p>Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+  </div>
+</div>
+ +
+
+ Generic placeholder image +
+
Center-aligned media
+

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

+

Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

+
+
+
+
<div class="media">
+  <img class="d-flex align-self-center mr-3" src="..." alt="Generic placeholder image">
+  <div class="media-body">
+    <h5 class="mt-0">Center-aligned media</h5>
+    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
+    <p class="mb-0">Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+  </div>
+</div>
+ +
+
+ Generic placeholder image +
+
Bottom-aligned media
+

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

+

Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

+
+
+
+
<div class="media">
+  <img class="d-flex align-self-end mr-3" src="..." alt="Generic placeholder image">
+  <div class="media-body">
+    <h5 class="mt-0">Bottom-aligned media</h5>
+    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
+    <p class="mb-0">Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
+  </div>
+</div>
+ +

Order

+ +

Change the order of content in media objects by modifying the HTML itself, or by adding some custom flexbox CSS to set the order property (to an integer of your choosing).

+ +
+
+
+
Media object
+ Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
+ Generic placeholder image +
+
+
<div class="media">
+  <div class="media-body">
+    <h5 class="mt-0 mb-1">Media object</h5>
+    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+  </div>
+  <img class="d-flex ml-3" src="..." alt="Generic placeholder image">
+</div>
+ +

Media list

+ +

Because the media object has so few structural requirements, you can also use these classes on list HTML elements. On your <ul> or <ol>, add the .list-unstyled to remove any browser default list styles, and then apply .media to your <li>s. As always, use spacing utilities wherever needed to fine tune.

+ +
+
    +
  • + Generic placeholder image +
    +
    List-based media object
    + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
    +
  • +
  • + Generic placeholder image +
    +
    List-based media object
    + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
    +
  • +
  • + Generic placeholder image +
    +
    List-based media object
    + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
    +
  • +
+
+
<ul class="list-unstyled">
+  <li class="media">
+    <img class="d-flex mr-3" src="..." alt="Generic placeholder image">
+    <div class="media-body">
+      <h5 class="mt-0 mb-1">List-based media object</h5>
+      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+    </div>
+  </li>
+  <li class="media my-4">
+    <img class="d-flex mr-3" src="..." alt="Generic placeholder image">
+    <div class="media-body">
+      <h5 class="mt-0 mb-1">List-based media object</h5>
+      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+    </div>
+  </li>
+  <li class="media">
+    <img class="d-flex mr-3" src="..." alt="Generic placeholder image">
+    <div class="media-body">
+      <h5 class="mt-0 mb-1">List-based media object</h5>
+      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
+    </div>
+  </li>
+</ul>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/layout/overview/index.html b/docs/4.0/layout/overview/index.html new file mode 100644 index 00000000..d08d320e --- /dev/null +++ b/docs/4.0/layout/overview/index.html @@ -0,0 +1,1394 @@ + + + + + + + + + Overview · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Overview

+

Components and options for laying out your Bootstrap project, including wrapping containers, a powerful grid system, a flexible media object, and responsive utility classes.

+ + +

Containers

+ +

Containers are the most basic layout element in Bootstrap and are required when using our default grid system. Choose from a responsive, fixed-width container (meaning its max-width changes at each breakpoint) or fluid-width (meaning it’s 100% wide all the time).

+ +

While containers can be nested, most layouts do not require a nested container.

+ +
+
+
+
+
+
+
+ +
<div class="container">
+  <!-- Content here -->
+</div>
+ +

Use .container-fluid for a full width container, spanning the entire width of the viewport.

+ +
+
+
+
+
+
+
+ +
<div class="container-fluid">
+  ...
+</div>
+ +

Responsive breakpoints

+ +

Since Bootstrap is developed to be mobile first, we use a handful of media queries to create sensible breakpoints for our layouts and interfaces. These breakpoints are mostly based on minimum viewport widths and allow us to scale up elements as the viewport changes.

+ +

Bootstrap primarily uses the following media query ranges—or breakpoints—in our source Sass files for our layout, grid system, and components.

+ +
// Extra small devices (portrait phones, less than 576px)
+// No media query since this is the default in Bootstrap
+
+// Small devices (landscape phones, 576px and up)
+@media (min-width: 576px) { ... }
+
+// Medium devices (tablets, 768px and up)
+@media (min-width: 768px) { ... }
+
+// Large devices (desktops, 992px and up)
+@media (min-width: 992px) { ... }
+
+// Extra large devices (large desktops, 1200px and up)
+@media (min-width: 1200px) { ... }
+ +

Since we write our source CSS in Sass, all our media queries are available via Sass mixins:

+ +
@include media-breakpoint-up(xs) { ... }
+@include media-breakpoint-up(sm) { ... }
+@include media-breakpoint-up(md) { ... }
+@include media-breakpoint-up(lg) { ... }
+@include media-breakpoint-up(xl) { ... }
+
+// Example usage:
+@include media-breakpoint-up(sm) {
+  .some-class {
+    display: block;
+  }
+}
+ +

We occasionally use media queries that go in the other direction (the given screen size or smaller):

+ +
// Extra small devices (portrait phones, less than 576px)
+@media (max-width: 575px) { ... }
+
+// Small devices (landscape phones, less than 768px)
+@media (max-width: 767px) { ... }
+
+// Medium devices (tablets, less than 992px)
+@media (max-width: 991px) { ... }
+
+// Large devices (desktops, less than 1200px)
+@media (max-width: 1199px) { ... }
+
+// Extra large devices (large desktops)
+// No media query since the extra-large breakpoint has no upper bound on its width
+ +

Once again, these media queries are also available via Sass mixins:

+ +
@include media-breakpoint-down(xs) { ... }
+@include media-breakpoint-down(sm) { ... }
+@include media-breakpoint-down(md) { ... }
+@include media-breakpoint-down(lg) { ... }
+ +

There are also media queries and mixins for targeting a single segment of screen sizes using the minimum and maximum breakpoint widths.

+ +
// Extra small devices (portrait phones, less than 576px)
+@media (max-width: 575px) { ... }
+
+// Small devices (landscape phones, 576px and up)
+@media (min-width: 576px) and (max-width: 767px) { ... }
+
+// Medium devices (tablets, 768px and up)
+@media (min-width: 768px) and (max-width: 991px) { ... }
+
+// Large devices (desktops, 992px and up)
+@media (min-width: 992px) and (max-width: 1199px) { ... }
+
+// Extra large devices (large desktops, 1200px and up)
+@media (min-width: 1200px) { ... }
+ +

These media queries are also available via Sass mixins:

+ +
@include media-breakpoint-only(xs) { ... }
+@include media-breakpoint-only(sm) { ... }
+@include media-breakpoint-only(md) { ... }
+@include media-breakpoint-only(lg) { ... }
+@include media-breakpoint-only(xl) { ... }
+ +

Similarly, media queries may span multiple breakpoint widths:

+ +
// Example
+// Apply styles starting from medium devices and up to extra large devices
+@media (min-width: 768px) and (max-width: 1199px) { ... }
+ +

The Sass mixin for targeting the same screen size range would be:

+ +
@include media-breakpoint-between(md, xl) { ... }
+ +

Z-index

+ +

Several Bootstrap components utilize z-index, the CSS property that helps control layout by providing a third axis to arrange content. We utilize a default z-index scale in Bootstrap that’s been designed to properly layer navigation, tooltips and popovers, modals, and more.

+ +

We don’t encourage customization of these values; should you change one, you likely need to change them all.

+ +
$zindex-dropdown-backdrop:  990 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-fixed:             1030 !default;
+$zindex-sticky:            1030 !default;
+$zindex-modal-backdrop:    1040 !default;
+$zindex-modal:             1050 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+
+
+ +

Background elements—like the backdrops that allow click-dismissing—tend to reside on a lower z-indexs, while navigation and popovers utilize higher z-indexs to ensure they overlay surrounding content.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/layout/utilities-for-layout/index.html b/docs/4.0/layout/utilities-for-layout/index.html new file mode 100644 index 00000000..20c54f9f --- /dev/null +++ b/docs/4.0/layout/utilities-for-layout/index.html @@ -0,0 +1,1267 @@ + + + + + + + + + Utilities for layout · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Utilities for layout

+

For faster mobile-friendly and responsive development, Bootstrap includes dozens of utility classes for showing, hiding, aligning, and spacing content.

+ + +

Changing display

+ +

Use our display utilities for responsively toggling common values of the display property. Mix it with our grid system, content, or components to show or hide them across specific viewports.

+ +

Flexbox options

+ +

Bootstrap 4 is built with flexbox, but not every element’s display has been changed to display: flex as this would add many unnecessary overrides and unexpectedly change key browser behaviors. Most of our components are built with flexbox enabled.

+ +

Should you need to add display: flex to an element, do so with .d-flex or one of the responsive variants (e.g., .d-sm-flex). You’ll need this class or display value to allow the use of our extra flexbox utilities for sizing, alignment, spacing, and more.

+ +

Margin and padding

+ +

Use the margin and padding spacing utilities to control how elements and components are spaced and sized. Bootstrap 4 includes a five-level scale for spacing utilities, based on a 1rem value default $spacer variable. Choose values for all viewports (e.g., .mr-3 for margin-right: 1rem), or pick responsive variants to target specific viewports (e.g., .mr-md-3 for margin-right: 1rem starting at the md breakpoint).

+ +

Toggle visibility

+ +

When toggling display isn’t needed, you can toggle the visibility of an element with our visibility utilities. Invisible elements will still affect the layout of the page, but are visually hidden from visitors.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/buttons/index.html b/docs/4.0/material-design/buttons/index.html new file mode 100644 index 00000000..82677bf3 --- /dev/null +++ b/docs/4.0/material-design/buttons/index.html @@ -0,0 +1,1621 @@ + + + + + + + + + Buttons · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Buttons

+

+ + +

Contents

+ + + +

Flat

+ +
+ + + + + + + + + +
+
<button type="button" class="btn btn-primary">Primary</button>
+<button type="button" class="btn btn-secondary">Secondary</button>
+<button type="button" class="btn btn-success">Success</button>
+<button type="button" class="btn btn-info">Info</button>
+<button type="button" class="btn btn-warning">Warning</button>
+<button type="button" class="btn btn-danger">Danger</button>
+<button type="button" class="btn btn-link">Link</button>
+<button type="button" class="btn"><code>btn</code> only</button>
+<button type="button" class="btn active"><code>.active</code></button>
+ +

Disabled

+ +
+
+ + + + + + + + +
+
+
<fieldset disabled>
+  <button type="button" class="btn"><code>btn</code> only</button>
+  <button type="button" class="btn btn-primary">Primary</button>
+  <button type="button" class="btn btn-secondary">Secondary</button>
+  <button type="button" class="btn btn-success">Success</button>
+  <button type="button" class="btn btn-info">Info</button>
+  <button type="button" class="btn btn-warning">Warning</button>
+  <button type="button" class="btn btn-danger">Danger</button>
+  <button type="button" class="btn btn-link">Link</button>
+</fieldset>
+ +

Raised

+ +
+ + + + + + + + +
+
<button type="button" class="btn btn-raised btn-primary">Primary</button>
+<button type="button" class="btn btn-raised btn-secondary">Secondary</button>
+<button type="button" class="btn btn-raised btn-success">Success</button>
+<button type="button" class="btn btn-raised btn-info">Info</button>
+<button type="button" class="btn btn-raised btn-warning">Warning</button>
+<button type="button" class="btn btn-raised btn-danger">Danger</button>
+<button type="button" class="btn btn-raised btn-link">Link</button>
+<button type="button" class="btn btn-raised active"><code>.active</code></button>
+ +

Disabled

+ +
+
+ + + + + + + +
+
+
<fieldset disabled>
+  <button type="button" class="btn btn-raised btn-secondary">Secondary</button>
+  <button type="button" class="btn btn-raised btn-success">Success</button>
+  <button type="button" class="btn btn-raised btn-primary">Primary</button>
+  <button type="button" class="btn btn-raised btn-info">Info</button>
+  <button type="button" class="btn btn-raised btn-warning">Warning</button>
+  <button type="button" class="btn btn-raised btn-danger">Danger</button>
+  <button type="button" class="btn btn-raised btn-link">Link</button>
+</fieldset>
+ +

Sizes

+ +
+ + + +
+
<button type="button" class="btn btn-raised btn-lg">Large button</button>
+<button type="button" class="btn btn-raised">Default button</button>
+<button type="button" class="btn btn-raised btn-sm">Small button</button>
+ +

Floating Action

+ +
+ + + + + + + +
+
<button type="button" class="btn btn-primary bmd-btn-fab">
+  <i class="material-icons">grade</i>
+</button>
+<button type="button" class="btn btn-secondary bmd-btn-fab">
+  <i class="material-icons">grade</i>
+</button>
+<button type="button" class="btn btn-success bmd-btn-fab">
+  <i class="material-icons">grade</i>
+</button>
+<button type="button" class="btn btn-info bmd-btn-fab">
+  <i class="material-icons">grade</i>
+</button>
+<button type="button" class="btn btn-warning bmd-btn-fab">
+  <i class="material-icons">grade</i>
+</button>
+<button type="button" class="btn btn-danger bmd-btn-fab">
+  <i class="material-icons">grade</i>
+</button>
+<button type="button" class="btn btn-danger bmd-btn-fab active">
+  <i class="material-icons">grade</i>
+</button>
+ +

Disabled

+ +
+
+ + + + + + +
+
+
<fieldset disabled>
+  <button type="button" class="btn btn-primary bmd-btn-fab">
+    <i class="material-icons">grade</i>
+  </button>
+  <button type="button" class="btn btn-secondary bmd-btn-fab">
+    <i class="material-icons">grade</i>
+  </button>
+  <button type="button" class="btn btn-success bmd-btn-fab">
+    <i class="material-icons">grade</i>
+  </button>
+  <button type="button" class="btn btn-info bmd-btn-fab">
+    <i class="material-icons">grade</i>
+  </button>
+  <button type="button" class="btn btn-warning bmd-btn-fab">
+    <i class="material-icons">grade</i>
+  </button>
+  <button type="button" class="btn btn-danger bmd-btn-fab">
+    <i class="material-icons">grade</i>
+  </button>
+</fieldset>
+ +

Sizes

+ +

Using bmd-btn-fab-sm on the button, or using btn-group-sm on the enclosing element of a bmd-btn-fab renders a small variation.

+ +
+ + + + + + + + +
+
<span class="btn-group-lg">
+  <button type="button" class="btn btn-danger bmd-btn-fab">
+    <i class="material-icons">grade</i>
+  </button>
+</span>
+<button type="button" class="btn btn-danger bmd-btn-fab">
+  <i class="material-icons">grade</i>
+</button>
+<button type="button" class="btn btn-danger bmd-btn-fab bmd-btn-fab-sm">
+  <i class="material-icons">grade</i>
+</button>
+<span class="btn-group-sm">
+  <button type="button" class="btn btn-danger bmd-btn-fab">
+    <i class="material-icons">grade</i>
+  </button>
+</span>
+ +

Icon

+ +
+ + + + + + + +
+
<button type="button" class="btn btn-primary bmd-btn-icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<button type="button" class="btn btn-secondary bmd-btn-icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<button type="button" class="btn btn-success bmd-btn-icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<button type="button" class="btn btn-info bmd-btn-icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<button type="button" class="btn btn-warning bmd-btn-icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<button type="button" class="btn btn-danger bmd-btn-icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<button type="button" class="btn btn-danger bmd-btn-icon active">
+  <i class="material-icons">more_vert</i>
+</button>
+ +

Disabled

+ +
+
+ + + + + + +
+
+
<fieldset disabled>
+  <button type="button" class="btn btn-primary bmd-btn-icon">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <button type="button" class="btn btn-secondary bmd-btn-icon">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <button type="button" class="btn btn-success bmd-btn-icon">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <button type="button" class="btn btn-info bmd-btn-icon">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <button type="button" class="btn btn-warning bmd-btn-icon">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <button type="button" class="btn btn-danger bmd-btn-icon">
+    <i class="material-icons">more_vert</i>
+  </button>
+</fieldset>
+ +

Sizes

+ +

Using bmd-btn-icon-sm on the button, or using btn-group-sm on the enclosing element of a bmd-btn-icon renders a small variation.

+ +
+ + + + + +
+
<button type="button" class="btn bmd-btn-icon">
+  <i class="material-icons">more_vert</i>
+</button>
+<button type="button" class="btn bmd-btn-icon bmd-btn-icon-sm">
+  <i class="material-icons">more_vert</i>
+</button>
+<span class="btn-group-sm">
+  <button type="button" class="btn bmd-btn-icon">
+    <i class="material-icons">more_vert</i>
+  </button>
+</span>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/collapse-inline/index.html b/docs/4.0/material-design/collapse-inline/index.html new file mode 100644 index 00000000..53d00c9c --- /dev/null +++ b/docs/4.0/material-design/collapse-inline/index.html @@ -0,0 +1,1329 @@ + + + + + + + + + Collapse inline · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Collapse inline

+

+ + +

The Material Design for Bootstrap CollapseInline plugin allows you to toggle inline content on your pages with a bit of JavaScript and some classes. This plugin utilizes a handful of classes from the Bootstrap collapse plugin for easy toggle behavior. Since most functionality and documentation (including a rich set of Javascript events) is already provided by the Bootstrap collapse plugin, the following will focus only on some samples utilizing the BMD CollapseInline component.

+ +

Contents

+ + + +

Classes

+ +

Below is a list of relevant classes options:

+ + + + + + + + + + + + + + + + + +
ClassesNotes
+ .bmd-collapse-inline + +

Marker class. It is usually included on the .bmd-form-group if the collapse scenario has any inputs.

+ +
+ .collapse +

A bootstrap class signifying the container element for markup that will be initially hidden, but expanded inline.

+ +
+ +

Behavior

+ +
    +
  • On shown.bs.collapse (full visibility), the plugin will find the first input of any type and call focus().
  • +
  • On blur of the input element, the plugin will call .collapse('hide') to collapse the container.
  • +
+ +

Example: Search field triggered by an icon button

+ +

Click the search icon below (on the right).

+ +
+
+ + + + +
+
+
<div class="bmd-form-group bmd-collapse-inline pull-xs-right">
+  <button class="btn bmd-btn-icon" for="search" data-toggle="collapse" data-target="#collapse-search" aria-expanded="false" aria-controls="collapse-search">
+    <i class="material-icons">search</i>
+  </button>  
+  <span id="collapse-search" class="collapse">
+    <input class="form-control" type="text" id="search" placeholder="Enter your query...">
+  </span>
+</div>
+ +

Javascript event example

+ +

Behavior customization can be achieved by responding to the collapse plugin’s Javascript events.

+ +

For example, the following code would clear the search input field after collapsing it:

+ +
  // clear field value once closed
+  $(function() {
+    $('#collapse-search').on('hidden.bs.collapse', function() {
+      $('#search').val('')
+    })
+  });
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/drawers/index.html b/docs/4.0/material-design/drawers/index.html new file mode 100644 index 00000000..815c53be --- /dev/null +++ b/docs/4.0/material-design/drawers/index.html @@ -0,0 +1,1765 @@ + + + + + + + + + Drawers · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Drawers

+

+ + +

The Material Design for Bootstrap Drawer provides a markup structure and plugin that allows you to display content on the bounds of any containing element. Drawers are commonly referred to as a side nav or offcanvas nav. The BMD implementation allows for positioning top, left, bottom, right, as well as two styles including push (default) as well as overlay. Both the drawer position and style can be set statically or responsively with the provided classes.

+ +

Contents

+ + + +

Overview

+ +

Templates and examples

+ +

The following examples provide a good starting point:

+ + + +

Behavior

+ +

The default behavior for any drawer is to be out of the frame of view. It can be set in the frame of view either by using using one of the gridpoint responsive classes such as bmd-drawer-in-lg-up, or by using bmd-drawer-in. Any drawer, be it responsive or statically set to in can be forced out by using bmd-drawer-out.

+ +

Markup

+ +

In order to use the drawer component you must use BMD’s flex based layout structure. If this layout structure is not a direct child of <body>, be sure that the containing element has set position: relative as this layout structure utilizes an outer element that is absolutely positioned in order to enable features such as content scrolling and sticky header.

+ +
<div class="bmd-layout-container">
+  <header class="bmd-layout-header"> </header>
+  <div class="bmd-layout-drawer"> </div>
+  <main class="bmd-layout-content"> </main>
+</div>
+ +

Toggle

+ +

A manual drawer toggle can be integrated with data attributes. For responsive display or hiding, use the standard Bootstrap classes. The following example will target a drawer with the id of my-drawer

+ +
<button class="navbar-toggler hidden-lg-up" data-toggle="drawer" data-target="#my-drawer" type="button">
+  <span class="sr-only">Toggle drawer</span>
+  <i class="material-icons">menu</i>
+</button>
+ +

Styles

+ +

Push

+ +

The default behavior is for content to be pushed.

+ +
+
+
+ +
+
+
+ Title +
+ +
+
+
+

Main content

+
+
+
+
+
<div class="bmd-layout-container bmd-drawer-f-l">
+  <header class="bmd-layout-header">
+    <div class="navbar navbar-light bg-faded">
+      <button class="navbar-toggler" type="button" data-toggle="drawer" data-target="#dw-s1">
+        <span class="sr-only">Toggle drawer</span>
+        <i class="material-icons">menu</i>
+      </button>
+      <ul class="nav navbar-nav">
+        <li class="nav-item">Title</li>
+      </ul>
+    </div>
+  </header>
+  <div id="dw-s1" class="bmd-layout-drawer bg-faded">
+    <header>
+      <a class="navbar-brand">Title</a>
+    </header>
+    <ul class="list-group">
+      <a class="list-group-item">Link 1</a>
+      <a class="list-group-item">Link 2</a>
+      <a class="list-group-item">Link 3</a>
+    </ul>
+  </div>
+  <main class="bmd-layout-content">
+    <div class="container">
+      <p>Main content</p>
+    </div>
+  </main>
+</div>
+ +

Overlay

+

Optional behavior will overlay the drawer and provide a backdrop. This can be marked with bmd-drawer-overlay to always overlay, or you can use a responsive class such as bmd-drawer-overlay-md-down.

+ +
+
+
+ +
+
+
+ Title +
+ +
+
+
+

Main content

+
+
+
+
+
<div class="bmd-layout-container bmd-drawer-f-l bmd-drawer-overlay">
+  <header class="bmd-layout-header">
+    <div class="navbar navbar-light bg-faded">
+      <button class="navbar-toggler" type="button" data-toggle="drawer" data-target="#dw-s2">
+        <span class="sr-only">Toggle drawer</span>
+        <i class="material-icons">menu</i>
+      </button>
+      <ul class="nav navbar-nav">
+        <li class="nav-item">Title</li>
+      </ul>
+    </div>
+  </header>
+  <div id="dw-s2" class="bmd-layout-drawer bg-faded">
+    <header>
+      <a class="navbar-brand">Title</a>
+    </header>
+    <ul class="list-group">
+      <a class="list-group-item">Link 1</a>
+      <a class="list-group-item">Link 2</a>
+      <a class="list-group-item">Link 3</a>
+    </ul>
+  </div>
+  <main class="bmd-layout-content">
+    <div class="container">
+      <p>Main content</p>
+    </div>
+  </main>
+</div>
+ +

Positions

+ +

The following positioning marker classes should be placed on the bmd-layout-container element:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ClassesNotes
+ .bmd-drawer-f-t + +

Fixed top

+ +
+ .bmd-drawer-f-r + +

Fixed right

+ +
+ .bmd-drawer-f-b + +

Fixed bottom

+ +
+ .bmd-drawer-f-l + +

Fixed left

+ +
+ +

Fixed left

+ +
+
+
+ +
+
+
+ Title +
+ +
+
+
+ +
+
+
+
+
<div class="bmd-layout-container bmd-drawer-f-l bmd-drawer-overlay">
+  <header class="bmd-layout-header">
+    <div class="navbar navbar-light bg-faded">
+      <button class="navbar-toggler" type="button" data-toggle="drawer" data-target="#dw-p1">
+        <span class="sr-only">Toggle drawer</span>
+        <i class="material-icons">menu</i>
+      </button>
+      <ul class="nav navbar-nav">
+        <li class="nav-item">Title</li>
+      </ul>
+    </div>
+  </header>
+  <div id="dw-p1" class="bmd-layout-drawer bg-faded">
+    <header>
+      <a class="navbar-brand">Title</a>
+    </header>
+    <ul class="list-group">
+      <a class="list-group-item">Link 1</a>
+      <a class="list-group-item">Link 2</a>
+      <a class="list-group-item">Link 3</a>
+    </ul>
+  </div>
+  <main class="bmd-layout-content">
+    <div class="container">
+      <!-- main content -->
+    </div>
+  </main>
+</div>
+ +

Fixed right

+ +
+
+
+ +
+
+
+ Title +
+ +
+
+
+ +
+
+
+
+
<div class="bmd-layout-container bmd-drawer-f-r bmd-drawer-overlay">
+  <header class="bmd-layout-header">
+    <div class="navbar navbar-light bg-faded">
+      <button class="navbar-toggler" type="button" data-toggle="drawer" data-target="#dw-p2">
+        <span class="sr-only">Toggle drawer</span>
+        <i class="material-icons">menu</i>
+      </button>
+      <ul class="nav navbar-nav">
+        <li class="nav-item">Title</li>
+      </ul>
+    </div>
+  </header>
+  <div id="dw-p2" class="bmd-layout-drawer bg-faded">
+    <header>
+      <a class="navbar-brand">Title</a>
+    </header>
+    <ul class="list-group">
+      <a class="list-group-item">Link 1</a>
+      <a class="list-group-item">Link 2</a>
+      <a class="list-group-item">Link 3</a>
+    </ul>
+  </div>
+  <main class="bmd-layout-content">
+    <div class="container">
+      <!-- main content -->
+    </div>
+  </main>
+</div>
+ +

Fixed top

+ +
+
+
+ +
+
+
+ Title +
+ +
+
+
+ +
+
+
+
+
<div class="bmd-layout-container bmd-drawer-f-t bmd-drawer-overlay">
+  <header class="bmd-layout-header">
+    <div class="navbar navbar-light bg-faded">
+      <button class="navbar-toggler" type="button" data-toggle="drawer" data-target="#dw-p3">
+        <span class="sr-only">Toggle drawer</span>
+        <i class="material-icons">menu</i>
+      </button>
+      <ul class="nav navbar-nav">
+        <li class="nav-item">Title</li>
+      </ul>
+    </div>
+  </header>
+  <div id="dw-p3" class="bmd-layout-drawer bg-faded">
+    <header>
+      <a class="navbar-brand">Title</a>
+    </header>
+    <ul class="list-group">
+      <a class="list-group-item">Link 1</a>
+      <a class="list-group-item">Link 2</a>
+      <a class="list-group-item">Link 3</a>
+    </ul>
+  </div>
+  <main class="bmd-layout-content">
+    <div class="container">
+      <!-- main content -->
+    </div>
+  </main>
+</div>
+ +

Fixed bottom

+ +
+
+
+ +
+
+
+ Title +
+ +
+
+
+ +
+
+
+
+
<div class="bmd-layout-container bmd-drawer-f-b bmd-drawer-overlay">
+  <header class="bmd-layout-header">
+    <div class="navbar navbar-light bg-faded">
+      <button class="navbar-toggler" type="button" data-toggle="drawer" data-target="#dw-p4">
+        <span class="sr-only">Toggle drawer</span>
+        <i class="material-icons">menu</i>
+      </button>
+      <ul class="nav navbar-nav">
+        <li class="nav-item">Title</li>
+      </ul>
+    </div>
+  </header>
+  <div id="dw-p4" class="bmd-layout-drawer bg-faded">
+    <header>
+      <a class="navbar-brand">Title</a>
+    </header>
+    <ul class="list-group">
+      <a class="list-group-item">Link 1</a>
+      <a class="list-group-item">Link 2</a>
+      <a class="list-group-item">Link 3</a>
+    </ul>
+  </div>
+  <main class="bmd-layout-content">
+    <div class="container">
+      <!-- main content -->
+    </div>
+  </main>
+</div>
+ +

Customization

+ +

Variables

+ +

Globally, you may alter the size of x vs y drawers with the following variables:

+ +
    +
  • $bmd-drawer-x-size
  • +
  • $bmd-drawer-y-size
  • +
+ +

Custom responsive drawer

+ +

The following will create x drawers (left/right) at the size of 500px that will respond to both marker classes and grid-based responsive classes such as bmd-drawer-in-lg-up:

+ +
.kitchen-sink-drawer {
+  $custom-size: 500px;
+  @include bmd-drawer-x-out($custom-size);
+  &:not(.bmd-drawer-out) {
+    @each $breakpoint in map-keys($grid-breakpoints) {
+      @include bmd-drawer-x-in-up($custom-size, $breakpoint);
+    }
+  }
+}
+ +

Custom static drawer

+ +

The following generates a custom drawer at the size of 500px that is out by default and can be triggered in with bmd-drawer-in.

+ +
.kitchen-sink-drawer-static {
+  $custom-size: 500px;
+  @include bmd-drawer-x-out($custom-size); // closed by default
+  @include bmd-drawer-x-in($custom-size); // triggered with bmd-drawer-in
+  @include bmd-drawer-x-overlay(); // overlay by default, no other classes necessary
+}
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/extensions/index.html b/docs/4.0/material-design/extensions/index.html new file mode 100644 index 00000000..5e99d3c2 --- /dev/null +++ b/docs/4.0/material-design/extensions/index.html @@ -0,0 +1,1246 @@ + + + + + + + + + Extensions · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Extensions

+

+ + +

Material Design for Bootstrap provides seamlessly integration with some extensions.

+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/forms/index.html b/docs/4.0/material-design/forms/index.html new file mode 100644 index 00000000..ee5a76d5 --- /dev/null +++ b/docs/4.0/material-design/forms/index.html @@ -0,0 +1,1572 @@ + + + + + + + + + Forms · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Forms

+

+ + +

Bootstrap provides several form control styles, layout options, and custom components for creating a wide variety of forms.

+ +

Contents

+ + + +

Form controls flavored by Material Design for Bootstrap customizations such as bmd-label-floating.

+ +
+
+
+ + + We'll never share your email with anyone else. +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + + This is some placeholder block-level help text for the above input. It's a bit lighter and easily wraps to a new line. +
+
+ +
+
+ +
+
+ +
+
+ +
+ + +
+
+
<form>
+  <div class="form-group">
+    <label for="exampleInputEmail1" class="bmd-label-floating">Email address</label>
+    <input type="email" class="form-control" id="exampleInputEmail1">
+    <span class="bmd-help">We'll never share your email with anyone else.</span>
+  </div>
+  <div class="form-group">
+    <label for="exampleInputPassword1" class="bmd-label-floating">Password</label>
+    <input type="password" class="form-control" id="exampleInputPassword1">
+  </div>
+  <div class="form-group">
+    <label for="exampleSelect1" class="bmd-label-floating">Example select</label>
+    <select class="form-control" id="exampleSelect1">
+      <option>1</option>
+      <option>2</option>
+      <option>3</option>
+      <option>4</option>
+      <option>5</option>
+    </select>
+  </div>
+  <div class="form-group">
+    <label for="exampleSelect2" class="bmd-label-floating">Example multiple select</label>
+    <select multiple class="form-control" id="exampleSelect2">
+      <option>1</option>
+      <option>2</option>
+      <option>3</option>
+      <option>4</option>
+      <option>5</option>
+    </select>
+  </div>
+  <div class="form-group">
+    <label for="exampleTextarea" class="bmd-label-floating">Example textarea</label>
+    <textarea class="form-control" id="exampleTextarea" rows="3"></textarea>
+  </div>
+  <div class="form-group">
+    <label for="exampleInputFile" class="bmd-label-floating">File input</label>
+    <input type="file" class="form-control-file" id="exampleInputFile">
+    <small class="text-muted">This is some placeholder block-level help text for the above input. It's a bit lighter and easily wraps to a new line.</small>
+  </div>
+  <div class="radio">
+    <label>
+      <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
+      Option one is this and that&mdash;be sure to include why it's great
+    </label>
+  </div>
+  <div class="radio">
+    <label>
+      <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
+      Option two can be something else and selecting it will deselect option one
+    </label>
+  </div>
+  <div class="radio disabled">
+    <label>
+      <input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled>
+      Option three is disabled
+    </label>
+  </div>
+  <div class="checkbox">
+    <label>
+      <input type="checkbox"> Check me out
+    </label>
+  </div>
+  <button class="btn btn-default">Cancel</button>
+  <button type="submit" class="btn btn-primary btn-raised">Submit</button>
+</form>
+ +

Classes

+ +

Below is a complete list of options supported by Material Design for Bootstrap and the classes that customize them. Additional documentation is available for each group.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassesUsed forNotes
+ .bmd-form-group + + Any group of form controls (e.g. combination of label/input). + +

This is automatically added by javascript, but if your code is templated, adding .bmd-form-group + to your form groups or otherwise your groups of controls can reduce rendering churn since the javascript will not + add the class after the initial page rendering. This can also demarcate complex label/input combinations inside the + same .form-group.

+ +
+ .bmd-form-group-sm + +

Added to the .bmd-form-group, this will render the combination label/input/help in the smaller variation.

+ +
+ +
+ .bmd-form-group-lg + +

Added to the .bmd-form-group, this will render the combination label/input/help in the larger variation.

+ +
+ +
+ .bmd-help + + Any help text + +

Mark any help text next to an input with .bmd-help to gain behaviors such as showing upon focus.

+ +
+ +

Form groups

+ +

The .bmd-form-group class is usually added to the .form-group element. Whereas the .form-group adds structure to forms by providing margin-bottom around a label and control pairing, + the only purpose of the .bmd-form-group is to demarcate Material Design behaviors for a combination of label/input. Focus/hover styling for the label/input is determined based on the .bmd-form-group.

+ +

The .bmd-form-group is added automatically by javascript through basic discovery of the outer demarcation of the component defined by the Bootstrap standard +markup. If your code is templated, you may want to add .bmd-form-group to the markup directly to prevent any rendering churn from the javascript determining +and adding the class to the markup. In custom situations, the javascript may not be able to properly resolve the location for the .bmd-form-group, so in rare or complex cases +you may need to wrap your markup in an .bmd-form-group to get appropriate focus/hover behavior.

+ +
+
+
+ + +
+
+ + +
+
+
+
<form>
+  <div class="form-group"> <!-- left unspecified, .bmd-form-group will be automatically added (inspect the code) -->
+    <label for="formGroupExampleInput" class="bmd-label-floating">Example label</label>
+    <input type="text" class="form-control" id="formGroupExampleInput">
+  </div>
+  <div class="form-group bmd-form-group"> <!-- manually specified --> 
+    <label for="formGroupExampleInput2" class="bmd-label-floating">Another label</label>
+    <input type="text" class="form-control" id="formGroupExampleInput2">
+  </div>
+</form>
+ +

Inline forms

+ +

Use the .form-inline class to to display a series of labels, form controls, and buttons on a single horizontal row. Form controls within inline forms behave differently:

+ +
    +
  • Controls are display: inline-block to provide alignment control via vertical-align and margin.
  • +
  • Controls receive width: auto to override the Bootstrap default width: 100%.
  • +
  • Controls only appear inline in viewports that are at least 768px wide to account for narrow viewports on mobile devices.
  • +
+ +

Because of this, you may need to manually address the width and alignment of individual form controls. Lastly, as shown below, you should always include a <label> with each form control.

+ +

Visible labels

+ +
+
+
+ + +
+
+ + +
+ + + +
+
+
<form class="form-inline">
+  <div class="form-group">
+    <label for="exampleInputName2" class="bmd-label-floating">Name</label>
+    <input type="text" class="form-control" id="exampleInputName2">
+  </div>
+  <div class="form-group">
+    <label for="exampleInputEmail2" class="bmd-label-floating">Email</label>
+    <input type="email" class="form-control" id="exampleInputEmail2">
+  </div>
+  <span class="form-group bmd-form-group"> <!-- needed to match padding for floating labels -->
+    <button type="submit" class="btn btn-primary">Send invitation</button>
+  </span>
+</form>
+ +

Help blocks

+ +

bmd-help can be used for form tips (known as help-block in v3 which has been removed in v4). These elements are absolutely positioned but hidden, they occupy the space when hidden to prevent form bouncing.

+ +

Multiple

+ +

Multiple help blocks will cause the form to bounce because subsequent blocks are relatively positioned. The space used when hidden is that of a single help comment only.

+ +
+
+
+ + + We'll never share your email with anyone else. + And this is probably from a second plugin showing in a non-optimal way +
+
+ + +
+
+
+
<form>
+  <div class="form-group">
+    <label for="exampleInputEmail1" class="bmd-label-floating">Email address (two help blocks)</label>
+    <input type="email" class="form-control" id="exampleInputEmail1">
+    <span class="bmd-help">We'll never share your email with anyone else.</span>
+    <span class="bmd-help">And this is probably from a second plugin showing in a non-optimal way</span>
+  </div>
+  <div class="form-group">
+    <label for="exampleInputPassword1" class="bmd-label-floating">Password</label>
+    <input type="password" class="form-control" id="exampleInputPassword1">
+  </div>  
+</form>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/labels/index.html b/docs/4.0/material-design/labels/index.html new file mode 100644 index 00000000..a3f5a666 --- /dev/null +++ b/docs/4.0/material-design/labels/index.html @@ -0,0 +1,1342 @@ + + + + + + + + + Labels · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Labels

+

+ + +

Below is a complete list of <label> class options supported by Material Design for Bootstrap:

+ + + + + + + + + + + + + + + + + + + + + + +
ClassesNotes
+ .bmd-label-static + +

Statically positioned above the input

+ +
+ .bmd-label-placeholder + + +

Renders a <label> as a placeholder

+ +
    +
  • focused: not visible after first keystroke
  • +
  • unfocused & empty: placeholder
  • +
  • unfocused & filled: not visible
  • +
  • do not use the placeholder attribute with this option
  • +
+ +
+ .bmd-label-floating + + +

Animated combination of placeholder and label:

+ +
    +
  • focused: label animates from placeholder to static label
  • +
  • unfocused & empty: placeholder
  • +
  • unfocused & filled: renders the same as .bmd-label-static
  • +
+ +
+ +

Contents

+ + + +

Styles

+ +
+
+
+ + + We'll never share your email with anyone else. +
+
+ + + We'll never share your email with anyone else. +
+
+ + + We'll never share your email with anyone else. +
+
+
+
<form>
+  <fieldset class="form-group">
+    <label for="exampleInputEmail1" class="bmd-label-static">label-static</label>
+    <input type="email" class="form-control" id="exampleInputEmail1" placeholder="placeholder text">
+    <span class="bmd-help">We'll never share your email with anyone else.</span>
+  </fieldset>
+  <fieldset class="form-group">
+    <label for="exampleInputEmail1" class="bmd-label-floating">label-floating</label>
+    <input type="email" class="form-control" id="exampleInputEmail1">
+    <span class="bmd-help">We'll never share your email with anyone else.</span>
+  </fieldset>
+  <fieldset class="form-group">
+    <label for="exampleInputEmail1" class="bmd-label-placeholder">label-placeholder</label>
+    <input type="email" class="form-control" id="exampleInputEmail1">
+    <span class="bmd-help">We'll never share your email with anyone else.</span>
+  </fieldset>
+</form>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/list-groups/index.html b/docs/4.0/material-design/list-groups/index.html new file mode 100644 index 00000000..cd1fdb99 --- /dev/null +++ b/docs/4.0/material-design/list-groups/index.html @@ -0,0 +1,1691 @@ + + + + + + + + + List groups · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

List groups

+

+ + +

Material design list groups are specialized versions of their bootstrap counterparts, opting for the flexbox layout to achieve +the varieties specified. (Specification)

+ +

Contents

+ + + +

Single line

+ +

Text

+ +
+ +
+
<ul class="list-group">
+  <li class="list-group-item">Text only</li>
+  <a href="#" class="list-group-item">Link item</a>
+  <button type="button" class="list-group-item">Button item</button>
+  <a href="#" class="list-group-item active">Active link item</a>
+  <a href="#" class="list-group-item disabled">Disabled item</a>
+</ul>
+ +

Dense

+ +
+ +
+
<ul class="list-group bmd-list-group-sm">
+  <li class="list-group-item">Text</li>
+  <a href="#" class="list-group-item">Link item</a>
+  <button type="button" class="list-group-item">Button item</button>
+  <a href="#" class="list-group-item active">Active link item</a>
+  <a href="#" class="list-group-item disabled">Disabled item</a>
+</ul>
+ +

Icons and labels

+ + +
<ul class="list-group">
+  <a class="list-group-item">
+    <i class="material-icons">inbox</i>
+    Icon left
+  </a>
+  <a class="list-group-item">
+    <span class="label label-default label-pill">14</span>
+    Label pill left
+  </a>  
+  
+  <a class="list-group-item">
+    <i class="material-icons">inbox</i>
+    Icons left and right
+    <i class="material-icons">face</i>
+  </a>
+  <a class="list-group-item">
+    <span class="label label-default label-pill">14</span>
+    Label pill left and right
+    <span class="label label-default label-pill">14</span>
+  </a>  
+
+  <a class="list-group-item">
+    Icon right
+    <i class="material-icons pull-xs-right">face</i>
+  </a>
+  <a class="list-group-item">
+    Label pill right
+    <span class="label label-default label-pill pull-xs-right">14</span>
+  </a>  
+  
+  <a class="list-group-item">
+    <span class="label label-default label-pill">14</span>
+    Label pill and icon
+    <i class="material-icons">inbox</i>
+  </a>  
+  <a class="list-group-item">
+    <i class="material-icons">inbox</i>
+    Icon and label pill
+    <span class="label label-default label-pill">14</span>
+  </a>  
+</ul>
+ +

Double line

+ +

Text

+ + +
<ul class="list-group">
+  <a class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Some text</p>
+    </div>
+  </a>
+  <a class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Some text</p>
+    </div>
+  </a>
+  <a class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Some text</p>
+    </div>
+  </a>  
+</ul>
+ +

Dense

+ + +
<ul class="list-group bmd-list-group-sm">
+  <a class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Some text</p>
+    </div>
+  </a>
+  <a class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Some text</p>
+    </div>
+  </a>
+  <a class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Some text</p>
+    </div>
+  </a>  
+</ul>
+ +

Icons and labels

+ + +
<ul class="list-group">
+  <a class="list-group-item">
+    <i class="material-icons">inbox</i>
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Icon left</p>
+    </div>
+  </a>
+
+  <a class="list-group-item">
+    <span class="label label-default label-pill">14</span>
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Icon left</p>
+    </div>
+  </a>
+
+  <a class="list-group-item">
+    <i class="material-icons">inbox</i>
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Icons left and right</p>
+    </div>
+    <i class="material-icons">face</i>
+  </a>
+
+  <a class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Icon right</p>
+    </div>
+    <i class="material-icons pull-xs-right">face</i>
+  </a>
+
+  <a class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">List group item heading</p>
+      <p class="list-group-item-text">Label pill to the right</p>
+    </div>
+    <span class="label label-default label-pill pull-xs-right">14</span>
+  </a>
+</ul>
+ +

Three line

+ +

Text

+ +
+ +
+
<ul class="list-group">
+  <a class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">Linked list group item heading</p>
+      <p class="list-group-item-text">This disallows more than two lines.  Hopefully an ellipsis ends this text.  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ut malesuada elit. Proin tristique, lorem eu vehicula congue, lectus ipsum porta quam, eget rutrum sapien turpis et libero.</p>
+    </div>
+  </a>
+  <li class="list-group-item">
+    <div class="bmd-list-group-col">
+      <p class="list-group-item-heading">Text list group item heading</p>
+      <p class="list-group-item-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ut malesuada elit. Proin tristique, lorem eu vehicula congue, lectus ipsum porta quam, eget rutrum sapien turpis et libero.</p>
+    </div>
+  </li>
+</ul>
+ +

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassesBS EquivalentDifferences
+ .list-group-item + + .list-group-item + +

Flexbox layout, including conveniences for icon and label layout.

+ +
+ .bmd-list-group-col + +

None

+ +
+

Flexbox column - additional class to use within an .list-group-item for layout, such as a multi-line content section.

+ +
+ .bmd-list-group-sm + +

None

+ +
+

Use on .bmd-list-group for the dense list display

+ +
+ +

Variables

+ +

See variables/_list-group.scss for a complete list of variables. Key variables are below:

+ + + + + + + + + + + + + + + + +
VariableValueComment
+ $list-group-bg + + inherit + +

Original value was #fff, but it seemed that too often list-groups needed the background to be inherited from the underlying container.

+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/menus/index.html b/docs/4.0/material-design/menus/index.html new file mode 100644 index 00000000..0335a659 --- /dev/null +++ b/docs/4.0/material-design/menus/index.html @@ -0,0 +1,1529 @@ + + + + + + + + + Menus · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Menus

+

+ + +

Bootstrap users know these as dropdowns, but these are also known as menus in the Material Design specification.

+ +

Contents

+ + + +

Styles

+ +

Icon with buttons

+ +
+ +
+
<div class="dropdown">
+  <button class="btn bmd-btn-icon dropdown-toggle" type="button" id="ex1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <div class="dropdown-menu dropdown-menu-left" aria-labelledby="ex1">
+    <button class="dropdown-item" type="button">Action</button>
+    <button class="dropdown-item disabled" type="button">Another action</button>
+    <button class="dropdown-item" type="button">Another action</button>
+  </div>
+</div>
+ + + +
+
+ + +
+
+
<div class="btn-group">
+  <button class="btn bmd-btn-icon dropdown-toggle" type="button" id="ex2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <i class="material-icons">more_vert</i>
+  </button>  
+  <div class="dropdown-menu dropdown-menu-left" aria-labelledby="ex2">
+    <a class="dropdown-item" href="#">Regular link</a>
+    <a class="dropdown-item disabled" href="#">Disabled link</a>
+    <a class="dropdown-item" href="#">Another link</a>
+  </div>
+</div>
+ +

Small fab

+ +
+
+ + +
+
+
<div class="btn-group">
+  <button class="btn bmd-btn-fab bmd-btn-fab-sm dropdown-toggle" type="button" id="ex3" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <div class="dropdown-menu  dropdown-menu-left" aria-labelledby="ex3">
+    <button class="dropdown-item" type="button">Action</button>
+    <button class="dropdown-item" type="button">Another action</button>
+  </div>
+</div>
+ +

Default fab

+ +
+
+ + +
+
+
<div class="btn-group">
+  <button class="btn bmd-btn-fab dropdown-toggle" type="button" id="ex4" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <div class="dropdown-menu dropdown-menu-left" aria-labelledby="ex4">
+    <button class="dropdown-item" type="button">Action</button>
+    <button class="dropdown-item" type="button">Another action</button>
+  </div>
+</div>
+ +

Default button

+ +
+
+ + +
+
+
<div class="btn-group open">
+  <button class="btn dropdown-toggle" type="button" id="buttonMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Dropdown
+  </button>
+  <div class="dropdown-menu" aria-labelledby="buttonMenu1">
+    <a class="dropdown-item" href="#">Action</a>
+    <a class="dropdown-item" href="#">Another action</a>
+    <a class="dropdown-item" href="#">Something else here</a>
+  </div>
+</div>
+ +

Alignment

+ +

Lower left side

+ +
+
+ + +
+
+
<div class="btn-group open">
+  <button class="btn bmd-btn-icon dropdown-toggle" type="button" id="ll1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <div class="dropdown-menu dropdown-menu-left" aria-labelledby="ll1">
+    <button class="dropdown-item" type="button">Action</button>
+    <button class="dropdown-item" type="button">Another action</button>
+    <button class="dropdown-item disabled" type="button">Disabled action</button>
+    <div class="dropdown-divider"> </div>
+    <a class="dropdown-item" href="#">Separated link</a>
+  </div>
+</div>
+ +

Lower right side

+ +

dropdown usage misaligned - see upstream Bootstrap issue #18552. Use btn-group instead until issue is resolved (next example).

+ +
+ +
+
<div class="dropdown open pull-xs-right">
+  <button class="btn bmd-btn-icon dropdown-toggle" type="button" id="lr1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <div class="dropdown-menu dropdown-menu-right" aria-labelledby="lr1">
+    <button class="dropdown-item" type="button">Action</button>
+    <button class="dropdown-item" type="button">Another action</button>
+    <button class="dropdown-item disabled" type="button">Disabled action</button>
+    <div class="dropdown-divider"> </div>
+    <a class="dropdown-item" href="#">Separated link</a>
+  </div>
+</div>
+ +

btn-group usage works fine in this alignment.

+ +
+
+ + +
+
+
<div class="btn-group open pull-xs-right">
+  <button class="btn bmd-btn-icon dropdown-toggle" type="button" id="lr2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <div class="dropdown-menu dropdown-menu-right" aria-labelledby="lr2">
+    <button class="dropdown-item" type="button">Action</button>
+    <button class="dropdown-item" type="button">Another action</button>
+    <button class="dropdown-item disabled" type="button">Disabled action</button>
+    <div class="dropdown-divider"> </div>
+    <a class="dropdown-item" href="#">Separated link</a>
+  </div>
+</div>
+ +

Widths

+ +

Minimum width

+ +
+
+ + +
+
+
<div class="btn-group open pull-xs-right">
+  <button class="btn bmd-btn-icon dropdown-toggle" type="button" id="mw1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <div class="dropdown-menu dropdown-menu-right" aria-labelledby="mw1">
+    <button class="dropdown-item" type="button">A</button>
+    <button class="dropdown-item" type="button">B</button>
+  </div>
+</div>
+ +

Maximum width

+ +
+
+ + +
+
+
<div class="btn-group open pull-xs-right">
+  <button class="btn bmd-btn-icon dropdown-toggle" type="button" id="mw2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <i class="material-icons">more_vert</i>
+  </button>
+  <div class="dropdown-menu dropdown-menu-right" aria-labelledby="mw2">
+    <button class="dropdown-item" type="button">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ut malesuada elit. Proin tristique, lorem eu vehicula congue, lectus ipsum porta quam, eget rutrum sapien turpis et libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ut malesuada elit. Proin tristique, lorem eu vehicula congue, lectus ipsum porta quam, eget rutrum sapien turpis et libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ut malesuada elit. Proin tristique, lorem eu vehicula congue, lectus ipsum porta quam, eget rutrum sapien turpis et libero.</button>
+    <button class="dropdown-item" type="button">Another action</button>
+  </div>
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/navs/index.html b/docs/4.0/material-design/navs/index.html new file mode 100644 index 00000000..13aa182b --- /dev/null +++ b/docs/4.0/material-design/navs/index.html @@ -0,0 +1,1347 @@ + + + + + + + + + Navs · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Navs

+

+ + +

Navigation available in Bootstrap share general markup and styles, from the base .nav class to the active and disabled states. Swap modifier classes to switch between each style.

+ +

Contents

+ + + +

Tabs

+ +
+ + + + + + + +
+
<ul class="nav nav-tabs">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Another link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+
+<!-- inverse -->
+<ul class="nav nav-tabs bg-inverse">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Another link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+
+<!-- primary -->
+<ul class="nav nav-tabs bg-primary">
+  <li class="nav-item">
+    <a class="nav-link active" href="#">Active</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link" href="#">Another link</a>
+  </li>
+  <li class="nav-item">
+    <a class="nav-link disabled" href="#">Disabled</a>
+  </li>
+</ul>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/selections/index.html b/docs/4.0/material-design/selections/index.html new file mode 100644 index 00000000..ddc17f6a --- /dev/null +++ b/docs/4.0/material-design/selections/index.html @@ -0,0 +1,1421 @@ + + + + + + + + + Selections · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Selections

+

+ + +

Contents

+ + + +

Switches

+ +
+
+
+ +
+
+ +
+
+ +
+
+
+
<form>
+  <div class="switch">
+    <label>
+      <input type="checkbox" checked>
+      Wi-Fi
+    </label>
+  </div>
+  <div class="switch">
+    <label>
+      <input type="checkbox">
+      Bluetooth
+    </label>
+  </div>
+  <div class="switch">
+    <label>
+      <input type="checkbox" disabled>
+      This is disabled
+    </label>
+  </div>
+</form>
+ +

Radios

+ +
+
+
+ +
+
+ +
+
+ +
+ + + + +
+
+
<form>
+  <div class="radio">
+    <label>
+      <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
+      Option one is this and that&mdash;be sure to include why it's great
+    </label>
+  </div>
+  <div class="radio">
+    <label>
+      <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
+      Option two can be something else and selecting it will deselect option one
+    </label>
+  </div>
+  <div class="radio disabled">
+    <label>
+      <input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled>
+      Option three is disabled
+    </label>
+  </div>
+  
+  <label class="radio-inline">
+    <input type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1"> 1
+  </label>
+  <label class="radio-inline">
+    <input type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2"> 2
+  </label>
+  <label class="radio-inline">
+    <input type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3"> 3
+  </label>   
+</form>
+ +

Checkboxes

+ +
+
+
+ +
+
+ +
+
+ +
+ + + +
+
+
<form>  
+  <div class="checkbox">
+    <label>
+      <input type="checkbox"> Check me out
+    </label>
+  </div>   
+  <div class="checkbox">
+    <label>
+      <input type="checkbox" value="" checked>
+      I'm selected because I seem like the safe choice
+    </label>
+  </div>
+  <div class="checkbox disabled">
+    <label>
+      <input type="checkbox" value="" disabled>
+      Option is disabled because it is scary
+    </label>
+  </div>    
+  <label class="checkbox-inline">
+    <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
+  </label>
+  <label class="checkbox-inline">
+    <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
+  </label>
+  <label class="checkbox-inline">
+    <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
+  </label>  
+</form>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/material-design/snackbars/index.html b/docs/4.0/material-design/snackbars/index.html new file mode 100644 index 00000000..db751a49 --- /dev/null +++ b/docs/4.0/material-design/snackbars/index.html @@ -0,0 +1,1303 @@ + + + + + + + + + Snackbars · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Snackbars

+

+ + +

Snackbars and toasts can be created using the SnackbarJS plugin developed by us.

+ +

Contents

+ + + +

Include in the page

+ +

In order to make snackbars work, make sure to include snackbar.min.js before bootstrap-material-design.min.js.

+ +
<script src=""></script>
+<script src=""></script>
+<script src=""></script>
+<script src=""></script>
+<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
+<script src=""></script>
+<script>
+  $('body').bootstrapMaterialDesign();
+</script>
+ +
+

Heads up! You don’t need to include SnackbarJS CSS, it’s already bundled in Material Design for Bootstrap.

+
+ +

Examples

+ +

Click on the buttons below to spawn snackbars and toasts:

+ +

Snackbar

+ +
+ +
+
<button type="button" class="btn btn-secondary" data-toggle="snackbar" data-content="Free fried chicken here! <a href='https://example.org' class='btn btn-info'>Check it out</a>" data-html-allowed="true" data-timeout="0">
+  Snackbar
+</button>
+ +

Toast

+ +
+ +
+
<button type="button" class="btn btn-secondary" data-toggle="snackbar" data-style="toast" data-content="Fried chicken out of stock.">
+  Toast
+</button>
+ +

Usage

+ +

The complete documentation of SnackbarJS is available visiting its official GitHub repository.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/migration/index.html b/docs/4.0/migration/index.html new file mode 100644 index 00000000..42dbbfbd --- /dev/null +++ b/docs/4.0/migration/index.html @@ -0,0 +1,1641 @@ + + + + + + + + + Migrating to v4 · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Migrating to v4

+

Bootstrap 4 is a major rewrite of the entire project. The most notable changes are summarized below, followed by more specific changes to relevant components.

+ + +
+

Heads up! This will be in flux as work on the v4 alphas progresses. Until then consider it incomplete, and we’d love pull requests to help keep it up to date.

+
+ +

Summary

+ +

Here are the big ticket items you’ll want to be aware of when moving from v3 to v4.

+ +

Browser support

+ +
    +
  • Dropped IE8, IE9, and iOS 6 support. v4 is now only IE10+ and iOS 7+. For sites needing either of those, use v3.
  • +
  • Added official support for Android v5.0 Lollipop’s Browser and WebView. Earlier versions of the Android Browser and WebView remain only unofficially supported.
  • +
+ +

Global changes

+ +
    +
  • Flexbox is enabled by default. In general this means a move away from floats and more across our components.
  • +
  • Switched from Less to Sass for our source CSS files.
  • +
  • Switched from px to rem as our primary CSS unit, though pixels are still used for media queries and grid behavior as device viewports are not affected by type size.
  • +
  • Global font-size increased from 14px to 16px.
  • +
  • Revamped grid tiers to add a fifth option (addressing smaller devices at 576px and below) and removed the -xs infix from those classes. Example: .col-6.col-sm-4.col-md-3.
  • +
  • Replaced the separate optional theme with configurable options via SCSS variables (e.g., $enable-gradients: true).
  • +
  • Build system overhauled to use a series of npm scripts instead of Grunt. See package.json for all scripts, or our project readme for local development needs.
  • +
  • Non-responsive usage of Bootstrap is no longer supported.
  • +
  • Dropped the online Customizer in favor of more extensive setup documentation and customized builds.
  • +
  • Added dozens of new utility classes for common CSS property-value pairs and margin/padding spacing shortcuts.
  • +
+ +

Grid system

+ +
    +
  • Moved to flexbox. +
      +
    • Added support for flexbox in the grid mixins and predefined classes.
    • +
    • As part of flexbox, included support for vertical and horizontal alignment classes.
    • +
    +
  • +
  • Updated grid class names and a new grid tier. +
      +
    • Added a new sm grid tier below 768px for more granular control. We now have xs, sm, md, lg, and xl. This also means every tier has been bumped up one level (so .col-md-6 in v3 is now .col-lg-6 in v4).
    • +
    • xs grid classes have been modified to not require the infix to more accurately represent that they start applying styles at min-width: 0 and not a set pixel value. Instead of .col-xs-6, it’s now .col-6. All other grid tiers require the infix (e.g., sm).
    • +
    +
  • +
  • Updated grid sizes, mixins, and variables. +
      +
    • Grid gutters now have a Sass map so you can specify specific gutter widths at each breakpoint.
    • +
    • Updated grid mixins to utilize a make-col-ready prep mixin and a make-col to set the flex and max-width for individual column sizing.
    • +
    • Changed grid system media query breakpoints and container widths to account for new grid tier and ensure columns are evenly divisible by 12 at their max width.
    • +
    • Grid breakpoints and container widths are now handled via Sass maps ($grid-breakpoints and $container-max-widths) instead of a handful of separate variables. These replace the @screen-* variables entirely and allow you to fully customize the grid tiers.
    • +
    • Media queries have also changed. Instead of repeating our media query declarations with the same value each time, we now have @include media-breakpoint-up/down/only. Now, instead of writing @media (min-width: @screen-sm-min) { ... }, you can write @include media-breakpoint-up(sm) { ... }.
    • +
    +
  • +
+ +

Components

+ +
    +
  • Dropped panels, thumbnails, and wells for a new all-encompassing component, cards.
  • +
  • Dropped the Glyphicons icon font. If you need icons, some options are: + +
  • +
  • Dropped the Affix jQuery plugin. +
      +
    • We recommend using position: sticky instead. See the HTML5 Please entry for details and specific polyfill recommendations. One suggestion is to use an @supports rule for implementing it (e.g., @supports (position: sticky) { ... })/
    • +
    • If you were using Affix to apply additional, non-position styles, the polyfills might not support your use case. One option for such uses is the third-party ScrollPos-Styler library.
    • +
    +
  • +
  • Dropped the pager component as it was essentially slightly customized buttons.
  • +
  • Refactored nearly all components to use more un-nested class selectors instead of over-specific children selectors.
  • +
+ +

By component

+ +

This list highlights key changes by component between v3.x.x and v4.0.0.

+ +

Reboot

+ +

New to Bootstrap 4 is the Reboot, a new stylesheet that builds on Normalize with our own somewhat opinionated reset styles. Selectors appearing in this file only use elements—there are no classes here. This isolates our reset styles from our component styles for a more modular approach. Some of the most important resets this includes are the box-sizing: border-box change, moving from em to rem units on many elements, link styles, and many form element resets.

+ +

Typography

+ +
    +
  • Moved all .text- utilities to the _utilities.scss file.
  • +
  • Dropped .page-header as, aside from the border, all its styles can be applied via utilities.
  • +
  • .dl-horizontal has been dropped. Instead, use .row on <dl> and use grid column classes (or mixins) on its <dt> and <dd> children.
  • +
  • Custom <blockquote> styling has moved to classes—.blockquote and the .blockquote-reverse modifier.
  • +
  • .list-inline now requires that its children list items have the new .list-inline-item class applied to them.
  • +
+ +

Images

+ +
    +
  • Renamed .img-responsive to .img-fluid.
  • +
  • Renamed .img-rounded to .rounded
  • +
  • Renamed .img-circle to .rounded-circle
  • +
+ +

Tables

+ +
    +
  • Nearly all instances of the > selector have been removed, meaning nested tables will now automatically inherit styles from their parents. This greatly simplifies our selectors and potential customizations.
  • +
  • Responsive tables no longer require a wrapping element. Instead, just put the .table-responsive right on the <table>.
  • +
  • Renamed .table-condensed to .table-sm for consistency.
  • +
  • Added a new .table-inverse option.
  • +
  • Added table header modifiers: .thead-default and .thead-inverse.
  • +
  • Renamed contextual classes to have a .table--prefix. Hence .active, .success, .warning, .danger and .table-info to .table-active, .table-success, .table-warning, .table-danger and .table-info.
  • +
+ +

Forms

+ +
    +
  • Moved element resets to the _reboot.scss file.
  • +
  • Renamed .control-label to .form-control-label.
  • +
  • Renamed .input-lg and .input-sm to .form-control-lg and .form-control-sm, respectively.
  • +
  • Dropped .form-group-* classes for simplicity’s sake. Use .form-control-* classes instead now.
  • +
  • Dropped .help-block and replaced it with .form-text for block-level help text. For inline help text and other flexible options, use utility classes like .text-muted.
  • +
  • Dropped .radio-inline and .checkbox-inline.
  • +
  • Horizontal forms overhauled: +
      +
    • Dropped the .form-horizontal class requirement.
    • +
    • .form-group no longer applies styles from the .row via mixin, so .row is now required for horizontal grid layouts (e.g., <div class="form-group row">).
    • +
    • Added new .form-control-label class to vertically center labels with .form-controls.
    • +
    • Added new .form-row for compact form layouts with the grid classes (swap your .row for a .form-row and go).
    • +
    +
  • +
  • Added custom forms support (for checkboxes, radios, selects, and file inputs).
  • +
  • Added HTML5 form validation support via CSS’s :invalid and :valid pseudo-classes.
  • +
  • Renamed .has-error to .has-danger.
  • +
  • Renamed .form-control-static to .form-control-plaintext.
  • +
+ +

Buttons

+ +
    +
  • Renamed .btn-default to .btn-secondary.
  • +
  • Dropped the .btn-xs class entirely as .btn-sm is proportionally much smaller than v3’s.
  • +
  • The stateful button feature of the button.js jQuery plugin has been dropped. This includes the $().button(string) and $().button('reset') methods. We advise using a tiny bit of custom JavaScript instead, which will have the benefit of behaving exactly the way you want it to. +
      +
    • Note that the other features of the plugin (button checkboxes, button radios, single-toggle buttons) have been retained in v4.
    • +
    +
  • +
  • Change buttons’ [disabled] to :disabled as IE9+ supports :disabled. However fieldset[disabled] is still necessary because native disabled fieldsets are still buggy in IE11.
  • +
+ +

Button group

+ +
    +
  • Rewrote component with flexbox.
  • +
  • Removed .btn-group-justified.
  • +
  • Dropped the .btn-group-xs class entirely given removal of .btn-xs.
  • +
  • Removed explicit spacing between button groups in button toolbars; use margin utilities now.
  • +
  • Improved documentation for use with other components.
  • +
+ + + +
    +
  • Switched from parent selectors to singular classes for all components, modifiers, etc.
  • +
  • Simplified dropdown styles to no longer ship with upward or downward facing arrows attached to the dropdown menu.
  • +
  • Dropdowns can be built with <div>s or <ul>s now.
  • +
  • Rebuilt dropdown styles and markup to provide easy, built-in support for <a> and <button> based dropdown items.
  • +
  • Renamed .divider to .dropdown-divider.
  • +
  • Dropdown items now require .dropdown-item.
  • +
  • Dropdown toggles no longer require an explicit <span class="caret"></span>; this is now provided automatically via CSS’s ::after on .dropdown-toggle.
  • +
+ +

Grid system

+ +
    +
  • Added a new 576px grid breakpoint as sm, meaning there are now five total tiers (xs, sm, md, lg, and xl).
  • +
  • Renamed the responsive grid modifier classes from .col-{breakpoint}-{modifier}-{size} to .{modifier}-{breakpoint}-{size} for simpler grid classes. For example, instead of .col-md-3.col-md-push-9 it’s .col-md-3.push-md-9.
  • +
  • Added flexbox utility classes for grid system and components.
  • +
+ +

List groups

+ +
    +
  • Rewrote component with flexbox.
  • +
  • Replaced a.list-group-item with an explicit class, .list-group-item-action, for styling link and button versions of list group items.
  • +
  • Added .list-group-flush class for use with cards.
  • +
+ + + +
    +
  • Rewrote component with flexbox.
  • +
  • Given move to flexbox, alignment of dismiss icons in the header is likely broken as we’re no longer using floats. Floated content comes first, but with flexbox that’s no longer the case. Update your dismiss icons to come after modal titles to fix.
  • +
  • The remote option (which could be used to automatically load and inject external content into a modal) and the corresponding loaded.bs.modal event were removed. We recommend instead using client-side templating or a data binding framework, or calling jQuery.load yourself.
  • +
+ + + +
    +
  • Rewrote component with flexbox.
  • +
  • Dropped nearly all > selectors for simpler styling via un-nested classes.
  • +
  • Instead of HTML-specific selectors like .nav > li > a, we use separate classes for .navs, .nav-items, and .nav-links. This makes your HTML more flexible while bringing along increased extensibility.
  • +
+ + + +

The navbar has been entirely rewritten in flexbox with improved support for alignment, responsiveness, and customization.

+ +
    +
  • Responsive navbar behaviors are now applied to the .navbar class via the required .navbar-expand-{breakpoint} where you choose where to collapse the navbar. Previously this was a Less variable modification and required recompiling.
  • +
  • .navbar-default is now .navbar-light, though .navbar-dark remains the same. One of these is required on each navbar. However, these classes no longer set background-colors; instead they essentially only affect color.
  • +
  • Navbars now require a background declaration of some kind. Choose from our background utilities (.bg-*) or set your own with the light/inverse classes above for mad customization.
  • +
  • Given flexbox styles, navbars can now use flexbox utilities for easy alignment options.
  • +
  • .navbar-toggle is now .navbar-toggler and has different styles and inner markup (no more three <span>s).
  • +
  • Dropped the .navbar-form class entirely. It’s no longer necessary; instead, just use .form-inline and apply margin utilities as necessary.
  • +
  • Navbars no longer include margin-bottom or border-radius by default. Use utilities as necessary.
  • +
  • All examples featuring navbars have been updated to include new markup.
  • +
+ +

Pagination

+ +
    +
  • Rewrote component with flexbox.
  • +
  • Explicit classes (.page-item, .page-link) are now required on the descendants of .paginations
  • +
  • Dropped the .pager component entirely as it was little more than customized outline buttons.
  • +
+ + + +
    +
  • An explicit class, .breadcrumb-item, is now required on the descendants of .breadcrumbs
  • +
+ +

Labels and badges

+ +
    +
  • Renamed .label to .badge to disambiguate from the <label> element.
  • +
  • Dropped the .badge component as it was nearly identical to labels. Use the .badge-pill modifier together with the label component instead for that rounded look.
  • +
  • Badges are no longer floated automatically in list groups and other components. Utility classes are now required for that.
  • +
+ +

Panels, thumbnails, and wells

+ +

Dropped entirely for the new card component.

+ +

Panels

+ +
    +
  • .panel to .card, now built with flexbox.
  • +
  • .panel-default removed and no replacement.
  • +
  • .panel-group removed and no replacement. .card-group is not a replacement, it is different.
  • +
  • .panel-heading to .card-header
  • +
  • .panel-title to .card-title. Depending on the desired look, you may also want to use heading elements or classes (e.g. <h3>, .h3) or bold elements or classes (e.g. <strong>, <b>, .font-weight-bold). Note that .card-title, while similarly named, produces a different look than .panel-title.
  • +
  • .panel-body to .card-body
  • +
  • .panel-footer to .card-footer
  • +
  • .panel-primary, .panel-success, .panel-info, .panel-warning, and .panel-danger have been dropped for .bg-, .text-, and .border utilities generated from our $theme-colors Sass map.
  • +
+ + + +
    +
  • Overhauled the entire component to simplify design and styling. We have fewer styles for you to override, new indicators, and new icons.
  • +
  • All CSS has been un-nested and renamed, ensuring each class is prefixed with .carousel-. +
      +
    • For carousel items, .next, .prev, .left, and .right are now .carousel-item-next, .carousel-item-prev, .carousel-item-left, and .carousel-item-right.
    • +
    • .item is also now .carousel-item.
    • +
    • For prev/next controls, .carousel-control.right and .carousel-control.left are now .carousel-control-right and .carousel-control-left, meaning they no longer require a specific base class.
    • +
    +
  • +
  • Removed all responsive styling, deferring to utilities (e.g., showing captions on certain viewports) and custom styles as needed.
  • +
  • Removed image overrides for images in carousel items, deferring to utilities.
  • +
  • Tweaked the Carousel example to include the new markup and styles.
  • +
+ +

Tables

+ +
    +
  • Removed support for styled nested tables. All table styles are now inherited in v4 for simpler selectors.
  • +
  • Added inverse table variant.
  • +
+ +

Utilities

+ +
    +
  • Display, hidden, and more: +
      +
    • Made display utilities responsive (e.g., .d-none and d-{sm,md,lg,xl}-none).
    • +
    • Dropped the bulk of .hidden-* utilities for new [display utilities]((/docs/4.0/utilities/display/). For example, instead of .hidden-sm-up, use .d-sm-none. Renamed the .hidden-print utilities to use the display utility naming scheme. More info under the Responsive utilities section of this page.
    • +
    • Added .float-{sm,md,lg,xl}-{left,right,none} classes for responsive floats and removed .pull-left and .pull-right since they’re redundant to .float-left and .float-right.
    • +
    +
  • +
  • Type: +
      +
    • Added responsive variations to our text alignment classes .text-{sm,md,lg,xl}-{left,center,right}.
    • +
    +
  • +
  • Alignment and spacing: + +
  • +
+ +

Vendor prefix mixins

+ +

Bootstrap 3’s vendor prefix mixins, which were deprecated in v3.2.0, have been removed in Bootstrap 4. Since we use Autoprefixer, they’re no longer necessary.

+ +

Removed the following mixins: animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-timing-function, backface-visibility, box-sizing, content-columns, hyphens, opacity, perspective, perspective-origin, rotate, rotateX, rotateY, scale, scaleX, scaleY, skew, transform-origin, transition-delay, transition-duration, transition-property, transition-timing-function, transition-transform, translate, translate3d, user-select

+ +

Documentation

+ +

Our documentation received an upgrade across the board as well. Here’s the low down:

+ +
    +
  • We’re still using Jekyll, but we have plugins in the mix: +
      +
    • bugify.rb is used to efficiently list out the entries on our browser bugs page.
    • +
    • example.rb is a custom fork of the default highlight.rb plugin, allowing for easier example-code handling.
    • +
    • callout.rb is a similar custom fork of that, but designed for our special docs callouts.
    • +
    • markdown-block.rb is used to to render Markdown snippets within HTML elements like tables.
    • +
    • jekyll-toc is used to generate our table of contents.
    • +
    +
  • +
  • All docs content has been rewritten in Markdown (instead of HTML) for easier editing.
  • +
  • Pages have been reorganized for simpler content and a more approachable hierarchy.
  • +
  • We moved from regular CSS to SCSS to take full advantage of Bootstrap’s variables, mixins, and more.
  • +
+ +

Responsive utilities

+ +

All @screen- variables have been removed in v4.0.0. Use the media-breakpoint-up(), media-breakpoint-down(), or media-breakpoint-only() Sass mixins or the $grid-breakpoints Sass map instead.

+ +

Our responsive utility classes have largely been removed in favor of explicit display utilities.

+ +
    +
  • The .hidden and .show classes have been removed because they conflicted with jQuery’s $(...).hide() and $(...).show() methods. Instead, try toggling the [hidden] attribute or use inline styles like style="display: none;" and style="display: block;".
  • +
  • All .hidden- classes have been removed, save for the print utilities which have been renamed. +
      +
    • Removed from v3: .hidden-xs .hidden-sm .hidden-md .hidden-lg .visible-xs-block .visible-xs-inline .visible-xs-inline-block .visible-sm-block .visible-sm-inline .visible-sm-inline-block .visible-md-block .visible-md-inline .visible-md-inline-block .visible-lg-block .visible-lg-inline .visible-lg-inline-block
    • +
    • Removed from v4 alphas: .hidden-xs-up .hidden-xs-down .hidden-sm-up .hidden-sm-down .hidden-md-up .hidden-md-down .hidden-lg-up .hidden-lg-down
    • +
    +
  • +
  • Print utilities no longer start with .hidden- or .visible-, but with .d-print-. +
      +
    • Old names: .visible-print-block, .visible-print-inline, .visible-print-inline-block, .hidden-print
    • +
    • New classes: .d-print-block, .d-print-inline, .d-print-inline-block, .d-print-none
    • +
    +
  • +
+ +

Rather than using explicit .visible-* classes, you make an element visible by simply not hiding it at that screen size. You can combine one .d-*-none class with one .d-*-block class to show an element only on a given interval of screen sizes (e.g. .d-none.d-md-block.d-xl-none shows the element only on medium and large devices).

+ +

Note that the changes to the grid breakpoints in v4 means that you’ll need to go one breakpoint larger to achieve the same results. The new responsive utility classes don’t attempt to accommodate less common cases where an element’s visibility can’t be expressed as a single contiguous range of viewport sizes; you will instead need to use custom CSS in such cases.

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/borders/index.html b/docs/4.0/utilities/borders/index.html new file mode 100644 index 00000000..f8affe00 --- /dev/null +++ b/docs/4.0/utilities/borders/index.html @@ -0,0 +1,1321 @@ + + + + + + + + + Borders · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Borders

+

Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons, or any other element.

+ + +

Border

+ +

Add classes to an element to remove all borders or some borders.

+ +
+ +
+ + + + + + +
<span class="border"></span>
+<span class="border-0"></span>
+<span class="border-top-0"></span>
+<span class="border-right-0"></span>
+<span class="border-bottom-0"></span>
+<span class="border-left-0"></span>
+ +
+ +

Border color

+ +

Change the border color using utilities built on our theme colors.

+ +
+ +
+ + + + + + + + + +
<span class="border border-primary"></span>
+<span class="border border-secondary"></span>
+<span class="border border-success"></span>
+<span class="border border-danger"></span>
+<span class="border border-warning"></span>
+<span class="border border-info"></span>
+<span class="border border-light"></span>
+<span class="border border-dark"></span>
+<span class="border border-white"></span>
+ +
+ +

Border-radius

+ +

Add classes to an element to easily round its corners.

+ +
+ Example rounded image + Example top rounded image + Example right rounded image + Example bottom rounded image + Example left rounded image + Completely round image + Example non-rounded image (overrides rounding applied elsewhere) +
+ +
<img src="..." alt="..." class="rounded">
+<img src="..." alt="..." class="rounded-top">
+<img src="..." alt="..." class="rounded-right">
+<img src="..." alt="..." class="rounded-bottom">
+<img src="..." alt="..." class="rounded-left">
+<img src="..." alt="..." class="rounded-circle">
+<img src="..." alt="..." class="rounded-0">
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/clearfix/index.html b/docs/4.0/utilities/clearfix/index.html new file mode 100644 index 00000000..a6f7141b --- /dev/null +++ b/docs/4.0/utilities/clearfix/index.html @@ -0,0 +1,1277 @@ + + + + + + + + + Clearfix · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + +
+
    +
+
+ + +
+

Clearfix

+

Quickly and easily clear floated content within a container by adding a clearfix utility.

+ + +

Easily clear floats by adding .clearfix to the parent element. Utilizes the micro clearfix as popularized by Nicolas Gallagher. Can also be used as a mixin.

+ +
<div class="clearfix">...</div>
+ +
// Mixin itself
+@mixin clearfix() {
+  &::after {
+    display: block;
+    content: "";
+    clear: both;
+  }
+}
+
+// Usage as a mixin
+.element {
+  @include clearfix;
+}
+ +

The following example shows how the clearfix can be used. Without the clearfix the wrapping div would not span around the buttons which would cause a broken layout.

+ +
+
+ + +
+
+
<div class="bg-info clearfix">
+  <button class="btn btn-secondary float-left">Example Button floated left</button>
+  <button class="btn btn-secondary float-right">Example Button floated right</button>
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/close-icon/index.html b/docs/4.0/utilities/close-icon/index.html new file mode 100644 index 00000000..ca4a93bf --- /dev/null +++ b/docs/4.0/utilities/close-icon/index.html @@ -0,0 +1,1257 @@ + + + + + + + + + Close icon · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + +
+
    +
+
+ + +
+

Close icon

+

Use a generic close icon for dismissing content like modals and alerts.

+ + +

Be sure to include text for screen readers, as we’ve done with aria-label.

+ +
+ +
+
<button type="button" class="close" aria-label="Close">
+  <span aria-hidden="true">&times;</span>
+</button>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/colors/index.html b/docs/4.0/utilities/colors/index.html new file mode 100644 index 00000000..d2751ae4 --- /dev/null +++ b/docs/4.0/utilities/colors/index.html @@ -0,0 +1,1324 @@ + + + + + + + + + Colors · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Colors

+

Convey meaning through color with a handful of color utility classes. Includes support for styling links with hover states, too.

+ + + +
+

.text-primary

+

.text-secondary

+

.text-success

+

.text-danger

+

.text-warning

+

.text-info

+

.text-light

+

.text-dark

+
+
<p class="text-primary">.text-primary</p>
+<p class="text-secondary">.text-secondary</p>
+<p class="text-success">.text-success</p>
+<p class="text-danger">.text-danger</p>
+<p class="text-warning">.text-warning</p>
+<p class="text-info">.text-info</p>
+<p class="text-light">.text-light</p>
+<p class="text-dark">.text-dark</p>
+ +

Contextual text classes also work well on anchors with the provided hover and focus states. Note that the .text-white class has no link styling.

+ + +
<p><a href="#" class="text-primary">Primary link</a></p>
+<p><a href="#" class="text-secondary">Secondary link</a></p>
+<p><a href="#" class="text-success">Success link</a></p>
+<p><a href="#" class="text-danger">Danger link</a></p>
+<p><a href="#" class="text-warning">Warning link</a></p>
+<p><a href="#" class="text-info">Info link</a></p>
+<p><a href="#" class="text-light bg-gray">Light link</a></p>
+<p><a href="#" class="text-dark">Dark link</a></p>
+ +

Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes. Background utilities do not set color, so in some cases you’ll want to use .text-* utilities.

+ +
+
.bg-primary
+
.bg-secondary
+
.bg-success
+
.bg-danger
+
.bg-warning
+
.bg-info
+
.bg-light
+
.bg-dark
+
.bg-white
+
+
<div class="p-3 mb-2 bg-primary text-white">.bg-primary</div>
+<div class="p-3 mb-2 bg-secondary text-white">.bg-secondary</div>
+<div class="p-3 mb-2 bg-success text-white">.bg-success</div>
+<div class="p-3 mb-2 bg-danger text-white">.bg-danger</div>
+<div class="p-3 mb-2 bg-warning text-white">.bg-warning</div>
+<div class="p-3 mb-2 bg-info text-white">.bg-info</div>
+<div class="p-3 mb-2 bg-light text-gray-dark">.bg-light</div>
+<div class="p-3 mb-2 bg-dark text-white">.bg-dark</div>
+<div class="p-3 mb-2 bg-white text-gray-dark">.bg-white</div>
+ +
+

Dealing with specificity

+ +

Sometimes contextual classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element’s content in a <div> with the class.

+
+ +
+

Conveying meaning to assistive technologies

+ +

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .sr-only class.

+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/display/index.html b/docs/4.0/utilities/display/index.html new file mode 100644 index 00000000..3a957fe1 --- /dev/null +++ b/docs/4.0/utilities/display/index.html @@ -0,0 +1,1359 @@ + + + + + + + + + Display property · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Display property

+

Quickly and responsively toggle the display value of components and more with our display utilities. Includes support for some of the more common values, as well as some extras for controlling display when printing.

+ + +

Common display values

+ +

The display property accepts a handful of values and we support many of them with utility classes. We purposefully don’t provide every value as a utility, so here’s what we support:

+ +
    +
  • .d-none
  • +
  • .d-inline
  • +
  • .d-inline-block
  • +
  • .d-block
  • +
  • .d-table
  • +
  • .d-table-cell
  • +
  • .d-flex
  • +
  • .d-inline-flex
  • +
+ +

Put them to use by applying any of the classes to an element of your choice. For example, here’s how you could use the inline, block, or inline-block utilities (the same applies to the other classes).

+ +
+
d-inline
+
d-inline
+
+
<div class="d-inline bg-success">d-inline</div>
+<div class="d-inline bg-success">d-inline</div>
+ +
+d-block +
+
<span class="d-block bg-primary">d-block</span>
+ +
+
d-inline-block
+
d-inline-block
+
+
<div class="d-inline-block bg-warning">d-inline-block</div>
+<div class="d-inline-block bg-warning">d-inline-block</div>
+ +

Responsive variations also exist for every single utility mentioned above.

+ +
    +
  • .d-none
  • +
  • .d-inline
  • +
  • .d-inline-block
  • +
  • .d-block
  • +
  • .d-table
  • +
  • .d-table-cell
  • +
  • .d-flex
  • +
  • .d-inline-flex
  • +
  • .d-sm-none
  • +
  • .d-sm-inline
  • +
  • .d-sm-inline-block
  • +
  • .d-sm-block
  • +
  • .d-sm-table
  • +
  • .d-sm-table-cell
  • +
  • .d-sm-flex
  • +
  • .d-sm-inline-flex
  • +
  • .d-md-none
  • +
  • .d-md-inline
  • +
  • .d-md-inline-block
  • +
  • .d-md-block
  • +
  • .d-md-table
  • +
  • .d-md-table-cell
  • +
  • .d-md-flex
  • +
  • .d-md-inline-flex
  • +
  • .d-lg-none
  • +
  • .d-lg-inline
  • +
  • .d-lg-inline-block
  • +
  • .d-lg-block
  • +
  • .d-lg-table
  • +
  • .d-lg-table-cell
  • +
  • .d-lg-flex
  • +
  • .d-lg-inline-flex
  • +
  • .d-xl-none
  • +
  • .d-xl-inline
  • +
  • .d-xl-inline-block
  • +
  • .d-xl-block
  • +
  • .d-xl-table
  • +
  • .d-xl-table-cell
  • +
  • .d-xl-flex
  • +
  • .d-xl-inline-flex
  • +
+ +

Display in print

+ +

Change the display value of elements when printing with our print display utilities.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassPrint style
.d-print-blockApplies display: block to the element when printing
.d-print-inlineApplies display: inline to the element when printing
.d-print-inline-blockApplies display: inline-block to the element when printing
.d-print-noneApplies display: none to the element when printing
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/embed/index.html b/docs/4.0/utilities/embed/index.html new file mode 100644 index 00000000..1e4d2f33 --- /dev/null +++ b/docs/4.0/utilities/embed/index.html @@ -0,0 +1,1292 @@ + + + + + + + + + Embeds · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Embeds

+

Create responsive video or slideshow embeds based on the width of the parent by creating an intrinsic ratio that scales on any device.

+ + +

About

+ +

Rules are directly applied to <iframe>, <embed>, <video>, and <object> elements; optionally use an explicit descendant class .embed-responsive-item when you want to match the styling for other attributes.

+ +

Pro-Tip! You don’t need to include frameborder="0" in your <iframe>s as we override that for you.

+ +

Example

+ +

Wrap any embed like an <iframe> in a parent element with .embed-responsive and an aspect ratio. The .embed-responsive-item isn’t strictly required, but we encourage it.

+ +
+
+ +
+
+
<div class="embed-responsive embed-responsive-16by9">
+  <iframe class="embed-responsive-item" src="https://www.youtube.com/embed/zpOULjyy-n8?rel=0" allowfullscreen></iframe>
+</div>
+ +

Aspect ratios

+ +

Aspect ratios can be customized with modifier classes.

+ +
<!-- 21:9 aspect ratio -->
+<div class="embed-responsive embed-responsive-21by9">
+  <iframe class="embed-responsive-item" src="..."></iframe>
+</div>
+
+<!-- 16:9 aspect ratio -->
+<div class="embed-responsive embed-responsive-16by9">
+  <iframe class="embed-responsive-item" src="..."></iframe>
+</div>
+
+<!-- 4:3 aspect ratio -->
+<div class="embed-responsive embed-responsive-4by3">
+  <iframe class="embed-responsive-item" src="..."></iframe>
+</div>
+
+<!-- 1:1 aspect ratio -->
+<div class="embed-responsive embed-responsive-1by1">
+  <iframe class="embed-responsive-item" src="..."></iframe>
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/flex/index.html b/docs/4.0/utilities/flex/index.html new file mode 100644 index 00000000..9fb8d29f --- /dev/null +++ b/docs/4.0/utilities/flex/index.html @@ -0,0 +1,1981 @@ + + + + + + + + + Flex · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Flex

+

Quickly manage the layout, alignment, and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities. For more complex implementations, custom CSS may be necessary.

+ + +

Enable flex behaviors

+ +

Apply display utilities to create a flexbox container and transform direct children elements into flex items. Flex containers and items are able to be modified further with additional flex properties.

+ +
+
I'm a flexbox container!
+
+
<div class="d-flex p-2">I'm a flexbox container!</div>
+ +
+
I'm an inline flexbox container!
+
+
<div class="d-inline-flex p-2">I'm an inline flexbox container!</div>
+ +

Responsive variations also exist for .d-flex and .d-inline-flex.

+ +
    +
  • .d-flex
  • +
  • .d-inline-flex
  • +
  • .d-sm-flex
  • +
  • .d-sm-inline-flex
  • +
  • .d-md-flex
  • +
  • .d-md-inline-flex
  • +
  • .d-lg-flex
  • +
  • .d-lg-inline-flex
  • +
  • .d-xl-flex
  • +
  • .d-xl-inline-flex
  • +
+ +

Direction

+ +

Set the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is row. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts).

+ +

Use .flex-row to set a horizontal direction (the browser default), or .flex-row-reverse to start the horizontal direction from the opposite side.

+ +
+
+
Flex item 1
+
Flex item 2
+
Flex item 3
+
+
+
Flex item 1
+
Flex item 2
+
Flex item 3
+
+
+
<div class="d-flex flex-row">
+  <div class="p-2">Flex item 1</div>
+  <div class="p-2">Flex item 2</div>
+  <div class="p-2">Flex item 3</div>
+</div>
+<div class="d-flex flex-row-reverse">
+  <div class="p-2">Flex item 1</div>
+  <div class="p-2">Flex item 2</div>
+  <div class="p-2">Flex item 3</div>
+</div>
+ +

Use .flex-column to set a vertical direction, or .flex-column-reverse to start the vertical direction from the opposite side.

+ +
+
+
Flex item 1
+
Flex item 2
+
Flex item 3
+
+
+
Flex item 1
+
Flex item 2
+
Flex item 3
+
+
+
<div class="d-flex flex-column">
+  <div class="p-2">Flex item 1</div>
+  <div class="p-2">Flex item 2</div>
+  <div class="p-2">Flex item 3</div>
+</div>
+<div class="d-flex flex-column-reverse">
+  <div class="p-2">Flex item 1</div>
+  <div class="p-2">Flex item 2</div>
+  <div class="p-2">Flex item 3</div>
+</div>
+ +

Responsive variations also exist for flex-direction.

+ +
    +
  • .flex-row
  • +
  • .flex-row-reverse
  • +
  • .flex-column
  • +
  • .flex-column-reverse
  • +
  • .flex-sm-row
  • +
  • .flex-sm-row-reverse
  • +
  • .flex-sm-column
  • +
  • .flex-sm-column-reverse
  • +
  • .flex-md-row
  • +
  • .flex-md-row-reverse
  • +
  • .flex-md-column
  • +
  • .flex-md-column-reverse
  • +
  • .flex-lg-row
  • +
  • .flex-lg-row-reverse
  • +
  • .flex-lg-column
  • +
  • .flex-lg-column-reverse
  • +
  • .flex-xl-row
  • +
  • .flex-xl-row-reverse
  • +
  • .flex-xl-column
  • +
  • .flex-xl-column-reverse
  • +
+ +

Justify content

+ +

Use justify-content utilities on flexbox containers to change the alignment of flex items on the main axis (the x-axis to start, y-axis if flex-direction: column). Choose from start (browser default), end, center, between, or around.

+ +
+
+
Flex item
+
Flex item
+
Flex item
+
+
+
Flex item
+
Flex item
+
Flex item
+
+
+
Flex item
+
Flex item
+
Flex item
+
+
+
Flex item
+
Flex item
+
Flex item
+
+
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex justify-content-start">...</div>
+<div class="d-flex justify-content-end">...</div>
+<div class="d-flex justify-content-center">...</div>
+<div class="d-flex justify-content-between">...</div>
+<div class="d-flex justify-content-around">...</div>
+ +

Responsive variations also exist for justify-content.

+ +
    +
  • .justify-content-start
  • +
  • .justify-content-end
  • +
  • .justify-content-center
  • +
  • .justify-content-between
  • +
  • .justify-content-around
  • +
  • .justify-content-sm-start
  • +
  • .justify-content-sm-end
  • +
  • .justify-content-sm-center
  • +
  • .justify-content-sm-between
  • +
  • .justify-content-sm-around
  • +
  • .justify-content-md-start
  • +
  • .justify-content-md-end
  • +
  • .justify-content-md-center
  • +
  • .justify-content-md-between
  • +
  • .justify-content-md-around
  • +
  • .justify-content-lg-start
  • +
  • .justify-content-lg-end
  • +
  • .justify-content-lg-center
  • +
  • .justify-content-lg-between
  • +
  • .justify-content-lg-around
  • +
  • .justify-content-xl-start
  • +
  • .justify-content-xl-end
  • +
  • .justify-content-xl-center
  • +
  • .justify-content-xl-between
  • +
  • .justify-content-xl-around
  • +
+ +

Align items

+ +

Use align-items utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if flex-direction: column). Choose from start, end, center, baseline, or stretch (browser default).

+ +
+
+
Flex item
+
Flex item
+
Flex item
+
+
+
Flex item
+
Flex item
+
Flex item
+
+
+
Flex item
+
Flex item
+
Flex item
+
+
+
Flex item
+
Flex item
+
Flex item
+
+
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex align-items-start">...</div>
+<div class="d-flex align-items-end">...</div>
+<div class="d-flex align-items-center">...</div>
+<div class="d-flex align-items-baseline">...</div>
+<div class="d-flex align-items-stretch">...</div>
+ +

Responsive variations also exist for align-items.

+ +
    +
  • .align-items-start
  • +
  • .align-items-end
  • +
  • .align-items-center
  • +
  • .align-items-baseline
  • +
  • .align-items-stretch
  • +
  • .align-items-sm-start
  • +
  • .align-items-sm-end
  • +
  • .align-items-sm-center
  • +
  • .align-items-sm-baseline
  • +
  • .align-items-sm-stretch
  • +
  • .align-items-md-start
  • +
  • .align-items-md-end
  • +
  • .align-items-md-center
  • +
  • .align-items-md-baseline
  • +
  • .align-items-md-stretch
  • +
  • .align-items-lg-start
  • +
  • .align-items-lg-end
  • +
  • .align-items-lg-center
  • +
  • .align-items-lg-baseline
  • +
  • .align-items-lg-stretch
  • +
  • .align-items-xl-start
  • +
  • .align-items-xl-end
  • +
  • .align-items-xl-center
  • +
  • .align-items-xl-baseline
  • +
  • .align-items-xl-stretch
  • +
+ +

Align self

+ +

Use align-self utilities on flexbox items to individually change their alignment on the cross axis (the y-axis to start, x-axis if flex-direction: column). Choose from the same options as align-items: start, end, center, baseline, or stretch (browser default).

+ +
+
+
Flex item
+
Aligned flex item
+
Flex item
+
+
+
Flex item
+
Aligned flex item
+
Flex item
+
+
+
Flex item
+
Aligned flex item
+
Flex item
+
+
+
Flex item
+
Aligned flex item
+
Flex item
+
+
+
Flex item
+
Aligned flex item
+
Flex item
+
+
+ +
<div class="align-self-start">Aligned flex item</div>
+<div class="align-self-end">Aligned flex item</div>
+<div class="align-self-center">Aligned flex item</div>
+<div class="align-self-baseline">Aligned flex item</div>
+<div class="align-self-stretch">Aligned flex item</div>
+ +

Responsive variations also exist for align-self.

+ +
    +
  • .align-self-start
  • +
  • .align-self-end
  • +
  • .align-self-center
  • +
  • .align-self-baseline
  • +
  • .align-self-stretch
  • +
  • .align-self-sm-start
  • +
  • .align-self-sm-end
  • +
  • .align-self-sm-center
  • +
  • .align-self-sm-baseline
  • +
  • .align-self-sm-stretch
  • +
  • .align-self-md-start
  • +
  • .align-self-md-end
  • +
  • .align-self-md-center
  • +
  • .align-self-md-baseline
  • +
  • .align-self-md-stretch
  • +
  • .align-self-lg-start
  • +
  • .align-self-lg-end
  • +
  • .align-self-lg-center
  • +
  • .align-self-lg-baseline
  • +
  • .align-self-lg-stretch
  • +
  • .align-self-xl-start
  • +
  • .align-self-xl-end
  • +
  • .align-self-xl-center
  • +
  • .align-self-xl-baseline
  • +
  • .align-self-xl-stretch
  • +
+ +

Auto margins

+ +

Flexbox can do some pretty awesome things when you mix flex alignments with auto margins.

+ +

With justify-content

+ +

Easily move all flex items to one side, but keep another on the opposite end by mixing justify-content with margin-right: auto or margin-left: auto.

+ +
+
+
Flex item
+
Flex item
+
Flex item
+
+ +
+
Flex item
+
Flex item
+
Flex item
+
+
+
<div class="d-flex justify-content-end">
+  <div class="mr-auto p-2">Flex item</div>
+  <div class="p-2">Flex item</div>
+  <div class="p-2">Flex item</div>
+</div>
+
+<div class="d-flex justify-content-start">
+  <div class="p-2">Flex item</div>
+  <div class="p-2">Flex item</div>
+  <div class="ml-auto p-2">Flex item</div>
+</div>
+ +

With align-items

+ +

Similarly, move one flex item to the top or bottom of a container by mixing align-items, flex-direction: column, and margin-top: auto or margin-bottom: auto.

+ +
+
+
Flex item
+
Flex item
+
Flex item
+
+ +
+
Flex item
+
Flex item
+
Flex item
+
+
+
<div class="d-flex align-items-start flex-column" style="height: 200px;">
+  <div class="mb-auto p-2">Flex item</div>
+  <div class="p-2">Flex item</div>
+  <div class="p-2">Flex item</div>
+</div>
+
+<div class="d-flex align-items-end flex-column" style="height: 200px;">
+  <div class="p-2">Flex item</div>
+  <div class="p-2">Flex item</div>
+  <div class="mt-auto p-2">Flex item</div>
+</div>
+ +

Wrap

+ +

Change how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with .flex-nowrap, wrapping with .flex-wrap, or reverse wrapping with .flex-wrap-reverse.

+ +
+
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex flex-nowrap">
+  ...
+</div>
+ +
+
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex flex-wrap">
+  ...
+</div>
+ +
+
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex flex-wrap-reverse">
+  ...
+</div>
+ +

Responsive variations also exist for flex-wrap.

+ +
    +
  • .flex-nowrap
  • +
  • .flex-wrap
  • +
  • .flex-wrap-reverse
  • +
  • .flex-sm-nowrap
  • +
  • .flex-sm-wrap
  • +
  • .flex-sm-wrap-reverse
  • +
  • .flex-md-nowrap
  • +
  • .flex-md-wrap
  • +
  • .flex-md-wrap-reverse
  • +
  • .flex-lg-nowrap
  • +
  • .flex-lg-wrap
  • +
  • .flex-lg-wrap-reverse
  • +
  • .flex-xl-nowrap
  • +
  • .flex-xl-wrap
  • +
  • .flex-xl-wrap-reverse
  • +
+ +

Order

+ +

Change the visual order of specific flex items with a handful of order utilities. We only provide options for making an item first or last, as well as a reset to use the DOM order. As order takes any integer value (e.g., 5), add custom CSS for any additional values needed.

+ +
+
+
First flex item
+
Second flex item
+
Third flex item
+
+
+
<div class="d-flex flex-nowrap">
+  <div class="order-3 p-2">First flex item</div>
+  <div class="order-2 p-2">Second flex item</div>
+  <div class="order-1 p-2">Third flex item</div>
+</div>
+ +

Responsive variations also exist for order.

+ +
    +
  • .order-1
  • +
  • .order-2
  • +
  • .order-3
  • +
  • .order-4
  • +
  • .order-5
  • +
  • .order-6
  • +
  • .order-7
  • +
  • .order-8
  • +
  • .order-9
  • +
  • .order-10
  • +
  • .order-11
  • +
  • .order-12
  • +
  • .order-sm-1
  • +
  • .order-sm-2
  • +
  • .order-sm-3
  • +
  • .order-sm-4
  • +
  • .order-sm-5
  • +
  • .order-sm-6
  • +
  • .order-sm-7
  • +
  • .order-sm-8
  • +
  • .order-sm-9
  • +
  • .order-sm-10
  • +
  • .order-sm-11
  • +
  • .order-sm-12
  • +
  • .order-md-1
  • +
  • .order-md-2
  • +
  • .order-md-3
  • +
  • .order-md-4
  • +
  • .order-md-5
  • +
  • .order-md-6
  • +
  • .order-md-7
  • +
  • .order-md-8
  • +
  • .order-md-9
  • +
  • .order-md-10
  • +
  • .order-md-11
  • +
  • .order-md-12
  • +
  • .order-lg-1
  • +
  • .order-lg-2
  • +
  • .order-lg-3
  • +
  • .order-lg-4
  • +
  • .order-lg-5
  • +
  • .order-lg-6
  • +
  • .order-lg-7
  • +
  • .order-lg-8
  • +
  • .order-lg-9
  • +
  • .order-lg-10
  • +
  • .order-lg-11
  • +
  • .order-lg-12
  • +
  • .order-xl-1
  • +
  • .order-xl-2
  • +
  • .order-xl-3
  • +
  • .order-xl-4
  • +
  • .order-xl-5
  • +
  • .order-xl-6
  • +
  • .order-xl-7
  • +
  • .order-xl-8
  • +
  • .order-xl-9
  • +
  • .order-xl-10
  • +
  • .order-xl-11
  • +
  • .order-xl-12
  • +
+ +

Align content

+ +

Use align-content utilities on flexbox containers to align flex items together on the cross axis. Choose from start (browser default), end, center, between, around, or stretch. To demonstrate these utilities, we’ve enforced flex-wrap: wrap and increased the number of flex items.

+ +

Heads up! This property has no effect on single rows of flex items.

+ +
+
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex align-content-start flex-wrap">
+  ...
+</div>
+ +
+
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex align-content-end flex-wrap">...</div>
+ +
+
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex align-content-center flex-wrap">...</div>
+ +
+
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex align-content-between flex-wrap">...</div>
+ +
+
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex align-content-around flex-wrap">...</div>
+ +
+
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
Flex item
+
+
+ +
<div class="d-flex align-content-stretch flex-wrap">...</div>
+ +

Responsive variations also exist for align-content.

+ +
    +
  • .align-content-start
  • +
  • .align-content-end
  • +
  • .align-content-center
  • +
  • .align-content-around
  • +
  • .align-content-stretch
  • +
  • .align-content-sm-start
  • +
  • .align-content-sm-end
  • +
  • .align-content-sm-center
  • +
  • .align-content-sm-around
  • +
  • .align-content-sm-stretch
  • +
  • .align-content-md-start
  • +
  • .align-content-md-end
  • +
  • .align-content-md-center
  • +
  • .align-content-md-around
  • +
  • .align-content-md-stretch
  • +
  • .align-content-lg-start
  • +
  • .align-content-lg-end
  • +
  • .align-content-lg-center
  • +
  • .align-content-lg-around
  • +
  • .align-content-lg-stretch
  • +
  • .align-content-xl-start
  • +
  • .align-content-xl-end
  • +
  • .align-content-xl-center
  • +
  • .align-content-xl-around
  • +
  • .align-content-xl-stretch
  • +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/float/index.html b/docs/4.0/utilities/float/index.html new file mode 100644 index 00000000..d8f527c3 --- /dev/null +++ b/docs/4.0/utilities/float/index.html @@ -0,0 +1,1315 @@ + + + + + + + + + Float · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Float

+

Toggle floats on any element, across any breakpoint, using our responsive float utilities.

+ + +

Overview

+ +

These utility classes float an element to the left or right, or disable floating, based on the current viewport size using the CSS float property. !important is included to avoid specificity issues. These use the same viewport breakpoints as our grid system.

+ +

Classes

+ +

Toggle a float with a class:

+ +
+
Float left on all viewport sizes

+
Float right on all viewport sizes

+
Don't float on all viewport sizes
+
+
<div class="float-left">Float left on all viewport sizes</div><br>
+<div class="float-right">Float right on all viewport sizes</div><br>
+<div class="float-none">Don't float on all viewport sizes</div>
+ +

Mixins

+ +

Or by Sass mixin:

+ +
.element {
+  @include float-left;
+}
+.another-element {
+  @include float-right;
+}
+.one-more {
+  @include float-none;
+}
+ +

Responsive

+ +

Responsive variations also exist for each float value.

+ +
+
Float left on viewports sized SM (small) or wider

+
Float left on viewports sized MD (medium) or wider

+
Float left on viewports sized LG (large) or wider

+
Float left on viewports sized XL (extra-large) or wider

+
+
<div class="float-sm-left">Float left on viewports sized SM (small) or wider</div><br>
+<div class="float-md-left">Float left on viewports sized MD (medium) or wider</div><br>
+<div class="float-lg-left">Float left on viewports sized LG (large) or wider</div><br>
+<div class="float-xl-left">Float left on viewports sized XL (extra-large) or wider</div><br>
+ +

Here are all the support classes;

+ +
    +
  • .float-left
  • +
  • .float-right
  • +
  • .float-none
  • +
  • .float-sm-left
  • +
  • .float-sm-right
  • +
  • .float-sm-none
  • +
  • .float-md-left
  • +
  • .float-md-right
  • +
  • .float-md-none
  • +
  • .float-lg-left
  • +
  • .float-lg-right
  • +
  • .float-lg-none
  • +
  • .float-xl-left
  • +
  • .float-xl-right
  • +
  • .float-xl-none
  • +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/image-replacement/index.html b/docs/4.0/utilities/image-replacement/index.html new file mode 100644 index 00000000..3224ed44 --- /dev/null +++ b/docs/4.0/utilities/image-replacement/index.html @@ -0,0 +1,1263 @@ + + + + + + + + + Image replacement · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + +
+ +
+ + +
+

Image replacement

+

Swap text for background images with the image replacement class.

+ + +

Utilize the .text-hide class or mixin to help replace an element’s text content with a background image.

+ +
<h1 class="text-hide">Custom heading</h1>
+ +
// Usage as a mixin
+.heading {
+  @include text-hide;
+}
+ +

Use the .text-hide class to maintain the accessibility and SEO benefits of heading tags, but want to utilize a background-image instead of text.

+ +
+

Bootstrap

+
+
<h1 class="text-hide" style="background-image: url('/assets/brand/bootstrap-solid.svg'); width: 50px; height: 50px;">Bootstrap</h1>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/index.html b/docs/4.0/utilities/index.html new file mode 100644 index 00000000..5e69449c --- /dev/null +++ b/docs/4.0/utilities/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/4.0/utilities/position/index.html b/docs/4.0/utilities/position/index.html new file mode 100644 index 00000000..234e0dd3 --- /dev/null +++ b/docs/4.0/utilities/position/index.html @@ -0,0 +1,1280 @@ + + + + + + + + + Position · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Position

+

Use these shorthand utilities for quickly configuring the position of an element.

+ + +

Common values

+ +

Quick positioning classes are available, though they are not responsive.

+ +
<div class="position-static">...</div>
+<div class="position-relative">...</div>
+<div class="position-absolute">...</div>
+<div class="position-fixed">...</div>
+<div class="position-sticky">...</div>
+ +

Fixed top

+ +

Position an element at the top of the viewport, from edge to edge. Be sure you understand the ramifications of fixed position in your project; you may need to add aditional CSS.

+ +
<div class="fixed-top">...</div>
+ +

Fixed bottom

+ +

Position an element at the bottom of the viewport, from edge to edge. Be sure you understand the ramifications of fixed position in your project; you may need to add aditional CSS.

+ +
<div class="fixed-bottom">...</div>
+ +

Sticky top

+ +

Position an element at the top of the viewport, from edge to edge, but only after you scroll past it. The .sticky-top utility uses CSS’s position: sticky, which isn’t fully supported in all browsers.

+ +

Microsoft Edge and IE11 will render position: sticky as position: relative. As such, we wrap the styles in a @supports query, limiting the stickiness to only browsers that properly can render it.

+ +
<div class="sticky-top">...</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/screenreaders/index.html b/docs/4.0/utilities/screenreaders/index.html new file mode 100644 index 00000000..48ec0fbd --- /dev/null +++ b/docs/4.0/utilities/screenreaders/index.html @@ -0,0 +1,1256 @@ + + + + + + + + + Screenreaders · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + +
+
    +
+
+ + +
+

Screenreaders

+

Use screenreader utilities to hide elements on all devices execept screen readers.

+ + +

Hide an element to all devices except screen readers with .sr-only. Combine .sr-only with .sr-only-focusable to show the element again when it’s focused (e.g. by a keyboard-only user). Can also be used as mixins.

+ +
<a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
+ +
// Usage as a mixin
+.skip-navigation {
+  @include sr-only;
+  @include sr-only-focusable;
+}
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/sizing/index.html b/docs/4.0/utilities/sizing/index.html new file mode 100644 index 00000000..513c6d7b --- /dev/null +++ b/docs/4.0/utilities/sizing/index.html @@ -0,0 +1,1290 @@ + + + + + + + + + Sizing · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + +
+
    +
+
+ + +
+

Sizing

+

Easily make an element as wide or as tall (relative to its parent) with our width and height utilities.

+ + +

Width and height utilities are generated from the $sizes Sass map in _variables.scss. Includes support for 25%, 50%, 75%, and 100% by default. Modify those values as you need to generate different utilities here.

+ +
+
Width 25%
+
Width 50%
+
Width 75%
+
Width 100%
+
+
<div class="w-25 p-3" style="background-color: #eee;">Width 25%</div>
+<div class="w-50 p-3" style="background-color: #eee;">Width 50%</div>
+<div class="w-75 p-3" style="background-color: #eee;">Width 75%</div>
+<div class="w-100 p-3" style="background-color: #eee;">Width 100%</div>
+ +
+
+
Height 25%
+
Height 50%
+
Height 75%
+
Height 100%
+
+
+
<div style="height: 100px; background-color: rgba(255,0,0,0.1);">
+  <div class="h-25 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 25%</div>
+  <div class="h-50 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 50%</div>
+  <div class="h-75 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 75%</div>
+  <div class="h-100 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 100%</div>
+</div>
+ +

You can also use max-width: 100%; and max-height: 100%; utilities as needed.

+ +
+Max-width 100% +
+
<img class="mw-100" src="..." alt="Max-width 100%">
+ +
+
+
Max-height 100%
+
+
+
<div style="height: 100px; background-color: rgba(255,0,0,0.1);">
+  <div class="mh-100" style="width: 100px; height: 200px; background-color: rgba(0,0,255,0.1);">Max-height 100%</div>
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/spacing/index.html b/docs/4.0/utilities/spacing/index.html new file mode 100644 index 00000000..78beccdc --- /dev/null +++ b/docs/4.0/utilities/spacing/index.html @@ -0,0 +1,1329 @@ + + + + + + + + + Spacing · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Spacing

+

Bootstrap includes a wide range of shorthand responsive margin and padding utility classes to modify an element's appearance.

+ + +

How it works

+ +

Assign responsive-friendly margin or padding values to an element or a subset of its sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. Classes are built from a default Sass map ranging from .25rem to 3rem.

+ +

Notation

+ +

Spacing utilities that apply to all breakpoints, from xs to xl, have no breakpoint abbreviation in them. This is because those classes are applied from min-width: 0 and up, and thus are not bound by a media query. The remaining breakpoints, however, do include a breakpoint abbreviation.

+ +

The classes are named using the format {property}{sides}-{size} for xs and {property}{sides}-{breakpoint}-{size} for sm, md, lg, and xl.

+ +

Where property is one of:

+ +
    +
  • m - for classes that set margin
  • +
  • p - for classes that set padding
  • +
+ +

Where sides is one of:

+ +
    +
  • t - for classes that set margin-top or padding-top
  • +
  • b - for classes that set margin-bottom or padding-bottom
  • +
  • l - for classes that set margin-left or padding-left
  • +
  • r - for classes that set margin-right or padding-right
  • +
  • x - for classes that set both *-left and *-right
  • +
  • y - for classes that set both *-top and *-bottom
  • +
  • blank - for classes that set a margin or padding on all 4 sides of the element
  • +
+ +

Where size is one of:

+ +
    +
  • 0 - for classes that eliminate the margin or padding by setting it to 0
  • +
  • 1 - (by default) for classes that set the margin or padding to $spacer * .25
  • +
  • 2 - (by default) for classes that set the margin or padding to $spacer * .5
  • +
  • 3 - (by default) for classes that set the margin or padding to $spacer
  • +
  • 4 - (by default) for classes that set the margin or padding to $spacer * 1.5
  • +
  • 5 - (by default) for classes that set the margin or padding to $spacer * 3
  • +
+ +

(You can add more sizes by adding entries to the $spacers Sass map variable.)

+ +

Examples

+ +

Here are some representative examples of these classes:

+ +
.mt-0 {
+  margin-top: 0 !important;
+}
+
+.ml-1 {
+  margin-left: ($spacer * .25) !important;
+}
+
+.px-2 {
+  padding-left: ($spacer * .5) !important;
+  padding-right: ($spacer * .5) !important;
+}
+
+.p-3 {
+  padding: $spacer !important;
+}
+ +

Horizontal centering

+

Additionally, Bootstrap also includes an .mx-auto class for horizontally centering fixed-width block level content—that is, content that has display: block and a width set—by setting the horizontal margins to auto.

+ +
+
+ Centered element +
+
+ +
<div class="mx-auto" style="width: 200px;">
+  Centered element
+</div>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/text/index.html b/docs/4.0/utilities/text/index.html new file mode 100644 index 00000000..eaf5fab6 --- /dev/null +++ b/docs/4.0/utilities/text/index.html @@ -0,0 +1,1358 @@ + + + + + + + + + Typography · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + + + +
+

Typography

+

Documentation and examples for common text utilities to control alignment, wrapping, weight, and more.

+ + +

Text alignment

+ +

Easily realign text to components with text alignment classes.

+ +
+

Ambitioni dedisse scripsisse iudicaretur. Cras mattis iudicium purus sit amet fermentum. Donec sed odio operae, eu vulputate felis rhoncus. Praeterea iter est quasdam res quas ex communi. At nos hinc posthac, sitientis piros Afros. Petierunt uti sibi concilium totius Galliae in diem certam indicere. Cras mattis iudicium purus sit amet fermentum.

+
+
<p class="text-justify">Ambitioni dedisse scripsisse iudicaretur. Cras mattis iudicium purus sit amet fermentum. Donec sed odio operae, eu vulputate felis rhoncus. Praeterea iter est quasdam res quas ex communi. At nos hinc posthac, sitientis piros Afros. Petierunt uti sibi concilium totius Galliae in diem certam indicere. Cras mattis iudicium purus sit amet fermentum.</p>
+ +

For left, right, and center alignment, responsive classes are available that use the same viewport width breakpoints as the grid system.

+ +
+

Left aligned text on all viewport sizes.

+

Center aligned text on all viewport sizes.

+

Right aligned text on all viewport sizes.

+ +

Left aligned text on viewports sized SM (small) or wider.

+

Left aligned text on viewports sized MD (medium) or wider.

+

Left aligned text on viewports sized LG (large) or wider.

+

Left aligned text on viewports sized XL (extra-large) or wider.

+
+
<p class="text-left">Left aligned text on all viewport sizes.</p>
+<p class="text-center">Center aligned text on all viewport sizes.</p>
+<p class="text-right">Right aligned text on all viewport sizes.</p>
+
+<p class="text-sm-left">Left aligned text on viewports sized SM (small) or wider.</p>
+<p class="text-md-left">Left aligned text on viewports sized MD (medium) or wider.</p>
+<p class="text-lg-left">Left aligned text on viewports sized LG (large) or wider.</p>
+<p class="text-xl-left">Left aligned text on viewports sized XL (extra-large) or wider.</p>
+ +

Text wrapping and overflow

+ +

Prevent text from wrapping with a .text-nowrap class.

+ +
+
+
+ Curabitur blandit tempus ardua ridiculus sed magna. +
+
+ An image to show the text doesn't wrap +
+
+
+
<div class="row">
+  <div class="col-1 text-nowrap">
+    Curabitur blandit tempus ardua ridiculus sed magna.
+  </div>
+  <div class="col-11">
+    <img src="..." alt="An image to show the text doesn't wrap">
+  </div>
+</div>
+ +

For longer content, you can add a .text-truncate class to truncate the text with an ellipsis. Requires display: inline-block or display: block.

+ +
+ +
+
+ Praeterea iter est quasdam res quas ex communi. +
+
+ + + + Praeterea iter est quasdam res quas ex communi. + +
+
<!-- Block level -->
+<div class="row">
+  <div class="col-2 text-truncate">
+    Praeterea iter est quasdam res quas ex communi.
+  </div>
+</div>
+
+<!-- Inline level -->
+<span class="d-inline-block text-truncate" style="max-width: 150px;">
+  Praeterea iter est quasdam res quas ex communi.
+</span>
+ +

Text transform

+ +

Transform text in components with text capitalization classes.

+ +
+

Lowercased text.

+

Uppercased text.

+

CapiTaliZed text.

+
+
<p class="text-lowercase">Lowercased text.</p>
+<p class="text-uppercase">Uppercased text.</p>
+<p class="text-capitalize">CapiTaliZed text.</p>
+ +

Note how text-capitalize only changes the first letter of each word, leaving the case of any other letters unaffected.

+ +

Font weight and italics

+ +

Quickly change the weight (boldness) of text or italicize text.

+ +
+

Bold text.

+

Normal weight text.

+

Italic text.

+
+
<p class="font-weight-bold">Bold text.</p>
+<p class="font-weight-normal">Normal weight text.</p>
+<p class="font-italic">Italic text.</p>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/vertical-align/index.html b/docs/4.0/utilities/vertical-align/index.html new file mode 100644 index 00000000..d1d0fd39 --- /dev/null +++ b/docs/4.0/utilities/vertical-align/index.html @@ -0,0 +1,1291 @@ + + + + + + + + + Vertical alignment · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Vertical alignment

+

Easily change the vertical alignment of inline, inline-block, inline-table, and table cell elements.

+ + +

Change the alignment of elements with the vertical-alignment utilities. Please note that vertical-align only affects inline, inline-block, inline-table, and table cell elements.

+ +

Choose from .align-baseline, .align-top, .align-middle, .align-bottom, .align-text-bottom, and .align-text-top as needed.

+ +

With inline elements:

+ +
+baseline +top +middle +bottom +text-top +text-bottom +
+
<span class="align-baseline">baseline</span>
+<span class="align-top">top</span>
+<span class="align-middle">middle</span>
+<span class="align-bottom">bottom</span>
+<span class="align-text-top">text-top</span>
+<span class="align-text-bottom">text-bottom</span>
+ +

With table cells:

+ +
+ + + + + + + + + + + +
baselinetopmiddlebottomtext-toptext-bottom
+
+
<table style="height: 100px;">
+  <tbody>
+    <tr>
+      <td class="align-baseline">baseline</td>
+      <td class="align-top">top</td>
+      <td class="align-middle">middle</td>
+      <td class="align-bottom">bottom</td>
+      <td class="align-text-top">text-top</td>
+      <td class="align-text-bottom">text-bottom</td>
+    </tr>
+  </tbody>
+</table>
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/4.0/utilities/visibility/index.html b/docs/4.0/utilities/visibility/index.html new file mode 100644 index 00000000..04a754f1 --- /dev/null +++ b/docs/4.0/utilities/visibility/index.html @@ -0,0 +1,1264 @@ + + + + + + + + + Visibility · Bootstrap Material Design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+
+ + + + +
+
+
+ + + + +
+ + + +
+

Visibility

+

Control the visibility, without modifying the display, of elements with visibility utilities.

+ + +

Set the visibility of elements with our visibility utilities. These do not modify the display value at all and are helpful for hiding content from most users, but still keeping them for screen readers.

+ +

Apply .visible or .invisible as needed.

+ +
<div class="visible">...</div>
+<div class="invisible">...</div>
+ +
// Class
+.visible {
+  visibility: visible;
+}
+.invisible {
+  visibility: hidden;
+}
+
+// Usage as a mixin
+.element {
+  @include invisible(visible);
+}
+.element {
+  @include invisible(hidden);
+}
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..f10bd822 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 00000000..96feed17 --- /dev/null +++ b/examples/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/index.css b/index.css deleted file mode 100644 index 0ff1d157..00000000 --- a/index.css +++ /dev/null @@ -1,366 +0,0 @@ -* { - box-sizing: border-box; -} - -.header-panel { - background-color: #009587; - height: 144px; - position: relative; - z-index: 3; -} - -.header-panel div { - position: relative; - height: 100%; -} - -.header-panel h1 { - color: #FFF; - /*font-size: 20px;*/ - /*font-weight: 400;*/ - position: absolute; - bottom: 10px; - padding-left: 35px; -} - -.menu { - overflow: auto; - padding: 0; -} - -.menu, .menu * { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - -.menu ul { - padding: 0; - margin: 7px 0; -} - -.menu ul li { - list-style: none; - padding: 20px 0 20px 50px; - font-size: 15px; - font-weight: normal; - cursor: pointer; -} - -.menu ul li.active { - background-color: #dedede; - position: relative; -} - -.menu ul li a { - color: rgb(51, 51, 51); - text-decoration: none; -} - -.pages { - position: absolute; - top: 0; - right: 0; - z-index: 4; - padding: 0; - overflow: auto; -} - -.pages > div { - padding: 0 5px; - padding-top: 64px; - margin: 0; -} - -.pages .header { - color: rgb(82, 101, 162); - /*font-size: 24px;*/ - /*font-weight: normal;*/ - /*margin-top: 5px;*/ - /*margin-bottom: 60px;*/ - /*letter-spacing: 1.20000004768372px;*/ -} - -.page { - transform: translateY(1080px); - transition: transform 0 linear; - display: none; - opacity: 0; - font-size: 16px; - margin-left: 1em; -} - -.page.active { - transform: translateY(0px); - transition: all 0.3s ease-out; - display: block; - opacity: 1; -} - -.opensource { - color: rgba(0, 0, 0, 0.62); - position: fixed; - margin-top: 50px; - margin-left: 50px; - z-index: 100; -} - -#source-modal h4 { - color: black; -} - -#paypal .btn { - padding: 5px 30px 6px 30px; -} - -#paypal input { - background: transparent; - border: 0; -} - -.cbwrapper div { - display: none; -} - -.cbwrapper div:nth-child(2) { - display: block; -} - -#carbonads, #fakecb { - border: 1px solid #d5d5d5; - font-size: 11px; - line-height: 15px; - overflow: hidden; - width: 340px; - padding: 20px; - margin: auto; - height: 142px; - border-radius: 2px; -} - -#carbonads .carbon-img { - float: left; - display: block; -} - -#carbonads .carbon-text, #carbonads .carbon-poweredby { - float: left; - width: 150px; - padding: 0 10px 10px 10px; -} - -#carbonads .carbon-text:hover, #carbonads .carbon-poweredby:hover { - text-decoration: none; -} - -#carbonads .carbon-poweredby { - color: #9D9D9D; -} - -/*#checkbox .sample1 label {*/ - /*font-weight: bold;*/ -/*}*/ - -/*#checkbox .hint {*/ - /*padding-left: 45px;*/ - /*padding-top: 20px;*/ - /*font-weight: 400;*/ -/*}*/ - -/*#checkbox .sample1 {*/ - /*padding-bottom: 20px;*/ -/*}*/ - -/*#checkbox h2 {*/ - /*font-size: 18.7199993133545px;*/ - /*font-weight: bold;*/ - /*margin-bottom: 30px;*/ -/*}*/ - -/*#checkbox .sample2 {*/ - /*width: 300px;*/ - /*clear: both;*/ - /*font-weight: 400;*/ -/*}*/ - -/*#checkbox .sample2 {*/ - /*padding: 10px 0;*/ -/*}*/ - -/*#checkbox .sample2 .text {*/ - /*display: inline-block;*/ -/*}*/ - -/*#checkbox .sample2 .checkbox {*/ - /*float: right;*/ - /*margin: 0;*/ -/*}*/ - -/*#progress-bar h2 {*/ - /*font-size: 18.7199993133545px;*/ - /*font-weight: bold;*/ - /*margin-bottom: 30px;*/ -/*}*/ - -/*#dialog h2 {*/ - /*padding: 14px;*/ - /*margin: 0;*/ - /*font-size: 16px;*/ - /*font-weight: 400;*/ -/*}*/ - -/*#shadow h2 {*/ -/*padding: 14px;*/ -/*margin: 0;*/ -/*font-size: 16px;*/ -/*font-weight: 400;*/ -/*}*/ - -#shadow .sample { - width: 100px; - height: 100px; - margin: 16px; - padding: 16px; - display: inline-block; -} - -#shadow-sample2 { - display: inline-block; - width: 100px; - height: 100px; - margin: 16px; - padding: 16px; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - -} - -#shadow-sample3 { - display: inline-block; - width: 100px; - height: 100px; - margin: 16px; - padding: 16px; - border-radius: 100px; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - -/*#radio-button h2 {*/ - /*font-size: 18.7199993133545px;*/ - /*font-weight: bold;*/ - /*margin-bottom: 30px;*/ - /*margin-top: 50px;*/ -/*}*/ - -/*#radio-button .radio {*/ - /*margin: 20px 10px;*/ -/*}*/ - -/*#input h2 {*/ -/*padding: 14px;*/ -/*font-size: 16px;*/ -/*font-weight: 400;*/ -/*}*/ - -#input .inputs { - width: 80%; -} - -/*#input .form-group {*/ - /*margin: 30px 0;*/ -/*}*/ - -/*#slider .sample1, #slider .sample2 {*/ - /*padding: 20px 0;*/ - /*background-color: #f0f0f0;*/ - /*margin-bottom: 20px;*/ -/*}*/ - -#slider .sample2 { - height: 150px; -} - -/*#slider .sample2 .slider {*/ - /*margin: 0 40px;*/ -/*}*/ - -/*#slider h2 {*/ -/*padding: 14px;*/ -/*margin: 0;*/ -/*font-size: 16px;*/ -/*font-weight: 400;*/ -/*}*/ - -/*#slider .slider {*/ - /*margin: 15px;*/ -/*}*/ - -/*#button h2 {*/ -/*padding: 14px;*/ -/*margin: 0;*/ -/*font-size: 16px;*/ -/*font-weight: 400;*/ -/*}*/ - -/*#floating-action-button .btn {*/ - /*margin: 20px;*/ -/*}*/ - -/*#floating-action-button h2 {*/ -/*padding: 14px;*/ -/*margin: 0;*/ -/*font-size: 16px;*/ -/*font-weight: 400;*/ -/*}*/ - -/*#dropdown h2 {*/ -/*padding: 14px;*/ -/*margin: 0;*/ -/*font-size: 16px;*/ -/*font-weight: 400;*/ -/*}*/ - -/*#dropdown .dropdown {*/ - /*font-size: 30px;*/ - /*padding: 20px;*/ -/*}*/ - -/*#dropdown-menu h2 {*/ -/*padding: 14px;*/ -/*margin: 0;*/ -/*font-size: 16px;*/ -/*font-weight: 400;*/ -/*}*/ - -/*#dropdown-menu .sample {*/ - /*width: 200px;*/ -/*}*/ - -/*#dropdown-menu .form-group {*/ - /*margin: 30px 0;*/ -/*}*/ - -/*#toggle-button h2 {*/ - /*font-size: 18.7199993133545px;*/ - /*font-weight: bold;*/ - /*margin-bottom: 30px;*/ - /*margin-top: 50px;*/ -/*}*/ - -/*#toggle-button .togglebutton label {*/ - /*margin: 20px 10px;*/ - /*width: 200px;*/ -/*}*/ - -/*#toggle-button .togglebutton .toggle {*/ - /*float: right;*/ -/*}*/ - -.btn-primary select { - color: black; -} diff --git a/index.html b/index.html index 82b71ec5..4f5b2528 100644 --- a/index.html +++ b/index.html @@ -1,1079 +1,266 @@ + + + + - + + + Bootstrap Material Design · The most popular HTML, CSS, and JS Material Design library in the world. + + - - Material Design for Bootstrap - - + + + - - - - - + + + + - - - - - + - - + + + - - + + + + + - - + + + - - -Fork me on GitHub + -
-
-
-
-

Paper Elements

-
-
-
-
-
-
- -
-
-
-
-

Material Design for Bootstrap

+ -

Material Design for Bootstrap is a theme for Bootstrap 3 which lets you use the new - Google Material Design in your favorite front-end framework. -

-

If you like this project you can support me by donating something on Gratipay, starring this repository, or - reporting bugs and ideas.

+ -

Read more about Material Design for Bootstrap at the - Github page.

+ -
+ + + -

If you want support the development of this project please consider donate something:

- -
- - -
- - -
-
-

Thanks to all the people that has donated on PayPal! You are great guys!

- -
- - - - - - - - - - - -
- -

You can get this theme downloading the source from Bower or NPM:

-
bower install bootstrap-material-design
-
npm install bootstrap-material-design
- - -
-
-

Getting Started

- -

Download

-
-

Install with NPM

- -

You can also install and manage Material Bootstrap using NPM

-
npm install bootstrap-material-design
-

Install with Bower

- -

You can also install and manage Material Bootstrap using Bower

-
bower install bootstrap-material-design
- -
- -

What's included

-
-

Material Design for Bootstrap is downloadable in a two forms. First, as less/sass source files. Second, as compiled .css files.

- -
-
-

Required Frameworks

-
-
-
-
-
- -
-
-

Bootstrap v3.0+

- -

This theme extends, styles, and modifies Bootstrap's elements and styles. Without Bootstrap this project will not display correctly. To install Bootstrap please go to - Get Bootstrap

-
-
-
-
-
- -
-
-

jQuery 1.9.1+

- -

All JavaScript plugins require jQuery to be included.

-
-
-
-
-
-

If downloading instead of using Bower, once downloaded, unzip the compressed folder to see the structure of (the compiled) Material Design for Bootstrap. You'll see something like this:

- -
Material/
-                ├── css/
-                │ ├── bootstrap-material-design.css
-                │ ├── bootstrap-material-design.css.map
-                │ ├── bootstrap-material-design.min.css
-                │ ├── bootstrap-material-design.min.css.map
-                │ ├── ripples.css.map
-                │ ├── ripples.min.css
-                │ ├── ripples.min.css.map
-                ├── js/
-                │ ├── material.js
-                │ ├── material.min.js
-                │ ├── material.min.js.map
-                │ ├── ripples.js
-                │ ├── ripples.min.js
-                │ ├── ripples.min.js.map
-              
-              
-

Just copy the compiled CSS and JS files and the font files from the .zip and add them to your site.

-
- -

Once copied you need to initialize the material javascript by adding the following javascript to your site,

-
$.material.init()
-
- -
-

Checkbox

- -

Default inside a .form-group

-
-
- -
-

Notify me about updates to apps or games that I've downloaded

-
-
-
- -
-

Auto-update apps over wifi only

-
- -

Horizontal form with column label variations

-
-
- -
-
- -
-

This shows the generic label variant.

-
-
-
- -
-
- -
-

This shows the control-label variant.

-
-
-
- -

Default outside a .form-group

-
- -
-

Without a .form-group, .help-block always shows

-
- -
-

Without a .form-group, .help-block sizing is the same as the label

- -
-
-

Radio buttons

- -

Default outside a .form-group

-
- -
-
- -
- -

Default inside a .form-group

-
-
- -
-
- -
-
- -
-
- -

Toggle Button

- -
- -
-
- -
-
-
-

Input - specification -

- -
-

Input label styles - default sizing -

- -
- - - -

This is a hint as a p.help-block.hint

-
- -
- - - This is a hint as a span.help-block.hint -
- -
- - - This is a hint as a span.help-block.hint -
- -
-
- - -
- - This is a hint as a span.help-block.hint -
-
-
-
-
- -

Input - floating labels - form-group sizing -

-
- - - Please enter a valid email address -
- -
- - - Please enter a valid email address -
- -
- - - Please enter a valid email address -
- -

Input - static labels - form-group sizing -

- -
- - - Please enter a valid email address -
- -
- - - Please enter a valid email address -
- -
- - - Please enter a valid email address -
- -

Input - no labels - form-group sizing -

- -
- - - Please enter a valid email address -
- -
- - - Please enter a valid email address -
- -
- - - Please enter a valid email address -
- - -

Input - - floating label feedback variants -

-
- - - Please enter a valid email address -
- -
- - - Please enter a valid email address -
- -
- - - Please enter a valid email address -
- - -

Input - Legacy

- - - -

Textarea

- -
- - -
-
- -
- - - - -

Validation

- -
- - -
-
- - -
- -

Disabled

- -
- - -
-
- - -
- -

Hints

- -
- - - -

Some helpful hint

-
-
- - - -

A valid email contains an @ character

-
- - -

Styling

- -
- -
-
- - -
-
-
-
-

File Input

- -
- - - -
- -
- - - -
- -
- - -
- - - - -
-
-
- -
-

Progress Bar

- -

Basic

- -
-
-
- -

Contextual alternatives

- -
-
-
-
-
-
-
-
-
-
-
-
- -

Striped

- -
-
-
-
-
-
-
-
-
-
-
-
- -

Animated

- -
-
-
- -

Stacked

- -
-
-
-
-
-
-
-

Slider

- -
-

Music, video, games & other media

- -
- -

Notifications

- -
- -

Alarms

- -
-
- -
-
-
-
-
- -

Sliders are powered by noUiSlider

-
- - -
-

Dialog

- -

Simple Dialog

- - -

Dialog with header and footer

- - -
-
-
- -
-
-
-
-
- - - - - - - - - - + + + +
+ Skip to main content +
+
+ + + + +
+
+
+
+

Material Design for Bootstrap

+

+
+
+
+
+ +
+
+

+ Build responsive, mobile-first projects on the web with the world's most popular Material Design front-end component library. +

+

+ Material Design for Bootstrap is an open source toolkit based on Bootstrap for developing Material Design apps with HTML, CSS, and JS. Quickly prototype your ideas or build your entire app with our Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful plugins built on jQuery. +

+ +

+ Currently v4.0.0-beta +

+
+
+ + +
+
+ +
+
+ + Import icon + +

Installation

+

Include Bootstrap's source Sass and JavaScript files via Bower, Composer, Meteor, or npm. Package managed installs don't include documentation, but do include our build system and readme.

+ +
npm install bootstrap-material-design@4.0.0-beta
+ +
gem install bootstrap-material-design -v 4.0.0.beta
+ +
bower install bootstrap-material-design#v4.0.0-beta
+
+ Read installation docs +
+ +
+ + Download icon + +

Bootstrap CDN

+

When you only need to include Bootstrap's compiled CSS or JS, you can use the Bootstrap CDN.

+ +
CSS only
+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap-material-design.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
+ +
JS, Popper.js, and jQuery
+
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap-material-design.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
+
+ Explore the docs +
+
+
+
+ + Lightning icon + +

Official Pro Kits

+

+ Take Material Design for Bootstrap 4 to the next level with official Material Kit Pro and Material Dashboard Pro. +

+ + Bootstrap Themes + +

+ Material Kit Pro + Material Dashboard Pro +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..4effb6b7 --- /dev/null +++ b/robots.txt @@ -0,0 +1 @@ +Sitemap: https://getbootstrap.com/sitemap.xml diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 00000000..0b7ba289 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,11 @@ +import fs from 'fs'; +import babel from 'rollup-plugin-babel'; + +const babelOptions = JSON.parse(fs.readFileSync('./.babelrc')); + +export default { + format: 'iife', + plugins: [ + babel(Object.assign(babelOptions, { babelrc: false })), + ], +}; diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..3c498178 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,315 @@ + + + +https://getbootstrap.com/docs/4.0/getting-started/accessibility/ + + +https://getbootstrap.com/docs/4.0/components/alerts/ + + +https://getbootstrap.com/docs/4.0/extend/approach/ + + +https://getbootstrap.com/docs/4.0/components/badge/ + + +https://getbootstrap.com/docs/4.0/getting-started/best-practices/ + + +https://getbootstrap.com/docs/4.0/utilities/borders/ + + +https://getbootstrap.com/docs/4.0/about/brand/ + + +https://getbootstrap.com/docs/4.0/components/breadcrumb/ + + +https://getbootstrap.com/docs/4.0/browser-bugs/ + + +https://getbootstrap.com/docs/4.0/getting-started/browsers-devices/ + + +https://getbootstrap.com/docs/4.0/getting-started/build-tools/ + + +https://getbootstrap.com/docs/4.0/components/button-group/ + + +https://getbootstrap.com/docs/4.0/material-design/buttons/ + + +https://getbootstrap.com/docs/4.0/components/buttons/ + + +https://getbootstrap.com/docs/4.0/components/card/ + + +https://getbootstrap.com/docs/4.0/components/carousel/ + + +https://getbootstrap.com/docs/4.0/utilities/clearfix/ + + +https://getbootstrap.com/docs/4.0/utilities/close-icon/ + + +https://getbootstrap.com/docs/4.0/content/code/ + + +https://getbootstrap.com/docs/4.0/material-design/collapse-inline/ + + +https://getbootstrap.com/docs/4.0/components/collapse/ + + +https://getbootstrap.com/docs/4.0/utilities/colors/ + + +https://getbootstrap.com/docs/4.0/getting-started/contents/ + + +https://getbootstrap.com/docs/4.0/utilities/display/ + + +https://getbootstrap.com/docs/4.0/getting-started/download/ + + +https://getbootstrap.com/docs/4.0/material-design/drawers/ + + +https://getbootstrap.com/docs/4.0/components/dropdowns/ + + +https://getbootstrap.com/docs/4.0/utilities/embed/ + + +https://getbootstrap.com/docs/4.0/material-design/extensions/ + + +https://getbootstrap.com/docs/4.0/content/figures/ + + +https://getbootstrap.com/docs/4.0/utilities/flex/ + + +https://getbootstrap.com/docs/4.0/utilities/float/ + + +https://getbootstrap.com/docs/4.0/material-design/forms/ + + +https://getbootstrap.com/docs/4.0/components/forms/ + + +https://getbootstrap.com/docs/4.0/layout/grid/ + + +https://getbootstrap.com/docs/4.0/about/history/ + + +https://getbootstrap.com/docs/4.0/extend/icons/ + + +https://getbootstrap.com/docs/4.0/utilities/image-replacement/ + + +https://getbootstrap.com/docs/4.0/content/images/ + + +https://getbootstrap.com/ + + +https://getbootstrap.com/docs/4.0/extend/ + + +https://getbootstrap.com/docs/4.0/examples/ + + +https://getbootstrap.com/docs/4.0/components/input-group/ + + +https://getbootstrap.com/docs/4.0/getting-started/introduction/ + + +https://getbootstrap.com/docs/4.0/getting-started/javascript/ + + +https://getbootstrap.com/docs/4.0/components/jumbotron/ + + +https://getbootstrap.com/docs/4.0/material-design/labels/ + + +https://getbootstrap.com/docs/4.0/about/license/ + + +https://getbootstrap.com/docs/4.0/components/list-group/ + + +https://getbootstrap.com/docs/4.0/material-design/list-groups/ + + +https://getbootstrap.com/docs/4.0/layout/media-object/ + + +https://getbootstrap.com/docs/4.0/material-design/menus/ + + +https://getbootstrap.com/docs/4.0/migration/ + + +https://getbootstrap.com/docs/4.0/components/modal/ + + +https://getbootstrap.com/docs/4.0/components/navbar/ + + +https://getbootstrap.com/docs/4.0/material-design/navs/ + + +https://getbootstrap.com/docs/4.0/components/navs/ + + +https://getbootstrap.com/docs/4.0/getting-started/options/ + + +https://getbootstrap.com/docs/4.0/layout/overview/ + + +https://getbootstrap.com/docs/4.0/components/pagination/ + + +https://getbootstrap.com/docs/4.0/components/popovers/ + + +https://getbootstrap.com/docs/4.0/utilities/position/ + + +https://getbootstrap.com/docs/4.0/components/progress/ + + +https://getbootstrap.com/docs/4.0/content/reboot/ + + +https://getbootstrap.com/docs/4.0/utilities/screenreaders/ + + +https://getbootstrap.com/docs/4.0/components/scrollspy/ + + +https://getbootstrap.com/docs/4.0/material-design/selections/ + + +https://getbootstrap.com/docs/4.0/utilities/sizing/ + + +https://getbootstrap.com/docs/4.0/material-design/snackbars/ + + +https://getbootstrap.com/docs/4.0/utilities/spacing/ + + +https://getbootstrap.com/docs/4.0/content/tables/ + + +https://getbootstrap.com/docs/4.0/about/team/ + + +https://getbootstrap.com/docs/4.0/utilities/text/ + + +https://getbootstrap.com/docs/4.0/components/tooltips/ + + +https://getbootstrap.com/docs/4.0/about/translations/ + + +https://getbootstrap.com/docs/4.0/content/typography/ + + +https://getbootstrap.com/docs/4.0/layout/utilities-for-layout/ + + +https://getbootstrap.com/docs/4.0/utilities/vertical-align/ + + +https://getbootstrap.com/docs/4.0/utilities/visibility/ + + +https://getbootstrap.com/docs/4.0/getting-started/webpack/ + + +https://getbootstrap.com/docs/4.0/examples/album/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/blog/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/carousel/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/cover/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/dashboard/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/grid/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/jumbotron/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/justified-nav/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/narrow-jumbotron/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/navbar-top-fixed/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/navbar-top/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/navbars/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/offcanvas/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/signin/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/starter-template/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/sticky-footer-navbar/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/sticky-footer/index.html +2017-08-31T14:36:16+02:00 + + +https://getbootstrap.com/docs/4.0/examples/tooltip-viewport/index.html +2017-08-31T14:36:16+02:00 + + diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..5a0d48a8 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2744 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +aproba@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-cli@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" + dependencies: + babel-core "^6.24.1" + babel-polyfill "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.0.0" + glob "^7.0.0" + lodash "^4.2.0" + output-file-sync "^1.1.0" + path-is-absolute "^1.0.0" + slash "^1.0.0" + source-map "^0.5.0" + v8flags "^2.0.10" + optionalDependencies: + chokidar "^1.6.1" + +babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +babel-core@^6.24.1, babel-core@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" + dependencies: + babel-code-frame "^6.22.0" + babel-generator "^6.25.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.25.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-generator@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.25.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-evaluate-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.1.0.tgz#95d98c4ea36150483db2e7d3ec9e1954a72629cb" + +babel-helper-flip-expressions@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.1.2.tgz#77f6652f9de9c42401d827bd46ebd2109e3ef18a" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-is-nodes-equiv@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" + +babel-helper-is-void-0@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.1.1.tgz#72f21a3abba0bef3837f9174fca731aed9a02888" + +babel-helper-mark-eval-scopes@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.1.1.tgz#4554345edf9f2549427bd2098e530253f8af2992" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-remove-or-void@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.1.1.tgz#9d7e1856dc6fafcb41b283a416730dc1844f66d7" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-to-multiple-sequence-expressions@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.1.1.tgz#5f1b832b39e4acf954e9137f0251395c71196b35" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-external-helpers@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-minify-builtins@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.1.3.tgz#4f21a7dcb51f91a04ea71d47ff0e8e3b05fec021" + dependencies: + babel-helper-evaluate-path "^0.1.0" + +babel-plugin-minify-constant-folding@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.1.3.tgz#57bd172adf8b8d74ad7c99612eb950414ebea3ca" + dependencies: + babel-helper-evaluate-path "^0.1.0" + +babel-plugin-minify-dead-code-elimination@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.7.tgz#774f536f347b98393a27baa717872968813c342c" + dependencies: + babel-helper-mark-eval-scopes "^0.1.1" + babel-helper-remove-or-void "^0.1.1" + lodash.some "^4.6.0" + +babel-plugin-minify-flip-comparisons@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.1.2.tgz#e286b40b7599b18dfea195071e4279465cfc1884" + dependencies: + babel-helper-is-void-0 "^0.1.1" + +babel-plugin-minify-guarded-expressions@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.1.2.tgz#dfc3d473b0362d9605d3ce0ac1e22328c60d1007" + dependencies: + babel-helper-flip-expressions "^0.1.2" + +babel-plugin-minify-infinity@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.1.2.tgz#5f1cf67ddedcba13c8a00da832542df0091a1cd4" + +babel-plugin-minify-mangle-names@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.1.3.tgz#bfa24661a6794fb03833587e55828b65449e06fe" + dependencies: + babel-helper-mark-eval-scopes "^0.1.1" + +babel-plugin-minify-numeric-literals@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.1.1.tgz#d4b8b0c925f874714ee33ee4b26678583d7ce7fb" + +babel-plugin-minify-replace@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.1.2.tgz#b90b9e71ab4d3b36325629a91beabe13b0b16ac1" + +babel-plugin-minify-simplify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.1.2.tgz#a968f1658fdeb2fc759e81fe331d89829df0f6b9" + dependencies: + babel-helper-flip-expressions "^0.1.2" + babel-helper-is-nodes-equiv "^0.0.1" + babel-helper-to-multiple-sequence-expressions "^0.1.1" + +babel-plugin-minify-type-constructors@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.1.2.tgz#db53c5b76cb8e2fcd45d862f17104c78761337ee" + dependencies: + babel-helper-is-void-0 "^0.1.1" + +babel-plugin-module-alias@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-module-alias/-/babel-plugin-module-alias-1.6.0.tgz#df7e3aaba3544f4c06a9d3314a26bbbff6d87b61" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-modules-strip@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-strip/-/babel-plugin-transform-es2015-modules-strip-0.1.1.tgz#7393f071c356a1dfb6ac03077e0c06cb57a3125f" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-inline-consecutive-adds@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.1.2.tgz#5442e9f1c19c78a7899f8a4dee6fd481f61001f5" + +babel-plugin-transform-member-expression-literals@^6.8.4: + version "6.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.4.tgz#05679bc40596b91293401959aa1620ab1b2be437" + +babel-plugin-transform-merge-sibling-variables@^6.8.5: + version "6.8.5" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.5.tgz#03abdf107c61241913eb268ddede6d5bc541862c" + +babel-plugin-transform-minify-booleans@^6.8.2: + version "6.8.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.2.tgz#8451579f706e702c1e1ab2756de5c8ea369cf07c" + +babel-plugin-transform-property-literals@^6.8.4: + version "6.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.4.tgz#6ad311110b80a192a56efb5ddf4fe3ca6f7a61da" + dependencies: + esutils "^2.0.2" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" + dependencies: + regenerator-transform "0.9.11" + +babel-plugin-transform-regexp-constructors@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.1.1.tgz#312ab7487cc88a1c62ee25ea1b6087e89b87799c" + +babel-plugin-transform-remove-console@^6.8.4: + version "6.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.4.tgz#41fddac19a729a4c3dd7ef2964eac07b096f9a8f" + +babel-plugin-transform-remove-debugger@^6.8.4: + version "6.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.4.tgz#f85704a08adaa71b55d77005b5b94e9b9df21f6e" + +babel-plugin-transform-remove-undefined@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.1.2.tgz#e1ebf51110f6b1e0665f28382ef73f95e5023652" + +babel-plugin-transform-simplify-comparison-operators@^6.8.4: + version "6.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.4.tgz#2aa24a262d664c8cb3e125a306c798d7a2de08d5" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-undefined-to-void@^6.8.2: + version "6.8.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.2.tgz#fe2b1d294eb05e87524eb93724dea6e2c3d66fa1" + +babel-polyfill@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" + dependencies: + babel-runtime "^6.22.0" + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-preset-babili@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/babel-preset-babili/-/babel-preset-babili-0.1.4.tgz#ad9d6651002f5bc3f07cab300781167f54724bf2" + dependencies: + babel-plugin-minify-builtins "^0.1.3" + babel-plugin-minify-constant-folding "^0.1.3" + babel-plugin-minify-dead-code-elimination "^0.1.7" + babel-plugin-minify-flip-comparisons "^0.1.2" + babel-plugin-minify-guarded-expressions "^0.1.2" + babel-plugin-minify-infinity "^0.1.2" + babel-plugin-minify-mangle-names "^0.1.3" + babel-plugin-minify-numeric-literals "^0.1.1" + babel-plugin-minify-replace "^0.1.2" + babel-plugin-minify-simplify "^0.1.2" + babel-plugin-minify-type-constructors "^0.1.2" + babel-plugin-transform-inline-consecutive-adds "^0.1.2" + babel-plugin-transform-member-expression-literals "^6.8.4" + babel-plugin-transform-merge-sibling-variables "^6.8.5" + babel-plugin-transform-minify-booleans "^6.8.2" + babel-plugin-transform-property-literals "^6.8.4" + babel-plugin-transform-regexp-constructors "^0.1.1" + babel-plugin-transform-remove-console "^6.8.4" + babel-plugin-transform-remove-debugger "^6.8.4" + babel-plugin-transform-remove-undefined "^0.1.2" + babel-plugin-transform-simplify-comparison-operators "^6.8.4" + babel-plugin-transform-undefined-to-void "^6.8.2" + lodash.isplainobject "^4.0.6" + +babel-preset-es2015@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-register@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" + dependencies: + babel-core "^6.24.1" + babel-runtime "^6.22.0" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.25.0.tgz#33b98eaa5d482bb01a8d1aa6b437ad2b01aec41c" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-template@^6.24.1, babel-template@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.25.0" + babel-types "^6.25.0" + babylon "^6.17.2" + lodash "^4.2.0" + +babel-traverse@^6.24.1, babel-traverse@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" + dependencies: + babel-code-frame "^6.22.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.25.0" + babylon "^6.17.2" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" + dependencies: + babel-runtime "^6.22.0" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babili@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/babili/-/babili-0.1.4.tgz#43bb768664d377dea84ba977abc5b01bd5966f11" + dependencies: + babel-cli "^6.24.1" + babel-preset-babili "^0.1.4" + +babylon@^6.17.2: + version "6.17.4" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" + +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +binary-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.9.0.tgz#66506c16ce6f4d6928a5b3cd6a33ca41e941e37b" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +bootstrap@4.0.0-beta: + version "4.0.0-beta" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.0.0-beta.tgz#dc5928175d2e71310bc668cf9e05a907211b72a6" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000715" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000715.tgz#0b9b5c795950dfbaf301a8806bafe87f126da8ca" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +clap@^1.0.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.0.tgz#59c90fe3e137104746ff19469a27a634ff68c857" + dependencies: + chalk "^1.1.3" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.3.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@^2.8.1: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +convert-source-map@^1.1.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +core-js@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + +cssnano-cli@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/cssnano-cli/-/cssnano-cli-1.0.5.tgz#98c619b327d90acacb42302bc0c84f592e2801f5" + dependencies: + cssnano "^3.0.0" + minimist "^1.2.0" + read-file-stdin "^0.2.0" + write-file-stdout "0.0.2" + +cssnano@^3.0.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +debug@^2.1.1, debug@^2.2.0: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +electron-to-chromium@^1.2.7: + version "1.3.18" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.18.tgz#3dcc99da3e6b665f6abbc71c28ad51a2cd731a9c" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +escape-string-regexp@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +estree-walker@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fs-readdir-recursive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.36" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + +gather-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" + dependencies: + globule "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.0.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globule@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" + dependencies: + glob "~7.1.1" + lodash "~4.17.4" + minimatch "~3.0.2" + +graceful-fs@^4.1.2, graceful-fs@^4.1.4: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +invariant@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jquery@>=3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" + +js-base64@^2.1.8, js-base64@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + +js-tokens@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + +lodash.clonedeep@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + +lodash.mergewith@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" + +lodash.some@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash@^4.0.0, lodash@^4.2.0, lodash@~4.17.4: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.16" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" + dependencies: + mime-db "~1.29.0" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +nan@^2.3.0, nan@^2.3.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" + +node-gyp@^3.3.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "2" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-pre-gyp@^0.6.36: + version "0.6.36" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" + dependencies: + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +node-sass@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.3.tgz#d09c9d1179641239d1b97ffc6231fdcec53e1568" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.3.2" + node-gyp "^3.3.1" + npmlog "^4.0.0" + request "^2.79.0" + sass-graph "^2.1.1" + stdout-stream "^1.4.0" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +once@^1.3.0, once@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@0, osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +popper.js@^1.11.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.11.1.tgz#f5aca9a73bca1ce1fdbd9be8b1ba68677cbdd8e0" + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16: + version "5.2.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +prettier@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.3.tgz#59dadc683345ec6b88f88b94ed4ae7e1da394bfe" + +private@^0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +rc@^1.1.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-file-stdin@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/read-file-stdin/-/read-file-stdin-0.2.1.tgz#25eccff3a153b6809afacb23ee15387db9e0ee61" + dependencies: + gather-stream "^1.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.10.0: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-transform@0.9.11: + version "0.9.11" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@2, request@^2.79.0, request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +rollup-plugin-babel@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-3.0.1.tgz#e1b75bc3a6ea876bb8ec747562b344b15e27c94e" + dependencies: + rollup-pluginutils "^1.5.0" + +rollup-pluginutils@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" + dependencies: + estree-walker "^0.2.1" + minimatch "^3.0.2" + +rollup@^0.45.2: + version "0.45.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.45.2.tgz#63a284c2b31234656f24e9e9717fabb6a7f0fa43" + dependencies: + source-map-support "^0.4.0" + +safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sass-graph@^2.1.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + +sax@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-map-support@^0.4.0, source-map-support@^0.4.2: + version "0.4.15" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" + dependencies: + source-map "^0.5.6" + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stdout-stream@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" + dependencies: + readable-stream "^2.0.1" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.0.0, tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +to-fast-properties@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +uuid@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +v8flags@^2.0.10: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which@1, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-stdout@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/write-file-stdout/-/write-file-stdout-0.0.2.tgz#c252d7c7c5b1b402897630e3453c7bfe690d9ca1" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0"