Files
advanced-camera-card/src/scss/notification-block.scss
T

130 lines
2.7 KiB
SCSS

@use './z-index.scss' as *;
@use './notification-common.scss';
:host {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
background: var(--advanced-camera-card-notification-block-background);
color: var(--advanced-camera-card-notification-block-color);
--notification-text-color: var(--advanced-camera-card-notification-block-color);
--notification-control-color: var(--advanced-camera-card-notification-block-color);
// Ensure error messages are selectable.
user-select: text;
// Safari only has prefixed support.
-webkit-user-select: text;
}
.content {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
padding: 24px;
max-width: min(92%, 500px);
max-height: 100%;
overflow-y: auto;
scrollbar-width: thin;
text-align: center;
}
.heading-row {
display: flex;
align-items: center;
gap: 10px;
width: 100%;
.detail.heading {
flex: 1;
}
.controls {
flex-shrink: 0;
display: flex;
align-items: center;
gap: 4px;
padding: 4px 8px;
border-radius: var(--advanced-camera-card-button-border-radius);
background: color-mix(in srgb, var(--notification-control-color), transparent 92%);
// When there are no interactive controls (spinner-only case, e.g.
// Connection / Starting full-card notifications) drop the pill chrome so
// the spinner looks like a status indicator, not a clickable button.
&:not(:has(.control)) {
padding: 0;
background: none;
}
}
}
.metadata {
display: flex;
flex-wrap: wrap;
gap: 6px 16px;
justify-content: center;
}
.detail {
display: flex;
align-items: center;
gap: 10px;
font-size: 14px;
line-height: 1.5;
advanced-camera-card-icon {
flex-shrink: 0;
--mdc-icon-size: 20px;
}
&.heading {
font-weight: 600;
font-size: 16px;
advanced-camera-card-icon {
--mdc-icon-size: 28px;
}
}
&.body {
opacity: 0.85;
// Stretch to the column width (overriding the parent .content's flex
// align-items: center that otherwise shrink-wraps this div) and left-
// align so long error messages read naturally instead of wrapping
// awkwardly around a centered axis.
align-self: stretch;
text-align: left;
// When the spinner stands in for the body icon (no-heading in_progress
// case), size it to match the body icon (20px, set on .detail above) so
// the row reads as a single status line.
.spinner {
width: 20px;
height: 20px;
}
}
}
.description {
font-size: 14px;
line-height: 1.6;
opacity: 0.85;
white-space: pre-wrap;
word-break: break-word;
}
.context {
width: 100%;
text-align: left;
pre {
margin-top: 8px;
}
}