@videojs/react 10.0.0-beta.23 → 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 (1033) hide show
  1. package/README.md +6 -0
  2. package/dist/default/icons/dist/react/default/airplay-enter.js +16 -0
  3. package/dist/default/icons/dist/react/default/airplay-enter.js.map +1 -0
  4. package/dist/default/icons/dist/react/default/airplay-exit.js +28 -0
  5. package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -0
  6. package/dist/default/icons/dist/react/default/captions-off.js +6 -0
  7. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
  8. package/dist/default/icons/dist/react/default/captions-on.js +3 -5
  9. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -1
  10. package/dist/default/icons/dist/react/default/cast-enter.js +38 -11
  11. package/dist/default/icons/dist/react/default/cast-enter.js.map +1 -1
  12. package/dist/default/icons/dist/react/default/cast-exit.js +55 -14
  13. package/dist/default/icons/dist/react/default/cast-exit.js.map +1 -1
  14. package/dist/default/icons/dist/react/default/check.js +22 -0
  15. package/dist/default/icons/dist/react/default/check.js.map +1 -0
  16. package/dist/default/icons/dist/react/default/chevron.js +21 -0
  17. package/dist/default/icons/dist/react/default/chevron.js.map +1 -0
  18. package/dist/default/icons/dist/react/default/fullscreen-enter.js +3 -5
  19. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  20. package/dist/default/icons/dist/react/default/fullscreen-exit.js +3 -5
  21. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  22. package/dist/default/icons/dist/react/default/gear.js +16 -0
  23. package/dist/default/icons/dist/react/default/gear.js.map +1 -0
  24. package/dist/default/icons/dist/react/default/pause.js +2 -3
  25. package/dist/default/icons/dist/react/default/pause.js.map +1 -1
  26. package/dist/default/icons/dist/react/default/pip-enter.js +4 -10
  27. package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -1
  28. package/dist/default/icons/dist/react/default/pip-exit.js +4 -10
  29. package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -1
  30. package/dist/default/icons/dist/react/default/play.js +3 -5
  31. package/dist/default/icons/dist/react/default/play.js.map +1 -1
  32. package/dist/default/icons/dist/react/default/quality.js +16 -0
  33. package/dist/default/icons/dist/react/default/quality.js.map +1 -0
  34. package/dist/default/icons/dist/react/default/restart.js +3 -8
  35. package/dist/default/icons/dist/react/default/restart.js.map +1 -1
  36. package/dist/default/icons/dist/react/default/seek.js +3 -5
  37. package/dist/default/icons/dist/react/default/seek.js.map +1 -1
  38. package/dist/default/icons/dist/react/default/speech.js +19 -0
  39. package/dist/default/icons/dist/react/default/speech.js.map +1 -0
  40. package/dist/default/icons/dist/react/default/speed.js +52 -0
  41. package/dist/default/icons/dist/react/default/speed.js.map +1 -0
  42. package/dist/default/icons/dist/react/default/spinner.js +38 -117
  43. package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
  44. package/dist/default/icons/dist/react/default/switches.js +19 -0
  45. package/dist/default/icons/dist/react/default/switches.js.map +1 -0
  46. package/dist/default/icons/dist/react/default/volume-high.js +3 -8
  47. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
  48. package/dist/default/icons/dist/react/default/volume-low.js +3 -5
  49. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -1
  50. package/dist/default/icons/dist/react/default/volume-off.js +3 -5
  51. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -1
  52. package/dist/default/icons/dist/react/minimal/airplay-enter.js +16 -0
  53. package/dist/default/icons/dist/react/minimal/airplay-enter.js.map +1 -0
  54. package/dist/default/icons/dist/react/minimal/airplay-exit.js +28 -0
  55. package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -0
  56. package/dist/default/icons/dist/react/minimal/captions-off.js +6 -0
  57. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  58. package/dist/default/icons/dist/react/minimal/captions-on.js +3 -5
  59. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
  60. package/dist/default/icons/dist/react/minimal/cast-enter.js +38 -7
  61. package/dist/default/icons/dist/react/minimal/cast-enter.js.map +1 -1
  62. package/dist/default/icons/dist/react/minimal/cast-exit.js +56 -11
  63. package/dist/default/icons/dist/react/minimal/cast-exit.js.map +1 -1
  64. package/dist/default/icons/dist/react/minimal/check.js +22 -0
  65. package/dist/default/icons/dist/react/minimal/check.js.map +1 -0
  66. package/dist/default/icons/dist/react/minimal/chevron.js +21 -0
  67. package/dist/default/icons/dist/react/minimal/chevron.js.map +1 -0
  68. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +5 -13
  69. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  70. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +5 -13
  71. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  72. package/dist/default/icons/dist/react/minimal/gear.js +16 -0
  73. package/dist/default/icons/dist/react/minimal/gear.js.map +1 -0
  74. package/dist/default/icons/dist/react/minimal/pause.js +2 -3
  75. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
  76. package/dist/default/icons/dist/react/minimal/pip-enter.js +5 -14
  77. package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -1
  78. package/dist/default/icons/dist/react/minimal/pip-exit.js +5 -14
  79. package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -1
  80. package/dist/default/icons/dist/react/minimal/play.js +3 -5
  81. package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
  82. package/dist/default/icons/dist/react/minimal/quality.js +16 -0
  83. package/dist/default/icons/dist/react/minimal/quality.js.map +1 -0
  84. package/dist/default/icons/dist/react/minimal/restart.js +3 -8
  85. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
  86. package/dist/default/icons/dist/react/minimal/seek.js +3 -5
  87. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
  88. package/dist/default/icons/dist/react/minimal/speech.js +54 -0
  89. package/dist/default/icons/dist/react/minimal/speech.js.map +1 -0
  90. package/dist/default/icons/dist/react/minimal/speed.js +52 -0
  91. package/dist/default/icons/dist/react/minimal/speed.js.map +1 -0
  92. package/dist/default/icons/dist/react/minimal/spinner.js +38 -117
  93. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
  94. package/dist/default/icons/dist/react/minimal/switches.js +19 -0
  95. package/dist/default/icons/dist/react/minimal/switches.js.map +1 -0
  96. package/dist/default/icons/dist/react/minimal/volume-high.js +3 -8
  97. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
  98. package/dist/default/icons/dist/react/minimal/volume-low.js +3 -5
  99. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
  100. package/dist/default/icons/dist/react/minimal/volume-off.js +3 -5
  101. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
  102. package/dist/default/icons/index.js +26 -0
  103. package/dist/default/icons/minimal/index.js +26 -0
  104. package/dist/default/index.js +25 -12
  105. package/dist/default/media/dash-video/index.js +5 -1
  106. package/dist/default/media/dash-video/index.js.map +1 -1
  107. package/dist/default/media/{hls-video → hlsjs-video}/index.js +9 -5
  108. package/dist/default/media/hlsjs-video/index.js.map +1 -0
  109. package/dist/default/media/mux-audio/index.js +9 -3
  110. package/dist/default/media/mux-audio/index.js.map +1 -1
  111. package/dist/default/media/mux-video/index.js +9 -3
  112. package/dist/default/media/mux-video/index.js.map +1 -1
  113. package/dist/default/media/native-hls-video/index.js +5 -1
  114. package/dist/default/media/native-hls-video/index.js.map +1 -1
  115. package/dist/default/media/simple-hls-audio-only/index.js +22 -0
  116. package/dist/default/media/simple-hls-audio-only/index.js.map +1 -0
  117. package/dist/default/media/simple-hls-video/index.js +2 -2
  118. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  119. package/dist/default/media/vimeo-video/index.js +37 -0
  120. package/dist/default/media/vimeo-video/index.js.map +1 -0
  121. package/dist/default/player/context.js +9 -1
  122. package/dist/default/player/context.js.map +1 -1
  123. package/dist/default/player/create-player.js +17 -5
  124. package/dist/default/player/create-player.js.map +1 -1
  125. package/dist/default/presets/audio/minimal-skin.css +569 -114
  126. package/dist/default/presets/audio/minimal-skin.js +163 -33
  127. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  128. package/dist/default/presets/audio/minimal-skin.tailwind.js +98 -35
  129. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  130. package/dist/default/presets/audio/skin.css +550 -116
  131. package/dist/default/presets/audio/skin.js +99 -34
  132. package/dist/default/presets/audio/skin.js.map +1 -1
  133. package/dist/default/presets/audio/skin.tailwind.js +173 -42
  134. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  135. package/dist/default/presets/live-audio/index.js +2 -2
  136. package/dist/default/presets/live-audio/minimal-skin.css +569 -114
  137. package/dist/default/presets/live-audio/minimal-skin.js +56 -14
  138. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
  139. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +57 -16
  140. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  141. package/dist/default/presets/live-audio/skin.css +550 -116
  142. package/dist/default/presets/live-audio/skin.js +39 -16
  143. package/dist/default/presets/live-audio/skin.js.map +1 -1
  144. package/dist/default/presets/live-audio/skin.tailwind.js +61 -19
  145. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
  146. package/dist/default/presets/live-video/minimal-skin.css +949 -178
  147. package/dist/default/presets/live-video/minimal-skin.js +205 -16
  148. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  149. package/dist/default/presets/live-video/minimal-skin.tailwind.js +208 -17
  150. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  151. package/dist/default/presets/live-video/skin.css +926 -182
  152. package/dist/default/presets/live-video/skin.js +150 -19
  153. package/dist/default/presets/live-video/skin.js.map +1 -1
  154. package/dist/default/presets/live-video/skin.tailwind.js +295 -24
  155. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  156. package/dist/default/presets/video/minimal-skin.css +949 -178
  157. package/dist/default/presets/video/minimal-skin.js +450 -40
  158. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  159. package/dist/default/presets/video/minimal-skin.tailwind.js +455 -43
  160. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  161. package/dist/default/presets/video/skin.css +926 -182
  162. package/dist/default/presets/video/skin.js +346 -49
  163. package/dist/default/presets/video/skin.js.map +1 -1
  164. package/dist/default/presets/video/skin.tailwind.js +454 -51
  165. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  166. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +11 -5
  167. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  168. package/dist/default/skins/dist/default/default/tailwind/components/badge.js +6 -0
  169. package/dist/default/skins/dist/default/default/tailwind/components/badge.js.map +1 -0
  170. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -4
  171. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  172. package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -2
  173. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  174. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  175. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  176. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +2 -2
  177. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  178. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js +40 -0
  179. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -0
  180. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +34 -0
  181. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
  182. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  183. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  184. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
  185. package/dist/default/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
  186. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +4 -3
  187. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  188. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +7 -1
  189. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  190. package/dist/default/skins/dist/default/default/tailwind/components/reset.js +7 -0
  191. package/dist/default/skins/dist/default/default/tailwind/components/reset.js.map +1 -0
  192. package/dist/default/skins/dist/default/default/tailwind/components/root.js +2 -1
  193. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  194. package/dist/default/skins/dist/default/default/tailwind/components/seek.js +1 -1
  195. package/dist/default/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  196. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +5 -3
  197. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  198. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +12 -0
  199. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -0
  200. package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
  201. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  202. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +35 -13
  203. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  204. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +17 -5
  205. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  206. package/dist/default/skins/dist/default/minimal/tailwind/components/badge.js +6 -0
  207. package/dist/default/skins/dist/default/minimal/tailwind/components/badge.js.map +1 -0
  208. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  209. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  210. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +3 -2
  211. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  212. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  213. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  214. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +2 -2
  215. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  216. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js +41 -0
  217. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -0
  218. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +33 -0
  219. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
  220. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  221. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  222. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  223. package/dist/default/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  224. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +3 -2
  225. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  226. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +7 -1
  227. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  228. package/dist/default/skins/dist/default/minimal/tailwind/components/reset.js +7 -0
  229. package/dist/default/skins/dist/default/minimal/tailwind/components/reset.js.map +1 -0
  230. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +2 -1
  231. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  232. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js +1 -1
  233. package/dist/default/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  234. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +5 -3
  235. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  236. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +13 -0
  237. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -0
  238. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  239. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  240. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +30 -11
  241. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  242. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +17 -2
  243. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  244. package/dist/default/tailwind.css +42 -0
  245. package/dist/default/ui/airplay-button/airplay-button.js +17 -0
  246. package/dist/default/ui/airplay-button/airplay-button.js.map +1 -0
  247. package/dist/default/ui/airplay-button/index.js +2 -0
  248. package/dist/default/ui/alert-dialog/alert-dialog-close.js +1 -1
  249. package/dist/default/ui/alert-dialog/alert-dialog-popup.js +1 -1
  250. package/dist/default/ui/audio-track/index.js +2 -0
  251. package/dist/default/ui/audio-track/use-audio-track-options.js +31 -0
  252. package/dist/default/ui/audio-track/use-audio-track-options.js.map +1 -0
  253. package/dist/default/ui/captions-radio-group/index.js +2 -0
  254. package/dist/default/ui/captions-radio-group/use-captions-options.js +37 -0
  255. package/dist/default/ui/captions-radio-group/use-captions-options.js.map +1 -0
  256. package/dist/default/ui/controls/context.js +4 -1
  257. package/dist/default/ui/controls/context.js.map +1 -1
  258. package/dist/default/ui/create-media-button.js +23 -10
  259. package/dist/default/ui/create-media-button.js.map +1 -1
  260. package/dist/default/ui/error-dialog/error-dialog-description.js +1 -1
  261. package/dist/default/ui/gesture/gesture.js +2 -1
  262. package/dist/default/ui/gesture/gesture.js.map +1 -1
  263. package/dist/default/ui/gesture/index.js +2 -0
  264. package/dist/default/ui/hooks/use-button.js.map +1 -1
  265. package/dist/default/ui/hotkey/hotkey.js +1 -0
  266. package/dist/default/ui/hotkey/hotkey.js.map +1 -1
  267. package/dist/default/ui/hotkey/index.js +2 -0
  268. package/dist/default/ui/hotkey/use-hotkey-shortcut.js +28 -0
  269. package/dist/default/ui/hotkey/use-hotkey-shortcut.js.map +1 -0
  270. package/dist/default/ui/hotkey/use-hotkey.js +1 -2
  271. package/dist/default/ui/hotkey/use-hotkey.js.map +1 -1
  272. package/dist/default/ui/input-indicators/use-indicator-visibility.js +25 -0
  273. package/dist/default/ui/input-indicators/use-indicator-visibility.js.map +1 -0
  274. package/dist/default/ui/input-indicators/use-input-action-subscription.js +22 -0
  275. package/dist/default/ui/input-indicators/use-input-action-subscription.js.map +1 -0
  276. package/dist/default/ui/input-indicators/use-input-indicator-root.js +21 -0
  277. package/dist/default/ui/input-indicators/use-input-indicator-root.js.map +1 -0
  278. package/dist/default/ui/input-indicators/use-rendered-indicator-state.js +43 -0
  279. package/dist/default/ui/input-indicators/use-rendered-indicator-state.js.map +1 -0
  280. package/dist/default/ui/live-button/index.js +2 -0
  281. package/dist/default/ui/live-button/live-button.js +89 -0
  282. package/dist/default/ui/live-button/live-button.js.map +1 -0
  283. package/dist/default/ui/menu/context.js +44 -0
  284. package/dist/default/ui/menu/context.js.map +1 -0
  285. package/dist/default/ui/menu/index.js +3 -0
  286. package/dist/default/ui/menu/index.parts.js +36 -0
  287. package/dist/default/ui/menu/index.parts.js.map +1 -0
  288. package/dist/default/ui/menu/menu-back.js +30 -0
  289. package/dist/default/ui/menu/menu-back.js.map +1 -0
  290. package/dist/default/ui/menu/menu-checkbox-item.js +49 -0
  291. package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -0
  292. package/dist/default/ui/menu/menu-content.js +302 -0
  293. package/dist/default/ui/menu/menu-content.js.map +1 -0
  294. package/dist/default/ui/menu/menu-group-label.js +29 -0
  295. package/dist/default/ui/menu/menu-group-label.js.map +1 -0
  296. package/dist/default/ui/menu/menu-group.js +24 -0
  297. package/dist/default/ui/menu/menu-group.js.map +1 -0
  298. package/dist/default/ui/menu/menu-item-indicator.js +23 -0
  299. package/dist/default/ui/menu/menu-item-indicator.js.map +1 -0
  300. package/dist/default/ui/menu/menu-item-setting-provider.js +72 -0
  301. package/dist/default/ui/menu/menu-item-setting-provider.js.map +1 -0
  302. package/dist/default/ui/menu/menu-item-value.js +28 -0
  303. package/dist/default/ui/menu/menu-item-value.js.map +1 -0
  304. package/dist/default/ui/menu/menu-item.js +74 -0
  305. package/dist/default/ui/menu/menu-item.js.map +1 -0
  306. package/dist/default/ui/menu/menu-radio-group.js +30 -0
  307. package/dist/default/ui/menu/menu-radio-group.js.map +1 -0
  308. package/dist/default/ui/menu/menu-radio-item.js +56 -0
  309. package/dist/default/ui/menu/menu-radio-item.js.map +1 -0
  310. package/dist/default/ui/menu/menu-root.js +136 -0
  311. package/dist/default/ui/menu/menu-root.js.map +1 -0
  312. package/dist/default/ui/menu/menu-separator.js +22 -0
  313. package/dist/default/ui/menu/menu-separator.js.map +1 -0
  314. package/dist/default/ui/menu/menu-trigger.js +180 -0
  315. package/dist/default/ui/menu/menu-trigger.js.map +1 -0
  316. package/dist/default/ui/menu/menu-view.js +23 -0
  317. package/dist/default/ui/menu/menu-view.js.map +1 -0
  318. package/dist/default/ui/menu/use-menu-group.js +31 -0
  319. package/dist/default/ui/menu/use-menu-group.js.map +1 -0
  320. package/dist/default/ui/playback-rate/index.js +2 -0
  321. package/dist/default/ui/playback-rate/use-playback-rate-options.js +34 -0
  322. package/dist/default/ui/playback-rate/use-playback-rate-options.js.map +1 -0
  323. package/dist/default/ui/playback-rate-button/playback-rate-button.js +2 -1
  324. package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  325. package/dist/default/ui/popover/context.js.map +1 -1
  326. package/dist/default/ui/popover/popover-popup.js +20 -7
  327. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  328. package/dist/default/ui/popover/popover-root.js +20 -5
  329. package/dist/default/ui/popover/popover-root.js.map +1 -1
  330. package/dist/default/ui/poster/poster.js +17 -3
  331. package/dist/default/ui/poster/poster.js.map +1 -1
  332. package/dist/default/ui/quality/index.js +2 -0
  333. package/dist/default/ui/quality/use-quality-options.js +37 -0
  334. package/dist/default/ui/quality/use-quality-options.js.map +1 -0
  335. package/dist/default/ui/seek-button/seek-button.js +3 -1
  336. package/dist/default/ui/seek-button/seek-button.js.map +1 -1
  337. package/dist/default/ui/seek-indicator/context.js +20 -0
  338. package/dist/default/ui/seek-indicator/context.js.map +1 -0
  339. package/dist/default/ui/seek-indicator/index.js +2 -0
  340. package/dist/default/ui/seek-indicator/index.parts.js +12 -0
  341. package/dist/default/ui/seek-indicator/index.parts.js.map +1 -0
  342. package/dist/default/ui/seek-indicator/seek-indicator-root.js +30 -0
  343. package/dist/default/ui/seek-indicator/seek-indicator-root.js.map +1 -0
  344. package/dist/default/ui/seek-indicator/seek-indicator-value.js +23 -0
  345. package/dist/default/ui/seek-indicator/seek-indicator-value.js.map +1 -0
  346. package/dist/default/ui/slider/context.js.map +1 -1
  347. package/dist/default/ui/status-announcer/index.js +2 -0
  348. package/dist/default/ui/status-announcer/status-announcer.js +36 -0
  349. package/dist/default/ui/status-announcer/status-announcer.js.map +1 -0
  350. package/dist/default/ui/status-indicator/context.js +20 -0
  351. package/dist/default/ui/status-indicator/context.js.map +1 -0
  352. package/dist/default/ui/status-indicator/index.js +2 -0
  353. package/dist/default/ui/status-indicator/index.parts.js +12 -0
  354. package/dist/default/ui/status-indicator/index.parts.js.map +1 -0
  355. package/dist/default/ui/status-indicator/status-indicator-root.js +34 -0
  356. package/dist/default/ui/status-indicator/status-indicator-root.js.map +1 -0
  357. package/dist/default/ui/status-indicator/status-indicator-value.js +23 -0
  358. package/dist/default/ui/status-indicator/status-indicator-value.js.map +1 -0
  359. package/dist/default/ui/time/time-value.js +32 -5
  360. package/dist/default/ui/time/time-value.js.map +1 -1
  361. package/dist/default/ui/time-slider/time-slider-root.js +18 -6
  362. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  363. package/dist/default/ui/tooltip/context.js.map +1 -1
  364. package/dist/default/ui/tooltip/index.parts.js +4 -0
  365. package/dist/default/ui/tooltip/index.parts.js.map +1 -1
  366. package/dist/default/ui/tooltip/tooltip-arrow.js +1 -1
  367. package/dist/default/ui/tooltip/tooltip-label.js +24 -0
  368. package/dist/default/ui/tooltip/tooltip-label.js.map +1 -0
  369. package/dist/default/ui/tooltip/tooltip-popup.js +26 -9
  370. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  371. package/dist/default/ui/tooltip/tooltip-root.js +17 -5
  372. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  373. package/dist/default/ui/tooltip/tooltip-shortcut.js +25 -0
  374. package/dist/default/ui/tooltip/tooltip-shortcut.js.map +1 -0
  375. package/dist/default/ui/volume-indicator/context.js +20 -0
  376. package/dist/default/ui/volume-indicator/context.js.map +1 -0
  377. package/dist/default/ui/volume-indicator/index.js +2 -0
  378. package/dist/default/ui/volume-indicator/index.parts.js +14 -0
  379. package/dist/default/ui/volume-indicator/index.parts.js.map +1 -0
  380. package/dist/default/ui/volume-indicator/volume-indicator-fill.js +36 -0
  381. package/dist/default/ui/volume-indicator/volume-indicator-fill.js.map +1 -0
  382. package/dist/default/ui/volume-indicator/volume-indicator-root.js +30 -0
  383. package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -0
  384. package/dist/default/ui/volume-indicator/volume-indicator-value.js +23 -0
  385. package/dist/default/ui/volume-indicator/volume-indicator-value.js.map +1 -0
  386. package/dist/default/utils/use-attach-iframe.js +14 -0
  387. package/dist/default/utils/use-attach-iframe.js.map +1 -0
  388. package/dist/default/utils/use-media-instance.js +11 -3
  389. package/dist/default/utils/use-media-instance.js.map +1 -1
  390. package/dist/default/utils/use-render.js +1 -1
  391. package/dist/default/utils/use-render.js.map +1 -1
  392. package/dist/dev/icons/dist/react/default/airplay-enter.js +16 -0
  393. package/dist/dev/icons/dist/react/default/airplay-enter.js.map +1 -0
  394. package/dist/dev/icons/dist/react/default/airplay-exit.js +28 -0
  395. package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -0
  396. package/dist/dev/icons/dist/react/default/captions-off.js +6 -0
  397. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  398. package/dist/dev/icons/dist/react/default/captions-on.js +3 -5
  399. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  400. package/dist/dev/icons/dist/react/default/cast-enter.js +38 -11
  401. package/dist/dev/icons/dist/react/default/cast-enter.js.map +1 -1
  402. package/dist/dev/icons/dist/react/default/cast-exit.js +55 -14
  403. package/dist/dev/icons/dist/react/default/cast-exit.js.map +1 -1
  404. package/dist/dev/icons/dist/react/default/check.js +22 -0
  405. package/dist/dev/icons/dist/react/default/check.js.map +1 -0
  406. package/dist/dev/icons/dist/react/default/chevron.js +21 -0
  407. package/dist/dev/icons/dist/react/default/chevron.js.map +1 -0
  408. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +3 -5
  409. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  410. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +3 -5
  411. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  412. package/dist/dev/icons/dist/react/default/gear.js +16 -0
  413. package/dist/dev/icons/dist/react/default/gear.js.map +1 -0
  414. package/dist/dev/icons/dist/react/default/index.d.ts +30 -0
  415. package/dist/dev/icons/dist/react/default/index.d.ts.map +1 -0
  416. package/dist/dev/icons/dist/react/default/pause.js +2 -3
  417. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  418. package/dist/dev/icons/dist/react/default/pip-enter.js +4 -10
  419. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -1
  420. package/dist/dev/icons/dist/react/default/pip-exit.js +4 -10
  421. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -1
  422. package/dist/dev/icons/dist/react/default/play.js +3 -5
  423. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  424. package/dist/dev/icons/dist/react/default/quality.js +16 -0
  425. package/dist/dev/icons/dist/react/default/quality.js.map +1 -0
  426. package/dist/dev/icons/dist/react/default/restart.js +3 -8
  427. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  428. package/dist/dev/icons/dist/react/default/seek.js +3 -5
  429. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  430. package/dist/dev/icons/dist/react/default/speech.js +19 -0
  431. package/dist/dev/icons/dist/react/default/speech.js.map +1 -0
  432. package/dist/dev/icons/dist/react/default/speed.js +52 -0
  433. package/dist/dev/icons/dist/react/default/speed.js.map +1 -0
  434. package/dist/dev/icons/dist/react/default/spinner.js +38 -117
  435. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  436. package/dist/dev/icons/dist/react/default/switches.js +19 -0
  437. package/dist/dev/icons/dist/react/default/switches.js.map +1 -0
  438. package/dist/dev/icons/dist/react/default/volume-high.js +3 -8
  439. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  440. package/dist/dev/icons/dist/react/default/volume-low.js +3 -5
  441. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  442. package/dist/dev/icons/dist/react/default/volume-off.js +3 -5
  443. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  444. package/dist/dev/icons/dist/react/minimal/airplay-enter.js +16 -0
  445. package/dist/dev/icons/dist/react/minimal/airplay-enter.js.map +1 -0
  446. package/dist/dev/icons/dist/react/minimal/airplay-exit.js +28 -0
  447. package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -0
  448. package/dist/dev/icons/dist/react/minimal/captions-off.js +6 -0
  449. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  450. package/dist/dev/icons/dist/react/minimal/captions-on.js +3 -5
  451. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  452. package/dist/dev/icons/dist/react/minimal/cast-enter.js +38 -7
  453. package/dist/dev/icons/dist/react/minimal/cast-enter.js.map +1 -1
  454. package/dist/dev/icons/dist/react/minimal/cast-exit.js +56 -11
  455. package/dist/dev/icons/dist/react/minimal/cast-exit.js.map +1 -1
  456. package/dist/dev/icons/dist/react/minimal/check.js +22 -0
  457. package/dist/dev/icons/dist/react/minimal/check.js.map +1 -0
  458. package/dist/dev/icons/dist/react/minimal/chevron.js +21 -0
  459. package/dist/dev/icons/dist/react/minimal/chevron.js.map +1 -0
  460. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +5 -13
  461. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  462. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +5 -13
  463. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  464. package/dist/dev/icons/dist/react/minimal/gear.js +16 -0
  465. package/dist/dev/icons/dist/react/minimal/gear.js.map +1 -0
  466. package/dist/dev/icons/dist/react/minimal/index.d.ts +30 -0
  467. package/dist/dev/icons/dist/react/minimal/index.d.ts.map +1 -0
  468. package/dist/dev/icons/dist/react/minimal/pause.js +2 -3
  469. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  470. package/dist/dev/icons/dist/react/minimal/pip-enter.js +5 -14
  471. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -1
  472. package/dist/dev/icons/dist/react/minimal/pip-exit.js +5 -14
  473. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -1
  474. package/dist/dev/icons/dist/react/minimal/play.js +3 -5
  475. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  476. package/dist/dev/icons/dist/react/minimal/quality.js +16 -0
  477. package/dist/dev/icons/dist/react/minimal/quality.js.map +1 -0
  478. package/dist/dev/icons/dist/react/minimal/restart.js +3 -8
  479. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  480. package/dist/dev/icons/dist/react/minimal/seek.js +3 -5
  481. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  482. package/dist/dev/icons/dist/react/minimal/speech.js +54 -0
  483. package/dist/dev/icons/dist/react/minimal/speech.js.map +1 -0
  484. package/dist/dev/icons/dist/react/minimal/speed.js +52 -0
  485. package/dist/dev/icons/dist/react/minimal/speed.js.map +1 -0
  486. package/dist/dev/icons/dist/react/minimal/spinner.js +38 -117
  487. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  488. package/dist/dev/icons/dist/react/minimal/switches.js +19 -0
  489. package/dist/dev/icons/dist/react/minimal/switches.js.map +1 -0
  490. package/dist/dev/icons/dist/react/minimal/volume-high.js +3 -8
  491. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  492. package/dist/dev/icons/dist/react/minimal/volume-low.js +3 -5
  493. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  494. package/dist/dev/icons/dist/react/minimal/volume-off.js +3 -5
  495. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  496. package/dist/dev/icons/index.d.ts +2 -0
  497. package/dist/dev/icons/index.js +26 -0
  498. package/dist/dev/icons/minimal/index.d.ts +2 -0
  499. package/dist/dev/icons/minimal/index.js +26 -0
  500. package/dist/dev/index.d.ts +32 -11
  501. package/dist/dev/index.js +25 -12
  502. package/dist/dev/media/dash-video/index.d.ts.map +1 -1
  503. package/dist/dev/media/dash-video/index.js +5 -1
  504. package/dist/dev/media/dash-video/index.js.map +1 -1
  505. package/dist/dev/media/hlsjs-video/index.d.ts +15 -0
  506. package/dist/dev/media/hlsjs-video/index.d.ts.map +1 -0
  507. package/dist/dev/media/{hls-video → hlsjs-video}/index.js +9 -5
  508. package/dist/dev/media/hlsjs-video/index.js.map +1 -0
  509. package/dist/dev/media/mux-audio/index.d.ts +2 -2
  510. package/dist/dev/media/mux-audio/index.d.ts.map +1 -1
  511. package/dist/dev/media/mux-audio/index.js +9 -3
  512. package/dist/dev/media/mux-audio/index.js.map +1 -1
  513. package/dist/dev/media/mux-video/index.d.ts +2 -2
  514. package/dist/dev/media/mux-video/index.d.ts.map +1 -1
  515. package/dist/dev/media/mux-video/index.js +9 -3
  516. package/dist/dev/media/mux-video/index.js.map +1 -1
  517. package/dist/dev/media/native-hls-video/index.d.ts.map +1 -1
  518. package/dist/dev/media/native-hls-video/index.js +5 -1
  519. package/dist/dev/media/native-hls-video/index.js.map +1 -1
  520. package/dist/dev/media/simple-hls-audio-only/index.d.ts +15 -0
  521. package/dist/dev/media/simple-hls-audio-only/index.d.ts.map +1 -0
  522. package/dist/dev/media/simple-hls-audio-only/index.js +22 -0
  523. package/dist/dev/media/simple-hls-audio-only/index.js.map +1 -0
  524. package/dist/dev/media/simple-hls-video/index.d.ts +2 -2
  525. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  526. package/dist/dev/media/simple-hls-video/index.js +2 -2
  527. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  528. package/dist/dev/media/vimeo-video/index.d.ts +15 -0
  529. package/dist/dev/media/vimeo-video/index.d.ts.map +1 -0
  530. package/dist/dev/media/vimeo-video/index.js +37 -0
  531. package/dist/dev/media/vimeo-video/index.js.map +1 -0
  532. package/dist/dev/player/context.d.ts +13 -2
  533. package/dist/dev/player/context.d.ts.map +1 -1
  534. package/dist/dev/player/context.js +9 -1
  535. package/dist/dev/player/context.js.map +1 -1
  536. package/dist/dev/player/create-player.d.ts.map +1 -1
  537. package/dist/dev/player/create-player.js +17 -5
  538. package/dist/dev/player/create-player.js.map +1 -1
  539. package/dist/dev/presets/audio/minimal-skin.css +569 -114
  540. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  541. package/dist/dev/presets/audio/minimal-skin.js +163 -33
  542. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  543. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  544. package/dist/dev/presets/audio/minimal-skin.tailwind.js +98 -35
  545. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  546. package/dist/dev/presets/audio/skin.css +550 -116
  547. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  548. package/dist/dev/presets/audio/skin.js +99 -34
  549. package/dist/dev/presets/audio/skin.js.map +1 -1
  550. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  551. package/dist/dev/presets/audio/skin.tailwind.js +173 -42
  552. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  553. package/dist/dev/presets/live-audio/index.d.ts +2 -2
  554. package/dist/dev/presets/live-audio/index.js +2 -2
  555. package/dist/dev/presets/live-audio/minimal-skin.css +569 -114
  556. package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -1
  557. package/dist/dev/presets/live-audio/minimal-skin.js +56 -14
  558. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -1
  559. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -1
  560. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +57 -16
  561. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  562. package/dist/dev/presets/live-audio/skin.css +550 -116
  563. package/dist/dev/presets/live-audio/skin.d.ts +3 -1
  564. package/dist/dev/presets/live-audio/skin.d.ts.map +1 -1
  565. package/dist/dev/presets/live-audio/skin.js +39 -16
  566. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  567. package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -1
  568. package/dist/dev/presets/live-audio/skin.tailwind.js +61 -19
  569. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
  570. package/dist/dev/presets/live-video/minimal-skin.css +949 -178
  571. package/dist/dev/presets/live-video/minimal-skin.d.ts +0 -7
  572. package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -1
  573. package/dist/dev/presets/live-video/minimal-skin.js +205 -16
  574. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  575. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -1
  576. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +208 -17
  577. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  578. package/dist/dev/presets/live-video/skin.css +926 -182
  579. package/dist/dev/presets/live-video/skin.d.ts +0 -6
  580. package/dist/dev/presets/live-video/skin.d.ts.map +1 -1
  581. package/dist/dev/presets/live-video/skin.js +150 -19
  582. package/dist/dev/presets/live-video/skin.js.map +1 -1
  583. package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -1
  584. package/dist/dev/presets/live-video/skin.tailwind.js +295 -24
  585. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  586. package/dist/dev/presets/types.d.ts +2 -1
  587. package/dist/dev/presets/types.d.ts.map +1 -1
  588. package/dist/dev/presets/video/minimal-skin.css +949 -178
  589. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  590. package/dist/dev/presets/video/minimal-skin.js +450 -40
  591. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  592. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  593. package/dist/dev/presets/video/minimal-skin.tailwind.js +455 -43
  594. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  595. package/dist/dev/presets/video/skin.css +926 -182
  596. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  597. package/dist/dev/presets/video/skin.js +346 -49
  598. package/dist/dev/presets/video/skin.js.map +1 -1
  599. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  600. package/dist/dev/presets/video/skin.tailwind.js +454 -51
  601. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  602. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +11 -5
  603. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  604. package/dist/dev/skins/dist/default/default/tailwind/components/badge.js +6 -0
  605. package/dist/dev/skins/dist/default/default/tailwind/components/badge.js.map +1 -0
  606. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -4
  607. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  608. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +3 -2
  609. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  610. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  611. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  612. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +2 -2
  613. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  614. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js +40 -0
  615. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js.map +1 -0
  616. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +34 -0
  617. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -0
  618. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  619. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  620. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js +1 -1
  621. package/dist/dev/skins/dist/default/default/tailwind/components/playback-rate.js.map +1 -1
  622. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +4 -3
  623. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  624. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +7 -1
  625. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  626. package/dist/dev/skins/dist/default/default/tailwind/components/reset.js +7 -0
  627. package/dist/dev/skins/dist/default/default/tailwind/components/reset.js.map +1 -0
  628. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +2 -1
  629. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  630. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js +1 -1
  631. package/dist/dev/skins/dist/default/default/tailwind/components/seek.js.map +1 -1
  632. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +5 -3
  633. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  634. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +12 -0
  635. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -0
  636. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +1 -1
  637. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  638. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +35 -13
  639. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  640. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +17 -5
  641. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  642. package/dist/dev/skins/dist/default/minimal/tailwind/components/badge.js +6 -0
  643. package/dist/dev/skins/dist/default/minimal/tailwind/components/badge.js.map +1 -0
  644. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  645. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  646. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +3 -2
  647. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  648. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  649. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  650. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +2 -2
  651. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  652. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js +41 -0
  653. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +1 -0
  654. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +33 -0
  655. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -0
  656. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  657. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  658. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js +6 -0
  659. package/dist/dev/skins/dist/default/minimal/tailwind/components/playback-rate.js.map +1 -0
  660. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +3 -2
  661. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  662. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +7 -1
  663. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  664. package/dist/dev/skins/dist/default/minimal/tailwind/components/reset.js +7 -0
  665. package/dist/dev/skins/dist/default/minimal/tailwind/components/reset.js.map +1 -0
  666. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +2 -1
  667. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  668. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js +1 -1
  669. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek.js.map +1 -1
  670. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +5 -3
  671. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  672. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +13 -0
  673. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -0
  674. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  675. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  676. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +30 -11
  677. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  678. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +17 -2
  679. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  680. package/dist/dev/tailwind.css +42 -0
  681. package/dist/dev/ui/airplay-button/airplay-button.d.ts +15 -0
  682. package/dist/dev/ui/airplay-button/airplay-button.d.ts.map +1 -0
  683. package/dist/dev/ui/airplay-button/airplay-button.js +17 -0
  684. package/dist/dev/ui/airplay-button/airplay-button.js.map +1 -0
  685. package/dist/dev/ui/airplay-button/index.d.ts +2 -0
  686. package/dist/dev/ui/airplay-button/index.js +2 -0
  687. package/dist/dev/ui/alert-dialog/alert-dialog-close.js +1 -1
  688. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +1 -1
  689. package/dist/dev/ui/audio-track/index.d.ts +2 -0
  690. package/dist/dev/ui/audio-track/index.js +2 -0
  691. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts +25 -0
  692. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts.map +1 -0
  693. package/dist/dev/ui/audio-track/use-audio-track-options.js +34 -0
  694. package/dist/dev/ui/audio-track/use-audio-track-options.js.map +1 -0
  695. package/dist/dev/ui/captions-radio-group/index.d.ts +2 -0
  696. package/dist/dev/ui/captions-radio-group/index.js +2 -0
  697. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts +26 -0
  698. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts.map +1 -0
  699. package/dist/dev/ui/captions-radio-group/use-captions-options.js +40 -0
  700. package/dist/dev/ui/captions-radio-group/use-captions-options.js.map +1 -0
  701. package/dist/dev/ui/controls/context.js +4 -1
  702. package/dist/dev/ui/controls/context.js.map +1 -1
  703. package/dist/dev/ui/create-media-button.js +23 -10
  704. package/dist/dev/ui/create-media-button.js.map +1 -1
  705. package/dist/dev/ui/error-dialog/error-dialog-description.js +1 -1
  706. package/dist/dev/ui/gesture/gesture.js +2 -1
  707. package/dist/dev/ui/gesture/gesture.js.map +1 -1
  708. package/dist/dev/ui/gesture/index.d.ts +2 -0
  709. package/dist/dev/ui/gesture/index.js +2 -0
  710. package/dist/dev/ui/hooks/use-button.d.ts +2 -1
  711. package/dist/dev/ui/hooks/use-button.d.ts.map +1 -1
  712. package/dist/dev/ui/hooks/use-button.js.map +1 -1
  713. package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -1
  714. package/dist/dev/ui/hotkey/hotkey.js +1 -0
  715. package/dist/dev/ui/hotkey/hotkey.js.map +1 -1
  716. package/dist/dev/ui/hotkey/index.d.ts +2 -0
  717. package/dist/dev/ui/hotkey/index.js +2 -0
  718. package/dist/dev/ui/hotkey/use-hotkey-shortcut.d.ts +7 -0
  719. package/dist/dev/ui/hotkey/use-hotkey-shortcut.d.ts.map +1 -0
  720. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js +28 -0
  721. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js.map +1 -0
  722. package/dist/dev/ui/hotkey/use-hotkey.js +1 -2
  723. package/dist/dev/ui/hotkey/use-hotkey.js.map +1 -1
  724. package/dist/dev/ui/input-indicators/use-indicator-visibility.js +25 -0
  725. package/dist/dev/ui/input-indicators/use-indicator-visibility.js.map +1 -0
  726. package/dist/dev/ui/input-indicators/use-input-action-subscription.js +22 -0
  727. package/dist/dev/ui/input-indicators/use-input-action-subscription.js.map +1 -0
  728. package/dist/dev/ui/input-indicators/use-input-indicator-root.js +21 -0
  729. package/dist/dev/ui/input-indicators/use-input-indicator-root.js.map +1 -0
  730. package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js +43 -0
  731. package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js.map +1 -0
  732. package/dist/dev/ui/live-button/index.d.ts +2 -0
  733. package/dist/dev/ui/live-button/index.js +2 -0
  734. package/dist/dev/ui/live-button/live-button.d.ts +34 -0
  735. package/dist/dev/ui/live-button/live-button.d.ts.map +1 -0
  736. package/dist/dev/ui/live-button/live-button.js +92 -0
  737. package/dist/dev/ui/live-button/live-button.js.map +1 -0
  738. package/dist/dev/ui/menu/context.d.ts +29 -0
  739. package/dist/dev/ui/menu/context.d.ts.map +1 -0
  740. package/dist/dev/ui/menu/context.js +44 -0
  741. package/dist/dev/ui/menu/context.js.map +1 -0
  742. package/dist/dev/ui/menu/index.d.ts +3 -0
  743. package/dist/dev/ui/menu/index.js +3 -0
  744. package/dist/dev/ui/menu/index.parts.d.ts +22 -0
  745. package/dist/dev/ui/menu/index.parts.d.ts.map +1 -0
  746. package/dist/dev/ui/menu/index.parts.js +36 -0
  747. package/dist/dev/ui/menu/index.parts.js.map +1 -0
  748. package/dist/dev/ui/menu/menu-back.d.ts +18 -0
  749. package/dist/dev/ui/menu/menu-back.d.ts.map +1 -0
  750. package/dist/dev/ui/menu/menu-back.js +30 -0
  751. package/dist/dev/ui/menu/menu-back.js.map +1 -0
  752. package/dist/dev/ui/menu/menu-checkbox-item.d.ts +22 -0
  753. package/dist/dev/ui/menu/menu-checkbox-item.d.ts.map +1 -0
  754. package/dist/dev/ui/menu/menu-checkbox-item.js +49 -0
  755. package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -0
  756. package/dist/dev/ui/menu/menu-content.d.ts +15 -0
  757. package/dist/dev/ui/menu/menu-content.d.ts.map +1 -0
  758. package/dist/dev/ui/menu/menu-content.js +302 -0
  759. package/dist/dev/ui/menu/menu-content.js.map +1 -0
  760. package/dist/dev/ui/menu/menu-group-label.d.ts +15 -0
  761. package/dist/dev/ui/menu/menu-group-label.d.ts.map +1 -0
  762. package/dist/dev/ui/menu/menu-group-label.js +29 -0
  763. package/dist/dev/ui/menu/menu-group-label.js.map +1 -0
  764. package/dist/dev/ui/menu/menu-group.d.ts +15 -0
  765. package/dist/dev/ui/menu/menu-group.d.ts.map +1 -0
  766. package/dist/dev/ui/menu/menu-group.js +24 -0
  767. package/dist/dev/ui/menu/menu-group.js.map +1 -0
  768. package/dist/dev/ui/menu/menu-item-indicator.d.ts +20 -0
  769. package/dist/dev/ui/menu/menu-item-indicator.d.ts.map +1 -0
  770. package/dist/dev/ui/menu/menu-item-indicator.js +23 -0
  771. package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -0
  772. package/dist/dev/ui/menu/menu-item-setting-provider.js +72 -0
  773. package/dist/dev/ui/menu/menu-item-setting-provider.js.map +1 -0
  774. package/dist/dev/ui/menu/menu-item-type.d.ts +5 -0
  775. package/dist/dev/ui/menu/menu-item-type.d.ts.map +1 -0
  776. package/dist/dev/ui/menu/menu-item-value.d.ts +14 -0
  777. package/dist/dev/ui/menu/menu-item-value.d.ts.map +1 -0
  778. package/dist/dev/ui/menu/menu-item-value.js +28 -0
  779. package/dist/dev/ui/menu/menu-item-value.js.map +1 -0
  780. package/dist/dev/ui/menu/menu-item.d.ts +23 -0
  781. package/dist/dev/ui/menu/menu-item.d.ts.map +1 -0
  782. package/dist/dev/ui/menu/menu-item.js +74 -0
  783. package/dist/dev/ui/menu/menu-item.js.map +1 -0
  784. package/dist/dev/ui/menu/menu-radio-group.d.ts +20 -0
  785. package/dist/dev/ui/menu/menu-radio-group.d.ts.map +1 -0
  786. package/dist/dev/ui/menu/menu-radio-group.js +30 -0
  787. package/dist/dev/ui/menu/menu-radio-group.js.map +1 -0
  788. package/dist/dev/ui/menu/menu-radio-item.d.ts +20 -0
  789. package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -0
  790. package/dist/dev/ui/menu/menu-radio-item.js +56 -0
  791. package/dist/dev/ui/menu/menu-radio-item.js.map +1 -0
  792. package/dist/dev/ui/menu/menu-root.d.ts +29 -0
  793. package/dist/dev/ui/menu/menu-root.d.ts.map +1 -0
  794. package/dist/dev/ui/menu/menu-root.js +136 -0
  795. package/dist/dev/ui/menu/menu-root.js.map +1 -0
  796. package/dist/dev/ui/menu/menu-separator.d.ts +15 -0
  797. package/dist/dev/ui/menu/menu-separator.d.ts.map +1 -0
  798. package/dist/dev/ui/menu/menu-separator.js +22 -0
  799. package/dist/dev/ui/menu/menu-separator.js.map +1 -0
  800. package/dist/dev/ui/menu/menu-trigger.d.ts +25 -0
  801. package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -0
  802. package/dist/dev/ui/menu/menu-trigger.js +180 -0
  803. package/dist/dev/ui/menu/menu-trigger.js.map +1 -0
  804. package/dist/dev/ui/menu/menu-view.d.ts +15 -0
  805. package/dist/dev/ui/menu/menu-view.d.ts.map +1 -0
  806. package/dist/dev/ui/menu/menu-view.js +23 -0
  807. package/dist/dev/ui/menu/menu-view.js.map +1 -0
  808. package/dist/dev/ui/menu/use-menu-group.js +31 -0
  809. package/dist/dev/ui/menu/use-menu-group.js.map +1 -0
  810. package/dist/dev/ui/playback-rate/index.d.ts +2 -0
  811. package/dist/dev/ui/playback-rate/index.js +2 -0
  812. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts +28 -0
  813. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts.map +1 -0
  814. package/dist/dev/ui/playback-rate/use-playback-rate-options.js +37 -0
  815. package/dist/dev/ui/playback-rate/use-playback-rate-options.js.map +1 -0
  816. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
  817. package/dist/dev/ui/playback-rate-button/playback-rate-button.js +2 -1
  818. package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  819. package/dist/dev/ui/popover/context.d.ts +3 -1
  820. package/dist/dev/ui/popover/context.d.ts.map +1 -1
  821. package/dist/dev/ui/popover/context.js.map +1 -1
  822. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  823. package/dist/dev/ui/popover/popover-popup.js +20 -7
  824. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  825. package/dist/dev/ui/popover/popover-root.d.ts +4 -1
  826. package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
  827. package/dist/dev/ui/popover/popover-root.js +20 -5
  828. package/dist/dev/ui/popover/popover-root.js.map +1 -1
  829. package/dist/dev/ui/poster/poster.d.ts.map +1 -1
  830. package/dist/dev/ui/poster/poster.js +17 -3
  831. package/dist/dev/ui/poster/poster.js.map +1 -1
  832. package/dist/dev/ui/quality/index.d.ts +2 -0
  833. package/dist/dev/ui/quality/index.js +2 -0
  834. package/dist/dev/ui/quality/use-quality-options.d.ts +27 -0
  835. package/dist/dev/ui/quality/use-quality-options.d.ts.map +1 -0
  836. package/dist/dev/ui/quality/use-quality-options.js +40 -0
  837. package/dist/dev/ui/quality/use-quality-options.js.map +1 -0
  838. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
  839. package/dist/dev/ui/seek-button/seek-button.js +3 -1
  840. package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
  841. package/dist/dev/ui/seek-indicator/context.js +20 -0
  842. package/dist/dev/ui/seek-indicator/context.js.map +1 -0
  843. package/dist/dev/ui/seek-indicator/index.d.ts +2 -0
  844. package/dist/dev/ui/seek-indicator/index.js +2 -0
  845. package/dist/dev/ui/seek-indicator/index.parts.d.ts +10 -0
  846. package/dist/dev/ui/seek-indicator/index.parts.d.ts.map +1 -0
  847. package/dist/dev/ui/seek-indicator/index.parts.js +12 -0
  848. package/dist/dev/ui/seek-indicator/index.parts.js.map +1 -0
  849. package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts +14 -0
  850. package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts.map +1 -0
  851. package/dist/dev/ui/seek-indicator/seek-indicator-root.js +30 -0
  852. package/dist/dev/ui/seek-indicator/seek-indicator-root.js.map +1 -0
  853. package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts +13 -0
  854. package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts.map +1 -0
  855. package/dist/dev/ui/seek-indicator/seek-indicator-value.js +23 -0
  856. package/dist/dev/ui/seek-indicator/seek-indicator-value.js.map +1 -0
  857. package/dist/dev/ui/slider/context.js.map +1 -1
  858. package/dist/dev/ui/status-announcer/index.d.ts +2 -0
  859. package/dist/dev/ui/status-announcer/index.js +2 -0
  860. package/dist/dev/ui/status-announcer/status-announcer.d.ts +14 -0
  861. package/dist/dev/ui/status-announcer/status-announcer.d.ts.map +1 -0
  862. package/dist/dev/ui/status-announcer/status-announcer.js +36 -0
  863. package/dist/dev/ui/status-announcer/status-announcer.js.map +1 -0
  864. package/dist/dev/ui/status-indicator/context.js +20 -0
  865. package/dist/dev/ui/status-indicator/context.js.map +1 -0
  866. package/dist/dev/ui/status-indicator/index.d.ts +2 -0
  867. package/dist/dev/ui/status-indicator/index.js +2 -0
  868. package/dist/dev/ui/status-indicator/index.parts.d.ts +10 -0
  869. package/dist/dev/ui/status-indicator/index.parts.d.ts.map +1 -0
  870. package/dist/dev/ui/status-indicator/index.parts.js +12 -0
  871. package/dist/dev/ui/status-indicator/index.parts.js.map +1 -0
  872. package/dist/dev/ui/status-indicator/status-indicator-root.d.ts +14 -0
  873. package/dist/dev/ui/status-indicator/status-indicator-root.d.ts.map +1 -0
  874. package/dist/dev/ui/status-indicator/status-indicator-root.js +34 -0
  875. package/dist/dev/ui/status-indicator/status-indicator-root.js.map +1 -0
  876. package/dist/dev/ui/status-indicator/status-indicator-value.d.ts +13 -0
  877. package/dist/dev/ui/status-indicator/status-indicator-value.d.ts.map +1 -0
  878. package/dist/dev/ui/status-indicator/status-indicator-value.js +23 -0
  879. package/dist/dev/ui/status-indicator/status-indicator-value.js.map +1 -0
  880. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  881. package/dist/dev/ui/time/time-value.js +32 -5
  882. package/dist/dev/ui/time/time-value.js.map +1 -1
  883. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
  884. package/dist/dev/ui/time-slider/time-slider-root.js +18 -6
  885. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  886. package/dist/dev/ui/tooltip/context.d.ts +10 -4
  887. package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
  888. package/dist/dev/ui/tooltip/context.js.map +1 -1
  889. package/dist/dev/ui/tooltip/index.d.ts +2 -2
  890. package/dist/dev/ui/tooltip/index.parts.d.ts +3 -1
  891. package/dist/dev/ui/tooltip/index.parts.js +4 -0
  892. package/dist/dev/ui/tooltip/index.parts.js.map +1 -1
  893. package/dist/dev/ui/tooltip/tooltip-arrow.js +1 -1
  894. package/dist/dev/ui/tooltip/tooltip-label.d.ts +15 -0
  895. package/dist/dev/ui/tooltip/tooltip-label.d.ts.map +1 -0
  896. package/dist/dev/ui/tooltip/tooltip-label.js +24 -0
  897. package/dist/dev/ui/tooltip/tooltip-label.js.map +1 -0
  898. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  899. package/dist/dev/ui/tooltip/tooltip-popup.js +26 -9
  900. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  901. package/dist/dev/ui/tooltip/tooltip-root.d.ts +4 -1
  902. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  903. package/dist/dev/ui/tooltip/tooltip-root.js +17 -5
  904. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  905. package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts +15 -0
  906. package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts.map +1 -0
  907. package/dist/dev/ui/tooltip/tooltip-shortcut.js +25 -0
  908. package/dist/dev/ui/tooltip/tooltip-shortcut.js.map +1 -0
  909. package/dist/dev/ui/volume-indicator/context.js +20 -0
  910. package/dist/dev/ui/volume-indicator/context.js.map +1 -0
  911. package/dist/dev/ui/volume-indicator/index.d.ts +2 -0
  912. package/dist/dev/ui/volume-indicator/index.js +2 -0
  913. package/dist/dev/ui/volume-indicator/index.parts.d.ts +11 -0
  914. package/dist/dev/ui/volume-indicator/index.parts.d.ts.map +1 -0
  915. package/dist/dev/ui/volume-indicator/index.parts.js +14 -0
  916. package/dist/dev/ui/volume-indicator/index.parts.js.map +1 -0
  917. package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts +13 -0
  918. package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts.map +1 -0
  919. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js +36 -0
  920. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js.map +1 -0
  921. package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts +14 -0
  922. package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts.map +1 -0
  923. package/dist/dev/ui/volume-indicator/volume-indicator-root.js +30 -0
  924. package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -0
  925. package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts +13 -0
  926. package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts.map +1 -0
  927. package/dist/dev/ui/volume-indicator/volume-indicator-value.js +23 -0
  928. package/dist/dev/ui/volume-indicator/volume-indicator-value.js.map +1 -0
  929. package/dist/dev/utils/use-attach-iframe.js +14 -0
  930. package/dist/dev/utils/use-attach-iframe.js.map +1 -0
  931. package/dist/dev/utils/use-media-instance.d.ts +7 -2
  932. package/dist/dev/utils/use-media-instance.d.ts.map +1 -1
  933. package/dist/dev/utils/use-media-instance.js +11 -3
  934. package/dist/dev/utils/use-media-instance.js.map +1 -1
  935. package/dist/dev/utils/use-render.d.ts.map +1 -1
  936. package/dist/dev/utils/use-render.js +1 -1
  937. package/dist/dev/utils/use-render.js.map +1 -1
  938. package/docs/README.md +7 -0
  939. package/docs/concepts/accessibility.md +60 -0
  940. package/docs/concepts/browser-support.md +37 -0
  941. package/docs/concepts/cast.md +162 -0
  942. package/docs/concepts/features.md +131 -0
  943. package/docs/concepts/overview.md +119 -0
  944. package/docs/concepts/presets.md +230 -0
  945. package/docs/concepts/skins.md +2679 -0
  946. package/docs/concepts/ui-components.md +83 -0
  947. package/docs/concepts/v10-roadmap.md +75 -0
  948. package/docs/concepts/why-videojs.md +113 -0
  949. package/docs/how-to/build-with-ai.md +39 -0
  950. package/docs/how-to/build-your-own-component.md +142 -0
  951. package/docs/how-to/customize-skins.md +7864 -0
  952. package/docs/how-to/installation.md +170 -0
  953. package/docs/llms.txt +113 -0
  954. package/docs/reference/airplay-button.md +264 -0
  955. package/docs/reference/audio-track-radio-group.md +59 -0
  956. package/docs/reference/background-video.md +76 -0
  957. package/docs/reference/buffering-indicator.md +152 -0
  958. package/docs/reference/captions-button.md +216 -0
  959. package/docs/reference/cast-button.md +236 -0
  960. package/docs/reference/controls.md +238 -0
  961. package/docs/reference/create-player.md +261 -0
  962. package/docs/reference/create-selector.md +59 -0
  963. package/docs/reference/dash-video.md +138 -0
  964. package/docs/reference/feature-audio-track.md +60 -0
  965. package/docs/reference/feature-buffer.md +54 -0
  966. package/docs/reference/feature-controls.md +74 -0
  967. package/docs/reference/feature-error.md +65 -0
  968. package/docs/reference/feature-fullscreen.md +111 -0
  969. package/docs/reference/feature-live.md +62 -0
  970. package/docs/reference/feature-orientation-lock.md +35 -0
  971. package/docs/reference/feature-pip.md +94 -0
  972. package/docs/reference/feature-playback-rate.md +70 -0
  973. package/docs/reference/feature-playback.md +109 -0
  974. package/docs/reference/feature-quality.md +70 -0
  975. package/docs/reference/feature-remote-playback.md +76 -0
  976. package/docs/reference/feature-source.md +70 -0
  977. package/docs/reference/feature-stream-type.md +46 -0
  978. package/docs/reference/feature-text-tracks.md +114 -0
  979. package/docs/reference/feature-time.md +84 -0
  980. package/docs/reference/feature-volume.md +99 -0
  981. package/docs/reference/fullscreen-button.md +212 -0
  982. package/docs/reference/hlsjs-video.md +274 -0
  983. package/docs/reference/menu.md +1194 -0
  984. package/docs/reference/mute-button.md +276 -0
  985. package/docs/reference/mux-audio.md +218 -0
  986. package/docs/reference/mux-video.md +275 -0
  987. package/docs/reference/native-hls-video.md +212 -0
  988. package/docs/reference/pip-button.md +212 -0
  989. package/docs/reference/play-button.md +224 -0
  990. package/docs/reference/playback-rate-button.md +185 -0
  991. package/docs/reference/player-container.md +109 -0
  992. package/docs/reference/player-provider.md +104 -0
  993. package/docs/reference/popover.md +527 -0
  994. package/docs/reference/poster.md +137 -0
  995. package/docs/reference/quality-radio-group.md +59 -0
  996. package/docs/reference/render-element.md +196 -0
  997. package/docs/reference/seek-button.md +213 -0
  998. package/docs/reference/simple-hls-audio-only.md +93 -0
  999. package/docs/reference/simple-hls-video.md +150 -0
  1000. package/docs/reference/slider.md +826 -0
  1001. package/docs/reference/thumbnail.md +322 -0
  1002. package/docs/reference/time-slider.md +753 -0
  1003. package/docs/reference/time.md +519 -0
  1004. package/docs/reference/tooltip.md +715 -0
  1005. package/docs/reference/use-button.md +124 -0
  1006. package/docs/reference/use-container-attach.md +42 -0
  1007. package/docs/reference/use-media-attach.md +46 -0
  1008. package/docs/reference/use-media.md +112 -0
  1009. package/docs/reference/use-player-context.md +93 -0
  1010. package/docs/reference/use-player.md +241 -0
  1011. package/docs/reference/use-selector.md +132 -0
  1012. package/docs/reference/use-snapshot.md +127 -0
  1013. package/docs/reference/use-store.md +257 -0
  1014. package/docs/reference/volume-slider.md +716 -0
  1015. package/package.json +23 -10
  1016. package/dist/default/media/hls-video/index.js.map +0 -1
  1017. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +0 -12
  1018. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +0 -1
  1019. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +0 -13
  1020. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +0 -1
  1021. package/dist/default/ui/hotkey/use-aria-key-shortcuts.js +0 -16
  1022. package/dist/default/ui/hotkey/use-aria-key-shortcuts.js.map +0 -1
  1023. package/dist/dev/media/hls-video/index.d.ts +0 -15
  1024. package/dist/dev/media/hls-video/index.d.ts.map +0 -1
  1025. package/dist/dev/media/hls-video/index.js.map +0 -1
  1026. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +0 -12
  1027. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +0 -1
  1028. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +0 -13
  1029. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +0 -1
  1030. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts +0 -5
  1031. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.d.ts.map +0 -1
  1032. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js +0 -16
  1033. package/dist/dev/ui/hotkey/use-aria-key-shortcuts.js.map +0 -1
