@videojs/html 10.1.0 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/dist/default/define/audio/compat-skin.css +116 -65
  2. package/dist/default/define/audio/compat-skin2.js +1 -1
  3. package/dist/default/define/audio/neutral-skin.css +25 -16
  4. package/dist/default/define/audio/neutral-skin2.js +1 -1
  5. package/dist/default/define/audio/scaffold-skin.css +93 -51
  6. package/dist/default/define/audio/scaffold-skin2.js +1 -1
  7. package/dist/default/define/audio/skin.css +21 -6
  8. package/dist/default/define/audio/skin2.js +1 -1
  9. package/dist/default/define/extensions/google-analytics.js +6 -0
  10. package/dist/default/define/live-audio/compat-skin.css +98 -65
  11. package/dist/default/define/live-audio/compat-skin2.js +1 -1
  12. package/dist/default/define/live-audio/neutral-skin.css +8 -5
  13. package/dist/default/define/live-audio/neutral-skin2.js +1 -1
  14. package/dist/default/define/live-audio/scaffold-skin.css +75 -51
  15. package/dist/default/define/live-audio/scaffold-skin2.js +1 -1
  16. package/dist/default/define/live-audio/skin.css +6 -5
  17. package/dist/default/define/live-audio/skin2.js +1 -1
  18. package/dist/default/define/live-video/compat-skin.css +123 -21
  19. package/dist/default/define/live-video/compat-skin2.js +1 -1
  20. package/dist/default/define/live-video/neutral-skin.css +82 -14
  21. package/dist/default/define/live-video/neutral-skin2.js +1 -1
  22. package/dist/default/define/live-video/scaffold-skin.css +107 -26
  23. package/dist/default/define/live-video/scaffold-skin2.js +1 -1
  24. package/dist/default/define/live-video/skin.css +96 -16
  25. package/dist/default/define/live-video/skin2.js +1 -1
  26. package/dist/default/define/media/dailymotion-video.js +11 -0
  27. package/dist/default/define/media/mixcloud-audio.js +11 -0
  28. package/dist/default/define/media/soundcloud-audio.js +11 -0
  29. package/dist/default/define/video/compat-skin.css +123 -21
  30. package/dist/default/define/video/compat-skin2.js +1 -1
  31. package/dist/default/define/video/neutral-skin.css +85 -24
  32. package/dist/default/define/video/neutral-skin2.js +1 -1
  33. package/dist/default/define/video/scaffold-skin.css +107 -26
  34. package/dist/default/define/video/scaffold-skin2.js +1 -1
  35. package/dist/default/define/video/skin.css +94 -16
  36. package/dist/default/define/video/skin2.js +1 -1
  37. package/dist/default/extensions/google-analytics/extension.js +75 -0
  38. package/dist/default/extensions/mux-data/extension.js +7 -2
  39. package/dist/default/internal/skins/compat-audio/register.js +0 -10
  40. package/dist/default/internal/skins/compat-audio/skin.css +116 -65
  41. package/dist/default/internal/skins/compat-audio/template.js +15 -39
  42. package/dist/default/internal/skins/compat-live-audio/register.js +0 -10
  43. package/dist/default/internal/skins/compat-live-audio/skin.css +98 -65
  44. package/dist/default/internal/skins/compat-live-audio/template.js +2 -26
  45. package/dist/default/internal/skins/compat-live-video/skin.css +123 -21
  46. package/dist/default/internal/skins/compat-video/skin.css +123 -21
  47. package/dist/default/internal/skins/default-audio/skin.css +21 -6
  48. package/dist/default/internal/skins/default-live-audio/skin.css +6 -5
  49. package/dist/default/internal/skins/default-live-video/skin.css +96 -16
  50. package/dist/default/internal/skins/default-video/skin.css +94 -16
  51. package/dist/default/internal/skins/neutral-audio/skin.css +25 -16
  52. package/dist/default/internal/skins/neutral-audio/template.js +1 -1
  53. package/dist/default/internal/skins/neutral-live-audio/skin.css +8 -5
  54. package/dist/default/internal/skins/neutral-live-video/skin.css +82 -14
  55. package/dist/default/internal/skins/neutral-video/skin.css +85 -24
  56. package/dist/default/internal/skins/neutral-video/template.js +1 -1
  57. package/dist/default/internal/skins/scaffold-audio/register.js +0 -10
  58. package/dist/default/internal/skins/scaffold-audio/skin.css +93 -51
  59. package/dist/default/internal/skins/scaffold-audio/template.js +15 -39
  60. package/dist/default/internal/skins/scaffold-live-audio/register.js +0 -10
  61. package/dist/default/internal/skins/scaffold-live-audio/skin.css +75 -51
  62. package/dist/default/internal/skins/scaffold-live-audio/template.js +2 -26
  63. package/dist/default/internal/skins/scaffold-live-video/skin.css +107 -26
  64. package/dist/default/internal/skins/scaffold-video/skin.css +107 -26
  65. package/dist/default/media/dailymotion-video/adapter.js +31 -0
  66. package/dist/default/media/hls-audio/adapter.js +1 -1
  67. package/dist/default/media/hls-background-video/adapter.js +8 -1
  68. package/dist/default/media/hls-video/adapter.js +1 -1
  69. package/dist/default/media/mixcloud-audio/adapter.js +16 -0
  70. package/dist/default/media/soundcloud-audio/adapter.js +16 -0
  71. package/dist/default/player/element.js +1 -5
  72. package/dist/default/presets/background/skin.js +2 -2
  73. package/dist/default/presets/skin.js +4 -3
  74. package/dist/default/ui/dialog/element.js +13 -1
  75. package/dist/default/ui/gesture/element.js +3 -0
  76. package/dist/default/ui/media-button-element.js +10 -1
  77. package/dist/default/ui/playback-rate-button/element.js +7 -2
  78. package/dist/default/ui/playback-rate-radio-group/element.js +10 -3
  79. package/dist/default/ui/radio-options/controller.js +18 -5
  80. package/dist/default/ui/slider/element.js +3 -1
  81. package/dist/default/ui/time-slider/element.js +19 -7
  82. package/dist/default/ui/volume-slider/element.js +3 -1
  83. package/dist/default/version.js +1 -1
  84. package/dist/dev/define/audio/compat-skin.css +116 -65
  85. package/dist/dev/define/audio/compat-skin2.js +1 -1
  86. package/dist/dev/define/audio/compat-skin2.js.map +1 -1
  87. package/dist/dev/define/audio/neutral-skin.css +25 -16
  88. package/dist/dev/define/audio/neutral-skin2.js +1 -1
  89. package/dist/dev/define/audio/neutral-skin2.js.map +1 -1
  90. package/dist/dev/define/audio/scaffold-skin.css +93 -51
  91. package/dist/dev/define/audio/scaffold-skin2.js +1 -1
  92. package/dist/dev/define/audio/scaffold-skin2.js.map +1 -1
  93. package/dist/dev/define/audio/skin.css +21 -6
  94. package/dist/dev/define/audio/skin2.js +1 -1
  95. package/dist/dev/define/audio/skin2.js.map +1 -1
  96. package/dist/dev/define/extensions/google-analytics.d.ts +11 -0
  97. package/dist/dev/define/extensions/google-analytics.js +8 -0
  98. package/dist/dev/define/extensions/google-analytics.js.map +1 -0
  99. package/dist/dev/define/live-audio/compat-skin.css +98 -65
  100. package/dist/dev/define/live-audio/compat-skin2.js +1 -1
  101. package/dist/dev/define/live-audio/compat-skin2.js.map +1 -1
  102. package/dist/dev/define/live-audio/neutral-skin.css +8 -5
  103. package/dist/dev/define/live-audio/neutral-skin2.js +1 -1
  104. package/dist/dev/define/live-audio/neutral-skin2.js.map +1 -1
  105. package/dist/dev/define/live-audio/scaffold-skin.css +75 -51
  106. package/dist/dev/define/live-audio/scaffold-skin2.js +1 -1
  107. package/dist/dev/define/live-audio/scaffold-skin2.js.map +1 -1
  108. package/dist/dev/define/live-audio/skin.css +6 -5
  109. package/dist/dev/define/live-audio/skin2.js +1 -1
  110. package/dist/dev/define/live-audio/skin2.js.map +1 -1
  111. package/dist/dev/define/live-video/compat-skin.css +123 -21
  112. package/dist/dev/define/live-video/compat-skin2.js +1 -1
  113. package/dist/dev/define/live-video/compat-skin2.js.map +1 -1
  114. package/dist/dev/define/live-video/neutral-skin.css +82 -14
  115. package/dist/dev/define/live-video/neutral-skin2.js +1 -1
  116. package/dist/dev/define/live-video/neutral-skin2.js.map +1 -1
  117. package/dist/dev/define/live-video/scaffold-skin.css +107 -26
  118. package/dist/dev/define/live-video/scaffold-skin2.js +1 -1
  119. package/dist/dev/define/live-video/scaffold-skin2.js.map +1 -1
  120. package/dist/dev/define/live-video/skin.css +96 -16
  121. package/dist/dev/define/live-video/skin2.js +1 -1
  122. package/dist/dev/define/live-video/skin2.js.map +1 -1
  123. package/dist/dev/define/media/dailymotion-video.d.ts +15 -0
  124. package/dist/dev/define/media/dailymotion-video.js +13 -0
  125. package/dist/dev/define/media/dailymotion-video.js.map +1 -0
  126. package/dist/dev/define/media/mixcloud-audio.d.ts +15 -0
  127. package/dist/dev/define/media/mixcloud-audio.js +13 -0
  128. package/dist/dev/define/media/mixcloud-audio.js.map +1 -0
  129. package/dist/dev/define/media/soundcloud-audio.d.ts +15 -0
  130. package/dist/dev/define/media/soundcloud-audio.js +13 -0
  131. package/dist/dev/define/media/soundcloud-audio.js.map +1 -0
  132. package/dist/dev/define/video/compat-skin.css +123 -21
  133. package/dist/dev/define/video/compat-skin2.js +1 -1
  134. package/dist/dev/define/video/compat-skin2.js.map +1 -1
  135. package/dist/dev/define/video/neutral-skin.css +85 -24
  136. package/dist/dev/define/video/neutral-skin2.js +1 -1
  137. package/dist/dev/define/video/neutral-skin2.js.map +1 -1
  138. package/dist/dev/define/video/scaffold-skin.css +107 -26
  139. package/dist/dev/define/video/scaffold-skin2.js +1 -1
  140. package/dist/dev/define/video/scaffold-skin2.js.map +1 -1
  141. package/dist/dev/define/video/skin.css +94 -16
  142. package/dist/dev/define/video/skin2.js +1 -1
  143. package/dist/dev/define/video/skin2.js.map +1 -1
  144. package/dist/dev/extensions/google-analytics/extension.d.ts +52 -0
  145. package/dist/dev/extensions/google-analytics/extension.js +77 -0
  146. package/dist/dev/extensions/google-analytics/extension.js.map +1 -0
  147. package/dist/dev/extensions/google-analytics/index.d.ts +2 -0
  148. package/dist/dev/extensions/mux-data/extension.d.ts +4 -1
  149. package/dist/dev/extensions/mux-data/extension.js +7 -2
  150. package/dist/dev/extensions/mux-data/extension.js.map +1 -1
  151. package/dist/dev/index.d.ts +3 -3
  152. package/dist/dev/internal/skins/compat-audio/register.d.ts +3 -5
  153. package/dist/dev/internal/skins/compat-audio/register.js +0 -10
  154. package/dist/dev/internal/skins/compat-audio/register.js.map +1 -1
  155. package/dist/dev/internal/skins/compat-audio/skin.css +116 -65
  156. package/dist/dev/internal/skins/compat-audio/template.js +15 -39
  157. package/dist/dev/internal/skins/compat-audio/template.js.map +1 -1
  158. package/dist/dev/internal/skins/compat-live-audio/register.d.ts +0 -2
  159. package/dist/dev/internal/skins/compat-live-audio/register.js +0 -10
  160. package/dist/dev/internal/skins/compat-live-audio/register.js.map +1 -1
  161. package/dist/dev/internal/skins/compat-live-audio/skin.css +98 -65
  162. package/dist/dev/internal/skins/compat-live-audio/template.js +2 -26
  163. package/dist/dev/internal/skins/compat-live-audio/template.js.map +1 -1
  164. package/dist/dev/internal/skins/compat-live-video/register.d.ts +2 -2
  165. package/dist/dev/internal/skins/compat-live-video/skin.css +123 -21
  166. package/dist/dev/internal/skins/compat-video/register.d.ts +5 -5
  167. package/dist/dev/internal/skins/compat-video/skin.css +123 -21
  168. package/dist/dev/internal/skins/default-audio/register.d.ts +1 -1
  169. package/dist/dev/internal/skins/default-audio/skin.css +21 -6
  170. package/dist/dev/internal/skins/default-live-audio/skin.css +6 -5
  171. package/dist/dev/internal/skins/default-live-video/register.d.ts +2 -2
  172. package/dist/dev/internal/skins/default-live-video/skin.css +96 -16
  173. package/dist/dev/internal/skins/default-video/register.d.ts +3 -3
  174. package/dist/dev/internal/skins/default-video/skin.css +94 -16
  175. package/dist/dev/internal/skins/neutral-audio/register.d.ts +3 -3
  176. package/dist/dev/internal/skins/neutral-audio/skin.css +25 -16
  177. package/dist/dev/internal/skins/neutral-audio/template.js +1 -1
  178. package/dist/dev/internal/skins/neutral-audio/template.js.map +1 -1
  179. package/dist/dev/internal/skins/neutral-live-audio/skin.css +8 -5
  180. package/dist/dev/internal/skins/neutral-live-video/register.d.ts +2 -2
  181. package/dist/dev/internal/skins/neutral-live-video/skin.css +82 -14
  182. package/dist/dev/internal/skins/neutral-video/register.d.ts +5 -5
  183. package/dist/dev/internal/skins/neutral-video/skin.css +85 -24
  184. package/dist/dev/internal/skins/neutral-video/template.js +1 -1
  185. package/dist/dev/internal/skins/neutral-video/template.js.map +1 -1
  186. package/dist/dev/internal/skins/scaffold-audio/register.d.ts +3 -5
  187. package/dist/dev/internal/skins/scaffold-audio/register.js +0 -10
  188. package/dist/dev/internal/skins/scaffold-audio/register.js.map +1 -1
  189. package/dist/dev/internal/skins/scaffold-audio/skin.css +93 -51
  190. package/dist/dev/internal/skins/scaffold-audio/template.js +15 -39
  191. package/dist/dev/internal/skins/scaffold-audio/template.js.map +1 -1
  192. package/dist/dev/internal/skins/scaffold-live-audio/register.d.ts +0 -2
  193. package/dist/dev/internal/skins/scaffold-live-audio/register.js +0 -10
  194. package/dist/dev/internal/skins/scaffold-live-audio/register.js.map +1 -1
  195. package/dist/dev/internal/skins/scaffold-live-audio/skin.css +75 -51
  196. package/dist/dev/internal/skins/scaffold-live-audio/template.js +2 -26
  197. package/dist/dev/internal/skins/scaffold-live-audio/template.js.map +1 -1
  198. package/dist/dev/internal/skins/scaffold-live-video/register.d.ts +2 -2
  199. package/dist/dev/internal/skins/scaffold-live-video/skin.css +107 -26
  200. package/dist/dev/internal/skins/scaffold-video/register.d.ts +5 -5
  201. package/dist/dev/internal/skins/scaffold-video/skin.css +107 -26
  202. package/dist/dev/media/dailymotion-video/adapter.d.ts +17 -0
  203. package/dist/dev/media/dailymotion-video/adapter.js +47 -0
  204. package/dist/dev/media/dailymotion-video/adapter.js.map +1 -0
  205. package/dist/dev/media/dailymotion-video/index.d.ts +2 -0
  206. package/dist/dev/media/hls-audio/adapter.d.ts +1 -1
  207. package/dist/dev/media/hls-audio/adapter.js +1 -1
  208. package/dist/dev/media/hls-audio/adapter.js.map +1 -1
  209. package/dist/dev/media/hls-background-video/adapter.d.ts +6 -1
  210. package/dist/dev/media/hls-background-video/adapter.js +8 -1
  211. package/dist/dev/media/hls-background-video/adapter.js.map +1 -1
  212. package/dist/dev/media/hls-video/adapter.d.ts +1 -1
  213. package/dist/dev/media/hls-video/adapter.js +1 -1
  214. package/dist/dev/media/hls-video/adapter.js.map +1 -1
  215. package/dist/dev/media/mixcloud-audio/adapter.d.ts +11 -0
  216. package/dist/dev/media/mixcloud-audio/adapter.js +52 -0
  217. package/dist/dev/media/mixcloud-audio/adapter.js.map +1 -0
  218. package/dist/dev/media/mixcloud-audio/index.d.ts +2 -0
  219. package/dist/dev/media/soundcloud-audio/adapter.d.ts +11 -0
  220. package/dist/dev/media/soundcloud-audio/adapter.js +53 -0
  221. package/dist/dev/media/soundcloud-audio/adapter.js.map +1 -0
  222. package/dist/dev/media/soundcloud-audio/index.d.ts +2 -0
  223. package/dist/dev/player/element.js +1 -5
  224. package/dist/dev/player/element.js.map +1 -1
  225. package/dist/dev/presets/background/skin.d.ts +2 -1
  226. package/dist/dev/presets/background/skin.js +2 -2
  227. package/dist/dev/presets/background/skin.js.map +1 -1
  228. package/dist/dev/presets/skin.d.ts +4 -3
  229. package/dist/dev/presets/skin.js +4 -3
  230. package/dist/dev/presets/skin.js.map +1 -1
  231. package/dist/dev/ui/dialog/element.js +13 -1
  232. package/dist/dev/ui/dialog/element.js.map +1 -1
  233. package/dist/dev/ui/gesture/element.js +3 -0
  234. package/dist/dev/ui/gesture/element.js.map +1 -1
  235. package/dist/dev/ui/media-button-element.d.ts +9 -0
  236. package/dist/dev/ui/media-button-element.js +10 -1
  237. package/dist/dev/ui/media-button-element.js.map +1 -1
  238. package/dist/dev/ui/play-button/element.d.ts +2 -0
  239. package/dist/dev/ui/playback-rate-button/element.d.ts +9 -1
  240. package/dist/dev/ui/playback-rate-button/element.js +7 -2
  241. package/dist/dev/ui/playback-rate-button/element.js.map +1 -1
  242. package/dist/dev/ui/playback-rate-radio-group/element.d.ts +4 -0
  243. package/dist/dev/ui/playback-rate-radio-group/element.js +10 -3
  244. package/dist/dev/ui/playback-rate-radio-group/element.js.map +1 -1
  245. package/dist/dev/ui/radio-options/controller.js +18 -5
  246. package/dist/dev/ui/radio-options/controller.js.map +1 -1
  247. package/dist/dev/ui/slider/element.js +3 -1
  248. package/dist/dev/ui/slider/element.js.map +1 -1
  249. package/dist/dev/ui/time-slider/element.js +19 -7
  250. package/dist/dev/ui/time-slider/element.js.map +1 -1
  251. package/dist/dev/ui/volume-slider/element.js +3 -1
  252. package/dist/dev/ui/volume-slider/element.js.map +1 -1
  253. package/dist/dev/version.js +1 -1
  254. package/docs/README.md +1 -1
  255. package/docs/guides/autoplay.md +1 -1
  256. package/docs/guides/browser-support.md +13 -11
  257. package/docs/guides/build-your-own-skin.md +383 -0
  258. package/docs/guides/cdn.md +10 -9
  259. package/docs/guides/content-security-policy.md +3 -0
  260. package/docs/guides/customize-skins.md +6 -3
  261. package/docs/guides/features.md +1 -1
  262. package/docs/guides/google-analytics.md +199 -0
  263. package/docs/guides/installation-cdn.md +4 -4
  264. package/docs/guides/installation-shadcn.md +3 -3
  265. package/docs/guides/installation-svelte.md +4 -4
  266. package/docs/guides/installation-vue.md +4 -4
  267. package/docs/guides/installation.md +4 -4
  268. package/docs/guides/internationalization.md +5 -5
  269. package/docs/guides/keyboard-shortcuts.md +1 -1
  270. package/docs/guides/llms.txt +3 -1
  271. package/docs/guides/media-sources.md +3 -0
  272. package/docs/guides/migrate-from-media-chrome.md +4 -4
  273. package/docs/guides/migrate-from-mux-player.md +9 -9
  274. package/docs/guides/migrate-from-plyr.md +8 -8
  275. package/docs/guides/migrate-from-video-js-8.md +9 -10
  276. package/docs/guides/migrate-from-vidstack.md +9 -9
  277. package/docs/guides/mux-data.md +22 -0
  278. package/docs/guides/presets.md +1 -1
  279. package/docs/guides/self-hosting.md +9 -6
  280. package/docs/guides/skins.md +17 -1
  281. package/docs/guides/ui-components.md +1 -1
  282. package/docs/llms.txt +12 -6
  283. package/docs/reference/api/feature-playback-rate.md +54 -3
  284. package/docs/reference/api/feature-playback.md +5 -1
  285. package/docs/reference/api/html-create-player.md +2 -2
  286. package/docs/reference/api/llms.txt +1 -1
  287. package/docs/reference/api/media-capabilities.md +1 -1
  288. package/docs/reference/api/player-store.md +6 -3
  289. package/docs/reference/api/preset-audio.md +13 -5
  290. package/docs/reference/api/preset-background.md +2 -2
  291. package/docs/reference/api/preset-live-audio.md +13 -5
  292. package/docs/reference/api/preset-live-video.md +13 -5
  293. package/docs/reference/api/preset-video.md +13 -5
  294. package/docs/reference/api/resolve-adapter-type.md +4 -1
  295. package/docs/reference/api/ui-element.md +2 -2
  296. package/docs/reference/components/alert-dialog.md +21 -16
  297. package/docs/reference/components/audio-compat-skin.md +8 -2
  298. package/docs/reference/components/audio-neutral-skin.md +2 -2
  299. package/docs/reference/components/audio-scaffold-skin.md +2 -2
  300. package/docs/reference/components/audio-skin.md +2 -2
  301. package/docs/reference/components/audio-track-radio-group.md +2 -2
  302. package/docs/reference/components/background-video-skin.md +1 -1
  303. package/docs/reference/components/background-video.md +1 -1
  304. package/docs/reference/components/buffering-indicator.md +2 -2
  305. package/docs/reference/components/captions-radio-group.md +2 -2
  306. package/docs/reference/components/cloudflare-video.md +1 -1
  307. package/docs/reference/components/dailymotion-video.md +192 -0
  308. package/docs/reference/components/dash-video.md +2 -1
  309. package/docs/reference/components/dialog.md +49 -22
  310. package/docs/reference/components/error-dialog.md +13 -10
  311. package/docs/reference/components/gesture.md +2 -2
  312. package/docs/reference/components/google-analytics.md +51 -0
  313. package/docs/reference/components/google-cast.md +1 -1
  314. package/docs/reference/components/hls-audio.md +2 -48
  315. package/docs/reference/components/hls-background-video.md +4 -1
  316. package/docs/reference/components/hls-video.md +2 -66
  317. package/docs/reference/components/hlsjs-video.md +3 -1
  318. package/docs/reference/components/hotkey.md +2 -2
  319. package/docs/reference/components/live-audio-compat-skin.md +8 -2
  320. package/docs/reference/components/live-audio-neutral-skin.md +2 -2
  321. package/docs/reference/components/live-audio-scaffold-skin.md +2 -2
  322. package/docs/reference/components/live-audio-skin.md +2 -2
  323. package/docs/reference/components/live-video-compat-skin.md +8 -2
  324. package/docs/reference/components/live-video-neutral-skin.md +2 -2
  325. package/docs/reference/components/live-video-scaffold-skin.md +2 -2
  326. package/docs/reference/components/live-video-skin.md +2 -2
  327. package/docs/reference/components/llms.txt +9 -5
  328. package/docs/reference/components/mixcloud-audio.md +203 -0
  329. package/docs/reference/components/mux-audio.md +3 -1
  330. package/docs/reference/components/mux-background-video.md +1 -1
  331. package/docs/reference/components/mux-data.md +22 -2
  332. package/docs/reference/components/mux-video.md +3 -1
  333. package/docs/reference/components/native-hls-video.md +2 -1
  334. package/docs/reference/components/play-button.md +7 -5
  335. package/docs/reference/components/playback-rate-button.md +26 -7
  336. package/docs/reference/components/playback-rate-radio-group.md +7 -4
  337. package/docs/reference/components/player.md +3 -3
  338. package/docs/reference/components/playerjs-video.md +1 -1
  339. package/docs/reference/components/quality-radio-group.md +2 -2
  340. package/docs/reference/components/shaka-video.md +2 -1
  341. package/docs/reference/components/slider.md +2 -0
  342. package/docs/reference/components/soundcloud-audio.md +227 -0
  343. package/docs/reference/components/spotify-audio.md +2 -2
  344. package/docs/reference/components/tiktok-video.md +2 -2
  345. package/docs/reference/components/time-slider.md +7 -5
  346. package/docs/reference/components/twitch-video.md +2 -3
  347. package/docs/reference/components/video-compat-skin.md +8 -2
  348. package/docs/reference/components/video-neutral-skin.md +2 -2
  349. package/docs/reference/components/video-scaffold-skin.md +2 -2
  350. package/docs/reference/components/video-skin.md +2 -2
  351. package/docs/reference/components/vimeo-video.md +2 -1
  352. package/docs/reference/components/volume-slider.md +8 -6
  353. package/docs/reference/components/wistia-video.md +1 -1
  354. package/docs/reference/components/youtube-video.md +2 -1
  355. package/package.json +62 -43
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","names":[],"sources":["../../../../../src/internal/skins/neutral-audio/template.ts"],"sourcesContent":["import { createTemplate } from '@videojs/utils/dom';\n\n/** Static template rendered from the finalized VJSC module graph. */\nexport const template =\n createTemplate(/* html */ `<media-container class=\"media-skin media-container audio-skin\" data-theme=\"neutral\" data-preset=\"audio\">\n<slot>\n</slot>\n<media-error-dialog class=\"audio-dialog-root\">\n<media-dialog-backdrop class=\"audio-dialog-backdrop\">\n</media-dialog-backdrop>\n<media-dialog-popup class=\"audio-dialog-popup\">\n<div class=\"audio-dialog-content\">\n<media-dialog-title class=\"audio-dialog-title\">\n</media-dialog-title>\n<media-dialog-description class=\"audio-dialog-description\">\n</media-dialog-description>\n</div>\n<div class=\"audio-dialog-actions\">\n<media-dialog-close class=\"media-button audio-dialog-close\">\n</media-dialog-close>\n</div>\n</media-dialog-popup>\n</media-error-dialog>\n<media-controls visibility=\"always\">\n<media-controls-content class=\"audio-controls audio-controls-content\">\n<media-tooltip-group>\n<media-controls-group class=\"audio-controls-start\">\n<div class=\"audio-play-button\">\n<media-buffering-indicator class=\"media-buffering-indicator audio-play-button-buffering-indicator\">\n<media-icon family=\"neutral\" name=\"spinner\" class=\"media-buffering-indicator-spinner-icon\">\n</media-icon>\n</media-buffering-indicator>\n<media-play-button class=\"media-button media-play-button\" id=\"vjs-W_MfTVYB-0-trigger\">\n<media-icon family=\"neutral\" name=\"restart\" class=\"media-button-icon media-play-button-restart-icon\">\n</media-icon>\n<media-icon family=\"neutral\" name=\"play\" class=\"media-button-icon media-play-button-play-icon\">\n</media-icon>\n<media-icon family=\"neutral\" name=\"pause\" class=\"media-button-icon media-play-button-pause-icon\">\n</media-icon>\n</media-play-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-trigger\" boundary=\"viewport\" side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n</div>\n<media-seek-button seconds=\"-10\" class=\"media-button media-seek-button\" id=\"vjs-W_MfTVYB-0-2-trigger\">\n<div class=\"media-seek-button-content\">\n<media-icon family=\"neutral\" name=\"seek\" class=\"media-button-icon media-seek-button-backward-icon\">\n</media-icon>\n<span class=\"media-seek-button-label media-seek-button-backward-label\">10</span>\n</div>\n</media-seek-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-2-trigger\" boundary=\"viewport\" side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n<media-seek-button seconds=\"10\" class=\"media-button media-seek-button\" id=\"vjs-W_MfTVYB-0-3-trigger\">\n<div class=\"media-seek-button-content\">\n<media-icon family=\"neutral\" name=\"seek\" class=\"media-button-icon\">\n</media-icon>\n<span class=\"media-seek-button-label media-seek-button-forward-label\">10</span>\n</div>\n</media-seek-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-3-trigger\" boundary=\"viewport\" side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n</media-controls-group>\n<media-controls-group class=\"audio-time-slider-group\">\n<media-time-group class=\"media-time-group\">\n<media-time class=\"media-time-toggle media-time-current-value\" type=\"current\" toggle>\n</media-time>\n<media-time-separator class=\"media-time-separator\">\n</media-time-separator>\n<media-time class=\"media-time-duration-value\" type=\"duration\">\n</media-time>\n</media-time-group>\n<media-time-slider class=\"media-slider audio-time-slider\">\n<media-slider-track class=\"media-slider-track\">\n<media-slider-buffer class=\"media-slider-buffer\">\n</media-slider-buffer>\n<media-slider-fill class=\"media-slider-fill\">\n</media-slider-fill>\n</media-slider-track>\n<media-slider-thumb class=\"media-slider-thumb audio-time-slider-thumb\">\n</media-slider-thumb>\n<media-slider-preview class=\"media-slider-preview\" overflow=\"clamp\">\n<div class=\"media-slider-preview-content media-popup-surface media-tooltip audio-time-slider-preview-content\">\n<media-slider-value class=\"audio-time-slider-value\" type=\"pointer\">\n</media-slider-value>\n</div>\n</media-slider-preview>\n</media-time-slider>\n</media-controls-group>\n<media-controls-group class=\"audio-controls-end\">\n<media-mute-button commandfor=\"vjs-4kthzEOq-0-popup\" class=\"media-button media-mute-button\" id=\"vjs-W_MfTVYB-0-4-trigger\">\n<media-icon family=\"neutral\" name=\"volume-off\" class=\"media-button-icon media-mute-button-off-icon\">\n</media-icon>\n<media-icon family=\"neutral\" name=\"volume-low\" class=\"media-button-icon media-mute-button-low-icon\">\n</media-icon>\n<media-icon family=\"neutral\" name=\"volume-high\" class=\"media-button-icon media-mute-button-high-icon\">\n</media-icon>\n</media-mute-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-4-trigger\" delay=\"0\" sticky side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n<media-volume-popover open-on-hover delay=\"200\" close-delay=\"100\" side=\"left\" boundary=\"viewport\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover\" id=\"vjs-4kthzEOq-0-popup\">\n<media-volume-slider class=\"media-slider media-volume-slider\" thumb-alignment=\"edge\" orientation=\"horizontal\">\n<media-slider-track class=\"media-slider-track\">\n<media-slider-fill class=\"media-slider-fill\">\n</media-slider-fill>\n</media-slider-track>\n<media-slider-thumb class=\"media-slider-thumb media-volume-slider-thumb\">\n</media-slider-thumb>\n</media-volume-slider>\n</media-volume-popover>\n<media-playback-rate-button commandfor=\"vjs-ALt053S7-0-popup\" class=\"media-button media-playback-rate-button\" id=\"vjs-W_MfTVYB-0-5-trigger\">\n</media-playback-rate-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-5-trigger\" boundary=\"viewport\" side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n<media-menu side=\"top\" align=\"center\" boundary=\"viewport\" class=\"media-popup media-popup-surface media-menu-popup audio-settings-menu-popup\" id=\"vjs-ALt053S7-0-popup\">\n<media-menu-content class=\"media-menu-content\">\n<media-playback-rate-radio-group class=\"media-menu-radio-group\">\n<template>\n<media-menu-radio-item class=\"media-menu-radio-item\">\n<span data-part=\"label\">\n</span>\n<media-menu-item-indicator force-mount class=\"media-menu-item-indicator\">\n<media-icon family=\"neutral\" name=\"check\" class=\"media-menu-radio-item-icon\">\n</media-icon>\n</media-menu-item-indicator>\n</media-menu-radio-item>\n</template>\n</media-playback-rate-radio-group>\n</media-menu-content>\n</media-menu>\n</media-controls-group>\n</media-tooltip-group>\n</media-controls-content>\n</media-controls>\n<media-hotkey keys=\"Space\" action=\"togglePaused\">\n</media-hotkey>\n<media-hotkey keys=\"k\" action=\"togglePaused\">\n</media-hotkey>\n<media-hotkey keys=\"m\" action=\"toggleMuted\">\n</media-hotkey>\n<media-hotkey keys=\"ArrowRight\" action=\"seekStep\">\n</media-hotkey>\n<media-hotkey keys=\"ArrowLeft\" action=\"seekStep\">\n</media-hotkey>\n<media-hotkey keys=\"l\" action=\"seekStep\">\n</media-hotkey>\n<media-hotkey keys=\"j\" action=\"seekStep\">\n</media-hotkey>\n<media-hotkey keys=\"ArrowUp\" action=\"volumeStep\">\n</media-hotkey>\n<media-hotkey keys=\"ArrowDown\" action=\"volumeStep\">\n</media-hotkey>\n<media-hotkey keys=\"0-9\" action=\"seekToPercent\">\n</media-hotkey>\n<media-hotkey keys=\"Home\" action=\"seekToPercent\" value=\"0\">\n</media-hotkey>\n<media-hotkey keys=\"End\" action=\"seekToPercent\" value=\"100\">\n</media-hotkey>\n<media-hotkey keys=\"&gt;\" action=\"speedUp\">\n</media-hotkey>\n<media-hotkey keys=\"&lt;\" action=\"speedDown\">\n</media-hotkey>\n<media-status-announcer class=\"media-status-announcer\">\n</media-status-announcer>\n</media-container>`);\n"],"mappings":";;;AAGA,MAAa,WACX,eAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAmLT"}
1
+ {"version":3,"file":"template.js","names":[],"sources":["../../../../../src/internal/skins/neutral-audio/template.ts"],"sourcesContent":["import { createTemplate } from '@videojs/utils/dom';\n\n/** Static template rendered from the finalized VJSC module graph. */\nexport const template =\n createTemplate(/* html */ `<media-container class=\"media-skin media-container audio-skin\" data-theme=\"neutral\" data-preset=\"audio\">\n<slot>\n</slot>\n<media-error-dialog class=\"audio-dialog-root\">\n<media-dialog-backdrop class=\"audio-dialog-backdrop\">\n</media-dialog-backdrop>\n<media-dialog-popup class=\"audio-dialog-popup\">\n<div class=\"audio-dialog-content\">\n<media-dialog-title class=\"audio-dialog-title\">\n</media-dialog-title>\n<media-dialog-description class=\"audio-dialog-description\">\n</media-dialog-description>\n</div>\n<div class=\"audio-dialog-actions\">\n<media-dialog-close class=\"media-button audio-dialog-close\">\n</media-dialog-close>\n</div>\n</media-dialog-popup>\n</media-error-dialog>\n<media-controls visibility=\"always\">\n<media-controls-content class=\"audio-controls audio-controls-content\">\n<media-tooltip-group>\n<media-controls-group class=\"audio-controls-start\">\n<div class=\"audio-play-button\">\n<media-buffering-indicator class=\"media-buffering-indicator audio-play-button-buffering-indicator\">\n<media-icon family=\"neutral\" name=\"spinner\" class=\"media-buffering-indicator-spinner-icon\">\n</media-icon>\n</media-buffering-indicator>\n<media-play-button class=\"media-button media-play-button\" id=\"vjs-W_MfTVYB-0-trigger\">\n<media-icon family=\"neutral\" name=\"restart\" class=\"media-button-icon media-play-button-restart-icon\">\n</media-icon>\n<media-icon family=\"neutral\" name=\"play\" class=\"media-button-icon media-play-button-play-icon\">\n</media-icon>\n<media-icon family=\"neutral\" name=\"pause\" class=\"media-button-icon media-play-button-pause-icon\">\n</media-icon>\n</media-play-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-trigger\" boundary=\"viewport\" side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n</div>\n<media-seek-button seconds=\"-10\" class=\"media-button media-seek-button\" id=\"vjs-W_MfTVYB-0-2-trigger\">\n<div class=\"media-seek-button-content\">\n<media-icon family=\"neutral\" name=\"seek\" class=\"media-button-icon media-seek-button-backward-icon\">\n</media-icon>\n<span class=\"media-seek-button-label media-seek-button-backward-label\">10</span>\n</div>\n</media-seek-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-2-trigger\" boundary=\"viewport\" side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n<media-seek-button seconds=\"10\" class=\"media-button media-seek-button\" id=\"vjs-W_MfTVYB-0-3-trigger\">\n<div class=\"media-seek-button-content\">\n<media-icon family=\"neutral\" name=\"seek\" class=\"media-button-icon\">\n</media-icon>\n<span class=\"media-seek-button-label media-seek-button-forward-label\">10</span>\n</div>\n</media-seek-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-3-trigger\" boundary=\"viewport\" side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n</media-controls-group>\n<media-controls-group class=\"audio-time-slider-group\">\n<media-time-group class=\"media-time-group\">\n<media-time class=\"media-time-toggle\" type=\"current\" toggle>\n</media-time>\n<media-time-separator class=\"media-time-separator\">\n</media-time-separator>\n<media-time class=\"media-time-duration-value\" type=\"duration\">\n</media-time>\n</media-time-group>\n<media-time-slider class=\"media-slider audio-time-slider\">\n<media-slider-track class=\"media-slider-track\">\n<media-slider-buffer class=\"media-slider-buffer\">\n</media-slider-buffer>\n<media-slider-fill class=\"media-slider-fill\">\n</media-slider-fill>\n</media-slider-track>\n<media-slider-thumb class=\"media-slider-thumb audio-time-slider-thumb\">\n</media-slider-thumb>\n<media-slider-preview class=\"media-slider-preview\" overflow=\"clamp\">\n<div class=\"media-slider-preview-content media-popup-surface media-tooltip audio-time-slider-preview-content\">\n<media-slider-value class=\"audio-time-slider-value\" type=\"pointer\">\n</media-slider-value>\n</div>\n</media-slider-preview>\n</media-time-slider>\n</media-controls-group>\n<media-controls-group class=\"audio-controls-end\">\n<media-mute-button commandfor=\"vjs-4kthzEOq-0-popup\" class=\"media-button media-mute-button\" id=\"vjs-W_MfTVYB-0-4-trigger\">\n<media-icon family=\"neutral\" name=\"volume-off\" class=\"media-button-icon media-mute-button-off-icon\">\n</media-icon>\n<media-icon family=\"neutral\" name=\"volume-low\" class=\"media-button-icon media-mute-button-low-icon\">\n</media-icon>\n<media-icon family=\"neutral\" name=\"volume-high\" class=\"media-button-icon media-mute-button-high-icon\">\n</media-icon>\n</media-mute-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-4-trigger\" delay=\"0\" sticky side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n<media-volume-popover open-on-hover delay=\"200\" close-delay=\"100\" side=\"left\" boundary=\"viewport\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover\" id=\"vjs-4kthzEOq-0-popup\">\n<media-volume-slider class=\"media-slider media-volume-slider\" thumb-alignment=\"edge\" orientation=\"horizontal\">\n<media-slider-track class=\"media-slider-track\">\n<media-slider-fill class=\"media-slider-fill\">\n</media-slider-fill>\n</media-slider-track>\n<media-slider-thumb class=\"media-slider-thumb media-volume-slider-thumb\">\n</media-slider-thumb>\n</media-volume-slider>\n</media-volume-popover>\n<media-playback-rate-button commandfor=\"vjs-ALt053S7-0-popup\" class=\"media-button media-playback-rate-button\" id=\"vjs-W_MfTVYB-0-5-trigger\">\n</media-playback-rate-button>\n<media-tooltip trigger=\"vjs-W_MfTVYB-0-5-trigger\" boundary=\"viewport\" side=\"top\" class=\"media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip\">\n<media-tooltip-label>\n</media-tooltip-label>\n<media-tooltip-shortcut class=\"media-tooltip-shortcut\">\n</media-tooltip-shortcut>\n</media-tooltip>\n<media-menu side=\"top\" align=\"center\" boundary=\"viewport\" class=\"media-popup media-popup-surface media-menu-popup audio-settings-menu-popup\" id=\"vjs-ALt053S7-0-popup\">\n<media-menu-content class=\"media-menu-content\">\n<media-playback-rate-radio-group class=\"media-menu-radio-group\">\n<template>\n<media-menu-radio-item class=\"media-menu-radio-item\">\n<span data-part=\"label\">\n</span>\n<media-menu-item-indicator force-mount class=\"media-menu-item-indicator\">\n<media-icon family=\"neutral\" name=\"check\" class=\"media-menu-radio-item-icon\">\n</media-icon>\n</media-menu-item-indicator>\n</media-menu-radio-item>\n</template>\n</media-playback-rate-radio-group>\n</media-menu-content>\n</media-menu>\n</media-controls-group>\n</media-tooltip-group>\n</media-controls-content>\n</media-controls>\n<media-hotkey keys=\"Space\" action=\"togglePaused\">\n</media-hotkey>\n<media-hotkey keys=\"k\" action=\"togglePaused\">\n</media-hotkey>\n<media-hotkey keys=\"m\" action=\"toggleMuted\">\n</media-hotkey>\n<media-hotkey keys=\"ArrowRight\" action=\"seekStep\">\n</media-hotkey>\n<media-hotkey keys=\"ArrowLeft\" action=\"seekStep\">\n</media-hotkey>\n<media-hotkey keys=\"l\" action=\"seekStep\">\n</media-hotkey>\n<media-hotkey keys=\"j\" action=\"seekStep\">\n</media-hotkey>\n<media-hotkey keys=\"ArrowUp\" action=\"volumeStep\">\n</media-hotkey>\n<media-hotkey keys=\"ArrowDown\" action=\"volumeStep\">\n</media-hotkey>\n<media-hotkey keys=\"0-9\" action=\"seekToPercent\">\n</media-hotkey>\n<media-hotkey keys=\"Home\" action=\"seekToPercent\" value=\"0\">\n</media-hotkey>\n<media-hotkey keys=\"End\" action=\"seekToPercent\" value=\"100\">\n</media-hotkey>\n<media-hotkey keys=\"&gt;\" action=\"speedUp\">\n</media-hotkey>\n<media-hotkey keys=\"&lt;\" action=\"speedDown\">\n</media-hotkey>\n<media-status-announcer class=\"media-status-announcer\">\n</media-status-announcer>\n</media-container>`);\n"],"mappings":";;;AAGA,MAAa,WACX,eAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAmLT"}
@@ -11,6 +11,8 @@
11
11
  --media-text-shadow-dialog: 0 1px 0 #00000080;
