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

63 lines
1.6 KiB
CSS

.bubble {
display: inline-flex;
align-items: center;
gap: 8px;
position: fixed;
z-index: 100;
/* Fixed-position shrink-to-fit measures only the space from `left` to the
viewport edge, so anchors near the right edge would wrap early;
max-content sizes by the label alone, capped at half the viewport. */
width: max-content;
max-width: 50vw;
padding: 3px 7px;
border-radius: var(--dsw-radius-sm);
background: var(--dsw-alias-tooltip-bg);
color: var(--dsw-static-neutral-bluish-00);
font-size: 13px;
line-height: 20px;
white-space: pre-line;
/* Unbreakable tokens (URLs, paths) must not push past max-width. */
overflow-wrap: break-word;
pointer-events: none;
animation: tooltip-in 150ms var(--ds-ease-in-out);
}
.bubble[data-portal] { z-index: 1100; }
.label { min-width: 0; }
/* A 16px keycap centered beside a 20px label has 5px of vertical clearance. */
.bubble[data-has-shortcut] { padding-inline-end: 5px; }
.bubble[data-has-shortcut]:not(:has(.label)) { padding: 3px; }
.bubble[data-side='right'] {
transform: translateY(-50%);
}
.bubble[data-side='bottom'] {
transform: translateX(-50%);
}
.bubble[data-side='top'] {
transform: translate(-50%, -100%);
}
/* End alignment: `left` carries the anchor's right edge, so the bubble sits
fully left of it instead of centering. */
.bubble[data-side='bottom'][data-align='end'] {
transform: translateX(-100%);
}
.bubble[data-side='top'][data-align='end'] {
transform: translate(-100%, -100%);
}
@keyframes tooltip-in {
from { opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
.bubble {
animation: none;
}
}