@@ -16,6 +16,10 @@
16
16
  .media-minimal-skin button {
17
17
  font: inherit;
18
18
  }
19
+ .media-minimal-skin [hidden][hidden] {
20
+ /* Keep authored templates hidden even when component classes set display. */
21
+ display: none;
22
+ }
19
23
  @media (prefers-reduced-motion: no-preference) {
20
24
  .media-minimal-skin {
21
25
  interpolate-size: allow-keywords;
@@ -27,38 +31,49 @@
27
31
  ========================================================================== */
28
32
 
29
33
  .media-minimal-skin {
30
- container: media-root / inline-size;
34
+ --media-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
35
+ --media-current-shadow-color-subtle: oklch(from var(--media-current-shadow-color) l c h / calc(alpha * 0.4));
36
+ --media-icon-size: 18px;
37
+ --media-color-scrollbar-thumb: oklch(from currentColor l c h / 0.3);
31
38
  position: relative;
32
- isolation: isolate;
33
39
  display: block;
34
- height: 100%;
35
40
  width: 100%;
36
- border-radius: var(--media-border-radius, 0.75rem);
37
- outline: 2px solid transparent;
38
- outline-offset: 2px;
39
-
40
- &:focus-visible {
41
- outline-color: currentColor;
42
- }
41
+ height: 100%;
42
+ container: media-root / inline-size;
43
43
  font-family:
44
44
  Inter Variable,
45
45
  Inter,
46
46
  ui-sans-serif,
47
47
  system-ui,
48
48
  sans-serif;
49
- line-height: 1.5;
50
- letter-spacing: normal;
49
+ font-size: 0.8125rem; /* 13px at 100% font size */
51
50
  -webkit-font-smoothing: auto;
52
51
  -moz-osx-font-smoothing: auto;
52
+ line-height: 1.5;
53
+ letter-spacing: normal;
54
+ outline: 2px solid transparent;
55
+ outline-offset: -4px;
56
+ scrollbar-color: var(--media-color-scrollbar-thumb) transparent;
57
+ scrollbar-width: thin;
58
+ border-radius: var(--media-border-radius, 0.75rem);
59
+ isolation: isolate;
60
+ transition-timing-function: ease-out;
61
+ transition-duration: 100ms;
62
+ transition-property: outline-offset, outline-color;
53
63
 
54
- & > * {
55
- font-size: 0.75rem; /* 12px at 100% font size */
64
+ &:focus-visible {
65
+ outline-color: currentColor;
66
+ outline-offset: 2px;
56
67
  }
57
68
 
58
- @container media-root (width > 48rem) {
59
- & > * {
60
- font-size: 0.875rem; /* 14px at 100% font size */
61
- }
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;
62
77
  }
63
78
  }
64
79
 
@@ -93,19 +108,19 @@
93
108
  .media-minimal-skin .media-overlay {
94
109
  position: absolute;
95
110
  inset: 0;
96
- border-radius: inherit;
111
+ pointer-events: none;
97
112
  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));
98
- backdrop-filter: blur(0) saturate(1);
113
+ border-radius: inherit;
99
114
  opacity: 0;
100
- pointer-events: none;
101
- transition-property: opacity, backdrop-filter;
102
- transition-duration: var(--media-controls-transition-duration);
115
+ backdrop-filter: blur(0) saturate(1);
103
116
  transition-timing-function: ease-out;
117
+ transition-duration: var(--media-controls-transition-duration);
118
+ transition-property: opacity, backdrop-filter;
104
119
  }
105
120
 
106
121
  .media-minimal-skin .media-error ~ .media-overlay {
107
- transition-duration: var(--media-error-dialog-transition-duration);
108
122
  transition-delay: var(--media-error-dialog-transition-delay);
123
+ transition-duration: var(--media-error-dialog-transition-duration);
109
124
  }
110
125
 
111
126
  .media-minimal-skin .media-controls[data-visible] ~ .media-overlay,
@@ -113,6 +128,12 @@
113
128
  opacity: 1;
114
129
  }
