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
499 lines (427 loc) • 10.8 kB
text/less
@import (once) "include/vars";
@import (once) "include/mixins";
.ribbon-menu {
display: block;
position: relative;
}
.ribbon-menu {
.tabs-holder {
display: flex;
justify-content: flex-start;
align-items: center;
.reset-list();
z-index: 1;
border-bottom: 1px solid @ribbonMenuBorder;
}
.tabs-holder {
li, a {
display: block;
height: 24px;
line-height: 24px;
}
li {
color: @dark;
background-color: @ribbonMenuBackground;
border-left: 1px solid transparent;
border-right: 1px solid transparent;
border-bottom: 1px solid @ribbonMenuBorder;
&:hover {
border-left-color: @ribbonMenuBorder;
border-right-color: @ribbonMenuBorder;
}
}
li + li {
margin-left: 3px;
}
a {
text-decoration: none;
padding: 0 14px;
font-size: 12px;
background-color: inherit;
color: inherit;
}
.active {
background-color: @ribbonMenuActiveBackground;
border: 1px solid @ribbonMenuBorder;
border-bottom-color: transparent;
}
.static {
background-color: @ribbonMenuStaticBackground;
color: @white;
}
}
}
.ribbon-menu {
.content-holder {
display: block;
position: relative;
}
.content-holder {
background-color: @ribbonMenuActiveBackground;
border-left: none;
border-right: none;
.section {
display: none;
padding: 4px 4px;
border-bottom: 1px solid @ribbonMenuBorder;
justify-content: flex-start;
&.active {
display: flex;
}
}
.group {
padding: 0 4px 24px;
display: flex;
cursor: default;
background-color: inherit;
position: relative;
align-items: flex-start;
align-content: flex-start;
&:nth-child(1):last-child {
flex-basis: 100%;
}
.title {
display: block;
position: absolute;
left: 0;
bottom: 0;
width: 100%;
line-height: 24px;
height: 20px;
font-size: 11px;
text-align: center;
border-top: 1px solid @ribbonMenuBorder;
white-space: nowrap;
}
.group-divider {
display: block;
position: relative;
height: 100%;
margin: 0 4px;
width: 1px;
background-color: @ribbonMenuBorder;
}
& > *:not(.title), & > *:not(.group-divider) {
margin: 2px;
}
}
.group + .group {
border-left: 1px solid @ribbonMenuBorder;
}
}
}
.ribbon-button, .ribbon-tool-button, .ribbon-button-dropdown, .ribbon-icon-button {
cursor: pointer;
min-width: 0;
text-align: center;
border: 1px solid transparent;
background-color: @ribbonMenuActiveBackground;
outline: none;
position: relative;
}
.ribbon-button {
height: auto;
min-height: 64px;
width: auto;
padding: 4px;
margin: 0;
&:hover {
border-color: @ribbonMenuItemBorder;
background-color: @ribbonMenuItemHoverBackground;
}
.caption, .icon {
display: block;
text-align: center;
}
.caption {
font-size: 12px;
}
.icon {
* {
height: 32px;
max-width: 32px;
font-size: 26px;
line-height: 32px;
}
}
.icon + .caption {
margin-top: 8px;
}
&.dropdown-toggle {
padding-right: 4px ;
&::before {
margin-left: -.65rem;
}
}
}
.ribbon-icon-button {
height: 24px;
width: auto;
margin: 0;
display: inline-flex;
flex-flow: row nowrap;
align-items: center;
padding: 2px 4px;
&:hover {
border-color: @ribbonMenuItemBorder;
background-color: @ribbonMenuItemHoverBackground;
}
.caption, .icon {
display: block;
}
.caption {
font-size: 12px;
}
.icon {
* {
width: 16px;
height: 16px;
line-height: 16px;
font-size: 14px;
}
}
.icon + .caption, .caption + .icon {
margin-left: 4px;
}
[class*=mif-] {
vertical-align: inherit;
}
}
.ribbon-tool-button {
width: 24px;
height: 24px;
padding: 2px;
margin: 0;
* {
width: 16px;
height: 16px;
line-height: 16px;
font-size: 14px;
}
}
.ribbon-icon-button, .ribbon-tool-button {
&.dropdown-toggle {
padding-right: 2px ;
&::before {
display: none;
}
&::after {
content: "";
display: block;
position: absolute;
bottom: 0;
right: 0;
width: 0;
height: 0;
border-style: solid;
border-width: 0 0 4px 4px;
border-color: transparent transparent @dark transparent;
z-index: 1;
}
}
}
.ribbon-icon-button {
&.dropdown-toggle {
padding-right: 4px ;
}
}
.ribbon-split-button {
text-align: center;
border: 1px solid transparent;
padding: 0;
margin: 0;
&:hover {
border-color: @ribbonMenuItemBorder;
.ribbon-split {
border-color: @ribbonMenuItemBorder;
}
}
.ribbon-main, .ribbon-split {
display: block;
text-align: center;
min-width: 0;
padding: 2px 4px;
width: 100%;
cursor: pointer;
&:hover {
background-color: @ribbonMenuItemHoverBackground;
}
}
.ribbon-main {
background-color: inherit;
outline: none;
position: relative;
border: none;
}
.icon {
* {
height: 32px;
max-width: 32px;
font-size: 26px;
line-height: 32px;
}
}
.icon + .caption {
margin-top: 8px;
}
.ribbon-split {
font-size: 12px;
border-top: 1px solid transparent;
padding-bottom: 4px;
&.dropdown-toggle {
padding-right: 4px ;
&::before {
display: none;
}
&::after {
content: "";
display: block;
position: absolute;
bottom: 2px;
left: 50%;
.translateX(-50%);
.rotate(45deg);
width: 0;
height: 0;
border-style: solid;
border-width: 0 0 4px 4px;
border-color: transparent transparent @dark transparent;
z-index: 1;
}
}
}
}
.ribbon-dropdown {
.reset-list();
width: auto;
float: left;
display: block;
position: absolute;
background-color: @ribbonDropdownBackground;
color: @dark;
padding: 2px;
border: 1px solid @ribbonMenuBorder;
font-size: 12px;
box-shadow: 2px 2px 2px 0 rgba(red(@ribbonDropdownShadow), green(@ribbonDropdownShadow), blue(@ribbonDropdownShadow), .7);
z-index: @zindex-dropdown;
top: 100%;
left: 0;
li, a {
display: block;
position: relative;
background-color: inherit;
color: inherit;
height: 24px;
}
li {
border: 1px solid transparent;
padding-left: 24px;
&:hover {
border-color: @ribbonMenuItemBorder;
background-color: @ribbonMenuItemHoverBackground;
}
}
a {
line-height: 24px;
text-decoration: none;
padding: 0 8px;
border-left: 1px solid @ribbonDropdownDivider;
white-space: nowrap;
}
.divider {
display: block;
height: 1px;
width: 100%;
position: relative;
background-color: @ribbonDropdownDivider;
}
.checked, .checked-one {
&::before, &::after {
position: absolute;
display: block;
content: "";
}
&::before {
background-color: transparent;
border-color: @dark;
border-left: 2px solid;
border-bottom: 2px solid;
height: .325rem;
width: .5rem;
left: .5rem;
top: 50%;
.translateY(-50%);
.rotate(-45deg);
z-index: 2;
}
&::after {
width: 23px;
height: 22px;
top: 0;
left: 0;
z-index: 1;
}
}
.checked {
&::after {
border: 1px solid @ribbonMenuItemBorder;
background-color: @ribbonMenuItemHoverBackground;
}
}
.checked-one {
&::before {
width: .4rem;
height: .4rem;
border-radius: 50%;
background-color: @dark;
}
}
.ribbon-dropdown {
top: -4px;
left: 100%;
}
.dropdown-toggle {
&::before {
transform: rotate(-135deg) ;
}
&.active-toggle {
&::before {
transform: rotate(45deg) ;
}
}
}
}
.ribbon-toggle-group {
background-color: @light;
display: flex;
flex-flow: column wrap;
max-height: 80px;
border: 1px solid @ribbonMenuBorder;
width: auto;
.ribbon-icon-button {
height: 20px;
margin: 1px;
padding: 1px 4px;
background-color: inherit;
}
}
.ribbon-button, .ribbon-tool-button, .ribbon-icon-button {
&:hover {
border-color: @ribbonMenuItemBorder;
background-color: @ribbonMenuItemHoverBackground;
}
}
.ribbon-button, .ribbon-tool-button, .ribbon-split, .ribbon-main, .ribbon-icon-button {
&:active, &.active {
border-color: @ribbonMenuItemActiveBorder;
background-color: @ribbonMenuItemActiveBackground ;
}
}
.ribbon-menu {
.active-container {
.ribbon-button, .ribbon-tool-button, .ribbon-icon-button {
border-color: @ribbonMenuItemActiveBorder;
background-color: @ribbonMenuItemActiveBackground ;
}
}
}