@videojs/react 10.0.0-beta.24 → 10.0.0-beta.25

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 (713) hide show
  1. package/dist/default/icons/dist/react/default/airplay-enter.js +16 -0
  2. package/dist/default/icons/dist/react/default/airplay-enter.js.map +1 -0
  3. package/dist/default/icons/dist/react/default/airplay-exit.js +28 -0
  4. package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -0
  5. package/dist/default/icons/dist/react/default/captions-off.js +5 -0
  6. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
  7. package/dist/default/icons/dist/react/default/gear.js +16 -0
  8. package/dist/default/icons/dist/react/default/gear.js.map +1 -0
  9. package/dist/default/icons/dist/react/default/quality.js +16 -0
  10. package/dist/default/icons/dist/react/default/quality.js.map +1 -0
  11. package/dist/default/icons/dist/react/default/speech.js +19 -0
  12. package/dist/default/icons/dist/react/default/speech.js.map +1 -0
  13. package/dist/default/icons/dist/react/default/speed.js +52 -0
  14. package/dist/default/icons/dist/react/default/speed.js.map +1 -0
  15. package/dist/default/icons/dist/react/default/switches.js +19 -0
  16. package/dist/default/icons/dist/react/default/switches.js.map +1 -0
  17. package/dist/default/icons/dist/react/minimal/airplay-enter.js +16 -0
  18. package/dist/default/icons/dist/react/minimal/airplay-enter.js.map +1 -0
  19. package/dist/default/icons/dist/react/minimal/airplay-exit.js +28 -0
  20. package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -0
  21. package/dist/default/icons/dist/react/minimal/captions-off.js +5 -0
  22. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  23. package/dist/default/icons/dist/react/minimal/gear.js +16 -0
  24. package/dist/default/icons/dist/react/minimal/gear.js.map +1 -0
  25. package/dist/default/icons/dist/react/minimal/quality.js +16 -0
  26. package/dist/default/icons/dist/react/minimal/quality.js.map +1 -0
  27. package/dist/default/icons/dist/react/minimal/speech.js +54 -0
  28. package/dist/default/icons/dist/react/minimal/speech.js.map +1 -0
  29. package/dist/default/icons/dist/react/minimal/speed.js +52 -0
  30. package/dist/default/icons/dist/react/minimal/speed.js.map +1 -0
  31. package/dist/default/icons/dist/react/minimal/switches.js +19 -0
  32. package/dist/default/icons/dist/react/minimal/switches.js.map +1 -0
  33. package/dist/default/icons/index.js +8 -1
  34. package/dist/default/icons/minimal/index.js +8 -1
  35. package/dist/default/index.js +21 -17
  36. package/dist/default/media/dash-video/index.js +5 -1
  37. package/dist/default/media/dash-video/index.js.map +1 -1
  38. package/dist/default/media/{hls-video → hlsjs-video}/index.js +9 -5
  39. package/dist/default/media/hlsjs-video/index.js.map +1 -0
  40. package/dist/default/media/mux-audio/index.js +9 -3
  41. package/dist/default/media/mux-audio/index.js.map +1 -1
  42. package/dist/default/media/mux-video/index.js +9 -3
  43. package/dist/default/media/mux-video/index.js.map +1 -1
  44. package/dist/default/media/native-hls-video/index.js +5 -1
  45. package/dist/default/media/native-hls-video/index.js.map +1 -1
  46. package/dist/default/media/simple-hls-audio-only/index.js +22 -0
  47. package/dist/default/media/simple-hls-audio-only/index.js.map +1 -0
  48. package/dist/default/media/simple-hls-video/index.js +1 -1
  49. package/dist/default/media/vimeo-video/index.js +37 -0
  50. package/dist/default/media/vimeo-video/index.js.map +1 -0
  51. package/dist/default/player/context.js.map +1 -1
  52. package/dist/default/player/create-player.js +13 -4
  53. package/dist/default/player/create-player.js.map +1 -1
  54. package/dist/default/presets/audio/minimal-skin.css +414 -69
  55. package/dist/default/presets/audio/minimal-skin.js +69 -39
  56. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  57. package/dist/default/presets/audio/minimal-skin.tailwind.js +71 -42
  58. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  59. package/dist/default/presets/audio/skin.css +419 -121
  60. package/dist/default/presets/audio/skin.js +70 -40
  61. package/dist/default/presets/audio/skin.js.map +1 -1
  62. package/dist/default/presets/audio/skin.tailwind.js +72 -42
  63. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  64. package/dist/default/presets/live-audio/index.js +2 -2
  65. package/dist/default/presets/live-audio/minimal-skin.css +414 -69
  66. package/dist/default/presets/live-audio/minimal-skin.js +26 -12
  67. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
  68. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +27 -14
  69. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  70. package/dist/default/presets/live-audio/skin.css +419 -121
  71. package/dist/default/presets/live-audio/skin.js +32 -14
  72. package/dist/default/presets/live-audio/skin.js.map +1 -1
  73. package/dist/default/presets/live-audio/skin.tailwind.js +27 -13
  74. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
  75. package/dist/default/presets/live-video/minimal-skin.css +566 -210
  76. package/dist/default/presets/live-video/minimal-skin.js +93 -12
  77. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  78. package/dist/default/presets/live-video/minimal-skin.tailwind.js +94 -13
  79. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  80. package/dist/default/presets/live-video/skin.css +581 -264
  81. package/dist/default/presets/live-video/skin.js +95 -16
  82. package/dist/default/presets/live-video/skin.js.map +1 -1
  83. package/dist/default/presets/live-video/skin.tailwind.js +95 -17
  84. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  85. package/dist/default/presets/video/minimal-skin.css +566 -210
  86. package/dist/default/presets/video/minimal-skin.js +281 -53
  87. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  88. package/dist/default/presets/video/minimal-skin.tailwind.js +284 -57
  89. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  90. package/dist/default/presets/video/skin.css +581 -264
  91. package/dist/default/presets/video/skin.js +282 -57
  92. package/dist/default/presets/video/skin.js.map +1 -1
  93. package/dist/default/presets/video/skin.tailwind.js +285 -61
  94. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  95. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +8 -3
  96. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  97. package/dist/default/skins/dist/default/default/tailwind/components/badge.js +6 -0
  98. package/dist/default/skins/dist/default/default/tailwind/components/badge.js.map +1 -0
  99. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -4
  100. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  101. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +1 -1
  102. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  103. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js +9 -9
  104. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -1
  105. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +26 -4
  106. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  107. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  108. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  109. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +4 -3
  110. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  111. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +7 -1
  112. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  113. package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
  114. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  115. package/dist/default/skins/dist/default/default/tailwind/components/seek.js +1 -1
  116. package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  117. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +5 -3
  118. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  119. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +12 -0
  120. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -0
  121. package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
  122. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  123. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +26 -13
  124. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  125. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +13 -3
  126. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  127. package/dist/default/skins/dist/default/minimal/tailwind/components/badge.js +6 -0
  128. package/dist/default/skins/dist/default/minimal/tailwind/components/badge.js.map +1 -0
  129. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  130. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  131. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  132. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  133. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js +9 -9
  134. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -1
  135. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +25 -4
  136. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  137. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  138. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  139. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +3 -2
  140. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  141. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +7 -1
  142. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  143. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  144. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  145. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js +1 -1
  146. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  147. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +5 -3
  148. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  149. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +13 -0
  150. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -0
  151. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  152. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  153. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +27 -11
  154. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  155. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +17 -2
  156. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  157. package/dist/default/tailwind.css +0 -24
  158. package/dist/default/ui/airplay-button/airplay-button.js +17 -0
  159. package/dist/default/ui/airplay-button/airplay-button.js.map +1 -0
  160. package/dist/default/ui/airplay-button/index.js +2 -0
  161. package/dist/default/ui/alert-dialog/alert-dialog-close.js +1 -1
  162. package/dist/default/ui/alert-dialog/alert-dialog-popup.js +1 -1
  163. package/dist/default/ui/audio-track/index.js +2 -0
  164. package/dist/default/ui/audio-track/use-audio-track-options.js +31 -0
  165. package/dist/default/ui/audio-track/use-audio-track-options.js.map +1 -0
  166. package/dist/default/ui/captions-radio-group/index.js +2 -0
  167. package/dist/default/ui/captions-radio-group/use-captions-options.js +37 -0
  168. package/dist/default/ui/captions-radio-group/use-captions-options.js.map +1 -0
  169. package/dist/default/ui/create-media-button.js +23 -10
  170. package/dist/default/ui/create-media-button.js.map +1 -1
  171. package/dist/default/ui/error-dialog/error-dialog-description.js +1 -1
  172. package/dist/default/ui/hooks/use-button.js.map +1 -1
  173. package/dist/default/ui/hotkey/use-hotkey-shortcut.js +28 -0
  174. package/dist/default/ui/hotkey/use-hotkey-shortcut.js.map +1 -0
  175. package/dist/default/ui/hotkey/use-hotkey.js +1 -2
  176. package/dist/default/ui/hotkey/use-hotkey.js.map +1 -1
  177. package/dist/default/ui/input-indicators/use-input-indicator-root.js +2 -2
  178. package/dist/default/ui/input-indicators/use-input-indicator-root.js.map +1 -1
  179. package/dist/default/ui/input-indicators/use-rendered-indicator-state.js +7 -4
  180. package/dist/default/ui/input-indicators/use-rendered-indicator-state.js.map +1 -1
  181. package/dist/default/ui/live-button/live-button.js +1 -1
  182. package/dist/default/ui/live-button/live-button.js.map +1 -1
  183. package/dist/default/ui/menu/context.js +16 -1
  184. package/dist/default/ui/menu/context.js.map +1 -1
  185. package/dist/default/ui/menu/index.parts.js +4 -2
  186. package/dist/default/ui/menu/index.parts.js.map +1 -1
  187. package/dist/default/ui/menu/menu-back.js +0 -1
  188. package/dist/default/ui/menu/menu-back.js.map +1 -1
  189. package/dist/default/ui/menu/menu-checkbox-item.js +1 -2
  190. package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -1
  191. package/dist/default/ui/menu/menu-content.js +23 -5
  192. package/dist/default/ui/menu/menu-content.js.map +1 -1
  193. package/dist/default/ui/menu/menu-group-label.js +29 -0
  194. package/dist/default/ui/menu/menu-group-label.js.map +1 -0
  195. package/dist/default/ui/menu/menu-group.js +7 -9
  196. package/dist/default/ui/menu/menu-group.js.map +1 -1
  197. package/dist/default/ui/menu/menu-item-indicator.js +1 -2
  198. package/dist/default/ui/menu/menu-item-indicator.js.map +1 -1
  199. package/dist/default/ui/menu/menu-item-setting-provider.js +72 -0
  200. package/dist/default/ui/menu/menu-item-setting-provider.js.map +1 -0
  201. package/dist/default/ui/menu/menu-item-value.js +28 -0
  202. package/dist/default/ui/menu/menu-item-value.js.map +1 -0
  203. package/dist/default/ui/menu/menu-item.js +44 -23
  204. package/dist/default/ui/menu/menu-item.js.map +1 -1
  205. package/dist/default/ui/menu/menu-radio-group.js +6 -9
  206. package/dist/default/ui/menu/menu-radio-group.js.map +1 -1
  207. package/dist/default/ui/menu/menu-radio-item.js +1 -2
  208. package/dist/default/ui/menu/menu-radio-item.js.map +1 -1
  209. package/dist/default/ui/menu/menu-root.js +1 -1
  210. package/dist/default/ui/menu/menu-separator.js +1 -2
  211. package/dist/default/ui/menu/menu-separator.js.map +1 -1
  212. package/dist/default/ui/menu/menu-trigger.js +85 -29
  213. package/dist/default/ui/menu/menu-trigger.js.map +1 -1
  214. package/dist/default/ui/menu/use-menu-group.js +31 -0
  215. package/dist/default/ui/menu/use-menu-group.js.map +1 -0
  216. package/dist/default/ui/playback-rate/index.js +2 -0
  217. package/dist/default/ui/playback-rate/use-playback-rate-options.js +34 -0
  218. package/dist/default/ui/playback-rate/use-playback-rate-options.js.map +1 -0
  219. package/dist/default/ui/playback-rate-button/playback-rate-button.js +2 -1
  220. package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  221. package/dist/default/ui/poster/poster.js +17 -3
  222. package/dist/default/ui/poster/poster.js.map +1 -1
  223. package/dist/default/ui/quality/index.js +2 -0
  224. package/dist/default/ui/quality/use-quality-options.js +37 -0
  225. package/dist/default/ui/quality/use-quality-options.js.map +1 -0
  226. package/dist/default/ui/seek-button/seek-button.js +3 -1
  227. package/dist/default/ui/seek-button/seek-button.js.map +1 -1
  228. package/dist/default/ui/time/time-value.js +32 -5
  229. package/dist/default/ui/time/time-value.js.map +1 -1
  230. package/dist/default/ui/time-slider/time-slider-root.js +18 -6
  231. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  232. package/dist/default/ui/tooltip/context.js.map +1 -1
  233. package/dist/default/ui/tooltip/index.parts.js +4 -0
  234. package/dist/default/ui/tooltip/index.parts.js.map +1 -1
  235. package/dist/default/ui/tooltip/tooltip-arrow.js +1 -1
  236. package/dist/default/ui/tooltip/tooltip-label.js +24 -0
  237. package/dist/default/ui/tooltip/tooltip-label.js.map +1 -0
  238. package/dist/default/ui/tooltip/tooltip-popup.js +7 -3
  239. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  240. package/dist/default/ui/tooltip/tooltip-root.js +1 -1
  241. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  242. package/dist/default/ui/tooltip/tooltip-shortcut.js +25 -0
  243. package/dist/default/ui/tooltip/tooltip-shortcut.js.map +1 -0
  244. package/dist/default/ui/volume-indicator/volume-indicator-root.js +1 -1
  245. package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  246. package/dist/default/utils/use-attach-iframe.js +14 -0
  247. package/dist/default/utils/use-attach-iframe.js.map +1 -0
  248. package/dist/default/utils/use-media-instance.js +11 -3
  249. package/dist/default/utils/use-media-instance.js.map +1 -1
  250. package/dist/default/utils/use-render.js +1 -1
  251. package/dist/default/utils/use-render.js.map +1 -1
  252. package/dist/dev/icons/dist/react/default/airplay-enter.js +16 -0
  253. package/dist/dev/icons/dist/react/default/airplay-enter.js.map +1 -0
  254. package/dist/dev/icons/dist/react/default/airplay-exit.js +28 -0
  255. package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -0
  256. package/dist/dev/icons/dist/react/default/captions-off.js +5 -0
  257. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  258. package/dist/dev/icons/dist/react/default/gear.js +16 -0
  259. package/dist/dev/icons/dist/react/default/gear.js.map +1 -0
  260. package/dist/dev/icons/dist/react/default/index.d.ts +8 -1
  261. package/dist/dev/icons/dist/react/default/index.d.ts.map +1 -1
  262. package/dist/dev/icons/dist/react/default/quality.js +16 -0
  263. package/dist/dev/icons/dist/react/default/quality.js.map +1 -0
  264. package/dist/dev/icons/dist/react/default/speech.js +19 -0
  265. package/dist/dev/icons/dist/react/default/speech.js.map +1 -0
  266. package/dist/dev/icons/dist/react/default/speed.js +52 -0
  267. package/dist/dev/icons/dist/react/default/speed.js.map +1 -0
  268. package/dist/dev/icons/dist/react/default/switches.js +19 -0
  269. package/dist/dev/icons/dist/react/default/switches.js.map +1 -0
  270. package/dist/dev/icons/dist/react/minimal/airplay-enter.js +16 -0
  271. package/dist/dev/icons/dist/react/minimal/airplay-enter.js.map +1 -0
  272. package/dist/dev/icons/dist/react/minimal/airplay-exit.js +28 -0
  273. package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -0
  274. package/dist/dev/icons/dist/react/minimal/captions-off.js +5 -0
  275. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  276. package/dist/dev/icons/dist/react/minimal/gear.js +16 -0
  277. package/dist/dev/icons/dist/react/minimal/gear.js.map +1 -0
  278. package/dist/dev/icons/dist/react/minimal/index.d.ts +8 -1
  279. package/dist/dev/icons/dist/react/minimal/index.d.ts.map +1 -1
  280. package/dist/dev/icons/dist/react/minimal/quality.js +16 -0
  281. package/dist/dev/icons/dist/react/minimal/quality.js.map +1 -0
  282. package/dist/dev/icons/dist/react/minimal/speech.js +54 -0
  283. package/dist/dev/icons/dist/react/minimal/speech.js.map +1 -0
  284. package/dist/dev/icons/dist/react/minimal/speed.js +52 -0
  285. package/dist/dev/icons/dist/react/minimal/speed.js.map +1 -0
  286. package/dist/dev/icons/dist/react/minimal/switches.js +19 -0
  287. package/dist/dev/icons/dist/react/minimal/switches.js.map +1 -0
  288. package/dist/dev/icons/index.d.ts +2 -2
  289. package/dist/dev/icons/index.js +8 -1
  290. package/dist/dev/icons/minimal/index.d.ts +2 -2
  291. package/dist/dev/icons/minimal/index.js +8 -1
  292. package/dist/dev/index.d.ts +19 -15
  293. package/dist/dev/index.js +21 -17
  294. package/dist/dev/media/dash-video/index.d.ts.map +1 -1
  295. package/dist/dev/media/dash-video/index.js +5 -1
  296. package/dist/dev/media/dash-video/index.js.map +1 -1
  297. package/dist/dev/media/hlsjs-video/index.d.ts +15 -0
  298. package/dist/dev/media/hlsjs-video/index.d.ts.map +1 -0
  299. package/dist/dev/media/{hls-video → hlsjs-video}/index.js +9 -5
  300. package/dist/dev/media/hlsjs-video/index.js.map +1 -0
  301. package/dist/dev/media/mux-audio/index.d.ts +2 -2
  302. package/dist/dev/media/mux-audio/index.d.ts.map +1 -1
  303. package/dist/dev/media/mux-audio/index.js +9 -3
  304. package/dist/dev/media/mux-audio/index.js.map +1 -1
  305. package/dist/dev/media/mux-video/index.d.ts +2 -2
  306. package/dist/dev/media/mux-video/index.d.ts.map +1 -1
  307. package/dist/dev/media/mux-video/index.js +9 -3
  308. package/dist/dev/media/mux-video/index.js.map +1 -1
  309. package/dist/dev/media/native-hls-video/index.d.ts.map +1 -1
  310. package/dist/dev/media/native-hls-video/index.js +5 -1
  311. package/dist/dev/media/native-hls-video/index.js.map +1 -1
  312. package/dist/dev/media/simple-hls-audio-only/index.d.ts +15 -0
  313. package/dist/dev/media/simple-hls-audio-only/index.d.ts.map +1 -0
  314. package/dist/dev/media/simple-hls-audio-only/index.js +22 -0
  315. package/dist/dev/media/simple-hls-audio-only/index.js.map +1 -0
  316. package/dist/dev/media/simple-hls-video/index.js +1 -1
  317. package/dist/dev/media/vimeo-video/index.d.ts +15 -0
  318. package/dist/dev/media/vimeo-video/index.d.ts.map +1 -0
  319. package/dist/dev/media/vimeo-video/index.js +37 -0
  320. package/dist/dev/media/vimeo-video/index.js.map +1 -0
  321. package/dist/dev/player/context.d.ts +8 -0
  322. package/dist/dev/player/context.d.ts.map +1 -1
  323. package/dist/dev/player/context.js.map +1 -1
  324. package/dist/dev/player/create-player.js +13 -4
  325. package/dist/dev/player/create-player.js.map +1 -1
  326. package/dist/dev/presets/audio/minimal-skin.css +414 -69
  327. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  328. package/dist/dev/presets/audio/minimal-skin.js +69 -39
  329. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  330. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  331. package/dist/dev/presets/audio/minimal-skin.tailwind.js +71 -42
  332. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  333. package/dist/dev/presets/audio/skin.css +419 -121
  334. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  335. package/dist/dev/presets/audio/skin.js +70 -40
  336. package/dist/dev/presets/audio/skin.js.map +1 -1
  337. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  338. package/dist/dev/presets/audio/skin.tailwind.js +72 -42
  339. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  340. package/dist/dev/presets/live-audio/index.d.ts +2 -2
  341. package/dist/dev/presets/live-audio/index.js +2 -2
  342. package/dist/dev/presets/live-audio/minimal-skin.css +414 -69
  343. package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -1
  344. package/dist/dev/presets/live-audio/minimal-skin.js +26 -12
  345. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -1
  346. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -1
  347. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +27 -14
  348. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  349. package/dist/dev/presets/live-audio/skin.css +419 -121
  350. package/dist/dev/presets/live-audio/skin.d.ts +3 -1
  351. package/dist/dev/presets/live-audio/skin.d.ts.map +1 -1
  352. package/dist/dev/presets/live-audio/skin.js +32 -14
  353. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  354. package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -1
  355. package/dist/dev/presets/live-audio/skin.tailwind.js +27 -13
  356. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
  357. package/dist/dev/presets/live-video/minimal-skin.css +566 -210
  358. package/dist/dev/presets/live-video/minimal-skin.d.ts +0 -7
  359. package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -1
  360. package/dist/dev/presets/live-video/minimal-skin.js +93 -12
  361. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  362. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -1
  363. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +94 -13
  364. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  365. package/dist/dev/presets/live-video/skin.css +581 -264
  366. package/dist/dev/presets/live-video/skin.d.ts +0 -6
  367. package/dist/dev/presets/live-video/skin.d.ts.map +1 -1
  368. package/dist/dev/presets/live-video/skin.js +95 -16
  369. package/dist/dev/presets/live-video/skin.js.map +1 -1
  370. package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -1
  371. package/dist/dev/presets/live-video/skin.tailwind.js +95 -17
  372. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  373. package/dist/dev/presets/types.d.ts +2 -1
  374. package/dist/dev/presets/types.d.ts.map +1 -1
  375. package/dist/dev/presets/video/minimal-skin.css +566 -210
  376. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  377. package/dist/dev/presets/video/minimal-skin.js +281 -53
  378. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  379. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  380. package/dist/dev/presets/video/minimal-skin.tailwind.js +284 -57
  381. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  382. package/dist/dev/presets/video/skin.css +581 -264
  383. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  384. package/dist/dev/presets/video/skin.js +282 -57
  385. package/dist/dev/presets/video/skin.js.map +1 -1
  386. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  387. package/dist/dev/presets/video/skin.tailwind.js +285 -61
  388. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  389. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +8 -3
  390. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  391. package/dist/dev/skins/dist/default/default/tailwind/components/badge.js +6 -0
  392. package/dist/dev/skins/dist/default/default/tailwind/components/badge.js.map +1 -0
  393. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -4
  394. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  395. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +1 -1
  396. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  397. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js +9 -9
  398. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -1
  399. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +26 -4
  400. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  401. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  402. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  403. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +4 -3
  404. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  405. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +7 -1
  406. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  407. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
  408. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  409. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js +1 -1
  410. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  411. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +5 -3
  412. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  413. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +12 -0
  414. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -0
  415. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +1 -1
  416. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  417. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +26 -13
  418. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  419. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +13 -3
  420. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  421. package/dist/dev/skins/dist/default/minimal/tailwind/components/badge.js +6 -0
  422. package/dist/dev/skins/dist/default/minimal/tailwind/components/badge.js.map +1 -0
  423. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  424. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  425. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  426. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  427. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js +9 -9
  428. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -1
  429. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +25 -4
  430. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  431. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  432. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  433. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +3 -2
  434. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  435. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +7 -1
  436. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  437. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  438. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  439. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js +1 -1
  440. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  441. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +5 -3
  442. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  443. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +13 -0
  444. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -0
  445. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  446. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  447. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +27 -11
  448. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  449. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +17 -2
  450. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  451. package/dist/dev/tailwind.css +0 -24
  452. package/dist/dev/ui/airplay-button/airplay-button.d.ts +15 -0
  453. package/dist/dev/ui/airplay-button/airplay-button.d.ts.map +1 -0
  454. package/dist/dev/ui/airplay-button/airplay-button.js +17 -0
  455. package/dist/dev/ui/airplay-button/airplay-button.js.map +1 -0
  456. package/dist/dev/ui/airplay-button/index.d.ts +2 -0
  457. package/dist/dev/ui/airplay-button/index.js +2 -0
  458. package/dist/dev/ui/alert-dialog/alert-dialog-close.js +1 -1
  459. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +1 -1
  460. package/dist/dev/ui/audio-track/index.d.ts +2 -0
  461. package/dist/dev/ui/audio-track/index.js +2 -0
  462. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts +25 -0
  463. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts.map +1 -0
  464. package/dist/dev/ui/audio-track/use-audio-track-options.js +34 -0
  465. package/dist/dev/ui/audio-track/use-audio-track-options.js.map +1 -0
  466. package/dist/dev/ui/captions-radio-group/index.d.ts +2 -0
  467. package/dist/dev/ui/captions-radio-group/index.js +2 -0
  468. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts +26 -0
  469. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts.map +1 -0
  470. package/dist/dev/ui/captions-radio-group/use-captions-options.js +40 -0
  471. package/dist/dev/ui/captions-radio-group/use-captions-options.js.map +1 -0
  472. package/dist/dev/ui/create-media-button.js +23 -10
  473. package/dist/dev/ui/create-media-button.js.map +1 -1
  474. package/dist/dev/ui/error-dialog/error-dialog-description.js +1 -1
  475. package/dist/dev/ui/hooks/use-button.d.ts +2 -1
  476. package/dist/dev/ui/hooks/use-button.d.ts.map +1 -1
  477. package/dist/dev/ui/hooks/use-button.js.map +1 -1
  478. package/dist/dev/ui/hotkey/use-hotkey-shortcut.d.ts +7 -0
  479. package/dist/dev/ui/hotkey/use-hotkey-shortcut.d.ts.map +1 -0
  480. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js +28 -0
  481. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js.map +1 -0
  482. package/dist/dev/ui/hotkey/use-hotkey.js +1 -2
  483. package/dist/dev/ui/hotkey/use-hotkey.js.map +1 -1
  484. package/dist/dev/ui/input-indicators/use-input-indicator-root.js +2 -2
  485. package/dist/dev/ui/input-indicators/use-input-indicator-root.js.map +1 -1
  486. package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js +7 -4
  487. package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js.map +1 -1
  488. package/dist/dev/ui/live-button/live-button.js +1 -1
  489. package/dist/dev/ui/live-button/live-button.js.map +1 -1
  490. package/dist/dev/ui/menu/context.d.ts.map +1 -1
  491. package/dist/dev/ui/menu/context.js +16 -1
  492. package/dist/dev/ui/menu/context.js.map +1 -1
  493. package/dist/dev/ui/menu/index.parts.d.ts +3 -2
  494. package/dist/dev/ui/menu/index.parts.js +4 -2
  495. package/dist/dev/ui/menu/index.parts.js.map +1 -1
  496. package/dist/dev/ui/menu/menu-back.d.ts.map +1 -1
  497. package/dist/dev/ui/menu/menu-back.js +0 -1
  498. package/dist/dev/ui/menu/menu-back.js.map +1 -1
  499. package/dist/dev/ui/menu/menu-checkbox-item.d.ts.map +1 -1
  500. package/dist/dev/ui/menu/menu-checkbox-item.js +1 -2
  501. package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -1
  502. package/dist/dev/ui/menu/menu-content.d.ts.map +1 -1
  503. package/dist/dev/ui/menu/menu-content.js +23 -5
  504. package/dist/dev/ui/menu/menu-content.js.map +1 -1
  505. package/dist/dev/ui/menu/menu-group-label.d.ts +15 -0
  506. package/dist/dev/ui/menu/menu-group-label.d.ts.map +1 -0
  507. package/dist/dev/ui/menu/menu-group-label.js +29 -0
  508. package/dist/dev/ui/menu/menu-group-label.js.map +1 -0
  509. package/dist/dev/ui/menu/menu-group.d.ts +1 -4
  510. package/dist/dev/ui/menu/menu-group.d.ts.map +1 -1
  511. package/dist/dev/ui/menu/menu-group.js +7 -9
  512. package/dist/dev/ui/menu/menu-group.js.map +1 -1
  513. package/dist/dev/ui/menu/menu-item-indicator.d.ts.map +1 -1
  514. package/dist/dev/ui/menu/menu-item-indicator.js +1 -2
  515. package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -1
  516. package/dist/dev/ui/menu/menu-item-setting-provider.js +72 -0
  517. package/dist/dev/ui/menu/menu-item-setting-provider.js.map +1 -0
  518. package/dist/dev/ui/menu/menu-item-type.d.ts +5 -0
  519. package/dist/dev/ui/menu/menu-item-type.d.ts.map +1 -0
  520. package/dist/dev/ui/menu/menu-item-value.d.ts +14 -0
  521. package/dist/dev/ui/menu/menu-item-value.d.ts.map +1 -0
  522. package/dist/dev/ui/menu/menu-item-value.js +28 -0
  523. package/dist/dev/ui/menu/menu-item-value.js.map +1 -0
  524. package/dist/dev/ui/menu/menu-item.d.ts +3 -0
  525. package/dist/dev/ui/menu/menu-item.d.ts.map +1 -1
  526. package/dist/dev/ui/menu/menu-item.js +44 -23
  527. package/dist/dev/ui/menu/menu-item.js.map +1 -1
  528. package/dist/dev/ui/menu/menu-radio-group.d.ts +0 -2
  529. package/dist/dev/ui/menu/menu-radio-group.d.ts.map +1 -1
  530. package/dist/dev/ui/menu/menu-radio-group.js +6 -9
  531. package/dist/dev/ui/menu/menu-radio-group.js.map +1 -1
  532. package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -1
  533. package/dist/dev/ui/menu/menu-radio-item.js +1 -2
  534. package/dist/dev/ui/menu/menu-radio-item.js.map +1 -1
  535. package/dist/dev/ui/menu/menu-root.js +1 -1
  536. package/dist/dev/ui/menu/menu-separator.d.ts.map +1 -1
  537. package/dist/dev/ui/menu/menu-separator.js +1 -2
  538. package/dist/dev/ui/menu/menu-separator.js.map +1 -1
  539. package/dist/dev/ui/menu/menu-trigger.d.ts +5 -2
  540. package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -1
  541. package/dist/dev/ui/menu/menu-trigger.js +85 -29
  542. package/dist/dev/ui/menu/menu-trigger.js.map +1 -1
  543. package/dist/dev/ui/menu/use-menu-group.js +31 -0
  544. package/dist/dev/ui/menu/use-menu-group.js.map +1 -0
  545. package/dist/dev/ui/playback-rate/index.d.ts +2 -0
  546. package/dist/dev/ui/playback-rate/index.js +2 -0
  547. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts +28 -0
  548. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts.map +1 -0
  549. package/dist/dev/ui/playback-rate/use-playback-rate-options.js +37 -0
  550. package/dist/dev/ui/playback-rate/use-playback-rate-options.js.map +1 -0
  551. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
  552. package/dist/dev/ui/playback-rate-button/playback-rate-button.js +2 -1
  553. package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  554. package/dist/dev/ui/poster/poster.d.ts.map +1 -1
  555. package/dist/dev/ui/poster/poster.js +17 -3
  556. package/dist/dev/ui/poster/poster.js.map +1 -1
  557. package/dist/dev/ui/quality/index.d.ts +2 -0
  558. package/dist/dev/ui/quality/index.js +2 -0
  559. package/dist/dev/ui/quality/use-quality-options.d.ts +27 -0
  560. package/dist/dev/ui/quality/use-quality-options.d.ts.map +1 -0
  561. package/dist/dev/ui/quality/use-quality-options.js +40 -0
  562. package/dist/dev/ui/quality/use-quality-options.js.map +1 -0
  563. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
  564. package/dist/dev/ui/seek-button/seek-button.js +3 -1
  565. package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
  566. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  567. package/dist/dev/ui/time/time-value.js +32 -5
  568. package/dist/dev/ui/time/time-value.js.map +1 -1
  569. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
  570. package/dist/dev/ui/time-slider/time-slider-root.js +18 -6
  571. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  572. package/dist/dev/ui/tooltip/context.d.ts +7 -3
  573. package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
  574. package/dist/dev/ui/tooltip/context.js.map +1 -1
  575. package/dist/dev/ui/tooltip/index.d.ts +2 -2
  576. package/dist/dev/ui/tooltip/index.parts.d.ts +3 -1
  577. package/dist/dev/ui/tooltip/index.parts.js +4 -0
  578. package/dist/dev/ui/tooltip/index.parts.js.map +1 -1
  579. package/dist/dev/ui/tooltip/tooltip-arrow.js +1 -1
  580. package/dist/dev/ui/tooltip/tooltip-label.d.ts +15 -0
  581. package/dist/dev/ui/tooltip/tooltip-label.d.ts.map +1 -0
  582. package/dist/dev/ui/tooltip/tooltip-label.js +24 -0
  583. package/dist/dev/ui/tooltip/tooltip-label.js.map +1 -0
  584. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  585. package/dist/dev/ui/tooltip/tooltip-popup.js +7 -3
  586. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  587. package/dist/dev/ui/tooltip/tooltip-root.js +1 -1
  588. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  589. package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts +15 -0
  590. package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts.map +1 -0
  591. package/dist/dev/ui/tooltip/tooltip-shortcut.js +25 -0
  592. package/dist/dev/ui/tooltip/tooltip-shortcut.js.map +1 -0
  593. package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts.map +1 -1
  594. package/dist/dev/ui/volume-indicator/volume-indicator-root.js +1 -1
  595. package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  596. package/dist/dev/utils/use-attach-iframe.js +14 -0
  597. package/dist/dev/utils/use-attach-iframe.js.map +1 -0
  598. package/dist/dev/utils/use-media-instance.d.ts +7 -2
  599. package/dist/dev/utils/use-media-instance.d.ts.map +1 -1
  600. package/dist/dev/utils/use-media-instance.js +11 -3
  601. package/dist/dev/utils/use-media-instance.js.map +1 -1
  602. package/dist/dev/utils/use-render.d.ts.map +1 -1
  603. package/dist/dev/utils/use-render.js +1 -1
  604. package/dist/dev/utils/use-render.js.map +1 -1
  605. package/docs/README.md +1 -1
  606. package/docs/concepts/browser-support.md +1 -1
  607. package/docs/concepts/cast.md +162 -0
  608. package/docs/concepts/features.md +1 -1
  609. package/docs/concepts/overview.md +4 -4
  610. package/docs/concepts/presets.md +32 -6
  611. package/docs/concepts/skins.md +903 -318
  612. package/docs/concepts/why-videojs.md +1 -1
  613. package/docs/how-to/build-with-ai.md +7 -7
  614. package/docs/how-to/build-your-own-component.md +3 -3
  615. package/docs/how-to/customize-skins.md +2721 -847
  616. package/docs/how-to/installation.md +10 -10
  617. package/docs/llms.txt +23 -1
  618. package/docs/reference/airplay-button.md +264 -0
  619. package/docs/reference/audio-track-radio-group.md +59 -0
  620. package/docs/reference/background-video.md +76 -0
  621. package/docs/reference/captions-button.md +16 -0
  622. package/docs/reference/cast-button.md +236 -0
  623. package/docs/reference/dash-video.md +138 -0
  624. package/docs/reference/feature-audio-track.md +60 -0
  625. package/docs/reference/feature-fullscreen.md +20 -3
  626. package/docs/reference/feature-orientation-lock.md +35 -0
  627. package/docs/reference/feature-quality.md +70 -0
  628. package/docs/reference/feature-remote-playback.md +3 -1
  629. package/docs/reference/feature-text-tracks.md +10 -0
  630. package/docs/reference/hlsjs-video.md +274 -0
  631. package/docs/reference/menu.md +1194 -0
  632. package/docs/reference/mux-audio.md +218 -0
  633. package/docs/reference/mux-video.md +275 -0
  634. package/docs/reference/native-hls-video.md +212 -0
  635. package/docs/reference/play-button.md +1 -1
  636. package/docs/reference/playback-rate-button.md +16 -0
  637. package/docs/reference/player-container.md +9 -3
  638. package/docs/reference/player-provider.md +3 -1
  639. package/docs/reference/quality-radio-group.md +59 -0
  640. package/docs/reference/simple-hls-audio-only.md +93 -0
  641. package/docs/reference/simple-hls-video.md +150 -0
  642. package/docs/reference/time-slider.md +12 -0
  643. package/docs/reference/time.md +24 -0
  644. package/docs/reference/tooltip.md +89 -5
  645. package/docs/reference/use-media-attach.md +2 -2
  646. package/docs/reference/use-media.md +103 -2
  647. package/docs/reference/use-player-context.md +1 -1
  648. package/docs/reference/use-player.md +16 -1
  649. package/docs/reference/use-selector.md +1 -1
  650. package/docs/reference/use-snapshot.md +3 -3
  651. package/docs/reference/volume-slider.md +1 -1
  652. package/package.json +7 -7
  653. package/dist/default/media/hls-video/index.js.map +0 -1
  654. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +0 -12
  655. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +0 -1
  656. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +0 -13
  657. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +0 -1
  658. package/dist/default/ui/hotkey/use-aria-key-shortcuts.js +0 -16
  659. package/dist/default/ui/hotkey/use-aria-key-shortcuts.js.map +0 -1
  660. package/dist/default/ui/menu/menu-label.js +0 -23
  661. package/dist/default/ui/menu/menu-label.js.map +0 -1
  662. package/dist/default/ui/playback-rate-menu/context.js +0 -20
  663. package/dist/default/ui/playback-rate-menu/context.js.map +0 -1
  664. package/dist/default/ui/playback-rate-menu/index.js +0 -3
  665. package/dist/default/ui/playback-rate-menu/index.parts.js +0 -17
  666. package/dist/default/ui/playback-rate-menu/index.parts.js.map +0 -1
  667. package/dist/default/ui/playback-rate-menu/playback-rate-menu-content.js +0 -28
  668. package/dist/default/ui/playback-rate-menu/playback-rate-menu-content.js.map +0 -1
  669. package/dist/default/ui/playback-rate-menu/playback-rate-menu-root.js +0 -36
  670. package/dist/default/ui/playback-rate-menu/playback-rate-menu-root.js.map +0 -1
  671. package/dist/default/ui/playback-rate-menu/playback-rate-menu-trigger.js +0 -51
  672. package/dist/default/ui/playback-rate-menu/playback-rate-menu-trigger.js.map +0 -1
  673. package/dist/default/ui/playback-rate-menu/use-playback-rate-menu.js +0 -27
  674. package/dist/default/ui/playback-rate-menu/use-playback-rate-menu.js.map +0 -1
  675. package/dist/dev/media/hls-video/index.d.ts +0 -15
  676. package/dist/dev/media/hls-video/index.d.ts.map +0 -1
  677. package/dist/dev/media/hls-video/index.js.map +0 -1
  678. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +0 -12
  679. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +0 -1
  680. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +0 -13
  681. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +0 -1
  682. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts +0 -5
  683. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts.map +0 -1
  684. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js +0 -16
  685. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js.map +0 -1
  686. package/dist/dev/ui/menu/menu-label.d.ts +0 -15
  687. package/dist/dev/ui/menu/menu-label.d.ts.map +0 -1
  688. package/dist/dev/ui/menu/menu-label.js +0 -23
  689. package/dist/dev/ui/menu/menu-label.js.map +0 -1
  690. package/dist/dev/ui/playback-rate-menu/context.js +0 -20
  691. package/dist/dev/ui/playback-rate-menu/context.js.map +0 -1
  692. package/dist/dev/ui/playback-rate-menu/index.d.ts +0 -3
  693. package/dist/dev/ui/playback-rate-menu/index.js +0 -3
  694. package/dist/dev/ui/playback-rate-menu/index.parts.d.ts +0 -12
  695. package/dist/dev/ui/playback-rate-menu/index.parts.d.ts.map +0 -1
  696. package/dist/dev/ui/playback-rate-menu/index.parts.js +0 -17
  697. package/dist/dev/ui/playback-rate-menu/index.parts.js.map +0 -1
  698. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.d.ts +0 -14
  699. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.d.ts.map +0 -1
  700. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.js +0 -28
  701. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-content.js.map +0 -1
  702. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.d.ts +0 -23
  703. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.d.ts.map +0 -1
  704. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.js +0 -39
  705. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-root.js.map +0 -1
  706. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.d.ts +0 -14
  707. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.d.ts.map +0 -1
  708. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.js +0 -51
  709. package/dist/dev/ui/playback-rate-menu/playback-rate-menu-trigger.js.map +0 -1
  710. package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.d.ts +0 -26
  711. package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.d.ts.map +0 -1
  712. package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.js +0 -27
  713. package/dist/dev/ui/playback-rate-menu/use-playback-rate-menu.js.map +0 -1
