@videojs/html 10.0.0-beta.21 → 10.0.0-beta.23

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 (498) hide show
  1. package/cdn/{abort-C9UiBdVU.js → abort-0nUH9HXc.js} +1 -1
  2. package/cdn/{abort-C9UiBdVU.js.map → abort-0nUH9HXc.js.map} +1 -1
  3. package/cdn/{abort-DsTff8mS.js → abort-DQxwCs92.js} +1 -1
  4. package/cdn/{abort-DsTff8mS.js.map → abort-DQxwCs92.js.map} +1 -1
  5. package/cdn/audio-minimal-ui.dev.js +1 -4
  6. package/cdn/audio-minimal-ui.js +1 -1
  7. package/cdn/audio-minimal.dev.js +5 -7
  8. package/cdn/audio-minimal.dev.js.map +1 -1
  9. package/cdn/audio-minimal.js +1 -1
  10. package/cdn/audio-minimal.js.map +1 -1
  11. package/cdn/audio-ui.dev.js +1 -4
  12. package/cdn/audio-ui.js +1 -1
  13. package/cdn/audio.dev.js +5 -7
  14. package/cdn/audio.dev.js.map +1 -1
  15. package/cdn/audio.js +1 -1
  16. package/cdn/audio.js.map +1 -1
  17. package/cdn/background.dev.js +3 -3
  18. package/cdn/background.js +1 -1
  19. package/cdn/background.js.map +1 -1
  20. package/cdn/{compounds-CM_NP-ej.js → compounds-BHHGcL_P.js} +148 -63
  21. package/cdn/compounds-BHHGcL_P.js.map +1 -0
  22. package/cdn/compounds-DJyzXLOB.js +8 -0
  23. package/cdn/compounds-DJyzXLOB.js.map +1 -0
  24. package/cdn/{create-player-Bi6WUwDZ.js → create-player-B-gVAMdr.js} +183 -94
  25. package/cdn/create-player-B-gVAMdr.js.map +1 -0
  26. package/cdn/create-player-C5ui1T2i.js +7 -0
  27. package/cdn/create-player-C5ui1T2i.js.map +1 -0
  28. package/cdn/default-Djy9PEXm.js +2 -0
  29. package/cdn/default-Djy9PEXm.js.map +1 -0
  30. package/cdn/{default-XHZAb7gP.js → default-YzaLyoYg.js} +3 -1
  31. package/cdn/default-YzaLyoYg.js.map +1 -0
  32. package/cdn/hls-DEP0AzDp.js +41 -0
  33. package/cdn/hls-DEP0AzDp.js.map +1 -0
  34. package/cdn/{hls-BotloEPN.js → hls-DR-Xxpxv.js} +163 -23
  35. package/cdn/hls-DR-Xxpxv.js.map +1 -0
  36. package/cdn/hotkey-element-BvI78DTc.js +2 -0
  37. package/cdn/{hotkey-element-DRGCbVj9.js.map → hotkey-element-BvI78DTc.js.map} +1 -1
  38. package/cdn/{hotkey-element-317kwVH5.js → hotkey-element-oEdY8YLl.js} +24 -18
  39. package/cdn/{hotkey-element-317kwVH5.js.map → hotkey-element-oEdY8YLl.js.map} +1 -1
  40. package/cdn/live-video-minimal.dev.d.ts +1 -0
  41. package/cdn/live-video-minimal.dev.js +115 -0
  42. package/cdn/live-video-minimal.dev.js.map +1 -0
  43. package/cdn/live-video-minimal.js +2 -0
  44. package/cdn/live-video-minimal.js.map +1 -0
  45. package/cdn/live-video.dev.d.ts +1 -0
  46. package/cdn/live-video.dev.js +130 -0
  47. package/cdn/live-video.dev.js.map +1 -0
  48. package/cdn/live-video.js +2 -0
  49. package/cdn/live-video.js.map +1 -0
  50. package/cdn/media/dash-video.dev.js +8 -7
  51. package/cdn/media/dash-video.dev.js.map +1 -1
  52. package/cdn/media/dash-video.js +6 -6
  53. package/cdn/media/dash-video.js.map +1 -1
  54. package/cdn/media/hls-video.dev.js +4 -4
  55. package/cdn/media/hls-video.js +1 -1
  56. package/cdn/media/hls-video.js.map +1 -1
  57. package/cdn/media/mux-audio.dev.js +8 -6
  58. package/cdn/media/mux-audio.dev.js.map +1 -1
  59. package/cdn/media/mux-audio.js +1 -1
  60. package/cdn/media/mux-audio.js.map +1 -1
  61. package/cdn/media/mux-video.dev.js +8 -6
  62. package/cdn/media/mux-video.dev.js.map +1 -1
  63. package/cdn/media/mux-video.js +1 -1
  64. package/cdn/media/mux-video.js.map +1 -1
  65. package/cdn/media/native-hls-video.dev.js +4 -4
  66. package/cdn/media/native-hls-video.js +1 -1
  67. package/cdn/media/native-hls-video.js.map +1 -1
  68. package/cdn/media/simple-hls-video.dev.js +11 -5
  69. package/cdn/media/simple-hls-video.dev.js.map +1 -1
  70. package/cdn/media/simple-hls-video.js +6 -6
  71. package/cdn/media/simple-hls-video.js.map +1 -1
  72. package/cdn/media-attach-mixin-DuquRhAk.js +2 -0
  73. package/cdn/{media-attach-mixin-C2wz0Qbd.js.map → media-attach-mixin-DuquRhAk.js.map} +1 -1
  74. package/cdn/{media-attach-mixin-CYoNe7Sh.js → media-attach-mixin-pV8deGiO.js} +2 -2
  75. package/cdn/{media-attach-mixin-CYoNe7Sh.js.map → media-attach-mixin-pV8deGiO.js.map} +1 -1
  76. package/cdn/{minimal-BnDnlwbj.js → minimal-CciG7Fsu.js} +3 -1
  77. package/cdn/minimal-CciG7Fsu.js.map +1 -0
  78. package/cdn/minimal-DSLrhnDm.js +2 -0
  79. package/cdn/minimal-DSLrhnDm.js.map +1 -0
  80. package/cdn/{minimal-ui-cy2oEbFm.js → minimal-ui-Bx-_SggT.js} +6 -5
  81. package/cdn/minimal-ui-Bx-_SggT.js.map +1 -0
  82. package/cdn/minimal-ui-CFO4ssL8.js +2 -0
  83. package/cdn/{minimal-ui-CroDYUGf.js.map → minimal-ui-CFO4ssL8.js.map} +1 -1
  84. package/cdn/minimal-ui-D6Pvbx1R.js +2 -0
  85. package/cdn/minimal-ui-D6Pvbx1R.js.map +1 -0
  86. package/cdn/{minimal-ui-DhxN21v5.js → minimal-ui-Dl-8ZL53.js} +5 -5
  87. package/cdn/{minimal-ui-DhxN21v5.js.map → minimal-ui-Dl-8ZL53.js.map} +1 -1
  88. package/cdn/{mux-B5K6kOzg.js → mux-D5M5HL6A.js} +753 -7
  89. package/cdn/mux-D5M5HL6A.js.map +1 -0
  90. package/cdn/mux-DH3Kxyot.js +27 -0
  91. package/cdn/mux-DH3Kxyot.js.map +1 -0
  92. package/cdn/native-hls-DN_aWn2z.js +2 -0
  93. package/cdn/native-hls-DN_aWn2z.js.map +1 -0
  94. package/cdn/native-hls-ak4v9DN6.js +371 -0
  95. package/cdn/native-hls-ak4v9DN6.js.map +1 -0
  96. package/cdn/player-BKKCelEs.js +2 -0
  97. package/cdn/player-BKKCelEs.js.map +1 -0
  98. package/cdn/{player-CatrGW7l.js → player-C_6YjMl7.js} +93 -8
  99. package/cdn/player-C_6YjMl7.js.map +1 -0
  100. package/cdn/player-CtegNw3g.js +2 -0
  101. package/cdn/{player-BK35-ndY.js.map → player-CtegNw3g.js.map} +1 -1
  102. package/cdn/{player-xstFHOgW.js → player-D468sScc.js} +3 -3
  103. package/cdn/{player-xstFHOgW.js.map → player-D468sScc.js.map} +1 -1
  104. package/cdn/{context-0rI_P6jf.js → predicate-BOcV_HDG.js} +23 -2
  105. package/cdn/predicate-BOcV_HDG.js.map +1 -0
  106. package/cdn/{context-CEFisYD0.js → predicate-Cad5WV4q.js} +2 -2
  107. package/cdn/predicate-Cad5WV4q.js.map +1 -0
  108. package/cdn/{shallow-equal-xh6Wj-hj.js → shallow-equal-D-fthE54.js} +1 -1
  109. package/cdn/{shallow-equal-xh6Wj-hj.js.map → shallow-equal-D-fthE54.js.map} +1 -1
  110. package/cdn/{shallow-equal-Daj3-_LC.js → shallow-equal-DSpD9PMp.js} +1 -1
  111. package/cdn/{shallow-equal-Daj3-_LC.js.map → shallow-equal-DSpD9PMp.js.map} +1 -1
  112. package/cdn/{skin-element-CDUkmCtS.js → skin-element-BcbrkgGs.js} +2 -2
  113. package/cdn/{skin-element-CDUkmCtS.js.map → skin-element-BcbrkgGs.js.map} +1 -1
  114. package/cdn/{skin-element-BGP23sop.js → skin-element-DesLkJKs.js} +2 -2
  115. package/cdn/{skin-element-BGP23sop.js.map → skin-element-DesLkJKs.js.map} +1 -1
  116. package/cdn/types-B_4Es-UH.js +20 -0
  117. package/cdn/types-B_4Es-UH.js.map +1 -0
  118. package/cdn/types-DRezN4yy.js +2 -0
  119. package/cdn/types-DRezN4yy.js.map +1 -0
  120. package/cdn/{ui-Em9rF9Ah.js → ui-CzxKbsyb.js} +7 -6
  121. package/cdn/ui-CzxKbsyb.js.map +1 -0
  122. package/cdn/ui-D6DV-Emw.js +2 -0
  123. package/cdn/{ui-QHwo6iyo.js.map → ui-D6DV-Emw.js.map} +1 -1
  124. package/cdn/ui-Dw-n2AMs.js +2 -0
  125. package/cdn/ui-Dw-n2AMs.js.map +1 -0
  126. package/cdn/{ui-AFHQtrqa.js → ui-S_eLj4ur.js} +6 -6
  127. package/cdn/{ui-AFHQtrqa.js.map → ui-S_eLj4ur.js.map} +1 -1
  128. package/cdn/{video-host-ycP7ckxU.js → video-host-BR_2vUZH.js} +82 -39
  129. package/cdn/video-host-BR_2vUZH.js.map +1 -0
  130. package/cdn/video-host-Bkh2OyyP.js +47 -0
  131. package/cdn/video-host-Bkh2OyyP.js.map +1 -0
  132. package/cdn/video-minimal-ui.dev.js +1 -4
  133. package/cdn/video-minimal-ui.js +1 -1
  134. package/cdn/video-minimal.dev.js +11 -7
  135. package/cdn/video-minimal.dev.js.map +1 -1
  136. package/cdn/video-minimal.js +1 -1
  137. package/cdn/video-minimal.js.map +1 -1
  138. package/cdn/video-ui.dev.js +1 -4
  139. package/cdn/video-ui.js +1 -1
  140. package/cdn/video.dev.js +11 -7
  141. package/cdn/video.dev.js.map +1 -1
  142. package/cdn/video.js +1 -1
  143. package/cdn/video.js.map +1 -1
  144. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  145. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  146. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  147. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  148. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js +6 -0
  149. package/dist/default/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -0
  150. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js +6 -0
  151. package/dist/default/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -0
  152. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js +6 -0
  153. package/dist/default/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -0
  154. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js +6 -0
  155. package/dist/default/_virtual/inline-css_src/define/live-video/skin.js.map +1 -0
  156. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  157. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  158. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  159. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  160. package/dist/default/define/audio/minimal-skin.css +2 -1
  161. package/dist/default/define/audio/skin.css +2 -1
  162. package/dist/default/define/background/skin.js +1 -1
  163. package/dist/default/define/live-audio/minimal-skin.css +779 -0
  164. package/dist/default/define/live-audio/minimal-skin.js +26 -0
  165. package/dist/default/define/live-audio/minimal-skin.js.map +1 -0
  166. package/dist/default/define/live-audio/minimal-skin.tailwind.js +29 -0
  167. package/dist/default/define/live-audio/minimal-skin.tailwind.js.map +1 -0
  168. package/dist/default/define/live-audio/skin.css +795 -0
  169. package/dist/default/define/live-audio/skin.js +26 -0
  170. package/dist/default/define/live-audio/skin.js.map +1 -0
  171. package/dist/default/define/live-audio/skin.tailwind.js +28 -0
  172. package/dist/default/define/live-audio/skin.tailwind.js.map +1 -0
  173. package/dist/default/define/live-video/minimal-skin.css +1170 -0
  174. package/dist/default/define/live-video/minimal-skin.js +26 -0
  175. package/dist/default/define/live-video/minimal-skin.js.map +1 -0
  176. package/dist/default/define/live-video/minimal-skin.tailwind.js +30 -0
  177. package/dist/default/define/live-video/minimal-skin.tailwind.js.map +1 -0
  178. package/dist/default/define/live-video/skin.css +1160 -0
  179. package/dist/default/define/live-video/skin.js +26 -0
  180. package/dist/default/define/live-video/skin.js.map +1 -0
  181. package/dist/default/define/live-video/skin.tailwind.js +29 -0
  182. package/dist/default/define/live-video/skin.tailwind.js.map +1 -0
  183. package/dist/default/define/skin-element.js +1 -1
  184. package/dist/default/define/ui/cast-button.js +7 -0
  185. package/dist/default/define/ui/cast-button.js.map +1 -0
  186. package/dist/default/define/video/minimal-skin.css +8 -1
  187. package/dist/default/define/video/minimal-skin.js +1 -1
  188. package/dist/default/define/video/minimal-skin.js.map +1 -1
  189. package/dist/default/define/video/minimal-skin.tailwind.js +1 -1
  190. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  191. package/dist/default/define/video/minimal-ui.js +2 -0
  192. package/dist/default/define/video/minimal-ui.js.map +1 -1
  193. package/dist/default/define/video/skin.css +8 -1
  194. package/dist/default/define/video/skin.js +1 -1
  195. package/dist/default/define/video/skin.js.map +1 -1
  196. package/dist/default/define/video/skin.tailwind.js +1 -1
  197. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  198. package/dist/default/define/video/ui.js +2 -0
  199. package/dist/default/define/video/ui.js.map +1 -1
  200. package/dist/default/icons/dist/render/default/index.js +2 -0
  201. package/dist/default/icons/dist/render/default/index.js.map +1 -1
  202. package/dist/default/icons/dist/render/minimal/index.js +2 -0
  203. package/dist/default/icons/dist/render/minimal/index.js.map +1 -1
  204. package/dist/default/index.js +3 -1
  205. package/dist/default/media/mux-audio/index.js +4 -1
  206. package/dist/default/media/mux-audio/index.js.map +1 -1
  207. package/dist/default/media/mux-video/index.js +4 -1
  208. package/dist/default/media/mux-video/index.js.map +1 -1
  209. package/dist/default/presets/live-audio.js +6 -0
  210. package/dist/default/presets/live-video.js +6 -0
  211. package/dist/default/skins/dist/default/default/tailwind/components/button.js +1 -1
  212. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  213. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  214. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  215. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  216. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  217. package/dist/default/ui/alert-dialog/alert-dialog-close-element.js +7 -5
  218. package/dist/default/ui/alert-dialog/alert-dialog-close-element.js.map +1 -1
  219. package/dist/default/ui/alert-dialog/alert-dialog-element.js +12 -6
  220. package/dist/default/ui/alert-dialog/alert-dialog-element.js.map +1 -1
  221. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js +6 -3
  222. package/dist/default/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  223. package/dist/default/ui/cast-button/cast-button-element.js +24 -0
  224. package/dist/default/ui/cast-button/cast-button-element.js.map +1 -0
  225. package/dist/default/ui/error-dialog/error-dialog-element.js +4 -1
  226. package/dist/default/ui/error-dialog/error-dialog-element.js.map +1 -1
  227. package/dist/default/ui/gesture/gesture-element.js +10 -7
  228. package/dist/default/ui/gesture/gesture-element.js.map +1 -1
  229. package/dist/default/ui/hotkey/hotkey-element.js +10 -7
  230. package/dist/default/ui/hotkey/hotkey-element.js.map +1 -1
  231. package/dist/default/ui/media-button-element.js +4 -2
  232. package/dist/default/ui/media-button-element.js.map +1 -1
  233. package/dist/default/ui/popover/popover-element.js +14 -7
  234. package/dist/default/ui/popover/popover-element.js.map +1 -1
  235. package/dist/default/ui/slider/slider-element.js +8 -4
  236. package/dist/default/ui/slider/slider-element.js.map +1 -1
  237. package/dist/default/ui/slider/slider-preview-element.js +9 -6
  238. package/dist/default/ui/slider/slider-preview-element.js.map +1 -1
  239. package/dist/default/ui/slider/slider-value-element.js +5 -4
  240. package/dist/default/ui/slider/slider-value-element.js.map +1 -1
  241. package/dist/default/ui/thumbnail/thumbnail-element.js +10 -5
  242. package/dist/default/ui/thumbnail/thumbnail-element.js.map +1 -1
  243. package/dist/default/ui/time/time-element.js +8 -4
  244. package/dist/default/ui/time/time-element.js.map +1 -1
  245. package/dist/default/ui/time-slider/time-slider-element.js +12 -6
  246. package/dist/default/ui/time-slider/time-slider-element.js.map +1 -1
  247. package/dist/default/ui/tooltip/tooltip-element.js +16 -8
  248. package/dist/default/ui/tooltip/tooltip-element.js.map +1 -1
  249. package/dist/default/ui/tooltip/tooltip-group-element.js +7 -5
  250. package/dist/default/ui/tooltip/tooltip-group-element.js.map +1 -1
  251. package/dist/default/ui/volume-slider/volume-slider-element.js +10 -5
  252. package/dist/default/ui/volume-slider/volume-slider-element.js.map +1 -1
  253. package/dist/dev/_virtual/_rolldown/runtime.js +27 -0
  254. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  255. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  256. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  257. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  258. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js +6 -0
  259. package/dist/dev/_virtual/inline-css_src/define/live-audio/minimal-skin.js.map +1 -0
  260. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js +6 -0
  261. package/dist/dev/_virtual/inline-css_src/define/live-audio/skin.js.map +1 -0
  262. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js +6 -0
  263. package/dist/dev/_virtual/inline-css_src/define/live-video/minimal-skin.js.map +1 -0
  264. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js +6 -0
  265. package/dist/dev/_virtual/inline-css_src/define/live-video/skin.js.map +1 -0
  266. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  267. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  268. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  269. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  270. package/dist/dev/define/audio/minimal-skin.css +2 -1
  271. package/dist/dev/define/audio/minimal-skin.d.ts +2 -2
  272. package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
  273. package/dist/dev/define/audio/player.d.ts +2 -2
  274. package/dist/dev/define/audio/skin.css +2 -1
  275. package/dist/dev/define/audio/skin.d.ts +2 -2
  276. package/dist/dev/define/audio/skin.d.ts.map +1 -1
  277. package/dist/dev/define/background/player.d.ts +2 -2
  278. package/dist/dev/define/background/skin.d.ts.map +1 -1
  279. package/dist/dev/define/background/skin.js +1 -1
  280. package/dist/dev/define/live-audio/minimal-skin.css +779 -0
  281. package/dist/dev/define/live-audio/minimal-skin.d.ts +17 -0
  282. package/dist/dev/define/live-audio/minimal-skin.d.ts.map +1 -0
  283. package/dist/dev/define/live-audio/minimal-skin.js +76 -0
  284. package/dist/dev/define/live-audio/minimal-skin.js.map +1 -0
  285. package/dist/dev/define/live-audio/minimal-skin.tailwind.d.ts +14 -0
  286. package/dist/dev/define/live-audio/minimal-skin.tailwind.d.ts.map +1 -0
  287. package/dist/dev/define/live-audio/minimal-skin.tailwind.js +79 -0
  288. package/dist/dev/define/live-audio/minimal-skin.tailwind.js.map +1 -0
  289. package/dist/dev/define/live-audio/skin.css +795 -0
  290. package/dist/dev/define/live-audio/skin.d.ts +17 -0
  291. package/dist/dev/define/live-audio/skin.d.ts.map +1 -0
  292. package/dist/dev/define/live-audio/skin.js +83 -0
  293. package/dist/dev/define/live-audio/skin.js.map +1 -0
  294. package/dist/dev/define/live-audio/skin.tailwind.d.ts +14 -0
  295. package/dist/dev/define/live-audio/skin.tailwind.d.ts.map +1 -0
  296. package/dist/dev/define/live-audio/skin.tailwind.js +78 -0
  297. package/dist/dev/define/live-audio/skin.tailwind.js.map +1 -0
  298. package/dist/dev/define/live-video/minimal-skin.css +1170 -0
  299. package/dist/dev/define/live-video/minimal-skin.d.ts +17 -0
  300. package/dist/dev/define/live-video/minimal-skin.d.ts.map +1 -0
  301. package/dist/dev/define/live-video/minimal-skin.js +112 -0
  302. package/dist/dev/define/live-video/minimal-skin.js.map +1 -0
  303. package/dist/dev/define/live-video/minimal-skin.tailwind.d.ts +14 -0
  304. package/dist/dev/define/live-video/minimal-skin.tailwind.d.ts.map +1 -0
  305. package/dist/dev/define/live-video/minimal-skin.tailwind.js +110 -0
  306. package/dist/dev/define/live-video/minimal-skin.tailwind.js.map +1 -0
  307. package/dist/dev/define/live-video/skin.css +1160 -0
  308. package/dist/dev/define/live-video/skin.d.ts +17 -0
  309. package/dist/dev/define/live-video/skin.d.ts.map +1 -0
  310. package/dist/dev/define/live-video/skin.js +127 -0
  311. package/dist/dev/define/live-video/skin.js.map +1 -0
  312. package/dist/dev/define/live-video/skin.tailwind.d.ts +14 -0
  313. package/dist/dev/define/live-video/skin.tailwind.d.ts.map +1 -0
  314. package/dist/dev/define/live-video/skin.tailwind.js +111 -0
  315. package/dist/dev/define/live-video/skin.tailwind.js.map +1 -0
  316. package/dist/dev/define/skin-element.d.ts +1 -1
  317. package/dist/dev/define/skin-element.d.ts.map +1 -1
  318. package/dist/dev/define/skin-element.js +1 -1
  319. package/dist/dev/define/ui/cast-button.d.ts +9 -0
  320. package/dist/dev/define/ui/cast-button.d.ts.map +1 -0
  321. package/dist/dev/define/ui/cast-button.js +7 -0
  322. package/dist/dev/define/ui/cast-button.js.map +1 -0
  323. package/dist/dev/define/video/minimal-skin.css +8 -1
  324. package/dist/dev/define/video/minimal-skin.d.ts +2 -2
  325. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  326. package/dist/dev/define/video/minimal-skin.js +6 -0
  327. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  328. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  329. package/dist/dev/define/video/minimal-skin.tailwind.js +5 -0
  330. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  331. package/dist/dev/define/video/minimal-ui.js +2 -0
  332. package/dist/dev/define/video/minimal-ui.js.map +1 -1
  333. package/dist/dev/define/video/player.d.ts +2 -2
  334. package/dist/dev/define/video/skin.css +8 -1
  335. package/dist/dev/define/video/skin.d.ts +2 -2
  336. package/dist/dev/define/video/skin.d.ts.map +1 -1
  337. package/dist/dev/define/video/skin.js +6 -0
  338. package/dist/dev/define/video/skin.js.map +1 -1
  339. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  340. package/dist/dev/define/video/skin.tailwind.js +5 -0
  341. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  342. package/dist/dev/define/video/ui.js +2 -0
  343. package/dist/dev/define/video/ui.js.map +1 -1
  344. package/dist/dev/icons/dist/render/default/index.js +2 -0
  345. package/dist/dev/icons/dist/render/default/index.js.map +1 -1
  346. package/dist/dev/icons/dist/render/minimal/index.js +2 -0
  347. package/dist/dev/icons/dist/render/minimal/index.js.map +1 -1
  348. package/dist/dev/index.d.ts +13 -3
  349. package/dist/dev/index.d.ts.map +1 -0
  350. package/dist/dev/index.js +3 -1
  351. package/dist/dev/media/background-video/index.d.ts.map +1 -1
  352. package/dist/dev/media/container-element.d.ts +2 -2
  353. package/dist/dev/media/dash-video/index.d.ts +2 -2
  354. package/dist/dev/media/hls-video/index.d.ts +2 -2
  355. package/dist/dev/media/mux-audio/index.d.ts +2 -2
  356. package/dist/dev/media/mux-audio/index.js +4 -1
  357. package/dist/dev/media/mux-audio/index.js.map +1 -1
  358. package/dist/dev/media/mux-video/index.d.ts +2 -2
  359. package/dist/dev/media/mux-video/index.js +4 -1
  360. package/dist/dev/media/mux-video/index.js.map +1 -1
  361. package/dist/dev/media/native-hls-video/index.d.ts +2 -2
  362. package/dist/dev/media/simple-hls-video/index.d.ts +2 -2
  363. package/dist/dev/player/context.d.ts +1 -1
  364. package/dist/dev/player/player-controller.d.ts +1 -1
  365. package/dist/dev/player/player-controller.d.ts.map +1 -1
  366. package/dist/dev/presets/live-audio.d.ts +6 -0
  367. package/dist/dev/presets/live-audio.js +6 -0
  368. package/dist/dev/presets/live-video.d.ts +6 -0
  369. package/dist/dev/presets/live-video.js +6 -0
  370. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +1 -1
  371. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  372. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  373. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  374. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  375. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  376. package/dist/dev/store/container-mixin.d.ts +1 -1
  377. package/dist/dev/store/provider-mixin.d.ts +1 -1
  378. package/dist/dev/ui/alert-dialog/alert-dialog-close-element.d.ts.map +1 -1
  379. package/dist/dev/ui/alert-dialog/alert-dialog-close-element.js +7 -5
  380. package/dist/dev/ui/alert-dialog/alert-dialog-close-element.js.map +1 -1
  381. package/dist/dev/ui/alert-dialog/alert-dialog-description-element.d.ts +2 -2
  382. package/dist/dev/ui/alert-dialog/alert-dialog-element.d.ts.map +1 -1
  383. package/dist/dev/ui/alert-dialog/alert-dialog-element.js +12 -6
  384. package/dist/dev/ui/alert-dialog/alert-dialog-element.js.map +1 -1
  385. package/dist/dev/ui/alert-dialog/alert-dialog-title-element.d.ts +2 -2
  386. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.d.ts.map +1 -1
  387. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js +6 -3
  388. package/dist/dev/ui/buffering-indicator/buffering-indicator-element.js.map +1 -1
  389. package/dist/dev/ui/captions-button/captions-button-element.d.ts +4 -4
  390. package/dist/dev/ui/captions-button/captions-button-element.d.ts.map +1 -1
  391. package/dist/dev/ui/cast-button/cast-button-element.d.ts +19 -0
  392. package/dist/dev/ui/cast-button/cast-button-element.d.ts.map +1 -0
  393. package/dist/dev/ui/cast-button/cast-button-element.js +24 -0
  394. package/dist/dev/ui/cast-button/cast-button-element.js.map +1 -0
  395. package/dist/dev/ui/error-dialog/error-dialog-element.d.ts.map +1 -1
  396. package/dist/dev/ui/error-dialog/error-dialog-element.js +4 -1
  397. package/dist/dev/ui/error-dialog/error-dialog-element.js.map +1 -1
  398. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts +4 -4
  399. package/dist/dev/ui/fullscreen-button/fullscreen-button-element.d.ts.map +1 -1
  400. package/dist/dev/ui/gesture/gesture-element.js +10 -7
  401. package/dist/dev/ui/gesture/gesture-element.js.map +1 -1
  402. package/dist/dev/ui/hotkey/aria-key-shortcuts-controller.d.ts.map +1 -1
  403. package/dist/dev/ui/hotkey/hotkey-element.js +10 -7
  404. package/dist/dev/ui/hotkey/hotkey-element.js.map +1 -1
  405. package/dist/dev/ui/media-button-element.d.ts +1 -1
  406. package/dist/dev/ui/media-button-element.js +4 -2
  407. package/dist/dev/ui/media-button-element.js.map +1 -1
  408. package/dist/dev/ui/media-element.d.ts +2 -2
  409. package/dist/dev/ui/mute-button/mute-button-element.d.ts +4 -4
  410. package/dist/dev/ui/mute-button/mute-button-element.d.ts.map +1 -1
  411. package/dist/dev/ui/pip-button/pip-button-element.d.ts +4 -4
  412. package/dist/dev/ui/pip-button/pip-button-element.d.ts.map +1 -1
  413. package/dist/dev/ui/play-button/play-button-element.d.ts +5 -5
  414. package/dist/dev/ui/play-button/play-button-element.d.ts.map +1 -1
  415. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts +3 -3
  416. package/dist/dev/ui/playback-rate-button/playback-rate-button-element.d.ts.map +1 -1
  417. package/dist/dev/ui/popover/popover-element.d.ts +3 -3
  418. package/dist/dev/ui/popover/popover-element.d.ts.map +1 -1
  419. package/dist/dev/ui/popover/popover-element.js +14 -7
  420. package/dist/dev/ui/popover/popover-element.js.map +1 -1
  421. package/dist/dev/ui/poster/poster-element.d.ts +4 -4
  422. package/dist/dev/ui/poster/poster-element.d.ts.map +1 -1
  423. package/dist/dev/ui/seek-button/seek-button-element.d.ts +4 -4
  424. package/dist/dev/ui/seek-button/seek-button-element.d.ts.map +1 -1
  425. package/dist/dev/ui/slider/slider-element.d.ts +2 -2
  426. package/dist/dev/ui/slider/slider-element.d.ts.map +1 -1
  427. package/dist/dev/ui/slider/slider-element.js +8 -4
  428. package/dist/dev/ui/slider/slider-element.js.map +1 -1
  429. package/dist/dev/ui/slider/slider-preview-element.d.ts.map +1 -1
  430. package/dist/dev/ui/slider/slider-preview-element.js +9 -6
  431. package/dist/dev/ui/slider/slider-preview-element.js.map +1 -1
  432. package/dist/dev/ui/slider/slider-value-element.d.ts.map +1 -1
  433. package/dist/dev/ui/slider/slider-value-element.js +5 -4
  434. package/dist/dev/ui/slider/slider-value-element.js.map +1 -1
  435. package/dist/dev/ui/thumbnail/thumbnail-element.d.ts.map +1 -1
  436. package/dist/dev/ui/thumbnail/thumbnail-element.js +10 -5
  437. package/dist/dev/ui/thumbnail/thumbnail-element.js.map +1 -1
  438. package/dist/dev/ui/time/time-element.d.ts +2 -2
  439. package/dist/dev/ui/time/time-element.d.ts.map +1 -1
  440. package/dist/dev/ui/time/time-element.js +8 -4
  441. package/dist/dev/ui/time/time-element.js.map +1 -1
  442. package/dist/dev/ui/time-slider/time-slider-element.d.ts +2 -2
  443. package/dist/dev/ui/time-slider/time-slider-element.d.ts.map +1 -1
  444. package/dist/dev/ui/time-slider/time-slider-element.js +12 -6
  445. package/dist/dev/ui/time-slider/time-slider-element.js.map +1 -1
  446. package/dist/dev/ui/tooltip/tooltip-element.d.ts +3 -3
  447. package/dist/dev/ui/tooltip/tooltip-element.d.ts.map +1 -1
  448. package/dist/dev/ui/tooltip/tooltip-element.js +16 -8
  449. package/dist/dev/ui/tooltip/tooltip-element.js.map +1 -1
  450. package/dist/dev/ui/tooltip/tooltip-group-element.d.ts.map +1 -1
  451. package/dist/dev/ui/tooltip/tooltip-group-element.js +7 -5
  452. package/dist/dev/ui/tooltip/tooltip-group-element.js.map +1 -1
  453. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts +2 -2
  454. package/dist/dev/ui/volume-slider/volume-slider-element.d.ts.map +1 -1
  455. package/dist/dev/ui/volume-slider/volume-slider-element.js +10 -5
  456. package/dist/dev/ui/volume-slider/volume-slider-element.js.map +1 -1
  457. package/package.json +31 -10
  458. package/cdn/compounds-CM_NP-ej.js.map +0 -1
  459. package/cdn/compounds-Vvz-YfXP.js +0 -8
  460. package/cdn/compounds-Vvz-YfXP.js.map +0 -1
  461. package/cdn/context-0rI_P6jf.js.map +0 -1
  462. package/cdn/context-CEFisYD0.js.map +0 -1
  463. package/cdn/create-player-Bi6WUwDZ.js.map +0 -1
  464. package/cdn/create-player-CKuX8YI5.js +0 -7
  465. package/cdn/create-player-CKuX8YI5.js.map +0 -1
  466. package/cdn/default-C8KsZ0zK.js +0 -2
  467. package/cdn/default-C8KsZ0zK.js.map +0 -1
  468. package/cdn/default-XHZAb7gP.js.map +0 -1
  469. package/cdn/hls-BotloEPN.js.map +0 -1
  470. package/cdn/hls-CBpGTZXU.js +0 -41
  471. package/cdn/hls-CBpGTZXU.js.map +0 -1
  472. package/cdn/hotkey-element-DRGCbVj9.js +0 -2
  473. package/cdn/media-attach-mixin-C2wz0Qbd.js +0 -2
  474. package/cdn/minimal-BnDnlwbj.js.map +0 -1
  475. package/cdn/minimal-CqBxBoLe.js +0 -2
  476. package/cdn/minimal-CqBxBoLe.js.map +0 -1
  477. package/cdn/minimal-ui-C_G24FML.js +0 -2
  478. package/cdn/minimal-ui-C_G24FML.js.map +0 -1
  479. package/cdn/minimal-ui-CroDYUGf.js +0 -2
  480. package/cdn/minimal-ui-cy2oEbFm.js.map +0 -1
  481. package/cdn/mux-B5K6kOzg.js.map +0 -1
  482. package/cdn/mux-DJhfbcCw.js +0 -25
  483. package/cdn/mux-DJhfbcCw.js.map +0 -1
  484. package/cdn/native-hls-CU2F7L5C.js +0 -123
  485. package/cdn/native-hls-CU2F7L5C.js.map +0 -1
  486. package/cdn/native-hls-DKcYYWRt.js +0 -2
  487. package/cdn/native-hls-DKcYYWRt.js.map +0 -1
  488. package/cdn/player-BK35-ndY.js +0 -2
  489. package/cdn/player-C7ajkBi4.js +0 -2
  490. package/cdn/player-C7ajkBi4.js.map +0 -1
  491. package/cdn/player-CatrGW7l.js.map +0 -1
  492. package/cdn/ui-B7vt9mp-.js +0 -2
  493. package/cdn/ui-B7vt9mp-.js.map +0 -1
  494. package/cdn/ui-Em9rF9Ah.js.map +0 -1
  495. package/cdn/ui-QHwo6iyo.js +0 -2
  496. package/cdn/video-host-CPRJVRi3.js +0 -47
  497. package/cdn/video-host-CPRJVRi3.js.map +0 -1
  498. package/cdn/video-host-ycP7ckxU.js.map +0 -1
