feat(core): add user activity logic (#278)

This commit is contained in:
Sam Potts
2025-12-22 09:27:27 +11:00
committed by GitHub
parent b89fef56dd
commit b5a3f551f0
14 changed files with 406 additions and 199 deletions
@@ -55,23 +55,21 @@
background-image: linear-gradient(to top, oklab(0 0 0 / 0.5), oklab(0 0 0 / 0.3), rgba(0, 0, 0, 0));
backdrop-filter: saturate(1.5) brightness(0.9);
transition: opacity 0.15s ease-out;
transition-delay: 500ms;
opacity: 0;
}
.vjs-frosted-skin:hover > .overlay,
.vjs-frosted-skin:has([data-paused]) > .overlay,
.vjs-frosted-skin:has([aria-expanded='true']) > .overlay {
opacity: 1;
transition-duration: 100ms;
transition-delay: 0ms;
}
.vjs-frosted-skin[data-controls='hidden'] > .overlay {
transition-delay: 500ms;
transition-duration: 300ms;
opacity: 0;
}
/* Common Surface Styles - e.g. tooltips, popovers, controls */
.vjs-frosted-skin .surface {
background-color: oklab(1 0 0 / 0.1);
backdrop-filter: blur(64px) brightness(0.9) saturate(1.5);
box-shadow:
inset 0 0 0 1px oklab(1 0 0 / 0.15),
inset 0 0 0 1px oklab(1 0 0 / 0.05),
0 0 0 1px oklab(0 0 0 / 0.15),
oklab(0 0 0 / 0.15) 0px 1px 3px 0px,
oklab(0 0 0 / 0.15) 0px 1px 2px -1px;
@@ -102,26 +100,22 @@
display: flex;
align-items: center;
gap: 0.125rem;
color: oklab(1 0 0);
border-radius: calc(infinity * 1px);
will-change: scale, transform, filter, opacity;
scale: 0.9;
opacity: 0;
filter: blur(8px);
transition-property: scale, transform, filter, opacity;
transition-delay: 500ms;
transition-duration: 300ms;
transition-timing-function: ease-out;
transform-origin: bottom;
color: oklab(1 0 0);
}
.vjs-frosted-skin:hover > .control-bar,
.vjs-frosted-skin:has([data-paused]) > .control-bar,
.vjs-frosted-skin:has([aria-expanded='true']) > .control-bar {
opacity: 1;
scale: 1;
filter: blur(0px);
transition-delay: 0ms;
transition-duration: 100ms;
transform-origin: bottom;
}
.vjs-frosted-skin[data-controls='hidden'] .control-bar {
pointer-events: none;
filter: blur(8px);
scale: 0.9;
opacity: 0;
transition-delay: 500ms;
transition-duration: 300ms;
}
/* Time Display Styling */
@@ -51,20 +51,15 @@
pointer-events: none;
border-radius: inherit;
background-image: linear-gradient(to top, oklab(0 0 0 / 0.7), oklab(0 0 0 / 0.5) 7.5rem, rgba(0, 0, 0, 0));
transform: translateY(100%);
transition-property: transform, opacity;
transition-duration: 150ms;
transition-timing-function: ease-out;
transition-delay: 500ms;
opacity: 0;
}
.vjs-minimal-skin:hover > .overlay,
.vjs-minimal-skin:has([data-paused]) > .overlay,
.vjs-minimal-skin:has([aria-expanded='true']) > .overlay {
opacity: 1;
transform: translateY(0);
transition-duration: 100ms;
transition-property: opacity;
transition-duration: 75ms;
transition-delay: 0ms;
transition-timing-function: ease-out;
}
.vjs-minimal-skin[data-controls='hidden'] > .overlay {
opacity: 0;
transition-duration: 500ms;
transition-delay: 500ms;
}
/* Media Control Bar UI/Styles */
@@ -72,28 +67,30 @@
position: absolute;
bottom: 0;
inset-inline: 0;
padding: 2.5rem 0.75rem 0.75rem 0.75rem;
padding: 2rem 0.375rem 0.375rem 0.375rem;
display: flex;
align-items: center;
gap: 0.875rem;
gap: 0.5rem;
will-change: transform, filter, opacity;
transform: translateY(100%);
opacity: 0;
filter: blur(8px);
transition-property: transform, filter, opacity;
transition-delay: 500ms;
transition-duration: 300ms;
transition-delay: 0ms;
transition-duration: 75ms;
transition-timing-function: ease-out;
color: oklab(1 0 0);
}
.vjs-minimal-skin:hover > .control-bar,
.vjs-minimal-skin:has([data-paused]) > .control-bar,
.vjs-minimal-skin:has([aria-expanded='true']) > .control-bar {
opacity: 1;
transform: translateY(0);
filter: blur(0px);
transition-delay: 0ms;
transition-duration: 100ms;
.vjs-minimal-skin[data-controls='hidden'] > .control-bar {
opacity: 0;
transform: translateY(100%);
filter: blur(8px);
transition-delay: 500ms;
transition-duration: 500ms;
pointer-events: none;
}
@container root (width > 640px) {
.vjs-minimal-skin .control-bar {
padding: 2.5rem 0.75rem 0.75rem 0.75rem;
gap: 0.875rem;
}
}
/* Time Display Styling */