metro4
Version:
The front-end framework for Build responsive, mobile-first projects on the web with the first front-end component library in Metro Style
1,085 lines (910 loc) • 28.7 kB
text/less
@import (once) "../../include/vars";
@import (once) "../../include/mixins";
.scheme-builder (
@schemeBackground,
@schemeBackgroundSecondary,
@schemeTextColor,
@schemeTextColorSecondary,
@schemeControlColor,
@schemeControlTextColor,
@schemeFontFamily,
@schemeFontSize
) {
@blendBackground: rgba(red(@schemeBackground), green(@schemeBackground), blue(@schemeBackground), .25);
@blendBackgroundSecondary: rgba(red(@schemeBackgroundSecondary), green(@schemeBackgroundSecondary), blue(@schemeBackgroundSecondary), .25);
@blendTextColor: rgba(red(@schemeTextColor), green(@schemeTextColor), blue(@schemeTextColor), .25);
@blendTextColorSecondary: rgba(red(@schemeTextColorSecondary), green(@schemeTextColorSecondary), blue(@schemeTextColorSecondary), .25);
@blendControlColor: rgba(red(@schemeControlColor), green(@schemeControlColor), blue(@schemeControlColor), .25);
@blendControlTextColor: rgba(red(@schemeControlTextColor), green(@schemeControlTextColor), blue(@schemeControlTextColor), .25);
@schemeDividerColor: rgba(red(@schemeControlTextColor), green(@schemeControlTextColor), blue(@schemeControlTextColor), .25);
.bg-scheme {background-color: @schemeBackground ;}
.fg-scheme {color: @schemeTextColor ;}
.bg-scheme-secondary {background-color: @schemeBackgroundSecondary ;}
.fg-scheme-secondary {color: @schemeTextColorSecondary ;}
.bg-control {background-color: @schemeControlColor ;}
.fg-control {color: @schemeControlTextColor ;}
.bd-default {
border-color: @schemeControlColor ;
}
.disabled {
cursor: default;
}
body {
font-size: @schemeFontSize;
font-family: @schemeFontFamily;
color: @schemeTextColor;
background-color: @schemeBackground;
}
hr {
background-color: @schemeControlColor;
}
// Inputs, switches
input[type=text],
input[type=password],
input[type=tel],
input[type=datetime-local],
input[type=email],
input[type=file],
input[type=month],
input[type=number],
input[type=search],
input[type=time],
input[type=url],
input[type=week],
input[type=file],
select, textarea, .file, .input, .textarea, .select {
background-color: @schemeBackground;
color: @schemeTextColor;
border-color: @schemeControlColor ;
&:focus, &.focused {
.focus-show(@schemeControlColor);
}
}
.input, .select, .textarea, .file {
border-style: solid ;
.prepend {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
input, select, textarea {
box-shadow: none ;
border-color: transparent;
}
}
.file {
.button {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
}
.select {
.active a {
background-color: @schemeControlColor ;
color: @schemeControlTextColor ;
}
}
.checkbox {
.check {
border-color: @schemeControlColor;
&::before {
border-color: @schemeTextColor;
}
}
input[type=checkbox]:checked ~ .check
{
border-color: @schemeControlColor;
background-color: @schemeControlColor;
transition: @transition-base;
&::before {
border-color: @schemeControlTextColor;
}
}
input[type=checkbox]:disabled ~ .check
{
border-color: @blendControlColor;
background-color: @blendControlColor;
&::before {
border-color: @blendControlColor;
}
}
input[data-indeterminate=true] ~ .check {
border-color: @schemeControlColor;
background-color: @schemeControlColor;
}
}
.radio {
.check {
border-color: @schemeControlColor;
}
input[type=radio]:checked ~ .check {
border-color: @schemeControlColor;
background-color: @schemeControlColor;
&::before {
border-color: @schemeControlTextColor;
background-color: @schemeControlTextColor;
}
}
input[type=radio]:disabled ~ .check {
border-color: @blendControlColor;
background-color: @blendControlColor;
&::before {
border-color: @blendControlColor;
background-color: @blendControlColor;
}
}
}
.checkbox, .radio {
.check {
color: @schemeControlTextColor;
}
}
.switch {
.check {
border-color: @schemeControlColor;
&::after {
border-color: @schemeControlColor;
background-color: @schemeControlColor;
}
}
input[type="checkbox"]:checked ~ .check {
border-color: @schemeControlColor;
background-color: @schemeControlColor;
}
input[type="checkbox"]:disabled ~ .check {
border-color: @blendControlColor;
background-color: @blendControlColor;
&::after {
border-color: @blendControlColor;
background-color: @blendControlColor;
}
}
input[type="checkbox"]:disabled:not(:checked) ~ .check {
&::after {
opacity: .5;
}
}
}
// Buttons
.button, .command-button, .shortcut, .tool-button {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
&:active, &.focus, &:focus {
.focus-show(@schemeControlColor);
}
&:hover {
background-color: darken(@schemeControlColor, 5%);
}
}
.info-button {
border-color: @schemeControlColor;
.button {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
&:hover {
background-color: darken(@schemeControlColor, 5%);
}
}
}
.image-button {
border-color: @schemeControlColor;
.icon {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
&:hover {
background-color: darken(@schemeControlColor, 5%);
}
}
}
// Breadcrumbs
.breadcrumbs {
background-color: @schemeBackground;
color: @schemeControlColor;
.page-item {
&::before, &::after {
background-color: @schemeControlColor ;
}
}
.page-link:hover {
color: darken(@schemeControlColor, 5%);
}
}
// Pagination
.pagination {
.page-item:not(.no-link) {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
border: 1px @schemeControlColor solid;
}
.page-item {
&.active, &:hover {
background-color: darken(@schemeControlColor, 5%);
}
}
.no-link {
background-color: @transparent;
color: @schemeControlColor;
}
}
// Accordion
.accordion {
.frame .heading {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
.frame {
margin: 0;
}
.frame + .frame {
border-top: 1px @blendControlColor solid;
}
}
// Menu
.h-menu {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
& > li > a {
&.dropdown-toggle {
&::before {
border-color: @schemeControlTextColor;
}
}
}
}
.d-menu, .v-menu {
background-color: @white ;
color: @schemeControlColor;
border: 1px solid @schemeControlColor;
box-shadow: none;
.dropdown-toggle {
&::before {
border-color: @schemeControlColor ;
}
}
li {
&:hover {
background-color: @schemeControlColor ;
color: @schemeControlTextColor ;
.dropdown-toggle {
&::before {
border-color: @schemeControlTextColor ;
}
}
}
}
.divider {
background-color: @schemeControlColor ;
}
.menu-title {
background-color: darken(@schemeControlColor, 10%);
color: @schemeControlTextColor;
}
.disabled {
color: rgba(red(@schemeControlColor), green(@schemeControlColor), blue(@schemeControlColor), .5) ;
}
}
.v-menu {
.v-menu {
border: none ;
}
}
.t-menu {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
box-shadow: none;
li a {
border-color: @schemeDividerColor ;
}
.dropdown-toggle {
&::after {
border-color: transparent transparent @schemeControlTextColor transparent;
}
}
}
// App bar
.app-bar {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
.dropdown-toggle {
&::before {
border-color: @schemeControlTextColor;
}
}
.app-bar-menu li, .app-bar-container {
.d-menu {
background-color: @schemeControlColor ;
color: @schemeControlTextColor ;
li:hover {
background-color: @hoverBackground ;
}
}
.divider {
background-color: @schemeDividerColor;
}
}
}
[class*=app-bar-expand] {
.app-bar-menu li, .app-bar-container {
.d-menu {
box-shadow: none ;
border: 1px solid @schemeControlColor ;
background-color: @white ;
color: @schemeControlColor ;
li:hover {
background-color: @schemeControlColor ;
color: @schemeControlTextColor ;
}
}
}
}
// Calendar
.calendar {
border-color: @schemeControlColor;
.calendar-header {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
.day.today {
background-color: @schemeControlColor;
}
.day.selected {
box-shadow: 0 0 0 1px rgba(red(@schemeControlColor), green(@schemeControlColor), blue(@schemeControlColor), 1) ;
&::after {
border-top-color: @schemeControlColor;
}
}
.calendar-years > .years-list, .calendar-months > .months-list {
li.active {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
}
.calendar-footer {
border-top-color: @blendControlColor;
}
.week-days {
border-top-color: @blendControlColor;
border-bottom-color: @blendControlColor;
}
}
[class*=calendar-wide] {
.calendar-footer {
border-left-color: @blendControlColor;
}
}
// Countdown
.countdown {
line-height: 1.5;
.part {
color: @schemeTextColor;
}
}
// Date picker and time picker
.wheel-picker {
background-color: @schemeBackground;
color: @schemeTextColor;
.date-wrapper, .time-wrapper {
border-color: @schemeControlColor;
}
.select-block {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
ul {
border-color: @blendControlColor;
}
}
.action-block {
border-top: 1px @blendControlColor solid;
.button {
color: @schemeControlTextColor;
}
}
}
// Dialog
.dialog {
background-color: @schemeBackground;
color: @schemeTextColor;
border: 1px solid @schemeControlColor;
.dialog-actions {
border-top-color: @schemeControlColor;
}
}
// Keypad
.keypad {
.keys {
background-color: @schemeBackground;
border-color: @schemeControlColor;
color: @schemeTextColor;
}
.key {
&.service-key {
background-color: darken(@schemeControlColor, 10%);
}
}
}
// Hints
.hint {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColor;
}
// Listview
.listview {
background-color: @schemeBackground;
color: @schemeTextColor;
.node {
&:hover {
background-color: @blendControlColor;
color: @schemeControlTextColor;
}
&.current-select {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
border-color: @schemeControlColor ;
}
}
.node-group {
.node-toggle {
&::before {
border-color: @schemeTextColor;
}
}
}
&.view-content {
.node + .node {
border-top-color: @schemeControlColor;
}
}
}
// Master
.master {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColor;
.controls {
.next, .prev {
color: @schemeControlColor;
&.disabled {
color: @blendControlColor;
}
}
}
.pages {
border-color: @schemeControlColor;
}
}
// navview
.navview {
.navview-pane {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColorSecondary;
.pull-button, .holder, .navview-menu li a {
&:hover {
background-color: @hoverBackground;
}
&:active, &:focus {
background-color: darken(@schemeControlColor, 10%);
}
&:focus {
border: 2px solid darken(@schemeControlColor, 10%);
}
}
.dropdown-toggle {
&::after {
border-color: transparent transparent @schemeControlTextColor transparent;
}
}
}
.navview-content {
background-color: @schemeBackground;
color: @schemeTextColor;
}
}
// Notify
.notify {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColorSecondary;
border: 1px solid @schemeControlColor;
}
// Panel
.panel {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColorSecondary;
border-color: @blendControlColor ;
.panel-title {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
border-bottom-color: @schemeDividerColor;
.dropdown-toggle {
border-left-color: @schemeDividerColor;
&::before {
border-color: @schemeControlTextColor;
}
}
.icon {
border-right-color: @schemeDividerColor;
}
}
}
// Window
.window {
border-color: @blendControlColor;
background-color: @schemeBackground;
color: @schemeTextColor;
.window-caption {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
.window-content {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColorSecondary;
}
}
.resize-element {
&::after {
border-bottom-color: @schemeControlColor;
}
}
// Popovers
.popover {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColorSecondary;
border-color: @schemeControlColor;
}
// Rating
@ratingOff: @blendControlColor;
@ratingOn: @schemeControlColor;
.rating {
.stars {
li {
color: @ratingOff;
&.on {
color: @ratingOn;
}
}
}
}
.rating:not(.static) .stars {
&:hover {
li {
color: @ratingOn;
}
}
li:hover ~ li {
color: @ratingOff ;
}
}
// Sidenav
.sidenav-simple, .sidenav-counter {
background-color: @schemeBackground;
color: @schemeControlColor;
.active, li.active:hover {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
li {
&.disabled {
color: @blendControlTextColor ;
}
}
}
.sidenav-m3 {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
a {
background-color: @schemeControlColor;
&:hover {
background-color: @hoverBackground;
}
}
li {
&.disabled {
color: @blendControlTextColor ;
}
}
li + li {
border-top-color: @schemeControlColor;
}
.d-menu {
background-color: darken(@schemeControlColor, 10%) ;
border-color: @schemeControlColor;
margin-bottom: 4px;
li {
border-color: @schemeControlColor ;
color: @schemeControlTextColor ;
&.disabled {
color: @blendControlTextColor ;
}
}
}
.dropdown-toggle {
&::before {
border-color: @schemeControlTextColor;
}
}
}
// Slider
.slider {
.backside {
background-color: @blendControlColor;
}
.buffer {
background-color: @schemeControlTextColor;
}
.complete {
background-color: @schemeControlColor;
}
.marker {
background-color: @schemeTextColor;
}
}
// Stepper
.stepper {
&::before {
background-color: @schemeBackgroundSecondary;
}
.step {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColor;
&.complete {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
&.current {
background-color: @schemeTextColor;
color: contrast(@schemeTextColor);
}
}
}
// Streamer
.streamer {
.streams {
background-color: @schemeBackground;
color: @schemeTextColor;
}
.streamer-action {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
.stream {
border-color: @schemeControlColor;
}
.event-group {
background-color: @schemeBackground;
color: @schemeTextColor;
}
.stream-event {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColorSecondary;
border-color: @schemeControlColor;
&:hover {
border-color: lighten(@schemeControlColor, 20%);
}
&.selected {
box-shadow: 0 0 0 1px rgba(red(@schemeControlColor), green(@schemeControlColor), blue(@schemeControlColor), 1) ;
&::before {
border-color: @schemeTextColor ;
}
&::after {
border-top-color: @schemeControlColor;
}
}
}
.stream-event-slide {
.slide-data {
.title {
color: @schemeTextColor;
}
.subtitle, .desc {
color: @schemeTextColorSecondary;
}
}
}
}
// Table
.table {
thead {
border-bottom-color: @schemeControlColor;
}
tfoot {
border-top-color: @schemeControlColor;
}
.sortable-column {
&.sort-asc, &.sort-desc {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
&:after {
color: @schemeControlTextColor;
}
}
}
&.striped {
tbody tr:nth-child(odd) {
background: @schemeBackgroundSecondary;
}
}
&.table-border {
border-color: @schemeControlColor;
}
&.cell-border {
th, td {
border-color: @schemeControlColor;
}
}
}
// Tabs
.tabs {
background-color: @schemeBackground;
color: @schemeControlTextColor;
border-color: @schemeControlColor;
& > ul > li {
background-color: @schemeBackgroundSecondary;
color: @schemeTextColorSecondary;
&:hover {
background-color: @blendControlColor;
}
&.active {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
}
}
.disabled {
color: @blendControlTextColor ;
}
}
.tabs {
&.vertical {
& > ul {
border-right-color: @schemeControlColor;
& > li {
border-right-color: @schemeControlColor;
}
& > li.active {
border-color: @schemeControlColor;
}
}
&.right {
& > ul {
border-left-color: @schemeControlColor;
& > li {
border-left-color: @schemeControlColor;
}
& > li.active {
border-color: @schemeControlColor;
}
}
}
}
}
[class*=tabs-expand] {
& > ul {
border-bottom-color: @schemeControlColor;
& > li {
border-bottom-color: @schemeControlColor;
&.active {
border-color: @schemeControlColor;
}
}
}
}
// Top bar
.topbar {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
.topbar-brand, .topbar-element, .topbar-menu {
color: @schemeControlTextColor;
}
}
// Treeview
.treeview {
background-color: @schemeBackground;
color: @schemeTextColorSecondary;
.node-toggle {
&::before {
border-color: @schemeTextColorSecondary ;
}
}
li {
&.current > .caption {
color: @schemeTextColor;
}
}
}
// Wizard
.wizard {
background-color: @schemeBackground;
color: @schemeTextColor;
border-color: @schemeControlColor;
& > section, &.section {
border-color: darken(@schemeControlColor, 50%);
&:nth-child(1) {border-color: @schemeControlColor;}
&:nth-child(2) {border-color: darken(@schemeControlColor, 5%);}
&:nth-child(3) {border-color: darken(@schemeControlColor, 10%);}
&:nth-child(4) {border-color: darken(@schemeControlColor, 15%);}
&:nth-child(5) {border-color: darken(@schemeControlColor, 20%);}
&:nth-child(6) {border-color: darken(@schemeControlColor, 25%);}
&:nth-child(7) {border-color: darken(@schemeControlColor, 30%);}
&:nth-child(8) {border-color: darken(@schemeControlColor, 35%);}
&:nth-child(9) {border-color: darken(@schemeControlColor, 40%);}
&:nth-child(10) {border-color: darken(@schemeControlColor, 50%);}
&::before {
color: @schemeControlTextColor;
}
&.complete {
border-color: darken(@schemeBackgroundSecondary, 50%);
&:nth-child(1) {border-color: @schemeBackgroundSecondary;}
&:nth-child(2) {border-color: darken(@schemeBackgroundSecondary, 5%);}
&:nth-child(3) {border-color: darken(@schemeBackgroundSecondary, 10%);}
&:nth-child(4) {border-color: darken(@schemeBackgroundSecondary, 15%);}
&:nth-child(5) {border-color: darken(@schemeBackgroundSecondary, 20%);}
&:nth-child(6) {border-color: darken(@schemeBackgroundSecondary, 25%);}
&:nth-child(7) {border-color: darken(@schemeBackgroundSecondary, 30%);}
&:nth-child(8) {border-color: darken(@schemeBackgroundSecondary, 35%);}
&:nth-child(9) {border-color: darken(@schemeBackgroundSecondary, 40%);}
&:nth-child(10) {border-color: darken(@schemeBackgroundSecondary, 50%);}
&::before {
color: @schemeTextColorSecondary;
}
}
&.current {
&::before {
color: @schemeTextColor;
background-color: @schemeControlColor;
}
}
}
.action-bar {
button {
border-color: @schemeControlColor;
color: @schemeControlTextColor;
}
}
}
// Ribbon menu
.ribbon-menu {
.tabs-holder {
.static {
background-color: @schemeControlColor;
color: @schemeControlTextColor;
&:hover {
border-color: @transparent ;
}
}
}
.ribbon-button, .ribbon-tool-button, .ribbon-split, .ribbon-main, .ribbon-icon-button {
color: @schemeTextColor;
}
.ribbon-button, .ribbon-tool-button, .ribbon-split, .ribbon-main, .ribbon-icon-button {
&:hover {
border-color: @blendControlColor;
background-color: @blendBackgroundSecondary;
}
}
.ribbon-button, .ribbon-tool-button, .ribbon-split, .ribbon-main, .ribbon-icon-button {
&:active, &.active {
border-color: @blendControlColor;
background-color: @blendBackground;
}
}
.ribbon-split-button {
&:hover {
border-color: @blendControlColor;
.ribbon-split {
border-color: @blendControlColor;
}
}
}
.ribbon-dropdown {
box-shadow: none;
li {
&:hover {
border-color: @blendControlColor;
background-color: @blendBackgroundSecondary;
}
}
.checked {
&::after {
border-color: @blendControlColor;
background-color: @blendBackgroundSecondary;
}
}
}
}
}