@c8y/style
Version:
Styles for Cumulocity IoT applications
109 lines (101 loc) • 2.9 kB
text/less
/**
* App Switcher - Application switcher dropdown component
*
* Note: Uses @size-* tokens for spacing throughout.
*
* Intentionally hardcoded values:
* - Component-specific dimensions (320px, 340px): Dropdown menu widths
* - Off-token spacing (6px): Icon margin-bottom not in token system
* - Negative positioning (-72px, -160px, -255px): Dropdown centering offsets
* - Typography sizes (12px, 36px): Font sizes for labels and icons
* - Percentages (30%, 33.3333%, 50%, 95vh): Layout and flex values
* - Border widths (1px, 2px): Standard borders and outlines
* - Border radius (2px): Standard border radius
* - Negative offsets (-2px): Fine-tuning
* - Line-height (1.2): Unitless ratio
* - Transition duration (0.25s): Animation timing
* - Box-shadow values: Inset border effects
* - RGBA values: Transparency
* - Calc expressions: Complex computed values
*/
.app-switcher-dropdown {
position: static;
@media (min-width: @screen-sm-min) {
position: relative;
}
@media(max-width: @screen-sm-min){
&.open {
.main-header-button.c8y-dropdown.dropdown-toggle{
box-shadow: none;
}
}
}
}
.app-switcher,
.app-switcher-sagcloud {
display: flex;
flex-flow: row wrap;
margin: 0;
padding: @size-8;
background-color: @component-background-default;
cursor: pointer;
.appLink {
flex: 0 1 33.3333%;
margin: @size-4 0;
padding: calc(@size-8 + @size-4) @size-8 @size-8;
min-width: 30%;
border: 1px solid transparent;
border-radius: 2px;
color: @navlink-color-default;
text-align: center;
font-size: 12px;
transition: transform 0.25s ease-in-out, box-shadow 0.25s ease-in-out;
&:hover {
box-shadow: inset 0 0 0 1px @brand-primary, inset 0 0 0 2px @component-background-default;
text-decoration: none;
}
&.active {
box-shadow: inset 0 0 0 2px @brand-primary;
text-decoration: none;
}
&:focus {
outline: 2px solid @component-color-focus;
outline-offset: -2px;
border-radius: @component-border-radius-focus;
box-shadow: none;
text-decoration: none;
}
> span {
display: block;
font-size: 12px;
line-height: 1.2;
}
.c8y-app-icon {
display: block;
width: auto;
}
.c8y-icon {
margin-bottom: 6px;
font-size: 36px;
}
}
}
.app-switcher-sagcloud {
box-shadow: inset 0 -1px 0 rgba(@black, (5 / 100));
}
.dropdown-menu.app-switcher-dropdown-menu {
transform-origin: center top;
left: 50%;
overflow-y: auto;
margin-left: -160px ;
max-height: calc(~'95vh - @{header-bar-height}');
width: 320px;
@media (min-width: 560px) and (max-width: @screen-sm-min) {
margin-left: -72px ;
width: 340px;
}
@media (min-width: @screen-sm-min) {
margin-left: -255px ;
width: 340px;
}
}