Compare commits

..
6 Commits
4 changed files with 1925 additions and 281 deletions
+805 -84
View File
File diff suppressed because it is too large Load Diff
+849 -132
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "peertube-plugin-yaktube-ondemand", "name": "peertube-plugin-yaktube-ondemand",
"version": "1.5.3", "version": "1.5.9",
"description": "Accessible On-Demand YouTube Import, Live Streams, Smart Recommendations, Sleep Timer, Touch Gestures, Voice Assistant & A11y Engine for PeerTube", "description": "Accessible On-Demand YouTube Import, Live Streams, Smart Recommendations, Sleep Timer, Touch Gestures, Voice Assistant & A11y Engine for PeerTube",
"main": "main.js", "main": "main.js",
"library": "./main.js", "library": "./main.js",
+206
View File
@@ -1354,3 +1354,209 @@ body:has(#yaktube-ondemand-container) my-error-page {
box-shadow: 0 6px 20px rgba(255, 143, 55, 0.4) !important; box-shadow: 0 6px 20px rgba(255, 143, 55, 0.4) !important;
outline: none !important; outline: none !important;
} }
/* ==========================================================================
YAKTUBE ACCESSIBLE PLAYER & WATCH PAGE STYLES (W3C WAI-ARIA)
========================================================================== */
/* 1. Accessible Skip Link (Top of Page) */
.yaktube-skip-link {
position: fixed !important;
top: -120px !important;
left: 16px !important;
background: linear-gradient(135deg, #ff8f37 0%, #ff5e3a 100%) !important;
color: #ffffff !important;
padding: 12px 22px !important;
border-radius: 12px !important;
font-weight: 800 !important;
font-size: 14px !important;
text-decoration: none !important;
box-shadow: 0 8px 30px rgba(255, 143, 55, 0.5) !important;
z-index: 999999 !important;
transition: top 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
display: inline-flex !important;
align-items: center !important;
gap: 8px !important;
}
.yaktube-skip-link:focus,
.yaktube-skip-link:focus-visible {
top: 16px !important;
outline: 3px solid #ffffff !important;
outline-offset: 3px !important;
}
/* 2. Accessible Video Player Container Focus States */
#videojs-wrapper:focus,
#videojs-wrapper:focus-visible,
.video-js:focus-visible {
outline: 3px solid #ff8f37 !important;
outline-offset: 4px !important;
box-shadow: 0 0 25px rgba(255, 143, 55, 0.65) !important;
border-radius: 8px !important;
}
/* 3. Accessible Player Action Toolbar */
.yaktube-player-action-bar {
display: flex !important;
align-items: center !important;
flex-wrap: wrap !important;
gap: 8px !important;
margin: 12px 0 18px 0 !important;
padding: 10px 16px !important;
background: rgba(24, 24, 32, 0.95) !important;
border: 1px solid rgba(255, 143, 55, 0.3) !important;
border-radius: 12px !important;
backdrop-filter: blur(10px) !important;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4) !important;
width: 100% !important;
box-sizing: border-box !important;
}
.yaktube-player-bar-label {
font-size: 13px !important;
font-weight: 700 !important;
color: #ff8f37 !important;
margin-right: 6px !important;
user-select: none !important;
}
.yaktube-player-action-btn {
background: rgba(255, 255, 255, 0.08) !important;
color: #eeeeee !important;
border: 1px solid rgba(255, 255, 255, 0.15) !important;
padding: 7px 14px !important;
border-radius: 8px !important;
font-size: 12.5px !important;
font-weight: 600 !important;
cursor: pointer !important;
transition: all 0.2s ease !important;
display: inline-flex !important;
align-items: center !important;
gap: 5px !important;
}
.yaktube-player-action-btn:hover,
.yaktube-player-action-btn:focus-visible {
background: rgba(255, 143, 55, 0.25) !important;
border-color: #ff8f37 !important;
color: #ffffff !important;
transform: translateY(-1px) !important;
outline: 2px solid #ff8f37 !important;
outline-offset: 2px !important;
}
/* 4. Rate Buttons Distinct Separation (Like & Dislike) */
my-video-rate .video-actions,
my-video-rate .video-actions-rates,
my-video-rate {
display: inline-flex !important;
align-items: center !important;
gap: 8px !important;
}
my-video-rate button.action-button {
margin-right: 6px !important;
border-radius: 8px !important;
transition: all 0.2s ease !important;
}
my-video-rate button.action-button:focus-visible {
outline: 2px solid #ff8f37 !important;
outline-offset: 2px !important;
}
/* 5. Date Toggle Button Clarity */
my-date-toggle .date-toggle {
cursor: pointer !important;
border-radius: 6px !important;
padding: 2px 6px !important;
transition: background 0.2s ease !important;
}
my-date-toggle .date-toggle:hover,
my-date-toggle .date-toggle:focus-visible {
background: rgba(255, 143, 55, 0.15) !important;
color: #ff8f37 !important;
outline: 2px solid #ff8f37 !important;
outline-offset: 1px !important;
}
/* 6. Video.js Native Control Bar 10s Seek Buttons (Mobile & Desktop) */
.video-js .vjs-control-bar .yaktube-vjs-seek-btn {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
width: 44px !important;
height: 100% !important;
min-width: 44px !important;
min-height: 44px !important;
cursor: pointer !important;
color: #f1f1f1 !important;
font-size: 13px !important;
font-weight: 700 !important;
position: relative !important;
user-select: none !important;
background: transparent !important;
border: none !important;
padding: 0 !important;
margin: 0 2px !important;
transition:
color 0.2s ease,
transform 0.15s ease !important;
}
.video-js .vjs-control-bar .yaktube-vjs-seek-btn:hover,
.video-js .vjs-control-bar .yaktube-vjs-seek-btn:focus-visible {
color: #ff8f37 !important;
transform: scale(1.1) !important;
outline: 2px solid #ff8f37 !important;
outline-offset: -2px !important;
}
.video-js .vjs-control-bar .yaktube-vjs-seek-btn:active {
transform: scale(0.92) !important;
}
.yaktube-vjs-seek-icon {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
gap: 1px !important;
font-size: 13px !important;
line-height: 1 !important;
}
.yaktube-vjs-seek-num {
font-size: 10px !important;
font-weight: 800 !important;
font-family:
system-ui,
-apple-system,
BlinkMacSystemFont,
'Segoe UI',
Roboto,
sans-serif !important;
color: #ff8f37 !important;
margin-top: 1px !important;
}
/* 7. Mobile Watch Page & Action Bar Touch Optimizations */
@media (max-width: 768px) {
.video-js .vjs-control-bar .yaktube-vjs-seek-btn {
width: 46px !important;
min-width: 46px !important;
font-size: 14px !important;
}
.yaktube-player-action-bar {
padding: 8px 10px !important;
gap: 6px !important;
}
.yaktube-player-action-btn {
padding: 9px 12px !important;
font-size: 12px !important;
flex: 1 1 calc(50% - 6px) !important;
justify-content: center !important;
min-height: 42px !important;
}
}