@7sage/vidstack
Version:
UI component library for building high-quality, accessible video and audio experiences on the web.
142 lines (122 loc) • 3.96 kB
CSS
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Tooltips
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
:where(.vds-tooltip, media-tooltip) {
display: contents;
}
:where(.vds-tooltip-content) {
display: inline-block;
box-sizing: border-box;
font-family: var(--media-font-family, sans-serif);
font-size: var(--media-tooltip-font-size, 13px);
font-weight: var(--media-tooltip-font-weight, 500);
opacity: 0;
pointer-events: none;
white-space: nowrap;
z-index: 10;
will-change: transform, opacity;
}
.vds-tooltip-content {
border-radius: var(--media-tooltip-border-radius, 2px);
background-color: var(--media-tooltip-bg-color, var(--default-bg));
border: var(--media-tooltip-border, var(--default-border));
color: var(--media-tooltip-color, var(--default-color));
padding: var(--media-tooltip-padding, 2px 8px);
}
.light .vds-tooltip-content {
--default-color: #1a1a1a;
--default-bg: white;
--default-border: 1px solid rgb(0 0 0 / 0.2);
}
.dark .vds-tooltip-content {
--default-color: #f5f5f5;
--default-bg: black;
--default-border: 1px solid rgb(255 255 255 / 0.1);
}
:where(.vds-menu .vds-menu-button[role='button'][data-pressed] .vds-tooltip-content) {
opacity: 0;
display: none;
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Tooltip Animation
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
:where(.vds-tooltip-content) {
--enter-transform: translateY(0px) scale(1);
--exit-transform: translateY(12px) scale(0.8);
}
:where(.vds-tooltip-content:not([data-visible])) {
animation: var(--media-tooltip-exit-animation, vds-tooltip-exit 0.2s ease-out);
}
:where(.vds-tooltip-content[data-visible]) {
animation: var(--media-tooltip-enter-animation, vds-tooltip-enter 0.2s ease-in);
animation-fill-mode: forwards;
}
/* Bottom */
:where(.vds-tooltip-content[data-placement~='bottom']) {
--enter-transform: translateY(0) scale(1);
--exit-transform: translateY(-12px) scale(0.8);
}
/* Left */
:where(.vds-tooltip-content[data-placement~='left']) {
--enter-transform: translateX(0) scale(1);
--exit-transform: translateX(12px) scale(0.8);
}
/* Right */
:where(.vds-tooltip-content[data-placement~='right']) {
--enter-transform: translateX(0) scale(1);
--exit-transform: translateX(-12px) scale(0.8);
}
@keyframes vds-tooltip-enter {
from {
opacity: 0;
transform: var(--exit-transform);
}
to {
opacity: 1;
transform: var(--enter-transform);
}
}
@keyframes vds-tooltip-exit {
from {
opacity: 1;
transform: var(--enter-transform);
}
to {
opacity: 0;
transform: var(--exit-transform);
}
}
@media (prefers-reduced-motion) {
:where(.vds-tooltip-content) {
animation: none;
}
:where(.vds-tooltip-content[data-visible]) {
opacity: 1;
}
}
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* States
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* Play Button */
[data-media-player]:not([data-paused]) .vds-play-tooltip-text,
[data-media-player][data-paused] .vds-pause-tooltip-text,
/* PIP Button */
[data-media-player][data-pip] .vds-pip-enter-tooltip-text,
[data-media-player]:not([data-pip]) .vds-pip-exit-tooltip-text,
/* Fullscreen Button */
[data-media-player][data-fullscreen] .vds-fs-enter-tooltip-text,
[data-media-player]:not([data-fullscreen]) .vds-fs-exit-tooltip-text,
/* Caption Button */
[data-media-player]:not([data-captions]) .vds-cc-on-tooltip-text,
[data-media-player][data-captions] .vds-cc-off-tooltip-text,
/* Mute Button */
[data-media-player]:not([data-muted]) .vds-mute-tooltip-text,
[data-media-player][data-muted] .vds-unmute-tooltip-text {
display: none;
}