@@ -34,6 +34,7 @@
34
34
  --media-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
35
35
  --media-current-shadow-color-subtle: oklch(from var(--media-current-shadow-color) l c h / calc(alpha * 0.4));
36
36
  --media-icon-size: 18px;
37
+ --media-color-scrollbar-thumb: oklch(from currentColor l c h / 0.3);
37
38
  position: relative;
38
39
  display: block;
39
40
  width: 100%;
@@ -52,6 +53,8 @@
52
53
  letter-spacing: normal;
53
54
  outline: 2px solid transparent;
54
55
  outline-offset: -4px;
56
+ scrollbar-color: var(--media-color-scrollbar-thumb) transparent;
57
+ scrollbar-width: thin;
55
58
  border-radius: var(--media-border-radius, 0.75rem);
56
59
  isolation: isolate;
57
60
  transition-timing-function: ease-out;
@@ -62,6 +65,16 @@
62
65
  outline-color: currentColor;
63
66
  outline-offset: 2px;
64
67
  }
68
+
69
+ &::-webkit-scrollbar-thumb {
70
+ background: var(--media-color-scrollbar-thumb);
71
+ border-radius: 9999px;
72
+ }
73
+
74
+ @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
75
+ --media-color-scrollbar-thumb: oklch(from currentColor l c h / 0.8);
76
+ scrollbar-width: auto;
77
+ }
65
78
  }
