diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 00000000..ed5c1950 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,44 @@ +{ + "bitwise": true, + "camelcase": true, + "curly": true, + "eqeqeq": false, + "es3": false, + "forin": true, + "freeze": false, + "immed": true, + "indent": 4, + "latedef": true, + "newcap": true, + "noarg": true, + "noempty": true, + "nonbsp": true, + "nonew": true, + "plusplus": false, + "quotmark": "double", + "undef": true, + "unused": true, + "strict": false, + "trailing": true, + "maxparams": 5, + "maxdepth": 5, + "maxstatements": 50, + "maxlen": 150, + + "eqnull": true, + + "browser": false, + "devel": false, + "node": true, + + "white": true, + + "globals": { + "$": true, + "document": true, + "brackets": true, + "define": true, + "Mustache": true, + "window": true + } +} diff --git a/alerts.less b/alerts.less new file mode 100644 index 00000000..b88b6b21 --- /dev/null +++ b/alerts.less @@ -0,0 +1,26 @@ +// main: material.less + +.alert, .alert-success, .alert-info, .alert-warning, .alert-danger { + border: 0px; + border-radius: 0; + a, .alert-link { + color: #FFFFFF; + } +} + +.alert-success { + color: #FFFFFF; + background-color: @alert-success; +} +.alert-info { + color: #FFFFFF; + background-color: @alert-info; +} +.alert-warning { + color: #FFFFFF; + background-color: @alert-warning; +} +.alert-danger { + color: #FFFFFF; + background-color: @alert-danger; +} diff --git a/animations.less b/animations.less new file mode 100644 index 00000000..3bed5ec6 --- /dev/null +++ b/animations.less @@ -0,0 +1,44 @@ +// main: material.less + +@-webkit-keyframes input-highlight { + 0% { + left: 20%; + width: 20%; + } + 99% { + width: 0; + left: 0; + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-moz-keyframes input-highlight { + 0% { + left: 20%; + width: 20%; + } + 99% { + width: 0; + left: 0; + opacity: 1; + } + 100% { + opacity: 0; + } +} +@keyframes input-highlight { + 0% { + left: 20%; + width: 20%; + } + 99% { + width: 0; + left: 0; + opacity: 1; + } + 100% { + opacity: 0; + } +} diff --git a/bootstrap.css b/bootstrap.css new file mode 100644 index 00000000..9671cbda --- /dev/null +++ b/bootstrap.css @@ -0,0 +1,820 @@ +/* Generated by less 1.7.0 */ +@import url(http://fonts.googleapis.com/css?family=Roboto+Condensed:300italic,400italic,700italic,400,700,300|Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic); +@-webkit-keyframes input-highlight { + 0% { + left: 20%; + width: 20%; + } + 99% { + width: 0; + left: 0; + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-moz-keyframes input-highlight { + 0% { + left: 20%; + width: 20%; + } + 99% { + width: 0; + left: 0; + opacity: 1; + } + 100% { + opacity: 0; + } +} +@keyframes input-highlight { + 0% { + left: 20%; + width: 20%; + } + 99% { + width: 0; + left: 0; + opacity: 1; + } + 100% { + opacity: 0; + } +} +.shadow-z-1 { + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); +} +.shadow-z-2 { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); +} +.shadow-z-2-hover { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.28); +} +.shadow-z-3 { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.shadow-z-4 { + box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); +} +.shadow-z-5 { + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22); +} +body { + background-color: #EEEEEE; +} +body, +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +.btn { + position: relative; + padding: 8px 30px; + border: 0; + margin: 10px 1px; + cursor: pointer; + border-radius: 4px; + text-transform: uppercase; + text-decoration: none; + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); + outline: none !important; +} +.btn:hover:not(.btn-link) { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.28); +} +.btn:active:not(.btn-link) { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.btn-raised { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); +} +.btn-raised:active:not(.btn-link) { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.btn-default, +.btn-default:hover, +.btn-default:active, +.btn-default:focus { + background-color: transparent; + color: #000000; +} +.btn-default:hover { + background-color: #FFFFFF; +} +.btn-primary, +.btn-primary:hover, +.btn-primary:active, +.btn-primary:focus { + background-color: #4285f4; + color: #ffffff; +} +.btn-success, +.btn-success:hover, +.btn-success:active, +.btn-success:focus { + background-color: #0f9d58; + color: #ffffff; +} +.btn-info, +.btn-info:hover, +.btn-info:active, +.btn-info:focus { + background-color: #3498db; + color: #ffffff; +} +.btn-warning, +.btn-warning:hover, +.btn-warning:active, +.btn-warning:focus { + background-color: #ff5722; + color: #ffffff; +} +.btn-danger, +.btn-danger:hover, +.btn-danger:active, +.btn-danger:focus { + background-color: #db4437; + color: #ffffff; +} +.open > .dropdown-toggle.btn-default { + background-color: transparent; +} +.open > .dropdown-toggle.btn-primary { + background-color: #4285f4; +} +.open > .dropdown-toggle.btn-success { + background-color: #0f9d58; +} +.open > .dropdown-toggle.btn-info { + background-color: #3498db; +} +.open > .dropdown-toggle.btn-warning { + background-color: #ff5722; +} +.open > .dropdown-toggle.btn-danger { + background-color: #db4437; +} +.btn-flat { + box-shadow: none !important; +} +.btn-flat.btn-default:hover { + background: none; +} +.btn-group, +.btn-group-vertical { + position: relative; + border-radius: 4px; + margin: 10px 1px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); +} +.btn-group:active:not(.btn-link), +.btn-group-vertical:active:not(.btn-link) { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.btn-group.open .dropdown-toggle, +.btn-group-vertical.open .dropdown-toggle { + box-shadow: none; +} +.btn-group.btn-group-raised, +.btn-group-vertical.btn-group-raised { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); +} +.btn-group.btn-group-raised:active:not(.btn-link), +.btn-group-vertical.btn-group-raised:active:not(.btn-link) { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.btn-group .btn, +.btn-group-vertical .btn, +.btn-group .btn:active, +.btn-group-vertical .btn:active, +.btn-group .btn-group, +.btn-group-vertical .btn-group { + box-shadow: none !important; + margin: 0; +} +.btn-group .btn:active .caret, +.btn-group-vertical .btn:active .caret { + margin-left: -1px; +} +.btn-group-flat { + box-shadow: none !important; +} +.ripple-wrapper { + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; + overflow: hidden; + border-radius: 2px; +} +.ripple { + fill: black; + fill-opacity: 0.05; + stroke: none; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: 50%; + -ms-transform-origin: 50%; + transform-origin: 50%; + opacity: 0; +} +.ripple.ripple-on { + transition: opacity 0.15s ease-in 0s -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + -webkit-transition: opacity 0.15s ease-in 0s, -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + opacity: 1; +} +.ripple.ripple-out { + -webkit-transition: opacity 0.2s linear 0s !important; + transition: opacity 0.2s linear 0s !important; + opacity: 0; +} +.form-horizontal .checkbox { + padding-top: 15px; +} +.checkbox label { + cursor: pointer; + padding-left: 45px; + position: relative; +} +.checkbox label span { + display: block; + position: absolute; + left: 10px; + transition-duration: 0.2s; +} +.checkbox label .bubble { + background: rgba(137, 137, 137, 0.3); + left: 0; + top: -10px; + height: 40px; + width: 40px; + border-radius: 100%; + transform: scale(0); + transition: transform .1s, opacity 0.2s 0.4s; + z-index: 1; +} +.checkbox label .bubble.animate { + transform: scale(1); + opacity: 0; +} +.checkbox label .box { + border: 2px solid #5A5F5A; + height: 20px; + width: 20px; + transition-delay: 0.2s; +} +.checkbox label .check { + top: -4px; + left: 16px; + width: 12px; + height: 24px; + border: 2px solid #0F9D58; + border-top: none; + border-left: none; + opacity: 0; + z-index: 888; + transform: rotate(45deg); + transition-delay: 0.2s; +} +.checkbox input[type=checkbox] { + display: none; +} +.checkbox input[type=checkbox]:checked ~ .box { + opacity: 0; + transform: scale(0) rotate(-180deg); +} +.checkbox input[type=checkbox]:checked ~ .bubble { + background: rgba(15, 157, 88, 0.3); +} +.checkbox input[type=checkbox]:checked ~ .check { + opacity: 1; + transform: scale(1) rotate(45deg); +} +.form-horizontal .radio { + margin-bottom: 10px; +} +.radio label { + cursor: pointer; + padding-left: 45px; + position: relative; +} +.radio label span { + display: block; + position: absolute; + left: 10px; + top: 2px; + transition-duration: 0.2s; +} +.radio label .bubble { + background: rgba(137, 137, 137, 0.3); + left: 0; + top: -8px; + height: 34px; + width: 34px; + border-radius: 100%; + transform: scale(0); + transition: transform .1s, opacity 0.2s 0.4s; + z-index: 1; +} +.radio label .bubble.animate { + transform: scale(1); + opacity: 0; +} +.radio label .circle { + border: 2px solid #5A5F5A; + height: 15px; + width: 15px; + border-radius: 100%; +} +.radio label .check { + height: 15px; + width: 15px; + border-radius: 100%; + background-color: #5a5f5a; + transform: scale(0); +} +.radio.radio-default .check { + background-color: #5a5f5a; +} +.radio.radio-primary .check { + background-color: #4285f4; +} +.radio.radio-success .check { + background-color: #0f9d58; +} +.radio.radio-info { + background-color: #3498db; +} +.radio.radio-warning .check { + background-color: #ff5722; +} +.radio.radio-danger .check { + background-color: #db4437; +} +.radio input[type=radio] { + display: none; +} +.radio input[type=radio]:checked ~ .check { + transform: scale(1); +} +.radio input[type=radio]:checked ~ .circle { + transform: scale(1); + border: 1px; +} +.form-control-wrapper { + position: relative; + /* active state */ +} +.form-control-wrapper .form-control, +.form-control-wrapper .form-control:focus { + float: none; + border: 0; + box-shadow: none; + border-radius: 0; + background: transparent; + border-bottom: 1px solid #757575; +} +.form-control-wrapper .form-control:focus { + outline: none; +} +.form-control-wrapper .floating-label { + color: #7E7E7E; + font-size: 14px; + position: absolute; + pointer-events: none; + left: 12px; + top: 7px; + transition: 0.2s ease all; + opacity: 0; +} +.form-control-wrapper .form-control:focus ~ .floating-label { + top: -10px; + font-size: 10px; + color: #5264ae; +} +.form-control-wrapper .form-control:not(.empty) ~ .floating-label { + top: -10px; + font-size: 10px; + opacity: 1; +} +.form-control-wrapper .form-control:focus:invalid ~ .floating-label { + color: #db4437; +} +.form-control-wrapper .form-control:focus ~ .material-input:after { + background-color: #5264ae; +} +.form-control-wrapper .form-control:focus:invalid ~ .material-input:before, +.form-control-wrapper .form-control:focus:invalid ~ .material-input:after { + background-color: #db4437; +} +.form-control-wrapper .form-control.empty ~ .floating-label { + opacity: 1; +} +.form-control-wrapper .material-input:before { + position: absolute; + content: ""; + width: 100%; + left: 0; + height: 2px; + background-color: #5264ae; + bottom: -1px; + transform: scaleX(0); + transition: transform 0s; +} +.form-control-wrapper .form-control:focus ~ .material-input:before { + transform: scaleX(1); + transition: transform 0.2s ease-out; +} +.form-control-wrapper .material-input:after { + content: ""; + position: absolute; + height: 18px; + width: 100px; + margin-top: -1px; + top: 25%; + left: 0; + pointer-events: none; + opacity: 0.9; +} +.form-control-wrapper .input-lg ~ .material-input:after { + height: 26px; +} +.form-control-wrapper textarea { + resize: none; +} +.form-control-wrapper textarea ~ .form-control-highlight { + margin-top: -11px; +} +.form-control-wrapper .form-control:focus ~ .material-input:after { + -webkit-animation: input-highlight 0.3s ease; + animation: input-highlight 0.3s ease; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; +} +.form-group.has-warning .material-input:before, +.form-group.has-warning input.form-control:focus ~ .material-input:after { + background: #ff5722; +} +.form-group.has-warning .control-label, +.form-group.has-warning input.form-control:focus ~ .floating-label { + color: #ff5722; +} +.form-group.has-error .material-input:before, +.form-group.has-error input.form-control:focus ~ .material-input:after { + background: #db4437; +} +.form-group.has-error .control-label, +.form-group.has-error input.form-control:focus ~ .floating-label { + color: #db4437; +} +.form-group.has-success .material-input:before, +.form-group.has-success input.form-control:focus ~ .material-input:after { + background: #0f9d58; +} +.form-group.has-success .control-label, +.form-group.has-success input.form-control:focus ~ .floating-label { + color: #0f9d58; +} +.form-group.has-info .material-input:before, +.form-group.has-info input.form-control:focus ~ .material-input:after { + background: #3498db; +} +.form-group.has-info .control-label, +.form-group.has-info input.form-control:focus ~ .floating-label { + color: #3498db; +} +.input-group .form-control-wrapper { + margin-right: 5px; + margin-left: 5px; + bottom: -10px; +} +.input-group .form-control-wrapper .form-control { + float: none; +} +.input-group .input-group-addon { + border: 0; +} +.input-group .input-group-btn .btn { + border-radius: 4px; +} +select.form-control { + border: 0; + box-shadow: none; + border-bottom: 1px solid #757575; + border-radius: 0; +} +select.form-control:focus { + box-shadow: none; + border-color: #757575; +} +.container .well, +.container .jumbotron { + background-color: #fff; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + border-radius: 2px; +} +.container .well p, +.container .jumbotron p { + font-weight: 300; +} +.modal-content { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + border-radius: 0; + border: 0; +} +.modal-content .modal-header { + border-bottom: 0; +} +.modal-content .modal-footer { + border-top: 0; +} +.modal-content .modal-footer .btn + .btn { + margin-bottom: 10px; +} +.list-group { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + border-radius: 2px; +} +.list-group .list-group-item:last-child { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.list-group .list-group-item:first-child { + border-top-right-radius: 2px; + boborder-top-right-radius: 2px; +} +.navbar { + background-color: #4285f4; + border: 0; + border-radius: 0; +} +.navbar .navbar-brand { + position: relative; + height: 60px; + line-height: 30px; + color: #ffffff; +} +.navbar .navbar-brand:hover, +.navbar .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.navbar .navbar-text { + color: #ffffff; +} +.navbar .navbar-nav > li > a { + color: #ffffff; + padding-top: 20px; + padding-bottom: 20px; +} +.navbar .navbar-nav > li > a:hover, +.navbar .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar .navbar-nav > .active > a, +.navbar .navbar-nav > .active > a:hover, +.navbar .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: rgba(0, 0, 0, 0.05); +} +.navbar .navbar-nav > .disabled > a, +.navbar .navbar-nav > .disabled > a:hover, +.navbar .navbar-nav > .disabled > a:focus { + color: #e5e5e5; + background-color: transparent; +} +.navbar .navbar-toggle { + border-color: #ffffff; +} +.navbar .navbar-toggle:hover, +.navbar .navbar-toggle:focus { + background-color: transparent; +} +.navbar .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar .navbar-collapse, +.navbar .navbar-form { + border-color: #206ff2; +} +.navbar .navbar-nav > .open > a, +.navbar .navbar-nav > .open > a:hover, +.navbar .navbar-nav > .open > a:focus { + background-color: rgba(0, 0, 0, 0.05); + color: #ffffff; +} +@media (max-width: 767px) { + .navbar .navbar-nav .open .dropdown-menu > .dropdown-header { + border: 0; + color: #d4d4d4; + } + .navbar .navbar-nav .open .dropdown-menu .divider { + background-color: #ffffff; + } + .navbar .navbar-nav .open .dropdown-menu > li > a { + color: #ffffff; + } + .navbar .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar .navbar-nav .open .dropdown-menu > .active > a, + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: rgba(0, 0, 0, 0.05); + } + .navbar .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #e5e5e5; + background-color: transparent; + } +} +.navbar .navbar-link { + color: #ffffff; +} +.navbar .navbar-link:hover { + color: #ffffff; +} +.navbar .btn-link { + color: #ffffff; +} +.navbar .btn-link:hover, +.navbar .btn-link:focus { + color: #ffffff; +} +.navbar .btn-link[disabled]:hover, +fieldset[disabled] .navbar .btn-link:hover, +.navbar .btn-link[disabled]:focus, +fieldset[disabled] .navbar .btn-link:focus { + color: #e5e5e5; +} +.navbar .navbar-form .form-control-wrapper .form-control { + border-color: #ffffff; + color: #ffffff; +} +.navbar .navbar-form .form-control-wrapper .material-input:before, +.navbar .navbar-form .form-control-wrapper input:focus ~ .material-input:after { + background-color: #ffffff; +} +.navbar .navbar-form ::-webkit-input-placeholder { + color: #ffffff; +} +.navbar .navbar-form :-moz-placeholder { + color: #ffffff; +} +.navbar .navbar-form ::-moz-placeholder { + color: #ffffff; +} +.navbar .navbar-form :-ms-input-placeholder { + color: #ffffff; +} +.navbar-primary { + background-color: #4285f4; +} +.navbar-primary .navbar-collapse, +.navbar-primary .navbar-form { + border-color: #206ff2; +} +.navbar-success { + background-color: #0f9d58; +} +.navbar-success .navbar-collapse, +.navbar-success .navbar-form { + border-color: #0c7c46; +} +.navbar-info { + background-color: #3498db; +} +.navbar-info .navbar-collapse, +.navbar-info .navbar-form { + border-color: #2386c8; +} +.navbar-warning { + background-color: #ff5722; +} +.navbar-warning .navbar-collapse, +.navbar-warning .navbar-form { + border-color: #fd3d00; +} +.navbar-danger { + background-color: #db4437; +} +.navbar-danger .navbar-collapse, +.navbar-danger .navbar-form { + border-color: #ca3124; +} +.navbar-inverse { + background-color: #5264ae; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #465696; +} +.dropdown-menu { + border: 0; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); +} +.dropdown-menu .divider { + background-color: rgba(229, 229, 229, 0.12); +} +.dropdown-menu li { + overflow: hidden; + position: relative; +} +.dropdown-menu li a:hover { + background-color: transparent; +} +.alert, +.alert-success, +.alert-info, +.alert-warning, +.alert-danger { + border: 0px; + border-radius: 0; +} +.alert a, +.alert-success a, +.alert-info a, +.alert-warning a, +.alert-danger a, +.alert .alert-link, +.alert-success .alert-link, +.alert-info .alert-link, +.alert-warning .alert-link, +.alert-danger .alert-link { + color: #FFFFFF; +} +.alert-success { + color: #FFFFFF; + background-color: #0f9d58; +} +.alert-info { + color: #FFFFFF; + background-color: #3498db; +} +.alert-warning { + color: #FFFFFF; + background-color: #ff5722; +} +.alert-danger { + color: #FFFFFF; + background-color: #db4437; +} +.progress { + height: 4px; + border-radius: 0; + box-shadow: none; + background: #c8c8c8; +} +.progress .progress-bar { + box-shadow: none; +} +.progress .progress-bar, +.progress .progress-bar-info { + background-color: #3498db; +} +.progress .progress-bar-warning { + background-color: #ff5722; +} +.progress .progress-bar-danger { + background-color: #db4437; +} +.progress .progress-bar-success { + background-color: #0f9d58; +} +.text-warning { + color: #ff5722; +} +.text-primary { + color: #4285f4; +} +.text-danger { + color: #db4437; +} +.text-success { + color: #0f9d58; +} +.text-info { + color: #3498db; +} diff --git a/buttons.less b/buttons.less new file mode 100644 index 00000000..eba643be --- /dev/null +++ b/buttons.less @@ -0,0 +1,109 @@ +// main: material.less + +.btn-shadow() { + .shadow-z-2(); + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); + &:active:not(.btn-link) { + .shadow-z-3(); + } +} + +.btn { + position: relative; + padding: 8px 30px; + border: 0; + margin: 10px 1px; + + cursor: pointer; + border-radius: 4px; + text-transform: uppercase; + text-decoration: none; + + &:hover:not(.btn-link) { + .shadow-z-2-hover(); + } + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); + &:active:not(.btn-link) { + .shadow-z-3(); + } + outline: none !important; +} +.btn-raised { + .btn-shadow(); +} +.btn-default { + &, &:hover, &:active, &:focus { + background-color: @btn-default; + color: @btn-default-text; + } + &:hover { + background-color: #FFFFFF; + } +} +.btn-primary { + &, &:hover, &:active, &:focus { + background-color: @btn-primary; + color: @btn-primary-text; + } +} +.btn-success { + &, &:hover, &:active, &:focus { + background-color: @btn-success; + color: @btn-success-text; + } +} +.btn-info { + &, &:hover, &:active, &:focus { + background-color: @btn-info; + color: @btn-info-text; + } +} +.btn-warning { + &, &:hover, &:active, &:focus { + background-color: @btn-warning; + color: @btn-warning-text; + } +} +.btn-danger { + &, &:hover, &:active, &:focus { + background-color: @btn-danger; + color: @btn-danger-text; + } +} + +.open > .dropdown-toggle.btn { + &-default { background-color: @btn-default; } + &-primary { background-color: @btn-primary; } + &-success { background-color: @btn-success; } + &-info { background-color: @btn-info; } + &-warning { background-color: @btn-warning; } + &-danger { background-color: @btn-danger; } +} +.btn-flat { + box-shadow: none !important; + &.btn-default:hover { + background: none; + } +} + +.btn-group, .btn-group-vertical { + position: relative; + border-radius: 4px; + margin: 10px 1px; + + .btn-shadow(); + &.open .dropdown-toggle { + box-shadow: none; + } + &.btn-group-raised { + .btn-shadow(); + } + .btn, .btn:active, .btn-group { + box-shadow: none !important; + margin: 0; + } + .btn:active .caret { margin-left: -1px; } +} +.btn-group-flat { + box-shadow: none !important; +} diff --git a/checkboxes.less b/checkboxes.less new file mode 100644 index 00000000..6af35b38 --- /dev/null +++ b/checkboxes.less @@ -0,0 +1,65 @@ +// main: material.less + +.form-horizontal .checkbox { + padding-top: 15px; +} +.checkbox { + label { + cursor: pointer; + padding-left: 45px; + position: relative; + span { + display: block; + position: absolute; + left: 10px; + transition-duration: 0.2s; + } + .bubble { + background: @input-unchecked; + left: 0; + top: -10px; + height: 40px; + width: 40px; + border-radius: 100%; + transform: scale(0); + transition: transform .1s, opacity 0.2s 0.4s; + z-index: 1; + &.animate { + transform: scale(1); + opacity: 0; + } + } + .box { + border: 2px solid #5A5F5A; + height: 20px; + width: 20px; + transition-delay: 0.2s; + } + .check { + top: -4px; + left: 16px; + width: 12px; + height: 24px; + border: 2px solid #0F9D58; + border-top: none; + border-left: none; + opacity: 0; + z-index: 888; + transform: rotate(45deg); + transition-delay: 0.2s; + } + + } + input[type=checkbox] { display: none; } + input[type=checkbox]:checked ~ .box { + opacity: 0; + transform: scale(0) rotate(-180deg); + } + input[type=checkbox]:checked ~ .bubble { + background: @input-checked; + } + input[type=checkbox]:checked ~ .check { + opacity: 1; + transform: scale(1) rotate(45deg); + } +} diff --git a/index.html b/index.html new file mode 100644 index 00000000..bf0e1319 --- /dev/null +++ b/index.html @@ -0,0 +1,1291 @@ + + + + + Bootstrap Material + + + + + + +
+ + + + +
+
+
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ + + +
+ + +
+
+ +