12
12
  --media-backdrop-filter-dialog: blur(16px) saturate(120%);
13
13
  --media-shadow-tooltip: 0 0 0 1px var(--media-border), 0 4px 6px -1px oklch(0% 0 0 / .2), 0 2px 4px -2px oklch(0% 0 0 / .2);
14
+ --media-filter-feedback: drop-shadow(0 0 1px oklch(0% 0 0 / .3)) drop-shadow(0 1px 3px oklch(0% 0 0 / .2))
15
+ drop-shadow(0 2px 12px oklch(0% 0 0 / .15));
14
16
  --media-duration-dialog: var(--media-duration);
15
17
  --media-duration-indicator: .4s;
16
18
  --media-hidden-offset: 100%;
@@ -38,7 +40,7 @@
38
40
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
39
41
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
40
42
  --media-muted: oklch(100% 0 0 / .15);
41
- --media-muted-foreground: oklch(100% 0 0 / .65);
43
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
42
44
  --media-border: oklch(0% 0 0 / .1);
43
45
  --media-ring: oklch(100% 0 0);
44
46
  --media-backdrop: oklch(0% 0 0);
@@ -51,9 +53,9 @@
51
53
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
52
54
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
53
55
  --media-text-shadow-dialog: 0 1px 0 #00000040;