66
79
 
67
80
  /* ==========================================================================
@@ -115,6 +128,12 @@
115
128
  opacity: 1;
116
129
  }
117
130
 
131
+ .media-minimal-skin .media-buffering-indicator[data-visible] ~ .media-overlay {
132
+ background: oklch(0 0 0 / 0.35);
133
+ opacity: 1;
134
+ backdrop-filter: blur(8px);
135
+ }
136
+
118
137
  .media-minimal-skin .media-error[data-open] ~ .media-overlay {
119
138
  backdrop-filter: blur(16px) saturate(1.2);
120
139
  }
@@ -126,9 +145,9 @@
126
145
  .media-minimal-skin .media-buffering-indicator {
127
146
  position: absolute;
128
147
  inset: 0;
148
+ z-index: 10;
129
149
  display: none;
130
- align-items: center;
131
- justify-content: center;
150
+ place-content: center;
132
151
  color: oklch(1 0 0);
133
152
  pointer-events: none;
134
153
 
@@ -137,7 +156,7 @@
137
156
  }
138
157
 
139
158
  &[data-visible] {
140
- display: flex;
159
+ display: grid;
141
160
  }
142
161
  }
143
162
 
@@ -208,6 +227,26 @@
208
227
  font-variant-numeric: tabular-nums;
209
228
  }
210
229
 
230
+ .media-minimal-skin .media-time[role="button"] {
231
+ cursor: pointer;
232
+ outline: 2px solid transparent;
233
+ outline-offset: -2px;
234
+ border-radius: 0.25rem;
235
+ transition-timing-function: ease-out;
236
+ transition-duration: 100ms;
237
+ transition-property: outline-color, outline-offset;
238
+
239
+ @supports (corner-shape: squircle) {
240
+ border-radius: 1rem;
241
+ corner-shape: squircle;
242
+ }
243
+
244
+ &:focus-visible {
245
+ outline-color: currentColor;
246
+ outline-offset: 2px;
247
+ }
248
+ }
249
+
211
250
  .media-minimal-skin .media-time--current,
212
251
  .media-minimal-skin .media-time-separator {
213
252
  display: none;
@@ -315,6 +354,10 @@
315
354
  scale: 0.9;
316
355
  }
317
356
 
357
+ & .media-icon__container {
358
+ display: grid;
359
+ }
360
+
318
361
  & .media-icon {
319
362
  grid-area: 1 / 1;
320
363
  transition-behavior: allow-discrete;
@@ -332,8 +375,9 @@
332
375
  right: -1px;
333
376
  bottom: -3px;
334
377
  font-size: 10px; /* Hard coded due to size limitations. */
