Initial commit: Backup der Webseiten

- zoesch.de
- blitzkiste.net
- gruene-hassberge (norbert.zoesch.de)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Felix Zösch
2025-12-13 01:17:15 +01:00
commit 07c290a453
4607 changed files with 1202735 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
.alert {
border: 0;
border-radius: 0;
// SASS conversion note: please mirror any content change in _mixins-shared.scss alert-variations-content
.generic-variations(~".alert", ~"", @mdb-text-color-light, {
background-color: @variation-color;
color: @variation-color-text;
a, .alert-link {
color: @variation-color-text;
}
});
&-info, &-danger, &-warning, &-success {
color: @mdb-text-color-light;
}
&-default {
a, .alert-link {
color: @mdb-text-color-primary;
}
}
}

View File

@@ -0,0 +1,246 @@
// specification: https://www.google.com/design/spec/components/buttons.html
.typo-button(@colorContrast: false) {
font-size: @mdb-btn-font-size-base;
font-weight: 500;
text-transform: uppercase;
//line-height: 1;
letter-spacing: 0;
& when (@colorContrast) {
opacity: 0.87;
}
}
// mdb default buttons are flat by default
// synchronized with mdl 11/23/15
.btn,
.input-group-btn .btn {
border: none;
border-radius: @border-radius-base;
position: relative;
padding: 8px 30px;
margin: 10px 1px;
.typo-button();
will-change: box-shadow, transform;
transition: box-shadow 0.2s @mdb-animation-curve-fast-out-linear-in,
background-color 0.2s @mdb-animation-curve-default,
color 0.2s @mdb-animation-curve-default;
outline: 0;
cursor: pointer;
text-decoration: none;
&::-moz-focus-inner {
border: 0;
}
//---
// btn-flat
background: transparent;
&:not(.btn-raised) {
.variations(~".btn", ~"", color, @mdb-text-color-primary);
box-shadow: none;
&:not(.btn-link) {
&:hover,
&:focus {
// spec: flat/light bg Hover: 20% #999999
background-color: fade(#999999, 20%);
.theme-dark & {
// spec: dark bg Hover: 15% #CCCCCC
background-color: fade(#CCCCCC, 15%);
}
}
}
}
//--
// color variations
&.btn-raised,
&.btn-fab,
.btn-group-raised & {
.background-variations(~".btn", ~"", @mdb-btn-background-color);
}
//---
// btn-raised
&.btn-raised,
.btn-group-raised & {
&:not(.btn-link) {
.shadow-2dp();
// colors on hover, focus, active
&:hover,
&:focus,
&.active,
&:active {
outline: 0;
// FIXME: SPEC - this should be the 600 color, how can we get that programmatically if at all? Or are we limited to the color palette only?
// SASS conversion note: please mirror any content change in _mixins-shared.scss button-variations-content
.generic-variations(~".btn", ~"", @mdb-btn-background-color, {
background-color: contrast(@variation-color, darken(@variation-color, 4%), lighten(@variation-color, 4%), @contrast-factor);
});
// Spec:
// - Raised Light/Light theme no hover.
// - Raised Dark/Dark theme Hover color: 600
.theme-dark & {
}
}
// shadow on active
&.active,
&:active {
&,
&:hover {
.shadow-4dp();
}
}
// shadow on focus
// Focus should take precedence over active, so specificity is needed
&:focus {
&,
&.active,
&:active {
&,
&:hover {
.focus-shadow();
}
}
}
}
}
&.btn-fab {
// see above for color variations
border-radius: 50%;
font-size: @mdb-btn-fab-font-size;
height: @mdb-btn-fab-size;
margin: auto;
min-width: @mdb-btn-fab-size;
width: @mdb-btn-fab-size;
padding: 0;
overflow: hidden;
box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24);
position: relative;
line-height: normal;
.ripple-container {
border-radius: 50%;
}
&.btn-fab-mini,
.btn-group-sm & {
height: @mdb-btn-fab-size-mini;
min-width: @mdb-btn-fab-size-mini;
width: @mdb-btn-fab-size-mini;
&.material-icons {
top: (@mdb-btn-icon-size-mini - @mdb-btn-fab-font-size) / 2;
left: (@mdb-btn-icon-size-mini - @mdb-btn-fab-font-size) / 2;
}
}
i.material-icons {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-(@mdb-btn-fab-font-size / 2), -(@mdb-btn-fab-font-size / 2));
line-height: @mdb-btn-fab-font-size;
width: @mdb-btn-fab-font-size;
}
}
// Align icons inside buttons with text
i.material-icons {
vertical-align: middle;
}
// Size variations
&.btn-lg,
.btn-group-lg & {
font-size: @mdb-btn-font-size-lg;
}
&.btn-sm,
.btn-group-sm & {
padding: 5px 20px;
font-size: @mdb-btn-font-size-sm;
}
&.btn-xs,
.btn-group-xs & {
padding: 4px 15px;
font-size: @mdb-btn-font-size-xs;
}
}
// Disabled buttons and button groups
.btn,
.input-group-btn .btn,
.btn-group,
.btn-group-vertical {
// have to ratchet up the specificity to kill drop shadows on disabled raised buttons
fieldset[disabled][disabled] &,
&.disabled,
&:disabled,
&[disabled][disabled] {
// spec: light theme: Disabled text: 26% #000000
color: fade(#000000, 26%);
.theme-dark & {
// spec: dark theme: Disabled text: 30% #FFFFFF
color: fade(#FFFFFF, 30%);
}
// flat buttons lose transparency
background: transparent;
// no box-shadow on raised - need specificity
&.btn-raised,
&.btn-group-raised {
&,
&.active,
&:active,
&:focus:not(:active) {
box-shadow: none;
}
}
}
}
// btn-group variations
.btn-group,
.btn-group-vertical {
position: relative;
//border-radius: 2px;
margin: 10px 1px;
// spec: https://www.google.com/design/spec/components/buttons.html#buttons-toggle-buttons
&.open {
.dropdown-toggle {
//box-shadow: none;
}
& > .dropdown-toggle.btn {
.variations(~".btn", ~"", background-color, @mdb-btn-background-color);
}
}
.dropdown-menu {
border-radius: 0 0 @border-radius-base @border-radius-base;
}
&.btn-group-raised {
.shadow-2dp();
}
& .btn + .btn,
.btn,
.btn:active,
.btn-group {
margin: 0;
}
}

View File

@@ -0,0 +1,66 @@
.card {
/***** Make height equal to width (http://stackoverflow.com/a/6615994) ****/
display: inline-block;
position: relative;
width: 100%;
.card-height-indicator {
margin-top: 100%;
}
.card-content {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
/**************************************************************************/
border-radius: @border-radius-base;
color: @mdb-card-body-text;
background: @mdb-card-body-background;
.shadow-z-2();
.card-image {
height: 60%;
position: relative;
overflow: hidden;
img {
width: 100%;
height: 100%;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
pointer-events: none;
}
.card-image-headline {
position: absolute;
bottom: 16px;
left: 18px;
color: @mdb-card-image-headline;
font-size: 2em;
}
}
.card-body {
height: 30%;
padding: 18px;
}
.card-footer {
height: 10%;
padding: 18px;
button, a {
margin: 0 !important;
position: relative;
bottom: 25px;
width: auto;
&:first-child {
left: -15px;
}
}
}
}

View File

@@ -0,0 +1,270 @@
// http://www.google.com/design/spec/components/selection-controls.html#selection-controls-checkbox
.checkbox label,
label.checkbox-inline {
cursor: pointer;
padding-left: 0; // Reset for Bootstrap rule
color: @mdb-checkbox-label-color;
.mdb-label-color-toggle-focus();
}
.checkbox,
label.checkbox-inline {
// Hide native checkbox
input[type=checkbox] {
opacity: 0;
position: absolute;
margin: 0;
z-index: -1;
width: 0;
height: 0;
overflow: hidden;
left: 0;
pointer-events: none;
}
.checkbox-material {
vertical-align: middle;
position: relative;
top: 3px;
&:before { // FIXME: document why this is necessary (doesn't seem to be on chrome)
display: block;
position: absolute;
top:-5px;
left: 0;
content: "";
background-color: rgba(0, 0, 0, .84);
height: @mdb-checkbox-size;
width: @mdb-checkbox-size;
border-radius: 100%;
z-index: 1;
opacity: 0;
margin: 0;
transform: scale3d(2.3, 2.3, 1);
}
.check {
position: relative;
display: inline-block;
width: @mdb-checkbox-size;
height: @mdb-checkbox-size;
border: @mdb-checkbox-border-size solid @mdb-checkbox-border-color;
border-radius: @border-radius-base;
overflow: hidden;
z-index: 1;
}
.check:before {
position: absolute;
content: "";
transform: rotate(45deg);
display: block;
margin-top: -4px;
margin-left: 6px;
width: 0;
height: 0;
box-shadow:
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0 inset;
}
}
input[type=checkbox] {
&:focus + .checkbox-material .check:after {
opacity: 0.2;
}
&:focus{
&:checked{
& + .checkbox-material:before {
animation: rippleOn 500ms;
}
& + .checkbox-material .check:before {
animation: checkbox-on @mdb-checkbox-animation-check forwards;
}
& + .checkbox-material .check:after {
animation: rippleOn @mdb-checkbox-animation-ripple forwards; // Ripple effect on check
}
}
&:not(:checked) {
& + .checkbox-material:before {
animation: rippleOff 500ms;
}
& + .checkbox-material .check:before {
animation: checkbox-off @mdb-checkbox-animation-check forwards;
}
& + .checkbox-material .check:after {
animation: rippleOff @mdb-checkbox-animation-ripple forwards; // Ripple effect on uncheck
}
}
}
&:checked {
// FIXME: once working - combine further to reduce code
& + .checkbox-material .check {
color: @mdb-checkbox-checked-color;
border-color: @mdb-checkbox-checked-color;
}
& + .checkbox-material .check:before {
color: @mdb-checkbox-checked-color;
box-shadow:
0 0 0 10px,
10px -10px 0 10px,
32px 0 0 20px,
0px 32px 0 20px,
-5px 5px 0 10px,
20px -12px 0 11px;
}
& + .checkbox-material .check:after {
//background-color: @brand-success; // FIXME: seems like tho wrong color, test and make sure it can be removed
}
}
}
// Style for disabled inputs
fieldset[disabled] &,
fieldset[disabled] & input[type=checkbox],
input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check:before,
input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check,
input[type=checkbox][disabled] + .circle {
opacity: 0.5;
}
input[type=checkbox][disabled] + .checkbox-material .check:after {
background-color: @mdb-text-color-primary;
transform: rotate(-45deg);
}
}
@keyframes checkbox-on {
0% {
box-shadow:
0 0 0 10px,
10px -10px 0 10px,
32px 0 0 20px,
0px 32px 0 20px,
-5px 5px 0 10px,
15px 2px 0 11px;
}
50% {
box-shadow:
0 0 0 10px,
10px -10px 0 10px,
32px 0 0 20px,
0px 32px 0 20px,
-5px 5px 0 10px,
20px 2px 0 11px;
}
100% {
box-shadow:
0 0 0 10px,
10px -10px 0 10px,
32px 0 0 20px,
0px 32px 0 20px,
-5px 5px 0 10px,
20px -12px 0 11px;
}
}
@keyframes checkbox-off {
0% {
box-shadow:
0 0 0 10px,
10px -10px 0 10px,
32px 0 0 20px,
0px 32px 0 20px,
-5px 5px 0 10px,
20px -12px 0 11px,
0 0 0 0 inset;
}
25% {
box-shadow:
0 0 0 10px,
10px -10px 0 10px,
32px 0 0 20px,
0px 32px 0 20px,
-5px 5px 0 10px,
20px -12px 0 11px,
0 0 0 0 inset;
}
50% {
transform: rotate(45deg);
margin-top: -4px;
margin-left: 6px;
width: 0;
height: 0;
box-shadow:
0 0 0 10px,
10px -10px 0 10px,
32px 0 0 20px,
0px 32px 0 20px,
-5px 5px 0 10px,
15px 2px 0 11px,
0 0 0 0 inset;
}
51% {
transform: rotate(0deg);
margin-top: -2px;
margin-left: -2px;
width: 20px;
height: 20px;
box-shadow:
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0,
0px 0 0 10px inset;
}
100% {
transform: rotate(0deg);
margin-top: -2px;
margin-left: -2px;
width: 20px;
height: 20px;
box-shadow:
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0,
0 0 0 0,
0px 0 0 0 inset;
}
}
@keyframes rippleOn {
0% {
opacity: 0;
}
50% {
opacity: 0.2;
}
100% {
opacity: 0;
}
}
@keyframes rippleOff {
0% {
opacity: 0;
}
50% {
opacity: 0.2;
}
100% {
opacity: 0;
}
}

View File

@@ -0,0 +1,362 @@
/*
To get this list of colors inject jQuery at http://www.google.com/design/spec/style/color.html#color-color-palette
Then, run this script to get the list.
(function() {
var colors = {}, main = {};
$(".color-group").each(function() {
var color = $(this).find(".name").text().trim().toLowerCase().replace(" ", "-");
colors[color] = {};
$(this).find(".color").not(".main-color").each(function() {
var shade = $(this).find(".shade").text().trim(),
hex = $(this).find(".hex").text().trim();
colors[color][shade] = hex;
});
main[color] = color + "-" + $(this).find(".main-color .shade").text().trim();
});
var LESS = "";
$.each(colors, function(name, shades) {
LESS += "\n\n";
$.each(shades, function(shade, hex) {
LESS += "@" + name + "-" + shade + ": " + hex + ";\n";
});
if (main[name]) {
LESS += "@" + name + ": " + main[name] + ";\n";
}
});
console.log(LESS);
})();
*/
@red-50: #ffebee;
@red-100: #ffcdd2;
@red-200: #ef9a9a;
@red-300: #e57373;
@red-400: #ef5350;
@red-500: #f44336;
@red-600: #e53935;
@red-700: #d32f2f;
@red-800: #c62828;
@red-900: #b71c1c;
@red-A100: #ff8a80;
@red-A200: #ff5252;
@red-A400: #ff1744;
@red-A700: #d50000;
@red: @red-500;
@pink-50: #fce4ec;
@pink-100: #f8bbd0;
@pink-200: #f48fb1;
@pink-300: #f06292;
@pink-400: #ec407a;
@pink-500: #e91e63;
@pink-600: #d81b60;
@pink-700: #c2185b;
@pink-800: #ad1457;
@pink-900: #880e4f;
@pink-A100: #ff80ab;
@pink-A200: #ff4081;
@pink-A400: #f50057;
@pink-A700: #c51162;
@pink: @pink-500;
@purple-50: #f3e5f5;
@purple-100: #e1bee7;
@purple-200: #ce93d8;
@purple-300: #ba68c8;
@purple-400: #ab47bc;
@purple-500: #9c27b0;
@purple-600: #8e24aa;
@purple-700: #7b1fa2;
@purple-800: #6a1b9a;
@purple-900: #4a148c;
@purple-A100: #ea80fc;
@purple-A200: #e040fb;
@purple-A400: #d500f9;
@purple-A700: #aa00ff;
@purple: @purple-500;
@deep-purple-50: #ede7f6;
@deep-purple-100: #d1c4e9;
@deep-purple-200: #b39ddb;
@deep-purple-300: #9575cd;
@deep-purple-400: #7e57c2;
@deep-purple-500: #673ab7;
@deep-purple-600: #5e35b1;
@deep-purple-700: #512da8;
@deep-purple-800: #4527a0;
@deep-purple-900: #311b92;
@deep-purple-A100: #b388ff;
@deep-purple-A200: #7c4dff;
@deep-purple-A400: #651fff;
@deep-purple-A700: #6200ea;
@deep-purple: @deep-purple-500;
@indigo-50: #e8eaf6;
@indigo-100: #c5cae9;
@indigo-200: #9fa8da;
@indigo-300: #7986cb;
@indigo-400: #5c6bc0;
@indigo-500: #3f51b5;
@indigo-600: #3949ab;
@indigo-700: #303f9f;
@indigo-800: #283593;
@indigo-900: #1a237e;
@indigo-A100: #8c9eff;
@indigo-A200: #536dfe;
@indigo-A400: #3d5afe;
@indigo-A700: #304ffe;
@indigo: @indigo-500;
@blue-50: #e3f2fd;
@blue-100: #bbdefb;
@blue-200: #90caf9;
@blue-300: #64b5f6;
@blue-400: #42a5f5;
@blue-500: #2196f3;
@blue-600: #1e88e5;
@blue-700: #1976d2;
@blue-800: #1565c0;
@blue-900: #0d47a1;
@blue-A100: #82b1ff;
@blue-A200: #448aff;
@blue-A400: #2979ff;
@blue-A700: #2962ff;
@blue: @blue-500;
@light-blue-50: #e1f5fe;
@light-blue-100: #b3e5fc;
@light-blue-200: #81d4fa;
@light-blue-300: #4fc3f7;
@light-blue-400: #29b6f6;
@light-blue-500: #03a9f4;
@light-blue-600: #039be5;
@light-blue-700: #0288d1;
@light-blue-800: #0277bd;
@light-blue-900: #01579b;
@light-blue-A100: #80d8ff;
@light-blue-A200: #40c4ff;
@light-blue-A400: #00b0ff;
@light-blue-A700: #0091ea;
@light-blue: @light-blue-500;
@cyan-50: #e0f7fa;
@cyan-100: #b2ebf2;
@cyan-200: #80deea;
@cyan-300: #4dd0e1;
@cyan-400: #26c6da;
@cyan-500: #00bcd4;
@cyan-600: #00acc1;
@cyan-700: #0097a7;
@cyan-800: #00838f;
@cyan-900: #006064;
@cyan-A100: #84ffff;
@cyan-A200: #18ffff;
@cyan-A400: #00e5ff;
@cyan-A700: #00b8d4;
@cyan: @cyan-500;
@teal-50: #e0f2f1;
@teal-100: #b2dfdb;
@teal-200: #80cbc4;
@teal-300: #4db6ac;
@teal-400: #26a69a;
@teal-500: #009688;
@teal-600: #00897b;
@teal-700: #00796b;
@teal-800: #00695c;
@teal-900: #004d40;
@teal-A100: #a7ffeb;
@teal-A200: #64ffda;
@teal-A400: #1de9b6;
@teal-A700: #00bfa5;
@teal: @teal-500;
@green-50: #e8f5e9;
@green-100: #c8e6c9;
@green-200: #a5d6a7;
@green-300: #81c784;
@green-400: #66bb6a;
@green-500: #4caf50;
@green-600: #43a047;
@green-700: #388e3c;
@green-800: #2e7d32;
@green-900: #1b5e20;
@green-A100: #b9f6ca;
@green-A200: #69f0ae;
@green-A400: #00e676;
@green-A700: #00c853;
@green: @green-500;
@light-green-50: #f1f8e9;
@light-green-100: #dcedc8;
@light-green-200: #c5e1a5;
@light-green-300: #aed581;
@light-green-400: #9ccc65;
@light-green-500: #8bc34a;
@light-green-600: #7cb342;
@light-green-700: #689f38;
@light-green-800: #558b2f;
@light-green-900: #33691e;
@light-green-A100: #ccff90;
@light-green-A200: #b2ff59;
@light-green-A400: #76ff03;
@light-green-A700: #64dd17;
@light-green: @light-green-500;
@lime-50: #f9fbe7;
@lime-100: #f0f4c3;
@lime-200: #e6ee9c;
@lime-300: #dce775;
@lime-400: #d4e157;
@lime-500: #cddc39;
@lime-600: #c0ca33;
@lime-700: #afb42b;
@lime-800: #9e9d24;
@lime-900: #827717;
@lime-A100: #f4ff81;
@lime-A200: #eeff41;
@lime-A400: #c6ff00;
@lime-A700: #aeea00;
@lime: @lime-500;
@yellow-50: #fffde7;
@yellow-100: #fff9c4;
@yellow-200: #fff59d;
@yellow-300: #fff176;
@yellow-400: #ffee58;
@yellow-500: #ffeb3b;
@yellow-600: #fdd835;
@yellow-700: #fbc02d;
@yellow-800: #f9a825;
@yellow-900: #f57f17;
@yellow-A100: #ffff8d;
@yellow-A200: #ffff00;
@yellow-A400: #ffea00;
@yellow-A700: #ffd600;
@yellow: @yellow-500;
@amber-50: #fff8e1;
@amber-100: #ffecb3;
@amber-200: #ffe082;
@amber-300: #ffd54f;
@amber-400: #ffca28;
@amber-500: #ffc107;
@amber-600: #ffb300;
@amber-700: #ffa000;
@amber-800: #ff8f00;
@amber-900: #ff6f00;
@amber-A100: #ffe57f;
@amber-A200: #ffd740;
@amber-A400: #ffc400;
@amber-A700: #ffab00;
@amber: @amber-500;
@orange-50: #fff3e0;
@orange-100: #ffe0b2;
@orange-200: #ffcc80;
@orange-300: #ffb74d;
@orange-400: #ffa726;
@orange-500: #ff9800;
@orange-600: #fb8c00;
@orange-700: #f57c00;
@orange-800: #ef6c00;
@orange-900: #e65100;
@orange-A100: #ffd180;
@orange-A200: #ffab40;
@orange-A400: #ff9100;
@orange-A700: #ff6d00;
@orange: @orange-500;
@deep-orange-50: #fbe9e7;
@deep-orange-100: #ffccbc;
@deep-orange-200: #ffab91;
@deep-orange-300: #ff8a65;
@deep-orange-400: #ff7043;
@deep-orange-500: #ff5722;
@deep-orange-600: #f4511e;
@deep-orange-700: #e64a19;
@deep-orange-800: #d84315;
@deep-orange-900: #bf360c;
@deep-orange-A100: #ff9e80;
@deep-orange-A200: #ff6e40;
@deep-orange-A400: #ff3d00;
@deep-orange-A700: #dd2c00;
@deep-orange: @deep-orange-500;
@brown-50: #efebe9;
@brown-100: #d7ccc8;
@brown-200: #bcaaa4;
@brown-300: #a1887f;
@brown-400: #8d6e63;
@brown-500: #795548;
@brown-600: #6d4c41;
@brown-700: #5d4037;
@brown-800: #4e342e;
@brown-900: #3e2723;
@brown-A100: #d7ccc8;
@brown-A200: #bcaaa4;
@brown-A400: #8d6e63;
@brown-A700: #5d4037;
@brown: @brown-500;
@grey-50: #fafafa;
@grey-100: #f5f5f5;
@grey-200: #eeeeee;
@grey-300: #e0e0e0;
@grey-400: #bdbdbd;
@grey-500: #9e9e9e; @rgb-grey-500: "158, 158, 158";
@grey-600: #757575;
@grey-700: #616161;
@grey-800: #424242;
@grey-900: #212121;
@grey-A100: #f5f5f5;
@grey-A200: #eeeeee;
@grey-A400: #bdbdbd;
@grey-A700: #616161;
@grey: @grey-500;
@blue-grey-50: #eceff1;
@blue-grey-100: #cfd8dc;
@blue-grey-200: #b0bec5;
@blue-grey-300: #90a4ae;
@blue-grey-400: #78909c;
@blue-grey-500: #607d8b;
@blue-grey-600: #546e7a;
@blue-grey-700: #455a64;
@blue-grey-800: #37474f;
@blue-grey-900: #263238;
@blue-grey-A100: #cfd8dc;
@blue-grey-A200: #b0bec5;
@blue-grey-A400: #78909c;
@blue-grey-A700: #455a64;
@blue-grey: @blue-grey-500;
@black: #000000; @rgb-black: "0,0,0";
@white: #ffffff; @rgb-white: "255,255,255";

View File

@@ -0,0 +1,93 @@
body {
background-color: @body-bg;
&.inverse {
background: #333333;
&, .form-control {
color: @mdb-text-color-light;
}
.modal,
.panel-default,
.card {
&,
.form-control {
background-color: initial;
color: initial;
}
}
}
}
body, h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4 {
font-family: @font-family-sans-serif;
font-weight: 300;
}
h5, h6{
font-weight: 400;
}
a, a:hover, a:focus {
color: @link-color;
& .material-icons {
vertical-align: middle;
}
}
@import "_form.less";
@import "_welljumbo.less";
@import "_buttons.less";
@import "_checkboxes.less";
@import "_togglebutton.less";
@import "_radios.less";
@import "_inputs.less";
legend {
border-bottom: 0;
}
@import "_lists.less";
@import "_navbar.less";
.dropdown-menu {
border: 0;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
.divider {
background-color: rgba(0, 0, 0, .12);
}
li {
overflow: hidden;
position: relative;
a:hover {
background-color: transparent;
color: @brand-primary;
}
}
}
@import "_alerts.less";
@import "_progress.less";
@import "_typography.less";
@import "_tabs.less";
@import "_popups.less";
@import "_cards.less";
@import "_dialogs.less";
@import "_panels.less";
@import "_dividers.less";
// Prevent highlight on mobile
* {
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
-webkit-tap-highlight-color: transparent;
&:focus {
outline: 0;
}
}
@import "_themes.less";
// External plugins
@import "_plugins.less";

View File

@@ -0,0 +1,52 @@
//
// Modals
// Material Design element Dialogs
// --------------------------------------------------
.modal-content {
.shadow-z-5();
border-radius: @border-radius-base;
border: none;
// Modal header
// Top section of the modal w/ title and dismiss
.modal-header {
border-bottom: none;
padding-top: 24px;
padding-right: 24px;
padding-bottom: 0;
padding-left: 24px;
}
// Modal body
// Where all modal content resides (sibling of .modal-header and .modal-footer)
.modal-body {
padding-top: 24px;
padding-right: 24px;
padding-bottom: 16px;
padding-left: 24px;
}
// Footer (for actions)
.modal-footer {
border-top: none;
padding: 7px;
button {
margin: 0;
padding-left: 16px;
padding-right: 16px;
width: auto;
&.pull-left {
padding-left: 5px;
padding-right: 5px;
position: relative;
left: -5px;
}
}
button+button {
margin-bottom: 16px;
}
}
.modal-body + .modal-footer {
padding-top: 0;
}
}
.modal-backdrop {
background: rgba(0,0,0,0.3);
}

View File

@@ -0,0 +1,71 @@
hr {
&.on-dark {
color: lighten(@black, 10%);
}
&.on-light {
color: lighten(@white, 10%);
}
@media (-webkit-min-device-pixel-ratio: 0.75),
(min--moz-device-pixel-ratio: 0.75),
(-o-device-pixel-ratio: 3/4),
(min-device-pixel-ratio: 0.75),
(min-resolution: 0.75dppx),
(min-resolution: 120dpi) {
height:0.75px;
}
@media (-webkit-min-device-pixel-ratio: 1),
(min--moz-device-pixel-ratio: 1),
(-o-device-pixel-ratio: 1),
(min-device-pixel-ratio: 1),
(min-resolution: 1dppx),
(min-resolution: 160dpi) {
height:1px;
}
@media (-webkit-min-device-pixel-ratio: 1.33),
(min--moz-device-pixel-ratio: 1.33),
(-o-device-pixel-ratio: 133/100),
(min-device-pixel-ratio: 1.33),
(min-resolution: 1.33dppx),
(min-resolution: 213dpi) {
height:1.333px;
}
@media (-webkit-min-device-pixel-ratio: 1.5),
(min--moz-device-pixel-ratio: 1.5),
(-o-device-pixel-ratio: 3/2),
(min-device-pixel-ratio: 1.5),
(min-resolution: 1.5dppx),
(min-resolution: 240dpi) {
height:1.5px;
}
@media (-webkit-min-device-pixel-ratio: 2),
(min--moz-device-pixel-ratio: 2),
(-o-device-pixel-ratio: 2/1),
(min-device-pixel-ratio: 2),
(min-resolution: 2dppx),
(min-resolution: 380dpi) {
height:2px;
}
@media (-webkit-min-device-pixel-ratio: 3),
(min--moz-device-pixel-ratio: 3),
(-o-device-pixel-ratio: 3/1),
(min-device-pixel-ratio: 3),
(min-resolution: 3dppx),
(min-resolution: 480dpi) {
height:3px;
}
@media (-webkit-min-device-pixel-ratio: 4),
(min--moz-device-pixel-ratio: 4),
(-o-device-pixel-ratio: 4/1),
(min-device-pixel-ratio: 3),
(min-resolution: 4dppx),
(min-resolution: 640dpi) {
height:4px;
}
}

View File

@@ -0,0 +1,40 @@
.mdb-label-color-toggle-focus() {
// override bootstrap focus and keep all the standard color (could be multiple radios in the form group)
.form-group.is-focused & {
color: @mdb-label-color;
// on focus just darken the specific labels, do not turn them to the brand-primary
&:hover,
&:focus {
color: @mdb-label-color-toggle-focus;
}
// correct the above focus color for disabled items
fieldset[disabled] & {
color: @mdb-label-color;
}
}
}
.form-horizontal {
// Consistent vertical alignment of radios and checkboxes
.radio,
.checkbox,
.radio-inline,
.checkbox-inline {
padding-top: 0;
}
.radio {
margin-bottom: 10px;
}
label {
text-align: right;
}
label.control-label {
margin: 0;
}
}

View File

@@ -0,0 +1,2 @@
@import (optional) "../../bootstrap/less/variables.less";
@import (optional) "../bower_components/bootstrap/less/variables.less";

View File

@@ -0,0 +1,4 @@
// hack due to differences between sass and less variable loading
// Less lazy loads, Sass doesn't. http://lesscss.org/features/#variables-feature-lazy-loading
// do nothing here for less.

View File

@@ -0,0 +1,221 @@
//
// Forms - sizing - material - mirrors bootstrap/forms.less with custom sizing
//
// LEAVE THIS IDENTICAL TO THE BOOTSTRAP FILE - DO NOT CUSTOMIZE HERE.
//
// NOTE: this is intentionally kept structurally _identical_ to the bootstrap/forms.less file to make it easier
// to identify differences in sizing approaches to form inputs.
// --------------------------------------------------
legend {
margin-bottom: @mdb-input-line-height-computed;
font-size: (@mdb-input-font-size-base * 1.5);
}
// Adjust output element
output {
padding-top: (@mdb-input-padding-base-vertical + 1);
font-size: @mdb-input-font-size-base;
line-height: @mdb-input-line-height-base;
}
.form-control {
height: @mdb-input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
padding: @mdb-input-padding-base-vertical @mdb-input-padding-base-horizontal;
font-size: @mdb-input-font-size-base;
line-height: @mdb-input-line-height-base;
}
// Special styles for iOS temporal inputs
//
// In Mobile Safari, setting `display: block` on temporal inputs causes the
// text within the input to become vertically misaligned. As a workaround, we
// set a pixel line-height that matches the given height of the input, but only
// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
//
// Note that as of 8.3, iOS doesn't support `datetime` or `week`.
@media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
&.form-control {
line-height: @mdb-input-height-base;
}
&.input-sm,
.input-group-sm & {
line-height: @mdb-input-height-small;
}
&.input-lg,
.input-group-lg & {
line-height: @mdb-input-height-large;
}
}
}
.radio,
.checkbox {
label {
min-height: @mdb-input-line-height-computed; // Ensure the input doesn't jump when there is no text
}
}
// Static form control text
//
// Apply class to a `p` element to make any string of text align with labels in
// a horizontal form layout.
.form-control-static {
// Size it appropriately next to real form controls
padding-top: (@mdb-input-padding-base-vertical + 1);
padding-bottom: (@mdb-input-padding-base-vertical + 1);
min-height: (@mdb-input-line-height-computed + @mdb-input-font-size-base);
}
// Form control sizing
//
// Relative text size, padding, and border-radii changes for form controls. For
// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
// element gets special love because it's special, and that's a fact!
// mixin pulled from bootstrap and altered for less/sass compatibility with sass parent hack.
// bootstrap-sass has this one, but we would have to then convert it back to less. chicken meet egg.
.input-size(@parent, @mdb-input-height, @padding-vertical, @padding-horizontal, @font-size, @line-height, @border-radius) {
@{parent} {
height: @mdb-input-height;
padding: @padding-vertical @padding-horizontal;
font-size: @font-size;
line-height: @line-height;
border-radius: @border-radius;
}
select@{parent} {
height: @mdb-input-height;
line-height: @mdb-input-height;
}
textarea@{parent},
select[multiple]@{parent} {
height: auto;
}
}
// Form control sizing
//
// Build on `.form-control` with modifier classes to decrease or increase the
// height and font-size of form controls.
//
// The `.form-group-* form-control` variations are sadly duplicated to avoid the
// issue documented in https://github.com/twbs/bootstrap/issues/15074.
.input-sm {
.input-size(~".input-sm", @mdb-input-height-small, @mdb-input-padding-small-vertical, @mdb-input-padding-small-horizontal, @mdb-input-font-size-small, @mdb-input-line-height-small, @mdb-input-border-radius-small);
}
.form-group-sm {
.form-control {
height: @mdb-input-height-small;
padding: @mdb-input-padding-small-vertical @mdb-input-padding-small-horizontal;
font-size: @mdb-input-font-size-small;
line-height: @mdb-input-line-height-small;
}
select.form-control {
height: @mdb-input-height-small;
line-height: @mdb-input-height-small;
}
textarea.form-control,
select[multiple].form-control {
height: auto;
}
.form-control-static {
height: @mdb-input-height-small;
min-height: (@mdb-input-line-height-computed + @mdb-input-font-size-small);
padding: (@mdb-input-padding-small-vertical + 1) @mdb-input-padding-small-horizontal;
font-size: @mdb-input-font-size-small;
line-height: @mdb-input-line-height-small;
}
}
.input-lg {
.input-size(~".input-lg", @mdb-input-height-large, @mdb-input-padding-large-vertical, @mdb-input-padding-large-horizontal, @mdb-input-font-size-large, @mdb-input-line-height-large, @mdb-input-border-radius-large);
}
.form-group-lg {
.form-control {
height: @mdb-input-height-large;
padding: @mdb-input-padding-large-vertical @mdb-input-padding-large-horizontal;
font-size: @mdb-input-font-size-large;
line-height: @mdb-input-line-height-large;
}
select.form-control {
height: @mdb-input-height-large;
line-height: @mdb-input-height-large;
}
textarea.form-control,
select[multiple].form-control {
height: auto;
}
.form-control-static {
height: @mdb-input-height-large;
min-height: (@mdb-input-line-height-computed + @mdb-input-font-size-large);
padding: (@mdb-input-padding-large-vertical + 1) @mdb-input-padding-large-horizontal;
font-size: @mdb-input-font-size-large;
line-height: @mdb-input-line-height-large;
}
}
.form-horizontal {
// Consistent vertical alignment of radios and checkboxes
//
// Labels also get some reset styles, but that is scoped to a media query below.
.radio,
.checkbox,
.radio-inline,
.checkbox-inline {
padding-top: (@mdb-input-padding-base-vertical + 1); // Default padding plus a border
}
// Account for padding we're adding to ensure the alignment and of help text
// and other content below items
.radio,
.checkbox {
min-height: (@mdb-input-line-height-computed + (@mdb-input-padding-base-vertical + 1));
}
// Reset spacing and right align labels, but scope to media queries so that
// labels on narrow viewports stack the same as a default form example.
@media (min-width: @screen-sm-min) {
.control-label {
padding-top: (@mdb-input-padding-base-vertical + 1); // Default padding plus a border
}
}
// Form group sizes
//
// Quick utility class for applying `.input-lg` and `.input-sm` styles to the
// inputs and labels within a `.form-group`.
.form-group-lg {
@media (min-width: @screen-sm-min) {
.control-label {
padding-top: ((@mdb-input-padding-large-vertical * @mdb-input-line-height-large) + 1);
font-size: @mdb-input-font-size-large;
}
}
}
.form-group-sm {
@media (min-width: @screen-sm-min) {
.control-label {
padding-top: (@mdb-input-padding-small-vertical + 1);
font-size: @mdb-input-font-size-small;
}
}
}
}

View File

@@ -0,0 +1,350 @@
@import '_inputs-size.less';
// label variations
.label {
border-radius: @border-radius-small;
.variations(~".label", ~"", background-color, @grey);
padding: .3em .6em; // Make top & bottom .label padding the same: https://github.com/twbs/bootstrap/pull/19631
}
// must be broken out for reuse - webkit selector breaks firefox
.label-static(@label-top, @static-font-size, @static-line-height) {
label.control-label {
top: @label-top;
left: 0;
// must repeat because the selector above is more specific than the general label sizing
font-size: @static-font-size;
line-height: @static-line-height;
}
}
.label-size-variant(@placeholder-font-size, @vertical-padding, @line-height, @static-font-size, @static-line-height, @help-block-font-size){
.form-control {
.material-placeholder({
font-size: @placeholder-font-size;
line-height: @line-height;
color: @mdb-input-placeholder-color;
font-weight: 400;
});
// margin-bottom must be specified to give help-block vertical space.
// @see also form-group padding-bottom (and size variants) re: collapsible margins. These work together.
margin-bottom: @vertical-padding;
}
// generic labels used anywhere in the form (not control-label)
.checkbox label,
.radio label,
label {
font-size: @placeholder-font-size;
line-height: @line-height;
color: @mdb-input-placeholder-color;
font-weight: 400;
}
// smaller focused or static size
label.control-label {
font-size: @static-font-size;
line-height: @static-line-height;
font-weight: 400;
margin: 16px 0 0 0; // std and lg
}
.help-block {
margin-top: 0; // allow the input margin to set-off the top of the help-block
font-size: @help-block-font-size;
}
}
.form-group-validation-state(@name, @color) {
&.@{name} { // e.g. has-error
.form-control {
box-shadow: none;
}
&.is-focused .form-control {
background-image: linear-gradient(@color, @color), linear-gradient(@mdb-input-underline-color, @mdb-input-underline-color);
}
label.control-label,
.help-block {
color: @color;
}
}
}
.form-group-size-variant(@parent, @placeholder-font-size, @label-top-margin, @vertical-padding, @line-height, @label-as-placeholder-shim) {
@static-font-size: ceil((@mdb-label-static-size-ratio * @placeholder-font-size));
@static-line-height: (@mdb-label-static-size-ratio * @line-height);
@label-as-placeholder-top: -1 * (@vertical-padding + @label-as-placeholder-shim);
@label-top: @label-as-placeholder-top - (@placeholder-font-size + @vertical-padding);
@help-block-font-size: ceil((@mdb-help-block-size-ratio * @placeholder-font-size));
@help-block-line-height: (@mdb-help-block-size-ratio * @line-height);
// this is outside a form-group
& when not (isstring(@parent)) {
.label-size-variant(@placeholder-font-size, @vertical-padding, @line-height, @static-font-size, @static-line-height, @help-block-font-size);
}
// this is inside a form-group, may be .form-group.form-group-sm or .form-group.form-group-lg
& when (isstring(@parent)) {
@{parent} {
.label-size-variant(@placeholder-font-size, @vertical-padding, @line-height, @static-font-size, @static-line-height, @help-block-font-size);
// form-group padding-bottom
// upon collapsing margins, the largest margin is honored which collapses the form-control margin-bottom,
// so the form-control margin-bottom must also be expressed as form-group padding
padding-bottom: @vertical-padding;
// form-group margin-top must be large enough for the label and the label's top padding since label is absolutely positioned
margin: (@label-top-margin + @static-font-size) 0 0 0;
// larger labels as placeholders
&.label-floating,
&.label-placeholder {
label.control-label {
top: @label-as-placeholder-top; // place the floating label to look like a placeholder with input padding
font-size: @placeholder-font-size;
line-height: @line-height;
}
}
// static, focused, or autofill floating labels
&.label-static,
&.label-floating.is-focused,
&.label-floating:not(.is-empty) {
.label-static(@label-top, @static-font-size, @static-line-height);
}
// #559 Fix for webkit/chrome autofill - rule must be separate because it breaks firefox otherwise #731
&.label-floating input.form-control:-webkit-autofill ~ label.control-label {
.label-static(@label-top, @static-font-size, @static-line-height);
}
}
}
}
// -----
// Inputs
//
// Reference http://www.google.com/design/spec/components/text-fields.html
// MDL implementation: http://www.getmdl.io/components/index.html#textfields-section
.form-control,
.form-group .form-control {
border: 0;
background-image: linear-gradient(@brand-primary, @brand-primary), linear-gradient(@mdb-input-underline-color, @mdb-input-underline-color);
background-size: 0 2px, 100% 1px;
background-repeat: no-repeat;
background-position: center bottom, center calc(~"100% - 1px");
background-color: rgba(0, 0, 0, 0);
transition: background 0s ease-out;
float: none;
box-shadow: none;
border-radius: 0;
// Placeholders and and labels-as-placeholders should look the same
.material-placeholder({
color: @mdb-input-placeholder-color;
font-weight: 400;
});
//&:textarea { // appears to be an invalid selector
// height: 40px;
//}
&[readonly],
&[disabled],
fieldset[disabled] & {
background-color: rgba(0, 0, 0, 0);
}
&[disabled],
fieldset[disabled] & {
background-image: none;
border-bottom: 1px dotted @mdb-input-underline-color;
}
}
// -----
// Labels with form-group signalled state
//
// Reference http://www.google.com/design/spec/components/text-fields.html
// MDL implementation: http://www.getmdl.io/components/index.html#textfields-section
//.variations(~" label.control-label", color, @mdb-input-placeholder-color); // default label color variations
.form-group {
position: relative;
// -----
// Labels with form-group signalled state
//
// Reference http://www.google.com/design/spec/components/text-fields.html
// MDL implementation: http://www.getmdl.io/components/index.html#textfields-section
&.label-static,
&.label-placeholder,
&.label-floating {
label.control-label {
position: absolute;
pointer-events: none;
transition: 0.3s ease all;
}
}
// hint to browser for optimization
// TODO: evaluate effectiveness - looking for community feedback
&.label-floating label.control-label {
will-change: left, top, contents;
}
// hide label-placeholders when the field is not empty
&.label-placeholder:not(.is-empty){
label.control-label{
display: none;
}
}
// Help blocks - position: absolute approach - uses no vertical space, text wrapping - not so good.
.help-block {
position: absolute; // do not use position: absolute because width/wrapping isn't automatic and overflows occur
display: none;
}
// form-group is-focused display
&.is-focused {
.form-control {
outline: none;
background-image: linear-gradient(@brand-primary, @brand-primary), linear-gradient(@mdb-input-underline-color, @mdb-input-underline-color);
background-size: 100% 2px, 100% 1px;
box-shadow: none;
transition-duration: 0.3s;
.material-input:after {
background-color: @brand-primary;
}
}
//.variations(~".is-focused label.control-label", color, @brand-primary); // focused label color variations
label,
label.control-label {
color: @brand-primary;
}
//.variations(~".is-focused.label-placeholder label.control-label", color, @mdb-input-placeholder-color); // default label color variations
&.label-placeholder {
label,
label.control-label {
color: @mdb-input-placeholder-color;
}
}
.help-block {
display: block;
}
}
.form-group-validation-state(has-warning, @brand-warning);
.form-group-validation-state(has-error, @brand-danger);
.form-group-validation-state(has-success, @brand-success);
.form-group-validation-state(has-info, @brand-info);
textarea {
resize: none;
& ~ .form-control-highlight {
margin-top: -11px;
}
}
select {
appearance: none; // Fix for OS X
& ~ .material-input:after {
display: none;
}
}
}
// default floating size/location without a form-group (will skip form-group styles, and just render default sizing variation)
.form-group-size-variant(null, @mdb-input-font-size-base, @mdb-label-top-margin-base, @mdb-input-padding-base-vertical, @mdb-input-line-height-base, @mdb-label-as-placeholder-shim-base);
// default floating size/location with a form-group (need margin etc from a default form-group)
.form-group-size-variant(~".form-group", @mdb-input-font-size-base, @mdb-label-top-margin-base, @mdb-input-padding-base-vertical, @mdb-input-line-height-base, @mdb-label-as-placeholder-shim-base);
// sm floating size/location
.form-group-size-variant(~".form-group.form-group-sm", @mdb-input-font-size-small, @mdb-label-top-margin-small, @mdb-input-padding-small-vertical, @mdb-input-line-height-small, @mdb-label-as-placeholder-shim-small);
// lg floating size/location
.form-group-size-variant(~".form-group.form-group-lg", @mdb-input-font-size-large, @mdb-label-top-margin-large, @mdb-input-padding-large-vertical, @mdb-input-line-height-large, @mdb-label-as-placeholder-shim-large);
select.form-control {
border: 0;
box-shadow: none;
border-radius: 0;
.form-group.is-focused & {
box-shadow: none;
border-color: @mdb-input-underline-color;
}
&[multiple] {
&,
.form-group.is-focused & {
height: 85px;
}
}
}
.input-group-button-variation(@vertical-padding) {
.input-group-btn {
.btn {
margin: 0 0 @vertical-padding 0;
}
}
}
// ----------------
// input group/addon related styles
// default margin - no form-group required
.input-group-button-variation(@mdb-input-padding-base-vertical);
.form-group {
//.form-control {
// float: none;
//}
// sm margin
&.form-group-sm {
.input-group-button-variation(@mdb-input-padding-small-vertical);
}
// lg margin
&.form-group-lg {
.input-group-button-variation(@mdb-input-padding-large-vertical);
}
}
.input-group { // may be in or outside of form-group
.input-group-btn {
padding: 0 12px; // match addon spacing
}
.input-group-addon {
border: 0;
background: transparent;
}
}
// Input files - hide actual input - requires specific markup in the sample.
.form-group input[type=file] {
opacity: 0;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 100;
}

View File

@@ -0,0 +1,102 @@
.list-group {
border-radius: 0;
.list-group-item {
background-color: transparent;
overflow: hidden;
border: 0;
border-radius: 0;
padding: 0 16px;
&.baseline {
border-bottom: 1px solid #cecece;
&:last-child {
border-bottom: none;
}
}
.row-picture, .row-action-primary {
//float: left; WARNING: float can't be used with display: inline-block. Certain properties shouldn't be used with certain display property values. (display-property-grouping) Browsers: All
display: inline-block;
padding-right: 16px;
img, i, label {
display: block;
width: 56px;
height: 56px;
}
img {
background: rgba(0,0,0,0.1);
padding: 1px;
&.circle {
border-radius: 100%;
}
}
i {
background: rgba(0,0,0,0.25);
border-radius: 100%;
text-align: center;
line-height: 56px;
font-size: 20px;
color: white;
}
label {
margin-left: 7px;
margin-right: -7px;
margin-top: 5px;
margin-bottom: -5px;
.checkbox-material {
left: -10px;
}
}
}
.row-content {
display: inline-block;
width: ~"calc(100% - 92px)";
min-height: 66px;
.action-secondary {
position: absolute;
right: 16px;
top: 16px;
i {
font-size: 20px;
color: rgba(0,0,0,0.25);
cursor: pointer;
}
}
.action-secondary ~ * {
max-width: ~"calc(100% - 30px)";
}
.least-content {
position: absolute;
right: 16px;
top: 0;
color: rgba(0,0,0,0.54);
font-size: 14px;
}
}
.list-group-item-heading {
color: rgba(0, 0, 0, 0.77);
font-size: 20px;
line-height: 29px;
}
}
.list-group-item.active {
&:hover, &:focus {
background: rgba(0,0,0,.15);
outline: 10px solid rgba(0,0,0,.15);
}
.list-group-item-heading, .list-group-item-text {
color: @mdb-text-color-primary;
}
}
.list-group-separator {
clear: both;
overflow: hidden;
margin-top: 10px;
margin-bottom: 10px;
&:before {
content: "";
width: ~"calc(100% - 90px)";
border-bottom: 1px solid rgba(0,0,0,0.1);
float: right;
}
}
}

View File

@@ -0,0 +1,86 @@
// Placeholder text
.material-placeholder(@rules) {
&::-moz-placeholder { @rules(); } // Firefox
&:-ms-input-placeholder { @rules(); } // Internet Explorer 10+
&::-webkit-input-placeholder { @rules(); } // Safari and Chrome
}
// usage: .variations(~" .check", color, transparent);
.variations(@component, @selector-suffix, @property, @color-default) {
.generic-variations(@component, @selector-suffix, @color-default, {
@{property}: @variation-color;
});
}
.background-variations(@component, @selector-suffix, @color-default) {
.generic-variations(@component, @selector-suffix, @color-default, {
background-color: @variation-color;
& when (@variation-color = @mdb-btn-background-color) {
color: @mdb-text-color-primary;
}
& when not (@variation-color = @mdb-btn-background-color) {
color: @variation-color-text;
}
});
}
.text-variations(@component, @selector-suffix, @color-default) {
.generic-variations(@component, @selector-suffix, @color-default, {
color: @variation-color;
});
}
//
// To use this mixin you should pass a function as final parameter to define
// the style. In that definition you can use the following variables to define it.
//
// @component: ~".btn" - one of the bs components that have -default, -danger, etc.
// @variation-color
// @variation-color-text
//
.generic-variations(@component, @selector-suffix, @color-default, @func) {
@contrast-factor: 40%;
// bootstrap styles
&@{selector-suffix},
&@{component}-default@{selector-suffix} {
@variation-color: @color-default;
@variation-color-text: @mdb-text-color-light;
@func();
}
&@{component}-inverse@{selector-suffix} {
@variation-color: @mdb-brand-inverse;
//@variation-color-text: contrast(@mdb-brand-inverse, @mdb-text-color-primary, @mdb-text-color-light, @contrast-factor);
@variation-color-text: contrast(@mdb-brand-inverse, @mdb-text-color-primary-hex, @mdb-text-color-light-hex, @contrast-factor);
@func();
}
&@{component}-primary@{selector-suffix} {
@variation-color: @brand-primary;
@variation-color-text: @mdb-text-color-light;
@func();
}
&@{component}-success@{selector-suffix} {
@variation-color: @brand-success;
@variation-color-text: @mdb-text-color-light;
@func();
}
&@{component}-info@{selector-suffix} {
@variation-color: @brand-info;
@variation-color-text: @mdb-text-color-light;
@func();
}
&@{component}-warning@{selector-suffix} {
@variation-color: @brand-warning;
@variation-color-text: @mdb-text-color-light;
@func();
}
&@{component}-danger@{selector-suffix} {
@variation-color: @brand-danger;
@variation-color-text: @mdb-text-color-light;
@func();
}
}

View File

@@ -0,0 +1,239 @@
.navbar {
background-color: @brand-primary;
border: 0;
border-radius: 0;
.navbar-brand {
position: relative;
height: 60px;
line-height: 30px;
color: inherit;
&:hover,
&:focus {
color: inherit;
background-color: transparent;
}
}
.navbar-text {
color: inherit;
margin-top: 20px;
margin-bottom: 20px;
}
.navbar-nav {
> li > a {
color: inherit;
padding-top: 20px;
padding-bottom: 20px;
&:hover,
&:focus {
color: inherit;
background-color: transparent;
}
}
> .active > a {
&,
&:hover,
&:focus {
color: inherit;
background-color: rgba(255, 255, 255, 0.1);
}
}
> .disabled > a {
&,
&:hover,
&:focus {
color: inherit;
background-color: transparent;
opacity: 0.9;
}
}
}
// Darken the responsive nav toggle
.navbar-toggle {
border: 0;
&:hover,
&:focus {
background-color: transparent;
}
.icon-bar {
background-color: inherit;
border: 1px solid;
}
}
.navbar-default .navbar-toggle,
.navbar-inverse .navbar-toggle {
border-color: transparent;
}
.navbar-collapse,
.navbar-form {
border-color: rgba(0,0,0,0.1);
}
// Dropdowns
.navbar-nav {
> .open > a {
&,
&:hover,
&:focus {
background-color: transparent;
color: inherit;
}
}
@media (max-width: @grid-float-breakpoint-max) {
.navbar-text {
color: inherit;
margin-top: 15px;
margin-bottom: 15px;
}
// Dropdowns get custom display
.open .dropdown-menu {
> .dropdown-header {
border: 0;
color: inherit;
}
.divider {
border-bottom: 1px solid;
opacity: 0.08;
}
> li > a {
color: inherit;
&:hover,
&:focus {
color: inherit;
background-color: transparent;
}
}
> .active > a {
&,
&:hover,
&:focus {
color: inherit;
background-color: transparent;
}
}
> .disabled > a {
&,
&:hover,
&:focus {
color: inherit;
background-color: transparent;
}
}
}
}
}
.navbar-link {
color: inherit;
&:hover {
color: inherit;
}
}
.btn-link {
color: inherit;
&:hover,
&:focus {
color: inherit;
}
&[disabled],
fieldset[disabled] & {
&:hover,
&:focus {
color: inherit;
}
}
}
.navbar-form {
margin-top: 16px;
.form-group {
margin: 0;
padding: 0;
.material-input:before,
&.is-focused .material-input:after {
background-color: inherit;
}
}
.form-group .form-control,
.form-control {
border-color: inherit;
color: inherit;
padding: 0;
margin: 0;
// re-normalize inputs in a navbar the size of standard bootstrap since our normal inputs are larger by spec than bootstrap
//---
//height: @mdb-input-height-base;
@bs-line-height-base: 1.428571429;
@bs-line-height-computed: floor((@font-size-base * @bs-line-height-base)); // ~20px
height: (@bs-line-height-computed + 8px);
font-size: @font-size-base;
line-height: @bs-line-height-base;
//---
}
}
// SASS conversion note: please mirror any content change in _mixins-shared.scss navbar-variations-content
.generic-variations(~".navbar", ~"", @brand-primary, {
background-color: @variation-color;
color: @variation-color-text;
// deeply defined to override welljumbo class without !impotant need
.navbar-form .form-group input.form-control,
.navbar-form input.form-control {
.material-placeholder({
color: @variation-color-text;
});
}
.dropdown-menu {
border-radius: @border-radius-base;
li > a {
font-size: @mdb-dropdown-font-size;
padding: 13px 16px;
&:hover,
&:focus {
color: @variation-color;
background-color: @grey-200;
}
}
.active > a {
&:hover,
&:focus {
color: @variation-color-text;
}
background-color: @variation-color;
color: @variation-color-text;
}
}
});
&-inverse {
background-color: @indigo;
}
@media (max-width: @screen-md-max) {
.navbar-brand {
height: 50px;
padding: 10px 15px;
}
.navbar-form {
margin-top: 10px;
}
.navbar-nav > li > a {
padding-top: 15px;
padding-bottom: 15px;
}
}
}

View File

@@ -0,0 +1,21 @@
.panel {
border-radius: 2px;
border: 0;
.variations(~".panel", ~" > .panel-heading", background-color, @grey-200);
.shadow-z-1;
}
[class*="panel-"] > .panel-heading {
color: @mdb-text-color-light;
border: 0;
}
.panel-default, .panel:not([class*="panel-"]) {
> .panel-heading {
color: @mdb-text-color-primary;
}
}
.panel-footer {
background-color: @grey-200;
}

View File

@@ -0,0 +1,5 @@
// External plugins
@import "plugins/_plugin-snackbarjs.less";
@import "plugins/_plugin-nouislider.less";
@import "plugins/_plugin-selectize.less";
@import "plugins/_plugin-dropdownjs.less";

View File

@@ -0,0 +1,18 @@
.popover, .tooltip-inner {
color: @mdb-popover-color;
line-height: 1em;
background: @mdb-popover-background;
border: none;
border-radius: @border-radius-base;
.shadow-z-1();
}
.tooltip, .tooltip.in {
opacity: 1;
}
.popover, .tooltip {
.arrow, .tooltip-arrow {
display: none;
}
}

View File

@@ -0,0 +1,10 @@
.progress {
height: 4px;
border-radius: 0;
box-shadow: none;
background: #c8c8c8;
.progress-bar {
box-shadow: none;
.variations(~".progress-bar", ~"", background-color, @brand-primary);
}
}

View File

@@ -0,0 +1,115 @@
.radio-color(@color, @opacity){
& ~ .check,
& ~ .circle {
opacity: @opacity;
}
& ~ .check {
background-color: @color;
}
& ~ .circle {
border-color: @color;
}
}
.radio label, label.radio-inline {
cursor: pointer;
padding-left: 45px;
position: relative;
color: @mdb-radio-label-color;
.mdb-label-color-toggle-focus();
}
.radio, label.radio-inline {
span {
display: block;
position: absolute;
left: 10px;
top: 2px;
transition-duration: 0.2s;
}
.circle {
border: 2px solid @mdb-radio-color-off;
height: 15px;
width: 15px;
border-radius: 100%;
}
.check {
height: 15px;
width: 15px;
border-radius: 100%;
background-color: @mdb-radio-color-on;
transform: scale3d(0, 0, 0);
}
.check:after {
display: block;
position: absolute;
content: "";
background-color: @mdb-text-color-primary;
left: -18px;
top: -18px;
height: 50px;
width: 50px;
border-radius: 100%;
z-index: 1;
opacity: 0;
margin: 0;
transform: scale3d(1.5, 1.5, 1);
}
input[type=radio]:focus:not(:checked) ~ .check:after {
animation: rippleOff 500ms;
}
input[type=radio]:focus:checked ~ .check:after {
animation: rippleOn 500ms;
}
input[type=radio] {
opacity: 0;
height: 0;
width: 0;
overflow: hidden;
&:checked {
.radio-color(@mdb-radio-color-on, 1);
}
&:checked ~ .check {
transform: scale3d(0.55, 0.55, 1);
}
}
input[type=radio][disabled] {
// light theme spec: Disabled: #000000, Opacity 26%
.radio-color(@black, 0.26);
// dark theme spec: Disabled: #FFFFFF, Opacity 30%
.theme-dark & {
.radio-color(@white, 0.30);
}
}
}
@keyframes rippleOn {
0% {
opacity: 0;
}
50% {
opacity: 0.2;
}
100% {
opacity: 0;
}
}
@keyframes rippleOff {
0% {
opacity: 0;
}
50% {
opacity: 0.2;
}
100% {
opacity: 0;
}
}

View File

@@ -0,0 +1,82 @@
.shadow-z-1() {
box-shadow:
0 1px 6px 0 rgba(0, 0, 0, 0.12),
0 1px 6px 0 rgba(0, 0, 0, 0.12);
}
.shadow-z-1-hover() {
box-shadow:
0 5px 11px 0 rgba(0, 0, 0, 0.18),
0 4px 15px 0 rgba(0, 0, 0, 0.15);
}
.shadow-z-2() {
box-shadow:
0 8px 17px 0 rgba(0, 0, 0, 0.2),
0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
.shadow-z-3() {
box-shadow:
0 12px 15px 0 rgba(0, 0, 0, 0.24),
0 17px 50px 0 rgba(0, 0, 0, 0.19);
}
.shadow-z-4() {
box-shadow:
0 16px 28px 0 rgba(0, 0, 0, 0.22),
0 25px 55px 0 rgba(0, 0, 0, 0.21);
}
.shadow-z-5() {
box-shadow:
0 27px 24px 0 rgba(0, 0, 0, 0.2),
0 40px 77px 0 rgba(0, 0, 0, 0.22);
}
/* Shadows (from mdl http://www.getmdl.io/) */
// Focus shadow mixin.
.focus-shadow() {
box-shadow: 0 0 8px rgba(0,0,0,.18),
0 8px 16px rgba(0,0,0,.36);
}
.shadow-2dp() {
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, @mdb-shadow-key-penumbra-opacity),
0 3px 1px -2px rgba(0, 0, 0, @mdb-shadow-key-umbra-opacity),
0 1px 5px 0 rgba(0, 0, 0, @mdb-shadow-ambient-shadow-opacity);
}
.shadow-3dp() {
box-shadow: 0 3px 4px 0 rgba(0, 0, 0, @mdb-shadow-key-penumbra-opacity),
0 3px 3px -2px rgba(0, 0, 0, @mdb-shadow-key-umbra-opacity),
0 1px 8px 0 rgba(0, 0, 0, @mdb-shadow-ambient-shadow-opacity);
}
.shadow-4dp() {
box-shadow: 0 4px 5px 0 rgba(0, 0, 0, @mdb-shadow-key-penumbra-opacity),
0 1px 10px 0 rgba(0, 0, 0, @mdb-shadow-ambient-shadow-opacity),
0 2px 4px -1px rgba(0, 0, 0, @mdb-shadow-key-umbra-opacity);
}
.shadow-6dp() {
box-shadow: 0 6px 10px 0 rgba(0, 0, 0, @mdb-shadow-key-penumbra-opacity),
0 1px 18px 0 rgba(0, 0, 0, @mdb-shadow-ambient-shadow-opacity),
0 3px 5px -1px rgba(0, 0, 0, @mdb-shadow-key-umbra-opacity);
}
.shadow-8dp() {
box-shadow: 0 8px 10px 1px rgba(0, 0, 0, @mdb-shadow-key-penumbra-opacity),
0 3px 14px 2px rgba(0, 0, 0, @mdb-shadow-ambient-shadow-opacity),
0 5px 5px -3px rgba(0, 0, 0, @mdb-shadow-key-umbra-opacity);
}
.shadow-16dp() {
box-shadow: 0 16px 24px 2px rgba(0, 0, 0, @mdb-shadow-key-penumbra-opacity),
0 6px 30px 5px rgba(0, 0, 0, @mdb-shadow-ambient-shadow-opacity),
0 8px 10px -5px rgba(0, 0, 0, @mdb-shadow-key-umbra-opacity);
}
.shadow-24dp() {
box-shadow: 0 9px 46px 8px rgba(0, 0, 0, @mdb-shadow-key-penumbra-opacity),
0 11px 15px -7px rgba(0, 0, 0, @mdb-shadow-ambient-shadow-opacity),
0 24px 38px 3px rgba(0, 0, 0, @mdb-shadow-key-umbra-opacity);
}

View File

@@ -0,0 +1,24 @@
.nav-tabs {
background: @brand-primary;
> li {
> a {
color: #FFFFFF;
border: 0;
margin: 0;
&:hover {
background-color: transparent;
border: 0;
}
}
& > a, & > a:hover, & > a:focus {
background-color: transparent !important;
border: 0 !important;
color: #FFFFFF !important;
font-weight: 500;
}
&.disabled > a, &.disabled > a:hover {
color: rgba(255,255,255,0.5);
}
}
}

View File

@@ -0,0 +1,6 @@
// by default, assume light-theme, no need for a marker class.
// this is mostly a marker class, add it to something like the body or container. Subordinates will look for this marker - see buttons
.theme-dark {
}

View File

@@ -0,0 +1,83 @@
.togglebutton {
vertical-align: middle;
&, label, input, .toggle {
user-select: none;
}
label {
cursor: pointer;
color: @mdb-toggle-label-color;
.mdb-label-color-toggle-focus();
// Hide original checkbox
input[type=checkbox] {
opacity: 0;
width: 0;
height: 0;
}
.toggle {
text-align: left; // Issue #737 horizontal form
}
// Switch bg off and disabled
.toggle,
input[type=checkbox][disabled] + .toggle {
content: "";
display: inline-block;
width: 30px;
height: 15px;
background-color: rgba(80, 80, 80, 0.7);
border-radius: 15px;
margin-right: 15px;
transition: background 0.3s ease;
vertical-align: middle;
}
// Handle off
.toggle:after {
content: "";
display: inline-block;
width: 20px;
height: 20px;
background-color: #F1F1F1;
border-radius: 20px;
position: relative;
box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4);
left: -5px;
top: -2px;
transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease;
}
input[type=checkbox] {
// Handle disabled
&[disabled] {
& + .toggle:after,
&:checked + .toggle:after {
background-color: #BDBDBD;
}
}
& + .toggle:active:after,
&[disabled] + .toggle:active:after {
box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.1);
}
// Ripple off and disabled
&:checked + .toggle:after {
left: 15px;
}
}
// set bg when checked
input[type=checkbox]:checked {
+ .toggle {
background-color: fade(@brand-primary, 50%); // Switch bg on
}
+ .toggle:after {
background-color: @brand-primary; // Handle on
}
+ .toggle:active:after {
box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px fade(@brand-primary, 10%); // Ripple on
}
}
}
}