115
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
+
116
137
  .media-minimal-skin .media-error[data-open] ~ .media-overlay {
117
138
  backdrop-filter: blur(16px) saturate(1.2);
118
139
  }
@@ -124,14 +145,18 @@
124
145
  .media-minimal-skin .media-buffering-indicator {
125
146
  position: absolute;
126
147
  inset: 0;
148
+ z-index: 10;
127
149
  display: none;
128
- align-items: center;
129
- justify-content: center;
150
+ place-content: center;
130
151
  color: oklch(1 0 0);
131
152
  pointer-events: none;
132
153
 
154
+ &:not([data-visible]) {
155
+ --media-spinner-animation: none;
156
+ }
157
+
133
158
  &[data-visible] {
134
- display: flex;
159
+ display: grid;
135
160
  }
136
161
  }
137
162
 
@@ -149,8 +174,8 @@
149
174
  }
150
175
 
151
176
  .media-minimal-skin .media-error__description {
152
- opacity: 0.7;
153
177
  overflow-wrap: anywhere;
178
+ opacity: 0.7;
154
179
  }
155
180
 
156
181
  .media-minimal-skin .media-error__actions {
@@ -171,17 +196,12 @@
171
196
  ========================================================================== */
172
197
 
173
198
  .media-minimal-skin .media-controls {
174
- container: media-controls / inline-size;
175
199
  display: flex;
176
200
  align-items: center;
177
- --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
178
- --media-controls-current-shadow-color-subtle: oklch(
179
- from var(--media-controls-current-shadow-color) l c h /
180
- calc(alpha * 0.4)
181
- );
201
+ container: media-controls / inline-size;
202
+ text-shadow: 0 1px 0 var(--media-current-shadow-color);
182
203
  background-color: var(--media-controls-background-color);
183
204
  backdrop-filter: var(--media-controls-backdrop-filter);
184
- text-shadow: 0 1px 0 var(--media-controls-current-shadow-color);
185
205
  }
186
206
 
187
207
  /* ==========================================================================
@@ -189,24 +209,44 @@
189
209
  ========================================================================== */
190
210
 
191
211
  .media-minimal-skin .media-time-controls {
192
- container: media-time-controls / inline-size;
193
212
  display: flex;
194
- flex-direction: row-reverse;
195
- align-items: center;
196
213
  flex: 1;
214
+ flex-direction: row-reverse;
197
215
  gap: 0.75rem;
216
+ align-items: center;
217
+ container: media-time-controls / inline-size;
198
218
  }
199
219
 
200
220
  .media-minimal-skin .media-time-group {
201
221
  display: flex;
202
- align-items: center;
203
222
  gap: 0.25rem;
223
+ align-items: center;
204
224
  }
205
225
 
206
226
  .media-minimal-skin .media-time {
207
227
  font-variant-numeric: tabular-nums;
208
228
  }
209
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
+
210
250
  .media-minimal-skin .media-time--current,
211
251
  .media-minimal-skin .media-time-separator {
212
252
  display: none;
@@ -235,23 +275,24 @@
235
275
  /* Base button */
236
276
  .media-minimal-skin .media-button {
237
277
  display: flex;
278
+ flex-shrink: 0;
238
279
  align-items: center;
239
280
  justify-content: center;
240
- flex-shrink: 0;
281
+ min-height: 0;
241
282
  padding: 0.5rem 1rem;
242
- border: none;
243
- border-radius: 0.5rem;
283
+ text-align: center;
284
+ touch-action: manipulation;
285
+ cursor: pointer;
286
+ user-select: none;
244
287
  outline: 2px solid transparent;
245
288
  outline-offset: -2px;
289
+ border: none;
290
+ border-radius: 0.5rem;
291
+ transition-timing-function: ease-out;
292
+ transition-duration: 150ms;
246
293
  transition-property: background-color, outline-offset, scale;
247
294
  /* Fix weird jumping when clicking on the buttons in Safari. */
248
295
  will-change: scale;
249
- transition-duration: 150ms;
250
- transition-timing-function: ease-out;
251
- cursor: pointer;
252
- user-select: none;
253
- text-align: center;
254
- touch-action: manipulation;
255
296
 
256
297
  &:focus-visible {
257
298
  outline-color: currentColor;
@@ -263,9 +304,9 @@
263
304
  }
264
305
 
265
306
  &[disabled] {
307
+ cursor: not-allowed;
266
308
  opacity: 0.5;
267
309
  filter: grayscale(1);
268
- cursor: not-allowed;
269
310
  }
270
311
 
271
312
  &[data-availability="unavailable"],
@@ -274,28 +315,26 @@
274
315
  }
275
316
  }
276
317
 
277
- /* biome-ignore lint/correctness/noUnknownProperty: corner-shape is an emerging CSS spec */
278
318
  @supports (corner-shape: squircle) {
279
319
  .media-minimal-skin .media-button {
280
320
  border-radius: 1rem;
281
- /* biome-ignore lint/correctness/noUnknownProperty: corner-shape is an emerging CSS spec */
282
321
  corner-shape: squircle;
283
322
  }
284
323
  }
285
324
 
286
325
  /* Primary button variant */
287
326
  .media-minimal-skin .media-button--primary {
288
- background: oklch(1 0 0);
289
- color: oklch(0 0 0);
290
327
  font-weight: 500;
328
+ color: oklch(0 0 0);
291
329
  text-shadow: none;
330
+ background: oklch(1 0 0);
292
331
  }
293
332
 
294
333
  /* Subtle button variant */
295
334
  .media-minimal-skin .media-button--subtle {
296
- background: transparent;
297
335
  color: inherit;
298
336
  text-shadow: inherit;
337
+ background: transparent;
299
338
 
300
339
  &:hover,
301
340
  &:focus-visible,
@@ -308,15 +347,24 @@
308
347
  .media-minimal-skin .media-button--icon {
309
348
  display: grid;
310
349
  width: 2.375rem;
311
- padding: 0;
312
350
  aspect-ratio: 1;
351
+ padding: 0;
313
352
 
314
353
  &:active {
315
354
  scale: 0.9;
316
355
  }
317
356
 
357
+ & .media-icon__container {
358
+ display: grid;
359
+ }
360
+
318
361
  & .media-icon {
319
- filter: drop-shadow(0 1px 0 var(--media-controls-current-shadow-color, oklch(0 0 0 / 0.25)));
362
+ grid-area: 1 / 1;
363
+ transition-behavior: allow-discrete;
364
+ transition-property: display, opacity;
365
+ transition-duration: 150ms;
366
+ transition-timing-function: ease-out;
367
+ filter: drop-shadow(0 1px 0 var(--media-current-shadow-color));
320
368
  }
321
369
  }
322
370
 
@@ -327,8 +375,9 @@
327
375
  right: -1px;
328
376
  bottom: -3px;
329
377
  font-size: 10px; /* Hard coded due to size limitations. */
330
- font-weight: 480;
378
+ font-weight: 500;
331
379
  font-variant-numeric: tabular-nums;
380
+ letter-spacing: -0.05em;
332
381
  }
333
382
 
334
383
  &:has(.media-icon--flipped) .media-icon__label {
@@ -340,11 +389,68 @@
340
389
  /* Playback rate button */
341
390
  .media-minimal-skin .media-button--playback-rate {
342
391
  padding: 0;
392
+ font-variant-numeric: tabular-nums;
343
393
 
344
394
  &::after {
345
- content: attr(data-rate) "\00D7";
346
395
  width: 4ch;
347
- font-variant-numeric: tabular-nums;
396
+ content: attr(data-rate) "\00D7";
397
+ }
398
+
399
+ &[data-inline-rate-label]::after {
400
+ content: none;
401
+ }
402
+ }
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
+
425
+ /* Live button — wide pill button with a status dot (gray → red at the live
426
+ edge) rendered via ::before, and "LIVE" text rendered as the button's own
427
+ text content. */
428
+ .media-minimal-skin .media-button--live {
429
+ display: inline-flex;
430
+ gap: 0.4rem;
431
+ align-items: center;
432
+ width: auto;
433
+ aspect-ratio: auto;
434
+ padding: 0.5rem 0.75rem;
435
+ font-size: 0.75rem;
436
+ font-weight: 600;
437
+ line-height: 1;
438
+ text-transform: uppercase;
439
+ letter-spacing: 0.05em;
440
+
441
+ &::before {
442
+ display: inline-block;
443
+ flex-shrink: 0;
444
+ width: 0.5rem;
445
+ height: 0.5rem;
446
+ content: "";
447
+ background-color: oklch(from currentColor l c h / 0.4);
448
+ border-radius: 50%;
449
+ transition: background-color 150ms ease-out;
450
+ }
451
+
452
+ &[data-live-edge]::before {
453
+ background-color: oklch(0.65 0.22 27);
348
454
  }
349
455
  }
350
456
 
@@ -354,14 +460,29 @@
354
460
 
355
461
  .media-minimal-skin .media-button-group {
356
462
  display: flex;
357
- align-items: center;
358
463
  gap: 0.075rem;
464
+ align-items: center;
359
465
 
360
466
  @container media-root (width > 42rem) {
361
467
  gap: 0.125rem;
362
468
  }
363
469
  }
364
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
+
365
486
  /* ==========================================================================
366
487
  Icons
367
488
  ========================================================================== */
@@ -369,16 +490,11 @@
369
490
  .media-minimal-skin .media-icon__container {
370
491
  position: relative;
371
492
  }
493
+
372
494
  .media-minimal-skin .media-icon {
373
- display: block;
374
495
  flex-shrink: 0;
375
- grid-area: 1 / 1;
376
- width: 18px;
377
- height: 18px;
378
- transition-behavior: allow-discrete;
379
- transition-property: display, opacity;
380
- transition-duration: 150ms;
381
- transition-timing-function: ease-out;
496
+ width: var(--media-icon-size);
497
+ height: var(--media-icon-size);
382
498
  }
383
499
  .media-minimal-skin .media-icon--flipped {
384
500
  scale: -1 1;
@@ -394,11 +510,12 @@
394
510
  inset: 0;
395
511
  width: 100%;
396
512
  height: 100%;
397
- transition: opacity 0.25s;
398
513
  pointer-events: none;
514
+ transition: opacity 0.25s;
399
515
  }
400
516
  .media-minimal-skin media-poster:not([data-visible]),
401
- .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]) {
402
519
  opacity: 0;
403
520
  }