335
- font-weight: 480;
378
+ font-weight: 500;
336
379
  font-variant-numeric: tabular-nums;
380
+ letter-spacing: -0.05em;
337
381
  }
338
382
 
339
383
  &:has(.media-icon--flipped) .media-icon__label {
@@ -357,6 +401,27 @@
357
401
  }
358
402
  }
359
403
 
404
+ /* Settings button */
405
+ .media-minimal-skin .media-button--settings {
406
+ display: none;
407
+
408
+ & .media-icon--settings {
409
+ transition: transform 150ms ease-in-out;
410
+
411
+ @media (prefers-reduced-motion: reduce) {
412
+ transition-duration: 0ms;
413
+ }
414
+ }
415
+
416
+ &[aria-expanded="true"] .media-icon--settings {
417
+ transform: rotate(90deg);
418
+ }
419
+ }
420
+
421
+ .media-minimal-skin .media-button-group:has([data-availability="available"]) .media-button--settings {
422
+ display: grid;
423
+ }
424
+
360
425
  /* Live button — wide pill button with a status dot (gray → red at the live
361
426
  edge) rendered via ::before, and "LIVE" text rendered as the button's own
362
427
  text content. */
@@ -403,6 +468,21 @@
403
468
  }
404
469
  }
405
470
 