View File

@@ -0,0 +1,15 @@
.text-warning {
color: @brand-warning;
}
.text-primary {
color: @brand-primary;
}
.text-danger {
color: @brand-danger;
}
.text-success {
color: @brand-success;
}
.text-info {
color: @brand-info;
}

View File

@@ -0,0 +1,172 @@
@import "_colors.less";
// Typography elements
@mdb-font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
@mdb-text-color-light: ~"rgba(@{rgb-white}, 0.84)";
@mdb-text-color-light-hex: @white; // for contrast function in inverse
@mdb-text-color-primary: ~"rgba(@{rgb-black}, 0.87)";
@mdb-text-color-primary-hex: @black; // for contrast function in inverse
@icon-color: rgba(0,0,0,0.5);
@mdb-label-color: ~"rgba(@{rgb-black}, 0.26)";
@mdb-label-color-toggle-focus: ~"rgba(@{rgb-black}, .54)";
// import bs variables for less, last declared wins.
@import "_import-bs-less.less";
//---
// Converted bs variables
// Bootstrap brand color customization
@brand-primary: @teal;
@brand-success: @green;
@brand-danger: @red;
@brand-warning: @deep-orange;
@brand-info: @light-blue;
@border-radius-base: 2px;
@border-radius-small: 1px;
// Typography
@font-family-sans-serif: 'Roboto', 'Helvetica', 'Arial', sans-serif;
@headings-font-weight: 300;
@body-bg: #EEEEEE;
//---
// import bs variables for sass, first declared wins.
@import "_import-bs-sass.less";
// Bootstrap Material Design variables start with mdb-
@mdb-brand-inverse: @indigo;
/* ANIMATION */
@mdb-animation-curve-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1);
@mdb-animation-curve-linear-out-slow-in: cubic-bezier(0, 0, 0.2, 1);
@mdb-animation-curve-fast-out-linear-in: cubic-bezier(0.4, 0, 1, 1);
@mdb-animation-curve-default: @mdb-animation-curve-fast-out-slow-in;
//---
// FIXME: Similar but not quite the same as Bootstrap variables
// FIXME: these need to either a) be converted to @mdb- or b) converted to bs variables
@contrast-factor: 40%;
//---
// --------------------
// inputs
@mdb-input-placeholder-color: #BDBDBD;
@mdb-input-underline-color: #D2D2D2;
@mdb-label-static-size-ratio: 75 / 100;
@mdb-help-block-size-ratio: 75 / 100;
@mdb-input-font-size-base: 16px;
@mdb-input-font-size-large: ceil((@font-size-base * 1.25)); // ~20px
@mdb-input-font-size-small: ceil((@font-size-base * 0.75)); // ~12px
// FIXME: with #733 customization of bootstrap, consider how these could be based on the original bs customized variables
//** Unit-less `line-height` for use in components like buttons.
@mdb-input-line-height-base: @line-height-base; //1.428571429; // 20/14
//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
@mdb-input-line-height-computed: floor((@mdb-input-font-size-base * @mdb-input-line-height-base)); // ~20px
@mdb-input-line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome
@mdb-input-line-height-small: 1.5;
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
@mdb-input-padding-base-vertical: 8px - 1px; // was 6.
@mdb-input-padding-base-horizontal: 0; // was 12.
@mdb-label-as-placeholder-shim-base: 0; // manual adjustment of label top when positioned as placeholder
@mdb-label-top-margin-base: 16px;
@mdb-input-padding-large-vertical: 10px - 1px; // 10
@mdb-input-padding-large-horizontal: 0; // 16
@mdb-label-as-placeholder-shim-large: -4px; // manual adjustment of label top when positioned as placeholder
@mdb-label-top-margin-large: 16px;
@mdb-input-padding-small-vertical: 4px - 1px; // 5
@mdb-input-padding-small-horizontal: 0; // 10
@mdb-label-as-placeholder-shim-small: 8px; // manual adjustment of label top when positioned as placeholder
@mdb-label-top-margin-small: 12px;
@mdb-input-padding-xs-vertical: 2px; // 1
@mdb-input-padding-xs-horizontal: 0; // 5
@mdb-input-border-radius-base: 0;
@mdb-input-border-radius-large: 0;
@mdb-input-border-radius-small: 0;
//** Default `.form-control` height
@mdb-input-height-base: (@mdb-input-line-height-computed + (@mdb-input-padding-base-vertical * 2) + 2);
//** Large `.form-control` height
@mdb-input-height-large: (ceil(@mdb-input-font-size-large * @mdb-input-line-height-large) + (@mdb-input-padding-large-vertical * 2) + 2);
//** Small `.form-control` height
@mdb-input-height-small: (floor(@mdb-input-font-size-small * @mdb-input-line-height-small) + (@mdb-input-padding-small-vertical * 2) + 2);
// Card
@mdb-card-body-text: @mdb-text-color-primary;
@mdb-card-body-background: #fff;
@mdb-card-image-headline: #fff;
@text-disabled: #a8a8a8;
@background-disabled: #eaeaea;
// Checkboxes
@mdb-checkbox-size: 20px;
@mdb-checkbox-animation-ripple: 500ms;
@mdb-checkbox-animation-check: 0.3s;
@mdb-checkbox-checked-color: @brand-primary;
@mdb-checkbox-border-size: 2px;
@mdb-checkbox-label-color: @mdb-label-color;
@mdb-checkbox-border-color: @mdb-label-color-toggle-focus;
// Popovers and Popups
@mdb-popover-background: rgba(101, 101, 101, 0.9);
@mdb-popover-color: #ececec;
// Dropdown Menu
@mdb-dropdown-font-size: 16px;
// Toggle
@mdb-toggle-label-color: @mdb-label-color;
// Radio:
@mdb-radio-label-color: @mdb-label-color;
@mdb-radio-color-off: @mdb-label-color-toggle-focus;
@mdb-radio-color-on: @brand-primary;
// Buttons:
@mdb-btn-font-size-base: 14px;
@mdb-btn-font-size-lg: 16px;
@mdb-btn-font-size-sm: 12px;
@mdb-btn-font-size-xs: 10px;
@mdb-btn-background-color: @body-bg; //transparent;
@mdb-btn-background-color-text: @mdb-text-color-primary;
@mdl-btn-border-radus: 2px;
//@mdb-btn-primary-color: ~"rgba(@{rgb-grey-500}, 0.20)";
@mdb-btn-fab-size: 56px;
@mdb-btn-fab-size-mini: 40px;
@mdb-btn-fab-font-size: 24px;
@mdb-btn-icon-size: 32px;
@mdb-btn-icon-size-mini: 24px;
/* SHADOWS */
@mdb-shadow-key-umbra-opacity: 0.2;
@mdb-shadow-key-penumbra-opacity: 0.14;
@mdb-shadow-ambient-shadow-opacity: 0.12;

