diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 9ecc6ff..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -exclude: ["node_modules"] diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..fbb23f7 --- /dev/null +++ b/about/index.html @@ -0,0 +1,193 @@ + + + + + +About · Ratchet + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+
+

About

+

Learn about the project's history and meet the maintaining team.

+
+
+ +
+
+ +
+
+
+
+

History

+

The idea for Ratchet was developed by @connors, @dhg, and @fat in mid-2012. Before it became a full fledged framework, Ratchet began as a series of HTML/CSS prototypes of the Twitter for iPhone app. These prototypes became invaluable to the process of testing new feature designs that ended up being shipped as part of the native mobile app.

+

As it became clear that this was the quickest and most effective way to design mobile apps, components were abstracted from these prototypes and became the framework you know today.

+

Released in November 2012, Ratchet quickly became one of the most popular prototyping tools on GitHub. Following that initial launch, we released v2 – a complete rewrite. With v2 we've abstracted the platform specific styles into their own theme CSS files, added an icon set called Ratchicons, and offically became part of the Bootstrap family.

+
+ +
+

Team

+

Ratchet is maintained by one of its creators, a couple of core contributors, and its awesome community.

+ + + +

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

+
+
+ +
+
+

Ratchet

+

Compiled and minified CSS, JavaScript, and fonts. No docs or original source files are included.

+ Download Ratchet +

Currently v2.0.1

+
+ +
+

Source code

+

If you haven't already, download the source code for Ratchet.