471
+ /* ==========================================================================
472
+ Badge
473
+ ========================================================================== */
474
+
475
+ .media-minimal-skin .media-badge {
476
+ padding: 0.25rem 0.375rem;
477
+ font-size: 0.6875rem;
478
+ font-weight: 500;
479
+ line-height: 1;
480
+ color: oklch(from currentColor l c h / 0.85);
481
+ white-space: nowrap;
482
+ background-color: oklch(from currentColor l c h / 0.1);
483
+ border-radius: 0.25rem;
484
+ }
485
+
406
486
  /* ==========================================================================
407
487
  Icons
408
488
  ========================================================================== */
@@ -410,6 +490,7 @@
410
490
  .media-minimal-skin .media-icon__container {
411
491
  position: relative;
412
492
  }
493
+
413
494
  .media-minimal-skin .media-icon {
414
495
  flex-shrink: 0;
415
496
  width: var(--media-icon-size);
@@ -433,7 +514,8 @@
433
514
  transition: opacity 0.25s;
434
515
  }
435
516
  .media-minimal-skin media-poster:not([data-visible]),
436
- .media-minimal-skin > img:not([data-visible]) {
517
+ .media-minimal-skin > img:not([data-visible]),
518
+ .media-minimal-skin > img[data-visible]:not([data-loaded]) {
437
519
  opacity: 0;
438
520
  }
439
521
  .media-minimal-skin media-poster ::slotted(img),
@@ -452,6 +534,30 @@
452
534
  border-radius: inherit;
453
535
  }
454
536
 
537
+ /* Blurred placeholder: HTML path targets media-poster::before, React path targets the skin container::before */
538
+ .media-minimal-skin media-poster::before,
539
+ .media-minimal-skin::before {
540
+ position: absolute;
541
+ inset: 0;
542
+ pointer-events: none;
543
+ content: "";
544
+ background-image: var(--media-poster-placeholder, none);
545
+ background-repeat: no-repeat;
546
+ background-position: var(--media-object-position, center);
547
+ background-size: var(--media-object-fit, contain);
548
+ filter: blur(var(--media-poster-placeholder-blur, 20px));
549
+ }
550
+
551
+ /* React path: hidden by default, transitions in while poster loads */
552
+ .media-minimal-skin::before {
553
+ opacity: 0;
554
+ transition: opacity 0.25s;
555
+ }
556
+ /* Show placeholder while the poster is visible but not yet loaded */
557
+ .media-minimal-skin:has(img[data-visible]:not([data-loaded]))::before {
558
+ opacity: 1;
559
+ }
560
+
455
561
  .media-minimal-skin:fullscreen media-poster ::slotted(img),
456
562
  .media-minimal-skin:fullscreen media-poster img,
457
563
  .media-minimal-skin:fullscreen > img {
@@ -459,22 +565,23 @@
459
565
  }
460
566
 
461
567
  /* ==========================================================================
462
- Media preview
568
+ Media thumbnail
463
569
  ========================================================================== */