54
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
56
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
55
57
  --media-backdrop-filter-indicator: blur(8px);
56
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
58
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
57
59
  --media-control-corner-shape: round;
58
60
  --media-control-radius: 99px;
59
61
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -158,6 +160,7 @@
158
160
  --media-controls-foreground: var(--media-foreground);
159
161
  --media-popover: var(--media-controls);
160
162
  --media-popover-foreground: var(--media-foreground);
163
+ --media-muted: oklch(0% 0 0 / .1);
161
164
  --media-surface-border: oklch(0% 0 0 / .05);
162
165
  --media-primary: var(--media-accent-color, var(--media-foreground));
163
166
  --media-border: oklch(0% 0 0 / .1);
@@ -176,6 +179,7 @@
176
179
  --media-foreground: light-dark(oklch(0% 0 0), oklch(100% 0 0));
177
180
  --media-controls: light-dark(oklch(100% 0 0 / .5), oklch(0% 0 0 / .4));
178
181
  --media-border: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
182
+ --media-muted: light-dark(oklch(0% 0 0 / .1), oklch(100% 0 0 / .1));
179
183
  --media-default-accent-color: light-dark(oklch(0% 0 0), oklch(100% 0 0));
180
184
  --media-default-accent-text-color: light-dark(oklch(100% 0 0), oklch(0% 0 0));
