MDM/mdm-front/src/pages/DevicePage/components/DeviceAppsView/DeviceAppsView.scss

680 lines
11 KiB
SCSS

@use '../../../../shared/styles/variables' as *;
.device-apps-view {
display: flex;
flex: 1;
min-height: 0;
flex-direction: column;
gap: 14px;
}
.device-apps-view__header {
display: grid;
grid-template-columns: 180px minmax(0, 1fr) 180px;
align-items: center;
gap: 16px;
min-height: 42px;
}
.device-apps-view__back,
.device-apps-view__install {
height: 42px;
padding: 0 14px;
border: none;
border-radius: 12px;
text-wrap: nowrap;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
font-size: $font-size-16;
font-weight: 600;
cursor: pointer;
transition: 0.2s ease;
}
.device-apps-view__back {
background: $color-surface;
color: $color-text-heading;
box-shadow: 5px 5px 40px -10px rgba($gray50-rgb, 0.2);
width: fit-content;
padding: 0 14px 0 8px;
svg {
color: $blue;
width: 24px;
height: auto;
}
&:hover {
color: $blue;
}
}
.device-apps-view__install {
background: $color-bg;
color: $gray50;
cursor: not-allowed;
justify-self: end;
}
.device-apps-view__title {
height: 42px;
min-width: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
h2 {
margin: 0;
color: $color-text-heading;
font-size: $font-size-22;
font-weight: 650;
line-height: 1.05;
}
span {
display: block;
max-width: 100%;
margin-top: 1px;
color: $gray50;
font-size: $font-size-13;
font-weight: 500;
line-height: 1.2;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.device-apps-view__toolbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.device-apps-view__search {
flex: 1;
min-width: 0;
height: 44px;
padding: 0 14px;
border-radius: 14px;
background: $color-surface;
box-shadow: 5px 5px 40px -10px rgba($gray50-rgb, 0.2);
display: flex;
align-items: center;
gap: 10px;
svg {
flex: 0 0 auto;
color: $gray50;
}
input {
width: 100%;
border: none;
outline: none;
background: $transparent;
color: $color-text-heading;
font: inherit;
font-size: $font-size-15;
font-weight: 500;
&::placeholder {
color: $gray50;
}
}
}
.device-apps-view__toolbar-right {
display: inline-flex;
align-items: center;
gap: 10px;
flex: 0 0 auto;
}
.device-apps-view__sort {
height: 44px;
padding: 0 13px 0 15px;
border: none;
border-radius: 14px;
background: $color-surface;
box-shadow: 5px 5px 40px -10px rgba($gray50-rgb, 0.2);
display: inline-flex;
align-items: center;
gap: 9px;
color: $gray50;
font-size: $font-size-14;
font-weight: 650;
white-space: nowrap;
cursor: pointer;
transition: 0.2s ease;
svg {
transition: .2s ease;
color: $gray50;
}
&:hover,
&[data-state='open'] {
color: $blue;
background: $blue20;
svg {
color: $blue;
}
}
}
.device-apps-view__sort-menu {
z-index: 200;
min-width: 210px;
padding: 6px;
border-radius: 16px;
background: $color-surface;
box-shadow: $shadow-popover;
animation: deviceAppsSortMenuShow 0.16s ease;
}
.device-apps-view__sort-item {
min-height: 38px;
padding: 0 10px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
color: $color-text-heading;
font-size: $font-size-14;
font-weight: 500;
outline: none;
cursor: pointer;
&[data-highlighted] {
background: $color-surface-subtle;
color: $blue;
}
}
.device-apps-view__sort-check {
width: 7px;
height: 7px;
border-radius: 50%;
background: $blue;
flex: 0 0 7px;
}
.device-apps-view__summary {
height: 44px;
padding: 0 14px;
border-radius: 14px;
background: $color-surface;
box-shadow: 5px 5px 40px -10px rgba($gray50-rgb, 0.2);
display: inline-flex;
align-items: center;
gap: 14px;
color: $gray50;
font-size: $font-size-14;
font-weight: 600;
white-space: nowrap;
b {
color: $color-text-heading;
font-weight: 700;
}
}
.device-apps-view__panel {
min-height: 0;
flex: 1;
border-radius: 20px;
background: $color-surface;
box-shadow: 5px 5px 40px -10px rgba($gray50-rgb, 0.2);
overflow: hidden;
}
.device-apps-view__scroll {
height: 100%;
.simplebar-content {
min-height: 100%;
}
.simplebar-track.simplebar-vertical {
top: 14px;
right: 6px;
bottom: 14px;
width: 8px;
}
.simplebar-scrollbar::before {
background: $gray50;
border-radius: 4px;
opacity: 1;
}
}
.device-apps-view__state {
min-height: 220px;
padding: 24px;
display: flex;
align-items: center;
justify-content: center;
color: $gray50;
font-size: $font-size-16;
font-weight: 600;
&.is-error {
color: $red;
}
}
.device-apps-view__list {
display: flex;
flex-direction: column;
}
.device-apps-view__item {
border-bottom: 1px solid $gray20;
&:last-child {
border-bottom: none;
}
}
.device-apps-view__item-header {
margin: 0;
}
.device-apps-view__trigger {
width: 100%;
min-height: 72px;
padding: 14px 20px;
border: none;
background: $color-surface;
display: flex;
align-items: center;
justify-content: space-between;
gap: 18px;
text-align: left;
cursor: pointer;
outline: none;
transition: 0.2s ease;
&:hover {
background: $color-surface-muted;
}
&:focus-visible {
box-shadow: inset 0 0 0 2px rgba($color-primary-rgb, 0.16);
}
&[data-state='open'] {
background: $color-surface-muted;
.device-apps-view__chevron {
transform: rotate(180deg);
}
}
}
.device-apps-view__app-main {
min-width: 0;
display: inline-flex;
align-items: center;
gap: 12px;
}
.device-apps-view__app-icon {
width: 44px;
height: 44px;
flex: 0 0 44px;
border-radius: 14px;
background: $color-bg;
display: inline-flex;
align-items: center;
justify-content: center;
overflow: hidden;
color: $blue;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
&.is-fallback {
background: $blue20;
}
}
.device-apps-view__app-text {
min-width: 0;
display: flex;
flex-direction: column;
gap: 3px;
strong,
small {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
strong {
color: $color-text-heading;
font-size: $font-size-17;
font-weight: 650;
}
small {
color: $gray50;
font-size: $font-size-14;
font-weight: 500;
}
}
.device-apps-view__app-meta {
flex: 0 0 auto;
display: inline-flex;
align-items: center;
gap: 12px;
span {
min-height: 28px;
padding: 0 10px;
border-radius: 999px;
background: $color-bg;
display: inline-flex;
align-items: center;
color: $gray50;
font-size: $font-size-13;
font-weight: 650;
}
}
.device-apps-view__chevron {
color: $gray50;
transition: transform 0.2s ease;
}
.device-apps-view__content {
overflow: hidden;
&[data-state='open'] {
animation: deviceAppsViewDown 0.2s ease;
}
&[data-state='closed'] {
animation: deviceAppsViewUp 0.2s ease;
}
}
.device-apps-view__details {
padding: 0 20px 18px 76px;
}
.device-apps-view__details-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.device-apps-view__detail-card {
min-width: 0;
//min-height: 58px;
padding: 9px 12px;
border-radius: 14px;
background: $color-surface-muted;
box-shadow: inset 0 0 0 1px rgba($gray20-rgb, 0.8);
display: flex;
align-items: center;
gap: 11px;
}
.device-apps-view__detail-icon {
width: 40px;
height: 40px;
border-radius: 10px;
background: $color-bg;
flex: 0 0 40px;
display: inline-flex;
align-items: center;
justify-content: center;
color: $blue;
svg{
width: 20px;
height: auto;
}
}
.device-apps-view__detail-text {
min-width: 0;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 3px;
small {
color: $gray50;
font-size: $font-size-14;
font-weight: 500;
line-height: 1.2;
}
b {
min-width: 0;
color: $color-text-heading;
font-size: $font-size-16;
font-weight: 600;
line-height: 1.2;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.device-apps-view__stats {
margin-top: 10px;
padding: 14px;
border-radius: 14px;
background: $color-surface;
border: 1px dashed $color-border-accent;
text-align: left;
h3 {
margin: 0;
color: $color-text-heading;
font-size: $font-size-15;
font-weight: 650;
}
p {
margin-top: 4px;
color: $gray50;
font-size: $font-size-14;
font-weight: 500;
}
}
.device-apps-view__actions {
margin-top: 10px;
display: flex;
flex-wrap: wrap;
gap: 8px;
button {
height: 36px;
padding: 0 12px;
border: none;
border-radius: 11px;
background: $color-bg;
display: inline-flex;
align-items: center;
gap: 8px;
color: $gray50;
font-size: $font-size-14;
font-weight: 650;
cursor: not-allowed;
}
}
@keyframes deviceAppsViewDown {
from {
height: 0;
opacity: 0;
}
to {
height: var(--radix-accordion-content-height);
opacity: 1;
}
}
@keyframes deviceAppsSortMenuShow {
from {
opacity: 0;
transform: translateY(-4px) scale(0.98);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@keyframes deviceAppsViewUp {
from {
height: var(--radix-accordion-content-height);
opacity: 1;
}
to {
height: 0;
opacity: 0;
}
}
[data-theme='dark'] {
.device-apps-view__back,
.device-apps-view__search,
.device-apps-view__sort,
.device-apps-view__summary,
.device-apps-view__panel {
box-shadow: none;
outline: 1px solid rgba($gray50-rgb, 0.08);
}
.device-apps-view__sort:hover,
.device-apps-view__sort[data-state='open'] {
background: $color-surface-hover;
color: $color-primary-hover;
svg {
color: $color-primary-hover;
}
}
.device-apps-view__trigger:hover {
background: rgba($color-surface-rgb, 0.42);
}
.device-apps-view__trigger[data-state='open'] {
background: $color-surface-hover;
}
.device-apps-view__detail-card {
background: rgba($color-surface-rgb, 0.58);
box-shadow: none;
outline: 1px solid rgba($gray50-rgb, 0.08);
}
.device-apps-view__stats {
background: rgba($color-surface-rgb, 0.58);
}
}
@include laptop-down {
.device-apps-view__header {
grid-template-columns: 160px minmax(0, 1fr) 160px;
gap: 12px;
}
.device-apps-view__toolbar {
gap: 12px;
}
.device-apps-view__summary {
padding-inline: 12px;
gap: 10px;
}
}
@include tablet-down {
.device-apps-view__header {
grid-template-columns: auto minmax(0, 1fr) auto;
gap: 10px;
}
.device-apps-view__back,
.device-apps-view__install {
padding-inline: 12px;
}
.device-apps-view__toolbar {
flex-wrap: wrap;
align-items: stretch;
}
.device-apps-view__search {
flex-basis: 100%;
}
.device-apps-view__toolbar-right {
width: 100%;
justify-content: flex-end;
flex-wrap: wrap;
}
.device-apps-view__trigger {
padding-inline: 16px;
}
.device-apps-view__app-meta {
gap: 8px;
}
.device-apps-view__details {
padding: 0 16px 16px 72px;
}
.device-apps-view__details-grid {
grid-template-columns: 1fr;
}
}