@@ -0,0 +1,1160 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* Base */
3
+ /* -------------------------------------------------------------------------- */
4
+
5
+ video-player {
6
+ display: contents;
7
+ }
8
+
9
+ /*
10
+ Required to override any default video and image styles (such as
11
+ Tailwind's CSS reset) and ensure they fill the container as expected.
12
+ */
13
+ video-player video,
14
+ video-player [slot="poster"] {
15
+ display: block;
16
+ width: 100%;
17
+ height: 100%;
18
+ }
19
+
20
+ video-player video::-webkit-media-text-track-container {
21
+ transition: translate var(--media-caption-track-duration, 0) ease-out;
22
+ transition-delay: var(--media-caption-track-delay, 0);
23
+ translate: 0 var(--media-caption-track-y, 0);
24
+ scale: 0.98;
25
+ z-index: 1;
26
+ font-family: inherit;
27
+ }
28
+
29
+ media-tooltip-group {
30
+ display: contents;
31
+ }
32
+
33
+ :host {
34
+ /* `display:grid` fixes a weird issue with Safari when setting aspect-ratio */
35
+ display: grid;
36
+ width: 100%;
37
+ }
38
+
39
+ /* Hide volume popover when volume control is unsupported (e.g., iOS Safari). */
40
+ .media-popover--volume:has(media-volume-slider[data-availability="unsupported"]) {
41
+ display: none;
42
+ }
43
+
44
+ /* ==========================================================================
45
+ Reset
46
+ ========================================================================== */
47
+
48
+ .media-default-skin *,
49
+ .media-default-skin *::before,
50
+ .media-default-skin *::after {
51
+ box-sizing: border-box;
52
+ }
53
+ .media-default-skin img,
54
+ .media-default-skin video,
55
+ .media-default-skin svg {
56
+ display: block;
57
+ max-width: 100%;
58
+ }
59
+ .media-default-skin button {
60
+ font: inherit;
61
+ }
62
+ @media (prefers-reduced-motion: no-preference) {
63
+ .media-default-skin {
64
+ interpolate-size: allow-keywords;
65
+ }
66
+ }
67
+
68
+ /* ==========================================================================
69
+ Root Container
70
+ ========================================================================== */
71
+
72
+ .media-default-skin {
73
+ container: media-root / inline-size;
74
+ position: relative;
75
+ isolation: isolate;
76
+ display: block;
77
+ height: 100%;
78
+ width: 100%;
79
+ border-radius: var(--media-border-radius, 2rem);
80
+ outline: 2px solid transparent;
81
+ outline-offset: 2px;
82
+
83
+ &:focus-visible {
84
+ outline-color: currentColor;
85
+ }
86
+ font-family:
87
+ Inter Variable,
88
+ Inter,
89
+ ui-sans-serif,
90
+ system-ui,
91
+ sans-serif;
92
+ line-height: 1.5;
93
+ letter-spacing: normal;
94
+ -webkit-font-smoothing: auto;
95
+ -moz-osx-font-smoothing: auto;
96
+
97
+ & > * {
98
+ font-size: 0.75rem; /* 12px at 100% font size */
99
+ }
100
+
101
+ @container media-root (width > 48rem) {
102
+ & > * {
103
+ font-size: 0.875rem; /* 14px at 100% font size */
104
+ }
105
+ }
106
+ }
107
+
108
+ /* ==========================================================================
109
+ Surface (shared glass effect for tooltips, popovers, controls)
110
+ ========================================================================== */
111
+
112
+ .media-default-skin .media-surface {
113
+ background-color: var(--media-surface-background-color);
114
+ backdrop-filter: var(--media-surface-backdrop-filter);
115
+ box-shadow:
116
+ 0 0 0 1px var(--media-surface-outer-border-color),
117
+ 0 1px 3px 0 var(--media-surface-shadow-color),
118
+ 0 1px 2px -1px var(--media-surface-shadow-color);
119
+
120
+ /* Inner border ring */
121
+ &::after {
122
+ content: "";
123
+ position: absolute;
124
+ inset: 0;
125
+ z-index: 10;
126
+ border-radius: inherit;
127
+ box-shadow: inset 0 0 0 1px var(--media-surface-inner-border-color);
128
+ pointer-events: none;
129
+ }
130
+ }
131
+
132
+ /* ==========================================================================
133
+ Media Element
134
+ ========================================================================== */
135
+
136
+ .media-default-skin ::slotted(video),
137
+ .media-default-skin video {
138
+ display: block;
139
+ width: 100%;
140
+ height: 100%;
141
+ object-fit: var(--media-object-fit, contain);
142
+ object-position: var(--media-object-position, center);
143
+ }
144
+ .media-default-skin ::slotted(video) {
145
+ border-radius: var(--media-video-border-radius);
146
+ }
147
+ .media-default-skin video {
148
+ border-radius: inherit;
149
+ }
150
+
151
+ .media-default-skin:fullscreen ::slotted(video),
152
+ .media-default-skin:fullscreen video {
153
+ object-fit: contain;
154
+ }
155
+
156
+ /* ==========================================================================
157
+ Overlay / Scrim
158
+ ========================================================================== */
159
+
160
+ .media-default-skin .media-overlay {
161
+ position: absolute;
162
+ inset: 0;
163
+ border-radius: inherit;
164
+ background-image: linear-gradient(to top, oklch(0 0 0 / 0.5), oklch(0 0 0 / 0.3), oklch(0 0 0 / 0));
165
+ backdrop-filter: blur(0) saturate(1);
166
+ opacity: 0;
167
+ pointer-events: none;
168
+ transition-property: opacity, backdrop-filter;
169
+ transition-duration: var(--media-controls-transition-duration);
170
+ transition-timing-function: ease-out;
171
+ }
172
+
173
+ .media-default-skin .media-error ~ .media-overlay {
174
+ transition-duration: var(--media-error-dialog-transition-duration);
175
+ transition-delay: var(--media-error-dialog-transition-delay);
176
+ }
177
+
178
+ .media-default-skin .media-controls[data-visible] ~ .media-overlay,
179
+ .media-default-skin .media-error[data-open] ~ .media-overlay {
180
+ opacity: 1;
181
+ }
182
+
183
+ .media-default-skin .media-error[data-open] ~ .media-overlay {
184
+ backdrop-filter: blur(16px) saturate(1.5);
185
+ }
186
+
187
+ /* ==========================================================================
188
+ Buffering Indicator
189
+ ========================================================================== */
190
+
191
+ .media-default-skin .media-buffering-indicator {
192
+ position: absolute;
193
+ inset: 0;
194
+ display: none;
195
+ align-items: center;
196
+ justify-content: center;
197
+ color: oklch(1 0 0);
198
+ pointer-events: none;
199
+
200
+ &[data-visible] {
201
+ display: flex;
202
+ }
203
+
204
+ .media-surface {
205
+ padding: 0.25rem;
206
+ border-radius: 100%;
207
+ }
208
+ }
209
+
210
+ /* ==========================================================================
211
+ Error Dialog
212
+ ========================================================================== */
213
+
214
+ .media-default-skin .media-error {
215
+ outline: none;
216
+ }
217
+
218
+ .media-default-skin .media-error:not([data-open]) {
219
+ display: none;
220
+ }
221
+
222
+ .media-default-skin .media-error__title {
223
+ font-weight: 600;
224
+ line-height: 1.25;
225
+ }
226
+
227
+ .media-default-skin .media-error__description {
228
+ opacity: 0.7;
229
+ overflow-wrap: anywhere;
230
+ }
231
+
232
+ .media-default-skin .media-error__actions {
233
+ display: flex;
234
+ gap: 0.5rem;
235
+
236
+ & > * {
237
+ flex: 1;
238
+ }
239
+ }
240
+
241
+ .media-default-skin .media-error[data-open] ~ .media-controls * {
242
+ visibility: hidden;
243
+ }
244
+
245
+ /* ==========================================================================
246
+ Controls
247
+ ========================================================================== */
248
+
249
+ .media-default-skin .media-controls {
250
+ container: media-controls / inline-size;
251
+ display: flex;
252
+ align-items: center;
253
+ column-gap: 0.075rem;
254
+ padding: 0.375rem;
255
+ border-radius: 1.5rem;
256
+ --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
257
+ --media-controls-current-shadow-color-subtle: oklch(
258
+ from var(--media-controls-current-shadow-color) l c h /
259
+ calc(alpha * 0.4)
260
+ );
261
+ text-shadow: 0 1px 0 var(--media-controls-current-shadow-color);
262
+ }
263
+
264
+ /* ==========================================================================
265
+ Time Display
266
+ ========================================================================== */
267
+
268
+ .media-default-skin .media-time-controls {
269
+ container: media-time-controls / inline-size;
270
+ display: flex;
271
+ align-items: center;
272
+ flex: 1;
273
+ gap: 0.75rem;
274
+ padding-inline: 0.5rem;
275
+ }
276
+
277
+ .media-default-skin .media-time {
278
+ font-variant-numeric: tabular-nums;
279
+ }
280
+
281
+ /* ==========================================================================
282
+ Buttons
283
+ ========================================================================== */
284
+
285
+ /* Base button */
286
+ .media-default-skin .media-button {
287
+ display: flex;
288
+ align-items: center;
289
+ justify-content: center;
290
+ flex-shrink: 0;
291
+ padding: 0.5rem 1rem;
292
+ border: none;
293
+ border-radius: calc(infinity * 1px);
294
+ outline: 2px solid transparent;
295
+ outline-offset: -2px;
296
+ transition-property: background-color, outline-offset, scale;
297
+ /* Fix weird jumping when clicking on the buttons in Safari. */
298
+ will-change: scale;
299
+ transition-duration: 150ms;
300
+ transition-timing-function: ease-out;
301
+ cursor: pointer;
302
+ user-select: none;
303
+ text-align: center;
304
+ touch-action: manipulation;
305
+
306
+ &:focus-visible {
307
+ outline-color: currentColor;
308
+ outline-offset: 2px;
309
+ }
310
+
311
+ &:active {
312
+ scale: 0.98;
313
+ }
314
+
315
+ &[disabled] {
316
+ opacity: 0.5;
317
+ filter: grayscale(1);
318
+ cursor: not-allowed;
319
+ }
320
+
321
+ &[data-availability="unavailable"],
322
+ &[data-availability="unsupported"] {
323
+ display: none;
324
+ }
325
+ }
326
+
327
+ /* Primary button variant */
328
+ .media-default-skin .media-button--primary {
329
+ background: oklch(1 0 0);
330
+ color: oklch(0 0 0);
331
+ font-weight: 500;
332
+ text-shadow: none;
333
+ }
334
+
335
+ /* Subtle button variant */
336
+ .media-default-skin .media-button--subtle {
337
+ background: transparent;
338
+ color: inherit;
339
+ text-shadow: inherit;
340
+
341
+ &:hover,
342
+ &:focus-visible,
343
+ &[aria-expanded="true"] {
344
+ background-color: oklch(from currentColor l c h / 0.1);
345
+ text-decoration: none;
346
+ }
347
+ }
348
+
349
+ /* Icon button variant */
350
+ .media-default-skin .media-button--icon {
351
+ display: grid;
352
+ width: 2.25rem;
353
+ padding: 0;
354
+ aspect-ratio: 1;
355
+
356
+ &:active {
357
+ scale: 0.9;
358
+ }
359
+
360
+ & .media-icon {
361
+ filter: drop-shadow(0 1px 0 var(--media-controls-current-shadow-color, oklch(0 0 0 / 0.25)));
362
+ }
363
+ }
364
+
365
+ /* Seek button */
366
+ .media-default-skin .media-button--seek {
367
+ & .media-icon__label {
368
+ position: absolute;
369
+ right: -1px;
370
+ bottom: -3px;
371
+ font-size: 10px;
372
+ font-weight: 480;
373
+ font-variant-numeric: tabular-nums;
374
+ }
375
+
376
+ &:has(.media-icon--flipped) .media-icon__label {
377
+ right: unset;
378
+ left: -1px;
379
+ }
380
+ }
381
+
382
+ /* Playback rate button */
383
+ .media-default-skin .media-button--playback-rate {
384
+ padding: 0;
385
+
386
+ &::after {
387
+ content: attr(data-rate) "\00D7";
388
+ width: 4ch;
389
+ font-variant-numeric: tabular-nums;
390
+ }
391
+ }
392
+
393
+ /* ==========================================================================
394
+ Button Groups
395
+ ========================================================================== */
396
+
397
+ .media-default-skin .media-button-group {
398
+ display: flex;
399
+ align-items: center;
400
+ gap: 0.075rem;
401
+
402
+ @container media-root (width > 42rem) {
403
+ gap: 0.125rem;
404
+ }
405
+ }
406
+
407
+ /* ==========================================================================
408
+ Icons
409
+ ========================================================================== */
410
+
411
+ .media-default-skin .media-icon__container {
412
+ position: relative;
413
+ }
414
+ .media-default-skin .media-icon {
415
+ display: block;
416
+ flex-shrink: 0;
417
+ grid-area: 1 / 1;
418
+ width: 18px;
419
+ height: 18px;
420
+ transition-behavior: allow-discrete;
421
+ transition-property: display, opacity;
422
+ transition-duration: 150ms;
423
+ transition-timing-function: ease-out;
424
+ }
425
+ .media-default-skin .media-icon--flipped {
426
+ scale: -1 1;
427
+ }
428
+
429
+ /* ==========================================================================
430
+ Poster Image
431
+ ========================================================================== */
432
+
433
+ .media-default-skin media-poster,
434
+ .media-default-skin > img {
435
+ position: absolute;
436
+ inset: 0;
437
+ width: 100%;
438
+ height: 100%;
439
+ transition: opacity 0.25s;
440
+ pointer-events: none;
441
+ }
442
+ .media-default-skin media-poster:not([data-visible]),
443
+ .media-default-skin > img:not([data-visible]) {
444
+ opacity: 0;
445
+ }
446
+ .media-default-skin media-poster ::slotted(img),
447
+ .media-default-skin media-poster img {
448
+ position: absolute;
449
+ inset: 0;
450
+ width: 100%;
451
+ height: 100%;
452
+ object-fit: var(--media-object-fit, contain);
453
+ object-position: var(--media-object-position, center);
454
+ border-radius: var(--media-video-border-radius);
455
+ }
456
+ .media-default-skin > img {
457
+ object-fit: var(--media-object-fit, contain);
458
+ object-position: var(--media-object-position, center);
459
+ border-radius: inherit;
460
+ }
461
+
462
+ .media-default-skin:fullscreen media-poster ::slotted(img),
463
+ .media-default-skin:fullscreen media-poster img,
464
+ .media-default-skin:fullscreen > img {
465
+ object-fit: contain;
466
+ }
467
+
468
+ /* ==========================================================================
469
+ Media preview
470
+ ========================================================================== */
471
+ .media-default-skin .media-preview {
472
+ background-color: oklch(0 0 0 / 0.9);
473
+ border-radius: 0.75rem;
474
+ pointer-events: none;
475
+
476
+ & .media-preview__thumbnail {
477
+ display: block;
478
+ position: relative;
479
+ border-radius: inherit;
480
+ overflow: clip;
481
+
482
+ &::after {
483
+ content: "";
484
+ position: absolute;
485
+ inset: 0;
486
+ border-radius: inherit;
487
+ background-image: linear-gradient(to top, oklch(0 0 0 / 0.8), oklch(0 0 0 / 0.3), oklch(0 0 0 / 0));
488
+ }
489
+ }
490
+
491
+ & .media-preview__time {
492
+ position: absolute;
493
+ bottom: 0.5rem;
494
+ inset-inline: 0;
495
+ text-align: center;
496
+ }
497
+
498
+ & .media-overlay {
499
+ opacity: 1;
500
+ }
501
+
502
+ & .media-preview__spinner {
503
+ position: absolute;
504
+ top: 50%;
505
+ left: 50%;
506
+ translate: -50% -50%;
507
+ opacity: 0;
508
+ }
509
+
510
+ & .media-preview__thumbnail,
511
+ & .media-preview__spinner {
512
+ transition: opacity 150ms ease-out;
513
+ }
514
+
515
+ &:has(.media-preview__thumbnail[data-loading]) {
516
+ & .media-preview__thumbnail {
517
+ opacity: 0;
518
+ }
519
+ & .media-preview__spinner {
520
+ opacity: 1;
521
+ }
522
+ }
523
+ }
524
+
525
+ /* ==========================================================================
526
+ Slider
527
+ ========================================================================== */
528
+
529
+ .media-default-skin .media-slider {
530
+ position: relative;
531
+ display: flex;
532
+ align-items: center;
533
+ justify-content: center;
534
+ flex: 1;
535
+ border-radius: calc(infinity * 1px);
536
+ outline: none;
537
+ cursor: pointer;
538
+
539
+ &[data-orientation="horizontal"] {
540
+ min-width: 5rem;
541
+ width: 100%;
542
+ height: 2rem;
543
+ }
544
+
545
+ &[data-orientation="vertical"] {
546
+ width: 2rem;
547
+ height: 5rem;
548
+ }
549
+ }
550
+
551
+ /* Track */
552
+ .media-default-skin .media-slider__track {
553
+ position: relative;
554
+ isolation: isolate;
555
+ overflow: hidden;
556
+ border-radius: inherit;
557
+ user-select: none;
558
+
559
+ &[data-orientation="horizontal"] {
560
+ width: 100%;
561
+ height: 0.25rem;
562
+ }
563
+
564
+ &[data-orientation="vertical"] {
565
+ width: 0.25rem;
566
+ height: 100%;
567
+ }
568
+ }
569
+
570
+ /* Thumb */
571
+ .media-default-skin .media-slider__thumb {
572
+ z-index: 10;
573
+ position: absolute;
574
+ translate: -50% -50%;
575
+ width: 0.625rem;
576
+ height: 0.625rem;
577
+ background-color: currentColor;
578
+ border-radius: calc(infinity * 1px);
579
+ box-shadow:
580
+ 0 0 0 1px var(--media-controls-current-shadow-color-subtle, oklch(0 0 0 / 0.1)),
581
+ 0 1px 3px 0 oklch(0 0 0 / 0.15),
582
+ 0 1px 2px -1px oklch(0 0 0 / 0.15);
583
+ opacity: 0;
584
+ transition-property: opacity, height, width, outline-offset;
585
+ transition-duration: 150ms;
586
+ transition-timing-function: ease-out;
587
+ user-select: none;
588
+ outline: 4px solid transparent;
589
+ outline-offset: -4px;
590
+
591
+ &[data-orientation="horizontal"] {
592
+ top: 50%;
593
+ left: var(--media-slider-fill);
594
+ }
595
+
596
+ &[data-orientation="vertical"] {
597
+ left: 50%;
598
+ top: calc(100% - var(--media-slider-fill));
599
+ }
600
+
601
+ &:hover,
602
+ &:focus {
603
+ outline-color: oklch(from currentColor l c h / 0.25);
604
+ outline-offset: 0;
605
+ }
606
+
607
+ &::after {
608
+ content: "";
609
+ position: absolute;
610
+ inset: -4px;
611
+ border-radius: inherit;
612
+ box-shadow: 0 0 0 2px oklch(1 0 0);
613
+ transition-property: opacity, scale;
614
+ transition-duration: 150ms;
615
+ transition-timing-function: ease-out;
616
+ }
617
+
618
+ &:not(:focus-visible)::after {
619
+ scale: 0.5;
620
+ opacity: 0;
621
+ }
622
+ }
623
+
624
+ .media-default-skin .media-slider:active .media-slider__thumb,
625
+ .media-default-skin .media-slider__thumb--persistent {
626
+ width: 0.75rem;
627
+ height: 0.75rem;
628
+ }
629
+
630
+ .media-default-skin .media-slider:hover .media-slider__thumb,
631
+ .media-default-skin .media-slider__thumb:focus-visible,
632
+ .media-default-skin .media-slider__thumb--persistent {
633
+ opacity: 1;
634
+ }
635
+
636
+ /* Shared track fills */
637
+ .media-default-skin .media-slider__buffer,
638
+ .media-default-skin .media-slider__fill {
639
+ position: absolute;
640
+ border-radius: inherit;
641
+ pointer-events: none;
642
+ }
643
+
644
+ .media-default-skin .media-slider__buffer[data-orientation="horizontal"],
645
+ .media-default-skin .media-slider__fill[data-orientation="horizontal"] {
646
+ inset-block: 0;
647
+ left: 0;
648
+ }
649
+
650
+ .media-default-skin .media-slider__buffer[data-orientation="vertical"],
651
+ .media-default-skin .media-slider__fill[data-orientation="vertical"] {
652
+ inset-inline: 0;
653
+ bottom: 0;
654
+ }
655
+
656
+ /* Buffer */
657
+ .media-default-skin .media-slider__buffer {
658
+ background-color: oklch(from currentColor l c h / 0.2);
659
+ transition-duration: 0.25s;
660
+ transition-timing-function: ease-out;
661
+
662
+ &[data-orientation="horizontal"] {
663
+ width: var(--media-slider-buffer);
664
+ transition-property: width;
665
+ }
666
+
667
+ &[data-orientation="vertical"] {
668
+ height: var(--media-slider-buffer);
669
+ transition-property: height;
670
+ }
671
+ }
672
+
673
+ /* Fill */
674
+ .media-default-skin .media-slider__fill {
675
+ background-color: currentColor;
676
+
677
+ &[data-orientation="horizontal"] {
678
+ width: var(--media-slider-fill);
679
+ }
680
+
681
+ &[data-orientation="vertical"] {
682
+ height: var(--media-slider-fill);
683
+ }
684
+ }
685
+
686
+ /* Dragging — thumb and fill follow the pointer position */
687
+ .media-default-skin .media-slider[data-dragging] .media-slider__thumb[data-orientation="horizontal"] {
688
+ left: var(--media-slider-pointer);
689
+ }
690
+
691
+ .media-default-skin .media-slider[data-dragging] .media-slider__thumb[data-orientation="vertical"] {
692
+ top: calc(100% - var(--media-slider-pointer));
693
+ }
694
+
695
+ .media-default-skin .media-slider[data-dragging] .media-slider__fill[data-orientation="horizontal"] {
696
+ width: var(--media-slider-pointer);
697
+ }
698
+
699
+ .media-default-skin .media-slider[data-dragging] .media-slider__fill[data-orientation="vertical"] {
700
+ height: var(--media-slider-pointer);
701
+ }
702
+
703
+ /* ==========================================================================
704
+ Popups & Tooltips
705
+ ========================================================================== */
706
+
707
+ .media-default-skin .media-popover,
708
+ .media-default-skin .media-tooltip {
709
+ margin: 0;
710
+ border: 0;
711
+ color: inherit;
712
+ overflow: visible;
713
+ transition-property: scale, opacity, filter;
714
+ transition-duration: var(--media-popup-transition-duration);
715
+ transition-timing-function: var(--media-popup-transition-timing-function);
716
+
717
+ &[data-starting-style],
718
+ &[data-ending-style] {
719
+ opacity: 0;
720
+ scale: 0.5;
721
+ filter: blur(8px);
722
+ }
723
+
724
+ &[data-instant] {
725
+ transition-duration: 0ms;
726
+ }
727
+
728
+ &[data-side="top"] {
729
+ transform-origin: bottom;
730
+ }
731
+ &[data-side="bottom"] {
732
+ transform-origin: top;
733
+ }
734
+ &[data-side="left"] {
735
+ transform-origin: right;
736
+ }
737
+ &[data-side="right"] {
738
+ transform-origin: left;
739
+ }
740
+
741
+ /* Safe area between trigger and popup */
742
+ &::before {
743
+ content: "";
744
+ position: absolute;
745
+ pointer-events: inherit;
746
+ }
747
+
748
+ &[data-side="top"]::before,
749
+ &[data-side="bottom"]::before {
750
+ width: 100%;
751
+ inset-inline: 0;
752
+ }
753
+ &[data-side="top"]::before {
754
+ top: 100%;
755
+ }
756
+ &[data-side="bottom"]::before {
757
+ bottom: 100%;
758
+ }
759
+
760
+ &[data-side="left"]::before,
761
+ &[data-side="right"]::before {
762
+ height: 100%;
763
+ inset-block: 0;
764
+ }
765
+ &[data-side="left"]::before {
766
+ left: 100%;
767
+ }
768
+ &[data-side="right"]::before {
769
+ right: 100%;
770
+ }
771
+ }
772
+
773
+ .media-default-skin .media-popover {
774
+ &[data-side="top"]::before,
775
+ &[data-side="bottom"]::before {
776
+ height: var(--media-popover-side-offset);
777
+ }
778
+ &[data-side="left"]::before,
779
+ &[data-side="right"]::before {
780
+ width: var(--media-popover-side-offset);
781
+ }
782
+ }
783
+ .media-default-skin .media-popover--volume {
784
+ padding: 0.75rem 0;
785
+ border-radius: calc(infinity * 1px);
786
+
787
+ &:has(media-volume-slider[data-availability="unsupported"]) {
788
+ display: none;
789
+ }
790
+ }
791
+
792
+ .media-default-skin .media-tooltip {
793
+ padding: 0.25rem 0.625rem;
794
+ border-radius: calc(infinity * 1px);
795
+ font-size: 0.75rem;
796
+ white-space: nowrap;
797
+
798
+ &[data-side="top"]::before,
799
+ &[data-side="bottom"]::before {
800
+ height: var(--media-tooltip-side-offset);
801
+ }
802
+ &[data-side="left"]::before,
803
+ &[data-side="right"]::before {
804
+ width: var(--media-tooltip-side-offset);
805
+ }
806
+ }
807
+
808
+ /* ==========================================================================
809
+ Native Caption Track
810
+ ========================================================================== */
811
+
812
+ .media-default-skin {
813
+ --media-caption-track-duration: var(--media-controls-transition-duration);
814
+ --media-caption-track-delay: 25ms;
815
+ --media-caption-track-y: -0.5rem;
816
+
817
+ &:has(.media-controls[data-visible]) {
818
+ --media-caption-track-y: -5.5rem;
819
+ }
820
+
821
+ @container media-root (width > 42rem) {
822
+ &:has(.media-controls[data-visible]) > * {
823
+ --media-caption-track-y: -3.5rem;
824
+ }
825
+ }
826
+ }
827
+
828
+ .media-default-skin video::-webkit-media-text-track-container {
829
+ transition: translate var(--media-caption-track-duration) ease-out;
830
+ transition-delay: var(--media-caption-track-delay);
831
+ translate: 0 var(--media-caption-track-y);
832
+ scale: 0.98;
833
+ z-index: 1;
834
+ font-family: inherit;
835
+ }
836
+
837
+ /* ==========================================================================
838
+ Icon State Visibility for Video Skins
839
+
840
+ Data-attribute-driven visibility rules for multi-state icon buttons.
841
+ Uses :is() with both element selectors (for HTML custom element wrappers)
842
+ and class selectors (for React rendered SVG elements).
843
+ ========================================================================== */
844
+
845
+ /* --- All icons hidden by default --- */
846
+
847
+ .media-button--play .media-icon--restart,
848
+ .media-button--play .media-icon--play,
849
+ .media-button--play .media-icon--pause,
850
+ .media-button--mute .media-icon--volume-off,
851
+ .media-button--mute .media-icon--volume-low,
852
+ .media-button--mute .media-icon--volume-high,
853
+ .media-button--fullscreen .media-icon--fullscreen-enter,
854
+ .media-button--fullscreen .media-icon--fullscreen-exit,
855
+ .media-button--pip .media-icon--pip-enter,
856
+ .media-button--pip .media-icon--pip-exit,
857
+ .media-button--cast .media-icon--cast-enter,
858
+ .media-button--cast .media-icon--cast-exit,
859
+ .media-button--captions .media-icon--captions-off,
860
+ .media-button--captions .media-icon--captions-on {
861
+ display: none;
862
+ opacity: 0;
863
+ }
864
+
865
+ /* --- Active icon per state --- */
866
+
867
+ /* Play: ended → restart */
868
+ .media-button--play[data-ended] .media-icon--restart,
869
+ /* Play: paused (not ended) → play */
870
+ .media-button--play:not([data-ended])[data-paused] .media-icon--play,
871
+ /* Play: playing (not paused, not ended) → pause */
872
+ .media-button--play:not([data-paused]):not([data-ended]) .media-icon--pause,
873
+ /* Mute: muted → volume off */
874
+ .media-button--mute[data-muted] .media-icon--volume-off,
875
+ /* Mute: volume low (not muted) → volume low */
876
+ .media-button--mute:not([data-muted])[data-volume-level="low"] .media-icon--volume-low,
877
+ /* Mute: volume high (not muted, not low) → volume high */
878
+ .media-button--mute:not([data-muted]):not([data-volume-level="low"]) .media-icon--volume-high,
879
+ /* Fullscreen: not fullscreen → enter */
880
+ .media-button--fullscreen:not([data-fullscreen]) .media-icon--fullscreen-enter,
881
+ /* Fullscreen: fullscreen → exit */
882
+ .media-button--fullscreen[data-fullscreen] .media-icon--fullscreen-exit,
883
+ /* Picture-in-Picture: not active → enter */
884
+ .media-button--pip:not([data-pip]) .media-icon--pip-enter,
885
+ /* Picture-in-Picture: active → exit */
886
+ .media-button--pip[data-pip] .media-icon--pip-exit,
887
+ /* Cast: not connected → enter */
888
+ .media-button--cast:not([data-cast-state="connected"]) .media-icon--cast-enter,
889
+ /* Cast: connected → exit */
890
+ .media-button--cast[data-cast-state="connected"] .media-icon--cast-exit,
891
+ /* Captions: not active → captions off */
892
+ .media-button--captions:not([data-active]) .media-icon--captions-off,
893
+ /* Captions: active → captions on */
894
+ .media-button--captions[data-active] .media-icon--captions-on {
895
+ display: block;
896
+ opacity: 1;
897
+ }
898
+
899
+
900
+ /* ==========================================================================
901
+ Root
902
+ ========================================================================== */
903
+
904
+ .media-default-skin--video {
905
+ background: oklch(0 0 0);
906
+ --media-spring-transition: linear(
907
+ 0,
908
+ 0.034 1.5%,
909
+ 0.763 9.7%,
910
+ 1.066 13.9%,
911
+ 1.198 19.9%,
912
+ 1.184 21.8%,
913
+ 0.963 37.5%,
914
+ 0.997 50.9%,
915
+ 1
916
+ );
917
+ --media-border-color: oklch(0 0 0 / 0.1);
918
+ --media-surface-background-color: oklch(1 0 0 / 0.1);
919
+ --media-surface-inner-border-color: oklch(1 0 0 / 0.05);
920
+ --media-surface-outer-border-color: oklch(0 0 0 / 0.1);
921
+ --media-surface-shadow-color: oklch(0 0 0 / 0.15);
922
+ --media-surface-backdrop-filter: blur(16px) saturate(1.5);
923
+ --media-video-border-radius: var(--media-border-radius, 2rem);
924
+ --media-controls-transition-duration: 100ms;
925
+ --media-controls-transition-timing-function: ease-out;
926
+ --media-error-dialog-transition-duration: 350ms;
927
+ --media-error-dialog-transition-delay: 100ms;
928
+ --media-error-dialog-transition-timing-function: var(--media-spring-transition);
929
+ --media-popup-transition-duration: 100ms;
930
+ --media-popup-transition-timing-function: ease-out;
931
+ --media-tooltip-side-offset: 0.75rem;
932
+ --media-popover-side-offset: 0.5rem;
933
+
934
+ @media (prefers-reduced-motion: reduce) {
935
+ --media-error-dialog-transition-duration: 50ms;
936
+ --media-error-dialog-transition-delay: 0ms;
937
+ --media-error-dialog-transition-timing-function: ease-out;
938
+ --media-popup-transition-duration: 0ms;
939
+ }
940
+
941
+ @media (prefers-color-scheme: dark) {
942
+ --media-border-color: oklch(1 0 0 / 0.15);
943
+ }
944
+
945
+ @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
946
+ --media-surface-background-color: oklch(0 0 0);
947
+ --media-surface-inner-border-color: oklch(1 0 0 / 0.25);
948
+ --media-surface-outer-border-color: transparent;
949
+ }
950
+
951
+ &:has(.media-controls:not([data-visible])) {
952
+ /* Slight delay to hide controls on non-touch devices after interaction */
953
+ @media (pointer: fine) {
954
+ --media-controls-transition-duration: 300ms;
955
+ }
956
+ @media (pointer: coarse) {
957
+ --media-controls-transition-duration: 150ms;
958
+ }
959
+ @media (prefers-reduced-motion: reduce) {
960
+ --media-controls-transition-duration: 50ms;
961
+ }
962
+ }
963
+
964
+ /* Inner border ring */
965
+ &::after {
966
+ content: "";
967
+ position: absolute;
968
+ inset: 0;
969
+ z-index: 10;
970
+ border-radius: inherit;
971
+ box-shadow: inset 0 0 0 1px var(--media-border-color);
972
+ pointer-events: none;
973
+ }
974
+
975
+ &:fullscreen {
976
+ --media-border-radius: 0;
977
+ }
978
+ }
979
+
980
+ /* ==========================================================================
981
+ Error Dialog
982
+ ========================================================================== */
983
+
984
+ .media-default-skin--video .media-error {
985
+ position: absolute;
986
+ inset: 0;
987
+ z-index: 20;
988
+ display: flex;
989
+ align-items: center;
990
+ justify-content: center;
991
+ }
992
+
993
+ .media-default-skin--video .media-error__dialog {
994
+ display: flex;
995
+ flex-direction: column;
996
+ gap: 0.75rem;
997
+ max-width: 18rem;
998
+ padding: 0.75rem;
999
+ border-radius: 1.75rem;
1000
+ color: oklch(1 0 0);
1001
+ text-shadow: 0 1px 0 oklch(0 0 0 / 0.25);
1002
+ transition-property: opacity, scale;
1003
+ transition-duration: var(--media-error-dialog-transition-duration);
1004
+ transition-delay: var(--media-error-dialog-transition-delay);
1005
+ transition-timing-function: var(--media-error-dialog-transition-timing-function);
1006
+ }
1007
+
1008
+ .media-default-skin--video .media-error[data-starting-style] .media-error__dialog,
1009
+ .media-default-skin--video .media-error[data-ending-style] .media-error__dialog {
1010
+ opacity: 0;
1011
+ scale: 0.5;
1012
+ }
1013
+ .media-default-skin--video .media-error[data-ending-style] .media-error__dialog {
1014
+ transition-delay: 0ms;
1015
+ }
1016
+
1017
+ .media-default-skin--video .media-error__content {
1018
+ display: flex;
1019
+ flex-direction: column;
1020
+ gap: 0.5rem;
1021
+ padding: 0.5rem 0.5rem 0.375rem;
1022
+ text-shadow: inherit;
1023
+ }
1024
+
1025
+ .media-default-skin--video .media-error__title {
1026
+ font-size: 1rem;
1027
+ }
1028
+
1029
+ /* ==========================================================================
1030
+ Controls (hide/show behavior)
1031
+ ========================================================================== */
1032
+
1033
+ .media-default-skin--video .media-controls {
1034
+ flex-wrap: wrap;
1035
+ position: absolute;
1036
+ bottom: 0.5rem;
1037
+ inset-inline: 0.5rem;
1038
+ z-index: 10;
1039
+ color: var(--media-color-primary, oklch(1 0 0));
1040
+ transition-duration: var(--media-controls-transition-duration);
1041
+ transition-timing-function: var(--media-controls-transition-timing-function);
1042
+ transform-origin: bottom;
1043
+
1044
+ @media (pointer: fine) {
1045
+ will-change: scale, filter, opacity;
1046
+ transition-property: scale, filter, opacity;
1047
+ }
1048
+
1049
+ @media (pointer: coarse) {
1050
+ will-change: scale, opacity;
1051
+ transition-property: scale, opacity;
1052
+ }
1053
+
1054
+ &:not([data-visible]) {
1055
+ opacity: 0;
1056
+ pointer-events: none;
1057
+ scale: 0.9;
1058
+
1059
+ @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1060
+ filter: blur(8px);
1061
+ }
1062
+
1063
+ @media (prefers-reduced-motion: reduce) {
1064
+ scale: 1;
1065
+ }
1066
+ }
1067
+
1068
+ & .media-time-controls {
1069
+ order: -1;
1070
+ flex: 0 0 100%;
1071
+ padding-inline: 0.625rem;
1072
+ }
1073
+
1074
+ & .media-button-group:first-child {
1075
+ flex: 1;
1076
+ text-align: left;
1077
+ }
1078
+
1079
+ & .media-button-group:last-child {
1080
+ flex: 1;
1081
+ justify-content: end;
1082
+ }
1083
+
1084
+ @container media-root (width > 42rem) {
1085
+ bottom: 0.75rem;
1086
+ inset-inline: 0.75rem;
1087
+ flex-wrap: nowrap;
1088
+ column-gap: 0.125rem;
1089
+ padding: 0.25rem;
1090
+
1091
+ & .media-time-controls {
1092
+ order: unset;
1093
+ flex: 1;
1094
+ }
1095
+
1096
+ & .media-button-group:first-child,
1097
+ & .media-button-group:last-child {
1098
+ flex: 0 0 auto;
1099
+ }
1100
+ }
1101
+ }
1102
+
1103
+ .media-default-skin--video .media-error[data-open] ~ .media-controls {
1104
+ display: none;
1105
+ }
1106
+
1107
+ /* Hide cursor when controls are hidden */
1108
+ .media-default-skin--video:has(.media-controls:not([data-visible])) {
1109
+ cursor: none;
1110
+ }
1111
+
1112
+ /* ==========================================================================
1113
+ Sliders
1114
+ ========================================================================== */
1115
+
1116
+ .media-default-skin--video .media-slider__track {
1117
+ background-color: oklch(1 0 0 / 0.2);
1118
+ box-shadow: 0 0 0 1px oklch(0 0 0 / 0.05);
1119
+ }
1120
+
1121
+ .media-default-skin--video .media-slider__preview {
1122
+ --media-preview-max-width: 11rem;
1123
+ --media-preview-padding: -1.125rem;
1124
+ /**
1125
+ Inset is the difference between the container width and the slider (100%) width.
1126
+ Divided by 2 as we render the time on both sides.
1127
+ */
1128
+ --media-preview-inset: calc((100cqi - 100%) / 2);
1129
+
1130
+ position: absolute;
1131
+ left: clamp(
1132
+ calc(var(--media-preview-max-width) / 2 + var(--media-preview-padding) - var(--media-preview-inset)),
1133
+ var(--media-slider-pointer),
1134
+ calc(100% - var(--media-preview-max-width) / 2 - var(--media-preview-padding) + var(--media-preview-inset))
1135
+ );
1136
+ bottom: calc(100% + 1.2rem);
1137
+ translate: -50%;
1138
+ opacity: 0;
1139
+ scale: 0.8;
1140
+ filter: blur(8px);
1141
+ transition-property: scale, opacity, filter;
1142
+ transition-duration: 150ms;
1143
+ transition-timing-function: ease-out;
1144
+ transform-origin: bottom;
1145
+ pointer-events: none;
1146
+
1147
+ & .media-preview__thumbnail {
1148
+ max-width: var(--media-preview-max-width);
1149
+ }
1150
+
1151
+ &:has(.media-preview__thumbnail[data-loading]) {
1152
+ max-height: 6rem;
1153
+ }
1154
+ }
1155
+ .media-default-skin--video .media-slider[data-pointing] .media-slider__preview:has([role="img"]:not([data-hidden])) {
1156
+ opacity: 1;
1157
+ scale: 1;
1158
+ filter: blur(0);
1159
+ }
1160
+