181
185
  --media-internal-accent-text-fallback: light-dark(oklch(100% 0 0), oklch(0% 0 0));
@@ -426,9 +430,9 @@
426
430
  object-position: var(--media-object-position, center);
427
431
  width: 100%;
428
432
  max-width: 100%;
429
- height: 100%;
430
433
  margin: 0;
431
434
  display: block;
435
+ height: 100% !important;
432
436
  }
433
437
 
434
438
  :where(.media-skin[data-theme="neutral"]) .media-button {
@@ -553,7 +557,6 @@
553
557
  outline-style: none;
554
558
  flex-direction: row;
555
559
  padding-block: 0;
556
- padding-inline-end: var(--media-spacing);
557
560
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
558
561
  display: flex;
559
562
  position: absolute;
@@ -21,20 +21,20 @@ import "../../../define/ui/menu.js";
21
21
  import "../../../define/ui/menu-content.js";
22
22
  import "../../../define/ui/menu-radio-item.js";
23
23
  import "../../../define/ui/menu-item-indicator.js";
24
- import "../../../define/ui/captions-button.js";
25
24
  import "../../../define/ui/mute-button.js";
26
25
  import "../../../define/ui/volume-popover.js";
27
26
  import "../../../define/ui/volume-slider.js";
28
- import "../../../define/ui/airplay-button.js";
29
27
  import "../../../define/ui/hotkey.js";
30
28
  import "../../../define/ui/status-announcer.js";
31
29
  import "../../../define/ui/live-button.js";
32
30
  import "../../../define/ui/poster.js";
33
31
  import "../../../define/ui/title.js";
34
32
  import "../../../define/ui/controls-backdrop.js";
33
+ import "../../../define/ui/airplay-button.js";
35
34
  import "../../../define/ui/cast-button.js";
36
35
  import "../../../define/ui/pip-button.js";
37
36
  import "../../../define/ui/fullscreen-button.js";
37
+ import "../../../define/ui/captions-button.js";
38
38
  import "../../../define/ui/captions-radio-group.js";
39
39
  import "../../../define/ui/gesture.js";
40
40
  import "../../../define/ui/volume-indicator.js";
@@ -11,6 +11,8 @@
11
11
  --media-text-shadow-dialog: 0 1px 0 #00000080;
12
12
  --media-backdrop-filter-dialog: blur(16px) saturate(120%);
13
13
  --media-shadow-tooltip: 0 0 0 1px var(--media-border), 0 4px 6px -1px oklch(0% 0 0 / .2), 0 2px 4px -2px oklch(0% 0 0 / .2);
14
+ --media-filter-feedback: drop-shadow(0 0 1px oklch(0% 0 0 / .3)) drop-shadow(0 1px 3px oklch(0% 0 0 / .2))
15
+ drop-shadow(0 2px 12px oklch(0% 0 0 / .15));
14
16
  --media-duration-dialog: var(--media-duration);
15
17
  --media-duration-indicator: .4s;
16
18
  --media-hidden-offset: 100%;
@@ -38,7 +40,7 @@
38
40
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
39
41
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
40
42
  --media-muted: oklch(100% 0 0 / .15);
41
- --media-muted-foreground: oklch(100% 0 0 / .65);
43
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
42
44
  --media-border: oklch(0% 0 0 / .1);
43
45
  --media-ring: oklch(100% 0 0);
44
46
  --media-backdrop: oklch(0% 0 0);
@@ -51,9 +53,9 @@
51
53
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
52
54
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
53
55
  --media-text-shadow-dialog: 0 1px 0 #00000040;
54
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
56
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
55
57
  --media-backdrop-filter-indicator: blur(8px);
56
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
58
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
57
59
  --media-control-corner-shape: round;
58
60
  --media-control-radius: 99px;
59
61
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -153,10 +155,20 @@
153
155
  @layer base.preset {
154
156
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
155
157
  --media-frame-border: var(--media-border-color, #0000001a);
158
+ --media-controls-gradient-height: max(40%, calc(var(--media-spacing) * 40));
159
+ --media-controls-bottom-gradient-height: max(50%, calc(var(--media-spacing) * 60));
156
160
  --media-controls-gradient: linear-gradient(to top,
157
- color-mix(in oklab, var(--media-backdrop) 40%, transparent),
158
- color-mix(in oklab, var(--media-backdrop) 20%, transparent),
159
- color-mix(in oklab, var(--media-backdrop) 50%, transparent));
161
+ color-mix(in oklab, var(--media-backdrop) 60%, transparent),
162
+ color-mix(in oklab, var(--media-backdrop) 50.7%, transparent) 25%,
163
+ color-mix(in oklab, var(--media-backdrop) 30%, transparent) 50%,
164
+ color-mix(in oklab, var(--media-backdrop) 9.3%, transparent) 75%,
165
+ transparent);
166
+ --media-controls-top-gradient: linear-gradient(to bottom,
167
+ color-mix(in oklab, var(--media-backdrop) 55%, transparent),
168
+ color-mix(in oklab, var(--media-backdrop) 46.48%, transparent) 25%,
169
+ color-mix(in oklab, var(--media-backdrop) 27.5%, transparent) 50%,
170
+ color-mix(in oklab, var(--media-backdrop) 8.53%, transparent) 75%,
171
+ transparent);
160
172
  --media-caption-controls-y: calc(var(--media-spacing) * -16);
161
173
  --media-slider-preview-offset: calc(var(--media-spacing) * 9);
162
174
  --media-thumbnail-gradient: linear-gradient(to top,
@@ -168,9 +180,17 @@
168
180
  @supports (color: oklch(from red l c h)) and (background-image: linear-gradient(in oklab, red, red)) {
169
181
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
170
182
  --media-controls-gradient: linear-gradient(to top in oklab,
171
- oklch(from var(--media-backdrop) l c h / .4),
172
- oklch(from var(--media-backdrop) l c h / .2),
173
- oklch(from var(--media-backdrop) l c h / .5));
183
+ oklch(from var(--media-backdrop) l c h / .6),
184
+ oklch(from var(--media-backdrop) l c h / .507) 25%,
185
+ oklch(from var(--media-backdrop) l c h / .3) 50%,
186
+ oklch(from var(--media-backdrop) l c h / .093) 75%,
187
+ transparent);
188
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
189
+ oklch(from var(--media-backdrop) l c h / .55),
190
+ oklch(from var(--media-backdrop) l c h / .4647) 25%,
191
+ oklch(from var(--media-backdrop) l c h / .275) 50%,
192
+ oklch(from var(--media-backdrop) l c h / .0853) 75%,
193
+ transparent);
174
194
  }
175
195
  }