404
521
  .media-minimal-skin media-poster ::slotted(img),
@@ -417,6 +534,30 @@
417
534
  border-radius: inherit;
418
535
  }
419
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
+
420
561
  .media-minimal-skin:fullscreen media-poster ::slotted(img),
421
562
  .media-minimal-skin:fullscreen media-poster img,
422
563
  .media-minimal-skin:fullscreen > img {
@@ -424,49 +565,56 @@
424
565
  }
425
566
 
426
567
  /* ==========================================================================
427
- Media preview
568
+ Media thumbnail
428
569
  ========================================================================== */
429
- .media-minimal-skin .media-preview {
570
+
571
+ .media-minimal-skin .media-thumbnail {
430
572
  pointer-events: none;
431
573
 
432
- & .media-preview__thumbnail-wrapper {
574
+ & .media-thumbnail__image-wrapper {
433
575
  position: relative;
434
- border-radius: 0.5rem;
435
576
  background-color: oklch(0 0 0 / 0.9);
577
+ border-radius: 0.5rem;
436
578
  }
437
- & .media-preview__thumbnail {
579
+ & .media-thumbnail__image {
438
580
  display: block;
439
581
  border-radius: inherit;
440
582
  }
441
583
 
442
- & .media-preview__time {
584
+ & .media-thumbnail__time {
443
585
  display: block;
444
- text-align: center;
445
586
  margin-top: 0.5rem;
587
+ text-align: center;
446
588
  }
447
589
 
448
590
  & .media-overlay {
449
591
  opacity: 1;
450
592
  }
451
593
 
452
- & .media-preview__spinner {
594
+ & .media-thumbnail__spinner {
453
595
  position: absolute;
454
596
  top: 50%;
455
597
  left: 50%;
456
- translate: -50% -50%;
457
598
  opacity: 0;
599
+ translate: -50% -50%;
458
600
  }
459
601
 
460
- & .media-preview__thumbnail,
461
- & .media-preview__spinner {
602
+ & .media-thumbnail__image,
603
+ & .media-thumbnail__spinner {
462
604
  transition: opacity 150ms ease-out;
463
605
  }
464
606
 
465
- &:has(.media-preview__thumbnail[data-loading]) {
466
- & .media-preview__thumbnail {
607
+ &:not(:has(.media-thumbnail__image[data-loading])) {
608
+ & .media-thumbnail__spinner {
609
+ --media-spinner-animation: none;
610
+ }
611
+ }
612
+
613
+ &:has(.media-thumbnail__image[data-loading]) {
614
+ & .media-thumbnail__image {
467
615
  opacity: 0;
468
616
  }
469
- & .media-preview__spinner {
617
+ & .media-thumbnail__spinner {
470
618
  opacity: 1;
471
619
  }
472
620
  }
@@ -479,16 +627,16 @@
479
627
  .media-minimal-skin .media-slider {
480
628
  position: relative;
481
629
  display: flex;
630
+ flex: 1;
482
631
  align-items: center;
483
632
  justify-content: center;
484
- flex: 1;
485
- border-radius: calc(infinity * 1px);
486
- outline: none;
487
633
  cursor: pointer;
634
+ outline: none;
635
+ border-radius: calc(infinity * 1px);
488
636
 
489
637
  &[data-orientation="horizontal"] {
490
- min-width: 5rem;
491
638
  width: 100%;
639
+ min-width: 5rem;
492
640
  height: 2rem;
493
641
  }
494
642
 
@@ -501,11 +649,11 @@
501
649
  /* Track */
502
650
  .media-minimal-skin .media-slider__track {
503
651
  position: relative;
504
- isolation: isolate;
505
652
  overflow: hidden;
506
- border-radius: inherit;
507
653
  user-select: none;
508
654
  background-color: oklch(from currentColor l c h / 0.2);
655
+ border-radius: inherit;
656
+ isolation: isolate;
509
657
 
510
658
  &[data-orientation="horizontal"] {
511
659
  width: 100%;
@@ -521,25 +669,25 @@
521
669
  /* Thumb */
522
670
  .media-minimal-skin .media-slider__thumb {
523
671
  position: absolute;
524
- translate: -50% -50%;
525
672
  z-index: 10;
526
673
  width: 0.75rem;
527
674
  height: 0.75rem;
675
+ user-select: none;
676
+ outline: 2px solid transparent;
677
+ outline-offset: -2px;
528
678
  background-color: currentColor;
529
679
  border-radius: calc(infinity * 1px);
530
680
  box-shadow:
531
- 0 0 0 1px var(--media-controls-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)),
532
682
  0 1px 3px 0 oklch(0 0 0 / 0.15),
533
683
  0 1px 2px -1px oklch(0 0 0 / 0.15);
534
684
  opacity: 0;
535
- scale: 0.7;
536
685
  transform-origin: center;
537
- transition-property: opacity, scale, outline-offset;
538
- transition-duration: 150ms;
686
+ scale: 0.7;
687
+ translate: -50% -50%;
539
688
  transition-timing-function: ease-out;
540
- user-select: none;
541
- outline: 2px solid transparent;
542
- outline-offset: -2px;
689
+ transition-duration: 150ms;
690
+ transition-property: opacity, scale, outline-offset;
543
691
 
544
692
  &[data-orientation="horizontal"] {
545
693
  top: 50%;
@@ -547,8 +695,8 @@
547
695
  }
548
696
 
549
697
  &[data-orientation="vertical"] {
550
- left: 50%;
551
698
  top: calc(100% - var(--media-slider-fill));
699
+ left: 50%;
552
700
  }
553
701
 
554
702
  &:focus-visible {
@@ -564,12 +712,59 @@
564
712
  scale: 1;
565
713
  }
566
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
+
567
762
  /* Shared track fills */
568
763
  .media-minimal-skin .media-slider__buffer,
569
764
  .media-minimal-skin .media-slider__fill {
570
765
  position: absolute;
571
- border-radius: inherit;
572
766
  pointer-events: none;
767
+ border-radius: inherit;
573
768
  }
574
769
 
575
770
  .media-minimal-skin .media-slider__buffer[data-orientation="horizontal"],
@@ -587,8 +782,8 @@
587
782
  /* Buffer */
588
783
  .media-minimal-skin .media-slider__buffer {
589
784
  background-color: oklch(from currentColor l c h / 0.2);
590
- transition-duration: 0.25s;
591
785
  transition-timing-function: ease-out;
786
+ transition-duration: 0.25s;
592
787
 
593
788
  &[data-orientation="horizontal"] {
594
789
  width: var(--media-slider-buffer);
@@ -635,51 +830,66 @@
635
830
  Popups & Animations
636
831
  ========================================================================== */
637
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
+
638
841
  .media-minimal-skin .media-popover,
639
842
  .media-minimal-skin .media-tooltip {
843
+ --popup-translate-distance: 0.5rem;
640
844
  margin: 0;
641
- border: 0;
642
- color: inherit;
643
845
  overflow: visible;
644
- transition-property: scale, opacity, filter;
645
- transition-duration: var(--media-popup-transition-duration);
646
- transition-timing-function: var(--media-popup-transition-timing-function);
846
+ color: inherit;
847
+ border: 0;
848
+ transition: var(--media-popup-transition);
647
849
 
648
850
  &[data-starting-style],
649
851
  &[data-ending-style] {
650
852
  opacity: 0;
651
- scale: 0.5;
652
- filter: blur(8px);
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;
653
857
  }
654
858
 
655
- &[data-instant] {
656
- 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));
657
863
  }
658
864
 
659
865
  &[data-side="top"] {
866
+ --popup-translate-y-distance: var(--popup-translate-distance);
660
867
  transform-origin: bottom;
661
868
  }
662
869
  &[data-side="bottom"] {
870
+ --popup-translate-y-distance: calc(var(--popup-translate-distance) * -1);
663
871
  transform-origin: top;
664
872
  }
665
873
  &[data-side="left"] {
874
+ --popup-translate-x-distance: var(--popup-translate-distance);
666
875
  transform-origin: right;
667
876
  }
668
877
  &[data-side="right"] {
878
+ --popup-translate-x-distance: calc(var(--popup-translate-distance) * -1);
669
879
  transform-origin: left;
670
880
  }
671
881
 
672
882
  /* Safe area between trigger and popup */
673
883
  &::before {
674
- content: "";
675
884
  position: absolute;
676
885
  pointer-events: inherit;
886
+ content: "";
677
887
  }
678
888
 
679
889
  &[data-side="top"]::before,
680
890
  &[data-side="bottom"]::before {
681
- width: 100%;
682
891
  inset-inline: 0;
892
+ width: 100%;
683
893
  }
684
894
  &[data-side="top"]::before {
685
895
  top: 100%;
@@ -690,8 +900,8 @@
690
900
 
691
901
  &[data-side="left"]::before,
692
902
  &[data-side="right"]::before {
693
- height: 100%;
694
903
  inset-block: 0;
904
+ height: 100%;
695
905
  }
696
906
  &[data-side="left"]::before {
697
907
  left: 100%;
@@ -714,16 +924,23 @@
714
924
 
715
925
  .media-minimal-skin .media-tooltip {
716
926
  padding: 0.25rem 0.5rem;
717
- border-radius: 0.5rem;
927
+ font-size: 0.75rem; /* 12px at 100% font size */
928
+ color: var(--media-tooltip-text-color);
929
+ white-space: nowrap;
718
930
  background-color: var(--media-tooltip-background-color);
719
- backdrop-filter: var(--media-tooltip-backdrop-filter);
931
+ border-radius: 0.5rem;
720
932
  box-shadow:
721
933
  0 0 0 1px var(--media-tooltip-border-color),
722
- 0 4px 6px -1px oklch(0 0 0 / 0.1),
723
- 0 2px 4px -2px oklch(0 0 0 / 0.1);
724
- color: var(--media-tooltip-text-color);
725
- font-size: 0.75rem; /* 12px at 100% font size */
726
- white-space: nowrap;
934
+ 0 4px 6px -1px oklch(0 0 0 / 0.2),
935
+ 0 2px 4px -2px oklch(0 0 0 / 0.2);
936
+ backdrop-filter: var(--media-tooltip-backdrop-filter);
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
+ }
727
944
 
728
945
  &[data-side="top"]::before,
729
946
  &[data-side="bottom"]::before {
@@ -733,12 +950,258 @@
733
950
  &[data-side="right"]::before {
734
951
  width: var(--media-tooltip-side-offset);
735
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
+ }
736
966
  }
737
967
 
738
968
  .media-minimal-skin .media-popover--volume:has(media-volume-slider[data-availability="unsupported"]) {
739
969
  display: none;
740
970
  }
741
971
 
972
+ /* ==========================================================================
973
+ Menus
974
+ Note: Menus use `.media-popover` styles for positioning and transitions.
975
+ ========================================================================== */
976
+
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));
983
+ box-sizing: border-box;
984
+ max-width: var(--media-popover-available-width, none);
985
+ max-height: min(var(--media-popover-available-height, var(--menu-max-height)), var(--menu-max-height));
986
+ padding: var(--menu-padding);
987
+ overflow: auto;
988
+ overscroll-behavior: none;
989
+ background-color: var(--media-popover-background-color);
990
+ border-radius: var(--menu-border-radius);
991
+ box-shadow:
992
+ 0 0 0 1px var(--media-popover-border-color),
993
+ 0 4px 6px -1px oklch(0 0 0 / 0.1),
994
+ 0 2px 4px -2px oklch(0 0 0 / 0.1);
995
+ backdrop-filter: var(--media-popover-backdrop-filter);
996
+
997
+ @media (prefers-reduced-motion: reduce) {
998
+ --menu-transition-duration: 0ms;
999
+ }
1000
+
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
+ }
1018
+
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;
1023
+
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
+ }
1055
+ }
1056
+
1057
+ & .media-menu__separator {
1058
+ margin: 0.25rem 0;
1059
+ border-bottom: 1px solid oklch(1 0 0 / 0.1);
1060
+ }
1061
+
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
+ }
1079
+ }
1080
+
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;
1097
+
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
+ }
1203
+ }
1204
+
742
1205
  /* ==========================================================================
743
1206
  Native Caption Track
744
1207
  ========================================================================== */
@@ -760,12 +1223,251 @@
760
1223
  }
761
1224
 
762
1225
  .media-minimal-skin video::-webkit-media-text-track-container {
763
- transition: translate var(--media-caption-track-duration) ease-out;
764
- transition-delay: var(--media-caption-track-delay);
765
- translate: 0 var(--media-caption-track-y);
766
- scale: 0.98;
767
1226
  z-index: 1;
768
1227
  font-family: inherit;
1228
+ scale: 0.98;
1229
+ translate: 0 var(--media-caption-track-y);
1230
+ transition: translate var(--media-caption-track-duration) ease-out;
1231
+ transition-delay: var(--media-caption-track-delay);
1232
+ }
1233
+
1234
+ /* ==========================================================================
1235
+ Input Feedback
1236
+ ========================================================================== */
1237
+
1238
+ .media-minimal-skin .media-input-feedback {
1239
+ position: absolute;
1240
+ inset-inline: 0;
1241
+ top: 0;
1242
+ bottom: 3.5rem; /* Shift up a little in smaller containers */
1243
+ display: grid;
1244
+ grid-template-columns: 1fr 1fr 1fr;
1245
+ align-items: center;
1246
+ justify-items: center;
1247
+ overflow: hidden;
1248
+ color: var(--media-color-primary, oklch(1 0 0));
1249
+ pointer-events: none;
1250
+ border-radius: inherit;
1251
+
1252
+ @container media-root (width > 24rem) {
1253
+ bottom: 0;
1254
+ }
1255
+ }
1256
+
1257
+ /* --- Feedback islands ------------------------------------------------------- */
1258
+
1259
+ .media-minimal-skin .media-input-feedback-island {
1260
+ position: absolute;
1261
+ inset-inline: 0;
1262
+ top: 0;
1263
+ display: flex;
1264
+ justify-content: center;
1265
+ padding-top: 0.75rem;
1266
+ padding-bottom: 8rem;
1267
+ color: inherit;
1268
+ text-shadow: 0 1px 0 var(--media-current-shadow-color);
1269
+ pointer-events: none;
1270
+ background-image: linear-gradient(to bottom, oklch(0 0 0 / 0.35), oklch(0 0 0 / 0.2) 3rem, oklch(0 0 0 / 0));
1271
+ transform-origin: top center;
1272
+ transition-timing-function: ease-out;
1273
+ transition-duration: 100ms;
1274
+
1275
+ .media-input-feedback-island__content {
1276
+ display: flex;
1277
+ gap: 0.5rem;
1278
+ align-items: center;
1279
+ justify-content: space-between;
1280
+ padding: 0.25rem 0.625rem;
1281
+ }
1282
+
1283
+ .media-icon {
1284
+ display: none;
1285
+ flex-shrink: 0;
1286
+ filter: drop-shadow(0 1px 0 var(--media-current-shadow-color));
1287
+ }
1288
+
1289
+ .media-input-feedback-island__value {
1290
+ margin-left: auto;
1291
+ }
1292
+
1293
+ @media (pointer: fine) {
1294
+ transition-property: translate, filter, opacity;
1295
+ will-change: translate, filter, opacity;
1296
+ }
1297
+
1298
+ @media (pointer: coarse) {
1299
+ transition-property: translate, opacity;
1300
+ will-change: translate, opacity;
1301
+ }
1302
+
1303
+ @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1304
+ transition-property: translate, filter, opacity;
1305
+ }
1306
+
1307
+ @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
1308
+ .media-input-feedback-island__content {
1309
+ background: var(--media-controls-background-color);
1310
+ border-radius: 0.5rem;
1311
+ }
1312
+ }
1313
+
1314
+ /* Default hidden state */
1315
+ &[data-starting-style],
1316
+ &[data-ending-style] {
1317
+ opacity: 0;
1318
+ transition-timing-function: ease-in;
1319
+ transition-duration: 400ms;
1320
+
1321
+ @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1322
+ filter: blur(8px);
1323
+ }
1324
+
1325
+ @media (prefers-reduced-motion: no-preference) {
1326
+ &[data-ending-style] {
1327
+ translate: 0 -100%;
1328
+ }
1329
+ }
1330
+ }
1331
+ }
1332
+
1333
+ .media-minimal-skin .media-input-feedback-island--volume {
1334
+ .media-input-feedback-island__content {
1335
+ width: min(80%, 14rem);
1336
+ }
1337
+
1338
+ .media-input-feedback-island__progress {
1339
+ --media-progress-fill: var(--media-volume-fill);
1340
+ width: 100%;
1341
+ height: 0.1875rem;
1342
+ background-image: linear-gradient(
1343
+ to right,
1344
+ currentColor 0%,
1345
+ currentColor var(--media-progress-fill),
1346
+ oklch(from currentColor l c h / 0.2) var(--media-progress-fill),
1347
+ oklch(from currentColor l c h / 0.2) 100%
1348
+ );
1349
+ border-radius: calc(Infinity * 1px);
1350
+ box-shadow: 0 1px 0 var(--media-current-shadow-color-subtle);
1351
+ }
1352
+
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
+ }
1358
+
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
+ }
1365
+ }
1366
+
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;
1375
+ }
1376
+ }
1377
+
1378
+ /* --- Bubble ---------------------------------------------------------------- */
1379
+
1380
+ .media-minimal-skin .media-input-feedback-bubble {
1381
+ display: grid;
1382
+ grid-row: 1;
1383
+ grid-column: 2;
1384
+ place-content: center;
1385
+ padding: 1rem;
1386
+ text-align: center;
1387
+
1388
+ /* Central bubble (play, pause) */
1389
+ &:not([data-direction]) {
1390
+ transition-timing-function: ease-out;
1391
+ transition-duration: 200ms;
1392
+ transition-property: opacity, scale;
1393
+
1394
+ &[data-starting-style],
1395
+ &[data-ending-style] {
1396
+ opacity: 0;
1397
+ scale: 0.85;
1398
+ }
1399
+
1400
+ &[data-ending-style] {
1401
+ transition-timing-function: ease-in;
1402
+ transition-duration: 100ms;
1403
+ }
1404
+
1405
+ @media (prefers-reduced-motion: reduce) {
1406
+ transition-duration: 50ms;
1407
+ transition-property: opacity;
1408
+ }
1409
+ }
1410
+
1411
+ /* Directional bubbles (seek) */
1412
+ &[data-direction] {
1413
+ gap: 0.25rem;
1414
+
1415
+ @container media-root (width > 24rem) {
1416
+ padding: 1.5rem;
1417
+ }
1418
+ }
1419
+
1420
+ &[data-direction="backward"] {
1421
+ grid-column: 1;
1422
+ justify-self: left;
1423
+ }
1424
+
1425
+ &[data-direction="forward"] {
1426
+ grid-column: 3;
1427
+ justify-self: right;
1428
+ }
1429
+
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
+ }
1436
+
1437
+ .media-icon--seek {
1438
+ width: calc(var(--media-icon-size) * 1.5);
1439
+ height: calc(var(--media-icon-size) * 1.5);
1440
+ }
1441
+
1442
+ &[data-direction] .media-icon--seek,
1443
+ &[data-status="pause"] .media-icon--pause,
1444
+ &[data-status="play"] .media-icon--play {
1445
+ display: block;
1446
+ }
1447
+
1448
+ &[data-direction="backward"] .media-icon--seek {
1449
+ scale: -1 1;
1450
+ }
1451
+
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
+ }
769
1471
  }
