Files
deepseek-harness/packages/client/ui-primitives/src/ConnectionIndicator.module.css
T

121 lines
2.2 KiB
CSS

.indicator {
flex: none;
display: inline-grid;
grid-template-columns: 14px max-content;
align-items: center;
column-gap: 4px;
height: 28px;
padding: 0 8px;
box-sizing: border-box;
border: 1px solid transparent;
border-radius: var(--dsw-radius-sm);
font-family: inherit;
font-size: 12px;
font-weight: 500;
line-height: 18px;
white-space: nowrap;
transition:
background-color 160ms ease-out,
color 160ms ease-out,
border-color 160ms ease-out,
opacity 150ms ease-out;
animation: indicator-enter 150ms ease-out;
}
.leaving {
opacity: 0;
}
@keyframes indicator-enter {
from {
opacity: 0;
}
}
.warning {
background: var(--dsw-alias-state-warn-tertiary);
color: var(--dsw-alias-state-warn-label);
border-color: color-mix(in srgb, var(--dsw-alias-state-warn-label) 20%, transparent);
cursor: pointer;
}
@media (hover: hover) {
.warning:hover {
background: color-mix(
in srgb,
var(--dsw-alias-state-warn-tertiary),
var(--dsw-alias-state-warn-primary) 6%
);
}
}
.warning:active {
background: color-mix(
in srgb,
var(--dsw-alias-state-warn-tertiary),
var(--dsw-alias-state-warn-primary) 10%
);
}
.warning:focus-visible {
outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));
outline-offset: 2px;
}
.success {
background: var(--dsw-alias-state-success-tertiary);
color: var(--dsw-alias-state-success-primary);
border-color: color-mix(in srgb, var(--dsw-alias-state-success-primary) 20%, transparent);
}
.icon {
display: grid;
place-items: center;
width: 14px;
height: 14px;
}
.icon > svg {
color: inherit;
}
.label {
text-align: left;
}
.dots {
display: inline-block;
width: 1em;
text-align: left;
}
.secondDot {
animation: reveal-second-dot 1.5s step-end infinite;
}
.thirdDot {
animation: reveal-third-dot 1.5s step-end infinite;
}
@keyframes reveal-second-dot {
0%, 33.32% { opacity: 0; }
33.33%, 100% { opacity: 1; }
}
@keyframes reveal-third-dot {
0%, 66.65% { opacity: 0; }
66.66%, 100% { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
.indicator,
.secondDot,
.thirdDot {
animation: none;
}
.indicator {
transition: none;
}
}