@penaprieto/design-system
Version:
Multi-brand React design system with design tokens from Figma
163 lines (141 loc) • 3.24 kB
CSS
/* Tooltip wrapper */
.ds-tooltip-wrapper {
position: relative;
display: inline-block;
width: fit-content;
}
/* Tooltip base */
.ds-tooltip {
position: absolute;
display: inline-flex;
align-items: center;
gap: var(--size1, 4px);
padding: var(--size2, 8px) var(--size3, 12px);
background-color: var(--semantic-bg-neutral);
border-radius: var(--br-xs, 4px);
color: var(--semantic-text-white-primary);
opacity: 0;
visibility: hidden;
transition: opacity 0.2s ease, visibility 0.2s ease;
z-index: 1000;
-webkit-font-smoothing: antialiased;
box-sizing: border-box;
font-family: var(--body-x-small-fontFamily, var(--font-family, 'Satoshi', sans-serif));
pointer-events: none;
white-space: nowrap;
}
/* Visible state */
.ds-tooltip--visible {
opacity: 1;
visibility: visible;
}
/* Text */
.ds-tooltip__text {
font-family: var(--body-x-small-fontFamily, var(--font-family, 'Satoshi', sans-serif));
font-weight: var(--body-x-small-fontWeight, 400);
font-size: var(--body-x-small-fontSize, 12px);
line-height: var(--body-x-small-lineHeight, 150%);
}
/* Icon */
.ds-tooltip__icon {
display: flex;
align-items: center;
justify-content: center;
width: 12px;
height: 12px;
flex-shrink: 0;
color: var(--semantic-icon-inverse-bold);
}
/* Beak (arrow) */
.ds-tooltip__beak {
position: absolute;
width: 8px;
height: 8px;
background-color: var(--semantic-bg-neutral);
transform: rotate(45deg);
z-index: -1;
}
/* Placement: Top */
.ds-tooltip--top {
bottom: calc(100% + 8px);
left: 50%;
transform: translateX(-50%);
}
.ds-tooltip--top .ds-tooltip__beak {
left: 50%;
bottom: -4px;
transform: translateX(-50%) rotate(45deg);
}
/* Placement: Top Left */
.ds-tooltip--top-left {
bottom: calc(100% + 8px);
left: 0;
}
.ds-tooltip--top-left .ds-tooltip__beak {
left: var(--size3, 12px);
bottom: -4px;
transform: rotate(45deg);
}
/* Placement: Top Right */
.ds-tooltip--top-right {
bottom: calc(100% + 8px);
right: 0;
}
.ds-tooltip--top-right .ds-tooltip__beak {
right: var(--size3, 12px);
bottom: -4px;
transform: rotate(45deg);
}
/* Placement: Right */
.ds-tooltip--right {
left: calc(100% + 8px);
top: 50%;
transform: translateY(-50%);
}
.ds-tooltip--right .ds-tooltip__beak {
left: -4px;
top: 50%;
transform: translateY(-50%) rotate(45deg);
}
/* Placement: Bottom */
.ds-tooltip--bottom {
top: calc(100% + 8px);
left: 50%;
transform: translateX(-50%);
}
.ds-tooltip--bottom .ds-tooltip__beak {
left: 50%;
top: -4px;
transform: translateX(-50%) rotate(45deg);
}
/* Placement: Bottom Left */
.ds-tooltip--bottom-left {
top: calc(100% + 8px);
left: 0;
}
.ds-tooltip--bottom-left .ds-tooltip__beak {
left: var(--size3, 12px);
top: -4px;
transform: rotate(45deg);
}
/* Placement: Bottom Right */
.ds-tooltip--bottom-right {
top: calc(100% + 8px);
right: 0;
}
.ds-tooltip--bottom-right .ds-tooltip__beak {
right: var(--size3, 12px);
top: -4px;
transform: rotate(45deg);
}
/* Placement: Left */
.ds-tooltip--left {
right: calc(100% + 8px);
top: 50%;
transform: translateY(-50%);
}
.ds-tooltip--left .ds-tooltip__beak {
right: -4px;
top: 50%;
transform: translateY(-50%) rotate(45deg);
}