770
1472
 
771
1473
  /* ==========================================================================
@@ -790,6 +1492,8 @@
790
1492
  .media-button--pip .media-icon--pip-exit,
791
1493
  .media-button--cast .media-icon--cast-enter,
792
1494
  .media-button--cast .media-icon--cast-exit,
1495
+ .media-button--airplay .media-icon--airplay-enter,
1496
+ .media-button--airplay .media-icon--airplay-exit,
793
1497
  .media-button--captions .media-icon--captions-off,
794
1498
  .media-button--captions .media-icon--captions-on {
795
1499
  display: none;
@@ -800,10 +1504,11 @@
800
1504
 
801
1505
  /* Play: ended → restart */
802
1506
  .media-button--play[data-ended] .media-icon--restart,
803
- /* Play: paused (not ended) → play */
1507
+ /* Play: paused or not yet started (not ended) → play */
804
1508
  .media-button--play:not([data-ended])[data-paused] .media-icon--play,
805
- /* Play: playing (not paused, not ended) → pause */
806
- .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,
807
1512
  /* Mute: muted → volume off */
808
1513
  .media-button--mute[data-muted] .media-icon--volume-off,
809
1514
  /* Mute: volume low (not muted) → volume low */
@@ -822,6 +1527,10 @@
822
1527
  .media-button--cast:not([data-cast-state="connected"]) .media-icon--cast-enter,