176
196
 
@@ -185,9 +205,20 @@
185
205
 
186
206
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
187
207
  --media-frame-border: var(--media-border-color, #00000026);
208
+ --media-controls-gradient-height: 40%;
209
+ --media-controls-bottom-gradient-height: 40%;
188
210
  --media-controls-gradient: linear-gradient(to top,
189
211
  color-mix(in oklab, var(--media-backdrop) 50%, transparent),
190
- color-mix(in oklab, var(--media-backdrop) 20%, transparent));
212
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
213
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
214
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
215
+ transparent);
216
+ --media-controls-top-gradient: linear-gradient(to bottom,
217
+ color-mix(in oklab, var(--media-backdrop) 50%, transparent),
218
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
219
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
220
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
221
+ transparent);
191
222
  --media-indicator-gradient: linear-gradient(to bottom,
192
223
  color-mix(in oklab, var(--media-backdrop) 35%, transparent),
193
224
  color-mix(in oklab, var(--media-backdrop) 20%, transparent) calc(var(--media-spacing) * 12),
@@ -197,6 +228,7 @@
197
228
  }
198
229
 
199
230
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="compat"] {
231
+ --media-controls-gradient: linear-gradient(to top, #00000080, transparent 40% 60%, #0006);
200
232
  --media-caption-controls-y: calc(var(--media-spacing) * -18);
201
233
  }
202
234
 
@@ -208,7 +240,16 @@
208
240
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
209
241
  --media-controls-gradient: linear-gradient(to top in oklab,
210
242
  oklch(from var(--media-backdrop) l c h / .5),
211
- oklch(from var(--media-backdrop) l c h / .2));
243
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
244
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
245
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
246
+ transparent);
247
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
248
+ oklch(from var(--media-backdrop) l c h / .5),
249
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
250
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
251
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
252
+ transparent);
212
253
  }