View File

@@ -0,0 +1,26 @@
body {
.container,
.container-fluid {
.well.well-sm {
padding: 10px;
}
.well.well-lg {
padding: 26px;
}
.well,
.jumbotron {
background-color: #fff;
padding: 19px;
margin-bottom: 20px;
.shadow-z-2();
border-radius: @border-radius-base;
border: 0;
p {
font-weight: 300;
}
.variations(~"", ~"", background-color, @white);
}
}
}

View File

@@ -0,0 +1,4 @@
@import "_variables.less";
@import "_mixins.less";
@import "_shadows.less";
@import '_core.less';

View File

@@ -0,0 +1,15 @@
.dropdownjs::after {
right: 5px;
top: 3px;
font-size: 25px;
position: absolute;
// bring in the material icon font and icon by code
font-family: 'Material Icons';
font-style: normal;
font-weight: 400;
content: "\e5c5"; // found here: https://github.com/google/material-design-icons/search?utf8=%E2%9C%93&q=arrow_drop_down
pointer-events: none;
color: #757575;
}

View File

@@ -0,0 +1,110 @@
.noUi-target,
.noUi-target * {
-webkit-touch-callout: none;
-ms-touch-action: none;
user-select: none;
box-sizing: border-box;
}
.noUi-base {
width: 100%;
height: 100%;
position: relative;
}
.noUi-origin {
position: absolute;
right: 0;
top: 0;
left: 0;
bottom: 0;
}
.noUi-handle {
position: relative;
z-index: 1;
box-sizing: border-box;
}
.noUi-stacking .noUi-handle {
z-index: 10;
}
//.noUi-stacking + .noUi-origin {
// *z-index: -1;
//} WARNING: Property with star prefix found. Checks for the star property hack (targets IE6/7) (star-property-hack) Browsers: All
.noUi-state-tap .noUi-origin {
transition: left 0.3s, top 0.3s;
}
.noUi-state-drag * {
cursor: inherit !important;
}
.noUi-horizontal {
height: 10px;
}
.noUi-handle {
box-sizing: border-box;
width: 12px;
height: 12px;
left: -10px;
top: -5px;
cursor: ew-resize;
border-radius: 100%;
transition: all 0.2s ease-out;
border: 1px solid;
}
.noUi-vertical .noUi-handle {
margin-left: 5px;
cursor: ns-resize;
}
.noUi-horizontal.noUi-extended {
padding: 0 15px;
}
.noUi-horizontal.noUi-extended .noUi-origin {
right: -15px;
}
.noUi-background {
height: 2px;
margin: 20px 0;
}
.noUi-origin {
margin: 0;
border-radius: 0;
height: 2px;
background: #c8c8c8;
&[style^="left: 0"] .noUi-handle {
background-color: #fff;
border: 2px solid #c8c8c8;
&.noUi-active {
border-width: 1px;
}
}
}
.noUi-target {
border-radius: @border-radius-base;
}
.noUi-horizontal {
height: 2px;
margin: 15px 0;
}
.noUi-vertical {
height: 100%;
width: 2px;
margin: 0 15px;
display: inline-block;
}
.noUi-handle.noUi-active {
transform: scale3d(2.5, 2.5, 1);
}
[disabled].noUi-slider{
opacity: 0.5;
}
[disabled] .noUi-handle {
cursor: not-allowed;
}
.slider {
background: #c8c8c8;
}
.slider {
.variations(~".slider", ~".noUi-connect", background-color, @brand-primary);
.variations(~".slider", ~" .noUi-connect", background-color, @brand-primary);
.variations(~".slider", ~" .noUi-handle", background-color, @brand-primary);
.variations(~".slider", ~" .noUi-handle", border-color, @brand-primary);
}

