shelving
Version:
Toolkit for using data in JavaScript.
106 lines (91 loc) • 2.99 kB
CSS
@import "../style/base.css";
@layer components {
.video {
/* Identity */
--color-black: var(--video-color-black, inherit);
--color-dark: var(--video-color-dark, inherit);
--color-vivid: var(--video-color-vivid, inherit);
--color-light: var(--video-color-light, inherit);
--color-white: var(--video-color-white, inherit);
/* Block */
aspect-ratio: 16 / 9;
margin-inline: 0;
margin-block: var(--video-spacing, var(--spacing-paragraph));
/* Contents */
display: flex;
flex-direction: column;
gap: var(--video-gap, var(--space-normal));
justify-content: center;
align-items: center;
position: relative;
/* Style — videos use the high-contrast `black + white` pair (a video frame is its own visual
* surface, so it sits outside the lighter component scale). */
background: var(--color-black);
color: var(--color-white);
overflow: hidden;
border-radius: var(--video-radius, var(--radius-xsmall));
&:fullscreen {
border-radius: 0;
}
}
.buttons {
position: absolute;
top: var(--video-controls-offset-y, var(--space-normal));
right: var(--video-controls-offset-x, var(--space-normal));
display: flex;
gap: var(--video-controls-gap, var(--space-small));
&.left {
right: auto;
left: var(--video-controls-offset-x, var(--space-normal));
}
}
.button {
display: inline-flex;
flex-direction: row;
gap: var(--video-control-gap, var(--space-small));
height: var(--video-control-size, 3rem);
min-width: var(--video-control-size, 3rem);
padding-inline: var(--video-control-padding-x, var(--space-xsmall));
align-items: center;
justify-content: center;
border-radius: var(--video-control-radius, 100rem);
border: var(--video-control-border, var(--stroke-normal)) solid transparent;
color: var(--video-color-control-text, var(--color-black));
background: var(--video-color-control-bg, var(--color-white));
transition:
box-shadow var(--duration-fast) ease-in-out,
background-color var(--duration-fast) ease-in-out,
border-color var(--duration-fast) ease-in-out;
&:hover {
box-shadow: var(--video-control-shadow-hover, var(--shadow-small));
background: var(--video-color-control-hover-bg, color-mix(in oklch, var(--color-dark) 20%, transparent));
}
&:disabled {
opacity: var(--video-control-disabled-opacity, 0.5);
cursor: default;
}
&.danger {
border-color: var(--video-color-danger-border, var(--vivid-red));
background: var(--video-color-danger-bg, var(--vivid-red));
color: var(--video-color-danger-text, var(--color-white));
}
&.danger:hover {
background: var(--video-color-danger-hover-bg, color-mix(in oklch, var(--vivid-red) 80%, white));
border-color: var(--video-color-danger-hover-border, color-mix(in oklch, var(--vivid-red) 80%, white));
}
& svg {
width: 1.5rem;
height: 1.5rem;
}
}
}
@layer overrides {
.video {
&:first-child {
margin-block-start: 0;
}
&:last-child {
margin-block-end: 0;
}
}
}