UNPKG

@c8y/style

Version:

Styles for Cumulocity IoT applications

450 lines (389 loc) • 9.08 kB
// mixin to apply a vertical gradient in navigator .checkVerticalGradient(@color1; @color2) when not (@color1 ='') { #gradient > .vertical(@start-color: @color1; @end-color: @color2); } .navigator { position: fixed; z-index: (@zindex-navbar-fixed + 1); top: 0; bottom: 0; left: calc((@navigatorWidth--sm + 10px) * -1); width: @navigatorWidth--sm; padding-top: 0; color: @navigator-text-color; background: @navColor; font-family: @navigator-font-family; display: flex; flex-flow: column nowrap; .transition(left @open-menu-time-type); .checkVerticalGradient(@grad-top; @grad-bottom); @media (min-width: @screen-sm-min) { left: -(@navigatorWidth + 10); width: @navigatorWidth; } &.open { left: 0; box-shadow: var(--c8y-elevation-md-right); @media (min-width: @grid-float-breakpoint) { border-right: 1px solid @navigator-separator-color; box-shadow: none; } } &.minheight { height: @headerHeight; padding-top: 0; padding-bottom: 0; } .tenant-brand when (@appLogo =deprecated) { display: block; background-size: contain; background-position: center top; background-repeat: no-repeat; margin: 0 auto; width: 208px; & when not(@extending) { background-image: @navigator-platform-logo; padding-bottom: @navigator-platform-logo-height; } } .c8y-logo { .tenant-brand{ width: 136px; padding-bottom: @navigator-platform-logo-height-fallback; margin-bottom: 0; } } } .navigator .title { position: relative; z-index: 100; display: flex; align-items: center; gap: @margin-8; margin: 0; padding: @navigator-app-name-size @margin-16; font-size: @navigator-app-name-size; font-weight: 600; text-overflow: ellipsis; line-height: 1; color: @navigator-header-color; text-wrap: pretty; background-color: @navColorHeader; flex: 0 0 auto; text-transform: uppercase; min-height: 108px; border-bottom: 1px solid @navigator-separator-color; &:after { position: absolute; top: 100%; left: 0; z-index: 10; display: block; width: 100%; height: 4px; content: ''; background-color: @navColorHeader; .shadow-scroll(); } .c8y-app-icon{ display: contents; } .c8y-icon + span, .app-noicon + span { display: block; } .c8y-icon { font-size: @navigator-app-logo-size; &::before { color: var(--navigator-dark-icon, currentColor); } &::after { color: var(--navigator-light-icon, @icon-dark-color-light); } } .app-noicon { width: calc(@margin-base * 6); height: calc(@margin-base * 6); line-height: calc(@margin-base * 6); border: 1px solid @palette-high; display: block; margin: 0; } & when not(@appBranding='') { // hide app logo text-indent: -1000px; overflow: hidden; height: 0; min-height: 0; } /* Legacy support for @appLogo */ & when (not(@appLogo-height =deprecated)) and (not(@appLogo-height ='')) and (not(@appLogo =deprecated)) and (not(@appLogo ='')) { & when not(@extending) { background-image: @navigator-platform-logo; } padding-top: @appLogo-height; padding-bottom: 0; background-size: contain; background-position: center 5px; background-repeat: no-repeat; line-height: 2.85; .c8y-icon, .app-noicon { display: none !important; } span { display: block; } br { display: none; } } } // Navigator content .navigatorContent { position: relative; overflow-y: auto; overflow-x: hidden; margin: 4px 0 0 0; padding: 4px 0 0 0; list-style: none; max-height: 100%; background-color: @navigator-background-default; &:before { position: absolute; top: 0; right: 0; left: 0; z-index: 1001; height: 4px; background-color: @navColor; content: ''; } .expander { margin-left: auto; transition: transform 0.25s ease; width: 24px; text-align: center; line-height: 30px; flex-shrink: 0; margin-right: 0; font-size: 16px; } .dragged { opacity: 1; } .link { display: flex; flex-flow: row nowrap; align-items: center; border-left: @navigator-active-border-width solid transparent; font-size: @navigator-font-size; color: @navigator-text-color; .btn-clean { cursor: pointer; text-decoration: none; position: relative; transition: background 0.2s ease; display: flex; flex-flow: row nowrap; align-items: center; flex-grow: 1; min-height: 40px; background-color: transparent; padding: 8px 16px; min-width: 0; color: inherit; > div { flex-shrink: 0; } > span, > div { .text-truncate(); background-color: transparent; } &.open { .expander { .rotate(180deg); } } } c8y-navigator-icon, device-status { padding: 0 0 0 16px; margin-right: 16px; flex-grow: 0; + .btn-clean { padding-left: 0; } } .btn-clean:active { background-color: @navigator-background-active; } &:hover, &:focus-within { outline: 0; background-color: @navigator-background-selected; color: @navigator-text-color-selected; .btn-clean, .btn-link { background-color: transparent; outline: 0 !important; } } &.active { color: @navigator-text-color-selected; background: @navigator-background-selected; border-left-color: @navigator-border-selected; font-weight: 500; } &.dragged-hover { .lighten(@navigator-background-selected, 0.2); outline: 2px dashed @navigator-border-selected; outline-offset: -2px; * { pointer-events: none; } } &.open { box-shadow: inset 0 1px 0 @navigator-separator-color, inset 0 -1px 0 @navigator-separator-color; } &.open.active { .shadow-border(1px; rgba(0, 0, 0, 0.2)); background: @navigator-background-selected; } &.parent.open:not(.active) { .shadow-border(1px; @navigator-separator-color); ~ .children { .shadow-border(-1px; @navigator-separator-color); } } } .icon { font-size: calc(var(--c8y-navigator-font-size) * 1.428571428571429); } .root-link { font-size: calc(var(--c8y-navigator-font-size) * 1.1428571429); padding: 8px 16px; .icon { font-size: calc(var(--c8y-navigator-font-size) * 1.5); } } .children { transition: all 0.35s ease; .link { padding-left: calc(@margin-16 * 1); } .children { .link { padding-left: calc(@margin-16 * 1 + @margin-base); } .children { .link { padding-left: calc(@margin-16 * 1 + @margin-base * 2); } .children { .link { padding-left: calc(@margin-16 * 1 + @margin-base * 3); } .children { .link { padding-left: calc(@margin-16 * 1 + @margin-base * 4); } .children { .link { padding-left: calc(@margin-16 * 1 + @margin-base * 5); } .children { .link { padding-left: calc(@margin-16 * 1 + @margin-base * 6); } } } } } } } } .slot { position: relative; .loadingIndicator { position: absolute; top: 50%; left: 0; margin-top: -8px; opacity: 0.3; } c8y-device-status-display { height: @margin-16; } .statusContainer { font-size: 14px; overflow: hidden; height: 20px; width: 20px; border-radius: 50%; border: 0; background-image: none; background-color: @palette-high; padding: 1px 2px; } .disabled { pointer-events: none; } // remove the background color from the active nodes which have an active child &:has(.children.collapse.in .link.active) > .link.active { background: transparent; } } .icon { display: inline-block; margin-right: 0; text-align: center; } .empty, .showMore { font-size: 0.93em; opacity: 0.6; font-style: italic; } .link.empty:hover { background-color: transparent; opacity: 0.8; } } .navigator-slot-bottom { position: sticky; bottom: 0; width: 100%; font-size: 11px; background: @navColor; margin-top: auto; order: 10; border-top: 1px solid @navigator-separator-color; padding: 0 @margin-16; a{ color: currentColor; } &:has(.c8y-logo) { padding: @margin-8 @margin-16; } &:has(.logo-spacer) { display: flex; flex-direction: column; gap: @margin-8; } p { text-align: center; opacity: 0.8; align-self: flex-end; } }