View File

@@ -0,0 +1,91 @@
// Support for Selectize plugin
// http://brianreavis.github.io/selectize.js/
.selectize-control.single, .selectize-control.multi {
padding: 0;
.selectize-input, .selectize-input.input-active {
cursor: text;
background: transparent;
box-shadow: none;
border: 0;
padding: 0;
height: 100%;
font-size: 14px;
line-height: 30px;
.has-items {
padding: 0;
}
&:after {
right: 5px;
position: absolute;
font-size: 25px;
content: "\e5c5";
font-family: 'Material Icons';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
input {
font-size: 14px;
outline: 0;
border: 0;
background: transparent;
}
&.label-floating-fix input {
opacity: 0;
}
> div, > .item {
display: inline-block;
margin: 0 8px 3px 0;
padding: 0;
background: transparent;
border: 0;
&:after {
content: ",";
}
&:last-of-type:after {
content: "";
}
&.active {
font-weight: bold;
background: transparent;
border: 0;
}
}
}
.selectize-dropdown {
position: absolute;
z-index: 1000;
border: 0;
width: 100% !important;
left: 0 !important;
height: auto;
background-color: #FFF;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
border-radius: @border-radius-base;
padding: 0;
margin-top: 3px;
.active {
background-color: inherit;
}
.highlight {
background-color: #d5d8ff;
}
.selected, .selected.active {
background-color: #EEEEEE;
}
[data-selectable], .optgroup-header {
padding: 10px 20px;
cursor: pointer;
}
}
.dropdown-active ~ .selectize-dropdown {
display: block;
}
}

View File

@@ -0,0 +1,32 @@
// Support for SnackbarJS plugin
// https://github.com/FezVrasta/snackbarjs
.snackbar {
// Style
background-color: #323232;
color: @mdb-text-color-light;
font-size: 14px;
border-radius: @border-radius-base;
.shadow-z-1;
// Animation
height: 0;
transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, padding 0s linear 0.2s, height 0s linear 0.2s;
transform: translateY(200%);
}
.snackbar.snackbar-opened {
// Style
padding: 14px 15px;
margin-bottom: 20px;
// Animation
height: auto;
transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, height 0s linear 0.2s;
transform: none;
}
// Variations
.snackbar.toast {
border-radius: 200px;
}

View File

@@ -0,0 +1,36 @@
.withripple {
position: relative;
}
.ripple-container {
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 100%;
height: 100%;
overflow: hidden;
border-radius: inherit;
pointer-events: none;
}
.ripple {
position: absolute;
width: 20px;
height: 20px;
margin-left: -10px;
margin-top: -10px;
border-radius: 100%;
background-color: #000; // fallback color
background-color: rgba(0,0,0,0.05);
transform: scale(1);
transform-origin: 50%;
opacity: 0;
pointer-events: none;
}
.ripple.ripple-on {
transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;
opacity: 0.1;
}
.ripple.ripple-out {
transition: opacity 0.1s linear 0s !important;
opacity: 0;
}