213
254
  }
214
255
 
@@ -529,6 +570,11 @@
529
570
  transition-duration: var(--media-duration-instant);
530
571
  }
531
572
 
573
+ :where(.media-skin[data-theme="neutral"]) .media-dialog-backdrop[data-scope="document"] {
574
+ border-radius: 0;
575
+ position: fixed;
576
+ }
577
+
532
578
  :where(.media-skin[data-theme="neutral"]) .media-dialog-backdrop:is([data-starting-style], [data-ending-style]) {
533
579
  opacity: 0;
534
580
  }
@@ -599,6 +645,11 @@
599
645
  transition-duration: var(--media-duration-instant);
600
646
  }
601
647
 
648
+ :where(.media-skin[data-theme="neutral"]) .media-dialog-popup[data-scope="document"] {
649
+ max-height: calc(100dvh - 1rem);
650
+ position: fixed;
651
+ }
652
+
602
653
  :where(.media-skin[data-theme="neutral"]) .media-dialog-popup:is([data-starting-style], [data-ending-style]) {
603
654
  scale: var(--media-hidden-popup-scale) var(--media-hidden-popup-scale);
604
655
  opacity: 0;
@@ -712,11 +763,10 @@
712
763
  transition-duration: .15s;
713
764
  transition-duration: calc(var(--media-duration-controls) / 2);
714
765
  text-shadow: 0 1px 0 var(--media-shadow-current-color);
715
- inset-inline: 0;
716
766
  font-weight: 400;
717
767
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
718
768
  position: absolute;
719
- top: 0;
769
+ inset: 0;
720
770
  }
721
771
 
722
772
  :where(.media-skin[data-theme="neutral"]) .media-title:not([data-visible]) {
@@ -725,6 +775,16 @@
725
775
  transition-duration: var(--media-duration-controls);
726
776
  }