Default buttons

+

+ Default + Primary + Success + Info + Warning + Danger + Link +

+

Flat buttons

+

+ Default + Primary + Success + Info + Warning + Danger + Link +

+ +

Raised buttons

+

+ Default + Primary + Success + Info + Warning + Danger +

+ +

Disabled buttons

+

+ Default + Primary + Success + Info + Warning + Danger + Link +

+ +

Button groups

+
+ +
+ +

Button sizes

+

+ Large button + Default button + Small button + Mini button +

+ +
+
+ +

+ Block level button +

+ + +
+
+ Left + Middle + Right +
+
+ +
+
+
+ 1 + 2 + 3 + 4 +
+ +
+ 5 + 6 + 7 +
+ + +
+
+ +
+ +
+ +
+
+
+ + +
+
+
+ +
+
+ + + +
+
+
+

Heading 1

+

Heading 2

+

Heading 3

+

Heading 4

+
Heading 5
+
Heading 6
+

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

+
+
+
+
+

Example body text

+

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

+

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

+

The following snippet of text is rendered as bold text.

+

The following snippet of text is rendered as italicized text.

+

An abbreviation of the word attribute is attr.

+
+ +
+
+
+

Emphasis classes

+

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

+

Nullam id dolor id nibh ultricies vehicula ut id elit.

