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