823
1528
  /* Cast: connected → exit */
824
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,
825
1534
  /* Captions: not active → captions off */
826
1535
  .media-button--captions:not([data-active]) .media-icon--captions-off,
827
1536
  /* Captions: active → captions on */
@@ -830,14 +1539,56 @@
830
1539
  opacity: 1;
831
1540
  }
832
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
+
1553
+ /* -------------------------------------------------------------------------- */
1554
+ /* Global @keyframes for all video skins (CSS & Tailwind) */
1555
+ /* -------------------------------------------------------------------------- */
1556
+
1557
+ @keyframes media-shake {
1558
+ 0%,
1559
+ 100% {
1560
+ translate: 0 0;
1561
+ }
1562
+ 20% {
1563
+ translate: -6px 0;
1564
+ }
1565
+ 40% {
1566
+ translate: 4px 0;
1567
+ }
1568
+ 60% {
1569
+ translate: -2px 0;
1570
+ }
1571
+ 80% {
1572
+ translate: 1px 0;
1573
+ }
1574
+ }
1575
+
1576
+ /* -------------------------------------------------------------------------- */
1577
+ /* Global @properties for all video skins (CSS & Tailwind) */
1578
+ /* -------------------------------------------------------------------------- */
1579
+
1580
+ @property --media-progress-fill {
1581
+ syntax: "<percentage>";
1582
+ inherits: true;
1583
+ initial-value: 0%;
1584
+ }
1585
+
833
1586
 