+ Download source +
+ +
+
+ +
+ + + + + + + + + + +
+
+ + + diff --git a/assets/css/docs.css b/assets/css/docs.css new file mode 100644 index 0000000..907c815 --- /dev/null +++ b/assets/css/docs.css @@ -0,0 +1,2033 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */ + +html, +body { + width: 100%; + height: 100%; +} + +body { + position: relative !important; + font: 300 14px/1.5 "Open Sans", sans-serif; + color: #333; + background-color: #fff; + -webkit-font-smoothing: antialiased; + -webkit-text-size-adjust: 100%; +} + +.docs-content { + font-size: 14px; +} +@media screen and (min-width: 768px) { + .docs-content { + font-size: 18px; + } +} +.docs-content h1, .docs-content h2, .docs-content h3, .docs-content h4, .docs-content h5, .docs-content h6 { + font-weight: 300; + color: #222; +} +.docs-content h2 { + margin-bottom: .25em; + font-size: 2em; +} +.docs-content h3 { + margin-bottom: .5em; + font-size: 1.25em; +} +.docs-content p { + margin-bottom: 1.5em; + font-size: 1em; + color: #555; +} +.docs-content .lead { + font-size: 1.1em; + color: #777; +} + +.docs-header, +.docs-sub-header { + position: relative; + background-image: linear-gradient(45deg, #0a1855 0%, #da0024 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0a1855', endColorstr='#da0024', GradientType=0 ); +} + +.docs-header { + height: 100vh; + min-height: 750px; +} +.docs-header .carbonad { + position: relative !important; + margin-top: 0 !important; + -webkit-animation-name: fadeintext; + -moz-animation-name: fadeintext; + animation-name: fadeintext; + -webkit-animation-duration: 2s; + -moz-animation-duration: 2s; + animation-duration: 2s; +} +.docs-header .version { + margin-top: 15px; + color: rgba(255, 255, 255, 0.5); + text-align: center; +} + +.docs-header-bottom { + position: absolute; + left: 0; + right: 0; + bottom: 0; +} + +@media screen and (min-width: 768px) { + .docs-header { + min-height: 870px; + } + .docs-header .carbonad { + left: 50% !important; + width: 300px !important; + margin-left: -150px !important; + margin-bottom: 60px !important; + } + + .docs-sub-header .carbonad { + position: absolute !important; + top: 50% !important; + right: 15px !important; + margin-top: 0 !important; + -webkit-transform: translateY(-50%) !important; + -ms-transform: translateY(-50%) !important; + transform: translateY(-50%) !important; + } +} +.docs-masthead { + position: relative; + padding-top: 15px; + padding-bottom: 15px; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +.docs-title { + position: absolute; + left: 50%; + margin-bottom: 0; + font-size: 22px; + font-weight: 300; + z-index: 20; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); +} + +.docs-nav .docs-nav-trigger { + color: #fff; + opacity: .7; +} +.docs-nav .docs-nav-trigger.active { + opacity: 1; +} +.docs-nav .docs-nav-group { + position: absolute; + top: 40px; + left: 0; + right: 0; + z-index: 20; + overflow: hidden; + height: 0; + background-color: rgba(0, 0, 0, 0.9); + opacity: 0; +} +.docs-nav .docs-nav-group.active { + height: auto; + opacity: 1; +} +.docs-nav .docs-nav-item { + display: block; + padding: 20px 15px; + font-size: 22px; +} + +.docs-jump-menu, +.docs-component-group { + display: none; +} + +.docs-title a, +.docs-nav-item { + color: #fff; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; +} +.docs-title a:active, .docs-title a:focus, +.docs-nav-item:active, +.docs-nav-item:focus { + color: #fff; + opacity: .5; +} + +@media screen and (min-width: 768px) { + .docs-title { + position: static; + float: left; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + .docs-nav { + float: right; + } + .docs-nav .docs-nav-trigger { + display: none; + } + .docs-nav .docs-nav-group { + position: static; + display: block; + height: auto; + background-color: transparent; + opacity: 1; + } + .docs-nav .docs-nav-item { + position: relative; + display: inline-block; + padding: 0 15px; + font-size: 14px; + } + + .docs-jump-menu { + position: absolute; + left: 20px; + display: block; + color: #777; + cursor: pointer; + -webkit-transition: opacity 0.2 linear; + -moz-transition: opacity 0.2 linear; + transition: opacity 0.2 linear; + } + .docs-jump-menu:hover { + color: #428bca; + } + .docs-jump-menu:active { + opacity: .5; + } + .docs-jump-menu .icon-list { + font-size: 16px; + margin-right: 3px; + } + .docs-jump-menu .icon-caret { + position: relative; + top: 4px; + margin-left: -5px; + } + + .docs-component-group { + position: absolute; + top: 35px; + left: 30px; + padding-top: 10px; + padding-bottom: 10px; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 3px; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.05); + } + .docs-component-group.active { + display: block; + } + .docs-component-group:before, .docs-component-group:after { + position: absolute; + left: 30px; + width: 0; + height: 0; + content: ''; + } + .docs-component-group:before { + top: -11px; + margin-left: -11px; + border-right: 11px solid transparent; + border-bottom: 11px solid rgba(0, 0, 0, 0.3); + border-left: 11px solid transparent; + } + .docs-component-group:after { + top: -10px; + margin-left: -10px; + border-right: 10px solid transparent; + border-bottom: 10px solid #fff; + border-left: 10px solid transparent; + } + .docs-component-group .docs-component-item { + display: block; + padding: 10px 20px; + color: #777; + } + .docs-component-group .docs-component-item:hover { + color: #fff; + background-color: #428bca; + } +} +@media screen and (min-width: 1200px) { + .docs-jump-menu { + left: 30px; + } +} +.docs-header-content { + position: relative; + text-align: center; + padding: 50px 10px; + -webkit-animation-name: fadeintext; + -moz-animation-name: fadeintext; + animation-name: fadeintext; + -webkit-animation-duration: 2s; + -moz-animation-duration: 2s; + animation-duration: 2s; +} +.docs-header-content .btn { + display: block; + padding: 15px 75px 16px; + font-size: 18px; + margin-bottom: 0; + color: #0a1855; + background-color: #fff; + border: 0; + -webkit-transition: all 0.2s linear; + -moz-transition: all 0.2s linear; + transition: all 0.2s linear; +} +.docs-header-content .btn:hover { + background-color: #fff; + -webkit-box-shadow: 0 0 50px rgba(255, 255, 255, 0.3); + box-shadow: 0 0 50px rgba(255, 255, 255, 0.3); +} +.docs-header-content .btn:active { + opacity: .5; +} + +.docs-subtitle { + max-width: 750px; + margin: 0 auto 20px; + font-size: 28px; + color: #fff; + line-height: 38px; +} + +@media screen and (min-width: 768px) { + .docs-header-content { + top: 30%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + } + .docs-header-content .btn { + display: inline-block; + } + + .docs-subtitle { + margin-bottom: 30px; + font-size: 41px; + line-height: 60px; + } +} +.carbonad { + width: 100% !important; + height: auto !important; + padding: 15px !important; + font-size: 13px !important; + line-height: 18px !important; + background: transparent !important; + border-top: 1px solid rgba(255, 255, 255, 0.1) !important; + border-right: 0 !important; + border-bottom: 0 !important; + border-left: 0 !important; +} + +.carbonad-img { + margin: 0 !important; +} + +.carbonad-text, +.carbonad-tag { + display: block !important; + float: none !important; + width: auto !important; + height: auto !important; + margin-left: 145px !important; + color: rgba(255, 255, 255, 0.65) !important; + font-family: "Open Sans", sans-serif !important; +} + +.carbonad-text { + padding-top: 0 !important; +} + +.carbonad-tag { + text-align: left !important; +} + +.carbonad-text a, +.carbonad-tag a { + color: #fff !important; +} + +.carbonad #azcarbon > img { + display: none; +} + +@media screen and (min-width: 768px) { + .carbonad { + width: 360px !important; + border-right: 1px solid rgba(255, 255, 255, 0.1) !important; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important; + border-left: 1px solid rgba(255, 255, 255, 0.1) !important; + border-radius: 3px !important; + } +} +.docs-sub-content { + position: relative; + overflow: hidden; + padding: 55px 15px 65px; + color: #fff; + text-align: center; +} +.docs-sub-content .page-title, +.docs-sub-content .page-description { + margin-top: 0; + margin-bottom: 0; + font-weight: 300; +} +.docs-sub-content .page-title { + font-size: 40px; + margin-bottom: 5px; +} +.docs-sub-content .page-description { + color: #fff; + font-size: 24px; + opacity: .7; +} + +@media screen and (min-width: 768px) { + .docs-sub-content { + margin-right: 380px; + text-align: left; + } +} +.docs-section { + padding-top: 50px; + padding-bottom: 50px; + border-bottom: 1px solid #ddd; +} + +.docs-section:last-child { + border-bottom: 0; +} + +@media screen and (min-width: 768px) { + .docs-module { + margin-top: 35px; + } +} +.docs-module { + margin-top: 20px; + padding: 20px; + border: 1px solid #dddddd; + border-radius: 3px; +} +.docs-module .btn-block { + margin-bottom: 0; +} + +.version { + margin-top: 10px; + margin-bottom: 0; + color: #777; + font-size: 90%; +} + +.docs-footer { + border-top: 1px solid #ddd; + margin-top: 50px; + padding: 30px 20px; + color: #777; + font-size: 14px; + text-align: center; +} +.docs-footer .social { + padding: 0 0 20px; + margin: 0; + list-style: none; +} +.docs-footer .social li { + height: 20px; + display: inline-block; + vertical-align: top; +} +.docs-footer .social .twitter-follow-button { + margin-top: 5px; +} +@media screen and (min-width: 768px) { + .docs-footer .social .twitter-follow-button { + margin-top: 0; + } +} + +.docs-footer-text { + margin-top: 0; + margin-bottom: 0; +} + +@media screen and (min-width: 768px) { + .docs-footer-text { + width: 550px; + margin: 0 auto; + padding-left: 0; + padding-right: 0; + } +} +.docs-footer-links { + padding-left: 0; +} +.docs-footer-links li { + display: inline; + padding-left: 3px; + padding-right: 3px; +} + +.docs-header .docs-footer { + margin-top: 0; + border-top: 1px solid rgba(255, 255, 255, 0.1); +} +.docs-header .docs-footer .docs-footer-text, +.docs-header .docs-footer .docs-footer-links { + color: rgba(255, 255, 255, 0.5); +} +.docs-header .docs-footer .docs-footer-text a, +.docs-header .docs-footer .docs-footer-links a { + color: rgba(255, 255, 255, 0.8); +} + +.github-btn { + border: 0; + overflow: hidden; +} + +.docs-component-toolbar { + padding-top: 8px; + padding-bottom: 8px; + position: fixed; + top: 0; + bottom: auto; + left: 0; + right: 0; + z-index: 20; + height: 44px; + background-color: #fff; + border-bottom: 1px solid #ddd; + -webkit-transition: -webkit-transform .5s; + -moz-transition: -moz-transform .5s; + transition: transform .5s; + -webkit-transform: translate3d(0, -55px, 0); + -ms-transform: translate3d(0, -55px, 0); + transform: translate3d(0, -55px, 0); +} +.docs-component-toolbar.visible { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.docs-component-toolbar .segmented-control { + max-width: 300px; + margin: 0 auto; +} +.docs-component-toolbar .segmented-control .control-item { + cursor: pointer; +} + +.docs-examples { + margin-top: 30px; +} + +.example-wrap { + margin-bottom: 30px; +} +.example-wrap .example { + display: block; + overflow: hidden; + padding: 3px; + width: 100%; + border: 1px solid #dddddd; + border-radius: 3px; +} +.example-wrap .example-title { + margin-top: 10px; +} +.example-wrap img { + display: block; + width: 100%; + height: auto; +} + +code { + padding: 2px 4px; + font-size: 90%; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + background-color: #f9f9f9; + border-radius: 3px; +} + +.component { + padding: 50px 15px; + margin-left: -15px; + margin-right: -15px; + border-bottom: 1px solid #ddd; +} +.component.no-border { + border-bottom: 0; +} + +.component-title { + margin-bottom: 10px; + font-size: 24px; + line-height: 34px; +} + +.component-description { + margin-bottom: 15px; + font-size: 16px; +} + +.component-example { + font-family: "Helvetica Neue", Helvetica, sans-serif; + font-size: 17px; + line-height: 21px; +} + +.component-example, +.component-example .bar, +.component-example .content { + position: relative; +} + +.component-example .bar { + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; +} +.component-example .bar.bar-header-secondary { + top: 0 !important; + border-top: 0; +} + +.component-example > .content-padded { + margin: 15px; +} + +.component-example > .card { + margin: 15px 0 0; +} +.component-example > .card .control-content { + padding: 15px; +} + +.component-example > .btn, +.component-example > .toggle { + margin-bottom: 10px; +} + +.component-example .slider { + height: 300px; +} +.component-example .slider .slide { + height: 300px; +} + +.component-example .slide img { + width: 100%; +} + +.component-example .slide-text { + position: absolute; + top: 45%; + left: 0; + width: 100%; + color: #fff; + text-align: center; + font-size: 24px; + text-shadow: 0 0 10px rgba(0, 0, 0, 0.5); +} + +.component-example-fullbleed, +.highlight { + margin-left: -15px; + margin-right: -15px; +} + +.bar-nav ~ .content { + padding: 0; +} + +.highlight pre { + margin-top: 15px; + padding: 15px; + font-size: 13px; + overflow-x: auto; + color: #777; + background-color: #fafafa; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + white-space: pre; + word-wrap: normal; +} + +@media screen and (min-width: 768px) { + .component, + .component-example-fullbleed, + .highlight { + margin-left: 0; + margin-right: 0; + } + + .component { + padding-left: 0; + padding-right: 0; + opacity: .3; + -webkit-transition: opacity 0.2s ease-in-out; + -moz-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; + } + .component.active { + opacity: 1; + } + + .component-example { + display: none; + } + + .highlight pre { + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; + border-radius: 3px; + } +} +#ratchicons .icon, +#ratchiconsInDevice .icon { + width: 50px; + height: 50px; + margin: 3px; + font-size: 24px; + line-height: 50px; + text-align: center; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 25px; +} + +#modals .modal { + left: 0; + z-index: 50; +} + +#push .component-example { + height: 150px; + overflow: hidden; +} + +#buttonsInDevice .btn, +#buttonsBadgesInDevice .btn, +#buttonsWithIconsInDevice .btn { + margin-top: 10px; + margin-right: 100px; + margin-left: 10px; +} + +#blockButtonsInDevice .btn-block { + width: 300px; + margin: 10px auto; +} + +#segmentedControlsInDevice .segmented-control { + margin-top: 10px; + margin-right: 10px; + margin-left: 10px; +} +#segmentedControlsInDevice .card span { + padding: 10px; +} + +#badgesInDevice { + text-align: center; +} +#badgesInDevice .badge { + margin-top: 10px; +} + +#formsInDevice form { + margin: 10px; +} +#formsInDevice form.input-group { + margin: 0; +} + +#togglesInDevice .toggle { + margin: 10px auto; +} + +#popoversInDevice #iwindow:before { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 11; + background-color: rgba(0, 0, 0, 0.3); + content: ''; +} + +@media screen and (min-width: 768px) { + .popover { + position: absolute; + display: block; + top: 72px; + opacity: 1; + } +} +#modalsInDevice #iwindow > .btn { + margin: 10px; +} + +@media screen and (min-width: 768px) { + .slider .slide img { + width: 100%; + height: 570px; + display: block; + } + + .slider .slide-group .slide-text { + position: absolute; + top: 45%; + left: 0; + width: 100%; + color: #fff; + text-align: center; + font-size: 24px; + text-shadow: 0 0 10px rgba(0, 0, 0, 0.5); + } +} +.device { + display: none; + font-family: "Helvetica Neue", Helvetica, sans-serif; + font-size: 17px; + line-height: 21px; +} + +@media screen and (min-width: 768px) { + .device { + position: relative; + top: 50px; + display: block; + width: 395px; + height: 813px; + margin-left: -20px; + font-family: "Helvetica Neue", sans-serif; + background-image: url("../img/device-sprite.png"); + background-size: 300%; + background-repeat: no-repeat; + background-position: 0 0; + -webkit-transition: background-image 0.1s linear; + -moz-transition: background-image 0.1s linear; + transition: background-image 0.1s linear; + } + .device.device-fixed { + position: fixed; + right: auto; + } + + .device .device-content { + position: absolute; + top: 117px; + left: 37px; + width: 320px; + height: 569px; + overflow: hidden; + font-size: 17px; + line-height: 21px; + background-color: #fff; + } + + .device .content, + .device .bar, + .device .modal { + position: absolute; + } + + .device .content { + top: 44px; + left: 0; + right: 0; + bottom: 0; + } +} +@media screen and (min-width: 1200px) { + .device { + margin-left: 39px; + } +} +hr { + height: 0; + margin: 10px 0 30px; + border: solid #ddd; + border-width: 1px 0 0; + clear: both; +} + +.column-group:before, .column-group:after { + content: " "; + display: table; +} +.column-group:after { + clear: both; +} + +.container { + position: relative; + margin-left: auto; + margin-right: auto; + padding-left: 0; + padding-right: 0; +} + +.column-group { + width: auto; +} + +.column { + padding-left: 15px; + padding-right: 15px; + float: left; + width: 100%; +} +.column.pull-right { + float: right; +} + +.column .column-group { + margin-left: -15px; + margin-right: -15px; +} + +@media screen and (min-width: 768px) { + .container { + padding: 0; + max-width: 940px; + } + + .lg-units-4 { + width: 33.333%; + } + + .lg-units-5 { + width: 41.666%; + } + + .lg-units-7 { + width: 58.333%; + } + + .lg-units-8 { + width: 66.666%; + } +} +@media screen and (min-width: 1200px) { + .container { + max-width: 1170px; + } +} +.platform-ios { + @-webkit-keyframes fadeOverlay { + from { + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0), -320px 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 10px rgba(0, 0, 0, 0), -320px 0 0 rgba(0, 0, 0, 0); + } + + to { + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3), -320px 0 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3), -320px 0 0 rgba(0, 0, 0, 0.1); + } +} + +} +.platform-ios a { + color: #007aff; +} +.platform-ios a:active { + color: #0062cc; +} +.platform-ios .content { + background-color: #efeff4; +} +.platform-ios .h5, .platform-ios h5, +.platform-ios .h6, .platform-ios h6, +.platform-ios p { + color: #8f8f94; +} +.platform-ios .h5, .platform-ios h5, +.platform-ios .h6, .platform-ios h6 { + font-weight: normal; + text-transform: uppercase; +} +.platform-ios .btn { + border: 1px solid #929292; + color: #929292; + background-color: rgba(247, 247, 247, 0.98); + -webkit-transition: all; + -moz-transition: all; + transition: all; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: linear; + -moz-transition-timing-function: linear; + transition-timing-function: linear; +} +.platform-ios .btn:active, .platform-ios .btn.active { + color: #fff; + background-color: #929292; +} +.platform-ios .btn-primary { + color: #fff; + border: 1px solid #007aff; + background-color: #007aff; +} +.platform-ios .btn-primary:active, .platform-ios .btn-primary.active { + border: 1px solid #0062cc; + background-color: #0062cc; +} +.platform-ios .btn-positive { + color: #fff; + border: 1px solid #4cd964; + background-color: #4cd964; +} +.platform-ios .btn-positive:active, .platform-ios .btn-positive.active { + border: 1px solid #2ac845; + background-color: #2ac845; +} +.platform-ios .btn-negative { + color: #fff; + border: 1px solid #dd524d; + background-color: #dd524d; +} +.platform-ios .btn-negative:active, .platform-ios .btn-negative.active { + border: 1px solid #cf2d28; + background-color: #cf2d28; +} +.platform-ios .btn-outlined { + background-color: transparent; +} +.platform-ios .btn-outlined.btn-primary { + color: #007aff; +} +.platform-ios .btn-outlined.btn-positive { + color: #4cd964; +} +.platform-ios .btn-outlined.btn-negative { + color: #dd524d; +} +.platform-ios .btn-outlined.btn-primary:active, .platform-ios .btn-outlined.btn-positive:active, .platform-ios .btn-outlined.btn-negative:active { + color: #fff; +} +.platform-ios .btn-link { + color: #007aff; + background-color: transparent; + border: none; +} +.platform-ios .btn-link:active, .platform-ios .btn-link.active { + color: #0062cc; + background-color: transparent; +} +.platform-ios .btn .badge { + background-color: rgba(0, 0, 0, 0.15); +} +.platform-ios .btn .badge.badge-inverted { + background-color: transparent; +} +.platform-ios .btn:active .badge { + color: #fff; +} +.platform-ios .bar { + border-bottom: 0; + background-color: rgba(247, 247, 247, 0.98); + -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.85); + box-shadow: 0 0 1px rgba(0, 0, 0, 0.85); +} +.platform-ios .bar.bar-header-secondary { + top: 44px; +} +.platform-ios .bar.bar-footer-secondary { + bottom: 44px; +} +.platform-ios .bar.bar-footer-secondary-tab { + bottom: 50px; +} +.platform-ios .bar.bar-footer, .platform-ios .bar.bar-footer-secondary, .platform-ios .bar.bar-footer-secondary-tab { + border-top: 0; +} +.platform-ios .bar-tab { + border-top: 0; +} +.platform-ios .tab-item { + color: #929292; +} +.platform-ios .tab-item.active, .platform-ios .tab-item:active { + color: #007aff; +} +.platform-ios .bar-nav .btn-link { + color: #007aff; +} +.platform-ios .bar-nav .btn-link:active { + color: #007aff; + opacity: .6; +} +.platform-ios .badge.badge-inverted { + color: #929292; + background-color: transparent; +} +.platform-ios .badge-primary { + color: #fff; + background-color: #007aff; +} +.platform-ios .badge-primary.badge-inverted { + color: #007aff; + background-color: transparent; +} +.platform-ios .badge-positive { + color: #fff; + background-color: #4cd964; +} +.platform-ios .badge-positive.badge-inverted { + color: #4cd964; + background-color: transparent; +} +.platform-ios .badge-negative { + color: #fff; + background-color: #dd524d; +} +.platform-ios .badge-negative.badge-inverted { + color: #dd524d; + background-color: transparent; +} +.platform-ios .card .table-view { + background-image: none; +} +.platform-ios .card .table-view-cell:last-child { + background-image: none; +} +.platform-ios .table-view { + border-top: 0; + border-bottom: 0; + background-image: url("data:image/svg+xml;utf8,"), url("data:image/svg+xml;utf8,"); + background-position: 0 100%, 0 0%; + background-repeat: no-repeat; +} +.platform-ios .table-view .table-view-cell { + border-bottom: 0; + background-image: url("data:image/svg+xml;utf8,"); + background-position: 15px 100%; + background-repeat: no-repeat; +} +.platform-ios .table-view .table-view-cell:last-child { + background-image: none; +} +.platform-ios .table-view .table-view-divider { + border-top: 0; + border-bottom: 0; + background-image: url("data:image/svg+xml;utf8,"), url("data:image/svg+xml;utf8,"); + background-position: 0 100%, 0 0%; + background-repeat: no-repeat; +} +.platform-ios select, +.platform-ios textarea, +.platform-ios input[type="text"], +.platform-ios input[type="search"], +.platform-ios input[type="password"], +.platform-ios input[type="datetime"], +.platform-ios input[type="datetime-local"], +.platform-ios input[type="date"], +.platform-ios input[type="month"], +.platform-ios input[type="time"], +.platform-ios input[type="week"], +.platform-ios input[type="number"], +.platform-ios input[type="email"], +.platform-ios input[type="url"], +.platform-ios input[type="tel"], +.platform-ios input[type="color"], +.platform-ios .input-group { + height: 40px; + padding: 10px 15px; + border: 1px solid rgba(0, 0, 0, 0.2); +} +.platform-ios input[type="search"] { + height: 34px; + text-align: center; + background-color: rgba(0, 0, 0, 0.1); + border: 0; + border-radius: 6px; +} +.platform-ios input[type="search"]:focus { + text-align: left; +} +.platform-ios select, +.platform-ios textarea, +.platform-ios .input-group { + height: auto; +} +.platform-ios .input-group { + padding: 0; + border: 0; + background-image: url("data:image/svg+xml;utf8,"), url("data:image/svg+xml;utf8,"); + background-position: 0 100%, 0 0%; + background-repeat: no-repeat; +} +.platform-ios .input-group input { + border: 0; + background-image: url("data:image/svg+xml;utf8,"); + background-position: 15px 100%; + background-repeat: no-repeat; +} +.platform-ios .input-group input:last-child { + background-image: none; +} +.platform-ios .input-row { + border-bottom: 0; + background-image: url("data:image/svg+xml;utf8,"); + background-position: 15px 100%; + background-repeat: no-repeat; +} +.platform-ios .input-row:last-child, +.platform-ios .input-row label + input { + background-image: none; +} +.platform-ios .segmented-control { + background-color: transparent; + border: 1px solid #929292; +} +.platform-ios .segmented-control .control-item { + color: #929292; + border-color: #929292; + -webkit-transition: background-color 0.1s linear; + -moz-transition: background-color 0.1s linear; + transition: background-color 0.1s linear; +} +.platform-ios .segmented-control .control-item:active { + background-color: #ebebeb; +} +.platform-ios .segmented-control .control-item.active { + color: #fff; + background-color: #929292; +} +.platform-ios .segmented-control-primary { + border: 1px solid #007aff; +} +.platform-ios .segmented-control-primary .control-item { + color: #007aff; + border-color: inherit; +} +.platform-ios .segmented-control-primary .control-item:active { + background-color: #b3d7ff; +} +.platform-ios .segmented-control-primary .control-item.active { + color: #fff; + background-color: #007aff; +} +.platform-ios .segmented-control-positive { + border: 1px solid #4cd964; +} +.platform-ios .segmented-control-positive .control-item { + color: #4cd964; + border-color: inherit; +} +.platform-ios .segmented-control-positive .control-item:active { + background-color: #dff8e3; +} +.platform-ios .segmented-control-positive .control-item.active { + color: #fff; + background-color: #4cd964; +} +.platform-ios .segmented-control-negative { + border: 1px solid #dd524d; +} +.platform-ios .segmented-control-negative .control-item { + color: #dd524d; + border-color: inherit; +} +.platform-ios .segmented-control-negative .control-item:active { + background-color: #fae4e3; +} +.platform-ios .segmented-control-negative .control-item.active { + color: #fff; + background-color: #dd524d; +} +.platform-ios .popover { + border-radius: 12px; + -webkit-transition: -webkit-transform .2s ease-in-out, opacity .2s ease-in-out; + -moz-transition: -moz-transform .2s ease-in-out, opacity .2s ease-in-out; + transition: transform .2s ease-in-out, opacity .2s ease-in-out; + -webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in-out; + -moz-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in-out; + transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in-out; +} +.platform-ios .popover:before { + border-bottom: 15px solid rgba(247, 247, 247, 0.98); +} +.platform-ios .popover .bar { + -webkit-box-shadow: none; + box-shadow: none; +} +.platform-ios .popover .bar-nav { + border-bottom: 1px solid rgba(0, 0, 0, 0.15); +} +.platform-ios .popover .table-view { + border-radius: 12px; + background-image: none; +} +.platform-ios .modal { + -webkit-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + -moz-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); +} +.platform-ios .modal.active { + -webkit-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + -moz-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); +} +.platform-ios .toggle { + width: 47px; + border: 2px solid #e6e6e6; + -webkit-box-shadow: inset 0 0 0 0 #e1e1e1; + box-shadow: inset 0 0 0 0 #e1e1e1; + -webkit-transition-property: box-shadow, border; + -moz-transition-property: box-shadow, border; + transition-property: box-shadow, border; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.platform-ios .toggle .toggle-handle { + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-transition-property: -webkit-transform, border, width; + -moz-transition-property: -moz-transform, border, width; + transition-property: transform, border, width; + -webkit-box-shadow: 0 3px 3px rgba(0, 0, 0, 0.08); + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.08); +} +.platform-ios .toggle:before { + display: none; +} +.platform-ios .toggle.active { + border: 2px solid #4cd964; + background-color: transparent; + -webkit-box-shadow: inset 0 0 0 13px #4cd964; + box-shadow: inset 0 0 0 13px #4cd964; +} +.platform-ios .toggle.active .toggle-handle { + -webkit-transform: translate3d(17px, 0, 0); + -ms-transform: translate3d(17px, 0, 0); + transform: translate3d(17px, 0, 0); +} +.platform-ios .toggle.active .toggle-handle { + border-color: #4cd964; +} +.platform-ios .content.fade { + -webkit-transition: opacity 0.2s ease-in-out; + -moz-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; +} +.platform-ios .content.sliding { + -webkit-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + -moz-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); +} +.platform-ios .content.sliding.sliding-in, .platform-ios .content.sliding.right:not([class*="sliding-in"]) { + -webkit-animation-name: fadeOverlay; + -moz-animation-name: fadeOverlay; + animation-name: fadeOverlay; + -webkit-animation-duration: 0.4s; + -moz-animation-duration: 0.4s; + animation-duration: 0.4s; +} +.platform-ios .content.sliding.right:not([class*="sliding-in"]) { + -webkit-animation-direction: reverse; + -moz-animation-direction: reverse; + animation-direction: reverse; +} +.platform-ios .content.sliding.left { + -webkit-transform: translate3d(-20%, 0, 0); + -ms-transform: translate3d(-20%, 0, 0); + transform: translate3d(-20%, 0, 0); +} +.platform-ios .device { + background-position: -395px 0; +} +.platform-ios .device .device-content { + background-color: #efeff4; +} + +.platform-android body { + font-family: "Roboto", sans-serif; + font-size: 18px; + line-height: 22px; + color: #222222; +} +.platform-android a { + color: #33b5e5; +} +.platform-android a:active { + color: #1a9bcb; +} +.platform-android .content { + background-color: #f2f2f2; +} +.platform-android .bar-nav ~ .content { + padding-top: 50px; +} +.platform-android .bar-header-secondary ~ .content { + padding-top: 100px; +} +.platform-android .bar-tab ~ .content { + padding-top: 50px; + padding-bottom: 0; +} +.platform-android .bar-footer ~ .content { + padding-bottom: 50px; +} +.platform-android .bar-footer-secondary ~ .content { + padding-bottom: 100px; +} +.platform-android .btn { + padding: 8px 15px; + font-size: 14px; + color: #222222; + background-color: #cecece; + border: 0; + border-radius: 2px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 1px rgba(0, 0, 0, 0.25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 1px rgba(0, 0, 0, 0.25); +} +.platform-android .btn:active, .platform-android .btn.active { + color: #222222; + border: 0; + background-color: #999999; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2); +} +.platform-android .btn-primary { + color: #fff; + border: 0; + background-color: #33b5e5; +} +.platform-android .btn-primary:active, .platform-android .btn-primary.active { + color: #fff; + border: 0; + background-color: #1a9bcb; +} +.platform-android .btn-positive { + color: #fff; + border: 0; + background-color: #99cc00; +} +.platform-android .btn-positive:active, .platform-android .btn-positive.active { + color: #fff; + border: 0; + background-color: #739900; +} +.platform-android .btn-negative { + color: #fff; + border: 0; + background-color: #ff4444; +} +.platform-android .btn-negative:active, .platform-android .btn-negative.active { + color: #fff; + border: 0; + background-color: #ff1111; +} +.platform-android .btn-outlined { + border: 1px solid #999999; + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.platform-android .btn-outlined.btn-primary { + border: 1px solid #33b5e5; + color: #33b5e5; +} +.platform-android .btn-outlined.btn-primary:active { + border: 1px solid #33b5e5; + background-color: #33b5e5; +} +.platform-android .btn-outlined.btn-positive { + border: 1px solid #99cc00; + color: #99cc00; +} +.platform-android .btn-outlined.btn-positive:active { + border: 1px solid #99cc00; + background-color: #99cc00; +} +.platform-android .btn-outlined.btn-negative { + border: 1px solid #ff4444; + color: #ff4444; +} +.platform-android .btn-outlined.btn-negative:active { + border: 1px solid #ff4444; + background-color: #ff4444; +} +.platform-android .btn-outlined:active { + border: 1px solid #999999; + background-color: #999999; + -webkit-box-shadow: none; + box-shadow: none; +} +.platform-android .btn-outlined.btn-primary:active, .platform-android .btn-outlined.btn-positive:active, .platform-android .btn-outlined.btn-negative:active { + color: #fff; + -webkit-box-shadow: none; + box-shadow: none; +} +.platform-android .btn-link { + color: #33b5e5; + background-color: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.platform-android .btn-link:active, .platform-android .btn-link.active { + color: #1a9bcb; + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.platform-android .btn-block { + padding: 15px 0; + font-size: 18px; +} +.platform-android .btn .badge { + background-color: rgba(0, 0, 0, 0.15); +} +.platform-android .btn .badge.badge-inverted { + background-color: transparent; +} +.platform-android .btn:active .badge { + color: #fff; +} +.platform-android .bar { + height: 50px; + background-color: #dddddd; + border-bottom: 1px solid #b1b1b1; + -webkit-box-shadow: inset 0 -2px 0 #d2d2d2, 0 3px 3px rgba(0, 0, 0, 0.07); + box-shadow: inset 0 -2px 0 #d2d2d2, 0 3px 3px rgba(0, 0, 0, 0.07); +} +.platform-android .bar.bar-header-secondary { + top: 50px; +} +.platform-android .bar.bar-footer-secondary { + bottom: 50px; +} +.platform-android .bar.bar-footer-secondary-tab { + bottom: 50px; +} +.platform-android .bar .bar-footer, +.platform-android .bar .bar-footer-secondary, +.platform-android .bar .bar-footer-secondary-tab { + border-bottom: 0; + border-top: 1px solid #b1b1b1; + -webkit-box-shadow: inset 0 -2px 0 #33b5e5; + box-shadow: inset 0 -2px 0 #33b5e5; +} +.platform-android .bar-tab { + top: 0; + bottom: auto; + height: 50px; + border-top: 0; +} +.platform-android .bar-tab .tab-item { + color: #929292; +} +.platform-android .bar-tab .tab-item.active { + color: #33b5e5; + -webkit-box-shadow: inset 0 -2px 0 #33b5e5; + box-shadow: inset 0 -2px 0 #33b5e5; +} +.platform-android .bar-tab .tab-item:active { + color: #929292; + background-color: #78c6e3; +} +.platform-android .bar-tab .tab-item .icon { + top: 3px; + padding-top: 0; + padding-bottom: 0; +} +.platform-android .title { + position: static; + padding-left: 15px; + font-size: 18px; + line-height: 49px; + text-align: left; +} +.platform-android .bar .btn { + top: 7px; + padding-top: 10px; + padding-bottom: 10px; +} +.platform-android .bar .btn-link { + top: 0; + padding: 0; + color: #33b5e5; + font-size: 18px; + line-height: 49px; +} +.platform-android .bar .btn-link:active, .platform-android .bar .btn-link.active { + color: #1a9bcb; +} +.platform-android .bar .btn-link .icon { + top: 2px; + padding: 0; +} +.platform-android .bar .btn-block { + top: 4px; +} +.platform-android .bar .segmented-control { + top: 7px; +} +.platform-android .bar .icon { + padding-top: 13px; + padding-bottom: 13px; +} +.platform-android .bar .title .icon { + padding: 0; +} +.platform-android .bar .title .icon.icon-caret { + top: 10px; + color: #777; +} +.platform-android .bar input[type="search"] { + height: 35px; +} +.platform-android .badge.badge-inverted { + color: #999999; + background-color: transparent; +} +.platform-android .badge-primary { + color: #fff; + background-color: #33b5e5; +} +.platform-android .badge-primary.badge-inverted { + color: #33b5e5; + background-color: transparent; +} +.platform-android .badge-positive { + color: #fff; + background-color: #99cc00; +} +.platform-android .badge-positive.badge-inverted { + color: #99cc00; + background-color: transparent; +} +.platform-android .badge-negative { + color: #fff; + background-color: #ff4444; +} +.platform-android .badge-negative.badge-inverted { + color: #ff4444; + background-color: transparent; +} +.platform-android .card { + border-color: #d9d9d9; + border-radius: 2px; + background-color: transparent; +} +.platform-android .table-view { + background-color: transparent; +} +.platform-android .table-view .table-view-cell { + border-bottom: 1px solid #d9d9d9; +} +.platform-android .table-view .table-view-cell:last-child { + background-image: none; +} +.platform-android .table-view .table-view-cell > a:not(.btn):active { + background-color: #e0e0e0; +} +.platform-android .table-view .table-view-cell > a:not(.btn):active .icon { + color: #fff; +} +.platform-android .table-view .table-view-divider { + padding-top: 25px; + font-size: 12px; + font-weight: bold; + text-transform: uppercase; + border-top: 0; + border-bottom: 2px solid #a9a9a9; + background-color: transparent; +} +.platform-android select, +.platform-android textarea, +.platform-android input[type="text"], +.platform-android input[type="search"], +.platform-android input[type="password"], +.platform-android input[type="datetime"], +.platform-android input[type="datetime-local"], +.platform-android input[type="date"], +.platform-android input[type="month"], +.platform-android input[type="time"], +.platform-android input[type="week"], +.platform-android input[type="number"], +.platform-android input[type="email"], +.platform-android input[type="url"], +.platform-android input[type="tel"], +.platform-android input[type="color"], +.platform-android .input-group { + height: 40px; + padding: 10px 15px; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} +.platform-android input[type="search"] { + border-radius: 2px; +} +.platform-android select, +.platform-android textarea, +.platform-android .input-group { + height: auto; +} +.platform-android .input-group { + padding: 0; + border: 0; +} +.platform-android .input-group input { + border: 0; + border-bottom: 1px solid #d9d9d9; + -webkit-box-shadow: none; + box-shadow: none; +} +.platform-android .input-group input:last-child { + background-image: none; +} +.platform-android .input-row { + border-bottom: 1px solid #d9d9d9; +} +.platform-android .input-row label + input { + background-image: none; + border-bottom: 0; +} +.platform-android .segmented-control { + font-size: 14px; + background-color: #cecece; + border: 0; + border-radius: 2px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); +} +.platform-android .segmented-control .control-item { + padding-top: 10px; + padding-bottom: 10px; + color: #222222; + border-left: 1px solid #999; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2); +} +.platform-android .segmented-control .control-item:first-child { + border-left-width: 0; +} +.platform-android .segmented-control .control-item:active, .platform-android .segmented-control .control-item.active { + background-color: #999999; +} +.platform-android .segmented-control-primary { + border: 0; +} +.platform-android .segmented-control-primary .control-item { + color: #fff; + border-color: inherit; +} +.platform-android .segmented-control-primary .control-item:active, .platform-android .segmented-control-primary .control-item.active { + color: #fff; + background-color: #33b5e5; +} +.platform-android .segmented-control-positive { + border: 0; +} +.platform-android .segmented-control-positive .control-item { + color: #fff; + border-color: inherit; +} +.platform-android .segmented-control-positive .control-item:active, .platform-android .segmented-control-positive .control-item.active { + color: #fff; + background-color: #99cc00; +} +.platform-android .segmented-control-negative { + border: 0; +} +.platform-android .segmented-control-negative .control-item { + color: #fff; + border-color: inherit; +} +.platform-android .segmented-control-negative .control-item:active, .platform-android .segmented-control-negative .control-item.active { + color: #fff; + background-color: #ff4444; +} +.platform-android .popover { + top: 47px; + left: 15px; + width: 200px; + margin-left: 0; + border: 1px solid #9b9b9b; + border-radius: 0; + -webkit-transition: -webkit-transform .1s ease-in-out, opacity .2s ease-in-out; + -moz-transition: -moz-transform .1s ease-in-out, opacity .2s ease-in-out; + transition: transform .1s ease-in-out, opacity .2s ease-in-out; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); + -webkit-transform: scale(0.75); + -ms-transform: scale(0.75); + transform: scale(0.75); +} +.platform-android .popover:before { + display: none; +} +.platform-android .popover.visible { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.platform-android .backdrop { + background-color: transparent; +} +.platform-android .popover .bar { + border-radius: 0; +} +.platform-android .popover .bar-nav ~ .table-view { + padding-top: 50px; +} +.platform-android .popover .table-view { + border-radius: 12px; +} +.platform-android .toggle { + width: 104px; + height: 28px; + border: 2px solid #d7d7d7; + border-radius: 0; + background-color: #d7d7d7; +} +.platform-android .toggle .toggle-handle { + top: 0; + left: 0; + width: 50px; + height: 24px; + border: 1px solid #b5b5b5; + border-radius: 2px; + background-color: #bebebe; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} +.platform-android .toggle:before { + top: 1px; + right: auto; + left: 11px; + z-index: 3; + color: #fff; +} +.platform-android .toggle.active { + border: 2px solid #d7d7d7; + background-color: #d7d7d7; +} +.platform-android .toggle.active .toggle-handle { + margin-right: 2px; + background-color: #33b5e5; + border-color: #33b5e5; + -webkit-transform: translate3d(50px, 0, 0); + -ms-transform: translate3d(50px, 0, 0); + transform: translate3d(50px, 0, 0); +} +.platform-android .toggle.active:before { + left: auto; + right: 14px; + color: #fff; +} +.platform-android .navigate-left:after, +.platform-android .push-left:after { + content: ''; +} +.platform-android .navigate-right:after, +.platform-android .push-right:after { + content: ''; +} +.platform-android .icon-caret:before { + content: '\e800'; +} +.platform-android .icon-down:before, +.platform-android .icon-down-nav:before { + content: '\e801'; +} +.platform-android .icon-download:before { + content: '\e802'; +} +.platform-android .icon-left:before, +.platform-android .icon-left-nav:before { + content: '\e803'; +} +.platform-android .icon-more-vertical:before { + content: '\e804'; +} +.platform-android .icon-more:before { + content: '\e805'; +} +.platform-android .icon-right:before, +.platform-android .icon-right-nav:before { + content: '\e806'; +} +.platform-android .icon-search:before { + content: '\e807'; +} +.platform-android .icon-share:before { + content: '\e808'; +} +.platform-android .icon-up:before, +.platform-android .icon-up-nav:before { + content: '\e809'; +} +.platform-android .device { + font-family: 'Roboto', sans-serif; + background-position: -790px 0; +} +.platform-android .device .device-content { + font-size: 18px; + line-height: 22px; + background-color: #f2f2f2; +} +.platform-android .device .content { + top: 50px; +} +.platform-android .device .popover { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.platform-android .bar ~ .content { + padding: 0; +} + +@-webkit-keyframes fadeintext { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/* Taken from Bootstrap docs */ +/* + * Callouts + * + * Not quite alerts, but custom and helpful notes for folks reading the docs. + * Requires a base and modifier class. + */ +/* Common styles for all types */ +.bs-callout { + padding: 20px; + margin: 20px 0; + border-left: 3px solid #eee; +} + +.bs-callout h4 { + margin-top: 0; + margin-bottom: 5px; +} + +.bs-callout p:last-child { + margin-bottom: 0; +} + +.bs-callout code { + background-color: #fff; + border-radius: 3px; +} + +/* Variations */ +.bs-callout-danger { + background-color: #fdf7f7; + border-color: #d9534f; +} + +.bs-callout-danger h4 { + color: #d9534f; +} + +.bs-callout-warning { + background-color: #fcf8f2; + border-color: #f0ad4e; +} + +.bs-callout-warning h4 { + color: #f0ad4e; +} + +.bs-callout-info { + background-color: #f4f8fa; + border-color: #5bc0de; +} + +.bs-callout-info h4 { + color: #5bc0de; +} + +.list-group { + margin-bottom: 20px; + padding-left: 0; +} + +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} + +.list-group .team-member { + color: #555; + font-size: 14px; + line-height: 32px; +} + +.list-group img { + float: left; + width: 32px; + margin-right: 10px; + border-radius: 4px; +} + +.list-group .team-member-info { + overflow: hidden; +} + +.list-group .github-btn { + float: right; + margin-top: 6px; + width: 121px; + height: 20px; +} diff --git a/assets/css/docs.min.css b/assets/css/docs.min.css new file mode 100644 index 0000000..5e3bebd --- /dev/null +++ b/assets/css/docs.min.css @@ -0,0 +1,9 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */html,body{width:100%;height:100%}body{position:relative!important;font:300 14px/1.5 "Open Sans",sans-serif;color:#333;background-color:#fff;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}.docs-content{font-size:14px}@media screen and (min-width:768px){.docs-content{font-size:18px}}.docs-content h1,.docs-content h2,.docs-content h3,.docs-content h4,.docs-content h5,.docs-content h6{font-weight:300;color:#222}.docs-content h2{margin-bottom:.25em;font-size:2em}.docs-content h3{margin-bottom:.5em;font-size:1.25em}.docs-content p{margin-bottom:1.5em;font-size:1em;color:#555}.docs-content .lead{font-size:1.1em;color:#777}.docs-header,.docs-sub-header{position:relative;background-image:linear-gradient(45deg,#0a1855 0,#da0024 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0a1855', endColorstr='#da0024', GradientType=0)}.docs-header{height:100vh;min-height:750px}.docs-header .carbonad{position:relative!important;margin-top:0!important;-webkit-animation-name:fadeintext;-moz-animation-name:fadeintext;animation-name:fadeintext;-webkit-animation-duration:2s;-moz-animation-duration:2s;animation-duration:2s}.docs-header .version{margin-top:15px;color:rgba(255,255,255,.5);text-align:center}.docs-header-bottom{position:absolute;left:0;right:0;bottom:0}@media screen and (min-width:768px){.docs-header{min-height:870px}.docs-header .carbonad{left:50%!important;width:300px!important;margin-left:-150px!important;margin-bottom:60px!important}.docs-sub-header .carbonad{position:absolute!important;top:50%!important;right:15px!important;margin-top:0!important;-webkit-transform:translateY(-50%)!important;-ms-transform:translateY(-50%)!important;transform:translateY(-50%)!important}}.docs-masthead{position:relative;padding-top:15px;padding-bottom:15px;border-bottom:1px solid rgba(255,255,255,.1)}.docs-title{position:absolute;left:50%;margin-bottom:0;font-size:22px;font-weight:300;z-index:20;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.docs-nav .docs-nav-trigger{color:#fff;opacity:.7}.docs-nav .docs-nav-trigger.active{opacity:1}.docs-nav .docs-nav-group{position:absolute;top:40px;left:0;right:0;z-index:20;overflow:hidden;height:0;background-color:rgba(0,0,0,.9);opacity:0}.docs-nav .docs-nav-group.active{height:auto;opacity:1}.docs-nav .docs-nav-item{display:block;padding:20px 15px;font-size:22px}.docs-jump-menu,.docs-component-group{display:none}.docs-title a,.docs-nav-item{color:#fff;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.docs-title a:active,.docs-title a:focus,.docs-nav-item:active,.docs-nav-item:focus{color:#fff;opacity:.5}@media screen and (min-width:768px){.docs-title{position:static;float:left;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.docs-nav{float:right}.docs-nav .docs-nav-trigger{display:none}.docs-nav .docs-nav-group{position:static;display:block;height:auto;background-color:transparent;opacity:1}.docs-nav .docs-nav-item{position:relative;display:inline-block;padding:0 15px;font-size:14px}.docs-jump-menu{position:absolute;left:20px;display:block;color:#777;cursor:pointer;-webkit-transition:opacity .2 linear;-moz-transition:opacity .2 linear;transition:opacity .2 linear}.docs-jump-menu:hover{color:#428bca}.docs-jump-menu:active{opacity:.5}.docs-jump-menu .icon-list{font-size:16px;margin-right:3px}.docs-jump-menu .icon-caret{position:relative;top:4px;margin-left:-5px}.docs-component-group{position:absolute;top:35px;left:30px;padding-top:10px;padding-bottom:10px;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:3px;box-shadow:0 0 8px rgba(0,0,0,.05)}.docs-component-group.active{display:block}.docs-component-group:before,.docs-component-group:after{position:absolute;left:30px;width:0;height:0;content:''}.docs-component-group:before{top:-11px;margin-left:-11px;border-right:11px solid transparent;border-bottom:11px solid rgba(0,0,0,.3);border-left:11px solid transparent}.docs-component-group:after{top:-10px;margin-left:-10px;border-right:10px solid transparent;border-bottom:10px solid #fff;border-left:10px solid transparent}.docs-component-group .docs-component-item{display:block;padding:10px 20px;color:#777}.docs-component-group .docs-component-item:hover{color:#fff;background-color:#428bca}}@media screen and (min-width:1200px){.docs-jump-menu{left:30px}}.docs-header-content{position:relative;text-align:center;padding:50px 10px;-webkit-animation-name:fadeintext;-moz-animation-name:fadeintext;animation-name:fadeintext;-webkit-animation-duration:2s;-moz-animation-duration:2s;animation-duration:2s}.docs-header-content .btn{display:block;padding:15px 75px 16px;font-size:18px;margin-bottom:0;color:#0a1855;background-color:#fff;border:0;-webkit-transition:all .2s linear;-moz-transition:all .2s linear;transition:all .2s linear}.docs-header-content .btn:hover{background-color:#fff;-webkit-box-shadow:0 0 50px rgba(255,255,255,.3);box-shadow:0 0 50px rgba(255,255,255,.3)}.docs-header-content .btn:active{opacity:.5}.docs-subtitle{max-width:750px;margin:0 auto 20px;font-size:28px;color:#fff;line-height:38px}@media screen and (min-width:768px){.docs-header-content{top:30%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.docs-header-content .btn{display:inline-block}.docs-subtitle{margin-bottom:30px;font-size:41px;line-height:60px}}.carbonad{width:100%!important;height:auto!important;padding:15px!important;font-size:13px!important;line-height:18px!important;background:transparent!important;border-top:1px solid rgba(255,255,255,.1)!important;border-right:0!important;border-bottom:0!important;border-left:0!important}.carbonad-img{margin:0!important}.carbonad-text,.carbonad-tag{display:block!important;float:none!important;width:auto!important;height:auto!important;margin-left:145px!important;color:rgba(255,255,255,.65)!important;font-family:"Open Sans",sans-serif!important}.carbonad-text{padding-top:0!important}.carbonad-tag{text-align:left!important}.carbonad-text a,.carbonad-tag a{color:#fff!important}.carbonad #azcarbon>img{display:none}@media screen and (min-width:768px){.carbonad{width:360px!important;border-right:1px solid rgba(255,255,255,.1)!important;border-bottom:1px solid rgba(255,255,255,.1)!important;border-left:1px solid rgba(255,255,255,.1)!important;border-radius:3px!important}}.docs-sub-content{position:relative;overflow:hidden;padding:55px 15px 65px;color:#fff;text-align:center}.docs-sub-content .page-title,.docs-sub-content .page-description{margin-top:0;margin-bottom:0;font-weight:300}.docs-sub-content .page-title{font-size:40px;margin-bottom:5px}.docs-sub-content .page-description{color:#fff;font-size:24px;opacity:.7}@media screen and (min-width:768px){.docs-sub-content{margin-right:380px;text-align:left}}.docs-section{padding-top:50px;padding-bottom:50px;border-bottom:1px solid #ddd}.docs-section:last-child{border-bottom:0}@media screen and (min-width:768px){.docs-module{margin-top:35px}}.docs-module{margin-top:20px;padding:20px;border:1px solid #ddd;border-radius:3px}.docs-module .btn-block{margin-bottom:0}.version{margin-top:10px;margin-bottom:0;color:#777;font-size:90%}.docs-footer{border-top:1px solid #ddd;margin-top:50px;padding:30px 20px;color:#777;font-size:14px;text-align:center}.docs-footer .social{padding:0 0 20px;margin:0;list-style:none}.docs-footer .social li{height:20px;display:inline-block;vertical-align:top}.docs-footer .social .twitter-follow-button{margin-top:5px}@media screen and (min-width:768px){.docs-footer .social .twitter-follow-button{margin-top:0}}.docs-footer-text{margin-top:0;margin-bottom:0}@media screen and (min-width:768px){.docs-footer-text{width:550px;margin:0 auto;padding-left:0;padding-right:0}}.docs-footer-links{padding-left:0}.docs-footer-links li{display:inline;padding-left:3px;padding-right:3px}.docs-header .docs-footer{margin-top:0;border-top:1px solid rgba(255,255,255,.1)}.docs-header .docs-footer .docs-footer-text,.docs-header .docs-footer .docs-footer-links{color:rgba(255,255,255,.5)}.docs-header .docs-footer .docs-footer-text a,.docs-header .docs-footer .docs-footer-links a{color:rgba(255,255,255,.8)}.github-btn{border:0;overflow:hidden}.docs-component-toolbar{padding-top:8px;padding-bottom:8px;position:fixed;top:0;bottom:auto;left:0;right:0;z-index:20;height:44px;background-color:#fff;border-bottom:1px solid #ddd;-webkit-transition:-webkit-transform .5s;-moz-transition:-moz-transform .5s;transition:transform .5s;-webkit-transform:translate3d(0,-55px,0);-ms-transform:translate3d(0,-55px,0);transform:translate3d(0,-55px,0)}.docs-component-toolbar.visible{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.docs-component-toolbar .segmented-control{max-width:300px;margin:0 auto}.docs-component-toolbar .segmented-control .control-item{cursor:pointer}.docs-examples{margin-top:30px}.example-wrap{margin-bottom:30px}.example-wrap .example{display:block;overflow:hidden;padding:3px;width:100%;border:1px solid #ddd;border-radius:3px}.example-wrap .example-title{margin-top:10px}.example-wrap img{display:block;width:100%;height:auto}code{padding:2px 4px;font-size:90%;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;background-color:#f9f9f9;border-radius:3px}.component{padding:50px 15px;margin-left:-15px;margin-right:-15px;border-bottom:1px solid #ddd}.component.no-border{border-bottom:0}.component-title{margin-bottom:10px;font-size:24px;line-height:34px}.component-description{margin-bottom:15px;font-size:16px}.component-example{font-family:"Helvetica Neue",Helvetica,sans-serif;font-size:17px;line-height:21px}.component-example,.component-example .bar,.component-example .content{position:relative}.component-example .bar{border-top:1px solid #ddd;border-bottom:1px solid #ddd}.component-example .bar.bar-header-secondary{top:0!important;border-top:0}.component-example>.content-padded{margin:15px}.component-example>.card{margin:15px 0 0}.component-example>.card .control-content{padding:15px}.component-example>.btn,.component-example>.toggle{margin-bottom:10px}.component-example .slider{height:300px}.component-example .slider .slide{height:300px}.component-example .slide img{width:100%}.component-example .slide-text{position:absolute;top:45%;left:0;width:100%;color:#fff;text-align:center;font-size:24px;text-shadow:0 0 10px rgba(0,0,0,.5)}.component-example-fullbleed,.highlight{margin-left:-15px;margin-right:-15px}.bar-nav~.content{padding:0}.highlight pre{margin-top:15px;padding:15px;font-size:13px;overflow-x:auto;color:#777;background-color:#fafafa;border-top:1px solid #ddd;border-bottom:1px solid #ddd;white-space:pre;word-wrap:normal}@media screen and (min-width:768px){.component,.component-example-fullbleed,.highlight{margin-left:0;margin-right:0}.component{padding-left:0;padding-right:0;opacity:.3;-webkit-transition:opacity .2s ease-in-out;-moz-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.component.active{opacity:1}.component-example{display:none}.highlight pre{border-left:1px solid #ddd;border-right:1px solid #ddd;border-radius:3px}}#ratchicons .icon,#ratchiconsInDevice .icon{width:50px;height:50px;margin:3px;font-size:24px;line-height:50px;text-align:center;background-color:#fff;border:1px solid #ddd;border-radius:25px}#modals .modal{left:0;z-index:50}#push .component-example{height:150px;overflow:hidden}#buttonsInDevice .btn,#buttonsBadgesInDevice .btn,#buttonsWithIconsInDevice .btn{margin-top:10px;margin-right:100px;margin-left:10px}#blockButtonsInDevice .btn-block{width:300px;margin:10px auto}#segmentedControlsInDevice .segmented-control{margin-top:10px;margin-right:10px;margin-left:10px}#segmentedControlsInDevice .card span{padding:10px}#badgesInDevice{text-align:center}#badgesInDevice .badge{margin-top:10px}#formsInDevice form{margin:10px}#formsInDevice form.input-group{margin:0}#togglesInDevice .toggle{margin:10px auto}#popoversInDevice #iwindow:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:11;background-color:rgba(0,0,0,.3);content:''}@media screen and (min-width:768px){.popover{position:absolute;display:block;top:72px;opacity:1}}#modalsInDevice #iwindow>.btn{margin:10px}@media screen and (min-width:768px){.slider .slide img{width:100%;height:570px;display:block}.slider .slide-group .slide-text{position:absolute;top:45%;left:0;width:100%;color:#fff;text-align:center;font-size:24px;text-shadow:0 0 10px rgba(0,0,0,.5)}}.device{display:none;font-family:"Helvetica Neue",Helvetica,sans-serif;font-size:17px;line-height:21px}@media screen and (min-width:768px){.device{position:relative;top:50px;display:block;width:395px;height:813px;margin-left:-20px;font-family:"Helvetica Neue",sans-serif;background-image:url(../img/device-sprite.png);background-size:300%;background-repeat:no-repeat;background-position:0 0;-webkit-transition:background-image .1s linear;-moz-transition:background-image .1s linear;transition:background-image .1s linear}.device.device-fixed{position:fixed;right:auto}.device .device-content{position:absolute;top:117px;left:37px;width:320px;height:569px;overflow:hidden;font-size:17px;line-height:21px;background-color:#fff}.device .content,.device .bar,.device .modal{position:absolute}.device .content{top:44px;left:0;right:0;bottom:0}}@media screen and (min-width:1200px){.device{margin-left:39px}}hr{height:0;margin:10px 0 30px;border:solid #ddd;border-width:1px 0 0;clear:both}.column-group:before,.column-group:after{content:" ";display:table}.column-group:after{clear:both}.container{position:relative;margin-left:auto;margin-right:auto;padding-left:0;padding-right:0}.column-group{width:auto}.column{padding-left:15px;padding-right:15px;float:left;width:100%}.column.pull-right{float:right}.column .column-group{margin-left:-15px;margin-right:-15px}@media screen and (min-width:768px){.container{padding:0;max-width:940px}.lg-units-4{width:33.333%}.lg-units-5{width:41.666%}.lg-units-7{width:58.333%}.lg-units-8{width:66.666%}}@media screen and (min-width:1200px){.container{max-width:1170px}}.platform-ios{@-webkit-keyframes fadeOverlay{from{-webkit-box-shadow:0 0 10px rgba(0,0,0,0),-320px 0 0 rgba(0,0,0,0);box-shadow:0 0 10px rgba(0,0,0,0),-320px 0 0 rgba(0,0,0,0)}to{-webkit-box-shadow:0 0 10px rgba(0,0,0,.3),-320px 0 0 rgba(0,0,0,.1);box-shadow:0 0 10px rgba(0,0,0,.3),-320px 0 0 rgba(0,0,0,.1)}}}.platform-ios a{color:#007aff}.platform-ios a:active{color:#0062cc}.platform-ios .content{background-color:#efeff4}.platform-ios .h5,.platform-ios h5,.platform-ios .h6,.platform-ios h6,.platform-ios p{color:#8f8f94}.platform-ios .h5,.platform-ios h5,.platform-ios .h6,.platform-ios h6{font-weight:400;text-transform:uppercase}.platform-ios .btn{border:1px solid #929292;color:#929292;background-color:rgba(247,247,247,.98);-webkit-transition:all;-moz-transition:all;transition:all;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear;transition-timing-function:linear}.platform-ios .btn:active,.platform-ios .btn.active{color:#fff;background-color:#929292}.platform-ios .btn-primary{color:#fff;border:1px solid #007aff;background-color:#007aff}.platform-ios .btn-primary:active,.platform-ios .btn-primary.active{border:1px solid #0062cc;background-color:#0062cc}.platform-ios .btn-positive{color:#fff;border:1px solid #4cd964;background-color:#4cd964}.platform-ios .btn-positive:active,.platform-ios .btn-positive.active{border:1px solid #2ac845;background-color:#2ac845}.platform-ios .btn-negative{color:#fff;border:1px solid #dd524d;background-color:#dd524d}.platform-ios .btn-negative:active,.platform-ios .btn-negative.active{border:1px solid #cf2d28;background-color:#cf2d28}.platform-ios .btn-outlined{background-color:transparent}.platform-ios .btn-outlined.btn-primary{color:#007aff}.platform-ios .btn-outlined.btn-positive{color:#4cd964}.platform-ios .btn-outlined.btn-negative{color:#dd524d}.platform-ios .btn-outlined.btn-primary:active,.platform-ios .btn-outlined.btn-positive:active,.platform-ios .btn-outlined.btn-negative:active{color:#fff}.platform-ios .btn-link{color:#007aff;background-color:transparent;border:none}.platform-ios .btn-link:active,.platform-ios .btn-link.active{color:#0062cc;background-color:transparent}.platform-ios .btn .badge{background-color:rgba(0,0,0,.15)}.platform-ios .btn .badge.badge-inverted{background-color:transparent}.platform-ios .btn:active .badge{color:#fff}.platform-ios .bar{border-bottom:0;background-color:rgba(247,247,247,.98);-webkit-box-shadow:0 0 1px rgba(0,0,0,.85);box-shadow:0 0 1px rgba(0,0,0,.85)}.platform-ios .bar.bar-header-secondary{top:44px}.platform-ios .bar.bar-footer-secondary{bottom:44px}.platform-ios .bar.bar-footer-secondary-tab{bottom:50px}.platform-ios .bar.bar-footer,.platform-ios .bar.bar-footer-secondary,.platform-ios .bar.bar-footer-secondary-tab{border-top:0}.platform-ios .bar-tab{border-top:0}.platform-ios .tab-item{color:#929292}.platform-ios .tab-item.active,.platform-ios .tab-item:active{color:#007aff}.platform-ios .bar-nav .btn-link{color:#007aff}.platform-ios .bar-nav .btn-link:active{color:#007aff;opacity:.6}.platform-ios .badge.badge-inverted{color:#929292;background-color:transparent}.platform-ios .badge-primary{color:#fff;background-color:#007aff}.platform-ios .badge-primary.badge-inverted{color:#007aff;background-color:transparent}.platform-ios .badge-positive{color:#fff;background-color:#4cd964}.platform-ios .badge-positive.badge-inverted{color:#4cd964;background-color:transparent}.platform-ios .badge-negative{color:#fff;background-color:#dd524d}.platform-ios .badge-negative.badge-inverted{color:#dd524d;background-color:transparent}.platform-ios .card .table-view{background-image:none}.platform-ios .card .table-view-cell:last-child{background-image:none}.platform-ios .table-view{border-top:0;border-bottom:0;background-image:url("data:image/svg+xml;utf8,"),url("data:image/svg+xml;utf8,");background-position:0 100%,0 0;background-repeat:no-repeat}.platform-ios .table-view .table-view-cell{border-bottom:0;background-image:url("data:image/svg+xml;utf8,");background-position:15px 100%;background-repeat:no-repeat}.platform-ios .table-view .table-view-cell:last-child{background-image:none}.platform-ios .table-view .table-view-divider{border-top:0;border-bottom:0;background-image:url("data:image/svg+xml;utf8,"),url("data:image/svg+xml;utf8,");background-position:0 100%,0 0;background-repeat:no-repeat}.platform-ios select,.platform-ios textarea,.platform-ios input[type=text],.platform-ios input[type=search],.platform-ios input[type=password],.platform-ios input[type=datetime],.platform-ios input[type=datetime-local],.platform-ios input[type=date],.platform-ios input[type=month],.platform-ios input[type=time],.platform-ios input[type=week],.platform-ios input[type=number],.platform-ios input[type=email],.platform-ios input[type=url],.platform-ios input[type=tel],.platform-ios input[type=color],.platform-ios .input-group{height:40px;padding:10px 15px;border:1px solid rgba(0,0,0,.2)}.platform-ios input[type=search]{height:34px;text-align:center;background-color:rgba(0,0,0,.1);border:0;border-radius:6px}.platform-ios input[type=search]:focus{text-align:left}.platform-ios select,.platform-ios textarea,.platform-ios .input-group{height:auto}.platform-ios .input-group{padding:0;border:0;background-image:url("data:image/svg+xml;utf8,"),url("data:image/svg+xml;utf8,");background-position:0 100%,0 0;background-repeat:no-repeat}.platform-ios .input-group input{border:0;background-image:url("data:image/svg+xml;utf8,");background-position:15px 100%;background-repeat:no-repeat}.platform-ios .input-group input:last-child{background-image:none}.platform-ios .input-row{border-bottom:0;background-image:url("data:image/svg+xml;utf8,");background-position:15px 100%;background-repeat:no-repeat}.platform-ios .input-row:last-child,.platform-ios .input-row label+input{background-image:none}.platform-ios .segmented-control{background-color:transparent;border:1px solid #929292}.platform-ios .segmented-control .control-item{color:#929292;border-color:#929292;-webkit-transition:background-color .1s linear;-moz-transition:background-color .1s linear;transition:background-color .1s linear}.platform-ios .segmented-control .control-item:active{background-color:#ebebeb}.platform-ios .segmented-control .control-item.active{color:#fff;background-color:#929292}.platform-ios .segmented-control-primary{border:1px solid #007aff}.platform-ios .segmented-control-primary .control-item{color:#007aff;border-color:inherit}.platform-ios .segmented-control-primary .control-item:active{background-color:#b3d7ff}.platform-ios .segmented-control-primary .control-item.active{color:#fff;background-color:#007aff}.platform-ios .segmented-control-positive{border:1px solid #4cd964}.platform-ios .segmented-control-positive .control-item{color:#4cd964;border-color:inherit}.platform-ios .segmented-control-positive .control-item:active{background-color:#dff8e3}.platform-ios .segmented-control-positive .control-item.active{color:#fff;background-color:#4cd964}.platform-ios .segmented-control-negative{border:1px solid #dd524d}.platform-ios .segmented-control-negative .control-item{color:#dd524d;border-color:inherit}.platform-ios .segmented-control-negative .control-item:active{background-color:#fae4e3}.platform-ios .segmented-control-negative .control-item.active{color:#fff;background-color:#dd524d}.platform-ios .popover{border-radius:12px;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out;-moz-transition:-moz-transform .2s ease-in-out,opacity .2s ease-in-out;transition:transform .2s ease-in-out,opacity .2s ease-in-out;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out;-moz-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out;transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out}.platform-ios .popover:before{border-bottom:15px solid rgba(247,247,247,.98)}.platform-ios .popover .bar{-webkit-box-shadow:none;box-shadow:none}.platform-ios .popover .bar-nav{border-bottom:1px solid rgba(0,0,0,.15)}.platform-ios .popover .table-view{border-radius:12px;background-image:none}.platform-ios .modal{-webkit-transition-timing-function:cubic-bezier(0.1,.5,.1,1);-moz-transition-timing-function:cubic-bezier(0.1,.5,.1,1);transition-timing-function:cubic-bezier(0.1,.5,.1,1)}.platform-ios .modal.active{-webkit-transition-timing-function:cubic-bezier(0.1,.5,.1,1);-moz-transition-timing-function:cubic-bezier(0.1,.5,.1,1);transition-timing-function:cubic-bezier(0.1,.5,.1,1)}.platform-ios .toggle{width:47px;border:2px solid #e6e6e6;-webkit-box-shadow:inset 0 0 0 0 #e1e1e1;box-shadow:inset 0 0 0 0 #e1e1e1;-webkit-transition-property:box-shadow,border;-moz-transition-property:box-shadow,border;transition-property:box-shadow,border;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;transition-duration:.2s}.platform-ios .toggle .toggle-handle{border:1px solid rgba(0,0,0,.2);-webkit-transition-property:-webkit-transform,border,width;-moz-transition-property:-moz-transform,border,width;transition-property:transform,border,width;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.08);box-shadow:0 3px 3px rgba(0,0,0,.08)}.platform-ios .toggle:before{display:none}.platform-ios .toggle.active{border:2px solid #4cd964;background-color:transparent;-webkit-box-shadow:inset 0 0 0 13px #4cd964;box-shadow:inset 0 0 0 13px #4cd964}.platform-ios .toggle.active .toggle-handle{-webkit-transform:translate3d(17px,0,0);-ms-transform:translate3d(17px,0,0);transform:translate3d(17px,0,0)}.platform-ios .toggle.active .toggle-handle{border-color:#4cd964}.platform-ios .content.fade{-webkit-transition:opacity .2s ease-in-out;-moz-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.platform-ios .content.sliding{-webkit-transition-timing-function:cubic-bezier(0.1,.5,.1,1);-moz-transition-timing-function:cubic-bezier(0.1,.5,.1,1);transition-timing-function:cubic-bezier(0.1,.5,.1,1)}.platform-ios .content.sliding.sliding-in,.platform-ios .content.sliding.right:not([class*=sliding-in]){-webkit-animation-name:fadeOverlay;-moz-animation-name:fadeOverlay;animation-name:fadeOverlay;-webkit-animation-duration:.4s;-moz-animation-duration:.4s;animation-duration:.4s}.platform-ios .content.sliding.right:not([class*=sliding-in]){-webkit-animation-direction:reverse;-moz-animation-direction:reverse;animation-direction:reverse}.platform-ios .content.sliding.left{-webkit-transform:translate3d(-20%,0,0);-ms-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0)}.platform-ios .device{background-position:-395px 0}.platform-ios .device .device-content{background-color:#efeff4}.platform-android body{font-family:Roboto,sans-serif;font-size:18px;line-height:22px;color:#222}.platform-android a{color:#33b5e5}.platform-android a:active{color:#1a9bcb}.platform-android .content{background-color:#f2f2f2}.platform-android .bar-nav~.content{padding-top:50px}.platform-android .bar-header-secondary~.content{padding-top:100px}.platform-android .bar-tab~.content{padding-top:50px;padding-bottom:0}.platform-android .bar-footer~.content{padding-bottom:50px}.platform-android .bar-footer-secondary~.content{padding-bottom:100px}.platform-android .btn{padding:8px 15px;font-size:14px;color:#222;background-color:#cecece;border:0;border-radius:2px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2),0 1px 1px rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2),0 1px 1px rgba(0,0,0,.25)}.platform-android .btn:active,.platform-android .btn.active{color:#222;border:0;background-color:#999;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2);box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2)}.platform-android .btn-primary{color:#fff;border:0;background-color:#33b5e5}.platform-android .btn-primary:active,.platform-android .btn-primary.active{color:#fff;border:0;background-color:#1a9bcb}.platform-android .btn-positive{color:#fff;border:0;background-color:#9c0}.platform-android .btn-positive:active,.platform-android .btn-positive.active{color:#fff;border:0;background-color:#739900}.platform-android .btn-negative{color:#fff;border:0;background-color:#f44}.platform-android .btn-negative:active,.platform-android .btn-negative.active{color:#fff;border:0;background-color:#f11}.platform-android .btn-outlined{border:1px solid #999;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.platform-android .btn-outlined.btn-primary{border:1px solid #33b5e5;color:#33b5e5}.platform-android .btn-outlined.btn-primary:active{border:1px solid #33b5e5;background-color:#33b5e5}.platform-android .btn-outlined.btn-positive{border:1px solid #9c0;color:#9c0}.platform-android .btn-outlined.btn-positive:active{border:1px solid #9c0;background-color:#9c0}.platform-android .btn-outlined.btn-negative{border:1px solid #f44;color:#f44}.platform-android .btn-outlined.btn-negative:active{border:1px solid #f44;background-color:#f44}.platform-android .btn-outlined:active{border:1px solid #999;background-color:#999;-webkit-box-shadow:none;box-shadow:none}.platform-android .btn-outlined.btn-primary:active,.platform-android .btn-outlined.btn-positive:active,.platform-android .btn-outlined.btn-negative:active{color:#fff;-webkit-box-shadow:none;box-shadow:none}.platform-android .btn-link{color:#33b5e5;background-color:transparent;border:none;-webkit-box-shadow:none;box-shadow:none}.platform-android .btn-link:active,.platform-android .btn-link.active{color:#1a9bcb;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.platform-android .btn-block{padding:15px 0;font-size:18px}.platform-android .btn .badge{background-color:rgba(0,0,0,.15)}.platform-android .btn .badge.badge-inverted{background-color:transparent}.platform-android .btn:active .badge{color:#fff}.platform-android .bar{height:50px;background-color:#ddd;border-bottom:1px solid #b1b1b1;-webkit-box-shadow:inset 0 -2px 0 #d2d2d2,0 3px 3px rgba(0,0,0,.07);box-shadow:inset 0 -2px 0 #d2d2d2,0 3px 3px rgba(0,0,0,.07)}.platform-android .bar.bar-header-secondary{top:50px}.platform-android .bar.bar-footer-secondary{bottom:50px}.platform-android .bar.bar-footer-secondary-tab{bottom:50px}.platform-android .bar .bar-footer,.platform-android .bar .bar-footer-secondary,.platform-android .bar .bar-footer-secondary-tab{border-bottom:0;border-top:1px solid #b1b1b1;-webkit-box-shadow:inset 0 -2px 0 #33b5e5;box-shadow:inset 0 -2px 0 #33b5e5}.platform-android .bar-tab{top:0;bottom:auto;height:50px;border-top:0}.platform-android .bar-tab .tab-item{color:#929292}.platform-android .bar-tab .tab-item.active{color:#33b5e5;-webkit-box-shadow:inset 0 -2px 0 #33b5e5;box-shadow:inset 0 -2px 0 #33b5e5}.platform-android .bar-tab .tab-item:active{color:#929292;background-color:#78c6e3}.platform-android .bar-tab .tab-item .icon{top:3px;padding-top:0;padding-bottom:0}.platform-android .title{position:static;padding-left:15px;font-size:18px;line-height:49px;text-align:left}.platform-android .bar .btn{top:7px;padding-top:10px;padding-bottom:10px}.platform-android .bar .btn-link{top:0;padding:0;color:#33b5e5;font-size:18px;line-height:49px}.platform-android .bar .btn-link:active,.platform-android .bar .btn-link.active{color:#1a9bcb}.platform-android .bar .btn-link .icon{top:2px;padding:0}.platform-android .bar .btn-block{top:4px}.platform-android .bar .segmented-control{top:7px}.platform-android .bar .icon{padding-top:13px;padding-bottom:13px}.platform-android .bar .title .icon{padding:0}.platform-android .bar .title .icon.icon-caret{top:10px;color:#777}.platform-android .bar input[type=search]{height:35px}.platform-android .badge.badge-inverted{color:#999;background-color:transparent}.platform-android .badge-primary{color:#fff;background-color:#33b5e5}.platform-android .badge-primary.badge-inverted{color:#33b5e5;background-color:transparent}.platform-android .badge-positive{color:#fff;background-color:#9c0}.platform-android .badge-positive.badge-inverted{color:#9c0;background-color:transparent}.platform-android .badge-negative{color:#fff;background-color:#f44}.platform-android .badge-negative.badge-inverted{color:#f44;background-color:transparent}.platform-android .card{border-color:#d9d9d9;border-radius:2px;background-color:transparent}.platform-android .table-view{background-color:transparent}.platform-android .table-view .table-view-cell{border-bottom:1px solid #d9d9d9}.platform-android .table-view .table-view-cell:last-child{background-image:none}.platform-android .table-view .table-view-cell>a:not(.btn):active{background-color:#e0e0e0}.platform-android .table-view .table-view-cell>a:not(.btn):active .icon{color:#fff}.platform-android .table-view .table-view-divider{padding-top:25px;font-size:12px;font-weight:700;text-transform:uppercase;border-top:0;border-bottom:2px solid #a9a9a9;background-color:transparent}.platform-android select,.platform-android textarea,.platform-android input[type=text],.platform-android input[type=search],.platform-android input[type=password],.platform-android input[type=datetime],.platform-android input[type=datetime-local],.platform-android input[type=date],.platform-android input[type=month],.platform-android input[type=time],.platform-android input[type=week],.platform-android input[type=number],.platform-android input[type=email],.platform-android input[type=url],.platform-android input[type=tel],.platform-android input[type=color],.platform-android .input-group{height:40px;padding:10px 15px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1)}.platform-android input[type=search]{border-radius:2px}.platform-android select,.platform-android textarea,.platform-android .input-group{height:auto}.platform-android .input-group{padding:0;border:0}.platform-android .input-group input{border:0;border-bottom:1px solid #d9d9d9;-webkit-box-shadow:none;box-shadow:none}.platform-android .input-group input:last-child{background-image:none}.platform-android .input-row{border-bottom:1px solid #d9d9d9}.platform-android .input-row label+input{background-image:none;border-bottom:0}.platform-android .segmented-control{font-size:14px;background-color:#cecece;border:0;border-radius:2px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.25);box-shadow:0 1px 1px rgba(0,0,0,.25)}.platform-android .segmented-control .control-item{padding-top:10px;padding-bottom:10px;color:#222;border-left:1px solid #999;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2);box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2)}.platform-android .segmented-control .control-item:first-child{border-left-width:0}.platform-android .segmented-control .control-item:active,.platform-android .segmented-control .control-item.active{background-color:#999}.platform-android .segmented-control-primary{border:0}.platform-android .segmented-control-primary .control-item{color:#fff;border-color:inherit}.platform-android .segmented-control-primary .control-item:active,.platform-android .segmented-control-primary .control-item.active{color:#fff;background-color:#33b5e5}.platform-android .segmented-control-positive{border:0}.platform-android .segmented-control-positive .control-item{color:#fff;border-color:inherit}.platform-android .segmented-control-positive .control-item:active,.platform-android .segmented-control-positive .control-item.active{color:#fff;background-color:#9c0}.platform-android .segmented-control-negative{border:0}.platform-android .segmented-control-negative .control-item{color:#fff;border-color:inherit}.platform-android .segmented-control-negative .control-item:active,.platform-android .segmented-control-negative .control-item.active{color:#fff;background-color:#f44}.platform-android .popover{top:47px;left:15px;width:200px;margin-left:0;border:1px solid #9b9b9b;border-radius:0;-webkit-transition:-webkit-transform .1s ease-in-out,opacity .2s ease-in-out;-moz-transition:-moz-transform .1s ease-in-out,opacity .2s ease-in-out;transition:transform .1s ease-in-out,opacity .2s ease-in-out;-webkit-box-shadow:0 0 3px rgba(0,0,0,.2);box-shadow:0 0 3px rgba(0,0,0,.2);-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75)}.platform-android .popover:before{display:none}.platform-android .popover.visible{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.platform-android .backdrop{background-color:transparent}.platform-android .popover .bar{border-radius:0}.platform-android .popover .bar-nav~.table-view{padding-top:50px}.platform-android .popover .table-view{border-radius:12px}.platform-android .toggle{width:104px;height:28px;border:2px solid #d7d7d7;border-radius:0;background-color:#d7d7d7}.platform-android .toggle .toggle-handle{top:0;left:0;width:50px;height:24px;border:1px solid #b5b5b5;border-radius:2px;background-color:#bebebe;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.1)}.platform-android .toggle:before{top:1px;right:auto;left:11px;z-index:3;color:#fff}.platform-android .toggle.active{border:2px solid #d7d7d7;background-color:#d7d7d7}.platform-android .toggle.active .toggle-handle{margin-right:2px;background-color:#33b5e5;border-color:#33b5e5;-webkit-transform:translate3d(50px,0,0);-ms-transform:translate3d(50px,0,0);transform:translate3d(50px,0,0)}.platform-android .toggle.active:before{left:auto;right:14px;color:#fff}.platform-android .navigate-left:after,.platform-android .push-left:after{content:''}.platform-android .navigate-right:after,.platform-android .push-right:after{content:''}.platform-android .icon-caret:before{content:'\e800'}.platform-android .icon-down:before,.platform-android .icon-down-nav:before{content:'\e801'}.platform-android .icon-download:before{content:'\e802'}.platform-android .icon-left:before,.platform-android .icon-left-nav:before{content:'\e803'}.platform-android .icon-more-vertical:before{content:'\e804'}.platform-android .icon-more:before{content:'\e805'}.platform-android .icon-right:before,.platform-android .icon-right-nav:before{content:'\e806'}.platform-android .icon-search:before{content:'\e807'}.platform-android .icon-share:before{content:'\e808'}.platform-android .icon-up:before,.platform-android .icon-up-nav:before{content:'\e809'}.platform-android .device{font-family:Roboto,sans-serif;background-position:-790px 0}.platform-android .device .device-content{font-size:18px;line-height:22px;background-color:#f2f2f2}.platform-android .device .content{top:50px}.platform-android .device .popover{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.platform-android .bar~.content{padding:0}@-webkit-keyframes fadeintext{0%{opacity:0}100%{opacity:1}}.bs-callout{padding:20px;margin:20px 0;border-left:3px solid #eee}.bs-callout h4{margin-top:0;margin-bottom:5px}.bs-callout p:last-child{margin-bottom:0}.bs-callout code{background-color:#fff;border-radius:3px}.bs-callout-danger{background-color:#fdf7f7;border-color:#d9534f}.bs-callout-danger h4{color:#d9534f}.bs-callout-warning{background-color:#fcf8f2;border-color:#f0ad4e}.bs-callout-warning h4{color:#f0ad4e}.bs-callout-info{background-color:#f4f8fa;border-color:#5bc0de}.bs-callout-info h4{color:#5bc0de}.list-group{margin-bottom:20px;padding-left:0}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group .team-member{color:#555;font-size:14px;line-height:32px}.list-group img{float:left;width:32px;margin-right:10px;border-radius:4px}.list-group .team-member-info{overflow:hidden}.list-group .github-btn{float:right;margin-top:6px;width:121px;height:20px}.hll{background-color:#ffc}.c{color:#999}.err{color:#A00;background-color:#FAA}.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: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{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{color:#C30;font-style:italic}.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} \ No newline at end of file diff --git a/assets/css/pygments-manni.css b/assets/css/pygments-manni.css new file mode 100644 index 0000000..1b3c92c --- /dev/null +++ b/assets/css/pygments-manni.css @@ -0,0 +1,66 @@ +.hll { background-color: #ffffcc } + /*{ background: #f0f3f3; }*/ +.c { color: #999; } /* Comment */ +.err { color: #AA0000; background-color: #FFAAAA } /* Error */ +.k { color: #006699; } /* Keyword */ +.o { color: #555555 } /* Operator */ +.cm { color: #999; } /* Comment.Multiline */ /* Edited to remove italics and make into comment */ +.cp { color: #009999 } /* Comment.Preproc */ +.c1 { color: #999; } /* Comment.Single */ +.cs { color: #999; } /* Comment.Special */ +.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ +.ge { font-style: italic } /* Generic.Emph */ +.gr { color: #FF0000 } /* Generic.Error */ +.gh { color: #003300; } /* Generic.Heading */ +.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ +.go { color: #AAAAAA } /* Generic.Output */ +.gp { color: #000099; } /* Generic.Prompt */ +.gs { } /* Generic.Strong */ +.gu { color: #003300; } /* Generic.Subheading */ +.gt { color: #99CC66 } /* Generic.Traceback */ +.kc { color: #006699; } /* Keyword.Constant */ +.kd { color: #006699; } /* Keyword.Declaration */ +.kn { color: #006699; } /* Keyword.Namespace */ +.kp { color: #006699 } /* Keyword.Pseudo */ +.kr { color: #006699; } /* Keyword.Reserved */ +.kt { color: #007788; } /* Keyword.Type */ +.m { color: #FF6600 } /* Literal.Number */ +.s { color: #d44950 } /* Literal.String */ +.na { color: #4f9fcf } /* Name.Attribute */ +.nb { color: #336666 } /* Name.Builtin */ +.nc { color: #00AA88; } /* Name.Class */ +.no { color: #336600 } /* Name.Constant */ +.nd { color: #9999FF } /* Name.Decorator */ +.ni { color: #999999; } /* Name.Entity */ +.ne { color: #CC0000; } /* Name.Exception */ +.nf { color: #CC00FF } /* Name.Function */ +.nl { color: #9999FF } /* Name.Label */ +.nn { color: #00CCFF; } /* Name.Namespace */ +.nt { color: #2f6f9f; } /* Name.Tag */ +.nv { color: #003333 } /* Name.Variable */ +.ow { color: #000000; } /* Operator.Word */ +.w { color: #bbbbbb } /* Text.Whitespace */ +.mf { color: #FF6600 } /* Literal.Number.Float */ +.mh { color: #FF6600 } /* Literal.Number.Hex */ +.mi { color: #FF6600 } /* Literal.Number.Integer */ +.mo { color: #FF6600 } /* Literal.Number.Oct */ +.sb { color: #CC3300 } /* Literal.String.Backtick */ +.sc { color: #CC3300 } /* Literal.String.Char */ +.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ +.s2 { color: #CC3300 } /* Literal.String.Double */ +.se { color: #CC3300; } /* Literal.String.Escape */ +.sh { color: #CC3300 } /* Literal.String.Heredoc */ +.si { color: #AA0000 } /* Literal.String.Interpol */ +.sx { color: #CC3300 } /* Literal.String.Other */ +.sr { color: #33AAAA } /* Literal.String.Regex */ +.s1 { color: #CC3300 } /* Literal.String.Single */ +.ss { color: #FFCC33 } /* Literal.String.Symbol */ +.bp { color: #336666 } /* Name.Builtin.Pseudo */ +.vc { color: #003333 } /* Name.Variable.Class */ +.vg { color: #003333 } /* Name.Variable.Global */ +.vi { color: #003333 } /* Name.Variable.Instance */ +.il { color: #FF6600 } /* Literal.Number.Integer.Long */ + +.css .o, +.css .o + .nt, +.css .nt + .nt { color: #999; } diff --git a/assets/img/apple-touch-icon-114x114.png b/assets/img/apple-touch-icon-114x114.png new file mode 100644 index 0000000..c130653 Binary files /dev/null and b/assets/img/apple-touch-icon-114x114.png differ diff --git a/assets/img/apple-touch-icon-57x57.png b/assets/img/apple-touch-icon-57x57.png new file mode 100644 index 0000000..3011c25 Binary files /dev/null and b/assets/img/apple-touch-icon-57x57.png differ diff --git a/assets/img/apple-touch-icon-72x72.png b/assets/img/apple-touch-icon-72x72.png new file mode 100644 index 0000000..c06d1a0 Binary files /dev/null and b/assets/img/apple-touch-icon-72x72.png differ diff --git a/assets/img/device-sprite.png b/assets/img/device-sprite.png new file mode 100644 index 0000000..d83bb88 Binary files /dev/null and b/assets/img/device-sprite.png differ diff --git a/assets/img/example-android.png b/assets/img/example-android.png new file mode 100644 index 0000000..8b07225 Binary files /dev/null and b/assets/img/example-android.png differ diff --git a/assets/img/example-ios.png b/assets/img/example-ios.png new file mode 100644 index 0000000..fcaea98 Binary files /dev/null and b/assets/img/example-ios.png differ diff --git a/assets/img/example.png b/assets/img/example.png new file mode 100644 index 0000000..5707a97 Binary files /dev/null and b/assets/img/example.png differ diff --git a/assets/img/slide-1.jpg b/assets/img/slide-1.jpg new file mode 100644 index 0000000..cd3afa3 Binary files /dev/null and b/assets/img/slide-1.jpg differ diff --git a/assets/img/slide-2.jpg b/assets/img/slide-2.jpg new file mode 100644 index 0000000..5a4d647 Binary files /dev/null and b/assets/img/slide-2.jpg differ diff --git a/assets/img/slide-3.jpg b/assets/img/slide-3.jpg new file mode 100644 index 0000000..75845fe Binary files /dev/null and b/assets/img/slide-3.jpg differ diff --git a/assets/js/docs.js b/assets/js/docs.js new file mode 100644 index 0000000..902385c --- /dev/null +++ b/assets/js/docs.js @@ -0,0 +1,183 @@ +/* jshint jquery: true */ +/* global FingerBlast: true */ + +$(function() { + 'use strict'; + + var doc; + var device; + var windowWidth; + var windowHeight; + var pageHeight; + var contentPadding; + var footerHeight; + var navComponentLinks; + var componentsList; + var componentLinks; + var contentSection; + var currentActive; + var topCache; + var win; + var bod; + var eventListeners; + var toolbarToggle; + + + var initialize = function () { + currentActive = 0; + topCache = []; + win = $(window); + doc = $(document); + bod = $(document.body); + device = device || $('.js-device'); + navComponentLinks = $('.js-jump-menu'); + componentsList = $('.js-component-group'); + componentLinks = $('.component-example a'); + contentSection = $('.component'); + topCache = contentSection.map(function () { return $(this).offset().top; }); + windowHeight = $(window).height() / 3; + windowWidth = $(window).width(); + pageHeight = $(document).height(); + contentPadding = parseInt($('.docs-content').css('padding-bottom'), 10); + footerHeight = $('.docs-footer').outerHeight(false); + toolbarToggle = $('.js-docs-component-toolbar'); + + // Device placement + if (windowWidth >= 768) { + device.initialLeft = device.offset().left; + device.initialTop = device.initialTop || device.offset().top; + device.dockingOffset = ($(window).height() - device.height())/2; + } + + checkDesktopContent(); + calculateScroll(); + calculateToggle(); + + if (!eventListeners) { + addEventListeners(); + } + }; + + var addEventListeners = function () { + eventListeners = true; + + device.on('click', function (e) { + e.preventDefault(); + }); + + // Mobile navigation + $('.js-docs-nav-trigger').on('click', function () { + var nav = $('.docs-nav-group'); + var trigger = $('.js-docs-nav-trigger'); + + trigger.toggleClass('active'); + nav.toggleClass('active'); + }); + + navComponentLinks.click(function(e) { + e.stopPropagation(); + e.preventDefault(); + componentsList.toggleClass('active'); + }); + + doc.on('click', function () { + componentsList.removeClass('active'); + }); + + // Platform switcher + $('.platform-switch').on('click', function () { + var components = $('.docs-components'); + var platform = $(this).attr('data-platform'); + + // Set platform + if (components.hasClass('platform-ios')) { + components.removeClass('platform-ios'); + components.addClass(platform); + } else if (components.hasClass('platform-android')) { + components.removeClass('platform-android'); + components.addClass(platform); + } else { + components.addClass(platform); + } + + // Deal with active states + $(this).siblings('.active').removeClass('active'); + $(this).addClass('active'); + }); + + win.on('scroll', calculateScroll); + win.on('scroll', calculateToggle); + }; + + var checkDesktopContent = function () { + windowWidth = $(window).width(); + if (windowWidth <= 768) { + var content = $('.content'); + if (content.length > 1) { + $(content[0]).remove(); + } + } + }; + + var calculateScroll = function() { + // if small screen don't worry about this + if (windowWidth <= 768) { + return; + } + + // Save scrollTop value + var contentSectionItem; + var currentTop = win.scrollTop(); + + if((device.initialTop - currentTop) <= device.dockingOffset) { + device[0].className = 'device device-fixed'; + device.css({top: device.dockingOffset}); + } else { + device[0].className = 'device'; + device[0].setAttribute('style',''); + } + + function updateContent(content) { + $('#iwindow').html(content); + } + + // Injection of components into device + for (var l = contentSection.length; l--;) { + if ((topCache[l] - currentTop) < windowHeight) { + if (currentActive === l) { + return; + } + currentActive = l; + bod.find('.component.active').removeClass('active'); + contentSectionItem = $(contentSection[l]); + contentSectionItem.addClass('active'); + if (contentSectionItem.attr('id')) { + device.attr('id', contentSectionItem.attr('id') + 'InDevice'); + } else { + device.attr('id', ''); + } + if (!contentSectionItem.hasClass('informational')) { + updateContent(contentSectionItem.find('.highlight .html').text()); + } + break; + } + } + + }; + + // Toolbar toggle + var calculateToggle = function () { + var currentTop = win.scrollTop(); + var headerHeight = $('.docs-sub-header').outerHeight(); + + if(currentTop >= headerHeight) { + toolbarToggle.addClass('visible'); + } else if (currentTop <= headerHeight) { + toolbarToggle.removeClass('visible'); + componentsList.removeClass('active'); + } + }; + + $(window).on('load resize', initialize); + $(window).on('load', function () { new FingerBlast('.device-content'); }); +}); diff --git a/assets/js/docs.min.js b/assets/js/docs.min.js new file mode 100644 index 0000000..d64ddab --- /dev/null +++ b/assets/js/docs.min.js @@ -0,0 +1,10 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */ +function FingerBlast(a){"use strict";this.element="string"==typeof a?document.querySelector(a):a,this.listen()}$(function(){"use strict";var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=function(){l=0,m=[],n=$(window),a=$(document),o=$(document.body),b=b||$(".js-device"),h=$(".js-jump-menu"),i=$(".js-component-group"),j=$(".component-example a"),k=$(".component"),m=k.map(function(){return $(this).offset().top}),d=$(window).height()/3,c=$(window).width(),e=$(document).height(),f=parseInt($(".docs-content").css("padding-bottom"),10),g=$(".docs-footer").outerHeight(!1),q=$(".js-docs-component-toolbar"),c>=768&&(b.initialLeft=b.offset().left,b.initialTop=b.initialTop||b.offset().top,b.dockingOffset=($(window).height()-b.height())/2),t(),u(),v(),p||s()},s=function(){p=!0,b.on("click",function(a){a.preventDefault()}),$(".js-docs-nav-trigger").on("click",function(){var a=$(".docs-nav-group"),b=$(".js-docs-nav-trigger");b.toggleClass("active"),a.toggleClass("active")}),h.click(function(a){a.stopPropagation(),a.preventDefault(),i.toggleClass("active")}),a.on("click",function(){i.removeClass("active")}),$(".platform-switch").on("click",function(){var a=$(".docs-components"),b=$(this).attr("data-platform");a.hasClass("platform-ios")?(a.removeClass("platform-ios"),a.addClass(b)):a.hasClass("platform-android")?(a.removeClass("platform-android"),a.addClass(b)):a.addClass(b),$(this).siblings(".active").removeClass("active"),$(this).addClass("active")}),n.on("scroll",u),n.on("scroll",v)},t=function(){if(c=$(window).width(),768>=c){var a=$(".content");a.length>1&&$(a[0]).remove()}},u=function(){function a(a){$("#iwindow").html(a)}if(!(768>=c)){var e,f=n.scrollTop();b.initialTop-f<=b.dockingOffset?(b[0].className="device device-fixed",b.css({top:b.dockingOffset})):(b[0].className="device",b[0].setAttribute("style",""));for(var g=k.length;g--;)if(m[g]-f=b?q.addClass("visible"):b>=a&&(q.removeClass("visible"),i.removeClass("active"))};$(window).on("load resize",r),$(window).on("load",function(){new FingerBlast(".device-content")})}),FingerBlast.prototype={x:0/0,y:0/0,startDistance:0/0,startAngle:0/0,mouseIsDown:!1,listen:function(){"use strict";function a(a,b){var c,d,e;if("compareDocumentPosition"in b)return!!(16&b.compareDocumentPosition(a));if("contains"in b)return b!==a&&b.contains(a);for(c=b.getElementsByTagName("*"),d=0;e=c[d++];)if(e===a)return!0;return!1}var b=this.activate.bind(this),c=this.deactivate.bind(this);this.element.addEventListener("mouseover",function(c){var d=c.relatedTarget;d===this||a(d,this)||b()}),this.element.addEventListener("mouseout",function(b){var d=b.relatedTarget;d===this||a(d,this)||c(b)})},activate:function(){"use strict";this.active||(this.element.addEventListener("mousedown",this.touchStart=this.touchStart.bind(this),!0),this.element.addEventListener("mousemove",this.touchMove=this.touchMove.bind(this),!0),this.element.addEventListener("mouseup",this.touchEnd=this.touchEnd.bind(this),!0),this.element.addEventListener("click",this.click=this.click.bind(this),!0),this.active=!0)},deactivate:function(a){"use strict";this.active=!1,this.mouseIsDown&&this.touchEnd(a),this.element.removeEventListener("mousedown",this.touchStart,!0),this.element.removeEventListener("mousemove",this.touchMove,!0),this.element.removeEventListener("mouseup",this.touchEnd,!0),this.element.removeEventListener("click",this.click,!0)},click:function(a){"use strict";a.synthetic||(a.preventDefault(),a.stopPropagation())},touchStart:function(a){"use strict";a.synthetic||/input|textarea/.test(a.target.tagName.toLowerCase())||(this.mouseIsDown=!0,a.preventDefault(),a.stopPropagation(),this.fireTouchEvents("touchstart",a))},touchMove:function(a){"use strict";a.synthetic||(a.preventDefault(),a.stopPropagation(),this.move(a.clientX,a.clientY),this.mouseIsDown&&this.fireTouchEvents("touchmove",a))},touchEnd:function(a){"use strict";a.synthetic||(this.mouseIsDown=!1,a.preventDefault(),a.stopPropagation(),this.fireTouchEvents("touchend",a),this.target&&(this.target.dispatchEvent(this.createMouseEvent("mouseover",a)),this.target.dispatchEvent(this.createMouseEvent("mousemove",a)),this.target.dispatchEvent(this.createMouseEvent("mousedown",a))))},fireTouchEvents:function(a,b){"use strict";var c=[],d=[];if(this.target){var e="on"+a;if(e in this.target&&(console.warn("Converting `"+e+"` property to event listener.",this.target),this.target.addEventListener(a,this.target[e],!1),delete this.target[e]),this.target.hasAttribute(e)){console.warn("Converting `"+e+"` attribute to event listener.",this.target);var f=new GLOBAL.Function("event",this.target.getAttribute(e));this.target.addEventListener(a,f,!1),this.target.removeAttribute(e)}var g=this.createMouseEvent(a,b);if(c.push(g),c.length>1){var h=c[0].pageX-c[1].pageX,i=c[0].pageY-c[1].pageY,j=Math.sqrt(Math.pow(h,2)+Math.pow(i,2)),k=Math.atan2(h,i)*(180/Math.PI),l="gesturechange";"touchstart"===a&&(l="gesturestart",this.startDistance=j,this.startAngle=k),"touchend"===a&&(l="gestureend"),c.forEach(function(a){var b=this.createMouseEvent.call(a._finger,l,a);d.push(b)}.bind(this)),c.concat(d).forEach(function(a){a.scale=j/this.startDistance,a.rotation=this.startAngle-k})}c.forEach(function(a){a.touches=c.filter(function(a){return~a.type.indexOf("touch")&&"touchend"!==a.type}),a.changedTouches=c.filter(function(b){return~b.type.indexOf("touch")&&b._finger.target===a._finger.target}),a.targetTouches=a.changedTouches.filter(function(a){return~a.type.indexOf("touch")&&"touchend"!==a.type})}),c.concat(d).forEach(function(a,b){a.identifier=b,a._finger.target.dispatchEvent(a)})}},createMouseEvent:function(a,b){"use strict";var c=document.createEvent("MouseEvent");return c.initMouseEvent(a,!0,!0,b.view,b.detail,this.x||b.screenX,this.y||b.screenY,this.x||b.clientX,this.y||b.clientY,b.ctrlKey,b.shiftKey,b.altKey,b.metaKey,b.button,this.target||b.relatedTarget),c.synthetic=!0,c._finger=this,c},move:function(a,b){"use strict";isNaN(a)||isNaN(b)?this.target=null:(this.x=a,this.y=b,this.mouseIsDown||(this.target=document.elementFromPoint(a,b)))}}; \ No newline at end of file diff --git a/assets/js/fingerblast.js b/assets/js/fingerblast.js new file mode 100644 index 0000000..eb882bb --- /dev/null +++ b/assets/js/fingerblast.js @@ -0,0 +1,271 @@ +// FINGERBLAST.js +// -------------- +// Adapted from phantom limb by Brian Cartensen + +/* jshint bitwise: false */ +/* global GLOBAL: true */ + +function FingerBlast(element) { + 'use strict'; + + this.element = typeof element === 'string' ? document.querySelector(element) : element; + this.listen(); +} + +FingerBlast.prototype = { + x: NaN, + y: NaN, + + startDistance: NaN, + startAngle: NaN, + + mouseIsDown: false, + + listen: function () { + 'use strict'; + + var activate = this.activate.bind(this); + var deactivate = this.deactivate.bind(this); + + function contains (element, ancestor) { + var descendants, index, descendant; + if ('compareDocumentPosition' in ancestor) { + return !!(ancestor.compareDocumentPosition(element) & 16); + } else if ('contains' in ancestor) { + return ancestor !== element && ancestor.contains(element); + } else { + for ((descendants = ancestor.getElementsByTagName('*')), index = 0; (descendant = descendants[index++]);) { + if (descendant === element) { + return true; + } + } + return false; + } + } + + this.element.addEventListener('mouseover', function (e) { + var target = e.relatedTarget; + if (target !== this && !contains(target, this)) { + activate(); + } + }); + + this.element.addEventListener('mouseout', function (e) { + var target = e.relatedTarget; + if (target !== this && !contains(target, this)) { + deactivate(e); + } + }); + }, + + activate: function () { + 'use strict'; + + if (this.active) { + return; + } + this.element.addEventListener('mousedown', (this.touchStart = this.touchStart.bind(this)), true); + this.element.addEventListener('mousemove', (this.touchMove = this.touchMove.bind(this)), true); + this.element.addEventListener('mouseup', (this.touchEnd = this.touchEnd.bind(this)), true); + this.element.addEventListener('click', (this.click = this.click.bind(this)), true); + this.active = true; + }, + + deactivate: function (e) { + 'use strict'; + + this.active = false; + if (this.mouseIsDown) { + this.touchEnd(e); + } + this.element.removeEventListener('mousedown', this.touchStart, true); + this.element.removeEventListener('mousemove', this.touchMove, true); + this.element.removeEventListener('mouseup', this.touchEnd, true); + this.element.removeEventListener('click', this.click, true); + }, + + click: function (e) { + 'use strict'; + + if (e.synthetic) { + return; + } + e.preventDefault(); + e.stopPropagation(); + }, + + touchStart: function (e) { + 'use strict'; + + if (e.synthetic || /input|textarea/.test(e.target.tagName.toLowerCase())) { + return; + } + + this.mouseIsDown = true; + + e.preventDefault(); + e.stopPropagation(); + + this.fireTouchEvents('touchstart', e); + }, + + touchMove: function (e) { + 'use strict'; + + if (e.synthetic) { + return; + } + + e.preventDefault(); + e.stopPropagation(); + + this.move(e.clientX, e.clientY); + + if (this.mouseIsDown) { + this.fireTouchEvents('touchmove', e); + } + }, + + touchEnd: function (e) { + 'use strict'; + + if (e.synthetic) { + return; + } + + this.mouseIsDown = false; + + e.preventDefault(); + e.stopPropagation(); + + this.fireTouchEvents('touchend', e); + + if (!this.target) { + return; + } + + // Mobile Safari moves all the mouse events to fire after the touchend event. + this.target.dispatchEvent(this.createMouseEvent('mouseover', e)); + this.target.dispatchEvent(this.createMouseEvent('mousemove', e)); + this.target.dispatchEvent(this.createMouseEvent('mousedown', e)); + }, + + fireTouchEvents: function (eventName, originalEvent) { + 'use strict'; + + var events = []; + var gestures = []; + + if (!this.target) { + return; + } + + // Convert 'ontouch*' properties and attributes to listeners. + var onEventName = 'on' + eventName; + + if (onEventName in this.target) { + console.warn('Converting `' + onEventName + '` property to event listener.', this.target); + this.target.addEventListener(eventName, this.target[onEventName], false); + delete this.target[onEventName]; + } + + if (this.target.hasAttribute(onEventName)) { + console.warn('Converting `' + onEventName + '` attribute to event listener.', this.target); + var handler = new GLOBAL.Function('event', this.target.getAttribute(onEventName)); + this.target.addEventListener(eventName, handler, false); + this.target.removeAttribute(onEventName); + } + + // Set up a new event with the coordinates of the finger. + var touch = this.createMouseEvent(eventName, originalEvent); + + events.push(touch); + + // Figure out scale and rotation. + if (events.length > 1) { + var x = events[0].pageX - events[1].pageX; + var y = events[0].pageY - events[1].pageY; + + var distance = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + var angle = Math.atan2(x, y) * (180 / Math.PI); + + var gestureName = 'gesturechange'; + + if (eventName === 'touchstart') { + gestureName = 'gesturestart'; + this.startDistance = distance; + this.startAngle = angle; + } + + if (eventName === 'touchend') { + gestureName = 'gestureend'; + } + + events.forEach(function(event) { + var gesture = this.createMouseEvent.call(event._finger, gestureName, event); + gestures.push(gesture); + }.bind(this)); + + events.concat(gestures).forEach(function(event) { + event.scale = distance / this.startDistance; + event.rotation = this.startAngle - angle; + }); + } + + // Loop through the events array and fill in each touch array. + events.forEach(function(touch) { + touch.touches = events.filter(function(e) { + return ~e.type.indexOf('touch') && e.type !== 'touchend'; + }); + + touch.changedTouches = events.filter(function(e) { + return ~e.type.indexOf('touch') && e._finger.target === touch._finger.target; + }); + + touch.targetTouches = touch.changedTouches.filter(function(e) { + return ~e.type.indexOf('touch') && e.type !== 'touchend'; + }); + }); + + // Then fire the events. + events.concat(gestures).forEach(function(event, i) { + event.identifier = i; + event._finger.target.dispatchEvent(event); + }); + }, + + createMouseEvent: function (eventName, originalEvent) { + 'use strict'; + + var e = document.createEvent('MouseEvent'); + + e.initMouseEvent(eventName, true, true, + originalEvent.view, originalEvent.detail, + this.x || originalEvent.screenX, this.y || originalEvent.screenY, + this.x || originalEvent.clientX, this.y || originalEvent.clientY, + originalEvent.ctrlKey, originalEvent.shiftKey, + originalEvent.altKey, originalEvent.metaKey, + originalEvent.button, this.target || originalEvent.relatedTarget + ); + + e.synthetic = true; + e._finger = this; + + return e; + }, + + move: function (x, y) { + 'use strict'; + + if (isNaN(x) || isNaN(y)) { + this.target = null; + } else { + this.x = x; + this.y = y; + + if (!this.mouseIsDown) { + this.target = document.elementFromPoint(x, y); + } + } + } +}; \ No newline at end of file diff --git a/components/index.html b/components/index.html new file mode 100644 index 0000000..d09f36a --- /dev/null +++ b/components/index.html @@ -0,0 +1,1470 @@ + + + + + +Components · Ratchet + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+
+

Components

+

Design patterns that serve as basic building blocks.

+
+
+ +
+ + +
+ +
+ +
+
+ +
+
+
+
+

Title

+
+
+
+
+
+ +
+ +
+

Title bar

+

Title bars are full width and docked to the top of the viewport.

+ +
+
+

Title

+
+
+ +
<header class="bar bar-nav">
+  <h1 class="title">Title</h1>
+</header>
+
+ +
+ +
+

Title bar with buttons

+

Buttons in a title bar are left or right aligned and should be used for actions. Use the .pull-right or .pull-left utility classes to float the buttons. Also, be sure to place any floated elements before the title.

+ +
+
+ + +

Title

+
+
+ +
<header class="bar bar-nav">
+  <button class="btn pull-left">
+    Left
+  </button>
+  <button class="btn pull-right">
+    Right
+  </button>
+  <h1 class="title">Title</h1>
+</header>
+
+ +
+ +
+

Title bar with icons

+

Icons can also be used for actions in toolbars. Again, be sure to use utility classes to float the icons into position.

+ +
+
+ + +

Title

+
+
+ +
<header class="bar bar-nav">
+  <a class="icon icon-left-nav pull-left"></a>
+  <a class="icon icon-compose pull-right"></a>
+  <h1 class="title">Title</h1>
+</header>
+
+ +
+ +
+

Title bar with link buttons and icons

+

Link buttons can be used in tool bars to remove the outline. Use these in conjuction with icons to recreate the nav feel from iOS7. Note the use of .btn-nav to bring the buttons a little bit closer to the edge of the viewport.

+ +
+
+ + +

Title

+
+
+ +
<header class="bar bar-nav">
+  <button class="btn btn-link btn-nav pull-left">
+    <span class="icon icon-left-nav"></span>
+    Left
+  </button>
+  <button class="btn btn-link btn-nav pull-right">
+    Right
+    <span class="icon icon-right-nav"></span>
+  </button>
+  <h1 class="title">Title</h1>
+</header>
+
+ +
+ +
+

Title bar with segmented control

+

Title bars can also house segmented controls. Feel free to add accompanying buttons too. The control will automatically layout itself out correctly.

+ +
+
+ + +
+ One + Two + Three +
+
+
+ +
<header class="bar bar-nav">
+  <button class="btn pull-left">
+    Left
+  </button>
+  <button class="btn pull-right">
+    Right
+  </button>
+  <div class="segmented-control">
+    <a class="control-item active">One</a>
+    <a class="control-item">Two</a>
+    <a class="control-item">Three</a>
+  </div>
+</header>
+
+ +
+ +
+

Tab bar

+

Use Ratchicons in the .tab-bar to represent different sections of your app.

+ + + +
<nav class="bar bar-tab">
+  <a class="tab-item active" href="#">
+    <span class="icon icon-home"></span>
+    <span class="tab-label">Home</span>
+  </a>
+  <a class="tab-item" href="#">
+    <span class="icon icon-person"></span>
+    <span class="tab-label">Profile</span>
+  </a>
+  <a class="tab-item" href="#">
+    <span class="icon icon-star-filled"></span>
+    <span class="tab-label">Favorites</span>
+  </a>
+  <a class="tab-item" href="#">
+    <span class="icon icon-search"></span>
+    <span class="tab-label">Search</span>
+  </a>
+  <a class="tab-item" href="#">
+    <span class="icon icon-gear"></span>
+    <span class="tab-label">Settings</span>
+  </a>
+</nav>
+
+ +

Note: Use push.js to actually change content.

+
+ +
+

Tab bar (labels only)

+

If you don't want to use icons, that's okay too. The text will appear larger to use the additional space.

+ + + +
<nav class="bar bar-tab">
+  <a class="tab-item active" href="#">
+    Label
+  </a>
+  <a class="tab-item" href="#">
+    Label
+  </a>
+  <a class="tab-item" href="#">
+    Label
+  </a>
+</nav>
+
+ +

Note: Use push.js to actually change content.

+
+ +
+

Standard bars

+

Standard bars are basic fixed elements that can be positioned in four places. These can be used to house buttons, icons, or segmented controls (see following examples).

+ +
+ + + + +
+ +
+
+ +
<!-- Segmented control in standard bar fixed to top -->
+<nav class="bar bar-standard">
+  <div class="segmented-control">
+    <a class="control-item active">Thing one</a>
+    <a class="control-item">Thing two</a>
+    <a class="control-item">Thing three</a>
+  </div>
+</nav>
+
+<!-- Block button in standard bar fixed below top bar -->
+<div class="bar bar-standard bar-header-secondary">
+  <button class="btn btn-block">Block level button</button>
+</div>
+
+<!-- Block button in standard bar fixed above the footer -->
+<div class="bar bar-standard bar-footer-secondary">
+  <button class="btn btn-block">Block level button</button>
+</div>
+
+<!-- Icons in standard bar fixed to the bottom of the screen -->
+<div class="bar bar-standard bar-footer">
+  <a class="icon icon-compose pull-left"></a>
+  <a class="icon icon-gear pull-right"></a>
+</div>
+
+ +
+ + +
+

Typography

+

Use headings and paragraphs to title and describe sections of your app. Apply or wrap elements with .content-padded to give the content space around the screen.

+ +
+
+

h1. Heading

+

h2. Heading

+

h3. Heading

+

h4. Heading

+
h5. Heading
+
h6. Heading
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco.

+
+
+ +
<div class="content-padded">
+  <h1>h1. Heading</h1>
+  <h2>h2. Heading</h2>
+  <h3>h3. Heading</h3>
+  <h4>h4. Heading</h4>
+  <h5>h5. Heading</h5>
+  <h6>h6. Heading</h6>
+  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+  tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+  quis nostrud exercitation ullamco.</p>
+</div>
+
+ +
+ + +
+

Table views

+

Table views can be used for organizing data, showing collections of links, or a series of controls.

+ +
+
    +
  • Item 1
  • +
  • Item 2
  • +
  • Divider
  • +
  • Item 3
  • +
+
+ +
<ul class="table-view">
+  <li class="table-view-cell">Item 1</li>
+  <li class="table-view-cell table-view-cell">Item 2</li>
+  <li class="table-view-divider">Divider</li>
+  <li class="table-view-cell">Item 3</li>
+</ul>
+
+ +
+ +
+

Table view with chevrons

+

Chevrons should be used to indicate that the item is linked. Just apply the classes .navigate-right or .navigate-left to use a chevron.

+ + + +
<ul class="table-view">
+  <li class="table-view-cell">
+    <a class="navigate-right">
+      Item 1
+    </a>
+  </li>
+  <li class="table-view-cell">
+    <a class="navigate-right">
+      Item 2
+    </a>
+  </li>
+  <li class="table-view-cell">
+    <a class="navigate-right">
+      Item 3
+    </a>
+  </li>
+</ul>
+
+

Note: Table views with the Android theme don't have chevrons to comply with Android Design guidelines. More information can be found here.

+
+ +
+

Table view with badges

+

Badges are a great way of showing data.

+ +
+
    +
  • Item 1 4
  • +
  • Item 2 1
  • +
  • Item 3 5
  • +
+
+ +
<ul class="table-view">
+  <li class="table-view-cell">Item 1 <span class="badge">4</span></li>
+  <li class="table-view-cell">Item 2 <span class="badge">1</span></li>
+  <li class="table-view-cell">Item 3 <span class="badge">5</span></li>
+</ul>
+
+ +
+ +
+

Table view with badges and chevrons

+

Feel free to use chevrons and badges together. They'll automatically positon themselves correctly.

+ + + +
<ul class="table-view">
+  <li class="table-view-cell">
+    <a class="navigate-right">
+      <span class="badge">5</span>
+      Item 1
+    </a>
+  </li>
+  <li class="table-view-cell">
+    <a class="navigate-right">
+      <span class="badge">5</span>
+      Item 2
+    </a>
+  </li>
+  <li class="table-view-cell">
+    <a class="navigate-right">
+      <span class="badge">5</span>
+      Item 3
+    </a>
+  </li>
+</ul>
+
+ +
+ +
+

Table view with media (images)

+

Showing media inside table views is easy. This component to perfect for images and text.

+ + + +
<ul class="table-view">
+  <li class="table-view-cell media">
+    <a class="navigate-right">
+      <img class="media-object pull-left" src="http://placehold.it/42x42">
+      <div class="media-body">
+        Item 1
+        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore. Lorem ipsum dolor sit amet.</p>
+      </div>
+    </a>
+  </li>
+  <li class="table-view-cell media">
+    <a class="navigate-right">
+      <img class="media-object pull-left" src="http://placehold.it/42x42">
+      <div class="media-body">
+        Item 1
+        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore. Lorem ipsum dolor sit amet.</p>
+      </div>
+    </a>
+  </li>
+  <li class="table-view-cell media">
+    <a class="navigate-right">
+      <img class="media-object pull-left" src="http://placehold.it/42x42">
+      <div class="media-body">
+        Item 1
+        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore. Lorem ipsum dolor sit amet.</p>
+      </div>
+    </a>
+  </li>
+</ul>
+
+ +
+ +
+

Table view with media (icons)

+

Ratchicons can also used instead of images.

+ + + +
<ul class="table-view">
+  <li class="table-view-cell media">
+    <a class="navigate-right">
+      <span class="media-object pull-left icon icon-trash"></span>
+      <div class="media-body">
+        Item 1
+      </div>
+    </a>
+  </li>
+  <li class="table-view-cell media">
+    <a class="navigate-right">
+      <span class="media-object pull-left icon icon-gear"></span>
+      <div class="media-body">
+        Item 2
+      </div>
+    </a>
+  </li>
+  <li class="table-view-cell media">
+    <a class="navigate-right">
+      <span class="media-object pull-left icon icon-pages"></span>
+      <div class="media-body">
+        Item 3
+      </div>
+    </a>
+  </li>
+</ul>
+
+ +
+ +
+

Table view with buttons

+ +
+
    +
  • Item 1
  • +
  • Item 2
  • +
  • Item 3
  • +
  • Item 4
  • +
+
+ +
<ul class="table-view">
+  <li class="table-view-cell">Item 1 <button class="btn">Button</button></li>
+  <li class="table-view-cell">Item 2 <button class="btn btn-primary">Button</button></li>
+  <li class="table-view-cell">Item 3 <button class="btn btn-positive">Button</button></li>
+  <li class="table-view-cell">Item 4 <button class="btn btn-negative">Button</button></li>
+</ul>
+
+ +
+ +
+

Table view with toggles

+ +
+
    +
  • + Item 1 +
    +
    +
    +
  • +
  • + Item 2 +
    +
    +
    +
  • +
  • + Item 3 +
    +
    +
    +
  • +
+
+ +
<ul class="table-view">
+  <li class="table-view-cell">
+    Item 1
+    <div class="toggle">
+      <div class="toggle-handle"></div>
+    </div>
+  </li>
+  <li class="table-view-cell">
+    Item 2
+    <div class="toggle active">
+      <div class="toggle-handle"></div>
+    </div>
+  </li>
+  <li class="table-view-cell">
+    Item 3
+    <div class="toggle">
+      <div class="toggle-handle"></div>
+    </div>
+  </li>
+</ul>
+
+ +
+ +
+

Carded table views

+

Use .card to wrap any content in a padded element.

+ +
+
+
    +
  • Item 1
  • +
  • Item 2
  • +
  • Divider
  • +
  • Item 3
  • +
  • Item 4
  • +
+
+
+ +
<div class="card">
+  <ul class="table-view">
+    <li class="table-view-cell">Item 1</li>
+    <li class="table-view-cell">Item 2</li>
+    <li class="table-view-cell table-view-divider">Divider</li>
+    <li class="table-view-cell">Item 3</li>
+    <li class="table-view-cell">Item 4</li>
+  </ul>
+</div>
+
+ +
+ + +
+

Buttons

+

Buttons come in many flavors and should be used for user actions.

+ +
+ + + + + + + + + + +
+ +
<button class="btn">Button</button>
+<button class="btn btn-primary">Button</button>
+<button class="btn btn-positive">Button</button>
+<button class="btn btn-negative">Button</button>
+<button class="btn btn-link">Button</button>
+
+<button class="btn btn-outlined">Button</button>
+<button class="btn btn-primary btn-outlined">Button</button>
+<button class="btn btn-positive btn-outlined">Button</button>
+<button class="btn btn-negative btn-outlined">Button</button>
+
+ +
+ + +
+

Buttons with icons

+

Ratchicons work inside buttons too.

+ +
+ + + + + +
+ +
<button class="btn">
+  <span class="icon icon-search"></span>
+  Button
+</button>
+<button class="btn btn-primary">
+  <span class="icon icon-search"></span>
+  Button
+</button>
+<button class="btn btn-positive">
+  <span class="icon icon-search"></span>
+  Button
+</button>
+<button class="btn btn-negative">
+  <span class="icon icon-search"></span>
+  Button
+</button>
+<button class="btn btn-link">
+  <span class="icon icon-left"></span>
+  Button
+</button>
+
+ +
+ +
+

Buttons with badges

+ +
+ + + + +
+ +
<button class="btn">Badge button <span class="badge">1</span></button>
+<button class="btn btn-primary">Badge button <span class="badge badge-primary">1</span></button>
+<button class="btn btn-positive">Badge button <span class="badge badge-positive">1</span></button>
+<button class="btn btn-negative">Badge button <span class="badge badge-negative">1</span></button>
+
+<button class="btn btn-outlined">Badge button <span class="badge badge-inverted">1</span></button>
+<button class="btn btn-outlined btn-primary">Badge button <span class="badge badge-primary badge-inverted">1</span></button>
+<button class="btn btn-outlined btn-positive">Badge button <span class="badge badge-positive badge-inverted">1</span></button>
+<button class="btn btn-outlined btn-negative">Badge button <span class="badge badge-negative badge-inverted">1</span></button>
+
+ +
+ +
+

Block buttons

+ +
+ + + + + + + + + +
+ +
<button class="btn btn-block">Block button</button>
+<button class="btn btn-primary btn-block">Block button</button>
+<button class="btn btn-positive btn-block">Block button</button>
+<button class="btn btn-negative btn-block">Block button</button>
+
+<button class="btn btn-block btn-outlined">Block button</button>
+<button class="btn btn-primary btn-block btn-outlined">Block button</button>
+<button class="btn btn-positive btn-block btn-outlined">Block button</button>
+<button class="btn btn-negative btn-block btn-outlined">Block button</button>
+
+ +
+ + +
+

Segmented control

+

Content sections that are to be swapped in and out by the controller should all be siblings and have the class .control-content. Then, just give each content section an id and point the link in the segmented control to that id.

+ +
+ +
+ Item 1 + Item 2 + Item 3 +
+
+ +
<div class="segmented-control">
+  <a class="control-item active" href="#item1mobile">
+    Thing one
+  </a>
+  <a class="control-item" href="#item2mobile">
+    Thing two
+  </a>
+  <a class="control-item" href="#item3mobile">
+    Thing three
+  </a>
+</div>
+<div class="card">
+  <span id="item1mobile" class="control-content active">Item 1</span>
+  <span id="item2mobile" class="control-content">Item 2</span>
+  <span id="item3mobile" class="control-content">Item 3</span>
+</div>
+
+ +
+ + +
+

Badges

+

Badges come in four flavors and should be used to indicate "how many" of something there are. Adding the a class of .badge-inverted will remove the badges background color.

+ +
+ 1 + 2 + 3 + 4 + 1 + 2 + 3 + 4 +
+ +
<span class="badge">1</span>
+<span class="badge badge-primary">2</span>
+<span class="badge badge-positive">3</span>
+<span class="badge badge-negative">4</span>
+
+<span class="badge badge-inverted">1</span>
+<span class="badge badge-primary badge-inverted">2</span>
+<span class="badge badge-positive badge-inverted">3</span>
+<span class="badge badge-negative badge-inverted">4</span>
+
+ +
+ + +
+

Forms

+ +
+
+ + + + +
+
+ +
<form>
+  <input type="text" placeholder="Full name">
+  <input type="search" placeholder="Search">
+  <textarea rows="5"></textarea>
+  <button class="btn btn-positive btn-block">Choose existing</button>
+</form>
+
+ +
+ + +
+

Form with input group

+ +
+
+ + + +
+
+ +
<form class="input-group">
+  <input type="text" placeholder="Full name">
+  <input type="email" placeholder="Email">
+  <input type="text" placeholder="Username">
+</form>
+
+ +
+ + +
+

Form with input group and labels

+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
<form class="input-group">
+  <div class="input-row">
+    <label>Full name</label>
+    <input type="text" placeholder="Mister Ratchet">
+  </div>
+  <div class="input-row">
+    <label>Email</label>
+    <input type="email" placeholder="ratchetframework@gmail.com">
+  </div>
+  <div class="input-row">
+    <label>Username</label>
+    <input type="text" placeholder="goRatchet">
+  </div>
+</form>
+
+ +
+ + +
+

Toggles

+

Toggles can be used by sliding or tapping the control.

+ +
+
+
+
+
+ +
<div class="toggle active">
+  <div class="toggle-handle"></div>
+</div>
+<div class="toggle">
+  <div class="toggle-handle"></div>
+</div>
+
+ +

Toggles.js binds an event to the document that returns a detail object and can be used to fire a callback.

+ +
// Only needed if you want to fire a callback
+document
+.querySelector('#myToggle')
+.addEventListener('toggle', myFunction)
+
+ +
+ + +
+

Popovers

+ +
<div id="popover" class="popover">
+  <header class="bar bar-nav">
+    <h1 class="title">Popover title</h1>
+  </header>
+  <ul class="table-view">
+    <li class="table-view-cell">Item1</li>
+    <li class="table-view-cell">Item2</li>
+    <li class="table-view-cell">Item3</li>
+    <li class="table-view-cell">Item4</li>
+    <li class="table-view-cell">Item5</li>
+    <li class="table-view-cell">Item6</li>
+    <li class="table-view-cell">Item7</li>
+    <li class="table-view-cell">Item8</li>
+  </ul>
+</div>
+
+ +

Popovers are designed to only fire from title bars. Set the value of the title href to the id of a popover, like so:

+ +
<header class="bar bar-nav">
+  <a href="#myPopover">
+    <h1 class="title">
+      Tap title
+      <span class="icon icon-caret"></span>
+    </h1>
+  </a>
+</header>
+
+
+ + +
+

Modals

+ +
+ Open modal + +
+ +
<a href="#myModalexample" class="btn">Open modal</a>
+<div id="myModalexample" class="modal">
+  <header class="bar bar-nav">
+    <a class="icon icon-close pull-right" href="#myModalexample"></a>
+    <h1 class="title">Modal</h1>
+  </header>
+
+  <div class="content">
+    <p class="content-padded">The contents of my modal go here. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.</p>
+  </div>
+</div>
+
+ +

Modals are designed to only fire from links. Set the value of the toggle links href to the id of a modal.

+ +
+ + +
+

Sliders

+

Can be used with any number of slides with any type of content.

+ +
+
+
+
+ Mountain and sky + + + Slide me + +
+
+ Giant mecha +
+
+ Big Ben +
+
+
+
+ +
<div class="slider" id="mySlider">
+  <div class="slide-group">
+    <div class="slide">
+      <img src="/assets/img/slide-1.jpg">
+      <span class="slide-text">
+        <span class="icon icon-left-nav"></span>
+        Slide me
+      </span>
+    </div>
+    <div class="slide">
+      <img src="/assets/img/slide-2.jpg">
+    </div>
+    <div class="slide">
+      <img src="/assets/img/slide-3.jpg">
+    </div>
+  </div>
+</div>
+
+ +

Sliders.js binds an event to the document that returns a detail object and can be used to fire a callback.

+ +
// Only needed if you want to fire a callback
+document
+.querySelector('#mySlider')
+.addEventListener('slide', myFunction)
+
+ +
+ + +
+

Push

+

Push.js is the engine that connects Ratchet pages together with AJAX and the history api. Push.js is listening to all clicks on a page, so just make sure it's included and link something in your Ratchet project up.

+ +
<!-- A one.html link -->
+<a href="two.html">Two</a>
+
+ +

This will use push to replace everything in the .content div with the .content of two.html. Also, it will either update or remove .bar-nav and .bar-tab according to their presences in two.html.

+ +

Now that pages are being loaded through push, it's easy to specify transitions for animations between pages. There are three different transitions to chose from: fade, slide-in, or slide-out.

+ +
<!-- An one.html link that animates to two.html -->
+<a href="two.html" data-transition="fade">Two</a>
+
+ +

A working version of push:

+ +
+
+

Push

+
+ +
+ +
<header class="bar bar-nav">
+  <h1 class="title">Push</h1>
+</header>
+<div class="content">
+  <div class="card">
+    <ul class="table-view">
+      <li class="table-view-cell">
+        <a class="navigate-right" href="../two.html" data-transition="slide-in">
+          Load new page with push
+        </a>
+      </li>
+    </ul>
+  </div>
+</div>
+
+ +

Have a link you don't want to intercepted by push? Try this:

+ +
<!-- Use data-ignore="push" to prevent the push.js interception -->
+<a href="http://www.google.com" data-ignore="push">Google<a>
+
+ +

Push.js binds an event to the document that returns a detail object and can be used to fire a callback.

+ +
// Only needed if you want to fire a callback
+window.addEventListener('push', myFunction);
+
+ +
+ + +
+

Ratchicons

+

Use Ratchicons in your application to help inform interactions.

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
<div class="content-padded">
+  <span class="icon icon-home"></span>
+  <span class="icon icon-person"></span>
+  <span class="icon icon-bars"></span>
+  <span class="icon icon-caret"></span>
+  <span class="icon icon-check"></span>
+  <span class="icon icon-close"></span>
+  <span class="icon icon-code"></span>
+  <span class="icon icon-compose"></span>
+  <span class="icon icon-edit"></span>
+  <span class="icon icon-gear"></span>
+  <span class="icon icon-info"></span>
+  <span class="icon icon-list"></span>
+  <span class="icon icon-more"></span>
+  <span class="icon icon-more-vertical"></span>
+  <span class="icon icon-pages"></span>
+  <span class="icon icon-play"></span>
+  <span class="icon icon-pause"></span>
+  <span class="icon icon-stop"></span>
+  <span class="icon icon-back"></span>
+  <span class="icon icon-forward"></span>
+  <span class="icon icon-plus"></span>
+  <span class="icon icon-refresh"></span>
+  <span class="icon icon-search"></span>
+  <span class="icon icon-download"></span>
+  <span class="icon icon-share"></span>
+  <span class="icon icon-sound"></span>
+  <span class="icon icon-sound2"></span>
+  <span class="icon icon-sound3"></span>
+  <span class="icon icon-sound4"></span>
+  <span class="icon icon-star-filled"></span>
+  <span class="icon icon-star"></span>
+  <span class="icon icon-trash"></span>
+  <span class="icon icon-down-nav"></span>
+  <span class="icon icon-down"></span>
+  <span class="icon icon-left-nav"></span>
+  <span class="icon icon-left"></span>
+  <span class="icon icon-right-nav"></span>
+  <span class="icon icon-right"></span>
+  <span class="icon icon-up-nav"></span>
+  <span class="icon icon-up"></span>
+</div>
+
+ +
+ + + + + + + + + + + +
+
+
+ + + diff --git a/dist/css/ratchet-theme-android.css b/dist/css/ratchet-theme-android.css new file mode 100644 index 0000000..0ec3e0b --- /dev/null +++ b/dist/css/ratchet-theme-android.css @@ -0,0 +1,588 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */ + +body { + font-family: "Roboto", sans-serif; + font-size: 18px; + line-height: 22px; + color: #222222; +} + +a { + color: #33b5e5; +} +a:active { + color: #1a9bcb; +} + +.content { + background-color: #f2f2f2; +} + +.bar-nav ~ .content { + padding-top: 50px; +} + +.bar-header-secondary ~ .content { + padding-top: 100px; +} + +.bar-tab ~ .content { + padding-top: 50px; + padding-bottom: 0; +} + +.bar-footer ~ .content { + padding-bottom: 50px; +} + +.bar-footer-secondary ~ .content { + padding-bottom: 100px; +} + +.btn { + padding: 8px 15px; + font-size: 14px; + color: #222222; + background-color: #cecece; + border: 0; + border-radius: 2px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 1px rgba(0, 0, 0, 0.25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 1px rgba(0, 0, 0, 0.25); +} +.btn:active, .btn.active { + color: #222222; + border: 0; + background-color: #999999; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2); +} + +.btn-primary { + color: #fff; + border: 0; + background-color: #33b5e5; +} +.btn-primary:active, .btn-primary.active { + color: #fff; + border: 0; + background-color: #1a9bcb; +} + +.btn-positive { + color: #fff; + border: 0; + background-color: #99cc00; +} +.btn-positive:active, .btn-positive.active { + color: #fff; + border: 0; + background-color: #739900; +} + +.btn-negative { + color: #fff; + border: 0; + background-color: #ff4444; +} +.btn-negative:active, .btn-negative.active { + color: #fff; + border: 0; + background-color: #ff1111; +} + +.btn-outlined { + border: 1px solid #999999; + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-outlined.btn-primary { + border: 1px solid #33b5e5; + color: #33b5e5; +} +.btn-outlined.btn-primary:active { + border: 1px solid #33b5e5; + background-color: #33b5e5; +} +.btn-outlined.btn-positive { + border: 1px solid #99cc00; + color: #99cc00; +} +.btn-outlined.btn-positive:active { + border: 1px solid #99cc00; + background-color: #99cc00; +} +.btn-outlined.btn-negative { + border: 1px solid #ff4444; + color: #ff4444; +} +.btn-outlined.btn-negative:active { + border: 1px solid #ff4444; + background-color: #ff4444; +} +.btn-outlined:active { + border: 1px solid #999999; + background-color: #999999; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-outlined.btn-primary:active, .btn-outlined.btn-positive:active, .btn-outlined.btn-negative:active { + color: #fff; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #33b5e5; + background-color: transparent; + border: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link:active, .btn-link.active { + color: #1a9bcb; + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-block { + padding: 15px 0; + font-size: 18px; +} + +.btn .badge { + background-color: rgba(0, 0, 0, 0.15); +} +.btn .badge.badge-inverted { + background-color: transparent; +} +.btn:active .badge { + color: #fff; +} + +.bar { + height: 50px; + background-color: #dddddd; + border-bottom: 1px solid #b1b1b1; + -webkit-box-shadow: inset 0 -2px 0 #d2d2d2, 0 3px 3px rgba(0, 0, 0, 0.07); + box-shadow: inset 0 -2px 0 #d2d2d2, 0 3px 3px rgba(0, 0, 0, 0.07); +} +.bar.bar-header-secondary { + top: 50px; +} +.bar.bar-footer-secondary { + bottom: 50px; +} +.bar.bar-footer-secondary-tab { + bottom: 50px; +} +.bar .bar-footer, +.bar .bar-footer-secondary, +.bar .bar-footer-secondary-tab { + border-bottom: 0; + border-top: 1px solid #b1b1b1; + -webkit-box-shadow: inset 0 -2px 0 #33b5e5; + box-shadow: inset 0 -2px 0 #33b5e5; +} + +.bar-tab { + top: 0; + bottom: auto; + height: 50px; + border-top: 0; +} +.bar-tab .tab-item { + color: #929292; +} +.bar-tab .tab-item.active { + color: #33b5e5; + -webkit-box-shadow: inset 0 -2px 0 #33b5e5; + box-shadow: inset 0 -2px 0 #33b5e5; +} +.bar-tab .tab-item:active { + color: #929292; + background-color: #78c6e3; +} +.bar-tab .tab-item .icon { + top: 3px; + padding-top: 0; + padding-bottom: 0; +} + +.title { + position: static; + padding-left: 15px; + font-size: 18px; + line-height: 49px; + text-align: left; +} + +.bar .btn { + top: 7px; + padding-top: 10px; + padding-bottom: 10px; +} +.bar .btn-link { + top: 0; + padding: 0; + color: #33b5e5; + font-size: 18px; + line-height: 49px; +} +.bar .btn-link:active, .bar .btn-link.active { + color: #1a9bcb; +} +.bar .btn-link .icon { + top: 2px; + padding: 0; +} +.bar .btn-block { + top: 4px; +} + +.bar .segmented-control { + top: 7px; +} + +.bar .icon { + padding-top: 13px; + padding-bottom: 13px; +} +.bar .title .icon { + padding: 0; +} +.bar .title .icon.icon-caret { + top: 10px; + color: #777; +} + +.bar input[type="search"] { + height: 35px; +} + +.badge.badge-inverted { + color: #999999; + background-color: transparent; +} + +.badge-primary { + color: #fff; + background-color: #33b5e5; +} +.badge-primary.badge-inverted { + color: #33b5e5; + background-color: transparent; +} + +.badge-positive { + color: #fff; + background-color: #99cc00; +} +.badge-positive.badge-inverted { + color: #99cc00; + background-color: transparent; +} + +.badge-negative { + color: #fff; + background-color: #ff4444; +} +.badge-negative.badge-inverted { + color: #ff4444; + background-color: transparent; +} + +.card { + border-color: #d9d9d9; + border-radius: 2px; + background-color: transparent; +} + +.table-view { + background-color: transparent; +} +.table-view .table-view-cell { + border-bottom: 1px solid #d9d9d9; +} +.table-view .table-view-cell:last-child { + background-image: none; +} +.table-view .table-view-cell > a:not(.btn):active { + background-color: #e0e0e0; +} +.table-view .table-view-cell > a:not(.btn):active .icon { + color: #fff; +} +.table-view .table-view-divider { + padding-top: 25px; + font-size: 12px; + font-weight: bold; + text-transform: uppercase; + border-top: 0; + border-bottom: 2px solid #a9a9a9; + background-color: transparent; +} + +select, +textarea, +input[type="text"], +input[type="search"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="tel"], +input[type="color"], +.input-group { + height: 40px; + padding: 10px 15px; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} + +input[type="search"] { + border-radius: 2px; +} + +select, +textarea, +.input-group { + height: auto; +} + +.input-group { + padding: 0; + border: 0; +} + +.input-group input { + border: 0; + border-bottom: 1px solid #d9d9d9; + -webkit-box-shadow: none; + box-shadow: none; +} + +.input-group input:last-child { + background-image: none; +} + +.input-row { + border-bottom: 1px solid #d9d9d9; +} + +.input-row label + input { + background-image: none; + border-bottom: 0; +} + +.segmented-control { + font-size: 14px; + background-color: #cecece; + border: 0; + border-radius: 2px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); +} +.segmented-control .control-item { + padding-top: 10px; + padding-bottom: 10px; + color: #222222; + border-left: 1px solid #999; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.2); +} +.segmented-control .control-item:first-child { + border-left-width: 0; +} +.segmented-control .control-item:active, .segmented-control .control-item.active { + background-color: #999999; +} + +.segmented-control-primary { + border: 0; +} +.segmented-control-primary .control-item { + color: #fff; + border-color: inherit; +} +.segmented-control-primary .control-item:active, .segmented-control-primary .control-item.active { + color: #fff; + background-color: #33b5e5; +} + +.segmented-control-positive { + border: 0; +} +.segmented-control-positive .control-item { + color: #fff; + border-color: inherit; +} +.segmented-control-positive .control-item:active, .segmented-control-positive .control-item.active { + color: #fff; + background-color: #99cc00; +} + +.segmented-control-negative { + border: 0; +} +.segmented-control-negative .control-item { + color: #fff; + border-color: inherit; +} +.segmented-control-negative .control-item:active, .segmented-control-negative .control-item.active { + color: #fff; + background-color: #ff4444; +} + +.popover { + top: 47px; + left: 15px; + width: 200px; + margin-left: 0; + border: 1px solid #9b9b9b; + border-radius: 0; + -webkit-transition: -webkit-transform .1s ease-in-out, opacity .2s ease-in-out; + -moz-transition: -moz-transform .1s ease-in-out, opacity .2s ease-in-out; + transition: transform .1s ease-in-out, opacity .2s ease-in-out; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); + -webkit-transform: scale(0.75); + -ms-transform: scale(0.75); + transform: scale(0.75); +} +.popover:before { + display: none; +} +.popover.visible { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.backdrop { + background-color: transparent; +} + +.popover .bar { + border-radius: 0; +} +.popover .bar-nav ~ .table-view { + padding-top: 50px; +} + +.popover .table-view { + border-radius: 12px; +} + +.toggle { + width: 104px; + height: 28px; + border: 2px solid #d7d7d7; + border-radius: 0; + background-color: #d7d7d7; +} +.toggle .toggle-handle { + top: 0; + left: 0; + width: 50px; + height: 24px; + border: 1px solid #b5b5b5; + border-radius: 2px; + background-color: #bebebe; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} +.toggle:before { + top: 1px; + right: auto; + left: 11px; + z-index: 3; + color: #fff; +} +.toggle.active { + border: 2px solid #d7d7d7; + background-color: #d7d7d7; +} +.toggle.active .toggle-handle { + margin-right: 2px; + background-color: #33b5e5; + border-color: #33b5e5; + -webkit-transform: translate3d(50px, 0, 0); + -ms-transform: translate3d(50px, 0, 0); + transform: translate3d(50px, 0, 0); +} +.toggle.active:before { + left: auto; + right: 14px; + color: #fff; +} + +.navigate-left:after, +.push-left:after { + content: ''; +} + +.navigate-right:after, +.push-right:after { + content: ''; +} + +.icon-caret:before { + content: '\e800'; +} + +.icon-down:before, +.icon-down-nav:before { + content: '\e801'; +} + +.icon-download:before { + content: '\e802'; +} + +.icon-left:before, +.icon-left-nav:before { + content: '\e803'; +} + +.icon-more-vertical:before { + content: '\e804'; +} + +.icon-more:before { + content: '\e805'; +} + +.icon-right:before, +.icon-right-nav:before { + content: '\e806'; +} + +.icon-search:before { + content: '\e807'; +} + +.icon-share:before { + content: '\e808'; +} + +.icon-up:before, +.icon-up-nav:before { + content: '\e809'; +} diff --git a/dist/css/ratchet-theme-android.min.css b/dist/css/ratchet-theme-android.min.css new file mode 100644 index 0000000..836b680 --- /dev/null +++ b/dist/css/ratchet-theme-android.min.css @@ -0,0 +1,9 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */body{font-family:Roboto,sans-serif;font-size:18px;line-height:22px;color:#222}a{color:#33b5e5}a:active{color:#1a9bcb}.content{background-color:#f2f2f2}.bar-nav~.content{padding-top:50px}.bar-header-secondary~.content{padding-top:100px}.bar-tab~.content{padding-top:50px;padding-bottom:0}.bar-footer~.content{padding-bottom:50px}.bar-footer-secondary~.content{padding-bottom:100px}.btn{padding:8px 15px;font-size:14px;color:#222;background-color:#cecece;border:0;border-radius:2px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2),0 1px 1px rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2),0 1px 1px rgba(0,0,0,.25)}.btn:active,.btn.active{color:#222;border:0;background-color:#999;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2);box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2)}.btn-primary{color:#fff;border:0;background-color:#33b5e5}.btn-primary:active,.btn-primary.active{color:#fff;border:0;background-color:#1a9bcb}.btn-positive{color:#fff;border:0;background-color:#9c0}.btn-positive:active,.btn-positive.active{color:#fff;border:0;background-color:#739900}.btn-negative{color:#fff;border:0;background-color:#f44}.btn-negative:active,.btn-negative.active{color:#fff;border:0;background-color:#f11}.btn-outlined{border:1px solid #999;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-outlined.btn-primary{border:1px solid #33b5e5;color:#33b5e5}.btn-outlined.btn-primary:active{border:1px solid #33b5e5;background-color:#33b5e5}.btn-outlined.btn-positive{border:1px solid #9c0;color:#9c0}.btn-outlined.btn-positive:active{border:1px solid #9c0;background-color:#9c0}.btn-outlined.btn-negative{border:1px solid #f44;color:#f44}.btn-outlined.btn-negative:active{border:1px solid #f44;background-color:#f44}.btn-outlined:active{border:1px solid #999;background-color:#999;-webkit-box-shadow:none;box-shadow:none}.btn-outlined.btn-primary:active,.btn-outlined.btn-positive:active,.btn-outlined.btn-negative:active{color:#fff;-webkit-box-shadow:none;box-shadow:none}.btn-link{color:#33b5e5;background-color:transparent;border:none;-webkit-box-shadow:none;box-shadow:none}.btn-link:active,.btn-link.active{color:#1a9bcb;background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-block{padding:15px 0;font-size:18px}.btn .badge{background-color:rgba(0,0,0,.15)}.btn .badge.badge-inverted{background-color:transparent}.btn:active .badge{color:#fff}.bar{height:50px;background-color:#ddd;border-bottom:1px solid #b1b1b1;-webkit-box-shadow:inset 0 -2px 0 #d2d2d2,0 3px 3px rgba(0,0,0,.07);box-shadow:inset 0 -2px 0 #d2d2d2,0 3px 3px rgba(0,0,0,.07)}.bar.bar-header-secondary{top:50px}.bar.bar-footer-secondary{bottom:50px}.bar.bar-footer-secondary-tab{bottom:50px}.bar .bar-footer,.bar .bar-footer-secondary,.bar .bar-footer-secondary-tab{border-bottom:0;border-top:1px solid #b1b1b1;-webkit-box-shadow:inset 0 -2px 0 #33b5e5;box-shadow:inset 0 -2px 0 #33b5e5}.bar-tab{top:0;bottom:auto;height:50px;border-top:0}.bar-tab .tab-item{color:#929292}.bar-tab .tab-item.active{color:#33b5e5;-webkit-box-shadow:inset 0 -2px 0 #33b5e5;box-shadow:inset 0 -2px 0 #33b5e5}.bar-tab .tab-item:active{color:#929292;background-color:#78c6e3}.bar-tab .tab-item .icon{top:3px;padding-top:0;padding-bottom:0}.title{position:static;padding-left:15px;font-size:18px;line-height:49px;text-align:left}.bar .btn{top:7px;padding-top:10px;padding-bottom:10px}.bar .btn-link{top:0;padding:0;color:#33b5e5;font-size:18px;line-height:49px}.bar .btn-link:active,.bar .btn-link.active{color:#1a9bcb}.bar .btn-link .icon{top:2px;padding:0}.bar .btn-block{top:4px}.bar .segmented-control{top:7px}.bar .icon{padding-top:13px;padding-bottom:13px}.bar .title .icon{padding:0}.bar .title .icon.icon-caret{top:10px;color:#777}.bar input[type=search]{height:35px}.badge.badge-inverted{color:#999;background-color:transparent}.badge-primary{color:#fff;background-color:#33b5e5}.badge-primary.badge-inverted{color:#33b5e5;background-color:transparent}.badge-positive{color:#fff;background-color:#9c0}.badge-positive.badge-inverted{color:#9c0;background-color:transparent}.badge-negative{color:#fff;background-color:#f44}.badge-negative.badge-inverted{color:#f44;background-color:transparent}.card{border-color:#d9d9d9;border-radius:2px;background-color:transparent}.table-view{background-color:transparent}.table-view .table-view-cell{border-bottom:1px solid #d9d9d9}.table-view .table-view-cell:last-child{background-image:none}.table-view .table-view-cell>a:not(.btn):active{background-color:#e0e0e0}.table-view .table-view-cell>a:not(.btn):active .icon{color:#fff}.table-view .table-view-divider{padding-top:25px;font-size:12px;font-weight:700;text-transform:uppercase;border-top:0;border-bottom:2px solid #a9a9a9;background-color:transparent}select,textarea,input[type=text],input[type=search],input[type=password],input[type=datetime],input[type=datetime-local],input[type=date],input[type=month],input[type=time],input[type=week],input[type=number],input[type=email],input[type=url],input[type=tel],input[type=color],.input-group{height:40px;padding:10px 15px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1)}input[type=search]{border-radius:2px}select,textarea,.input-group{height:auto}.input-group{padding:0;border:0}.input-group input{border:0;border-bottom:1px solid #d9d9d9;-webkit-box-shadow:none;box-shadow:none}.input-group input:last-child{background-image:none}.input-row{border-bottom:1px solid #d9d9d9}.input-row label+input{background-image:none;border-bottom:0}.segmented-control{font-size:14px;background-color:#cecece;border:0;border-radius:2px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.25);box-shadow:0 1px 1px rgba(0,0,0,.25)}.segmented-control .control-item{padding-top:10px;padding-bottom:10px;color:#222;border-left:1px solid #999;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2);box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2)}.segmented-control .control-item:first-child{border-left-width:0}.segmented-control .control-item:active,.segmented-control .control-item.active{background-color:#999}.segmented-control-primary{border:0}.segmented-control-primary .control-item{color:#fff;border-color:inherit}.segmented-control-primary .control-item:active,.segmented-control-primary .control-item.active{color:#fff;background-color:#33b5e5}.segmented-control-positive{border:0}.segmented-control-positive .control-item{color:#fff;border-color:inherit}.segmented-control-positive .control-item:active,.segmented-control-positive .control-item.active{color:#fff;background-color:#9c0}.segmented-control-negative{border:0}.segmented-control-negative .control-item{color:#fff;border-color:inherit}.segmented-control-negative .control-item:active,.segmented-control-negative .control-item.active{color:#fff;background-color:#f44}.popover{top:47px;left:15px;width:200px;margin-left:0;border:1px solid #9b9b9b;border-radius:0;-webkit-transition:-webkit-transform .1s ease-in-out,opacity .2s ease-in-out;-moz-transition:-moz-transform .1s ease-in-out,opacity .2s ease-in-out;transition:transform .1s ease-in-out,opacity .2s ease-in-out;-webkit-box-shadow:0 0 3px rgba(0,0,0,.2);box-shadow:0 0 3px rgba(0,0,0,.2);-webkit-transform:scale(0.75);-ms-transform:scale(0.75);transform:scale(0.75)}.popover:before{display:none}.popover.visible{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.backdrop{background-color:transparent}.popover .bar{border-radius:0}.popover .bar-nav~.table-view{padding-top:50px}.popover .table-view{border-radius:12px}.toggle{width:104px;height:28px;border:2px solid #d7d7d7;border-radius:0;background-color:#d7d7d7}.toggle .toggle-handle{top:0;left:0;width:50px;height:24px;border:1px solid #b5b5b5;border-radius:2px;background-color:#bebebe;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.1)}.toggle:before{top:1px;right:auto;left:11px;z-index:3;color:#fff}.toggle.active{border:2px solid #d7d7d7;background-color:#d7d7d7}.toggle.active .toggle-handle{margin-right:2px;background-color:#33b5e5;border-color:#33b5e5;-webkit-transform:translate3d(50px,0,0);-ms-transform:translate3d(50px,0,0);transform:translate3d(50px,0,0)}.toggle.active:before{left:auto;right:14px;color:#fff}.navigate-left:after,.push-left:after{content:''}.navigate-right:after,.push-right:after{content:''}.icon-caret:before{content:'\e800'}.icon-down:before,.icon-down-nav:before{content:'\e801'}.icon-download:before{content:'\e802'}.icon-left:before,.icon-left-nav:before{content:'\e803'}.icon-more-vertical:before{content:'\e804'}.icon-more:before{content:'\e805'}.icon-right:before,.icon-right-nav:before{content:'\e806'}.icon-search:before{content:'\e807'}.icon-share:before{content:'\e808'}.icon-up:before,.icon-up-nav:before{content:'\e809'} \ No newline at end of file diff --git a/dist/css/ratchet-theme-ios.css b/dist/css/ratchet-theme-ios.css new file mode 100644 index 0000000..c0b1fb7 --- /dev/null +++ b/dist/css/ratchet-theme-ios.css @@ -0,0 +1,471 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */ + +a { + color: #007aff; +} +a:active { + color: #0062cc; +} + +.content { + background-color: #efeff4; +} + +.h5, h5, +.h6, h6, +p { + color: #8f8f94; +} + +.h5, h5, +.h6, h6 { + font-weight: normal; + text-transform: uppercase; +} + +.btn { + border: 1px solid #929292; + color: #929292; + background-color: rgba(247, 247, 247, 0.98); + -webkit-transition: all; + -moz-transition: all; + transition: all; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: linear; + -moz-transition-timing-function: linear; + transition-timing-function: linear; +} +.btn:active, .btn.active { + color: #fff; + background-color: #929292; +} + +.btn-primary { + color: #fff; + border: 1px solid #007aff; + background-color: #007aff; +} +.btn-primary:active, .btn-primary.active { + border: 1px solid #0062cc; + background-color: #0062cc; +} + +.btn-positive { + color: #fff; + border: 1px solid #4cd964; + background-color: #4cd964; +} +.btn-positive:active, .btn-positive.active { + border: 1px solid #2ac845; + background-color: #2ac845; +} + +.btn-negative { + color: #fff; + border: 1px solid #dd524d; + background-color: #dd524d; +} +.btn-negative:active, .btn-negative.active { + border: 1px solid #cf2d28; + background-color: #cf2d28; +} + +.btn-outlined { + background-color: transparent; +} +.btn-outlined.btn-primary { + color: #007aff; +} +.btn-outlined.btn-positive { + color: #4cd964; +} +.btn-outlined.btn-negative { + color: #dd524d; +} +.btn-outlined.btn-primary:active, .btn-outlined.btn-positive:active, .btn-outlined.btn-negative:active { + color: #fff; +} + +.btn-link { + color: #007aff; + background-color: transparent; + border: none; +} +.btn-link:active, .btn-link.active { + color: #0062cc; + background-color: transparent; +} + +.btn .badge { + background-color: rgba(0, 0, 0, 0.15); +} +.btn .badge.badge-inverted { + background-color: transparent; +} +.btn:active .badge { + color: #fff; +} + +.bar { + border-bottom: 0; + background-color: rgba(247, 247, 247, 0.98); + -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.85); + box-shadow: 0 0 1px rgba(0, 0, 0, 0.85); +} +.bar.bar-header-secondary { + top: 44px; +} +.bar.bar-footer-secondary { + bottom: 44px; +} +.bar.bar-footer-secondary-tab { + bottom: 50px; +} +.bar.bar-footer, .bar.bar-footer-secondary, .bar.bar-footer-secondary-tab { + border-top: 0; +} + +.bar-tab { + border-top: 0; +} + +.tab-item { + color: #929292; +} +.tab-item.active, .tab-item:active { + color: #007aff; +} + +.bar-nav .btn-link { + color: #007aff; +} +.bar-nav .btn-link:active { + color: #007aff; + opacity: .6; +} + +.badge.badge-inverted { + color: #929292; + background-color: transparent; +} + +.badge-primary { + color: #fff; + background-color: #007aff; +} +.badge-primary.badge-inverted { + color: #007aff; + background-color: transparent; +} + +.badge-positive { + color: #fff; + background-color: #4cd964; +} +.badge-positive.badge-inverted { + color: #4cd964; + background-color: transparent; +} + +.badge-negative { + color: #fff; + background-color: #dd524d; +} +.badge-negative.badge-inverted { + color: #dd524d; + background-color: transparent; +} + +.card .table-view { + background-image: none; +} + +.card .table-view-cell:last-child { + background-image: none; +} + +.table-view { + border-top: 0; + border-bottom: 0; + background-image: url("data:image/svg+xml;utf8,"), url("data:image/svg+xml;utf8,"); + background-position: 0 100%, 0 0%; + background-repeat: no-repeat; +} +.table-view .table-view-cell { + border-bottom: 0; + background-image: url("data:image/svg+xml;utf8,"); + background-position: 15px 100%; + background-repeat: no-repeat; +} +.table-view .table-view-cell:last-child { + background-image: none; +} +.table-view .table-view-divider { + border-top: 0; + border-bottom: 0; + background-image: url("data:image/svg+xml;utf8,"), url("data:image/svg+xml;utf8,"); + background-position: 0 100%, 0 0%; + background-repeat: no-repeat; +} + +select, +textarea, +input[type="text"], +input[type="search"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="tel"], +input[type="color"], +.input-group { + height: 40px; + padding: 10px 15px; + border: 1px solid rgba(0, 0, 0, 0.2); +} + +input[type="search"] { + height: 34px; + text-align: center; + background-color: rgba(0, 0, 0, 0.1); + border: 0; + border-radius: 6px; +} + +input[type="search"]:focus { + text-align: left; +} + +select, +textarea, +.input-group { + height: auto; +} + +.input-group { + padding: 0; + border: 0; + background-image: url("data:image/svg+xml;utf8,"), url("data:image/svg+xml;utf8,"); + background-position: 0 100%, 0 0%; + background-repeat: no-repeat; +} + +.input-group input { + border: 0; + background-image: url("data:image/svg+xml;utf8,"); + background-position: 15px 100%; + background-repeat: no-repeat; +} + +.input-group input:last-child { + background-image: none; +} + +.input-row { + border-bottom: 0; + background-image: url("data:image/svg+xml;utf8,"); + background-position: 15px 100%; + background-repeat: no-repeat; +} + +.input-row:last-child, +.input-row label + input { + background-image: none; +} + +.segmented-control { + background-color: transparent; + border: 1px solid #929292; +} +.segmented-control .control-item { + color: #929292; + border-color: #929292; + -webkit-transition: background-color 0.1s linear; + -moz-transition: background-color 0.1s linear; + transition: background-color 0.1s linear; +} +.segmented-control .control-item:active { + background-color: #ebebeb; +} +.segmented-control .control-item.active { + color: #fff; + background-color: #929292; +} + +.segmented-control-primary { + border: 1px solid #007aff; +} +.segmented-control-primary .control-item { + color: #007aff; + border-color: inherit; +} +.segmented-control-primary .control-item:active { + background-color: #b3d7ff; +} +.segmented-control-primary .control-item.active { + color: #fff; + background-color: #007aff; +} + +.segmented-control-positive { + border: 1px solid #4cd964; +} +.segmented-control-positive .control-item { + color: #4cd964; + border-color: inherit; +} +.segmented-control-positive .control-item:active { + background-color: #dff8e3; +} +.segmented-control-positive .control-item.active { + color: #fff; + background-color: #4cd964; +} + +.segmented-control-negative { + border: 1px solid #dd524d; +} +.segmented-control-negative .control-item { + color: #dd524d; + border-color: inherit; +} +.segmented-control-negative .control-item:active { + background-color: #fae4e3; +} +.segmented-control-negative .control-item.active { + color: #fff; + background-color: #dd524d; +} + +.popover { + border-radius: 12px; + -webkit-transition: -webkit-transform .2s ease-in-out, opacity .2s ease-in-out; + -moz-transition: -moz-transform .2s ease-in-out, opacity .2s ease-in-out; + transition: transform .2s ease-in-out, opacity .2s ease-in-out; + -webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in-out; + -moz-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in-out; + transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in-out; +} +.popover:before { + border-bottom: 15px solid rgba(247, 247, 247, 0.98); +} + +.popover .bar { + -webkit-box-shadow: none; + box-shadow: none; +} + +.popover .bar-nav { + border-bottom: 1px solid rgba(0, 0, 0, 0.15); +} + +.popover .table-view { + border-radius: 12px; + background-image: none; +} + +.modal { + -webkit-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + -moz-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); +} +.modal.active { + -webkit-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + -moz-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); +} + +.toggle { + width: 47px; + border: 2px solid #e6e6e6; + -webkit-box-shadow: inset 0 0 0 0 #e1e1e1; + box-shadow: inset 0 0 0 0 #e1e1e1; + -webkit-transition-property: box-shadow, border; + -moz-transition-property: box-shadow, border; + transition-property: box-shadow, border; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.toggle .toggle-handle { + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-transition-property: -webkit-transform, border, width; + -moz-transition-property: -moz-transform, border, width; + transition-property: transform, border, width; + -webkit-box-shadow: 0 3px 3px rgba(0, 0, 0, 0.08); + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.08); +} +.toggle:before { + display: none; +} +.toggle.active { + border: 2px solid #4cd964; + background-color: transparent; + -webkit-box-shadow: inset 0 0 0 13px #4cd964; + box-shadow: inset 0 0 0 13px #4cd964; +} +.toggle.active .toggle-handle { + -webkit-transform: translate3d(17px, 0, 0); + -ms-transform: translate3d(17px, 0, 0); + transform: translate3d(17px, 0, 0); +} +.toggle.active .toggle-handle { + border-color: #4cd964; +} + +.content.fade { + -webkit-transition: opacity 0.2s ease-in-out; + -moz-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; +} +.content.sliding { + -webkit-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + -moz-transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); + transition-timing-function: cubic-bezier(0.1, 0.5, 0.1, 1); +} +.content.sliding.sliding-in, .content.sliding.right:not([class*="sliding-in"]) { + -webkit-animation-name: fadeOverlay; + -moz-animation-name: fadeOverlay; + animation-name: fadeOverlay; + -webkit-animation-duration: 0.4s; + -moz-animation-duration: 0.4s; + animation-duration: 0.4s; +} +.content.sliding.right:not([class*="sliding-in"]) { + -webkit-animation-direction: reverse; + -moz-animation-direction: reverse; + animation-direction: reverse; +} +.content.sliding.left { + -webkit-transform: translate3d(-20%, 0, 0); + -ms-transform: translate3d(-20%, 0, 0); + transform: translate3d(-20%, 0, 0); +} + +@-webkit-keyframes fadeOverlay { + from { + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0), -320px 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 10px rgba(0, 0, 0, 0), -320px 0 0 rgba(0, 0, 0, 0); + } + + to { + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3), -320px 0 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3), -320px 0 0 rgba(0, 0, 0, 0.1); + } +} diff --git a/dist/css/ratchet-theme-ios.min.css b/dist/css/ratchet-theme-ios.min.css new file mode 100644 index 0000000..c211d4b --- /dev/null +++ b/dist/css/ratchet-theme-ios.min.css @@ -0,0 +1,9 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */a{color:#007aff}a:active{color:#0062cc}.content{background-color:#efeff4}.h5,h5,.h6,h6,p{color:#8f8f94}.h5,h5,.h6,h6{font-weight:400;text-transform:uppercase}.btn{border:1px solid #929292;color:#929292;background-color:rgba(247,247,247,.98);-webkit-transition:all;-moz-transition:all;transition:all;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear;transition-timing-function:linear}.btn:active,.btn.active{color:#fff;background-color:#929292}.btn-primary{color:#fff;border:1px solid #007aff;background-color:#007aff}.btn-primary:active,.btn-primary.active{border:1px solid #0062cc;background-color:#0062cc}.btn-positive{color:#fff;border:1px solid #4cd964;background-color:#4cd964}.btn-positive:active,.btn-positive.active{border:1px solid #2ac845;background-color:#2ac845}.btn-negative{color:#fff;border:1px solid #dd524d;background-color:#dd524d}.btn-negative:active,.btn-negative.active{border:1px solid #cf2d28;background-color:#cf2d28}.btn-outlined{background-color:transparent}.btn-outlined.btn-primary{color:#007aff}.btn-outlined.btn-positive{color:#4cd964}.btn-outlined.btn-negative{color:#dd524d}.btn-outlined.btn-primary:active,.btn-outlined.btn-positive:active,.btn-outlined.btn-negative:active{color:#fff}.btn-link{color:#007aff;background-color:transparent;border:none}.btn-link:active,.btn-link.active{color:#0062cc;background-color:transparent}.btn .badge{background-color:rgba(0,0,0,.15)}.btn .badge.badge-inverted{background-color:transparent}.btn:active .badge{color:#fff}.bar{border-bottom:0;background-color:rgba(247,247,247,.98);-webkit-box-shadow:0 0 1px rgba(0,0,0,.85);box-shadow:0 0 1px rgba(0,0,0,.85)}.bar.bar-header-secondary{top:44px}.bar.bar-footer-secondary{bottom:44px}.bar.bar-footer-secondary-tab{bottom:50px}.bar.bar-footer,.bar.bar-footer-secondary,.bar.bar-footer-secondary-tab{border-top:0}.bar-tab{border-top:0}.tab-item{color:#929292}.tab-item.active,.tab-item:active{color:#007aff}.bar-nav .btn-link{color:#007aff}.bar-nav .btn-link:active{color:#007aff;opacity:.6}.badge.badge-inverted{color:#929292;background-color:transparent}.badge-primary{color:#fff;background-color:#007aff}.badge-primary.badge-inverted{color:#007aff;background-color:transparent}.badge-positive{color:#fff;background-color:#4cd964}.badge-positive.badge-inverted{color:#4cd964;background-color:transparent}.badge-negative{color:#fff;background-color:#dd524d}.badge-negative.badge-inverted{color:#dd524d;background-color:transparent}.card .table-view{background-image:none}.card .table-view-cell:last-child{background-image:none}.table-view{border-top:0;border-bottom:0;background-image:url("data:image/svg+xml;utf8,"),url("data:image/svg+xml;utf8,");background-position:0 100%,0 0;background-repeat:no-repeat}.table-view .table-view-cell{border-bottom:0;background-image:url("data:image/svg+xml;utf8,");background-position:15px 100%;background-repeat:no-repeat}.table-view .table-view-cell:last-child{background-image:none}.table-view .table-view-divider{border-top:0;border-bottom:0;background-image:url("data:image/svg+xml;utf8,"),url("data:image/svg+xml;utf8,");background-position:0 100%,0 0;background-repeat:no-repeat}select,textarea,input[type=text],input[type=search],input[type=password],input[type=datetime],input[type=datetime-local],input[type=date],input[type=month],input[type=time],input[type=week],input[type=number],input[type=email],input[type=url],input[type=tel],input[type=color],.input-group{height:40px;padding:10px 15px;border:1px solid rgba(0,0,0,.2)}input[type=search]{height:34px;text-align:center;background-color:rgba(0,0,0,.1);border:0;border-radius:6px}input[type=search]:focus{text-align:left}select,textarea,.input-group{height:auto}.input-group{padding:0;border:0;background-image:url("data:image/svg+xml;utf8,"),url("data:image/svg+xml;utf8,");background-position:0 100%,0 0;background-repeat:no-repeat}.input-group input{border:0;background-image:url("data:image/svg+xml;utf8,");background-position:15px 100%;background-repeat:no-repeat}.input-group input:last-child{background-image:none}.input-row{border-bottom:0;background-image:url("data:image/svg+xml;utf8,");background-position:15px 100%;background-repeat:no-repeat}.input-row:last-child,.input-row label+input{background-image:none}.segmented-control{background-color:transparent;border:1px solid #929292}.segmented-control .control-item{color:#929292;border-color:#929292;-webkit-transition:background-color .1s linear;-moz-transition:background-color .1s linear;transition:background-color .1s linear}.segmented-control .control-item:active{background-color:#ebebeb}.segmented-control .control-item.active{color:#fff;background-color:#929292}.segmented-control-primary{border:1px solid #007aff}.segmented-control-primary .control-item{color:#007aff;border-color:inherit}.segmented-control-primary .control-item:active{background-color:#b3d7ff}.segmented-control-primary .control-item.active{color:#fff;background-color:#007aff}.segmented-control-positive{border:1px solid #4cd964}.segmented-control-positive .control-item{color:#4cd964;border-color:inherit}.segmented-control-positive .control-item:active{background-color:#dff8e3}.segmented-control-positive .control-item.active{color:#fff;background-color:#4cd964}.segmented-control-negative{border:1px solid #dd524d}.segmented-control-negative .control-item{color:#dd524d;border-color:inherit}.segmented-control-negative .control-item:active{background-color:#fae4e3}.segmented-control-negative .control-item.active{color:#fff;background-color:#dd524d}.popover{border-radius:12px;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out;-moz-transition:-moz-transform .2s ease-in-out,opacity .2s ease-in-out;transition:transform .2s ease-in-out,opacity .2s ease-in-out;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out;-moz-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out;transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in-out}.popover:before{border-bottom:15px solid rgba(247,247,247,.98)}.popover .bar{-webkit-box-shadow:none;box-shadow:none}.popover .bar-nav{border-bottom:1px solid rgba(0,0,0,.15)}.popover .table-view{border-radius:12px;background-image:none}.modal{-webkit-transition-timing-function:cubic-bezier(0.1,.5,.1,1);-moz-transition-timing-function:cubic-bezier(0.1,.5,.1,1);transition-timing-function:cubic-bezier(0.1,.5,.1,1)}.modal.active{-webkit-transition-timing-function:cubic-bezier(0.1,.5,.1,1);-moz-transition-timing-function:cubic-bezier(0.1,.5,.1,1);transition-timing-function:cubic-bezier(0.1,.5,.1,1)}.toggle{width:47px;border:2px solid #e6e6e6;-webkit-box-shadow:inset 0 0 0 0 #e1e1e1;box-shadow:inset 0 0 0 0 #e1e1e1;-webkit-transition-property:box-shadow,border;-moz-transition-property:box-shadow,border;transition-property:box-shadow,border;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;transition-duration:.2s}.toggle .toggle-handle{border:1px solid rgba(0,0,0,.2);-webkit-transition-property:-webkit-transform,border,width;-moz-transition-property:-moz-transform,border,width;transition-property:transform,border,width;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.08);box-shadow:0 3px 3px rgba(0,0,0,.08)}.toggle:before{display:none}.toggle.active{border:2px solid #4cd964;background-color:transparent;-webkit-box-shadow:inset 0 0 0 13px #4cd964;box-shadow:inset 0 0 0 13px #4cd964}.toggle.active .toggle-handle{-webkit-transform:translate3d(17px,0,0);-ms-transform:translate3d(17px,0,0);transform:translate3d(17px,0,0)}.toggle.active .toggle-handle{border-color:#4cd964}.content.fade{-webkit-transition:opacity .2s ease-in-out;-moz-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.content.sliding{-webkit-transition-timing-function:cubic-bezier(0.1,.5,.1,1);-moz-transition-timing-function:cubic-bezier(0.1,.5,.1,1);transition-timing-function:cubic-bezier(0.1,.5,.1,1)}.content.sliding.sliding-in,.content.sliding.right:not([class*=sliding-in]){-webkit-animation-name:fadeOverlay;-moz-animation-name:fadeOverlay;animation-name:fadeOverlay;-webkit-animation-duration:.4s;-moz-animation-duration:.4s;animation-duration:.4s}.content.sliding.right:not([class*=sliding-in]){-webkit-animation-direction:reverse;-moz-animation-direction:reverse;animation-direction:reverse}.content.sliding.left{-webkit-transform:translate3d(-20%,0,0);-ms-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0)}@-webkit-keyframes fadeOverlay{from{-webkit-box-shadow:0 0 10px rgba(0,0,0,0),-320px 0 0 rgba(0,0,0,0);box-shadow:0 0 10px rgba(0,0,0,0),-320px 0 0 rgba(0,0,0,0)}to{-webkit-box-shadow:0 0 10px rgba(0,0,0,.3),-320px 0 0 rgba(0,0,0,.1);box-shadow:0 0 10px rgba(0,0,0,.3),-320px 0 0 rgba(0,0,0,.1)}} \ No newline at end of file diff --git a/dist/css/ratchet.css b/dist/css/ratchet.css new file mode 100644 index 0000000..6eedb11 --- /dev/null +++ b/dist/css/ratchet.css @@ -0,0 +1,1430 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */ + +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden], +template { + display: none; +} + +a { + background: transparent; +} + +a:active, +a:hover { + outline: 0; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +mark { + background: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 1em 40px; +} + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +pre { + overflow: auto; +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} + +button { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input { + line-height: normal; +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +legend { + border: 0; + padding: 0; +} + +textarea { + overflow: auto; +} + +optgroup { + font-weight: bold; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + font-family: "Helvetica Neue", Helvetica, sans-serif; + font-size: 17px; + line-height: 21px; + color: #000; + background-color: #fff; +} + +a { + color: #428bca; + text-decoration: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +a:active { + color: #3071a9; +} + +.content { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: auto; + background-color: #fff; + -webkit-overflow-scrolling: touch; +} + +.content > * { + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} + +.bar-nav ~ .content { + padding-top: 44px; +} + +.bar-header-secondary ~ .content { + padding-top: 88px; +} + +.bar-footer ~ .content { + padding-bottom: 44px; +} + +.bar-footer-secondary ~ .content { + padding-bottom: 88px; +} + +.bar-tab ~ .content { + padding-bottom: 50px; +} + +.bar-footer-secondary-tab ~ .content { + padding-bottom: 94px; +} + +.content-padded { + margin: 10px; +} + +.pull-left { + float: left; +} + +.pull-right { + float: right; +} + +.clearfix:before, .clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 10px; + line-height: 1; +} + +h1, .h1 { + font-size: 36px; +} + +h2, .h2 { + font-size: 30px; +} + +h3, .h3 { + font-size: 24px; +} + +h4, .h4 { + font-size: 18px; +} + +h5, .h5 { + font-size: 14px; + margin-top: 20px; +} + +h6, .h6 { + font-size: 12px; + margin-top: 20px; +} + +p { + margin-top: 0; + margin-bottom: 10px; + font-size: 14px; + color: #777; +} + +.btn { + position: relative; + display: inline-block; + padding: 6px 8px 7px; + margin-bottom: 0; + font-size: 12px; + font-weight: 400; + line-height: 1; + color: #333; + text-align: center; + vertical-align: top; + white-space: nowrap; + cursor: pointer; + background-color: white; + border: 1px solid #ccc; + border-radius: 3px; +} +.btn:active, .btn.active { + color: inherit; + background-color: #ccc; +} +.btn:disabled, .btn.disabled { + opacity: .6; +} + +.btn-primary { + color: #fff; + border: 1px solid #428bca; + background-color: #428bca; +} +.btn-primary:active, .btn-primary.active { + color: #fff; + border: 1px solid #3071a9; + background-color: #3071a9; +} + +.btn-positive { + color: #fff; + border: 1px solid #5cb85c; + background-color: #5cb85c; +} +.btn-positive:active, .btn-positive.active { + color: #fff; + border: 1px solid #449d44; + background-color: #449d44; +} + +.btn-negative { + color: #fff; + border: 1px solid #d9534f; + background-color: #d9534f; +} +.btn-negative:active, .btn-negative.active { + color: #fff; + border: 1px solid #c9302c; + background-color: #c9302c; +} + +.btn-outlined { + background-color: transparent; +} +.btn-outlined.btn-primary { + color: #428bca; +} +.btn-outlined.btn-positive { + color: #5cb85c; +} +.btn-outlined.btn-negative { + color: #d9534f; +} +.btn-outlined.btn-primary:active, .btn-outlined.btn-positive:active, .btn-outlined.btn-negative:active { + color: #fff; +} + +.btn-link { + padding-top: 6px; + padding-bottom: 6px; + color: #428bca; + background-color: transparent; + border: 0; +} +.btn-link:active, .btn-link.active { + color: #3071a9; + background-color: transparent; +} + +.btn-block { + display: block; + width: 100%; + padding: 15px 0; + margin-bottom: 10px; + font-size: 18px; +} + +input[type="submit"], +input[type="reset"], +input[type="button"] { + width: 100%; +} + +.btn .badge { + font-size: 12px; + margin: -2px -4px -2px 4px; + background-color: rgba(0, 0, 0, 0.15); +} + +.btn .badge-inverted, +.btn:active .badge-inverted { + background-color: transparent; +} + +.btn-primary:active .badge-inverted, +.btn-positive:active .badge-inverted, +.btn-negative:active .badge-inverted { + color: #fff; +} + +.btn-block .badge { + position: absolute; + right: 0; + margin-right: 10px; +} + +.btn .icon { + font-size: inherit; +} + +.bar { + position: fixed; + right: 0; + left: 0; + z-index: 10; + height: 44px; + padding-right: 10px; + padding-left: 10px; + border-bottom: 1px solid #dddddd; + background-color: white; +} + +.bar-header-secondary { + top: 44px; +} + +.bar-footer { + bottom: 0; +} + +.bar-footer-secondary { + bottom: 44px; +} + +.bar-footer-secondary-tab { + bottom: 50px; +} + +.bar-footer, +.bar-footer-secondary, +.bar-footer-secondary-tab { + border-bottom: 0; + border-top: 1px solid #dddddd; +} + +.bar-nav { + top: 0; +} + +.title { + position: absolute; + display: block; + width: 100%; + padding: 0; + margin: 0 -10px; + font-size: 17px; + font-weight: 500; + line-height: 44px; + color: #000; + text-align: center; + white-space: nowrap; +} + +.title a { + color: inherit; +} + +.bar-tab { + display: table; + bottom: 0; + width: 100%; + height: 50px; + padding: 0; + border-top: 1px solid #dddddd; + border-bottom: 0; + table-layout: fixed; +} +.bar-tab .tab-item { + display: table-cell; + width: 1%; + height: 50px; + vertical-align: middle; + color: #929292; + text-align: center; +} +.bar-tab .tab-item.active, .bar-tab .tab-item:active { + color: #428bca; +} +.bar-tab .tab-item .icon { + top: 3px; + width: 24px; + height: 24px; + padding-top: 0; + padding-bottom: 0; +} +.bar-tab .tab-item .icon ~ .tab-label { + display: block; + font-size: 11px; +} + +.bar .btn { + position: relative; + top: 7px; + z-index: 20; + padding: 6px 12px 7px; + margin-top: 0; + font-weight: 400; +} +.bar .btn.pull-right { + margin-left: 10px; +} +.bar .btn.pull-left { + margin-right: 10px; +} + +.bar .btn-link { + top: 0; + padding: 0; + font-size: 16px; + color: #428bca; + line-height: 44px; + border: 0; +} +.bar .btn-link:active, .bar .btn-link.active { + color: #3071a9; +} + +.bar .btn-block { + top: 6px; + padding: 7px 0; + margin-bottom: 0; + font-size: 16px; +} + +.bar .btn-nav.pull-left { + margin-left: -5px; +} +.bar .btn-nav.pull-left .icon-left-nav { + margin-right: -3px; +} +.bar .btn-nav.pull-right { + margin-right: -5px; +} +.bar .btn-nav.pull-right .icon-right-nav { + margin-left: -3px; +} + +.bar .icon { + position: relative; + z-index: 20; + padding-top: 10px; + padding-bottom: 10px; + font-size: 24px; +} +.bar .btn .icon { + top: 3px; + padding: 0; +} +.bar .title .icon { + padding: 0; +} +.bar .title .icon.icon-caret { + top: 4px; + margin-left: -5px; +} + +.bar input[type="search"] { + height: 29px; + margin: 6px 0; +} + +.bar .segmented-control { + top: 7px; + margin: 0 auto; +} + +.badge { + display: inline-block; + padding: 2px 9px 3px; + font-size: 12px; + line-height: 1; + color: #333; + background-color: rgba(0, 0, 0, 0.15); + border-radius: 100px; +} +.badge.badge-inverted { + padding: 0 5px 0 0; + background-color: transparent; +} + +.badge-primary { + color: #fff; + background-color: #428bca; +} +.badge-primary.badge-inverted { + color: #428bca; +} + +.badge-positive { + color: #fff; + background-color: #5cb85c; +} +.badge-positive.badge-inverted { + color: #5cb85c; +} + +.badge-negative { + color: #fff; + background-color: #d9534f; +} +.badge-negative.badge-inverted { + color: #d9534f; +} + +.card { + overflow: hidden; + margin: 10px; + background-color: white; + border: 1px solid #dddddd; + border-radius: 6px; +} + +.card .table-view { + margin-bottom: 0; + border-top: 0; + border-bottom: 0; +} +.card .table-view .table-view-divider:first-child { + top: 0; + border-top-right-radius: 6px; + border-top-left-radius: 6px; +} +.card .table-view .table-view-divider:last-child { + border-bottom-right-radius: 6px; + border-bottom-left-radius: 6px; +} + +.card .table-view-cell:last-child { + border-bottom: 0; +} + +.table-view { + padding-left: 0; + margin-top: 0; + margin-bottom: 15px; + list-style: none; + background-color: #fff; + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; +} + +.table-view-cell { + position: relative; + overflow: hidden; + padding: 11px 65px 11px 15px; + border-bottom: 1px solid #dddddd; +} +.table-view-cell:last-child { + border-bottom: 0; +} +.table-view-cell > a:not(.btn) { + position: relative; + display: block; + overflow: hidden; + padding: inherit; + margin: -11px -65px -11px -15px; + color: inherit; +} +.table-view-cell > a:not(.btn):active { + background-color: #eee; +} +.table-view-cell p { + margin-bottom: 0; +} + +.table-view-divider { + padding-top: 6px; + padding-bottom: 6px; + padding-left: 15px; + margin-top: -1px; + margin-left: 0; + color: #999; + font-weight: 500; + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; + background-color: #fafafa; +} + +.table-view .media, +.table-view .media-body { + overflow: hidden; + zoom: 1; +} + +.table-view .media-object.pull-left { + margin-right: 10px; +} +.table-view .media-object.pull-right { + margin-left: 10px; +} + +.table-view-cell > .btn, +.table-view-cell > .badge, +.table-view-cell > .toggle, +.table-view-cell > a > .btn, +.table-view-cell > a > .badge, +.table-view-cell > a > .toggle { + position: absolute; + top: 50%; + right: 15px; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} +.table-view-cell .navigate-left > .btn, +.table-view-cell .navigate-left > .badge, +.table-view-cell .navigate-left > .toggle, +.table-view-cell .navigate-right > .btn, +.table-view-cell .navigate-right > .badge, +.table-view-cell .navigate-right > .toggle, +.table-view-cell .push-left > .btn, +.table-view-cell .push-left > .badge, +.table-view-cell .push-left > .toggle, +.table-view-cell .push-right > .btn, +.table-view-cell .push-right > .badge, +.table-view-cell .push-right > .toggle, +.table-view-cell > a .navigate-left > .btn, +.table-view-cell > a .navigate-left > .badge, +.table-view-cell > a .navigate-left > .toggle, +.table-view-cell > a .navigate-right > .btn, +.table-view-cell > a .navigate-right > .badge, +.table-view-cell > a .navigate-right > .toggle, +.table-view-cell > a .push-left > .btn, +.table-view-cell > a .push-left > .badge, +.table-view-cell > a .push-left > .toggle, +.table-view-cell > a .push-right > .btn, +.table-view-cell > a .push-right > .badge, +.table-view-cell > a .push-right > .toggle { + right: 35px; +} + +.content > .table-view:first-child { + margin-top: 15px; +} + +input, +textarea, +button, +select { + font-family: "Helvetica Neue", Helvetica, sans-serif; + font-size: 17px; +} + +select, +textarea, +input[type="text"], +input[type="search"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="tel"], +input[type="color"] { + width: 100%; + height: 35px; + padding: 0 15px; + margin-bottom: 15px; + line-height: 21px; + background-color: #fff; + border: 1px solid #dddddd; + border-radius: 3px; + outline: none; + -webkit-appearance: none; +} + +input[type="search"] { + padding: 0 10px; + font-size: 16px; + border-radius: 20px; + box-sizing: border-box; +} + +input[type="search"]:focus { + text-align: left; +} + +textarea { + height: auto; +} + +select { + height: auto; + font-size: 14px; + background-color: #f8f8f8; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); +} + +.input-group { + background-color: #fff; +} + +.input-group input, +.input-group textarea { + margin-bottom: 0; + background-color: transparent; + border-top: 0; + border-left: 0; + border-right: 0; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.input-row { + overflow: hidden; + border-bottom: 1px solid #dddddd; +} + +.input-row label { + float: left; + width: 35%; + padding: 10px 15px; + font-family: "Helvetica Neue", Helvetica, sans-serif; + line-height: 1.1; +} + +.input-row input { + float: right; + width: 65%; + padding-left: 0; + margin-bottom: 0; + border: 0; +} + +.segmented-control { + position: relative; + display: table; + overflow: hidden; + font-size: 12px; + font-weight: 400; + background-color: white; + border: 1px solid #ccc; + border-radius: 3px; +} +.segmented-control .control-item { + display: table-cell; + overflow: hidden; + width: 1%; + padding-top: 6px; + padding-bottom: 7px; + line-height: 1; + color: #333; + text-align: center; + white-space: nowrap; + text-overflow: ellipsis; + border-left: 1px solid #ccc; +} +.segmented-control .control-item:first-child { + border-left-width: 0; +} +.segmented-control .control-item:active { + background-color: #eee; +} +.segmented-control .control-item.active { + background-color: #ccc; +} + +.segmented-control-primary { + border-color: #428bca; +} +.segmented-control-primary .control-item { + color: #428bca; + border-color: inherit; +} +.segmented-control-primary .control-item:active { + background-color: #cde1f1; +} +.segmented-control-primary .control-item.active { + color: #fff; + background-color: #428bca; +} + +.segmented-control-positive { + border-color: #5cb85c; +} +.segmented-control-positive .control-item { + color: #5cb85c; + border-color: inherit; +} +.segmented-control-positive .control-item:active { + background-color: #d8eed8; +} +.segmented-control-positive .control-item.active { + color: #fff; + background-color: #5cb85c; +} + +.segmented-control-negative { + border-color: #d9534f; +} +.segmented-control-negative .control-item { + color: #d9534f; + border-color: inherit; +} +.segmented-control-negative .control-item:active { + background-color: #f9e2e2; +} +.segmented-control-negative .control-item.active { + color: #fff; + background-color: #d9534f; +} + +.control-content { + display: none; +} +.control-content.active { + display: block; +} + +.popover { + position: fixed; + top: 55px; + left: 50%; + z-index: 20; + display: none; + width: 280px; + margin-left: -140px; + background-color: white; + border-radius: 6px; + opacity: 0; + -webkit-box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); + -webkit-transform: translate3d(0, -15px, 0); + -ms-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + -webkit-transition: all 0.25s linear; + -moz-transition: all 0.25s linear; + transition: all 0.25s linear; +} +.popover:before { + position: absolute; + top: -15px; + left: 50%; + width: 0; + height: 0; + margin-left: -15px; + border-right: 15px solid transparent; + border-bottom: 15px solid white; + border-left: 15px solid transparent; + content: ''; +} +.popover.visible { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.popover .bar ~ .table-view { + padding-top: 44px; +} + +.backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + background-color: rgba(0, 0, 0, 0.3); +} + +.popover .btn-block { + margin-bottom: 5px; +} +.popover .btn-block:last-child { + margin-bottom: 0; +} + +.popover .bar-nav { + border-bottom: 1px solid #dddddd; + border-top-right-radius: 12px; + border-top-left-radius: 12px; + -webkit-box-shadow: none; + box-shadow: none; +} + +.popover .table-view { + max-height: 300px; + margin-bottom: 0; + overflow: auto; + background-color: #fff; + border-top: 0; + border-bottom: 0; + border-radius: 6px; + -webkit-overflow-scrolling: touch; +} + +.modal { + position: fixed; + top: 0; + opacity: 0; + z-index: 11; + width: 100%; + min-height: 100%; + overflow: hidden; + background-color: #fff; + -webkit-transition: -webkit-transform .25s, opacity 1ms .25s; + -moz-transition: -moz-transform .25s, opacity 1ms .25s; + transition: transform .25s, opacity 1ms .25s; + -webkit-transform: translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); +} +.modal.active { + opacity: 1; + height: 100%; + -webkit-transition: -webkit-transform .25s; + -moz-transition: -moz-transform .25s; + transition: transform .25s; + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slider { + width: 100%; +} + +.slider { + overflow: hidden; + background-color: #000; +} +.slider .slide-group { + position: relative; + font-size: 0; + white-space: nowrap; + -webkit-transition: all 0 linear; + -moz-transition: all 0 linear; + transition: all 0 linear; +} +.slider .slide-group .slide { + display: inline-block; + vertical-align: top; + width: 100%; + height: 100%; + font-size: 14px; +} + +.toggle { + display: block; + position: relative; + width: 74px; + height: 30px; + background-color: #fff; + border: 2px solid #ddd; + border-radius: 20px; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.toggle .toggle-handle { + position: absolute; + top: -1px; + left: -1px; + z-index: 2; + width: 28px; + height: 28px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 100px; + -webkit-transition-property: -webkit-transform, border, width; + -moz-transition-property: -moz-transform, border, width; + transition-property: transform, border, width; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.toggle:before { + position: absolute; + top: 3px; + right: 11px; + color: #999; + font-size: 13px; + text-transform: uppercase; + content: "Off"; +} +.toggle.active { + border: 2px solid #5cb85c; + background-color: #5cb85c; +} +.toggle.active .toggle-handle { + border-color: #5cb85c; + -webkit-transform: translate3d(44px, 0, 0); + -ms-transform: translate3d(44px, 0, 0); + transform: translate3d(44px, 0, 0); +} +.toggle.active:before { + right: auto; + left: 15px; + color: #fff; + content: "On"; +} +.toggle input[type="checkbox"] { + display: none; +} + +.content.fade { + left: 0; + opacity: 0; +} +.content.fade.in { + opacity: 1; +} +.content.sliding { + z-index: 2; + -webkit-transition: -webkit-transform .4s; + -moz-transition: -moz-transform .4s; + transition: transform .4s; + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.content.sliding.left { + z-index: 1; + -webkit-transform: translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); +} +.content.sliding.right { + z-index: 3; + -webkit-transform: translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} + +.navigate-left:after, +.navigate-right:after, +.push-left:after, +.push-right:after { + position: absolute; + top: 50%; + display: inline-block; + color: #bbb; + font-family: Ratchicons; + font-size: inherit; + text-decoration: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} + +.navigate-left:after, +.push-left:after { + left: 15px; + content: '\e822'; +} + +.navigate-right:after, +.push-right:after { + right: 15px; + content: '\e826'; +} + +@font-face { + font-family: Ratchicons; + src: url("../fonts/ratchicons.eot"); + src: url("../fonts/ratchicons.eot?#iefix") format("embedded-opentype"), url("../fonts/ratchicons.woff") format("woff"), url("../fonts/ratchicons.ttf") format("truetype"), url("../fonts/ratchicons.svg#svgFontName") format("svg"); + font-weight: normal; + font-style: normal; +} + +.icon { + display: inline-block; + font-family: Ratchicons; + font-size: 24px; + text-decoration: none; + line-height: 1; + -webkit-font-smoothing: antialiased; +} + +.icon-and-up:before { + content: '\e809'; +} + +.icon-back:before { + content: '\e80a'; +} + +.icon-bars:before { + content: '\e80e'; +} + +.icon-caret:before { + content: '\e80f'; +} + +.icon-check:before { + content: '\e810'; +} + +.icon-close:before { + content: '\e811'; +} + +.icon-code:before { + content: '\e812'; +} + +.icon-compose:before { + content: '\e813'; +} + +.icon-down-nav:before { + content: '\e814'; +} + +.icon-down:before { + content: '\e820'; +} + +.icon-download:before { + content: '\e815'; +} + +.icon-edit:before { + content: '\e829'; +} + +.icon-forward:before { + content: '\e82a'; +} + +.icon-gear:before { + content: '\e821'; +} + +.icon-home:before { + content: '\e82b'; +} + +.icon-info:before { + content: '\e82c'; +} + +.icon-left-nav:before { + content: '\e82d'; +} + +.icon-left:before { + content: '\e822'; +} + +.icon-list:before { + content: '\e823'; +} + +.icon-more-vertical:before { + content: '\e82e'; +} + +.icon-more:before { + content: '\e82f'; +} + +.icon-pages:before { + content: '\e824'; +} + +.icon-pause:before { + content: '\e830'; +} + +.icon-person:before { + content: '\e832'; +} + +.icon-play:before { + content: '\e816'; +} + +.icon-plus:before { + content: '\e817'; +} + +.icon-refresh:before { + content: '\e825'; +} + +.icon-right-nav:before { + content: '\e818'; +} + +.icon-right:before { + content: '\e826'; +} + +.icon-search:before { + content: '\e819'; +} + +.icon-share:before { + content: '\e81a'; +} + +.icon-sound2:before { + content: '\e828'; +} + +.icon-sound3:before { + content: '\e80b'; +} + +.icon-sound4:before { + content: '\e80c'; +} + +.icon-sound:before { + content: '\e827'; +} + +.icon-star-filled:before { + content: '\e81b'; +} + +.icon-star:before { + content: '\e81c'; +} + +.icon-stop:before { + content: '\e81d'; +} + +.icon-trash:before { + content: '\e81e'; +} + +.icon-up-nav:before { + content: '\e81f'; +} + +.icon-up:before { + content: '\e80d'; +} diff --git a/dist/css/ratchet.min.css b/dist/css/ratchet.min.css new file mode 100644 index 0000000..e54a1db --- /dev/null +++ b/dist/css/ratchet.min.css @@ -0,0 +1,9 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + *//*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{position:fixed;top:0;right:0;bottom:0;left:0;font-family:"Helvetica Neue",Helvetica,sans-serif;font-size:17px;line-height:21px;color:#000;background-color:#fff}a{color:#428bca;text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active{color:#3071a9}.content{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;background-color:#fff;-webkit-overflow-scrolling:touch}.content>*{-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}.bar-nav~.content{padding-top:44px}.bar-header-secondary~.content{padding-top:88px}.bar-footer~.content{padding-bottom:44px}.bar-footer-secondary~.content{padding-bottom:88px}.bar-tab~.content{padding-bottom:50px}.bar-footer-secondary-tab~.content{padding-bottom:94px}.content-padded{margin:10px}.pull-left{float:left}.pull-right{float:right}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:10px;line-height:1}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px;margin-top:20px}h6,.h6{font-size:12px;margin-top:20px}p{margin-top:0;margin-bottom:10px;font-size:14px;color:#777}.btn{position:relative;display:inline-block;padding:6px 8px 7px;margin-bottom:0;font-size:12px;font-weight:400;line-height:1;color:#333;text-align:center;vertical-align:top;white-space:nowrap;cursor:pointer;background-color:#fff;border:1px solid #ccc;border-radius:3px}.btn:active,.btn.active{color:inherit;background-color:#ccc}.btn:disabled,.btn.disabled{opacity:.6}.btn-primary{color:#fff;border:1px solid #428bca;background-color:#428bca}.btn-primary:active,.btn-primary.active{color:#fff;border:1px solid #3071a9;background-color:#3071a9}.btn-positive{color:#fff;border:1px solid #5cb85c;background-color:#5cb85c}.btn-positive:active,.btn-positive.active{color:#fff;border:1px solid #449d44;background-color:#449d44}.btn-negative{color:#fff;border:1px solid #d9534f;background-color:#d9534f}.btn-negative:active,.btn-negative.active{color:#fff;border:1px solid #c9302c;background-color:#c9302c}.btn-outlined{background-color:transparent}.btn-outlined.btn-primary{color:#428bca}.btn-outlined.btn-positive{color:#5cb85c}.btn-outlined.btn-negative{color:#d9534f}.btn-outlined.btn-primary:active,.btn-outlined.btn-positive:active,.btn-outlined.btn-negative:active{color:#fff}.btn-link{padding-top:6px;padding-bottom:6px;color:#428bca;background-color:transparent;border:0}.btn-link:active,.btn-link.active{color:#3071a9;background-color:transparent}.btn-block{display:block;width:100%;padding:15px 0;margin-bottom:10px;font-size:18px}input[type=submit],input[type=reset],input[type=button]{width:100%}.btn .badge{font-size:12px;margin:-2px -4px -2px 4px;background-color:rgba(0,0,0,.15)}.btn .badge-inverted,.btn:active .badge-inverted{background-color:transparent}.btn-primary:active .badge-inverted,.btn-positive:active .badge-inverted,.btn-negative:active .badge-inverted{color:#fff}.btn-block .badge{position:absolute;right:0;margin-right:10px}.btn .icon{font-size:inherit}.bar{position:fixed;right:0;left:0;z-index:10;height:44px;padding-right:10px;padding-left:10px;border-bottom:1px solid #ddd;background-color:#fff}.bar-header-secondary{top:44px}.bar-footer{bottom:0}.bar-footer-secondary{bottom:44px}.bar-footer-secondary-tab{bottom:50px}.bar-footer,.bar-footer-secondary,.bar-footer-secondary-tab{border-bottom:0;border-top:1px solid #ddd}.bar-nav{top:0}.title{position:absolute;display:block;width:100%;padding:0;margin:0 -10px;font-size:17px;font-weight:500;line-height:44px;color:#000;text-align:center;white-space:nowrap}.title a{color:inherit}.bar-tab{display:table;bottom:0;width:100%;height:50px;padding:0;border-top:1px solid #ddd;border-bottom:0;table-layout:fixed}.bar-tab .tab-item{display:table-cell;width:1%;height:50px;vertical-align:middle;color:#929292;text-align:center}.bar-tab .tab-item.active,.bar-tab .tab-item:active{color:#428bca}.bar-tab .tab-item .icon{top:3px;width:24px;height:24px;padding-top:0;padding-bottom:0}.bar-tab .tab-item .icon~.tab-label{display:block;font-size:11px}.bar .btn{position:relative;top:7px;z-index:20;padding:6px 12px 7px;margin-top:0;font-weight:400}.bar .btn.pull-right{margin-left:10px}.bar .btn.pull-left{margin-right:10px}.bar .btn-link{top:0;padding:0;font-size:16px;color:#428bca;line-height:44px;border:0}.bar .btn-link:active,.bar .btn-link.active{color:#3071a9}.bar .btn-block{top:6px;padding:7px 0;margin-bottom:0;font-size:16px}.bar .btn-nav.pull-left{margin-left:-5px}.bar .btn-nav.pull-left .icon-left-nav{margin-right:-3px}.bar .btn-nav.pull-right{margin-right:-5px}.bar .btn-nav.pull-right .icon-right-nav{margin-left:-3px}.bar .icon{position:relative;z-index:20;padding-top:10px;padding-bottom:10px;font-size:24px}.bar .btn .icon{top:3px;padding:0}.bar .title .icon{padding:0}.bar .title .icon.icon-caret{top:4px;margin-left:-5px}.bar input[type=search]{height:29px;margin:6px 0}.bar .segmented-control{top:7px;margin:0 auto}.badge{display:inline-block;padding:2px 9px 3px;font-size:12px;line-height:1;color:#333;background-color:rgba(0,0,0,.15);border-radius:100px}.badge.badge-inverted{padding:0 5px 0 0;background-color:transparent}.badge-primary{color:#fff;background-color:#428bca}.badge-primary.badge-inverted{color:#428bca}.badge-positive{color:#fff;background-color:#5cb85c}.badge-positive.badge-inverted{color:#5cb85c}.badge-negative{color:#fff;background-color:#d9534f}.badge-negative.badge-inverted{color:#d9534f}.card{overflow:hidden;margin:10px;background-color:#fff;border:1px solid #ddd;border-radius:6px}.card .table-view{margin-bottom:0;border-top:0;border-bottom:0}.card .table-view .table-view-divider:first-child{top:0;border-top-right-radius:6px;border-top-left-radius:6px}.card .table-view .table-view-divider:last-child{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.card .table-view-cell:last-child{border-bottom:0}.table-view{padding-left:0;margin-top:0;margin-bottom:15px;list-style:none;background-color:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.table-view-cell{position:relative;overflow:hidden;padding:11px 65px 11px 15px;border-bottom:1px solid #ddd}.table-view-cell:last-child{border-bottom:0}.table-view-cell>a:not(.btn){position:relative;display:block;overflow:hidden;padding:inherit;margin:-11px -65px -11px -15px;color:inherit}.table-view-cell>a:not(.btn):active{background-color:#eee}.table-view-cell p{margin-bottom:0}.table-view-divider{padding-top:6px;padding-bottom:6px;padding-left:15px;margin-top:-1px;margin-left:0;color:#999;font-weight:500;border-top:1px solid #ddd;border-bottom:1px solid #ddd;background-color:#fafafa}.table-view .media,.table-view .media-body{overflow:hidden;zoom:1}.table-view .media-object.pull-left{margin-right:10px}.table-view .media-object.pull-right{margin-left:10px}.table-view-cell>.btn,.table-view-cell>.badge,.table-view-cell>.toggle,.table-view-cell>a>.btn,.table-view-cell>a>.badge,.table-view-cell>a>.toggle{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.table-view-cell .navigate-left>.btn,.table-view-cell .navigate-left>.badge,.table-view-cell .navigate-left>.toggle,.table-view-cell .navigate-right>.btn,.table-view-cell .navigate-right>.badge,.table-view-cell .navigate-right>.toggle,.table-view-cell .push-left>.btn,.table-view-cell .push-left>.badge,.table-view-cell .push-left>.toggle,.table-view-cell .push-right>.btn,.table-view-cell .push-right>.badge,.table-view-cell .push-right>.toggle,.table-view-cell>a .navigate-left>.btn,.table-view-cell>a .navigate-left>.badge,.table-view-cell>a .navigate-left>.toggle,.table-view-cell>a .navigate-right>.btn,.table-view-cell>a .navigate-right>.badge,.table-view-cell>a .navigate-right>.toggle,.table-view-cell>a .push-left>.btn,.table-view-cell>a .push-left>.badge,.table-view-cell>a .push-left>.toggle,.table-view-cell>a .push-right>.btn,.table-view-cell>a .push-right>.badge,.table-view-cell>a .push-right>.toggle{right:35px}.content>.table-view:first-child{margin-top:15px}input,textarea,button,select{font-family:"Helvetica Neue",Helvetica,sans-serif;font-size:17px}select,textarea,input[type=text],input[type=search],input[type=password],input[type=datetime],input[type=datetime-local],input[type=date],input[type=month],input[type=time],input[type=week],input[type=number],input[type=email],input[type=url],input[type=tel],input[type=color]{width:100%;height:35px;padding:0 15px;margin-bottom:15px;line-height:21px;background-color:#fff;border:1px solid #ddd;border-radius:3px;outline:0;-webkit-appearance:none}input[type=search]{padding:0 10px;font-size:16px;border-radius:20px;box-sizing:border-box}input[type=search]:focus{text-align:left}textarea{height:auto}select{height:auto;font-size:14px;background-color:#f8f8f8;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.input-group{background-color:#fff}.input-group input,.input-group textarea{margin-bottom:0;background-color:transparent;border-top:0;border-left:0;border-right:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.input-row{overflow:hidden;border-bottom:1px solid #ddd}.input-row label{float:left;width:35%;padding:10px 15px;font-family:"Helvetica Neue",Helvetica,sans-serif;line-height:1.1}.input-row input{float:right;width:65%;padding-left:0;margin-bottom:0;border:0}.segmented-control{position:relative;display:table;overflow:hidden;font-size:12px;font-weight:400;background-color:#fff;border:1px solid #ccc;border-radius:3px}.segmented-control .control-item{display:table-cell;overflow:hidden;width:1%;padding-top:6px;padding-bottom:7px;line-height:1;color:#333;text-align:center;white-space:nowrap;text-overflow:ellipsis;border-left:1px solid #ccc}.segmented-control .control-item:first-child{border-left-width:0}.segmented-control .control-item:active{background-color:#eee}.segmented-control .control-item.active{background-color:#ccc}.segmented-control-primary{border-color:#428bca}.segmented-control-primary .control-item{color:#428bca;border-color:inherit}.segmented-control-primary .control-item:active{background-color:#cde1f1}.segmented-control-primary .control-item.active{color:#fff;background-color:#428bca}.segmented-control-positive{border-color:#5cb85c}.segmented-control-positive .control-item{color:#5cb85c;border-color:inherit}.segmented-control-positive .control-item:active{background-color:#d8eed8}.segmented-control-positive .control-item.active{color:#fff;background-color:#5cb85c}.segmented-control-negative{border-color:#d9534f}.segmented-control-negative .control-item{color:#d9534f;border-color:inherit}.segmented-control-negative .control-item:active{background-color:#f9e2e2}.segmented-control-negative .control-item.active{color:#fff;background-color:#d9534f}.control-content{display:none}.control-content.active{display:block}.popover{position:fixed;top:55px;left:50%;z-index:20;display:none;width:280px;margin-left:-140px;background-color:#fff;border-radius:6px;opacity:0;-webkit-box-shadow:0 0 15px rgba(0,0,0,.1);box-shadow:0 0 15px rgba(0,0,0,.1);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0);-webkit-transition:all .25s linear;-moz-transition:all .25s linear;transition:all .25s linear}.popover:before{position:absolute;top:-15px;left:50%;width:0;height:0;margin-left:-15px;border-right:15px solid transparent;border-bottom:15px solid #fff;border-left:15px solid transparent;content:''}.popover.visible{opacity:1;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.popover .bar~.table-view{padding-top:44px}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:15;background-color:rgba(0,0,0,.3)}.popover .btn-block{margin-bottom:5px}.popover .btn-block:last-child{margin-bottom:0}.popover .bar-nav{border-bottom:1px solid #ddd;border-top-right-radius:12px;border-top-left-radius:12px;-webkit-box-shadow:none;box-shadow:none}.popover .table-view{max-height:300px;margin-bottom:0;overflow:auto;background-color:#fff;border-top:0;border-bottom:0;border-radius:6px;-webkit-overflow-scrolling:touch}.modal{position:fixed;top:0;opacity:0;z-index:11;width:100%;min-height:100%;overflow:hidden;background-color:#fff;-webkit-transition:-webkit-transform .25s,opacity 1ms .25s;-moz-transition:-moz-transform .25s,opacity 1ms .25s;transition:transform .25s,opacity 1ms .25s;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.modal.active{opacity:1;height:100%;-webkit-transition:-webkit-transform .25s;-moz-transition:-moz-transform .25s;transition:transform .25s;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slider{width:100%}.slider{overflow:hidden;background-color:#000}.slider .slide-group{position:relative;font-size:0;white-space:nowrap;-webkit-transition:all 0 linear;-moz-transition:all 0 linear;transition:all 0 linear}.slider .slide-group .slide{display:inline-block;vertical-align:top;width:100%;height:100%;font-size:14px}.toggle{display:block;position:relative;width:74px;height:30px;background-color:#fff;border:2px solid #ddd;border-radius:20px;-webkit-transition-property:background-color,border;-moz-transition-property:background-color,border;transition-property:background-color,border;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;transition-duration:.2s}.toggle .toggle-handle{position:absolute;top:-1px;left:-1px;z-index:2;width:28px;height:28px;background-color:#fff;border:1px solid #ddd;border-radius:100px;-webkit-transition-property:-webkit-transform,border,width;-moz-transition-property:-moz-transform,border,width;transition-property:transform,border,width;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;transition-duration:.2s}.toggle:before{position:absolute;top:3px;right:11px;color:#999;font-size:13px;text-transform:uppercase;content:"Off"}.toggle.active{border:2px solid #5cb85c;background-color:#5cb85c}.toggle.active .toggle-handle{border-color:#5cb85c;-webkit-transform:translate3d(44px,0,0);-ms-transform:translate3d(44px,0,0);transform:translate3d(44px,0,0)}.toggle.active:before{right:auto;left:15px;color:#fff;content:"On"}.toggle input[type=checkbox]{display:none}.content.fade{left:0;opacity:0}.content.fade.in{opacity:1}.content.sliding{z-index:2;-webkit-transition:-webkit-transform .4s;-moz-transition:-moz-transform .4s;transition:transform .4s;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.content.sliding.left{z-index:1;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.content.sliding.right{z-index:3;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.navigate-left:after,.navigate-right:after,.push-left:after,.push-right:after{position:absolute;top:50%;display:inline-block;color:#bbb;font-family:Ratchicons;font-size:inherit;text-decoration:none;line-height:1;-webkit-font-smoothing:antialiased;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.navigate-left:after,.push-left:after{left:15px;content:'\e822'}.navigate-right:after,.push-right:after{right:15px;content:'\e826'}@font-face{font-family:Ratchicons;src:url(../fonts/ratchicons.eot);src:url(../fonts/ratchicons.eot?#iefix) format("embedded-opentype"),url(../fonts/ratchicons.woff) format("woff"),url(../fonts/ratchicons.ttf) format("truetype"),url(../fonts/ratchicons.svg#svgFontName) format("svg");font-weight:400;font-style:normal}.icon{display:inline-block;font-family:Ratchicons;font-size:24px;text-decoration:none;line-height:1;-webkit-font-smoothing:antialiased}.icon-and-up:before{content:'\e809'}.icon-back:before{content:'\e80a'}.icon-bars:before{content:'\e80e'}.icon-caret:before{content:'\e80f'}.icon-check:before{content:'\e810'}.icon-close:before{content:'\e811'}.icon-code:before{content:'\e812'}.icon-compose:before{content:'\e813'}.icon-down-nav:before{content:'\e814'}.icon-down:before{content:'\e820'}.icon-download:before{content:'\e815'}.icon-edit:before{content:'\e829'}.icon-forward:before{content:'\e82a'}.icon-gear:before{content:'\e821'}.icon-home:before{content:'\e82b'}.icon-info:before{content:'\e82c'}.icon-left-nav:before{content:'\e82d'}.icon-left:before{content:'\e822'}.icon-list:before{content:'\e823'}.icon-more-vertical:before{content:'\e82e'}.icon-more:before{content:'\e82f'}.icon-pages:before{content:'\e824'}.icon-pause:before{content:'\e830'}.icon-person:before{content:'\e832'}.icon-play:before{content:'\e816'}.icon-plus:before{content:'\e817'}.icon-refresh:before{content:'\e825'}.icon-right-nav:before{content:'\e818'}.icon-right:before{content:'\e826'}.icon-search:before{content:'\e819'}.icon-share:before{content:'\e81a'}.icon-sound2:before{content:'\e828'}.icon-sound3:before{content:'\e80b'}.icon-sound4:before{content:'\e80c'}.icon-sound:before{content:'\e827'}.icon-star-filled:before{content:'\e81b'}.icon-star:before{content:'\e81c'}.icon-stop:before{content:'\e81d'}.icon-trash:before{content:'\e81e'}.icon-up-nav:before{content:'\e81f'}.icon-up:before{content:'\e80d'} \ No newline at end of file diff --git a/dist/fonts/ratchicons.eot b/dist/fonts/ratchicons.eot new file mode 100644 index 0000000..536e572 Binary files /dev/null and b/dist/fonts/ratchicons.eot differ diff --git a/dist/fonts/ratchicons.svg b/dist/fonts/ratchicons.svg new file mode 100644 index 0000000..3abf5dd --- /dev/null +++ b/dist/fonts/ratchicons.svg @@ -0,0 +1,61 @@ + + + +Copyright (C) 2014 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dist/fonts/ratchicons.ttf b/dist/fonts/ratchicons.ttf new file mode 100644 index 0000000..927eb58 Binary files /dev/null and b/dist/fonts/ratchicons.ttf differ diff --git a/dist/fonts/ratchicons.woff b/dist/fonts/ratchicons.woff new file mode 100644 index 0000000..25f1e75 Binary files /dev/null and b/dist/fonts/ratchicons.woff differ diff --git a/dist/js/ratchet.js b/dist/js/ratchet.js new file mode 100644 index 0000000..20c444b --- /dev/null +++ b/dist/js/ratchet.js @@ -0,0 +1,916 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */ +/* ---------------------------------- + * MODAL v2.0.1 + * Licensed under The MIT License + * http://opensource.org/licenses/MIT + * ---------------------------------- */ + +!(function () { + 'use strict'; + + var findModals = function (target) { + var i, modals = document.querySelectorAll('a'); + for (; target && target !== document; target = target.parentNode) { + for (i = modals.length; i--;) { + if (modals[i] === target) { + return target; + } + } + } + }; + + var getModal = function (event) { + var modalToggle = findModals(event.target); + if (modalToggle && modalToggle.hash) { + return document.querySelector(modalToggle.hash); + } + }; + + window.addEventListener('touchend', function (event) { + var modal = getModal(event); + if (modal) { + if (modal && modal.classList.contains('modal')) { + modal.classList.toggle('active'); + } + event.preventDefault(); // prevents rewriting url (apps can still use hash values in url) + } + }); +}()); + +/* ---------------------------------- + * POPOVER v2.0.1 + * Licensed under The MIT License + * http://opensource.org/licenses/MIT + * ---------------------------------- */ + +!(function () { + 'use strict'; + + var popover; + + var findPopovers = function (target) { + var i, popovers = document.querySelectorAll('a'); + for (; target && target !== document; target = target.parentNode) { + for (i = popovers.length; i--;) { + if (popovers[i] === target) { + return target; + } + } + } + }; + + var onPopoverHidden = function () { + popover.style.display = 'none'; + popover.removeEventListener('webkitTransitionEnd', onPopoverHidden); + }; + + var backdrop = (function () { + var element = document.createElement('div'); + + element.classList.add('backdrop'); + + element.addEventListener('touchend', function () { + popover.addEventListener('webkitTransitionEnd', onPopoverHidden); + popover.classList.remove('visible'); + popover.parentNode.removeChild(backdrop); + }); + + return element; + }()); + + var getPopover = function (e) { + var anchor = findPopovers(e.target); + + if (!anchor || !anchor.hash || (anchor.hash.indexOf('/') > 0)) { + return; + } + + try { + popover = document.querySelector(anchor.hash); + } + catch (error) { + popover = null; + } + + if (popover == null) { + return; + } + + if (!popover || !popover.classList.contains('popover')) { + return; + } + + return popover; + }; + + var showHidePopover = function (e) { + var popover = getPopover(e); + + if (!popover) { + return; + } + + popover.style.display = 'block'; + popover.offsetHeight; + popover.classList.add('visible'); + + popover.parentNode.appendChild(backdrop); + }; + + window.addEventListener('touchend', showHidePopover); + window.addEventListener('click', showHidePopover); + +}()); + +/* ---------------------------------- + * PUSH v2.0.1 + * Licensed under The MIT License + * inspired by chris's jquery.pjax.js + * http://opensource.org/licenses/MIT + * ---------------------------------- */ + +/* global _gaq: true */ + +!(function () { + 'use strict'; + + var noop = function () {}; + + + // Pushstate cacheing + // ================== + + var isScrolling; + var maxCacheLength = 20; + var cacheMapping = sessionStorage; + var domCache = {}; + var transitionMap = { + 'slide-in' : 'slide-out', + 'slide-out' : 'slide-in', + 'fade' : 'fade' + }; + + var bars = { + bartab : '.bar-tab', + barnav : '.bar-nav', + barfooter : '.bar-footer', + barheadersecondary : '.bar-header-secondary' + }; + + var cacheReplace = function (data, updates) { + PUSH.id = data.id; + if (updates) { + data = getCached(data.id); + } + cacheMapping[data.id] = JSON.stringify(data); + window.history.replaceState(data.id, data.title, data.url); + domCache[data.id] = document.body.cloneNode(true); + }; + + var cachePush = function () { + var id = PUSH.id; + + var cacheForwardStack = JSON.parse(cacheMapping.cacheForwardStack || '[]'); + var cacheBackStack = JSON.parse(cacheMapping.cacheBackStack || '[]'); + + cacheBackStack.push(id); + + while (cacheForwardStack.length) { + delete cacheMapping[cacheForwardStack.shift()]; + } + while (cacheBackStack.length > maxCacheLength) { + delete cacheMapping[cacheBackStack.shift()]; + } + + window.history.pushState(null, '', cacheMapping[PUSH.id].url); + + cacheMapping.cacheForwardStack = JSON.stringify(cacheForwardStack); + cacheMapping.cacheBackStack = JSON.stringify(cacheBackStack); + }; + + var cachePop = function (id, direction) { + var forward = direction === 'forward'; + var cacheForwardStack = JSON.parse(cacheMapping.cacheForwardStack || '[]'); + var cacheBackStack = JSON.parse(cacheMapping.cacheBackStack || '[]'); + var pushStack = forward ? cacheBackStack : cacheForwardStack; + var popStack = forward ? cacheForwardStack : cacheBackStack; + + if (PUSH.id) { + pushStack.push(PUSH.id); + } + popStack.pop(); + + cacheMapping.cacheForwardStack = JSON.stringify(cacheForwardStack); + cacheMapping.cacheBackStack = JSON.stringify(cacheBackStack); + }; + + var getCached = function (id) { + return JSON.parse(cacheMapping[id] || null) || {}; + }; + + var getTarget = function (e) { + var target = findTarget(e.target); + + if (!target || + e.which > 1 || + e.metaKey || + e.ctrlKey || + isScrolling || + location.protocol !== target.protocol || + location.host !== target.host || + !target.hash && /#/.test(target.href) || + target.hash && target.href.replace(target.hash, '') === location.href.replace(location.hash, '') || + target.getAttribute('data-ignore') === 'push') { return; } + + return target; + }; + + + // Main event handlers (touchend, popstate) + // ========================================== + + var touchend = function (e) { + var target = getTarget(e); + + if (!target) { + return; + } + + e.preventDefault(); + + PUSH({ + url : target.href, + hash : target.hash, + timeout : target.getAttribute('data-timeout'), + transition : target.getAttribute('data-transition') + }); + }; + + var popstate = function (e) { + var key; + var barElement; + var activeObj; + var activeDom; + var direction; + var transition; + var transitionFrom; + var transitionFromObj; + var id = e.state; + + if (!id || !cacheMapping[id]) { + return; + } + + direction = PUSH.id < id ? 'forward' : 'back'; + + cachePop(id, direction); + + activeObj = getCached(id); + activeDom = domCache[id]; + + if (activeObj.title) { + document.title = activeObj.title; + } + + if (direction === 'back') { + transitionFrom = JSON.parse(direction === 'back' ? cacheMapping.cacheForwardStack : cacheMapping.cacheBackStack); + transitionFromObj = getCached(transitionFrom[transitionFrom.length - 1]); + } else { + transitionFromObj = activeObj; + } + + if (direction === 'back' && !transitionFromObj.id) { + return (PUSH.id = id); + } + + transition = direction === 'back' ? transitionMap[transitionFromObj.transition] : transitionFromObj.transition; + + if (!activeDom) { + return PUSH({ + id : activeObj.id, + url : activeObj.url, + title : activeObj.title, + timeout : activeObj.timeout, + transition : transition, + ignorePush : true + }); + } + + if (transitionFromObj.transition) { + activeObj = extendWithDom(activeObj, '.content', activeDom.cloneNode(true)); + for (key in bars) { + if (bars.hasOwnProperty(key)) { + barElement = document.querySelector(bars[key]); + if (activeObj[key]) { + swapContent(activeObj[key], barElement); + } else if (barElement) { + barElement.parentNode.removeChild(barElement); + } + } + } + } + + swapContent( + (activeObj.contents || activeDom).cloneNode(true), + document.querySelector('.content'), + transition + ); + + PUSH.id = id; + + document.body.offsetHeight; // force reflow to prevent scroll + }; + + + // Core PUSH functionality + // ======================= + + var PUSH = function (options) { + var key; + var xhr = PUSH.xhr; + + options.container = options.container || options.transition ? document.querySelector('.content') : document.body; + + for (key in bars) { + if (bars.hasOwnProperty(key)) { + options[key] = options[key] || document.querySelector(bars[key]); + } + } + + if (xhr && xhr.readyState < 4) { + xhr.onreadystatechange = noop; + xhr.abort(); + } + + xhr = new XMLHttpRequest(); + xhr.open('GET', options.url, true); + xhr.setRequestHeader('X-PUSH', 'true'); + + xhr.onreadystatechange = function () { + if (options._timeout) { + clearTimeout(options._timeout); + } + if (xhr.readyState === 4) { + xhr.status === 200 ? success(xhr, options) : failure(options.url); + } + }; + + if (!PUSH.id) { + cacheReplace({ + id : +new Date(), + url : window.location.href, + title : document.title, + timeout : options.timeout, + transition : null + }); + } + + if (options.timeout) { + options._timeout = setTimeout(function () { xhr.abort('timeout'); }, options.timeout); + } + + xhr.send(); + + if (xhr.readyState && !options.ignorePush) { + cachePush(); + } + }; + + + // Main XHR handlers + // ================= + + var success = function (xhr, options) { + var key; + var barElement; + var data = parseXHR(xhr, options); + + if (!data.contents) { + return locationReplace(options.url); + } + + if (data.title) { + document.title = data.title; + } + + if (options.transition) { + for (key in bars) { + if (bars.hasOwnProperty(key)) { + barElement = document.querySelector(bars[key]); + if (data[key]) { + swapContent(data[key], barElement); + } else if (barElement) { + barElement.parentNode.removeChild(barElement); + } + } + } + } + + swapContent(data.contents, options.container, options.transition, function () { + cacheReplace({ + id : options.id || +new Date(), + url : data.url, + title : data.title, + timeout : options.timeout, + transition : options.transition + }, options.id); + triggerStateChange(); + }); + + if (!options.ignorePush && window._gaq) { + _gaq.push(['_trackPageview']); // google analytics + } + if (!options.hash) { + return; + } + }; + + var failure = function (url) { + throw new Error('Could not get: ' + url); + }; + + + // PUSH helpers + // ============ + + var swapContent = function (swap, container, transition, complete) { + var enter; + var containerDirection; + var swapDirection; + + if (!transition) { + if (container) { + container.innerHTML = swap.innerHTML; + } else if (swap.classList.contains('content')) { + document.body.appendChild(swap); + } else { + document.body.insertBefore(swap, document.querySelector('.content')); + } + } else { + enter = /in$/.test(transition); + + if (transition === 'fade') { + container.classList.add('in'); + container.classList.add('fade'); + swap.classList.add('fade'); + } + + if (/slide/.test(transition)) { + swap.classList.add('sliding-in', enter ? 'right' : 'left'); + swap.classList.add('sliding'); + container.classList.add('sliding'); + } + + container.parentNode.insertBefore(swap, container); + } + + if (!transition) { + complete && complete(); + } + + if (transition === 'fade') { + container.offsetWidth; // force reflow + container.classList.remove('in'); + var fadeContainerEnd = function () { + container.removeEventListener('webkitTransitionEnd', fadeContainerEnd); + swap.classList.add('in'); + swap.addEventListener('webkitTransitionEnd', fadeSwapEnd); + }; + var fadeSwapEnd = function () { + swap.removeEventListener('webkitTransitionEnd', fadeSwapEnd); + container.parentNode.removeChild(container); + swap.classList.remove('fade'); + swap.classList.remove('in'); + complete && complete(); + }; + container.addEventListener('webkitTransitionEnd', fadeContainerEnd); + + } + + if (/slide/.test(transition)) { + var slideEnd = function () { + swap.removeEventListener('webkitTransitionEnd', slideEnd); + swap.classList.remove('sliding', 'sliding-in'); + swap.classList.remove(swapDirection); + container.parentNode.removeChild(container); + complete && complete(); + }; + + container.offsetWidth; // force reflow + swapDirection = enter ? 'right' : 'left'; + containerDirection = enter ? 'left' : 'right'; + container.classList.add(containerDirection); + swap.classList.remove(swapDirection); + swap.addEventListener('webkitTransitionEnd', slideEnd); + } + }; + + var triggerStateChange = function () { + var e = new CustomEvent('push', { + detail: { state: getCached(PUSH.id) }, + bubbles: true, + cancelable: true + }); + + window.dispatchEvent(e); + }; + + var findTarget = function (target) { + var i, toggles = document.querySelectorAll('a'); + for (; target && target !== document; target = target.parentNode) { + for (i = toggles.length; i--;) { + if (toggles[i] === target) { + return target; + } + } + } + }; + + var locationReplace = function (url) { + window.history.replaceState(null, '', '#'); + window.location.replace(url); + }; + + var extendWithDom = function (obj, fragment, dom) { + var i; + var result = {}; + + for (i in obj) { + if (obj.hasOwnProperty(i)) { + result[i] = obj[i]; + } + } + + Object.keys(bars).forEach(function (key) { + var el = dom.querySelector(bars[key]); + if (el) { + el.parentNode.removeChild(el); + } + result[key] = el; + }); + + result.contents = dom.querySelector(fragment); + + return result; + }; + + var parseXHR = function (xhr, options) { + var head; + var body; + var data = {}; + var responseText = xhr.responseText; + + data.url = options.url; + + if (!responseText) { + return data; + } + + if (/]*>([\s\S.]*)<\/head>/i)[0]; + body.innerHTML = responseText.match(/]*>([\s\S.]*)<\/body>/i)[0]; + } else { + head = body = document.createElement('div'); + head.innerHTML = responseText; + } + + data.title = head.querySelector('title'); + data.title = data.title && data.title.innerText.trim(); + + if (options.transition) { + data = extendWithDom(data, '.content', body); + } else { + data.contents = body; + } + + return data; + }; + + + // Attach PUSH event handlers + // ========================== + + window.addEventListener('touchstart', function () { isScrolling = false; }); + window.addEventListener('touchmove', function () { isScrolling = true; }); + window.addEventListener('touchend', touchend); + window.addEventListener('click', function (e) { if (getTarget(e)) {e.preventDefault();} }); + window.addEventListener('popstate', popstate); + window.PUSH = PUSH; + +}()); + +/* ---------------------------------- + * Segmented controls v2.0.1 + * Licensed under The MIT License + * http://opensource.org/licenses/MIT + * ---------------------------------- */ + +!(function () { + 'use strict'; + + var getTarget = function (target) { + var i, segmentedControls = document.querySelectorAll('.segmented-control .control-item'); + for (; target && target !== document; target = target.parentNode) { + for (i = segmentedControls.length; i--;) { + if (segmentedControls[i] === target) { + return target; + } + } + } + }; + + window.addEventListener('touchend', function (e) { + var activeTab; + var activeBodies; + var targetBody; + var targetTab = getTarget(e.target); + var className = 'active'; + var classSelector = '.' + className; + + if (!targetTab) { + return; + } + + activeTab = targetTab.parentNode.querySelector(classSelector); + + if (activeTab) { + activeTab.classList.remove(className); + } + + targetTab.classList.add(className); + + if (!targetTab.hash) { + return; + } + + targetBody = document.querySelector(targetTab.hash); + + if (!targetBody) { + return; + } + + activeBodies = targetBody.parentNode.querySelectorAll(classSelector); + + for (var i = 0; i < activeBodies.length; i++) { + activeBodies[i].classList.remove(className); + } + + targetBody.classList.add(className); + }); + + window.addEventListener('click', function (e) { if (getTarget(e.target)) {e.preventDefault();} }); +}()); +/* ---------------------------------- + * SLIDER v2.0.1 + * Licensed under The MIT License + * Adapted from Brad Birdsall's swipe + * http://opensource.org/licenses/MIT + * ---------------------------------- */ + +!(function () { + 'use strict'; + + var pageX; + var pageY; + var slider; + var deltaX; + var deltaY; + var offsetX; + var lastSlide; + var startTime; + var resistance; + var sliderWidth; + var slideNumber; + var isScrolling; + var scrollableArea; + + var getSlider = function (target) { + var i, sliders = document.querySelectorAll('.slider > .slide-group'); + for (; target && target !== document; target = target.parentNode) { + for (i = sliders.length; i--;) { + if (sliders[i] === target) { + return target; + } + } + } + }; + + var getScroll = function () { + var translate3d = slider.style.webkitTransform.match(/translate3d\(([^,]*)/); + var ret = translate3d ? translate3d[1] : 0; + return parseInt(ret, 10); + }; + + var setSlideNumber = function (offset) { + var round = offset ? (deltaX < 0 ? 'ceil' : 'floor') : 'round'; + slideNumber = Math[round](getScroll() / ( scrollableArea / slider.children.length) ); + slideNumber += offset; + slideNumber = Math.min(slideNumber, 0); + slideNumber = Math.max(-(slider.children.length - 1), slideNumber); + }; + + var onTouchStart = function (e) { + slider = getSlider(e.target); + + if (!slider) { + return; + } + + var firstItem = slider.querySelector('.slide'); + + scrollableArea = firstItem.offsetWidth * slider.children.length; + isScrolling = undefined; + sliderWidth = slider.offsetWidth; + resistance = 1; + lastSlide = -(slider.children.length - 1); + startTime = +new Date(); + pageX = e.touches[0].pageX; + pageY = e.touches[0].pageY; + deltaX = 0; + deltaY = 0; + + setSlideNumber(0); + + slider.style['-webkit-transition-duration'] = 0; + }; + + var onTouchMove = function (e) { + if (e.touches.length > 1 || !slider) { + return; // Exit if a pinch || no slider + } + + deltaX = e.touches[0].pageX - pageX; + deltaY = e.touches[0].pageY - pageY; + pageX = e.touches[0].pageX; + pageY = e.touches[0].pageY; + + if (typeof isScrolling === 'undefined') { + isScrolling = Math.abs(deltaY) > Math.abs(deltaX); + } + + if (isScrolling) { + return; + } + + offsetX = (deltaX / resistance) + getScroll(); + + e.preventDefault(); + + resistance = slideNumber === 0 && deltaX > 0 ? (pageX / sliderWidth) + 1.25 : + slideNumber === lastSlide && deltaX < 0 ? (Math.abs(pageX) / sliderWidth) + 1.25 : 1; + + slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)'; + }; + + var onTouchEnd = function (e) { + if (!slider || isScrolling) { + return; + } + + setSlideNumber( + (+new Date()) - startTime < 1000 && Math.abs(deltaX) > 15 ? (deltaX < 0 ? -1 : 1) : 0 + ); + + offsetX = slideNumber * sliderWidth; + + slider.style['-webkit-transition-duration'] = '.2s'; + slider.style.webkitTransform = 'translate3d(' + offsetX + 'px,0,0)'; + + e = new CustomEvent('slide', { + detail: { slideNumber: Math.abs(slideNumber) }, + bubbles: true, + cancelable: true + }); + + slider.parentNode.dispatchEvent(e); + }; + + window.addEventListener('touchstart', onTouchStart); + window.addEventListener('touchmove', onTouchMove); + window.addEventListener('touchend', onTouchEnd); + +}()); + +/* ---------------------------------- + * TOGGLE v2.0.1 + * Licensed under The MIT License + * http://opensource.org/licenses/MIT + * ---------------------------------- */ + +!(function () { + 'use strict'; + + var start = {}; + var touchMove = false; + var distanceX = false; + var toggle = false; + + var findToggle = function (target) { + var i, toggles = document.querySelectorAll('.toggle'); + for (; target && target !== document; target = target.parentNode) { + for (i = toggles.length; i--;) { + if (toggles[i] === target) { + return target; + } + } + } + }; + + window.addEventListener('touchstart', function (e) { + e = e.originalEvent || e; + + toggle = findToggle(e.target); + + if (!toggle) { + return; + } + + var handle = toggle.querySelector('.toggle-handle'); + var toggleWidth = toggle.clientWidth; + var handleWidth = handle.clientWidth; + var offset = toggle.classList.contains('active') ? (toggleWidth - handleWidth) : 0; + + start = { pageX : e.touches[0].pageX - offset, pageY : e.touches[0].pageY }; + touchMove = false; + }); + + window.addEventListener('touchmove', function (e) { + e = e.originalEvent || e; + + if (e.touches.length > 1) { + return; // Exit if a pinch + } + + if (!toggle) { + return; + } + + var handle = toggle.querySelector('.toggle-handle'); + var current = e.touches[0]; + var toggleWidth = toggle.clientWidth; + var handleWidth = handle.clientWidth; + var offset = toggleWidth - handleWidth; + + touchMove = true; + distanceX = current.pageX - start.pageX; + + if (Math.abs(distanceX) < Math.abs(current.pageY - start.pageY)) { + return; + } + + e.preventDefault(); + + if (distanceX < 0) { + return (handle.style.webkitTransform = 'translate3d(0,0,0)'); + } + if (distanceX > offset) { + return (handle.style.webkitTransform = 'translate3d(' + offset + 'px,0,0)'); + } + + handle.style.webkitTransform = 'translate3d(' + distanceX + 'px,0,0)'; + + toggle.classList[(distanceX > (toggleWidth/2 - handleWidth/2)) ? 'add' : 'remove']('active'); + }); + + window.addEventListener('touchend', function (e) { + if (!toggle) { + return; + } + + var handle = toggle.querySelector('.toggle-handle'); + var toggleWidth = toggle.clientWidth; + var handleWidth = handle.clientWidth; + var offset = (toggleWidth - handleWidth); + var slideOn = (!touchMove && !toggle.classList.contains('active')) || (touchMove && (distanceX > (toggleWidth/2 - handleWidth/2))); + + if (slideOn) { + handle.style.webkitTransform = 'translate3d(' + offset + 'px,0,0)'; + } else { + handle.style.webkitTransform = 'translate3d(0,0,0)'; + } + + toggle.classList[slideOn ? 'add' : 'remove']('active'); + + e = new CustomEvent('toggle', { + detail: { isActive: slideOn }, + bubbles: true, + cancelable: true + }); + + toggle.dispatchEvent(e); + + touchMove = false; + toggle = false; + }); + +}()); diff --git a/dist/js/ratchet.min.js b/dist/js/ratchet.min.js new file mode 100644 index 0000000..398565f --- /dev/null +++ b/dist/js/ratchet.min.js @@ -0,0 +1,10 @@ +/*! + * ===================================================== + * Ratchet v2.0.1 (http://goratchet.com) + * Copyright 2014 Connor Sears + * Licensed under MIT. + * + * v2.0.1 designed by @connors. + * ===================================================== + */ +!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},b=function(b){var c=a(b.target);return c&&c.hash?document.querySelector(c.hash):void 0};window.addEventListener("touchend",function(a){var c=b(a);c&&(c&&c.classList.contains("modal")&&c.classList.toggle("active"),a.preventDefault())})}(),!function(){"use strict";var a,b=function(a){for(var b,c=document.querySelectorAll("a");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},c=function(){a.style.display="none",a.removeEventListener("webkitTransitionEnd",c)},d=function(){var b=document.createElement("div");return b.classList.add("backdrop"),b.addEventListener("touchend",function(){a.addEventListener("webkitTransitionEnd",c),a.classList.remove("visible"),a.parentNode.removeChild(d)}),b}(),e=function(c){var d=b(c.target);if(d&&d.hash&&!(d.hash.indexOf("/")>0)){try{a=document.querySelector(d.hash)}catch(e){a=null}if(null!=a&&a&&a.classList.contains("popover"))return a}},f=function(a){var b=e(a);b&&(b.style.display="block",b.offsetHeight,b.classList.add("visible"),b.parentNode.appendChild(d))};window.addEventListener("touchend",f),window.addEventListener("click",f)}(),!function(){"use strict";var a,b=function(){},c=20,d=sessionStorage,e={},f={"slide-in":"slide-out","slide-out":"slide-in",fade:"fade"},g={bartab:".bar-tab",barnav:".bar-nav",barfooter:".bar-footer",barheadersecondary:".bar-header-secondary"},h=function(a,b){o.id=a.id,b&&(a=k(a.id)),d[a.id]=JSON.stringify(a),window.history.replaceState(a.id,a.title,a.url),e[a.id]=document.body.cloneNode(!0)},i=function(){var a=o.id,b=JSON.parse(d.cacheForwardStack||"[]"),e=JSON.parse(d.cacheBackStack||"[]");for(e.push(a);b.length;)delete d[b.shift()];for(;e.length>c;)delete d[e.shift()];window.history.pushState(null,"",d[o.id].url),d.cacheForwardStack=JSON.stringify(b),d.cacheBackStack=JSON.stringify(e)},j=function(a,b){var c="forward"===b,e=JSON.parse(d.cacheForwardStack||"[]"),f=JSON.parse(d.cacheBackStack||"[]"),g=c?f:e,h=c?e:f;o.id&&g.push(o.id),h.pop(),d.cacheForwardStack=JSON.stringify(e),d.cacheBackStack=JSON.stringify(f)},k=function(a){return JSON.parse(d[a]||null)||{}},l=function(b){var c=t(b.target);if(!(!c||b.which>1||b.metaKey||b.ctrlKey||a||location.protocol!==c.protocol||location.host!==c.host||!c.hash&&/#/.test(c.href)||c.hash&&c.href.replace(c.hash,"")===location.href.replace(location.hash,"")||"push"===c.getAttribute("data-ignore")))return c},m=function(a){var b=l(a);b&&(a.preventDefault(),o({url:b.href,hash:b.hash,timeout:b.getAttribute("data-timeout"),transition:b.getAttribute("data-transition")}))},n=function(a){var b,c,h,i,l,m,n,p,q=a.state;if(q&&d[q]){if(l=o.id]*>([\s\S.]*)<\/head>/i)[0],d.innerHTML=f.match(/]*>([\s\S.]*)<\/body>/i)[0]):(c=d=document.createElement("div"),c.innerHTML=f),e.title=c.querySelector("title"),e.title=e.title&&e.title.innerText.trim(),b.transition?e=v(e,".content",d):e.contents=d,e):e};window.addEventListener("touchstart",function(){a=!1}),window.addEventListener("touchmove",function(){a=!0}),window.addEventListener("touchend",m),window.addEventListener("click",function(a){l(a)&&a.preventDefault()}),window.addEventListener("popstate",n),window.PUSH=o}(),!function(){"use strict";var a=function(a){for(var b,c=document.querySelectorAll(".segmented-control .control-item");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchend",function(b){var c,d,e,f=a(b.target),g="active",h="."+g;if(f&&(c=f.parentNode.querySelector(h),c&&c.classList.remove(g),f.classList.add(g),f.hash&&(e=document.querySelector(f.hash)))){d=e.parentNode.querySelectorAll(h);for(var i=0;i .slide-group");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a},o=function(){var a=c.style.webkitTransform.match(/translate3d\(([^,]*)/),b=a?a[1]:0;return parseInt(b,10)},p=function(a){var b=a?0>d?"ceil":"floor":"round";k=Math[b](o()/(m/c.children.length)),k+=a,k=Math.min(k,0),k=Math.max(-(c.children.length-1),k)},q=function(f){if(c=n(f.target)){var k=c.querySelector(".slide");m=k.offsetWidth*c.children.length,l=void 0,j=c.offsetWidth,i=1,g=-(c.children.length-1),h=+new Date,a=f.touches[0].pageX,b=f.touches[0].pageY,d=0,e=0,p(0),c.style["-webkit-transition-duration"]=0}},r=function(h){h.touches.length>1||!c||(d=h.touches[0].pageX-a,e=h.touches[0].pageY-b,a=h.touches[0].pageX,b=h.touches[0].pageY,"undefined"==typeof l&&(l=Math.abs(e)>Math.abs(d)),l||(f=d/i+o(),h.preventDefault(),i=0===k&&d>0?a/j+1.25:k===g&&0>d?Math.abs(a)/j+1.25:1,c.style.webkitTransform="translate3d("+f+"px,0,0)"))},s=function(a){c&&!l&&(p(+new Date-h<1e3&&Math.abs(d)>15?0>d?-1:1:0),f=k*j,c.style["-webkit-transition-duration"]=".2s",c.style.webkitTransform="translate3d("+f+"px,0,0)",a=new CustomEvent("slide",{detail:{slideNumber:Math.abs(k)},bubbles:!0,cancelable:!0}),c.parentNode.dispatchEvent(a))};window.addEventListener("touchstart",q),window.addEventListener("touchmove",r),window.addEventListener("touchend",s)}(),!function(){"use strict";var a={},b=!1,c=!1,d=!1,e=function(a){for(var b,c=document.querySelectorAll(".toggle");a&&a!==document;a=a.parentNode)for(b=c.length;b--;)if(c[b]===a)return a};window.addEventListener("touchstart",function(c){if(c=c.originalEvent||c,d=e(c.target)){var f=d.querySelector(".toggle-handle"),g=d.clientWidth,h=f.clientWidth,i=d.classList.contains("active")?g-h:0;a={pageX:c.touches[0].pageX-i,pageY:c.touches[0].pageY},b=!1}}),window.addEventListener("touchmove",function(e){if(e=e.originalEvent||e,!(e.touches.length>1)&&d){var f=d.querySelector(".toggle-handle"),g=e.touches[0],h=d.clientWidth,i=f.clientWidth,j=h-i;if(b=!0,c=g.pageX-a.pageX,!(Math.abs(c)c)return f.style.webkitTransform="translate3d(0,0,0)";if(c>j)return f.style.webkitTransform="translate3d("+j+"px,0,0)";f.style.webkitTransform="translate3d("+c+"px,0,0)",d.classList[c>h/2-i/2?"add":"remove"]("active")}}}),window.addEventListener("touchend",function(a){if(d){var e=d.querySelector(".toggle-handle"),f=d.clientWidth,g=e.clientWidth,h=f-g,i=!b&&!d.classList.contains("active")||b&&c>f/2-g/2;e.style.webkitTransform=i?"translate3d("+h+"px,0,0)":"translate3d(0,0,0)",d.classList[i?"add":"remove"]("active"),a=new CustomEvent("toggle",{detail:{isActive:i},bubbles:!0,cancelable:!0}),d.dispatchEvent(a),b=!1,d=!1}})}(); \ No newline at end of file diff --git a/examples/app-android-notes/css/app.css b/examples/app-android-notes/css/app.css new file mode 100644 index 0000000..fd8cd5d --- /dev/null +++ b/examples/app-android-notes/css/app.css @@ -0,0 +1,5 @@ +.slider, +.slider img { + margin-bottom: 0; + height: 150px; +} diff --git a/examples/app-android-notes/index.html b/examples/app-android-notes/index.html new file mode 100644 index 0000000..7d6473e --- /dev/null +++ b/examples/app-android-notes/index.html @@ -0,0 +1,146 @@ + + + + + Notes + + + + + + + + + + + + + +
+ + +

+ + Notes + +

+
+
+ + + + + + + + + + diff --git a/examples/app-ios-mail/css/app.css b/examples/app-ios-mail/css/app.css new file mode 100644 index 0000000..dc7532a --- /dev/null +++ b/examples/app-ios-mail/css/app.css @@ -0,0 +1,12 @@ +.updated-text { + position: absolute; + left: 0; + right: 0; + padding: 10px 0; + font-size: 11px; + text-align: center; +} + +.table-view-cell .icon { + color: #007aff; +} diff --git a/examples/app-ios-mail/inbox.html b/examples/app-ios-mail/inbox.html new file mode 100644 index 0000000..bae2bfa --- /dev/null +++ b/examples/app-ios-mail/inbox.html @@ -0,0 +1,118 @@ + + + + + Mail + + + + + + + + + + +
+ + +

All inboxes

+
+ + + + diff --git a/examples/app-ios-mail/index.html b/examples/app-ios-mail/index.html new file mode 100644 index 0000000..f6f5252 --- /dev/null +++ b/examples/app-ios-mail/index.html @@ -0,0 +1,98 @@ + + + + + Mail + + + + + + + + + + +
+ +

Mailboxes

+
+ + + + + + + + + diff --git a/examples/app-movies/choose-theater.html b/examples/app-movies/choose-theater.html new file mode 100644 index 0000000..f6a943a --- /dev/null +++ b/examples/app-movies/choose-theater.html @@ -0,0 +1,85 @@ + + + + + Movie finder + + + + + + + + + +
+ + + Back + +

Argo

+
+ +
+
+ +
+
+ +
+ +
+ + diff --git a/examples/app-movies/css/app.css b/examples/app-movies/css/app.css new file mode 100644 index 0000000..a505979 --- /dev/null +++ b/examples/app-movies/css/app.css @@ -0,0 +1,10 @@ +.slider { + margin-bottom: 0; +} +.slider img { + width: auto; + height: 150px; +} +.content-padded { + margin: 30px 15px 15px; +} diff --git a/examples/app-movies/img/argo.png b/examples/app-movies/img/argo.png new file mode 100644 index 0000000..fca956f Binary files /dev/null and b/examples/app-movies/img/argo.png differ diff --git a/examples/app-movies/img/ralph.png b/examples/app-movies/img/ralph.png new file mode 100644 index 0000000..a7bb34b Binary files /dev/null and b/examples/app-movies/img/ralph.png differ diff --git a/examples/app-movies/img/skyfall.png b/examples/app-movies/img/skyfall.png new file mode 100644 index 0000000..60b90ea Binary files /dev/null and b/examples/app-movies/img/skyfall.png differ diff --git a/examples/app-movies/index.html b/examples/app-movies/index.html new file mode 100644 index 0000000..0f459fe --- /dev/null +++ b/examples/app-movies/index.html @@ -0,0 +1,170 @@ + + + + + Movie finder + + + + + + + + + +
+ +

Movie finder

+
+ +
+
+ +
+
+ + + + + + + diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 0000000..5d76d92 --- /dev/null +++ b/examples/index.html @@ -0,0 +1,176 @@ + + + + + +Examples · Ratchet + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+
+

Examples

+

Take a look at some of these example apps built on Ratchet.

+
+
+ +
+
+ +
+
+
+ +

Checkout out the examples on a desktop browser or visit on your mobile device see the apps as intended.

+ +
+
+
+ + Movie finder app example + +

Movie finder

+
+
+
+
+ + iOS mail app example + +

iOS mail app

+
+
+
+
+ + Android notes app example + +

Android notes app

+
+
+
+
+ +
+
+

Ratchet

+

Compiled and minified CSS, JavaScript, and fonts. No docs or original source files are included.

+ Download Ratchet +

Currently v2.0.1

+
+ +
+

Source code

+

If you haven't already, download the source code for Ratchet.

+ Download source +
+ +
+
+ +
+ + + + + + + + + + +
+
+ + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..6777ee1 Binary files /dev/null and b/favicon.ico differ diff --git a/getting-started/index.html b/getting-started/index.html new file mode 100644 index 0000000..9d9d4fa --- /dev/null +++ b/getting-started/index.html @@ -0,0 +1,304 @@ + + + + + +Getting started · Ratchet + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+
+

Getting started

+

Once you've downloaded Ratchet, here's what to do next.

+
+
+ +
+
+ +
+
+
+
+

Quick start

+

Quickly get up and running with a Ratchet app.

+ +

1. Create your pages

+

Use the documentation as a reference for all the available components and piece together the pages of your app. Be sure to look at the basic page template and example applications. Make sure to add ratchet-theme-ios.css or ratchet-theme-android.css to your app's <head> if you have a specific platform in mind.

+ +

2. Connect pages with push.js

+

Read about push.js then start connecting your pages. Push.js allows you to create a app that feels like a real app when you save it to your phone. (Need to have a server running).

+ +

3. Save the app to your phone

+

There are a few ways to do this, but the simplest is to run a local server on your computer, point Safari on your iPhone to your computer, then click the button and "Add to Home Screen". For Android, check out this guide.

+
+ +
+

What's included

+

Ratchet is downloadable in two forms, within which you'll find the following directories and files, logically grouping common resources and providing both compiled and minified variations.

+ +

Precompiled Ratchet

+

Once downloaded, unzip the compressed folder to see the structure of (the compiled) Ratchet. You'll see something like this:

+ +
ratchet/
+├── css/
+│   ├── ratchet.css
+│   ├── ratchet.min.css
+│   ├── ratchet-theme-android.css
+│   ├── ratchet-theme-android.min.css
+│   ├── ratchet-theme-ios.css
+│   ├── ratchet-theme-ios.min.css
+├── js/
+│   ├── ratchet.js
+│   └── ratchet.min.js
+└── fonts/
+    ├── ratchicons.eot
+    ├── ratchicons.svg
+    ├── ratchicons.ttf
+    └── ratchicons.woff
+
+ +

This is the most basic form of Ratchet: precompiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (ratchet.*), as well as compiled and minified CSS and JS (ratchet.min.*). The Ratchicon fonts are included, as are the Android and iOS platform themes.

+ +

Ratchet source code

+

The Ratchet source code download includes the precompiled CSS, JavaScript, and font assets, along with source Sass, JavaScript, and documentation. More specifically, it includes the following and more:

+
ratchet/
+├── sass/
+├── js/
+├── fonts/
+├── dist/
+│   ├── css/
+│   ├── js/
+│   └── fonts/
+└── docs/
+    └── examples/
+
+ +

The sass/, js/, and fonts/ are the source code for our CSS, JS, and icon fonts (respectively). 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 Ratchet usage. Beyond that, any other included file provides support for packages, license information, and development.

+
+ + + +
+

Page setup

+

Three simple rules for structuring your Ratchet pages

+

1. Fixed bars come first

+

All fixed bars (.bar) should always be the first thing in the <body> of the page. This is really important!

+ +

2. Everything else goes in .content

+

Anything that's not a .bar should be put in a div with the class .content. Put this div after the bars in the <body> tag. The .content div is what actually scrolls in a Ratchet prototype.

+ +

3. Don't forget your meta tags

+

They're included in the template.html page included in the download, but make sure they stay in the page. They are important to Ratchet working just right.

+
+ + + +
+

Basic template

+

Use this basic template to get your app started.

+
<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>Ratchet template page</title>
+
+    <!-- Sets initial viewport load and disables zooming  -->
+    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
+
+    <!-- Makes your prototype chrome-less once bookmarked to your phone's home screen -->
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+
+    <!-- Include the compiled Ratchet CSS -->
+    <link href="ratchet.css" rel="stylesheet">
+
+    <!-- Include the compiled Ratchet JS -->
+    <script src="ratchet.js"></script>
+  </head>
+  <body>
+
+    <!-- Make sure all your bars are the first things in your <body> -->
+    <header class="bar bar-nav">
+      <h1 class="title">Ratchet</h1>
+    </header>
+
+    <!-- Wrap all non-bar HTML in the .content div (this is actually what scrolls) -->
+    <div class="content">
+      <p class="content-padded">Thanks for downloading Ratchet. This is an example HTML page that's linked up to compiled Ratchet CSS and JS, has the proper meta tags and the HTML structure. Need some more help before you start filling this with your own content? Check out some Ratchet resources:</p>
+      <div class="card">
+        <ul class="table-view">
+          <li class="table-view-cell">
+            <a class="push-right" href="http://goratchet.com">
+              <strong>Ratchet documentation</strong>
+            </a>
+          </li>
+          <li class="table-view-cell">
+            <a class="push-right" href="https://github.com/twbs/ratchet/">
+              <strong>Ratchet on Github</strong>
+            </a>
+          </li>
+          <li class="table-view-cell">
+            <a class="push-right" href="https://groups.google.com/forum/#!forum/goratchet">
+              <strong>Ratchet Google group</strong>
+            </a>
+          </li>
+          <li class="table-view-cell">
+            <a class="push-right" href="https://twitter.com/goratchet">
+              <strong>Ratchet on Twitter</strong>
+            </a>
+          </li>
+        </ul>
+      </div>
+    </div>
+
+  </body>
+</html>
+
+
+ + + +
+

Community

+

Stay up to date on the development of Ratchet and reach out to the community with these helpful resources.

+
    +
  1. +

    Read and subscribe to The Official Bootstrap Blog (which includes Ratchet releases and news).

    +
  2. +
  3. +

    For help using Ratchet, ask on StackOverflow using the tag ratchet-2.

    +
  4. +
  5. +

    Start a discussion on the Ratchet Google group.

    +
  6. +
+

You can also follow @goratchet on Twitter for the latest news.

+
+
+ +
+
+

Ratchet

+

Compiled and minified CSS, JavaScript, and fonts. No docs or original source files are included.

+ Download Ratchet +

Currently v2.0.1

+
+ +
+

Source code

+

If you haven't already, download the source code for Ratchet.

+ Download source +
+ +
+
+ +
+ + + + + + + + + + +
+
+ + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..aeeab42 --- /dev/null +++ b/index.html @@ -0,0 +1,122 @@ + + + + + +Ratchet + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+

Build mobile apps with simple HTML‚ CSS‚ and JS components.

+ Download Ratchet +

Currently v2.0.1

+
+ +
+
+ + + + + + + + + + +
+
+ + + diff --git a/one.html b/one.html new file mode 100644 index 0000000..cc009e5 --- /dev/null +++ b/one.html @@ -0,0 +1,32 @@ + + + + + Ratchet + + + + + + + + + + + +
+

Push

+
+ + + diff --git a/template.html b/template.html new file mode 100644 index 0000000..6f854ce --- /dev/null +++ b/template.html @@ -0,0 +1,68 @@ + + + + + Ratchet template page + + + + + + + + + + + + + + + + + + + + + +
+

Ratchet

+
+ + +
+

Thanks for downloading Ratchet. This is an example HTML page that's linked up to compiled Ratchet CSS and JS, has the proper meta tags and the HTML structure. Need some more help before you start filling this with your own content? Check out some Ratchet resources:

+ +
+ + + + + diff --git a/two.html b/two.html new file mode 100644 index 0000000..bed58ea --- /dev/null +++ b/two.html @@ -0,0 +1,31 @@ + + + + + Ratchet + + + + + + + + + + + +
+ +

Page two

+
+ + +