464
- .media-minimal-skin .media-preview {
570
+
571
+ .media-minimal-skin .media-thumbnail {
465
572
  pointer-events: none;
466
573
 
467
- & .media-preview__thumbnail-wrapper {
574
+ & .media-thumbnail__image-wrapper {
468
575
  position: relative;
469
576
  background-color: oklch(0 0 0 / 0.9);
470
577
  border-radius: 0.5rem;
471
578
  }
472
- & .media-preview__thumbnail {
579
+ & .media-thumbnail__image {
473
580
  display: block;
474
581
  border-radius: inherit;
475
582
  }
476
583
 
477
- & .media-preview__time {
584
+ & .media-thumbnail__time {
478
585
  display: block;
479
586
  margin-top: 0.5rem;
480
587
  text-align: center;
@@ -484,7 +591,7 @@
484
591
  opacity: 1;
485
592
  }
486
593
 
487
- & .media-preview__spinner {
594
+ & .media-thumbnail__spinner {
488
595
  position: absolute;
489
596
  top: 50%;
490
597
  left: 50%;
@@ -492,22 +599,22 @@
492
599
  translate: -50% -50%;
493
600
  }
494
601
 
495
- & .media-preview__thumbnail,
496
- & .media-preview__spinner {
602
+ & .media-thumbnail__image,
603
+ & .media-thumbnail__spinner {
497
604
  transition: opacity 150ms ease-out;
498
605
  }
499
606
 
500
- &:not(:has(.media-preview__thumbnail[data-loading])) {
501
- & .media-preview__spinner {
607
+ &:not(:has(.media-thumbnail__image[data-loading])) {
608
+ & .media-thumbnail__spinner {
502
609
  --media-spinner-animation: none;
503
610
  }
504
611
  }
505
612
 
506
- &:has(.media-preview__thumbnail[data-loading]) {
507
- & .media-preview__thumbnail {
613
+ &:has(.media-thumbnail__image[data-loading]) {
614
+ & .media-thumbnail__image {
508
615
  opacity: 0;
509
616
  }
510
- & .media-preview__spinner {
617
+ & .media-thumbnail__spinner {
511
618
  opacity: 1;
512
619
  }
513
620
  }
@@ -571,7 +678,7 @@
571
678
  background-color: currentColor;
572
679
  border-radius: calc(infinity * 1px);
573
680
  box-shadow:
574
- 0 0 0 1px var(--media-current-shadow-color-subtle, oklch(0 0 0 / 0.1)),
681
+ 0 0 0 1px var(--media-current-shadow-color, oklch(0 0 0 / 0.15)),
575
682
  0 1px 3px 0 oklch(0 0 0 / 0.15),
576
683
  0 1px 2px -1px oklch(0 0 0 / 0.15);
577
684
  opacity: 0;
@@ -605,6 +712,53 @@
605
712
  scale: 1;
606
713
  }
607
714
 
715
+ /* Preview */
716
+ .media-minimal-skin .media-slider__preview {
717
+ & .media-slider__value,
718
+ &::before {
719
+ opacity: 0;
720
+ scale: 0.5;
721
+ transition-timing-function: ease-out;
722
+ transition-duration: 200ms;
723
+ transition-property: opacity, scale;
724
+ }
725
+
726
+ & .media-slider__value {
727
+ position: absolute;
728
+ bottom: 1.5rem;
729
+ text-shadow: 0 1px 0 var(--media-current-shadow-color);
730
+ filter: blur(8px);
731
+ translate: -50% 0.5rem;
732
+ transition-property: filter, opacity, scale, translate;
733
+ }
734
+
735
+ &::before {
736
+ display: block;
737
+ content: "";
738
+ background-color: oklch(from currentColor l c h / 0.35);
739
+ }
740
+
741
+ &[data-pointing] .media-slider__value,
742
+ &[data-pointing]:not([data-dragging])::before {
743
+ opacity: 1;
744
+ scale: 1;
745
+ }
746
+ &[data-pointing] .media-slider__value {
747
+ filter: blur(0);
748
+ translate: -50% 0;
749
+ }
750
+
751
+ &[data-orientation="horizontal"]::before {
752
+ min-width: 1px;
753
+ height: 1.25rem;
754
+ }
755
+
756
+ &[data-orientation="vertical"]::before {
757
+ width: 1.25rem;
758
+ min-height: 1px;
759
+ }
760
+ }
761
+
608
762
  /* Shared track fills */
609
763
  .media-minimal-skin .media-slider__buffer,
610
764
  .media-minimal-skin .media-slider__fill {
@@ -676,37 +830,52 @@
676
830
  Popups & Animations
677
831
  ========================================================================== */
678
832
 
833
+ .media-minimal-skin {
834
+ --media-popup-transition:
835
+ opacity var(--media-popup-transition-timing-function) var(--media-popup-transition-duration),
836
+ filter var(--media-popup-transition-timing-function) var(--media-popup-transition-duration),
837
+ transform var(--media-popup-transition-timing-function) var(--media-popup-transition-duration),
838
+ scale var(--media-popup-transition-timing-function) var(--media-popup-transition-duration);
839
+ }
840
+
679
841
  .media-minimal-skin .media-popover,
680
842
  .media-minimal-skin .media-tooltip {
843
+ --popup-translate-distance: 0.5rem;
681
844
  margin: 0;
682
845
  overflow: visible;
683
846
  color: inherit;
684
847
  border: 0;
685
- transition-timing-function: var(--media-popup-transition-timing-function);
686
- transition-duration: var(--media-popup-transition-duration);
687
- transition-property: scale, opacity, filter;
848
+ transition: var(--media-popup-transition);
688
849
 
689
850
  &[data-starting-style],
690
851
  &[data-ending-style] {
691
852
  opacity: 0;
692
- filter: blur(8px);
693
- scale: 0.5;
853
+ filter: blur(4px);
854
+ /* We have to use transform here for translate as the translate property is used for positioning by core. */
855
+ transform: translate(var(--popup-translate-x-distance, 0), var(--popup-translate-y-distance, 0));
856
+ scale: 0.95;
694
857
  }
695
858
 
696
- &[data-instant] {
697
- transition-duration: 0ms;
859
+ &[data-ending-style] {
860
+ transform: none;
861
+ /* Speed up the exit transition. */
862
+ transition-duration: max(0ms, calc(var(--media-popup-transition-duration) - 50ms));
698
863
  }
699
864
 
700
865
  &[data-side="top"] {
866
+ --popup-translate-y-distance: var(--popup-translate-distance);
701
867
  transform-origin: bottom;
702
868
  }
703
869
  &[data-side="bottom"] {
870
+ --popup-translate-y-distance: calc(var(--popup-translate-distance) * -1);
704
871
  transform-origin: top;
705
872
  }
706
873
  &[data-side="left"] {
874
+ --popup-translate-x-distance: var(--popup-translate-distance);
707
875
  transform-origin: right;
708
876
  }
709
877
  &[data-side="right"] {
878
+ --popup-translate-x-distance: calc(var(--popup-translate-distance) * -1);
710
879
  transform-origin: left;
711
880
  }
712
881
 
@@ -762,10 +931,17 @@
762
931
  border-radius: 0.5rem;
763
932
  box-shadow:
764
933
  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);
934
+ 0 4px 6px -1px oklch(0 0 0 / 0.2),
935
+ 0 2px 4px -2px oklch(0 0 0 / 0.2);
767
936
  backdrop-filter: var(--media-tooltip-backdrop-filter);
768
937
 
938
+ /* `display: flex` must not apply while closed — it overrides UA `[popover]` hiding. */
939
+ &[data-open] {
940
+ display: flex;
941
+ column-gap: 0.25rem;
942
+ align-items: center;
943
+ }
944
+
769
945
  &[data-side="top"]::before,
770
946
  &[data-side="bottom"]::before {
771
947
  height: var(--media-tooltip-side-offset);
@@ -774,6 +950,19 @@
774
950
  &[data-side="right"]::before {
775
951
  width: var(--media-tooltip-side-offset);
776
952
  }
953
+
954
+ & .media-tooltip__kbd {
955
+ min-width: 1.5em;
956
+ padding: 0.1em;
957
+ margin-right: -0.25rem;
958
+ font-family: inherit;
959
+ font-size: 90%;
960
+ font-weight: 600;
961
+ line-height: 1.25;
962
+ text-align: center;
963
+ background-color: oklch(from currentColor l c h / 0.15);
964
+ border-radius: 0.25rem;
965
+ }
777
966
  }
778
967
 
779
968
  .media-minimal-skin .media-popover--volume:has(media-volume-slider[data-availability="unsupported"]) {
@@ -785,72 +974,232 @@
785
974
  Note: Menus use `.media-popover` styles for positioning and transitions.
786
975
  ========================================================================== */
787
976
 
788
- .media-minimal-skin .media-popover.media-menu {
977
+ .media-minimal-skin .media-menu {
978
+ --menu-transition-duration: 250ms;
979
+ --menu-max-height: 14rem;
980
+ --menu-padding: 0.5rem;
981
+ --menu-border-radius: 1rem;
982
+ --menu-item-border-radius: calc(var(--menu-border-radius) - var(--menu-padding));
789
983
  box-sizing: border-box;
790
- min-width: min(6rem, var(--media-popover-available-width, 6rem));
791
984
  max-width: var(--media-popover-available-width, none);
792
- max-height: var(--media-popover-available-height, none);
793
- padding: 0.25rem;
985
+ max-height: min(var(--media-popover-available-height, var(--menu-max-height)), var(--menu-max-height));
986
+ padding: var(--menu-padding);
794
987
  overflow: auto;
795
988
  overscroll-behavior: none;
796
- background-color: var(--media-tooltip-background-color);
797
- border-radius: 0.75rem;
989
+ background-color: var(--media-popover-background-color);
990
+ border-radius: var(--menu-border-radius);
798
991
  box-shadow:
799
- 0 0 0 1px var(--media-tooltip-border-color),
992
+ 0 0 0 1px var(--media-popover-border-color),
800
993
  0 4px 6px -1px oklch(0 0 0 / 0.1),
801
994
  0 2px 4px -2px oklch(0 0 0 / 0.1);
802
- backdrop-filter: var(--media-tooltip-backdrop-filter);
995
+ backdrop-filter: var(--media-popover-backdrop-filter);
803
996
 
804
- &::before {
805
- display: none;
997
+ @media (prefers-reduced-motion: reduce) {
998
+ --menu-transition-duration: 0ms;
806
999
  }
807
- }
808
1000
 
809
- .media-minimal-skin .media-popover.media-menu .media-menu__group {
810
- display: flex;
811
- flex-direction: column;
812
- gap: 0.125rem;
813
- }
1001
+ & .media-menu__panel {
1002
+ position: absolute;
1003
+ inset: 0;
1004
+ padding: var(--menu-padding);
1005
+ overflow: auto;
1006
+ overscroll-behavior: none;
1007
+ outline: none;
1008
+ translate: 0 0;
1009
+ transition-timing-function: ease-in-out;
1010
+ transition-duration: var(--menu-transition-duration);
1011
+ transition-property: translate, filter;
1012
+ will-change: translate, filter;
1013
+
1014
+ &[data-starting-style],
1015
+ &[data-ending-style] {
1016
+ overflow: hidden;
1017
+ }
814
1018
 
815
- .media-minimal-skin .media-popover.media-menu .media-menu__item {
816
- display: flex;
817
- gap: 0.5rem;
818
- align-items: center;
819
- justify-content: space-between;
820
- min-height: 2rem;
821
- padding: 0 0.625rem;
822
- font-variant-numeric: tabular-nums;
823
- color: inherit;
824
- cursor: pointer;
825
- outline: 2px solid transparent;
826
- outline-offset: -2px;
827
- border-radius: 0.5rem;
1019
+ /* Root settings view — slides out when a submenu is active */
1020
+ &[data-menu-root-view][data-menu-view-state="inactive"] {
1021
+ filter: blur(8px);
1022
+ translate: -100% 0;
828
1023
 
829
- &:hover,
830
- &[data-highlighted] {
831
- background-color: oklch(from currentColor l c h / 0.1);
1024
+ /* Hide the indicator while transitioning */
1025
+ & .media-menu__group::before {
1026
+ display: none;
1027
+ }
1028
+ }
1029
+
1030
+ /* Submenu panels — slide in/out alongside the root view */
1031
+ &[data-submenu] {
1032
+ z-index: 10;
1033
+
1034
+ &:not([data-open], [data-ending-style]) {
1035
+ translate: -100% 0;
1036
+ transition-property: none;
1037
+ }
1038
+
1039
+ &[data-starting-style],
1040
+ &[data-ending-style] {
1041
+ pointer-events: none;
1042
+ filter: blur(8px);
1043
+ }
1044
+
1045
+ &[data-starting-style][data-direction="forward"],
1046
+ &[data-ending-style][data-direction="back"] {
1047
+ translate: 100% 0;
1048
+ }
1049
+
1050
+ &[data-ending-style][data-direction="forward"],
1051
+ &[data-starting-style][data-direction="back"] {
1052
+ translate: -100% 0;
1053
+ }
1054
+ }
832
1055
  }
833
1056
 
834
- &:focus-visible {
835
- outline-color: currentColor;
836
- outline-offset: 2px;
1057
+ & .media-menu__separator {
1058
+ margin: 0.25rem 0;
1059
+ border-bottom: 1px solid oklch(1 0 0 / 0.1);
837
1060
  }
838
1061
 
839
- &[aria-disabled="true"] {
840
- pointer-events: none;
841
- cursor: not-allowed;
842
- opacity: 0.5;
1062
+ & .media-menu__group {
1063
+ display: flex;
1064
+ flex-direction: column;
1065
+ gap: 0.125rem;
1066
+
1067
+ @supports (top: anchor(top)) {
1068
+ &::before {
1069
+ position: absolute;
1070
+ position-anchor: --media-menu-item-highlight-anchor;
1071
+ inset: anchor(inside);
1072
+ pointer-events: none;
1073
+ content: "";
1074
+ background-color: oklch(from currentColor l c h / 0.1);
1075
+ border-radius: var(--menu-item-border-radius);
1076
+ transition: inset ease-in-out 100ms;
1077
+ }
1078
+ }
843
1079
  }
844
- }
845
1080
 
846
- .media-minimal-skin .media-popover.media-menu .media-menu__indicator {
847
- flex-shrink: 0;
848
- margin-right: -0.25rem;
849
- opacity: 0;
850
- }
1081
+ & .media-menu__item,
1082
+ & .media-menu__back {
1083
+ display: flex;
1084
+ gap: 0.375rem;
1085
+ align-items: center;
1086
+ padding: 0.375rem 0.5rem;
1087
+ text-align: left;
1088
+ text-shadow: 0 1px 0 var(--media-current-shadow-color);
1089
+ cursor: pointer;
1090
+ user-select: none;
1091
+ outline: 2px solid transparent;
1092
+ outline-offset: -2px;
1093
+ border-radius: var(--menu-item-border-radius);
1094
+ transition: background-color, color;
1095
+ transition-timing-function: ease-out;
1096
+ transition-duration: 100ms;
851
1097
 
852
- .media-minimal-skin .media-popover.media-menu .media-menu__item[aria-checked="true"] .media-menu__indicator {
853
- opacity: 1;
1098
+ &:focus-visible {
1099
+ outline-color: currentColor;
1100
+ outline-offset: 2px;
1101
+ }
1102
+
1103
+ &:hover,
1104
+ &[data-highlighted] {
1105
+ background-color: oklch(from currentColor l c h / 0.1);
1106
+
1107
+ @supports (top: anchor(top)) {
1108
+ anchor-name: --media-menu-item-highlight-anchor;
1109
+ background-color: transparent;
1110
+ }
1111
+ }
1112
+
1113
+ & .media-icon {
1114
+ flex-shrink: 0;
1115
+ color: oklch(from currentColor l c h / 0.5);
1116
+ filter: drop-shadow(0 1px 0 var(--media-current-shadow-color));
1117
+ }
1118
+ }
1119
+
1120
+ & .media-menu__indicator {
1121
+ flex-shrink: 0;
1122
+ margin-right: -0.25rem;
1123
+ margin-left: auto;
1124
+ opacity: 0;
1125
+ }
1126
+
1127
+ & .media-menu__item {
1128
+ justify-content: space-between;
1129
+ font-variant-numeric: tabular-nums;
1130
+ color: inherit;
1131
+
1132
+ &[aria-disabled="true"] {
1133
+ pointer-events: none;
1134
+ cursor: not-allowed;
1135
+ opacity: 0.5;
1136
+ }
1137
+
1138
+ &[aria-checked="true"] .media-menu__indicator {
1139
+ opacity: 1;
1140
+ }
1141
+
1142
+ &[data-availability="unavailable"],
1143
+ &[data-availability="unsupported"] {
1144
+ display: none;
1145
+ }
1146
+ }
1147
+
1148
+ & .media-menu__tier {
1149
+ padding-top: 1px;
1150
+ padding-left: 0.125rem;
1151
+ font-size: 0.5625rem;
1152
+ font-weight: 600;
1153
+ line-height: 1;
1154
+ color: oklch(from currentColor l c h / 0.7);
1155
+ }
1156
+
1157
+ & .media-menu__back {
1158
+ width: 100%;
1159
+ margin-bottom: 0.125rem;
1160
+ }
1161
+
1162
+ & .media-menu__hint {
1163
+ display: inline-flex;
1164
+ gap: 0.25rem;
1165
+ align-items: center;
1166
+ min-width: 0;
1167
+ padding-left: 0.5rem;
1168
+ margin-left: auto;
1169
+ font-size: 0.75rem;
1170
+ color: oklch(from currentColor l c h / 0.65);
1171
+ }
1172
+
1173
+ & .media-menu__hint-label {
1174
+ max-width: 6rem;
1175
+ overflow: hidden;
1176
+ text-overflow: ellipsis;
1177
+ white-space: nowrap;
1178
+ }
1179
+
1180
+ & .media-menu__chevron {
1181
+ width: 0.875rem;
1182
+ height: 0.875rem;
1183
+ }
1184
+
1185
+ /* Settings menu */
1186
+ &.media-menu--settings {
1187
+ width: var(--media-menu-width);
1188
+ min-width: 12rem;
1189
+ height: var(--media-menu-height);
1190
+ overflow: hidden;
1191
+ /* Add height and width transitions. */
1192
+ transition:
1193
+ var(--media-popup-transition),
1194
+ height var(--media-popup-transition-timing-function) var(--menu-transition-duration),
1195
+ width var(--media-popup-transition-timing-function) var(--menu-transition-duration);
1196
+
1197
+ /* Don't transition width and height on open/close. */
1198
+ &[data-starting-style],
1199
+ &[data-ending-style] {
1200
+ transition: var(--media-popup-transition);
1201
+ }
1202
+ }
854
1203
  }
855
1204
 
856
1205
  /* ==========================================================================
@@ -883,8 +1232,8 @@
883
1232
  }
884
1233
 
885
1234
  /* ==========================================================================
886
- Input Feedback
887
- ========================================================================== */
1235
+ Input Feedback
1236
+ ========================================================================== */
888
1237
 
889
1238
  .media-minimal-skin .media-input-feedback {
890
1239
  position: absolute;
@@ -1000,125 +1349,125 @@
1000
1349
  border-radius: calc(Infinity * 1px);
1001
1350
  box-shadow: 0 1px 0 var(--media-current-shadow-color-subtle);
1002
1351
  }
1003
- }
1004
1352
 
1005
- .media-minimal-skin .media-input-feedback-island--volume[data-level="high"] .media-icon--volume-high,
1006
- .media-minimal-skin .media-input-feedback-island--volume[data-level="low"] .media-icon--volume-low,
1007
- .media-minimal-skin .media-input-feedback-island--volume[data-level="off"] .media-icon--volume-off {
1008
- display: block;
1009
- }
1353
+ &[data-level="high"] .media-icon--volume-high,
1354
+ &[data-level="low"] .media-icon--volume-low,
1355
+ &[data-level="off"] .media-icon--volume-off {
1356
+ display: block;
1357
+ }
1010
1358
 
1011
- .media-minimal-skin .media-input-feedback-island--status[data-status="captions-on"] .media-icon--captions-on,
1012
- .media-minimal-skin .media-input-feedback-island--status[data-status="captions-off"] .media-icon--captions-off,
1013
- .media-minimal-skin .media-input-feedback-island--status[data-status="fullscreen"] .media-icon--fullscreen-enter,
1014
- .media-minimal-skin .media-input-feedback-island--status[data-status="exit-fullscreen"] .media-icon--fullscreen-exit,
1015
- .media-minimal-skin .media-input-feedback-island--status[data-status="pip"] .media-icon--pip-enter,
1016
- .media-minimal-skin .media-input-feedback-island--status[data-status="exit-pip"] .media-icon--pip-exit {
1017
- display: block;
1359
+ @media (prefers-reduced-motion: no-preference) {
1360
+ &[data-min] .media-input-feedback-island__content,
1361
+ &[data-max] .media-input-feedback-island__content {
1362
+ animation: media-shake 300ms ease-in-out;
1363
+ }
1364
+ }
1018
1365
  }
1019
1366
 
1020
- /* --- Boundary shake ------------------------------------------------------- */
1021
-
1022
- @media (prefers-reduced-motion: no-preference) {
1023
- .media-minimal-skin .media-input-feedback-island--volume[data-min] .media-input-feedback-island__content,
1024
- .media-minimal-skin .media-input-feedback-island--volume[data-max] .media-input-feedback-island__content {
1025
- animation: media-shake 300ms ease-in-out;
1367
+ .media-minimal-skin .media-input-feedback-island--status {
1368
+ &[data-status="captions-on"] .media-icon--captions-on,
1369
+ &[data-status="captions-off"] .media-icon--captions-off,
1370
+ &[data-status="fullscreen"] .media-icon--fullscreen-enter,
1371
+ &[data-status="exit-fullscreen"] .media-icon--fullscreen-exit,
1372
+ &[data-status="pip"] .media-icon--pip-enter,
1373
+ &[data-status="exit-pip"] .media-icon--pip-exit {
1374
+ display: block;
1026
1375
  }
1027
1376
  }
1028
1377
 
1029
1378
  /* --- Bubble ---------------------------------------------------------------- */
1030
1379
 
1031
1380
  .media-minimal-skin .media-input-feedback-bubble {
1032
- display: flex;
1033
- flex-direction: column;
1381
+ display: grid;
1034
1382
  grid-row: 1;
1035
- grid-column: 2; /* default to center for status bubbles and undirected seeks */
1036
- align-items: center;
1037
- justify-content: center;
1383
+ grid-column: 2;
1384
+ place-content: center;
1038
1385
  padding: 1rem;
1039
- transition: opacity 250ms ease-out;
1040
-
1041
- @container media-root (width > 24rem) {
1042
- padding: 2rem;
1043
- }
1386
+ text-align: center;
1044
1387
 
1045
- &[data-starting-style],
1046
- &[data-ending-style] {
1047
- opacity: 0;
1048
- transition-timing-function: ease-in;
1388
+ /* Central bubble (play, pause) */
1389
+ &:not([data-direction]) {
1390
+ transition-timing-function: ease-out;
1049
1391
  transition-duration: 200ms;
1050
- }
1051
- }
1052
- /* Direction placement — seek bubbles move to the side implied by their direction. */
1053
- .media-minimal-skin .media-input-feedback-bubble[data-direction="backward"] {
1054
- grid-column: 1;
1055
- justify-self: left;
1056
- }
1392
+ transition-property: opacity, scale;
1057
1393
 
1058
- .media-minimal-skin .media-input-feedback-bubble:not([data-direction]) {
1059
- grid-column: 2;
1060
- transition-timing-function:
1061
- ease-out, linear(0, 0.12 1.5%, 1.35 9.7%, 2.2 13.9%, 3 19.9%, 2.7 21.8%, 0.62 37.5%, 0.96 50.9%, 1);
1062
- transition-duration: 600ms;
1063
- transition-property: opacity, scale;
1394
+ &[data-starting-style],
1395
+ &[data-ending-style] {
1396
+ opacity: 0;
1397
+ scale: 0.85;
1398
+ }
1064
1399
 
1065
- @media (prefers-reduced-motion: reduce) {
1066
- transition: opacity 100ms ease-out;
1067
- }
1400
+ &[data-ending-style] {
1401
+ transition-timing-function: ease-in;
1402
+ transition-duration: 100ms;
1403
+ }
1068
1404
 
1069
- &[data-starting-style],
1070
- &[data-ending-style] {
1071
- opacity: 0;
1072
- scale: 0.8;
1073
- transition-timing-function: ease-in;
1074
- transition-duration: 200ms;
1405
+ @media (prefers-reduced-motion: reduce) {
1406
+ transition-duration: 50ms;
1407
+ transition-property: opacity;
1408
+ }
1075
1409
  }
1076
- }
1077
1410
 
1078
- .media-minimal-skin .media-input-feedback-bubble[data-direction="forward"] {
1079
- grid-column: 3;
1080
- justify-self: right;
1081
- }
1411
+ /* Directional bubbles (seek) */
1412
+ &[data-direction] {
1413
+ gap: 0.25rem;
1082
1414
 
1083
- /* --- Bubble icons ---------------------------------------------------------- */
1415
+ @container media-root (width > 24rem) {
1416
+ padding: 1.5rem;
1417
+ }
1418
+ }
1084
1419
 
1085
- .media-minimal-skin .media-input-feedback-bubble .media-icon {
1086
- display: none;
1087
- width: 36px;
1088
- height: 36px;
1089
- }
1420
+ &[data-direction="backward"] {
1421
+ grid-column: 1;
1422
+ justify-self: left;
1423
+ }
1090
1424
 
1091
- /* seek: seek icon, flipped for backward */
1092
- .media-minimal-skin .media-input-feedback-bubble[data-direction] .media-icon--seek {
1093
- display: block;
1094
- }
1425
+ &[data-direction="forward"] {
1426
+ grid-column: 3;
1427
+ justify-self: right;
1428
+ }
1095
1429
 
1096
- .media-minimal-skin .media-input-feedback-bubble[data-direction="backward"] .media-icon--seek {
1097
- transform: scaleX(-1);
1098
- }
1430
+ /* Icons */
1431
+ .media-icon {
1432
+ display: none;
1433
+ width: calc(var(--media-icon-size) * 2);
1434
+ height: calc(var(--media-icon-size) * 2);
1435
+ }
1099
1436
 
1100
- @media (prefers-reduced-motion: no-preference) {
1101
- .media-minimal-skin
1102
- .media-input-feedback-bubble[data-direction="forward"]:not([data-starting-style])
1103
- .media-icon--seek {
1104
- animation: media-slide-in-forward 300ms ease-in-out;
1437
+ .media-icon--seek {
1438
+ width: calc(var(--media-icon-size) * 1.5);
1439
+ height: calc(var(--media-icon-size) * 1.5);
1105
1440
  }
1106
1441
 
1107
- .media-minimal-skin
1108
- .media-input-feedback-bubble[data-direction="backward"]:not([data-starting-style])
1109
- .media-icon--seek {
1110
- animation: media-slide-in-backward 300ms ease-in-out;
1442
+ &[data-direction] .media-icon--seek,
1443
+ &[data-status="pause"] .media-icon--pause,
1444
+ &[data-status="play"] .media-icon--play {
1445
+ display: block;
1111
1446
  }
1112
1447
 
1113
- .media-minimal-skin .media-input-feedback-island--status[data-status]:not([data-starting-style]) .media-icon,
1114
- .media-minimal-skin .media-input-feedback-bubble[data-status]:not([data-starting-style]) .media-icon {
1115
- animation: media-pop-in 250ms ease-out;
1448
+ &[data-direction="backward"] .media-icon--seek {
1449
+ scale: -1 1;
1116
1450
  }
1117
- }
1118
1451
 
1119
- .media-minimal-skin .media-input-feedback-bubble[data-status="pause"] .media-icon--pause,
1120
- .media-minimal-skin .media-input-feedback-bubble[data-status="play"] .media-icon--play {
1121
- display: block;
1452
+ @media (prefers-reduced-motion: no-preference) {
1453
+ .media-icon--seek {
1454
+ transition-timing-function: ease-in-out;
1455
+ transition-duration: 200ms;
1456
+ transition-property: translate, opacity;
1457
+ }
1458
+
1459
+ &[data-starting-style] .media-icon--seek,
1460
+ &[data-ending-style] .media-icon--seek {
1461
+ opacity: 0;
1462
+ }
1463
+
1464
+ &[data-direction="forward"][data-starting-style] .media-icon--seek {
1465
+ translate: -60% 0;
1466
+ }
1467
+ &[data-direction="backward"][data-starting-style] .media-icon--seek {
1468
+ translate: 60% 0;
1469
+ }
1470
+ }
1122
1471
  }
1123
1472
 
1124
1473
  /* ==========================================================================
@@ -1143,6 +1492,8 @@
1143
1492
  .media-button--pip .media-icon--pip-exit,
1144
1493
  .media-button--cast .media-icon--cast-enter,
1145
1494
  .media-button--cast .media-icon--cast-exit,
1495
+ .media-button--airplay .media-icon--airplay-enter,
1496
+ .media-button--airplay .media-icon--airplay-exit,
1146
1497
  .media-button--captions .media-icon--captions-off,
1147
1498
  .media-button--captions .media-icon--captions-on {
1148
1499
  display: none;
@@ -1153,10 +1504,11 @@
1153
1504
 
1154
1505
  /* Play: ended → restart */
1155
1506
  .media-button--play[data-ended] .media-icon--restart,
1156
- /* Play: paused (not ended) → play */
1507
+ /* Play: paused or not yet started (not ended) → play */
1157
1508
  .media-button--play:not([data-ended])[data-paused] .media-icon--play,
1158
- /* Play: playing (not paused, not ended) → pause */
1159
- .media-button--play:not([data-paused]):not([data-ended]) .media-icon--pause,
1509
+ .media-button--play:not([data-ended]):not([data-started]) .media-icon--play,
1510
+ /* Play: started and not paused/ended pause */
1511
+ .media-button--play[data-started]:not([data-paused]):not([data-ended]) .media-icon--pause,
1160
1512
  /* Mute: muted → volume off */
1161
1513
  .media-button--mute[data-muted] .media-icon--volume-off,
1162
1514
  /* Mute: volume low (not muted) → volume low */
@@ -1175,6 +1527,10 @@
1175
1527
  .media-button--cast:not([data-cast-state="connected"]) .media-icon--cast-enter,
1176
1528
  /* Cast: connected → exit */
1177
1529
  .media-button--cast[data-cast-state="connected"] .media-icon--cast-exit,
1530
+ /* AirPlay: not connected → enter */
1531
+ .media-button--airplay:not([data-airplay-state="connected"]) .media-icon--airplay-enter,
1532
+ /* AirPlay: connected → exit */
1533
+ .media-button--airplay[data-airplay-state="connected"] .media-icon--airplay-exit,
1178
1534
  /* Captions: not active → captions off */
1179
1535
  .media-button--captions:not([data-active]) .media-icon--captions-off,
1180
1536
  /* Captions: active → captions on */
@@ -1183,6 +1539,17 @@
1183
1539
  opacity: 1;
1184
1540
  }
1185
1541
 
1542
+ /* --- Pause keyframe animations on inactive icons --- */
1543
+
1544
+ /* The airplay-exit SVG defines its keyframes against CSS variables (mirroring
1545
+ the spinner pattern). When the AirPlay session isn't active the SVG is
1546
+ still in the DOM — just `display: none` — so its animations would keep
1547
+ running. Set the variables to `none` to short-circuit the keyframes. */
1548
+ .media-button--airplay:not([data-airplay-state="connected"]) {
1549
+ --media-icon--airplay__fill-animation: none;
1550
+ --media-icon--airplay__triangle-animation: none;
1551
+ }
1552
+
1186
1553
  /* -------------------------------------------------------------------------- */
1187
1554
  /* Global @keyframes for all video skins (CSS & Tailwind) */
1188
1555
  /* -------------------------------------------------------------------------- */
@@ -1206,27 +1573,6 @@
1206
1573
  }
1207
1574
  }
1208
1575
 
1209
- @keyframes media-slide-in-forward {
1210
- from {
1211
- translate: -60% 0;
1212
- opacity: 0;
1213
- }
1214
- }
1215
-
1216
- @keyframes media-slide-in-backward {
1217
- from {
1218
- translate: 60% 0;
1219
- opacity: 0;
1220
- }
1221
- }
1222
-
1223
- @keyframes media-pop-in {
1224
- from {
1225
- scale: 0.8;
1226
- opacity: 0;
1227
- }
1228
- }
1229
-
1230
1576
  /* -------------------------------------------------------------------------- */
1231
1577
  /* Global @properties for all video skins (CSS & Tailwind) */
1232
1578
  /* -------------------------------------------------------------------------- */
@@ -1253,14 +1599,17 @@
1253
1599
  --media-error-dialog-transition-timing-function: ease-out;
1254
1600
  --media-popup-transition-duration: 100ms;
1255
1601
  --media-popup-transition-timing-function: ease-out;
1256
- --media-tooltip-background-color: oklch(1 0 0 / 0.1);
1257
- --media-tooltip-border-color: transparent;
1602
+ --media-tooltip-background-color: oklch(0 0 0 / 0.5);
1603
+ --media-tooltip-border-color: oklch(1 0 0 / 0.1);
1258
1604
  --media-tooltip-backdrop-filter: blur(16px) saturate(1.5);
1259
1605
  --media-tooltip-text-color: currentColor;
1260
1606
  --media-tooltip-side-offset: 0.5rem;
1261
1607
  --media-tooltip-boundary-offset: 0.5rem;
1608
+ --media-popover-background-color: var(--media-tooltip-background-color);
1609
+ --media-popover-border-color: var(--media-tooltip-border-color);
1610
+ --media-popover-backdrop-filter: var(--media-tooltip-backdrop-filter);
1262
1611
  --media-popover-side-offset: 1.5rem;
1263
- --media-popover-boundary-offset: 0.5rem;
1612
+ --media-popover-boundary-offset: var(--media-tooltip-boundary-offset);
1264
1613
  overflow: clip;
1265
1614
  background: oklch(0 0 0);
1266
1615
 
@@ -1380,9 +1729,7 @@
1380
1729
  z-index: 10;
1381
1730
  flex-wrap: wrap;
1382
1731
  column-gap: 0.5rem;
1383
- max-width: 56rem;
1384
1732
  padding: 0.25rem;
1385
- margin-inline: auto;
1386
1733
  color: oklch(1 0 0);
1387
1734
  border-radius: 0.75rem;
1388
1735
  transition-timing-function: var(--media-controls-transition-timing-function);
@@ -1481,21 +1828,28 @@
1481
1828
  Slider preview
1482
1829
  ========================================================================== */
1483
1830
 
1484
- .media-minimal-skin--video .media-slider__preview {
1485
- --media-preview-max-width: 11rem;
1486
- --media-preview-padding: -0.5rem;
1831
+ .media-minimal-skin--video .media-slider__thumbnail {
1832
+ --media-slider-thumbnail-max-width: 11rem;
1833
+ --media-slider-thumbnail-max-height: 8rem;
1834
+ --media-slider-thumbnail-padding: -0.5rem;
1487
1835
  /**
1488
1836
  Inset is the difference between the container width and the slider (100%) width.
1489
1837
  We only add to the end as we render the time there.
1490
1838
  */
1491
- --media-preview-inset: calc(100cqi - 100%);
1839
+ --media-slider-thumbnail-inset: calc(100cqi - 100%);
1492
1840
 
1493
1841
  position: absolute;
1494
1842
  bottom: 100%;
1495
1843
  left: clamp(
1496
- calc(var(--media-preview-max-width) / 2 + var(--media-preview-padding)),
1844
+ calc(var(--media-slider-thumbnail-max-width) / 2 + var(--media-slider-thumbnail-padding)),
1497
1845
  var(--media-slider-pointer),
1498
- calc(100% - var(--media-preview-max-width) / 2 - var(--media-preview-padding) + var(--media-preview-inset))
1846
+ calc(
1847
+ 100% -
1848
+ var(--media-slider-thumbnail-max-width) /
1849
+ 2 -
1850
+ var(--media-slider-thumbnail-padding) +
1851
+ var(--media-slider-thumbnail-inset)
1852
+ )
1499
1853
  );
1500
1854
  opacity: 0;
1501
1855
  filter: blur(8px);
@@ -1507,11 +1861,10 @@
1507
1861
  transition-property: scale, opacity, filter;
1508
1862
 
1509
1863
  @container media-root (width > 42rem) {
1510
- bottom: calc(100% + 0.25rem);
1511
1864
  left: var(--media-slider-pointer);
1512
1865
  }
1513
1866
 
1514
- & .media-preview__thumbnail-wrapper {
1867
+ & .media-thumbnail__image-wrapper {
1515
1868
  position: relative;
1516
1869
 
1517
1870
  &::after {
@@ -1526,17 +1879,20 @@
1526
1879
  }
1527
1880
  }
1528
1881
 
1529
- & .media-preview__thumbnail {
1530
- max-width: var(--media-preview-max-width);
1531
- }
1532
-
1533
- &:has(.media-preview__thumbnail[data-loading]) {
1534
- max-height: 6rem;
1882
+ & .media-thumbnail__image {
1883
+ max-width: var(--media-slider-thumbnail-max-width);
1884
+ max-height: var(--media-slider-thumbnail-max-height);
1535
1885
  }
1536
1886
  }
1537
- .media-minimal-skin--video .media-slider[data-pointing] .media-slider__preview:has([role="img"]:not([data-hidden])) {
1887
+ .media-minimal-skin--video .media-slider[data-pointing] .media-slider__thumbnail:has([role="img"]:not([data-hidden])) {
1538
1888
  opacity: 1;
1539
1889
  filter: blur(0);
1540
1890
  scale: 1;
1541
1891
  }
1892
+ .media-minimal-skin--video
1893
+ .media-slider__thumbnail:has([role="img"]:not([data-hidden]))
1894
+ + .media-slider__preview
1895
+ .media-slider__value {
1896
+ display: none;
1897
+ }
1542
1898