727
777
 
778
+ :where(.media-skin[data-theme="neutral"]) .media-title:before {
779
+ z-index: -1;
780
+ height: var(--media-controls-gradient-height);
781
+ content: "";
782
+ background-image: var(--media-controls-top-gradient);
783
+ inset-inline: 0;
784
+ position: absolute;
785
+ top: 0;
786
+ }
787
+
728
788
  @media (pointer: fine) {
729
789
  :where(.media-skin[data-theme="neutral"]) .media-title:not([data-visible]) {
730
790
  filter: blur(var(--media-hidden-blur));
@@ -792,9 +852,9 @@
792
852
  object-position: var(--media-object-position, center);
793
853
  width: 100%;
794
854
  max-width: 100%;
795
- height: 100%;
796
855
  margin: 0;
797
856
  display: block;
857
+ height: 100% !important;
798
858
  }
799
859
 
800
860
  :where(.media-skin[data-theme="neutral"]) .media-status-announcer {
@@ -874,6 +934,7 @@
874
934
  :where(.media-skin[data-theme="neutral"]) .media-playback-status-indicator {
875
935
  padding: calc(var(--media-spacing) * 4);
876
936
  text-align: center;
937
+ filter: var(--media-filter-feedback);
877
938
  transition-property: opacity, scale;
878
939
  transition-duration: .15s;
879
940
  transition-duration: var(--media-duration-slow);
@@ -1465,6 +1526,10 @@
1465
1526
  opacity: .5;
1466
1527
  }
1467
1528
 
1529
+ :where(.media-skin[data-theme="neutral"]) .media-menu-radio-item[data-custom] {
1530
+ font-style: italic;
1531
+ }
1532
+
1468
1533
  :where(.media-skin[data-theme="neutral"]) .media-menu-radio-item[data-availability="unavailable"], :where(.media-skin[data-theme="neutral"]) .media-menu-radio-item[data-availability="unsupported"] {
1469
1534
  display: none;
1470
1535
  }
@@ -1957,9 +2022,12 @@
1957
2022
  z-index: 10;
1958
2023
  border-radius: inherit;
1959
2024
  background-image: var(--media-controls-gradient);
2025
+ background-size: 100% var(--media-controls-bottom-gradient-height);
1960
2026
  transition-property: opacity;
1961
2027
  transition-duration: .15s;
1962
2028
  transition-duration: var(--media-duration-controls);
2029
+ background-position: bottom;
2030
+ background-repeat: no-repeat;
1963
2031
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
1964
2032
  position: absolute;
1965
2033
  inset: 0;
@@ -25,27 +25,27 @@ import "../../../define/ui/play-button.js";
25
25
  import "../../../define/ui/tooltip.js";
26
26
  import "../../../define/ui/tooltip-label.js";
27
27
  import "../../../define/ui/tooltip-shortcut.js";
28
+ import "../../../define/ui/time-group.js";
29
+ import "../../../define/ui/time.js";
30
+ import "../../../define/ui/time-separator.js";
28
31
  import "../../../define/ui/menu.js";
29
32
  import "../../../define/ui/menu-content.js";
30
33
  import "../../../define/ui/playback-rate-radio-group.js";
31
34
  import "../../../define/ui/menu-radio-item.js";
32
35
  import "../../../define/ui/menu-item-indicator.js";
33
- import "../../../define/ui/time-group.js";
34
- import "../../../define/ui/time.js";
35
- import "../../../define/ui/time-separator.js";
36
- import "../../../define/ui/captions-button.js";
37
36
  import "../../../define/ui/mute-button.js";
38
37
  import "../../../define/ui/volume-popover.js";
39
38
  import "../../../define/ui/volume-slider.js";
40
- import "../../../define/ui/airplay-button.js";
41
39
  import "../../../define/ui/hotkey.js";
42
40
  import "../../../define/ui/status-announcer.js";
43
41
  import "../../../define/ui/poster.js";
44
42
  import "../../../define/ui/title.js";
45
43
  import "../../../define/ui/controls-backdrop.js";
44
+ import "../../../define/ui/airplay-button.js";
46
45
  import "../../../define/ui/cast-button.js";
47
46
  import "../../../define/ui/pip-button.js";
48
47
  import "../../../define/ui/fullscreen-button.js";
48
+ import "../../../define/ui/captions-button.js";
49
49
  import "../../../define/ui/captions-radio-group.js";
50
50
  import "../../../define/ui/gesture.js";
51
51
  import "../../../define/ui/volume-indicator.js";
@@ -11,6 +11,8 @@
11
11
  --media-text-shadow-dialog: 0 1px 0 #00000080;
12
12
  --media-backdrop-filter-dialog: blur(16px) saturate(120%);
13
13
  --media-shadow-tooltip: 0 0 0 1px var(--media-border), 0 4px 6px -1px oklch(0% 0 0 / .2), 0 2px 4px -2px oklch(0% 0 0 / .2);
14
+ --media-filter-feedback: drop-shadow(0 0 1px oklch(0% 0 0 / .3)) drop-shadow(0 1px 3px oklch(0% 0 0 / .2))
15
+ drop-shadow(0 2px 12px oklch(0% 0 0 / .15));
14
16
  --media-duration-dialog: var(--media-duration);
15
17
  --media-duration-indicator: .4s;
16
18
  --media-hidden-offset: 100%;
@@ -38,7 +40,7 @@
38
40
  --media-accent: var(--media-accent-color, color-mix(in oklab, var(--media-default-accent-color) 10%, transparent));
39
41
  --media-accent-foreground: var(--media-accent-text-color, currentColor);
40
42
  --media-muted: oklch(100% 0 0 / .15);
41
- --media-muted-foreground: oklch(100% 0 0 / .65);
43
+ --media-muted-foreground: color-mix(in oklab, var(--media-foreground) 65%, transparent);
42
44
  --media-border: oklch(0% 0 0 / .1);
43
45
  --media-ring: oklch(100% 0 0);
44
46
  --media-backdrop: oklch(0% 0 0);
@@ -51,9 +53,9 @@
51
53
  --media-shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .15));
52
54
  --media-shadow-subtle-current-color: color-mix(in oklab, var(--media-shadow-current-color) 40%, transparent);
53
55
  --media-text-shadow-dialog: 0 1px 0 #00000040;
54
- --media-backdrop-filter-surface: blur(16px) saturate(110%);
56
+ --media-backdrop-filter-surface: blur(16px) saturate(125%);
55
57
  --media-backdrop-filter-indicator: blur(8px);
56
- --media-backdrop-filter-dialog: blur(16px) saturate(110%);
58
+ --media-backdrop-filter-dialog: blur(16px) saturate(125%);
57
59
  --media-control-corner-shape: round;
58
60
  --media-control-radius: 99px;
59
61
  --media-control-size: calc(var(--media-spacing) * 9);
@@ -153,10 +155,20 @@
153
155
  @layer base.preset {
154
156
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
155
157
  --media-frame-border: var(--media-border-color, #0000001a);
158
+ --media-controls-gradient-height: max(40%, calc(var(--media-spacing) * 40));
159
+ --media-controls-bottom-gradient-height: max(50%, calc(var(--media-spacing) * 60));
156
160
  --media-controls-gradient: linear-gradient(to top,
157
- color-mix(in oklab, var(--media-backdrop) 40%, transparent),
158
- color-mix(in oklab, var(--media-backdrop) 20%, transparent),
159
- color-mix(in oklab, var(--media-backdrop) 50%, transparent));
161
+ color-mix(in oklab, var(--media-backdrop) 60%, transparent),
162
+ color-mix(in oklab, var(--media-backdrop) 50.7%, transparent) 25%,
163
+ color-mix(in oklab, var(--media-backdrop) 30%, transparent) 50%,
164
+ color-mix(in oklab, var(--media-backdrop) 9.3%, transparent) 75%,
165
+ transparent);
166
+ --media-controls-top-gradient: linear-gradient(to bottom,
167
+ color-mix(in oklab, var(--media-backdrop) 55%, transparent),
168
+ color-mix(in oklab, var(--media-backdrop) 46.48%, transparent) 25%,
169
+ color-mix(in oklab, var(--media-backdrop) 27.5%, transparent) 50%,
170
+ color-mix(in oklab, var(--media-backdrop) 8.53%, transparent) 75%,
171
+ transparent);
160
172
  --media-caption-controls-y: calc(var(--media-spacing) * -16);
161
173
  --media-slider-preview-offset: calc(var(--media-spacing) * 9);
162
174
  --media-thumbnail-gradient: linear-gradient(to top,
@@ -168,9 +180,17 @@
168
180
  @supports (color: oklch(from red l c h)) and (background-image: linear-gradient(in oklab, red, red)) {
169
181
  .media-skin:is([data-preset="video"], [data-preset="live-video"]) {
170
182
  --media-controls-gradient: linear-gradient(to top in oklab,
171
- oklch(from var(--media-backdrop) l c h / .4),
172
- oklch(from var(--media-backdrop) l c h / .2),
173
- oklch(from var(--media-backdrop) l c h / .5));
183
+ oklch(from var(--media-backdrop) l c h / .6),
184
+ oklch(from var(--media-backdrop) l c h / .507) 25%,
185
+ oklch(from var(--media-backdrop) l c h / .3) 50%,
186
+ oklch(from var(--media-backdrop) l c h / .093) 75%,
187
+ transparent);
188
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
189
+ oklch(from var(--media-backdrop) l c h / .55),
190
+ oklch(from var(--media-backdrop) l c h / .4647) 25%,
191
+ oklch(from var(--media-backdrop) l c h / .275) 50%,
192
+ oklch(from var(--media-backdrop) l c h / .0853) 75%,
193
+ transparent);
174
194
  }
175
195
  }