834
1587
  /* ==========================================================================
835
1588
  Root
836
1589
  ========================================================================== */
837
1590
 
838
1591
  .media-minimal-skin--video {
839
- overflow: clip;
840
- background: oklch(0 0 0);
841
1592
  --media-border-color: oklch(0 0 0 / 0.15);
842
1593
  --media-video-border-radius: var(--media-border-radius, 0.75rem);
843
1594
  --media-controls-background-color: transparent;
@@ -848,12 +1599,19 @@
848
1599
  --media-error-dialog-transition-timing-function: ease-out;
849
1600
  --media-popup-transition-duration: 100ms;
850
1601
  --media-popup-transition-timing-function: ease-out;
851
- --media-tooltip-background-color: oklch(1 0 0 / 0.1);
852
- --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);
853
1604
  --media-tooltip-backdrop-filter: blur(16px) saturate(1.5);
854
1605
  --media-tooltip-text-color: currentColor;
855
1606
  --media-tooltip-side-offset: 0.5rem;
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);
856
1611
  --media-popover-side-offset: 1.5rem;
1612
+ --media-popover-boundary-offset: var(--media-tooltip-boundary-offset);
1613
+ overflow: clip;
1614
+ background: oklch(0 0 0);
857
1615
 
858
1616
  @media (prefers-reduced-motion: reduce) {
859
1617
  --media-error-dialog-transition-duration: 50ms;
@@ -872,7 +1630,7 @@
872
1630
 
873
1631
  @container media-root (width > 42rem) {
874
1632
  & > * {
875
- --media-popover-side-offset: 0rem;
1633
+ --media-popover-side-offset: 0.5rem;
876
1634
  }
877
1635
  }
878
1636
 
@@ -891,13 +1649,13 @@
891
1649
 
892
1650
  /* Inner border ring */
893
1651
  &::after {
894
- content: "";
895
1652
  position: absolute;
896
1653
  inset: 0;
897
1654
  z-index: 10;
1655
+ pointer-events: none;
1656
+ content: "";
898
1657
  border-radius: inherit;
899
1658
  box-shadow: inset 0 0 0 1px var(--media-border-color);
900
- pointer-events: none;
901
1659
  }
902
1660
 
903
1661
  /* Fullscreen */
@@ -929,11 +1687,11 @@
929
1687
  padding: 1rem;
930
1688
  color: oklch(1 0 0);
931
1689
  text-shadow: 0 1px 0 oklch(0 0 0 / 0.5);
932
- transition-property: opacity, scale;
933
- transition-duration: var(--media-error-dialog-transition-duration);
1690
+ pointer-events: auto;
934
1691
  transition-delay: var(--media-error-dialog-transition-delay);
935
1692
  transition-timing-function: var(--media-error-dialog-transition-timing-function);
936
- pointer-events: auto;
1693
+ transition-duration: var(--media-error-dialog-transition-duration);
1694
+ transition-property: opacity, scale;
937
1695
  }
