mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-10 12:07:51 +08:00
633 lines
14 KiB
CSS
633 lines
14 KiB
CSS
.fluent-dashboard {
|
|
--fluent-dashboard-border: var(--fluent-card-border, var(--inputborder-color, color-mix(in srgb, currentColor 16%, transparent)));
|
|
--fluent-dashboard-muted: var(--fluent-text-secondary, color-mix(in srgb, currentColor 68%, transparent));
|
|
--fluent-dashboard-surface: var(--fluent-card-bg, rgba(var(--primary-rgbbody, 255, 255, 255), .7));
|
|
--fluent-dashboard-shadow: var(--fluent-card-shadow, 0 .1rem .3rem var(--input-boxcolor, color-mix(in srgb, CanvasText 8%, transparent)));
|
|
color: var(--fluent-text, CanvasText);
|
|
container-type: inline-size;
|
|
}
|
|
|
|
.fluent-dashboard, .fluent-dashboard * {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.fluent-dashboard__header {
|
|
z-index: 0;
|
|
color: highlighttext;
|
|
background: linear-gradient(120deg, Highlight, color-mix(in srgb, Highlight 68%, CanvasText));
|
|
border-radius: .75rem;
|
|
justify-content: space-between;
|
|
align-items: end;
|
|
gap: 1rem;
|
|
margin-block-end: 1rem;
|
|
padding: 1.25rem;
|
|
display: flex;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.fluent-dashboard__header h1, .fluent-dashboard__header p {
|
|
color: inherit;
|
|
margin: 0;
|
|
}
|
|
|
|
.fluent-dashboard__header h1 {
|
|
font-size: clamp(1.5rem, 4vw, 2.25rem);
|
|
line-height: 1.1;
|
|
}
|
|
|
|
.fluent-dashboard__header h1 + p {
|
|
opacity: .82;
|
|
margin-block-start: .4rem;
|
|
}
|
|
|
|
.fluent-dashboard__updated {
|
|
opacity: .86;
|
|
flex: none;
|
|
font-size: .85rem;
|
|
}
|
|
|
|
.fluent-dashboard__grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 1rem;
|
|
display: grid;
|
|
}
|
|
|
|
.fluent-dashboard__card {
|
|
min-width: 0;
|
|
color: inherit;
|
|
background: var(--fluent-dashboard-surface);
|
|
border: 1px solid var(--fluent-dashboard-border);
|
|
box-shadow: var(--fluent-dashboard-shadow);
|
|
border-radius: .75rem;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.fluent-dashboard__card--wide {
|
|
grid-column: 1 / -1;
|
|
}
|
|
|
|
.fluent-dashboard__card-title {
|
|
color: inherit;
|
|
border-block-end: 1px solid var(--fluent-dashboard-border);
|
|
margin: 0;
|
|
padding: 1rem 1.1rem .85rem 1.35rem;
|
|
font-size: 1rem;
|
|
font-weight: 650;
|
|
line-height: 1.25;
|
|
position: relative;
|
|
}
|
|
|
|
.fluent-dashboard__card-title:before {
|
|
content: "";
|
|
background: highlight;
|
|
border-radius: 1rem;
|
|
width: .2rem;
|
|
position: absolute;
|
|
inset: 1rem auto .85rem .7rem;
|
|
}
|
|
|
|
.fluent-dashboard__card-content {
|
|
padding: 1rem 1.1rem;
|
|
}
|
|
|
|
.fluent-dashboard__details {
|
|
grid-template-columns: minmax(8rem, 36%) minmax(0, 1fr);
|
|
gap: .6rem 1rem;
|
|
margin: 0;
|
|
display: grid;
|
|
}
|
|
|
|
.fluent-dashboard__details-label {
|
|
color: var(--fluent-dashboard-muted);
|
|
}
|
|
|
|
.fluent-dashboard__details-value {
|
|
overflow-wrap: anywhere;
|
|
min-width: 0;
|
|
font-weight: 550;
|
|
}
|
|
|
|
.fluent-dashboard__meter + .fluent-dashboard__meter {
|
|
margin-block-start: 1.1rem;
|
|
}
|
|
|
|
.fluent-dashboard__meter-label {
|
|
justify-content: space-between;
|
|
gap: 1rem;
|
|
margin-block-end: .45rem;
|
|
font-size: .85rem;
|
|
display: flex;
|
|
}
|
|
|
|
.fluent-dashboard__meter-label span:last-child {
|
|
color: var(--fluent-dashboard-muted);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.fluent-dashboard__meter-track {
|
|
background: color-mix(in srgb, currentColor 12%, transparent);
|
|
border-radius: 1rem;
|
|
height: .5rem;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.fluent-dashboard__meter-value {
|
|
border-radius: inherit;
|
|
background: highlight;
|
|
height: 100%;
|
|
transition: width .2s;
|
|
display: block;
|
|
}
|
|
|
|
.fluent-dashboard__table-wrap {
|
|
max-width: 100%;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.fluent-dashboard__table {
|
|
width: 100%;
|
|
color: inherit;
|
|
border-collapse: collapse;
|
|
margin: 0;
|
|
}
|
|
|
|
.fluent-dashboard__table th, .fluent-dashboard__table td {
|
|
text-align: start;
|
|
vertical-align: middle;
|
|
border-block-end: 1px solid var(--fluent-dashboard-border);
|
|
padding: .7rem .65rem;
|
|
}
|
|
|
|
.fluent-dashboard__table th {
|
|
color: var(--fluent-dashboard-muted);
|
|
letter-spacing: .02em;
|
|
text-transform: uppercase;
|
|
font-size: .78rem;
|
|
font-weight: 650;
|
|
}
|
|
|
|
.fluent-dashboard__table tbody tr:last-child td {
|
|
border-block-end: 0;
|
|
}
|
|
|
|
.fluent-dashboard__status {
|
|
white-space: nowrap;
|
|
align-items: center;
|
|
gap: .35rem;
|
|
font-size: .82rem;
|
|
font-weight: 600;
|
|
display: inline-flex;
|
|
}
|
|
|
|
.fluent-dashboard__status:before {
|
|
content: "";
|
|
background: currentColor;
|
|
border-radius: 50%;
|
|
width: .5rem;
|
|
height: .5rem;
|
|
}
|
|
|
|
.fluent-dashboard__status--up {
|
|
color: color-mix(in srgb, LinkText 75%, Highlight);
|
|
}
|
|
|
|
.fluent-dashboard__status--down {
|
|
color: color-mix(in srgb, currentColor 58%, transparent);
|
|
}
|
|
|
|
.fluent-dashboard__table .fluent-dashboard__empty {
|
|
color: var(--fluent-dashboard-muted);
|
|
text-align: center;
|
|
padding-block: 1.5rem;
|
|
font-style: italic;
|
|
}
|
|
|
|
@container (width <= 44rem) {
|
|
.fluent-dashboard__grid {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
|
|
.fluent-dashboard__card--wide {
|
|
grid-column: auto;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 575px) {
|
|
.fluent-dashboard__header {
|
|
flex-direction: column;
|
|
align-items: start;
|
|
padding: 1rem;
|
|
}
|
|
|
|
.fluent-dashboard__details {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
gap: .2rem;
|
|
}
|
|
|
|
.fluent-dashboard__details-value + .fluent-dashboard__details-label {
|
|
margin-block-start: .45rem;
|
|
}
|
|
|
|
.fluent-dashboard__card-content {
|
|
padding: .85rem;
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.fluent-dashboard__meter-value {
|
|
transition: none;
|
|
}
|
|
}
|
|
|
|
.fluent-dashboard {
|
|
--dash-card-bg: var(--fluent-card-bg, Canvas);
|
|
--dash-text: var(--fluent-text, CanvasText);
|
|
--dash-border: var(--fluent-card-border, color-mix(in srgb, CanvasText 18%, transparent));
|
|
--dash-gap: .75rem;
|
|
--dash-radius: var(--fluent-border-radius, .5rem);
|
|
color: var(--dash-text);
|
|
}
|
|
|
|
.fluent-dashboard__toolbar {
|
|
gap: var(--dash-gap);
|
|
margin-block: var(--dash-gap);
|
|
border: 0;
|
|
flex-wrap: wrap;
|
|
padding: 0;
|
|
display: flex;
|
|
}
|
|
|
|
.fluent-dashboard__workspace {
|
|
gap: var(--dash-gap);
|
|
grid-template-columns: minmax(0, 1fr);
|
|
display: grid;
|
|
}
|
|
|
|
.fluent-dashboard__canvas {
|
|
min-width: 0;
|
|
min-height: 12rem;
|
|
}
|
|
|
|
.fluent-dashboard__library, .fluent-dashboard__properties {
|
|
border: 1px solid var(--dash-border);
|
|
border-radius: var(--dash-radius);
|
|
min-width: 0;
|
|
padding: var(--dash-gap);
|
|
}
|
|
|
|
.fluent-dashboard__library > button, .fluent-dashboard__properties > button {
|
|
margin: .2rem;
|
|
}
|
|
|
|
.fluent-dashboard__field {
|
|
margin-block: var(--dash-gap);
|
|
display: block;
|
|
}
|
|
|
|
.fluent-dashboard__field > input {
|
|
width: 100%;
|
|
display: block;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item-content > .fluent-dashboard__card {
|
|
flex-direction: column;
|
|
height: 100%;
|
|
display: flex;
|
|
}
|
|
|
|
.fluent-dashboard__card-header {
|
|
flex: none;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
min-height: 2rem;
|
|
display: flex;
|
|
}
|
|
|
|
.fluent-dashboard__card-header > .fluent-dashboard__card-title {
|
|
border: 0;
|
|
flex: 1;
|
|
padding-block: .5rem;
|
|
}
|
|
|
|
.fluent-dashboard__card-header > button {
|
|
flex: none;
|
|
margin-inline-end: .5rem;
|
|
font-size: .75rem;
|
|
}
|
|
|
|
.fluent-dashboard__card-content {
|
|
min-height: 0;
|
|
overflow: auto;
|
|
}
|
|
|
|
.fluent-dashboard__widget-status {
|
|
padding-inline: var(--dash-gap);
|
|
margin: 0;
|
|
font-size: .85rem;
|
|
}
|
|
|
|
.fluent-dashboard__card--editing .fluent-dashboard__card-header {
|
|
cursor: move;
|
|
}
|
|
|
|
.fluent-dashboard__card--hidden {
|
|
opacity: .5;
|
|
}
|
|
|
|
.fluent-dashboard__card--locked .fluent-dashboard__card-header {
|
|
cursor: default;
|
|
}
|
|
|
|
.fluent-dashboard__tile--selected > .grid-stack-item-content {
|
|
outline-offset: -2px;
|
|
outline: 2px solid highlight;
|
|
}
|
|
|
|
.fluent-dashboard__group {
|
|
border: 1px solid var(--dash-border);
|
|
border-radius: var(--dash-radius);
|
|
background: var(--dash-card-bg);
|
|
flex-direction: column;
|
|
height: 100%;
|
|
display: flex;
|
|
}
|
|
|
|
.fluent-dashboard__group > .fluent-dashboard__card-header {
|
|
height: 40px;
|
|
}
|
|
|
|
.fluent-dashboard__group-description {
|
|
padding: .25rem var(--dash-gap);
|
|
margin: 0;
|
|
font-size: .85rem;
|
|
}
|
|
|
|
.fluent-dashboard__group-body {
|
|
flex: 1;
|
|
min-height: 80px;
|
|
}
|
|
|
|
.fluent-dashboard__metric, .fluent-dashboard__traffic {
|
|
padding: var(--dash-gap);
|
|
flex-direction: column;
|
|
gap: .4rem;
|
|
display: flex;
|
|
overflow: auto;
|
|
}
|
|
|
|
.fluent-dashboard__metric-value {
|
|
overflow-wrap: anywhere;
|
|
font-size: clamp(1rem, 1.5vw, 1.6rem);
|
|
}
|
|
|
|
.fluent-dashboard__metric-detail {
|
|
color: var(--dash-text);
|
|
opacity: .7;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.fluent-dashboard__metric progress {
|
|
width: 100%;
|
|
accent-color: var(--fluent-primary, Highlight);
|
|
}
|
|
|
|
.fluent-dashboard__traffic svg {
|
|
width: 100%;
|
|
height: 5rem;
|
|
min-height: 2rem;
|
|
}
|
|
|
|
.fluent-dashboard__traffic polyline {
|
|
fill: none;
|
|
stroke-width: 1.5px;
|
|
vector-effect: non-scaling-stroke;
|
|
}
|
|
|
|
.fluent-dashboard__traffic-rx {
|
|
stroke: var(--fluent-primary, Highlight);
|
|
}
|
|
|
|
.fluent-dashboard__traffic-tx {
|
|
stroke: var(--fluent-success, #26884a);
|
|
}
|
|
|
|
.fluent-dashboard__shortcuts {
|
|
gap: var(--dash-gap);
|
|
padding: var(--dash-gap);
|
|
flex-wrap: wrap;
|
|
display: flex;
|
|
}
|
|
|
|
.fluent-dashboard__shortcuts a {
|
|
border: 1px solid var(--dash-border);
|
|
border-radius: var(--dash-radius);
|
|
color: var(--dash-text);
|
|
align-items: center;
|
|
padding: .5rem;
|
|
display: inline-flex;
|
|
}
|
|
|
|
.fluent-dashboard__notice:empty, .fluent-dashboard [hidden] {
|
|
display: none;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item-content {
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.fluent-dashboard__canvas .grid-stack-item > .grid-stack-item-content {
|
|
overflow: visible;
|
|
}
|
|
|
|
.fluent-dashboard__group-body.grid-stack {
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
.fluent-dashboard__workspace--editing .fluent-dashboard__canvas > .grid-stack-item {
|
|
touch-action: auto;
|
|
}
|
|
|
|
@media (min-width: 1400px) {
|
|
.fluent-dashboard__workspace--editing {
|
|
grid-template-columns: 12rem minmax(0, 1fr) 15rem;
|
|
align-items: start;
|
|
}
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack {
|
|
position: relative;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-rtl {
|
|
direction: ltr;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-rtl > .grid-stack-item {
|
|
direction: rtl;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-placeholder > .placeholder-content {
|
|
background-color: #0000001a;
|
|
width: auto;
|
|
margin: 0;
|
|
position: absolute;
|
|
z-index: 0 !important;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack > .grid-stack-item {
|
|
width: var(--gs-column-width);
|
|
height: var(--gs-cell-height);
|
|
padding: 0;
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack > .grid-stack-item > .grid-stack-item-content {
|
|
width: auto;
|
|
margin: 0;
|
|
position: absolute;
|
|
overflow: hidden auto;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack > .grid-stack-item.size-to-content:not(.size-to-content-max) > .grid-stack-item-content {
|
|
overflow-y: hidden;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack > .grid-stack-item > .grid-stack-item-content, .fluent-dashboard .grid-stack > .grid-stack-placeholder > .placeholder-content {
|
|
top: var(--gs-item-margin-top);
|
|
right: var(--gs-item-margin-right);
|
|
bottom: var(--gs-item-margin-bottom);
|
|
left: var(--gs-item-margin-left);
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-handle {
|
|
-ms-touch-action: none;
|
|
touch-action: none;
|
|
font-size: .1px;
|
|
display: block;
|
|
position: absolute;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item.ui-resizable-disabled > .ui-resizable-handle, .fluent-dashboard .grid-stack-item.ui-resizable-autohide > .ui-resizable-handle {
|
|
display: none;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-ne, .fluent-dashboard .grid-stack-item > .ui-resizable-nw, .fluent-dashboard .grid-stack-item > .ui-resizable-se, .fluent-dashboard .grid-stack-item > .ui-resizable-sw {
|
|
background-image: url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"%23666\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 20 20\"><path d=\"m10 3 2 2H8l2-2v14l-2-2h4l-2 2\"/></svg>");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-ne, .fluent-dashboard .grid-stack-item > .ui-resizable-sw {
|
|
transform: rotate(45deg);
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-nw, .fluent-dashboard .grid-stack-item > .ui-resizable-se {
|
|
transform: rotate(-45deg);
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-nw {
|
|
cursor: nw-resize;
|
|
width: 20px;
|
|
height: 20px;
|
|
top: var(--gs-item-margin-top);
|
|
left: var(--gs-item-margin-left);
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-n {
|
|
cursor: n-resize;
|
|
height: 10px;
|
|
top: var(--gs-item-margin-top);
|
|
left: 25px;
|
|
right: 25px;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-ne {
|
|
cursor: ne-resize;
|
|
width: 20px;
|
|
height: 20px;
|
|
top: var(--gs-item-margin-top);
|
|
right: var(--gs-item-margin-right);
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-e {
|
|
cursor: e-resize;
|
|
width: 10px;
|
|
top: 15px;
|
|
bottom: 15px;
|
|
right: var(--gs-item-margin-right);
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-se {
|
|
cursor: se-resize;
|
|
width: 20px;
|
|
height: 20px;
|
|
bottom: var(--gs-item-margin-bottom);
|
|
right: var(--gs-item-margin-right);
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-s {
|
|
cursor: s-resize;
|
|
height: 10px;
|
|
left: 25px;
|
|
bottom: var(--gs-item-margin-bottom);
|
|
right: 25px;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-sw {
|
|
cursor: sw-resize;
|
|
width: 20px;
|
|
height: 20px;
|
|
bottom: var(--gs-item-margin-bottom);
|
|
left: var(--gs-item-margin-left);
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item > .ui-resizable-w {
|
|
cursor: w-resize;
|
|
width: 10px;
|
|
top: 15px;
|
|
bottom: 15px;
|
|
left: var(--gs-item-margin-left);
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item.ui-draggable-dragging > .ui-resizable-handle {
|
|
display: none !important;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item.ui-draggable-dragging {
|
|
will-change: left,top;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-item.ui-resizable-resizing {
|
|
will-change: width,height;
|
|
}
|
|
|
|
.fluent-dashboard .ui-draggable-dragging, .fluent-dashboard .ui-resizable-resizing {
|
|
z-index: 10000;
|
|
}
|
|
|
|
.fluent-dashboard .ui-draggable-dragging > .grid-stack-item-content, .fluent-dashboard .ui-resizable-resizing > .grid-stack-item-content {
|
|
opacity: .8;
|
|
box-shadow: 1px 4px 6px #0003;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-animate, .fluent-dashboard .grid-stack-animate .grid-stack-item {
|
|
transition: left .3s, top .3s, height .3s, width .3s;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack-animate .grid-stack-item.ui-draggable-dragging, .fluent-dashboard .grid-stack-animate .grid-stack-item.ui-resizable-resizing, .fluent-dashboard .grid-stack-animate .grid-stack-item.grid-stack-placeholder {
|
|
transition: left, top, height, width;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack > .grid-stack-item[gs-y="0"] {
|
|
top: 0;
|
|
}
|
|
|
|
.fluent-dashboard .grid-stack > .grid-stack-item[gs-x="0"] {
|
|
left: 0%;
|
|
}
|