176
196
 
@@ -185,9 +205,20 @@
185
205
 
186
206
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
187
207
  --media-frame-border: var(--media-border-color, #00000026);
208
+ --media-controls-gradient-height: 40%;
209
+ --media-controls-bottom-gradient-height: 40%;
188
210
  --media-controls-gradient: linear-gradient(to top,
189
211
  color-mix(in oklab, var(--media-backdrop) 50%, transparent),
190
- color-mix(in oklab, var(--media-backdrop) 20%, transparent));
212
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
213
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
214
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
215
+ transparent);
216
+ --media-controls-top-gradient: linear-gradient(to bottom,
217
+ color-mix(in oklab, var(--media-backdrop) 50%, transparent),
218
+ color-mix(in oklab, var(--media-backdrop) 42.2%, transparent) 25%,
219
+ color-mix(in oklab, var(--media-backdrop) 25%, transparent) 50%,
220
+ color-mix(in oklab, var(--media-backdrop) 7.8%, transparent) 75%,
221
+ transparent);
191
222
  --media-indicator-gradient: linear-gradient(to bottom,
192
223
  color-mix(in oklab, var(--media-backdrop) 35%, transparent),
193
224
  color-mix(in oklab, var(--media-backdrop) 20%, transparent) calc(var(--media-spacing) * 12),
@@ -197,6 +228,7 @@
197
228
  }
198
229
 
199
230
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="compat"] {
231
+ --media-controls-gradient: linear-gradient(to top, #00000080, transparent 40% 60%, #0006);
200
232
  --media-caption-controls-y: calc(var(--media-spacing) * -18);
201
233
  }
202
234
 
@@ -208,7 +240,16 @@
208
240
  .media-skin:is([data-preset="video"], [data-preset="live-video"])[data-theme="neutral"] {
209
241
  --media-controls-gradient: linear-gradient(to top in oklab,
210
242
  oklch(from var(--media-backdrop) l c h / .5),
211
- oklch(from var(--media-backdrop) l c h / .2));
243
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
244
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
245
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
246
+ transparent);
247
+ --media-controls-top-gradient: linear-gradient(to bottom in oklab,
248
+ oklch(from var(--media-backdrop) l c h / .5),
249
+ oklch(from var(--media-backdrop) l c h / .422) 25%,
250
+ oklch(from var(--media-backdrop) l c h / .25) 50%,
251
+ oklch(from var(--media-backdrop) l c h / .078) 75%,
252
+ transparent);
212
253
  }
213
254
  }
214
255
 
@@ -529,6 +570,11 @@
529
570
  transition-duration: var(--media-duration-instant);
530
571
  }
531
572
 
573
+ :where(.media-skin[data-theme="neutral"]) .media-dialog-backdrop[data-scope="document"] {
574
+ border-radius: 0;
575
+ position: fixed;
576
+ }
577
+
532
578
  :where(.media-skin[data-theme="neutral"]) .media-dialog-backdrop:is([data-starting-style], [data-ending-style]) {
533
579
  opacity: 0;
534
580
  }
@@ -599,6 +645,11 @@
599
645
  transition-duration: var(--media-duration-instant);
600
646
  }
601
647
 
648
+ :where(.media-skin[data-theme="neutral"]) .media-dialog-popup[data-scope="document"] {
649
+ max-height: calc(100dvh - 1rem);
650
+ position: fixed;
651
+ }
652
+
602
653
  :where(.media-skin[data-theme="neutral"]) .media-dialog-popup:is([data-starting-style], [data-ending-style]) {
603
654
  scale: var(--media-hidden-popup-scale) var(--media-hidden-popup-scale);
604
655
  opacity: 0;
@@ -712,11 +763,10 @@
712
763
  transition-duration: .15s;
713
764
  transition-duration: calc(var(--media-duration-controls) / 2);
714
765
  text-shadow: 0 1px 0 var(--media-shadow-current-color);
715
- inset-inline: 0;
716
766
  font-weight: 400;
717
767
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
718
768
  position: absolute;
719
- top: 0;
769
+ inset: 0;
720
770
  }
721
771
 
722
772
  :where(.media-skin[data-theme="neutral"]) .media-title:not([data-visible]) {
@@ -725,6 +775,16 @@
725
775
  transition-duration: var(--media-duration-controls);
726
776
  }
727
777
 
778
+ :where(.media-skin[data-theme="neutral"]) .media-title:before {
779
+ z-index: -1;
780
+ height: var(--media-controls-gradient-height);
781
+ content: "";
782
+ background-image: var(--media-controls-top-gradient);
783
+ inset-inline: 0;
784
+ position: absolute;
785
+ top: 0;
786
+ }
787
+
728
788
  @media (pointer: fine) {
729
789
  :where(.media-skin[data-theme="neutral"]) .media-title:not([data-visible]) {
730
790
  filter: blur(var(--media-hidden-blur));
@@ -792,9 +852,9 @@
792
852
  object-position: var(--media-object-position, center);
793
853
  width: 100%;
794
854
  max-width: 100%;
795
- height: 100%;
796
855
  margin: 0;
797
856
  display: block;
857
+ height: 100% !important;
798
858
  }
799
859
 
800
860
  :where(.media-skin[data-theme="neutral"]) .media-status-announcer {
@@ -814,6 +874,7 @@
814
874
  gap: var(--media-spacing);
815
875
  padding: calc(var(--media-spacing) * 4);
816
876
  text-align: center;
877
+ filter: var(--media-filter-feedback);
817
878
  grid-row-start: 1;
818
879
  grid-column-start: 2;
819
880
  display: grid;
@@ -934,6 +995,7 @@
934
995
  :where(.media-skin[data-theme="neutral"]) .media-playback-status-indicator {
935
996
  padding: calc(var(--media-spacing) * 4);
936
997
  text-align: center;
998
+ filter: var(--media-filter-feedback);
937
999
  transition-property: opacity, scale;
938
1000
  transition-duration: .15s;
939
1001
  transition-duration: var(--media-duration-slow);
@@ -2127,6 +2189,10 @@
2127
2189
  opacity: .5;
2128
2190
  }
2129
2191
 
2192
+ :where(.media-skin[data-theme="neutral"]) .media-menu-radio-item[data-custom] {
2193
+ font-style: italic;
2194
+ }
2195
+
2130
2196
  :where(.media-skin[data-theme="neutral"]) .media-menu-radio-item[data-availability="unavailable"], :where(.media-skin[data-theme="neutral"]) .media-menu-radio-item[data-availability="unsupported"] {
2131
2197
  display: none;
2132
2198
  }
@@ -2535,9 +2601,12 @@
2535
2601
  z-index: 10;
2536
2602
  border-radius: inherit;
2537
2603
  background-image: var(--media-controls-gradient);
2604
+ background-size: 100% var(--media-controls-bottom-gradient-height);
2538
2605
  transition-property: opacity;
2539
2606
  transition-duration: .15s;
2540
2607
  transition-duration: var(--media-duration-controls);
2608
+ background-position: bottom;
2609
+ background-repeat: no-repeat;
2541
2610
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
2542
2611
  position: absolute;
2543
2612
  inset: 0;
@@ -2722,22 +2791,13 @@
2722
2791
  }
2723
2792
  }
2724
2793
 
2725
- :where(.media-skin[data-theme="neutral"][data-preset="video"]) .media-time-current-value {
2726
- display: none;
2727
- }
2728
-
2729
- @container media-root (width >= 42rem) {
2730
- :where(.media-skin[data-theme="neutral"][data-preset="video"]) .media-time-current-value {
2731
- display: inline;
2732
- }
2733
- }
2734
-
2735
2794
  :where(.media-skin[data-theme="neutral"][data-preset="video"]) .media-time-duration-value {
2736
2795
  font-variant-numeric: tabular-nums;
2737
2796
  transition-property: opacity;
2738
2797
  transition-duration: .15s;
2739
2798
  transition-duration: var(--media-duration-slow);
2740
2799
  transition-timing-function: cubic-bezier(0, 0, .2, 1);
2800
+ display: none;
2741
2801
  }
2742
2802
 
2743
2803
  :where(.media-skin[data-theme="neutral"][data-preset="video"]) .media-time-duration-value[data-unavailable] {
@@ -2747,6 +2807,7 @@
2747
2807
  @container media-root (width >= 42rem) {
2748
2808
  :where(.media-skin[data-theme="neutral"][data-preset="video"]) .media-time-duration-value {
2749
2809
  color: var(--media-controls-foreground);
2810
+ display: inline;
2750
2811
  }
2751
2812
 
2752
2813
  @supports (color: color-mix(in lab, red, red)) {
@@ -78,7 +78,7 @@ const template = createTemplate(`<media-container class="media-skin media-contai
78
78
  </media-controls-group>
79
79
  <media-controls-group class="video-time-slider-group">
80
80
  <media-time-group class="media-time-group">
81
- <media-time class="media-time-toggle media-time-current-value" type="current" toggle>
81
+ <media-time class="media-time-toggle" type="current" toggle>
82
82
  </media-time>
83
83
  <media-time-separator class="media-time-separator">
84
84
  </media-time-separator>