938
1696
 
939
1697
  .media-minimal-skin--video .media-error[data-starting-style] .media-error__dialog,
@@ -965,46 +1723,44 @@
965
1723
  ========================================================================== */
966
1724
 
967
1725
  .media-minimal-skin--video .media-controls {
968
- padding: 0.25rem;
969
- column-gap: 0.5rem;
970
- flex-wrap: wrap;
971
1726
  position: absolute;
972
- bottom: 0.25rem;
973
1727
  inset-inline: 0.25rem;
1728
+ bottom: 0.25rem;
974
1729
  z-index: 10;
1730
+ flex-wrap: wrap;
1731
+ column-gap: 0.5rem;
1732
+ padding: 0.25rem;
975
1733
  color: oklch(1 0 0);
976
1734
  border-radius: 0.75rem;
977
- transition-duration: var(--media-controls-transition-duration);
978
1735
  transition-timing-function: var(--media-controls-transition-timing-function);
1736
+ transition-duration: var(--media-controls-transition-duration);
979
1737
 
980
1738
  @media (pointer: fine) {
981
- will-change: translate, filter, opacity;
982
1739
  transition-property: translate, filter, opacity;
1740
+ will-change: translate, filter, opacity;
983
1741
  }
984
1742
 
985
1743
  @media (pointer: coarse) {
986
- will-change: translate, opacity;
987
1744
  transition-property: translate, opacity;
1745
+ will-change: translate, opacity;
988
1746
  }
989
1747
 
990
1748
  &:not([data-visible]) {
991
- opacity: 0;
992
1749
  pointer-events: none;
993
- translate: 0 100%;
1750
+ opacity: 0;
994
1751
 
995
- @media (pointer: fine) {
1752
+ @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
996
1753
  filter: blur(8px);
997
1754
  }
998
1755
 
999
- @media (prefers-reduced-motion: reduce) {
1000
- translate: 0 0;
1001
- filter: blur(0);
1756
+ @media (prefers-reduced-motion: no-preference) {
1757
+ translate: 0 100%;
1002
1758
  }
1003
1759
  }
1004
1760
 
1005
1761
  & .media-time-controls {
1006
- order: -1;
1007
1762
  flex: 0 0 100%;
1763
+ order: -1;
1008
1764
  padding-inline: 0.625rem;
1009
1765
  }
1010
1766
 
@@ -1019,13 +1775,13 @@
1019
1775
  }
1020
1776
 
1021
1777
  @container media-root (width > 42rem) {
1022
- flex-wrap: nowrap;
1023
- bottom: 0.5rem;
1024
1778
  inset-inline: 0.5rem;
1779
+ bottom: 0.5rem;
1780
+ flex-wrap: nowrap;
1025
1781
 
1026
1782
  & .media-time-controls {
1027
- order: unset;
1028
1783
  flex: 1;
1784
+ order: unset;
1029
1785
  }
1030
1786
 
1031
1787
  & .media-button-group:first-child,
@@ -1053,56 +1809,68 @@
1053
1809
  ========================================================================== */
1054
1810
 
1055
1811
  .media-minimal-skin--video .media-popover--volume {
1056
- background: transparent;
1057
1812
  padding-block: 0.75rem;
1813
+ background: transparent;
1058
1814
  border-radius: 0.75rem;
1059
1815
 
1060
1816
  @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
1061
1817
  background: var(--media-controls-background-color);
1062
1818
  }
1819
+
1820
+ @container media-root (width > 42rem) {
1821
+ & > * {
1822
+ --media-popover-side-offset: 0rem;
1823
+ }
1824
+ }
1063
1825
  }
1064
1826
 
1065
1827
  /* ==========================================================================
1066
1828
  Slider preview
1067
1829
  ========================================================================== */
1068
1830
 
1069
- .media-minimal-skin--video .media-slider__preview {
1070
- --media-preview-max-width: 11rem;
1071
- --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;
1072
1835
  /**
1073
1836
  Inset is the difference between the container width and the slider (100%) width.
1074
1837
  We only add to the end as we render the time there.
1075
1838
  */
1076
- --media-preview-inset: calc(100cqi - 100%);
1839
+ --media-slider-thumbnail-inset: calc(100cqi - 100%);
1077
1840
 
1078
1841
  position: absolute;
1842
+ bottom: 100%;
1079
1843
  left: clamp(
1080
- 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)),
1081
1845
  var(--media-slider-pointer),
1082
- 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
+ )
1083
1853
  );
1084
- bottom: 100%;
1085
- translate: -50%;
1086
1854
  opacity: 0;
1087
- scale: 0.8;
1088
1855
  filter: blur(8px);
1089
- transition-property: scale, opacity, filter;
1090
- transition-duration: 150ms;
1091
- transition-timing-function: ease-out;
1092
1856
  transform-origin: bottom;
1857
+ scale: 0.8;
1858
+ translate: -50%;
1859
+ transition-timing-function: ease-out;
1860
+ transition-duration: 150ms;
1861
+ transition-property: scale, opacity, filter;
1093
1862
 
1094
1863
  @container media-root (width > 42rem) {
1095
- bottom: calc(100% + 0.25rem);
1096
1864
  left: var(--media-slider-pointer);
1097
1865
  }
1098
1866
 
1099
- & .media-preview__thumbnail-wrapper {
1867
+ & .media-thumbnail__image-wrapper {
1100
1868
  position: relative;
1101
1869
 
1102
1870
  &::after {
1103
- content: "";
1104
1871
  position: absolute;
1105
1872
  inset: 0;
1873
+ content: "";
1106
1874
  border-radius: inherit;
1107
1875
  box-shadow:
1108
1876
  0 0 0 1px oklch(0 0 0 / 0.05),
@@ -1111,17 +1879,20 @@
1111
1879
  }
1112
1880
  }
1113
1881
 
1114
- & .media-preview__thumbnail {
1115
- max-width: var(--media-preview-max-width);
1116
- }
1117
-
1118
- &:has(.media-preview__thumbnail[data-loading]) {
1119
- 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);
1120
1885
  }
1121
1886
  }
1122
- .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])) {
1123
1888
  opacity: 1;
1124
- scale: 1;
1125
1889
  filter: blur(0);
1890
+ scale: 1;
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;
1126
1897
  }
1127
1898