+

Etiam porta sem malesuada magna mollis euismod.

+

Donec ullamcorper nulla non metus auctor fringilla.

+

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

+

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

+
+ +
+
+ + + +
+
+

Blockquotes

+
+
+
+
+
+
+

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

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

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

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

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

+
+
+

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

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

Pagination

+
+ + + + + +
+
+
+

Pager

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

Alerts

+
+
+ +

Warning!

+

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

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

Labels

+
+ Default + Primary + Success + Warning + Danger + Info +
+
+
+

Badges

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

Basic

+
+
+
+
+
+ +

Contextual alternatives

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

Striped

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

Animated

+
+
+
+
+
+ +

Stacked

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

Jumbotron

+

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

+

Learn more

+
+
+
+
+ + +
+
+

List groups

+
+
+ + + +
+
+

Panels

+
+
+
+
+
+
+
+ Basic panel +
+
+ +
+
Panel heading
+
+ Panel content +
+
+ +
+
+ Panel content +
+ +
+
+
+
+
+
+
+

Panel primary

+
+
+ Panel content +
+
+ +
+
+

Panel success

+
+
+ Panel content +
+
+ +
+
+

Panel warning

+
+
+ Panel content +
+
+
+
+
+
+
+
+

Panel danger

+
+
+ Panel content +
+
+ +
+
+

Panel info

+
+
+ Panel content +
+
+
+
+
+ +
+
+

Wells

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

Modals

+
+ +
+
+
+

Popovers

+
+ + + + + + + +
+

Tooltips

+
+ + + + + + + +
+
+
+
+ + +
+
+ + + + + + + diff --git a/inputs.less b/inputs.less new file mode 100644 index 00000000..8de507e0 --- /dev/null +++ b/inputs.less @@ -0,0 +1,160 @@ +// main: material.less + +.form-control-wrapper { + position: relative; + .form-control, .form-control:focus { + float: none; + border: 0; + box-shadow: none; + border-radius: 0; + background: transparent; + border-bottom: 1px solid #757575; + } + .form-control:focus { + outline: none; + } + + .material-input:after { + + } + + .floating-label { + color: #7E7E7E; + font-size: 14px; + position: absolute; + pointer-events: none; + left: 12px; + top: 7px; + transition: 0.2s ease all; + opacity: 0; + } + .form-control:focus ~ .floating-label { + top: -10px; + font-size: 10px; + color: @input-default; + } + .form-control:not(.empty) ~ .floating-label { + top: -10px; + font-size: 10px; + opacity: 1; + } + .form-control:focus:invalid ~ .floating-label { + color: @input-danger; + } + .form-control:focus ~ .material-input:after { + background-color: @input-default; + } + .form-control:focus:invalid ~ .material-input { + &:before, &:after { + background-color: @input-danger; + } + } + .form-control.empty ~ .floating-label { + opacity: 1; + } + .material-input:before { + position: absolute; + content: ""; + width: 100%; + left: 0; + height: 2px; + background-color: @input-default; + bottom: -1px; + transform: scaleX(0); + transition: transform 0s; + } + .form-control:focus ~ .material-input:before { + transform: scaleX(1); + transition: transform 0.2s ease-out; + } + .material-input:after { + content: ""; + position: absolute; + height: 18px; + width: 100px; + margin-top: -1px; + top: 25%; + left: 0; + pointer-events: none; + opacity: 0.9; + } + .input-lg ~ .material-input:after { + height: 26px; + } + textarea { resize: none; } + textarea ~ .form-control-highlight { + margin-top: -11px; + } + + /* active state */ + .form-control:focus ~ .material-input:after { + -webkit-animation: input-highlight 0.3s ease; + animation: input-highlight 0.3s ease; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + } +} + +.form-group { + &.has-warning { + .material-input:before, input.form-control:focus ~ .material-input:after { + background: @input-warning; + } + .control-label, input.form-control:focus ~ .floating-label { + color: @input-warning; + } + } + &.has-error { + .material-input:before, input.form-control:focus ~ .material-input:after { + background: @input-danger; + } + .control-label, input.form-control:focus ~ .floating-label { + color: @input-danger; + } + } + &.has-success { + .material-input:before, input.form-control:focus ~ .material-input:after { + background: @input-success; + } + .control-label, input.form-control:focus ~ .floating-label { + color: @input-success; + } + } + &.has-info { + .material-input:before, input.form-control:focus ~ .material-input:after { + background: @input-info; + } + .control-label, input.form-control:focus ~ .floating-label { + color: @input-info; + } + } + +} + +.input-group { + .form-control-wrapper { + .form-control { + float: none; + } + margin-right: 5px; + margin-left: 5px; + bottom: -10px; + } + .input-group-addon { + border: 0; + } + .input-group-btn .btn { + border-radius: 4px; + } +} + +select.form-control { + border: 0; + box-shadow: none; + border-bottom: 1px solid #757575; + border-radius: 0; + &:focus { + box-shadow: none; + border-color: #757575; + } +} diff --git a/material.css b/material.css new file mode 100644 index 00000000..f5bbb6e8 --- /dev/null +++ b/material.css @@ -0,0 +1,844 @@ +/* Generated by less 1.7.0 */ +@import url(http://fonts.googleapis.com/css?family=Roboto+Condensed:300italic,400italic,700italic,400,700,300|Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic); +@-webkit-keyframes input-highlight { + 0% { + left: 20%; + width: 20%; + } + 99% { + width: 0; + left: 0; + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-moz-keyframes input-highlight { + 0% { + left: 20%; + width: 20%; + } + 99% { + width: 0; + left: 0; + opacity: 1; + } + 100% { + opacity: 0; + } +} +@keyframes input-highlight { + 0% { + left: 20%; + width: 20%; + } + 99% { + width: 0; + left: 0; + opacity: 1; + } + 100% { + opacity: 0; + } +} +.shadow-z-1 { + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); +} +.shadow-z-2 { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); +} +.shadow-z-2-hover { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.28); +} +.shadow-z-3 { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.shadow-z-4 { + box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); +} +.shadow-z-5 { + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22); +} +body { + background-color: #EEEEEE; +} +body, +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; +} +.btn { + position: relative; + padding: 8px 30px; + border: 0; + margin: 10px 1px; + cursor: pointer; + border-radius: 4px; + text-transform: uppercase; + text-decoration: none; + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); + outline: none !important; +} +.btn:hover:not(.btn-link) { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.28); +} +.btn:active:not(.btn-link) { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.btn-raised { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); +} +.btn-raised:active:not(.btn-link) { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.btn-default, +.btn-default:hover, +.btn-default:active, +.btn-default:focus { + background-color: transparent; + color: #000000; +} +.btn-default:hover { + background-color: #FFFFFF; +} +.btn-primary, +.btn-primary:hover, +.btn-primary:active, +.btn-primary:focus { + background-color: #4285f4; + color: #ffffff; +} +.btn-success, +.btn-success:hover, +.btn-success:active, +.btn-success:focus { + background-color: #0f9d58; + color: #ffffff; +} +.btn-info, +.btn-info:hover, +.btn-info:active, +.btn-info:focus { + background-color: #3498db; + color: #ffffff; +} +.btn-warning, +.btn-warning:hover, +.btn-warning:active, +.btn-warning:focus { + background-color: #ff5722; + color: #ffffff; +} +.btn-danger, +.btn-danger:hover, +.btn-danger:active, +.btn-danger:focus { + background-color: #db4437; + color: #ffffff; +} +.open > .dropdown-toggle.btn-default { + background-color: transparent; +} +.open > .dropdown-toggle.btn-primary { + background-color: #4285f4; +} +.open > .dropdown-toggle.btn-success { + background-color: #0f9d58; +} +.open > .dropdown-toggle.btn-info { + background-color: #3498db; +} +.open > .dropdown-toggle.btn-warning { + background-color: #ff5722; +} +.open > .dropdown-toggle.btn-danger { + background-color: #db4437; +} +.btn-flat { + box-shadow: none !important; +} +.btn-flat.btn-default:hover { + background: none; +} +.btn-group, +.btn-group-vertical { + position: relative; + border-radius: 4px; + margin: 10px 1px; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); +} +.btn-group:active:not(.btn-link), +.btn-group-vertical:active:not(.btn-link) { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.btn-group.open .dropdown-toggle, +.btn-group-vertical.open .dropdown-toggle { + box-shadow: none; +} +.btn-group.btn-group-raised, +.btn-group-vertical.btn-group-raised { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); +} +.btn-group.btn-group-raised:active:not(.btn-link), +.btn-group-vertical.btn-group-raised:active:not(.btn-link) { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.btn-group .btn, +.btn-group-vertical .btn, +.btn-group .btn:active, +.btn-group-vertical .btn:active, +.btn-group .btn-group, +.btn-group-vertical .btn-group { + box-shadow: none !important; + margin: 0; +} +.btn-group .btn:active .caret, +.btn-group-vertical .btn:active .caret { + margin-left: -1px; +} +.btn-group-flat { + box-shadow: none !important; +} +.ripple-wrapper { + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; + overflow: hidden; + border-radius: 2px; +} +.ripple { + fill: black; + fill-opacity: 0.05; + stroke: none; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: 50%; + -ms-transform-origin: 50%; + transform-origin: 50%; + opacity: 0; +} +.ripple.ripple-on { + transition: opacity 0.15s ease-in 0s -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + -webkit-transition: opacity 0.15s ease-in 0s, -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + opacity: 1; +} +.ripple.ripple-out { + -webkit-transition: opacity 0.2s linear 0s !important; + transition: opacity 0.2s linear 0s !important; + opacity: 0; +} +.form-horizontal .checkbox { + padding-top: 15px; +} +.checkbox label { + cursor: pointer; + padding-left: 45px; + position: relative; +} +.checkbox label span { + display: block; + position: absolute; + left: 10px; + transition-duration: 0.2s; +} +.checkbox label .bubble { + background: rgba(137, 137, 137, 0.3); + left: 0; + top: -10px; + height: 40px; + width: 40px; + border-radius: 100%; + transform: scale(0); + transition: transform .1s, opacity 0.2s 0.4s; + z-index: 1; +} +.checkbox label .bubble.animate { + transform: scale(1); + opacity: 0; +} +.checkbox label .box { + border: 2px solid #5A5F5A; + height: 20px; + width: 20px; + transition-delay: 0.2s; +} +.checkbox label .check { + top: -4px; + left: 16px; + width: 12px; + height: 24px; + border: 2px solid #0F9D58; + border-top: none; + border-left: none; + opacity: 0; + z-index: 888; + transform: rotate(45deg); + transition-delay: 0.2s; +} +.checkbox input[type=checkbox] { + display: none; +} +.checkbox input[type=checkbox]:checked ~ .box { + opacity: 0; + transform: scale(0) rotate(-180deg); +} +.checkbox input[type=checkbox]:checked ~ .bubble { + background: rgba(15, 157, 88, 0.3); +} +.checkbox input[type=checkbox]:checked ~ .check { + opacity: 1; + transform: scale(1) rotate(45deg); +} +.form-horizontal .radio { + margin-bottom: 10px; +} +.radio label { + cursor: pointer; + padding-left: 45px; + position: relative; +} +.radio label span { + display: block; + position: absolute; + left: 10px; + top: 2px; + transition-duration: 0.2s; +} +.radio label .bubble { + background: rgba(137, 137, 137, 0.3); + left: 0; + top: -8px; + height: 34px; + width: 34px; + border-radius: 100%; + transform: scale(0); + transition: transform .1s, opacity 0.2s 0.4s; + z-index: 1; +} +.radio label .bubble.animate { + transform: scale(1); + opacity: 0; +} +.radio label .circle { + border: 2px solid #5A5F5A; + height: 15px; + width: 15px; + border-radius: 100%; +} +.radio label .check { + height: 15px; + width: 15px; + border-radius: 100%; + background-color: #5a5f5a; + transform: scale(0); +} +.radio.radio-default .check { + background-color: #5a5f5a; +} +.radio.radio-primary .check { + background-color: #4285f4; +} +.radio.radio-success .check { + background-color: #0f9d58; +} +.radio.radio-info { + background-color: #3498db; +} +.radio.radio-warning .check { + background-color: #ff5722; +} +.radio.radio-danger .check { + background-color: #db4437; +} +.radio input[type=radio] { + display: none; +} +.radio input[type=radio]:checked ~ .check { + transform: scale(1); +} +.radio input[type=radio]:checked ~ .circle { + transform: scale(1); + border: 1px; +} +.form-control-wrapper { + position: relative; + /* active state */ +} +.form-control-wrapper .form-control, +.form-control-wrapper .form-control:focus { + float: none; + border: 0; + box-shadow: none; + border-radius: 0; + background: transparent; + border-bottom: 1px solid #757575; +} +.form-control-wrapper .form-control:focus { + outline: none; +} +.form-control-wrapper .floating-label { + color: #7E7E7E; + font-size: 14px; + position: absolute; + pointer-events: none; + left: 12px; + top: 7px; + transition: 0.2s ease all; + opacity: 0; +} +.form-control-wrapper .form-control:focus ~ .floating-label { + top: -10px; + font-size: 10px; + color: #5264ae; +} +.form-control-wrapper .form-control:not(.empty) ~ .floating-label { + top: -10px; + font-size: 10px; + opacity: 1; +} +.form-control-wrapper .form-control:focus:invalid ~ .floating-label { + color: #db4437; +} +.form-control-wrapper .form-control:focus ~ .material-input:after { + background-color: #5264ae; +} +.form-control-wrapper .form-control:focus:invalid ~ .material-input:before, +.form-control-wrapper .form-control:focus:invalid ~ .material-input:after { + background-color: #db4437; +} +.form-control-wrapper .form-control.empty ~ .floating-label { + opacity: 1; +} +.form-control-wrapper .material-input:before { + position: absolute; + content: ""; + width: 100%; + left: 0; + height: 2px; + background-color: #5264ae; + bottom: -1px; + transform: scaleX(0); + transition: transform 0s; +} +.form-control-wrapper .form-control:focus ~ .material-input:before { + transform: scaleX(1); + transition: transform 0.2s ease-out; +} +.form-control-wrapper .material-input:after { + content: ""; + position: absolute; + height: 18px; + width: 100px; + margin-top: -1px; + top: 25%; + left: 0; + pointer-events: none; + opacity: 0.9; +} +.form-control-wrapper .input-lg ~ .material-input:after { + height: 26px; +} +.form-control-wrapper textarea { + resize: none; +} +.form-control-wrapper textarea ~ .form-control-highlight { + margin-top: -11px; +} +.form-control-wrapper .form-control:focus ~ .material-input:after { + -webkit-animation: input-highlight 0.3s ease; + animation: input-highlight 0.3s ease; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; +} +.form-group.has-warning .material-input:before, +.form-group.has-warning input.form-control:focus ~ .material-input:after { + background: #ff5722; +} +.form-group.has-warning .control-label, +.form-group.has-warning input.form-control:focus ~ .floating-label { + color: #ff5722; +} +.form-group.has-error .material-input:before, +.form-group.has-error input.form-control:focus ~ .material-input:after { + background: #db4437; +} +.form-group.has-error .control-label, +.form-group.has-error input.form-control:focus ~ .floating-label { + color: #db4437; +} +.form-group.has-success .material-input:before, +.form-group.has-success input.form-control:focus ~ .material-input:after { + background: #0f9d58; +} +.form-group.has-success .control-label, +.form-group.has-success input.form-control:focus ~ .floating-label { + color: #0f9d58; +} +.form-group.has-info .material-input:before, +.form-group.has-info input.form-control:focus ~ .material-input:after { + background: #3498db; +} +.form-group.has-info .control-label, +.form-group.has-info input.form-control:focus ~ .floating-label { + color: #3498db; +} +.input-group .form-control-wrapper { + margin-right: 5px; + margin-left: 5px; + bottom: -10px; +} +.input-group .form-control-wrapper .form-control { + float: none; +} +.input-group .input-group-addon { + border: 0; +} +.input-group .input-group-btn .btn { + border-radius: 4px; +} +select.form-control { + border: 0; + box-shadow: none; + border-bottom: 1px solid #757575; + border-radius: 0; +} +select.form-control:focus { + box-shadow: none; + border-color: #757575; +} +.container .well, +.container .jumbotron { + background-color: #fff; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + border-radius: 2px; +} +.container .well p, +.container .jumbotron p { + font-weight: 300; +} +.modal-content { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + border-radius: 0; + border: 0; +} +.modal-content .modal-header { + border-bottom: 0; +} +.modal-content .modal-footer { + border-top: 0; +} +.modal-content .modal-footer .btn + .btn { + margin-bottom: 10px; +} +.list-group { + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + border-radius: 2px; +} +.list-group .list-group-item:last-child { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.list-group .list-group-item:first-child { + border-top-right-radius: 2px; + boborder-top-right-radius: 2px; +} +.navbar { + background-color: #4285f4; + border: 0; + border-radius: 0; +} +.navbar .navbar-brand { + position: relative; + height: 60px; + line-height: 30px; + color: #ffffff; +} +.navbar .navbar-brand:hover, +.navbar .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} +.navbar .navbar-text { + color: #ffffff; +} +.navbar .navbar-nav > li > a { + color: #ffffff; + padding-top: 20px; + padding-bottom: 20px; +} +.navbar .navbar-nav > li > a:hover, +.navbar .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar .navbar-nav > .active > a, +.navbar .navbar-nav > .active > a:hover, +.navbar .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: rgba(0, 0, 0, 0.05); +} +.navbar .navbar-nav > .disabled > a, +.navbar .navbar-nav > .disabled > a:hover, +.navbar .navbar-nav > .disabled > a:focus { + color: #e5e5e5; + background-color: transparent; +} +.navbar .navbar-toggle { + border-color: #ffffff; +} +.navbar .navbar-toggle:hover, +.navbar .navbar-toggle:focus { + background-color: transparent; +} +.navbar .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar .navbar-collapse, +.navbar .navbar-form { + border-color: #206ff2; +} +.navbar .navbar-nav > .open > a, +.navbar .navbar-nav > .open > a:hover, +.navbar .navbar-nav > .open > a:focus { + background-color: rgba(0, 0, 0, 0.05); + color: #ffffff; +} +@media (max-width: 767px) { + .navbar .navbar-nav .open .dropdown-menu > .dropdown-header { + border: 0; + color: #d4d4d4; + } + .navbar .navbar-nav .open .dropdown-menu .divider { + background-color: #ffffff; + } + .navbar .navbar-nav .open .dropdown-menu > li > a { + color: #ffffff; + } + .navbar .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar .navbar-nav .open .dropdown-menu > .active > a, + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: rgba(0, 0, 0, 0.05); + } + .navbar .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #e5e5e5; + background-color: transparent; + } +} +.navbar .navbar-link { + color: #ffffff; +} +.navbar .navbar-link:hover { + color: #ffffff; +} +.navbar .btn-link { + color: #ffffff; +} +.navbar .btn-link:hover, +.navbar .btn-link:focus { + color: #ffffff; +} +.navbar .btn-link[disabled]:hover, +fieldset[disabled] .navbar .btn-link:hover, +.navbar .btn-link[disabled]:focus, +fieldset[disabled] .navbar .btn-link:focus { + color: #e5e5e5; +} +.navbar .navbar-form .form-control-wrapper .form-control { + border-color: #ffffff; + color: #ffffff; +} +.navbar .navbar-form .form-control-wrapper .material-input:before, +.navbar .navbar-form .form-control-wrapper input:focus ~ .material-input:after { + background-color: #ffffff; +} +.navbar .navbar-form ::-webkit-input-placeholder { + color: #ffffff; +} +.navbar .navbar-form :-moz-placeholder { + color: #ffffff; +} +.navbar .navbar-form ::-moz-placeholder { + color: #ffffff; +} +.navbar .navbar-form :-ms-input-placeholder { + color: #ffffff; +} +.navbar-primary { + background-color: #4285f4; +} +.navbar-primary .navbar-collapse, +.navbar-primary .navbar-form { + border-color: #206ff2; +} +.navbar-success { + background-color: #0f9d58; +} +.navbar-success .navbar-collapse, +.navbar-success .navbar-form { + border-color: #0c7c46; +} +.navbar-info { + background-color: #3498db; +} +.navbar-info .navbar-collapse, +.navbar-info .navbar-form { + border-color: #2386c8; +} +.navbar-warning { + background-color: #ff5722; +} +.navbar-warning .navbar-collapse, +.navbar-warning .navbar-form { + border-color: #fd3d00; +} +.navbar-danger { + background-color: #db4437; +} +.navbar-danger .navbar-collapse, +.navbar-danger .navbar-form { + border-color: #ca3124; +} +.navbar-inverse { + background-color: #5264ae; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #465696; +} +.dropdown-menu { + border: 0; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); +} +.dropdown-menu .divider { + background-color: rgba(229, 229, 229, 0.12); +} +.dropdown-menu li { + overflow: hidden; + position: relative; +} +.dropdown-menu li a:hover { + background-color: transparent; +} +.alert, +.alert-success, +.alert-info, +.alert-warning, +.alert-danger { + border: 0px; + border-radius: 0; +} +.alert a, +.alert-success a, +.alert-info a, +.alert-warning a, +.alert-danger a, +.alert .alert-link, +.alert-success .alert-link, +.alert-info .alert-link, +.alert-warning .alert-link, +.alert-danger .alert-link { + color: #FFFFFF; +} +.alert-success { + color: #FFFFFF; + background-color: #0f9d58; +} +.alert-info { + color: #FFFFFF; + background-color: #3498db; +} +.alert-warning { + color: #FFFFFF; + background-color: #ff5722; +} +.alert-danger { + color: #FFFFFF; + background-color: #db4437; +} +.progress { + height: 4px; + border-radius: 0; + box-shadow: none; + background: #c8c8c8; +} +.progress .progress-bar { + box-shadow: none; +} +.progress .progress-bar, +.progress .progress-bar-info { + background-color: #3498db; +} +.progress .progress-bar-warning { + background-color: #ff5722; +} +.progress .progress-bar-danger { + background-color: #db4437; +} +.progress .progress-bar-success { + background-color: #0f9d58; +} +.text-warning { + color: #ff5722; +} +.text-primary { + color: #4285f4; +} +.text-danger { + color: #db4437; +} +.text-success { + color: #0f9d58; +} +.text-info { + color: #3498db; +} +.nav-tabs { + background: #4285f4; +} +.nav-tabs > li > a { + color: #FFFFFF; + border: 0; +} +.nav-tabs > li > a:hover { + background: transparent; + border: 0; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.open > a, +.nav-tabs > li.open > a:hover { + background: transparent !important; + border: 0 !important; + color: #FFFFFF !important; + font-weight: 500; +} +.nav-tabs > li.disabled > a, +.nav-tabs > li.disabled > a:hover { + color: rgba(255, 255, 255, 0.5); +} diff --git a/material.js b/material.js new file mode 100644 index 00000000..484a4c13 --- /dev/null +++ b/material.js @@ -0,0 +1,111 @@ +$(function (){ + // with ripple elements + var withRipple = ".btn:not('.btn-link'), .navbar a, .nav-tabs a"; + + // Add ripple elements to material buttons + $(withRipple).append(""); + + // Add fake-checkbox to material checkboxes + $(".checkbox label input").after(""); + + // Add fake-radio to material radios + $(".radio label input").after(""); + + // Add elements for material inputs + $("input.form-control, textarea.form-control").each( function() { + $(this).wrap("
"); + $(this).after(""); + if ($(this).hasClass("floating-label")) { + var placeholder = $(this).attr("placeholder"); + $(this).attr("placeholder", null).removeClass("floating-label"); + $(this).after("
" + placeholder + "
"); + } + if ($(this).val() === "") { + $(this).addClass("empty"); + } + }); + + + var mouseDown = false; + $(document).mousedown(function() { + mouseDown = true; + }).mouseup(function() { + mouseDown = false; + }); + + // Material buttons engine + $(document).on("mousedown", withRipple, function(e){ + // Cache elements + var $self = $(this), + $rippleWrapper = $self.find(".ripple-wrapper"), + $ripple = $self.find(".ripple"); + + // Remove previous animation + $ripple.attr("class", "ripple"); + $rippleWrapper.stop(true, true); + + // Get mouse position + var parentOffset = $self.offset(); + var relX = e.pageX - parentOffset.left; + var relY = e.pageY - parentOffset.top; + + // Move ripple to the click position + $ripple.attr({"cy":relY, "cx": relX}); + + // Start the animation + $rippleWrapper.attr("class", "ripple-wrapper").data("animating", true); + $ripple.attr("class", "ripple ripple-on").css("transform", "scale(" + $rippleWrapper.width() / 20 + ")"); + setTimeout(function() { + $rippleWrapper.attr("class", "ripple-wrapper").data("animating", false).trigger("rippleEnd"); + }, 500); + }) + .on("rippleEnd", withRipple, function() { + if (!mouseDown) { + var $self = $(this), + $rippleWrapper = $self.find(".ripple-wrapper"), + $ripple = $self.find(".ripple"); + + rippleOut($ripple, $rippleWrapper); + } + }) + .on("mouseup", withRipple, function() { + var $self = $(this), + $rippleWrapper = $self.find(".ripple-wrapper"), + $ripple = $self.find(".ripple"); + + if (!$rippleWrapper.data("animating")) { + rippleOut($ripple, $rippleWrapper); + } + + }); + + var rippleOut = function($ripple, $rippleWrapper) { + $ripple.attr("class", "ripple ripple-on ripple-out"); + $rippleWrapper.fadeOut(200, function() { + $rippleWrapper.attr("class", "ripple-wrapper").attr("style", ""); + $ripple.attr("class", "ripple").attr("style", ""); + }); + }; + + // Material inputs engine (bubble effect) + $(document).on("click", ".checkbox label, .radio label", function() { + var $bubble = $(this).find(".bubble"), + timestamp = "t" + new Date().getTime(); + $bubble.attr("class", "bubble"); + $bubble.addClass("animate").addClass(timestamp); + setTimeout(function() { + if ($bubble.hasClass(timestamp)) { + $bubble.removeClass("animate").removeClass(timestamp); + } + }, 200); + }); + + $(document).on("change", ".form-control", function() { + if ($(this).val() !== "") { + $(this).removeClass("empty"); + } else { + $(this).addClass("empty"); + } + }); +}); + diff --git a/material.less b/material.less new file mode 100644 index 00000000..d0404c4a --- /dev/null +++ b/material.less @@ -0,0 +1,115 @@ +// out: material.css +// Material Theme 0.0.1 +// ----------------------------------------------------- + +@import url(http://fonts.googleapis.com/css?family=Roboto+Condensed:300italic,400italic,700italic,400,700,300|Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic); + +@import "variables.less"; +@import "animations.less"; +@import "shadows.less"; + +body { + background-color: #EEEEEE; +} + +body, h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +// Buttons +@import "buttons.less"; + +// Ripple effect +@import "ripple.less"; + +// Checkboxes +@import "checkboxes.less"; + +// Radios +@import "radios.less"; + +// Text inputs +@import "inputs.less"; + + +.container { + .well, .jumbotron { + background-color: #fff; + .shadow-z-2(); + border-radius: 2px; + p { + font-weight: 300; + } + } +} + +.modal-content { + .shadow-z-2(); + border-radius: 0; + border: 0; + .modal-header { + border-bottom: 0; + } + .modal-footer { + border-top: 0; + .btn+.btn { + margin-bottom: 10px; + } + } +} + +.list-group { + .shadow-z-2(); + border-radius: 2px; + .list-group-item:last-child { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; + } + .list-group-item:first-child { + border-top-right-radius: 2px; + boborder-top-right-radius: 2px; + } +} + +// Navbar +@import "navbar.less"; + +.dropdown-menu { + border: 0; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + .divider { + background-color: rgba(229, 229, 229, 0.12); + } + li { + overflow: hidden; + position: relative; + a:hover { + background-color: transparent; + } + } +} + +// Alerts +@import "alerts.less"; + +// Progress bar +@import "progress.less"; + +// Typography +.text-warning { + color: @btn-warning; +} +.text-primary { + color: @btn-primary; +} +.text-danger { + color: @btn-danger; +} +.text-success { + color: @btn-success; +} +.text-info { + color: @btn-info; +} + +@import "tabs.less"; diff --git a/navbar.less b/navbar.less new file mode 100644 index 00000000..99c011e6 --- /dev/null +++ b/navbar.less @@ -0,0 +1,180 @@ +// main: material.less + +.navbar { + background-color: @navbar-default-bg; + border: 0; + border-radius: 0; + + .navbar-brand { + position: relative; + height: 60px; + line-height: 30px; + color: @navbar-brand-color; + &:hover, + &:focus { + color: @navbar-brand-color; + background-color: transparent; + } + } + + .navbar-text { + color: @navbar-color; + } + + .navbar-nav { + > li > a { + color: @navbar-link-color; + padding-top: 20px; + padding-bottom: 20px; + + &:hover, + &:focus { + color: @navbar-link-hover-color; + background-color: @navbar-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-link-active-color; + background-color: @navbar-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-link-disabled-color; + background-color: @navbar-link-disabled-bg; + } + } + } + + // Darken the responsive nav toggle + .navbar-toggle { + border-color: @navbar-toggle-border-color; + &:hover, + &:focus { + background-color: @navbar-toggle-hover-bg; + } + .icon-bar { + background-color: @navbar-toggle-icon-bar-bg; + } + } + + .navbar-collapse, + .navbar-form { + border-color: darken(@navbar-default-bg, 7%); + } + + // Dropdowns + .navbar-nav { + > .open > a { + &, + &:hover, + &:focus { + background-color: @navbar-link-active-bg; + color: @navbar-link-active-color; + } + } + + @media (max-width: 767px) { + // Dropdowns get custom display + .open .dropdown-menu { + > .dropdown-header { + border: 0; + color: darken(@navbar-link-color, 17%) + } + .divider { + background-color: @navbar-border; + } + > li > a { + color: @navbar-link-color; + &:hover, + &:focus { + color: @navbar-link-hover-color; + background-color: @navbar-link-hover-bg; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: @navbar-link-active-color; + background-color: @navbar-link-active-bg; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: @navbar-link-disabled-color; + background-color: @navbar-link-disabled-bg; + } + } + } + } + } + + .navbar-link { + color: @navbar-link-color; + &:hover { + color: @navbar-link-hover-color; + } + } + + .btn-link { + color: @navbar-link-color; + &:hover, + &:focus { + color: @navbar-link-hover-color; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @navbar-link-disabled-color; + } + } + } + + .navbar-form { + .form-control-wrapper { + .form-control { + border-color: @navbar-border; + color: @navbar-border; + } + .material-input:before, input:focus ~ .material-input:after { + background-color: @navbar-border; + } + } + ::-webkit-input-placeholder { color: @navbar-border; } + :-moz-placeholder { color: @navbar-border; }; + ::-moz-placeholder { color: @navbar-border; }; + :-ms-input-placeholder { color: @navbar-border; }; + } +} + +.navbar { + &-primary { + background-color: @navbar-default-bg; + .navbar-collapse, .navbar-form { border-color: darken(@navbar-default-bg, 7%); } + } + &-success { + background-color: @navbar-success-bg; + .navbar-collapse, .navbar-form { border-color: darken(@navbar-success-bg, 7%); } + } + &-info { background-color: @navbar-info-bg; + .navbar-collapse, .navbar-form { border-color: darken(@navbar-info-bg, 7%); } + } + &-warning { background-color: @navbar-warning-bg; + .navbar-collapse, .navbar-form { border-color: darken(@navbar-warning-bg, 7%); } + } + &-danger { background-color: @navbar-danger-bg; + .navbar-collapse, .navbar-form { border-color: darken(@navbar-danger-bg, 7%); } + } + &-inverse { background-color: @navbar-inverse-bg; + .navbar-collapse, .navbar-form { border-color: darken(@navbar-inverse-bg, 7%); } + } +} diff --git a/progress.less b/progress.less new file mode 100644 index 00000000..f6a87c12 --- /dev/null +++ b/progress.less @@ -0,0 +1,23 @@ +// main: material.less + +.progress { + height: 4px; + border-radius: 0; + box-shadow: none; + background: #c8c8c8; + .progress-bar { + box-shadow: none; + &, &-info { + background-color: @progress-info; + } + &-warning { + background-color: @progress-warning; + } + &-danger { + background-color: @progress-danger; + } + &-success { + background-color: @progress-success; + } + } +} diff --git a/radios.less b/radios.less new file mode 100644 index 00000000..a0fbaab1 --- /dev/null +++ b/radios.less @@ -0,0 +1,64 @@ +// main: material.less + +.form-horizontal .radio { + margin-bottom: 10px; +} +.radio { + label { + cursor: pointer; + padding-left: 45px; + position: relative; + span { + display: block; + position: absolute; + left: 10px; + top: 2px; + transition-duration: 0.2s; + } + .bubble { + background: @input-unchecked; + left: 0; + top: -8px; + height: 34px; + width: 34px; + border-radius: 100%; + transform: scale(0); + transition: transform .1s, opacity 0.2s 0.4s; + z-index: 1; + &.animate { + transform: scale(1); + opacity: 0; + } + } + .circle { + border: 2px solid #5A5F5A; + height: 15px; + width: 15px; + border-radius: 100%; + } + .check { + height: 15px; + width: 15px; + border-radius: 100%; + background-color: @radio-default; + transform: scale(0); + } + } + &.radio { + &-default .check { background-color: @radio-default; } + &-primary .check { background-color: @radio-primary; } + &-success .check { background-color: @radio-success; } + &-info { background-color: @radio-info; } + &-warning .check { background-color: @radio-warning; } + &-danger .check { background-color: @radio-danger; } + } + input[type=radio] { display: none; } + input[type=radio]:checked ~ .check { + transform: scale(1); + } + input[type=radio]:checked ~ .circle { + transform: scale(1); + border: 1px; + } + +} diff --git a/ripple.less b/ripple.less new file mode 100644 index 00000000..d6e0b048 --- /dev/null +++ b/ripple.less @@ -0,0 +1,34 @@ +// main: material.less + +.ripple-wrapper { + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; + overflow: hidden; + border-radius: 2px; +} +.ripple { + fill: black; + fill-opacity: 0.05; + stroke: none; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: 50%; + -ms-transform-origin: 50%; + transform-origin: 50%; + opacity: 0; +} +.ripple.ripple-on { + transition: opacity 0.15s ease-in 0s -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + -webkit-transition: opacity 0.15s ease-in 0s, -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + opacity: 1; +} +.ripple.ripple-out { + -webkit-transition: opacity 0.2s linear 0s !important; + transition: opacity 0.2s linear 0s !important; + opacity: 0; +} diff --git a/shadows.less b/shadows.less new file mode 100644 index 00000000..1a724193 --- /dev/null +++ b/shadows.less @@ -0,0 +1,49 @@ +// main: material.less + + +.shadow-z-1() { + box-shadow: 0 1px 3px rgba(0,0,0, .12), + 0 1px 2px rgba(0,0,0, .24) ; +} +.shadow-z-1 { + .shadow-z-1(); +} + +.shadow-z-2() { + box-shadow: 0 3px 6px rgba(0,0,0, .16), + 0 3px 6px rgba(0,0,0, .23) ; +} +.shadow-z-2 { + .shadow-z-2(); +} +.shadow-z-2-hover() { + box-shadow: 0 3px 6px rgba(0,0,0, .20), + 0 3px 6px rgba(0,0,0, .28) ; +} +.shadow-z-2-hover { + .shadow-z-2-hover(); +} + +.shadow-z-3() { + box-shadow: 0 10px 20px rgba(0,0,0, .19), + 0 6px 6px rgba(0,0,0, .23) ; +} +.shadow-z-3 { + .shadow-z-3(); +} + +.shadow-z-4() { + box-shadow: 0 14px 28px rgba(0,0,0, .25), + 0 10px 10px rgba(0,0,0, .22) ; +} +.shadow-z-4 { + .shadow-z-4(); +} + +.shadow-z-5() { + box-shadow: 0 19px 38px rgba(0,0,0, .30), + 0 15px 12px rgba(0,0,0, .22) ; +} +.shadow-z-5 { + .shadow-z-5(); +} diff --git a/tabs.less b/tabs.less new file mode 100644 index 00000000..b6717602 --- /dev/null +++ b/tabs.less @@ -0,0 +1,25 @@ +// main: material.less + +.nav-tabs { + background: @navbar-default-bg; + > li { + > a { + color: #FFFFFF; + border: 0; + &:hover { + background: transparent; + border: 0; + } + } + &.active > a, &.active > a:hover, &.open > a, &.open > a:hover { + background: transparent !important; + border: 0 !important; + color: #FFFFFF !important; + font-weight: 500; + } + &.disabled > a, &.disabled > a:hover { + color: rgba(255,255,255,0.5); + } + } + +} diff --git a/variables.less b/variables.less new file mode 100644 index 00000000..3cca9a4e --- /dev/null +++ b/variables.less @@ -0,0 +1,65 @@ +// main: material.less + +@btn-default: transparent; +@btn-default-text: #000000; + +@btn-primary: #4285F4; +@btn-primary-text: #FFFFFF; + +@btn-success: #0F9D58; +@btn-success-text: #FFFFFF; + +@btn-info: #3498DB; +@btn-info-text: #FFFFFF; + +@btn-warning: #FF5722; +@btn-warning-text: #FFFFFF; + +@btn-danger: #DB4437; +@btn-danger-text: #FFFFFF; + +@input-unchecked: rgba(137, 137, 137, 0.3); +@input-checked: rgba(15, 157, 88, 0.3); + +@radio-default: #5A5F5A; +@radio-primary: @btn-primary; +@radio-success: @btn-success; +@radio-info: @btn-info; +@radio-warning: @btn-warning; +@radio-danger: @btn-danger; + +@input-danger: @btn-danger; +@input-default: #5264AE; +@input-warning: @btn-warning; +@input-success: @btn-success; +@input-info: @btn-info; + +@navbar-danger-bg: @btn-danger; +@navbar-inverse-bg: #5264AE; +@navbar-warning-bg: @btn-warning; +@navbar-success-bg: @btn-success; +@navbar-info-bg: @btn-info; +@navbar-default-bg: @btn-primary; +@navbar-color: #FFFFFF; +@navbar-link-color: #FFFFFF; +@navbar-link-hover-color: #FFFFFF; +@navbar-link-hover-bg: transparent; +@navbar-link-active-color: #FFFFFF; +@navbar-link-active-bg: rgba(0,0,0,0.05); +@navbar-link-disabled-color: #E5E5E5; +@navbar-link-disabled-bg: transparent; +@navbar-brand-color: #FFFFFF; +@navbar-toggle-border-color: #FFFFFF; +@navbar-toggle-hover-bg: transparent; +@navbar-toggle-icon-bar-bg: #FFFFFF; +@navbar-border: #FFFFFF; + +@alert-success: @btn-success; +@alert-info: @btn-info; +@alert-warning: @btn-warning; +@alert-danger: @btn-danger; + +@progress-success: @btn-success; +@progress-info: @btn-info; +@progress-warning: @btn-warning; +@progress-danger: @btn-danger;